@fluentui/react-tree 9.4.11 → 9.4.13

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 (42) hide show
  1. package/CHANGELOG.md +37 -2
  2. package/lib/components/FlatTree/useFlatTree.js +13 -29
  3. package/lib/components/FlatTree/useFlatTree.js.map +1 -1
  4. package/lib/components/FlatTree/useHeadlessFlatTree.js +5 -23
  5. package/lib/components/FlatTree/useHeadlessFlatTree.js.map +1 -1
  6. package/lib/components/Tree/useNestedControllableCheckedItems.js.map +1 -1
  7. package/lib/components/Tree/useTree.js +26 -46
  8. package/lib/components/Tree/useTree.js.map +1 -1
  9. package/lib/{components/FlatTree → hooks}/useFlatTreeNavigation.js +35 -27
  10. package/lib/hooks/useFlatTreeNavigation.js.map +1 -0
  11. package/lib/hooks/useHTMLElementWalkerRef.js +17 -0
  12. package/lib/hooks/useHTMLElementWalkerRef.js.map +1 -0
  13. package/lib/hooks/useRootTree.js +24 -20
  14. package/lib/hooks/useRootTree.js.map +1 -1
  15. package/lib/hooks/useRovingTabIndexes.js +1 -1
  16. package/lib/hooks/useRovingTabIndexes.js.map +1 -1
  17. package/lib/hooks/useTreeNavigation.js +66 -0
  18. package/lib/hooks/useTreeNavigation.js.map +1 -0
  19. package/lib-commonjs/components/FlatTree/useFlatTree.js +13 -29
  20. package/lib-commonjs/components/FlatTree/useFlatTree.js.map +1 -1
  21. package/lib-commonjs/components/FlatTree/useHeadlessFlatTree.js +5 -23
  22. package/lib-commonjs/components/FlatTree/useHeadlessFlatTree.js.map +1 -1
  23. package/lib-commonjs/components/Tree/useTree.js +26 -46
  24. package/lib-commonjs/components/Tree/useTree.js.map +1 -1
  25. package/lib-commonjs/{components/FlatTree → hooks}/useFlatTreeNavigation.js +35 -26
  26. package/lib-commonjs/hooks/useFlatTreeNavigation.js.map +1 -0
  27. package/lib-commonjs/hooks/useHTMLElementWalkerRef.js +28 -0
  28. package/lib-commonjs/hooks/useHTMLElementWalkerRef.js.map +1 -0
  29. package/lib-commonjs/hooks/useRootTree.js +24 -20
  30. package/lib-commonjs/hooks/useRootTree.js.map +1 -1
  31. package/lib-commonjs/hooks/useRovingTabIndexes.js +1 -1
  32. package/lib-commonjs/hooks/useRovingTabIndexes.js.map +1 -1
  33. package/lib-commonjs/hooks/useTreeNavigation.js +77 -0
  34. package/lib-commonjs/hooks/useTreeNavigation.js.map +1 -0
  35. package/package.json +20 -14
  36. package/CHANGELOG.json +0 -3543
  37. package/lib/components/FlatTree/useFlatTreeNavigation.js.map +0 -1
  38. package/lib/components/Tree/useTreeNavigation.js +0 -52
  39. package/lib/components/Tree/useTreeNavigation.js.map +0 -1
  40. package/lib-commonjs/components/FlatTree/useFlatTreeNavigation.js.map +0 -1
  41. package/lib-commonjs/components/Tree/useTreeNavigation.js +0 -62
  42. package/lib-commonjs/components/Tree/useTreeNavigation.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["useFlatTreeNavigation.ts"],"sourcesContent":["import { useFluent_unstable } from '@fluentui/react-shared-contexts';\nimport { useEventCallback } from '@fluentui/react-utilities';\nimport { TreeNavigationData_unstable } from '../../Tree';\nimport { nextTypeAheadElement } from '../../utils/nextTypeAheadElement';\nimport { treeDataTypes } from '../../utils/tokens';\nimport { treeItemFilter } from '../../utils/treeItemFilter';\nimport { useRovingTabIndex } from '../../hooks/useRovingTabIndexes';\nimport { HTMLElementWalker } from '../../utils/createHTMLElementWalker';\nimport { TreeItemValue } from '../../TreeItem';\nimport { dataTreeItemValueAttrName } from '../../utils/getTreeItemValueFromElement';\n\nexport function useFlatTreeNavigation() {\n const { targetDocument } = useFluent_unstable();\n const { rove, initialize } = useRovingTabIndex(treeItemFilter);\n\n function getNextElement(data: TreeNavigationData_unstable, walker: HTMLElementWalker) {\n if (!targetDocument) {\n return null;\n }\n switch (data.type) {\n case treeDataTypes.Click:\n return data.target;\n case treeDataTypes.TypeAhead:\n walker.currentElement = data.target;\n return nextTypeAheadElement(walker, data.event.key);\n case treeDataTypes.ArrowLeft: {\n const nextElement = parentElement(data.parentValue, walker);\n if (!nextElement && process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.warn(\n /* #__DE-INDENT__ */ `\n @fluentui/react-tree [useFlatTreeNavigation]:\n \\'ArrowLeft\\' navigation was not possible.\n No parent element found for the current element:\n `,\n data.target,\n );\n }\n return nextElement;\n }\n case treeDataTypes.ArrowRight: {\n walker.currentElement = data.target;\n const nextElement = firstChild(data.target, walker);\n if (!nextElement && process.env.NODE_ENV !== 'production') {\n const ariaLevel = Number(data.target.getAttribute('aria-level'));\n // eslint-disable-next-line no-console\n console.warn(\n /* #__DE-INDENT__ */ `\n @fluentui/react-tree [useFlatTreeNavigation]:\n \\'ArrowRight\\' navigation was not possible.\n No element with \"aria-posinset=1\" and \"aria-level=${ariaLevel + 1}\"\n was found after the current element!\n `,\n data.target,\n );\n }\n return nextElement;\n }\n case treeDataTypes.End:\n walker.currentElement = walker.root;\n return walker.lastChild();\n case treeDataTypes.Home:\n walker.currentElement = walker.root;\n return walker.firstChild();\n case treeDataTypes.ArrowDown:\n walker.currentElement = data.target;\n return walker.nextElement();\n case treeDataTypes.ArrowUp:\n walker.currentElement = data.target;\n return walker.previousElement();\n }\n }\n const navigate = useEventCallback((data: TreeNavigationData_unstable, walker: HTMLElementWalker) => {\n const nextElement = getNextElement(data, walker);\n if (nextElement) {\n rove(nextElement);\n }\n });\n return { navigate, initialize } as const;\n}\n\nfunction firstChild(target: HTMLElement, treeWalker: HTMLElementWalker): HTMLElement | null {\n const nextElement = treeWalker.nextElement();\n if (!nextElement) {\n return null;\n }\n const nextElementAriaPosInSet = nextElement.getAttribute('aria-posinset');\n const nextElementAriaLevel = nextElement.getAttribute('aria-level');\n const targetAriaLevel = target.getAttribute('aria-level');\n if (nextElementAriaPosInSet === '1' && Number(nextElementAriaLevel) === Number(targetAriaLevel) + 1) {\n return nextElement;\n }\n return null;\n}\n\nfunction parentElement(parentValue: TreeItemValue | undefined, treeWalker: HTMLElementWalker) {\n if (parentValue === undefined) {\n return null;\n }\n return treeWalker.root.querySelector<HTMLElement>(`[${dataTreeItemValueAttrName}=\"${parentValue}\"]`);\n}\n"],"names":["useFluent_unstable","useEventCallback","nextTypeAheadElement","treeDataTypes","treeItemFilter","useRovingTabIndex","dataTreeItemValueAttrName","useFlatTreeNavigation","targetDocument","rove","initialize","getNextElement","data","walker","type","Click","target","TypeAhead","currentElement","event","key","ArrowLeft","nextElement","parentElement","parentValue","process","env","NODE_ENV","console","warn","ArrowRight","firstChild","ariaLevel","Number","getAttribute","End","root","lastChild","Home","ArrowDown","ArrowUp","previousElement","navigate","treeWalker","nextElementAriaPosInSet","nextElementAriaLevel","targetAriaLevel","undefined","querySelector"],"mappings":"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"}
