@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.
Files changed (55) hide show
  1. package/dist/cjs/FocusScope.cjs +284 -167
  2. package/dist/cjs/FocusScope.native.js +28 -26
  3. package/dist/cjs/FocusScope.native.js.map +1 -1
  4. package/dist/cjs/FocusScopeController.cjs +52 -50
  5. package/dist/cjs/FocusScopeController.native.js +49 -47
  6. package/dist/cjs/FocusScopeController.native.js.map +1 -1
  7. package/dist/cjs/index.cjs +7 -5
  8. package/dist/cjs/index.native.js +7 -5
  9. package/dist/cjs/index.native.js.map +1 -1
  10. package/dist/cjs/types.cjs +7 -5
  11. package/dist/cjs/types.native.js +7 -5
  12. package/dist/cjs/types.native.js.map +1 -1
  13. package/dist/esm/FocusScope.mjs +253 -138
  14. package/dist/esm/FocusScope.mjs.map +1 -1
  15. package/dist/esm/FocusScopeController.mjs +24 -24
  16. package/dist/esm/FocusScopeController.mjs.map +1 -1
  17. package/dist/esm/FocusScopeController.native.js +21 -21
  18. package/dist/esm/FocusScopeController.native.js.map +1 -1
  19. package/dist/esm/index.js +2 -2
  20. package/dist/esm/index.js.map +1 -6
  21. package/dist/jsx/FocusScope.mjs +253 -138
  22. package/dist/jsx/FocusScope.mjs.map +1 -1
  23. package/dist/jsx/FocusScope.native.js +28 -26
  24. package/dist/jsx/FocusScope.native.js.map +1 -1
  25. package/dist/jsx/FocusScopeController.mjs +24 -24
  26. package/dist/jsx/FocusScopeController.mjs.map +1 -1
  27. package/dist/jsx/FocusScopeController.native.js +49 -47
  28. package/dist/jsx/FocusScopeController.native.js.map +1 -1
  29. package/dist/jsx/index.js +2 -2
  30. package/dist/jsx/index.js.map +1 -6
  31. package/dist/jsx/index.native.js +7 -5
  32. package/dist/jsx/types.native.js +7 -5
  33. package/package.json +11 -14
  34. package/src/FocusScope.tsx +33 -6
  35. package/types/FocusScope.d.ts.map +1 -1
  36. package/dist/cjs/FocusScope.js +0 -245
  37. package/dist/cjs/FocusScope.js.map +0 -6
  38. package/dist/cjs/FocusScopeController.js +0 -69
  39. package/dist/cjs/FocusScopeController.js.map +0 -6
  40. package/dist/cjs/index.js +0 -16
  41. package/dist/cjs/index.js.map +0 -6
  42. package/dist/cjs/types.js +0 -14
  43. package/dist/cjs/types.js.map +0 -6
  44. package/dist/esm/FocusScope.js +0 -227
  45. package/dist/esm/FocusScope.js.map +0 -6
  46. package/dist/esm/FocusScopeController.js +0 -48
  47. package/dist/esm/FocusScopeController.js.map +0 -6
  48. package/dist/esm/types.js +0 -1
  49. package/dist/esm/types.js.map +0 -6
  50. package/dist/jsx/FocusScope.js +0 -227
  51. package/dist/jsx/FocusScope.js.map +0 -6
  52. package/dist/jsx/FocusScopeController.js +0 -48
  53. package/dist/jsx/FocusScopeController.js.map +0 -6
  54. package/dist/jsx/types.js +0 -1
  55. package/dist/jsx/types.js.map +0 -6
@@ -4,40 +4,42 @@ 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 FocusScope_native_exports = {};
35
37
  __export(FocusScope_native_exports, {
36
38
  FocusScope: () => FocusScope
37
39
  });
38
40
  module.exports = __toCommonJS(FocusScope_native_exports);
