@radix-ui/react-hover-card 1.0.1-rc.9 → 1.0.2-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"mappings":";;;;;;AAsBA,OAAA,2FAEE,CAAC;AAcH;IACE,QAAQ,CAAC,EAAE,MAAM,SAAS,CAAC;IAC3B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,OAAA,MAAM,WAAW,MAAM,EAAE,CAAC,cAAc,CAoDvC,CAAC;AAWF,0BAA0B,MAAM,wBAAwB,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC;AAC7E,sCAAgC,SAAQ,kBAAkB;CAAG;AAE7D,OAAA,MAAM,iHAqBL,CAAC;AAeF,mBAAmB,MAAM,wBAAwB,CAAC,eAAsB,CAAC,CAAC;AAC1E,qCAA+B,SAAQ,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC;IACjE,QAAQ,CAAC,EAAE,MAAM,SAAS,CAAC;IAC3B;;;OAGG;IACH,UAAU,CAAC,EAAE,IAAI,CAAC;CACnB;AAED,OAAA,MAAM,iBAAiB,MAAM,EAAE,CAAC,oBAAoB,CAcnD,CAAC;AAWF,sCAAgC,SAAQ,yBAAyB;IAC/D;;;OAGG;IACH,UAAU,CAAC,EAAE,IAAI,CAAC;CACnB;AAED,OAAA,MAAM,8GAiBL,CAAC;AAOF,6BAA6B,MAAM,wBAAwB,CAAC,uBAAuB,CAAC,CAAC;AACrF,0BAA0B,MAAM,wBAAwB,CAAC,OAAO,gBAAgB,OAAO,CAAC,CAAC;AACzF,mCAAoC,SAAQ,kBAAkB;IAC5D;;;OAGG;IACH,eAAe,CAAC,EAAE,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;IAC3D;;;OAGG;IACH,oBAAoB,CAAC,EAAE,qBAAqB,CAAC,sBAAsB,CAAC,CAAC;IACrE;;;OAGG;IACH,cAAc,CAAC,EAAE,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;IACzD;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,qBAAqB,CAAC,mBAAmB,CAAC,CAAC;CAChE;AA0DD,wBAAwB,MAAM,wBAAwB,CAAC,OAAO,gBAAgB,KAAK,CAAC,CAAC;AACrF,oCAA8B,SAAQ,gBAAgB;CAAG;AAEzD,OAAA,MAAM,yGAML,CAAC;AA6BF,OAAA,MAAM,8BAAgB,CAAC;AACvB,OAAA,MAAM,wGAA0B,CAAC;AACjC,OAAA,MAAM,sCAAwB,CAAC;AAC/B,OAAA,MAAM,qGAA0B,CAAC;AACjC,OAAA,MAAM,gGAAsB,CAAC","sources":["packages/react/hover-card/src/packages/react/hover-card/src/HoverCard.tsx","packages/react/hover-card/src/packages/react/hover-card/src/index.ts","packages/react/hover-card/src/index.ts"],"sourcesContent":[null,null,"export {\n createHoverCardScope,\n //\n HoverCard,\n HoverCardTrigger,\n HoverCardPortal,\n HoverCardContent,\n HoverCardArrow,\n //\n Root,\n Trigger,\n Portal,\n Content,\n Arrow,\n} from './HoverCard';\nexport type {\n HoverCardProps,\n HoverCardTriggerProps,\n HoverCardPortalProps,\n HoverCardContentProps,\n HoverCardArrowProps,\n} from './HoverCard';\n"],"names":[],"version":3,"file":"index.d.ts.map"}
1
+ {"mappings":";;;;;;AAwBA,OAAA,2FAEE,CAAC;AAgBH;IACE,QAAQ,CAAC,EAAE,MAAM,SAAS,CAAC;IAC3B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,OAAA,MAAM,WAAW,MAAM,EAAE,CAAC,cAAc,CA0DvC,CAAC;AAWF,0BAA0B,MAAM,wBAAwB,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC;AAC7E,sCAAgC,SAAQ,kBAAkB;CAAG;AAE7D,OAAA,MAAM,iHAqBL,CAAC;AAeF,mBAAmB,MAAM,wBAAwB,CAAC,eAAsB,CAAC,CAAC;AAC1E,qCAA+B,SAAQ,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC;IACjE,QAAQ,CAAC,EAAE,MAAM,SAAS,CAAC;IAC3B;;;OAGG;IACH,UAAU,CAAC,EAAE,IAAI,CAAC;CACnB;AAED,OAAA,MAAM,iBAAiB,MAAM,EAAE,CAAC,oBAAoB,CAcnD,CAAC;AAWF,sCAAgC,SAAQ,yBAAyB;IAC/D;;;OAGG;IACH,UAAU,CAAC,EAAE,IAAI,CAAC;CACnB;AAED,OAAA,MAAM,8GAiBL,CAAC;AAOF,6BAA6B,MAAM,wBAAwB,CAAC,uBAAuB,CAAC,CAAC;AACrF,0BAA0B,MAAM,wBAAwB,CAAC,OAAO,gBAAgB,OAAO,CAAC,CAAC;AACzF,mCAAoC,SAAQ,kBAAkB;IAC5D;;;OAGG;IACH,eAAe,CAAC,EAAE,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;IAC3D;;;OAGG;IACH,oBAAoB,CAAC,EAAE,qBAAqB,CAAC,sBAAsB,CAAC,CAAC;IACrE;;;OAGG;IACH,cAAc,CAAC,EAAE,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;IACzD;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,qBAAqB,CAAC,mBAAmB,CAAC,CAAC;CAChE;AA8GD,wBAAwB,MAAM,wBAAwB,CAAC,OAAO,gBAAgB,KAAK,CAAC,CAAC;AACrF,oCAA8B,SAAQ,gBAAgB;CAAG;AAEzD,OAAA,MAAM,yGAML,CAAC;AA6BF,OAAA,MAAM,8BAAgB,CAAC;AACvB,OAAA,MAAM,wGAA0B,CAAC;AACjC,OAAA,MAAM,sCAAwB,CAAC;AAC/B,OAAA,MAAM,qGAA0B,CAAC;AACjC,OAAA,MAAM,gGAAsB,CAAC","sources":["packages/react/hover-card/src/packages/react/hover-card/src/HoverCard.tsx","packages/react/hover-card/src/packages/react/hover-card/src/index.ts","packages/react/hover-card/src/index.ts"],"sourcesContent":[null,null,"export {\n createHoverCardScope,\n //\n HoverCard,\n HoverCardTrigger,\n HoverCardPortal,\n HoverCardContent,\n HoverCardArrow,\n //\n Root,\n Trigger,\n Portal,\n Content,\n Arrow,\n} from './HoverCard';\nexport type {\n HoverCardProps,\n HoverCardTriggerProps,\n HoverCardPortalProps,\n HoverCardContentProps,\n HoverCardArrowProps,\n} from './HoverCard';\n"],"names":[],"version":3,"file":"index.d.ts.map"}
package/dist/index.js CHANGED
@@ -42,7 +42,8 @@ $parcel$export(module.exports, "Arrow", () => $e5715e9205c1e1fe$export$21b07c8f2
42
42
 
43
43
  /* -------------------------------------------------------------------------------------------------
44
44
  * HoverCard
45
- * -----------------------------------------------------------------------------------------------*/ const $e5715e9205c1e1fe$var$HOVERCARD_NAME = 'HoverCard';
45
+ * -----------------------------------------------------------------------------------------------*/ let $e5715e9205c1e1fe$var$originalBodyUserSelect;
46
+ const $e5715e9205c1e1fe$var$HOVERCARD_NAME = 'HoverCard';
46
47
  const [$e5715e9205c1e1fe$var$createHoverCardContext, $e5715e9205c1e1fe$export$47b6998a836b7260] = $eFX7w$radixuireactcontext.createContextScope($e5715e9205c1e1fe$var$HOVERCARD_NAME, [
47
48
  $eFX7w$radixuireactpopper.createPopperScope
48
49
  ]);
@@ -53,6 +54,8 @@ const $e5715e9205c1e1fe$export$57a077cc9fbe653e = (props)=>{
53
54
  const popperScope = $e5715e9205c1e1fe$var$usePopperScope(__scopeHoverCard);
54
55
  const openTimerRef = $eFX7w$react.useRef(0);
55
56
  const closeTimerRef = $eFX7w$react.useRef(0);
57
+ const hasSelectionRef = $eFX7w$react.useRef(false);
58
+ const isPointerDownOnContentRef = $eFX7w$react.useRef(false);
56
59
  const [open = false, setOpen] = $eFX7w$radixuireactusecontrollablestate.useControllableState({
57
60
  prop: openProp,
58
61
  defaultProp: defaultOpen,
@@ -68,7 +71,7 @@ const $e5715e9205c1e1fe$export$57a077cc9fbe653e = (props)=>{
68
71
  ]);
69
72
  const handleClose = $eFX7w$react.useCallback(()=>{
70
73
  clearTimeout(openTimerRef.current);
71
- closeTimerRef.current = window.setTimeout(()=>setOpen(false)
74
+ if (!hasSelectionRef.current && !isPointerDownOnContentRef.current) closeTimerRef.current = window.setTimeout(()=>setOpen(false)
72
75
  , closeDelay);
73
76
  }, [
74
77
  closeDelay,
@@ -90,7 +93,9 @@ const $e5715e9205c1e1fe$export$57a077cc9fbe653e = (props)=>{
90
93
  onOpenChange: setOpen,
91
94
  onOpen: handleOpen,
92
95
  onClose: handleClose,
93
- onDismiss: handleDismiss
96
+ onDismiss: handleDismiss,
97
+ hasSelectionRef: hasSelectionRef,
98
+ isPointerDownOnContentRef: isPointerDownOnContentRef
94
99
  }, /*#__PURE__*/ $eFX7w$react.createElement($eFX7w$radixuireactpopper.Root, popperScope, children));
95
100
  };
96
101
  /*#__PURE__*/ Object.assign($e5715e9205c1e1fe$export$57a077cc9fbe653e, {
@@ -169,6 +174,43 @@ const $e5715e9205c1e1fe$export$aa4724a5938c586 = /*#__PURE__*/ $eFX7w$react.forw
169
174
  const popperScope = $e5715e9205c1e1fe$var$usePopperScope(__scopeHoverCard);
170
175
  const ref = $eFX7w$react.useRef(null);
171
176
  const composedRefs = $eFX7w$radixuireactcomposerefs.useComposedRefs(forwardedRef, ref);
177
+ const [containSelection, setContainSelection] = $eFX7w$react.useState(false);
178
+ $eFX7w$react.useEffect(()=>{
179
+ if (containSelection) {
180
+ const body = document.body; // Safari requires prefix
181
+ $e5715e9205c1e1fe$var$originalBodyUserSelect = body.style.userSelect || body.style.webkitUserSelect;
182
+ body.style.userSelect = 'none';
183
+ body.style.webkitUserSelect = 'none';
184
+ return ()=>{
185
+ body.style.userSelect = $e5715e9205c1e1fe$var$originalBodyUserSelect;
186
+ body.style.webkitUserSelect = $e5715e9205c1e1fe$var$originalBodyUserSelect;
187
+ };
188
+ }
189
+ }, [
190
+ containSelection
191
+ ]);
192
+ $eFX7w$react.useEffect(()=>{
193
+ if (ref.current) {
194
+ const handlePointerUp = ()=>{
195
+ setContainSelection(false);
196
+ context.isPointerDownOnContentRef.current = false; // Delay a frame to ensure we always access the latest selection
197
+ setTimeout(()=>{
198
+ var _document$getSelectio;
199
+ const hasSelection = ((_document$getSelectio = document.getSelection()) === null || _document$getSelectio === void 0 ? void 0 : _document$getSelectio.toString()) !== '';
200
+ if (hasSelection) context.hasSelectionRef.current = true;
201
+ });
202
+ };
203
+ document.addEventListener('pointerup', handlePointerUp);
204
+ return ()=>{
205
+ document.removeEventListener('pointerup', handlePointerUp);
206
+ context.hasSelectionRef.current = false;
207
+ context.isPointerDownOnContentRef.current = false;
208
+ };
209
+ }
210
+ }, [
211
+ context.isPointerDownOnContentRef,
212
+ context.hasSelectionRef
213
+ ]);
172
214
  $eFX7w$react.useEffect(()=>{
173
215
  if (ref.current) {
174
216
  const tabbables = $e5715e9205c1e1fe$var$getTabbableNodes(ref.current);
@@ -182,14 +224,25 @@ const $e5715e9205c1e1fe$export$aa4724a5938c586 = /*#__PURE__*/ $eFX7w$react.forw
182
224
  onInteractOutside: onInteractOutside,
183
225
  onEscapeKeyDown: onEscapeKeyDown,
184
226
  onPointerDownOutside: onPointerDownOutside,
185
- onFocusOutside: onFocusOutside,
227
+ onFocusOutside: $eFX7w$radixuiprimitive.composeEventHandlers(onFocusOutside, (event)=>{
228
+ event.preventDefault();
229
+ }),
186
230
  onDismiss: context.onDismiss
187
231
  }, /*#__PURE__*/ $eFX7w$react.createElement($eFX7w$radixuireactpopper.Content, ($parcel$interopDefault($eFX7w$babelruntimehelpersextends))({}, popperScope, contentProps, {
232
+ onPointerDown: $eFX7w$radixuiprimitive.composeEventHandlers(contentProps.onPointerDown, (event)=>{
233
+ // Contain selection to current layer
234
+ if (event.currentTarget.contains(event.target)) setContainSelection(true);
235
+ context.hasSelectionRef.current = false;
236
+ context.isPointerDownOnContentRef.current = true;
237
+ }),
188
238
  ref: composedRefs,
189
239
  style: {
190
240
  ...contentProps.style,
191
241
  // re-namespace exposed content custom property
192
- ['--radix-hover-card-content-transform-origin']: 'var(--radix-popper-transform-origin)'
242
+ ['--radix-hover-card-content-transform-origin']: 'var(--radix-popper-transform-origin)',
243
+ userSelect: containSelection ? 'text' : undefined,
244
+ // Safari requires prefix
245
+ WebkitUserSelect: containSelection ? 'text' : undefined
193
246
  }
194
247
  })));
195
248
  });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"mappings":"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","sources":["packages/react/hover-card/src/index.ts","packages/react/hover-card/src/HoverCard.tsx"],"sourcesContent":["export {\n createHoverCardScope,\n //\n HoverCard,\n HoverCardTrigger,\n HoverCardPortal,\n HoverCardContent,\n HoverCardArrow,\n //\n Root,\n Trigger,\n Portal,\n Content,\n Arrow,\n} from './HoverCard';\nexport type {\n HoverCardProps,\n HoverCardTriggerProps,\n HoverCardPortalProps,\n HoverCardContentProps,\n HoverCardArrowProps,\n} from './HoverCard';\n","import * 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';\n\nimport type * as Radix from '@radix-ui/react-primitive';\nimport type { Scope } from '@radix-ui/react-context';\n\n/* -------------------------------------------------------------------------------------------------\n * HoverCard\n * -----------------------------------------------------------------------------------------------*/\n\nconst HOVERCARD_NAME = 'HoverCard';\n\ntype ScopedProps<P> = P & { __scopeHoverCard?: Scope };\nconst [createHoverCardContext, createHoverCardScope] = createContextScope(HOVERCARD_NAME, [\n createPopperScope,\n]);\nconst usePopperScope = createPopperScope();\n\ntype HoverCardContextValue = {\n open: boolean;\n onOpenChange(open: boolean): void;\n onOpen(): void;\n onClose(): void;\n onDismiss(): void;\n};\n\nconst [HoverCardProvider, useHoverCardContext] =\n createHoverCardContext<HoverCardContextValue>(HOVERCARD_NAME);\n\ninterface HoverCardProps {\n children?: React.ReactNode;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n openDelay?: number;\n closeDelay?: number;\n}\n\nconst HoverCard: React.FC<HoverCardProps> = (props: ScopedProps<HoverCardProps>) => {\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\n const [open = false, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n });\n\n const handleOpen = React.useCallback(() => {\n clearTimeout(closeTimerRef.current);\n openTimerRef.current = window.setTimeout(() => setOpen(true), openDelay);\n }, [openDelay, setOpen]);\n\n const handleClose = React.useCallback(() => {\n clearTimeout(openTimerRef.current);\n closeTimerRef.current = window.setTimeout(() => setOpen(false), closeDelay);\n }, [closeDelay, setOpen]);\n\n const handleDismiss = React.useCallback(() => setOpen(false), [setOpen]);\n\n // cleanup any queued state updates on unmount\n React.useEffect(() => {\n return () => {\n clearTimeout(openTimerRef.current);\n clearTimeout(closeTimerRef.current);\n };\n }, []);\n\n return (\n <HoverCardProvider\n scope={__scopeHoverCard}\n open={open}\n onOpenChange={setOpen}\n onOpen={handleOpen}\n onClose={handleClose}\n onDismiss={handleDismiss}\n >\n <PopperPrimitive.Root {...popperScope}>{children}</PopperPrimitive.Root>\n </HoverCardProvider>\n );\n};\n\nHoverCard.displayName = HOVERCARD_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * HoverCardTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'HoverCardTrigger';\n\ntype HoverCardTriggerElement = React.ElementRef<typeof Primitive.a>;\ntype PrimitiveLinkProps = Radix.ComponentPropsWithoutRef<typeof Primitive.a>;\ninterface HoverCardTriggerProps extends PrimitiveLinkProps {}\n\nconst HoverCardTrigger = React.forwardRef<HoverCardTriggerElement, HoverCardTriggerProps>(\n (props: ScopedProps<HoverCardTriggerProps>, forwardedRef) => {\n const { __scopeHoverCard, ...triggerProps } = props;\n const context = useHoverCardContext(TRIGGER_NAME, __scopeHoverCard);\n const popperScope = usePopperScope(__scopeHoverCard);\n return (\n <PopperPrimitive.Anchor asChild {...popperScope}>\n <Primitive.a\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 // prevent focus event on touch devices\n onTouchStart={composeEventHandlers(props.onTouchStart, (event) => event.preventDefault())}\n />\n </PopperPrimitive.Anchor>\n );\n }\n);\n\nHoverCardTrigger.displayName = TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * HoverCardPortal\n * -----------------------------------------------------------------------------------------------*/\n\nconst PORTAL_NAME = 'HoverCardPortal';\n\ntype PortalContextValue = { forceMount?: true };\nconst [PortalProvider, usePortalContext] = createHoverCardContext<PortalContextValue>(PORTAL_NAME, {\n forceMount: undefined,\n});\n\ntype PortalProps = React.ComponentPropsWithoutRef<typeof PortalPrimitive>;\ninterface HoverCardPortalProps extends Omit<PortalProps, 'asChild'> {\n children?: React.ReactNode;\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst HoverCardPortal: React.FC<HoverCardPortalProps> = (\n props: ScopedProps<HoverCardPortalProps>\n) => {\n const { __scopeHoverCard, forceMount, children, container } = props;\n const context = useHoverCardContext(PORTAL_NAME, __scopeHoverCard);\n return (\n <PortalProvider scope={__scopeHoverCard} forceMount={forceMount}>\n <Presence present={forceMount || context.open}>\n <PortalPrimitive asChild container={container}>\n {children}\n </PortalPrimitive>\n </Presence>\n </PortalProvider>\n );\n};\n\nHoverCardPortal.displayName = PORTAL_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * HoverCardContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = 'HoverCardContent';\n\ntype HoverCardContentElement = HoverCardContentImplElement;\ninterface HoverCardContentProps extends HoverCardContentImplProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst HoverCardContent = React.forwardRef<HoverCardContentElement, HoverCardContentProps>(\n (props: ScopedProps<HoverCardContentProps>, 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 (\n <Presence present={forceMount || context.open}>\n <HoverCardContentImpl\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 </Presence>\n );\n }\n);\n\nHoverCardContent.displayName = CONTENT_NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\ntype HoverCardContentImplElement = React.ElementRef<typeof PopperPrimitive.Content>;\ntype DismissableLayerProps = Radix.ComponentPropsWithoutRef<typeof DismissableLayer>;\ntype PopperContentProps = Radix.ComponentPropsWithoutRef<typeof PopperPrimitive.Content>;\ninterface HoverCardContentImplProps extends PopperContentProps {\n /**\n * Event handler called when the escape key is down.\n * Can be prevented.\n */\n onEscapeKeyDown?: DismissableLayerProps['onEscapeKeyDown'];\n /**\n * Event handler called when the a `pointerdown` event happens outside of the `HoverCard`.\n * Can be prevented.\n */\n onPointerDownOutside?: DismissableLayerProps['onPointerDownOutside'];\n /**\n * Event handler called when the focus moves outside of the `HoverCard`.\n * Can be prevented.\n */\n onFocusOutside?: DismissableLayerProps['onFocusOutside'];\n /**\n * Event handler called when an interaction happens outside the `HoverCard`.\n * Specifically, when a `pointerdown` event happens outside or focus moves outside of it.\n * Can be prevented.\n */\n onInteractOutside?: DismissableLayerProps['onInteractOutside'];\n}\n\nconst HoverCardContentImpl = React.forwardRef<\n HoverCardContentImplElement,\n HoverCardContentImplProps\n>((props: ScopedProps<HoverCardContentImplProps>, 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<HoverCardContentImplElement>(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n\n React.useEffect(() => {\n if (ref.current) {\n const tabbables = getTabbableNodes(ref.current);\n tabbables.forEach((tabbable) => tabbable.setAttribute('tabindex', '-1'));\n }\n });\n\n return (\n <DismissableLayer\n asChild\n disableOutsidePointerEvents={false}\n onInteractOutside={onInteractOutside}\n onEscapeKeyDown={onEscapeKeyDown}\n onPointerDownOutside={onPointerDownOutside}\n onFocusOutside={onFocusOutside}\n onDismiss={context.onDismiss}\n >\n <PopperPrimitive.Content\n {...popperScope}\n {...contentProps}\n ref={composedRefs}\n style={{\n ...contentProps.style,\n // re-namespace exposed content custom property\n ['--radix-hover-card-content-transform-origin' as any]:\n 'var(--radix-popper-transform-origin)',\n }}\n />\n </DismissableLayer>\n );\n});\n\n/* -------------------------------------------------------------------------------------------------\n * HoverCardArrow\n * -----------------------------------------------------------------------------------------------*/\n\nconst ARROW_NAME = 'HoverCardArrow';\n\ntype HoverCardArrowElement = React.ElementRef<typeof PopperPrimitive.Arrow>;\ntype PopperArrowProps = Radix.ComponentPropsWithoutRef<typeof PopperPrimitive.Arrow>;\ninterface HoverCardArrowProps extends PopperArrowProps {}\n\nconst HoverCardArrow = React.forwardRef<HoverCardArrowElement, HoverCardArrowProps>(\n (props: ScopedProps<HoverCardArrowProps>, forwardedRef) => {\n const { __scopeHoverCard, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopeHoverCard);\n return <PopperPrimitive.Arrow {...popperScope} {...arrowProps} ref={forwardedRef} />;\n }\n);\n\nHoverCardArrow.displayName = ARROW_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction excludeTouch<E>(eventHandler: () => void) {\n return (event: React.PointerEvent<E>) =>\n event.pointerType === 'touch' ? undefined : eventHandler();\n}\n\n/**\n * Returns a list of nodes that can be in the tab sequence.\n * @see: https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker\n */\nfunction getTabbableNodes(container: HTMLElement) {\n const nodes: HTMLElement[] = [];\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n acceptNode: (node: any) => {\n // `.tabIndex` is not the same as the `tabindex` attribute. It works on the\n // runtime's understanding of tabbability, so this automatically accounts\n // for any kind of element that could be tabbed to.\n return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n },\n });\n while (walker.nextNode()) nodes.push(walker.currentNode as HTMLElement);\n return nodes;\n}\n\nconst Root = HoverCard;\nconst Trigger = HoverCardTrigger;\nconst Portal = HoverCardPortal;\nconst Content = HoverCardContent;\nconst Arrow = HoverCardArrow;\n\nexport {\n createHoverCardScope,\n //\n HoverCard,\n HoverCardTrigger,\n HoverCardPortal,\n HoverCardContent,\n HoverCardArrow,\n //\n Root,\n Trigger,\n Portal,\n Content,\n Arrow,\n};\nexport type {\n HoverCardProps,\n HoverCardTriggerProps,\n HoverCardPortalProps,\n HoverCardContentProps,\n HoverCardArrowProps,\n};\n"],"names":["createHoverCardScope","HoverCard","HoverCardTrigger","HoverCardPortal","HoverCardContent","HoverCardArrow","Root","Trigger","Portal","Content","Arrow","React","composeEventHandlers","createContextScope","useControllableState","useComposedRefs","PopperPrimitive","createPopperScope","PortalPrimitive","Presence","Primitive","DismissableLayer","HOVERCARD_NAME","createHoverCardContext","usePopperScope","HoverCardProvider","useHoverCardContext","props","__scopeHoverCard","children","open","openProp","defaultOpen","onOpenChange","openDelay","closeDelay","popperScope","openTimerRef","useRef","closeTimerRef","setOpen","prop","defaultProp","onChange","handleOpen","useCallback","clearTimeout","current","window","setTimeout","handleClose","handleDismiss","useEffect","TRIGGER_NAME","forwardRef","forwardedRef","triggerProps","context","onPointerEnter","excludeTouch","onOpen","onPointerLeave","onClose","onFocus","onBlur","onTouchStart","event","preventDefault","PORTAL_NAME","PortalProvider","usePortalContext","forceMount","undefined","container","CONTENT_NAME","portalContext","contentProps","HoverCardContentImpl","onEscapeKeyDown","onPointerDownOutside","onFocusOutside","onInteractOutside","ref","composedRefs","tabbables","getTabbableNodes","forEach","tabbable","setAttribute","onDismiss","style","ARROW_NAME","arrowProps","eventHandler","pointerType","nodes","walker","document","createTreeWalker","NodeFilter","SHOW_ELEMENT","acceptNode","node","tabIndex","FILTER_ACCEPT","FILTER_SKIP","nextNode","push","currentNode"],"version":3,"file":"index.js.map"}
1
+ {"mappings":"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","sources":["packages/react/hover-card/src/index.ts","packages/react/hover-card/src/HoverCard.tsx"],"sourcesContent":["export {\n createHoverCardScope,\n //\n HoverCard,\n HoverCardTrigger,\n HoverCardPortal,\n HoverCardContent,\n HoverCardArrow,\n //\n Root,\n Trigger,\n Portal,\n Content,\n Arrow,\n} from './HoverCard';\nexport type {\n HoverCardProps,\n HoverCardTriggerProps,\n HoverCardPortalProps,\n HoverCardContentProps,\n HoverCardArrowProps,\n} from './HoverCard';\n","import * 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';\n\nimport type * as Radix from '@radix-ui/react-primitive';\nimport type { Scope } from '@radix-ui/react-context';\n\n/* -------------------------------------------------------------------------------------------------\n * HoverCard\n * -----------------------------------------------------------------------------------------------*/\n\nlet originalBodyUserSelect: string;\n\nconst HOVERCARD_NAME = 'HoverCard';\n\ntype ScopedProps<P> = P & { __scopeHoverCard?: Scope };\nconst [createHoverCardContext, createHoverCardScope] = createContextScope(HOVERCARD_NAME, [\n createPopperScope,\n]);\nconst usePopperScope = createPopperScope();\n\ntype HoverCardContextValue = {\n open: boolean;\n onOpenChange(open: boolean): void;\n onOpen(): void;\n onClose(): void;\n onDismiss(): void;\n hasSelectionRef: React.MutableRefObject<boolean>;\n isPointerDownOnContentRef: React.MutableRefObject<boolean>;\n};\n\nconst [HoverCardProvider, useHoverCardContext] =\n createHoverCardContext<HoverCardContextValue>(HOVERCARD_NAME);\n\ninterface HoverCardProps {\n children?: React.ReactNode;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n openDelay?: number;\n closeDelay?: number;\n}\n\nconst HoverCard: React.FC<HoverCardProps> = (props: ScopedProps<HoverCardProps>) => {\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\n const [open = false, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n });\n\n const handleOpen = React.useCallback(() => {\n clearTimeout(closeTimerRef.current);\n openTimerRef.current = window.setTimeout(() => setOpen(true), openDelay);\n }, [openDelay, setOpen]);\n\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\n const handleDismiss = React.useCallback(() => setOpen(false), [setOpen]);\n\n // cleanup any queued state updates on unmount\n React.useEffect(() => {\n return () => {\n clearTimeout(openTimerRef.current);\n clearTimeout(closeTimerRef.current);\n };\n }, []);\n\n return (\n <HoverCardProvider\n scope={__scopeHoverCard}\n open={open}\n onOpenChange={setOpen}\n onOpen={handleOpen}\n onClose={handleClose}\n onDismiss={handleDismiss}\n hasSelectionRef={hasSelectionRef}\n isPointerDownOnContentRef={isPointerDownOnContentRef}\n >\n <PopperPrimitive.Root {...popperScope}>{children}</PopperPrimitive.Root>\n </HoverCardProvider>\n );\n};\n\nHoverCard.displayName = HOVERCARD_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * HoverCardTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'HoverCardTrigger';\n\ntype HoverCardTriggerElement = React.ElementRef<typeof Primitive.a>;\ntype PrimitiveLinkProps = Radix.ComponentPropsWithoutRef<typeof Primitive.a>;\ninterface HoverCardTriggerProps extends PrimitiveLinkProps {}\n\nconst HoverCardTrigger = React.forwardRef<HoverCardTriggerElement, HoverCardTriggerProps>(\n (props: ScopedProps<HoverCardTriggerProps>, forwardedRef) => {\n const { __scopeHoverCard, ...triggerProps } = props;\n const context = useHoverCardContext(TRIGGER_NAME, __scopeHoverCard);\n const popperScope = usePopperScope(__scopeHoverCard);\n return (\n <PopperPrimitive.Anchor asChild {...popperScope}>\n <Primitive.a\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 // prevent focus event on touch devices\n onTouchStart={composeEventHandlers(props.onTouchStart, (event) => event.preventDefault())}\n />\n </PopperPrimitive.Anchor>\n );\n }\n);\n\nHoverCardTrigger.displayName = TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * HoverCardPortal\n * -----------------------------------------------------------------------------------------------*/\n\nconst PORTAL_NAME = 'HoverCardPortal';\n\ntype PortalContextValue = { forceMount?: true };\nconst [PortalProvider, usePortalContext] = createHoverCardContext<PortalContextValue>(PORTAL_NAME, {\n forceMount: undefined,\n});\n\ntype PortalProps = React.ComponentPropsWithoutRef<typeof PortalPrimitive>;\ninterface HoverCardPortalProps extends Omit<PortalProps, 'asChild'> {\n children?: React.ReactNode;\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst HoverCardPortal: React.FC<HoverCardPortalProps> = (\n props: ScopedProps<HoverCardPortalProps>\n) => {\n const { __scopeHoverCard, forceMount, children, container } = props;\n const context = useHoverCardContext(PORTAL_NAME, __scopeHoverCard);\n return (\n <PortalProvider scope={__scopeHoverCard} forceMount={forceMount}>\n <Presence present={forceMount || context.open}>\n <PortalPrimitive asChild container={container}>\n {children}\n </PortalPrimitive>\n </Presence>\n </PortalProvider>\n );\n};\n\nHoverCardPortal.displayName = PORTAL_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * HoverCardContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = 'HoverCardContent';\n\ntype HoverCardContentElement = HoverCardContentImplElement;\ninterface HoverCardContentProps extends HoverCardContentImplProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst HoverCardContent = React.forwardRef<HoverCardContentElement, HoverCardContentProps>(\n (props: ScopedProps<HoverCardContentProps>, 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 (\n <Presence present={forceMount || context.open}>\n <HoverCardContentImpl\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 </Presence>\n );\n }\n);\n\nHoverCardContent.displayName = CONTENT_NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\ntype HoverCardContentImplElement = React.ElementRef<typeof PopperPrimitive.Content>;\ntype DismissableLayerProps = Radix.ComponentPropsWithoutRef<typeof DismissableLayer>;\ntype PopperContentProps = Radix.ComponentPropsWithoutRef<typeof PopperPrimitive.Content>;\ninterface HoverCardContentImplProps extends PopperContentProps {\n /**\n * Event handler called when the escape key is down.\n * Can be prevented.\n */\n onEscapeKeyDown?: DismissableLayerProps['onEscapeKeyDown'];\n /**\n * Event handler called when the a `pointerdown` event happens outside of the `HoverCard`.\n * Can be prevented.\n */\n onPointerDownOutside?: DismissableLayerProps['onPointerDownOutside'];\n /**\n * Event handler called when the focus moves outside of the `HoverCard`.\n * Can be prevented.\n */\n onFocusOutside?: DismissableLayerProps['onFocusOutside'];\n /**\n * Event handler called when an interaction happens outside the `HoverCard`.\n * Specifically, when a `pointerdown` event happens outside or focus moves outside of it.\n * Can be prevented.\n */\n onInteractOutside?: DismissableLayerProps['onInteractOutside'];\n}\n\nconst HoverCardContentImpl = React.forwardRef<\n HoverCardContentImplElement,\n HoverCardContentImplProps\n>((props: ScopedProps<HoverCardContentImplProps>, 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<HoverCardContentImplElement>(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const [containSelection, setContainSelection] = React.useState(false);\n\n React.useEffect(() => {\n if (containSelection) {\n const body = document.body;\n\n // Safari requires prefix\n originalBodyUserSelect = body.style.userSelect || body.style.webkitUserSelect;\n\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\n React.useEffect(() => {\n if (ref.current) {\n const handlePointerUp = () => {\n setContainSelection(false);\n context.isPointerDownOnContentRef.current = false;\n\n // Delay a frame to ensure we always access the latest selection\n setTimeout(() => {\n const hasSelection = document.getSelection()?.toString() !== '';\n if (hasSelection) context.hasSelectionRef.current = true;\n });\n };\n\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\n React.useEffect(() => {\n if (ref.current) {\n const tabbables = getTabbableNodes(ref.current);\n tabbables.forEach((tabbable) => tabbable.setAttribute('tabindex', '-1'));\n }\n });\n\n return (\n <DismissableLayer\n asChild\n disableOutsidePointerEvents={false}\n onInteractOutside={onInteractOutside}\n onEscapeKeyDown={onEscapeKeyDown}\n onPointerDownOutside={onPointerDownOutside}\n onFocusOutside={composeEventHandlers(onFocusOutside, (event) => {\n event.preventDefault();\n })}\n onDismiss={context.onDismiss}\n >\n <PopperPrimitive.Content\n {...popperScope}\n {...contentProps}\n onPointerDown={composeEventHandlers(contentProps.onPointerDown, (event) => {\n // Contain selection to current layer\n if (event.currentTarget.contains(event.target as HTMLElement)) {\n setContainSelection(true);\n }\n context.hasSelectionRef.current = false;\n context.isPointerDownOnContentRef.current = true;\n })}\n ref={composedRefs}\n style={{\n ...contentProps.style,\n // re-namespace exposed content custom property\n ['--radix-hover-card-content-transform-origin' as any]:\n 'var(--radix-popper-transform-origin)',\n userSelect: containSelection ? 'text' : undefined,\n // Safari requires prefix\n WebkitUserSelect: containSelection ? 'text' : undefined,\n }}\n />\n </DismissableLayer>\n );\n});\n\n/* -------------------------------------------------------------------------------------------------\n * HoverCardArrow\n * -----------------------------------------------------------------------------------------------*/\n\nconst ARROW_NAME = 'HoverCardArrow';\n\ntype HoverCardArrowElement = React.ElementRef<typeof PopperPrimitive.Arrow>;\ntype PopperArrowProps = Radix.ComponentPropsWithoutRef<typeof PopperPrimitive.Arrow>;\ninterface HoverCardArrowProps extends PopperArrowProps {}\n\nconst HoverCardArrow = React.forwardRef<HoverCardArrowElement, HoverCardArrowProps>(\n (props: ScopedProps<HoverCardArrowProps>, forwardedRef) => {\n const { __scopeHoverCard, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopeHoverCard);\n return <PopperPrimitive.Arrow {...popperScope} {...arrowProps} ref={forwardedRef} />;\n }\n);\n\nHoverCardArrow.displayName = ARROW_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction excludeTouch<E>(eventHandler: () => void) {\n return (event: React.PointerEvent<E>) =>\n event.pointerType === 'touch' ? undefined : eventHandler();\n}\n\n/**\n * Returns a list of nodes that can be in the tab sequence.\n * @see: https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker\n */\nfunction getTabbableNodes(container: HTMLElement) {\n const nodes: HTMLElement[] = [];\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n acceptNode: (node: any) => {\n // `.tabIndex` is not the same as the `tabindex` attribute. It works on the\n // runtime's understanding of tabbability, so this automatically accounts\n // for any kind of element that could be tabbed to.\n return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n },\n });\n while (walker.nextNode()) nodes.push(walker.currentNode as HTMLElement);\n return nodes;\n}\n\nconst Root = HoverCard;\nconst Trigger = HoverCardTrigger;\nconst Portal = HoverCardPortal;\nconst Content = HoverCardContent;\nconst Arrow = HoverCardArrow;\n\nexport {\n createHoverCardScope,\n //\n HoverCard,\n HoverCardTrigger,\n HoverCardPortal,\n HoverCardContent,\n HoverCardArrow,\n //\n Root,\n Trigger,\n Portal,\n Content,\n Arrow,\n};\nexport type {\n HoverCardProps,\n HoverCardTriggerProps,\n HoverCardPortalProps,\n HoverCardContentProps,\n HoverCardArrowProps,\n};\n"],"names":["createHoverCardScope","HoverCard","HoverCardTrigger","HoverCardPortal","HoverCardContent","HoverCardArrow","Root","Trigger","Portal","Content","Arrow","React","composeEventHandlers","createContextScope","useControllableState","useComposedRefs","PopperPrimitive","createPopperScope","PortalPrimitive","Presence","Primitive","DismissableLayer","originalBodyUserSelect","HOVERCARD_NAME","createHoverCardContext","usePopperScope","HoverCardProvider","useHoverCardContext","props","__scopeHoverCard","children","open","openProp","defaultOpen","onOpenChange","openDelay","closeDelay","popperScope","openTimerRef","useRef","closeTimerRef","hasSelectionRef","isPointerDownOnContentRef","setOpen","prop","defaultProp","onChange","handleOpen","useCallback","clearTimeout","current","window","setTimeout","handleClose","handleDismiss","useEffect","TRIGGER_NAME","forwardRef","forwardedRef","triggerProps","context","onPointerEnter","excludeTouch","onOpen","onPointerLeave","onClose","onFocus","onBlur","onTouchStart","event","preventDefault","PORTAL_NAME","PortalProvider","usePortalContext","forceMount","undefined","container","CONTENT_NAME","portalContext","contentProps","HoverCardContentImpl","onEscapeKeyDown","onPointerDownOutside","onFocusOutside","onInteractOutside","ref","composedRefs","containSelection","setContainSelection","useState","body","document","style","userSelect","webkitUserSelect","handlePointerUp","hasSelection","getSelection","toString","addEventListener","removeEventListener","tabbables","getTabbableNodes","forEach","tabbable","setAttribute","onDismiss","onPointerDown","currentTarget","contains","target","WebkitUserSelect","ARROW_NAME","arrowProps","eventHandler","pointerType","nodes","walker","createTreeWalker","NodeFilter","SHOW_ELEMENT","acceptNode","node","tabIndex","FILTER_ACCEPT","FILTER_SKIP","nextNode","push","currentNode"],"version":3,"file":"index.js.map"}
@@ -1,5 +1,5 @@
1
1
  import $eRSIW$babelruntimehelpersesmextends from "@babel/runtime/helpers/esm/extends";
2
- import {useRef as $eRSIW$useRef, useCallback as $eRSIW$useCallback, useEffect as $eRSIW$useEffect, createElement as $eRSIW$createElement, forwardRef as $eRSIW$forwardRef} from "react";
2
+ import {useRef as $eRSIW$useRef, useCallback as $eRSIW$useCallback, useEffect as $eRSIW$useEffect, createElement as $eRSIW$createElement, forwardRef as $eRSIW$forwardRef, useState as $eRSIW$useState} from "react";
3
3
  import {composeEventHandlers as $eRSIW$composeEventHandlers} from "@radix-ui/primitive";
4
4
  import {createContextScope as $eRSIW$createContextScope} from "@radix-ui/react-context";
5
5
  import {useControllableState as $eRSIW$useControllableState} from "@radix-ui/react-use-controllable-state";
@@ -24,7 +24,8 @@ import {DismissableLayer as $eRSIW$DismissableLayer} from "@radix-ui/react-dismi
24
24
 
25
25
  /* -------------------------------------------------------------------------------------------------
26
26
  * HoverCard
27
- * -----------------------------------------------------------------------------------------------*/ const $cef8881cdc69808e$var$HOVERCARD_NAME = 'HoverCard';
27
+ * -----------------------------------------------------------------------------------------------*/ let $cef8881cdc69808e$var$originalBodyUserSelect;
28
+ const $cef8881cdc69808e$var$HOVERCARD_NAME = 'HoverCard';
28
29
  const [$cef8881cdc69808e$var$createHoverCardContext, $cef8881cdc69808e$export$47b6998a836b7260] = $eRSIW$createContextScope($cef8881cdc69808e$var$HOVERCARD_NAME, [
29
30
  $eRSIW$createPopperScope
30
31
  ]);
@@ -35,6 +36,8 @@ const $cef8881cdc69808e$export$57a077cc9fbe653e = (props)=>{
35
36
  const popperScope = $cef8881cdc69808e$var$usePopperScope(__scopeHoverCard);
36
37
  const openTimerRef = $eRSIW$useRef(0);
37
38
  const closeTimerRef = $eRSIW$useRef(0);
39
+ const hasSelectionRef = $eRSIW$useRef(false);
40
+ const isPointerDownOnContentRef = $eRSIW$useRef(false);
38
41
  const [open = false, setOpen] = $eRSIW$useControllableState({
39
42
  prop: openProp,
40
43
  defaultProp: defaultOpen,
@@ -50,7 +53,7 @@ const $cef8881cdc69808e$export$57a077cc9fbe653e = (props)=>{
50
53
  ]);
51
54
  const handleClose = $eRSIW$useCallback(()=>{
52
55
  clearTimeout(openTimerRef.current);
53
- closeTimerRef.current = window.setTimeout(()=>setOpen(false)
56
+ if (!hasSelectionRef.current && !isPointerDownOnContentRef.current) closeTimerRef.current = window.setTimeout(()=>setOpen(false)
54
57
  , closeDelay);
55
58
  }, [
56
59
  closeDelay,
@@ -72,7 +75,9 @@ const $cef8881cdc69808e$export$57a077cc9fbe653e = (props)=>{
72
75
  onOpenChange: setOpen,
73
76
  onOpen: handleOpen,
74
77
  onClose: handleClose,
75
- onDismiss: handleDismiss
78
+ onDismiss: handleDismiss,
79
+ hasSelectionRef: hasSelectionRef,
80
+ isPointerDownOnContentRef: isPointerDownOnContentRef
76
81
  }, /*#__PURE__*/ $eRSIW$createElement($eRSIW$Root, popperScope, children));
77
82
  };
78
83
  /*#__PURE__*/ Object.assign($cef8881cdc69808e$export$57a077cc9fbe653e, {
@@ -151,6 +156,43 @@ const $cef8881cdc69808e$export$aa4724a5938c586 = /*#__PURE__*/ $eRSIW$forwardRef
151
156
  const popperScope = $cef8881cdc69808e$var$usePopperScope(__scopeHoverCard);
152
157
  const ref = $eRSIW$useRef(null);
153
158
  const composedRefs = $eRSIW$useComposedRefs(forwardedRef, ref);
159
+ const [containSelection, setContainSelection] = $eRSIW$useState(false);
160
+ $eRSIW$useEffect(()=>{
161
+ if (containSelection) {
162
+ const body = document.body; // Safari requires prefix
163
+ $cef8881cdc69808e$var$originalBodyUserSelect = body.style.userSelect || body.style.webkitUserSelect;
164
+ body.style.userSelect = 'none';
165
+ body.style.webkitUserSelect = 'none';
166
+ return ()=>{
167
+ body.style.userSelect = $cef8881cdc69808e$var$originalBodyUserSelect;
168
+ body.style.webkitUserSelect = $cef8881cdc69808e$var$originalBodyUserSelect;
169
+ };
170
+ }
171
+ }, [
172
+ containSelection
173
+ ]);
174
+ $eRSIW$useEffect(()=>{
175
+ if (ref.current) {
176
+ const handlePointerUp = ()=>{
177
+ setContainSelection(false);
178
+ context.isPointerDownOnContentRef.current = false; // Delay a frame to ensure we always access the latest selection
179
+ setTimeout(()=>{
180
+ var _document$getSelectio;
181
+ const hasSelection = ((_document$getSelectio = document.getSelection()) === null || _document$getSelectio === void 0 ? void 0 : _document$getSelectio.toString()) !== '';
182
+ if (hasSelection) context.hasSelectionRef.current = true;
183
+ });
184
+ };
185
+ document.addEventListener('pointerup', handlePointerUp);
186
+ return ()=>{
187
+ document.removeEventListener('pointerup', handlePointerUp);
188
+ context.hasSelectionRef.current = false;
189
+ context.isPointerDownOnContentRef.current = false;
190
+ };
191
+ }
192
+ }, [
193
+ context.isPointerDownOnContentRef,
194
+ context.hasSelectionRef
195
+ ]);
154
196
  $eRSIW$useEffect(()=>{
155
197
  if (ref.current) {
156
198
  const tabbables = $cef8881cdc69808e$var$getTabbableNodes(ref.current);
@@ -164,14 +206,25 @@ const $cef8881cdc69808e$export$aa4724a5938c586 = /*#__PURE__*/ $eRSIW$forwardRef
164
206
  onInteractOutside: onInteractOutside,
165
207
  onEscapeKeyDown: onEscapeKeyDown,
166
208
  onPointerDownOutside: onPointerDownOutside,
167
- onFocusOutside: onFocusOutside,
209
+ onFocusOutside: $eRSIW$composeEventHandlers(onFocusOutside, (event)=>{
210
+ event.preventDefault();
211
+ }),
168
212
  onDismiss: context.onDismiss
169
213
  }, /*#__PURE__*/ $eRSIW$createElement($eRSIW$Content, $eRSIW$babelruntimehelpersesmextends({}, popperScope, contentProps, {
214
+ onPointerDown: $eRSIW$composeEventHandlers(contentProps.onPointerDown, (event)=>{
215
+ // Contain selection to current layer
216
+ if (event.currentTarget.contains(event.target)) setContainSelection(true);
217
+ context.hasSelectionRef.current = false;
218
+ context.isPointerDownOnContentRef.current = true;
219
+ }),
170
220
  ref: composedRefs,
171
221
  style: {
172
222
  ...contentProps.style,
173
223
  // re-namespace exposed content custom property
174
- ['--radix-hover-card-content-transform-origin']: 'var(--radix-popper-transform-origin)'
224
+ ['--radix-hover-card-content-transform-origin']: 'var(--radix-popper-transform-origin)',
225
+ userSelect: containSelection ? 'text' : undefined,
226
+ // Safari requires prefix
227
+ WebkitUserSelect: containSelection ? 'text' : undefined
175
228
  }
176
229
  })));
177
230
  });
@@ -1 +1 @@
1
- {"mappings":"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","sources":["packages/react/hover-card/src/index.ts","packages/react/hover-card/src/HoverCard.tsx"],"sourcesContent":["export {\n createHoverCardScope,\n //\n HoverCard,\n HoverCardTrigger,\n HoverCardPortal,\n HoverCardContent,\n HoverCardArrow,\n //\n Root,\n Trigger,\n Portal,\n Content,\n Arrow,\n} from './HoverCard';\nexport type {\n HoverCardProps,\n HoverCardTriggerProps,\n HoverCardPortalProps,\n HoverCardContentProps,\n HoverCardArrowProps,\n} from './HoverCard';\n","import * 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';\n\nimport type * as Radix from '@radix-ui/react-primitive';\nimport type { Scope } from '@radix-ui/react-context';\n\n/* -------------------------------------------------------------------------------------------------\n * HoverCard\n * -----------------------------------------------------------------------------------------------*/\n\nconst HOVERCARD_NAME = 'HoverCard';\n\ntype ScopedProps<P> = P & { __scopeHoverCard?: Scope };\nconst [createHoverCardContext, createHoverCardScope] = createContextScope(HOVERCARD_NAME, [\n createPopperScope,\n]);\nconst usePopperScope = createPopperScope();\n\ntype HoverCardContextValue = {\n open: boolean;\n onOpenChange(open: boolean): void;\n onOpen(): void;\n onClose(): void;\n onDismiss(): void;\n};\n\nconst [HoverCardProvider, useHoverCardContext] =\n createHoverCardContext<HoverCardContextValue>(HOVERCARD_NAME);\n\ninterface HoverCardProps {\n children?: React.ReactNode;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n openDelay?: number;\n closeDelay?: number;\n}\n\nconst HoverCard: React.FC<HoverCardProps> = (props: ScopedProps<HoverCardProps>) => {\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\n const [open = false, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n });\n\n const handleOpen = React.useCallback(() => {\n clearTimeout(closeTimerRef.current);\n openTimerRef.current = window.setTimeout(() => setOpen(true), openDelay);\n }, [openDelay, setOpen]);\n\n const handleClose = React.useCallback(() => {\n clearTimeout(openTimerRef.current);\n closeTimerRef.current = window.setTimeout(() => setOpen(false), closeDelay);\n }, [closeDelay, setOpen]);\n\n const handleDismiss = React.useCallback(() => setOpen(false), [setOpen]);\n\n // cleanup any queued state updates on unmount\n React.useEffect(() => {\n return () => {\n clearTimeout(openTimerRef.current);\n clearTimeout(closeTimerRef.current);\n };\n }, []);\n\n return (\n <HoverCardProvider\n scope={__scopeHoverCard}\n open={open}\n onOpenChange={setOpen}\n onOpen={handleOpen}\n onClose={handleClose}\n onDismiss={handleDismiss}\n >\n <PopperPrimitive.Root {...popperScope}>{children}</PopperPrimitive.Root>\n </HoverCardProvider>\n );\n};\n\nHoverCard.displayName = HOVERCARD_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * HoverCardTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'HoverCardTrigger';\n\ntype HoverCardTriggerElement = React.ElementRef<typeof Primitive.a>;\ntype PrimitiveLinkProps = Radix.ComponentPropsWithoutRef<typeof Primitive.a>;\ninterface HoverCardTriggerProps extends PrimitiveLinkProps {}\n\nconst HoverCardTrigger = React.forwardRef<HoverCardTriggerElement, HoverCardTriggerProps>(\n (props: ScopedProps<HoverCardTriggerProps>, forwardedRef) => {\n const { __scopeHoverCard, ...triggerProps } = props;\n const context = useHoverCardContext(TRIGGER_NAME, __scopeHoverCard);\n const popperScope = usePopperScope(__scopeHoverCard);\n return (\n <PopperPrimitive.Anchor asChild {...popperScope}>\n <Primitive.a\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 // prevent focus event on touch devices\n onTouchStart={composeEventHandlers(props.onTouchStart, (event) => event.preventDefault())}\n />\n </PopperPrimitive.Anchor>\n );\n }\n);\n\nHoverCardTrigger.displayName = TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * HoverCardPortal\n * -----------------------------------------------------------------------------------------------*/\n\nconst PORTAL_NAME = 'HoverCardPortal';\n\ntype PortalContextValue = { forceMount?: true };\nconst [PortalProvider, usePortalContext] = createHoverCardContext<PortalContextValue>(PORTAL_NAME, {\n forceMount: undefined,\n});\n\ntype PortalProps = React.ComponentPropsWithoutRef<typeof PortalPrimitive>;\ninterface HoverCardPortalProps extends Omit<PortalProps, 'asChild'> {\n children?: React.ReactNode;\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst HoverCardPortal: React.FC<HoverCardPortalProps> = (\n props: ScopedProps<HoverCardPortalProps>\n) => {\n const { __scopeHoverCard, forceMount, children, container } = props;\n const context = useHoverCardContext(PORTAL_NAME, __scopeHoverCard);\n return (\n <PortalProvider scope={__scopeHoverCard} forceMount={forceMount}>\n <Presence present={forceMount || context.open}>\n <PortalPrimitive asChild container={container}>\n {children}\n </PortalPrimitive>\n </Presence>\n </PortalProvider>\n );\n};\n\nHoverCardPortal.displayName = PORTAL_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * HoverCardContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = 'HoverCardContent';\n\ntype HoverCardContentElement = HoverCardContentImplElement;\ninterface HoverCardContentProps extends HoverCardContentImplProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst HoverCardContent = React.forwardRef<HoverCardContentElement, HoverCardContentProps>(\n (props: ScopedProps<HoverCardContentProps>, 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 (\n <Presence present={forceMount || context.open}>\n <HoverCardContentImpl\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 </Presence>\n );\n }\n);\n\nHoverCardContent.displayName = CONTENT_NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\ntype HoverCardContentImplElement = React.ElementRef<typeof PopperPrimitive.Content>;\ntype DismissableLayerProps = Radix.ComponentPropsWithoutRef<typeof DismissableLayer>;\ntype PopperContentProps = Radix.ComponentPropsWithoutRef<typeof PopperPrimitive.Content>;\ninterface HoverCardContentImplProps extends PopperContentProps {\n /**\n * Event handler called when the escape key is down.\n * Can be prevented.\n */\n onEscapeKeyDown?: DismissableLayerProps['onEscapeKeyDown'];\n /**\n * Event handler called when the a `pointerdown` event happens outside of the `HoverCard`.\n * Can be prevented.\n */\n onPointerDownOutside?: DismissableLayerProps['onPointerDownOutside'];\n /**\n * Event handler called when the focus moves outside of the `HoverCard`.\n * Can be prevented.\n */\n onFocusOutside?: DismissableLayerProps['onFocusOutside'];\n /**\n * Event handler called when an interaction happens outside the `HoverCard`.\n * Specifically, when a `pointerdown` event happens outside or focus moves outside of it.\n * Can be prevented.\n */\n onInteractOutside?: DismissableLayerProps['onInteractOutside'];\n}\n\nconst HoverCardContentImpl = React.forwardRef<\n HoverCardContentImplElement,\n HoverCardContentImplProps\n>((props: ScopedProps<HoverCardContentImplProps>, 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<HoverCardContentImplElement>(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n\n React.useEffect(() => {\n if (ref.current) {\n const tabbables = getTabbableNodes(ref.current);\n tabbables.forEach((tabbable) => tabbable.setAttribute('tabindex', '-1'));\n }\n });\n\n return (\n <DismissableLayer\n asChild\n disableOutsidePointerEvents={false}\n onInteractOutside={onInteractOutside}\n onEscapeKeyDown={onEscapeKeyDown}\n onPointerDownOutside={onPointerDownOutside}\n onFocusOutside={onFocusOutside}\n onDismiss={context.onDismiss}\n >\n <PopperPrimitive.Content\n {...popperScope}\n {...contentProps}\n ref={composedRefs}\n style={{\n ...contentProps.style,\n // re-namespace exposed content custom property\n ['--radix-hover-card-content-transform-origin' as any]:\n 'var(--radix-popper-transform-origin)',\n }}\n />\n </DismissableLayer>\n );\n});\n\n/* -------------------------------------------------------------------------------------------------\n * HoverCardArrow\n * -----------------------------------------------------------------------------------------------*/\n\nconst ARROW_NAME = 'HoverCardArrow';\n\ntype HoverCardArrowElement = React.ElementRef<typeof PopperPrimitive.Arrow>;\ntype PopperArrowProps = Radix.ComponentPropsWithoutRef<typeof PopperPrimitive.Arrow>;\ninterface HoverCardArrowProps extends PopperArrowProps {}\n\nconst HoverCardArrow = React.forwardRef<HoverCardArrowElement, HoverCardArrowProps>(\n (props: ScopedProps<HoverCardArrowProps>, forwardedRef) => {\n const { __scopeHoverCard, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopeHoverCard);\n return <PopperPrimitive.Arrow {...popperScope} {...arrowProps} ref={forwardedRef} />;\n }\n);\n\nHoverCardArrow.displayName = ARROW_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction excludeTouch<E>(eventHandler: () => void) {\n return (event: React.PointerEvent<E>) =>\n event.pointerType === 'touch' ? undefined : eventHandler();\n}\n\n/**\n * Returns a list of nodes that can be in the tab sequence.\n * @see: https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker\n */\nfunction getTabbableNodes(container: HTMLElement) {\n const nodes: HTMLElement[] = [];\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n acceptNode: (node: any) => {\n // `.tabIndex` is not the same as the `tabindex` attribute. It works on the\n // runtime's understanding of tabbability, so this automatically accounts\n // for any kind of element that could be tabbed to.\n return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n },\n });\n while (walker.nextNode()) nodes.push(walker.currentNode as HTMLElement);\n return nodes;\n}\n\nconst Root = HoverCard;\nconst Trigger = HoverCardTrigger;\nconst Portal = HoverCardPortal;\nconst Content = HoverCardContent;\nconst Arrow = HoverCardArrow;\n\nexport {\n createHoverCardScope,\n //\n HoverCard,\n HoverCardTrigger,\n HoverCardPortal,\n HoverCardContent,\n HoverCardArrow,\n //\n Root,\n Trigger,\n Portal,\n Content,\n Arrow,\n};\nexport type {\n HoverCardProps,\n HoverCardTriggerProps,\n HoverCardPortalProps,\n HoverCardContentProps,\n HoverCardArrowProps,\n};\n"],"names":["createHoverCardScope","HoverCard","HoverCardTrigger","HoverCardPortal","HoverCardContent","HoverCardArrow","Root","Trigger","Portal","Content","Arrow","React","composeEventHandlers","createContextScope","useControllableState","useComposedRefs","PopperPrimitive","createPopperScope","PortalPrimitive","Presence","Primitive","DismissableLayer","HOVERCARD_NAME","createHoverCardContext","usePopperScope","HoverCardProvider","useHoverCardContext","props","__scopeHoverCard","children","open","openProp","defaultOpen","onOpenChange","openDelay","closeDelay","popperScope","openTimerRef","useRef","closeTimerRef","setOpen","prop","defaultProp","onChange","handleOpen","useCallback","clearTimeout","current","window","setTimeout","handleClose","handleDismiss","useEffect","TRIGGER_NAME","forwardRef","forwardedRef","triggerProps","context","onPointerEnter","excludeTouch","onOpen","onPointerLeave","onClose","onFocus","onBlur","onTouchStart","event","preventDefault","PORTAL_NAME","PortalProvider","usePortalContext","forceMount","undefined","container","CONTENT_NAME","portalContext","contentProps","HoverCardContentImpl","onEscapeKeyDown","onPointerDownOutside","onFocusOutside","onInteractOutside","ref","composedRefs","tabbables","getTabbableNodes","forEach","tabbable","setAttribute","onDismiss","style","ARROW_NAME","arrowProps","eventHandler","pointerType","nodes","walker","document","createTreeWalker","NodeFilter","SHOW_ELEMENT","acceptNode","node","tabIndex","FILTER_ACCEPT","FILTER_SKIP","nextNode","push","currentNode"],"version":3,"file":"index.module.js.map"}
1
+ {"mappings":"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","sources":["packages/react/hover-card/src/index.ts","packages/react/hover-card/src/HoverCard.tsx"],"sourcesContent":["export {\n createHoverCardScope,\n //\n HoverCard,\n HoverCardTrigger,\n HoverCardPortal,\n HoverCardContent,\n HoverCardArrow,\n //\n Root,\n Trigger,\n Portal,\n Content,\n Arrow,\n} from './HoverCard';\nexport type {\n HoverCardProps,\n HoverCardTriggerProps,\n HoverCardPortalProps,\n HoverCardContentProps,\n HoverCardArrowProps,\n} from './HoverCard';\n","import * 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';\n\nimport type * as Radix from '@radix-ui/react-primitive';\nimport type { Scope } from '@radix-ui/react-context';\n\n/* -------------------------------------------------------------------------------------------------\n * HoverCard\n * -----------------------------------------------------------------------------------------------*/\n\nlet originalBodyUserSelect: string;\n\nconst HOVERCARD_NAME = 'HoverCard';\n\ntype ScopedProps<P> = P & { __scopeHoverCard?: Scope };\nconst [createHoverCardContext, createHoverCardScope] = createContextScope(HOVERCARD_NAME, [\n createPopperScope,\n]);\nconst usePopperScope = createPopperScope();\n\ntype HoverCardContextValue = {\n open: boolean;\n onOpenChange(open: boolean): void;\n onOpen(): void;\n onClose(): void;\n onDismiss(): void;\n hasSelectionRef: React.MutableRefObject<boolean>;\n isPointerDownOnContentRef: React.MutableRefObject<boolean>;\n};\n\nconst [HoverCardProvider, useHoverCardContext] =\n createHoverCardContext<HoverCardContextValue>(HOVERCARD_NAME);\n\ninterface HoverCardProps {\n children?: React.ReactNode;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n openDelay?: number;\n closeDelay?: number;\n}\n\nconst HoverCard: React.FC<HoverCardProps> = (props: ScopedProps<HoverCardProps>) => {\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\n const [open = false, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n });\n\n const handleOpen = React.useCallback(() => {\n clearTimeout(closeTimerRef.current);\n openTimerRef.current = window.setTimeout(() => setOpen(true), openDelay);\n }, [openDelay, setOpen]);\n\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\n const handleDismiss = React.useCallback(() => setOpen(false), [setOpen]);\n\n // cleanup any queued state updates on unmount\n React.useEffect(() => {\n return () => {\n clearTimeout(openTimerRef.current);\n clearTimeout(closeTimerRef.current);\n };\n }, []);\n\n return (\n <HoverCardProvider\n scope={__scopeHoverCard}\n open={open}\n onOpenChange={setOpen}\n onOpen={handleOpen}\n onClose={handleClose}\n onDismiss={handleDismiss}\n hasSelectionRef={hasSelectionRef}\n isPointerDownOnContentRef={isPointerDownOnContentRef}\n >\n <PopperPrimitive.Root {...popperScope}>{children}</PopperPrimitive.Root>\n </HoverCardProvider>\n );\n};\n\nHoverCard.displayName = HOVERCARD_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * HoverCardTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'HoverCardTrigger';\n\ntype HoverCardTriggerElement = React.ElementRef<typeof Primitive.a>;\ntype PrimitiveLinkProps = Radix.ComponentPropsWithoutRef<typeof Primitive.a>;\ninterface HoverCardTriggerProps extends PrimitiveLinkProps {}\n\nconst HoverCardTrigger = React.forwardRef<HoverCardTriggerElement, HoverCardTriggerProps>(\n (props: ScopedProps<HoverCardTriggerProps>, forwardedRef) => {\n const { __scopeHoverCard, ...triggerProps } = props;\n const context = useHoverCardContext(TRIGGER_NAME, __scopeHoverCard);\n const popperScope = usePopperScope(__scopeHoverCard);\n return (\n <PopperPrimitive.Anchor asChild {...popperScope}>\n <Primitive.a\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 // prevent focus event on touch devices\n onTouchStart={composeEventHandlers(props.onTouchStart, (event) => event.preventDefault())}\n />\n </PopperPrimitive.Anchor>\n );\n }\n);\n\nHoverCardTrigger.displayName = TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * HoverCardPortal\n * -----------------------------------------------------------------------------------------------*/\n\nconst PORTAL_NAME = 'HoverCardPortal';\n\ntype PortalContextValue = { forceMount?: true };\nconst [PortalProvider, usePortalContext] = createHoverCardContext<PortalContextValue>(PORTAL_NAME, {\n forceMount: undefined,\n});\n\ntype PortalProps = React.ComponentPropsWithoutRef<typeof PortalPrimitive>;\ninterface HoverCardPortalProps extends Omit<PortalProps, 'asChild'> {\n children?: React.ReactNode;\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst HoverCardPortal: React.FC<HoverCardPortalProps> = (\n props: ScopedProps<HoverCardPortalProps>\n) => {\n const { __scopeHoverCard, forceMount, children, container } = props;\n const context = useHoverCardContext(PORTAL_NAME, __scopeHoverCard);\n return (\n <PortalProvider scope={__scopeHoverCard} forceMount={forceMount}>\n <Presence present={forceMount || context.open}>\n <PortalPrimitive asChild container={container}>\n {children}\n </PortalPrimitive>\n </Presence>\n </PortalProvider>\n );\n};\n\nHoverCardPortal.displayName = PORTAL_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * HoverCardContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = 'HoverCardContent';\n\ntype HoverCardContentElement = HoverCardContentImplElement;\ninterface HoverCardContentProps extends HoverCardContentImplProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst HoverCardContent = React.forwardRef<HoverCardContentElement, HoverCardContentProps>(\n (props: ScopedProps<HoverCardContentProps>, 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 (\n <Presence present={forceMount || context.open}>\n <HoverCardContentImpl\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 </Presence>\n );\n }\n);\n\nHoverCardContent.displayName = CONTENT_NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\ntype HoverCardContentImplElement = React.ElementRef<typeof PopperPrimitive.Content>;\ntype DismissableLayerProps = Radix.ComponentPropsWithoutRef<typeof DismissableLayer>;\ntype PopperContentProps = Radix.ComponentPropsWithoutRef<typeof PopperPrimitive.Content>;\ninterface HoverCardContentImplProps extends PopperContentProps {\n /**\n * Event handler called when the escape key is down.\n * Can be prevented.\n */\n onEscapeKeyDown?: DismissableLayerProps['onEscapeKeyDown'];\n /**\n * Event handler called when the a `pointerdown` event happens outside of the `HoverCard`.\n * Can be prevented.\n */\n onPointerDownOutside?: DismissableLayerProps['onPointerDownOutside'];\n /**\n * Event handler called when the focus moves outside of the `HoverCard`.\n * Can be prevented.\n */\n onFocusOutside?: DismissableLayerProps['onFocusOutside'];\n /**\n * Event handler called when an interaction happens outside the `HoverCard`.\n * Specifically, when a `pointerdown` event happens outside or focus moves outside of it.\n * Can be prevented.\n */\n onInteractOutside?: DismissableLayerProps['onInteractOutside'];\n}\n\nconst HoverCardContentImpl = React.forwardRef<\n HoverCardContentImplElement,\n HoverCardContentImplProps\n>((props: ScopedProps<HoverCardContentImplProps>, 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<HoverCardContentImplElement>(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const [containSelection, setContainSelection] = React.useState(false);\n\n React.useEffect(() => {\n if (containSelection) {\n const body = document.body;\n\n // Safari requires prefix\n originalBodyUserSelect = body.style.userSelect || body.style.webkitUserSelect;\n\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\n React.useEffect(() => {\n if (ref.current) {\n const handlePointerUp = () => {\n setContainSelection(false);\n context.isPointerDownOnContentRef.current = false;\n\n // Delay a frame to ensure we always access the latest selection\n setTimeout(() => {\n const hasSelection = document.getSelection()?.toString() !== '';\n if (hasSelection) context.hasSelectionRef.current = true;\n });\n };\n\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\n React.useEffect(() => {\n if (ref.current) {\n const tabbables = getTabbableNodes(ref.current);\n tabbables.forEach((tabbable) => tabbable.setAttribute('tabindex', '-1'));\n }\n });\n\n return (\n <DismissableLayer\n asChild\n disableOutsidePointerEvents={false}\n onInteractOutside={onInteractOutside}\n onEscapeKeyDown={onEscapeKeyDown}\n onPointerDownOutside={onPointerDownOutside}\n onFocusOutside={composeEventHandlers(onFocusOutside, (event) => {\n event.preventDefault();\n })}\n onDismiss={context.onDismiss}\n >\n <PopperPrimitive.Content\n {...popperScope}\n {...contentProps}\n onPointerDown={composeEventHandlers(contentProps.onPointerDown, (event) => {\n // Contain selection to current layer\n if (event.currentTarget.contains(event.target as HTMLElement)) {\n setContainSelection(true);\n }\n context.hasSelectionRef.current = false;\n context.isPointerDownOnContentRef.current = true;\n })}\n ref={composedRefs}\n style={{\n ...contentProps.style,\n // re-namespace exposed content custom property\n ['--radix-hover-card-content-transform-origin' as any]:\n 'var(--radix-popper-transform-origin)',\n userSelect: containSelection ? 'text' : undefined,\n // Safari requires prefix\n WebkitUserSelect: containSelection ? 'text' : undefined,\n }}\n />\n </DismissableLayer>\n );\n});\n\n/* -------------------------------------------------------------------------------------------------\n * HoverCardArrow\n * -----------------------------------------------------------------------------------------------*/\n\nconst ARROW_NAME = 'HoverCardArrow';\n\ntype HoverCardArrowElement = React.ElementRef<typeof PopperPrimitive.Arrow>;\ntype PopperArrowProps = Radix.ComponentPropsWithoutRef<typeof PopperPrimitive.Arrow>;\ninterface HoverCardArrowProps extends PopperArrowProps {}\n\nconst HoverCardArrow = React.forwardRef<HoverCardArrowElement, HoverCardArrowProps>(\n (props: ScopedProps<HoverCardArrowProps>, forwardedRef) => {\n const { __scopeHoverCard, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopeHoverCard);\n return <PopperPrimitive.Arrow {...popperScope} {...arrowProps} ref={forwardedRef} />;\n }\n);\n\nHoverCardArrow.displayName = ARROW_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction excludeTouch<E>(eventHandler: () => void) {\n return (event: React.PointerEvent<E>) =>\n event.pointerType === 'touch' ? undefined : eventHandler();\n}\n\n/**\n * Returns a list of nodes that can be in the tab sequence.\n * @see: https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker\n */\nfunction getTabbableNodes(container: HTMLElement) {\n const nodes: HTMLElement[] = [];\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n acceptNode: (node: any) => {\n // `.tabIndex` is not the same as the `tabindex` attribute. It works on the\n // runtime's understanding of tabbability, so this automatically accounts\n // for any kind of element that could be tabbed to.\n return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n },\n });\n while (walker.nextNode()) nodes.push(walker.currentNode as HTMLElement);\n return nodes;\n}\n\nconst Root = HoverCard;\nconst Trigger = HoverCardTrigger;\nconst Portal = HoverCardPortal;\nconst Content = HoverCardContent;\nconst Arrow = HoverCardArrow;\n\nexport {\n createHoverCardScope,\n //\n HoverCard,\n HoverCardTrigger,\n HoverCardPortal,\n HoverCardContent,\n HoverCardArrow,\n //\n Root,\n Trigger,\n Portal,\n Content,\n Arrow,\n};\nexport type {\n HoverCardProps,\n HoverCardTriggerProps,\n HoverCardPortalProps,\n HoverCardContentProps,\n HoverCardArrowProps,\n};\n"],"names":["createHoverCardScope","HoverCard","HoverCardTrigger","HoverCardPortal","HoverCardContent","HoverCardArrow","Root","Trigger","Portal","Content","Arrow","React","composeEventHandlers","createContextScope","useControllableState","useComposedRefs","PopperPrimitive","createPopperScope","PortalPrimitive","Presence","Primitive","DismissableLayer","originalBodyUserSelect","HOVERCARD_NAME","createHoverCardContext","usePopperScope","HoverCardProvider","useHoverCardContext","props","__scopeHoverCard","children","open","openProp","defaultOpen","onOpenChange","openDelay","closeDelay","popperScope","openTimerRef","useRef","closeTimerRef","hasSelectionRef","isPointerDownOnContentRef","setOpen","prop","defaultProp","onChange","handleOpen","useCallback","clearTimeout","current","window","setTimeout","handleClose","handleDismiss","useEffect","TRIGGER_NAME","forwardRef","forwardedRef","triggerProps","context","onPointerEnter","excludeTouch","onOpen","onPointerLeave","onClose","onFocus","onBlur","onTouchStart","event","preventDefault","PORTAL_NAME","PortalProvider","usePortalContext","forceMount","undefined","container","CONTENT_NAME","portalContext","contentProps","HoverCardContentImpl","onEscapeKeyDown","onPointerDownOutside","onFocusOutside","onInteractOutside","ref","composedRefs","containSelection","setContainSelection","useState","body","document","style","userSelect","webkitUserSelect","handlePointerUp","hasSelection","getSelection","toString","addEventListener","removeEventListener","tabbables","getTabbableNodes","forEach","tabbable","setAttribute","onDismiss","onPointerDown","currentTarget","contains","target","WebkitUserSelect","ARROW_NAME","arrowProps","eventHandler","pointerType","nodes","walker","createTreeWalker","NodeFilter","SHOW_ELEMENT","acceptNode","node","tabIndex","FILTER_ACCEPT","FILTER_SKIP","nextNode","push","currentNode"],"version":3,"file":"index.module.js.map"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@radix-ui/react-hover-card",
3
- "version": "1.0.1-rc.9",
3
+ "version": "1.0.2-rc.1",
4
4
  "license": "MIT",
5
5
  "source": "src/index.ts",
6
6
  "main": "dist/index.js",
@@ -20,11 +20,11 @@
20
20
  "@radix-ui/primitive": "1.0.0",
21
21
  "@radix-ui/react-compose-refs": "1.0.0",
22
22
  "@radix-ui/react-context": "1.0.0",
23
- "@radix-ui/react-dismissable-layer": "1.0.1-rc.9",
24
- "@radix-ui/react-popper": "1.0.1-rc.2",
25
- "@radix-ui/react-portal": "1.0.1-rc.2",
23
+ "@radix-ui/react-dismissable-layer": "1.0.2-rc.1",
24
+ "@radix-ui/react-popper": "1.0.1",
25
+ "@radix-ui/react-portal": "1.0.1",
26
26
  "@radix-ui/react-presence": "1.0.0",
27
- "@radix-ui/react-primitive": "1.0.1-rc.2",
27
+ "@radix-ui/react-primitive": "1.0.1",
28
28
  "@radix-ui/react-use-controllable-state": "1.0.0"
29
29
  },
30
30
  "peerDependencies": {
@@ -39,5 +39,5 @@
39
39
  "bugs": {
40
40
  "url": "https://github.com/radix-ui/primitives/issues"
41
41
  },
42
- "stableVersion": "1.0.0"
42
+ "stableVersion": "1.0.1"
43
43
  }