{"version":3,"file":"getDistanceToSymbol.mjs","sources":["../../../../src/common/textFormat/getDistanceToSymbol/getDistanceToSymbol.ts"],"sourcesContent":["import getSymbolsInPatternWithPosition from '../getSymbolsInPatternWithPosition';\nimport { SymbolWithPosition } from '../getSymbolsInPatternWithPosition/getSymbolsInPatternWithPosition';\n\nexport const getDistanceToNextSymbol = (selectionStart: number, pattern: string) => {\n  const patternArray = getSymbolsInPatternWithPosition(pattern);\n  const applicablePattern = patternArray.filter((symbol) => symbol.index >= selectionStart);\n  return countConsecutiveSymbols(selectionStart, applicablePattern, 'left');\n};\n\nexport const getDistanceToPreviousSymbol = (selectionStart: number, pattern: string) => {\n  const patternArray = getSymbolsInPatternWithPosition(pattern);\n  const applicablePattern = patternArray\n    .filter((symbol) => symbol.index < selectionStart)\n    .reverse();\n  return countConsecutiveSymbols(selectionStart, applicablePattern, 'right');\n};\n\nconst countConsecutiveSymbols = (\n  selectionStart: number,\n  applicablePattern: SymbolWithPosition[],\n  direction: 'left' | 'right',\n) => {\n  let cursor = selectionStart;\n  let groupSize;\n\n  for (groupSize = 0; groupSize < applicablePattern.length; groupSize += 1) {\n    const condition = direction === 'left' ? cursor : cursor - 1;\n    if (applicablePattern[groupSize].index === condition) {\n      cursor = direction === 'left' ? cursor + 1 : cursor - 1;\n    } else {\n      // Exit if not consecutive.\n      break;\n    }\n  }\n  return groupSize;\n};\n"],"names":["getDistanceToNextSymbol","selectionStart","pattern","patternArray","getSymbolsInPatternWithPosition","applicablePattern","filter","symbol","index","countConsecutiveSymbols","getDistanceToPreviousSymbol","reverse","direction","cursor","groupSize","length","condition"],"mappings":";;MAGaA,uBAAuB,GAAGA,CAACC,cAAsB,EAAEC,OAAe,KAAI;AACjF,EAAA,MAAMC,YAAY,GAAGC,+BAA+B,CAACF,OAAO,CAAC;AAC7D,EAAA,MAAMG,iBAAiB,GAAGF,YAAY,CAACG,MAAM,CAAEC,MAAM,IAAKA,MAAM,CAACC,KAAK,IAAIP,cAAc,CAAC;AACzF,EAAA,OAAOQ,uBAAuB,CAACR,cAAc,EAAEI,iBAAiB,EAAE,MAAM,CAAC;AAC3E;MAEaK,2BAA2B,GAAGA,CAACT,cAAsB,EAAEC,OAAe,KAAI;AACrF,EAAA,MAAMC,YAAY,GAAGC,+BAA+B,CAACF,OAAO,CAAC;AAC7D,EAAA,MAAMG,iBAAiB,GAAGF,YAAY,CACnCG,MAAM,CAAEC,MAAM,IAAKA,MAAM,CAACC,KAAK,GAAGP,cAAc,CAAC,CACjDU,OAAO,EAAE;AACZ,EAAA,OAAOF,uBAAuB,CAACR,cAAc,EAAEI,iBAAiB,EAAE,OAAO,CAAC;AAC5E;AAEA,MAAMI,uBAAuB,GAAGA,CAC9BR,cAAsB,EACtBI,iBAAuC,EACvCO,SAA2B,KACzB;EACF,IAAIC,MAAM,GAAGZ,cAAc;AAC3B,EAAA,IAAIa,SAAS;AAEb,EAAA,KAAKA,SAAS,GAAG,CAAC,EAAEA,SAAS,GAAGT,iBAAiB,CAACU,MAAM,EAAED,SAAS,IAAI,CAAC,EAAE;IACxE,MAAME,SAAS,GAAGJ,SAAS,KAAK,MAAM,GAAGC,MAAM,GAAGA,MAAM,GAAG,CAAC;IAC5D,IAAIR,iBAAiB,CAACS,SAAS,CAAC,CAACN,KAAK,KAAKQ,SAAS,EAAE;MACpDH,MAAM,GAAGD,SAAS,KAAK,MAAM,GAAGC,MAAM,GAAG,CAAC,GAAGA,MAAM,GAAG,CAAC;AACzD,IAAA,CAAC,MAAM;AACL;AACA,MAAA;AACF,IAAA;AACF,EAAA;AACA,EAAA,OAAOC,SAAS;AAClB,CAAC;;;;"}