{"version":3,"file":"PartialHighlighter.cjs","sources":["../../../../src/components/Typeahead/PartialHighlighter.tsx"],"sourcesContent":["import { createElement } from 'react';\n\nimport { HighlightPart } from '../../types/completion';\n\ninterface Props {\n  text: string;\n  highlightParts: HighlightPart[];\n  highlightClassName: string;\n}\n\n/**\n * Flattens parts into a list of indices pointing to the index where a part\n * (highlighted or not highlighted) starts. Adds extra indices if needed\n * at the beginning or the end to ensure the entire text is covered.\n */\nfunction getStartIndices(parts: HighlightPart[], length: number): number[] {\n  const indices: number[] = [];\n  parts.forEach((part) => {\n    indices.push(part.start, part.end + 1);\n  });\n  if (indices[0] !== 0) {\n    indices.unshift(0);\n  }\n  if (indices[indices.length - 1] !== length) {\n    indices.push(length);\n  }\n  return indices;\n}\n\nexport const PartialHighlighter = (props: Props) => {\n  let { highlightParts, text, highlightClassName } = props;\n\n  if (!highlightParts?.length) {\n    return null;\n  }\n\n  let children = [];\n  let indices = getStartIndices(highlightParts, text.length);\n  let highlighted = highlightParts[0].start === 0;\n\n  for (let i = 1; i < indices.length; i++) {\n    let start = indices[i - 1];\n    let end = indices[i];\n\n    children.push(\n      createElement(\n        highlighted ? 'mark' : 'span',\n        {\n          key: i - 1,\n          className: highlighted ? highlightClassName : undefined,\n        },\n        text.substring(start, end)\n      )\n    );\n    highlighted = !highlighted;\n  }\n\n  return <div>{children}</div>;\n};\n"],"names":["createElement","jsx"],"mappings":";;;;;;;;AAeA,SAAS,eAAA,CAAgB,OAAwB,MAAA,EAA0B;AACzE,EAAA,MAAM,UAAoB,EAAC;AAC3B,EAAA,KAAA,CAAM,OAAA,CAAQ,CAAC,IAAA,KAAS;AACtB,IAAA,OAAA,CAAQ,IAAA,CAAK,IAAA,CAAK,KAAA,EAAO,IAAA,CAAK,MAAM,CAAC,CAAA;AAAA,EACvC,CAAC,CAAA;AACD,EAAA,IAAI,OAAA,CAAQ,CAAC,CAAA,KAAM,CAAA,EAAG;AACpB,IAAA,OAAA,CAAQ,QAAQ,CAAC,CAAA;AAAA,EACnB;AACA,EAAA,IAAI,OAAA,CAAQ,OAAA,CAAQ,MAAA,GAAS,CAAC,MAAM,MAAA,EAAQ;AAC1C,IAAA,OAAA,CAAQ,KAAK,MAAM,CAAA;AAAA,EACrB;AACA,EAAA,OAAO,OAAA;AACT;AAEO,MAAM,kBAAA,GAAqB,CAAC,KAAA,KAAiB;AAClD,EAAA,IAAI,EAAE,cAAA,EAAgB,IAAA,EAAM,kBAAA,EAAmB,GAAI,KAAA;AAEnD,EAAA,IAAI,EAAC,iDAAgB,MAAA,CAAA,EAAQ;AAC3B,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,IAAI,WAAW,EAAC;AAChB,EAAA,IAAI,OAAA,GAAU,eAAA,CAAgB,cAAA,EAAgB,IAAA,CAAK,MAAM,CAAA;AACzD,EAAA,IAAI,WAAA,GAAc,cAAA,CAAe,CAAC,CAAA,CAAE,KAAA,KAAU,CAAA;AAE9C,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,OAAA,CAAQ,QAAQ,CAAA,EAAA,EAAK;AACvC,IAAA,IAAI,KAAA,GAAQ,OAAA,CAAQ,CAAA,GAAI,CAAC,CAAA;AACzB,IAAA,IAAI,GAAA,GAAM,QAAQ,CAAC,CAAA;AAEnB,IAAA,QAAA,CAAS,IAAA;AAAA,MACPA,mBAAA;AAAA,QACE,cAAc,MAAA,GAAS,MAAA;AAAA,QACvB;AAAA,UACE,KAAK,CAAA,GAAI,CAAA;AAAA,UACT,SAAA,EAAW,cAAc,kBAAA,GAAqB,KAAA;AAAA,SAChD;AAAA,QACA,IAAA,CAAK,SAAA,CAAU,KAAA,EAAO,GAAG;AAAA;AAC3B,KACF;AACA,IAAA,WAAA,GAAc,CAAC,WAAA;AAAA,EACjB;AAEA,EAAA,uBAAOC,cAAA,CAAC,SAAK,QAAA,EAAS,CAAA;AACxB;;;;"}