"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.wrapWord = void 0; const slice_ansi_1 = __importDefault(require("slice-ansi")); const strip_ansi_1 = __importDefault(require("strip-ansi")); const calculateStringLengths = (input, size) => { let subject = strip_ansi_1.default(input); const chunks = []; // https://regex101.com/r/gY5kZ1/1 const re = new RegExp('(^.{1,' + String(size) + '}(\\s+|$))|(^.{1,' + String(size - 1) + '}(\\\\|/|_|\\.|,|;|-))'); do { let chunk; const match = re.exec(subject); if (match) { chunk = match[0]; subject = subject.slice(chunk.length); const trimmedLength = chunk.trim().length; const offset = chunk.length - trimmedLength; chunks.push([trimmedLength, offset]); } else { chunk = subject.slice(0, size); subject = subject.slice(size); chunks.push([chunk.length, 0]); } } while (subject.length); return chunks; }; const wrapWord = (input, size) => { const result = []; let startIndex = 0; calculateStringLengths(input, size).forEach(([length, offset]) => { result.push(slice_ansi_1.default(input, startIndex, startIndex + length)); startIndex += length + offset; }); return result; }; exports.wrapWord = wrapWord;