@fluentui/react-tabster 9.26.15 → 9.26.17

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 (118) hide show
  1. package/CHANGELOG.md +25 -2
  2. package/dist/index.d.cts +1583 -0
  3. package/dist/index.d.ts +3 -1
  4. package/lib/focus/createCustomFocusIndicatorStyle.js +1 -1
  5. package/lib/focus/createCustomFocusIndicatorStyle.js.map +1 -1
  6. package/lib/focus/createFocusOutlineStyle.js +4 -4
  7. package/lib/focus/createFocusOutlineStyle.js.map +1 -1
  8. package/lib/focus/focusVisiblePolyfill.js +3 -3
  9. package/lib/focus/focusVisiblePolyfill.js.map +1 -1
  10. package/lib/focus/focusWithinPolyfill.js +2 -2
  11. package/lib/focus/focusWithinPolyfill.js.map +1 -1
  12. package/lib/focus/index.js +4 -4
  13. package/lib/focus/index.js.map +1 -1
  14. package/lib/hooks/index.js +19 -19
  15. package/lib/hooks/index.js.map +1 -1
  16. package/lib/hooks/useActivateModal.js +4 -4
  17. package/lib/hooks/useActivateModal.js.map +1 -1
  18. package/lib/hooks/useArrowNavigationGroup.js +3 -3
  19. package/lib/hooks/useArrowNavigationGroup.js.map +1 -1
  20. package/lib/hooks/useFocusFinders.js +3 -3
  21. package/lib/hooks/useFocusFinders.js.map +1 -1
  22. package/lib/hooks/useFocusObserved.js +3 -3
  23. package/lib/hooks/useFocusObserved.js.map +1 -1
  24. package/lib/hooks/useFocusVisible.js +3 -3
  25. package/lib/hooks/useFocusVisible.js.map +1 -1
  26. package/lib/hooks/useFocusWithin.js +3 -3
  27. package/lib/hooks/useFocusWithin.js.map +1 -1
  28. package/lib/hooks/useFocusableGroup.js +3 -3
  29. package/lib/hooks/useFocusableGroup.js.map +1 -1
  30. package/lib/hooks/useFocusedElementChange.js +5 -5
  31. package/lib/hooks/useFocusedElementChange.js.map +1 -1
  32. package/lib/hooks/useIsNavigatingWithKeyboard.js +2 -2
  33. package/lib/hooks/useIsNavigatingWithKeyboard.js.map +1 -1
  34. package/lib/hooks/useKeyboardNavAttribute.js +4 -4
  35. package/lib/hooks/useKeyboardNavAttribute.js.map +1 -1
  36. package/lib/hooks/useKeyborgRef.js +3 -3
  37. package/lib/hooks/useMergeTabsterAttributes.js +40 -56
  38. package/lib/hooks/useMergeTabsterAttributes.js.map +1 -1
  39. package/lib/hooks/useModalAttributes.js +5 -5
  40. package/lib/hooks/useModalAttributes.js.map +1 -1
  41. package/lib/hooks/useObservedElement.js +3 -3
  42. package/lib/hooks/useObservedElement.js.map +1 -1
  43. package/lib/hooks/useOnKeyboardNavigationChange.js +3 -3
  44. package/lib/hooks/useOnKeyboardNavigationChange.js.map +1 -1
  45. package/lib/hooks/useRestoreFocus.js +2 -2
  46. package/lib/hooks/useRestoreFocus.js.map +1 -1
  47. package/lib/hooks/useSetKeyboardNavigation.js +2 -2
  48. package/lib/hooks/useSetKeyboardNavigation.js.map +1 -1
  49. package/lib/hooks/useTabster.js +4 -4
  50. package/lib/hooks/useTabsterAttributes.js +3 -3
  51. package/lib/hooks/useTabsterAttributes.js.map +1 -1
  52. package/lib/hooks/useUncontrolledFocus.js +2 -2
  53. package/lib/hooks/useUncontrolledFocus.js.map +1 -1
  54. package/lib/index.js +6 -6
  55. package/lib/index.js.map +1 -1
  56. package/lib-commonjs/focus/{createCustomFocusIndicatorStyle.js → createCustomFocusIndicatorStyle.cjs} +1 -1
  57. package/lib-commonjs/focus/{createFocusOutlineStyle.js → createFocusOutlineStyle.cjs} +2 -2
  58. package/lib-commonjs/focus/{focusVisiblePolyfill.js → focusVisiblePolyfill.cjs} +1 -1
  59. package/lib-commonjs/focus/{focusWithinPolyfill.js → focusWithinPolyfill.cjs} +1 -1
  60. package/lib-commonjs/focus/{index.js → index.cjs} +4 -4
  61. package/lib-commonjs/hooks/{index.js → index.cjs} +19 -19
  62. package/lib-commonjs/hooks/{useActivateModal.js → useActivateModal.cjs} +1 -1
  63. package/lib-commonjs/hooks/{useArrowNavigationGroup.js → useArrowNavigationGroup.cjs} +2 -2
  64. package/lib-commonjs/hooks/{useFocusFinders.js → useFocusFinders.cjs} +1 -1
  65. package/lib-commonjs/hooks/{useFocusObserved.js → useFocusObserved.cjs} +1 -1
  66. package/lib-commonjs/hooks/{useFocusVisible.js → useFocusVisible.cjs} +1 -1
  67. package/lib-commonjs/hooks/{useFocusWithin.js → useFocusWithin.cjs} +1 -1
  68. package/lib-commonjs/hooks/{useFocusableGroup.js → useFocusableGroup.cjs} +2 -2
  69. package/lib-commonjs/hooks/{useFocusedElementChange.js → useFocusedElementChange.cjs} +1 -1
  70. package/lib-commonjs/hooks/{useIsNavigatingWithKeyboard.js → useIsNavigatingWithKeyboard.cjs} +1 -1
  71. package/lib-commonjs/hooks/{useKeyboardNavAttribute.js → useKeyboardNavAttribute.cjs} +1 -1
  72. package/lib-commonjs/hooks/useMergeTabsterAttributes.cjs +65 -0
  73. package/lib-commonjs/hooks/useMergeTabsterAttributes.cjs.map +1 -0
  74. package/lib-commonjs/hooks/{useModalAttributes.js → useModalAttributes.cjs} +3 -3
  75. package/lib-commonjs/hooks/{useObservedElement.js → useObservedElement.cjs} +2 -2
  76. package/lib-commonjs/hooks/{useOnKeyboardNavigationChange.js → useOnKeyboardNavigationChange.cjs} +1 -1
  77. package/lib-commonjs/hooks/{useRestoreFocus.js → useRestoreFocus.cjs} +1 -1
  78. package/lib-commonjs/hooks/{useSetKeyboardNavigation.js → useSetKeyboardNavigation.cjs} +1 -1
  79. package/lib-commonjs/hooks/{useTabsterAttributes.js → useTabsterAttributes.cjs} +1 -1
  80. package/lib-commonjs/hooks/{useUncontrolledFocus.js → useUncontrolledFocus.cjs} +1 -1
  81. package/lib-commonjs/{index.js → index.cjs} +3 -3
  82. package/package.json +16 -10
  83. package/lib-commonjs/hooks/useMergeTabsterAttributes.js +0 -83
  84. package/lib-commonjs/hooks/useMergeTabsterAttributes.js.map +0 -1
  85. /package/lib-commonjs/focus/{constants.js → constants.cjs} +0 -0
  86. /package/lib-commonjs/focus/{constants.js.map → constants.cjs.map} +0 -0
  87. /package/lib-commonjs/focus/{createCustomFocusIndicatorStyle.js.map → createCustomFocusIndicatorStyle.cjs.map} +0 -0
  88. /package/lib-commonjs/focus/{createFocusOutlineStyle.js.map → createFocusOutlineStyle.cjs.map} +0 -0
  89. /package/lib-commonjs/focus/{focusVisiblePolyfill.js.map → focusVisiblePolyfill.cjs.map} +0 -0
  90. /package/lib-commonjs/focus/{focusWithinPolyfill.js.map → focusWithinPolyfill.cjs.map} +0 -0
  91. /package/lib-commonjs/focus/{index.js.map → index.cjs.map} +0 -0
  92. /package/lib-commonjs/hooks/{index.js.map → index.cjs.map} +0 -0
  93. /package/lib-commonjs/hooks/{useActivateModal.js.map → useActivateModal.cjs.map} +0 -0
  94. /package/lib-commonjs/hooks/{useArrowNavigationGroup.js.map → useArrowNavigationGroup.cjs.map} +0 -0
  95. /package/lib-commonjs/hooks/{useDangerousNeverHidden.js → useDangerousNeverHidden.cjs} +0 -0
  96. /package/lib-commonjs/hooks/{useDangerousNeverHidden.js.map → useDangerousNeverHidden.cjs.map} +0 -0
  97. /package/lib-commonjs/hooks/{useFocusFinders.js.map → useFocusFinders.cjs.map} +0 -0
  98. /package/lib-commonjs/hooks/{useFocusObserved.js.map → useFocusObserved.cjs.map} +0 -0
  99. /package/lib-commonjs/hooks/{useFocusVisible.js.map → useFocusVisible.cjs.map} +0 -0
  100. /package/lib-commonjs/hooks/{useFocusWithin.js.map → useFocusWithin.cjs.map} +0 -0
  101. /package/lib-commonjs/hooks/{useFocusableGroup.js.map → useFocusableGroup.cjs.map} +0 -0
  102. /package/lib-commonjs/hooks/{useFocusedElementChange.js.map → useFocusedElementChange.cjs.map} +0 -0
  103. /package/lib-commonjs/hooks/{useIsNavigatingWithKeyboard.js.map → useIsNavigatingWithKeyboard.cjs.map} +0 -0
  104. /package/lib-commonjs/hooks/{useKeyboardNavAttribute.js.map → useKeyboardNavAttribute.cjs.map} +0 -0
  105. /package/lib-commonjs/hooks/{useKeyborgRef.js → useKeyborgRef.cjs} +0 -0
  106. /package/lib-commonjs/hooks/{useKeyborgRef.js.map → useKeyborgRef.cjs.map} +0 -0
  107. /package/lib-commonjs/hooks/{useModalAttributes.js.map → useModalAttributes.cjs.map} +0 -0
  108. /package/lib-commonjs/hooks/{useObservedElement.js.map → useObservedElement.cjs.map} +0 -0
  109. /package/lib-commonjs/hooks/{useOnKeyboardNavigationChange.js.map → useOnKeyboardNavigationChange.cjs.map} +0 -0
  110. /package/lib-commonjs/hooks/{useRestoreFocus.js.map → useRestoreFocus.cjs.map} +0 -0
  111. /package/lib-commonjs/hooks/{useSetKeyboardNavigation.js.map → useSetKeyboardNavigation.cjs.map} +0 -0
  112. /package/lib-commonjs/hooks/{useTabster.js → useTabster.cjs} +0 -0
  113. /package/lib-commonjs/hooks/{useTabster.js.map → useTabster.cjs.map} +0 -0
  114. /package/lib-commonjs/hooks/{useTabsterAttributes.js.map → useTabsterAttributes.cjs.map} +0 -0
  115. /package/lib-commonjs/hooks/{useUncontrolledFocus.js.map → useUncontrolledFocus.cjs.map} +0 -0
  116. /package/lib-commonjs/{index.js.map → index.cjs.map} +0 -0
  117. /package/lib-commonjs/{tabster-types-6.0.1-do-not-use.js → tabster-types-6.0.1-do-not-use.cjs} +0 -0
  118. /package/lib-commonjs/{tabster-types-6.0.1-do-not-use.js.map → tabster-types-6.0.1-do-not-use.cjs.map} +0 -0