39
- var import_react = __toESM(require("react"), 1),
40
- FocusScope = /* @__PURE__ */import_react.default.forwardRef(function (props, _ref) {
41
- return props.children;
42
- });
41
+ var import_react = __toESM(require("react"), 1);
42
+ var FocusScope = /* @__PURE__ */import_react.default.forwardRef(function (props, _ref) {
43
+ return props.children;
44
+ });
43
45
  //# sourceMappingURL=FocusScope.native.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["FocusScope_native_exports","__export","FocusScope","module","exports","__toCommonJS","import_react","__toESM","require","default","forwardRef","props","_ref","children"],"sources":["../../src/FocusScope.native.tsx"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,yBAAA;AAAAC,QAAA,CAAAD,yBAAA;EAAAE,UAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAC,YAAA,CAAAL,yBAAA;AAAA,IAAAM,YAAA,GAAkBC,OAAA,CAAAC,OAAA;EACPN,UAAA,GAA2B,eAAAI,YAAA,CAAAG,OAAA,CAAMC,UAAA,CAAW,UAASC,KAAA,EAAOC,IAAA,EAAM;IACzE,OAAOD,KAAA,CAAME,QAAA;EACjB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["FocusScope_native_exports","__export","FocusScope","module","exports","__toCommonJS","import_react","__toESM","require","default","forwardRef","props","_ref","children"],"sources":["../../src/FocusScope.native.tsx"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,yBAAA;AAAAC,QAAA,CAAAD,yBAAA;EAAAE,UAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAC,YAAA,CAAAL,yBAAA;AAAA,IAAAM,YAAA,GAAkBC,OAAA,CAAAC,OAAA;AACX,IAAIN,UAAA,GAA2B,eAAAI,YAAA,CAAAG,OAAA,CAAMC,UAAA,CAAW,UAASC,KAAA,EAAOC,IAAA,EAAM;EACzE,OAAOD,KAAA,CAAME,QAAA;AACjB,CAAC","ignoreList":[]}
@@ -2,32 +2,32 @@ import { createContextScope } from "@tamagui/create-context";
2
2
  import { useEvent } from "@tamagui/use-event";
3
3
  import * as React from "react";
4
4
  import { jsx } from "react/jsx-runtime";
