@tamagui/popover 2.7.7 → 3.0.0-beta.1093.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/dist/cjs/Popover.cjs +522 -665
  2. package/dist/cjs/Popover.native.cjs +615 -0
  3. package/dist/cjs/Popover.native.js +549 -692
  4. package/dist/cjs/Popover.native.js.map +1 -1
  5. package/dist/cjs/index.cjs +9 -11
  6. package/dist/cjs/index.native.cjs +21 -0
  7. package/dist/cjs/index.native.js +9 -10
  8. package/dist/cjs/index.native.js.map +1 -1
  9. package/dist/cjs/useFloatingContext.cjs +213 -234
  10. package/dist/cjs/useFloatingContext.native.cjs +35 -0
  11. package/dist/cjs/useFloatingContext.native.js +19 -27
  12. package/dist/cjs/useFloatingContext.native.js.map +1 -1
  13. package/dist/esm/Popover.mjs +487 -618
  14. package/dist/esm/Popover.mjs.map +1 -1
  15. package/dist/esm/Popover.native.js +513 -645
  16. package/dist/esm/Popover.native.js.map +1 -1
  17. package/dist/esm/index.js +3 -3
  18. package/dist/esm/index.mjs +3 -3
  19. package/dist/esm/index.native.js +3 -3
  20. package/dist/esm/useFloatingContext.mjs +198 -208
  21. package/dist/esm/useFloatingContext.mjs.map +1 -1
  22. package/dist/esm/useFloatingContext.native.js +4 -2
  23. package/dist/esm/useFloatingContext.native.js.map +1 -1
  24. package/dist/jsx/Popover.mjs +487 -618
  25. package/dist/jsx/Popover.mjs.map +1 -1
  26. package/dist/jsx/Popover.native.cjs +615 -0
  27. package/dist/jsx/Popover.native.js +549 -692
  28. package/dist/jsx/Popover.native.js.map +1 -1
  29. package/dist/jsx/index.js +3 -3
  30. package/dist/jsx/index.mjs +3 -3
  31. package/dist/jsx/index.native.cjs +21 -0
  32. package/dist/jsx/index.native.js +9 -10
  33. package/dist/jsx/index.native.js.map +1 -1
  34. package/dist/jsx/useFloatingContext.mjs +198 -208
  35. package/dist/jsx/useFloatingContext.mjs.map +1 -1
  36. package/dist/jsx/useFloatingContext.native.cjs +35 -0
  37. package/dist/jsx/useFloatingContext.native.js +19 -27
  38. package/dist/jsx/useFloatingContext.native.js.map +1 -1
  39. package/package.json +24 -23
  40. package/src/Popover.tsx +157 -154
  41. package/src/useFloatingContext.tsx +15 -7
  42. package/types/Popover.d.ts +40 -112
  43. package/types/Popover.d.ts.map +1 -1
  44. package/types/useFloatingContext.d.ts +5 -2
  45. package/types/useFloatingContext.d.ts.map +1 -1
  46. package/dist/esm/index.js.map +0 -1
  47. package/dist/esm/index.mjs.map +0 -1
  48. package/dist/esm/index.native.js.map +0 -1
  49. package/dist/jsx/index.js.map +0 -1
  50. package/dist/jsx/index.mjs.map +0 -1
@@ -7,51 +7,44 @@ var __getOwnPropNames = Object.getOwnPropertyNames;
7
7
  var __getProtoOf = Object.getPrototypeOf;
8
8
  var __hasOwnProp = Object.prototype.hasOwnProperty;
9
9
  var __export = (target, all) => {
10
- for (var name in all) __defProp(target, name, {
11
- get: all[name],
12
- enumerable: true
13
- });
10
+ for (var name in all) __defProp(target, name, {
11
+ get: all[name],
12
+ enumerable: true
13
+ });
14
14
  };
15
15
  var __copyProps = (to, from, except, desc) => {
16
- if (from && typeof from === "object" || typeof from === "function") {
17
- for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
18
- get: () => from[key],
19
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
20
- });
21
- }
22
- return to;
16
+ if (from && typeof from === "object" || typeof from === "function") {
17
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
18
+ get: () => from[key],
19
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
20
+ });
21
+ }
22
+ return to;
23
23
  };
24
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
25
- // If the importer is in node compatibility mode or this is not an ESM
26
- // file that has been converted to a CommonJS file using a Babel-
27
- // compatible transform (i.e. "__esModule" has not been set), then set
28
- // "default" to the CommonJS "module.exports" for node compatibility.
29
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
30
- value: mod,
31
- enumerable: true
24
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
25
+ value: mod,
26
+ enumerable: true
32
27
  }) : target, mod));
33
- var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
34
- value: true
35
- }), mod);
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
36
29
  var Popover_exports = {};
37
30
  __export(Popover_exports, {
38
- Popover: () => Popover,
39
- PopoverAnchor: () => PopoverAnchor,
40
- PopoverArrow: () => PopoverArrow,
41
- PopoverClose: () => PopoverClose,
42
- PopoverContent: () => PopoverContent,
43
- PopoverContext: () => PopoverContext,
44
- PopoverContextProvider: () => PopoverContextProvider,
45
- PopoverTrigger: () => PopoverTrigger,
46
- PopoverTriggerContext: () => PopoverTriggerContext,
47
- PopoverZIndexContext: () => PopoverZIndexContext,
48
- closeLastOpenedPopover: () => closeLastOpenedPopover,
49
- closeOpenPopovers: () => closeOpenPopovers,
50
- hasOpenPopovers: () => hasOpenPopovers,
51
- usePopoverContext: () => usePopoverContext,
52
- usePopoverOpen: () => usePopoverOpen,
53
- usePopoverTriggerContext: () => usePopoverTriggerContext,
54
- usePopoverTriggerSetup: () => usePopoverTriggerSetup
31
+ Popover: () => Popover,
32
+ PopoverAnchor: () => PopoverAnchor,
33
+ PopoverArrow: () => PopoverArrow,
34
+ PopoverClose: () => PopoverClose,
35
+ PopoverContent: () => PopoverContent,
36
+ PopoverContext: () => PopoverContext,
37
+ PopoverContextProvider: () => PopoverContextProvider,
38
+ PopoverTrigger: () => PopoverTrigger,
39
+ PopoverTriggerContext: () => PopoverTriggerContext,
40
+ PopoverZIndexContext: () => PopoverZIndexContext,
41
+ closeLastOpenedPopover: () => closeLastOpenedPopover,
42
+ closeOpenPopovers: () => closeOpenPopovers,
43
+ hasOpenPopovers: () => hasOpenPopovers,
44
+ usePopoverContext: () => usePopoverContext,
45
+ usePopoverOpen: () => usePopoverOpen,
46
+ usePopoverTriggerContext: () => usePopoverTriggerContext,
47
+ usePopoverTriggerSetup: () => usePopoverTriggerSetup
55
48
  });
56
49
  module.exports = __toCommonJS(Popover_exports);
57
50
  var import_jsx_runtime = require("react/jsx-runtime");
@@ -70,691 +63,555 @@ var import_popper = require("@tamagui/popper");
70
63
  var import_portal = require("@tamagui/portal");
71
64
  require("@tamagui/remove-scroll");
72
65
  var import_scroll_view = require("@tamagui/scroll-view");
73
- var import_controller = require("@tamagui/sheet/controller");
74
66
  var import_stacks = require("@tamagui/stacks");
75
67
  var import_use_controllable_state = require("@tamagui/use-controllable-state");
76
68
  var React = __toESM(require("react"), 1);
