@hanzogui/dismissable 3.0.2 → 102.0.0-rc.41-hanzoai.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.
@@ -2,33 +2,35 @@ var __create = Object.create;
2
2
  var __defProp = Object.defineProperty;
3
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __getProtoOf = Object.getPrototypeOf,
6
- __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
7
  var __export = (target, all) => {
8
- for (var name in all) __defProp(target, name, {
9
- get: all[name],
10
- enumerable: !0
11
- });
12
- },
13
- __copyProps = (to, from, except, desc) => {
14
- if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: true
11
+ });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
15
16
  get: () => from[key],
16
17
  enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
17
18
  });
18
- return to;
19
- };
19
+ }
20
+ return to;
21
+ };
20
22
  var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
26
- value: mod,
27
- enumerable: !0
28
- }) : target, mod)),
29
- __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
30
- value: !0
31
- }), mod);
23
+ // If the importer is in node compatibility mode or this is not an ESM
24
+ // file that has been converted to a CommonJS file using a Babel-
25
+ // compatible transform (i.e. "__esModule" has not been set), then set
26
+ // "default" to the CommonJS "module.exports" for node compatibility.
27
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
28
+ value: mod,
29
+ enumerable: true
30
+ }) : target, mod));
31
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
32
+ value: true
33
+ }), mod);
32
34
  var Dismissable_exports = {};
33
35
  __export(Dismissable_exports, {
34
36
  Dismissable: () => Dismissable,
@@ -41,43 +43,48 @@ __export(Dismissable_exports, {
41
43
  useIsInsideDismissable: () => useIsInsideDismissable
42
44
  });
43
45
  module.exports = __toCommonJS(Dismissable_exports);
44
- var import_gui_compose_refs = require("@hanzogui/compose-refs"),
45
- import_gui_core = require("@hanzogui/core"),
46
- import_gui_use_escape_keydown = require("@hanzogui/use-escape-keydown"),
47
- import_gui_use_event = require("@hanzogui/use-event"),
48
- React = __toESM(require("react"), 1),
49
- ReactDOM = __toESM(require("react-dom"), 1),
50
- import_jsx_runtime = require("react/jsx-runtime");
46
+ var import_compose_refs = require("@hanzogui/compose-refs");
47
+ var import_core = require("@hanzogui/core");
48
+ var import_use_escape_keydown = require("@hanzogui/use-escape-keydown");
49
+ var import_use_event = require("@hanzogui/use-event");
50
+ var React = __toESM(require("react"), 1);
51
+ var ReactDOM = __toESM(require("react-dom"), 1);
52
+ var import_jsx_runtime = require("react/jsx-runtime");
51
53
  function dispatchDiscreteCustomEvent(target, event) {
52
- target && ReactDOM.flushSync(() => target.dispatchEvent(event));
54
+ if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));
53
55
  }
54
- const DISMISSABLE_LAYER_NAME = "Dismissable",
55
- CONTEXT_UPDATE = "dismissable.update",
56
- POINTER_DOWN_OUTSIDE = "dismissable.pointerDownOutside",
57
- FOCUS_OUTSIDE = "dismissable.focusOutside";
56
+ const DISMISSABLE_LAYER_NAME = "Dismissable";
57
+ const CONTEXT_UPDATE = "dismissable.update";
58
+ const POINTER_DOWN_OUTSIDE = "dismissable.pointerDownOutside";
59
+ const FOCUS_OUTSIDE = "dismissable.focusOutside";
58
60
  let originalBodyPointerEvents;
59
- const globalLayers = /* @__PURE__ */new Set(),
60
- layerChangeListeners = /* @__PURE__ */new Set();
61
+ const globalLayers = /* @__PURE__ */new Set();
62
+ const layerChangeListeners = /* @__PURE__ */new Set();
61
63
  let layersWithPointerEventsDisabledCount = 0;
62
64
  function notifyLayerChange() {
63
- for (const listener of layerChangeListeners) listener();
65
+ for (const listener of layerChangeListeners) {
66
+ listener();
67
+ }
64
68
  }
65
69
  function getDismissableLayerCount() {
66
70
  return globalLayers.size;
67
71
  }
