@undp/design-system-react
Version:
React based design system for UNDP
1 lines • 17.6 kB
Source Map (JSON)
{"version":3,"file":"hover-card-DEyKcMRF.cjs","names":["createContextScope","createPopperScope","HoverCard","React","useControllableState","HoverCardTrigger","Primitive","composeEventHandlers","HoverCardContent","Presence","useComposedRefs","DismissableLayer"],"sources":["../node_modules/@radix-ui/react-hover-card/dist/index.mjs","../src/components/ui/hover-card.tsx"],"sourcesContent":["\"use client\";\nvar __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/hover-card.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { jsx } from \"react/jsx-runtime\";\nvar originalBodyUserSelect;\nvar HOVERCARD_NAME = \"HoverCard\";\nvar [createHoverCardContext, createHoverCardScope] = createContextScope(HOVERCARD_NAME, [\n createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar [HoverCardProvider, useHoverCardContext] = createHoverCardContext(HOVERCARD_NAME);\nvar HoverCard = /* @__PURE__ */ __name((props) => {\n const {\n __scopeHoverCard,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n openDelay = 700,\n closeDelay = 300\n } = props;\n const popperScope = usePopperScope(__scopeHoverCard);\n const openTimerRef = React.useRef(0);\n const closeTimerRef = React.useRef(0);\n const hasSelectionRef = React.useRef(false);\n const isPointerDownOnContentRef = React.useRef(false);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: HOVERCARD_NAME\n });\n const handleOpen = React.useCallback(() => {\n clearTimeout(closeTimerRef.current);\n openTimerRef.current = window.setTimeout(() => setOpen(true), openDelay);\n }, [openDelay, setOpen]);\n const handleClose = React.useCallback(() => {\n clearTimeout(openTimerRef.current);\n if (!hasSelectionRef.current && !isPointerDownOnContentRef.current) {\n closeTimerRef.current = window.setTimeout(() => setOpen(false), closeDelay);\n }\n }, [closeDelay, setOpen]);\n const handleDismiss = React.useCallback(() => setOpen(false), [setOpen]);\n React.useEffect(() => {\n return () => {\n clearTimeout(openTimerRef.current);\n clearTimeout(closeTimerRef.current);\n };\n }, []);\n return /* @__PURE__ */ jsx(\n HoverCardProvider,\n {\n scope: __scopeHoverCard,\n open,\n onOpenChange: setOpen,\n onOpen: handleOpen,\n onClose: handleClose,\n onDismiss: handleDismiss,\n hasSelectionRef,\n isPointerDownOnContentRef,\n children: /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children })\n }\n );\n}, \"HoverCard\");\nvar TRIGGER_NAME = \"HoverCardTrigger\";\nvar HoverCardTrigger = /* @__PURE__ */ React.forwardRef(\n // blank line to reduce diff noise\n /* @__PURE__ */ __name(function HoverCardTrigger2(props, forwardedRef) {\n const { __scopeHoverCard, ...triggerProps } = props;\n const context = useHoverCardContext(TRIGGER_NAME, __scopeHoverCard);\n const popperScope = usePopperScope(__scopeHoverCard);\n return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: /* @__PURE__ */ jsx(\n Primitive.a,\n {\n \"data-state\": context.open ? \"open\" : \"closed\",\n ...triggerProps,\n ref: forwardedRef,\n onPointerEnter: composeEventHandlers(props.onPointerEnter, excludeTouch(context.onOpen)),\n onPointerLeave: composeEventHandlers(props.onPointerLeave, excludeTouch(context.onClose)),\n onFocus: composeEventHandlers(props.onFocus, context.onOpen),\n onBlur: composeEventHandlers(props.onBlur, context.onClose),\n onTouchStart: composeEventHandlers(props.onTouchStart, (event) => event.preventDefault())\n }\n ) });\n }, \"HoverCardTrigger\")\n);\nvar PORTAL_NAME = \"HoverCardPortal\";\nvar [PortalProvider, usePortalContext] = createHoverCardContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar HoverCardPortal = /* @__PURE__ */ __name((props) => {\n const { __scopeHoverCard, forceMount, children, container } = props;\n const context = useHoverCardContext(PORTAL_NAME, __scopeHoverCard);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeHoverCard, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n}, \"HoverCardPortal\");\nvar CONTENT_NAME = \"HoverCardContent\";\nvar HoverCardContent = /* @__PURE__ */ React.forwardRef(\n // blank line to reduce diff noise\n /* @__PURE__ */ __name(function HoverCardContent2(props, forwardedRef) {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeHoverCard);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = useHoverCardContext(CONTENT_NAME, props.__scopeHoverCard);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(\n HoverCardContentImpl,\n {\n \"data-state\": context.open ? \"open\" : \"closed\",\n ...contentProps,\n onPointerEnter: composeEventHandlers(props.onPointerEnter, excludeTouch(context.onOpen)),\n onPointerLeave: composeEventHandlers(props.onPointerLeave, excludeTouch(context.onClose)),\n ref: forwardedRef\n }\n ) });\n }, \"HoverCardContent\")\n);\nvar HoverCardContentImpl = /* @__PURE__ */ React.forwardRef(/* @__PURE__ */ __name(function HoverCardContentImpl2(props, forwardedRef) {\n const {\n __scopeHoverCard,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n ...contentProps\n } = props;\n const context = useHoverCardContext(CONTENT_NAME, __scopeHoverCard);\n const popperScope = usePopperScope(__scopeHoverCard);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const [containSelection, setContainSelection] = React.useState(false);\n React.useEffect(() => {\n if (containSelection) {\n const body = document.body;\n originalBodyUserSelect = body.style.userSelect || body.style.webkitUserSelect;\n body.style.userSelect = \"none\";\n body.style.webkitUserSelect = \"none\";\n return () => {\n body.style.userSelect = originalBodyUserSelect;\n body.style.webkitUserSelect = originalBodyUserSelect;\n };\n }\n }, [containSelection]);\n React.useEffect(() => {\n if (ref.current) {\n const handlePointerUp = /* @__PURE__ */ __name(() => {\n setContainSelection(false);\n context.isPointerDownOnContentRef.current = false;\n setTimeout(() => {\n const hasSelection = document.getSelection()?.toString() !== \"\";\n if (hasSelection) context.hasSelectionRef.current = true;\n });\n }, \"handlePointerUp\");\n document.addEventListener(\"pointerup\", handlePointerUp);\n return () => {\n document.removeEventListener(\"pointerup\", handlePointerUp);\n context.hasSelectionRef.current = false;\n context.isPointerDownOnContentRef.current = false;\n };\n }\n }, [context.isPointerDownOnContentRef, context.hasSelectionRef]);\n React.useEffect(() => {\n if (ref.current) {\n const tabbables = getTabbableNodes(ref.current);\n tabbables.forEach((tabbable) => tabbable.setAttribute(\"tabindex\", \"-1\"));\n }\n });\n return /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n asChild: true,\n disableOutsidePointerEvents: false,\n onInteractOutside,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside: composeEventHandlers(onFocusOutside, (event) => {\n event.preventDefault();\n }),\n onDismiss: context.onDismiss,\n children: /* @__PURE__ */ jsx(\n PopperPrimitive.Content,\n {\n ...popperScope,\n ...contentProps,\n onPointerDown: composeEventHandlers(contentProps.onPointerDown, (event) => {\n if (event.currentTarget.contains(event.target)) {\n setContainSelection(true);\n }\n context.hasSelectionRef.current = false;\n context.isPointerDownOnContentRef.current = true;\n }),\n ref: composedRefs,\n style: {\n ...contentProps.style,\n userSelect: containSelection ? \"text\" : void 0,\n // Safari requires prefix\n WebkitUserSelect: containSelection ? \"text\" : void 0,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-hover-card-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-hover-card-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-hover-card-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-hover-card-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-hover-card-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n }\n }\n )\n }\n );\n}, \"HoverCardContentImpl\"));\nvar HoverCardArrow = /* @__PURE__ */ React.forwardRef(\n /* @__PURE__ */ __name(function HoverCardArrow2(props, forwardedRef) {\n const { __scopeHoverCard, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopeHoverCard);\n return /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n }, \"HoverCardArrow\")\n);\nfunction excludeTouch(eventHandler) {\n return (event) => event.pointerType === \"touch\" ? void 0 : eventHandler();\n}\n__name(excludeTouch, \"excludeTouch\");\nfunction getTabbableNodes(container) {\n const nodes = [];\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n acceptNode: /* @__PURE__ */ __name((node) => {\n return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n }, \"acceptNode\")\n });\n while (walker.nextNode()) nodes.push(walker.currentNode);\n return nodes;\n}\n__name(getTabbableNodes, \"getTabbableNodes\");\nvar Root2 = HoverCard;\nvar Trigger = HoverCardTrigger;\nvar Portal = HoverCardPortal;\nvar Content2 = HoverCardContent;\nvar Arrow2 = HoverCardArrow;\nexport {\n Arrow2 as Arrow,\n Content2 as Content,\n HoverCard,\n HoverCardArrow,\n HoverCardContent,\n HoverCardPortal,\n HoverCardTrigger,\n Portal,\n Root2 as Root,\n Trigger,\n createHoverCardScope\n};\n//# sourceMappingURL=index.mjs.map\n","import { HoverCard as HoverCardPrimitive } from 'radix-ui';\nimport React from 'react';\n\nimport { cn } from '@/lib/utils';\n\nconst HoverCard = HoverCardPrimitive.Root;\n\nconst HoverCardTrigger = React.forwardRef<\n React.ComponentRef<typeof HoverCardPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof HoverCardPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <HoverCardPrimitive.Trigger\n {...props}\n ref={ref}\n className={cn('cursor-pointer text-content-primary', className)}\n >\n {children}\n </HoverCardPrimitive.Trigger>\n));\n\nHoverCardTrigger.displayName = 'HoverCardTrigger';\nconst HoverCardContent = React.forwardRef<\n React.ComponentRef<typeof HoverCardPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof HoverCardPrimitive.Content>\n>(({ className, align = 'center', sideOffset = 4, ...props }, ref) => (\n <HoverCardPrimitive.Content\n {...props}\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n 'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-64 bg-surface/90 p-2 text-content-primary text-sm outline-hidden backdrop-blur-frosted data-[state=closed]:animate-out data-[state=open]:animate-in',\n className,\n )}\n />\n));\nHoverCardContent.displayName = HoverCardPrimitive.Content.displayName;\n\nexport { HoverCard, HoverCardContent, HoverCardTrigger };\n"],"x_google_ignoreList":[0],"mappings":"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"}