77
69
  var import_useFloatingContext = require("./useFloatingContext.native.js");
78
70
  var needsRepropagation = (0, import_portal.needsPortalRepropagation)();
79
- var openPopovers = /* @__PURE__ */new Set();
80
- var hasOpenPopovers = function () {
81
- return openPopovers.size > 0;
71
+ var openPopovers = /* @__PURE__ */ new Set();
72
+ var hasOpenPopovers = function() {
73
+ return openPopovers.size > 0;
82
74
  };
83
- var closeOpenPopovers = function () {
84
- if (openPopovers.size === 0) return false;
85
- openPopovers.forEach(function (setOpen) {
86
- return setOpen(false);
87
- });
88
- return true;
75
+ var closeOpenPopovers = function() {
76
+ if (openPopovers.size === 0) return false;
77
+ openPopovers.forEach(function(setOpen) {
78
+ return setOpen(false);
79
+ });
80
+ return true;
89
81
  };
90
- var closeLastOpenedPopover = function () {
91
- if (openPopovers.size === 0) return false;
92
- var last = Array.from(openPopovers).pop();
93
- if (last) {
94
- last(false);
95
- return true;
96
- }
97
- return false;
82
+ var closeLastOpenedPopover = function() {
83
+ if (openPopovers.size === 0) return false;
84
+ var last = Array.from(openPopovers).pop();
85
+ if (last) {
86
+ last(false);
87
+ return true;
88
+ }
89
+ return false;
98
90
  };
99
- var PopoverContext = (0, import_core.createStyledContext)(
100
- // since we always provide this we can avoid setting here
101
- {}, "Popover__");
102
- var PopoverZIndexContext = /* @__PURE__ */React.createContext(void 0);
103
- var PopoverAdaptHiddenContext = /* @__PURE__ */React.createContext(true);
91
+ var PopoverContext = (0, import_core.createStyledContext)({}, "Popover__");
92
+ var PopoverZIndexContext = /* @__PURE__ */ React.createContext(void 0);
104
93
  var PopoverTriggerContext = (0, import_core.createStyledContext)({}, "PopoverTrigger__");
105
94
  var usePopoverContext = PopoverContext.useStyledContext;
106
95
  var usePopoverTriggerContext = PopoverTriggerContext.useStyledContext;
107
96
  function usePopoverOpen(scope) {
108
- return usePopoverContext(scope).open;
97
+ return usePopoverContext(scope).open;
109
98
  }
110
99
  function usePopoverTriggerSetup(open) {
111
- var triggerStateSettersRef = React.useRef(/* @__PURE__ */new Map());
112
- var activeTriggerIdRef = React.useRef(null);
113
- var setActiveTrigger = (0, import_core.useEvent)(function (id) {
114
- var prevId = activeTriggerIdRef.current;
115
- if (prevId === id) return;
116
- if (prevId) {
117
- var _triggerStateSettersRef_current_get;
118
- (_triggerStateSettersRef_current_get = triggerStateSettersRef.current.get(prevId)) === null || _triggerStateSettersRef_current_get === void 0 || _triggerStateSettersRef_current_get(false);
119
- }
120
- activeTriggerIdRef.current = id;
121
- if (id && open) {
122
- var _triggerStateSettersRef_current_get1;
123
- (_triggerStateSettersRef_current_get1 = triggerStateSettersRef.current.get(id)) === null || _triggerStateSettersRef_current_get1 === void 0 || _triggerStateSettersRef_current_get1(true);
124
- }
125
- });
126
- var registerTrigger = (0, import_core.useEvent)(function (id, setOpenState) {
127
- triggerStateSettersRef.current.set(id, setOpenState);
128
- setOpenState(activeTriggerIdRef.current === id && open);
129
- });
130
- var unregisterTrigger = (0, import_core.useEvent)(function (id) {
131
- triggerStateSettersRef.current.delete(id);
132
- if (activeTriggerIdRef.current === id) activeTriggerIdRef.current = null;
133
- });
134
- React.useEffect(function () {
135
- if (!open) {
136
- setActiveTrigger(null);
137
- return;
138
- }
139
- var activeId = activeTriggerIdRef.current;
140
- if (activeId) {
141
- var _triggerStateSettersRef_current_get;
142
- (_triggerStateSettersRef_current_get = triggerStateSettersRef.current.get(activeId)) === null || _triggerStateSettersRef_current_get === void 0 || _triggerStateSettersRef_current_get(true);
143
- }
144
- }, [open, setActiveTrigger]);
145
- return {
146
- setActiveTrigger,
147
- registerTrigger,
148
- unregisterTrigger
149
- };
100
+ var triggerStateSettersRef = React.useRef(/* @__PURE__ */ new Map());
101
+ var activeTriggerIdRef = React.useRef(null);
102
+ var setActiveTrigger = (0, import_core.useEvent)(function(id) {
103
+ var prevId = activeTriggerIdRef.current;
104
+ if (prevId === id) return;
105
+ if (prevId) {
106
+ var _triggerStateSettersRef_current_get;
107
+ (_triggerStateSettersRef_current_get = triggerStateSettersRef.current.get(prevId)) === null || _triggerStateSettersRef_current_get === void 0 || _triggerStateSettersRef_current_get(false);
108
+ }
109
+ activeTriggerIdRef.current = id;
110
+ if (id && open) {
111
+ var _triggerStateSettersRef_current_get1;
112
+ (_triggerStateSettersRef_current_get1 = triggerStateSettersRef.current.get(id)) === null || _triggerStateSettersRef_current_get1 === void 0 || _triggerStateSettersRef_current_get1(true);
113
+ }
114
+ });
115
+ var registerTrigger = (0, import_core.useEvent)(function(id, setOpenState) {
116
+ triggerStateSettersRef.current.set(id, setOpenState);
117
+ setOpenState(activeTriggerIdRef.current === id && open);
118
+ });
119
+ var unregisterTrigger = (0, import_core.useEvent)(function(id) {
120
+ triggerStateSettersRef.current.delete(id);
121
+ if (activeTriggerIdRef.current === id) activeTriggerIdRef.current = null;
122
+ });
123
+ React.useEffect(function() {
124
+ if (!open) {
125
+ setActiveTrigger(null);
126
+ return;
127
+ }
128
+ var activeId = activeTriggerIdRef.current;
129
+ if (activeId) {
130
+ var _triggerStateSettersRef_current_get;
131
+ (_triggerStateSettersRef_current_get = triggerStateSettersRef.current.get(activeId)) === null || _triggerStateSettersRef_current_get === void 0 || _triggerStateSettersRef_current_get(true);
132
+ }
133
+ }, [open, setActiveTrigger]);
134
+ return {
135
+ setActiveTrigger,
136
+ registerTrigger,
137
+ unregisterTrigger
138
+ };
150
139
  }
151
- var PopoverContextProvider = /* @__PURE__ */React.memo(function (param) {
152
- var {
153
- scope,
154
- children,
155
- open,
156
- onOpenChange,
157
- onOpenToggle,
158
- triggerRef,
159
- id = "",
160
- contentId,
161
- hasCustomAnchor = false,
162
- onCustomAnchorAdd = voidFn,
163
- onCustomAnchorRemove = voidFn,
164
- anchorTo,
165
- adaptScope,
166
- breakpointActive,
167
- keepChildrenMounted,
168
- disableDismissable,
169
- hoverable
170
- } = param;
171
- var [branches] = React.useState(function () {
172
- return /* @__PURE__ */new Set();
173
- });
174
- var {
175
- setActiveTrigger,
176
- registerTrigger,
177
- unregisterTrigger
178
- } = usePopoverTriggerSetup(open);
179
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(PopoverContext.Provider, {
180
- scope,
181
- popoverScope: scope,
182
- adaptScope,
183
- id,
184
- contentId,
185
- triggerRef,
186
- open,
187
- onOpenChange,
188
- onOpenToggle,
189
- hasCustomAnchor,
190
- onCustomAnchorAdd,
191
- onCustomAnchorRemove,
192
- anchorTo,
193
- branches,
194
- breakpointActive,
195
- keepChildrenMounted,
196
- disableDismissable,
197
- hoverable,
198
- children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(PopoverTriggerContext.Provider, {
199
- scope,
200
- triggerRef,
201
- hasCustomAnchor,
202
- anchorTo,
203
- branches,
204
- onOpenToggle,
205
- setActiveTrigger,
206
- registerTrigger,
207
- unregisterTrigger,
208
- children
209
- })
210
- });
140
+ var PopoverContextProvider = /* @__PURE__ */ React.memo(function(param) {
141
+ var { scope, children, open, onOpenChange, onOpenToggle, triggerRef, id = "", contentId, hasCustomAnchor = false, onCustomAnchorAdd = voidFn, onCustomAnchorRemove = voidFn, anchorTo, adaptScope, breakpointActive, keepChildrenMounted, disableDismissable, hoverable, closeReasonRef } = param;
142
+ var [branches] = React.useState(function() {
143
+ return /* @__PURE__ */ new Set();
144
+ });
145
+ var { setActiveTrigger, registerTrigger, unregisterTrigger } = usePopoverTriggerSetup(open);
146
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PopoverContext.Provider, {
147
+ scope,
148
+ popoverScope: scope,
149
+ adaptScope,
150
+ id,
151
+ contentId,
152
+ triggerRef,
153
+ open,
154
+ onOpenChange,
155
+ onOpenToggle,
156
+ hasCustomAnchor,
157
+ onCustomAnchorAdd,
158
+ onCustomAnchorRemove,
159
+ anchorTo,
160
+ branches,
161
+ breakpointActive,
162
+ keepChildrenMounted,
163
+ disableDismissable,
164
+ hoverable,
165
+ closeReasonRef,
166
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PopoverTriggerContext.Provider, {
167
+ scope,
168
+ triggerRef,
169
+ hasCustomAnchor,
170
+ anchorTo,
171
+ branches,
172
+ onOpenToggle,
173
+ setActiveTrigger,
174
+ registerTrigger,
175
+ unregisterTrigger,
176
+ children
177
+ })
178
+ });
211
179
  });
212
- var voidFn = function () {};
213
- var PopoverAnchor = /* @__PURE__ */React.memo(/* @__PURE__ */React.forwardRef(function PopoverAnchor2(props, forwardedRef) {
214
- var {
215
- scope,
216
- ...rest
217
- } = props;
218
- var {
219
- onCustomAnchorAdd,
220
- onCustomAnchorRemove
221
- } = usePopoverContext(scope) || {};
222
- React.useEffect(function () {
223
- onCustomAnchorAdd();
224
- return function () {
225
- return onCustomAnchorRemove();
226
- };
227
- }, [onCustomAnchorAdd, onCustomAnchorRemove]);
228
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_popper.PopperAnchor, {
229
- scope,
230
- ...rest,
231
- ref: forwardedRef
232
- });
180
+ var voidFn = function() {};
181
+ var PopoverAnchor = /* @__PURE__ */ React.memo((0, import_core.createRefComponent)(function PopoverAnchor2(props, forwardedRef) {
182
+ var { scope, ...rest } = props;
183
+ var { onCustomAnchorAdd, onCustomAnchorRemove } = usePopoverContext(scope) || {};
184
+ React.useEffect(function() {
185
+ onCustomAnchorAdd();
186
+ return function() {
187
+ return onCustomAnchorRemove();
188
+ };
189
+ }, [onCustomAnchorAdd, onCustomAnchorRemove]);
190
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_popper.PopperAnchor, {
191
+ scope,
192
+ ...rest,
193
+ ref: forwardedRef
194
+ });
233
195
  }));
234
- var PopoverTrigger = /* @__PURE__ */React.memo(/* @__PURE__ */React.forwardRef(function PopoverTrigger2(props, forwardedRef) {
235
- var {
236
- scope,
237
- disablePressTrigger,
238
- ...rest
239
- } = props;
240
- var triggerContext = usePopoverTriggerContext(scope);
241
- var triggerId = React.useId();
242
- var [open, setOpen] = React.useState(false);
243
- var anchorTo = triggerContext.anchorTo;
244
- var triggerElRef = React.useRef(null);
245
- var composedTriggerRef = (0, import_compose_refs.useComposedRefs)(forwardedRef, triggerElRef);
246
- var {
247
- registerTrigger,
248
- unregisterTrigger
249
- } = triggerContext;
250
- React.useEffect(function () {
251
- registerTrigger(triggerId, setOpen);
252
- return function () {
253
- unregisterTrigger(triggerId);
254
- };
255
- }, [registerTrigger, unregisterTrigger, triggerId]);
256
- if (!rest.children) return null;
257
- var activateSelf = function () {
258
- triggerContext.setActiveTrigger(triggerId);
259
- var el = triggerElRef.current;
260
- if (el) triggerContext.triggerRef.current = el;
261
- };
262
- var trigger = /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_core.View, {
263
- "aria-expanded": open,
264
- "data-state": getState(open),
265
- ...rest,
266
- ref: composedTriggerRef,
267
- onPress: (0, import_helpers.composeEventHandlers)(rest.onPress, function () {
268
- if (disablePressTrigger) return;
269
- triggerContext.setActiveTrigger(open ? null : triggerId);
270
- triggerContext.onOpenToggle();
271
- }),
272
- onMouseEnter: (0, import_helpers.composeEventHandlers)(rest.onMouseEnter, activateSelf),
273
- onPressIn: (0, import_helpers.composeEventHandlers)(rest.onPressIn, activateSelf),
274
- onFocus: (0, import_helpers.composeEventHandlers)(rest.onFocus, activateSelf)
275
- });
276
- var virtualRef = React.useMemo(function () {
277
- if (!anchorTo) return null;
278
- return {
279
- current: {
280
- getBoundingClientRect: function () {
281
- return import_constants.isWeb ? DOMRect.fromRect(anchorTo) : anchorTo;
282
- },
283
- ...(!import_constants.isWeb && {
284
- measure: function (c) {
285
- return c(anchorTo === null || anchorTo === void 0 ? void 0 : anchorTo.x, anchorTo === null || anchorTo === void 0 ? void 0 : anchorTo.y, anchorTo === null || anchorTo === void 0 ? void 0 : anchorTo.width, anchorTo === null || anchorTo === void 0 ? void 0 : anchorTo.height);
286
- },
287
- measureInWindow: function (c) {
288
- return c(anchorTo === null || anchorTo === void 0 ? void 0 : anchorTo.x, anchorTo === null || anchorTo === void 0 ? void 0 : anchorTo.y, anchorTo === null || anchorTo === void 0 ? void 0 : anchorTo.width, anchorTo === null || anchorTo === void 0 ? void 0 : anchorTo.height);
289
- }
290
- })
291
- }
292
- };
293
- }, [triggerContext.anchorTo, anchorTo === null || anchorTo === void 0 ? void 0 : anchorTo.x, anchorTo === null || anchorTo === void 0 ? void 0 : anchorTo.y, anchorTo === null || anchorTo === void 0 ? void 0 : anchorTo.height, anchorTo === null || anchorTo === void 0 ? void 0 : anchorTo.width]);
294
- var wrappedTrigger = import_constants.isWeb ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_dismissable.DismissableBranch, {
295
- branches: triggerContext.branches,
296
- children: trigger
297
- }) : trigger;
298
- return triggerContext.hasCustomAnchor ? wrappedTrigger : /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_popper.PopperAnchor, {
299
- ...(virtualRef && {
300
- virtualRef
301
- }),
302
- scope,
303
- asChild: true,
304
- children: wrappedTrigger
305
- });
196
+ var PopoverTrigger = /* @__PURE__ */ React.memo((0, import_core.createRefComponent)(function PopoverTrigger2(props, forwardedRef) {
197
+ var { scope, disablePressTrigger, ...rest } = props;
198
+ var triggerContext = usePopoverTriggerContext(scope);
199
+ var triggerId = React.useId();
200
+ var [open, setOpen] = React.useState(false);
201
+ var anchorTo = triggerContext.anchorTo;
202
+ var triggerElRef = React.useRef(null);
203
+ var composedTriggerRef = (0, import_compose_refs.useComposedRefs)(forwardedRef, triggerElRef);
204
+ var { registerTrigger, unregisterTrigger } = triggerContext;
205
+ React.useEffect(function() {
206
+ registerTrigger(triggerId, setOpen);
207
+ return function() {
208
+ unregisterTrigger(triggerId);
209
+ };
210
+ }, [
211
+ registerTrigger,
212
+ unregisterTrigger,
213
+ triggerId
214
+ ]);
215
+ if (!rest.children) return null;
216
+ var activateSelf = function() {
217
+ triggerContext.setActiveTrigger(triggerId);
218
+ var el = triggerElRef.current;
219
+ if (el) triggerContext.triggerRef.current = el;
220
+ };
221
+ var trigger = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_core.View, {
222
+ "aria-expanded": open,
223
+ "data-state": getState(open),
224
+ ...rest,
225
+ ref: composedTriggerRef,
226
+ onPress: (0, import_helpers.composeEventHandlers)(rest.onPress, function() {
227
+ if (disablePressTrigger) return;
228
+ triggerContext.setActiveTrigger(open ? null : triggerId);
229
+ triggerContext.onOpenToggle();
230
+ }),
231
+ onMouseEnter: (0, import_helpers.composeEventHandlers)(rest.onMouseEnter, activateSelf),
232
+ onPressIn: (0, import_helpers.composeEventHandlers)(rest.onPressIn, activateSelf),
233
+ onFocus: (0, import_helpers.composeEventHandlers)(rest.onFocus, activateSelf)
234
+ });
235
+ var virtualRef = React.useMemo(function() {
236
+ if (!anchorTo) return null;
237
+ return { current: {
238
+ getBoundingClientRect: function() {
239
+ return import_constants.isWeb ? DOMRect.fromRect(anchorTo) : anchorTo;
240
+ },
241
+ ...!import_constants.isWeb && {
242
+ measure: function(c) {
243
+ return c(anchorTo === null || anchorTo === void 0 ? void 0 : anchorTo.x, anchorTo === null || anchorTo === void 0 ? void 0 : anchorTo.y, anchorTo === null || anchorTo === void 0 ? void 0 : anchorTo.width, anchorTo === null || anchorTo === void 0 ? void 0 : anchorTo.height);
244
+ },
245
+ measureInWindow: function(c) {
246
+ return c(anchorTo === null || anchorTo === void 0 ? void 0 : anchorTo.x, anchorTo === null || anchorTo === void 0 ? void 0 : anchorTo.y, anchorTo === null || anchorTo === void 0 ? void 0 : anchorTo.width, anchorTo === null || anchorTo === void 0 ? void 0 : anchorTo.height);
247
+ }
248
+ }
249
+ } };
250
+ }, [
251
+ triggerContext.anchorTo,
252
+ anchorTo === null || anchorTo === void 0 ? void 0 : anchorTo.x,
253
+ anchorTo === null || anchorTo === void 0 ? void 0 : anchorTo.y,
254
+ anchorTo === null || anchorTo === void 0 ? void 0 : anchorTo.height,
255
+ anchorTo === null || anchorTo === void 0 ? void 0 : anchorTo.width
256
+ ]);
257
+ var wrappedTrigger = import_constants.isWeb ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_dismissable.DismissableBranch, {
258
+ branches: triggerContext.branches,
259
+ children: trigger
260
+ }) : trigger;
261
+ return triggerContext.hasCustomAnchor ? wrappedTrigger : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_popper.PopperAnchor, {
262
+ ...virtualRef && { virtualRef },
263
+ scope,
264
+ asChild: true,
265
+ children: wrappedTrigger
266
+ });
306
267
  }));
307
- var PopoverContent = import_popper.PopperContentFrame.styleable(function PopoverContent2(props, forwardedRef) {
308
- var {
309
- trapFocus,
310
- enableRemoveScroll = false,
311
- zIndex: zIndexProp,
312
- scope,
313
- ...contentImplProps
314
- } = props;
315
- var context = usePopoverContext(scope);
316
- var zIndexFromContext = React.useContext(PopoverZIndexContext);
317
- var zIndex = zIndexProp !== null && zIndexProp !== void 0 ? zIndexProp : zIndexFromContext;
318
- var open = usePopoverOpen(scope);
319
- var contentRef = React.useRef(null);
320
- var composedRefs = (0, import_compose_refs.useComposedRefs)(forwardedRef, contentRef);
321
- var isRightClickOutsideRef = React.useRef(false);
322
- var [isFullyHidden, setIsFullyHidden] = React.useState(!open);
323
- (0, import_constants.useIsomorphicLayoutEffect)(function () {
324
- if (open && isFullyHidden) setIsFullyHidden(false);
325
- }, [open, isFullyHidden]);
326
- var isAdaptFullyHidden = React.useContext(PopoverAdaptHiddenContext);
327
- if (!context.keepChildrenMounted) {
328
- if (context.breakpointActive) {
329
- if (!open && isAdaptFullyHidden) return null;
330
- } else if (isFullyHidden && !open) return null;
331
- }
332
- var _contentImplProps_pointerEvents;
333
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(PopoverPortal, {
334
- passThrough: context.breakpointActive,
335
- context,
336
- open,
337
- zIndex,
338
- children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_core.View, {
339
- passThrough: context.breakpointActive,
340
- pointerEvents: open ? (_contentImplProps_pointerEvents = contentImplProps.pointerEvents) !== null && _contentImplProps_pointerEvents !== void 0 ? _contentImplProps_pointerEvents : "auto" : "none",
341
- children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(PopoverContentImpl, {
342
- ...contentImplProps,
343
- context,
344
- open,
345
- enableRemoveScroll,
346
- ref: composedRefs,
347
- setIsFullyHidden,
348
- scope,
349
- trapFocus: trapFocus !== null && trapFocus !== void 0 ? trapFocus : open,
350
- disableOutsidePointerEvents: true,
351
- onCloseAutoFocus: props.onCloseAutoFocus === false ? void 0 : (0, import_helpers.composeEventHandlers)(props.onCloseAutoFocus, function (event) {
352
- var _context_triggerRef_current;
353
- if (event.defaultPrevented) return;
354
- event.preventDefault();
355
- if (!isRightClickOutsideRef.current) (_context_triggerRef_current = context.triggerRef.current) === null || _context_triggerRef_current === void 0 || _context_triggerRef_current.focus();
356
- }),
357
- onPointerDownOutside: (0, import_helpers.composeEventHandlers)(props.onPointerDownOutside, function (event) {
358
- var originalEvent = event.detail.originalEvent;
359
- var ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;
360
- isRightClickOutsideRef.current = originalEvent.button === 2 || ctrlLeftClick;
361
- }, {
362
- checkDefaultPrevented: false
363
- }),
364
- onFocusOutside: (0, import_helpers.composeEventHandlers)(props.onFocusOutside, function (event) {
365
- return event.preventDefault();
366
- }, {
367
- checkDefaultPrevented: false
368
- })
369
- })
370
- })
371
- });
372
- });
373
- var useParentContexts = function (scope) {
374
- var context = usePopoverContext(scope);
375
- var triggerContext = usePopoverTriggerContext(scope);
376
- return {
377
- popperContext: (0, import_popper.usePopperContext)(scope),
378
- adaptContext: (0, import_adapt.useAdaptContext)(context.adaptScope),
379
- context,
380
- triggerContext
381
- };
268
+ var PopoverContent = (0, import_core.createStyledHOC)(import_popper.PopperContentFrame, function PopoverContent2(props, forwardedRef) {
269
+ var { trapFocus, enableRemoveScroll = false, zIndex: zIndexProp, scope, forceMount, ...contentImplProps } = props;
270
+ var context = usePopoverContext(scope);
271
+ var adaptContext = (0, import_adapt.useAdaptContext)(context.adaptScope);
272
+ var zIndexFromContext = React.useContext(PopoverZIndexContext);
273
+ var zIndex = zIndexProp !== null && zIndexProp !== void 0 ? zIndexProp : zIndexFromContext;
274
+ var open = usePopoverOpen(scope);
275
+ var contentRef = React.useRef(null);
276
+ var composedRefs = (0, import_compose_refs.useComposedRefs)(forwardedRef, contentRef);
277
+ var isRightClickOutsideRef = React.useRef(false);
278
+ var [isFullyHidden, setIsFullyHidden] = React.useState(!open);
279
+ (0, import_constants.useIsomorphicLayoutEffect)(function() {
280
+ if (open && isFullyHidden) setIsFullyHidden(false);
281
+ }, [open, isFullyHidden]);
282
+ if (!forceMount && !context.keepChildrenMounted) {
283
+ if (context.breakpointActive) {
284
+ if (!open && adaptContext.targetFullyHidden) return null;
285
+ } else if (isFullyHidden && !open) return null;
286
+ }
287
+ var _contentImplProps_pointerEvents;
288
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PopoverPortal, {
289
+ passThrough: context.breakpointActive,
290
+ context,
291
+ open,
292
+ visuallyActive: open || !isFullyHidden,
293
+ zIndex,
294
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_core.View, {
295
+ passThrough: context.breakpointActive,
296
+ pointerEvents: open ? (_contentImplProps_pointerEvents = contentImplProps.pointerEvents) !== null && _contentImplProps_pointerEvents !== void 0 ? _contentImplProps_pointerEvents : "auto" : "none",
297
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PopoverContentImpl, {
298
+ ...contentImplProps,
299
+ context,
300
+ open,
301
+ forceMount,
302
+ enableRemoveScroll,
303
+ ref: composedRefs,
304
+ setIsFullyHidden,
305
+ scope,
306
+ trapFocus: trapFocus !== null && trapFocus !== void 0 ? trapFocus : open,
307
+ disableOutsidePointerEvents: true,
308
+ onCloseAutoFocus: props.onCloseAutoFocus === false ? void 0 : (0, import_helpers.composeEventHandlers)(props.onCloseAutoFocus, function(event) {
309
+ var _context_triggerRef_current;
310
+ if (event.isCanceled) return;
311
+ event.cancel();
312
+ if (!isRightClickOutsideRef.current) (_context_triggerRef_current = context.triggerRef.current) === null || _context_triggerRef_current === void 0 || _context_triggerRef_current.focus();
313
+ }),
314
+ onPointerDownOutside: (0, import_helpers.composeEventHandlers)(props.onPointerDownOutside, function(event) {
315
+ var originalEvent = event.event;
316
+ if (!originalEvent) return;
317
+ var ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;
318
+ isRightClickOutsideRef.current = originalEvent.button === 2 || ctrlLeftClick;
319
+ }, { checkDefaultPrevented: false }),
320
+ onFocusOutside: (0, import_helpers.composeEventHandlers)(props.onFocusOutside, function(event) {
321
+ if (trapFocus !== null && trapFocus !== void 0 ? trapFocus : open) event.cancel();
322
+ }, { checkDefaultPrevented: false })
323
+ })
324
+ })
325
+ });
326
+ }, { staticConfig: { inlineProps: /* @__PURE__ */ new Set([
327
+ ...import_popper.PopperContentFrame.staticConfig.inlineProps || [],
328
+ "zIndex",
329
+ "opacity",
330
+ "y"
331
+ ]) } });
332
+ var useParentContexts = function(scope) {
333
+ var context = usePopoverContext(scope);
334
+ var triggerContext = usePopoverTriggerContext(scope);
335
+ return {
336
+ popperContext: (0, import_popper.usePopperContext)(scope),
337
+ adaptContext: (0, import_adapt.useAdaptContext)(context.adaptScope),
338
+ context,
339
+ triggerContext
340
+ };
382
341
  };