68
72
  function debugDismissableLayers() {
69
73
  const layers = Array.from(globalLayers);
70
- return console.log("[Dismissable] Active layers:", layers.length, layers), layers;
74
+ console.log("[Dismissable] Active layers:", layers.length, layers);
75
+ return layers;
71
76
  }
72
77
  function useHasDismissableLayers() {
73
78
  const [count, setCount] = React.useState(() => globalLayers.size);
74
- return React.useEffect(() => {
79
+ React.useEffect(() => {
75
80
  setCount(globalLayers.size);
76
81
  const update = () => setCount(globalLayers.size);
77
- return layerChangeListeners.add(update), () => {
82
+ layerChangeListeners.add(update);
83
+ return () => {
78
84
  layerChangeListeners.delete(update);
79
85
  };
80
- }, []), count > 0;
86
+ }, []);
87
+ return count > 0;
81
88
  }
82
89
  const DismissableContext = React.createContext({
83
90
  layers: /* @__PURE__ */new Set(),
@@ -85,28 +92,33 @@ const DismissableContext = React.createContext({
85
92
  branches: /* @__PURE__ */new Set()
86
93
  });
87
94
  function useIsInsideDismissable(ref) {
88
- const context = React.useContext(DismissableContext),
89
- [isInside, setIsInside] = React.useState(!1);
90
- return React.useEffect(() => {
95
+ const context = React.useContext(DismissableContext);
96
+ const [isInside, setIsInside] = React.useState(false);
97
+ React.useEffect(() => {
91
98
  const check = () => {
92
99
  const el = ref.current;
93
100
  if (!el) {
94
- setIsInside(!1);
101
+ setIsInside(false);
95
102
  return;
96
103
  }
97
- for (const layer of context.layers) if (layer.contains(el)) {
98
- setIsInside(!0);
99
- return;
104
+ for (const layer of context.layers) {
105
+ if (layer.contains(el)) {
106
+ setIsInside(true);
107
+ return;
108
+ }
100
109
  }
101
- setIsInside(!1);
110
+ setIsInside(false);
102
111
  };
103
- return check(), document.addEventListener(CONTEXT_UPDATE, check), () => document.removeEventListener(CONTEXT_UPDATE, check);
104
- }, [context.layers, ref]), isInside;
112
+ check();
113
+ document.addEventListener(CONTEXT_UPDATE, check);
114
+ return () => document.removeEventListener(CONTEXT_UPDATE, check);
115
+ }, [context.layers, ref]);
116
+ return isInside;
105
117
  }
106
118
  function useDismissableLayersAbove(ref) {
107
- const context = React.useContext(DismissableContext),
108
- [count, setCount] = React.useState(0);
109
- return React.useEffect(() => {
119
+ const context = React.useContext(DismissableContext);
120
+ const [count, setCount] = React.useState(0);
121
+ React.useEffect(() => {
110
122
  const check = () => {
111
123
  const el = ref.current;
112
124
  if (!el) {
@@ -114,157 +126,236 @@ function useDismissableLayersAbove(ref) {
114
126
  return;
115
127
  }
116
128
  let above = 0;
117
- for (const layer of context.layers) layer.contains(el) && above++;
129
+ for (const layer of context.layers) {
130
+ if (layer.contains(el)) {
131
+ above++;
132
+ }
133
+ }
118
134
  setCount(above);
119
135
  };
120
- return check(), document.addEventListener(CONTEXT_UPDATE, check), () => document.removeEventListener(CONTEXT_UPDATE, check);
121
- }, [context.layers, ref]), count;
136
+ check();
137
+ document.addEventListener(CONTEXT_UPDATE, check);
138
+ return () => document.removeEventListener(CONTEXT_UPDATE, check);
139
+ }, [context.layers, ref]);
140
+ return count;
122
141
  }
123
142
  const Dismissable = React.forwardRef((props, forwardedRef) => {
124
143
  const {
125
- disableOutsidePointerEvents = !1,
126
- forceUnmount,
127
- onEscapeKeyDown,
128
- onPointerDownOutside,
129
- onFocusOutside,
130
- onInteractOutside,
131
- onDismiss,
132
- asChild,
133
- children,
134
- branches: branchesProp,
135
- ...layerProps
136
- } = props,
137
- Comp = asChild ? import_gui_core.Slot : import_gui_core.View,
138
- context = React.useContext(DismissableContext),
139
- [node, setNode] = React.useState(null),
140
- [, force] = React.useState({}),
141
- composedRefs = (0, import_gui_compose_refs.useComposedRefs)(forwardedRef, node2 => setNode(node2)),
142
- layers = Array.from(context.layers),
143
- [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1),
144
- highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled),
145
- index = node ? layers.indexOf(node) : -1,
146
- isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0,
147
- isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex,
148
- pointerDownOutside = usePointerDownOutside(event => {
149
- const target = event.target,
150
- isPointerDownOnBranch = [...(branchesProp || context.branches)].some(branch => branch.contains(target));
151
- !isPointerEventsEnabled || isPointerDownOnBranch || (onPointerDownOutside?.(event), onInteractOutside?.(event), event.defaultPrevented || onDismiss?.());
152
- }),
153
- focusOutside = useFocusOutside(event => {
154
- const target = event.target;
155
- [...(branchesProp || context.branches)].some(branch => branch.contains(target)) || (onFocusOutside?.(event), onInteractOutside?.(event), event.defaultPrevented || onDismiss?.());
156
- }),
157
- forceUnmountRef = React.useRef(forceUnmount);
158
- return React.useEffect(() => {
144
+ disableOutsidePointerEvents = false,
145
+ forceUnmount,
146
+ onEscapeKeyDown,
147
+ onPointerDownOutside,
148
+ onFocusOutside,
149
+ onInteractOutside,
150
+ onDismiss,
151
+ asChild,
152
+ children,
153
+ branches: branchesProp,
154
+ ...layerProps
155
+ } = props;
156
+ const Comp = asChild ? import_core.Slot : import_core.View;
157
+ const context = React.useContext(DismissableContext);
158
+ const [node, setNode] = React.useState(null);
159
+ const [, force] = React.useState({});
160
+ const composedRefs = (0, import_compose_refs.useComposedRefs)(forwardedRef, node2 => setNode(node2));
161
+ const layers = Array.from(context.layers);
162
+ const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1);
163
+ const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled);
164
+ const index = node ? layers.indexOf(node) : -1;
165
+ const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;
166
+ const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;
167
+ const pointerDownOutside = usePointerDownOutside(event => {
168
+ const target = event.target;
169
+ const branches = branchesProp || context.branches;
170
+ const isPointerDownOnBranch = [...branches].some(branch => branch.contains(target));
171
+ if (!isPointerEventsEnabled || isPointerDownOnBranch) return;
172
+ onPointerDownOutside?.(event);
173
+ onInteractOutside?.(event);
174
+ if (!event.defaultPrevented) onDismiss?.();
175
+ });
176
+ const focusOutside = useFocusOutside(event => {
177
+ const target = event.target;
178
+ const branches = branchesProp || context.branches;
179
+ const isFocusInBranch = [...branches].some(branch => branch.contains(target));
180
+ if (isFocusInBranch) return;
181
+ onFocusOutside?.(event);
182
+ onInteractOutside?.(event);
183
+ if (!event.defaultPrevented) onDismiss?.();
184
+ });
185
+ const forceUnmountRef = React.useRef(forceUnmount);
186
+ React.useEffect(() => {
159
187
  forceUnmountRef.current = forceUnmount;
160
- }, [forceUnmount]), (0, import_gui_use_escape_keydown.useEscapeKeydown)(event => {
188
+ }, [forceUnmount]);
189
+ (0, import_use_escape_keydown.useEscapeKeydown)(event => {
161
190
  if (forceUnmountRef.current) return;
162
191
  const currentLayers = Array.from(context.layers);
163
- (node ? currentLayers.indexOf(node) : -1) === currentLayers.length - 1 && (onEscapeKeyDown?.(event), !event.defaultPrevented && onDismiss && (event.preventDefault(), onDismiss()));
164
- }), React.useEffect(() => {
165
- if (node && !forceUnmount) return disableOutsidePointerEvents && (context.layersWithOutsidePointerEventsDisabled.size === 0 && (originalBodyPointerEvents = document.body.style.pointerEvents, document.body.style.pointerEvents = "none"), context.layersWithOutsidePointerEventsDisabled.add(node), layersWithPointerEventsDisabledCount++), context.layers.add(node), globalLayers.add(node), (disableOutsidePointerEvents || layersWithPointerEventsDisabledCount > 0) && dispatchUpdate(), notifyLayerChange(), () => {
166
- disableOutsidePointerEvents && context.layersWithOutsidePointerEventsDisabled.size === 1 && (document.body.style.pointerEvents = originalBodyPointerEvents);
192
+ const currentIndex = node ? currentLayers.indexOf(node) : -1;
193
+ const isHighestLayer = currentIndex === currentLayers.length - 1;
194
+ if (!isHighestLayer) return;
195
+ onEscapeKeyDown?.(event);
196
+ if (!event.defaultPrevented && onDismiss) {
197
+ event.preventDefault();
198
+ onDismiss();
199
+ }
200
+ });
201
+ React.useEffect(() => {
202
+ if (!node) return;
203
+ if (forceUnmount) return;
204
+ if (disableOutsidePointerEvents) {
205
+ if (context.layersWithOutsidePointerEventsDisabled.size === 0) {
206
+ originalBodyPointerEvents = document.body.style.pointerEvents;
207
+ document.body.style.pointerEvents = "none";
208
+ }
209
+ context.layersWithOutsidePointerEventsDisabled.add(node);
210
+ layersWithPointerEventsDisabledCount++;
211
+ }
212
+ context.layers.add(node);
213
+ globalLayers.add(node);
214
+ if (disableOutsidePointerEvents || layersWithPointerEventsDisabledCount > 0) {
215
+ dispatchUpdate();
216
+ }
217
+ notifyLayerChange();
218
+ return () => {
219
+ if (disableOutsidePointerEvents) {
220
+ if (context.layersWithOutsidePointerEventsDisabled.size === 1) {
221
+ document.body.style.pointerEvents = originalBodyPointerEvents;
222
+ }
223
+ }
167
224
  };
168
- }, [node, disableOutsidePointerEvents, forceUnmount, context]), React.useEffect(() => {
169
- if (!forceUnmount) return () => {
225
+ }, [node, disableOutsidePointerEvents, forceUnmount, context]);
226
+ React.useEffect(() => {
227
+ if (forceUnmount) return;
228
+ return () => {
170
229
  if (!node) return;
171
230
  const hadPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.has(node);
172
- context.layers.delete(node), context.layersWithOutsidePointerEventsDisabled.delete(node), globalLayers.delete(node), layersWithPointerEventsDisabledCount > 0 && dispatchUpdate(), notifyLayerChange(), hadPointerEventsDisabled && layersWithPointerEventsDisabledCount--;
231
+ context.layers.delete(node);
232
+ context.layersWithOutsidePointerEventsDisabled.delete(node);
233
+ globalLayers.delete(node);
234
+ if (layersWithPointerEventsDisabledCount > 0) {
235
+ dispatchUpdate();
236
+ }
237
+ notifyLayerChange();
238
+ if (hadPointerEventsDisabled) {
239
+ layersWithPointerEventsDisabledCount--;
240
+ }
173
241
  };
174
- }, [node, context, forceUnmount]), React.useEffect(() => {
242
+ }, [node, context, forceUnmount]);
243
+ React.useEffect(() => {
175
244
  const handleUpdate = () => {
176
- layersWithPointerEventsDisabledCount > 0 && force({});
245
+ if (layersWithPointerEventsDisabledCount > 0) {
246
+ force({});
247
+ }
177
248
  };
178
- return document.addEventListener(CONTEXT_UPDATE, handleUpdate), () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);
179
- }, []), /* @__PURE__ */(0, import_jsx_runtime.jsx)(Comp, {
249
+ document.addEventListener(CONTEXT_UPDATE, handleUpdate);
250
+ return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);
251
+ }, []);
252
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(Comp, {
180
253
  ...layerProps,
181
254
  ref: composedRefs,
182
255
  ...(!asChild && {
183
256
  display: "contents"
184
257
  }),
185
258
  pointerEvents: isBodyPointerEventsDisabled ? isPointerEventsEnabled ? "auto" : "none" : void 0,
186
- onFocusCapture: (0, import_gui_core.composeEventHandlers)(props.onFocusCapture, focusOutside.onFocusCapture),
187
- onBlurCapture: (0, import_gui_core.composeEventHandlers)(props.onBlurCapture, focusOutside.onBlurCapture),
188
- onPointerDownCapture: (0, import_gui_core.composeEventHandlers)(props.onPointerDownCapture, pointerDownOutside.onPointerDownCapture),
259
+ onFocusCapture: (0, import_core.composeEventHandlers)(props.onFocusCapture, focusOutside.onFocusCapture),
260
+ onBlurCapture: (0, import_core.composeEventHandlers)(props.onBlurCapture, focusOutside.onBlurCapture),
261
+ onPointerDownCapture: (0, import_core.composeEventHandlers)(props.onPointerDownCapture, pointerDownOutside.onPointerDownCapture),
189
262
  children
190
263
  });
191
264
  });
192
265
  Dismissable.displayName = DISMISSABLE_LAYER_NAME;
193
- const BRANCH_NAME = "DismissableBranch",
194
- DismissableBranch = React.forwardRef((props, forwardedRef) => {
195
- const {
196
- branches: branchesProp,
197
- ...rest
198
- } = props,
199
- context = React.useContext(DismissableContext),
200
- ref = React.useRef(null),
201
- composedRefs = (0, import_gui_compose_refs.useComposedRefs)(forwardedRef, ref);
202
- return React.useEffect(() => {
203
- const node = ref.current;
204
- if (!(node instanceof HTMLElement)) return;
205
- const branches = branchesProp || context.branches;
206
- if (node && branches) return branches.add(node), () => {
266
+ const BRANCH_NAME = "DismissableBranch";
267
+ const DismissableBranch = React.forwardRef((props, forwardedRef) => {
268
+ const {
269
+ branches: branchesProp,
270
+ ...rest
271
+ } = props;
272
+ const context = React.useContext(DismissableContext);
273
+ const ref = React.useRef(null);
274
+ const composedRefs = (0, import_compose_refs.useComposedRefs)(forwardedRef, ref);
275
+ React.useEffect(() => {
276
+ const node = ref.current;
277
+ if (!(node instanceof HTMLElement)) return;
278
+ const branches = branchesProp || context.branches;
279
+ if (node && branches) {
280
+ branches.add(node);
281
+ return () => {
207
282
  branches.delete(node);
208
283
  };
209
- }, [branchesProp, context.branches]), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_gui_core.View, {
210
- asChild: "except-style",
211
- ...rest,
212
- ref: composedRefs
213
- });
284
+ }
285
+ }, [branchesProp, context.branches]);
286
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_core.View, {
287
+ asChild: "except-style",
288
+ ...rest,
289
+ ref: composedRefs
214
290
  });
291
+ });
215
292
  DismissableBranch.displayName = BRANCH_NAME;
216
293
  function usePointerDownOutside(onPointerDownOutside) {
217
- const handlePointerDownOutside = (0, import_gui_use_event.useEvent)(onPointerDownOutside),
218
- isPointerInsideReactTreeRef = React.useRef(!1),
219
- handleClickRef = React.useRef(() => {});
220
- return React.useEffect(() => {
294
+ const handlePointerDownOutside = (0, import_use_event.useEvent)(onPointerDownOutside);
295
+ const isPointerInsideReactTreeRef = React.useRef(false);
296
+ const handleClickRef = React.useRef(() => {});
297
+ React.useEffect(() => {
221
298
  const handlePointerDown = event => {
222
- if (event.target && !isPointerInsideReactTreeRef.current) {
223
- let handleAndDispatchPointerDownOutsideEvent = function () {
224
- handleAndDispatchCustomEvent(POINTER_DOWN_OUTSIDE, handlePointerDownOutside, eventDetail, {
225
- discrete: !0
226
- });
227
- };
228
- const eventDetail = {
229
- originalEvent: event
230
- };
231
- event.pointerType === "touch" ? (document.removeEventListener("click", handleClickRef.current), handleClickRef.current = handleAndDispatchPointerDownOutsideEvent, document.addEventListener("click", handleClickRef.current, {
232
- once: !0
233
- })) : handleAndDispatchPointerDownOutsideEvent();
299
+ if (event.target && !isPointerInsideReactTreeRef.current) {
300
+ let handleAndDispatchPointerDownOutsideEvent = function () {
301
+ handleAndDispatchCustomEvent(POINTER_DOWN_OUTSIDE, handlePointerDownOutside, eventDetail, {
302
+ discrete: true
303
+ });
304
+ };
305
+ const eventDetail = {
306
+ originalEvent: event
307
+ };
308
+ if (event.pointerType === "touch") {
309
+ document.removeEventListener("click", handleClickRef.current);
310
+ handleClickRef.current = handleAndDispatchPointerDownOutsideEvent;
311
+ document.addEventListener("click", handleClickRef.current, {
312
+ once: true
313
+ });
314
+ } else {
315
+ handleAndDispatchPointerDownOutsideEvent();
234
316
  }
235
- isPointerInsideReactTreeRef.current = !1;
236
- },
237
- timerId = setTimeout(() => {
238
- document.addEventListener("pointerdown", handlePointerDown);
239
- }, 0);
317
+ }
318
+ isPointerInsideReactTreeRef.current = false;
319
+ };
320
+ const timerId = setTimeout(() => {
321
+ document.addEventListener("pointerdown", handlePointerDown);
322
+ }, 0);
240
323
  return () => {
241
- window.clearTimeout(timerId), document.removeEventListener("pointerdown", handlePointerDown), document.removeEventListener("click", handleClickRef.current);
324
+ window.clearTimeout(timerId);
325
+ document.removeEventListener("pointerdown", handlePointerDown);
326
+ document.removeEventListener("click", handleClickRef.current);
242
327
  };
243
- }, [handlePointerDownOutside]), {
328
+ }, [handlePointerDownOutside]);
329
+ return {
244
330
  // ensures we check React component tree (not just DOM tree)
245
331
  onPointerDownCapture: () => {
246
- isPointerInsideReactTreeRef.current = !0;
332
+ isPointerInsideReactTreeRef.current = true;
247
333
  }
248
334
  };
249
335
  }
250
336
  function useFocusOutside(onFocusOutside) {
251
- const handleFocusOutside = (0, import_gui_use_event.useEvent)(onFocusOutside),
252
- isFocusInsideReactTreeRef = React.useRef(!1);
253
- return React.useEffect(() => {
337
+ const handleFocusOutside = (0, import_use_event.useEvent)(onFocusOutside);
338
+ const isFocusInsideReactTreeRef = React.useRef(false);
339
+ React.useEffect(() => {
254
340
  const handleFocus = event => {
255
- event.target && !isFocusInsideReactTreeRef.current && handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, {
256
- originalEvent: event
257
- }, {
258
- discrete: !1
259
- });
341
+ if (event.target && !isFocusInsideReactTreeRef.current) {
342
+ const eventDetail = {
343
+ originalEvent: event
344
+ };
345
+ handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {
346
+ discrete: false
347
+ });
348
+ }
260
349
  };
261
- return document.addEventListener("focusin", handleFocus), () => document.removeEventListener("focusin", handleFocus);
262
- }, [handleFocusOutside]), {
350
+ document.addEventListener("focusin", handleFocus);
351
+ return () => document.removeEventListener("focusin", handleFocus);
352
+ }, [handleFocusOutside]);
353
+ return {
263
354
  onFocusCapture: () => {
264
- isFocusInsideReactTreeRef.current = !0;
355
+ isFocusInsideReactTreeRef.current = true;
265
356
  },
266
357
  onBlurCapture: () => {
267
- isFocusInsideReactTreeRef.current = !1;
358
+ isFocusInsideReactTreeRef.current = false;
268
359
  }
269
360
  };
270
361
  }
@@ -275,13 +366,18 @@ function dispatchUpdate() {
275
366
  function handleAndDispatchCustomEvent(name, handler, detail, {
276
367
  discrete
277
368
  }) {
278
- const target = detail.originalEvent.target,
279
- event = new CustomEvent(name, {
280
- bubbles: !1,
281
- cancelable: !0,
282
- detail
283
- });
284
- handler && target.addEventListener(name, handler, {
285
- once: !0
286
- }), discrete ? dispatchDiscreteCustomEvent(target, event) : target.dispatchEvent(event);
369
+ const target = detail.originalEvent.target;
370
+ const event = new CustomEvent(name, {
371
+ bubbles: false,
372
+ cancelable: true,
373
+ detail
374
+ });
375
+ if (handler) target.addEventListener(name, handler, {
376
+ once: true
377
+ });
378
+ if (discrete) {
379
+ dispatchDiscreteCustomEvent(target, event);
380
+ } else {
381
+ target.dispatchEvent(event);
382
+ }
287
383
  }
@@ -4,33 +4,35 @@ var __create = Object.create;
4
4
  var __defProp = Object.defineProperty;
5
5
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
6
  var __getOwnPropNames = Object.getOwnPropertyNames;
7
- var __getProtoOf = Object.getPrototypeOf,
8
- __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __getProtoOf = Object.getPrototypeOf;
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: !0
13
- });
14
- },
15
- __copyProps = (to, from, except, desc) => {
16
- if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
10
+ for (var name in all) __defProp(target, name, {
11
+ get: all[name],
12
+ enumerable: true
13
+ });
14
+ };
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, {
17
18
  get: () => from[key],
18
19
  enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
19
20
  });
20
- return to;
21
- };
21
+ }
22
+ return to;
23
+ };
22
24
  var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
