@fluentui/react-tabster 9.9.2 → 9.10.0
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/CHANGELOG.json +18 -3
- package/CHANGELOG.md +13 -4
- package/dist/index.d.ts +12 -0
- package/lib/hooks/index.js +1 -0
- package/lib/hooks/index.js.map +1 -1
- package/lib/hooks/useMergeTabsterAttributes.js +47 -0
- package/lib/hooks/useMergeTabsterAttributes.js.map +1 -0
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib-commonjs/hooks/index.js +1 -0
- package/lib-commonjs/hooks/index.js.map +1 -1
- package/lib-commonjs/hooks/useMergeTabsterAttributes.js +49 -0
- package/lib-commonjs/hooks/useMergeTabsterAttributes.js.map +1 -0
- package/lib-commonjs/index.js +1 -0
- package/lib-commonjs/index.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.json
CHANGED
@@ -2,7 +2,22 @@
|
|
2
2
|
"name": "@fluentui/react-tabster",
|
3
3
|
"entries": [
|
4
4
|
{
|
5
|
-
"date": "Mon, 03 Jul 2023
|
5
|
+
"date": "Mon, 03 Jul 2023 13:32:38 GMT",
|
6
|
+
"tag": "@fluentui/react-tabster_v9.10.0",
|
7
|
+
"version": "9.10.0",
|
8
|
+
"comments": {
|
9
|
+
"minor": [
|
10
|
+
{
|
11
|
+
"author": "lingfan.gao@microsoft.com",
|
12
|
+
"package": "@fluentui/react-tabster",
|
13
|
+
"commit": "d2c95969c67521ea1df57e1339f8743b09b68772",
|
14
|
+
"comment": "feat: Implmenent useMergeTabsterAttributes_unstable"
|
15
|
+
}
|
16
|
+
]
|
17
|
+
}
|
18
|
+
},
|
19
|
+
{
|
20
|
+
"date": "Mon, 03 Jul 2023 11:57:13 GMT",
|
6
21
|
"tag": "@fluentui/react-tabster_v9.9.2",
|
7
22
|
"version": "9.9.2",
|
8
23
|
"comments": {
|
@@ -19,13 +34,13 @@
|
|
19
34
|
"author": "beachball",
|
20
35
|
"package": "@fluentui/react-tabster",
|
21
36
|
"comment": "Bump @fluentui/react-shared-contexts to v9.6.0",
|
22
|
-
"commit": "
|
37
|
+
"commit": "61633ba5de03e0ddf4839dba6da325e30c7ce9bd"
|
23
38
|
},
|
24
39
|
{
|
25
40
|
"author": "beachball",
|
26
41
|
"package": "@fluentui/react-tabster",
|
27
42
|
"comment": "Bump @fluentui/react-utilities to v9.10.1",
|
28
|
-
"commit": "
|
43
|
+
"commit": "61633ba5de03e0ddf4839dba6da325e30c7ce9bd"
|
29
44
|
}
|
30
45
|
]
|
31
46
|
}
|
package/CHANGELOG.md
CHANGED
@@ -1,18 +1,27 @@
|
|
1
1
|
# Change Log - @fluentui/react-tabster
|
2
2
|
|
3
|
-
This log was last generated on Mon, 03 Jul 2023
|
3
|
+
This log was last generated on Mon, 03 Jul 2023 13:32:38 GMT and should not be manually modified.
|
4
4
|
|
5
5
|
<!-- Start content -->
|
6
6
|
|
7
|
+
## [9.10.0](https://github.com/microsoft/fluentui/tree/@fluentui/react-tabster_v9.10.0)
|
8
|
+
|
9
|
+
Mon, 03 Jul 2023 13:32:38 GMT
|
10
|
+
[Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-tabster_v9.9.2..@fluentui/react-tabster_v9.10.0)
|
11
|
+
|
12
|
+
### Minor changes
|
13
|
+
|
14
|
+
- feat: Implmenent useMergeTabsterAttributes_unstable ([PR #28394](https://github.com/microsoft/fluentui/pull/28394) by lingfan.gao@microsoft.com)
|
15
|
+
|
7
16
|
## [9.9.2](https://github.com/microsoft/fluentui/tree/@fluentui/react-tabster_v9.9.2)
|
8
17
|
|
9
|
-
Mon, 03 Jul 2023 11:
|
18
|
+
Mon, 03 Jul 2023 11:57:13 GMT
|
10
19
|
[Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-tabster_v9.9.1..@fluentui/react-tabster_v9.9.2)
|
11
20
|
|
12
21
|
### Patches
|
13
22
|
|
14
|
-
- Bump @fluentui/react-shared-contexts to v9.6.0 ([PR #
|
15
|
-
- Bump @fluentui/react-utilities to v9.10.1 ([PR #
|
23
|
+
- Bump @fluentui/react-shared-contexts to v9.6.0 ([PR #28412](https://github.com/microsoft/fluentui/pull/28412) by beachball)
|
24
|
+
- Bump @fluentui/react-utilities to v9.10.1 ([PR #28412](https://github.com/microsoft/fluentui/pull/28412) by beachball)
|
16
25
|
|
17
26
|
## [9.9.1](https://github.com/microsoft/fluentui/tree/@fluentui/react-tabster_v9.9.1)
|
18
27
|
|
package/dist/index.d.ts
CHANGED
@@ -67,6 +67,8 @@ export declare type FocusOutlineStyleOptions = {
|
|
67
67
|
|
68
68
|
declare type GriffelResetStyle = Parameters<typeof makeResetStyles>[0];
|
69
69
|
|
70
|
+
export declare type TabsterDOMAttribute = Types.TabsterDOMAttribute;
|
71
|
+
|
70
72
|
/**
|
71
73
|
* A hook that returns the necessary tabster attributes to support arrow key navigation
|
72
74
|
* @param options - Options to configure keyboard navigation
|
@@ -162,6 +164,16 @@ export declare function useFocusWithin<TElement extends HTMLElement = HTMLElemen
|
|
162
164
|
*/
|
163
165
|
export declare function useKeyboardNavAttribute<E extends HTMLElement>(): RefObject<E>;
|
164
166
|
|
167
|
+
/**
|
168
|
+
* Merges a collection of tabster attributes.
|
169
|
+
*
|
170
|
+
* ⚠️The attributes passed as arguments to this hook cannot change at runtime.
|
171
|
+
* @internal
|
172
|
+
* @param attributes - collection of tabster attributes from other react-tabster hooks
|
173
|
+
* @returns single merged tabster attribute
|
174
|
+
*/
|
175
|
+
export declare const useMergedTabsterAttributes_unstable: (...attributes: Types.TabsterDOMAttribute[]) => Types.TabsterDOMAttribute;
|
176
|
+
|
165
177
|
/**
|
166
178
|
* Applies modal dialog behaviour through DOM attributes
|
167
179
|
* Modal element will focus trap and hide other content on the page
|
package/lib/hooks/index.js
CHANGED
package/lib/hooks/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["index.ts"],"sourcesContent":["export * from './useArrowNavigationGroup';\nexport * from './useFocusableGroup';\nexport * from './useFocusFinders';\nexport * from './useFocusVisible';\nexport * from './useFocusWithin';\nexport * from './useKeyboardNavAttribute';\nexport * from './useModalAttributes';\nexport * from './useTabsterAttributes';\nexport * from './useObservedElement';\nexport * from './useFocusObserved';\n"],"names":[],"mappings":"AAAA,cAAc,4BAA4B;AAC1C,cAAc,sBAAsB;AACpC,cAAc,oBAAoB;AAClC,cAAc,oBAAoB;AAClC,cAAc,mBAAmB;AACjC,cAAc,4BAA4B;AAC1C,cAAc,uBAAuB;AACrC,cAAc,yBAAyB;AACvC,cAAc,uBAAuB;AACrC,cAAc,qBAAqB"}
|
1
|
+
{"version":3,"sources":["index.ts"],"sourcesContent":["export * from './useArrowNavigationGroup';\nexport * from './useFocusableGroup';\nexport * from './useFocusFinders';\nexport * from './useFocusVisible';\nexport * from './useFocusWithin';\nexport * from './useKeyboardNavAttribute';\nexport * from './useModalAttributes';\nexport * from './useTabsterAttributes';\nexport * from './useObservedElement';\nexport * from './useMergeTabsterAttributes';\nexport * from './useFocusObserved';\n"],"names":[],"mappings":"AAAA,cAAc,4BAA4B;AAC1C,cAAc,sBAAsB;AACpC,cAAc,oBAAoB;AAClC,cAAc,oBAAoB;AAClC,cAAc,mBAAmB;AACjC,cAAc,4BAA4B;AAC1C,cAAc,uBAAuB;AACrC,cAAc,yBAAyB;AACvC,cAAc,uBAAuB;AACrC,cAAc,8BAA8B;AAC5C,cAAc,qBAAqB"}
|
@@ -0,0 +1,47 @@
|
|
1
|
+
import * as React from 'react';
|
2
|
+
import { Types } from 'tabster';
|
3
|
+
/**
|
4
|
+
* Merges a collection of tabster attributes.
|
5
|
+
*
|
6
|
+
* ⚠️The attributes passed as arguments to this hook cannot change at runtime.
|
7
|
+
* @internal
|
8
|
+
* @param attributes - collection of tabster attributes from other react-tabster hooks
|
9
|
+
* @returns single merged tabster attribute
|
10
|
+
*/ export const useMergedTabsterAttributes_unstable = (...attributes)=>{
|
11
|
+
const stringAttributes = attributes.map((attribute)=>attribute[Types.TabsterAttributeName]).filter(Boolean);
|
12
|
+
const mergedStrigAttribute = React.useMemo(()=>{
|
13
|
+
let attribute = stringAttributes[0];
|
14
|
+
attributes.shift();
|
15
|
+
for (const attr of stringAttributes){
|
16
|
+
attribute = mergeAttributes(attribute, attr);
|
17
|
+
}
|
18
|
+
return attribute;
|
19
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
20
|
+
}, stringAttributes);
|
21
|
+
return {
|
22
|
+
[Types.TabsterAttributeName]: mergedStrigAttribute
|
23
|
+
};
|
24
|
+
};
|
25
|
+
function mergeAttributes(a, b) {
|
26
|
+
if (!b) {
|
27
|
+
return a;
|
28
|
+
}
|
29
|
+
let aParsed = {};
|
30
|
+
let bParsed = {};
|
31
|
+
if (a) {
|
32
|
+
try {
|
33
|
+
aParsed = JSON.parse(a);
|
34
|
+
// eslint-disable-next-line no-empty
|
35
|
+
} catch {}
|
36
|
+
}
|
37
|
+
if (b) {
|
38
|
+
try {
|
39
|
+
bParsed = JSON.parse(b);
|
40
|
+
// eslint-disable-next-line no-empty
|
41
|
+
} catch {}
|
42
|
+
}
|
43
|
+
return JSON.stringify({
|
44
|
+
...aParsed,
|
45
|
+
...bParsed
|
46
|
+
});
|
47
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["useMergeTabsterAttributes.ts"],"sourcesContent":["import * as React from 'react';\nimport { Types } 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: Types.TabsterDOMAttribute[]\n) => Types.TabsterDOMAttribute = (...attributes) => {\n const stringAttributes = attributes\n .map(attribute => attribute[Types.TabsterAttributeName])\n .filter(Boolean) as string[];\n\n const mergedStrigAttribute = React.useMemo(() => {\n let attribute = stringAttributes[0];\n attributes.shift();\n\n for (const attr of stringAttributes) {\n attribute = mergeAttributes(attribute, attr);\n }\n\n return attribute;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, stringAttributes);\n\n return { [Types.TabsterAttributeName]: mergedStrigAttribute };\n};\n\nfunction mergeAttributes(a: string, b?: string): string {\n if (!b) {\n return a;\n }\n\n let aParsed = {};\n let bParsed = {};\n if (a) {\n try {\n aParsed = JSON.parse(a);\n // eslint-disable-next-line no-empty\n } catch {}\n }\n\n if (b) {\n try {\n bParsed = JSON.parse(b);\n // eslint-disable-next-line no-empty\n } catch {}\n }\n\n return JSON.stringify({ ...aParsed, ...bParsed });\n}\n"],"names":["React","Types","useMergedTabsterAttributes_unstable","attributes","stringAttributes","map","attribute","TabsterAttributeName","filter","Boolean","mergedStrigAttribute","useMemo","shift","attr","mergeAttributes","a","b","aParsed","bParsed","JSON","parse","stringify"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,KAAK,QAAQ,UAAU;AAEhC;;;;;;;CAOC,GACD,OAAO,MAAMC,sCAEoB,CAAC,GAAGC,aAAe;IAClD,MAAMC,mBAAmBD,WACtBE,GAAG,CAACC,CAAAA,YAAaA,SAAS,CAACL,MAAMM,oBAAoB,CAAC,EACtDC,MAAM,CAACC;IAEV,MAAMC,uBAAuBV,MAAMW,OAAO,CAAC,IAAM;QAC/C,IAAIL,YAAYF,gBAAgB,CAAC,EAAE;QACnCD,WAAWS,KAAK;QAEhB,KAAK,MAAMC,QAAQT,iBAAkB;YACnCE,YAAYQ,gBAAgBR,WAAWO;QACzC;QAEA,OAAOP;IACP,uDAAuD;IACzD,GAAGF;IAEH,OAAO;QAAE,CAACH,MAAMM,oBAAoB,CAAC,EAAEG;IAAqB;AAC9D,EAAE;AAEF,SAASI,gBAAgBC,CAAS,EAAEC,CAAU,EAAU;IACtD,IAAI,CAACA,GAAG;QACN,OAAOD;IACT,CAAC;IAED,IAAIE,UAAU,CAAC;IACf,IAAIC,UAAU,CAAC;IACf,IAAIH,GAAG;QACL,IAAI;YACFE,UAAUE,KAAKC,KAAK,CAACL;QACrB,oCAAoC;QACtC,EAAE,OAAM,CAAC;IACX,CAAC;IAED,IAAIC,GAAG;QACL,IAAI;YACFE,UAAUC,KAAKC,KAAK,CAACJ;QACrB,oCAAoC;QACtC,EAAE,OAAM,CAAC;IACX,CAAC;IAED,OAAOG,KAAKE,SAAS,CAAC;QAAE,GAAGJ,OAAO;QAAE,GAAGC,OAAO;IAAC;AACjD"}
|
package/lib/index.js
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
export { useArrowNavigationGroup, useFocusableGroup, useFocusFinders, useFocusVisible, useFocusWithin, useKeyboardNavAttribute, useModalAttributes, useTabsterAttributes, useObservedElement, useFocusObserved } from './hooks/index';
|
1
|
+
export { useArrowNavigationGroup, useFocusableGroup, useFocusFinders, useFocusVisible, useFocusWithin, useKeyboardNavAttribute, useModalAttributes, useTabsterAttributes, useObservedElement, useFocusObserved, useMergedTabsterAttributes_unstable } from './hooks/index';
|
2
2
|
export { createCustomFocusIndicatorStyle, createFocusOutlineStyle } from './focus/index';
|
3
3
|
export { applyFocusVisiblePolyfill } from './focus/index';
|
package/lib/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["index.ts"],"sourcesContent":["export {\n useArrowNavigationGroup,\n useFocusableGroup,\n useFocusFinders,\n useFocusVisible,\n useFocusWithin,\n useKeyboardNavAttribute,\n useModalAttributes,\n useTabsterAttributes,\n useObservedElement,\n useFocusObserved,\n} from './hooks/index';\nexport type {\n UseArrowNavigationGroupOptions,\n UseFocusableGroupOptions,\n UseModalAttributesOptions,\n} from './hooks/index';\n\nexport { createCustomFocusIndicatorStyle, createFocusOutlineStyle } from './focus/index';\n\nexport type {\n CreateCustomFocusIndicatorStyleOptions,\n CreateFocusOutlineStyleOptions,\n FocusOutlineOffset,\n FocusOutlineStyleOptions,\n} from './focus/index';\n\nexport { applyFocusVisiblePolyfill } from './focus/index';\n"],"names":["useArrowNavigationGroup","useFocusableGroup","useFocusFinders","useFocusVisible","useFocusWithin","useKeyboardNavAttribute","useModalAttributes","useTabsterAttributes","useObservedElement","useFocusObserved","createCustomFocusIndicatorStyle","createFocusOutlineStyle","applyFocusVisiblePolyfill"],"mappings":"AAAA,SACEA,uBAAuB,EACvBC,iBAAiB,EACjBC,eAAe,EACfC,eAAe,EACfC,cAAc,EACdC,uBAAuB,EACvBC,kBAAkB,EAClBC,oBAAoB,EACpBC,kBAAkB,EAClBC,gBAAgB,
|
1
|
+
{"version":3,"sources":["index.ts"],"sourcesContent":["export {\n useArrowNavigationGroup,\n useFocusableGroup,\n useFocusFinders,\n useFocusVisible,\n useFocusWithin,\n useKeyboardNavAttribute,\n useModalAttributes,\n useTabsterAttributes,\n useObservedElement,\n useFocusObserved,\n useMergedTabsterAttributes_unstable,\n} from './hooks/index';\nexport type {\n UseArrowNavigationGroupOptions,\n UseFocusableGroupOptions,\n UseModalAttributesOptions,\n} from './hooks/index';\n\nexport { createCustomFocusIndicatorStyle, createFocusOutlineStyle } from './focus/index';\n\nexport type {\n CreateCustomFocusIndicatorStyleOptions,\n CreateFocusOutlineStyleOptions,\n FocusOutlineOffset,\n FocusOutlineStyleOptions,\n} from './focus/index';\n\nexport { applyFocusVisiblePolyfill } from './focus/index';\nimport { Types as TabsterTypes } from 'tabster';\n\nexport type TabsterDOMAttribute = TabsterTypes.TabsterDOMAttribute;\n"],"names":["useArrowNavigationGroup","useFocusableGroup","useFocusFinders","useFocusVisible","useFocusWithin","useKeyboardNavAttribute","useModalAttributes","useTabsterAttributes","useObservedElement","useFocusObserved","useMergedTabsterAttributes_unstable","createCustomFocusIndicatorStyle","createFocusOutlineStyle","applyFocusVisiblePolyfill"],"mappings":"AAAA,SACEA,uBAAuB,EACvBC,iBAAiB,EACjBC,eAAe,EACfC,eAAe,EACfC,cAAc,EACdC,uBAAuB,EACvBC,kBAAkB,EAClBC,oBAAoB,EACpBC,kBAAkB,EAClBC,gBAAgB,EAChBC,mCAAmC,QAC9B,gBAAgB;AAOvB,SAASC,+BAA+B,EAAEC,uBAAuB,QAAQ,gBAAgB;AASzF,SAASC,yBAAyB,QAAQ,gBAAgB"}
|
@@ -12,4 +12,5 @@ _exportStar(require("./useKeyboardNavAttribute"), exports);
|
|
12
12
|
_exportStar(require("./useModalAttributes"), exports);
|
13
13
|
_exportStar(require("./useTabsterAttributes"), exports);
|
14
14
|
_exportStar(require("./useObservedElement"), exports);
|
15
|
+
_exportStar(require("./useMergeTabsterAttributes"), exports);
|
15
16
|
_exportStar(require("./useFocusObserved"), exports);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["index.js"],"sourcesContent":["export * from './useArrowNavigationGroup';\nexport * from './useFocusableGroup';\nexport * from './useFocusFinders';\nexport * from './useFocusVisible';\nexport * from './useFocusWithin';\nexport * from './useKeyboardNavAttribute';\nexport * from './useModalAttributes';\nexport * from './useTabsterAttributes';\nexport * from './useObservedElement';\nexport * from './useFocusObserved';\n"],"names":[],"mappings":";;;;;oBAAc;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA"}
|
1
|
+
{"version":3,"sources":["index.js"],"sourcesContent":["export * from './useArrowNavigationGroup';\nexport * from './useFocusableGroup';\nexport * from './useFocusFinders';\nexport * from './useFocusVisible';\nexport * from './useFocusWithin';\nexport * from './useKeyboardNavAttribute';\nexport * from './useModalAttributes';\nexport * from './useTabsterAttributes';\nexport * from './useObservedElement';\nexport * from './useMergeTabsterAttributes';\nexport * from './useFocusObserved';\n"],"names":[],"mappings":";;;;;oBAAc;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA"}
|
@@ -0,0 +1,49 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
3
|
+
value: true
|
4
|
+
});
|
5
|
+
Object.defineProperty(exports, "useMergedTabsterAttributes_unstable", {
|
6
|
+
enumerable: true,
|
7
|
+
get: ()=>useMergedTabsterAttributes_unstable
|
8
|
+
});
|
9
|
+
const _interopRequireWildcard = require("@swc/helpers/lib/_interop_require_wildcard.js").default;
|
10
|
+
const _react = /*#__PURE__*/ _interopRequireWildcard(require("react"));
|
11
|
+
const _tabster = require("tabster");
|
12
|
+
const useMergedTabsterAttributes_unstable = (...attributes)=>{
|
13
|
+
const stringAttributes = attributes.map((attribute)=>attribute[_tabster.Types.TabsterAttributeName]).filter(Boolean);
|
14
|
+
const mergedStrigAttribute = _react.useMemo(()=>{
|
15
|
+
let attribute = stringAttributes[0];
|
16
|
+
attributes.shift();
|
17
|
+
for (const attr of stringAttributes){
|
18
|
+
attribute = mergeAttributes(attribute, attr);
|
19
|
+
}
|
20
|
+
return attribute;
|
21
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
22
|
+
}, stringAttributes);
|
23
|
+
return {
|
24
|
+
[_tabster.Types.TabsterAttributeName]: mergedStrigAttribute
|
25
|
+
};
|
26
|
+
};
|
27
|
+
function mergeAttributes(a, b) {
|
28
|
+
if (!b) {
|
29
|
+
return a;
|
30
|
+
}
|
31
|
+
let aParsed = {};
|
32
|
+
let bParsed = {};
|
33
|
+
if (a) {
|
34
|
+
try {
|
35
|
+
aParsed = JSON.parse(a);
|
36
|
+
// eslint-disable-next-line no-empty
|
37
|
+
} catch {}
|
38
|
+
}
|
39
|
+
if (b) {
|
40
|
+
try {
|
41
|
+
bParsed = JSON.parse(b);
|
42
|
+
// eslint-disable-next-line no-empty
|
43
|
+
} catch {}
|
44
|
+
}
|
45
|
+
return JSON.stringify({
|
46
|
+
...aParsed,
|
47
|
+
...bParsed
|
48
|
+
});
|
49
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["useMergeTabsterAttributes.js"],"sourcesContent":["import * as React from 'react';\nimport { Types } from 'tabster';\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 */ export const useMergedTabsterAttributes_unstable = (...attributes)=>{\n const stringAttributes = attributes.map((attribute)=>attribute[Types.TabsterAttributeName]).filter(Boolean);\n const mergedStrigAttribute = React.useMemo(()=>{\n let attribute = stringAttributes[0];\n attributes.shift();\n for (const attr of stringAttributes){\n attribute = mergeAttributes(attribute, attr);\n }\n return attribute;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, stringAttributes);\n return {\n [Types.TabsterAttributeName]: mergedStrigAttribute\n };\n};\nfunction mergeAttributes(a, b) {\n if (!b) {\n return a;\n }\n let aParsed = {};\n let bParsed = {};\n if (a) {\n try {\n aParsed = JSON.parse(a);\n // eslint-disable-next-line no-empty\n } catch {}\n }\n if (b) {\n try {\n bParsed = JSON.parse(b);\n // eslint-disable-next-line no-empty\n } catch {}\n }\n return JSON.stringify({\n ...aParsed,\n ...bParsed\n });\n}\n"],"names":["useMergedTabsterAttributes_unstable","attributes","stringAttributes","map","attribute","Types","TabsterAttributeName","filter","Boolean","mergedStrigAttribute","React","useMemo","shift","attr","mergeAttributes","a","b","aParsed","bParsed","JSON","parse","stringify"],"mappings":";;;;+BASiBA;;aAAAA;;;6DATM;yBACD;AAQX,MAAMA,sCAAsC,CAAC,GAAGC,aAAa;IACpE,MAAMC,mBAAmBD,WAAWE,GAAG,CAAC,CAACC,YAAYA,SAAS,CAACC,cAAK,CAACC,oBAAoB,CAAC,EAAEC,MAAM,CAACC;IACnG,MAAMC,uBAAuBC,OAAMC,OAAO,CAAC,IAAI;QAC3C,IAAIP,YAAYF,gBAAgB,CAAC,EAAE;QACnCD,WAAWW,KAAK;QAChB,KAAK,MAAMC,QAAQX,iBAAiB;YAChCE,YAAYU,gBAAgBV,WAAWS;QAC3C;QACA,OAAOT;IACX,uDAAuD;IACvD,GAAGF;IACH,OAAO;QACH,CAACG,cAAK,CAACC,oBAAoB,CAAC,EAAEG;IAClC;AACJ;AACA,SAASK,gBAAgBC,CAAC,EAAEC,CAAC,EAAE;IAC3B,IAAI,CAACA,GAAG;QACJ,OAAOD;IACX,CAAC;IACD,IAAIE,UAAU,CAAC;IACf,IAAIC,UAAU,CAAC;IACf,IAAIH,GAAG;QACH,IAAI;YACAE,UAAUE,KAAKC,KAAK,CAACL;QACzB,oCAAoC;QACpC,EAAE,OAAO,CAAC;IACd,CAAC;IACD,IAAIC,GAAG;QACH,IAAI;YACAE,UAAUC,KAAKC,KAAK,CAACJ;QACzB,oCAAoC;QACpC,EAAE,OAAO,CAAC;IACd,CAAC;IACD,OAAOG,KAAKE,SAAS,CAAC;QAClB,GAAGJ,OAAO;QACV,GAAGC,OAAO;IACd;AACJ"}
|
package/lib-commonjs/index.js
CHANGED
@@ -19,6 +19,7 @@ _export(exports, {
|
|
19
19
|
useTabsterAttributes: ()=>_index.useTabsterAttributes,
|
20
20
|
useObservedElement: ()=>_index.useObservedElement,
|
21
21
|
useFocusObserved: ()=>_index.useFocusObserved,
|
22
|
+
useMergedTabsterAttributes_unstable: ()=>_index.useMergedTabsterAttributes_unstable,
|
22
23
|
createCustomFocusIndicatorStyle: ()=>_index1.createCustomFocusIndicatorStyle,
|
23
24
|
createFocusOutlineStyle: ()=>_index1.createFocusOutlineStyle,
|
24
25
|
applyFocusVisiblePolyfill: ()=>_index1.applyFocusVisiblePolyfill
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["index.js"],"sourcesContent":["export { useArrowNavigationGroup, useFocusableGroup, useFocusFinders, useFocusVisible, useFocusWithin, useKeyboardNavAttribute, useModalAttributes, useTabsterAttributes, useObservedElement, useFocusObserved } from './hooks/index';\nexport { createCustomFocusIndicatorStyle, createFocusOutlineStyle } from './focus/index';\nexport { applyFocusVisiblePolyfill } from './focus/index';\n"],"names":["useArrowNavigationGroup","useFocusableGroup","useFocusFinders","useFocusVisible","useFocusWithin","useKeyboardNavAttribute","useModalAttributes","useTabsterAttributes","useObservedElement","useFocusObserved","createCustomFocusIndicatorStyle","createFocusOutlineStyle","applyFocusVisiblePolyfill"],"mappings":";;;;;;;;;;;IAASA,uBAAuB,MAAvBA,8BAAuB;IAAEC,iBAAiB,MAAjBA,wBAAiB;IAAEC,eAAe,MAAfA,sBAAe;IAAEC,eAAe,MAAfA,sBAAe;IAAEC,cAAc,MAAdA,qBAAc;IAAEC,uBAAuB,MAAvBA,8BAAuB;IAAEC,kBAAkB,MAAlBA,yBAAkB;IAAEC,oBAAoB,MAApBA,2BAAoB;IAAEC,kBAAkB,MAAlBA,yBAAkB;IAAEC,gBAAgB,MAAhBA,uBAAgB;
|
1
|
+
{"version":3,"sources":["index.js"],"sourcesContent":["export { useArrowNavigationGroup, useFocusableGroup, useFocusFinders, useFocusVisible, useFocusWithin, useKeyboardNavAttribute, useModalAttributes, useTabsterAttributes, useObservedElement, useFocusObserved, useMergedTabsterAttributes_unstable } from './hooks/index';\nexport { createCustomFocusIndicatorStyle, createFocusOutlineStyle } from './focus/index';\nexport { applyFocusVisiblePolyfill } from './focus/index';\n"],"names":["useArrowNavigationGroup","useFocusableGroup","useFocusFinders","useFocusVisible","useFocusWithin","useKeyboardNavAttribute","useModalAttributes","useTabsterAttributes","useObservedElement","useFocusObserved","useMergedTabsterAttributes_unstable","createCustomFocusIndicatorStyle","createFocusOutlineStyle","applyFocusVisiblePolyfill"],"mappings":";;;;;;;;;;;IAASA,uBAAuB,MAAvBA,8BAAuB;IAAEC,iBAAiB,MAAjBA,wBAAiB;IAAEC,eAAe,MAAfA,sBAAe;IAAEC,eAAe,MAAfA,sBAAe;IAAEC,cAAc,MAAdA,qBAAc;IAAEC,uBAAuB,MAAvBA,8BAAuB;IAAEC,kBAAkB,MAAlBA,yBAAkB;IAAEC,oBAAoB,MAApBA,2BAAoB;IAAEC,kBAAkB,MAAlBA,yBAAkB;IAAEC,gBAAgB,MAAhBA,uBAAgB;IAAEC,mCAAmC,MAAnCA,0CAAmC;IAC1OC,+BAA+B,MAA/BA,uCAA+B;IAAEC,uBAAuB,MAAvBA,+BAAuB;IACxDC,yBAAyB,MAAzBA,iCAAyB;;uBAFyN;wBAClL"}
|