383
342
  function RepropagateParentContexts(param) {
384
- var {
385
- adaptContext,
386
- children,
387
- context,
388
- triggerContext,
389
- popperContext
390
- } = param;
391
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_popper.PopperProvider, {
392
- scope: context.popoverScope,
393
- ...popperContext,
394
- children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(PopoverContext.Provider, {
395
- scope: context.popoverScope,
396
- ...context,
397
- children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(PopoverTriggerContext.Provider, {
398
- scope: context.popoverScope,
399
- ...triggerContext,
400
- children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_adapt.ProvideAdaptContext, {
401
- ...adaptContext,
402
- children
403
- })
404
- })
405
- })
406
- });
343
+ var { adaptContext, children, context, triggerContext, popperContext } = param;
344
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_popper.PopperProvider, {
345
+ scope: context.popoverScope,
346
+ ...popperContext,
347
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PopoverContext.Provider, {
348
+ scope: context.popoverScope,
349
+ ...context,
350
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PopoverTriggerContext.Provider, {
351
+ scope: context.popoverScope,
352
+ ...triggerContext,
353
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_adapt.ProvideAdaptContext, {
354
+ ...adaptContext,
355
+ children
356
+ })
357
+ })
358
+ })
359
+ });
407
360
  }
408
- var PortalAdaptSafe = function (param) {
409
- "use no memo";
410
-
411
- var {
412
- children,
413
- context
414
- } = param;
415
- if (needsRepropagation) {
416
- var parentContexts = useParentContexts(context.popoverScope);
417
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_adapt.AdaptPortalContents, {
418
- scope: context.adaptScope,
419
- children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(RepropagateParentContexts, {
420
- ...parentContexts,
421
- children
422
- })
423
- });
424
- }
425
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_adapt.AdaptPortalContents, {
426
- scope: context.adaptScope,
427
- children
428
- });
361
+ var PortalAdaptSafe = function(param) {
362
+ "use no memo";
363
+ var { children, context } = param;
364
+ if (needsRepropagation) {
365
+ var parentContexts = useParentContexts(context.popoverScope);
366
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_adapt.AdaptPortalContents, {
367
+ scope: context.adaptScope,
368
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(RepropagateParentContexts, {
369
+ ...parentContexts,
370
+ children
371
+ })
372
+ });
373
+ }
374
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_adapt.AdaptPortalContents, {
375
+ scope: context.adaptScope,
376
+ children
377
+ });
429
378
  };
