{"version":3,"file":"util.format-block.cjs","sources":["../../../../src/rules/limit-multi-line-comments/util.format-block.ts"],"sourcesContent":["import type { Context } from \"../../typings.context.js\";\nimport { isAnotherWrapPointComing } from \"../../utils/is-another-wrap-point-coming.js\";\nimport { isPunctuation } from \"../../utils/is-punctuation.js\";\n\nimport type { MultilineBlock } from \"./typings.block.js\";\nimport { MULTILINE_BOILERPLATE_SIZE } from \"./util.boilerplate-size.js\";\n\n/**\n * takes a fixable block and transform it into a singular string which\n * represents the fixed format of the block.\n */\nexport function formatBlock(fixable: MultilineBlock, context: Context): string {\n  const lineStartSize =\n    context.whitespace.size +\n    MULTILINE_BOILERPLATE_SIZE +\n    (fixable.lineOffsets[0]?.size ?? 0);\n  const words = fixable.value.trim().split(\" \");\n\n  const newValue = words.reduce(\n    (acc, curr, index) => {\n      const lengthIfAdded = acc.currentLineLength + curr.length + 1; // + 1 to act as a final space, i.e. \" \"\n\n      // We can safely split to a new line in case we are reaching and\n      // overflowing line AND if there is at least one word on the current line.\n      const splitToNewline =\n        lengthIfAdded > context.maxLength &&\n        acc.currentLineLength !== lineStartSize;\n\n      const previousWord = words[index - 1];\n\n      const splitEarly =\n        context.logicalWrap &&\n        acc.currentLineLength >= context.maxLength / 2 &&\n        previousWord &&\n        previousWord.at(-1) &&\n        isPunctuation(previousWord.at(-1)) &&\n        previousWord.length > 1 &&\n        !isAnotherWrapPointComing(\n          acc.currentLineLength,\n          context.maxLength,\n          words.slice(index),\n        );\n\n      if (splitToNewline || splitEarly) {\n        const nextLine = `${context.whitespace.string} *${\n          fixable.lineOffsets[\n            Math.min(acc.currentLineIndex + 1, fixable.lineOffsets.length - 1)\n          ]?.string ?? \"\"\n        }${curr} `;\n\n        return {\n          value: `${acc.value.trimEnd()}\\n${nextLine}`,\n          currentLineLength: nextLine.length,\n          currentLineIndex: acc.currentLineIndex + 1,\n        };\n      } else {\n        return {\n          value: `${acc.value}${curr} `,\n          currentLineLength: lengthIfAdded,\n          currentLineIndex: acc.currentLineIndex,\n        };\n      }\n    },\n    {\n      value: `${context.whitespace.string} *${\n        fixable.lineOffsets[0]?.string ?? \"\"\n      }`,\n      currentLineLength: lineStartSize,\n      currentLineIndex: 0,\n    },\n  );\n\n  return newValue.value.trimEnd();\n}\n"],"names":["MULTILINE_BOILERPLATE_SIZE","isPunctuation","isAnotherWrapPointComing"],"mappings":";;;;;;AAWO,SAAS,WAAA,CAAY,SAAyB,OAAA,EAA0B;AAC7E,EAAA,MAAM,aAAA,GACJ,QAAQ,UAAA,CAAW,IAAA,GACnBA,mDACC,OAAA,CAAQ,WAAA,CAAY,CAAC,CAAA,EAAG,IAAA,IAAQ,CAAA,CAAA;AACnC,EAAA,MAAM,QAAQ,OAAA,CAAQ,KAAA,CAAM,IAAA,EAAK,CAAE,MAAM,GAAG,CAAA;AAE5C,EAAA,MAAM,WAAW,KAAA,CAAM,MAAA;AAAA,IACrB,CAAC,GAAA,EAAK,IAAA,EAAM,KAAA,KAAU;AACpB,MAAA,MAAM,aAAA,GAAgB,GAAA,CAAI,iBAAA,GAAoB,IAAA,CAAK,MAAA,GAAS,CAAA;AAI5D,MAAA,MAAM,cAAA,GACJ,aAAA,GAAgB,OAAA,CAAQ,SAAA,IACxB,IAAI,iBAAA,KAAsB,aAAA;AAE5B,MAAA,MAAM,YAAA,GAAe,KAAA,CAAM,KAAA,GAAQ,CAAC,CAAA;AAEpC,MAAA,MAAM,UAAA,GACJ,QAAQ,WAAA,IACR,GAAA,CAAI,qBAAqB,OAAA,CAAQ,SAAA,GAAY,CAAA,IAC7C,YAAA,IACA,YAAA,CAAa,EAAA,CAAG,EAAE,CAAA,IAClBC,2BAAA,CAAc,aAAa,EAAA,CAAG,EAAE,CAAC,CAAA,IACjC,YAAA,CAAa,MAAA,GAAS,CAAA,IACtB,CAACC,iDAAA;AAAA,QACC,GAAA,CAAI,iBAAA;AAAA,QACJ,OAAA,CAAQ,SAAA;AAAA,QACR,KAAA,CAAM,MAAM,KAAK;AAAA,OACnB;AAEF,MAAA,IAAI,kBAAkB,UAAA,EAAY;AAChC,QAAA,MAAM,QAAA,GAAW,GAAG,OAAA,CAAQ,UAAA,CAAW,MAAM,CAAA,EAAA,EAC3C,OAAA,CAAQ,WAAA,CACN,IAAA,CAAK,GAAA,CAAI,GAAA,CAAI,mBAAmB,CAAA,EAAG,OAAA,CAAQ,YAAY,MAAA,GAAS,CAAC,CACnE,CAAA,EAAG,MAAA,IAAU,EACf,CAAA,EAAG,IAAI,CAAA,CAAA,CAAA;AAEP,QAAA,OAAO;AAAA,UACL,KAAA,EAAO,CAAA,EAAG,GAAA,CAAI,KAAA,CAAM,SAAS;AAAA,EAAK,QAAQ,CAAA,CAAA;AAAA,UAC1C,mBAAmB,QAAA,CAAS,MAAA;AAAA,UAC5B,gBAAA,EAAkB,IAAI,gBAAA,GAAmB;AAAA,SAC3C;AAAA,MACF,CAAA,MAAO;AACL,QAAA,OAAO;AAAA,UACL,KAAA,EAAO,CAAA,EAAG,GAAA,CAAI,KAAK,GAAG,IAAI,CAAA,CAAA,CAAA;AAAA,UAC1B,iBAAA,EAAmB,aAAA;AAAA,UACnB,kBAAkB,GAAA,CAAI;AAAA,SACxB;AAAA,MACF;AAAA,IACF,CAAA;AAAA,IACA;AAAA,MACE,KAAA,EAAO,CAAA,EAAG,OAAA,CAAQ,UAAA,CAAW,MAAM,CAAA,EAAA,EACjC,OAAA,CAAQ,WAAA,CAAY,CAAC,CAAA,EAAG,MAAA,IAAU,EACpC,CAAA,CAAA;AAAA,MACA,iBAAA,EAAmB,aAAA;AAAA,MACnB,gBAAA,EAAkB;AAAA;AACpB,GACF;AAEA,EAAA,OAAO,QAAA,CAAS,MAAM,OAAA,EAAQ;AAChC;;;;"}