{"version":3,"file":"index.mjs","names":["ReactNode","Props","value","indices","minLength","Highlight","t0","$","_c","t1","undefined","t2","content","lastIndex","forEach","indice","push","substring","length"],"sources":["../../../src/components/highlight/Highlight.tsx"],"sourcesContent":["import { type ReactNode } from \"react\";\n\ninterface Props {\n  value: string | undefined;\n  indices: readonly [number, number][]; // readonly RangeTuple[]; from \"fuse.js\"\n  minLength?: number;\n}\nexport function Highlight({ value, indices, minLength = 2 }: Props) {\n  // !indices -> empty array or undefined\n  if (!indices || !value) {\n    return value;\n  }\n  const content: ReactNode[] = [];\n  let lastIndex = 0;\n  indices.forEach((indice) => {\n    if (indice[1] - indice[0] < minLength) {\n      return;\n    }\n    if (indice[0] - lastIndex > 0) {\n      content.push(value.substring(lastIndex, indice[0]));\n    }\n    content.push(<mark key={content.length}>{value.substring(indice[0], indice[1] + 1)}</mark>);\n    lastIndex = indice[1] + 1;\n  });\n  if (lastIndex <= value.length) {\n    content.push(value.substring(lastIndex));\n  }\n  return <span className=\"text-gray-6\">{content}</span>;\n}\n"],"mappings":";;;AAOA,SAAOK,UAAAC,IAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAmB,MAAA,EAAAN,OAAAC,SAAAC,WAAAK,OAAAH;CAAkB,MAAAF,YAAAK,OAAAC,KAAAA,IAAA,IAAAD;CAE1C,IAAI,CAACN,WAAD,CAAaD,OAAK,OACbA;CACR,IAAAS;CAAA,IAAAJ,EAAA,OAAAJ,WAAAI,EAAA,OAAAH,aAAAG,EAAA,OAAAL,OAAA;EACD,MAAAU,UAA6B,CAAA;EAC7B,IAAAC,YAAgB;EAChBV,QAAOW,SAASC,WAAA;GACd,IAAIA,OAAM,KAAMA,OAAM,KAAMX,WAAS;GAGrC,IAAIW,OAAM,KAAMF,YAAY,GAC1BD,QAAOI,KAAMd,MAAKe,UAAWJ,WAAWE,OAAM,EAAG,CAAC;GAEpDH,QAAOI,KAAM,oBAAA,QAAA,EAAA,UAA4Bd,MAAKe,UAAWF,OAAM,IAAKA,OAAM,KAAM,CAAC,EAAS,GAAlEH,QAAOM,MAA2D,CAAA;GAC1FL,YAAYE,OAAM,KAAM;EAAf,CACV;EACD,IAAIF,aAAaX,MAAKgB,QACpBN,QAAOI,KAAMd,MAAKe,UAAWJ,SAAS,CAAC;EAElCF,KAAA,oBAAA,QAAA;GAAgB,WAAA;GAAeC,UAAAA;EAAe,CAAA;EAAAL,EAAA,KAAAJ;EAAAI,EAAA,KAAAH;EAAAG,EAAA,KAAAL;EAAAK,EAAA,KAAAI;CAAA,OAAAA,KAAAJ,EAAA;CAAA,OAA9CI;AAA8C"}