{"version":3,"file":"PopoverGroup.mjs","names":["BasePopover"],"sources":["../../../src/base-ui/Popover/PopoverGroup.tsx"],"sourcesContent":["'use client';\n\nimport { Popover as BasePopover } from '@base-ui/react/popover';\nimport { type FC, type ReactNode, useCallback, useMemo, useRef, useState } from 'react';\n\nimport {\n  useDestroyOnInvalidActiveTriggerElement,\n  useHidePopupWhenPositionerAtOrigin,\n} from '@/utils/destroyOnInvalidActiveTriggerElement';\nimport { parseTrigger } from '@/utils/parseTrigger';\nimport { placementMap } from '@/utils/placement';\n\nimport { PopoverArrowIcon } from './ArrowIcon';\nimport {\n  PopoverArrow,\n  PopoverPopup,\n  PopoverPortal,\n  PopoverPositioner,\n  PopoverViewport,\n} from './atoms';\nimport { PopoverProvider } from './context';\nimport {\n  PopoverGroupHandleContext,\n  type PopoverGroupItem,\n  PopoverGroupPropsContext,\n  type PopoverGroupSharedProps,\n} from './groupContext';\nimport { usePopoverPortalContainer } from './PopoverPortal';\n\ntype PopoverGroupProps = PopoverGroupSharedProps & {\n  children: ReactNode;\n};\n\nconst PopoverGroup: FC<PopoverGroupProps> = ({\n  children,\n  contentLayoutAnimation = false,\n  disableDestroyOnInvalidTrigger = false,\n  disableZeroOriginGuard = false,\n  ...sharedProps\n}) => {\n  const [{ handle, key }, setHandleState] = useState(() => ({\n    handle: BasePopover.createHandle<PopoverGroupItem>(),\n    key: 0,\n  }));\n  const activeItemRef = useRef<PopoverGroupItem | null>(null);\n  const destroy = useCallback(() => {\n    activeItemRef.current = null;\n    setHandleState(({ key }) => ({\n      handle: BasePopover.createHandle<PopoverGroupItem>(),\n      key: key + 1,\n    }));\n  }, []);\n  const close = useCallback(() => {\n    handle.close();\n  }, [handle]);\n  const contextValue = useMemo(() => ({ close }), [close]);\n\n  const handleOpenChange = useCallback((open: boolean) => {\n    activeItemRef.current?.onOpenChange?.(open);\n  }, []);\n\n  useDestroyOnInvalidActiveTriggerElement(handle.store, destroy, {\n    enabled: !disableDestroyOnInvalidTrigger,\n  });\n  useHidePopupWhenPositionerAtOrigin(handle.store, { enabled: !disableZeroOriginGuard });\n\n  const portalContainer = usePopoverPortalContainer();\n\n  return (\n    <PopoverGroupHandleContext value={handle}>\n      <PopoverGroupPropsContext value={sharedProps}>\n        {children}\n        <BasePopover.Root handle={handle} key={key} onOpenChange={handleOpenChange}>\n          {({ payload }) => {\n            const item = (payload as PopoverGroupItem | null) ?? null;\n            activeItemRef.current = item;\n\n            if (!item?.content) return null;\n\n            const arrow = item.arrow ?? false;\n            const placement = item.placement ?? 'top';\n            const { openOnHover } = parseTrigger(item.trigger ?? 'hover');\n\n            const placementConfig = placementMap[placement] ?? placementMap.top;\n            const resolvedSideOffset = arrow ? 10 : 6;\n\n            const resolvedClassNames = {\n              arrow: item.classNames?.arrow,\n              popup: item.className,\n              positioner: item.classNames?.root,\n              viewport: item.classNames?.content,\n            };\n\n            const resolvedStyles = {\n              arrow: item.styles?.arrow,\n              positioner: {\n                ...item.styles?.root,\n                zIndex: item.zIndex ?? 1100,\n              },\n              viewport: item.styles?.content,\n            };\n\n            const contentNode = (\n              <PopoverProvider value={contextValue}>{item.content}</PopoverProvider>\n            );\n\n            const popup = (\n              <PopoverPositioner\n                align={placementConfig.align}\n                className={resolvedClassNames.positioner}\n                data-layout-animation={contentLayoutAnimation || undefined}\n                hoverTrigger={openOnHover}\n                placement={placement}\n                side={placementConfig.side}\n                sideOffset={resolvedSideOffset}\n                style={resolvedStyles.positioner}\n                {...item.positionerProps}\n              >\n                <PopoverPopup\n                  className={resolvedClassNames.popup}\n                  data-layout-animation={contentLayoutAnimation || undefined}\n                  {...item.popupProps}\n                >\n                  {arrow && (\n                    <PopoverArrow className={resolvedClassNames.arrow} style={resolvedStyles.arrow}>\n                      {PopoverArrowIcon}\n                    </PopoverArrow>\n                  )}\n                  {contentLayoutAnimation ? (\n                    <PopoverViewport\n                      className={resolvedClassNames.viewport}\n                      style={resolvedStyles.viewport}\n                    >\n                      {contentNode}\n                    </PopoverViewport>\n                  ) : (\n                    <div className={resolvedClassNames.viewport} style={resolvedStyles.viewport}>\n                      {contentNode}\n                    </div>\n                  )}\n                </PopoverPopup>\n              </PopoverPositioner>\n            );\n\n            return portalContainer ? (\n              <PopoverPortal container={portalContainer}>{popup}</PopoverPortal>\n            ) : null;\n          }}\n        </BasePopover.Root>\n      </PopoverGroupPropsContext>\n    </PopoverGroupHandleContext>\n  );\n};\n\nPopoverGroup.displayName = 'PopoverGroup';\n\nexport default PopoverGroup;\n"],"mappings":";;;;;;;;;;;;;AAiCA,MAAM,gBAAuC,EAC3C,UACA,yBAAyB,OACzB,iCAAiC,OACjC,yBAAyB,OACzB,GAAG,kBACC;CACJ,MAAM,CAAC,EAAE,QAAQ,OAAO,kBAAkB,gBAAgB;EACxD,QAAQA,QAAY,cAAgC;EACpD,KAAK;EACN,EAAE;CACH,MAAM,gBAAgB,OAAgC,KAAK;CAC3D,MAAM,UAAU,kBAAkB;AAChC,gBAAc,UAAU;AACxB,kBAAgB,EAAE,WAAW;GAC3B,QAAQA,QAAY,cAAgC;GACpD,KAAK,MAAM;GACZ,EAAE;IACF,EAAE,CAAC;CACN,MAAM,QAAQ,kBAAkB;AAC9B,SAAO,OAAO;IACb,CAAC,OAAO,CAAC;CACZ,MAAM,eAAe,eAAe,EAAE,OAAO,GAAG,CAAC,MAAM,CAAC;CAExD,MAAM,mBAAmB,aAAa,SAAkB;AACtD,gBAAc,SAAS,eAAe,KAAK;IAC1C,EAAE,CAAC;AAEN,yCAAwC,OAAO,OAAO,SAAS,EAC7D,SAAS,CAAC,gCACX,CAAC;AACF,oCAAmC,OAAO,OAAO,EAAE,SAAS,CAAC,wBAAwB,CAAC;CAEtF,MAAM,kBAAkB,2BAA2B;AAEnD,QACE,oBAAC,2BAAD;EAA2B,OAAO;YAChC,qBAAC,0BAAD;GAA0B,OAAO;aAAjC,CACG,UACD,oBAACA,QAAY,MAAb;IAA0B;IAAkB,cAAc;eACtD,EAAE,cAAc;KAChB,MAAM,OAAQ,WAAuC;AACrD,mBAAc,UAAU;AAExB,SAAI,CAAC,MAAM,QAAS,QAAO;KAE3B,MAAM,QAAQ,KAAK,SAAS;KAC5B,MAAM,YAAY,KAAK,aAAa;KACpC,MAAM,EAAE,gBAAgB,aAAa,KAAK,WAAW,QAAQ;KAE7D,MAAM,kBAAkB,aAAa,cAAc,aAAa;KAChE,MAAM,qBAAqB,QAAQ,KAAK;KAExC,MAAM,qBAAqB;MACzB,OAAO,KAAK,YAAY;MACxB,OAAO,KAAK;MACZ,YAAY,KAAK,YAAY;MAC7B,UAAU,KAAK,YAAY;MAC5B;KAED,MAAM,iBAAiB;MACrB,OAAO,KAAK,QAAQ;MACpB,YAAY;OACV,GAAG,KAAK,QAAQ;OAChB,QAAQ,KAAK,UAAU;OACxB;MACD,UAAU,KAAK,QAAQ;MACxB;KAED,MAAM,cACJ,oBAAC,iBAAD;MAAiB,OAAO;gBAAe,KAAK;MAA0B,CAAA;KAGxE,MAAM,QACJ,oBAAC,mBAAD;MACE,OAAO,gBAAgB;MACvB,WAAW,mBAAmB;MAC9B,yBAAuB,0BAA0B,KAAA;MACjD,cAAc;MACH;MACX,MAAM,gBAAgB;MACtB,YAAY;MACZ,OAAO,eAAe;MACtB,GAAI,KAAK;gBAET,qBAAC,cAAD;OACE,WAAW,mBAAmB;OAC9B,yBAAuB,0BAA0B,KAAA;OACjD,GAAI,KAAK;iBAHX,CAKG,SACC,oBAAC,cAAD;QAAc,WAAW,mBAAmB;QAAO,OAAO,eAAe;kBACtE;QACY,CAAA,EAEhB,yBACC,oBAAC,iBAAD;QACE,WAAW,mBAAmB;QAC9B,OAAO,eAAe;kBAErB;QACe,CAAA,GAElB,oBAAC,OAAD;QAAK,WAAW,mBAAmB;QAAU,OAAO,eAAe;kBAChE;QACG,CAAA,CAEK;;MACG,CAAA;AAGtB,YAAO,kBACL,oBAAC,eAAD;MAAe,WAAW;gBAAkB;MAAsB,CAAA,GAChE;;IAEW,EA5EoB,IA4EpB,CACM;;EACD,CAAA;;AAIhC,aAAa,cAAc"}