430
379
  function PopoverPortal(param) {
431
- "use no memo";
432
-
433
- var {
434
- context,
435
- open,
436
- zIndex,
437
- passThrough,
438
- children,
439
- onPress
440
- } = param;
441
- var content = children;
442
- if (needsRepropagation) {
443
- var parentContexts = useParentContexts(context.popoverScope);
444
- content = /* @__PURE__ */(0, import_jsx_runtime.jsx)(RepropagateParentContexts, {
445
- ...parentContexts,
446
- children: content
447
- });
448
- }
449
- return /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_portal.Portal, {
450
- passThrough,
451
- stackZIndex: true,
452
- zIndex,
453
- children: [!!open && !context.breakpointActive && !context.hoverable && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_stacks.YStack, {
454
- fullscreen: true,
455
- onPress: (0, import_helpers.composeEventHandlers)(onPress, context.onOpenToggle)
456
- }), content]
457
- });
380
+ "use no memo";
381
+ var { context, open, visuallyActive, zIndex, passThrough, children, onPress } = param;
382
+ var content = children;
383
+ if (needsRepropagation) {
384
+ var parentContexts = useParentContexts(context.popoverScope);
385
+ content = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(RepropagateParentContexts, {
386
+ ...parentContexts,
387
+ children: content
388
+ });
389
+ }
390
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_portal.Portal, {
391
+ passThrough,
392
+ stackZIndex: true,
393
+ zIndex,
394
+ hidden: !visuallyActive,
395
+ children: [!!open && !context.breakpointActive && !context.hoverable && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_stacks.YStack, {
396
+ position: "absolute",
397
+ inset: 0,
398
+ onPress: (0, import_helpers.composeEventHandlers)(onPress, context.onOpenToggle)
399
+ }), content]
400
+ });
458
401
  }