5
- const FOCUS_SCOPE_CONTROLLER_NAME = "FocusScopeController",
6
- [createFocusScopeControllerContext, createFocusScopeControllerScope] = createContextScope(FOCUS_SCOPE_CONTROLLER_NAME),
7
- [FocusScopeControllerProvider, useFocusScopeControllerContext] = createFocusScopeControllerContext(FOCUS_SCOPE_CONTROLLER_NAME);
5
+ const FOCUS_SCOPE_CONTROLLER_NAME = "FocusScopeController";
6
+ const [createFocusScopeControllerContext, createFocusScopeControllerScope] = createContextScope(FOCUS_SCOPE_CONTROLLER_NAME);
7
+ const [FocusScopeControllerProvider, useFocusScopeControllerContext] = createFocusScopeControllerContext(FOCUS_SCOPE_CONTROLLER_NAME);
8
8
  function FocusScopeController(props) {
9
9
  const {
10
- __scopeFocusScope,
11
- children,
12
- enabled,
13
- loop,
14
- trapped,
15
- onMountAutoFocus,
16
- onUnmountAutoFocus,
17
- forceUnmount,
18
- focusOnIdle
19
- } = props,
20
- stableOnMountAutoFocus = useEvent(onMountAutoFocus),
21
- stableOnUnmountAutoFocus = useEvent(onUnmountAutoFocus),
22
- contextValue = React.useMemo(() => ({
23
- enabled,
24
- loop,
25
- trapped,
26
- onMountAutoFocus: stableOnMountAutoFocus,
27
- onUnmountAutoFocus: stableOnUnmountAutoFocus,
28
- forceUnmount,
29
- focusOnIdle
30
- }), [enabled, loop, trapped, stableOnMountAutoFocus, stableOnUnmountAutoFocus, forceUnmount, focusOnIdle]);
10
+ __scopeFocusScope,
11
+ children,
12
+ enabled,
13
+ loop,
14
+ trapped,
15
+ onMountAutoFocus,
16
+ onUnmountAutoFocus,
17
+ forceUnmount,
18
+ focusOnIdle
19
+ } = props;
20
+ const stableOnMountAutoFocus = useEvent(onMountAutoFocus);
21
+ const stableOnUnmountAutoFocus = useEvent(onUnmountAutoFocus);
22
+ const contextValue = React.useMemo(() => ({
23
+ enabled,
24
+ loop,
25
+ trapped,
26
+ onMountAutoFocus: stableOnMountAutoFocus,
27
+ onUnmountAutoFocus: stableOnUnmountAutoFocus,
28
+ forceUnmount,
29
+ focusOnIdle
30
+ }), [enabled, loop, trapped, stableOnMountAutoFocus, stableOnUnmountAutoFocus, forceUnmount, focusOnIdle]);
31
31
  return /* @__PURE__ */jsx(FocusScopeControllerProvider, {
32
32
  scope: __scopeFocusScope,
33
33
  ...contextValue,
@@ -1 +1 @@
1
- {"version":3,"names":["createContextScope","useEvent","React","jsx","FOCUS_SCOPE_CONTROLLER_NAME","createFocusScopeControllerContext","createFocusScopeControllerScope","FocusScopeControllerProvider","useFocusScopeControllerContext","FocusScopeController","props","__scopeFocusScope","children","enabled","loop","trapped","onMountAutoFocus","onUnmountAutoFocus","forceUnmount","focusOnIdle","stableOnMountAutoFocus","stableOnUnmountAutoFocus","contextValue","useMemo","scope","FocusScopeControllerComponent"],"sources":["../../src/FocusScopeController.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,kBAAA,QAA0B;AACnC,SAASC,QAAA,QAAgB;AACzB,YAAYC,KAAA,MAAW;AA8DnB,SAAAC,GAAA;AA1DJ,MAAMC,2BAAA,GAA8B;EAE9B,CAACC,iCAAA,EAAmCC,+BAA+B,IACvEN,kBAAA,CAAmBI,2BAA2B;EAI1C,CAACG,4BAAA,EAA8BC,8BAA8B,IACjEH,iCAAA,CACED,2BACF;AAUF,SAASK,qBAAqBC,KAAA,EAA+C;EAC3E,MAAM;MACJC,iBAAA;MACAC,QAAA;MACAC,OAAA;MACAC,IAAA;MACAC,OAAA;MACAC,gBAAA;MACAC,kBAAA;MACAC,YAAA;MACAC;IACF,IAAIT,KAAA;IAEEU,sBAAA,GAAyBnB,QAAA,CAASe,gBAAgB;IAClDK,wBAAA,GAA2BpB,QAAA,CAASgB,kBAAkB;IAEtDK,YAAA,GAAepB,KAAA,CAAMqB,OAAA,CACzB,OAAO;MACLV,OAAA;MACAC,IAAA;MACAC,OAAA;MACAC,gBAAA,EAAkBI,sBAAA;MAClBH,kBAAA,EAAoBI,wBAAA;MACpBH,YAAA;MACAC;IACF,IACA,CACEN,OAAA,EACAC,IAAA,EACAC,OAAA,EACAK,sBAAA,EACAC,wBAAA,EACAH,YAAA,EACAC,WAAA,CAEJ;EAEA,OACE,eAAAhB,GAAA,CAACI,4BAAA;IAA6BiB,KAAA,EAAOb,iBAAA;IAAoB,GAAGW,YAAA;IACzDV;EAAA,CACH;AAEJ;AAEA,MAAMa,6BAAA,GAAgChB,oBAAA","ignoreList":[]}
1
+ {"version":3,"names":["createContextScope","useEvent","React","jsx","FOCUS_SCOPE_CONTROLLER_NAME","createFocusScopeControllerContext","createFocusScopeControllerScope","FocusScopeControllerProvider","useFocusScopeControllerContext","FocusScopeController","props","__scopeFocusScope","children","enabled","loop","trapped","onMountAutoFocus","onUnmountAutoFocus","forceUnmount","focusOnIdle","stableOnMountAutoFocus","stableOnUnmountAutoFocus","contextValue","useMemo","scope","FocusScopeControllerComponent"],"sources":["../../src/FocusScopeController.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,kBAAA,QAA0B;AACnC,SAASC,QAAA,QAAgB;AACzB,YAAYC,KAAA,MAAW;AA8DnB,SAAAC,GAAA;AA1DJ,MAAMC,2BAAA,GAA8B;AAEpC,MAAM,CAACC,iCAAA,EAAmCC,+BAA+B,IACvEN,kBAAA,CAAmBI,2BAA2B;AAIhD,MAAM,CAACG,4BAAA,EAA8BC,8BAA8B,IACjEH,iCAAA,CACED,2BACF;AAUF,SAASK,qBAAqBC,KAAA,EAA+C;EAC3E,MAAM;IACJC,iBAAA;IACAC,QAAA;IACAC,OAAA;IACAC,IAAA;IACAC,OAAA;IACAC,gBAAA;IACAC,kBAAA;IACAC,YAAA;IACAC;EACF,IAAIT,KAAA;EAEJ,MAAMU,sBAAA,GAAyBnB,QAAA,CAASe,gBAAgB;EACxD,MAAMK,wBAAA,GAA2BpB,QAAA,CAASgB,kBAAkB;EAE5D,MAAMK,YAAA,GAAepB,KAAA,CAAMqB,OAAA,CACzB,OAAO;IACLV,OAAA;IACAC,IAAA;IACAC,OAAA;IACAC,gBAAA,EAAkBI,sBAAA;IAClBH,kBAAA,EAAoBI,wBAAA;IACpBH,YAAA;IACAC;EACF,IACA,CACEN,OAAA,EACAC,IAAA,EACAC,OAAA,EACAK,sBAAA,EACAC,wBAAA,EACAH,YAAA,EACAC,WAAA,CAEJ;EAEA,OACE,eAAAhB,GAAA,CAACI,4BAAA;IAA6BiB,KAAA,EAAOb,iBAAA;IAAoB,GAAGW,YAAA;IACzDV;EAAA,CACH;AAEJ;AAEA,MAAMa,6BAAA,GAAgChB,oBAAA","ignoreList":[]}
@@ -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 FocusScopeController_exports = {};
35
37
  __export(FocusScopeController_exports, {
36
38
  FocusScopeController: () => FocusScopeControllerComponent,
@@ -39,38 +41,38 @@ __export(FocusScopeController_exports, {
39
41
  useFocusScopeControllerContext: () => useFocusScopeControllerContext
40
42
  });
41
43
  module.exports = __toCommonJS(FocusScopeController_exports);
42
- var import_jsx_runtime = require("react/jsx-runtime"),
43
- import_create_context = require("@tamagui/create-context"),
44
- import_use_event = require("@tamagui/use-event"),
45
- React = __toESM(require("react"), 1),
46
- FOCUS_SCOPE_CONTROLLER_NAME = "FocusScopeController",
47
- [createFocusScopeControllerContext, createFocusScopeControllerScope] = (0, import_create_context.createContextScope)(FOCUS_SCOPE_CONTROLLER_NAME),
48
- [FocusScopeControllerProvider, useFocusScopeControllerContext] = createFocusScopeControllerContext(FOCUS_SCOPE_CONTROLLER_NAME);
44
+ var import_jsx_runtime = require("react/jsx-runtime");
45
+ var import_create_context = require("@tamagui/create-context");
46
+ var import_use_event = require("@tamagui/use-event");
47
+ var React = __toESM(require("react"), 1);
48
+ var FOCUS_SCOPE_CONTROLLER_NAME = "FocusScopeController";
49
+ var [createFocusScopeControllerContext, createFocusScopeControllerScope] = (0, import_create_context.createContextScope)(FOCUS_SCOPE_CONTROLLER_NAME);
50
+ var [FocusScopeControllerProvider, useFocusScopeControllerContext] = createFocusScopeControllerContext(FOCUS_SCOPE_CONTROLLER_NAME);
49
51
  function FocusScopeController(props) {
50
52
  var {
51
- __scopeFocusScope,
52
- children,
53
+ __scopeFocusScope,
54
+ children,
55
+ enabled,
56
+ loop,
57
+ trapped,
58
+ onMountAutoFocus,
59
+ onUnmountAutoFocus,
60
+ forceUnmount,
61
+ focusOnIdle
62
+ } = props;
63
+ var stableOnMountAutoFocus = (0, import_use_event.useEvent)(onMountAutoFocus);
64
+ var stableOnUnmountAutoFocus = (0, import_use_event.useEvent)(onUnmountAutoFocus);
65
+ var contextValue = React.useMemo(function () {
66
+ return {
53
67
  enabled,
54
68
  loop,
55
69
  trapped,
56
- onMountAutoFocus,
57
- onUnmountAutoFocus,
70
+ onMountAutoFocus: stableOnMountAutoFocus,
71
+ onUnmountAutoFocus: stableOnUnmountAutoFocus,
58
72
  forceUnmount,
59
73
  focusOnIdle
60
- } = props,
61
- stableOnMountAutoFocus = (0, import_use_event.useEvent)(onMountAutoFocus),
62
- stableOnUnmountAutoFocus = (0, import_use_event.useEvent)(onUnmountAutoFocus),
63
- contextValue = React.useMemo(function () {
64
- return {
65
- enabled,
66
- loop,
67
- trapped,
68
- onMountAutoFocus: stableOnMountAutoFocus,
69
- onUnmountAutoFocus: stableOnUnmountAutoFocus,
70
- forceUnmount,
71
- focusOnIdle
72
- };
73
- }, [enabled, loop, trapped, stableOnMountAutoFocus, stableOnUnmountAutoFocus, forceUnmount, focusOnIdle]);
74
+ };
75
+ }, [enabled, loop, trapped, stableOnMountAutoFocus, stableOnUnmountAutoFocus, forceUnmount, focusOnIdle]);
74
76
  return /* @__PURE__ */(0, import_jsx_runtime.jsx)(FocusScopeControllerProvider, {
75
77
  scope: __scopeFocusScope,
76
78
  ...contextValue,
@@ -1 +1 @@
1
- {"version":3,"names":["__create","Object","create","__defProp","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__getProtoOf","getPrototypeOf","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toESM","mod","isNodeMode","__esModule","value","__toCommonJS","FocusScopeController_exports","FocusScopeController","FocusScopeControllerComponent","FocusScopeControllerProvider","createFocusScopeControllerScope","useFocusScopeControllerContext","module","exports","import_jsx_runtime","require","import_create_context","import_use_event","React","FOCUS_SCOPE_CONTROLLER_NAME","createFocusScopeControllerContext","createContextScope","props","__scopeFocusScope","children","enabled","loop","trapped","onMountAutoFocus","onUnmountAutoFocus","forceUnmount","focusOnIdle","stableOnMountAutoFocus","useEvent","stableOnUnmountAutoFocus","contextValue","useMemo"],"sources":["../../src/FocusScopeController.tsx"],"sourcesContent":[null],"mappings":"AAAA,YAAS;;AACT,IAAAA,QAAS,GAAAC,MAAA,CAAAC,MAAgB;AACzB,IAAAC,SAAY,GAAAF,MAAA,CAAWG,cAAA;AA8DnB,IAAAC,gBAAA,GAAAJ,MAAA,CAAAK,wBAAA;AA1DJ,IAAAC,iBAAM,GAAAN,MAAA,CAAAO,mBAA8B;AAQlC,IACEC,YAAA,GAAAR,MAAA,CAAAS,cAAA;EAAAC,YAAA,GAAAV,MAAA,CAAAW,SAAA,CAAAC,cAAA;AACF,IAAAC,QAAA,GAAAA,CAAAC,MAAA,EAAAC,GAAA;IAUF,SAASC,IAAA,IAAAD,GAAA,EACPb,SAAM,CAAAY,MAAA,EAAAE,IAAA;MAAAC,GAAA,EAAAF,GAAA,CAAAC,IAAA;MAAAE,UAAA;IAAA;EAAA;EAAAC,WACJ,GAAAA,CAAAC,EAAA,EAAAC,IAAA,EAAAC,MAAA,EAAAC,IAAA;IAAA,IACAF,IAAA,WAAAA,IAAA,uBAAAA,IAAA,gBACA,SAAAG,GAAA,IAAAlB,iBAAA,CAAAe,IAAA,GACA,CAAAX,YAAA,CAAAe,IAAA,CAAAL,EAAA,EAAAI,GAAA,KAAAA,GAAA,KAAAF,MAAA,IAAApB,SAAA,CAAAkB,EAAA,EAAAI,GAAA;MAAAP,GAAA,EAAAA,CAAA,KAAAI,IAAA,CAAAG,GAAA;MAAAN,UAAA,IAAAK,IAAA,GAAAnB,gBAAA,CAAAiB,IAAA,EAAAG,GAAA,MAAAD,IAAA,CAAAL;IAAA;IAAA,OACAE,EAAA;EAAA;AACA,IACAM,OAAA,GAAAA,CAAAC,GAAA,EAAAC,UAAA,EAAAd,MAAA,MAAAA,MAAA,GAAAa,GAAA,WAAA5B,QAAA,CAAAS,YAAA,CAAAmB,GAAA,SAAAR,WAAA;EAAA;EACA;EAEF;EAK2B;EAClBS,UACL,KAAAD,GAAA,KAAAA,GAAA,CAAAE,UAAA,GAAA3B,SAAA,CAAAY,MAAA;IAAAgB,KAAA,EAAAH,GAAA;IAAAT,UAAA;EAAA,KAAAJ,MAAA,EAAAa,GACA;EAAAI,YACA,GAAAJ,GAAA,IAAAR,WAAA,CAAAjB,SAAA;IAAA4B,KAAA;EAAA,IAAAH,GAAA;AAAA,IAAAK,4BACkB;AAAAnB,QAClB,CAAAmB,4BAAoB;EAAAC,oBACpB,EAAAA,CAAA,KAAAC,6BAAA;EAAAC,4BACA,EAAAA,CAAA,KAAAA,4BAAA;EAAAC,+BACF,EAAAA,CAAA,KAAAA,+BAAA;EAAAC,8BACA,EAAAA,CAAA,KAAAA;AAAA;AACEC,MACA,CAAAC,OAAA,GAAAR,YAAA,CAAAC,4BAAA;AAAA,IAAAQ,kBACA,GAAAC,OAAA;EAAAC,qBAAA,GAAAD,OAAA;EAAAE,gBAAA,GAAAF,OAAA;EAAAG,KAAA,GAAAlB,OAAA,CAAAe,OAAA;EAAAI,2BAAA;EAAA,CAAAC,iCAAA,EAAAV,+BAAA,QAAAM,qBAAA,CAAAK,kBAAA,EAAAF,2BAAA;EAAA,CAAAV,4BAAA,EAAAE,8BAAA,IAAAS,iCAAA,CAAAD,2BAAA;AAAA,SACAZ,qBAAAe,KAAA;EAAA,IACA;MAAAC,iBAAA;MAAAC,QAAA;MAAAC,OAAA;MAAAC,IAAA;MAAAC,OAAA;MAAAC,gBAAA;MAAAC,kBAAA;MAAAC,YAAA;MAAAC;IAAA,IAAAT,KAAA;IAAAU,sBAAA,OAAAf,gBAAA,CAAAgB,QAAA,EAAAL,gBAAA;IAAAM,wBAAA,OAAAjB,gBAAA,CAAAgB,QAAA,EAAAJ,kBAAA;IAAAM,YAAA,GAAAjB,KAAA,CAAAkB,OAAA;MAAA,OACA;QACAX,OAAA;QACFC,IAAA;QACFC,OAAA;QAEAC,gBACE,EAAAI,sBAAC;QAILH,kBAAA,EAAAK,wBAAA;QAEMJ,YAAA","ignoreList":[]}
1
+ {"version":3,"names":["__create","Object","create","__defProp","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__getProtoOf","getPrototypeOf","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toESM","mod","isNodeMode","__esModule","value","__toCommonJS","FocusScopeController_exports","FocusScopeController","FocusScopeControllerComponent","FocusScopeControllerProvider","createFocusScopeControllerScope","useFocusScopeControllerContext","module","exports","import_jsx_runtime","require","import_create_context","import_use_event","React","FOCUS_SCOPE_CONTROLLER_NAME","createFocusScopeControllerContext","createContextScope","props","__scopeFocusScope","children","enabled","loop","trapped","onMountAutoFocus","onUnmountAutoFocus","forceUnmount","focusOnIdle","stableOnMountAutoFocus","useEvent"],"sources":["../../src/FocusScopeController.tsx"],"sourcesContent":[null],"mappings":"AAAA,YAAS;;AACT,IAAAA,QAAS,GAAAC,MAAA,CAAAC,MAAgB;AACzB,IAAAC,SAAY,GAAAF,MAAA,CAAWG,cAAA;AA8DnB,IAAAC,gBAAA,GAAAJ,MAAA,CAAAK,wBAAA;AA1DJ,IAAAC,iBAAM,GAAAN,MAAA,CAAAO,mBAA8B;AAEpC,IAAAC,YAAO,GAAAR,MAAA,CAAAS,cAAA;AAKP,IAAAC,YAAO,GAAAV,MAAA,CAAAW,SAAA,CAAAC,cAA8B;AACnC,IACEC,QAAA,GAAAA,CAAAC,MAAA,EAAAC,GAAA;EACF,SAAAC,IAAA,IAAAD,GAAA,EAUFb,SAAS,CAAAY,MAAA,EAAAE,IAAA;IAAqBC,GAAA,EAAAF,GAA+C,CAAAC,IAAA;IAAAE,UAAA;EAAA;AAC3E;AAAM,IACJC,WAAA,GAAAA,CAAAC,EAAA,EAAAC,IAAA,EAAAC,MAAA,EAAAC,IAAA;EAAA,IACAF,IAAA,WAAAA,IAAA,wBAAAA,IAAA;IACA,SAAAG,GAAA,IAAAlB,iBAAA,CAAAe,IAAA,GACA,KAAAX,YAAA,CAAAe,IAAA,CAAAL,EAAA,EAAAI,GAAA,KAAAA,GAAA,KAAAF,MAAA,EACApB,SAAA,CAAAkB,EAAA,EAAAI,GAAA;MAAAP,GAAA,EAAAA,CAAA,KAAAI,IAAA,CAAAG,GAAA;MAAAN,UAAA,IAAAK,IAAA,GAAAnB,gBAAA,CAAAiB,IAAA,EAAAG,GAAA,MAAAD,IAAA,CAAAL;IAAA;EAAA;EACA,OACAE,EAAA;AAAA;AACA,IACAM,OAAA,GAAAA,CAAAC,GAAA,EAAAC,UAAA,EAAAd,MAAA,MAAAA,MAAA,GAAAa,GAAA,WAAA5B,QAAA,CAAAS,YAAA,CAAAmB,GAAA,SAAAR,WAAA;AACF;AAEA;AACA;AAEA;AAA2BS,UAClB,KAAAD,GAAA,KAAAA,GAAA,CAAAE,UAAA,GAAA3B,SAAA,CAAAY,MAAA;EAAAgB,KAAA,EAAAH,GAAA;EAAAT,UAAA;AAAA,KAAAJ,MAAA,EAAAa,GACL;AACA,IAAAI,YACA,GAAAJ,GAAA,IAAAR,WAAA,CAAAjB,SAAA;EAAA4B,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAK,4BACkB;AAAAnB,QAClB,CAAAmB,4BAAoB;EAAAC,oBACpB,EAAAA,CAAA,KAAAC,6BAAA;EAAAC,4BACA,EAAAA,CAAA,KAAAA,4BAAA;EAAAC,+BACF,EAAAA,CAAA,KAAAA,+BAAA;EAAAC,8BACA,EAAAA,CAAA,KAAAA;AAAA;AACEC,MACA,CAAAC,OAAA,GAAAR,YAAA,CAAAC,4BAAA;AAAA,IAAAQ,kBACA,GAAAC,OAAA;AAAA,IAAAC,qBACA,GAAAD,OAAA;AAAA,IAAAE,gBACA,GAAAF,OAAA;AAAA,IAAAG,KACA,GAAAlB,OAAA,CAAAe,OAAA;AAAA,IAAAI,2BACA;AAAA,IACF,CAAAC,iCAAA,EAAAV,+BAAA,QAAAM,qBAAA,CAAAK,kBAAA,EAAAF,2BAAA;AAAA,IACF,CAAAV,4BAAA,EAAAE,8BAAA,IAAAS,iCAAA,CAAAD,2BAAA;AAEA,SACEZ,oBAACA,CAAAe,KAAA;EAIL;IAAAC,iBAAA;IAAAC,QAAA;IAAAC,OAAA;IAAAC,IAAA;IAAAC,OAAA;IAAAC,gBAAA;IAAAC,kBAAA;IAAAC,YAAA;IAAAC;EAAA,IAAAT,KAAA;EAEA,IAAMU,sBAAA,OAAAf,gBAAgC,CAAAgB,QAAA,EAAAL,gBAAA","ignoreList":[]}
package/dist/jsx/index.js CHANGED
@@ -1,3 +1,3 @@
1
- export * from "./FocusScope";
2
- export * from "./FocusScopeController";
1
+ export * from "./FocusScope.mjs";
2
+ export * from "./FocusScopeController.mjs";
3
3
  //# sourceMappingURL=index.js.map
@@ -1,6 +1 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/index.ts"],
4
- "mappings": "AAAA,cAAc;AACd,cAAc;",
5
- "names": []
6
- }
1
+ {"version":3,"names":[],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,cAAc","ignoreList":[]}
@@ -5,15 +5,17 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
6
  var __hasOwnProp = Object.prototype.hasOwnProperty;
7
7
  var __copyProps = (to, from, except, desc) => {
8
- if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
8
+ if (from && typeof from === "object" || typeof from === "function") {
9
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
9
10
  get: () => from[key],
10
11
  enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
11
12
  });
12
- return to;
13
- },
14
- __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
13
+ }
14
+ return to;
15
+ };
16
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
15
17
  var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
16
- value: !0
18
+ value: true
17
19
  }), mod);
18
20
  var index_exports = {};
19
21
  module.exports = __toCommonJS(index_exports);
@@ -5,14 +5,16 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
6
  var __hasOwnProp = Object.prototype.hasOwnProperty;
7
7
  var __copyProps = (to, from, except, desc) => {
8
- if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
9
- get: () => from[key],
10
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
11
- });
8
+ if (from && typeof from === "object" || typeof from === "function") {
9
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
10
+ get: () => from[key],
11
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
12
+ });
13
+ }
12
14
  return to;
