@fluentui/react-tree 9.4.12 → 9.4.14

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 (41) hide show
  1. package/CHANGELOG.md +30 -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 +7 -7
  36. package/lib/components/FlatTree/useFlatTreeNavigation.js.map +0 -1
  37. package/lib/components/Tree/useTreeNavigation.js +0 -52
  38. package/lib/components/Tree/useTreeNavigation.js.map +0 -1
  39. package/lib-commonjs/components/FlatTree/useFlatTreeNavigation.js.map +0 -1
  40. package/lib-commonjs/components/Tree/useTreeNavigation.js +0 -62
  41. package/lib-commonjs/components/Tree/useTreeNavigation.js.map +0 -1
@@ -8,29 +8,38 @@ Object.defineProperty(exports, "useFlatTreeNavigation", {
8
8
  return useFlatTreeNavigation;
9
9
  }
10
10
  });
11
- const _reactsharedcontexts = require("@fluentui/react-shared-contexts");
11
+ const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
12
12
  const _reactutilities = require("@fluentui/react-utilities");
13
- const _nextTypeAheadElement = require("../../utils/nextTypeAheadElement");
14
- const _tokens = require("../../utils/tokens");
15
- const _treeItemFilter = require("../../utils/treeItemFilter");
16
- const _useRovingTabIndexes = require("../../hooks/useRovingTabIndexes");
17
- const _getTreeItemValueFromElement = require("../../utils/getTreeItemValueFromElement");
13
+ const _nextTypeAheadElement = require("../utils/nextTypeAheadElement");
14
+ const _tokens = require("../utils/tokens");
15
+ const _useRovingTabIndexes = require("./useRovingTabIndexes");
16
+ const _getTreeItemValueFromElement = require("../utils/getTreeItemValueFromElement");
17
+ const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
18
+ const _useHTMLElementWalkerRef = require("./useHTMLElementWalkerRef");
18
19
  function useFlatTreeNavigation() {
19
- const { targetDocument } = (0, _reactsharedcontexts.useFluent_unstable)();
20
- const { rove, initialize } = (0, _useRovingTabIndexes.useRovingTabIndex)(_treeItemFilter.treeItemFilter);
21
- function getNextElement(data, walker) {
22
- if (!targetDocument) {
20
+ const { walkerRef, rootRef: walkerRootRef } = (0, _useHTMLElementWalkerRef.useHTMLElementWalkerRef)();
21
+ const { rove, initialize: initializeRovingTabIndex } = (0, _useRovingTabIndexes.useRovingTabIndex)();
22
+ const rootRefCallback = _react.useCallback((root)=>{
23
+ if (walkerRef.current && root) {
24
+ initializeRovingTabIndex(walkerRef.current);
25
+ }
26
+ }, [
27
+ initializeRovingTabIndex,
28
+ walkerRef
29
+ ]);
30
+ function getNextElement(data) {
31
+ if (!walkerRef.current) {
23
32
  return null;
24
33
  }
25
34
  switch(data.type){
26
35
  case _tokens.treeDataTypes.Click:
27
36
  return data.target;
28
37
  case _tokens.treeDataTypes.TypeAhead:
29
- walker.currentElement = data.target;
30
- return (0, _nextTypeAheadElement.nextTypeAheadElement)(walker, data.event.key);
38
+ walkerRef.current.currentElement = data.target;
39
+ return (0, _nextTypeAheadElement.nextTypeAheadElement)(walkerRef.current, data.event.key);
31
40
  case _tokens.treeDataTypes.ArrowLeft:
32
41
  {
33
- const nextElement = parentElement(data.parentValue, walker);
42
+ const nextElement = parentElement(data.parentValue, walkerRef.current);
34
43
  if (!nextElement && process.env.NODE_ENV !== 'production') {
35
44
  // eslint-disable-next-line no-console
36
45
  console.warn(`@fluentui/react-tree [useFlatTreeNavigation]:
@@ -41,8 +50,8 @@ No parent element found for the current element:`, data.target);
41
50
  }
42
51
  case _tokens.treeDataTypes.ArrowRight:
43
52
  {
44
- walker.currentElement = data.target;
45
- const nextElement = firstChild(data.target, walker);
53
+ walkerRef.current.currentElement = data.target;
54
+ const nextElement = firstChild(data.target, walkerRef.current);
46
55
  if (!nextElement && process.env.NODE_ENV !== 'production') {
47
56
  const ariaLevel = Number(data.target.getAttribute('aria-level'));
48
57
  // eslint-disable-next-line no-console
@@ -54,28 +63,28 @@ was found after the current element!`, data.target);
54
63
  return nextElement;
55
64
  }
56
65
  case _tokens.treeDataTypes.End:
57
- walker.currentElement = walker.root;
58
- return walker.lastChild();
66
+ walkerRef.current.currentElement = walkerRef.current.root;
67
+ return walkerRef.current.lastChild();
59
68
  case _tokens.treeDataTypes.Home:
60
- walker.currentElement = walker.root;
61
- return walker.firstChild();
69
+ walkerRef.current.currentElement = walkerRef.current.root;
70
+ return walkerRef.current.firstChild();
62
71
  case _tokens.treeDataTypes.ArrowDown:
63
- walker.currentElement = data.target;
64
- return walker.nextElement();
72
+ walkerRef.current.currentElement = data.target;
73
+ return walkerRef.current.nextElement();
65
74
  case _tokens.treeDataTypes.ArrowUp:
66
- walker.currentElement = data.target;
67
- return walker.previousElement();
75
+ walkerRef.current.currentElement = data.target;
76
+ return walkerRef.current.previousElement();
68
77
  }
69
78
  }
70
- const navigate = (0, _reactutilities.useEventCallback)((data, walker)=>{
71
- const nextElement = getNextElement(data, walker);
79
+ const navigate = (0, _reactutilities.useEventCallback)((data)=>{
80
+ const nextElement = getNextElement(data);
72
81
  if (nextElement) {
73
82
  rove(nextElement);
74
83
  }
75
84
  });
76
85
  return {
77
86
  navigate,
78
- initialize
87
+ rootRef: (0, _reactutilities.useMergedRefs)(walkerRootRef, rootRefCallback)
79
88
  };
80
89
  }
81
90
  function firstChild(target, treeWalker) {
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["useFlatTreeNavigation.js"],"sourcesContent":["import { useEventCallback, useMergedRefs } from '@fluentui/react-utilities';\nimport { nextTypeAheadElement } from '../utils/nextTypeAheadElement';\nimport { treeDataTypes } from '../utils/tokens';\nimport { useRovingTabIndex } from './useRovingTabIndexes';\nimport { dataTreeItemValueAttrName } from '../utils/getTreeItemValueFromElement';\nimport * as React from 'react';\nimport { useHTMLElementWalkerRef } from './useHTMLElementWalkerRef';\nexport function useFlatTreeNavigation() {\n const { walkerRef, rootRef: walkerRootRef } = useHTMLElementWalkerRef();\n const { rove, initialize: initializeRovingTabIndex } = useRovingTabIndex();\n const rootRefCallback = React.useCallback((root)=>{\n if (walkerRef.current && root) {\n initializeRovingTabIndex(walkerRef.current);\n }\n }, [\n initializeRovingTabIndex,\n walkerRef\n ]);\n function getNextElement(data) {\n if (!walkerRef.current) {\n return null;\n }\n switch(data.type){\n case treeDataTypes.Click:\n return data.target;\n case treeDataTypes.TypeAhead:\n walkerRef.current.currentElement = data.target;\n return nextTypeAheadElement(walkerRef.current, data.event.key);\n case treeDataTypes.ArrowLeft:\n {\n const nextElement = parentElement(data.parentValue, walkerRef.current);\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 walkerRef.current.currentElement = data.target;\n const nextElement = firstChild(data.target, walkerRef.current);\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 walkerRef.current.currentElement = walkerRef.current.root;\n return walkerRef.current.lastChild();\n case treeDataTypes.Home:\n walkerRef.current.currentElement = walkerRef.current.root;\n return walkerRef.current.firstChild();\n case treeDataTypes.ArrowDown:\n walkerRef.current.currentElement = data.target;\n return walkerRef.current.nextElement();\n case treeDataTypes.ArrowUp:\n walkerRef.current.currentElement = data.target;\n return walkerRef.current.previousElement();\n }\n }\n const navigate = useEventCallback((data)=>{\n const nextElement = getNextElement(data);\n if (nextElement) {\n rove(nextElement);\n }\n });\n return {\n navigate,\n rootRef: useMergedRefs(walkerRootRef, rootRefCallback)\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","walkerRef","rootRef","walkerRootRef","useHTMLElementWalkerRef","rove","initialize","initializeRovingTabIndex","useRovingTabIndex","rootRefCallback","React","useCallback","root","current","getNextElement","data","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","lastChild","Home","ArrowDown","ArrowUp","previousElement","navigate","useEventCallback","useMergedRefs","treeWalker","nextElementAriaPosInSet","nextElementAriaLevel","targetAriaLevel","undefined","querySelector","dataTreeItemValueAttrName"],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "useHTMLElementWalkerRef", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return useHTMLElementWalkerRef;
9
+ }
10
+ });
11
+ const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
12
+ const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
13
+ const _reactsharedcontexts = require("@fluentui/react-shared-contexts");
14
+ const _createHTMLElementWalker = require("../utils/createHTMLElementWalker");
15
+ const _treeItemFilter = require("../utils/treeItemFilter");
16
+ function useHTMLElementWalkerRef() {
17
+ const { targetDocument } = (0, _reactsharedcontexts.useFluent_unstable)();
18
+ const walkerRef = _react.useRef();
19
+ const rootRef = _react.useCallback((root)=>{
20
+ walkerRef.current = targetDocument && root ? (0, _createHTMLElementWalker.createHTMLElementWalker)(root, targetDocument, _treeItemFilter.treeItemFilter) : undefined;
21
+ }, [
22
+ targetDocument
23
+ ]);
24
+ return {
25
+ walkerRef,
26
+ rootRef
27
+ };
28
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["useHTMLElementWalkerRef.js"],"sourcesContent":["import * as React from 'react';\nimport { useFluent_unstable } from '@fluentui/react-shared-contexts';\nimport { createHTMLElementWalker } from '../utils/createHTMLElementWalker';\nimport { treeItemFilter } from '../utils/treeItemFilter';\nexport function useHTMLElementWalkerRef() {\n const { targetDocument } = useFluent_unstable();\n const walkerRef = React.useRef();\n const rootRef = React.useCallback((root)=>{\n walkerRef.current = targetDocument && root ? createHTMLElementWalker(root, targetDocument, treeItemFilter) : undefined;\n }, [\n targetDocument\n ]);\n return {\n walkerRef,\n rootRef\n };\n}\n"],"names":["useHTMLElementWalkerRef","targetDocument","useFluent_unstable","walkerRef","React","useRef","rootRef","useCallback","root","current","createHTMLElementWalker","treeItemFilter","undefined"],"mappings":";;;;+BAIgBA;;;eAAAA;;;;iEAJO;qCACY;yCACK;gCACT;AACxB,SAASA;IACZ,MAAM,EAAEC,cAAc,EAAE,GAAGC,IAAAA,uCAAkB;IAC7C,MAAMC,YAAYC,OAAMC,MAAM;IAC9B,MAAMC,UAAUF,OAAMG,WAAW,CAAC,CAACC;QAC/BL,UAAUM,OAAO,GAAGR,kBAAkBO,OAAOE,IAAAA,gDAAuB,EAACF,MAAMP,gBAAgBU,8BAAc,IAAIC;IACjH,GAAG;QACCX;KACH;IACD,OAAO;QACHE;QACAG;IACJ;AACJ"}
@@ -24,29 +24,41 @@ function useRootTree(props, ref) {
24
24
  const checkedItems = _react.useMemo(()=>(0, _createCheckedItems.createCheckedItems)(props.checkedItems), [
25
25
  props.checkedItems
26
26
  ]);
27
- const requestOpenChange = (data)=>{
27
+ const requestOpenChange = (request)=>{
28
28
  var _props_onOpenChange;
29
- const nextOpenItems = (0, _useControllableOpenItems.createNextOpenItems)(data, openItems);
30
- (_props_onOpenChange = props.onOpenChange) === null || _props_onOpenChange === void 0 ? void 0 : _props_onOpenChange.call(props, data.event, {
31
- ...data,
29
+ const open = request.itemType === 'branch' && !openItems.has(request.value);
30
+ const nextOpenItems = (0, _useControllableOpenItems.createNextOpenItems)({
31
+ value: request.value,
32
+ open
33
+ }, openItems);
34
+ (_props_onOpenChange = props.onOpenChange) === null || _props_onOpenChange === void 0 ? void 0 : _props_onOpenChange.call(props, request.event, {
35
+ ...request,
36
+ open,
32
37
  openItems: nextOpenItems.dangerouslyGetInternalSet_unstable()
33
38
  });
34
39
  };
35
- const requestCheckedChange = (data)=>{
40
+ const requestCheckedChange = (request)=>{
36
41
  var _props_onCheckedChange;
37
- return (_props_onCheckedChange = props.onCheckedChange) === null || _props_onCheckedChange === void 0 ? void 0 : _props_onCheckedChange.call(props, data.event, data);
42
+ if (selectionMode === 'none') {
43
+ return;
44
+ }
45
+ (_props_onCheckedChange = props.onCheckedChange) === null || _props_onCheckedChange === void 0 ? void 0 : _props_onCheckedChange.call(props, request.event, {
46
+ ...request,
47
+ selectionMode,
48
+ checkedItems: checkedItems.dangerouslyGetInternalMap_unstable()
49
+ });
38
50
  };
39
- const requestNavigation = (data)=>{
51
+ const requestNavigation = (request)=>{
40
52
  var _props_onNavigation;
41
- (_props_onNavigation = props.onNavigation) === null || _props_onNavigation === void 0 ? void 0 : _props_onNavigation.call(props, data.event, data);
42
- switch(data.type){
53
+ (_props_onNavigation = props.onNavigation) === null || _props_onNavigation === void 0 ? void 0 : _props_onNavigation.call(props, request.event, request);
54
+ switch(request.type){
43
55
  case _tokens.treeDataTypes.ArrowDown:
44
56
  case _tokens.treeDataTypes.ArrowUp:
45
57
  case _tokens.treeDataTypes.Home:
46
58
  case _tokens.treeDataTypes.End:
47
59
  // stop the default behavior of the event
48
60
  // which is to scroll the page
49
- data.event.preventDefault();
61
+ request.event.preventDefault();
50
62
  }
51
63
  };
52
64
  const requestTreeResponse = (0, _reactutilities.useEventCallback)((request)=>{
@@ -54,17 +66,9 @@ function useRootTree(props, ref) {
54
66
  case 'navigate':
55
67
  return requestNavigation(request);
56
68
  case 'open':
57
- return requestOpenChange({
58
- ...request,
59
- open: request.itemType === 'branch' && !openItems.has(request.value),
60
- openItems: openItems.dangerouslyGetInternalSet_unstable()
61
- });
69
+ return requestOpenChange(request);
62
70
  case 'selection':
63
- return requestCheckedChange({
64
- ...request,
65
- selectionMode: selectionMode,
66
- checkedItems: checkedItems.dangerouslyGetInternalMap_unstable()
67
- });
71
+ return requestCheckedChange(request);
68
72
  }
69
73
  });
70
74
  return {
@@ -1 +1 @@
1
- {"version":3,"sources":["useRootTree.js"],"sourcesContent":["import { getIntrinsicElementProps, useEventCallback, slot } from '@fluentui/react-utilities';\nimport * as React from 'react';\nimport { createOpenItems } from '../utils/createOpenItems';\nimport { createCheckedItems } from '../utils/createCheckedItems';\nimport { treeDataTypes } from '../utils/tokens';\nimport { createNextOpenItems } from './useControllableOpenItems';\n/**\n * Create the state required to render the root level tree.\n *\n * @param props - props from this instance of tree\n * @param ref - reference to root HTMLElement of tree\n */ export function useRootTree(props, ref) {\n warnIfNoProperPropsRootTree(props);\n const { appearance = 'subtle', size = 'medium', selectionMode = 'none' } = props;\n const openItems = React.useMemo(()=>createOpenItems(props.openItems), [\n props.openItems\n ]);\n const checkedItems = React.useMemo(()=>createCheckedItems(props.checkedItems), [\n props.checkedItems\n ]);\n const requestOpenChange = (data)=>{\n var _props_onOpenChange;\n const nextOpenItems = createNextOpenItems(data, openItems);\n (_props_onOpenChange = props.onOpenChange) === null || _props_onOpenChange === void 0 ? void 0 : _props_onOpenChange.call(props, data.event, {\n ...data,\n openItems: nextOpenItems.dangerouslyGetInternalSet_unstable()\n });\n };\n const requestCheckedChange = (data)=>{\n var _props_onCheckedChange;\n return (_props_onCheckedChange = props.onCheckedChange) === null || _props_onCheckedChange === void 0 ? void 0 : _props_onCheckedChange.call(props, data.event, data);\n };\n const requestNavigation = (data)=>{\n var _props_onNavigation;\n (_props_onNavigation = props.onNavigation) === null || _props_onNavigation === void 0 ? void 0 : _props_onNavigation.call(props, data.event, data);\n switch(data.type){\n case treeDataTypes.ArrowDown:\n case treeDataTypes.ArrowUp:\n case treeDataTypes.Home:\n case treeDataTypes.End:\n // stop the default behavior of the event\n // which is to scroll the page\n data.event.preventDefault();\n }\n };\n const requestTreeResponse = useEventCallback((request)=>{\n switch(request.requestType){\n case 'navigate':\n return requestNavigation(request);\n case 'open':\n return requestOpenChange({\n ...request,\n open: request.itemType === 'branch' && !openItems.has(request.value),\n openItems: openItems.dangerouslyGetInternalSet_unstable()\n });\n case 'selection':\n return requestCheckedChange({\n ...request,\n selectionMode: selectionMode,\n checkedItems: checkedItems.dangerouslyGetInternalMap_unstable()\n });\n }\n });\n return {\n components: {\n root: 'div'\n },\n contextType: 'root',\n selectionMode,\n open: true,\n appearance,\n size,\n level: 1,\n openItems,\n checkedItems,\n requestTreeResponse,\n root: slot.always(getIntrinsicElementProps('div', {\n // FIXME:\n // `ref` is wrongly assigned to be `HTMLElement` instead of `HTMLDivElement`\n // but since it would be a breaking change to fix it, we are casting ref to it's proper type\n ref: ref,\n role: 'tree',\n 'aria-multiselectable': selectionMode === 'multiselect' ? true : undefined,\n ...props\n }), {\n elementType: 'div'\n })\n };\n}\nfunction warnIfNoProperPropsRootTree(props) {\n if (process.env.NODE_ENV === 'development') {\n if (!props['aria-label'] && !props['aria-labelledby']) {\n // eslint-disable-next-line no-console\n console.warn(`@fluentui/react-tree [useRootTree]:\nTree must have either a \\`aria-label\\` or \\`aria-labelledby\\` property defined`);\n }\n }\n}\n"],"names":["useRootTree","props","ref","warnIfNoProperPropsRootTree","appearance","size","selectionMode","openItems","React","useMemo","createOpenItems","checkedItems","createCheckedItems","requestOpenChange","data","_props_onOpenChange","nextOpenItems","createNextOpenItems","onOpenChange","call","event","dangerouslyGetInternalSet_unstable","requestCheckedChange","_props_onCheckedChange","onCheckedChange","requestNavigation","_props_onNavigation","onNavigation","type","treeDataTypes","ArrowDown","ArrowUp","Home","End","preventDefault","requestTreeResponse","useEventCallback","request","requestType","open","itemType","has","value","dangerouslyGetInternalMap_unstable","components","root","contextType","level","slot","always","getIntrinsicElementProps","role","undefined","elementType","process","env","NODE_ENV","console","warn"],"mappings":"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"}
1
+ {"version":3,"sources":["useRootTree.js"],"sourcesContent":["import { getIntrinsicElementProps, useEventCallback, slot } from '@fluentui/react-utilities';\nimport * as React from 'react';\nimport { createOpenItems } from '../utils/createOpenItems';\nimport { createCheckedItems } from '../utils/createCheckedItems';\nimport { treeDataTypes } from '../utils/tokens';\nimport { createNextOpenItems } from './useControllableOpenItems';\n/**\n * Create the state required to render the root level tree.\n *\n * @param props - props from this instance of tree\n * @param ref - reference to root HTMLElement of tree\n */ export function useRootTree(props, ref) {\n warnIfNoProperPropsRootTree(props);\n const { appearance = 'subtle', size = 'medium', selectionMode = 'none' } = props;\n const openItems = React.useMemo(()=>createOpenItems(props.openItems), [\n props.openItems\n ]);\n const checkedItems = React.useMemo(()=>createCheckedItems(props.checkedItems), [\n props.checkedItems\n ]);\n const requestOpenChange = (request)=>{\n var _props_onOpenChange;\n const open = request.itemType === 'branch' && !openItems.has(request.value);\n const nextOpenItems = createNextOpenItems({\n value: request.value,\n open\n }, openItems);\n (_props_onOpenChange = props.onOpenChange) === null || _props_onOpenChange === void 0 ? void 0 : _props_onOpenChange.call(props, request.event, {\n ...request,\n open,\n openItems: nextOpenItems.dangerouslyGetInternalSet_unstable()\n });\n };\n const requestCheckedChange = (request)=>{\n var _props_onCheckedChange;\n if (selectionMode === 'none') {\n return;\n }\n (_props_onCheckedChange = props.onCheckedChange) === null || _props_onCheckedChange === void 0 ? void 0 : _props_onCheckedChange.call(props, request.event, {\n ...request,\n selectionMode,\n checkedItems: checkedItems.dangerouslyGetInternalMap_unstable()\n });\n };\n const requestNavigation = (request)=>{\n var _props_onNavigation;\n (_props_onNavigation = props.onNavigation) === null || _props_onNavigation === void 0 ? void 0 : _props_onNavigation.call(props, request.event, request);\n switch(request.type){\n case treeDataTypes.ArrowDown:\n case treeDataTypes.ArrowUp:\n case treeDataTypes.Home:\n case treeDataTypes.End:\n // stop the default behavior of the event\n // which is to scroll the page\n request.event.preventDefault();\n }\n };\n const requestTreeResponse = useEventCallback((request)=>{\n switch(request.requestType){\n case 'navigate':\n return requestNavigation(request);\n case 'open':\n return requestOpenChange(request);\n case 'selection':\n return requestCheckedChange(request);\n }\n });\n return {\n components: {\n root: 'div'\n },\n contextType: 'root',\n selectionMode,\n open: true,\n appearance,\n size,\n level: 1,\n openItems,\n checkedItems,\n requestTreeResponse,\n root: slot.always(getIntrinsicElementProps('div', {\n // FIXME:\n // `ref` is wrongly assigned to be `HTMLElement` instead of `HTMLDivElement`\n // but since it would be a breaking change to fix it, we are casting ref to it's proper type\n ref: ref,\n role: 'tree',\n 'aria-multiselectable': selectionMode === 'multiselect' ? true : undefined,\n ...props\n }), {\n elementType: 'div'\n })\n };\n}\nfunction warnIfNoProperPropsRootTree(props) {\n if (process.env.NODE_ENV === 'development') {\n if (!props['aria-label'] && !props['aria-labelledby']) {\n // eslint-disable-next-line no-console\n console.warn(`@fluentui/react-tree [useRootTree]:\nTree must have either a \\`aria-label\\` or \\`aria-labelledby\\` property defined`);\n }\n }\n}\n"],"names":["useRootTree","props","ref","warnIfNoProperPropsRootTree","appearance","size","selectionMode","openItems","React","useMemo","createOpenItems","checkedItems","createCheckedItems","requestOpenChange","request","_props_onOpenChange","open","itemType","has","value","nextOpenItems","createNextOpenItems","onOpenChange","call","event","dangerouslyGetInternalSet_unstable","requestCheckedChange","_props_onCheckedChange","onCheckedChange","dangerouslyGetInternalMap_unstable","requestNavigation","_props_onNavigation","onNavigation","type","treeDataTypes","ArrowDown","ArrowUp","Home","End","preventDefault","requestTreeResponse","useEventCallback","requestType","components","root","contextType","level","slot","always","getIntrinsicElementProps","role","undefined","elementType","process","env","NODE_ENV","console","warn"],"mappings":"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"}
@@ -10,7 +10,7 @@ Object.defineProperty(exports, "useRovingTabIndex", {
10
10
  });
11
11
  const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
12
12
  const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
13
- function useRovingTabIndex(filter) {
13
+ function useRovingTabIndex() {
14
14
  const currentElementRef = _react.useRef();
15
15
  const initialize = _react.useCallback((walker)=>{
16
16
  walker.currentElement = walker.root;
@@ -1 +1 @@
1
- {"version":3,"sources":["useRovingTabIndexes.js"],"sourcesContent":["import * as React from 'react';\n/**\n * https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface/#kbd_roving_tabindex\n */ export function useRovingTabIndex(filter) {\n const currentElementRef = React.useRef();\n const initialize = React.useCallback((walker)=>{\n walker.currentElement = walker.root;\n let tabbableChild = walker.firstChild((element)=>element.tabIndex === 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP);\n walker.currentElement = walker.root;\n tabbableChild !== null && tabbableChild !== void 0 ? tabbableChild : tabbableChild = walker.firstChild();\n if (!tabbableChild) {\n return;\n }\n tabbableChild.tabIndex = 0;\n currentElementRef.current = tabbableChild;\n let nextElement = null;\n while((nextElement = walker.nextElement()) && nextElement !== tabbableChild){\n nextElement.tabIndex = -1;\n }\n }, []);\n const rove = React.useCallback((nextElement)=>{\n if (!currentElementRef.current) {\n return;\n }\n currentElementRef.current.tabIndex = -1;\n nextElement.tabIndex = 0;\n nextElement.focus();\n currentElementRef.current = nextElement;\n }, []);\n return {\n rove,\n initialize\n };\n}\n"],"names":["useRovingTabIndex","filter","currentElementRef","React","useRef","initialize","useCallback","walker","currentElement","root","tabbableChild","firstChild","element","tabIndex","NodeFilter","FILTER_ACCEPT","FILTER_SKIP","current","nextElement","rove","focus"],"mappings":";;;;+BAGoBA;;;eAAAA;;;;iEAHG;AAGZ,SAASA,kBAAkBC,MAAM;IACxC,MAAMC,oBAAoBC,OAAMC,MAAM;IACtC,MAAMC,aAAaF,OAAMG,WAAW,CAAC,CAACC;QAClCA,OAAOC,cAAc,GAAGD,OAAOE,IAAI;QACnC,IAAIC,gBAAgBH,OAAOI,UAAU,CAAC,CAACC,UAAUA,QAAQC,QAAQ,KAAK,IAAIC,WAAWC,aAAa,GAAGD,WAAWE,WAAW;QAC3HT,OAAOC,cAAc,GAAGD,OAAOE,IAAI;QACnCC,kBAAkB,QAAQA,kBAAkB,KAAK,IAAIA,gBAAgBA,gBAAgBH,OAAOI,UAAU;QACtG,IAAI,CAACD,eAAe;YAChB;QACJ;QACAA,cAAcG,QAAQ,GAAG;QACzBX,kBAAkBe,OAAO,GAAGP;QAC5B,IAAIQ,cAAc;QAClB,MAAM,AAACA,CAAAA,cAAcX,OAAOW,WAAW,EAAC,KAAMA,gBAAgBR,cAAc;YACxEQ,YAAYL,QAAQ,GAAG,CAAC;QAC5B;IACJ,GAAG,EAAE;IACL,MAAMM,OAAOhB,OAAMG,WAAW,CAAC,CAACY;QAC5B,IAAI,CAAChB,kBAAkBe,OAAO,EAAE;YAC5B;QACJ;QACAf,kBAAkBe,OAAO,CAACJ,QAAQ,GAAG,CAAC;QACtCK,YAAYL,QAAQ,GAAG;QACvBK,YAAYE,KAAK;QACjBlB,kBAAkBe,OAAO,GAAGC;IAChC,GAAG,EAAE;IACL,OAAO;QACHC;QACAd;IACJ;AACJ"}
1
+ {"version":3,"sources":["useRovingTabIndexes.js"],"sourcesContent":["import * as React from 'react';\n/**\n * https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface/#kbd_roving_tabindex\n */ export function useRovingTabIndex() {\n const currentElementRef = React.useRef();\n const initialize = React.useCallback((walker)=>{\n walker.currentElement = walker.root;\n let tabbableChild = walker.firstChild((element)=>element.tabIndex === 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP);\n walker.currentElement = walker.root;\n tabbableChild !== null && tabbableChild !== void 0 ? tabbableChild : tabbableChild = walker.firstChild();\n if (!tabbableChild) {\n return;\n }\n tabbableChild.tabIndex = 0;\n currentElementRef.current = tabbableChild;\n let nextElement = null;\n while((nextElement = walker.nextElement()) && nextElement !== tabbableChild){\n nextElement.tabIndex = -1;\n }\n }, []);\n const rove = React.useCallback((nextElement)=>{\n if (!currentElementRef.current) {\n return;\n }\n currentElementRef.current.tabIndex = -1;\n nextElement.tabIndex = 0;\n nextElement.focus();\n currentElementRef.current = nextElement;\n }, []);\n return {\n rove,\n initialize\n };\n}\n"],"names":["useRovingTabIndex","currentElementRef","React","useRef","initialize","useCallback","walker","currentElement","root","tabbableChild","firstChild","element","tabIndex","NodeFilter","FILTER_ACCEPT","FILTER_SKIP","current","nextElement","rove","focus"],"mappings":";;;;+BAGoBA;;;eAAAA;;;;iEAHG;AAGZ,SAASA;IAChB,MAAMC,oBAAoBC,OAAMC,MAAM;IACtC,MAAMC,aAAaF,OAAMG,WAAW,CAAC,CAACC;QAClCA,OAAOC,cAAc,GAAGD,OAAOE,IAAI;QACnC,IAAIC,gBAAgBH,OAAOI,UAAU,CAAC,CAACC,UAAUA,QAAQC,QAAQ,KAAK,IAAIC,WAAWC,aAAa,GAAGD,WAAWE,WAAW;QAC3HT,OAAOC,cAAc,GAAGD,OAAOE,IAAI;QACnCC,kBAAkB,QAAQA,kBAAkB,KAAK,IAAIA,gBAAgBA,gBAAgBH,OAAOI,UAAU;QACtG,IAAI,CAACD,eAAe;YAChB;QACJ;QACAA,cAAcG,QAAQ,GAAG;QACzBX,kBAAkBe,OAAO,GAAGP;QAC5B,IAAIQ,cAAc;QAClB,MAAM,AAACA,CAAAA,cAAcX,OAAOW,WAAW,EAAC,KAAMA,gBAAgBR,cAAc;YACxEQ,YAAYL,QAAQ,GAAG,CAAC;QAC5B;IACJ,GAAG,EAAE;IACL,MAAMM,OAAOhB,OAAMG,WAAW,CAAC,CAACY;QAC5B,IAAI,CAAChB,kBAAkBe,OAAO,EAAE;YAC5B;QACJ;QACAf,kBAAkBe,OAAO,CAACJ,QAAQ,GAAG,CAAC;QACtCK,YAAYL,QAAQ,GAAG;QACvBK,YAAYE,KAAK;QACjBlB,kBAAkBe,OAAO,GAAGC;IAChC,GAAG,EAAE;IACL,OAAO;QACHC;QACAd;IACJ;AACJ"}
@@ -0,0 +1,77 @@
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 _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
12
+ const _nextTypeAheadElement = require("../utils/nextTypeAheadElement");
13
+ const _tokens = require("../utils/tokens");
14
+ const _useRovingTabIndexes = require("./useRovingTabIndexes");
15
+ const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
16
+ const _useHTMLElementWalkerRef = require("./useHTMLElementWalkerRef");
17
+ const _reactutilities = require("@fluentui/react-utilities");
18
+ function useTreeNavigation() {
19
+ const { rove, initialize: initializeRovingTabIndex } = (0, _useRovingTabIndexes.useRovingTabIndex)();
20
+ const { walkerRef, rootRef: walkerRootRef } = (0, _useHTMLElementWalkerRef.useHTMLElementWalkerRef)();
21
+ const rootRefCallback = _react.useCallback((root)=>{
22
+ if (root && walkerRef.current) {
23
+ initializeRovingTabIndex(walkerRef.current);
24
+ }
25
+ }, [
26
+ walkerRef,
27
+ initializeRovingTabIndex
28
+ ]);
29
+ const getNextElement = (data)=>{
30
+ if (!walkerRef.current) {
31
+ return null;
32
+ }
33
+ switch(data.type){
34
+ case _tokens.treeDataTypes.Click:
35
+ return data.target;
36
+ case _tokens.treeDataTypes.TypeAhead:
37
+ walkerRef.current.currentElement = data.target;
38
+ return (0, _nextTypeAheadElement.nextTypeAheadElement)(walkerRef.current, data.event.key);
39
+ case _tokens.treeDataTypes.ArrowLeft:
40
+ walkerRef.current.currentElement = data.target;
41
+ return walkerRef.current.parentElement();
42
+ case _tokens.treeDataTypes.ArrowRight:
43
+ walkerRef.current.currentElement = data.target;
44
+ return walkerRef.current.firstChild();
45
+ case _tokens.treeDataTypes.End:
46
+ walkerRef.current.currentElement = walkerRef.current.root;
47
+ return lastChildRecursive(walkerRef.current);
48
+ case _tokens.treeDataTypes.Home:
49
+ walkerRef.current.currentElement = walkerRef.current.root;
50
+ return walkerRef.current.firstChild();
51
+ case _tokens.treeDataTypes.ArrowDown:
52
+ walkerRef.current.currentElement = data.target;
53
+ return walkerRef.current.nextElement();
54
+ case _tokens.treeDataTypes.ArrowUp:
55
+ walkerRef.current.currentElement = data.target;
56
+ return walkerRef.current.previousElement();
57
+ }
58
+ };
59
+ function navigate(data) {
60
+ const nextElement = getNextElement(data);
61
+ if (nextElement) {
62
+ rove(nextElement);
63
+ }
64
+ }
65
+ return {
66
+ navigate,
67
+ rootRef: (0, _reactutilities.useMergedRefs)(walkerRootRef, rootRefCallback)
68
+ };
69
+ }
70
+ function lastChildRecursive(walker) {
71
+ let lastElement = null;
72
+ let nextElement = null;
73
+ while(nextElement = walker.lastChild()){
74
+ lastElement = nextElement;
75
+ }
76
+ return lastElement;
77
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["useTreeNavigation.js"],"sourcesContent":["import { nextTypeAheadElement } from '../utils/nextTypeAheadElement';\nimport { treeDataTypes } from '../utils/tokens';\nimport { useRovingTabIndex } from './useRovingTabIndexes';\nimport * as React from 'react';\nimport { useHTMLElementWalkerRef } from './useHTMLElementWalkerRef';\nimport { useMergedRefs } from '@fluentui/react-utilities';\nexport function useTreeNavigation() {\n const { rove, initialize: initializeRovingTabIndex } = useRovingTabIndex();\n const { walkerRef, rootRef: walkerRootRef } = useHTMLElementWalkerRef();\n const rootRefCallback = React.useCallback((root)=>{\n if (root && walkerRef.current) {\n initializeRovingTabIndex(walkerRef.current);\n }\n }, [\n walkerRef,\n initializeRovingTabIndex\n ]);\n const getNextElement = (data)=>{\n if (!walkerRef.current) {\n return null;\n }\n switch(data.type){\n case treeDataTypes.Click:\n return data.target;\n case treeDataTypes.TypeAhead:\n walkerRef.current.currentElement = data.target;\n return nextTypeAheadElement(walkerRef.current, data.event.key);\n case treeDataTypes.ArrowLeft:\n walkerRef.current.currentElement = data.target;\n return walkerRef.current.parentElement();\n case treeDataTypes.ArrowRight:\n walkerRef.current.currentElement = data.target;\n return walkerRef.current.firstChild();\n case treeDataTypes.End:\n walkerRef.current.currentElement = walkerRef.current.root;\n return lastChildRecursive(walkerRef.current);\n case treeDataTypes.Home:\n walkerRef.current.currentElement = walkerRef.current.root;\n return walkerRef.current.firstChild();\n case treeDataTypes.ArrowDown:\n walkerRef.current.currentElement = data.target;\n return walkerRef.current.nextElement();\n case treeDataTypes.ArrowUp:\n walkerRef.current.currentElement = data.target;\n return walkerRef.current.previousElement();\n }\n };\n function navigate(data) {\n const nextElement = getNextElement(data);\n if (nextElement) {\n rove(nextElement);\n }\n }\n return {\n navigate,\n rootRef: useMergedRefs(walkerRootRef, rootRefCallback)\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","initializeRovingTabIndex","useRovingTabIndex","walkerRef","rootRef","walkerRootRef","useHTMLElementWalkerRef","rootRefCallback","React","useCallback","root","current","getNextElement","data","type","treeDataTypes","Click","target","TypeAhead","currentElement","nextTypeAheadElement","event","key","ArrowLeft","parentElement","ArrowRight","firstChild","End","lastChildRecursive","Home","ArrowDown","nextElement","ArrowUp","previousElement","navigate","useMergedRefs","walker","lastElement","lastChild"],"mappings":";;;;+BAMgBA;;;eAAAA;;;;sCANqB;wBACP;qCACI;iEACX;yCACiB;gCACV;AACvB,SAASA;IACZ,MAAM,EAAEC,IAAI,EAAEC,YAAYC,wBAAwB,EAAE,GAAGC,IAAAA,sCAAiB;IACxE,MAAM,EAAEC,SAAS,EAAEC,SAASC,aAAa,EAAE,GAAGC,IAAAA,gDAAuB;IACrE,MAAMC,kBAAkBC,OAAMC,WAAW,CAAC,CAACC;QACvC,IAAIA,QAAQP,UAAUQ,OAAO,EAAE;YAC3BV,yBAAyBE,UAAUQ,OAAO;QAC9C;IACJ,GAAG;QACCR;QACAF;KACH;IACD,MAAMW,iBAAiB,CAACC;QACpB,IAAI,CAACV,UAAUQ,OAAO,EAAE;YACpB,OAAO;QACX;QACA,OAAOE,KAAKC,IAAI;YACZ,KAAKC,qBAAa,CAACC,KAAK;gBACpB,OAAOH,KAAKI,MAAM;YACtB,KAAKF,qBAAa,CAACG,SAAS;gBACxBf,UAAUQ,OAAO,CAACQ,cAAc,GAAGN,KAAKI,MAAM;gBAC9C,OAAOG,IAAAA,0CAAoB,EAACjB,UAAUQ,OAAO,EAAEE,KAAKQ,KAAK,CAACC,GAAG;YACjE,KAAKP,qBAAa,CAACQ,SAAS;gBACxBpB,UAAUQ,OAAO,CAACQ,cAAc,GAAGN,KAAKI,MAAM;gBAC9C,OAAOd,UAAUQ,OAAO,CAACa,aAAa;YAC1C,KAAKT,qBAAa,CAACU,UAAU;gBACzBtB,UAAUQ,OAAO,CAACQ,cAAc,GAAGN,KAAKI,MAAM;gBAC9C,OAAOd,UAAUQ,OAAO,CAACe,UAAU;YACvC,KAAKX,qBAAa,CAACY,GAAG;gBAClBxB,UAAUQ,OAAO,CAACQ,cAAc,GAAGhB,UAAUQ,OAAO,CAACD,IAAI;gBACzD,OAAOkB,mBAAmBzB,UAAUQ,OAAO;YAC/C,KAAKI,qBAAa,CAACc,IAAI;gBACnB1B,UAAUQ,OAAO,CAACQ,cAAc,GAAGhB,UAAUQ,OAAO,CAACD,IAAI;gBACzD,OAAOP,UAAUQ,OAAO,CAACe,UAAU;YACvC,KAAKX,qBAAa,CAACe,SAAS;gBACxB3B,UAAUQ,OAAO,CAACQ,cAAc,GAAGN,KAAKI,MAAM;gBAC9C,OAAOd,UAAUQ,OAAO,CAACoB,WAAW;YACxC,KAAKhB,qBAAa,CAACiB,OAAO;gBACtB7B,UAAUQ,OAAO,CAACQ,cAAc,GAAGN,KAAKI,MAAM;gBAC9C,OAAOd,UAAUQ,OAAO,CAACsB,eAAe;QAChD;IACJ;IACA,SAASC,SAASrB,IAAI;QAClB,MAAMkB,cAAcnB,eAAeC;QACnC,IAAIkB,aAAa;YACbhC,KAAKgC;QACT;IACJ;IACA,OAAO;QACHG;QACA9B,SAAS+B,IAAAA,6BAAa,EAAC9B,eAAeE;IAC1C;AACJ;AACA,SAASqB,mBAAmBQ,MAAM;IAC9B,IAAIC,cAAc;IAClB,IAAIN,cAAc;IAClB,MAAMA,cAAcK,OAAOE,SAAS,GAAG;QACnCD,cAAcN;IAClB;IACA,OAAOM;AACX"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluentui/react-tree",
3
- "version": "9.4.12",
3
+ "version": "9.4.14",
4
4
  "description": "Tree component for Fluent UI React",
5
5
  "main": "lib-commonjs/index.js",
6
6
  "module": "lib/index.js",
@@ -38,14 +38,14 @@
38
38
  "dependencies": {
39
39
  "@fluentui/keyboard-keys": "^9.0.7",
40
40
  "@fluentui/react-aria": "^9.3.44",
41
- "@fluentui/react-avatar": "^9.5.45",
42
- "@fluentui/react-button": "^9.3.54",
43
- "@fluentui/react-checkbox": "^9.1.55",
41
+ "@fluentui/react-avatar": "^9.5.47",
42
+ "@fluentui/react-button": "^9.3.56",
43
+ "@fluentui/react-checkbox": "^9.2.0",
44
44
  "@fluentui/react-context-selector": "^9.1.42",
45
45
  "@fluentui/react-icons": "^2.0.217",
46
- "@fluentui/react-radio": "^9.1.55",
47
- "@fluentui/react-shared-contexts": "^9.12.0",
48
- "@fluentui/react-tabster": "^9.14.4",
46
+ "@fluentui/react-radio": "^9.1.57",
47
+ "@fluentui/react-shared-contexts": "^9.13.0",
48
+ "@fluentui/react-tabster": "^9.14.6",
49
49
  "@fluentui/react-theme": "^9.1.16",
50
50
  "@fluentui/react-utilities": "^9.15.2",
51
51
  "@fluentui/react-jsx-runtime": "^9.0.19",
@@ -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"}