@@ -1,52 +0,0 @@
1
- import { nextTypeAheadElement } from '../../utils/nextTypeAheadElement';
2
- import { treeDataTypes } from '../../utils/tokens';
3
- import { treeItemFilter } from '../../utils/treeItemFilter';
4
- import { useRovingTabIndex } from '../../hooks/useRovingTabIndexes';
5
- export function useTreeNavigation() {
6
- const { rove, initialize } = useRovingTabIndex(treeItemFilter);
7
- const getNextElement = (data, treeItemWalker)=>{
8
- switch(data.type){
9
- case treeDataTypes.Click:
10
- return data.target;
11
- case treeDataTypes.TypeAhead:
12
- treeItemWalker.currentElement = data.target;
13
- return nextTypeAheadElement(treeItemWalker, data.event.key);
14
- case treeDataTypes.ArrowLeft:
15
- treeItemWalker.currentElement = data.target;
16
- return treeItemWalker.parentElement();
17
- case treeDataTypes.ArrowRight:
18
- treeItemWalker.currentElement = data.target;
19
- return treeItemWalker.firstChild();
20
- case treeDataTypes.End:
21
- treeItemWalker.currentElement = treeItemWalker.root;
22
- return lastChildRecursive(treeItemWalker);
23
- case treeDataTypes.Home:
24
- treeItemWalker.currentElement = treeItemWalker.root;
25
- return treeItemWalker.firstChild();
26
- case treeDataTypes.ArrowDown:
27
- treeItemWalker.currentElement = data.target;
28
- return treeItemWalker.nextElement();
29
- case treeDataTypes.ArrowUp:
30
- treeItemWalker.currentElement = data.target;
31
- return treeItemWalker.previousElement();
32
- }
33
- };
34
- function navigate(data, walker) {
35
- const nextElement = getNextElement(data, walker);
36
- if (nextElement) {
37
- rove(nextElement);
38
- }
39
- }
40
- return {
41
- navigate,
42
- initialize
43
- };
44
- }
45
- function lastChildRecursive(walker) {
46
- let lastElement = null;
47
- let nextElement = null;
48
- while(nextElement = walker.lastChild()){
49
- lastElement = nextElement;
50
- }
51
- return lastElement;
52
- }
@@ -1 +0,0 @@
1
- {"version":3,"sources":["useTreeNavigation.ts"],"sourcesContent":["import { TreeNavigationData_unstable } from './Tree.types';\nimport { nextTypeAheadElement } from '../../utils/nextTypeAheadElement';\nimport { treeDataTypes } from '../../utils/tokens';\nimport { treeItemFilter } from '../../utils/treeItemFilter';\nimport { useRovingTabIndex } from '../../hooks/useRovingTabIndexes';\nimport { HTMLElementWalker } from '../../utils/createHTMLElementWalker';\n\nexport function useTreeNavigation() {\n const { rove, initialize } = useRovingTabIndex(treeItemFilter);\n\n const getNextElement = (data: TreeNavigationData_unstable, treeItemWalker: HTMLElementWalker) => {\n switch (data.type) {\n case treeDataTypes.Click:\n return data.target;\n case treeDataTypes.TypeAhead:\n treeItemWalker.currentElement = data.target;\n return nextTypeAheadElement(treeItemWalker, data.event.key);\n case treeDataTypes.ArrowLeft:\n treeItemWalker.currentElement = data.target;\n return treeItemWalker.parentElement();\n case treeDataTypes.ArrowRight:\n treeItemWalker.currentElement = data.target;\n return treeItemWalker.firstChild();\n case treeDataTypes.End:\n treeItemWalker.currentElement = treeItemWalker.root;\n return lastChildRecursive(treeItemWalker);\n case treeDataTypes.Home:\n treeItemWalker.currentElement = treeItemWalker.root;\n return treeItemWalker.firstChild();\n case treeDataTypes.ArrowDown:\n treeItemWalker.currentElement = data.target;\n return treeItemWalker.nextElement();\n case treeDataTypes.ArrowUp:\n treeItemWalker.currentElement = data.target;\n return treeItemWalker.previousElement();\n }\n };\n function navigate(data: TreeNavigationData_unstable, walker: HTMLElementWalker) {\n const nextElement = getNextElement(data, walker);\n if (nextElement) {\n rove(nextElement);\n }\n }\n return { navigate, initialize } as const;\n}\n\nfunction lastChildRecursive(walker: HTMLElementWalker) {\n let lastElement: HTMLElement | null = null;\n let nextElement: HTMLElement | null = null;\n while ((nextElement = walker.lastChild())) {\n lastElement = nextElement;\n }\n return lastElement;\n}\n"],"names":["nextTypeAheadElement","treeDataTypes","treeItemFilter","useRovingTabIndex","useTreeNavigation","rove","initialize","getNextElement","data","treeItemWalker","type","Click","target","TypeAhead","currentElement","event","key","ArrowLeft","parentElement","ArrowRight","firstChild","End","root","lastChildRecursive","Home","ArrowDown","nextElement","ArrowUp","previousElement","navigate","walker","lastElement","lastChild"],"mappings":"AACA,SAASA,oBAAoB,QAAQ,mCAAmC;AACxE,SAASC,aAAa,QAAQ,qBAAqB;AACnD,SAASC,cAAc,QAAQ,6BAA6B;AAC5D,SAASC,iBAAiB,QAAQ,kCAAkC;AAGpE,OAAO,SAASC;IACd,MAAM,EAAEC,IAAI,EAAEC,UAAU,EAAE,GAAGH,kBAAkBD;IAE/C,MAAMK,iBAAiB,CAACC,MAAmCC;QACzD,OAAQD,KAAKE,IAAI;YACf,KAAKT,cAAcU,KAAK;gBACtB,OAAOH,KAAKI,MAAM;YACpB,KAAKX,cAAcY,SAAS;gBAC1BJ,eAAeK,cAAc,GAAGN,KAAKI,MAAM;gBAC3C,OAAOZ,qBAAqBS,gBAAgBD,KAAKO,KAAK,CAACC,GAAG;YAC5D,KAAKf,cAAcgB,SAAS;gBAC1BR,eAAeK,cAAc,GAAGN,KAAKI,MAAM;gBAC3C,OAAOH,eAAeS,aAAa;YACrC,KAAKjB,cAAckB,UAAU;gBAC3BV,eAAeK,cAAc,GAAGN,KAAKI,MAAM;gBAC3C,OAAOH,eAAeW,UAAU;YAClC,KAAKnB,cAAcoB,GAAG;gBACpBZ,eAAeK,cAAc,GAAGL,eAAea,IAAI;gBACnD,OAAOC,mBAAmBd;YAC5B,KAAKR,cAAcuB,IAAI;gBACrBf,eAAeK,cAAc,GAAGL,eAAea,IAAI;gBACnD,OAAOb,eAAeW,UAAU;YAClC,KAAKnB,cAAcwB,SAAS;gBAC1BhB,eAAeK,cAAc,GAAGN,KAAKI,MAAM;gBAC3C,OAAOH,eAAeiB,WAAW;YACnC,KAAKzB,cAAc0B,OAAO;gBACxBlB,eAAeK,cAAc,GAAGN,KAAKI,MAAM;gBAC3C,OAAOH,eAAemB,eAAe;QACzC;IACF;IACA,SAASC,SAASrB,IAAiC,EAAEsB,MAAyB;QAC5E,MAAMJ,cAAcnB,eAAeC,MAAMsB;QACzC,IAAIJ,aAAa;YACfrB,KAAKqB;QACP;IACF;IACA,OAAO;QAAEG;QAAUvB;IAAW;AAChC;AAEA,SAASiB,mBAAmBO,MAAyB;IACnD,IAAIC,cAAkC;IACtC,IAAIL,cAAkC;IACtC,MAAQA,cAAcI,OAAOE,SAAS,GAAK;QACzCD,cAAcL;IAChB;IACA,OAAOK;AACT"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["useFlatTreeNavigation.js"],"sourcesContent":["import { useFluent_unstable } from '@fluentui/react-shared-contexts';\nimport { useEventCallback } from '@fluentui/react-utilities';\nimport { nextTypeAheadElement } from '../../utils/nextTypeAheadElement';\nimport { treeDataTypes } from '../../utils/tokens';\nimport { treeItemFilter } from '../../utils/treeItemFilter';\nimport { useRovingTabIndex } from '../../hooks/useRovingTabIndexes';\nimport { dataTreeItemValueAttrName } from '../../utils/getTreeItemValueFromElement';\nexport function useFlatTreeNavigation() {\n const { targetDocument } = useFluent_unstable();\n const { rove, initialize } = useRovingTabIndex(treeItemFilter);\n function getNextElement(data, walker) {\n if (!targetDocument) {\n return null;\n }\n switch(data.type){\n case treeDataTypes.Click:\n return data.target;\n case treeDataTypes.TypeAhead:\n walker.currentElement = data.target;\n return nextTypeAheadElement(walker, data.event.key);\n case treeDataTypes.ArrowLeft:\n {\n const nextElement = parentElement(data.parentValue, walker);\n if (!nextElement && process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.warn(`@fluentui/react-tree [useFlatTreeNavigation]:\n\\'ArrowLeft\\' navigation was not possible.\nNo parent element found for the current element:`, data.target);\n }\n return nextElement;\n }\n case treeDataTypes.ArrowRight:\n {\n walker.currentElement = data.target;\n const nextElement = firstChild(data.target, walker);\n if (!nextElement && process.env.NODE_ENV !== 'production') {\n const ariaLevel = Number(data.target.getAttribute('aria-level'));\n // eslint-disable-next-line no-console\n console.warn(`@fluentui/react-tree [useFlatTreeNavigation]:\n\\'ArrowRight\\' navigation was not possible.\nNo element with \"aria-posinset=1\" and \"aria-level=${ariaLevel + 1}\"\nwas found after the current element!`, data.target);\n }\n return nextElement;\n }\n case treeDataTypes.End:\n walker.currentElement = walker.root;\n return walker.lastChild();\n case treeDataTypes.Home:\n walker.currentElement = walker.root;\n return walker.firstChild();\n case treeDataTypes.ArrowDown:\n walker.currentElement = data.target;\n return walker.nextElement();\n case treeDataTypes.ArrowUp:\n walker.currentElement = data.target;\n return walker.previousElement();\n }\n }\n const navigate = useEventCallback((data, walker)=>{\n const nextElement = getNextElement(data, walker);\n if (nextElement) {\n rove(nextElement);\n }\n });\n return {\n navigate,\n initialize\n };\n}\nfunction firstChild(target, treeWalker) {\n const nextElement = treeWalker.nextElement();\n if (!nextElement) {\n return null;\n }\n const nextElementAriaPosInSet = nextElement.getAttribute('aria-posinset');\n const nextElementAriaLevel = nextElement.getAttribute('aria-level');\n const targetAriaLevel = target.getAttribute('aria-level');\n if (nextElementAriaPosInSet === '1' && Number(nextElementAriaLevel) === Number(targetAriaLevel) + 1) {\n return nextElement;\n }\n return null;\n}\nfunction parentElement(parentValue, treeWalker) {\n if (parentValue === undefined) {\n return null;\n }\n return treeWalker.root.querySelector(`[${dataTreeItemValueAttrName}=\"${parentValue}\"]`);\n}\n"],"names":["useFlatTreeNavigation","targetDocument","useFluent_unstable","rove","initialize","useRovingTabIndex","treeItemFilter","getNextElement","data","walker","type","treeDataTypes","Click","target","TypeAhead","currentElement","nextTypeAheadElement","event","key","ArrowLeft","nextElement","parentElement","parentValue","process","env","NODE_ENV","console","warn","ArrowRight","firstChild","ariaLevel","Number","getAttribute","End","root","lastChild","Home","ArrowDown","ArrowUp","previousElement","navigate","useEventCallback","treeWalker","nextElementAriaPosInSet","nextElementAriaLevel","targetAriaLevel","undefined","querySelector","dataTreeItemValueAttrName"],"mappings":"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"}
@@ -1,62 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "useTreeNavigation", {
6
- enumerable: true,
7
- get: function() {
8
- return useTreeNavigation;
9
- }
10
- });
11
- const _nextTypeAheadElement = require("../../utils/nextTypeAheadElement");
12
- const _tokens = require("../../utils/tokens");
13
- const _treeItemFilter = require("../../utils/treeItemFilter");
14
- const _useRovingTabIndexes = require("../../hooks/useRovingTabIndexes");
15
- function useTreeNavigation() {
16
- const { rove, initialize } = (0, _useRovingTabIndexes.useRovingTabIndex)(_treeItemFilter.treeItemFilter);
17
- const getNextElement = (data, treeItemWalker)=>{
18
- switch(data.type){
19
- case _tokens.treeDataTypes.Click:
20
- return data.target;
21
- case _tokens.treeDataTypes.TypeAhead:
22
- treeItemWalker.currentElement = data.target;
23
- return (0, _nextTypeAheadElement.nextTypeAheadElement)(treeItemWalker, data.event.key);
24
- case _tokens.treeDataTypes.ArrowLeft:
25
- treeItemWalker.currentElement = data.target;
26
- return treeItemWalker.parentElement();
27
- case _tokens.treeDataTypes.ArrowRight:
28
- treeItemWalker.currentElement = data.target;
29
- return treeItemWalker.firstChild();
30
- case _tokens.treeDataTypes.End:
31
- treeItemWalker.currentElement = treeItemWalker.root;
32
- return lastChildRecursive(treeItemWalker);
33
- case _tokens.treeDataTypes.Home:
34
- treeItemWalker.currentElement = treeItemWalker.root;
35
- return treeItemWalker.firstChild();
36
- case _tokens.treeDataTypes.ArrowDown:
37
- treeItemWalker.currentElement = data.target;
38
- return treeItemWalker.nextElement();
39
- case _tokens.treeDataTypes.ArrowUp:
40
- treeItemWalker.currentElement = data.target;
41
- return treeItemWalker.previousElement();
42
- }
43
- };
44
- function navigate(data, walker) {
45
- const nextElement = getNextElement(data, walker);
46
- if (nextElement) {
47
- rove(nextElement);
48
- }
49
- }
50
- return {
51
- navigate,
52
- initialize
53
- };
54
- }
55
- function lastChildRecursive(walker) {
56
- let lastElement = null;
57
- let nextElement = null;
58
- while(nextElement = walker.lastChild()){
59
- lastElement = nextElement;
60
- }
61
- return lastElement;
62
- }
@@ -1 +0,0 @@
1
- {"version":3,"sources":["useTreeNavigation.js"],"sourcesContent":["import { nextTypeAheadElement } from '../../utils/nextTypeAheadElement';\nimport { treeDataTypes } from '../../utils/tokens';\nimport { treeItemFilter } from '../../utils/treeItemFilter';\nimport { useRovingTabIndex } from '../../hooks/useRovingTabIndexes';\nexport function useTreeNavigation() {\n const { rove, initialize } = useRovingTabIndex(treeItemFilter);\n const getNextElement = (data, treeItemWalker)=>{\n switch(data.type){\n case treeDataTypes.Click:\n return data.target;\n case treeDataTypes.TypeAhead:\n treeItemWalker.currentElement = data.target;\n return nextTypeAheadElement(treeItemWalker, data.event.key);\n case treeDataTypes.ArrowLeft:\n treeItemWalker.currentElement = data.target;\n return treeItemWalker.parentElement();\n case treeDataTypes.ArrowRight:\n treeItemWalker.currentElement = data.target;\n return treeItemWalker.firstChild();\n case treeDataTypes.End:\n treeItemWalker.currentElement = treeItemWalker.root;\n return lastChildRecursive(treeItemWalker);\n case treeDataTypes.Home:\n treeItemWalker.currentElement = treeItemWalker.root;\n return treeItemWalker.firstChild();\n case treeDataTypes.ArrowDown:\n treeItemWalker.currentElement = data.target;\n return treeItemWalker.nextElement();\n case treeDataTypes.ArrowUp:\n treeItemWalker.currentElement = data.target;\n return treeItemWalker.previousElement();\n }\n };\n function navigate(data, walker) {\n const nextElement = getNextElement(data, walker);\n if (nextElement) {\n rove(nextElement);\n }\n }\n return {\n navigate,\n initialize\n };\n}\nfunction lastChildRecursive(walker) {\n let lastElement = null;\n let nextElement = null;\n while(nextElement = walker.lastChild()){\n lastElement = nextElement;\n }\n return lastElement;\n}\n"],"names":["useTreeNavigation","rove","initialize","useRovingTabIndex","treeItemFilter","getNextElement","data","treeItemWalker","type","treeDataTypes","Click","target","TypeAhead","currentElement","nextTypeAheadElement","event","key","ArrowLeft","parentElement","ArrowRight","firstChild","End","root","lastChildRecursive","Home","ArrowDown","nextElement","ArrowUp","previousElement","navigate","walker","lastElement","lastChild"],"mappings":";;;;+BAIgBA;;;eAAAA;;;sCAJqB;wBACP;gCACC;qCACG;AAC3B,SAASA;IACZ,MAAM,EAAEC,IAAI,EAAEC,UAAU,EAAE,GAAGC,IAAAA,sCAAiB,EAACC,8BAAc;IAC7D,MAAMC,iBAAiB,CAACC,MAAMC;QAC1B,OAAOD,KAAKE,IAAI;YACZ,KAAKC,qBAAa,CAACC,KAAK;gBACpB,OAAOJ,KAAKK,MAAM;YACtB,KAAKF,qBAAa,CAACG,SAAS;gBACxBL,eAAeM,cAAc,GAAGP,KAAKK,MAAM;gBAC3C,OAAOG,IAAAA,0CAAoB,EAACP,gBAAgBD,KAAKS,KAAK,CAACC,GAAG;YAC9D,KAAKP,qBAAa,CAACQ,SAAS;gBACxBV,eAAeM,cAAc,GAAGP,KAAKK,MAAM;gBAC3C,OAAOJ,eAAeW,aAAa;YACvC,KAAKT,qBAAa,CAACU,UAAU;gBACzBZ,eAAeM,cAAc,GAAGP,KAAKK,MAAM;gBAC3C,OAAOJ,eAAea,UAAU;YACpC,KAAKX,qBAAa,CAACY,GAAG;gBAClBd,eAAeM,cAAc,GAAGN,eAAee,IAAI;gBACnD,OAAOC,mBAAmBhB;YAC9B,KAAKE,qBAAa,CAACe,IAAI;gBACnBjB,eAAeM,cAAc,GAAGN,eAAee,IAAI;gBACnD,OAAOf,eAAea,UAAU;YACpC,KAAKX,qBAAa,CAACgB,SAAS;gBACxBlB,eAAeM,cAAc,GAAGP,KAAKK,MAAM;gBAC3C,OAAOJ,eAAemB,WAAW;YACrC,KAAKjB,qBAAa,CAACkB,OAAO;gBACtBpB,eAAeM,cAAc,GAAGP,KAAKK,MAAM;gBAC3C,OAAOJ,eAAeqB,eAAe;QAC7C;IACJ;IACA,SAASC,SAASvB,IAAI,EAAEwB,MAAM;QAC1B,MAAMJ,cAAcrB,eAAeC,MAAMwB;QACzC,IAAIJ,aAAa;YACbzB,KAAKyB;QACT;IACJ;IACA,OAAO;QACHG;QACA3B;IACJ;AACJ;AACA,SAASqB,mBAAmBO,MAAM;IAC9B,IAAIC,cAAc;IAClB,IAAIL,cAAc;IAClB,MAAMA,cAAcI,OAAOE,SAAS,GAAG;QACnCD,cAAcL;IAClB;IACA,OAAOK;AACX"}