459
- var PopoverContentImpl = /* @__PURE__ */React.forwardRef(function PopoverContentImpl2(props, forwardedRef) {
460
- var {
461
- trapFocus,
462
- scope,
463
- onOpenAutoFocus,
464
- onCloseAutoFocus,
465
- disableOutsidePointerEvents,
466
- disableFocusScope,
467
- onEscapeKeyDown,
468
- onPointerDownOutside,
469
- onFocusOutside,
470
- onInteractOutside,
471
- children,
472
- enableRemoveScroll,
473
- freezeContentsWhenHidden,
474
- setIsFullyHidden,
475
- lazyMount,
476
- forceUnmount,
477
- context,
478
- open,
479
- alwaysDisable,
480
- ...contentProps
481
- } = props;
482
- var {
483
- keepChildrenMounted,
484
- disableDismissable
485
- } = context;
486
- var handleExitComplete = React.useCallback(function () {
487
- setIsFullyHidden === null || setIsFullyHidden === void 0 || setIsFullyHidden(true);
488
- }, [setIsFullyHidden]);
489
- var contents = /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_animate_presence.ResetPresence, {
490
- disable: context.breakpointActive,
491
- children
492
- });
493
- React.useCallback(function () {
494
- context.onOpenChange(false, "press");
495
- }, [context]);
496
- if (!context.breakpointActive) {}
497
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_animate.Animate, {
498
- type: "presence",
499
- present: Boolean(open),
500
- keepChildrenMounted: Boolean(keepChildrenMounted),
501
- onExitComplete: handleExitComplete,
502
- lazyMount,
503
- passThrough: context.breakpointActive,
504
- children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_popper.PopperContent, {
505
- scope,
506
- "data-state": getState(open),
507
- id: context.contentId,
508
- ref: forwardedRef,
509
- passThrough: context.breakpointActive,
510
- ...(!contentProps.unstyled && {
511
- size: "$true",
512
- backgroundColor: "$background",
513
- alignItems: "center"
514
- }),
515
- ...contentProps,
516
- children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(PortalAdaptSafe, {
517
- context,
518
- children: contents
519
- })
520
- }, context.contentId)
521
- });
402
+ var PopoverContentImpl = (0, import_core.createRefComponent)(function PopoverContentImpl2(props, forwardedRef) {
403
+ var { trapFocus, scope, onOpenAutoFocus, onCloseAutoFocus, disableOutsidePointerEvents, disableFocusScope, onEscapeKeyDown, onPointerDownOutside, onFocusOutside, onInteractOutside, children, enableRemoveScroll, freezeContentsWhenHidden, setIsFullyHidden, lazyMount, forceUnmount, forceMount, context, open, alwaysDisable, ...contentProps } = props;
404
+ var { disableDismissable } = context;
405
+ var keepChildrenMounted = context.keepChildrenMounted || forceMount;
406
+ var handleExitComplete = React.useCallback(function() {
407
+ setIsFullyHidden === null || setIsFullyHidden === void 0 || setIsFullyHidden(true);
408
+ }, [setIsFullyHidden]);
409
+ var contents = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_animate_presence.ResetPresence, {
410
+ disable: context.breakpointActive,
411
+ children
412
+ });
413
+ React.useCallback(function(details) {
414
+ if (context.closeReasonRef) context.closeReasonRef.current = details.reason === "escape-key" ? "escape-key" : "dismiss";
415
+ context.onOpenChange(false, "press");
416
+ }, [context]);
417
+ if (!context.breakpointActive) {}
418
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_animate.Animate, {
419
+ type: "presence",
420
+ present: Boolean(open),
421
+ keepChildrenMounted: Boolean(keepChildrenMounted),
422
+ onExitComplete: handleExitComplete,
423
+ lazyMount,
424
+ passThrough: context.breakpointActive,
425
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_popper.PopperContent, {
426
+ scope,
427
+ "data-state": getState(open),
428
+ id: context.contentId,
429
+ ref: forwardedRef,
430
+ passThrough: context.breakpointActive,
431
+ ...contentProps,
432
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PortalAdaptSafe, {
433
+ context,
434
+ children: contents
435
+ })
436
+ }, context.contentId)
437
+ });
522
438
  });
