{"version":3,"file":"Highlight.cjs","sources":["../../../src/components/Highlight/Highlight.tsx"],"sourcesContent":["import {\n  polymorphicFactory,\n  PolymorphicFactory,\n  RaikouColor,\n  RaikouTheme,\n  useProps,\n} from '../../core';\nimport { Mark } from '../Mark';\nimport { Text, TextProps, TextStylesNames, TextVariant } from '../Text';\nimport { highlighter } from './highlighter/highlighter';\n\nexport interface HighlightProps extends Omit<TextProps, 'color'> {\n  /** Substring or an array of substrings to highlight in `children` */\n  highlight: string | string[];\n\n  /** Key of `theme.colors` or any valid CSS color, passed to `Mark` component `color` prop, `yellow` by default */\n  color?: RaikouColor | string;\n\n  /** Styles applied to `mark` elements */\n  highlightStyles?: React.CSSProperties | ((theme: RaikouTheme) => React.CSSProperties);\n\n  /** String parts of which must be highlighted */\n  children: string;\n}\n\nexport type HighlightFactory = PolymorphicFactory<{\n  props: HighlightProps;\n  defaultRef: HTMLDivElement;\n  defaultComponent: 'div';\n  stylesNames: TextStylesNames;\n  variant: TextVariant;\n}>;\n\nconst defaultProps: Partial<HighlightProps> = {};\n\nexport const Highlight = polymorphicFactory<HighlightFactory>((props, ref) => {\n  const { unstyled, children, highlight, highlightStyles, color, ...others } = useProps(\n    'Highlight',\n    defaultProps,\n    props\n  );\n\n  const highlightChunks = highlighter(children, highlight);\n\n  return (\n    <Text unstyled={unstyled} ref={ref} {...others} __staticSelector=\"Highlight\">\n      {highlightChunks.map(({ chunk, highlighted }, i) =>\n        highlighted ? (\n          <Mark\n            unstyled={unstyled}\n            key={i}\n            color={color}\n            style={highlightStyles}\n            data-highlight={chunk}\n          >\n            {chunk}\n          </Mark>\n        ) : (\n          <span key={i}>{chunk}</span>\n        )\n      )}\n    </Text>\n  );\n});\n\nHighlight.classes = Text.classes;\nHighlight.displayName = '@raikou/core/Highlight';\n"],"names":["polymorphicFactory","useProps","highlighter","jsx","Text","Mark"],"mappings":";;;;;;;;;;;;;;;AAiCA,MAAM,eAAwC,EAAC;AAExC,MAAM,SAAY,GAAAA,qCAAA,CAAqC,CAAC,KAAA,EAAO,GAAQ,KAAA;AAC5E,EAAM,MAAA,EAAE,UAAU,QAAU,EAAA,SAAA,EAAW,iBAAiB,KAAO,EAAA,GAAG,QAAW,GAAAC,iBAAA;AAAA,IAC3E,WAAA;AAAA,IACA,YAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAM,MAAA,eAAA,GAAkBC,uBAAY,CAAA,QAAA,EAAU,SAAS,CAAA;AAEvD,EACE,uBAAAC,cAAA,CAACC,aAAK,QAAoB,EAAA,GAAA,EAAW,GAAG,MAAQ,EAAA,gBAAA,EAAiB,aAC9D,QAAgB,EAAA,eAAA,CAAA,GAAA;AAAA,IAAI,CAAC,EAAE,KAAA,EAAO,WAAY,EAAA,EAAG,MAC5C,WACE,mBAAAD,cAAA;AAAA,MAACE,SAAA;AAAA,MAAA;AAAA,QACC,QAAA;AAAA,QAEA,KAAA;AAAA,QACA,KAAO,EAAA,eAAA;AAAA,QACP,gBAAgB,EAAA,KAAA;AAAA,QAEf,QAAA,EAAA;AAAA,OAAA;AAAA,MALI;AAAA,KAQP,mBAAAF,cAAA,CAAC,MAAc,EAAA,EAAA,QAAA,EAAA,KAAA,EAAA,EAAJ,CAAU;AAAA,GAG3B,EAAA,CAAA;AAEJ,CAAC;AAED,SAAA,CAAU,UAAUC,SAAK,CAAA,OAAA;AACzB,SAAA,CAAU,WAAc,GAAA,wBAAA;;;;"}