{"version":3,"file":"FloatingIndicator.cjs","sources":["../../../src/components/FloatingIndicator/FloatingIndicator.tsx"],"sourcesContent":["import { useRef } from 'react';\nimport { useMergedRef } from '@raikou/hooks';\nimport {\n  Box,\n  BoxProps,\n  createVarsResolver,\n  ElementProps,\n  factory,\n  Factory,\n  StylesApiProps,\n  useProps,\n  useStyles,\n} from '../../core';\nimport { useFloatingIndicator } from './use-floating-indicator';\nimport { FloatingIndicatorRootStyle } from './FloatingIndicator.css';\n\nexport type FloatingIndicatorStylesNames = 'root';\nexport type FloatingIndicatorCssVariables = {\n  root: '--transition-duration';\n};\n\nexport interface FloatingIndicatorProps\n  extends BoxProps,\n    StylesApiProps<FloatingIndicatorFactory>,\n    ElementProps<'div'> {\n  /** Target element over which indicator should be displayed */\n  target: HTMLElement | null | undefined;\n\n  /** Parent element with relative position based on which indicator position should be calculated */\n  parent: HTMLElement | null | undefined;\n\n  /** Transition duration in ms, `150` by default */\n  transitionDuration?: number | string;\n\n  /** Determines whether indicator should be displayed after transition ends, should be set if used inside a container that has `transform: scale(n)` styles */\n  displayAfterTransitionEnd?: boolean;\n}\n\nexport type FloatingIndicatorFactory = Factory<{\n  props: FloatingIndicatorProps;\n  ref: HTMLDivElement;\n  stylesNames: FloatingIndicatorStylesNames;\n  vars: FloatingIndicatorCssVariables;\n}>;\n\nconst defaultProps: Partial<FloatingIndicatorProps> = {};\n\nconst varsResolver = createVarsResolver<FloatingIndicatorFactory>(\n  (_theme, { transitionDuration }) => ({\n    root: {\n      '--transition-duration':\n        typeof transitionDuration === 'number' ? `${transitionDuration}ms` : transitionDuration,\n    },\n  })\n);\n\nexport const FloatingIndicator = factory<FloatingIndicatorFactory>((_props, ref) => {\n  const props = useProps('FloatingIndicator', defaultProps, _props);\n  const {\n    classNames,\n    className,\n    style,\n    styles,\n    unstyled,\n    vars,\n    target,\n    parent,\n    transitionDuration,\n    mod,\n    displayAfterTransitionEnd,\n    ...others\n  } = props;\n\n  const getStyles = useStyles<FloatingIndicatorFactory>({\n    name: 'FloatingIndicator',\n    classes: {\n      root: FloatingIndicatorRootStyle,\n    },\n    props,\n    className,\n    style,\n    classNames,\n    styles,\n    unstyled,\n    vars,\n    varsResolver,\n  });\n\n  const innerRef = useRef<HTMLDivElement>(null);\n  const { initialized, hidden } = useFloatingIndicator({\n    target,\n    parent,\n    ref: innerRef,\n    displayAfterTransitionEnd,\n  });\n  const mergedRef = useMergedRef(ref, innerRef);\n\n  if (!target || !parent) {\n    return null;\n  }\n\n  return (\n    <Box ref={mergedRef} mod={[{ initialized, hidden }, mod]} {...getStyles('root')} {...others} />\n  );\n});\n\nFloatingIndicator.displayName = '@raikou/core/FloatingIndicator';\n"],"names":["createVarsResolver","factory","useProps","useStyles","FloatingIndicatorRootStyle","useRef","useFloatingIndicator","useMergedRef","Box"],"mappings":";;;;;;;;;;;;;;;AA6CA,MAAM,eAAgD,EAAC;AAEvD,MAAM,YAAe,GAAAA,qCAAA;AAAA,EACnB,CAAC,MAAA,EAAQ,EAAE,kBAAA,EAA0B,MAAA;AAAA,IACnC,IAAM,EAAA;AAAA,MACJ,yBACE,OAAO,kBAAA,KAAuB,QAAW,GAAA,CAAA,EAAG,kBAAkB,CAAO,EAAA,CAAA,GAAA;AAAA;AACzE,GACF;AACF,CAAA;AAEO,MAAM,iBAAoB,GAAAC,eAAA,CAAkC,CAAC,MAAA,EAAQ,GAAQ,KAAA;AAClF,EAAA,MAAM,KAAQ,GAAAC,iBAAA,CAAS,mBAAqB,EAAA,YAAA,EAAc,MAAM,CAAA;AAChE,EAAM,MAAA;AAAA,IACJ,UAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA;AAAA,IACA,IAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA;AAAA,IACA,kBAAA;AAAA,IACA,GAAA;AAAA,IACA,yBAAA;AAAA,IACA,GAAG;AAAA,GACD,GAAA,KAAA;AAEJ,EAAA,MAAM,YAAYC,mBAAoC,CAAA;AAAA,IACpD,IAAM,EAAA,mBAAA;AAAA,IACN,OAAS,EAAA;AAAA,MACP,IAAM,EAAAC;AAAA,KACR;AAAA,IACA,KAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,UAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA;AAAA,IACA,IAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAM,MAAA,QAAA,GAAWC,aAAuB,IAAI,CAAA;AAC5C,EAAA,MAAM,EAAE,WAAA,EAAa,MAAO,EAAA,GAAIC,yCAAqB,CAAA;AAAA,IACnD,MAAA;AAAA,IACA,MAAA;AAAA,IACA,GAAK,EAAA,QAAA;AAAA,IACL;AAAA,GACD,CAAA;AACD,EAAM,MAAA,SAAA,GAAYC,kBAAa,CAAA,GAAA,EAAK,QAAQ,CAAA;AAE5C,EAAI,IAAA,CAAC,MAAU,IAAA,CAAC,MAAQ,EAAA;AACtB,IAAO,OAAA,IAAA;AAAA;AAGT,EAAA,sCACGC,OAAI,EAAA,EAAA,GAAA,EAAK,SAAW,EAAA,GAAA,EAAK,CAAC,EAAE,WAAA,EAAa,MAAO,EAAA,EAAG,GAAG,CAAI,EAAA,GAAG,UAAU,MAAM,CAAA,EAAI,GAAG,MAAQ,EAAA,CAAA;AAEjG,CAAC;AAED,iBAAA,CAAkB,WAAc,GAAA,gCAAA;;;;"}