{"version":3,"file":"index.mjs","names":["ReactNode","PopoverOptions","PopoverContext","usePopover","Props","children","Popover","t0","$","_c","options","popover","t1","ComponentProps","RefObject","usePopoverContext","FloatingFocusManager","FloatingPortal","useMergeRefs","clsx","computeArrowStyle","Dialog","Props","ref","HTMLInputElement","PopoverContent","style","children","className","props","context","floatingContext","mergedRef","refs","setFloating","open","modal","floatingStyles","labelId","descriptionId","getFloatingProps","placement","color","arrowRef","HTMLProps","RefObject","cloneElement","isValidElement","usePopoverContext","useMergeRefs","Button","Props","HTMLElement","asChild","ref","PopoverTrigger","children","props","context","childrenRef","mergedRefs","refs","setReference","getReferenceProps","open","Dispatch","RefObject","SetStateAction","useMemo","useRef","useState","PopoverOptions","arrow","autoUpdate","flip","offset","shift","useClick","useDismiss","useFloating","useInteractions","UseInteractionsReturn","useRole","UseFloatingReturn","ThemeBaseColor","arrowWidth","UsePopoverReturn","open","setOpen","arrowRef","HTMLDivElement","color","modal","labelId","descriptionId","setLabelId","setDescriptionId","usePopover","initialOpen","placement","controlledOpen","onOpen","setControlledOpen","uncontrolledOpen","setUncontrolledOpen","isUncontrolled","undefined","offsetVal","data","onOpenChange","whileElementsMounted","middleware","padding","element","context","click","dismiss","role","interactions","createContext","useContext","usePopover","ContextType","ReturnType","PopoverContext","usePopoverContext","context","Error","ComponentProps","usePopoverContext","clsx","Button","PopoverHeaderProps","closeButton","PopoverHeader","t0","$","_c","children","className","props","t1","undefined","setOpen","t2","t3","t4","t5","t6","PopoverDescription","PopoverFooter"],"sources":["../../../src/components/popover/Popover.tsx","../../../src/components/popover/PopoverContent.tsx","../../../src/components/popover/PopoverTrigger.tsx","../../../src/components/popover/usePopover.ts","../../../src/components/popover/usePopoverContext.ts","../../../src/components/popover/Components.tsx"],"sourcesContent":["import { ReactNode } from \"react\";\nimport { PopoverOptions } from \"./interface\";\nimport { PopoverContext, usePopover } from \".\";\n\ninterface Props extends PopoverOptions {\n  children: ReactNode;\n}\n\nexport function Popover({ children, ...options }: Props) {\n  const popover = usePopover(options);\n  return <PopoverContext.Provider value={popover}>{children}</PopoverContext.Provider>;\n}\n","import { ComponentProps, RefObject } from \"react\";\nimport { usePopoverContext } from \".\";\nimport { FloatingFocusManager, FloatingPortal, useMergeRefs } from \"@floating-ui/react\";\nimport clsx from \"clsx\";\nimport { computeArrowStyle } from \"../dialog/util\";\nimport { Dialog } from \"../dialog\";\n\ninterface Props extends ComponentProps<\"div\"> {\n  ref?: RefObject<HTMLInputElement>;\n}\n\nexport function PopoverContent({ style, children, className, ref, ...props }: Props) {\n  const context = usePopoverContext();\n  const floatingContext = context.context;\n\n  const mergedRef = useMergeRefs([context.refs.setFloating, ref]);\n  if (!context.open) {\n    return null;\n  }\n  return (\n    <FloatingPortal>\n      <FloatingFocusManager context={floatingContext} modal={context.modal}>\n        <div\n          className=\"outline-hidden\"\n          ref={mergedRef}\n          style={{ ...context.floatingStyles, ...style }}\n          aria-labelledby={context.labelId}\n          aria-describedby={context.descriptionId}\n          {...context.getFloatingProps(props)}\n        >\n          <Dialog\n            placement={context.placement}\n            color={context.color}\n            className={clsx(\"motion-safe:animate-fade-in-list\", className)}\n          >\n            {children}\n            <div\n              ref={context.arrowRef}\n              style={computeArrowStyle(context)}\n              className=\"p8n-arrow\"\n            ></div>\n          </Dialog>\n        </div>\n      </FloatingFocusManager>\n    </FloatingPortal>\n  );\n}\n","import { HTMLProps, RefObject, cloneElement, isValidElement } from \"react\";\nimport { usePopoverContext } from \".\";\nimport { useMergeRefs } from \"@floating-ui/react\";\nimport { Button } from \"../button\";\n\ninterface Props extends HTMLProps<HTMLElement> {\n  asChild?: boolean;\n  ref?: RefObject<HTMLElement>;\n}\n\nexport function PopoverTrigger({ children, asChild = false, ref, ...props }: Props) {\n  const context = usePopoverContext();\n  const childrenRef = (children as any).ref;\n\n  const mergedRefs = useMergeRefs([context.refs.setReference, ref, childrenRef]);\n\n  if (asChild && isValidElement(children)) {\n    return cloneElement(\n      children,\n      context.getReferenceProps({\n        ref: mergedRefs,\n        ...props,\n        ...(children.props ?? {}),\n        // @ts-ignore\n        \"data-state\": context.open ? \"open\" : \"closed\",\n      }),\n    );\n  }\n\n  return (\n    <Button\n      variant=\"outlined\"\n      ref={mergedRefs as any}\n      data-state={context.open ? \"open\" : \"closed\"}\n      {...context.getReferenceProps(props)}\n    >\n      {children}\n    </Button>\n  );\n}\n","import { Dispatch, RefObject, SetStateAction, useMemo, useRef, useState } from \"react\";\nimport { PopoverOptions } from \"./interface\";\nimport {\n  arrow,\n  autoUpdate,\n  flip,\n  offset,\n  shift,\n  useClick,\n  useDismiss,\n  useFloating,\n  useInteractions,\n  UseInteractionsReturn,\n  useRole,\n  type UseFloatingReturn,\n} from \"@floating-ui/react\";\nimport { ThemeBaseColor } from \"../../types\";\n\nconst arrowWidth = 12;\n\nexport type UsePopoverReturn = {\n  open: boolean;\n  setOpen: (open: boolean) => void;\n  arrowRef: RefObject<HTMLDivElement | null>;\n  color?: ThemeBaseColor;\n  modal: boolean;\n  labelId?: string;\n  descriptionId?: string;\n  setLabelId: Dispatch<SetStateAction<string | undefined>>;\n  setDescriptionId: Dispatch<SetStateAction<string | undefined>>;\n} & UseInteractionsReturn &\n  UseFloatingReturn;\n\nexport function usePopover({\n  initialOpen = false,\n  placement = \"bottom\",\n  open: controlledOpen,\n  onOpen: setControlledOpen,\n  color,\n  modal = false,\n}: PopoverOptions): UsePopoverReturn {\n  const [uncontrolledOpen, setUncontrolledOpen] = useState(initialOpen);\n  const [labelId, setLabelId] = useState<string | undefined>();\n  const [descriptionId, setDescriptionId] = useState<string | undefined>();\n\n  const isUncontrolled = controlledOpen === null || controlledOpen === undefined;\n  const open = isUncontrolled ? uncontrolledOpen : controlledOpen;\n  const setOpen = isUncontrolled ? setUncontrolledOpen : setControlledOpen!;\n\n  const arrowRef = useRef<HTMLDivElement>(null);\n  const offsetVal = arrowWidth / 2;\n\n  const data = useFloating({\n    placement,\n    open,\n    onOpenChange: setOpen,\n    whileElementsMounted: autoUpdate,\n    middleware: [\n      offset(offsetVal),\n      flip(),\n      shift({ padding: 5 }),\n      arrow({\n        element: arrowRef,\n        padding: 12,\n      }),\n    ],\n  });\n\n  const { context } = data;\n\n  const click = useClick(context, {\n    // TODO verify if use case to disable it\n    // enabled: isUncontrolled,\n  });\n  const dismiss = useDismiss(context);\n  const role = useRole(context);\n\n  const interactions = useInteractions([click, dismiss, role]);\n\n  return useMemo(\n    () => ({\n      open,\n      setOpen,\n      ...interactions,\n      ...data,\n      arrowRef,\n      color,\n      modal,\n      labelId,\n      descriptionId,\n      setLabelId,\n      setDescriptionId,\n    }),\n    [open, setOpen, interactions, data, color, modal, labelId, descriptionId],\n  );\n}\n","import { createContext, useContext } from \"react\";\nimport { usePopover } from \"./usePopover\";\n\ntype ContextType = ReturnType<typeof usePopover> | null;\n\nexport const PopoverContext = createContext<ContextType>(null);\n\nexport function usePopoverContext() {\n  const context = useContext(PopoverContext);\n\n  if (context === null) {\n    throw new Error(\"Popover components must be wrapped in <Popover />\");\n  }\n\n  return context;\n}\n","import { ComponentProps } from \"react\";\nimport { usePopoverContext } from \".\";\nimport clsx from \"clsx\";\nimport { Button } from \"../button\";\n\ninterface PopoverHeaderProps extends ComponentProps<\"h2\"> {\n  closeButton?: boolean;\n}\nexport function PopoverHeader({\n  children,\n  closeButton = true,\n  className,\n  ...props\n}: PopoverHeaderProps) {\n  const { setOpen } = usePopoverContext();\n  return (\n    <>\n      {closeButton && (\n        <div className=\"float-right p-1\">\n          <Button icon variant=\"text\" color=\"gray\" onClick={() => setOpen(false)}>\n            <i className=\"fe-cancel\"></i>\n          </Button>\n        </div>\n      )}\n      <header className={clsx(\"flex items-center px-2 pt-2\", className)} {...props}>\n        <h4 className=\"font-semibold leading-6\">{children}</h4>\n      </header>\n    </>\n  );\n}\nexport function PopoverDescription({ children, className, ...props }: ComponentProps<\"div\">) {\n  return (\n    <div className={clsx(\"p-2\", className)} {...props}>\n      {children}\n    </div>\n  );\n}\n\nexport function PopoverFooter({ children, className, ...props }: ComponentProps<\"footer\">) {\n  return (\n    <footer className={clsx(\"relative z-10 px-2 pb-2\", className)} {...props}>\n      {children}\n    </footer>\n  );\n}\n"],"mappings":"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"}