{"version":3,"sources":["../src/indicator.tsx"],"sourcesContent":["import { mapResponsive } from \"@chakra-ui/breakpoint-utils\"\nimport {\n  HTMLChakraProps,\n  ResponsiveValue,\n  SystemStyleObject,\n  chakra,\n  forwardRef,\n} from \"@chakra-ui/system\"\nimport { useMemo } from \"react\"\n\ntype Dict = Record<string, any>\n\nexport interface IndicatorOptions {\n  /**\n   * The x offset of the indicator\n   */\n  offsetX?: SystemStyleObject[\"left\"]\n  /**\n   * The y offset of the indicator\n   */\n  offsetY?: SystemStyleObject[\"top\"]\n  /**\n   * The x and y offset of the indicator\n   */\n  offset?: SystemStyleObject[\"top\"]\n  /**\n   * The placement of the indicator\n   * @default \"top-end\"\n   */\n  placement?: ResponsiveValue<\n    | \"bottom-end\"\n    | \"bottom-start\"\n    | \"top-end\"\n    | \"top-start\"\n    | \"bottom-center\"\n    | \"top-center\"\n    | \"middle-center\"\n    | \"middle-end\"\n    | \"middle-start\"\n  >\n}\n\nexport interface IndicatorProps\n  extends Omit<HTMLChakraProps<\"div\">, keyof IndicatorOptions>,\n    IndicatorOptions {}\n\nexport const Indicator = forwardRef<IndicatorProps, \"div\">(function Indicator(\n  props,\n  ref,\n) {\n  const {\n    offsetX,\n    offsetY,\n    offset = \"0\",\n    placement = \"top-end\",\n    ...rest\n  } = props\n\n  const styles: SystemStyleObject = useMemo(\n    () => ({\n      display: \"inline-flex\",\n      justifyContent: \"center\",\n      alignItems: \"center\",\n      position: \"absolute\",\n      insetBlockStart: mapResponsive(placement, (v) => {\n        const [side] = v.split(\"-\")\n        const map: Dict = {\n          top: offsetY ?? offset,\n          middle: \"50%\",\n          bottom: \"auto\",\n        }\n        return map[side]\n      }),\n      insetBlockEnd: mapResponsive(placement, (v) => {\n        const [side] = v.split(\"-\")\n        const map: Dict = {\n          top: \"auto\",\n          middle: \"50%\",\n          bottom: offsetY ?? offset,\n        }\n        return map[side]\n      }),\n      insetStart: mapResponsive(placement, (v) => {\n        const [, align] = v.split(\"-\")\n        const map: Dict = {\n          start: offsetX ?? offset,\n          center: \"50%\",\n          end: \"auto\",\n        }\n        return map[align]\n      }),\n      insetEnd: mapResponsive(placement, (v) => {\n        const [, align] = v.split(\"-\")\n        const map: Dict = {\n          start: \"auto\",\n          center: \"50%\",\n          end: offsetX ?? offset,\n        }\n        return map[align]\n      }),\n      translate: mapResponsive(placement, (v) => {\n        const [side, align] = v.split(\"-\")\n        const mapX: Dict = { start: \"-50%\", center: \"-50%\", end: \"50%\" }\n        const mapY: Dict = { top: \"-50%\", middle: \"-50%\", bottom: \"50%\" }\n        return `${mapX[align]} ${mapY[side]}`\n      }),\n    }),\n    [offset, offsetX, offsetY, placement],\n  )\n\n  return <chakra.div ref={ref} __css={styles} {...rest} />\n})\n"],"mappings":";;;AAAA,SAAS,qBAAqB;AAC9B;AAAA,EAIE;AAAA,EACA;AAAA,OACK;AACP,SAAS,eAAe;AAsGf;AAhEF,IAAM,YAAY,WAAkC,SAASA,WAClE,OACA,KACA;AACA,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,GAAG;AAAA,EACL,IAAI;AAEJ,QAAM,SAA4B;AAAA,IAChC,OAAO;AAAA,MACL,SAAS;AAAA,MACT,gBAAgB;AAAA,MAChB,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,iBAAiB,cAAc,WAAW,CAAC,MAAM;AAC/C,cAAM,CAAC,IAAI,IAAI,EAAE,MAAM,GAAG;AAC1B,cAAM,MAAY;AAAA,UAChB,KAAK,4BAAW;AAAA,UAChB,QAAQ;AAAA,UACR,QAAQ;AAAA,QACV;AACA,eAAO,IAAI,IAAI;AAAA,MACjB,CAAC;AAAA,MACD,eAAe,cAAc,WAAW,CAAC,MAAM;AAC7C,cAAM,CAAC,IAAI,IAAI,EAAE,MAAM,GAAG;AAC1B,cAAM,MAAY;AAAA,UAChB,KAAK;AAAA,UACL,QAAQ;AAAA,UACR,QAAQ,4BAAW;AAAA,QACrB;AACA,eAAO,IAAI,IAAI;AAAA,MACjB,CAAC;AAAA,MACD,YAAY,cAAc,WAAW,CAAC,MAAM;AAC1C,cAAM,CAAC,EAAE,KAAK,IAAI,EAAE,MAAM,GAAG;AAC7B,cAAM,MAAY;AAAA,UAChB,OAAO,4BAAW;AAAA,UAClB,QAAQ;AAAA,UACR,KAAK;AAAA,QACP;AACA,eAAO,IAAI,KAAK;AAAA,MAClB,CAAC;AAAA,MACD,UAAU,cAAc,WAAW,CAAC,MAAM;AACxC,cAAM,CAAC,EAAE,KAAK,IAAI,EAAE,MAAM,GAAG;AAC7B,cAAM,MAAY;AAAA,UAChB,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,KAAK,4BAAW;AAAA,QAClB;AACA,eAAO,IAAI,KAAK;AAAA,MAClB,CAAC;AAAA,MACD,WAAW,cAAc,WAAW,CAAC,MAAM;AACzC,cAAM,CAAC,MAAM,KAAK,IAAI,EAAE,MAAM,GAAG;AACjC,cAAM,OAAa,EAAE,OAAO,QAAQ,QAAQ,QAAQ,KAAK,MAAM;AAC/D,cAAM,OAAa,EAAE,KAAK,QAAQ,QAAQ,QAAQ,QAAQ,MAAM;AAChE,eAAO,GAAG,KAAK,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;AAAA,MACrC,CAAC;AAAA,IACH;AAAA,IACA,CAAC,QAAQ,SAAS,SAAS,SAAS;AAAA,EACtC;AAEA,SAAO,oBAAC,OAAO,KAAP,EAAW,KAAU,OAAO,QAAS,GAAG,MAAM;AACxD,CAAC;","names":["Indicator"]}