@@ -12,7 +12,7 @@ Object.defineProperty(exports, "useKeyboardNavAttribute", {
12
12
  const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
13
13
  const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
14
14
  const _keyborg = require("keyborg");
15
- const _constants = require("../focus/constants");
15
+ const _constants = require("../focus/constants.cjs");
16
16
  const _reactsharedcontexts = require("@fluentui/react-shared-contexts");
17
17
  function useKeyboardNavAttribute() {
18
18
  const { targetDocument } = (0, _reactsharedcontexts.useFluent_unstable)();
@@ -0,0 +1,65 @@
1
+ 'use client';
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "useMergedTabsterAttributes_unstable", {
7
+ enumerable: true,
8
+ get: function() {
9
+ return useMergedTabsterAttributes_unstable;
10
+ }
11
+ });
12
+ const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
13
+ const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
14
+ const _tabster = require("tabster");
15
+ const useMergedTabsterAttributes_unstable = (...attributes)=>{
16
+ // The collected attributes are reduced to a single primitive `key` so the
17
+ // `React.useMemo` dependency list keeps a constant size, even when the number
18
+ // of contributing attributes changes between renders. The array and the key
19
+ // are built in a single pass.
20
+ const stringAttributes = [];
21
+ let key = '';
22
+ for (const attribute of attributes){
23
+ const value = attribute === null || attribute === void 0 ? void 0 : attribute[_tabster.TABSTER_ATTRIBUTE_NAME];
24
+ if (value) {
25
+ stringAttributes.push(value);
26
+ key += value + MERGE_KEY_SEPARATOR;
27
+ }
28
+ }
29
+ return _react.useMemo(()=>({
30
+ [_tabster.TABSTER_ATTRIBUTE_NAME]: mergeAttributes(stringAttributes)
31
+ }), // `key` fully captures the contents of `stringAttributes`, which is rebuilt
32
+ // on every render and therefore cannot be a dependency itself.
33
+ // eslint-disable-next-line react-hooks/exhaustive-deps
34
+ [
35
+ key
36
+ ]);
37
+ };
38
+ /**
39
+ * `NUL` separator used to build the memoization key. It is a safe separator
40
+ * because the attribute values originate from `JSON.stringify`, which escapes
41
+ * control characters, so a literal `NUL` can never appear inside one of them.
42
+ */ const MERGE_KEY_SEPARATOR = '\u0000';
43
+ /**
44
+ * Merges a collection of tabster attribute JSON strings into a single one.
45
+ * Later attributes take priority over earlier ones.
46
+ */ const mergeAttributes = (stringAttributes)=>{
47
+ if (stringAttributes.length === 0) {
48
+ return undefined;
49
+ }
50
+ // common case: a single hook contributed an attribute, no parsing required
51
+ if (stringAttributes.length === 1) {
52
+ return stringAttributes[0];
53
+ }
54
+ return JSON.stringify(Object.assign({}, ...stringAttributes.map(safelyParseJSON)));
55
+ };
56
+ /**
57
+ * Tries to parse a JSON string and returns an object.
58
+ * If the JSON string is invalid, an empty object is returned.
59
+ */ const safelyParseJSON = (json)=>{
60
+ try {
61
+ return JSON.parse(json);
62
+ } catch {
63
+ return {};
64
+ }
65
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/hooks/useMergeTabsterAttributes.ts"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport type { Types } from 'tabster';\nimport { TABSTER_ATTRIBUTE_NAME } from 'tabster';\n\n/**\n * Merges a collection of tabster attributes.\n *\n * The result is memoized and only recomputed when the contributing attributes\n * actually change, so both the values and the number of attributes may change\n * at runtime.\n * @internal\n * @param attributes - collection of tabster attributes from other react-tabster hooks\n * @returns single merged tabster attribute\n */\nexport const useMergedTabsterAttributes_unstable = (\n ...attributes: (Partial<Types.TabsterDOMAttribute> | null | undefined)[]\n): Types.TabsterDOMAttribute => {\n // The collected attributes are reduced to a single primitive `key` so the\n // `React.useMemo` dependency list keeps a constant size, even when the number\n // of contributing attributes changes between renders. The array and the key\n // are built in a single pass.\n const stringAttributes: string[] = [];\n let key = '';\n for (const attribute of attributes) {\n const value = attribute?.[TABSTER_ATTRIBUTE_NAME];\n if (value) {\n stringAttributes.push(value);\n key += value + MERGE_KEY_SEPARATOR;\n }\n }\n\n return React.useMemo(\n () => ({ [TABSTER_ATTRIBUTE_NAME]: mergeAttributes(stringAttributes) }),\n // `key` fully captures the contents of `stringAttributes`, which is rebuilt\n // on every render and therefore cannot be a dependency itself.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [key],\n );\n};\n\n/**\n * `NUL` separator used to build the memoization key. It is a safe separator\n * because the attribute values originate from `JSON.stringify`, which escapes\n * control characters, so a literal `NUL` can never appear inside one of them.\n */\nconst MERGE_KEY_SEPARATOR = '\\u0000';\n\n/**\n * Merges a collection of tabster attribute JSON strings into a single one.\n * Later attributes take priority over earlier ones.\n */\nconst mergeAttributes = (stringAttributes: string[]): string | undefined => {\n if (stringAttributes.length === 0) {\n return undefined;\n }\n // common case: a single hook contributed an attribute, no parsing required\n if (stringAttributes.length === 1) {\n return stringAttributes[0];\n }\n return JSON.stringify(Object.assign({}, ...stringAttributes.map(safelyParseJSON)));\n};\n\n/**\n * Tries to parse a JSON string and returns an object.\n * If the JSON string is invalid, an empty object is returned.\n */\nconst safelyParseJSON = (json: string): object => {\n try {\n return JSON.parse(json);\n } catch {\n return {};\n }\n};\n"],"names":["useMergedTabsterAttributes_unstable","attributes","stringAttributes","key","attribute","value","TABSTER_ATTRIBUTE_NAME","push","MERGE_KEY_SEPARATOR","React","useMemo","mergeAttributes","length","undefined","JSON","stringify","Object","assign","map","safelyParseJSON","json","parse"],"mappings":"AAAA;;;;;+BAgBaA;;;eAAAA;;;;iEAdU;yBAEgB;AAYhC,MAAMA,sCAAsC,CACjD,GAAGC;IAEH,0EAA0E;IAC1E,8EAA8E;IAC9E,4EAA4E;IAC5E,8BAA8B;IAC9B,MAAMC,mBAA6B,EAAE;IACrC,IAAIC,MAAM;IACV,KAAK,MAAMC,aAAaH,WAAY;QAClC,MAAMI,QAAQD,sBAAAA,gCAAAA,SAAW,CAACE,+BAAsB,CAAC;QACjD,IAAID,OAAO;YACTH,iBAAiBK,IAAI,CAACF;YACtBF,OAAOE,QAAQG;QACjB;IACF;IAEA,OAAOC,OAAMC,OAAO,CAClB,IAAO,CAAA;YAAE,CAACJ,+BAAsB,CAAC,EAAEK,gBAAgBT;QAAkB,CAAA,GACrE,4EAA4E;IAC5E,+DAA+D;IAC/D,uDAAuD;IACvD;QAACC;KAAI;AAET;AAEA;;;;CAIC,GACD,MAAMK,sBAAsB;AAE5B;;;CAGC,GACD,MAAMG,kBAAkB,CAACT;IACvB,IAAIA,iBAAiBU,MAAM,KAAK,GAAG;QACjC,OAAOC;IACT;IACA,2EAA2E;IAC3E,IAAIX,iBAAiBU,MAAM,KAAK,GAAG;QACjC,OAAOV,gBAAgB,CAAC,EAAE;IAC5B;IACA,OAAOY,KAAKC,SAAS,CAACC,OAAOC,MAAM,CAAC,CAAC,MAAMf,iBAAiBgB,GAAG,CAACC;AAClE;AAEA;;;CAGC,GACD,MAAMA,kBAAkB,CAACC;IACvB,IAAI;QACF,OAAON,KAAKO,KAAK,CAACD;IACpB,EAAE,OAAM;QACN,OAAO,CAAC;IACV;AACF"}
@@ -11,9 +11,9 @@ Object.defineProperty(exports, "useModalAttributes", {
11
11
  });
12
12
  const _tabster = require("tabster");
13
13
  const _reactutilities = require("@fluentui/react-utilities");
14
- const _useTabsterAttributes = require("./useTabsterAttributes");
15
- const _useTabster = require("./useTabster");
16
- const _useDangerousNeverHidden = require("./useDangerousNeverHidden");
14
+ const _useTabsterAttributes = require("./useTabsterAttributes.cjs");
15
+ const _useTabster = require("./useTabster.cjs");
16
+ const _useDangerousNeverHidden = require("./useDangerousNeverHidden.cjs");
17
17
  const tabsterAccessibleCheck = (element)=>{
18
18
  return element.hasAttribute(_useDangerousNeverHidden.DangerousNeverHiddenAttribute);
19
19
  };
@@ -10,8 +10,8 @@ Object.defineProperty(exports, "useObservedElement", {
10
10
  }
11
11
  });