523
- var PopoverClose = /* @__PURE__ */React.forwardRef(function PopoverClose2(props, forwardedRef) {
524
- var {
525
- scope,
526
- ...rest
527
- } = props;
528
- var context = usePopoverContext(scope);
529
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_stacks.YStack, {
530
- ...rest,
531
- ref: forwardedRef,
532
- componentName: "PopoverClose",
533
- onPress: (0, import_helpers.composeEventHandlers)(props.onPress, function () {
534
- var _context_onOpenChange;
535
- return context === null || context === void 0 ? void 0 : (_context_onOpenChange = context.onOpenChange) === null || _context_onOpenChange === void 0 ? void 0 : _context_onOpenChange.call(context, false, "press");
536
- })
537
- });
439
+ var PopoverClose = (0, import_core.createRefComponent)(function PopoverClose2(props, forwardedRef) {
440
+ var { scope, className, ...rest } = props;
441
+ var context = usePopoverContext(scope);
442
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_stacks.YStack, {
443
+ ...rest,
444
+ ref: forwardedRef,
445
+ className: `is_PopoverClose ${className || ""}`.trim(),
446
+ onPress: (0, import_helpers.composeEventHandlers)(props.onPress, function() {
447
+ var _context_onOpenChange;
448
+ return context === null || context === void 0 ? void 0 : (_context_onOpenChange = context.onOpenChange) === null || _context_onOpenChange === void 0 ? void 0 : _context_onOpenChange.call(context, false, "press");
449
+ })
450
+ });
538
451
  });
