@loke/ui
Version:
2 lines (1 loc) • 11.2 kB
JavaScript
var __create=Object.create;var{getPrototypeOf:__getProtoOf,defineProperty:__defProp,getOwnPropertyNames:__getOwnPropNames,getOwnPropertyDescriptor:__getOwnPropDesc}=Object,__hasOwnProp=Object.prototype.hasOwnProperty;function __accessProp(key){return this[key]}var __toESMCache_node,__toESMCache_esm,__toESM=(mod,isNodeMode,target)=>{var canCache=mod!=null&&typeof mod==="object";if(canCache){var cache=isNodeMode?__toESMCache_node??=new WeakMap:__toESMCache_esm??=new WeakMap,cached=cache.get(mod);if(cached)return cached}target=mod!=null?__create(__getProtoOf(mod)):{};let to=isNodeMode||!mod||!mod.__esModule?__defProp(target,"default",{value:mod,enumerable:!0}):target;for(let key of __getOwnPropNames(mod))if(!__hasOwnProp.call(to,key))__defProp(to,key,{get:__accessProp.bind(mod,key),enumerable:!0});if(canCache)cache.set(mod,to);return to},__toCommonJS=(from)=>{var entry=(__moduleCache??=new WeakMap).get(from),desc;if(entry)return entry;if(entry=__defProp({},"__esModule",{value:!0}),from&&typeof from==="object"||typeof from==="function"){for(var key of __getOwnPropNames(from))if(!__hasOwnProp.call(entry,key))__defProp(entry,key,{get:__accessProp.bind(from,key),enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable})}return __moduleCache.set(from,entry),entry},__moduleCache;var __returnValue=(v)=>v;function __exportSetter(name,newValue){this[name]=__returnValue.bind(null,newValue)}var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0,configurable:!0,set:__exportSetter.bind(all,name)})};var exports_popover={};__export(exports_popover,{createPopoverScope:()=>createPopoverScope,Trigger:()=>Trigger,Root:()=>Root2,Portal:()=>Portal,PopoverTrigger:()=>PopoverTrigger,PopoverPortal:()=>PopoverPortal,PopoverContent:()=>PopoverContent,PopoverClose:()=>PopoverClose,PopoverArrow:()=>PopoverArrow,PopoverAnchor:()=>PopoverAnchor,Popover:()=>Popover,Content:()=>Content2,Close:()=>Close,Arrow:()=>Arrow2,Anchor:()=>Anchor2});module.exports=__toCommonJS(exports_popover);var import_compose_events=require("@loke/ui/compose-events"),import_compose_refs=require("@loke/ui/compose-refs"),import_context=require("@loke/ui/context"),import_dismissable_layer=require("@loke/ui/dismissable-layer"),import_focus_guards=require("@loke/ui/focus-guards"),import_focus_scope=require("@loke/ui/focus-scope"),PopperPrimitive=__toESM(require("@loke/ui/popper")),import_popper=require("@loke/ui/popper"),import_portal=require("@loke/ui/portal"),import_presence=require("@loke/ui/presence"),import_primitive=require("@loke/ui/primitive"),import_slot=require("@loke/ui/slot"),import_use_controllable_state=require("@loke/ui/use-controllable-state"),import_use_id=require("@loke/ui/use-id"),import_aria_hidden=require("aria-hidden"),import_react=require("react"),import_react_remove_scroll=require("react-remove-scroll"),jsx_runtime=require("react/jsx-runtime"),POPOVER_NAME="Popover",[createPopoverContext,createPopoverScope]=import_context.createContextScope(POPOVER_NAME,[import_popper.createPopperScope]),usePopperScope=import_popper.createPopperScope(),[PopoverProvider,usePopoverContext]=createPopoverContext(POPOVER_NAME),Popover=(props)=>{let{__scopePopover,children,open:openProp,defaultOpen,onOpenChange,modal=!1}=props,popperScope=usePopperScope(__scopePopover),triggerRef=import_react.useRef(null),[hasCustomAnchor,setHasCustomAnchor]=import_react.useState(!1),[open,setOpen]=import_use_controllable_state.useControllableState({caller:POPOVER_NAME,defaultProp:defaultOpen??!1,onChange:onOpenChange,prop:openProp});return jsx_runtime.jsx(PopperPrimitive.Root,{...popperScope,children:jsx_runtime.jsx(PopoverProvider,{contentId:import_use_id.useId(),hasCustomAnchor,modal,onCustomAnchorAdd:import_react.useCallback(()=>setHasCustomAnchor(!0),[]),onCustomAnchorRemove:import_react.useCallback(()=>setHasCustomAnchor(!1),[]),onOpenChange:setOpen,onOpenToggle:import_react.useCallback(()=>setOpen((prevOpen)=>!prevOpen),[setOpen]),open,scope:__scopePopover,triggerRef,children})})};Popover.displayName=POPOVER_NAME;var ANCHOR_NAME="PopoverAnchor",PopoverAnchor=import_react.forwardRef((props,forwardedRef)=>{let{__scopePopover,...anchorProps}=props,context=usePopoverContext(ANCHOR_NAME,__scopePopover),popperScope=usePopperScope(__scopePopover),{onCustomAnchorAdd,onCustomAnchorRemove}=context;return import_react.useEffect(()=>{return onCustomAnchorAdd(),()=>onCustomAnchorRemove()},[onCustomAnchorAdd,onCustomAnchorRemove]),jsx_runtime.jsx(PopperPrimitive.Anchor,{...popperScope,...anchorProps,ref:forwardedRef})});PopoverAnchor.displayName=ANCHOR_NAME;var TRIGGER_NAME="PopoverTrigger",PopoverTrigger=import_react.forwardRef((props,forwardedRef)=>{let{__scopePopover,...triggerProps}=props,context=usePopoverContext(TRIGGER_NAME,__scopePopover),popperScope=usePopperScope(__scopePopover),composedTriggerRef=import_compose_refs.useComposedRefs(forwardedRef,context.triggerRef),trigger=jsx_runtime.jsx(import_primitive.Primitive.button,{"aria-controls":context.contentId,"aria-expanded":context.open,"aria-haspopup":"dialog","data-state":getState(context.open),type:"button",...triggerProps,onClick:import_compose_events.composeEventHandlers(props.onClick,context.onOpenToggle),ref:composedTriggerRef});return context.hasCustomAnchor?trigger:jsx_runtime.jsx(PopperPrimitive.Anchor,{asChild:!0,...popperScope,children:trigger})});PopoverTrigger.displayName=TRIGGER_NAME;var PORTAL_NAME="PopoverPortal",[PortalProvider,usePortalContext]=createPopoverContext(PORTAL_NAME,{forceMount:void 0}),PopoverPortal=(props)=>{let{__scopePopover,forceMount,children,container}=props,context=usePopoverContext(PORTAL_NAME,__scopePopover);return jsx_runtime.jsx(PortalProvider,{forceMount,scope:__scopePopover,children:jsx_runtime.jsx(import_presence.Presence,{present:forceMount||context.open,children:jsx_runtime.jsx(import_portal.Portal,{asChild:!0,container,children})})})};PopoverPortal.displayName=PORTAL_NAME;var CONTENT_NAME="PopoverContent",PopoverContent=import_react.forwardRef((props,forwardedRef)=>{let portalContext=usePortalContext(CONTENT_NAME,props.__scopePopover),{forceMount=portalContext.forceMount,...contentProps}=props,context=usePopoverContext(CONTENT_NAME,props.__scopePopover);return jsx_runtime.jsx(import_presence.Presence,{present:forceMount||context.open,children:context.modal?jsx_runtime.jsx(PopoverContentModal,{...contentProps,ref:forwardedRef}):jsx_runtime.jsx(PopoverContentNonModal,{...contentProps,ref:forwardedRef})})});PopoverContent.displayName=CONTENT_NAME;var Slot=import_slot.createSlot("PopoverContent.RemoveScroll"),PopoverContentModal=import_react.forwardRef((props,forwardedRef)=>{let context=usePopoverContext(CONTENT_NAME,props.__scopePopover),contentRef=import_react.useRef(null),composedRefs=import_compose_refs.useComposedRefs(forwardedRef,contentRef),isRightClickOutsideRef=import_react.useRef(!1);return import_react.useEffect(()=>{let content=contentRef.current;if(content)return import_aria_hidden.hideOthers(content)},[]),jsx_runtime.jsx(import_react_remove_scroll.RemoveScroll,{allowPinchZoom:!0,as:Slot,children:jsx_runtime.jsx(PopoverContentImpl,{...props,disableOutsidePointerEvents:!0,onCloseAutoFocus:import_compose_events.composeEventHandlers(props.onCloseAutoFocus,(event)=>{if(event.preventDefault(),!isRightClickOutsideRef.current)context.triggerRef.current?.focus()}),onFocusOutside:import_compose_events.composeEventHandlers(props.onFocusOutside,(event)=>event.preventDefault(),{checkForDefaultPrevented:!1}),onPointerDownOutside:import_compose_events.composeEventHandlers(props.onPointerDownOutside,(event)=>{let originalEvent=event.detail.originalEvent,ctrlLeftClick=originalEvent.button===0&&originalEvent.ctrlKey===!0,isRightClick=originalEvent.button===2||ctrlLeftClick;isRightClickOutsideRef.current=isRightClick},{checkForDefaultPrevented:!1}),ref:composedRefs,trapFocus:context.open})})}),PopoverContentNonModal=import_react.forwardRef((props,forwardedRef)=>{let context=usePopoverContext(CONTENT_NAME,props.__scopePopover),hasInteractedOutsideRef=import_react.useRef(!1),hasPointerDownOutsideRef=import_react.useRef(!1);return jsx_runtime.jsx(PopoverContentImpl,{...props,disableOutsidePointerEvents:!1,onCloseAutoFocus:(event)=>{if(props.onCloseAutoFocus?.(event),!event.defaultPrevented){if(!hasInteractedOutsideRef.current)context.triggerRef.current?.focus();event.preventDefault()}hasInteractedOutsideRef.current=!1,hasPointerDownOutsideRef.current=!1},onInteractOutside:(event)=>{if(props.onInteractOutside?.(event),!event.defaultPrevented){if(hasInteractedOutsideRef.current=!0,event.detail.originalEvent.type==="pointerdown")hasPointerDownOutsideRef.current=!0}let target=event.target;if(context.triggerRef.current?.contains(target))event.preventDefault();if(event.detail.originalEvent.type==="focusin"&&hasPointerDownOutsideRef.current)event.preventDefault()},ref:forwardedRef,trapFocus:!1})}),PopoverContentImpl=import_react.forwardRef((props,forwardedRef)=>{let{__scopePopover,trapFocus,onOpenAutoFocus,onCloseAutoFocus,disableOutsidePointerEvents,onEscapeKeyDown,onPointerDownOutside,onFocusOutside,onInteractOutside,...contentProps}=props,context=usePopoverContext(CONTENT_NAME,__scopePopover),popperScope=usePopperScope(__scopePopover);return import_focus_guards.useFocusGuards(),jsx_runtime.jsx(import_focus_scope.FocusScope,{asChild:!0,loop:!0,onMountAutoFocus:onOpenAutoFocus,onUnmountAutoFocus:onCloseAutoFocus,trapped:trapFocus,children:jsx_runtime.jsx(import_dismissable_layer.DismissableLayer,{asChild:!0,disableOutsidePointerEvents,onDismiss:()=>context.onOpenChange(!1),onEscapeKeyDown,onFocusOutside,onInteractOutside,onPointerDownOutside,children:jsx_runtime.jsx(PopperPrimitive.Content,{"data-state":getState(context.open),id:context.contentId,role:"dialog",...popperScope,...contentProps,ref:forwardedRef,style:{...contentProps.style,...{"--loke-popover-content-available-height":"var(--loke-popper-available-height)","--loke-popover-content-available-width":"var(--loke-popper-available-width)","--loke-popover-content-transform-origin":"var(--loke-popper-transform-origin)","--loke-popover-trigger-height":"var(--loke-popper-anchor-height)","--loke-popover-trigger-width":"var(--loke-popper-anchor-width)"}}})})})}),CLOSE_NAME="PopoverClose",PopoverClose=import_react.forwardRef((props,forwardedRef)=>{let{__scopePopover,...closeProps}=props,context=usePopoverContext(CLOSE_NAME,__scopePopover);return jsx_runtime.jsx(import_primitive.Primitive.button,{type:"button",...closeProps,onClick:import_compose_events.composeEventHandlers(props.onClick,()=>context.onOpenChange(!1)),ref:forwardedRef})});PopoverClose.displayName=CLOSE_NAME;var ARROW_NAME="PopoverArrow",PopoverArrow=import_react.forwardRef((props,forwardedRef)=>{let{__scopePopover,...arrowProps}=props,popperScope=usePopperScope(__scopePopover);return jsx_runtime.jsx(PopperPrimitive.Arrow,{...popperScope,...arrowProps,ref:forwardedRef})});PopoverArrow.displayName=ARROW_NAME;function getState(open){return open?"open":"closed"}var Root2=Popover,Anchor2=PopoverAnchor,Trigger=PopoverTrigger,Portal=PopoverPortal,Content2=PopoverContent,Close=PopoverClose,Arrow2=PopoverArrow;