@radix-ui/react-hover-card 0.1.6-rc.2 → 0.1.6-rc.5
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.
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +230 -1
- package/dist/index.js.map +1 -1
- package/dist/index.module.js +211 -1
- package/dist/index.module.js.map +1 -1
- package/package.json +9 -9
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"
|
|
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;AAWF,sCAAgC,SAAQ,yBAAyB;IAC/D;;;OAGG;IACH,UAAU,CAAC,EAAE,IAAI,CAAC;CACnB;AAED,OAAA,MAAM,8GAgBL,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;IAC/D;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AA8DD,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,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 * from './HoverCard';\n"],"names":[],"version":3,"file":"index.d.ts.map"}
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,231 @@
|
|
|
1
|
-
var
|
|
1
|
+
var $eFX7w$babelruntimehelpersextends = require("@babel/runtime/helpers/extends");
|
|
2
|
+
var $eFX7w$react = require("react");
|
|
3
|
+
var $eFX7w$radixuiprimitive = require("@radix-ui/primitive");
|
|
4
|
+
var $eFX7w$radixuireactcontext = require("@radix-ui/react-context");
|
|
5
|
+
var $eFX7w$radixuireactusecontrollablestate = require("@radix-ui/react-use-controllable-state");
|
|
6
|
+
var $eFX7w$radixuireactcomposerefs = require("@radix-ui/react-compose-refs");
|
|
7
|
+
var $eFX7w$radixuireactpopper = require("@radix-ui/react-popper");
|
|
8
|
+
var $eFX7w$radixuireactportal = require("@radix-ui/react-portal");
|
|
9
|
+
var $eFX7w$radixuireactpresence = require("@radix-ui/react-presence");
|
|
10
|
+
var $eFX7w$radixuireactprimitive = require("@radix-ui/react-primitive");
|
|
11
|
+
var $eFX7w$radixuireactdismissablelayer = require("@radix-ui/react-dismissable-layer");
|
|
12
|
+
|
|
13
|
+
function $parcel$exportWildcard(dest, source) {
|
|
14
|
+
Object.keys(source).forEach(function(key) {
|
|
15
|
+
if (key === 'default' || key === '__esModule' || dest.hasOwnProperty(key)) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
Object.defineProperty(dest, key, {
|
|
20
|
+
enumerable: true,
|
|
21
|
+
get: function get() {
|
|
22
|
+
return source[key];
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
return dest;
|
|
28
|
+
}
|
|
29
|
+
function $parcel$interopDefault(a) {
|
|
30
|
+
return a && a.__esModule ? a.default : a;
|
|
31
|
+
}
|
|
32
|
+
function $parcel$export(e, n, v, s) {
|
|
33
|
+
Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
|
|
34
|
+
}
|
|
35
|
+
var $e5715e9205c1e1fe$exports = {};
|
|
36
|
+
|
|
37
|
+
$parcel$export($e5715e9205c1e1fe$exports, "createHoverCardScope", () => $e5715e9205c1e1fe$export$47b6998a836b7260);
|
|
38
|
+
$parcel$export($e5715e9205c1e1fe$exports, "HoverCard", () => $e5715e9205c1e1fe$export$57a077cc9fbe653e);
|
|
39
|
+
$parcel$export($e5715e9205c1e1fe$exports, "HoverCardTrigger", () => $e5715e9205c1e1fe$export$ef9f7fd8e4ba882f);
|
|
40
|
+
$parcel$export($e5715e9205c1e1fe$exports, "HoverCardContent", () => $e5715e9205c1e1fe$export$aa4724a5938c586);
|
|
41
|
+
$parcel$export($e5715e9205c1e1fe$exports, "HoverCardArrow", () => $e5715e9205c1e1fe$export$b9744d3e7456d806);
|
|
42
|
+
$parcel$export($e5715e9205c1e1fe$exports, "Root", () => $e5715e9205c1e1fe$export$be92b6f5f03c0fe9);
|
|
43
|
+
$parcel$export($e5715e9205c1e1fe$exports, "Trigger", () => $e5715e9205c1e1fe$export$41fb9f06171c75f4);
|
|
44
|
+
$parcel$export($e5715e9205c1e1fe$exports, "Content", () => $e5715e9205c1e1fe$export$7c6e2c02157bb7d2);
|
|
45
|
+
$parcel$export($e5715e9205c1e1fe$exports, "Arrow", () => $e5715e9205c1e1fe$export$21b07c8f274aebd5);
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
/* -------------------------------------------------------------------------------------------------
|
|
59
|
+
* HoverCard
|
|
60
|
+
* -----------------------------------------------------------------------------------------------*/ const $e5715e9205c1e1fe$var$HOVERCARD_NAME = 'HoverCard';
|
|
61
|
+
const [$e5715e9205c1e1fe$var$createHoverCardContext, $e5715e9205c1e1fe$export$47b6998a836b7260] = $eFX7w$radixuireactcontext.createContextScope($e5715e9205c1e1fe$var$HOVERCARD_NAME, [
|
|
62
|
+
$eFX7w$radixuireactpopper.createPopperScope
|
|
63
|
+
]);
|
|
64
|
+
const $e5715e9205c1e1fe$var$usePopperScope = $eFX7w$radixuireactpopper.createPopperScope();
|
|
65
|
+
const [$e5715e9205c1e1fe$var$HoverCardProvider, $e5715e9205c1e1fe$var$useHoverCardContext] = $e5715e9205c1e1fe$var$createHoverCardContext($e5715e9205c1e1fe$var$HOVERCARD_NAME);
|
|
66
|
+
const $e5715e9205c1e1fe$export$57a077cc9fbe653e = (props)=>{
|
|
67
|
+
const { __scopeHoverCard: __scopeHoverCard , children: children , open: openProp , defaultOpen: defaultOpen , onOpenChange: onOpenChange , openDelay: openDelay = 700 , closeDelay: closeDelay = 300 } = props;
|
|
68
|
+
const popperScope = $e5715e9205c1e1fe$var$usePopperScope(__scopeHoverCard);
|
|
69
|
+
const openTimerRef = $eFX7w$react.useRef(0);
|
|
70
|
+
const closeTimerRef = $eFX7w$react.useRef(0);
|
|
71
|
+
const [open = false, setOpen] = $eFX7w$radixuireactusecontrollablestate.useControllableState({
|
|
72
|
+
prop: openProp,
|
|
73
|
+
defaultProp: defaultOpen,
|
|
74
|
+
onChange: onOpenChange
|
|
75
|
+
});
|
|
76
|
+
const handleOpen = $eFX7w$react.useCallback(()=>{
|
|
77
|
+
clearTimeout(closeTimerRef.current);
|
|
78
|
+
openTimerRef.current = window.setTimeout(()=>setOpen(true)
|
|
79
|
+
, openDelay);
|
|
80
|
+
}, [
|
|
81
|
+
openDelay,
|
|
82
|
+
setOpen
|
|
83
|
+
]);
|
|
84
|
+
const handleClose = $eFX7w$react.useCallback(()=>{
|
|
85
|
+
clearTimeout(openTimerRef.current);
|
|
86
|
+
closeTimerRef.current = window.setTimeout(()=>setOpen(false)
|
|
87
|
+
, closeDelay);
|
|
88
|
+
}, [
|
|
89
|
+
closeDelay,
|
|
90
|
+
setOpen
|
|
91
|
+
]);
|
|
92
|
+
const handleDismiss = $eFX7w$react.useCallback(()=>setOpen(false)
|
|
93
|
+
, [
|
|
94
|
+
setOpen
|
|
95
|
+
]); // cleanup any queued state updates on unmount
|
|
96
|
+
$eFX7w$react.useEffect(()=>{
|
|
97
|
+
return ()=>{
|
|
98
|
+
clearTimeout(openTimerRef.current);
|
|
99
|
+
clearTimeout(closeTimerRef.current);
|
|
100
|
+
};
|
|
101
|
+
}, []);
|
|
102
|
+
return /*#__PURE__*/ $eFX7w$react.createElement($e5715e9205c1e1fe$var$HoverCardProvider, {
|
|
103
|
+
scope: __scopeHoverCard,
|
|
104
|
+
open: open,
|
|
105
|
+
onOpenChange: setOpen,
|
|
106
|
+
onOpen: handleOpen,
|
|
107
|
+
onClose: handleClose,
|
|
108
|
+
onDismiss: handleDismiss
|
|
109
|
+
}, /*#__PURE__*/ $eFX7w$react.createElement($eFX7w$radixuireactpopper.Root, popperScope, children));
|
|
110
|
+
};
|
|
111
|
+
/*#__PURE__*/ Object.assign($e5715e9205c1e1fe$export$57a077cc9fbe653e, {
|
|
112
|
+
displayName: $e5715e9205c1e1fe$var$HOVERCARD_NAME
|
|
113
|
+
});
|
|
114
|
+
/* -------------------------------------------------------------------------------------------------
|
|
115
|
+
* HoverCardTrigger
|
|
116
|
+
* -----------------------------------------------------------------------------------------------*/ const $e5715e9205c1e1fe$var$TRIGGER_NAME = 'HoverCardTrigger';
|
|
117
|
+
const $e5715e9205c1e1fe$export$ef9f7fd8e4ba882f = /*#__PURE__*/ $eFX7w$react.forwardRef((props, forwardedRef)=>{
|
|
118
|
+
const { __scopeHoverCard: __scopeHoverCard , ...triggerProps } = props;
|
|
119
|
+
const context = $e5715e9205c1e1fe$var$useHoverCardContext($e5715e9205c1e1fe$var$TRIGGER_NAME, __scopeHoverCard);
|
|
120
|
+
const popperScope = $e5715e9205c1e1fe$var$usePopperScope(__scopeHoverCard);
|
|
121
|
+
return /*#__PURE__*/ $eFX7w$react.createElement($eFX7w$radixuireactpopper.Anchor, ($parcel$interopDefault($eFX7w$babelruntimehelpersextends))({
|
|
122
|
+
asChild: true
|
|
123
|
+
}, popperScope), /*#__PURE__*/ $eFX7w$react.createElement($eFX7w$radixuireactprimitive.Primitive.a, ($parcel$interopDefault($eFX7w$babelruntimehelpersextends))({
|
|
124
|
+
"data-state": context.open ? 'open' : 'closed'
|
|
125
|
+
}, triggerProps, {
|
|
126
|
+
ref: forwardedRef,
|
|
127
|
+
onPointerEnter: $eFX7w$radixuiprimitive.composeEventHandlers(props.onPointerEnter, $e5715e9205c1e1fe$var$excludeTouch(context.onOpen)),
|
|
128
|
+
onPointerLeave: $eFX7w$radixuiprimitive.composeEventHandlers(props.onPointerLeave, $e5715e9205c1e1fe$var$excludeTouch(context.onClose)),
|
|
129
|
+
onFocus: $eFX7w$radixuiprimitive.composeEventHandlers(props.onFocus, context.onOpen),
|
|
130
|
+
onBlur: $eFX7w$radixuiprimitive.composeEventHandlers(props.onBlur, context.onClose) // prevent focus event on touch devices
|
|
131
|
+
,
|
|
132
|
+
onTouchStart: $eFX7w$radixuiprimitive.composeEventHandlers(props.onTouchStart, (event)=>event.preventDefault()
|
|
133
|
+
)
|
|
134
|
+
})));
|
|
135
|
+
});
|
|
136
|
+
/*#__PURE__*/ Object.assign($e5715e9205c1e1fe$export$ef9f7fd8e4ba882f, {
|
|
137
|
+
displayName: $e5715e9205c1e1fe$var$TRIGGER_NAME
|
|
138
|
+
});
|
|
139
|
+
/* -------------------------------------------------------------------------------------------------
|
|
140
|
+
* HoverCardContent
|
|
141
|
+
* -----------------------------------------------------------------------------------------------*/ const $e5715e9205c1e1fe$var$CONTENT_NAME = 'HoverCardContent';
|
|
142
|
+
const $e5715e9205c1e1fe$export$aa4724a5938c586 = /*#__PURE__*/ $eFX7w$react.forwardRef((props, forwardedRef)=>{
|
|
143
|
+
const { forceMount: forceMount , ...contentProps } = props;
|
|
144
|
+
const context = $e5715e9205c1e1fe$var$useHoverCardContext($e5715e9205c1e1fe$var$CONTENT_NAME, props.__scopeHoverCard);
|
|
145
|
+
return /*#__PURE__*/ $eFX7w$react.createElement($eFX7w$radixuireactpresence.Presence, {
|
|
146
|
+
present: forceMount || context.open
|
|
147
|
+
}, /*#__PURE__*/ $eFX7w$react.createElement($e5715e9205c1e1fe$var$HoverCardContentImpl, ($parcel$interopDefault($eFX7w$babelruntimehelpersextends))({
|
|
148
|
+
"data-state": context.open ? 'open' : 'closed'
|
|
149
|
+
}, contentProps, {
|
|
150
|
+
onPointerEnter: $eFX7w$radixuiprimitive.composeEventHandlers(props.onPointerEnter, $e5715e9205c1e1fe$var$excludeTouch(context.onOpen)),
|
|
151
|
+
onPointerLeave: $eFX7w$radixuiprimitive.composeEventHandlers(props.onPointerLeave, $e5715e9205c1e1fe$var$excludeTouch(context.onClose)),
|
|
152
|
+
ref: forwardedRef
|
|
153
|
+
})));
|
|
154
|
+
});
|
|
155
|
+
/*#__PURE__*/ Object.assign($e5715e9205c1e1fe$export$aa4724a5938c586, {
|
|
156
|
+
displayName: $e5715e9205c1e1fe$var$CONTENT_NAME
|
|
157
|
+
});
|
|
158
|
+
/* ---------------------------------------------------------------------------------------------- */ const $e5715e9205c1e1fe$var$HoverCardContentImpl = /*#__PURE__*/ $eFX7w$react.forwardRef((props, forwardedRef)=>{
|
|
159
|
+
const { __scopeHoverCard: __scopeHoverCard , portalled: portalled = true , onEscapeKeyDown: onEscapeKeyDown , onPointerDownOutside: onPointerDownOutside , onFocusOutside: onFocusOutside , onInteractOutside: onInteractOutside , ...contentProps } = props;
|
|
160
|
+
const context = $e5715e9205c1e1fe$var$useHoverCardContext($e5715e9205c1e1fe$var$CONTENT_NAME, __scopeHoverCard);
|
|
161
|
+
const popperScope = $e5715e9205c1e1fe$var$usePopperScope(__scopeHoverCard);
|
|
162
|
+
const ref = $eFX7w$react.useRef(null);
|
|
163
|
+
const composedRefs = $eFX7w$radixuireactcomposerefs.useComposedRefs(forwardedRef, ref);
|
|
164
|
+
const PortalWrapper = portalled ? $eFX7w$radixuireactportal.Portal : $eFX7w$react.Fragment;
|
|
165
|
+
$eFX7w$react.useEffect(()=>{
|
|
166
|
+
if (ref.current) {
|
|
167
|
+
const tabbables = $e5715e9205c1e1fe$var$getTabbableNodes(ref.current);
|
|
168
|
+
tabbables.forEach((tabbable)=>tabbable.setAttribute('tabindex', '-1')
|
|
169
|
+
);
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
return /*#__PURE__*/ $eFX7w$react.createElement(PortalWrapper, null, /*#__PURE__*/ $eFX7w$react.createElement($eFX7w$radixuireactdismissablelayer.DismissableLayer, {
|
|
173
|
+
asChild: true,
|
|
174
|
+
disableOutsidePointerEvents: false,
|
|
175
|
+
onInteractOutside: onInteractOutside,
|
|
176
|
+
onEscapeKeyDown: onEscapeKeyDown,
|
|
177
|
+
onPointerDownOutside: onPointerDownOutside,
|
|
178
|
+
onFocusOutside: onFocusOutside,
|
|
179
|
+
onDismiss: context.onDismiss
|
|
180
|
+
}, /*#__PURE__*/ $eFX7w$react.createElement($eFX7w$radixuireactpopper.Content, ($parcel$interopDefault($eFX7w$babelruntimehelpersextends))({}, popperScope, contentProps, {
|
|
181
|
+
ref: composedRefs,
|
|
182
|
+
style: {
|
|
183
|
+
...contentProps.style,
|
|
184
|
+
// re-namespace exposed content custom property
|
|
185
|
+
['--radix-hover-card-content-transform-origin']: 'var(--radix-popper-transform-origin)'
|
|
186
|
+
}
|
|
187
|
+
}))));
|
|
188
|
+
});
|
|
189
|
+
/* -------------------------------------------------------------------------------------------------
|
|
190
|
+
* HoverCardArrow
|
|
191
|
+
* -----------------------------------------------------------------------------------------------*/ const $e5715e9205c1e1fe$var$ARROW_NAME = 'HoverCardArrow';
|
|
192
|
+
const $e5715e9205c1e1fe$export$b9744d3e7456d806 = /*#__PURE__*/ $eFX7w$react.forwardRef((props, forwardedRef)=>{
|
|
193
|
+
const { __scopeHoverCard: __scopeHoverCard , ...arrowProps } = props;
|
|
194
|
+
const popperScope = $e5715e9205c1e1fe$var$usePopperScope(__scopeHoverCard);
|
|
195
|
+
return /*#__PURE__*/ $eFX7w$react.createElement($eFX7w$radixuireactpopper.Arrow, ($parcel$interopDefault($eFX7w$babelruntimehelpersextends))({}, popperScope, arrowProps, {
|
|
196
|
+
ref: forwardedRef
|
|
197
|
+
}));
|
|
198
|
+
});
|
|
199
|
+
/*#__PURE__*/ Object.assign($e5715e9205c1e1fe$export$b9744d3e7456d806, {
|
|
200
|
+
displayName: $e5715e9205c1e1fe$var$ARROW_NAME
|
|
201
|
+
});
|
|
202
|
+
/* -----------------------------------------------------------------------------------------------*/ function $e5715e9205c1e1fe$var$excludeTouch(eventHandler) {
|
|
203
|
+
return (event)=>event.pointerType === 'touch' ? undefined : eventHandler()
|
|
204
|
+
;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Returns a list of nodes that can be in the tab sequence.
|
|
208
|
+
* @see: https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker
|
|
209
|
+
*/ function $e5715e9205c1e1fe$var$getTabbableNodes(container) {
|
|
210
|
+
const nodes = [];
|
|
211
|
+
const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {
|
|
212
|
+
acceptNode: (node)=>{
|
|
213
|
+
// `.tabIndex` is not the same as the `tabindex` attribute. It works on the
|
|
214
|
+
// runtime's understanding of tabbability, so this automatically accounts
|
|
215
|
+
// for any kind of element that could be tabbed to.
|
|
216
|
+
return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;
|
|
217
|
+
}
|
|
218
|
+
});
|
|
219
|
+
while(walker.nextNode())nodes.push(walker.currentNode);
|
|
220
|
+
return nodes;
|
|
221
|
+
}
|
|
222
|
+
const $e5715e9205c1e1fe$export$be92b6f5f03c0fe9 = $e5715e9205c1e1fe$export$57a077cc9fbe653e;
|
|
223
|
+
const $e5715e9205c1e1fe$export$41fb9f06171c75f4 = $e5715e9205c1e1fe$export$ef9f7fd8e4ba882f;
|
|
224
|
+
const $e5715e9205c1e1fe$export$7c6e2c02157bb7d2 = $e5715e9205c1e1fe$export$aa4724a5938c586;
|
|
225
|
+
const $e5715e9205c1e1fe$export$21b07c8f274aebd5 = $e5715e9205c1e1fe$export$b9744d3e7456d806;
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+
$parcel$exportWildcard(module.exports, $e5715e9205c1e1fe$exports);
|
|
229
|
+
|
|
230
|
+
|
|
2
231
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"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","sources":["./node_modules/@parcel/scope-hoisting/lib/helpers.js","./packages/react/hover-card/src/HoverCard.tsx"],"sourcesContent":["function $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n\nfunction $parcel$defineInteropFlag(a) {\n Object.defineProperty(a, '__esModule', {value: true});\n}\n\nfunction $parcel$reexport(e, n, v) {\n Object.defineProperty(e, n, {get: v, enumerable: true});\n}\n\nfunction $parcel$exportWildcard(dest, source) {\n Object.keys(source).forEach(function(key) {\n if (key === 'default' || key === '__esModule') {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function get() {\n return source[key];\n },\n });\n });\n\n return dest;\n}\n\nfunction $parcel$missingModule(name) {\n var err = new Error(\"Cannot find module '\" + name + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n}\n\nvar $parcel$global =\n typeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\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 } 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 * 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 { 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 * Whether the `HoverCard` should render in a `Portal`\n * (default: `true`)\n */\n portalled?: boolean;\n}\n\nconst HoverCardContentImpl = React.forwardRef<\n HoverCardContentImplElement,\n HoverCardContentImplProps\n>((props: ScopedProps<HoverCardContentImplProps>, forwardedRef) => {\n const {\n __scopeHoverCard,\n portalled = true,\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 PortalWrapper = portalled ? Portal : React.Fragment;\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 <PortalWrapper>\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 </PortalWrapper>\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 Content = HoverCardContent;\nconst Arrow = HoverCardArrow;\n\nexport {\n createHoverCardScope,\n //\n HoverCard,\n HoverCardTrigger,\n HoverCardContent,\n HoverCardArrow,\n //\n Root,\n Trigger,\n Content,\n Arrow,\n};\nexport type { HoverCardProps, HoverCardTriggerProps, HoverCardContentProps, HoverCardArrowProps };\n"],"names":["a","__esModule","default","$parcel$exportWildcard","dest","source","Object","keys","forEach","key","defineProperty","enumerable","get","createHoverCardContext","createHoverCardScope","createContextScope","createPopperScope","usePopperScope","HoverCardProvider","useHoverCardContext","HoverCard","props","__scopeHoverCard","children","open","openProp","defaultOpen","onOpenChange","openDelay","closeDelay","popperScope","openTimerRef","React","useRef","closeTimerRef","setOpen","useControllableState","prop","defaultProp","onChange","handleOpen","useCallback","clearTimeout","current","window","setTimeout","handleClose","handleDismiss","useEffect","_react","createElement","$a9187305359b3319ee1ff04b4d7510$var$HoverCardProvider","scope","onOpen","onClose","onDismiss","_radixUiReactPopper","Root","HoverCardTrigger","forwardRef","forwardedRef","triggerProps","context","Anchor","_babelRuntimeHelpersExtends","asChild","Primitive","ref","onPointerEnter","composeEventHandlers","excludeTouch","onPointerLeave","onFocus","onBlur","onTouchStart","event","preventDefault","HoverCardContent","forceMount","contentProps","Presence","present","$a9187305359b3319ee1ff04b4d7510$var$HoverCardContentImpl","HoverCardContentImpl","portalled","onEscapeKeyDown","onPointerDownOutside","onFocusOutside","onInteractOutside","composedRefs","useComposedRefs","PortalWrapper","Portal","Fragment","container","nodes","walker","document","createTreeWalker","NodeFilter","SHOW_ELEMENT","acceptNode","node","tabIndex","FILTER_ACCEPT","FILTER_SKIP","nextNode","push","currentNode","getTabbableNodes","tabbable","setAttribute","DismissableLayer","disableOutsidePointerEvents","Content","style","HoverCardArrow","arrowProps","Arrow","eventHandler","pointerType","undefined","Trigger"],"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 * 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 } 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 * 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 { 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 * Whether the `HoverCard` should render in a `Portal`\n * (default: `true`)\n */\n portalled?: boolean;\n}\n\nconst HoverCardContentImpl = React.forwardRef<\n HoverCardContentImplElement,\n HoverCardContentImplProps\n>((props: ScopedProps<HoverCardContentImplProps>, forwardedRef) => {\n const {\n __scopeHoverCard,\n portalled = true,\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 PortalWrapper = portalled ? Portal : React.Fragment;\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 <PortalWrapper>\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 </PortalWrapper>\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 Content = HoverCardContent;\nconst Arrow = HoverCardArrow;\n\nexport {\n createHoverCardScope,\n //\n HoverCard,\n HoverCardTrigger,\n HoverCardContent,\n HoverCardArrow,\n //\n Root,\n Trigger,\n Content,\n Arrow,\n};\nexport type { HoverCardProps, HoverCardTriggerProps, HoverCardContentProps, HoverCardArrowProps };\n"],"names":["React","composeEventHandlers","createContextScope","useControllableState","useComposedRefs","PopperPrimitive","createPopperScope","Portal","Presence","Primitive","DismissableLayer","HOVERCARD_NAME","createHoverCardContext","createHoverCardScope","usePopperScope","HoverCardProvider","useHoverCardContext","HoverCard","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","HoverCardTrigger","forwardRef","forwardedRef","triggerProps","context","onPointerEnter","excludeTouch","onOpen","onPointerLeave","onClose","onFocus","onBlur","onTouchStart","event","preventDefault","CONTENT_NAME","HoverCardContent","forceMount","contentProps","HoverCardContentImpl","portalled","onEscapeKeyDown","onPointerDownOutside","onFocusOutside","onInteractOutside","ref","composedRefs","PortalWrapper","Fragment","tabbables","getTabbableNodes","forEach","tabbable","setAttribute","onDismiss","style","ARROW_NAME","HoverCardArrow","arrowProps","eventHandler","pointerType","undefined","container","nodes","walker","document","createTreeWalker","NodeFilter","SHOW_ELEMENT","acceptNode","node","tabIndex","FILTER_ACCEPT","FILTER_SKIP","nextNode","push","currentNode","Root","Trigger","Content","Arrow"],"version":3,"file":"index.js.map"}
|
package/dist/index.module.js
CHANGED
|
@@ -1,2 +1,212 @@
|
|
|
1
|
-
import
|
|
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, Fragment as $eRSIW$Fragment} from "react";
|
|
3
|
+
import {composeEventHandlers as $eRSIW$composeEventHandlers} from "@radix-ui/primitive";
|
|
4
|
+
import {createContextScope as $eRSIW$createContextScope} from "@radix-ui/react-context";
|
|
5
|
+
import {useControllableState as $eRSIW$useControllableState} from "@radix-ui/react-use-controllable-state";
|
|
6
|
+
import {useComposedRefs as $eRSIW$useComposedRefs} from "@radix-ui/react-compose-refs";
|
|
7
|
+
import {createPopperScope as $eRSIW$createPopperScope, Root as $eRSIW$Root, Anchor as $eRSIW$Anchor, Content as $eRSIW$Content, Arrow as $eRSIW$Arrow} from "@radix-ui/react-popper";
|
|
8
|
+
import {Portal as $eRSIW$Portal} from "@radix-ui/react-portal";
|
|
9
|
+
import {Presence as $eRSIW$Presence} from "@radix-ui/react-presence";
|
|
10
|
+
import {Primitive as $eRSIW$Primitive} from "@radix-ui/react-primitive";
|
|
11
|
+
import {DismissableLayer as $eRSIW$DismissableLayer} from "@radix-ui/react-dismissable-layer";
|
|
12
|
+
|
|
13
|
+
function $parcel$export(e, n, v, s) {
|
|
14
|
+
Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
|
|
15
|
+
}
|
|
16
|
+
var $cef8881cdc69808e$exports = {};
|
|
17
|
+
|
|
18
|
+
$parcel$export($cef8881cdc69808e$exports, "createHoverCardScope", () => $cef8881cdc69808e$export$47b6998a836b7260);
|
|
19
|
+
$parcel$export($cef8881cdc69808e$exports, "HoverCard", () => $cef8881cdc69808e$export$57a077cc9fbe653e);
|
|
20
|
+
$parcel$export($cef8881cdc69808e$exports, "HoverCardTrigger", () => $cef8881cdc69808e$export$ef9f7fd8e4ba882f);
|
|
21
|
+
$parcel$export($cef8881cdc69808e$exports, "HoverCardContent", () => $cef8881cdc69808e$export$aa4724a5938c586);
|
|
22
|
+
$parcel$export($cef8881cdc69808e$exports, "HoverCardArrow", () => $cef8881cdc69808e$export$b9744d3e7456d806);
|
|
23
|
+
$parcel$export($cef8881cdc69808e$exports, "Root", () => $cef8881cdc69808e$export$be92b6f5f03c0fe9);
|
|
24
|
+
$parcel$export($cef8881cdc69808e$exports, "Trigger", () => $cef8881cdc69808e$export$41fb9f06171c75f4);
|
|
25
|
+
$parcel$export($cef8881cdc69808e$exports, "Content", () => $cef8881cdc69808e$export$7c6e2c02157bb7d2);
|
|
26
|
+
$parcel$export($cef8881cdc69808e$exports, "Arrow", () => $cef8881cdc69808e$export$21b07c8f274aebd5);
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
/* -------------------------------------------------------------------------------------------------
|
|
40
|
+
* HoverCard
|
|
41
|
+
* -----------------------------------------------------------------------------------------------*/ const $cef8881cdc69808e$var$HOVERCARD_NAME = 'HoverCard';
|
|
42
|
+
const [$cef8881cdc69808e$var$createHoverCardContext, $cef8881cdc69808e$export$47b6998a836b7260] = $eRSIW$createContextScope($cef8881cdc69808e$var$HOVERCARD_NAME, [
|
|
43
|
+
$eRSIW$createPopperScope
|
|
44
|
+
]);
|
|
45
|
+
const $cef8881cdc69808e$var$usePopperScope = $eRSIW$createPopperScope();
|
|
46
|
+
const [$cef8881cdc69808e$var$HoverCardProvider, $cef8881cdc69808e$var$useHoverCardContext] = $cef8881cdc69808e$var$createHoverCardContext($cef8881cdc69808e$var$HOVERCARD_NAME);
|
|
47
|
+
const $cef8881cdc69808e$export$57a077cc9fbe653e = (props)=>{
|
|
48
|
+
const { __scopeHoverCard: __scopeHoverCard , children: children , open: openProp , defaultOpen: defaultOpen , onOpenChange: onOpenChange , openDelay: openDelay = 700 , closeDelay: closeDelay = 300 } = props;
|
|
49
|
+
const popperScope = $cef8881cdc69808e$var$usePopperScope(__scopeHoverCard);
|
|
50
|
+
const openTimerRef = $eRSIW$useRef(0);
|
|
51
|
+
const closeTimerRef = $eRSIW$useRef(0);
|
|
52
|
+
const [open = false, setOpen] = $eRSIW$useControllableState({
|
|
53
|
+
prop: openProp,
|
|
54
|
+
defaultProp: defaultOpen,
|
|
55
|
+
onChange: onOpenChange
|
|
56
|
+
});
|
|
57
|
+
const handleOpen = $eRSIW$useCallback(()=>{
|
|
58
|
+
clearTimeout(closeTimerRef.current);
|
|
59
|
+
openTimerRef.current = window.setTimeout(()=>setOpen(true)
|
|
60
|
+
, openDelay);
|
|
61
|
+
}, [
|
|
62
|
+
openDelay,
|
|
63
|
+
setOpen
|
|
64
|
+
]);
|
|
65
|
+
const handleClose = $eRSIW$useCallback(()=>{
|
|
66
|
+
clearTimeout(openTimerRef.current);
|
|
67
|
+
closeTimerRef.current = window.setTimeout(()=>setOpen(false)
|
|
68
|
+
, closeDelay);
|
|
69
|
+
}, [
|
|
70
|
+
closeDelay,
|
|
71
|
+
setOpen
|
|
72
|
+
]);
|
|
73
|
+
const handleDismiss = $eRSIW$useCallback(()=>setOpen(false)
|
|
74
|
+
, [
|
|
75
|
+
setOpen
|
|
76
|
+
]); // cleanup any queued state updates on unmount
|
|
77
|
+
$eRSIW$useEffect(()=>{
|
|
78
|
+
return ()=>{
|
|
79
|
+
clearTimeout(openTimerRef.current);
|
|
80
|
+
clearTimeout(closeTimerRef.current);
|
|
81
|
+
};
|
|
82
|
+
}, []);
|
|
83
|
+
return /*#__PURE__*/ $eRSIW$createElement($cef8881cdc69808e$var$HoverCardProvider, {
|
|
84
|
+
scope: __scopeHoverCard,
|
|
85
|
+
open: open,
|
|
86
|
+
onOpenChange: setOpen,
|
|
87
|
+
onOpen: handleOpen,
|
|
88
|
+
onClose: handleClose,
|
|
89
|
+
onDismiss: handleDismiss
|
|
90
|
+
}, /*#__PURE__*/ $eRSIW$createElement($eRSIW$Root, popperScope, children));
|
|
91
|
+
};
|
|
92
|
+
/*#__PURE__*/ Object.assign($cef8881cdc69808e$export$57a077cc9fbe653e, {
|
|
93
|
+
displayName: $cef8881cdc69808e$var$HOVERCARD_NAME
|
|
94
|
+
});
|
|
95
|
+
/* -------------------------------------------------------------------------------------------------
|
|
96
|
+
* HoverCardTrigger
|
|
97
|
+
* -----------------------------------------------------------------------------------------------*/ const $cef8881cdc69808e$var$TRIGGER_NAME = 'HoverCardTrigger';
|
|
98
|
+
const $cef8881cdc69808e$export$ef9f7fd8e4ba882f = /*#__PURE__*/ $eRSIW$forwardRef((props, forwardedRef)=>{
|
|
99
|
+
const { __scopeHoverCard: __scopeHoverCard , ...triggerProps } = props;
|
|
100
|
+
const context = $cef8881cdc69808e$var$useHoverCardContext($cef8881cdc69808e$var$TRIGGER_NAME, __scopeHoverCard);
|
|
101
|
+
const popperScope = $cef8881cdc69808e$var$usePopperScope(__scopeHoverCard);
|
|
102
|
+
return /*#__PURE__*/ $eRSIW$createElement($eRSIW$Anchor, $eRSIW$babelruntimehelpersesmextends({
|
|
103
|
+
asChild: true
|
|
104
|
+
}, popperScope), /*#__PURE__*/ $eRSIW$createElement($eRSIW$Primitive.a, $eRSIW$babelruntimehelpersesmextends({
|
|
105
|
+
"data-state": context.open ? 'open' : 'closed'
|
|
106
|
+
}, triggerProps, {
|
|
107
|
+
ref: forwardedRef,
|
|
108
|
+
onPointerEnter: $eRSIW$composeEventHandlers(props.onPointerEnter, $cef8881cdc69808e$var$excludeTouch(context.onOpen)),
|
|
109
|
+
onPointerLeave: $eRSIW$composeEventHandlers(props.onPointerLeave, $cef8881cdc69808e$var$excludeTouch(context.onClose)),
|
|
110
|
+
onFocus: $eRSIW$composeEventHandlers(props.onFocus, context.onOpen),
|
|
111
|
+
onBlur: $eRSIW$composeEventHandlers(props.onBlur, context.onClose) // prevent focus event on touch devices
|
|
112
|
+
,
|
|
113
|
+
onTouchStart: $eRSIW$composeEventHandlers(props.onTouchStart, (event)=>event.preventDefault()
|
|
114
|
+
)
|
|
115
|
+
})));
|
|
116
|
+
});
|
|
117
|
+
/*#__PURE__*/ Object.assign($cef8881cdc69808e$export$ef9f7fd8e4ba882f, {
|
|
118
|
+
displayName: $cef8881cdc69808e$var$TRIGGER_NAME
|
|
119
|
+
});
|
|
120
|
+
/* -------------------------------------------------------------------------------------------------
|
|
121
|
+
* HoverCardContent
|
|
122
|
+
* -----------------------------------------------------------------------------------------------*/ const $cef8881cdc69808e$var$CONTENT_NAME = 'HoverCardContent';
|
|
123
|
+
const $cef8881cdc69808e$export$aa4724a5938c586 = /*#__PURE__*/ $eRSIW$forwardRef((props, forwardedRef)=>{
|
|
124
|
+
const { forceMount: forceMount , ...contentProps } = props;
|
|
125
|
+
const context = $cef8881cdc69808e$var$useHoverCardContext($cef8881cdc69808e$var$CONTENT_NAME, props.__scopeHoverCard);
|
|
126
|
+
return /*#__PURE__*/ $eRSIW$createElement($eRSIW$Presence, {
|
|
127
|
+
present: forceMount || context.open
|
|
128
|
+
}, /*#__PURE__*/ $eRSIW$createElement($cef8881cdc69808e$var$HoverCardContentImpl, $eRSIW$babelruntimehelpersesmextends({
|
|
129
|
+
"data-state": context.open ? 'open' : 'closed'
|
|
130
|
+
}, contentProps, {
|
|
131
|
+
onPointerEnter: $eRSIW$composeEventHandlers(props.onPointerEnter, $cef8881cdc69808e$var$excludeTouch(context.onOpen)),
|
|
132
|
+
onPointerLeave: $eRSIW$composeEventHandlers(props.onPointerLeave, $cef8881cdc69808e$var$excludeTouch(context.onClose)),
|
|
133
|
+
ref: forwardedRef
|
|
134
|
+
})));
|
|
135
|
+
});
|
|
136
|
+
/*#__PURE__*/ Object.assign($cef8881cdc69808e$export$aa4724a5938c586, {
|
|
137
|
+
displayName: $cef8881cdc69808e$var$CONTENT_NAME
|
|
138
|
+
});
|
|
139
|
+
/* ---------------------------------------------------------------------------------------------- */ const $cef8881cdc69808e$var$HoverCardContentImpl = /*#__PURE__*/ $eRSIW$forwardRef((props, forwardedRef)=>{
|
|
140
|
+
const { __scopeHoverCard: __scopeHoverCard , portalled: portalled = true , onEscapeKeyDown: onEscapeKeyDown , onPointerDownOutside: onPointerDownOutside , onFocusOutside: onFocusOutside , onInteractOutside: onInteractOutside , ...contentProps } = props;
|
|
141
|
+
const context = $cef8881cdc69808e$var$useHoverCardContext($cef8881cdc69808e$var$CONTENT_NAME, __scopeHoverCard);
|
|
142
|
+
const popperScope = $cef8881cdc69808e$var$usePopperScope(__scopeHoverCard);
|
|
143
|
+
const ref = $eRSIW$useRef(null);
|
|
144
|
+
const composedRefs = $eRSIW$useComposedRefs(forwardedRef, ref);
|
|
145
|
+
const PortalWrapper = portalled ? $eRSIW$Portal : $eRSIW$Fragment;
|
|
146
|
+
$eRSIW$useEffect(()=>{
|
|
147
|
+
if (ref.current) {
|
|
148
|
+
const tabbables = $cef8881cdc69808e$var$getTabbableNodes(ref.current);
|
|
149
|
+
tabbables.forEach((tabbable)=>tabbable.setAttribute('tabindex', '-1')
|
|
150
|
+
);
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
return /*#__PURE__*/ $eRSIW$createElement(PortalWrapper, null, /*#__PURE__*/ $eRSIW$createElement($eRSIW$DismissableLayer, {
|
|
154
|
+
asChild: true,
|
|
155
|
+
disableOutsidePointerEvents: false,
|
|
156
|
+
onInteractOutside: onInteractOutside,
|
|
157
|
+
onEscapeKeyDown: onEscapeKeyDown,
|
|
158
|
+
onPointerDownOutside: onPointerDownOutside,
|
|
159
|
+
onFocusOutside: onFocusOutside,
|
|
160
|
+
onDismiss: context.onDismiss
|
|
161
|
+
}, /*#__PURE__*/ $eRSIW$createElement($eRSIW$Content, $eRSIW$babelruntimehelpersesmextends({}, popperScope, contentProps, {
|
|
162
|
+
ref: composedRefs,
|
|
163
|
+
style: {
|
|
164
|
+
...contentProps.style,
|
|
165
|
+
// re-namespace exposed content custom property
|
|
166
|
+
['--radix-hover-card-content-transform-origin']: 'var(--radix-popper-transform-origin)'
|
|
167
|
+
}
|
|
168
|
+
}))));
|
|
169
|
+
});
|
|
170
|
+
/* -------------------------------------------------------------------------------------------------
|
|
171
|
+
* HoverCardArrow
|
|
172
|
+
* -----------------------------------------------------------------------------------------------*/ const $cef8881cdc69808e$var$ARROW_NAME = 'HoverCardArrow';
|
|
173
|
+
const $cef8881cdc69808e$export$b9744d3e7456d806 = /*#__PURE__*/ $eRSIW$forwardRef((props, forwardedRef)=>{
|
|
174
|
+
const { __scopeHoverCard: __scopeHoverCard , ...arrowProps } = props;
|
|
175
|
+
const popperScope = $cef8881cdc69808e$var$usePopperScope(__scopeHoverCard);
|
|
176
|
+
return /*#__PURE__*/ $eRSIW$createElement($eRSIW$Arrow, $eRSIW$babelruntimehelpersesmextends({}, popperScope, arrowProps, {
|
|
177
|
+
ref: forwardedRef
|
|
178
|
+
}));
|
|
179
|
+
});
|
|
180
|
+
/*#__PURE__*/ Object.assign($cef8881cdc69808e$export$b9744d3e7456d806, {
|
|
181
|
+
displayName: $cef8881cdc69808e$var$ARROW_NAME
|
|
182
|
+
});
|
|
183
|
+
/* -----------------------------------------------------------------------------------------------*/ function $cef8881cdc69808e$var$excludeTouch(eventHandler) {
|
|
184
|
+
return (event)=>event.pointerType === 'touch' ? undefined : eventHandler()
|
|
185
|
+
;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Returns a list of nodes that can be in the tab sequence.
|
|
189
|
+
* @see: https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker
|
|
190
|
+
*/ function $cef8881cdc69808e$var$getTabbableNodes(container) {
|
|
191
|
+
const nodes = [];
|
|
192
|
+
const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {
|
|
193
|
+
acceptNode: (node)=>{
|
|
194
|
+
// `.tabIndex` is not the same as the `tabindex` attribute. It works on the
|
|
195
|
+
// runtime's understanding of tabbability, so this automatically accounts
|
|
196
|
+
// for any kind of element that could be tabbed to.
|
|
197
|
+
return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;
|
|
198
|
+
}
|
|
199
|
+
});
|
|
200
|
+
while(walker.nextNode())nodes.push(walker.currentNode);
|
|
201
|
+
return nodes;
|
|
202
|
+
}
|
|
203
|
+
const $cef8881cdc69808e$export$be92b6f5f03c0fe9 = $cef8881cdc69808e$export$57a077cc9fbe653e;
|
|
204
|
+
const $cef8881cdc69808e$export$41fb9f06171c75f4 = $cef8881cdc69808e$export$ef9f7fd8e4ba882f;
|
|
205
|
+
const $cef8881cdc69808e$export$7c6e2c02157bb7d2 = $cef8881cdc69808e$export$aa4724a5938c586;
|
|
206
|
+
const $cef8881cdc69808e$export$21b07c8f274aebd5 = $cef8881cdc69808e$export$b9744d3e7456d806;
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
export {$cef8881cdc69808e$export$47b6998a836b7260 as createHoverCardScope, $cef8881cdc69808e$export$57a077cc9fbe653e as HoverCard, $cef8881cdc69808e$export$ef9f7fd8e4ba882f as HoverCardTrigger, $cef8881cdc69808e$export$aa4724a5938c586 as HoverCardContent, $cef8881cdc69808e$export$b9744d3e7456d806 as HoverCardArrow, $cef8881cdc69808e$export$be92b6f5f03c0fe9 as Root, $cef8881cdc69808e$export$41fb9f06171c75f4 as Trigger, $cef8881cdc69808e$export$7c6e2c02157bb7d2 as Content, $cef8881cdc69808e$export$21b07c8f274aebd5 as Arrow};
|
|
2
212
|
//# sourceMappingURL=index.module.js.map
|
package/dist/index.module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"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","sources":["./packages/react/hover-card/src/HoverCard.tsx"],"sourcesContent":["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 } 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 * 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 { 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 * Whether the `HoverCard` should render in a `Portal`\n * (default: `true`)\n */\n portalled?: boolean;\n}\n\nconst HoverCardContentImpl = React.forwardRef<\n HoverCardContentImplElement,\n HoverCardContentImplProps\n>((props: ScopedProps<HoverCardContentImplProps>, forwardedRef) => {\n const {\n __scopeHoverCard,\n portalled = true,\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 PortalWrapper = portalled ? Portal : React.Fragment;\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 <PortalWrapper>\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 </PortalWrapper>\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 Content = HoverCardContent;\nconst Arrow = HoverCardArrow;\n\nexport {\n createHoverCardScope,\n //\n HoverCard,\n HoverCardTrigger,\n HoverCardContent,\n HoverCardArrow,\n //\n Root,\n Trigger,\n Content,\n Arrow,\n};\nexport type { HoverCardProps, HoverCardTriggerProps, HoverCardContentProps, HoverCardArrowProps };\n"],"names":["createHoverCardContext","createHoverCardScope","createContextScope","createPopperScope","usePopperScope","HoverCardProvider","useHoverCardContext","HoverCard","props","__scopeHoverCard","children","open","openProp","defaultOpen","onOpenChange","openDelay","closeDelay","popperScope","openTimerRef","React","useRef","closeTimerRef","setOpen","useControllableState","prop","defaultProp","onChange","handleOpen","useCallback","clearTimeout","current","window","setTimeout","handleClose","handleDismiss","useEffect","_react","createElement","$ddf490131a2c96ef2ad05ece6$var$HoverCardProvider","scope","onOpen","onClose","onDismiss","_radixUiReactPopper","Root","HoverCardTrigger","forwardRef","forwardedRef","triggerProps","context","Anchor","_babelRuntimeHelpersEsmExtends","asChild","Primitive","a","ref","onPointerEnter","composeEventHandlers","excludeTouch","onPointerLeave","onFocus","onBlur","onTouchStart","event","preventDefault","HoverCardContent","forceMount","contentProps","Presence","present","$ddf490131a2c96ef2ad05ece6$var$HoverCardContentImpl","HoverCardContentImpl","portalled","onEscapeKeyDown","onPointerDownOutside","onFocusOutside","onInteractOutside","composedRefs","useComposedRefs","PortalWrapper","Portal","Fragment","container","nodes","walker","document","createTreeWalker","NodeFilter","SHOW_ELEMENT","acceptNode","node","tabIndex","FILTER_ACCEPT","FILTER_SKIP","nextNode","push","currentNode","getTabbableNodes","forEach","tabbable","setAttribute","DismissableLayer","disableOutsidePointerEvents","Content","style","HoverCardArrow","arrowProps","Arrow","eventHandler","pointerType","undefined","Trigger"],"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 * 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 } 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 * 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 { 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 * Whether the `HoverCard` should render in a `Portal`\n * (default: `true`)\n */\n portalled?: boolean;\n}\n\nconst HoverCardContentImpl = React.forwardRef<\n HoverCardContentImplElement,\n HoverCardContentImplProps\n>((props: ScopedProps<HoverCardContentImplProps>, forwardedRef) => {\n const {\n __scopeHoverCard,\n portalled = true,\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 PortalWrapper = portalled ? Portal : React.Fragment;\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 <PortalWrapper>\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 </PortalWrapper>\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 Content = HoverCardContent;\nconst Arrow = HoverCardArrow;\n\nexport {\n createHoverCardScope,\n //\n HoverCard,\n HoverCardTrigger,\n HoverCardContent,\n HoverCardArrow,\n //\n Root,\n Trigger,\n Content,\n Arrow,\n};\nexport type { HoverCardProps, HoverCardTriggerProps, HoverCardContentProps, HoverCardArrowProps };\n"],"names":["React","composeEventHandlers","createContextScope","useControllableState","useComposedRefs","PopperPrimitive","createPopperScope","Portal","Presence","Primitive","DismissableLayer","HOVERCARD_NAME","createHoverCardContext","createHoverCardScope","usePopperScope","HoverCardProvider","useHoverCardContext","HoverCard","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","HoverCardTrigger","forwardRef","forwardedRef","triggerProps","context","onPointerEnter","excludeTouch","onOpen","onPointerLeave","onClose","onFocus","onBlur","onTouchStart","event","preventDefault","CONTENT_NAME","HoverCardContent","forceMount","contentProps","HoverCardContentImpl","portalled","onEscapeKeyDown","onPointerDownOutside","onFocusOutside","onInteractOutside","ref","composedRefs","PortalWrapper","Fragment","tabbables","getTabbableNodes","forEach","tabbable","setAttribute","onDismiss","style","ARROW_NAME","HoverCardArrow","arrowProps","eventHandler","pointerType","undefined","container","nodes","walker","document","createTreeWalker","NodeFilter","SHOW_ELEMENT","acceptNode","node","tabIndex","FILTER_ACCEPT","FILTER_SKIP","nextNode","push","currentNode","Root","Trigger","Content","Arrow"],"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": "0.1.6-rc.
|
|
3
|
+
"version": "0.1.6-rc.5",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"source": "src/index.ts",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -18,14 +18,14 @@
|
|
|
18
18
|
"dependencies": {
|
|
19
19
|
"@babel/runtime": "^7.13.10",
|
|
20
20
|
"@radix-ui/primitive": "0.1.0",
|
|
21
|
-
"@radix-ui/react-compose-refs": "0.1.1-rc.
|
|
22
|
-
"@radix-ui/react-context": "0.1.2-rc.
|
|
23
|
-
"@radix-ui/react-dismissable-layer": "0.1.6-rc.
|
|
24
|
-
"@radix-ui/react-popper": "0.1.5-rc.
|
|
25
|
-
"@radix-ui/react-portal": "0.1.5-rc.
|
|
26
|
-
"@radix-ui/react-presence": "0.1.3-rc.
|
|
27
|
-
"@radix-ui/react-primitive": "0.1.5-rc.
|
|
28
|
-
"@radix-ui/react-use-controllable-state": "0.1.1-rc.
|
|
21
|
+
"@radix-ui/react-compose-refs": "0.1.1-rc.5",
|
|
22
|
+
"@radix-ui/react-context": "0.1.2-rc.5",
|
|
23
|
+
"@radix-ui/react-dismissable-layer": "0.1.6-rc.5",
|
|
24
|
+
"@radix-ui/react-popper": "0.1.5-rc.5",
|
|
25
|
+
"@radix-ui/react-portal": "0.1.5-rc.5",
|
|
26
|
+
"@radix-ui/react-presence": "0.1.3-rc.5",
|
|
27
|
+
"@radix-ui/react-primitive": "0.1.5-rc.5",
|
|
28
|
+
"@radix-ui/react-use-controllable-state": "0.1.1-rc.5"
|
|
29
29
|
},
|
|
30
30
|
"peerDependencies": {
|
|
31
31
|
"react": "^16.8 || ^17.0 || ^18.0",
|