23
- // If the importer is in node compatibility mode or this is not an ESM
24
- // file that has been converted to a CommonJS file using a Babel-
25
- // compatible transform (i.e. "__esModule" has not been set), then set
26
- // "default" to the CommonJS "module.exports" for node compatibility.
27
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
28
- value: mod,
29
- enumerable: !0
30
- }) : target, mod)),
31
- __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
32
- value: !0
33
- }), mod);
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
32
+ }) : target, mod));
33
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
34
+ value: true
35
+ }), mod);
34
36
  var Dismissable_native_exports = {};
35
37
  __export(Dismissable_native_exports, {
36
38
  Dismissable: () => Dismissable,
@@ -48,18 +50,18 @@ function getDismissableLayerCount() {
48
50
  return 0;
49
51
  }
50
52
  function useHasDismissableLayers() {
51
- return !1;
53
+ return false;
52
54
  }
53
55
  function useIsInsideDismissable(_ref) {
54
- return !1;
56
+ return false;
55
57
  }
56
58
  function useDismissableLayersAbove(_ref) {
57
59
  return 0;
58
60
  }
59
61
  var Dismissable = /* @__PURE__ */import_react.default.forwardRef(function (props, _ref) {
60
- return props.children;
61
- }),
62
- DismissableBranch = /* @__PURE__ */import_react.default.forwardRef(function (props, _ref) {
63
- return props.children;
64
- });
62
+ return props.children;
63
+ });
64
+ var DismissableBranch = /* @__PURE__ */import_react.default.forwardRef(function (props, _ref) {
65
+ return props.children;
66
+ });
65
67
  //# sourceMappingURL=Dismissable.native.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Dismissable_native_exports","__export","Dismissable","DismissableBranch","dispatchDiscreteCustomEvent","getDismissableLayerCount","useDismissableLayersAbove","useHasDismissableLayers","useIsInsideDismissable","module","exports","__toCommonJS","import_react","__toESM","require","_target","_event","_ref","default","forwardRef","props","children"],"sources":["../../src/Dismissable.native.tsx"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,0BAAA;AAAAC,QAAA,CAAAD,0BAAA;EAAAE,WAAA,EAAAA,CAAA,KAAAA,WAAA;EAAAC,iBAAA,EAAAA,CAAA,KAAAA,iBAAA;EAAAC,2BAAA,EAAAA,CAAA,KAAAA,2BAAA;EAAAC,wBAAA,EAAAA,CAAA,KAAAA,wBAAA;EAAAC,yBAAA,EAAAA,CAAA,KAAAA,yBAAA;EAAAC,uBAAA,EAAAA,CAAA,KAAAA,uBAAA;EAAAC,sBAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAC,YAAA,CAAAX,0BAAA;AAAA,IAAAY,YAAA,GAAkBC,OAAA,CAAAC,OAAA;AAEX,SAASV,4BAA4BW,OAAA,EAASC,MAAA,EAAQ,CAAC;AACvD,SAASX,yBAAA,EAA2B;EACvC,OAAO;AACX;AACO,SAASE,wBAAA,EAA0B;EACtC,OAAO;AACX;AACO,SAASC,uBAAuBS,IAAA,EAAM;EACzC,OAAO;AACX;AACO,SAASX,0BAA0BW,IAAA,EAAM;EAC5C,OAAO;AACX;AACO,IAAIf,WAAA,GAA4B,eAAAU,YAAA,CAAAM,OAAA,CAAMC,UAAA,CAAW,UAASC,KAAA,EAAOH,IAAA,EAAM;IAC1E,OAAOG,KAAA,CAAMC,QAAA;EACjB,CAAC;EACUlB,iBAAA,GAAkC,eAAAS,YAAA,CAAAM,OAAA,CAAMC,UAAA,CAAW,UAASC,KAAA,EAAOH,IAAA,EAAM;IAChF,OAAOG,KAAA,CAAMC,QAAA;EACjB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["Dismissable_native_exports","__export","Dismissable","DismissableBranch","dispatchDiscreteCustomEvent","getDismissableLayerCount","useDismissableLayersAbove","useHasDismissableLayers","useIsInsideDismissable","module","exports","__toCommonJS","import_react","__toESM","require","_target","_event","_ref","default","forwardRef","props","children"],"sources":["../../src/Dismissable.native.tsx"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,0BAAA;AAAAC,QAAA,CAAAD,0BAAA;EAAAE,WAAA,EAAAA,CAAA,KAAAA,WAAA;EAAAC,iBAAA,EAAAA,CAAA,KAAAA,iBAAA;EAAAC,2BAAA,EAAAA,CAAA,KAAAA,2BAAA;EAAAC,wBAAA,EAAAA,CAAA,KAAAA,wBAAA;EAAAC,yBAAA,EAAAA,CAAA,KAAAA,yBAAA;EAAAC,uBAAA,EAAAA,CAAA,KAAAA,uBAAA;EAAAC,sBAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAC,YAAA,CAAAX,0BAAA;AAAA,IAAAY,YAAA,GAAkBC,OAAA,CAAAC,OAAA;AAEX,SAASV,4BAA4BW,OAAA,EAASC,MAAA,EAAQ,CAAC;AACvD,SAASX,yBAAA,EAA2B;EACvC,OAAO;AACX;AACO,SAASE,wBAAA,EAA0B;EACtC,OAAO;AACX;AACO,SAASC,uBAAuBS,IAAA,EAAM;EACzC,OAAO;AACX;AACO,SAASX,0BAA0BW,IAAA,EAAM;EAC5C,OAAO;AACX;AACO,IAAIf,WAAA,GAA4B,eAAAU,YAAA,CAAAM,OAAA,CAAMC,UAAA,CAAW,UAASC,KAAA,EAAOH,IAAA,EAAM;EAC1E,OAAOG,KAAA,CAAMC,QAAA;AACjB,CAAC;AACM,IAAIlB,iBAAA,GAAkC,eAAAS,YAAA,CAAAM,OAAA,CAAMC,UAAA,CAAW,UAASC,KAAA,EAAOH,IAAA,EAAM;EAChF,OAAOG,KAAA,CAAMC,QAAA;AACjB,CAAC","ignoreList":[]}