{"version":3,"file":"split-into-chunks.mjs","names":[],"sources":["../../src/utils/split-into-chunks.ts"],"sourcesContent":["export function splitIntoChunks(\n  bits: string[],\n  separator = \" \",\n  limit: number,\n): string[][] {\n  const chunks: string[][] = [];\n  let currentChunk: string[] = [];\n  let currentChunkJoinedLength = 0;\n\n  const tryAppend = (bit: string, recursive = false): void => {\n    const addedLength =\n      currentChunk.length <= 0 ? bit.length : separator.length + bit.length;\n\n    if (currentChunkJoinedLength + addedLength <= limit) {\n      currentChunk.push(bit);\n      currentChunkJoinedLength += addedLength;\n    } else {\n      chunks.push(currentChunk);\n      currentChunk = [];\n      currentChunkJoinedLength = 0;\n\n      if (recursive) {\n        throw new Error(\n          \"Found a piece that can never fit the target length limit\",\n        );\n      }\n\n      tryAppend(bit, true);\n    }\n  };\n\n  for (const bit of bits) {\n    tryAppend(bit);\n  }\n\n  if (currentChunk.length > 0) {\n    chunks.push(currentChunk);\n  }\n\n  return chunks;\n}\n"],"mappings":";AAAA,SAAgB,gBACd,MACA,YAAY,KACZ,OACY;CACZ,MAAM,SAAqB,EAAE;CAC7B,IAAI,eAAyB,EAAE;CAC/B,IAAI,2BAA2B;CAE/B,MAAM,aAAa,KAAa,YAAY,UAAgB;EAC1D,MAAM,cACJ,aAAa,UAAU,IAAI,IAAI,SAAS,UAAU,SAAS,IAAI;AAEjE,MAAI,2BAA2B,eAAe,OAAO;AACnD,gBAAa,KAAK,IAAI;AACtB,+BAA4B;SACvB;AACL,UAAO,KAAK,aAAa;AACzB,kBAAe,EAAE;AACjB,8BAA2B;AAE3B,OAAI,UACF,OAAM,IAAI,MACR,2DACD;AAGH,aAAU,KAAK,KAAK;;;AAIxB,MAAK,MAAM,OAAO,KAChB,WAAU,IAAI;AAGhB,KAAI,aAAa,SAAS,EACxB,QAAO,KAAK,aAAa;AAG3B,QAAO"}