539
- var PopoverArrow = import_popper.PopperArrowFrame.styleable(function PopoverArrow2(props, forwardedRef) {
540
- var {
541
- scope,
542
- ...rest
543
- } = props;
544
- var context = usePopoverContext(scope);
545
- if ((0, import_adapt.useAdaptIsActive)(context.adaptScope)) return null;
546
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_popper.PopperArrow, {
547
- scope,
548
- componentName: "PopoverArrow",
549
- ...rest,
550
- ref: forwardedRef
551
- });
452
+ var PopoverArrow = (0, import_core.createStyledHOC)(import_popper.PopperArrowFrame, function PopoverArrow2(props, forwardedRef) {
453
+ var { scope, className, ...rest } = props;
454
+ var context = usePopoverContext(scope);
455
+ if ((0, import_adapt.useAdaptIsActive)(context.adaptScope)) return null;
456
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_popper.PopperArrow, {
457
+ scope,
458
+ className: `is_PopoverArrow ${className || ""}`.trim(),
459
+ ...rest,
460
+ ref: forwardedRef
461
+ });
552
462
  });
553
- var PopoverScrollView = /* @__PURE__ */React.forwardRef(function (param, ref) {
554
- var {
555
- scope,
556
- ...props
557
- } = param;
558
- var context = usePopoverContext(scope);
559
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_scroll_view.ScrollView, {
560
- ref,
561
- pointerEvents: context.breakpointActive ? "none" : void 0,
562
- scrollEnabled: !context.breakpointActive,
563
- passThrough: context.breakpointActive,
564
- ...props
565
- });
463
+ var PopoverScrollView = (0, import_core.createRefComponent)(function(param, ref) {
464
+ var { scope, ...props } = param;
465
+ var context = usePopoverContext(scope);
466
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_scroll_view.ScrollView, {
467
+ ref,
468
+ pointerEvents: context.breakpointActive ? "none" : void 0,
469
+ scrollEnabled: !context.breakpointActive,
470
+ passThrough: context.breakpointActive,
471
+ ...props
472
+ });
566
473
  });
567
474
  var DEFAULT_SCOPE = "";
568
- var Popover = (0, import_helpers.withStaticProperties)(/* @__PURE__ */React.forwardRef(function Popover2(param, ref) {
569
- var {
570
- scope = DEFAULT_SCOPE,
571
- ...props
572
- } = param;
573
- var id = React.useId();
574
- var adaptScope = `PopoverAdapt${scope}`;
575
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_adapt.AdaptParent, {
576
- scope: adaptScope,
577
- portal: true,
578
- children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(PopoverInner, {
579
- adaptScope,
580
- ref,
581
- id,
582
- scope,
583
- ...props
584
- })
585
- });
475
+ var Popover = (0, import_helpers.withStaticProperties)((0, import_core.createRefComponent)(function Popover2(param, ref) {
476
+ var { scope = DEFAULT_SCOPE, ...props } = param;
477
+ var id = React.useId();
478
+ var adaptScope = `PopoverAdapt${scope}`;
479
+ var { open: openProp, defaultOpen, onOpenChange } = props;
480
+ var viaRef = React.useRef(void 0);
481
+ var closeReasonRef = React.useRef(void 0);
482
+ var [open, setOpen] = (0, import_use_controllable_state.useControllableState)({
483
+ prop: openProp,
484
+ defaultProp: defaultOpen || false,
485
+ onChange: function(val) {
486
+ onOpenChange === null || onOpenChange === void 0 || onOpenChange(val, viaRef.current);
487
+ }
488
+ });
489
+ var handleOpenChange = (0, import_core.useEvent)(function(val, via) {
490
+ viaRef.current = via;
491
+ setOpen(val);
492
+ });
493
+ React.useEffect(function() {
494
+ if (!open) return;
495
+ openPopovers.add(setOpen);
496
+ return function() {
497
+ openPopovers.delete(setOpen);
498
+ };
499
+ }, [open, setOpen]);
500
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_adapt.AdaptParent, {
501
+ scope: adaptScope,
502
+ adaptChildren: props.children,
503
+ open,
504
+ onOpenChange: setOpen,
505
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PopoverInner, {
506
+ adaptScope,
507
+ ref,
508
+ id,
509
+ scope,
510
+ open,
511
+ setOpen,
512
+ handleOpenChange,
513
+ closeReasonRef,
514
+ ...props
515
+ })
516
+ });
586
517
  }), {
587
- Anchor: PopoverAnchor,
588
- Arrow: PopoverArrow,
589
- Trigger: PopoverTrigger,
590
- Content: PopoverContent,
591
- Close: PopoverClose,
592
- Adapt: import_adapt.Adapt,
593
- ScrollView: PopoverScrollView,
594
- FocusScope: import_focus_scope.FocusScopeController
518
+ Anchor: PopoverAnchor,
519
+ Arrow: PopoverArrow,
520
+ Trigger: PopoverTrigger,
521
+ Content: PopoverContent,
522
+ Close: PopoverClose,
523
+ Adapt: import_adapt.Adapt,
524
+ ScrollView: PopoverScrollView,
525
+ FocusScope: import_focus_scope.FocusScopeController
595
526
  });