12
12
  const _tabster = require("tabster");
13
- const _useTabster = require("./useTabster");
14
- const _useTabsterAttributes = require("./useTabsterAttributes");
13
+ const _useTabster = require("./useTabster.cjs");
14
+ const _useTabsterAttributes = require("./useTabsterAttributes.cjs");
15
15
  function useObservedElement(name) {
16
16
  (0, _useTabster.useTabster)(_tabster.getObservedElement);
17
17
  return (0, _useTabsterAttributes.useTabsterAttributes)({
@@ -12,7 +12,7 @@ Object.defineProperty(exports, "useOnKeyboardNavigationChange", {
12
12
  const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
13
13
  const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
14
14
  const _reactutilities = require("@fluentui/react-utilities");
15
- const _useKeyborgRef = require("./useKeyborgRef");
15
+ const _useKeyborgRef = require("./useKeyborgRef.cjs");
16
16
  function useOnKeyboardNavigationChange(callback) {
17
17
  const keyborgRef = (0, _useKeyborgRef.useKeyborgRef)();
18
18
  const eventCallback = (0, _reactutilities.useEventCallback)(callback);
@@ -18,7 +18,7 @@ _export(exports, {
18
18
  }
19
19
  });
20
20
  const _tabster = require("tabster");
21
- const _useTabster = require("./useTabster");
21
+ const _useTabster = require("./useTabster.cjs");
22
22
  function useRestoreFocusTarget() {
23
23
  // Initializes the restorer API
24
24
  (0, _useTabster.useTabster)(_tabster.getRestorer);
@@ -11,7 +11,7 @@ Object.defineProperty(exports, "useSetKeyboardNavigation", {
11
11
  });
12
12
  const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
13
13
  const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
14
- const _useKeyborgRef = require("./useKeyborgRef");
14
+ const _useKeyborgRef = require("./useKeyborgRef.cjs");
15
15
  function useSetKeyboardNavigation() {
16
16
  const keyborgRef = (0, _useKeyborgRef.useKeyborgRef)();
17
17
  return _react.useCallback((isNavigatingWithKeyboard)=>{
@@ -11,7 +11,7 @@ Object.defineProperty(exports, "useTabsterAttributes", {
11
11
  });
12
12
  const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
13
13
  const _tabster = require("tabster");
14
- const _useTabster = require("./useTabster");
14
+ const _useTabster = require("./useTabster.cjs");
15
15
  const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
16
16
  const useTabsterAttributes = (props)=>{
17
17
  // A tabster instance is not necessary to generate tabster attributes
@@ -10,7 +10,7 @@ Object.defineProperty(exports, "useUncontrolledFocus", {
10
10
  }
11
11
  });
12
12
  const _tabster = require("tabster");
13
- const _useTabster = require("./useTabster");
13
+ const _useTabster = require("./useTabster.cjs");
14
14
  function useUncontrolledFocus() {
15
15
  (0, _useTabster.useTabster)();
16
16
  return (0, _tabster.getTabsterAttribute)({
@@ -122,8 +122,8 @@ _export(exports, {
122
122
  }
123
123
  });
124
124
  const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
125
- const _index = require("./hooks/index");
126
- const _index1 = require("./focus/index");
125
+ const _index = require("./hooks/index.cjs");
126
+ const _index1 = require("./focus/index.cjs");
127
127
  const _tabster = require("tabster");
128
128
  const _keyborg = require("keyborg");
129
- const _tabstertypes601donotuse = /*#__PURE__*/ _interop_require_wildcard._(require("./tabster-types-6.0.1-do-not-use"));
129
+ const _tabstertypes601donotuse = /*#__PURE__*/ _interop_require_wildcard._(require("./tabster-types-6.0.1-do-not-use.cjs"));
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@fluentui/react-tabster",
3
- "version": "9.26.15",
3
+ "version": "9.26.17",
4
4
  "description": "Utilities for focus management and facade for tabster",
5
- "main": "lib-commonjs/index.js",
5
+ "main": "lib-commonjs/index.cjs",
6
6
  "module": "lib/index.js",
7
7
  "typings": "./dist/index.d.ts",
8
8
  "sideEffects": false,
@@ -12,9 +12,9 @@
12
12
  },
13
13
  "license": "MIT",
14
14
  "dependencies": {
15
- "@fluentui/react-shared-contexts": "^9.26.2",
16
- "@fluentui/react-theme": "^9.2.1",
17
- "@fluentui/react-utilities": "^9.26.4",
15
+ "@fluentui/react-shared-contexts": "^9.26.3",
16
+ "@fluentui/react-theme": "^9.2.2",
17
+ "@fluentui/react-utilities": "^9.26.6",
18
18
  "@griffel/react": "^1.5.32",
19
19
  "@swc/helpers": "^0.5.1",
20
20
  "keyborg": "^2.14.1",
@@ -34,17 +34,23 @@
34
34
  },
35
35
  "exports": {
36
36
  ".": {
37
- "types": "./dist/index.d.ts",
38
- "node": "./lib-commonjs/index.js",
39
- "import": "./lib/index.js",
40
- "require": "./lib-commonjs/index.js"
37
+ "import": {
38
+ "types": "./dist/index.d.ts",
39
+ "default": "./lib/index.js"
40
+ },
41
+ "require": {
42
+ "types": "./dist/index.d.cts",
43
+ "default": "./lib-commonjs/index.cjs"
44
+ }
41
45
  },
42
46
  "./package.json": "./package.json"
43
47
  },
44
48
  "files": [
45
49
  "*.md",
46
50
  "dist/*.d.ts",
51
+ "dist/*.d.cts",
47
52
  "lib",
48
53
  "lib-commonjs"
49
- ]
54
+ ],
55
+ "type": "module"
50
56
  }
@@ -1,83 +0,0 @@
1
- 'use client';
2
- "use strict";
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- Object.defineProperty(exports, "useMergedTabsterAttributes_unstable", {
7
- enumerable: true,
8
- get: function() {
9
- return useMergedTabsterAttributes_unstable;
10
- }
11
- });
12
- const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
13
- const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
14
- const _tabster = require("tabster");
15
- const useMergedTabsterAttributes_unstable = (...attributes)=>{
16
- 'use no memo';
17
- const stringAttributes = attributes.reduce((acc, curr)=>{
18
- if (curr === null || curr === void 0 ? void 0 : curr[_tabster.TABSTER_ATTRIBUTE_NAME]) {
19
- acc.push(curr[_tabster.TABSTER_ATTRIBUTE_NAME]);
20
- }
21
- return acc;
22
- }, []);
23
- if (process.env.NODE_ENV !== 'production') {
24
- // ignoring rules of hooks because this is a condition based on the environment
25
- // it's safe to ignore the rule
26
- // eslint-disable-next-line react-hooks/rules-of-hooks
27
- useWarnIfUnstableAttributes(stringAttributes);
28
- }
29
- return _react.useMemo(()=>({
30
- [_tabster.TABSTER_ATTRIBUTE_NAME]: stringAttributes.length > 0 ? stringAttributes.reduce(mergeJSONStrings) : undefined
31
- }), // disable exhaustive-deps because we want to memoize the result of the reduction
32
- // this is safe because the collection of attributes is not expected to change at runtime
33
- // eslint-disable-next-line react-hooks/exhaustive-deps, react-hooks/use-memo
34
- stringAttributes);
35
- };
36
- /**
37
- * Merges two JSON strings into one.
38
- */ const mergeJSONStrings = (a, b)=>JSON.stringify(Object.assign(safelyParseJSON(a), safelyParseJSON(b)));
39
- /**
40
- * Tries to parse a JSON string and returns an object.
41
- * If the JSON string is invalid, an empty object is returned.
42
- */ const safelyParseJSON = (json)=>{
43
- try {
44
- return JSON.parse(json);
45
- } catch {
46
- return {};
47
- }
48
- };
49
- /**
50
- * Helper hook that ensures that the attributes passed to the hook are stable.
51
- * This is necessary because the attributes are expected to not change at runtime.
52
- *
53
- * This hook will console.warn if the attributes change at runtime.
54
- */ const useWarnIfUnstableAttributes = (attributes)=>{
55
- 'use no memo';
56
- const initialAttributesRef = _react.useRef(attributes);
57
- // eslint-disable-next-line react-hooks/refs
58
- let isStable = initialAttributesRef.current.length === attributes.length;
59
- // eslint-disable-next-line react-hooks/refs
60
- if (initialAttributesRef.current !== attributes && isStable) {
61
- for(let i = 0; i < attributes.length; i++){
62
- // eslint-disable-next-line react-hooks/refs
63
- if (initialAttributesRef.current[i] !== attributes[i]) {
64
- isStable = false;
65
- break;
66
- }
67
- }
68
- }
69
- _react.useEffect(()=>{
70
- if (!isStable) {
71
- const error = new Error();
72
- // eslint-disable-next-line no-console
73
- console.warn(/** #__DE-INDENT__ */ `
74
- @fluentui/react-tabster [useMergedTabsterAttributes]:
75
- The attributes passed to the hook changed at runtime.
76
- This might lead to unexpected behavior, please ensure that the attributes are stable.
77
- ${error.stack}
78
- `);
79
- }
80
- }, [
81
- isStable
82
- ]);
83
- };
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/hooks/useMergeTabsterAttributes.ts"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport type { Types } from 'tabster';\nimport { TABSTER_ATTRIBUTE_NAME } from 'tabster';\n\n/**\n * Merges a collection of tabster attributes.\n *\n * ⚠️The attributes passed as arguments to this hook cannot change at runtime.\n * @internal\n * @param attributes - collection of tabster attributes from other react-tabster hooks\n * @returns single merged tabster attribute\n */\nexport const useMergedTabsterAttributes_unstable = (\n ...attributes: (Partial<Types.TabsterDOMAttribute> | null | undefined)[]\n): Types.TabsterDOMAttribute => {\n 'use no memo';\n\n const stringAttributes = attributes.reduce<string[]>((acc, curr) => {\n if (curr?.[TABSTER_ATTRIBUTE_NAME]) {\n acc.push(curr[TABSTER_ATTRIBUTE_NAME]);\n }\n return acc;\n }, []);\n\n if (process.env.NODE_ENV !== 'production') {\n // ignoring rules of hooks because this is a condition based on the environment\n // it's safe to ignore the rule\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useWarnIfUnstableAttributes(stringAttributes);\n }\n\n return React.useMemo(\n () => ({\n [TABSTER_ATTRIBUTE_NAME]: stringAttributes.length > 0 ? stringAttributes.reduce(mergeJSONStrings) : undefined,\n }),\n // disable exhaustive-deps because we want to memoize the result of the reduction\n // this is safe because the collection of attributes is not expected to change at runtime\n // eslint-disable-next-line react-hooks/exhaustive-deps, react-hooks/use-memo\n stringAttributes,\n );\n};\n\n/**\n * Merges two JSON strings into one.\n */\nconst mergeJSONStrings = (a: string, b: string): string =>\n JSON.stringify(Object.assign(safelyParseJSON(a), safelyParseJSON(b)));\n\n/**\n * Tries to parse a JSON string and returns an object.\n * If the JSON string is invalid, an empty object is returned.\n */\nconst safelyParseJSON = (json: string): object => {\n try {\n return JSON.parse(json);\n } catch {\n return {};\n }\n};\n\n/**\n * Helper hook that ensures that the attributes passed to the hook are stable.\n * This is necessary because the attributes are expected to not change at runtime.\n *\n * This hook will console.warn if the attributes change at runtime.\n */\nconst useWarnIfUnstableAttributes = (attributes: string[]) => {\n 'use no memo';\n\n const initialAttributesRef = React.useRef(attributes);\n\n // eslint-disable-next-line react-hooks/refs\n let isStable = initialAttributesRef.current.length === attributes.length;\n // eslint-disable-next-line react-hooks/refs\n if (initialAttributesRef.current !== attributes && isStable) {\n for (let i = 0; i < attributes.length; i++) {\n // eslint-disable-next-line react-hooks/refs\n if (initialAttributesRef.current[i] !== attributes[i]) {\n isStable = false;\n break;\n }\n }\n }\n React.useEffect(() => {\n if (!isStable) {\n const error = new Error();\n // eslint-disable-next-line no-console\n console.warn(/** #__DE-INDENT__ */ `\n @fluentui/react-tabster [useMergedTabsterAttributes]:\n The attributes passed to the hook changed at runtime.\n This might lead to unexpected behavior, please ensure that the attributes are stable.\n ${error.stack}\n `);\n }\n }, [isStable]);\n};\n"],"names":["useMergedTabsterAttributes_unstable","attributes","stringAttributes","reduce","acc","curr","TABSTER_ATTRIBUTE_NAME","push","process","env","NODE_ENV","useWarnIfUnstableAttributes","React","useMemo","length","mergeJSONStrings","undefined","a","b","JSON","stringify","Object","assign","safelyParseJSON","json","parse","initialAttributesRef","useRef","isStable","current","i","useEffect","error","Error","console","warn","stack"],"mappings":"AAAA;;;;;+BAcaA;;;eAAAA;;;;iEAZU;yBAEgB;AAUhC,MAAMA,sCAAsC,CACjD,GAAGC;IAEH;IAEA,MAAMC,mBAAmBD,WAAWE,MAAM,CAAW,CAACC,KAAKC;QACzD,IAAIA,iBAAAA,2BAAAA,IAAM,CAACC,+BAAsB,CAAC,EAAE;YAClCF,IAAIG,IAAI,CAACF,IAAI,CAACC,+BAAsB,CAAC;QACvC;QACA,OAAOF;IACT,GAAG,EAAE;IAEL,IAAII,QAAQC,GAAG,CAACC,QAAQ,KAAK,cAAc;QACzC,+EAA+E;QAC/E,+BAA+B;QAC/B,sDAAsD;QACtDC,4BAA4BT;IAC9B;IAEA,OAAOU,OAAMC,OAAO,CAClB,IAAO,CAAA;YACL,CAACP,+BAAsB,CAAC,EAAEJ,iBAAiBY,MAAM,GAAG,IAAIZ,iBAAiBC,MAAM,CAACY,oBAAoBC;QACtG,CAAA,GACA,iFAAiF;IACjF,yFAAyF;IACzF,6EAA6E;IAC7Ed;AAEJ;AAEA;;CAEC,GACD,MAAMa,mBAAmB,CAACE,GAAWC,IACnCC,KAAKC,SAAS,CAACC,OAAOC,MAAM,CAACC,gBAAgBN,IAAIM,gBAAgBL;AAEnE;;;CAGC,GACD,MAAMK,kBAAkB,CAACC;IACvB,IAAI;QACF,OAAOL,KAAKM,KAAK,CAACD;IACpB,EAAE,OAAM;QACN,OAAO,CAAC;IACV;AACF;AAEA;;;;;CAKC,GACD,MAAMb,8BAA8B,CAACV;IACnC;IAEA,MAAMyB,uBAAuBd,OAAMe,MAAM,CAAC1B;IAE1C,4CAA4C;IAC5C,IAAI2B,WAAWF,qBAAqBG,OAAO,CAACf,MAAM,KAAKb,WAAWa,MAAM;IACxE,4CAA4C;IAC5C,IAAIY,qBAAqBG,OAAO,KAAK5B,cAAc2B,UAAU;QAC3D,IAAK,IAAIE,IAAI,GAAGA,IAAI7B,WAAWa,MAAM,EAAEgB,IAAK;YAC1C,4CAA4C;YAC5C,IAAIJ,qBAAqBG,OAAO,CAACC,EAAE,KAAK7B,UAAU,CAAC6B,EAAE,EAAE;gBACrDF,WAAW;gBACX;YACF;QACF;IACF;IACAhB,OAAMmB,SAAS,CAAC;QACd,IAAI,CAACH,UAAU;YACb,MAAMI,QAAQ,IAAIC;YAClB,sCAAsC;YACtCC,QAAQC,IAAI,CAAC,mBAAmB,GAAG,CAAC;;;;QAIlC,EAAEH,MAAMI,KAAK,CAAC;MAChB,CAAC;QACH;IACF,GAAG;QAACR;KAAS;AACf"}
File without changes