{"version":3,"file":"PopoverDropdown.cjs","sources":["../../../../src/components/Popover/PopoverDropdown/PopoverDropdown.tsx"],"sourcesContent":["import { useFocusReturn, useMergedRef } from '@raikou/hooks';\nimport {\n  Box,\n  BoxProps,\n  closeOnEscape,\n  CompoundStylesApiProps,\n  ElementProps,\n  factory,\n  Factory,\n  rem,\n  useProps,\n} from '../../../core';\nimport { FloatingArrow } from '../../Floating';\nimport { FocusTrap } from '../../FocusTrap';\nimport { OptionalPortal } from '../../Portal';\nimport { Transition } from '../../Transition';\nimport type { PopoverStylesNames } from '../Popover';\nimport { usePopoverContext } from '../Popover.context';\n\nexport interface PopoverDropdownProps\n  extends BoxProps,\n    CompoundStylesApiProps<PopoverDropdownFactory>,\n    ElementProps<'div'> {}\n\nexport type PopoverDropdownFactory = Factory<{\n  props: PopoverDropdownProps;\n  ref: HTMLDivElement;\n  stylesNames: PopoverStylesNames;\n  compound: true;\n}>;\n\nconst defaultProps: Partial<PopoverDropdownProps> = {};\n\nexport const PopoverDropdown = factory<PopoverDropdownFactory>((_props, ref) => {\n  const props = useProps('PopoverDropdown', defaultProps, _props);\n  const {\n    className,\n    style,\n    vars,\n    children,\n    onKeyDownCapture,\n    variant,\n    classNames,\n    styles,\n    ...others\n  } = props;\n\n  const ctx = usePopoverContext();\n\n  const returnFocus = useFocusReturn({\n    opened: ctx.opened,\n    shouldReturnFocus: ctx.returnFocus,\n  });\n\n  const accessibleProps = ctx.withRoles\n    ? {\n        'aria-labelledby': ctx.getTargetId(),\n        id: ctx.getDropdownId(),\n        role: 'dialog',\n        tabIndex: -1,\n      }\n    : {};\n\n  const mergedRef = useMergedRef(ref, ctx.floating);\n\n  if (ctx.disabled) {\n    return null;\n  }\n\n  return (\n    <OptionalPortal {...ctx.portalProps} withinPortal={ctx.withinPortal}>\n      <Transition\n        mounted={ctx.opened}\n        {...ctx.transitionProps}\n        transition={ctx.transitionProps?.transition || 'fade'}\n        duration={ctx.transitionProps?.duration ?? 150}\n        keepMounted={ctx.keepMounted}\n        exitDuration={\n          typeof ctx.transitionProps?.exitDuration === 'number'\n            ? ctx.transitionProps.exitDuration\n            : ctx.transitionProps?.duration\n        }\n      >\n        {(transitionStyles) => (\n          <FocusTrap active={ctx.trapFocus && ctx.opened} innerRef={mergedRef}>\n            <Box\n              {...accessibleProps}\n              {...others}\n              variant={variant}\n              onKeyDownCapture={closeOnEscape(ctx.onClose, {\n                active: ctx.closeOnEscape,\n                onTrigger: returnFocus,\n                onKeyDown: onKeyDownCapture,\n              })}\n              data-position={ctx.placement}\n              data-fixed={ctx.floatingStrategy === 'fixed' || undefined}\n              {...ctx.getStyles('dropdown', {\n                className,\n                props,\n                classNames,\n                styles,\n                style: [\n                  {\n                    ...transitionStyles,\n                    zIndex: ctx.zIndex as React.CSSProperties['zIndex'],\n                    top: ctx.y ?? 0,\n                    left: ctx.x ?? 0,\n                    width: ctx.width === 'target' ? undefined : rem(ctx.width),\n                  },\n                  ctx.resolvedStyles.dropdown,\n                  styles?.dropdown,\n                  style,\n                ],\n              })}\n            >\n              {children}\n\n              <FloatingArrow\n                ref={ctx.arrowRef}\n                arrowX={ctx.arrowX}\n                arrowY={ctx.arrowY}\n                visible={ctx.withArrow}\n                position={ctx.placement}\n                arrowSize={ctx.arrowSize}\n                arrowRadius={ctx.arrowRadius}\n                arrowOffset={ctx.arrowOffset}\n                arrowPosition={ctx.arrowPosition}\n                {...ctx.getStyles('arrow', {\n                  props,\n                  classNames,\n                  styles,\n                })}\n              />\n            </Box>\n          </FocusTrap>\n        )}\n      </Transition>\n    </OptionalPortal>\n  );\n});\n\nPopoverDropdown.displayName = '@raikou/core/PopoverDropdown';\n"],"names":["factory","useProps","usePopoverContext","useFocusReturn","useMergedRef","OptionalPortal","jsx","Transition","FocusTrap","jsxs","Box","closeOnEscape","rem","FloatingArrow"],"mappings":"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"}