@tamagui/focus-scope 1.43.2 → 1.43.3

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.
@@ -28,139 +28,146 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
29
  var FocusScope_exports = {};
30
30
  __export(FocusScope_exports, {
31
- FocusScope: () => FocusScope
31
+ FocusScope: () => FocusScope,
32
+ useFocusScope: () => useFocusScope
32
33
  });
33
34
  module.exports = __toCommonJS(FocusScope_exports);
35
+ var import_jsx_runtime = require("react/jsx-runtime");
34
36
  var import_compose_refs = require("@tamagui/compose-refs");
35
37
  var import_use_event = require("@tamagui/use-event");
36
38
  var React = __toESM(require("react"));
37
39
  const AUTOFOCUS_ON_MOUNT = "focusScope.autoFocusOnMount";
38
40
  const AUTOFOCUS_ON_UNMOUNT = "focusScope.autoFocusOnUnmount";
39
41
  const EVENT_OPTIONS = { bubbles: false, cancelable: true };
40
- const FOCUS_SCOPE_NAME = "FocusScope";
41
42
  const FocusScope = React.forwardRef(
42
- (props, forwardedRef) => {
43
- const {
44
- loop = false,
45
- trapped = false,
46
- onMountAutoFocus: onMountAutoFocusProp,
47
- onUnmountAutoFocus: onUnmountAutoFocusProp,
48
- children,
49
- forceUnmount,
50
- ...scopeProps
51
- } = props;
52
- const [container, setContainer] = React.useState(null);
53
- const onMountAutoFocus = (0, import_use_event.useEvent)(onMountAutoFocusProp);
54
- const onUnmountAutoFocus = (0, import_use_event.useEvent)(onUnmountAutoFocusProp);
55
- const lastFocusedElementRef = React.useRef(null);
56
- const composedRefs = (0, import_compose_refs.useComposedRefs)(forwardedRef, (node) => setContainer(node));
57
- const focusScope = React.useRef({
58
- paused: false,
59
- pause() {
60
- this.paused = true;
61
- },
62
- resume() {
63
- this.paused = false;
43
+ function FocusScope2(props, forwardedRef) {
44
+ const childProps = useFocusScope(props, forwardedRef);
45
+ if (typeof props.children === "function") {
46
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: props.children(childProps) });
47
+ }
48
+ return React.cloneElement(React.Children.only(props.children), childProps);
49
+ }
50
+ );
51
+ function useFocusScope(props, forwardedRef) {
52
+ const {
53
+ loop = false,
54
+ trapped = false,
55
+ onMountAutoFocus: onMountAutoFocusProp,
56
+ onUnmountAutoFocus: onUnmountAutoFocusProp,
57
+ forceUnmount,
58
+ ...scopeProps
59
+ } = props;
60
+ const [container, setContainer] = React.useState(null);
61
+ const onMountAutoFocus = (0, import_use_event.useEvent)(onMountAutoFocusProp);
62
+ const onUnmountAutoFocus = (0, import_use_event.useEvent)(onUnmountAutoFocusProp);
63
+ const lastFocusedElementRef = React.useRef(null);
64
+ const composedRefs = (0, import_compose_refs.useComposedRefs)(forwardedRef, (node) => setContainer(node));
65
+ const focusScope = React.useRef({
66
+ paused: false,
67
+ pause() {
68
+ this.paused = true;
69
+ },
70
+ resume() {
71
+ this.paused = false;
72
+ }
73
+ }).current;
74
+ React.useEffect(() => {
75
+ if (!trapped)
76
+ return;
77
+ function handleFocusIn(event) {
78
+ if (focusScope.paused || !container)
79
+ return;
80
+ const target = event.target;
81
+ if (container.contains(target)) {
82
+ lastFocusedElementRef.current = target;
83
+ } else {
84
+ focus(lastFocusedElementRef.current, { select: true });
64
85
  }
65
- }).current;
66
- React.useEffect(() => {
67
- if (!trapped)
86
+ }
87
+ function handleFocusOut(event) {
88
+ if (focusScope.paused || !container)
68
89
  return;
69
- function handleFocusIn(event) {
70
- if (focusScope.paused || !container)
71
- return;
72
- const target = event.target;
73
- if (container.contains(target)) {
74
- lastFocusedElementRef.current = target;
75
- } else {
76
- focus(lastFocusedElementRef.current, { select: true });
77
- }
90
+ if (!container.contains(event.relatedTarget)) {
91
+ focus(lastFocusedElementRef.current, { select: true });
78
92
  }
79
- function handleFocusOut(event) {
80
- if (focusScope.paused || !container)
81
- return;
82
- if (!container.contains(event.relatedTarget)) {
83
- focus(lastFocusedElementRef.current, { select: true });
93
+ }
94
+ document.addEventListener("focusin", handleFocusIn);
95
+ document.addEventListener("focusout", handleFocusOut);
96
+ return () => {
97
+ document.removeEventListener("focusin", handleFocusIn);
98
+ document.removeEventListener("focusout", handleFocusOut);
99
+ };
100
+ }, [trapped, forceUnmount, container, focusScope.paused]);
101
+ React.useEffect(() => {
102
+ if (!container)
103
+ return;
104
+ if (forceUnmount)
105
+ return;
106
+ focusScopesStack.add(focusScope);
107
+ const previouslyFocusedElement = document.activeElement;
108
+ const hasFocusedCandidate = container.contains(previouslyFocusedElement);
109
+ if (!hasFocusedCandidate) {
110
+ const mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS);
111
+ container.addEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);
112
+ container.dispatchEvent(mountEvent);
113
+ if (!mountEvent.defaultPrevented) {
114
+ focusFirst(removeLinks(getTabbableCandidates(container)), { select: true });
115
+ if (document.activeElement === previouslyFocusedElement) {
116
+ focus(container);
84
117
  }
85
118
  }
86
- document.addEventListener("focusin", handleFocusIn);
87
- document.addEventListener("focusout", handleFocusOut);
88
- return () => {
89
- document.removeEventListener("focusin", handleFocusIn);
90
- document.removeEventListener("focusout", handleFocusOut);
91
- };
92
- }, [trapped, forceUnmount, container, focusScope.paused]);
93
- React.useEffect(() => {
94
- if (!container)
119
+ }
120
+ return () => {
121
+ container.removeEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);
122
+ const unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS);
123
+ container.addEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);
124
+ container.dispatchEvent(unmountEvent);
125
+ if (!unmountEvent.defaultPrevented) {
126
+ focus(previouslyFocusedElement ?? document.body, { select: true });
127
+ }
128
+ container.removeEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);
129
+ focusScopesStack.remove(focusScope);
130
+ };
131
+ }, [container, forceUnmount, onMountAutoFocus, onUnmountAutoFocus, focusScope]);
132
+ const handleKeyDown = React.useCallback(
133
+ (event) => {
134
+ if (!trapped)
135
+ return;
136
+ if (!loop)
95
137
  return;
96
- if (forceUnmount)
138
+ if (focusScope.paused)
97
139
  return;
98
- focusScopesStack.add(focusScope);
99
- const previouslyFocusedElement = document.activeElement;
100
- const hasFocusedCandidate = container.contains(previouslyFocusedElement);
101
- if (!hasFocusedCandidate) {
102
- const mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS);
103
- container.addEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);
104
- container.dispatchEvent(mountEvent);
105
- if (!mountEvent.defaultPrevented) {
106
- focusFirst(removeLinks(getTabbableCandidates(container)), { select: true });
107
- if (document.activeElement === previouslyFocusedElement) {
108
- focus(container);
140
+ const isTabKey = event.key === "Tab" && !event.altKey && !event.ctrlKey && !event.metaKey;
141
+ const focusedElement = document.activeElement;
142
+ if (isTabKey && focusedElement) {
143
+ const container2 = event.currentTarget;
144
+ const [first, last] = getTabbableEdges(container2);
145
+ const hasTabbableElementsInside = first && last;
146
+ if (!hasTabbableElementsInside) {
147
+ if (focusedElement === container2)
148
+ event.preventDefault();
149
+ } else {
150
+ if (!event.shiftKey && focusedElement === last) {
151
+ event.preventDefault();
152
+ if (loop)
153
+ focus(first, { select: true });
154
+ } else if (event.shiftKey && focusedElement === first) {
155
+ event.preventDefault();
156
+ if (loop)
157
+ focus(last, { select: true });
109
158
  }
110
159
  }
111
160
  }
112
- return () => {
113
- container.removeEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);
114
- const unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS);
115
- container.addEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);
116
- container.dispatchEvent(unmountEvent);
117
- if (!unmountEvent.defaultPrevented) {
118
- focus(previouslyFocusedElement ?? document.body, { select: true });
119
- }
120
- container.removeEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);
121
- focusScopesStack.remove(focusScope);
122
- };
123
- }, [container, forceUnmount, onMountAutoFocus, onUnmountAutoFocus, focusScope]);
124
- const handleKeyDown = React.useCallback(
125
- (event) => {
126
- if (!(loop || trapped))
127
- return;
128
- if (focusScope.paused)
129
- return;
130
- const isTabKey = event.key === "Tab" && !event.altKey && !event.ctrlKey && !event.metaKey;
131
- const focusedElement = document.activeElement;
132
- if (isTabKey && focusedElement) {
133
- const container2 = event.currentTarget;
134
- const [first, last] = getTabbableEdges(container2);
135
- const hasTabbableElementsInside = first && last;
136
- if (!hasTabbableElementsInside) {
137
- if (focusedElement === container2)
138
- event.preventDefault();
139
- } else {
140
- if (!event.shiftKey && focusedElement === last) {
141
- event.preventDefault();
142
- if (loop)
143
- focus(first, { select: true });
144
- } else if (event.shiftKey && focusedElement === first) {
145
- event.preventDefault();
146
- if (loop)
147
- focus(last, { select: true });
148
- }
149
- }
150
- }
151
- },
152
- [loop, trapped, focusScope.paused]
153
- );
154
- const child = React.Children.only(children);
155
- return React.cloneElement(child, {
156
- tabIndex: -1,
157
- ...scopeProps,
158
- ref: composedRefs,
159
- onKeyDown: handleKeyDown
160
- });
161
- }
162
- );
163
- FocusScope.displayName = FOCUS_SCOPE_NAME;
161
+ },
162
+ [loop, trapped, focusScope.paused]
163
+ );
164
+ return {
165
+ tabIndex: -1,
166
+ ...scopeProps,
167
+ ref: composedRefs,
168
+ onKeyDown: handleKeyDown
169
+ };
170
+ }
164
171
  function focusFirst(candidates, { select = false } = {}) {
165
172
  const previouslyFocusedElement = document.activeElement;
166
173
  for (const candidate of candidates) {
@@ -250,6 +257,7 @@ function removeLinks(items) {
250
257
  }
251
258
  // Annotate the CommonJS export names for ESM import in node:
252
259
  0 && (module.exports = {
253
- FocusScope
260
+ FocusScope,
261
+ useFocusScope
254
262
  });
255
263
  //# sourceMappingURL=FocusScope.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/FocusScope.tsx"],
4
- "mappings": "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",
5
- "names": ["container"]
4
+ "mappings": "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",
5
+ "names": ["FocusScope", "container"]
6
6
  }
@@ -1,133 +1,139 @@
1
+ import { Fragment, jsx } from "react/jsx-runtime";
1
2
  import { useComposedRefs } from "@tamagui/compose-refs";
2
3
  import { useEvent } from "@tamagui/use-event";
3
4
  import * as React from "react";
4
5
  const AUTOFOCUS_ON_MOUNT = "focusScope.autoFocusOnMount";
5
6
  const AUTOFOCUS_ON_UNMOUNT = "focusScope.autoFocusOnUnmount";
6
7
  const EVENT_OPTIONS = { bubbles: false, cancelable: true };
7
- const FOCUS_SCOPE_NAME = "FocusScope";
8
8
  const FocusScope = React.forwardRef(
9
- (props, forwardedRef) => {
10
- const {
11
- loop = false,
12
- trapped = false,
13
- onMountAutoFocus: onMountAutoFocusProp,
14
- onUnmountAutoFocus: onUnmountAutoFocusProp,
15
- children,
16
- forceUnmount,
17
- ...scopeProps
18
- } = props;
19
- const [container, setContainer] = React.useState(null);
20
- const onMountAutoFocus = useEvent(onMountAutoFocusProp);
21
- const onUnmountAutoFocus = useEvent(onUnmountAutoFocusProp);
22
- const lastFocusedElementRef = React.useRef(null);
23
- const composedRefs = useComposedRefs(forwardedRef, (node) => setContainer(node));
24
- const focusScope = React.useRef({
25
- paused: false,
26
- pause() {
27
- this.paused = true;
28
- },
29
- resume() {
30
- this.paused = false;
9
+ function FocusScope2(props, forwardedRef) {
10
+ const childProps = useFocusScope(props, forwardedRef);
11
+ if (typeof props.children === "function") {
12
+ return /* @__PURE__ */ jsx(Fragment, { children: props.children(childProps) });
13
+ }
14
+ return React.cloneElement(React.Children.only(props.children), childProps);
15
+ }
16
+ );
17
+ function useFocusScope(props, forwardedRef) {
18
+ const {
19
+ loop = false,
20
+ trapped = false,
21
+ onMountAutoFocus: onMountAutoFocusProp,
22
+ onUnmountAutoFocus: onUnmountAutoFocusProp,
23
+ forceUnmount,
24
+ ...scopeProps
25
+ } = props;
26
+ const [container, setContainer] = React.useState(null);
27
+ const onMountAutoFocus = useEvent(onMountAutoFocusProp);
28
+ const onUnmountAutoFocus = useEvent(onUnmountAutoFocusProp);
29
+ const lastFocusedElementRef = React.useRef(null);
30
+ const composedRefs = useComposedRefs(forwardedRef, (node) => setContainer(node));
31
+ const focusScope = React.useRef({
32
+ paused: false,
33
+ pause() {
34
+ this.paused = true;
35
+ },
36
+ resume() {
37
+ this.paused = false;
38
+ }
39
+ }).current;
40
+ React.useEffect(() => {
41
+ if (!trapped)
42
+ return;
43
+ function handleFocusIn(event) {
44
+ if (focusScope.paused || !container)
45
+ return;
46
+ const target = event.target;
47
+ if (container.contains(target)) {
48
+ lastFocusedElementRef.current = target;
49
+ } else {
50
+ focus(lastFocusedElementRef.current, { select: true });
31
51
  }
32
- }).current;
33
- React.useEffect(() => {
34
- if (!trapped)
52
+ }
53
+ function handleFocusOut(event) {
54
+ if (focusScope.paused || !container)
35
55
  return;
36
- function handleFocusIn(event) {
37
- if (focusScope.paused || !container)
38
- return;
39
- const target = event.target;
40
- if (container.contains(target)) {
41
- lastFocusedElementRef.current = target;
42
- } else {
43
- focus(lastFocusedElementRef.current, { select: true });
44
- }
56
+ if (!container.contains(event.relatedTarget)) {
57
+ focus(lastFocusedElementRef.current, { select: true });
45
58
  }
46
- function handleFocusOut(event) {
47
- if (focusScope.paused || !container)
48
- return;
49
- if (!container.contains(event.relatedTarget)) {
50
- focus(lastFocusedElementRef.current, { select: true });
59
+ }
60
+ document.addEventListener("focusin", handleFocusIn);
61
+ document.addEventListener("focusout", handleFocusOut);
62
+ return () => {
63
+ document.removeEventListener("focusin", handleFocusIn);
64
+ document.removeEventListener("focusout", handleFocusOut);
65
+ };
66
+ }, [trapped, forceUnmount, container, focusScope.paused]);
67
+ React.useEffect(() => {
68
+ if (!container)
69
+ return;
70
+ if (forceUnmount)
71
+ return;
72
+ focusScopesStack.add(focusScope);
73
+ const previouslyFocusedElement = document.activeElement;
74
+ const hasFocusedCandidate = container.contains(previouslyFocusedElement);
75
+ if (!hasFocusedCandidate) {
76
+ const mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS);
77
+ container.addEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);
78
+ container.dispatchEvent(mountEvent);
79
+ if (!mountEvent.defaultPrevented) {
80
+ focusFirst(removeLinks(getTabbableCandidates(container)), { select: true });
81
+ if (document.activeElement === previouslyFocusedElement) {
82
+ focus(container);
51
83
  }
52
84
  }
53
- document.addEventListener("focusin", handleFocusIn);
54
- document.addEventListener("focusout", handleFocusOut);
55
- return () => {
56
- document.removeEventListener("focusin", handleFocusIn);
57
- document.removeEventListener("focusout", handleFocusOut);
58
- };
59
- }, [trapped, forceUnmount, container, focusScope.paused]);
60
- React.useEffect(() => {
61
- if (!container)
85
+ }
86
+ return () => {
87
+ container.removeEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);
88
+ const unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS);
89
+ container.addEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);
90
+ container.dispatchEvent(unmountEvent);
91
+ if (!unmountEvent.defaultPrevented) {
92
+ focus(previouslyFocusedElement ?? document.body, { select: true });
93
+ }
94
+ container.removeEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);
95
+ focusScopesStack.remove(focusScope);
96
+ };
97
+ }, [container, forceUnmount, onMountAutoFocus, onUnmountAutoFocus, focusScope]);
98
+ const handleKeyDown = React.useCallback(
99
+ (event) => {
100
+ if (!trapped)
101
+ return;
102
+ if (!loop)
62
103
  return;
63
- if (forceUnmount)
104
+ if (focusScope.paused)
64
105
  return;
65
- focusScopesStack.add(focusScope);
66
- const previouslyFocusedElement = document.activeElement;
67
- const hasFocusedCandidate = container.contains(previouslyFocusedElement);
68
- if (!hasFocusedCandidate) {
69
- const mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS);
70
- container.addEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);
71
- container.dispatchEvent(mountEvent);
72
- if (!mountEvent.defaultPrevented) {
73
- focusFirst(removeLinks(getTabbableCandidates(container)), { select: true });
74
- if (document.activeElement === previouslyFocusedElement) {
75
- focus(container);
106
+ const isTabKey = event.key === "Tab" && !event.altKey && !event.ctrlKey && !event.metaKey;
107
+ const focusedElement = document.activeElement;
108
+ if (isTabKey && focusedElement) {
109
+ const container2 = event.currentTarget;
110
+ const [first, last] = getTabbableEdges(container2);
111
+ const hasTabbableElementsInside = first && last;
112
+ if (!hasTabbableElementsInside) {
113
+ if (focusedElement === container2)
114
+ event.preventDefault();
115
+ } else {
116
+ if (!event.shiftKey && focusedElement === last) {
117
+ event.preventDefault();
118
+ if (loop)
119
+ focus(first, { select: true });
120
+ } else if (event.shiftKey && focusedElement === first) {
121
+ event.preventDefault();
122
+ if (loop)
123
+ focus(last, { select: true });
76
124
  }
77
125
  }
78
126
  }
79
- return () => {
80
- container.removeEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);
81
- const unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS);
82
- container.addEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);
83
- container.dispatchEvent(unmountEvent);
84
- if (!unmountEvent.defaultPrevented) {
85
- focus(previouslyFocusedElement ?? document.body, { select: true });
86
- }
87
- container.removeEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);
88
- focusScopesStack.remove(focusScope);
89
- };
90
- }, [container, forceUnmount, onMountAutoFocus, onUnmountAutoFocus, focusScope]);
91
- const handleKeyDown = React.useCallback(
92
- (event) => {
93
- if (!(loop || trapped))
94
- return;
95
- if (focusScope.paused)
96
- return;
97
- const isTabKey = event.key === "Tab" && !event.altKey && !event.ctrlKey && !event.metaKey;
98
- const focusedElement = document.activeElement;
99
- if (isTabKey && focusedElement) {
100
- const container2 = event.currentTarget;
101
- const [first, last] = getTabbableEdges(container2);
102
- const hasTabbableElementsInside = first && last;
103
- if (!hasTabbableElementsInside) {
104
- if (focusedElement === container2)
105
- event.preventDefault();
106
- } else {
107
- if (!event.shiftKey && focusedElement === last) {
108
- event.preventDefault();
109
- if (loop)
110
- focus(first, { select: true });
111
- } else if (event.shiftKey && focusedElement === first) {
112
- event.preventDefault();
113
- if (loop)
114
- focus(last, { select: true });
115
- }
116
- }
117
- }
118
- },
119
- [loop, trapped, focusScope.paused]
120
- );
121
- const child = React.Children.only(children);
122
- return React.cloneElement(child, {
123
- tabIndex: -1,
124
- ...scopeProps,
125
- ref: composedRefs,
126
- onKeyDown: handleKeyDown
127
- });
128
- }
129
- );
130
- FocusScope.displayName = FOCUS_SCOPE_NAME;
127
+ },
128
+ [loop, trapped, focusScope.paused]
129
+ );
130
+ return {
131
+ tabIndex: -1,
132
+ ...scopeProps,
133
+ ref: composedRefs,
134
+ onKeyDown: handleKeyDown
135
+ };
136
+ }
131
137
  function focusFirst(candidates, { select = false } = {}) {
132
138
  const previouslyFocusedElement = document.activeElement;
133
139
  for (const candidate of candidates) {
@@ -216,6 +222,7 @@ function removeLinks(items) {
216
222
  return items.filter((item) => item.tagName !== "A");
217
223
  }
218
224
  export {
219
- FocusScope
225
+ FocusScope,
226
+ useFocusScope
220
227
  };
221
228
  //# sourceMappingURL=FocusScope.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/FocusScope.tsx"],
4
- "mappings": "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",
5
- "names": ["container"]
4
+ "mappings": "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",
5
+ "names": ["FocusScope", "container"]
6
6
  }