13
15
  };
14
16
  var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
15
- value: !0
17
+ value: true
16
18
  }), mod);
17
19
  var types_exports = {};
18
20
  module.exports = __toCommonJS(types_exports);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/focus-scope",
3
- "version": "2.0.0-rc.4",
3
+ "version": "2.0.0-rc.40",
4
4
  "source": "src/index.ts",
5
5
  "files": [
6
6
  "src",
@@ -16,15 +16,12 @@
16
16
  "./package.json": "./package.json",
17
17
  ".": {
18
18
  "types": "./types/index.d.ts",
19
- "react-native": {
20
- "module": "./dist/esm/index.native.js",
21
- "import": "./dist/esm/index.native.js",
22
- "require": "./dist/cjs/index.native.js"
23
- },
19
+ "react-native": "./dist/esm/index.native.js",
20
+ "browser": "./dist/esm/index.mjs",
24
21
  "module": "./dist/esm/index.mjs",
25
22
  "import": "./dist/esm/index.mjs",
26
23
  "require": "./dist/cjs/index.cjs",
27
- "default": "./dist/cjs/index.native.js"
24
+ "default": "./dist/esm/index.mjs"
28
25
  }
29
26
  },
30
27
  "publishConfig": {
@@ -37,15 +34,15 @@
37
34
  "clean:build": "tamagui-build clean:build"
38
35
  },
