@chakra-ui/layout
Version:
Chakra UI layout components that give you massive speed
1 lines • 4.5 kB
Source Map (JSON)
{"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"]}