{"version":3,"file":"popover.cjs","sources":["../../../src/components/popover.tsx"],"sourcesContent":["import React, {\n    forwardRef,\n    type ReactElement,\n    type ReactNode,\n    useState,\n    useEffect,\n} from \"react\";\nimport { usePopper } from \"react-popper\";\nimport { type Placement } from \"@popperjs/core\";\nimport { mergedCva } from \"../utils/components\";\n\nconst dropdownRootStyles = mergedCva(\n    [\n        \"cui-rounded-xl\",\n        \"cui-border\",\n        \"cui-bg-white\",\n        \"cui-border-black\",\n        \"dark:cui-text-white\",\n        \"dark:cui-bg-black\",\n        \"dark:cui-border-white\",\n        \"cui-z-10\",\n        \"cui-transition-opacity\",\n        \"cui-shadow-lg\",\n    ],\n    {\n        variants: {\n            open: {\n                true: [\"cui-opacity-100\", \"cui-pointer-events-auto\"],\n                false: [\"cui-opacity-0\", \"cui-pointer-events-none\"],\n            },\n        },\n    },\n);\n\nexport interface PopoverProps {\n    open: boolean;\n    anchor?: Element | null;\n    placement?: Placement;\n    offset?: [number, number];\n    className?: { root?: string };\n    children?: ReactNode;\n}\n\nexport const Popover = forwardRef<HTMLDivElement, PopoverProps>(\n    function Popover(\n        {\n            open,\n            anchor,\n            placement = \"auto\",\n            offset = [0, 8],\n            className,\n            children,\n        },\n        ref,\n    ): ReactElement {\n        const [popper, setPopper] = useState<HTMLDivElement | null>(null);\n\n        const { styles, attributes, update } = usePopper(anchor, popper, {\n            placement,\n            modifiers: [\n                {\n                    name: \"offset\",\n                    options: { offset },\n                },\n            ],\n        });\n\n        useEffect(() => {\n            if (open && update) update();\n        }, [open, update]);\n\n        return (\n            <div\n                ref={(element) => {\n                    if (ref) {\n                        if (typeof ref === \"function\") ref(element);\n                        else ref.current = element;\n                    }\n                    setPopper(element);\n                }}\n                style={styles.popper}\n                className={dropdownRootStyles({\n                    className: className?.root,\n                    open,\n                })}\n                {...attributes.popper}\n            >\n                {children}\n            </div>\n        );\n    },\n);\n"],"names":["mergedCva","forwardRef","Popover","useState","usePopper","useEffect"],"mappings":";;;;;;;;AAWA,MAAM,kBAAqB,GAAAA,oBAAA;AAAA,EACvB;AAAA,IACI,gBAAA;AAAA,IACA,YAAA;AAAA,IACA,cAAA;AAAA,IACA,kBAAA;AAAA,IACA,qBAAA;AAAA,IACA,mBAAA;AAAA,IACA,uBAAA;AAAA,IACA,UAAA;AAAA,IACA,wBAAA;AAAA,IACA,eAAA;AAAA,GACJ;AAAA,EACA;AAAA,IACI,QAAU,EAAA;AAAA,MACN,IAAM,EAAA;AAAA,QACF,IAAA,EAAM,CAAC,iBAAA,EAAmB,yBAAyB,CAAA;AAAA,QACnD,KAAA,EAAO,CAAC,eAAA,EAAiB,yBAAyB,CAAA;AAAA,OACtD;AAAA,KACJ;AAAA,GACJ;AACJ,CAAA,CAAA;AAWO,MAAM,OAAU,GAAAC,gBAAA;AAAA,EACnB,SAASC,QACL,CAAA;AAAA,IACI,IAAA;AAAA,IACA,MAAA;AAAA,IACA,SAAY,GAAA,MAAA;AAAA,IACZ,MAAA,GAAS,CAAC,CAAA,EAAG,CAAC,CAAA;AAAA,IACd,SAAA;AAAA,IACA,QAAA;AAAA,KAEJ,GACY,EAAA;AACZ,IAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIC,eAAgC,IAAI,CAAA,CAAA;AAEhE,IAAA,MAAM,EAAE,MAAQ,EAAA,UAAA,EAAY,QAAW,GAAAC,mBAAA,CAAU,QAAQ,MAAQ,EAAA;AAAA,MAC7D,SAAA;AAAA,MACA,SAAW,EAAA;AAAA,QACP;AAAA,UACI,IAAM,EAAA,QAAA;AAAA,UACN,OAAA,EAAS,EAAE,MAAO,EAAA;AAAA,SACtB;AAAA,OACJ;AAAA,KACH,CAAA,CAAA;AAED,IAAAC,eAAA,CAAU,MAAM;AACZ,MAAA,IAAI,IAAQ,IAAA,MAAA;AAAQ,QAAO,MAAA,EAAA,CAAA;AAAA,KAC5B,EAAA,CAAC,IAAM,EAAA,MAAM,CAAC,CAAA,CAAA;AAEjB,IACI,uBAAA,KAAA,CAAA,aAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACG,GAAA,EAAK,CAAC,OAAY,KAAA;AACd,UAAA,IAAI,GAAK,EAAA;AACL,YAAA,IAAI,OAAO,GAAQ,KAAA,UAAA;AAAY,cAAA,GAAA,CAAI,OAAO,CAAA,CAAA;AAAA;AACrC,cAAA,GAAA,CAAI,OAAU,GAAA,OAAA,CAAA;AAAA,WACvB;AACA,UAAA,SAAA,CAAU,OAAO,CAAA,CAAA;AAAA,SACrB;AAAA,QACA,OAAO,MAAO,CAAA,MAAA;AAAA,QACd,WAAW,kBAAmB,CAAA;AAAA,UAC1B,WAAW,SAAW,EAAA,IAAA;AAAA,UACtB,IAAA;AAAA,SACH,CAAA;AAAA,QACA,GAAG,UAAW,CAAA,MAAA;AAAA,OAAA;AAAA,MAEd,QAAA;AAAA,KACL,CAAA;AAAA,GAER;AACJ;;;;"}