39
36
  "dependencies": {
40
- "@tamagui/compose-refs": "2.0.0-rc.4",
41
- "@tamagui/constants": "2.0.0-rc.4",
42
- "@tamagui/create-context": "2.0.0-rc.4",
43
- "@tamagui/start-transition": "2.0.0-rc.4",
44
- "@tamagui/use-async": "2.0.0-rc.4",
45
- "@tamagui/use-event": "2.0.0-rc.4"
37
+ "@tamagui/compose-refs": "2.0.0-rc.40",
38
+ "@tamagui/constants": "2.0.0-rc.40",
39
+ "@tamagui/create-context": "2.0.0-rc.40",
40
+ "@tamagui/start-transition": "2.0.0-rc.40",
41
+ "@tamagui/use-async": "2.0.0-rc.40",
42
+ "@tamagui/use-event": "2.0.0-rc.40"
46
43
  },
47
44
  "devDependencies": {
48
- "@tamagui/build": "2.0.0-rc.4",
45
+ "@tamagui/build": "2.0.0-rc.40",
49
46
  "react": ">=19"
50
47
  },
51
48
  "peerDependencies": {
@@ -201,15 +201,23 @@ export function useFocusScope(
201
201
  )
202
202
  const composedRefs = useComposedRefs(forwardedRef, setContainerRef)
203
203
 
204
- // Clean up trap on unmount only - trap setup is handled in ref callback
204
+ // Clean up trap when trapped becomes false or on unmount
205
205
  useIsomorphicLayoutEffect(() => {
206
+ if (!trapped) {
207
+ // immediately invalidate any pending rAFs
208
+ focusScope.stopped = true
209
+ if (trapCleanupRef.current) {
210
+ trapCleanupRef.current()
211
+ trapCleanupRef.current = null
212
+ }
213
+ }
206
214
  return () => {
207
215
  if (trapCleanupRef.current) {
208
216
  trapCleanupRef.current()
209
217
  trapCleanupRef.current = null
210
218
  }
211
219
  }
212
- }, [])
220
+ }, [trapped, focusScope])
213
221
 