596
- var PopoverInner = /* @__PURE__ */React.forwardRef(function PopoverInner2(props, forwardedRef) {
597
- var {
598
- children,
599
- open: openProp,
600
- defaultOpen,
601
- onOpenChange,
602
- scope = DEFAULT_SCOPE,
603
- keepChildrenMounted: keepChildrenMountedProp,
604
- hoverable,
605
- disableFocus,
606
- disableDismissable,
607
- zIndex,
608
- id,
609
- adaptScope,
610
- ...restProps
611
- } = props;
612
- var triggerRef = React.useRef(null);
613
- var [hasCustomAnchor, setHasCustomAnchor] = React.useState(false);
614
- var viaRef = React.useRef(void 0);
615
- var [keepChildrenMounted] = (0, import_use_controllable_state.useControllableState)({
616
- prop: keepChildrenMountedProp,
617
- defaultProp: false,
618
- transition: keepChildrenMountedProp === "lazy"
619
- });
620
- var [open, setOpen] = (0, import_use_controllable_state.useControllableState)({
621
- prop: openProp,
622
- defaultProp: defaultOpen || false,
623
- onChange: function (val) {
624
- onOpenChange === null || onOpenChange === void 0 || onOpenChange(val, viaRef.current);
625
- }
626
- });
627
- React.useEffect(function () {
628
- if (!open) return;
629
- openPopovers.add(setOpen);
630
- return function () {
631
- openPopovers.delete(setOpen);
632
- };
633
- }, [open, setOpen]);
634
- var handleOpenChange = (0, import_core.useEvent)(function (val, via) {
635
- viaRef.current = via;
636
- setOpen(val);
637
- });
638
- var isAdapted = (0, import_adapt.useAdaptIsActive)(adaptScope);
639
- var floatingContext = (0, import_useFloatingContext.useFloatingContext)({
640
- open,
641
- setOpen: handleOpenChange,
642
- disable: isAdapted,
643
- hoverable,
644
- disableFocus
645
- });
646
- var [anchorTo, setAnchorToRaw] = React.useState();
647
- var setAnchorTo = (0, import_core.useCreateShallowSetState)(setAnchorToRaw);
648
- React.useImperativeHandle(forwardedRef, function () {
649
- return {
650
- anchorTo: setAnchorTo,
651
- toggle: function () {
652
- return setOpen(function (prev) {
653
- return !prev;
654
- });
655
- },
656
- open: function () {
657
- return setOpen(true);
658
- },
659
- close: function () {
660
- return setOpen(false);
661
- },
662
- setOpen
663
- };
664
- });
665
- var contentId = React.useId();
666
- var onOpenToggle = (0, import_core.useEvent)(function () {
667
- if (open && isAdapted) return;
668
- setOpen(!open);
669
- });
670
- var onCustomAnchorAdd = React.useCallback(function () {
671
- return setHasCustomAnchor(true);
672
- }, []);
673
- var onCustomAnchorRemove = React.useCallback(function () {
674
- return setHasCustomAnchor(false);
675
- }, []);
676
- var contents = /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_popper.Popper, {
677
- open,
678
- passThrough: isAdapted,
679
- scope,
680
- stayInFrame: true,
681
- ...restProps,
682
- children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(PopoverContextProvider, {
683
- scope,
684
- open,
685
- onOpenChange: handleOpenChange,
686
- onOpenToggle,
687
- triggerRef,
688
- id,
689
- contentId,
690
- hasCustomAnchor,
691
- onCustomAnchorAdd,
692
- onCustomAnchorRemove,
693
- anchorTo,
694
- adaptScope,
695
- breakpointActive: isAdapted,
696
- keepChildrenMounted,
697
- disableDismissable,
698
- hoverable,
699
- children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(PopoverSheetController, {
700
- onOpenChange: setOpen,
701
- open,
702
- scope,
703
- children
704
- })
705
- })
706
- });
707
- var result = /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, {
708
- children: import_constants.isWeb ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_floating.FloatingOverrideContext.Provider, {
709
- value: floatingContext,
710
- children: contents
711
- }) : contents
712
- });
713
- if (zIndex !== void 0) return /* @__PURE__ */(0, import_jsx_runtime.jsx)(PopoverZIndexContext.Provider, {
714
- value: zIndex,
715
- children: result
716
- });
717
- return result;
527
+ var PopoverInner = (0, import_core.createRefComponent)(function PopoverInner2(props, forwardedRef) {
528
+ var { children, open: _openProp, defaultOpen: _defaultOpen, onOpenChange: _onOpenChange, scope = DEFAULT_SCOPE, keepChildrenMounted: keepChildrenMountedProp, hoverable, disableFocus = !hoverable, disableDismissable, zIndex, id, adaptScope, open, setOpen, handleOpenChange, closeReasonRef, ...restProps } = props;
529
+ var triggerRef = React.useRef(null);
530
+ var [hasCustomAnchor, setHasCustomAnchor] = React.useState(false);
531
+ var [keepChildrenMounted] = (0, import_use_controllable_state.useControllableState)({
532
+ prop: keepChildrenMountedProp,
533
+ defaultProp: false,
534
+ transition: keepChildrenMountedProp === "lazy"
535
+ });
536
+ var isAdapted = (0, import_adapt.useAdaptIsActive)(adaptScope);
537
+ var floatingContext = (0, import_useFloatingContext.useFloatingContext)({
538
+ open,
539
+ setOpen: handleOpenChange,
540
+ closeReasonRef,
541
+ disable: isAdapted,
542
+ hoverable,
543
+ disableFocus
544
+ });
545
+ var [anchorTo, setAnchorToRaw] = React.useState();
546
+ var setAnchorTo = (0, import_core.useCreateShallowSetState)(setAnchorToRaw);
547
+ React.useImperativeHandle(forwardedRef, function() {
548
+ return {
549
+ anchorTo: setAnchorTo,
550
+ toggle: function() {
551
+ return setOpen(function(prev) {
552
+ return !prev;
553
+ });
554
+ },
555
+ open: function() {
556
+ return setOpen(true);
557
+ },
558
+ close: function() {
559
+ return setOpen(false);
560
+ },
561
+ setOpen
562
+ };
563
+ });
564
+ var contentId = React.useId();
565
+ var onOpenToggle = (0, import_core.useEvent)(function() {
566
+ if (open && isAdapted) return;
567
+ closeReasonRef.current = open ? "reference-press" : void 0;
568
+ setOpen(!open);
569
+ });
570
+ var onCustomAnchorAdd = React.useCallback(function() {
571
+ return setHasCustomAnchor(true);
572
+ }, []);
573
+ var onCustomAnchorRemove = React.useCallback(function() {
574
+ return setHasCustomAnchor(false);
575
+ }, []);
576
+ var contents = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_popper.Popper, {
577
+ open,
578
+ passThrough: isAdapted,
579
+ scope,
580
+ stayInFrame: true,
581
+ ...restProps,
582
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PopoverContextProvider, {
583
+ scope,
584
+ open,
585
+ onOpenChange: handleOpenChange,
586
+ onOpenToggle,
587
+ triggerRef,
588
+ id,
589
+ contentId,
590
+ hasCustomAnchor,
591
+ onCustomAnchorAdd,
592
+ onCustomAnchorRemove,
593
+ anchorTo,
594
+ adaptScope,
595
+ breakpointActive: isAdapted,
596
+ keepChildrenMounted,
597
+ disableDismissable,
598
+ hoverable,
599
+ closeReasonRef,
600
+ children
601
+ })
602
+ });
603
+ var result = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: import_constants.isWeb ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_floating.FloatingOverrideContext.Provider, {
604
+ value: floatingContext,
605
+ children: contents
606
+ }) : contents });
607
+ if (zIndex !== void 0) return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PopoverZIndexContext.Provider, {
608
+ value: zIndex,
609
+ children: result
610
+ });
611
+ return result;
718
612
  });
719
613
  function getState(open) {
720
- return open ? "open" : "closed";
614
+ return open ? "open" : "closed";
721
615
  }
722
- var PopoverSheetController = function (param) {
723
- var {
724
- open,
725
- scope,
726
- ...props
727
- } = param;
728
- var context = usePopoverContext(scope);
729
- var showSheet = useShowPopoverSheet(context, open);
730
- var breakpointActive = context === null || context === void 0 ? void 0 : context.breakpointActive;
731
- var getShowSheet = (0, import_core.useGet)(showSheet);
732
- var [isAdaptFullyHidden, setIsAdaptFullyHidden] = React.useState(!open);
733
- if (open && isAdaptFullyHidden) setIsAdaptFullyHidden(false);
734
- var handleSheetAnimationComplete = React.useCallback(function (param2) {
735
- var {
736
- open: isOpen
737
- } = param2;
738
- if (!isOpen) setIsAdaptFullyHidden(true);
739
- }, []);
740
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_controller.SheetController, {
741
- onOpenChange: function (val) {
742
- if (getShowSheet()) {
743
- var _props_onOpenChange;
744
- (_props_onOpenChange = props.onOpenChange) === null || _props_onOpenChange === void 0 || _props_onOpenChange.call(props, val);
745
- }
746
- },
747
- onAnimationComplete: handleSheetAnimationComplete,
748
- open,
749
- hidden: !breakpointActive,
750
- children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(PopoverAdaptHiddenContext.Provider, {
751
- value: isAdaptFullyHidden,
752
- children: props.children
753
- })
754
- });
755
- };
756
- var useShowPopoverSheet = function (context, open) {
757
- var isAdapted = (0, import_adapt.useAdaptIsActive)(context.adaptScope);
758
- return open === false ? false : isAdapted;
759
- };
616
+
760
617
  //# sourceMappingURL=Popover.native.js.map