@tamagui/focus-scope 2.0.0-rc.4 → 2.0.0-rc.40
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/cjs/FocusScope.cjs +284 -167
- package/dist/cjs/FocusScope.native.js +28 -26
- package/dist/cjs/FocusScope.native.js.map +1 -1
- package/dist/cjs/FocusScopeController.cjs +52 -50
- package/dist/cjs/FocusScopeController.native.js +49 -47
- package/dist/cjs/FocusScopeController.native.js.map +1 -1
- package/dist/cjs/index.cjs +7 -5
- package/dist/cjs/index.native.js +7 -5
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/types.cjs +7 -5
- package/dist/cjs/types.native.js +7 -5
- package/dist/cjs/types.native.js.map +1 -1
- package/dist/esm/FocusScope.mjs +253 -138
- package/dist/esm/FocusScope.mjs.map +1 -1
- package/dist/esm/FocusScopeController.mjs +24 -24
- package/dist/esm/FocusScopeController.mjs.map +1 -1
- package/dist/esm/FocusScopeController.native.js +21 -21
- package/dist/esm/FocusScopeController.native.js.map +1 -1
- package/dist/esm/index.js +2 -2
- package/dist/esm/index.js.map +1 -6
- package/dist/jsx/FocusScope.mjs +253 -138
- package/dist/jsx/FocusScope.mjs.map +1 -1
- package/dist/jsx/FocusScope.native.js +28 -26
- package/dist/jsx/FocusScope.native.js.map +1 -1
- package/dist/jsx/FocusScopeController.mjs +24 -24
- package/dist/jsx/FocusScopeController.mjs.map +1 -1
- package/dist/jsx/FocusScopeController.native.js +49 -47
- package/dist/jsx/FocusScopeController.native.js.map +1 -1
- package/dist/jsx/index.js +2 -2
- package/dist/jsx/index.js.map +1 -6
- package/dist/jsx/index.native.js +7 -5
- package/dist/jsx/types.native.js +7 -5
- package/package.json +11 -14
- package/src/FocusScope.tsx +33 -6
- package/types/FocusScope.d.ts.map +1 -1
- package/dist/cjs/FocusScope.js +0 -245
- package/dist/cjs/FocusScope.js.map +0 -6
- package/dist/cjs/FocusScopeController.js +0 -69
- package/dist/cjs/FocusScopeController.js.map +0 -6
- package/dist/cjs/index.js +0 -16
- package/dist/cjs/index.js.map +0 -6
- package/dist/cjs/types.js +0 -14
- package/dist/cjs/types.js.map +0 -6
- package/dist/esm/FocusScope.js +0 -227
- package/dist/esm/FocusScope.js.map +0 -6
- package/dist/esm/FocusScopeController.js +0 -48
- package/dist/esm/FocusScopeController.js.map +0 -6
- package/dist/esm/types.js +0 -1
- package/dist/esm/types.js.map +0 -6
- package/dist/jsx/FocusScope.js +0 -227
- package/dist/jsx/FocusScope.js.map +0 -6
- package/dist/jsx/FocusScopeController.js +0 -48
- package/dist/jsx/FocusScopeController.js.map +0 -6
- package/dist/jsx/types.js +0 -1
- package/dist/jsx/types.js.map +0 -6
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { createContextScope } from "@tamagui/create-context";
|
|
2
|
-
import { useEvent } from "@tamagui/use-event";
|
|
3
|
-
import * as React from "react";
|
|
4
|
-
import { jsx } from "react/jsx-runtime";
|
|
5
|
-
const FOCUS_SCOPE_CONTROLLER_NAME = "FocusScopeController", [createFocusScopeControllerContext, createFocusScopeControllerScope] = createContextScope(FOCUS_SCOPE_CONTROLLER_NAME), [FocusScopeControllerProvider, useFocusScopeControllerContext] = createFocusScopeControllerContext(
|
|
6
|
-
FOCUS_SCOPE_CONTROLLER_NAME
|
|
7
|
-
);
|
|
8
|
-
function FocusScopeController(props) {
|
|
9
|
-
const {
|
|
10
|
-
__scopeFocusScope,
|
|
11
|
-
children,
|
|
12
|
-
enabled,
|
|
13
|
-
loop,
|
|
14
|
-
trapped,
|
|
15
|
-
onMountAutoFocus,
|
|
16
|
-
onUnmountAutoFocus,
|
|
17
|
-
forceUnmount,
|
|
18
|
-
focusOnIdle
|
|
19
|
-
} = props, stableOnMountAutoFocus = useEvent(onMountAutoFocus), stableOnUnmountAutoFocus = useEvent(onUnmountAutoFocus), contextValue = React.useMemo(
|
|
20
|
-
() => ({
|
|
21
|
-
enabled,
|
|
22
|
-
loop,
|
|
23
|
-
trapped,
|
|
24
|
-
onMountAutoFocus: stableOnMountAutoFocus,
|
|
25
|
-
onUnmountAutoFocus: stableOnUnmountAutoFocus,
|
|
26
|
-
forceUnmount,
|
|
27
|
-
focusOnIdle
|
|
28
|
-
}),
|
|
29
|
-
[
|
|
30
|
-
enabled,
|
|
31
|
-
loop,
|
|
32
|
-
trapped,
|
|
33
|
-
stableOnMountAutoFocus,
|
|
34
|
-
stableOnUnmountAutoFocus,
|
|
35
|
-
forceUnmount,
|
|
36
|
-
focusOnIdle
|
|
37
|
-
]
|
|
38
|
-
);
|
|
39
|
-
return /* @__PURE__ */ jsx(FocusScopeControllerProvider, { scope: __scopeFocusScope, ...contextValue, children });
|
|
40
|
-
}
|
|
41
|
-
const FocusScopeControllerComponent = FocusScopeController;
|
|
42
|
-
export {
|
|
43
|
-
FocusScopeControllerComponent as FocusScopeController,
|
|
44
|
-
FocusScopeControllerProvider,
|
|
45
|
-
createFocusScopeControllerScope,
|
|
46
|
-
useFocusScopeControllerContext
|
|
47
|
-
};
|
|
48
|
-
//# sourceMappingURL=FocusScopeController.js.map
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/FocusScopeController.tsx"],
|
|
4
|
-
"mappings": "AAAA,SAAS,0BAA0B;AACnC,SAAS,gBAAgB;AACzB,YAAY,WAAW;AA8DnB;AA1DJ,MAAM,8BAA8B,wBAE9B,CAAC,mCAAmC,+BAA+B,IACvE,mBAAmB,2BAA2B,GAI1C,CAAC,8BAA8B,8BAA8B,IACjE;AAAA,EACE;AACF;AAUF,SAAS,qBAAqB,OAA+C;AAC3E,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,OAEE,yBAAyB,SAAS,gBAAgB,GAClD,2BAA2B,SAAS,kBAAkB,GAEtD,eAAe,MAAM;AAAA,IACzB,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA,kBAAkB;AAAA,MAClB,oBAAoB;AAAA,MACpB;AAAA,MACA;AAAA,IACF;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,SACE,oBAAC,gCAA6B,OAAO,mBAAoB,GAAG,cACzD,UACH;AAEJ;AAEA,MAAM,gCAAgC;",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|
package/dist/esm/types.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
//# sourceMappingURL=types.js.map
|
package/dist/esm/types.js.map
DELETED
package/dist/jsx/FocusScope.js
DELETED
|
@@ -1,227 +0,0 @@
|
|
|
1
|
-
import { useComposedRefs } from "@tamagui/compose-refs";
|
|
2
|
-
import { isWeb, useIsomorphicLayoutEffect } from "@tamagui/constants";
|
|
3
|
-
import { idle, useAsyncEffect } from "@tamagui/use-async";
|
|
4
|
-
import { useEvent } from "@tamagui/use-event";
|
|
5
|
-
import * as React from "react";
|
|
6
|
-
import { useFocusScopeControllerContext } from "./FocusScopeController";
|
|
7
|
-
import { Fragment, jsx } from "react/jsx-runtime";
|
|
8
|
-
const AUTOFOCUS_ON_MOUNT = "focusScope.autoFocusOnMount", AUTOFOCUS_ON_UNMOUNT = "focusScope.autoFocusOnUnmount", EVENT_OPTIONS = { bubbles: !1, cancelable: !0 }, FocusScope = React.forwardRef(
|
|
9
|
-
function({ __scopeFocusScope, ...props }, forwardedRef) {
|
|
10
|
-
const context = useFocusScopeControllerContext("FocusScope", __scopeFocusScope, {
|
|
11
|
-
warn: !1,
|
|
12
|
-
fallback: {}
|
|
13
|
-
}), mergedProps = {
|
|
14
|
-
...props,
|
|
15
|
-
enabled: context.enabled ?? props.enabled,
|
|
16
|
-
loop: context.loop ?? props.loop,
|
|
17
|
-
trapped: context.trapped ?? props.trapped,
|
|
18
|
-
onMountAutoFocus: context.onMountAutoFocus ?? props.onMountAutoFocus,
|
|
19
|
-
onUnmountAutoFocus: context.onUnmountAutoFocus ?? props.onUnmountAutoFocus,
|
|
20
|
-
forceUnmount: context.forceUnmount ?? props.forceUnmount,
|
|
21
|
-
focusOnIdle: context.focusOnIdle ?? props.focusOnIdle
|
|
22
|
-
}, childProps = useFocusScope(mergedProps, forwardedRef);
|
|
23
|
-
return typeof mergedProps.children == "function" ? /* @__PURE__ */ jsx(Fragment, { children: mergedProps.children(childProps) }) : React.cloneElement(
|
|
24
|
-
React.Children.only(mergedProps.children),
|
|
25
|
-
childProps
|
|
26
|
-
);
|
|
27
|
-
}
|
|
28
|
-
);
|
|
29
|
-
function setupFocusTrap(container, lastFocusedElementRef, focusScope) {
|
|
30
|
-
const controller = new AbortController();
|
|
31
|
-
let rafId = null;
|
|
32
|
-
function scheduleRefocus() {
|
|
33
|
-
if (rafId) return;
|
|
34
|
-
const elementToFocus = lastFocusedElementRef.current;
|
|
35
|
-
rafId = requestAnimationFrame(() => {
|
|
36
|
-
rafId = null, !focusScope.paused && (focusScope.stopped || container.isConnected && (container.contains(document.activeElement) || focus(elementToFocus)));
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
function handleFocusIn(event) {
|
|
40
|
-
if (focusScope.paused) return;
|
|
41
|
-
const target = event.target;
|
|
42
|
-
container.contains(target) ? (target?.addEventListener("blur", handleBlur, { signal: controller.signal }), lastFocusedElementRef.current = target) : scheduleRefocus();
|
|
43
|
-
}
|
|
44
|
-
function handleFocusOut(event) {
|
|
45
|
-
controller.abort(), !focusScope.paused && (container.contains(event.relatedTarget) || scheduleRefocus());
|
|
46
|
-
}
|
|
47
|
-
function handleBlur() {
|
|
48
|
-
}
|
|
49
|
-
return document.addEventListener("focusin", handleFocusIn), document.addEventListener("focusout", handleFocusOut), () => {
|
|
50
|
-
rafId && (cancelAnimationFrame(rafId), rafId = null), controller.abort(), document.removeEventListener("focusin", handleFocusIn), document.removeEventListener("focusout", handleFocusOut);
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
function useFocusScope(props, forwardedRef) {
|
|
54
|
-
const {
|
|
55
|
-
loop = !1,
|
|
56
|
-
enabled = !0,
|
|
57
|
-
trapped = !1,
|
|
58
|
-
onMountAutoFocus: onMountAutoFocusProp,
|
|
59
|
-
onUnmountAutoFocus: onUnmountAutoFocusProp,
|
|
60
|
-
forceUnmount,
|
|
61
|
-
focusOnIdle = !0,
|
|
62
|
-
children,
|
|
63
|
-
...scopeProps
|
|
64
|
-
} = props, [container, setContainer] = React.useState(null), containerRef = React.useRef(null), onMountAutoFocus = useEvent(onMountAutoFocusProp), onUnmountAutoFocus = useEvent(onUnmountAutoFocusProp), lastFocusedElementRef = React.useRef(null), focusScopeRef = React.useRef({
|
|
65
|
-
paused: !1,
|
|
66
|
-
stopped: !1,
|
|
67
|
-
// set to true when cleanup starts, signals trap to stop
|
|
68
|
-
pause() {
|
|
69
|
-
this.paused = !0;
|
|
70
|
-
},
|
|
71
|
-
resume() {
|
|
72
|
-
this.paused = !1;
|
|
73
|
-
},
|
|
74
|
-
stop() {
|
|
75
|
-
this.stopped = !0;
|
|
76
|
-
}
|
|
77
|
-
}), focusScope = focusScopeRef.current, trapCleanupRef = React.useRef(null), setContainerRef = React.useCallback(
|
|
78
|
-
(node) => {
|
|
79
|
-
trapCleanupRef.current && (trapCleanupRef.current(), trapCleanupRef.current = null), containerRef.current = node, isWeb && node && enabled && trapped && (trapCleanupRef.current = setupFocusTrap(
|
|
80
|
-
node,
|
|
81
|
-
lastFocusedElementRef,
|
|
82
|
-
focusScopeRef.current
|
|
83
|
-
)), setContainer(node);
|
|
84
|
-
},
|
|
85
|
-
[enabled, trapped]
|
|
86
|
-
), composedRefs = useComposedRefs(forwardedRef, setContainerRef);
|
|
87
|
-
useIsomorphicLayoutEffect(() => () => {
|
|
88
|
-
trapCleanupRef.current && (trapCleanupRef.current(), trapCleanupRef.current = null);
|
|
89
|
-
}, []), useAsyncEffect(
|
|
90
|
-
async (signal) => {
|
|
91
|
-
if (!enabled || !container || forceUnmount) return;
|
|
92
|
-
focusScope.stopped = !1, focusScopesStack.add(focusScope);
|
|
93
|
-
const previouslyFocusedElement = document.activeElement;
|
|
94
|
-
if (!container.contains(previouslyFocusedElement)) {
|
|
95
|
-
const mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS);
|
|
96
|
-
if (container.addEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus), container.dispatchEvent(mountEvent), !mountEvent.defaultPrevented) {
|
|
97
|
-
focusOnIdle && await idle(
|
|
98
|
-
signal,
|
|
99
|
-
typeof focusOnIdle == "object" ? focusOnIdle : {
|
|
100
|
-
// we can't wait too long or else user can take an action and then we focus
|
|
101
|
-
max: 200,
|
|
102
|
-
min: typeof focusOnIdle == "number" ? focusOnIdle : 16
|
|
103
|
-
}
|
|
104
|
-
);
|
|
105
|
-
const allCandidates = getTabbableCandidates(container), visibleCandidates = removeLinks(allCandidates).filter(
|
|
106
|
-
(candidate) => !isHidden(candidate, { upTo: container })
|
|
107
|
-
);
|
|
108
|
-
focusFirst(visibleCandidates, { select: !0 }), visibleCandidates.length > 0 ? lastFocusedElementRef.current = visibleCandidates[0] : lastFocusedElementRef.current = container, document.activeElement === previouslyFocusedElement && visibleCandidates.length === 0 && focus(container);
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
return () => {
|
|
112
|
-
focusScope.stop(), container.removeEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);
|
|
113
|
-
const unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS);
|
|
114
|
-
container.addEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus), container.dispatchEvent(unmountEvent), unmountEvent.defaultPrevented || focus(previouslyFocusedElement ?? document.body, { select: !0 }), container.removeEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus), focusScopesStack.remove(focusScope);
|
|
115
|
-
};
|
|
116
|
-
},
|
|
117
|
-
[
|
|
118
|
-
enabled,
|
|
119
|
-
container,
|
|
120
|
-
forceUnmount,
|
|
121
|
-
onMountAutoFocus,
|
|
122
|
-
onUnmountAutoFocus,
|
|
123
|
-
focusScope,
|
|
124
|
-
focusOnIdle
|
|
125
|
-
]
|
|
126
|
-
);
|
|
127
|
-
const handleKeyDown = React.useCallback(
|
|
128
|
-
(event) => {
|
|
129
|
-
if (!trapped || !loop || focusScope.paused || !enabled || !container) return;
|
|
130
|
-
const isTabKey = event.key === "Tab" && !event.altKey && !event.ctrlKey && !event.metaKey, focusedElement = document.activeElement;
|
|
131
|
-
if (isTabKey && focusedElement) {
|
|
132
|
-
const [first, last] = getTabbableEdges(container);
|
|
133
|
-
first && last ? !event.shiftKey && focusedElement === last ? (event.preventDefault(), loop && focus(first, { select: !0 })) : event.shiftKey && focusedElement === first && (event.preventDefault(), loop && focus(last, { select: !0 })) : focusedElement === container && event.preventDefault();
|
|
134
|
-
}
|
|
135
|
-
},
|
|
136
|
-
[loop, trapped, focusScope.paused, enabled, container]
|
|
137
|
-
);
|
|
138
|
-
React.useEffect(() => {
|
|
139
|
-
if (!container || !trapped || !loop || !enabled) return;
|
|
140
|
-
const handleKeyDownCapture = (event) => {
|
|
141
|
-
event.key === "Tab" && handleKeyDown(event);
|
|
142
|
-
};
|
|
143
|
-
return container.addEventListener("keydown", handleKeyDownCapture, !0), () => {
|
|
144
|
-
container.removeEventListener("keydown", handleKeyDownCapture, !0);
|
|
145
|
-
};
|
|
146
|
-
}, [container, trapped, loop, enabled, handleKeyDown]);
|
|
147
|
-
const existingOnKeyDown = scopeProps.onKeyDown, composedOnKeyDown = React.useCallback(
|
|
148
|
-
(event) => {
|
|
149
|
-
existingOnKeyDown?.(event);
|
|
150
|
-
},
|
|
151
|
-
[existingOnKeyDown]
|
|
152
|
-
);
|
|
153
|
-
return {
|
|
154
|
-
...scopeProps,
|
|
155
|
-
ref: composedRefs,
|
|
156
|
-
onKeyDown: composedOnKeyDown
|
|
157
|
-
};
|
|
158
|
-
}
|
|
159
|
-
function focusFirst(candidates, { select = !1 } = {}) {
|
|
160
|
-
const previouslyFocusedElement = document.activeElement;
|
|
161
|
-
for (const candidate of candidates)
|
|
162
|
-
if (focus(candidate, { select }), document.activeElement !== previouslyFocusedElement) return;
|
|
163
|
-
}
|
|
164
|
-
function getTabbableEdges(container) {
|
|
165
|
-
const candidates = getTabbableCandidates(container), first = findVisible(candidates, container), last = findVisible(candidates.reverse(), container);
|
|
166
|
-
return [first, last];
|
|
167
|
-
}
|
|
168
|
-
function getTabbableCandidates(container) {
|
|
169
|
-
const nodes = [], walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {
|
|
170
|
-
acceptNode: (node) => {
|
|
171
|
-
const isHiddenInput = node.tagName === "INPUT" && node.type === "hidden";
|
|
172
|
-
return node.disabled || node.hidden || isHiddenInput ? NodeFilter.FILTER_SKIP : node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;
|
|
173
|
-
}
|
|
174
|
-
});
|
|
175
|
-
for (; walker.nextNode(); ) nodes.push(walker.currentNode);
|
|
176
|
-
return nodes;
|
|
177
|
-
}
|
|
178
|
-
function findVisible(elements, container) {
|
|
179
|
-
for (const element of elements)
|
|
180
|
-
if (!isHidden(element, { upTo: container })) return element;
|
|
181
|
-
}
|
|
182
|
-
function isHidden(node, { upTo }) {
|
|
183
|
-
if (getComputedStyle(node).visibility === "hidden") return !0;
|
|
184
|
-
for (; node; ) {
|
|
185
|
-
if (upTo !== void 0 && node === upTo) return !1;
|
|
186
|
-
if (getComputedStyle(node).display === "none") return !0;
|
|
187
|
-
node = node.parentElement;
|
|
188
|
-
}
|
|
189
|
-
return !1;
|
|
190
|
-
}
|
|
191
|
-
function isSelectableInput(element) {
|
|
192
|
-
return element instanceof HTMLInputElement && "select" in element;
|
|
193
|
-
}
|
|
194
|
-
function focus(element, { select = !1 } = {}) {
|
|
195
|
-
if (element?.focus) {
|
|
196
|
-
const previouslyFocusedElement = document.activeElement;
|
|
197
|
-
try {
|
|
198
|
-
element.focus({ preventScroll: !0 }), element !== previouslyFocusedElement && isSelectableInput(element) && select && element.select();
|
|
199
|
-
} catch {
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
const focusScopesStack = createFocusScopesStack();
|
|
204
|
-
function createFocusScopesStack() {
|
|
205
|
-
let stack = [];
|
|
206
|
-
return {
|
|
207
|
-
add(focusScope) {
|
|
208
|
-
const activeFocusScope = stack[0];
|
|
209
|
-
focusScope !== activeFocusScope && activeFocusScope?.pause(), stack = arrayRemove(stack, focusScope), stack.unshift(focusScope);
|
|
210
|
-
},
|
|
211
|
-
remove(focusScope) {
|
|
212
|
-
stack = arrayRemove(stack, focusScope), stack[0]?.resume();
|
|
213
|
-
}
|
|
214
|
-
};
|
|
215
|
-
}
|
|
216
|
-
function arrayRemove(array, item) {
|
|
217
|
-
const updatedArray = [...array], index = updatedArray.indexOf(item);
|
|
218
|
-
return index !== -1 && updatedArray.splice(index, 1), updatedArray;
|
|
219
|
-
}
|
|
220
|
-
function removeLinks(items) {
|
|
221
|
-
return items.filter((item) => item.tagName !== "A");
|
|
222
|
-
}
|
|
223
|
-
export {
|
|
224
|
-
FocusScope,
|
|
225
|
-
useFocusScope
|
|
226
|
-
};
|
|
227
|
-
//# sourceMappingURL=FocusScope.js.map
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/FocusScope.tsx"],
|
|
4
|
-
"mappings": "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",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { createContextScope } from "@tamagui/create-context";
|
|
2
|
-
import { useEvent } from "@tamagui/use-event";
|
|
3
|
-
import * as React from "react";
|
|
4
|
-
import { jsx } from "react/jsx-runtime";
|
|
5
|
-
const FOCUS_SCOPE_CONTROLLER_NAME = "FocusScopeController", [createFocusScopeControllerContext, createFocusScopeControllerScope] = createContextScope(FOCUS_SCOPE_CONTROLLER_NAME), [FocusScopeControllerProvider, useFocusScopeControllerContext] = createFocusScopeControllerContext(
|
|
6
|
-
FOCUS_SCOPE_CONTROLLER_NAME
|
|
7
|
-
);
|
|
8
|
-
function FocusScopeController(props) {
|
|
9
|
-
const {
|
|
10
|
-
__scopeFocusScope,
|
|
11
|
-
children,
|
|
12
|
-
enabled,
|
|
13
|
-
loop,
|
|
14
|
-
trapped,
|
|
15
|
-
onMountAutoFocus,
|
|
16
|
-
onUnmountAutoFocus,
|
|
17
|
-
forceUnmount,
|
|
18
|
-
focusOnIdle
|
|
19
|
-
} = props, stableOnMountAutoFocus = useEvent(onMountAutoFocus), stableOnUnmountAutoFocus = useEvent(onUnmountAutoFocus), contextValue = React.useMemo(
|
|
20
|
-
() => ({
|
|
21
|
-
enabled,
|
|
22
|
-
loop,
|
|
23
|
-
trapped,
|
|
24
|
-
onMountAutoFocus: stableOnMountAutoFocus,
|
|
25
|
-
onUnmountAutoFocus: stableOnUnmountAutoFocus,
|
|
26
|
-
forceUnmount,
|
|
27
|
-
focusOnIdle
|
|
28
|
-
}),
|
|
29
|
-
[
|
|
30
|
-
enabled,
|
|
31
|
-
loop,
|
|
32
|
-
trapped,
|
|
33
|
-
stableOnMountAutoFocus,
|
|
34
|
-
stableOnUnmountAutoFocus,
|
|
35
|
-
forceUnmount,
|
|
36
|
-
focusOnIdle
|
|
37
|
-
]
|
|
38
|
-
);
|
|
39
|
-
return /* @__PURE__ */ jsx(FocusScopeControllerProvider, { scope: __scopeFocusScope, ...contextValue, children });
|
|
40
|
-
}
|
|
41
|
-
const FocusScopeControllerComponent = FocusScopeController;
|
|
42
|
-
export {
|
|
43
|
-
FocusScopeControllerComponent as FocusScopeController,
|
|
44
|
-
FocusScopeControllerProvider,
|
|
45
|
-
createFocusScopeControllerScope,
|
|
46
|
-
useFocusScopeControllerContext
|
|
47
|
-
};
|
|
48
|
-
//# sourceMappingURL=FocusScopeController.js.map
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/FocusScopeController.tsx"],
|
|
4
|
-
"mappings": "AAAA,SAAS,0BAA0B;AACnC,SAAS,gBAAgB;AACzB,YAAY,WAAW;AA8DnB;AA1DJ,MAAM,8BAA8B,wBAE9B,CAAC,mCAAmC,+BAA+B,IACvE,mBAAmB,2BAA2B,GAI1C,CAAC,8BAA8B,8BAA8B,IACjE;AAAA,EACE;AACF;AAUF,SAAS,qBAAqB,OAA+C;AAC3E,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,OAEE,yBAAyB,SAAS,gBAAgB,GAClD,2BAA2B,SAAS,kBAAkB,GAEtD,eAAe,MAAM;AAAA,IACzB,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA,kBAAkB;AAAA,MAClB,oBAAoB;AAAA,MACpB;AAAA,MACA;AAAA,IACF;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,SACE,oBAAC,gCAA6B,OAAO,mBAAoB,GAAG,cACzD,UACH;AAEJ;AAEA,MAAM,gCAAgC;",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|
package/dist/jsx/types.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
//# sourceMappingURL=types.js.map
|