214
222
  useAsyncEffect(
215
223
  async (signal) => {
@@ -217,11 +225,18 @@ export function useFocusScope(
217
225
  if (!container) return
218
226
  if (forceUnmount) return
219
227
 
220
- // reset stopped flag when effect starts
221
- focusScope.stopped = false
228
+ // only reset stopped flag when trap is actually active
229
+ // otherwise a prop change (trapped: true -> false) would reset it
230
+ // and allow a pending rAF to steal focus
231
+ if (trapped) {
232
+ focusScope.stopped = false
233
+ }
222
234
  focusScopesStack.add(focusScope)
223
235
  const previouslyFocusedElement = document.activeElement as HTMLElement | null
224
- const hasFocusedCandidate = container.contains(previouslyFocusedElement)
236
+ const hasFocusedCandidate =
237
+ container.contains(previouslyFocusedElement) &&
238
+ previouslyFocusedElement !== null &&
239
+ !isHidden(previouslyFocusedElement, { upTo: container })
225
240
 
226
241
  if (!hasFocusedCandidate) {
227
242
  const mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS)
@@ -278,7 +293,19 @@ export function useFocusScope(
278
293
  container.addEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus)
279
294
  container.dispatchEvent(unmountEvent)
280
295
  if (!unmountEvent.defaultPrevented) {
281
- focus(previouslyFocusedElement ?? document.body, { select: true })
296
+ // check if focus has already moved to a valid element outside this scope
297
+ // (e.g. another component's autoFocus ran during the same commit)
298
+ // if so, respect that focus rather than stealing it back
299
+ const currentFocus = document.activeElement as HTMLElement | null
300
+ const focusHasMovedOutside =
301
+ currentFocus &&
302
+ currentFocus !== document.body &&
303
+ currentFocus !== container &&
304
+ !container.contains(currentFocus)
305
+
306
+ if (!focusHasMovedOutside) {
307
+ focus(previouslyFocusedElement ?? document.body, { select: true })
308
+ }
282
309
  }
283
310
  // we need to remove the listener after we `dispatchEvent`
284
311
  container.removeEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus)
@@ -1 +1 @@
1
- {"version":3,"file":"FocusScope.d.ts","sourceRoot":"","sources":["../src/FocusScope.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,KAAK,EAAE,eAAe,EAAe,MAAM,SAAS,CAAA;AAY3D,KAAK,iBAAiB,GAAG,cAAc,CAAA;AAEvC,QAAA,MAAM,UAAU,wFAiCf,CAAA;AAuFD,wBAAgB,aAAa,CAC3B,KAAK,EAAE,eAAe,EACtB,YAAY,EAAE,KAAK,CAAC,YAAY,CAAC,iBAAiB,CAAC;;uBAwNzC,KAAK,CAAC,aAAa;;EAY9B;AA+ID,OAAO,EAAE,UAAU,EAAE,CAAA;AAErB,YAAY,EAAE,eAAe,EAAE,CAAA"}
1
+ {"version":3,"file":"FocusScope.d.ts","sourceRoot":"","sources":["../src/FocusScope.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,KAAK,EAAE,eAAe,EAAe,MAAM,SAAS,CAAA;AAY3D,KAAK,iBAAiB,GAAG,cAAc,CAAA;AAEvC,QAAA,MAAM,UAAU,wFAiCf,CAAA;AAuFD,wBAAgB,aAAa,CAC3B,KAAK,EAAE,eAAe,EACtB,YAAY,EAAE,KAAK,CAAC,YAAY,CAAC,iBAAiB,CAAC;;uBAmPzC,KAAK,CAAC,aAAa;;EAY9B;AA+ID,OAAO,EAAE,UAAU,EAAE,CAAA;AAErB,YAAY,EAAE,eAAe,EAAE,CAAA"}