@huin-core/react-hover-card 1.0.4 → 1.0.6
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.mts +8 -8
- package/dist/index.d.ts +8 -8
- package/dist/index.js +53 -57
- package/dist/index.js.map +3 -3
- package/dist/index.mjs +53 -57
- package/dist/index.mjs.map +3 -3
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as React
|
|
1
|
+
import * as React from 'react';
|
|
2
2
|
import React__default from 'react';
|
|
3
3
|
import { Primitive } from '@huin-core/react-primitive';
|
|
4
4
|
import { Portal } from '@huin-core/react-portal';
|
|
@@ -6,7 +6,7 @@ import * as PopperPrimitive from '@huin-core/react-popper';
|
|
|
6
6
|
import { DismissableLayer } from '@huin-core/react-dismissable-layer';
|
|
7
7
|
|
|
8
8
|
type Scope<C = any> = {
|
|
9
|
-
[scopeName: string]: React
|
|
9
|
+
[scopeName: string]: React.Context<C>[];
|
|
10
10
|
} | undefined;
|
|
11
11
|
type ScopeHook = (scope: Scope) => {
|
|
12
12
|
[__scopeProp: string]: Scope;
|
|
@@ -18,24 +18,24 @@ interface CreateScope {
|
|
|
18
18
|
|
|
19
19
|
declare const createHoverCardScope: CreateScope;
|
|
20
20
|
interface HoverCardProps {
|
|
21
|
-
children?: React
|
|
21
|
+
children?: React.ReactNode;
|
|
22
22
|
open?: boolean;
|
|
23
23
|
defaultOpen?: boolean;
|
|
24
24
|
onOpenChange?: (open: boolean) => void;
|
|
25
25
|
openDelay?: number;
|
|
26
26
|
closeDelay?: number;
|
|
27
27
|
}
|
|
28
|
-
declare const HoverCard: React
|
|
29
|
-
declare const Root: React
|
|
28
|
+
declare const HoverCard: React.FC<HoverCardProps>;
|
|
29
|
+
declare const Root: React.FC<HoverCardProps>;
|
|
30
30
|
|
|
31
31
|
type PrimitiveLinkProps = React__default.ComponentPropsWithoutRef<typeof Primitive.a>;
|
|
32
32
|
interface HoverCardTriggerProps extends PrimitiveLinkProps {
|
|
33
33
|
}
|
|
34
34
|
declare const HoverCardTrigger: React__default.ForwardRefExoticComponent<HoverCardTriggerProps & React__default.RefAttributes<HTMLAnchorElement>>;
|
|
35
35
|
|
|
36
|
-
type PortalProps =
|
|
36
|
+
type PortalProps = React__default.ComponentPropsWithoutRef<typeof Portal>;
|
|
37
37
|
interface HoverCardPortalProps {
|
|
38
|
-
children?:
|
|
38
|
+
children?: React__default.ReactNode;
|
|
39
39
|
/**
|
|
40
40
|
* Specify a container element to portal the content into.
|
|
41
41
|
*/
|
|
@@ -46,7 +46,7 @@ interface HoverCardPortalProps {
|
|
|
46
46
|
*/
|
|
47
47
|
forceMount?: true;
|
|
48
48
|
}
|
|
49
|
-
declare const HoverCardPortal:
|
|
49
|
+
declare const HoverCardPortal: React__default.FC<HoverCardPortalProps>;
|
|
50
50
|
|
|
51
51
|
interface HoverCardContentProps extends HoverCardContentImplProps {
|
|
52
52
|
/**
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as React
|
|
1
|
+
import * as React from 'react';
|
|
2
2
|
import React__default from 'react';
|
|
3
3
|
import { Primitive } from '@huin-core/react-primitive';
|
|
4
4
|
import { Portal } from '@huin-core/react-portal';
|
|
@@ -6,7 +6,7 @@ import * as PopperPrimitive from '@huin-core/react-popper';
|
|
|
6
6
|
import { DismissableLayer } from '@huin-core/react-dismissable-layer';
|
|
7
7
|
|
|
8
8
|
type Scope<C = any> = {
|
|
9
|
-
[scopeName: string]: React
|
|
9
|
+
[scopeName: string]: React.Context<C>[];
|
|
10
10
|
} | undefined;
|
|
11
11
|
type ScopeHook = (scope: Scope) => {
|
|
12
12
|
[__scopeProp: string]: Scope;
|
|
@@ -18,24 +18,24 @@ interface CreateScope {
|
|
|
18
18
|
|
|
19
19
|
declare const createHoverCardScope: CreateScope;
|
|
20
20
|
interface HoverCardProps {
|
|
21
|
-
children?: React
|
|
21
|
+
children?: React.ReactNode;
|
|
22
22
|
open?: boolean;
|
|
23
23
|
defaultOpen?: boolean;
|
|
24
24
|
onOpenChange?: (open: boolean) => void;
|
|
25
25
|
openDelay?: number;
|
|
26
26
|
closeDelay?: number;
|
|
27
27
|
}
|
|
28
|
-
declare const HoverCard: React
|
|
29
|
-
declare const Root: React
|
|
28
|
+
declare const HoverCard: React.FC<HoverCardProps>;
|
|
29
|
+
declare const Root: React.FC<HoverCardProps>;
|
|
30
30
|
|
|
31
31
|
type PrimitiveLinkProps = React__default.ComponentPropsWithoutRef<typeof Primitive.a>;
|
|
32
32
|
interface HoverCardTriggerProps extends PrimitiveLinkProps {
|
|
33
33
|
}
|
|
34
34
|
declare const HoverCardTrigger: React__default.ForwardRefExoticComponent<HoverCardTriggerProps & React__default.RefAttributes<HTMLAnchorElement>>;
|
|
35
35
|
|
|
36
|
-
type PortalProps =
|
|
36
|
+
type PortalProps = React__default.ComponentPropsWithoutRef<typeof Portal>;
|
|
37
37
|
interface HoverCardPortalProps {
|
|
38
|
-
children?:
|
|
38
|
+
children?: React__default.ReactNode;
|
|
39
39
|
/**
|
|
40
40
|
* Specify a container element to portal the content into.
|
|
41
41
|
*/
|
|
@@ -46,7 +46,7 @@ interface HoverCardPortalProps {
|
|
|
46
46
|
*/
|
|
47
47
|
forceMount?: true;
|
|
48
48
|
}
|
|
49
|
-
declare const HoverCardPortal:
|
|
49
|
+
declare const HoverCardPortal: React__default.FC<HoverCardPortalProps>;
|
|
50
50
|
|
|
51
51
|
interface HoverCardContentProps extends HoverCardContentImplProps {
|
|
52
52
|
/**
|
package/dist/index.js
CHANGED
|
@@ -47,7 +47,6 @@ var import_react_context = require("@huin-core/react-context");
|
|
|
47
47
|
var import_react_use_controllable_state = require("@huin-core/react-use-controllable-state");
|
|
48
48
|
var PopperPrimitive = __toESM(require("@huin-core/react-popper"));
|
|
49
49
|
var import_react_popper = require("@huin-core/react-popper");
|
|
50
|
-
var import_jsx_runtime = require("react/jsx-runtime");
|
|
51
50
|
var HOVERCARD_NAME = "HoverCard";
|
|
52
51
|
var [createHoverCardContext, createHoverCardScope] = (0, import_react_context.createContextScope)(HOVERCARD_NAME, [import_react_popper.createPopperScope]);
|
|
53
52
|
var usePopperScope = (0, import_react_popper.createPopperScope)();
|
|
@@ -92,7 +91,7 @@ var HoverCard = (props) => {
|
|
|
92
91
|
clearTimeout(closeTimerRef.current);
|
|
93
92
|
};
|
|
94
93
|
}, []);
|
|
95
|
-
return /* @__PURE__ */
|
|
94
|
+
return /* @__PURE__ */ React.createElement(
|
|
96
95
|
HoverCardProvider,
|
|
97
96
|
{
|
|
98
97
|
scope: __scopeHoverCard,
|
|
@@ -102,9 +101,9 @@ var HoverCard = (props) => {
|
|
|
102
101
|
onClose: handleClose,
|
|
103
102
|
onDismiss: handleDismiss,
|
|
104
103
|
hasSelectionRef,
|
|
105
|
-
isPointerDownOnContentRef
|
|
106
|
-
|
|
107
|
-
}
|
|
104
|
+
isPointerDownOnContentRef
|
|
105
|
+
},
|
|
106
|
+
/* @__PURE__ */ React.createElement(PopperPrimitive.Root, { ...popperScope }, children)
|
|
108
107
|
);
|
|
109
108
|
};
|
|
110
109
|
HoverCard.displayName = HOVERCARD_NAME;
|
|
@@ -118,13 +117,12 @@ var import_react = __toESM(require("react"));
|
|
|
118
117
|
var import_react_primitive = require("@huin-core/react-primitive");
|
|
119
118
|
var PopperPrimitive2 = __toESM(require("@huin-core/react-popper"));
|
|
120
119
|
var import_primitive = require("@huin-core/primitive");
|
|
121
|
-
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
122
120
|
var TRIGGER_NAME = "HoverCardTrigger";
|
|
123
121
|
var HoverCardTrigger = import_react.default.forwardRef((props, forwardedRef) => {
|
|
124
122
|
const { __scopeHoverCard, ...triggerProps } = props;
|
|
125
123
|
const context = useHoverCardContext(TRIGGER_NAME, __scopeHoverCard);
|
|
126
124
|
const popperScope = usePopperScope(__scopeHoverCard);
|
|
127
|
-
return /* @__PURE__ */
|
|
125
|
+
return /* @__PURE__ */ import_react.default.createElement(PopperPrimitive2.Anchor, { asChild: true, ...popperScope }, /* @__PURE__ */ import_react.default.createElement(
|
|
128
126
|
import_react_primitive.Primitive.a,
|
|
129
127
|
{
|
|
130
128
|
"data-state": context.open ? "open" : "closed",
|
|
@@ -145,14 +143,14 @@ var HoverCardTrigger = import_react.default.forwardRef((props, forwardedRef) =>
|
|
|
145
143
|
(event) => event.preventDefault()
|
|
146
144
|
)
|
|
147
145
|
}
|
|
148
|
-
)
|
|
146
|
+
));
|
|
149
147
|
});
|
|
150
148
|
HoverCardTrigger.displayName = TRIGGER_NAME;
|
|
151
149
|
|
|
152
150
|
// packages/react/hover-card/src/HoverCardPortal.tsx
|
|
153
151
|
var import_react_presence = require("@huin-core/react-presence");
|
|
154
152
|
var import_react_portal = require("@huin-core/react-portal");
|
|
155
|
-
var
|
|
153
|
+
var import_react2 = __toESM(require("react"));
|
|
156
154
|
var PORTAL_NAME = "HoverCardPortal";
|
|
157
155
|
var [PortalProvider, usePortalContext] = createHoverCardContext(PORTAL_NAME, {
|
|
158
156
|
forceMount: void 0
|
|
@@ -160,21 +158,20 @@ var [PortalProvider, usePortalContext] = createHoverCardContext(PORTAL_NAME, {
|
|
|
160
158
|
var HoverCardPortal = (props) => {
|
|
161
159
|
const { __scopeHoverCard, forceMount, children, container } = props;
|
|
162
160
|
const context = useHoverCardContext(PORTAL_NAME, __scopeHoverCard);
|
|
163
|
-
return /* @__PURE__ */
|
|
161
|
+
return /* @__PURE__ */ import_react2.default.createElement(PortalProvider, { scope: __scopeHoverCard, forceMount }, /* @__PURE__ */ import_react2.default.createElement(import_react_presence.Presence, { present: forceMount || context.open }, /* @__PURE__ */ import_react2.default.createElement(import_react_portal.Portal, { asChild: true, container }, children)));
|
|
164
162
|
};
|
|
165
163
|
HoverCardPortal.displayName = PORTAL_NAME;
|
|
166
164
|
|
|
167
165
|
// packages/react/hover-card/src/HoverCardContent.tsx
|
|
168
|
-
var
|
|
166
|
+
var import_react3 = __toESM(require("react"));
|
|
169
167
|
var import_react_presence2 = require("@huin-core/react-presence");
|
|
170
168
|
var import_primitive2 = require("@huin-core/primitive");
|
|
171
169
|
var PopperPrimitive3 = __toESM(require("@huin-core/react-popper"));
|
|
172
170
|
var import_react_dismissable_layer = require("@huin-core/react-dismissable-layer");
|
|
173
171
|
var import_react_compose_refs = require("@huin-core/react-compose-refs");
|
|
174
|
-
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
175
172
|
var originalBodyUserSelect;
|
|
176
173
|
var CONTENT_NAME = "HoverCardContent";
|
|
177
|
-
var HoverCardContent =
|
|
174
|
+
var HoverCardContent = import_react3.default.forwardRef((props, forwardedRef) => {
|
|
178
175
|
const portalContext = usePortalContext(CONTENT_NAME, props.__scopeHoverCard);
|
|
179
176
|
const {
|
|
180
177
|
forceMount = portalContext.forceMount,
|
|
@@ -182,7 +179,7 @@ var HoverCardContent = import_react2.default.forwardRef((props, forwardedRef) =>
|
|
|
182
179
|
...contentProps
|
|
183
180
|
} = props;
|
|
184
181
|
const context = useHoverCardContext(CONTENT_NAME, props.__scopeHoverCard);
|
|
185
|
-
return /* @__PURE__ */
|
|
182
|
+
return /* @__PURE__ */ import_react3.default.createElement(import_react_presence2.Presence, { present: forceMount || context.open }, /* @__PURE__ */ import_react3.default.createElement(
|
|
186
183
|
HoverCardContentImpl,
|
|
187
184
|
{
|
|
188
185
|
"data-state": context.open ? "open" : "closed",
|
|
@@ -197,10 +194,10 @@ var HoverCardContent = import_react2.default.forwardRef((props, forwardedRef) =>
|
|
|
197
194
|
),
|
|
198
195
|
ref: forwardedRef
|
|
199
196
|
}
|
|
200
|
-
)
|
|
197
|
+
));
|
|
201
198
|
});
|
|
202
199
|
HoverCardContent.displayName = CONTENT_NAME;
|
|
203
|
-
var HoverCardContentImpl =
|
|
200
|
+
var HoverCardContentImpl = import_react3.default.forwardRef((props, forwardedRef) => {
|
|
204
201
|
const {
|
|
205
202
|
__scopeHoverCard,
|
|
206
203
|
onEscapeKeyDown,
|
|
@@ -211,10 +208,10 @@ var HoverCardContentImpl = import_react2.default.forwardRef((props, forwardedRef
|
|
|
211
208
|
} = props;
|
|
212
209
|
const context = useHoverCardContext(CONTENT_NAME, __scopeHoverCard);
|
|
213
210
|
const popperScope = usePopperScope(__scopeHoverCard);
|
|
214
|
-
const ref =
|
|
211
|
+
const ref = import_react3.default.useRef(null);
|
|
215
212
|
const composedRefs = (0, import_react_compose_refs.useComposedRefs)(forwardedRef, ref);
|
|
216
|
-
const [containSelection, setContainSelection] =
|
|
217
|
-
|
|
213
|
+
const [containSelection, setContainSelection] = import_react3.default.useState(false);
|
|
214
|
+
import_react3.default.useEffect(() => {
|
|
218
215
|
if (containSelection) {
|
|
219
216
|
const body = document.body;
|
|
220
217
|
originalBodyUserSelect = body.style.userSelect || body.style.webkitUserSelect;
|
|
@@ -226,7 +223,7 @@ var HoverCardContentImpl = import_react2.default.forwardRef((props, forwardedRef
|
|
|
226
223
|
};
|
|
227
224
|
}
|
|
228
225
|
}, [containSelection]);
|
|
229
|
-
|
|
226
|
+
import_react3.default.useEffect(() => {
|
|
230
227
|
if (ref.current) {
|
|
231
228
|
const handlePointerUp = () => {
|
|
232
229
|
setContainSelection(false);
|
|
@@ -244,13 +241,13 @@ var HoverCardContentImpl = import_react2.default.forwardRef((props, forwardedRef
|
|
|
244
241
|
};
|
|
245
242
|
}
|
|
246
243
|
}, [context.isPointerDownOnContentRef, context.hasSelectionRef]);
|
|
247
|
-
|
|
244
|
+
import_react3.default.useEffect(() => {
|
|
248
245
|
if (ref.current) {
|
|
249
246
|
const tabbables = getTabbableNodes(ref.current);
|
|
250
247
|
tabbables.forEach((tabbable) => tabbable.setAttribute("tabindex", "-1"));
|
|
251
248
|
}
|
|
252
249
|
});
|
|
253
|
-
return /* @__PURE__ */
|
|
250
|
+
return /* @__PURE__ */ import_react3.default.createElement(
|
|
254
251
|
import_react_dismissable_layer.DismissableLayer,
|
|
255
252
|
{
|
|
256
253
|
asChild: true,
|
|
@@ -261,40 +258,40 @@ var HoverCardContentImpl = import_react2.default.forwardRef((props, forwardedRef
|
|
|
261
258
|
onFocusOutside: (0, import_primitive2.composeEventHandlers)(onFocusOutside, (event) => {
|
|
262
259
|
event.preventDefault();
|
|
263
260
|
}),
|
|
264
|
-
onDismiss: context.onDismiss
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
context.hasSelectionRef.current = false;
|
|
277
|
-
context.isPointerDownOnContentRef.current = true;
|
|
278
|
-
}
|
|
279
|
-
),
|
|
280
|
-
ref: composedRefs,
|
|
281
|
-
style: {
|
|
282
|
-
...contentProps.style,
|
|
283
|
-
userSelect: containSelection ? "text" : void 0,
|
|
284
|
-
// Safari requires prefix
|
|
285
|
-
WebkitUserSelect: containSelection ? "text" : void 0,
|
|
286
|
-
// re-namespace exposed content custom properties
|
|
287
|
-
...{
|
|
288
|
-
"--huin-core-hover-card-content-transform-origin": "var(--huin-core-popper-transform-origin)",
|
|
289
|
-
"--huin-core-hover-card-content-available-width": "var(--huin-core-popper-available-width)",
|
|
290
|
-
"--huin-core-hover-card-content-available-height": "var(--huin-core-popper-available-height)",
|
|
291
|
-
"--huin-core-hover-card-trigger-width": "var(--huin-core-popper-anchor-width)",
|
|
292
|
-
"--huin-core-hover-card-trigger-height": "var(--huin-core-popper-anchor-height)"
|
|
261
|
+
onDismiss: context.onDismiss
|
|
262
|
+
},
|
|
263
|
+
/* @__PURE__ */ import_react3.default.createElement(
|
|
264
|
+
PopperPrimitive3.Content,
|
|
265
|
+
{
|
|
266
|
+
...popperScope,
|
|
267
|
+
...contentProps,
|
|
268
|
+
onPointerDown: (0, import_primitive2.composeEventHandlers)(
|
|
269
|
+
contentProps.onPointerDown,
|
|
270
|
+
(event) => {
|
|
271
|
+
if (event.currentTarget.contains(event.target)) {
|
|
272
|
+
setContainSelection(true);
|
|
293
273
|
}
|
|
274
|
+
context.hasSelectionRef.current = false;
|
|
275
|
+
context.isPointerDownOnContentRef.current = true;
|
|
276
|
+
}
|
|
277
|
+
),
|
|
278
|
+
ref: composedRefs,
|
|
279
|
+
style: {
|
|
280
|
+
...contentProps.style,
|
|
281
|
+
userSelect: containSelection ? "text" : void 0,
|
|
282
|
+
// Safari requires prefix
|
|
283
|
+
WebkitUserSelect: containSelection ? "text" : void 0,
|
|
284
|
+
// re-namespace exposed content custom properties
|
|
285
|
+
...{
|
|
286
|
+
"--huin-core-hover-card-content-transform-origin": "var(--huin-core-popper-transform-origin)",
|
|
287
|
+
"--huin-core-hover-card-content-available-width": "var(--huin-core-popper-available-width)",
|
|
288
|
+
"--huin-core-hover-card-content-available-height": "var(--huin-core-popper-available-height)",
|
|
289
|
+
"--huin-core-hover-card-trigger-width": "var(--huin-core-popper-anchor-width)",
|
|
290
|
+
"--huin-core-hover-card-trigger-height": "var(--huin-core-popper-anchor-height)"
|
|
294
291
|
}
|
|
295
292
|
}
|
|
296
|
-
|
|
297
|
-
|
|
293
|
+
}
|
|
294
|
+
)
|
|
298
295
|
);
|
|
299
296
|
});
|
|
300
297
|
function getTabbableNodes(container) {
|
|
@@ -310,13 +307,12 @@ function getTabbableNodes(container) {
|
|
|
310
307
|
|
|
311
308
|
// packages/react/hover-card/src/HoverCardArrow.tsx
|
|
312
309
|
var PopperPrimitive4 = __toESM(require("@huin-core/react-popper"));
|
|
313
|
-
var
|
|
314
|
-
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
310
|
+
var import_react4 = __toESM(require("react"));
|
|
315
311
|
var ARROW_NAME = "HoverCardArrow";
|
|
316
|
-
var HoverCardArrow =
|
|
312
|
+
var HoverCardArrow = import_react4.default.forwardRef((props, forwardedRef) => {
|
|
317
313
|
const { __scopeHoverCard, ...arrowProps } = props;
|
|
318
314
|
const popperScope = usePopperScope(__scopeHoverCard);
|
|
319
|
-
return /* @__PURE__ */
|
|
315
|
+
return /* @__PURE__ */ import_react4.default.createElement(
|
|
320
316
|
PopperPrimitive4.Arrow,
|
|
321
317
|
{
|
|
322
318
|
...popperScope,
|
package/dist/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/index.ts", "../src/HoverCard.tsx", "../src/HoverCardTrigger.tsx", "../src/HoverCardPortal.tsx", "../src/HoverCardContent.tsx", "../src/HoverCardArrow.tsx"],
|
|
4
|
-
"sourcesContent": ["\"use client\";\nexport { createHoverCardScope, HoverCard, Root } from \"./HoverCard\";\nexport { HoverCardTrigger } from \"./HoverCardTrigger\";\nexport { HoverCardPortal } from \"./HoverCardPortal\";\nexport { HoverCardContent } from \"./HoverCardContent\";\nexport { HoverCardArrow } from \"./HoverCardArrow\";\n\nexport type { HoverCardProps } from \"./HoverCard\";\nexport type { HoverCardTriggerProps } from \"./HoverCardTrigger\";\nexport type { HoverCardPortalProps } from \"./HoverCardPortal\";\nexport type { HoverCardContentProps } from \"./HoverCardContent\";\nexport type { HoverCardArrowProps } from \"./HoverCardArrow\";\n", "import * as React from \"react\";\nimport { createContextScope } from \"@huin-core/react-context\";\nimport { useControllableState } from \"@huin-core/react-use-controllable-state\";\nimport * as PopperPrimitive from \"@huin-core/react-popper\";\nimport { createPopperScope } from \"@huin-core/react-popper\";\nimport type { Scope } from \"@huin-core/react-context\";\n\n/* -------------------------------------------------------------------------------------------------\n * HoverCard\n * -----------------------------------------------------------------------------------------------*/\n\nconst HOVERCARD_NAME = \"HoverCard\";\n\nexport type ScopedProps<P> = P & { __scopeHoverCard?: Scope };\nexport const [createHoverCardContext, createHoverCardScope] =\n createContextScope(HOVERCARD_NAME, [createPopperScope]);\nexport const 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\nexport const [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> = (\n props: ScopedProps<HoverCardProps>\n) => {\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(\n () => setOpen(false),\n closeDelay\n );\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\nexport function excludeTouch<E>(eventHandler: () => void) {\n return (event: React.PointerEvent<E>) =>\n event.pointerType === \"touch\" ? undefined : eventHandler();\n}\n\nconst Root = HoverCard;\n\nexport { HoverCard, Root };\nexport type { HoverCardProps };\n", "import React from \"react\";\nimport {\n excludeTouch,\n ScopedProps,\n useHoverCardContext,\n usePopperScope,\n} from \"./HoverCard\";\nimport { Primitive } from \"@huin-core/react-primitive\";\nimport * as PopperPrimitive from \"@huin-core/react-popper\";\nimport { composeEventHandlers } from \"@huin-core/primitive\";\n\nconst TRIGGER_NAME = \"HoverCardTrigger\";\n\ntype HoverCardTriggerElement = React.ElementRef<typeof Primitive.a>;\ntype PrimitiveLinkProps = React.ComponentPropsWithoutRef<typeof Primitive.a>;\ninterface HoverCardTriggerProps extends PrimitiveLinkProps {}\n\nconst HoverCardTrigger = React.forwardRef<\n HoverCardTriggerElement,\n 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(\n props.onPointerEnter,\n excludeTouch(context.onOpen)\n )}\n onPointerLeave={composeEventHandlers(\n props.onPointerLeave,\n excludeTouch(context.onClose)\n )}\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) =>\n event.preventDefault()\n )}\n />\n </PopperPrimitive.Anchor>\n );\n});\n\nHoverCardTrigger.displayName = TRIGGER_NAME;\n\nexport { HoverCardTrigger };\nexport type { HoverCardTriggerProps };\n", "import { Presence } from \"@huin-core/react-presence\";\nimport {\n createHoverCardContext,\n ScopedProps,\n useHoverCardContext,\n} from \"./HoverCard\";\nimport { Portal as PortalPrimitive } from \"@huin-core/react-portal\";\n\nconst PORTAL_NAME = \"HoverCardPortal\";\n\ntype PortalContextValue = { forceMount?: true };\nexport const [PortalProvider, usePortalContext] =\n createHoverCardContext<PortalContextValue>(PORTAL_NAME, {\n forceMount: undefined,\n });\n\ntype PortalProps = React.ComponentPropsWithoutRef<typeof PortalPrimitive>;\ninterface HoverCardPortalProps {\n children?: React.ReactNode;\n /**\n * Specify a container element to portal the content into.\n */\n container?: PortalProps[\"container\"];\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\nexport { HoverCardPortal };\nexport type { HoverCardPortalProps };\n", "import React from \"react\";\nimport {\n excludeTouch,\n ScopedProps,\n useHoverCardContext,\n usePopperScope,\n} from \"./HoverCard\";\nimport { Presence } from \"@huin-core/react-presence\";\nimport { composeEventHandlers } from \"@huin-core/primitive\";\nimport * as PopperPrimitive from \"@huin-core/react-popper\";\nimport { DismissableLayer } from \"@huin-core/react-dismissable-layer\";\nimport { useComposedRefs } from \"@huin-core/react-compose-refs\";\nimport { usePortalContext } from \"./HoverCardPortal\";\nlet originalBodyUserSelect: string;\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<\n HoverCardContentElement,\n HoverCardContentProps\n>((props: ScopedProps<HoverCardContentProps>, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeHoverCard);\n const {\n forceMount = portalContext.forceMount,\n align = \"center\",\n ...contentProps\n } = 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(\n props.onPointerEnter,\n excludeTouch(context.onOpen)\n )}\n onPointerLeave={composeEventHandlers(\n props.onPointerLeave,\n excludeTouch(context.onClose)\n )}\n ref={forwardedRef}\n />\n </Presence>\n );\n});\n\nHoverCardContent.displayName = CONTENT_NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\ntype HoverCardContentImplElement = React.ElementRef<\n typeof PopperPrimitive.Content\n>;\ntype DismissableLayerProps = React.ComponentPropsWithoutRef<\n typeof DismissableLayer\n>;\ntype PopperContentProps = React.ComponentPropsWithoutRef<\n typeof PopperPrimitive.Content\n>;\ninterface HoverCardContentImplProps\n extends Omit<PopperContentProps, \"onPlaced\"> {\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 =\n 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(\n contentProps.onPointerDown,\n (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 )}\n ref={composedRefs}\n style={{\n ...contentProps.style,\n userSelect: containSelection ? \"text\" : undefined,\n // Safari requires prefix\n WebkitUserSelect: containSelection ? \"text\" : undefined,\n // re-namespace exposed content custom properties\n ...{\n \"--huin-core-hover-card-content-transform-origin\":\n \"var(--huin-core-popper-transform-origin)\",\n \"--huin-core-hover-card-content-available-width\":\n \"var(--huin-core-popper-available-width)\",\n \"--huin-core-hover-card-content-available-height\":\n \"var(--huin-core-popper-available-height)\",\n \"--huin-core-hover-card-trigger-width\":\n \"var(--huin-core-popper-anchor-width)\",\n \"--huin-core-hover-card-trigger-height\":\n \"var(--huin-core-popper-anchor-height)\",\n },\n }}\n />\n </DismissableLayer>\n );\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\n ? NodeFilter.FILTER_ACCEPT\n : NodeFilter.FILTER_SKIP;\n },\n });\n while (walker.nextNode()) nodes.push(walker.currentNode as HTMLElement);\n return nodes;\n}\n\nexport { HoverCardContent };\nexport type { HoverCardContentProps };\n", "import * as PopperPrimitive from \"@huin-core/react-popper\";\nimport React from \"react\";\nimport { ScopedProps, usePopperScope } from \"./HoverCard\";\n\nconst ARROW_NAME = \"HoverCardArrow\";\n\ntype HoverCardArrowElement = React.ElementRef<typeof PopperPrimitive.Arrow>;\ntype PopperArrowProps = React.ComponentPropsWithoutRef<\n typeof PopperPrimitive.Arrow\n>;\ninterface HoverCardArrowProps extends PopperArrowProps {}\n\nconst HoverCardArrow = React.forwardRef<\n HoverCardArrowElement,\n HoverCardArrowProps\n>((props: ScopedProps<HoverCardArrowProps>, forwardedRef) => {\n const { __scopeHoverCard, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopeHoverCard);\n return (\n <PopperPrimitive.Arrow\n {...popperScope}\n {...arrowProps}\n ref={forwardedRef}\n />\n );\n});\n\nHoverCardArrow.displayName = ARROW_NAME;\n\nexport { HoverCardArrow };\nexport type { HoverCardArrowProps };\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAAA;AAAA,EAAA;AAAA;AAAA;;;ACAA,YAAuB;AACvB,2BAAmC;AACnC,0CAAqC;AACrC,sBAAiC;AACjC,0BAAkC;
|
|
6
|
-
"names": ["Root", "Root", "PopperPrimitive", "
|
|
4
|
+
"sourcesContent": ["\"use client\";\nexport { createHoverCardScope, HoverCard, Root } from \"./HoverCard\";\nexport { HoverCardTrigger } from \"./HoverCardTrigger\";\nexport { HoverCardPortal } from \"./HoverCardPortal\";\nexport { HoverCardContent } from \"./HoverCardContent\";\nexport { HoverCardArrow } from \"./HoverCardArrow\";\n\nexport type { HoverCardProps } from \"./HoverCard\";\nexport type { HoverCardTriggerProps } from \"./HoverCardTrigger\";\nexport type { HoverCardPortalProps } from \"./HoverCardPortal\";\nexport type { HoverCardContentProps } from \"./HoverCardContent\";\nexport type { HoverCardArrowProps } from \"./HoverCardArrow\";\n", "import * as React from \"react\";\nimport { createContextScope } from \"@huin-core/react-context\";\nimport { useControllableState } from \"@huin-core/react-use-controllable-state\";\nimport * as PopperPrimitive from \"@huin-core/react-popper\";\nimport { createPopperScope } from \"@huin-core/react-popper\";\nimport type { Scope } from \"@huin-core/react-context\";\n\n/* -------------------------------------------------------------------------------------------------\n * HoverCard\n * -----------------------------------------------------------------------------------------------*/\n\nconst HOVERCARD_NAME = \"HoverCard\";\n\nexport type ScopedProps<P> = P & { __scopeHoverCard?: Scope };\nexport const [createHoverCardContext, createHoverCardScope] =\n createContextScope(HOVERCARD_NAME, [createPopperScope]);\nexport const 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\nexport const [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> = (\n props: ScopedProps<HoverCardProps>\n) => {\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(\n () => setOpen(false),\n closeDelay\n );\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\nexport function excludeTouch<E>(eventHandler: () => void) {\n return (event: React.PointerEvent<E>) =>\n event.pointerType === \"touch\" ? undefined : eventHandler();\n}\n\nconst Root = HoverCard;\n\nexport { HoverCard, Root };\nexport type { HoverCardProps };\n", "import React from \"react\";\nimport {\n excludeTouch,\n ScopedProps,\n useHoverCardContext,\n usePopperScope,\n} from \"./HoverCard\";\nimport { Primitive } from \"@huin-core/react-primitive\";\nimport * as PopperPrimitive from \"@huin-core/react-popper\";\nimport { composeEventHandlers } from \"@huin-core/primitive\";\n\nconst TRIGGER_NAME = \"HoverCardTrigger\";\n\ntype HoverCardTriggerElement = React.ElementRef<typeof Primitive.a>;\ntype PrimitiveLinkProps = React.ComponentPropsWithoutRef<typeof Primitive.a>;\ninterface HoverCardTriggerProps extends PrimitiveLinkProps {}\n\nconst HoverCardTrigger = React.forwardRef<\n HoverCardTriggerElement,\n 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(\n props.onPointerEnter,\n excludeTouch(context.onOpen)\n )}\n onPointerLeave={composeEventHandlers(\n props.onPointerLeave,\n excludeTouch(context.onClose)\n )}\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) =>\n event.preventDefault()\n )}\n />\n </PopperPrimitive.Anchor>\n );\n});\n\nHoverCardTrigger.displayName = TRIGGER_NAME;\n\nexport { HoverCardTrigger };\nexport type { HoverCardTriggerProps };\n", "import { Presence } from \"@huin-core/react-presence\";\nimport {\n createHoverCardContext,\n ScopedProps,\n useHoverCardContext,\n} from \"./HoverCard\";\nimport { Portal as PortalPrimitive } from \"@huin-core/react-portal\";\nimport React from \"react\";\n\nconst PORTAL_NAME = \"HoverCardPortal\";\n\ntype PortalContextValue = { forceMount?: true };\nexport const [PortalProvider, usePortalContext] =\n createHoverCardContext<PortalContextValue>(PORTAL_NAME, {\n forceMount: undefined,\n });\n\ntype PortalProps = React.ComponentPropsWithoutRef<typeof PortalPrimitive>;\ninterface HoverCardPortalProps {\n children?: React.ReactNode;\n /**\n * Specify a container element to portal the content into.\n */\n container?: PortalProps[\"container\"];\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\nexport { HoverCardPortal };\nexport type { HoverCardPortalProps };\n", "import React from \"react\";\nimport {\n excludeTouch,\n ScopedProps,\n useHoverCardContext,\n usePopperScope,\n} from \"./HoverCard\";\nimport { Presence } from \"@huin-core/react-presence\";\nimport { composeEventHandlers } from \"@huin-core/primitive\";\nimport * as PopperPrimitive from \"@huin-core/react-popper\";\nimport { DismissableLayer } from \"@huin-core/react-dismissable-layer\";\nimport { useComposedRefs } from \"@huin-core/react-compose-refs\";\nimport { usePortalContext } from \"./HoverCardPortal\";\nlet originalBodyUserSelect: string;\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<\n HoverCardContentElement,\n HoverCardContentProps\n>((props: ScopedProps<HoverCardContentProps>, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeHoverCard);\n const {\n forceMount = portalContext.forceMount,\n align = \"center\",\n ...contentProps\n } = 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(\n props.onPointerEnter,\n excludeTouch(context.onOpen)\n )}\n onPointerLeave={composeEventHandlers(\n props.onPointerLeave,\n excludeTouch(context.onClose)\n )}\n ref={forwardedRef}\n />\n </Presence>\n );\n});\n\nHoverCardContent.displayName = CONTENT_NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\ntype HoverCardContentImplElement = React.ElementRef<\n typeof PopperPrimitive.Content\n>;\ntype DismissableLayerProps = React.ComponentPropsWithoutRef<\n typeof DismissableLayer\n>;\ntype PopperContentProps = React.ComponentPropsWithoutRef<\n typeof PopperPrimitive.Content\n>;\ninterface HoverCardContentImplProps\n extends Omit<PopperContentProps, \"onPlaced\"> {\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 =\n 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(\n contentProps.onPointerDown,\n (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 )}\n ref={composedRefs}\n style={{\n ...contentProps.style,\n userSelect: containSelection ? \"text\" : undefined,\n // Safari requires prefix\n WebkitUserSelect: containSelection ? \"text\" : undefined,\n // re-namespace exposed content custom properties\n ...{\n \"--huin-core-hover-card-content-transform-origin\":\n \"var(--huin-core-popper-transform-origin)\",\n \"--huin-core-hover-card-content-available-width\":\n \"var(--huin-core-popper-available-width)\",\n \"--huin-core-hover-card-content-available-height\":\n \"var(--huin-core-popper-available-height)\",\n \"--huin-core-hover-card-trigger-width\":\n \"var(--huin-core-popper-anchor-width)\",\n \"--huin-core-hover-card-trigger-height\":\n \"var(--huin-core-popper-anchor-height)\",\n },\n }}\n />\n </DismissableLayer>\n );\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\n ? NodeFilter.FILTER_ACCEPT\n : NodeFilter.FILTER_SKIP;\n },\n });\n while (walker.nextNode()) nodes.push(walker.currentNode as HTMLElement);\n return nodes;\n}\n\nexport { HoverCardContent };\nexport type { HoverCardContentProps };\n", "import * as PopperPrimitive from \"@huin-core/react-popper\";\nimport React from \"react\";\nimport { ScopedProps, usePopperScope } from \"./HoverCard\";\n\nconst ARROW_NAME = \"HoverCardArrow\";\n\ntype HoverCardArrowElement = React.ElementRef<typeof PopperPrimitive.Arrow>;\ntype PopperArrowProps = React.ComponentPropsWithoutRef<\n typeof PopperPrimitive.Arrow\n>;\ninterface HoverCardArrowProps extends PopperArrowProps {}\n\nconst HoverCardArrow = React.forwardRef<\n HoverCardArrowElement,\n HoverCardArrowProps\n>((props: ScopedProps<HoverCardArrowProps>, forwardedRef) => {\n const { __scopeHoverCard, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopeHoverCard);\n return (\n <PopperPrimitive.Arrow\n {...popperScope}\n {...arrowProps}\n ref={forwardedRef}\n />\n );\n});\n\nHoverCardArrow.displayName = ARROW_NAME;\n\nexport { HoverCardArrow };\nexport type { HoverCardArrowProps };\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["Root", "Root", "PopperPrimitive", "React", "import_react", "React", "PortalPrimitive", "import_react", "import_react_presence", "import_primitive", "PopperPrimitive", "React", "PopperPrimitive", "import_react", "React"]
|
|
7
7
|
}
|
package/dist/index.mjs
CHANGED
|
@@ -6,7 +6,6 @@ import { createContextScope } from "@huin-core/react-context";
|
|
|
6
6
|
import { useControllableState } from "@huin-core/react-use-controllable-state";
|
|
7
7
|
import * as PopperPrimitive from "@huin-core/react-popper";
|
|
8
8
|
import { createPopperScope } from "@huin-core/react-popper";
|
|
9
|
-
import { jsx } from "react/jsx-runtime";
|
|
10
9
|
var HOVERCARD_NAME = "HoverCard";
|
|
11
10
|
var [createHoverCardContext, createHoverCardScope] = createContextScope(HOVERCARD_NAME, [createPopperScope]);
|
|
12
11
|
var usePopperScope = createPopperScope();
|
|
@@ -51,7 +50,7 @@ var HoverCard = (props) => {
|
|
|
51
50
|
clearTimeout(closeTimerRef.current);
|
|
52
51
|
};
|
|
53
52
|
}, []);
|
|
54
|
-
return /* @__PURE__ */
|
|
53
|
+
return /* @__PURE__ */ React.createElement(
|
|
55
54
|
HoverCardProvider,
|
|
56
55
|
{
|
|
57
56
|
scope: __scopeHoverCard,
|
|
@@ -61,9 +60,9 @@ var HoverCard = (props) => {
|
|
|
61
60
|
onClose: handleClose,
|
|
62
61
|
onDismiss: handleDismiss,
|
|
63
62
|
hasSelectionRef,
|
|
64
|
-
isPointerDownOnContentRef
|
|
65
|
-
|
|
66
|
-
}
|
|
63
|
+
isPointerDownOnContentRef
|
|
64
|
+
},
|
|
65
|
+
/* @__PURE__ */ React.createElement(PopperPrimitive.Root, { ...popperScope }, children)
|
|
67
66
|
);
|
|
68
67
|
};
|
|
69
68
|
HoverCard.displayName = HOVERCARD_NAME;
|
|
@@ -77,13 +76,12 @@ import React2 from "react";
|
|
|
77
76
|
import { Primitive } from "@huin-core/react-primitive";
|
|
78
77
|
import * as PopperPrimitive2 from "@huin-core/react-popper";
|
|
79
78
|
import { composeEventHandlers } from "@huin-core/primitive";
|
|
80
|
-
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
81
79
|
var TRIGGER_NAME = "HoverCardTrigger";
|
|
82
80
|
var HoverCardTrigger = React2.forwardRef((props, forwardedRef) => {
|
|
83
81
|
const { __scopeHoverCard, ...triggerProps } = props;
|
|
84
82
|
const context = useHoverCardContext(TRIGGER_NAME, __scopeHoverCard);
|
|
85
83
|
const popperScope = usePopperScope(__scopeHoverCard);
|
|
86
|
-
return /* @__PURE__ */
|
|
84
|
+
return /* @__PURE__ */ React2.createElement(PopperPrimitive2.Anchor, { asChild: true, ...popperScope }, /* @__PURE__ */ React2.createElement(
|
|
87
85
|
Primitive.a,
|
|
88
86
|
{
|
|
89
87
|
"data-state": context.open ? "open" : "closed",
|
|
@@ -104,14 +102,14 @@ var HoverCardTrigger = React2.forwardRef((props, forwardedRef) => {
|
|
|
104
102
|
(event) => event.preventDefault()
|
|
105
103
|
)
|
|
106
104
|
}
|
|
107
|
-
)
|
|
105
|
+
));
|
|
108
106
|
});
|
|
109
107
|
HoverCardTrigger.displayName = TRIGGER_NAME;
|
|
110
108
|
|
|
111
109
|
// packages/react/hover-card/src/HoverCardPortal.tsx
|
|
112
110
|
import { Presence } from "@huin-core/react-presence";
|
|
113
111
|
import { Portal as PortalPrimitive } from "@huin-core/react-portal";
|
|
114
|
-
import
|
|
112
|
+
import React3 from "react";
|
|
115
113
|
var PORTAL_NAME = "HoverCardPortal";
|
|
116
114
|
var [PortalProvider, usePortalContext] = createHoverCardContext(PORTAL_NAME, {
|
|
117
115
|
forceMount: void 0
|
|
@@ -119,21 +117,20 @@ var [PortalProvider, usePortalContext] = createHoverCardContext(PORTAL_NAME, {
|
|
|
119
117
|
var HoverCardPortal = (props) => {
|
|
120
118
|
const { __scopeHoverCard, forceMount, children, container } = props;
|
|
121
119
|
const context = useHoverCardContext(PORTAL_NAME, __scopeHoverCard);
|
|
122
|
-
return /* @__PURE__ */
|
|
120
|
+
return /* @__PURE__ */ React3.createElement(PortalProvider, { scope: __scopeHoverCard, forceMount }, /* @__PURE__ */ React3.createElement(Presence, { present: forceMount || context.open }, /* @__PURE__ */ React3.createElement(PortalPrimitive, { asChild: true, container }, children)));
|
|
123
121
|
};
|
|
124
122
|
HoverCardPortal.displayName = PORTAL_NAME;
|
|
125
123
|
|
|
126
124
|
// packages/react/hover-card/src/HoverCardContent.tsx
|
|
127
|
-
import
|
|
125
|
+
import React4 from "react";
|
|
128
126
|
import { Presence as Presence2 } from "@huin-core/react-presence";
|
|
129
127
|
import { composeEventHandlers as composeEventHandlers2 } from "@huin-core/primitive";
|
|
130
128
|
import * as PopperPrimitive3 from "@huin-core/react-popper";
|
|
131
129
|
import { DismissableLayer } from "@huin-core/react-dismissable-layer";
|
|
132
130
|
import { useComposedRefs } from "@huin-core/react-compose-refs";
|
|
133
|
-
import { jsx as jsx4 } from "react/jsx-runtime";
|
|
134
131
|
var originalBodyUserSelect;
|
|
135
132
|
var CONTENT_NAME = "HoverCardContent";
|
|
136
|
-
var HoverCardContent =
|
|
133
|
+
var HoverCardContent = React4.forwardRef((props, forwardedRef) => {
|
|
137
134
|
const portalContext = usePortalContext(CONTENT_NAME, props.__scopeHoverCard);
|
|
138
135
|
const {
|
|
139
136
|
forceMount = portalContext.forceMount,
|
|
@@ -141,7 +138,7 @@ var HoverCardContent = React3.forwardRef((props, forwardedRef) => {
|
|
|
141
138
|
...contentProps
|
|
142
139
|
} = props;
|
|
143
140
|
const context = useHoverCardContext(CONTENT_NAME, props.__scopeHoverCard);
|
|
144
|
-
return /* @__PURE__ */
|
|
141
|
+
return /* @__PURE__ */ React4.createElement(Presence2, { present: forceMount || context.open }, /* @__PURE__ */ React4.createElement(
|
|
145
142
|
HoverCardContentImpl,
|
|
146
143
|
{
|
|
147
144
|
"data-state": context.open ? "open" : "closed",
|
|
@@ -156,10 +153,10 @@ var HoverCardContent = React3.forwardRef((props, forwardedRef) => {
|
|
|
156
153
|
),
|
|
157
154
|
ref: forwardedRef
|
|
158
155
|
}
|
|
159
|
-
)
|
|
156
|
+
));
|
|
160
157
|
});
|
|
161
158
|
HoverCardContent.displayName = CONTENT_NAME;
|
|
162
|
-
var HoverCardContentImpl =
|
|
159
|
+
var HoverCardContentImpl = React4.forwardRef((props, forwardedRef) => {
|
|
163
160
|
const {
|
|
164
161
|
__scopeHoverCard,
|
|
165
162
|
onEscapeKeyDown,
|
|
@@ -170,10 +167,10 @@ var HoverCardContentImpl = React3.forwardRef((props, forwardedRef) => {
|
|
|
170
167
|
} = props;
|
|
171
168
|
const context = useHoverCardContext(CONTENT_NAME, __scopeHoverCard);
|
|
172
169
|
const popperScope = usePopperScope(__scopeHoverCard);
|
|
173
|
-
const ref =
|
|
170
|
+
const ref = React4.useRef(null);
|
|
174
171
|
const composedRefs = useComposedRefs(forwardedRef, ref);
|
|
175
|
-
const [containSelection, setContainSelection] =
|
|
176
|
-
|
|
172
|
+
const [containSelection, setContainSelection] = React4.useState(false);
|
|
173
|
+
React4.useEffect(() => {
|
|
177
174
|
if (containSelection) {
|
|
178
175
|
const body = document.body;
|
|
179
176
|
originalBodyUserSelect = body.style.userSelect || body.style.webkitUserSelect;
|
|
@@ -185,7 +182,7 @@ var HoverCardContentImpl = React3.forwardRef((props, forwardedRef) => {
|
|
|
185
182
|
};
|
|
186
183
|
}
|
|
187
184
|
}, [containSelection]);
|
|
188
|
-
|
|
185
|
+
React4.useEffect(() => {
|
|
189
186
|
if (ref.current) {
|
|
190
187
|
const handlePointerUp = () => {
|
|
191
188
|
setContainSelection(false);
|
|
@@ -203,13 +200,13 @@ var HoverCardContentImpl = React3.forwardRef((props, forwardedRef) => {
|
|
|
203
200
|
};
|
|
204
201
|
}
|
|
205
202
|
}, [context.isPointerDownOnContentRef, context.hasSelectionRef]);
|
|
206
|
-
|
|
203
|
+
React4.useEffect(() => {
|
|
207
204
|
if (ref.current) {
|
|
208
205
|
const tabbables = getTabbableNodes(ref.current);
|
|
209
206
|
tabbables.forEach((tabbable) => tabbable.setAttribute("tabindex", "-1"));
|
|
210
207
|
}
|
|
211
208
|
});
|
|
212
|
-
return /* @__PURE__ */
|
|
209
|
+
return /* @__PURE__ */ React4.createElement(
|
|
213
210
|
DismissableLayer,
|
|
214
211
|
{
|
|
215
212
|
asChild: true,
|
|
@@ -220,40 +217,40 @@ var HoverCardContentImpl = React3.forwardRef((props, forwardedRef) => {
|
|
|
220
217
|
onFocusOutside: composeEventHandlers2(onFocusOutside, (event) => {
|
|
221
218
|
event.preventDefault();
|
|
222
219
|
}),
|
|
223
|
-
onDismiss: context.onDismiss
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
context.hasSelectionRef.current = false;
|
|
236
|
-
context.isPointerDownOnContentRef.current = true;
|
|
237
|
-
}
|
|
238
|
-
),
|
|
239
|
-
ref: composedRefs,
|
|
240
|
-
style: {
|
|
241
|
-
...contentProps.style,
|
|
242
|
-
userSelect: containSelection ? "text" : void 0,
|
|
243
|
-
// Safari requires prefix
|
|
244
|
-
WebkitUserSelect: containSelection ? "text" : void 0,
|
|
245
|
-
// re-namespace exposed content custom properties
|
|
246
|
-
...{
|
|
247
|
-
"--huin-core-hover-card-content-transform-origin": "var(--huin-core-popper-transform-origin)",
|
|
248
|
-
"--huin-core-hover-card-content-available-width": "var(--huin-core-popper-available-width)",
|
|
249
|
-
"--huin-core-hover-card-content-available-height": "var(--huin-core-popper-available-height)",
|
|
250
|
-
"--huin-core-hover-card-trigger-width": "var(--huin-core-popper-anchor-width)",
|
|
251
|
-
"--huin-core-hover-card-trigger-height": "var(--huin-core-popper-anchor-height)"
|
|
220
|
+
onDismiss: context.onDismiss
|
|
221
|
+
},
|
|
222
|
+
/* @__PURE__ */ React4.createElement(
|
|
223
|
+
PopperPrimitive3.Content,
|
|
224
|
+
{
|
|
225
|
+
...popperScope,
|
|
226
|
+
...contentProps,
|
|
227
|
+
onPointerDown: composeEventHandlers2(
|
|
228
|
+
contentProps.onPointerDown,
|
|
229
|
+
(event) => {
|
|
230
|
+
if (event.currentTarget.contains(event.target)) {
|
|
231
|
+
setContainSelection(true);
|
|
252
232
|
}
|
|
233
|
+
context.hasSelectionRef.current = false;
|
|
234
|
+
context.isPointerDownOnContentRef.current = true;
|
|
235
|
+
}
|
|
236
|
+
),
|
|
237
|
+
ref: composedRefs,
|
|
238
|
+
style: {
|
|
239
|
+
...contentProps.style,
|
|
240
|
+
userSelect: containSelection ? "text" : void 0,
|
|
241
|
+
// Safari requires prefix
|
|
242
|
+
WebkitUserSelect: containSelection ? "text" : void 0,
|
|
243
|
+
// re-namespace exposed content custom properties
|
|
244
|
+
...{
|
|
245
|
+
"--huin-core-hover-card-content-transform-origin": "var(--huin-core-popper-transform-origin)",
|
|
246
|
+
"--huin-core-hover-card-content-available-width": "var(--huin-core-popper-available-width)",
|
|
247
|
+
"--huin-core-hover-card-content-available-height": "var(--huin-core-popper-available-height)",
|
|
248
|
+
"--huin-core-hover-card-trigger-width": "var(--huin-core-popper-anchor-width)",
|
|
249
|
+
"--huin-core-hover-card-trigger-height": "var(--huin-core-popper-anchor-height)"
|
|
253
250
|
}
|
|
254
251
|
}
|
|
255
|
-
|
|
256
|
-
|
|
252
|
+
}
|
|
253
|
+
)
|
|
257
254
|
);
|
|
258
255
|
});
|
|
259
256
|
function getTabbableNodes(container) {
|
|
@@ -269,13 +266,12 @@ function getTabbableNodes(container) {
|
|
|
269
266
|
|
|
270
267
|
// packages/react/hover-card/src/HoverCardArrow.tsx
|
|
271
268
|
import * as PopperPrimitive4 from "@huin-core/react-popper";
|
|
272
|
-
import
|
|
273
|
-
import { jsx as jsx5 } from "react/jsx-runtime";
|
|
269
|
+
import React5 from "react";
|
|
274
270
|
var ARROW_NAME = "HoverCardArrow";
|
|
275
|
-
var HoverCardArrow =
|
|
271
|
+
var HoverCardArrow = React5.forwardRef((props, forwardedRef) => {
|
|
276
272
|
const { __scopeHoverCard, ...arrowProps } = props;
|
|
277
273
|
const popperScope = usePopperScope(__scopeHoverCard);
|
|
278
|
-
return /* @__PURE__ */
|
|
274
|
+
return /* @__PURE__ */ React5.createElement(
|
|
279
275
|
PopperPrimitive4.Arrow,
|
|
280
276
|
{
|
|
281
277
|
...popperScope,
|
package/dist/index.mjs.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/HoverCard.tsx", "../src/HoverCardTrigger.tsx", "../src/HoverCardPortal.tsx", "../src/HoverCardContent.tsx", "../src/HoverCardArrow.tsx"],
|
|
4
|
-
"sourcesContent": ["import * as React from \"react\";\nimport { createContextScope } from \"@huin-core/react-context\";\nimport { useControllableState } from \"@huin-core/react-use-controllable-state\";\nimport * as PopperPrimitive from \"@huin-core/react-popper\";\nimport { createPopperScope } from \"@huin-core/react-popper\";\nimport type { Scope } from \"@huin-core/react-context\";\n\n/* -------------------------------------------------------------------------------------------------\n * HoverCard\n * -----------------------------------------------------------------------------------------------*/\n\nconst HOVERCARD_NAME = \"HoverCard\";\n\nexport type ScopedProps<P> = P & { __scopeHoverCard?: Scope };\nexport const [createHoverCardContext, createHoverCardScope] =\n createContextScope(HOVERCARD_NAME, [createPopperScope]);\nexport const 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\nexport const [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> = (\n props: ScopedProps<HoverCardProps>\n) => {\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(\n () => setOpen(false),\n closeDelay\n );\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\nexport function excludeTouch<E>(eventHandler: () => void) {\n return (event: React.PointerEvent<E>) =>\n event.pointerType === \"touch\" ? undefined : eventHandler();\n}\n\nconst Root = HoverCard;\n\nexport { HoverCard, Root };\nexport type { HoverCardProps };\n", "import React from \"react\";\nimport {\n excludeTouch,\n ScopedProps,\n useHoverCardContext,\n usePopperScope,\n} from \"./HoverCard\";\nimport { Primitive } from \"@huin-core/react-primitive\";\nimport * as PopperPrimitive from \"@huin-core/react-popper\";\nimport { composeEventHandlers } from \"@huin-core/primitive\";\n\nconst TRIGGER_NAME = \"HoverCardTrigger\";\n\ntype HoverCardTriggerElement = React.ElementRef<typeof Primitive.a>;\ntype PrimitiveLinkProps = React.ComponentPropsWithoutRef<typeof Primitive.a>;\ninterface HoverCardTriggerProps extends PrimitiveLinkProps {}\n\nconst HoverCardTrigger = React.forwardRef<\n HoverCardTriggerElement,\n 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(\n props.onPointerEnter,\n excludeTouch(context.onOpen)\n )}\n onPointerLeave={composeEventHandlers(\n props.onPointerLeave,\n excludeTouch(context.onClose)\n )}\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) =>\n event.preventDefault()\n )}\n />\n </PopperPrimitive.Anchor>\n );\n});\n\nHoverCardTrigger.displayName = TRIGGER_NAME;\n\nexport { HoverCardTrigger };\nexport type { HoverCardTriggerProps };\n", "import { Presence } from \"@huin-core/react-presence\";\nimport {\n createHoverCardContext,\n ScopedProps,\n useHoverCardContext,\n} from \"./HoverCard\";\nimport { Portal as PortalPrimitive } from \"@huin-core/react-portal\";\n\nconst PORTAL_NAME = \"HoverCardPortal\";\n\ntype PortalContextValue = { forceMount?: true };\nexport const [PortalProvider, usePortalContext] =\n createHoverCardContext<PortalContextValue>(PORTAL_NAME, {\n forceMount: undefined,\n });\n\ntype PortalProps = React.ComponentPropsWithoutRef<typeof PortalPrimitive>;\ninterface HoverCardPortalProps {\n children?: React.ReactNode;\n /**\n * Specify a container element to portal the content into.\n */\n container?: PortalProps[\"container\"];\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\nexport { HoverCardPortal };\nexport type { HoverCardPortalProps };\n", "import React from \"react\";\nimport {\n excludeTouch,\n ScopedProps,\n useHoverCardContext,\n usePopperScope,\n} from \"./HoverCard\";\nimport { Presence } from \"@huin-core/react-presence\";\nimport { composeEventHandlers } from \"@huin-core/primitive\";\nimport * as PopperPrimitive from \"@huin-core/react-popper\";\nimport { DismissableLayer } from \"@huin-core/react-dismissable-layer\";\nimport { useComposedRefs } from \"@huin-core/react-compose-refs\";\nimport { usePortalContext } from \"./HoverCardPortal\";\nlet originalBodyUserSelect: string;\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<\n HoverCardContentElement,\n HoverCardContentProps\n>((props: ScopedProps<HoverCardContentProps>, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeHoverCard);\n const {\n forceMount = portalContext.forceMount,\n align = \"center\",\n ...contentProps\n } = 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(\n props.onPointerEnter,\n excludeTouch(context.onOpen)\n )}\n onPointerLeave={composeEventHandlers(\n props.onPointerLeave,\n excludeTouch(context.onClose)\n )}\n ref={forwardedRef}\n />\n </Presence>\n );\n});\n\nHoverCardContent.displayName = CONTENT_NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\ntype HoverCardContentImplElement = React.ElementRef<\n typeof PopperPrimitive.Content\n>;\ntype DismissableLayerProps = React.ComponentPropsWithoutRef<\n typeof DismissableLayer\n>;\ntype PopperContentProps = React.ComponentPropsWithoutRef<\n typeof PopperPrimitive.Content\n>;\ninterface HoverCardContentImplProps\n extends Omit<PopperContentProps, \"onPlaced\"> {\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 =\n 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(\n contentProps.onPointerDown,\n (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 )}\n ref={composedRefs}\n style={{\n ...contentProps.style,\n userSelect: containSelection ? \"text\" : undefined,\n // Safari requires prefix\n WebkitUserSelect: containSelection ? \"text\" : undefined,\n // re-namespace exposed content custom properties\n ...{\n \"--huin-core-hover-card-content-transform-origin\":\n \"var(--huin-core-popper-transform-origin)\",\n \"--huin-core-hover-card-content-available-width\":\n \"var(--huin-core-popper-available-width)\",\n \"--huin-core-hover-card-content-available-height\":\n \"var(--huin-core-popper-available-height)\",\n \"--huin-core-hover-card-trigger-width\":\n \"var(--huin-core-popper-anchor-width)\",\n \"--huin-core-hover-card-trigger-height\":\n \"var(--huin-core-popper-anchor-height)\",\n },\n }}\n />\n </DismissableLayer>\n );\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\n ? NodeFilter.FILTER_ACCEPT\n : NodeFilter.FILTER_SKIP;\n },\n });\n while (walker.nextNode()) nodes.push(walker.currentNode as HTMLElement);\n return nodes;\n}\n\nexport { HoverCardContent };\nexport type { HoverCardContentProps };\n", "import * as PopperPrimitive from \"@huin-core/react-popper\";\nimport React from \"react\";\nimport { ScopedProps, usePopperScope } from \"./HoverCard\";\n\nconst ARROW_NAME = \"HoverCardArrow\";\n\ntype HoverCardArrowElement = React.ElementRef<typeof PopperPrimitive.Arrow>;\ntype PopperArrowProps = React.ComponentPropsWithoutRef<\n typeof PopperPrimitive.Arrow\n>;\ninterface HoverCardArrowProps extends PopperArrowProps {}\n\nconst HoverCardArrow = React.forwardRef<\n HoverCardArrowElement,\n HoverCardArrowProps\n>((props: ScopedProps<HoverCardArrowProps>, forwardedRef) => {\n const { __scopeHoverCard, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopeHoverCard);\n return (\n <PopperPrimitive.Arrow\n {...popperScope}\n {...arrowProps}\n ref={forwardedRef}\n />\n );\n});\n\nHoverCardArrow.displayName = ARROW_NAME;\n\nexport { HoverCardArrow };\nexport type { HoverCardArrowProps };\n"],
|
|
5
|
-
"mappings": ";;;AAAA,YAAY,WAAW;AACvB,SAAS,0BAA0B;AACnC,SAAS,4BAA4B;AACrC,YAAY,qBAAqB;AACjC,SAAS,yBAAyB;
|
|
6
|
-
"names": ["Root", "React", "PopperPrimitive", "
|
|
4
|
+
"sourcesContent": ["import * as React from \"react\";\nimport { createContextScope } from \"@huin-core/react-context\";\nimport { useControllableState } from \"@huin-core/react-use-controllable-state\";\nimport * as PopperPrimitive from \"@huin-core/react-popper\";\nimport { createPopperScope } from \"@huin-core/react-popper\";\nimport type { Scope } from \"@huin-core/react-context\";\n\n/* -------------------------------------------------------------------------------------------------\n * HoverCard\n * -----------------------------------------------------------------------------------------------*/\n\nconst HOVERCARD_NAME = \"HoverCard\";\n\nexport type ScopedProps<P> = P & { __scopeHoverCard?: Scope };\nexport const [createHoverCardContext, createHoverCardScope] =\n createContextScope(HOVERCARD_NAME, [createPopperScope]);\nexport const 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\nexport const [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> = (\n props: ScopedProps<HoverCardProps>\n) => {\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(\n () => setOpen(false),\n closeDelay\n );\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\nexport function excludeTouch<E>(eventHandler: () => void) {\n return (event: React.PointerEvent<E>) =>\n event.pointerType === \"touch\" ? undefined : eventHandler();\n}\n\nconst Root = HoverCard;\n\nexport { HoverCard, Root };\nexport type { HoverCardProps };\n", "import React from \"react\";\nimport {\n excludeTouch,\n ScopedProps,\n useHoverCardContext,\n usePopperScope,\n} from \"./HoverCard\";\nimport { Primitive } from \"@huin-core/react-primitive\";\nimport * as PopperPrimitive from \"@huin-core/react-popper\";\nimport { composeEventHandlers } from \"@huin-core/primitive\";\n\nconst TRIGGER_NAME = \"HoverCardTrigger\";\n\ntype HoverCardTriggerElement = React.ElementRef<typeof Primitive.a>;\ntype PrimitiveLinkProps = React.ComponentPropsWithoutRef<typeof Primitive.a>;\ninterface HoverCardTriggerProps extends PrimitiveLinkProps {}\n\nconst HoverCardTrigger = React.forwardRef<\n HoverCardTriggerElement,\n 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(\n props.onPointerEnter,\n excludeTouch(context.onOpen)\n )}\n onPointerLeave={composeEventHandlers(\n props.onPointerLeave,\n excludeTouch(context.onClose)\n )}\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) =>\n event.preventDefault()\n )}\n />\n </PopperPrimitive.Anchor>\n );\n});\n\nHoverCardTrigger.displayName = TRIGGER_NAME;\n\nexport { HoverCardTrigger };\nexport type { HoverCardTriggerProps };\n", "import { Presence } from \"@huin-core/react-presence\";\nimport {\n createHoverCardContext,\n ScopedProps,\n useHoverCardContext,\n} from \"./HoverCard\";\nimport { Portal as PortalPrimitive } from \"@huin-core/react-portal\";\nimport React from \"react\";\n\nconst PORTAL_NAME = \"HoverCardPortal\";\n\ntype PortalContextValue = { forceMount?: true };\nexport const [PortalProvider, usePortalContext] =\n createHoverCardContext<PortalContextValue>(PORTAL_NAME, {\n forceMount: undefined,\n });\n\ntype PortalProps = React.ComponentPropsWithoutRef<typeof PortalPrimitive>;\ninterface HoverCardPortalProps {\n children?: React.ReactNode;\n /**\n * Specify a container element to portal the content into.\n */\n container?: PortalProps[\"container\"];\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\nexport { HoverCardPortal };\nexport type { HoverCardPortalProps };\n", "import React from \"react\";\nimport {\n excludeTouch,\n ScopedProps,\n useHoverCardContext,\n usePopperScope,\n} from \"./HoverCard\";\nimport { Presence } from \"@huin-core/react-presence\";\nimport { composeEventHandlers } from \"@huin-core/primitive\";\nimport * as PopperPrimitive from \"@huin-core/react-popper\";\nimport { DismissableLayer } from \"@huin-core/react-dismissable-layer\";\nimport { useComposedRefs } from \"@huin-core/react-compose-refs\";\nimport { usePortalContext } from \"./HoverCardPortal\";\nlet originalBodyUserSelect: string;\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<\n HoverCardContentElement,\n HoverCardContentProps\n>((props: ScopedProps<HoverCardContentProps>, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeHoverCard);\n const {\n forceMount = portalContext.forceMount,\n align = \"center\",\n ...contentProps\n } = 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(\n props.onPointerEnter,\n excludeTouch(context.onOpen)\n )}\n onPointerLeave={composeEventHandlers(\n props.onPointerLeave,\n excludeTouch(context.onClose)\n )}\n ref={forwardedRef}\n />\n </Presence>\n );\n});\n\nHoverCardContent.displayName = CONTENT_NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\ntype HoverCardContentImplElement = React.ElementRef<\n typeof PopperPrimitive.Content\n>;\ntype DismissableLayerProps = React.ComponentPropsWithoutRef<\n typeof DismissableLayer\n>;\ntype PopperContentProps = React.ComponentPropsWithoutRef<\n typeof PopperPrimitive.Content\n>;\ninterface HoverCardContentImplProps\n extends Omit<PopperContentProps, \"onPlaced\"> {\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 =\n 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(\n contentProps.onPointerDown,\n (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 )}\n ref={composedRefs}\n style={{\n ...contentProps.style,\n userSelect: containSelection ? \"text\" : undefined,\n // Safari requires prefix\n WebkitUserSelect: containSelection ? \"text\" : undefined,\n // re-namespace exposed content custom properties\n ...{\n \"--huin-core-hover-card-content-transform-origin\":\n \"var(--huin-core-popper-transform-origin)\",\n \"--huin-core-hover-card-content-available-width\":\n \"var(--huin-core-popper-available-width)\",\n \"--huin-core-hover-card-content-available-height\":\n \"var(--huin-core-popper-available-height)\",\n \"--huin-core-hover-card-trigger-width\":\n \"var(--huin-core-popper-anchor-width)\",\n \"--huin-core-hover-card-trigger-height\":\n \"var(--huin-core-popper-anchor-height)\",\n },\n }}\n />\n </DismissableLayer>\n );\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\n ? NodeFilter.FILTER_ACCEPT\n : NodeFilter.FILTER_SKIP;\n },\n });\n while (walker.nextNode()) nodes.push(walker.currentNode as HTMLElement);\n return nodes;\n}\n\nexport { HoverCardContent };\nexport type { HoverCardContentProps };\n", "import * as PopperPrimitive from \"@huin-core/react-popper\";\nimport React from \"react\";\nimport { ScopedProps, usePopperScope } from \"./HoverCard\";\n\nconst ARROW_NAME = \"HoverCardArrow\";\n\ntype HoverCardArrowElement = React.ElementRef<typeof PopperPrimitive.Arrow>;\ntype PopperArrowProps = React.ComponentPropsWithoutRef<\n typeof PopperPrimitive.Arrow\n>;\ninterface HoverCardArrowProps extends PopperArrowProps {}\n\nconst HoverCardArrow = React.forwardRef<\n HoverCardArrowElement,\n HoverCardArrowProps\n>((props: ScopedProps<HoverCardArrowProps>, forwardedRef) => {\n const { __scopeHoverCard, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopeHoverCard);\n return (\n <PopperPrimitive.Arrow\n {...popperScope}\n {...arrowProps}\n ref={forwardedRef}\n />\n );\n});\n\nHoverCardArrow.displayName = ARROW_NAME;\n\nexport { HoverCardArrow };\nexport type { HoverCardArrowProps };\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["Root", "React", "PopperPrimitive", "React", "React", "React", "Presence", "composeEventHandlers", "PopperPrimitive", "React", "Presence", "composeEventHandlers", "PopperPrimitive", "React", "React"]
|
|
7
7
|
}
|