@fluentui/react-tree 9.0.0-beta.25 → 9.0.0-beta.26

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 (77) hide show
  1. package/CHANGELOG.json +73 -1
  2. package/CHANGELOG.md +18 -2
  3. package/dist/index.d.ts +123 -9
  4. package/lib/components/Tree/Tree.types.js.map +1 -1
  5. package/lib/components/Tree/useRootTree.js +24 -8
  6. package/lib/components/Tree/useRootTree.js.map +1 -1
  7. package/lib/components/Tree/useSubtree.js +4 -0
  8. package/lib/components/Tree/useSubtree.js.map +1 -1
  9. package/lib/components/Tree/useTreeContextValues.js +4 -2
  10. package/lib/components/Tree/useTreeContextValues.js.map +1 -1
  11. package/lib/components/TreeItem/TreeItem.types.js.map +1 -1
  12. package/lib/components/TreeItem/useTreeItem.js +48 -4
  13. package/lib/components/TreeItem/useTreeItem.js.map +1 -1
  14. package/lib/components/TreeItem/useTreeItemContextValues.js +5 -3
  15. package/lib/components/TreeItem/useTreeItemContextValues.js.map +1 -1
  16. package/lib/components/TreeItemLayout/TreeItemLayout.types.js.map +1 -1
  17. package/lib/components/TreeItemLayout/renderTreeItemLayout.js +1 -1
  18. package/lib/components/TreeItemLayout/renderTreeItemLayout.js.map +1 -1
  19. package/lib/components/TreeItemLayout/useTreeItemLayout.js +10 -5
  20. package/lib/components/TreeItemLayout/useTreeItemLayout.js.map +1 -1
  21. package/lib/components/TreeItemLayout/useTreeItemLayoutStyles.styles.js +15 -8
  22. package/lib/components/TreeItemLayout/useTreeItemLayoutStyles.styles.js.map +1 -1
  23. package/lib/contexts/treeContext.js +3 -0
  24. package/lib/contexts/treeContext.js.map +1 -1
  25. package/lib/contexts/treeItemSlotsContext.js.map +1 -1
  26. package/lib/hooks/index.js +2 -0
  27. package/lib/hooks/index.js.map +1 -1
  28. package/lib/hooks/useFlatControllableCheckedItems.js +76 -0
  29. package/lib/hooks/useFlatControllableCheckedItems.js.map +1 -0
  30. package/lib/hooks/useFlatTree.js +16 -5
  31. package/lib/hooks/useFlatTree.js.map +1 -1
  32. package/lib/hooks/useNestedControllableCheckedItems.js +107 -0
  33. package/lib/hooks/useNestedControllableCheckedItems.js.map +1 -0
  34. package/lib/index.js.map +1 -1
  35. package/lib/utils/ImmutableMap.js +37 -0
  36. package/lib/utils/ImmutableMap.js.map +1 -0
  37. package/lib/utils/ImmutableSet.js +3 -2
  38. package/lib/utils/ImmutableSet.js.map +1 -1
  39. package/lib/utils/createFlatTreeItems.js +60 -8
  40. package/lib/utils/createFlatTreeItems.js.map +1 -1
  41. package/lib/utils/tokens.js +2 -1
  42. package/lib/utils/tokens.js.map +1 -1
  43. package/lib-commonjs/components/Tree/useRootTree.js +23 -7
  44. package/lib-commonjs/components/Tree/useRootTree.js.map +1 -1
  45. package/lib-commonjs/components/Tree/useSubtree.js +4 -0
  46. package/lib-commonjs/components/Tree/useSubtree.js.map +1 -1
  47. package/lib-commonjs/components/Tree/useTreeContextValues.js +4 -2
  48. package/lib-commonjs/components/Tree/useTreeContextValues.js.map +1 -1
  49. package/lib-commonjs/components/TreeItem/useTreeItem.js +48 -4
  50. package/lib-commonjs/components/TreeItem/useTreeItem.js.map +1 -1
  51. package/lib-commonjs/components/TreeItem/useTreeItemContextValues.js +5 -3
  52. package/lib-commonjs/components/TreeItem/useTreeItemContextValues.js.map +1 -1
  53. package/lib-commonjs/components/TreeItemLayout/renderTreeItemLayout.js +1 -1
  54. package/lib-commonjs/components/TreeItemLayout/renderTreeItemLayout.js.map +1 -1
  55. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayout.js +11 -6
  56. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayout.js.map +1 -1
  57. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayoutStyles.styles.js +12 -8
  58. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayoutStyles.styles.js.map +1 -1
  59. package/lib-commonjs/contexts/treeContext.js +3 -0
  60. package/lib-commonjs/contexts/treeContext.js.map +1 -1
  61. package/lib-commonjs/hooks/index.js +2 -0
  62. package/lib-commonjs/hooks/index.js.map +1 -1
  63. package/lib-commonjs/hooks/useFlatControllableCheckedItems.js +91 -0
  64. package/lib-commonjs/hooks/useFlatControllableCheckedItems.js.map +1 -0
  65. package/lib-commonjs/hooks/useFlatTree.js +14 -3
  66. package/lib-commonjs/hooks/useFlatTree.js.map +1 -1
  67. package/lib-commonjs/hooks/useNestedControllableCheckedItems.js +116 -0
  68. package/lib-commonjs/hooks/useNestedControllableCheckedItems.js.map +1 -0
  69. package/lib-commonjs/utils/ImmutableMap.js +45 -0
  70. package/lib-commonjs/utils/ImmutableMap.js.map +1 -0
  71. package/lib-commonjs/utils/ImmutableSet.js +3 -2
  72. package/lib-commonjs/utils/ImmutableSet.js.map +1 -1
  73. package/lib-commonjs/utils/createFlatTreeItems.js +60 -8
  74. package/lib-commonjs/utils/createFlatTreeItems.js.map +1 -1
  75. package/lib-commonjs/utils/tokens.js +2 -1
  76. package/lib-commonjs/utils/tokens.js.map +1 -1
  77. package/package.json +9 -7
@@ -1 +1 @@
1
- {"version":3,"sources":["treeContext.js"],"sourcesContent":["import { createContext, useContextSelector } from '@fluentui/react-context-selector';\nimport { ImmutableSet } from '../utils/ImmutableSet';\nconst defaultContextValue = {\n level: 0,\n openItems: ImmutableSet.empty,\n requestTreeResponse: noop,\n appearance: 'subtle',\n size: 'medium'\n};\nfunction noop() {\n/* noop */ }\nexport const TreeContext = createContext(undefined);\nexport const { Provider: TreeProvider } = TreeContext;\nexport const useTreeContext_unstable = (selector)=>useContextSelector(TreeContext, (ctx = defaultContextValue)=>selector(ctx));\n"],"names":["TreeContext","TreeProvider","useTreeContext_unstable","defaultContextValue","level","openItems","ImmutableSet","empty","requestTreeResponse","noop","appearance","size","createContext","undefined","Provider","selector","useContextSelector","ctx"],"mappings":";;;;;;;;;;;IAWaA,WAAW,MAAXA;IACYC,YAAY,MAAZA;IACZC,uBAAuB,MAAvBA;;sCAbqC;8BACrB;AAC7B,MAAMC,sBAAsB;IACxBC,OAAO;IACPC,WAAWC,0BAAY,CAACC,KAAK;IAC7BC,qBAAqBC;IACrBC,YAAY;IACZC,MAAM;AACV;AACA,SAASF,OAAO;AAChB,QAAQ,GAAG;AACJ,MAAMT,cAAcY,IAAAA,mCAAa,EAACC;AAClC,MAAM,EAAEC,UAAUb,aAAY,EAAG,GAAGD;AACpC,MAAME,0BAA0B,CAACa,WAAWC,IAAAA,wCAAkB,EAAChB,aAAa,CAACiB,MAAMd,mBAAmB,GAAGY,SAASE"}
1
+ {"version":3,"sources":["treeContext.js"],"sourcesContent":["import { createContext, useContextSelector } from '@fluentui/react-context-selector';\nimport { ImmutableSet } from '../utils/ImmutableSet';\nimport { ImmutableMap } from '../utils/ImmutableMap';\nconst defaultContextValue = {\n level: 0,\n selectionMode: 'none',\n openItems: ImmutableSet.empty,\n checkedItems: ImmutableMap.empty,\n requestTreeResponse: noop,\n appearance: 'subtle',\n size: 'medium'\n};\nfunction noop() {\n/* noop */ }\nexport const TreeContext = createContext(undefined);\nexport const { Provider: TreeProvider } = TreeContext;\nexport const useTreeContext_unstable = (selector)=>useContextSelector(TreeContext, (ctx = defaultContextValue)=>selector(ctx));\n"],"names":["TreeContext","TreeProvider","useTreeContext_unstable","defaultContextValue","level","selectionMode","openItems","ImmutableSet","empty","checkedItems","ImmutableMap","requestTreeResponse","noop","appearance","size","createContext","undefined","Provider","selector","useContextSelector","ctx"],"mappings":";;;;;;;;;;;IAcaA,WAAW,MAAXA;IACYC,YAAY,MAAZA;IACZC,uBAAuB,MAAvBA;;sCAhBqC;8BACrB;8BACA;AAC7B,MAAMC,sBAAsB;IACxBC,OAAO;IACPC,eAAe;IACfC,WAAWC,0BAAY,CAACC,KAAK;IAC7BC,cAAcC,0BAAY,CAACF,KAAK;IAChCG,qBAAqBC;IACrBC,YAAY;IACZC,MAAM;AACV;AACA,SAASF,OAAO;AAChB,QAAQ,GAAG;AACJ,MAAMZ,cAAce,IAAAA,mCAAa,EAACC;AAClC,MAAM,EAAEC,UAAUhB,aAAY,EAAG,GAAGD;AACpC,MAAME,0BAA0B,CAACgB,WAAWC,IAAAA,wCAAkB,EAACnB,aAAa,CAACoB,MAAMjB,mBAAmB,GAAGe,SAASE"}
@@ -6,3 +6,5 @@ const _exportStar = require("@swc/helpers/lib/_export_star.js").default;
6
6
  _exportStar(require("./useFlatTree"), exports);
7
7
  _exportStar(require("./useNestedTreeNavigation"), exports);
8
8
  _exportStar(require("./useControllableOpenItems"), exports);
9
+ _exportStar(require("./useNestedControllableCheckedItems"), exports);
10
+ _exportStar(require("./useFlatControllableCheckedItems"), exports);
@@ -1 +1 @@
1
- {"version":3,"sources":["index.js"],"sourcesContent":["export * from './useFlatTree';\nexport * from './useNestedTreeNavigation';\nexport * from './useControllableOpenItems';\n"],"names":[],"mappings":";;;;;oBAAc;oBACA;oBACA"}
1
+ {"version":3,"sources":["index.js"],"sourcesContent":["export * from './useFlatTree';\nexport * from './useNestedTreeNavigation';\nexport * from './useControllableOpenItems';\nexport * from './useNestedControllableCheckedItems';\nexport * from './useFlatControllableCheckedItems';\n"],"names":[],"mappings":";;;;;oBAAc;oBACA;oBACA;oBACA;oBACA"}
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ useFlatControllableCheckedItems: ()=>useFlatControllableCheckedItems,
13
+ createNextFlatCheckedItems: ()=>createNextFlatCheckedItems
14
+ });
15
+ const _interopRequireWildcard = require("@swc/helpers/lib/_interop_require_wildcard.js").default;
16
+ const _reactUtilities = require("@fluentui/react-utilities");
17
+ const _immutableMap = require("../utils/ImmutableMap");
18
+ const _react = /*#__PURE__*/ _interopRequireWildcard(require("react"));
19
+ function initializeMap(iterable) {
20
+ const map = new Map();
21
+ if (iterable === undefined) {
22
+ return _immutableMap.ImmutableMap.empty;
23
+ }
24
+ for (const item of iterable){
25
+ if (Array.isArray(item)) {
26
+ map.set(item[0], item[1]);
27
+ } else {
28
+ map.set(item, true);
29
+ }
30
+ }
31
+ return _immutableMap.ImmutableMap.dangerouslyCreate_unstable(map);
32
+ }
33
+ function useFlatControllableCheckedItems(props) {
34
+ const [checkedItems, setCheckedItems] = (0, _reactUtilities.useControllableState)({
35
+ initialState: _immutableMap.ImmutableMap.empty,
36
+ state: _react.useMemo(()=>props.checkedItems && initializeMap(props.checkedItems), [
37
+ props.checkedItems
38
+ ]),
39
+ defaultState: ()=>initializeMap(props.defaultCheckedItems)
40
+ });
41
+ return [
42
+ checkedItems,
43
+ setCheckedItems
44
+ ];
45
+ }
46
+ function createNextFlatCheckedItems(data, previousCheckedItems, flatTreeItems) {
47
+ if (data.selectionMode === 'single') {
48
+ return _immutableMap.ImmutableMap.create([
49
+ [
50
+ data.value,
51
+ data.checked
52
+ ]
53
+ ]);
54
+ }
55
+ const treeItem = flatTreeItems.get(data.value);
56
+ if (!treeItem) {
57
+ if (process.env.NODE_ENV !== 'production') {
58
+ // eslint-disable-next-line no-console
59
+ console.error(`useFlatTree: tree item ${data.value} not found`);
60
+ }
61
+ return previousCheckedItems;
62
+ }
63
+ const nextCheckedItems = new Map(previousCheckedItems);
64
+ for (const children of flatTreeItems.subtree(data.value)){
65
+ nextCheckedItems.set(children.value, data.checked);
66
+ }
67
+ nextCheckedItems.set(data.value, data.checked);
68
+ let isAncestorsMixed = false;
69
+ for (const parent of flatTreeItems.ancestors(treeItem.value)){
70
+ // if one parent is mixed, all ancestors are mixed
71
+ if (isAncestorsMixed) {
72
+ nextCheckedItems.set(parent.value, 'mixed');
73
+ continue;
74
+ }
75
+ const checkedChildren = [];
76
+ for (const child of flatTreeItems.children(parent.value)){
77
+ var _nextCheckedItems_get;
78
+ if (((_nextCheckedItems_get = nextCheckedItems.get(child.value)) !== null && _nextCheckedItems_get !== void 0 ? _nextCheckedItems_get : false) === data.checked) {
79
+ checkedChildren.push(child);
80
+ }
81
+ }
82
+ if (checkedChildren.length === parent.childrenValues.length) {
83
+ nextCheckedItems.set(parent.value, data.checked);
84
+ } else {
85
+ // if one parent is mixed, all ancestors are mixed
86
+ isAncestorsMixed = true;
87
+ nextCheckedItems.set(parent.value, 'mixed');
88
+ }
89
+ }
90
+ return _immutableMap.ImmutableMap.dangerouslyCreate_unstable(nextCheckedItems);
91
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["useFlatControllableCheckedItems.js"],"sourcesContent":["import { useControllableState } from '@fluentui/react-utilities';\nimport { ImmutableMap } from '../utils/ImmutableMap';\nimport * as React from 'react';\nfunction initializeMap(iterable) {\n const map = new Map();\n if (iterable === undefined) {\n return ImmutableMap.empty;\n }\n for (const item of iterable){\n if (Array.isArray(item)) {\n map.set(item[0], item[1]);\n } else {\n map.set(item, true);\n }\n }\n return ImmutableMap.dangerouslyCreate_unstable(map);\n}\nexport function useFlatControllableCheckedItems(props) {\n const [checkedItems, setCheckedItems] = useControllableState({\n initialState: ImmutableMap.empty,\n state: React.useMemo(()=>props.checkedItems && initializeMap(props.checkedItems), [\n props.checkedItems\n ]),\n defaultState: ()=>initializeMap(props.defaultCheckedItems)\n });\n return [\n checkedItems,\n setCheckedItems\n ];\n}\nexport function createNextFlatCheckedItems(data, previousCheckedItems, flatTreeItems) {\n if (data.selectionMode === 'single') {\n return ImmutableMap.create([\n [\n data.value,\n data.checked\n ]\n ]);\n }\n const treeItem = flatTreeItems.get(data.value);\n if (!treeItem) {\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.error(`useFlatTree: tree item ${data.value} not found`);\n }\n return previousCheckedItems;\n }\n const nextCheckedItems = new Map(previousCheckedItems);\n for (const children of flatTreeItems.subtree(data.value)){\n nextCheckedItems.set(children.value, data.checked);\n }\n nextCheckedItems.set(data.value, data.checked);\n let isAncestorsMixed = false;\n for (const parent of flatTreeItems.ancestors(treeItem.value)){\n // if one parent is mixed, all ancestors are mixed\n if (isAncestorsMixed) {\n nextCheckedItems.set(parent.value, 'mixed');\n continue;\n }\n const checkedChildren = [];\n for (const child of flatTreeItems.children(parent.value)){\n var _nextCheckedItems_get;\n if (((_nextCheckedItems_get = nextCheckedItems.get(child.value)) !== null && _nextCheckedItems_get !== void 0 ? _nextCheckedItems_get : false) === data.checked) {\n checkedChildren.push(child);\n }\n }\n if (checkedChildren.length === parent.childrenValues.length) {\n nextCheckedItems.set(parent.value, data.checked);\n } else {\n // if one parent is mixed, all ancestors are mixed\n isAncestorsMixed = true;\n nextCheckedItems.set(parent.value, 'mixed');\n }\n }\n return ImmutableMap.dangerouslyCreate_unstable(nextCheckedItems);\n}\n"],"names":["useFlatControllableCheckedItems","createNextFlatCheckedItems","initializeMap","iterable","map","Map","undefined","ImmutableMap","empty","item","Array","isArray","set","dangerouslyCreate_unstable","props","checkedItems","setCheckedItems","useControllableState","initialState","state","React","useMemo","defaultState","defaultCheckedItems","data","previousCheckedItems","flatTreeItems","selectionMode","create","value","checked","treeItem","get","process","env","NODE_ENV","console","error","nextCheckedItems","children","subtree","isAncestorsMixed","parent","ancestors","checkedChildren","child","_nextCheckedItems_get","push","length","childrenValues"],"mappings":"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"}
@@ -14,21 +14,28 @@ const _tokens = require("../utils/tokens");
14
14
  const _useFlatTreeNavigation = require("./useFlatTreeNavigation");
15
15
  const _useControllableOpenItems = require("./useControllableOpenItems");
16
16
  const _getTreeItemValueFromElement = require("../utils/getTreeItemValueFromElement");
17
+ const _useFlatControllableCheckedItems = require("./useFlatControllableCheckedItems");
17
18
  function useFlatTree_unstable(flatTreeItemProps, options = {}) {
18
19
  const flatTreeItems = _react.useMemo(()=>(0, _createFlatTreeItems.createFlatTreeItems)(flatTreeItemProps), [
19
20
  flatTreeItemProps
20
21
  ]);
21
22
  const [openItems, setOpenItems] = (0, _useControllableOpenItems.useControllableOpenItems)(options);
23
+ const [checkedItems, setCheckedItems] = (0, _useFlatControllableCheckedItems.useFlatControllableCheckedItems)(options);
22
24
  const [navigate, navigationRef] = (0, _useFlatTreeNavigation.useFlatTreeNavigation)(flatTreeItems);
23
25
  const treeRef = _react.useRef(null);
24
26
  const handleOpenChange = (0, _reactUtilities.useEventCallback)((event, data)=>{
25
27
  var _options_onOpenChange;
26
28
  (_options_onOpenChange = options.onOpenChange) === null || _options_onOpenChange === void 0 ? void 0 : _options_onOpenChange.call(options, event, data);
27
29
  if (!event.isDefaultPrevented()) {
28
- setOpenItems(data.openItems);
30
+ setOpenItems((0, _useControllableOpenItems.createNextOpenItems)(data, openItems));
29
31
  }
30
32
  event.preventDefault();
31
33
  });
34
+ const handleCheckedChange = (0, _reactUtilities.useEventCallback)((event, data)=>{
35
+ var _options_onCheckedChange;
36
+ (_options_onCheckedChange = options.onCheckedChange) === null || _options_onCheckedChange === void 0 ? void 0 : _options_onCheckedChange.call(options, event, data);
37
+ setCheckedItems((0, _useFlatControllableCheckedItems.createNextFlatCheckedItems)(data, checkedItems, flatTreeItems));
38
+ });
32
39
  const handleNavigation = (0, _reactUtilities.useEventCallback)((event, data)=>{
33
40
  var _options_onNavigation_unstable;
34
41
  (_options_onNavigation_unstable = options.onNavigation_unstable) === null || _options_onNavigation_unstable === void 0 ? void 0 : _options_onNavigation_unstable.call(options, event, data);
@@ -66,13 +73,17 @@ function useFlatTree_unstable(flatTreeItemProps, options = {}) {
66
73
  const getTreeProps = _react.useCallback(()=>({
67
74
  ref,
68
75
  openItems,
76
+ selectionMode: options.selectionMode,
77
+ checkedItems,
69
78
  onOpenChange: handleOpenChange,
79
+ onCheckedChange: handleCheckedChange,
70
80
  // eslint-disable-next-line @typescript-eslint/naming-convention
71
81
  onNavigation_unstable: handleNavigation
72
82
  }), [
73
- openItems
83
+ openItems,
84
+ checkedItems
74
85
  ]);
75
- const items = _react.useCallback(()=>(0, _createFlatTreeItems.VisibleFlatTreeItemGenerator)(openItems, flatTreeItems), [
86
+ const items = _react.useCallback(()=>flatTreeItems.visibleItems(openItems), [
76
87
  openItems,
77
88
  flatTreeItems
78
89
  ]);
@@ -1 +1 @@
1
- {"version":3,"sources":["useFlatTree.js"],"sourcesContent":["import { useEventCallback, useMergedRefs } from '@fluentui/react-utilities';\nimport * as React from 'react';\nimport { createFlatTreeItems, VisibleFlatTreeItemGenerator } from '../utils/createFlatTreeItems';\nimport { treeDataTypes } from '../utils/tokens';\nimport { useFlatTreeNavigation } from './useFlatTreeNavigation';\nimport { useControllableOpenItems } from './useControllableOpenItems';\nimport { dataTreeItemValueAttrName } from '../utils/getTreeItemValueFromElement';\n/**\n * this hook provides FlatTree API to manage all required mechanisms to convert a list of items into renderable TreeItems\n * in multiple scenarios including virtualization.\n *\n * !!A flat tree is an unofficial spec for tree!!\n *\n * It should be used on cases where more complex interactions with a Tree is required.\n * On simple scenarios it is advised to simply use a nested structure instead.\n *\n * @param flatTreeItemProps - a list of tree items\n * @param options - in case control over the internal openItems is required\n */ export function useFlatTree_unstable(flatTreeItemProps, options = {}) {\n const flatTreeItems = React.useMemo(()=>createFlatTreeItems(flatTreeItemProps), [\n flatTreeItemProps\n ]);\n const [openItems, setOpenItems] = useControllableOpenItems(options);\n const [navigate, navigationRef] = useFlatTreeNavigation(flatTreeItems);\n const treeRef = React.useRef(null);\n const handleOpenChange = useEventCallback((event, data)=>{\n var _options_onOpenChange;\n (_options_onOpenChange = options.onOpenChange) === null || _options_onOpenChange === void 0 ? void 0 : _options_onOpenChange.call(options, event, data);\n if (!event.isDefaultPrevented()) {\n setOpenItems(data.openItems);\n }\n event.preventDefault();\n });\n const handleNavigation = useEventCallback((event, data)=>{\n var _options_onNavigation_unstable;\n (_options_onNavigation_unstable = options.onNavigation_unstable) === null || _options_onNavigation_unstable === void 0 ? void 0 : _options_onNavigation_unstable.call(options, event, data);\n if (!event.isDefaultPrevented()) {\n navigate(data);\n }\n event.preventDefault();\n });\n const getNextNavigableItem = useEventCallback((visibleItems, data)=>{\n const item = flatTreeItems.get(data.value);\n if (item) {\n switch(data.type){\n case treeDataTypes.TypeAhead:\n return item;\n case treeDataTypes.ArrowLeft:\n return flatTreeItems.get(item.parentValue);\n case treeDataTypes.ArrowRight:\n return visibleItems[item.index + 1];\n case treeDataTypes.End:\n return visibleItems[visibleItems.length - 1];\n case treeDataTypes.Home:\n return visibleItems[0];\n case treeDataTypes.ArrowDown:\n return visibleItems[item.index + 1];\n case treeDataTypes.ArrowUp:\n return visibleItems[item.index - 1];\n }\n }\n });\n const getElementFromItem = React.useCallback((item)=>{\n var _treeRef_current;\n return (_treeRef_current = treeRef.current) === null || _treeRef_current === void 0 ? void 0 : _treeRef_current.querySelector(`[${dataTreeItemValueAttrName}=\"${item.value}\"]`);\n }, []);\n const ref = useMergedRefs(treeRef, navigationRef);\n const getTreeProps = React.useCallback(()=>({\n ref,\n openItems,\n onOpenChange: handleOpenChange,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n onNavigation_unstable: handleNavigation\n }), // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n openItems\n ]);\n const items = React.useCallback(()=>VisibleFlatTreeItemGenerator(openItems, flatTreeItems), [\n openItems,\n flatTreeItems\n ]);\n return React.useMemo(()=>({\n navigate,\n getTreeProps,\n getNextNavigableItem,\n getElementFromItem,\n items\n }), [\n navigate,\n getTreeProps,\n getNextNavigableItem,\n getElementFromItem,\n items\n ]);\n}\n"],"names":["useFlatTree_unstable","flatTreeItemProps","options","flatTreeItems","React","useMemo","createFlatTreeItems","openItems","setOpenItems","useControllableOpenItems","navigate","navigationRef","useFlatTreeNavigation","treeRef","useRef","handleOpenChange","useEventCallback","event","data","_options_onOpenChange","onOpenChange","call","isDefaultPrevented","preventDefault","handleNavigation","_options_onNavigation_unstable","onNavigation_unstable","getNextNavigableItem","visibleItems","item","get","value","type","treeDataTypes","TypeAhead","ArrowLeft","parentValue","ArrowRight","index","End","length","Home","ArrowDown","ArrowUp","getElementFromItem","useCallback","_treeRef_current","current","querySelector","dataTreeItemValueAttrName","ref","useMergedRefs","getTreeProps","items","VisibleFlatTreeItemGenerator"],"mappings":"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"}
1
+ {"version":3,"sources":["useFlatTree.js"],"sourcesContent":["import { useEventCallback, useMergedRefs } from '@fluentui/react-utilities';\nimport * as React from 'react';\nimport { createFlatTreeItems } from '../utils/createFlatTreeItems';\nimport { treeDataTypes } from '../utils/tokens';\nimport { useFlatTreeNavigation } from './useFlatTreeNavigation';\nimport { createNextOpenItems, useControllableOpenItems } from './useControllableOpenItems';\nimport { dataTreeItemValueAttrName } from '../utils/getTreeItemValueFromElement';\nimport { createNextFlatCheckedItems, useFlatControllableCheckedItems } from './useFlatControllableCheckedItems';\n/**\n * this hook provides FlatTree API to manage all required mechanisms to convert a list of items into renderable TreeItems\n * in multiple scenarios including virtualization.\n *\n * !!A flat tree is an unofficial spec for tree!!\n *\n * It should be used on cases where more complex interactions with a Tree is required.\n * On simple scenarios it is advised to simply use a nested structure instead.\n *\n * @param flatTreeItemProps - a list of tree items\n * @param options - in case control over the internal openItems is required\n */ export function useFlatTree_unstable(flatTreeItemProps, options = {}) {\n const flatTreeItems = React.useMemo(()=>createFlatTreeItems(flatTreeItemProps), [\n flatTreeItemProps\n ]);\n const [openItems, setOpenItems] = useControllableOpenItems(options);\n const [checkedItems, setCheckedItems] = useFlatControllableCheckedItems(options);\n const [navigate, navigationRef] = useFlatTreeNavigation(flatTreeItems);\n const treeRef = React.useRef(null);\n const handleOpenChange = useEventCallback((event, data)=>{\n var _options_onOpenChange;\n (_options_onOpenChange = options.onOpenChange) === null || _options_onOpenChange === void 0 ? void 0 : _options_onOpenChange.call(options, event, data);\n if (!event.isDefaultPrevented()) {\n setOpenItems(createNextOpenItems(data, openItems));\n }\n event.preventDefault();\n });\n const handleCheckedChange = useEventCallback((event, data)=>{\n var _options_onCheckedChange;\n (_options_onCheckedChange = options.onCheckedChange) === null || _options_onCheckedChange === void 0 ? void 0 : _options_onCheckedChange.call(options, event, data);\n setCheckedItems(createNextFlatCheckedItems(data, checkedItems, flatTreeItems));\n });\n const handleNavigation = useEventCallback((event, data)=>{\n var _options_onNavigation_unstable;\n (_options_onNavigation_unstable = options.onNavigation_unstable) === null || _options_onNavigation_unstable === void 0 ? void 0 : _options_onNavigation_unstable.call(options, event, data);\n if (!event.isDefaultPrevented()) {\n navigate(data);\n }\n event.preventDefault();\n });\n const getNextNavigableItem = useEventCallback((visibleItems, data)=>{\n const item = flatTreeItems.get(data.value);\n if (item) {\n switch(data.type){\n case treeDataTypes.TypeAhead:\n return item;\n case treeDataTypes.ArrowLeft:\n return flatTreeItems.get(item.parentValue);\n case treeDataTypes.ArrowRight:\n return visibleItems[item.index + 1];\n case treeDataTypes.End:\n return visibleItems[visibleItems.length - 1];\n case treeDataTypes.Home:\n return visibleItems[0];\n case treeDataTypes.ArrowDown:\n return visibleItems[item.index + 1];\n case treeDataTypes.ArrowUp:\n return visibleItems[item.index - 1];\n }\n }\n });\n const getElementFromItem = React.useCallback((item)=>{\n var _treeRef_current;\n return (_treeRef_current = treeRef.current) === null || _treeRef_current === void 0 ? void 0 : _treeRef_current.querySelector(`[${dataTreeItemValueAttrName}=\"${item.value}\"]`);\n }, []);\n const ref = useMergedRefs(treeRef, navigationRef);\n const getTreeProps = React.useCallback(()=>({\n ref,\n openItems,\n selectionMode: options.selectionMode,\n checkedItems,\n onOpenChange: handleOpenChange,\n onCheckedChange: handleCheckedChange,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n onNavigation_unstable: handleNavigation\n }), // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n openItems,\n checkedItems\n ]);\n const items = React.useCallback(()=>flatTreeItems.visibleItems(openItems), [\n openItems,\n flatTreeItems\n ]);\n return React.useMemo(()=>({\n navigate,\n getTreeProps,\n getNextNavigableItem,\n getElementFromItem,\n items\n }), [\n navigate,\n getTreeProps,\n getNextNavigableItem,\n getElementFromItem,\n items\n ]);\n}\n"],"names":["useFlatTree_unstable","flatTreeItemProps","options","flatTreeItems","React","useMemo","createFlatTreeItems","openItems","setOpenItems","useControllableOpenItems","checkedItems","setCheckedItems","useFlatControllableCheckedItems","navigate","navigationRef","useFlatTreeNavigation","treeRef","useRef","handleOpenChange","useEventCallback","event","data","_options_onOpenChange","onOpenChange","call","isDefaultPrevented","createNextOpenItems","preventDefault","handleCheckedChange","_options_onCheckedChange","onCheckedChange","createNextFlatCheckedItems","handleNavigation","_options_onNavigation_unstable","onNavigation_unstable","getNextNavigableItem","visibleItems","item","get","value","type","treeDataTypes","TypeAhead","ArrowLeft","parentValue","ArrowRight","index","End","length","Home","ArrowDown","ArrowUp","getElementFromItem","useCallback","_treeRef_current","current","querySelector","dataTreeItemValueAttrName","ref","useMergedRefs","getTreeProps","selectionMode","items"],"mappings":"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"}
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "useNestedControllableCheckedItems", {
6
+ enumerable: true,
7
+ get: ()=>useNestedControllableCheckedItems
8
+ });
9
+ const _interopRequireWildcard = require("@swc/helpers/lib/_interop_require_wildcard.js").default;
10
+ const _reactUtilities = require("@fluentui/react-utilities");
11
+ const _react = /*#__PURE__*/ _interopRequireWildcard(require("react"));
12
+ const _immutableMap = require("../utils/ImmutableMap");
13
+ function initializeMap(iterable) {
14
+ const map = new Map();
15
+ if (iterable === undefined) {
16
+ return _immutableMap.ImmutableMap.empty;
17
+ }
18
+ for (const item of iterable){
19
+ if (Array.isArray(item)) {
20
+ map.set(item[0], item[1]);
21
+ } else {
22
+ map.set(item, true);
23
+ }
24
+ }
25
+ return _immutableMap.ImmutableMap.dangerouslyCreate_unstable(map);
26
+ }
27
+ function useNestedControllableCheckedItems(props) {
28
+ return (0, _reactUtilities.useControllableState)({
29
+ initialState: _immutableMap.ImmutableMap.empty,
30
+ state: _react.useMemo(()=>props.checkedItems && initializeMap(props.checkedItems), [
31
+ props.checkedItems
32
+ ]),
33
+ defaultState: ()=>initializeMap(props.defaultCheckedItems)
34
+ });
35
+ } // export function useCheckedItemsState(props: Pick<TreeProps, 'checkedItems' | 'defaultCheckedItems' | 'selectionMode'>) {
36
+ // const [walkerRef, rootRef] = useHTMLElementWalkerRef(treeItemFilter);
37
+ // const selections = React.useMemo(() => initializeSelection(props.checkedItems ?? []), [props.checkedItems]);
38
+ // const defaultSelections = React.useMemo(
39
+ // () => initializeSelection(props.defaultCheckedItems ?? []),
40
+ // [props.defaultCheckedItems],
41
+ // );
42
+ // const [checkedSelection, checkedSelectionManager] = useSelection<TreeItemValue>({
43
+ // selectionMode: props.selectionMode ?? 'single',
44
+ // selectedItems: selections.checkedSelection,
45
+ // defaultSelectedItems: defaultSelections.checkedSelection,
46
+ // });
47
+ // const [mixedSelection, setMixedSelection] = useControllableState({
48
+ // initialState: ImmutableSet.empty,
49
+ // defaultState: React.useMemo(
50
+ // () => ImmutableSet.create(defaultSelections.mixedSelection),
51
+ // [defaultSelections.mixedSelection],
52
+ // ),
53
+ // state: React.useMemo(() => ImmutableSet.create(selections.mixedSelection), [selections.mixedSelection]),
54
+ // });
55
+ // const updateCheckedItems = useEventCallback((data: TreeCheckedChangeData) => {
56
+ // if (props.selectionMode === 'single') {
57
+ // checkedSelectionManager.selectItem(data.value);
58
+ // return;
59
+ // }
60
+ // if (walkerRef.current === null) {
61
+ // return;
62
+ // }
63
+ // const nextSelectedState = !checkedSelectionManager.isSelected(data.value);
64
+ // let treeItemValues = getAllSubTreeItemValues(data).add(data.value);
65
+ // let mixedValues: ImmutableSet<TreeItemValue> = ImmutableSet.empty;
66
+ // walkerRef.current.currentElement = data.event.currentTarget;
67
+ // while (walkerRef.current.parentElement() !== null) {
68
+ // const descendants = Array.from(
69
+ // walkerRef.current.currentElement.querySelectorAll<HTMLElement>('[role="treeitem"]'),
70
+ // ).filter(item => item.getAttribute(dataTreeItemValueAttrName) !== data.value);
71
+ // const isAllSiblingsEqualSelectionState = descendants.every(item => {
72
+ // return (
73
+ // (item.getAttribute('aria-selected') === 'true') === nextSelectedState ||
74
+ // treeItemValues.has(item.getAttribute(dataTreeItemValueAttrName) as TreeItemValue)
75
+ // );
76
+ // });
77
+ // if (isAllSiblingsEqualSelectionState) {
78
+ // treeItemValues = treeItemValues.add(
79
+ // walkerRef.current.currentElement.getAttribute(dataTreeItemValueAttrName) as TreeItemValue,
80
+ // );
81
+ // mixedValues = mixedValues.delete(
82
+ // walkerRef.current.currentElement.getAttribute(dataTreeItemValueAttrName) as TreeItemValue,
83
+ // );
84
+ // } else {
85
+ // treeItemValues = treeItemValues
86
+ // .delete(walkerRef.current.currentElement.getAttribute(dataTreeItemValueAttrName) as TreeItemValue)
87
+ // .add(data.value);
88
+ // mixedValues = mixedValues.add(
89
+ // walkerRef.current.currentElement.getAttribute(dataTreeItemValueAttrName) as TreeItemValue,
90
+ // );
91
+ // }
92
+ // }
93
+ // unstable_batchedUpdates(() => {
94
+ // nextSelectedState
95
+ // ? checkedSelectionManager.selectItems(treeItemValues)
96
+ // : checkedSelectionManager.deselectItems(treeItemValues);
97
+ // let nextMixedSelection = ImmutableSet.create(mixedSelection);
98
+ // for (const value of mixedValues) {
99
+ // nextMixedSelection = nextMixedSelection.add(value);
100
+ // }
101
+ // for (const value of treeItemValues) {
102
+ // nextMixedSelection = nextMixedSelection.delete(value);
103
+ // }
104
+ // setMixedSelection(nextMixedSelection);
105
+ // });
106
+ // });
107
+ // return [checkedSelection, mixedSelection, updateCheckedItems, rootRef] as const;
108
+ // }
109
+ // function getAllSubTreeItemValues(data: TreeCheckedChangeData) {
110
+ // const subTreeItems = Array.from(data.event.currentTarget.querySelectorAll('[role="treeitem"]'));
111
+ // const values = new Set<TreeItemValue>();
112
+ // for (const item of subTreeItems) {
113
+ // values.add(item.getAttribute(dataTreeItemValueAttrName) as TreeItemValue);
114
+ // }
115
+ // return ImmutableSet.dangerouslyCreate(values);
116
+ // }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["useNestedControllableCheckedItems.js"],"sourcesContent":["import { useControllableState } from '@fluentui/react-utilities';\nimport * as React from 'react';\nimport { ImmutableMap } from '../utils/ImmutableMap';\nfunction initializeMap(iterable) {\n const map = new Map();\n if (iterable === undefined) {\n return ImmutableMap.empty;\n }\n for (const item of iterable){\n if (Array.isArray(item)) {\n map.set(item[0], item[1]);\n } else {\n map.set(item, true);\n }\n }\n return ImmutableMap.dangerouslyCreate_unstable(map);\n}\nexport function useNestedControllableCheckedItems(props) {\n return useControllableState({\n initialState: ImmutableMap.empty,\n state: React.useMemo(()=>props.checkedItems && initializeMap(props.checkedItems), [\n props.checkedItems\n ]),\n defaultState: ()=>initializeMap(props.defaultCheckedItems)\n });\n} // export function useCheckedItemsState(props: Pick<TreeProps, 'checkedItems' | 'defaultCheckedItems' | 'selectionMode'>) {\n // const [walkerRef, rootRef] = useHTMLElementWalkerRef(treeItemFilter);\n // const selections = React.useMemo(() => initializeSelection(props.checkedItems ?? []), [props.checkedItems]);\n // const defaultSelections = React.useMemo(\n // () => initializeSelection(props.defaultCheckedItems ?? []),\n // [props.defaultCheckedItems],\n // );\n // const [checkedSelection, checkedSelectionManager] = useSelection<TreeItemValue>({\n // selectionMode: props.selectionMode ?? 'single',\n // selectedItems: selections.checkedSelection,\n // defaultSelectedItems: defaultSelections.checkedSelection,\n // });\n // const [mixedSelection, setMixedSelection] = useControllableState({\n // initialState: ImmutableSet.empty,\n // defaultState: React.useMemo(\n // () => ImmutableSet.create(defaultSelections.mixedSelection),\n // [defaultSelections.mixedSelection],\n // ),\n // state: React.useMemo(() => ImmutableSet.create(selections.mixedSelection), [selections.mixedSelection]),\n // });\n // const updateCheckedItems = useEventCallback((data: TreeCheckedChangeData) => {\n // if (props.selectionMode === 'single') {\n // checkedSelectionManager.selectItem(data.value);\n // return;\n // }\n // if (walkerRef.current === null) {\n // return;\n // }\n // const nextSelectedState = !checkedSelectionManager.isSelected(data.value);\n // let treeItemValues = getAllSubTreeItemValues(data).add(data.value);\n // let mixedValues: ImmutableSet<TreeItemValue> = ImmutableSet.empty;\n // walkerRef.current.currentElement = data.event.currentTarget;\n // while (walkerRef.current.parentElement() !== null) {\n // const descendants = Array.from(\n // walkerRef.current.currentElement.querySelectorAll<HTMLElement>('[role=\"treeitem\"]'),\n // ).filter(item => item.getAttribute(dataTreeItemValueAttrName) !== data.value);\n // const isAllSiblingsEqualSelectionState = descendants.every(item => {\n // return (\n // (item.getAttribute('aria-selected') === 'true') === nextSelectedState ||\n // treeItemValues.has(item.getAttribute(dataTreeItemValueAttrName) as TreeItemValue)\n // );\n // });\n // if (isAllSiblingsEqualSelectionState) {\n // treeItemValues = treeItemValues.add(\n // walkerRef.current.currentElement.getAttribute(dataTreeItemValueAttrName) as TreeItemValue,\n // );\n // mixedValues = mixedValues.delete(\n // walkerRef.current.currentElement.getAttribute(dataTreeItemValueAttrName) as TreeItemValue,\n // );\n // } else {\n // treeItemValues = treeItemValues\n // .delete(walkerRef.current.currentElement.getAttribute(dataTreeItemValueAttrName) as TreeItemValue)\n // .add(data.value);\n // mixedValues = mixedValues.add(\n // walkerRef.current.currentElement.getAttribute(dataTreeItemValueAttrName) as TreeItemValue,\n // );\n // }\n // }\n // unstable_batchedUpdates(() => {\n // nextSelectedState\n // ? checkedSelectionManager.selectItems(treeItemValues)\n // : checkedSelectionManager.deselectItems(treeItemValues);\n // let nextMixedSelection = ImmutableSet.create(mixedSelection);\n // for (const value of mixedValues) {\n // nextMixedSelection = nextMixedSelection.add(value);\n // }\n // for (const value of treeItemValues) {\n // nextMixedSelection = nextMixedSelection.delete(value);\n // }\n // setMixedSelection(nextMixedSelection);\n // });\n // });\n // return [checkedSelection, mixedSelection, updateCheckedItems, rootRef] as const;\n // }\n // function getAllSubTreeItemValues(data: TreeCheckedChangeData) {\n // const subTreeItems = Array.from(data.event.currentTarget.querySelectorAll('[role=\"treeitem\"]'));\n // const values = new Set<TreeItemValue>();\n // for (const item of subTreeItems) {\n // values.add(item.getAttribute(dataTreeItemValueAttrName) as TreeItemValue);\n // }\n // return ImmutableSet.dangerouslyCreate(values);\n // }\n"],"names":["useNestedControllableCheckedItems","initializeMap","iterable","map","Map","undefined","ImmutableMap","empty","item","Array","isArray","set","dangerouslyCreate_unstable","props","useControllableState","initialState","state","React","useMemo","checkedItems","defaultState","defaultCheckedItems"],"mappings":";;;;+BAiBgBA;;aAAAA;;;gCAjBqB;6DACd;8BACM;AAC7B,SAASC,cAAcC,QAAQ,EAAE;IAC7B,MAAMC,MAAM,IAAIC;IAChB,IAAIF,aAAaG,WAAW;QACxB,OAAOC,0BAAY,CAACC,KAAK;IAC7B,CAAC;IACD,KAAK,MAAMC,QAAQN,SAAS;QACxB,IAAIO,MAAMC,OAAO,CAACF,OAAO;YACrBL,IAAIQ,GAAG,CAACH,IAAI,CAAC,EAAE,EAAEA,IAAI,CAAC,EAAE;QAC5B,OAAO;YACHL,IAAIQ,GAAG,CAACH,MAAM,IAAI;QACtB,CAAC;IACL;IACA,OAAOF,0BAAY,CAACM,0BAA0B,CAACT;AACnD;AACO,SAASH,kCAAkCa,KAAK,EAAE;IACrD,OAAOC,IAAAA,oCAAoB,EAAC;QACxBC,cAAcT,0BAAY,CAACC,KAAK;QAChCS,OAAOC,OAAMC,OAAO,CAAC,IAAIL,MAAMM,YAAY,IAAIlB,cAAcY,MAAMM,YAAY,GAAG;YAC9EN,MAAMM,YAAY;SACrB;QACDC,cAAc,IAAInB,cAAcY,MAAMQ,mBAAmB;IAC7D;AACJ,EAAE,2HAA2H;CAC5H,0EAA0E;CAC1E,iHAAiH;CACjH,6CAA6C;CAC7C,kEAAkE;CAClE,mCAAmC;CACnC,OAAO;CACP,sFAAsF;CACtF,sDAAsD;CACtD,kDAAkD;CAClD,gEAAgE;CAChE,QAAQ;CACR,uEAAuE;CACvE,wCAAwC;CACxC,mCAAmC;CACnC,qEAAqE;CACrE,4CAA4C;CAC5C,SAAS;CACT,+GAA+G;CAC/G,QAAQ;CACR,mFAAmF;CACnF,8CAA8C;CAC9C,wDAAwD;CACxD,gBAAgB;CAChB,QAAQ;CACR,wCAAwC;CACxC,gBAAgB;CAChB,QAAQ;CACR,iFAAiF;CACjF,0EAA0E;CAC1E,yEAAyE;CACzE,mEAAmE;CACnE,2DAA2D;CAC3D,wCAAwC;CACxC,+FAA+F;CAC/F,uFAAuF;CACvF,6EAA6E;CAC7E,mBAAmB;CACnB,qFAAqF;CACrF,8FAA8F;CAC9F,aAAa;CACb,YAAY;CACZ,gDAAgD;CAChD,+CAA+C;CAC/C,uGAAuG;CACvG,aAAa;CACb,4CAA4C;CAC5C,uGAAuG;CACvG,aAAa;CACb,iBAAiB;CACjB,0CAA0C;CAC1C,+GAA+G;CAC/G,8BAA8B;CAC9B,yCAAyC;CACzC,uGAAuG;CACvG,aAAa;CACb,UAAU;CACV,QAAQ;CACR,sCAAsC;CACtC,0BAA0B;CAC1B,gEAAgE;CAChE,mEAAmE;CACnE,sEAAsE;CACtE,2CAA2C;CAC3C,8DAA8D;CAC9D,UAAU;CACV,8CAA8C;CAC9C,iEAAiE;CACjE,UAAU;CACV,+CAA+C;CAC/C,UAAU;CACV,QAAQ;CACR,qFAAqF;CACrF,IAAI;CACJ,kEAAkE;CAClE,qGAAqG;CACrG,6CAA6C;CAC7C,uCAAuC;CACvC,iFAAiF;CACjF,MAAM;CACN,mDAAmD;CACnD,IAAI"}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "ImmutableMap", {
6
+ enumerable: true,
7
+ get: ()=>ImmutableMap
8
+ });
9
+ const emptyImmutableMap = createImmutableMap();
10
+ /**
11
+ * properly creates an ImmutableMap instance from an iterable
12
+ */ function createImmutableMap(iterable) {
13
+ const internalMap = new Map(iterable);
14
+ return dangerouslyCreateImmutableMap(internalMap);
15
+ }
16
+ /**
17
+ * Avoid using *dangerouslyCreateImmutableMap*, since this method will expose internally used set, use createImmutableMap instead,
18
+ * @param internalMap - a set that is used internally to store values.
19
+ */ function dangerouslyCreateImmutableMap(internalMap) {
20
+ return {
21
+ size: internalMap.size,
22
+ set: (key, value)=>{
23
+ const nextSet = new Map(internalMap);
24
+ nextSet.set(key, value);
25
+ return dangerouslyCreateImmutableMap(nextSet);
26
+ },
27
+ get: (key)=>internalMap.get(key),
28
+ clear: ()=>emptyImmutableMap,
29
+ delete (value) {
30
+ const nextSet = new Map(internalMap);
31
+ nextSet.delete(value);
32
+ return dangerouslyCreateImmutableMap(nextSet);
33
+ },
34
+ has: (value)=>internalMap.has(value),
35
+ [Symbol.iterator]: ()=>internalMap[Symbol.iterator](),
36
+ // eslint-disable-next-line @typescript-eslint/naming-convention
37
+ dangerouslyGetInternalMap_unstable: ()=>internalMap
38
+ };
39
+ }
40
+ const ImmutableMap = {
41
+ empty: emptyImmutableMap,
42
+ create: createImmutableMap,
43
+ // eslint-disable-next-line @typescript-eslint/naming-convention
44
+ dangerouslyCreate_unstable: dangerouslyCreateImmutableMap
45
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["ImmutableMap.js"],"sourcesContent":["const emptyImmutableMap = createImmutableMap();\n/**\n * properly creates an ImmutableMap instance from an iterable\n */ function createImmutableMap(iterable) {\n const internalMap = new Map(iterable);\n return dangerouslyCreateImmutableMap(internalMap);\n}\n/**\n * Avoid using *dangerouslyCreateImmutableMap*, since this method will expose internally used set, use createImmutableMap instead,\n * @param internalMap - a set that is used internally to store values.\n */ function dangerouslyCreateImmutableMap(internalMap) {\n return {\n size: internalMap.size,\n set: (key, value)=>{\n const nextSet = new Map(internalMap);\n nextSet.set(key, value);\n return dangerouslyCreateImmutableMap(nextSet);\n },\n get: (key)=>internalMap.get(key),\n clear: ()=>emptyImmutableMap,\n delete (value) {\n const nextSet = new Map(internalMap);\n nextSet.delete(value);\n return dangerouslyCreateImmutableMap(nextSet);\n },\n has: (value)=>internalMap.has(value),\n [Symbol.iterator]: ()=>internalMap[Symbol.iterator](),\n // eslint-disable-next-line @typescript-eslint/naming-convention\n dangerouslyGetInternalMap_unstable: ()=>internalMap\n };\n}\nexport const ImmutableMap = {\n empty: emptyImmutableMap,\n create: createImmutableMap,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n dangerouslyCreate_unstable: dangerouslyCreateImmutableMap\n};\n"],"names":["ImmutableMap","emptyImmutableMap","createImmutableMap","iterable","internalMap","Map","dangerouslyCreateImmutableMap","size","set","key","value","nextSet","get","clear","delete","has","Symbol","iterator","dangerouslyGetInternalMap_unstable","empty","create","dangerouslyCreate_unstable"],"mappings":";;;;+BA+BaA;;aAAAA;;AA/Bb,MAAMC,oBAAoBC;AAC1B;;CAEC,GAAG,SAASA,mBAAmBC,QAAQ,EAAE;IACtC,MAAMC,cAAc,IAAIC,IAAIF;IAC5B,OAAOG,8BAA8BF;AACzC;AACA;;;CAGC,GAAG,SAASE,8BAA8BF,WAAW,EAAE;IACpD,OAAO;QACHG,MAAMH,YAAYG,IAAI;QACtBC,KAAK,CAACC,KAAKC,QAAQ;YACf,MAAMC,UAAU,IAAIN,IAAID;YACxBO,QAAQH,GAAG,CAACC,KAAKC;YACjB,OAAOJ,8BAA8BK;QACzC;QACAC,KAAK,CAACH,MAAML,YAAYQ,GAAG,CAACH;QAC5BI,OAAO,IAAIZ;QACXa,QAAQJ,KAAK,EAAE;YACX,MAAMC,UAAU,IAAIN,IAAID;YACxBO,QAAQG,MAAM,CAACJ;YACf,OAAOJ,8BAA8BK;QACzC;QACAI,KAAK,CAACL,QAAQN,YAAYW,GAAG,CAACL;QAC9B,CAACM,OAAOC,QAAQ,CAAC,EAAE,IAAIb,WAAW,CAACY,OAAOC,QAAQ,CAAC;QACnD,gEAAgE;QAChEC,oCAAoC,IAAId;IAC5C;AACJ;AACO,MAAMJ,eAAe;IACxBmB,OAAOlB;IACPmB,QAAQlB;IACR,gEAAgE;IAChEmB,4BAA4Bf;AAChC"}
@@ -33,7 +33,7 @@ const emptyImmutableSet = createImmutableSet();
33
33
  return internalSet[Symbol.iterator]();
34
34
  },
35
35
  // eslint-disable-next-line @typescript-eslint/naming-convention
36
- dangerousGetInternalSet_unstable: ()=>internalSet
36
+ dangerouslyGetInternalSet_unstable: ()=>internalSet
37
37
  };
38
38
  }
39
39
  /**
@@ -45,5 +45,6 @@ const emptyImmutableSet = createImmutableSet();
45
45
  const ImmutableSet = {
46
46
  empty: emptyImmutableSet,
47
47
  create: createImmutableSet,
48
- dangerouslyCreate: dangerouslyCreateImmutableSet
48
+ // eslint-disable-next-line @typescript-eslint/naming-convention
49
+ dangerouslyCreate_unstable: dangerouslyCreateImmutableSet
49
50
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["ImmutableSet.js"],"sourcesContent":["const emptyImmutableSet = createImmutableSet();\n/**\n * Avoid using *dangerouslyCreateImmutableSet*, since this method will expose internally used set, use createImmutableSet instead,\n * @param internalSet - a set that is used internally to store values.\n */ function dangerouslyCreateImmutableSet(internalSet) {\n return {\n size: internalSet.size,\n add (value) {\n const nextSet = new Set(internalSet);\n nextSet.add(value);\n return dangerouslyCreateImmutableSet(nextSet);\n },\n clear () {\n return emptyImmutableSet;\n },\n delete (value) {\n const nextSet = new Set(internalSet);\n nextSet.delete(value);\n return dangerouslyCreateImmutableSet(nextSet);\n },\n has (value) {\n return internalSet.has(value);\n },\n [Symbol.iterator] () {\n return internalSet[Symbol.iterator]();\n },\n // eslint-disable-next-line @typescript-eslint/naming-convention\n dangerousGetInternalSet_unstable: ()=>internalSet\n };\n}\n/**\n * properly creates an ImmutableSet instance from an iterable\n */ function createImmutableSet(iterable) {\n const internalSet = new Set(iterable);\n return dangerouslyCreateImmutableSet(internalSet);\n}\nexport const ImmutableSet = {\n empty: emptyImmutableSet,\n create: createImmutableSet,\n dangerouslyCreate: dangerouslyCreateImmutableSet\n};\n"],"names":["ImmutableSet","emptyImmutableSet","createImmutableSet","dangerouslyCreateImmutableSet","internalSet","size","add","value","nextSet","Set","clear","delete","has","Symbol","iterator","dangerousGetInternalSet_unstable","iterable","empty","create","dangerouslyCreate"],"mappings":";;;;+BAoCaA;;aAAAA;;AApCb,MAAMC,oBAAoBC;AAC1B;;;CAGC,GAAG,SAASC,8BAA8BC,WAAW,EAAE;IACpD,OAAO;QACHC,MAAMD,YAAYC,IAAI;QACtBC,KAAKC,KAAK,EAAE;YACR,MAAMC,UAAU,IAAIC,IAAIL;YACxBI,QAAQF,GAAG,CAACC;YACZ,OAAOJ,8BAA8BK;QACzC;QACAE,SAAS;YACL,OAAOT;QACX;QACAU,QAAQJ,KAAK,EAAE;YACX,MAAMC,UAAU,IAAIC,IAAIL;YACxBI,QAAQG,MAAM,CAACJ;YACf,OAAOJ,8BAA8BK;QACzC;QACAI,KAAKL,KAAK,EAAE;YACR,OAAOH,YAAYQ,GAAG,CAACL;QAC3B;QACA,CAACM,OAAOC,QAAQ,CAAC,IAAI;YACjB,OAAOV,WAAW,CAACS,OAAOC,QAAQ,CAAC;QACvC;QACA,gEAAgE;QAChEC,kCAAkC,IAAIX;IAC1C;AACJ;AACA;;CAEC,GAAG,SAASF,mBAAmBc,QAAQ,EAAE;IACtC,MAAMZ,cAAc,IAAIK,IAAIO;IAC5B,OAAOb,8BAA8BC;AACzC;AACO,MAAMJ,eAAe;IACxBiB,OAAOhB;IACPiB,QAAQhB;IACRiB,mBAAmBhB;AACvB"}
1
+ {"version":3,"sources":["ImmutableSet.js"],"sourcesContent":["const emptyImmutableSet = createImmutableSet();\n/**\n * Avoid using *dangerouslyCreateImmutableSet*, since this method will expose internally used set, use createImmutableSet instead,\n * @param internalSet - a set that is used internally to store values.\n */ function dangerouslyCreateImmutableSet(internalSet) {\n return {\n size: internalSet.size,\n add (value) {\n const nextSet = new Set(internalSet);\n nextSet.add(value);\n return dangerouslyCreateImmutableSet(nextSet);\n },\n clear () {\n return emptyImmutableSet;\n },\n delete (value) {\n const nextSet = new Set(internalSet);\n nextSet.delete(value);\n return dangerouslyCreateImmutableSet(nextSet);\n },\n has (value) {\n return internalSet.has(value);\n },\n [Symbol.iterator] () {\n return internalSet[Symbol.iterator]();\n },\n // eslint-disable-next-line @typescript-eslint/naming-convention\n dangerouslyGetInternalSet_unstable: ()=>internalSet\n };\n}\n/**\n * properly creates an ImmutableSet instance from an iterable\n */ function createImmutableSet(iterable) {\n const internalSet = new Set(iterable);\n return dangerouslyCreateImmutableSet(internalSet);\n}\nexport const ImmutableSet = {\n empty: emptyImmutableSet,\n create: createImmutableSet,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n dangerouslyCreate_unstable: dangerouslyCreateImmutableSet\n};\n"],"names":["ImmutableSet","emptyImmutableSet","createImmutableSet","dangerouslyCreateImmutableSet","internalSet","size","add","value","nextSet","Set","clear","delete","has","Symbol","iterator","dangerouslyGetInternalSet_unstable","iterable","empty","create","dangerouslyCreate_unstable"],"mappings":";;;;+BAoCaA;;aAAAA;;AApCb,MAAMC,oBAAoBC;AAC1B;;;CAGC,GAAG,SAASC,8BAA8BC,WAAW,EAAE;IACpD,OAAO;QACHC,MAAMD,YAAYC,IAAI;QACtBC,KAAKC,KAAK,EAAE;YACR,MAAMC,UAAU,IAAIC,IAAIL;YACxBI,QAAQF,GAAG,CAACC;YACZ,OAAOJ,8BAA8BK;QACzC;QACAE,SAAS;YACL,OAAOT;QACX;QACAU,QAAQJ,KAAK,EAAE;YACX,MAAMC,UAAU,IAAIC,IAAIL;YACxBI,QAAQG,MAAM,CAACJ;YACf,OAAOJ,8BAA8BK;QACzC;QACAI,KAAKL,KAAK,EAAE;YACR,OAAOH,YAAYQ,GAAG,CAACL;QAC3B;QACA,CAACM,OAAOC,QAAQ,CAAC,IAAI;YACjB,OAAOV,WAAW,CAACS,OAAOC,QAAQ,CAAC;QACvC;QACA,gEAAgE;QAChEC,oCAAoC,IAAIX;IAC5C;AACJ;AACA;;CAEC,GAAG,SAASF,mBAAmBc,QAAQ,EAAE;IACtC,MAAMZ,cAAc,IAAIK,IAAIO;IAC5B,OAAOb,8BAA8BC;AACzC;AACO,MAAMJ,eAAe;IACxBiB,OAAOhB;IACPiB,QAAQhB;IACR,gEAAgE;IAChEiB,4BAA4BhB;AAChC"}
@@ -13,8 +13,7 @@ function _export(target, all) {
13
13
  }
14
14
  _export(exports, {
15
15
  createFlatTreeItems: ()=>createFlatTreeItems,
16
- flatTreeRootId: ()=>flatTreeRootId,
17
- VisibleFlatTreeItemGenerator: ()=>VisibleFlatTreeItemGenerator
16
+ flatTreeRootId: ()=>flatTreeRootId
18
17
  });
19
18
  function createFlatTreeItems(flatTreeItemProps) {
20
19
  const root = createFlatTreeRootItem();
@@ -40,30 +39,38 @@ function createFlatTreeItems(flatTreeItemProps) {
40
39
  const itemType = (_treeItemProps_itemType = treeItemProps.itemType) !== null && _treeItemProps_itemType !== void 0 ? _treeItemProps_itemType : treeItemProps.value === undefined || (nextItemProps === null || nextItemProps === void 0 ? void 0 : nextItemProps.parentValue) !== treeItemProps.value ? 'leaf' : 'branch';
41
40
  var _currentParent_level;
42
41
  const currentLevel = ((_currentParent_level = currentParent.level) !== null && _currentParent_level !== void 0 ? _currentParent_level : 0) + 1;
43
- const currentChildrenSize = ++currentParent.childrenSize;
44
42
  const flatTreeItem = {
45
43
  value: treeItemProps.value,
46
44
  getTreeItemProps: ()=>({
47
45
  ...treeItemProps,
48
46
  'aria-level': currentLevel,
49
47
  'aria-posinset': currentChildrenSize,
50
- 'aria-setsize': currentParent.childrenSize,
48
+ 'aria-setsize': currentParent.childrenValues.length,
51
49
  itemType
52
50
  }),
53
51
  level: currentLevel,
54
52
  parentValue,
55
- childrenSize: 0,
53
+ childrenValues: [],
56
54
  index: -1
57
55
  };
56
+ const currentChildrenSize = currentParent.childrenValues.push(flatTreeItem.value);
58
57
  itemsPerValue.set(flatTreeItem.value, flatTreeItem);
59
58
  items.push(flatTreeItem);
60
59
  }
60
+ var _itemsPerValue_get_parentValue, _itemsPerValue_get;
61
61
  const flatTreeItems = {
62
62
  root,
63
63
  size: items.length,
64
64
  getByIndex: (index)=>items[index],
65
+ getParent: (key)=>{
66
+ var _itemsPerValue_get1;
67
+ return (_itemsPerValue_get = itemsPerValue.get((_itemsPerValue_get_parentValue = (_itemsPerValue_get1 = itemsPerValue.get(key)) === null || _itemsPerValue_get1 === void 0 ? void 0 : _itemsPerValue_get1.parentValue) !== null && _itemsPerValue_get_parentValue !== void 0 ? _itemsPerValue_get_parentValue : root.value)) !== null && _itemsPerValue_get !== void 0 ? _itemsPerValue_get : root;
68
+ },
65
69
  get: (key)=>itemsPerValue.get(key),
66
- set: (key, value)=>itemsPerValue.set(key, value)
70
+ subtree: (key)=>FlatTreeSubtreeGenerator(key, flatTreeItems),
71
+ children: (key)=>FlatTreeChildrenGenerator(key, flatTreeItems),
72
+ ancestors: (key)=>FlatTreeAncestorsGenerator(key, flatTreeItems),
73
+ visibleItems: (openItems)=>VisibleFlatTreeItemGenerator(openItems, flatTreeItems)
67
74
  };
68
75
  return flatTreeItems;
69
76
  }
@@ -86,7 +93,7 @@ function createFlatTreeRootItem() {
86
93
  itemType: 'branch'
87
94
  };
88
95
  },
89
- childrenSize: 0,
96
+ childrenValues: [],
90
97
  get index () {
91
98
  if (process.env.NODE_ENV !== 'production') {
92
99
  // eslint-disable-next-line no-console
@@ -97,6 +104,51 @@ function createFlatTreeRootItem() {
97
104
  level: 0
98
105
  };
99
106
  }
107
+ /**
108
+ * Generator that returns all subtree of a given flat tree item
109
+ * @param key the key of the item to get the subtree from
110
+ */ // eslint-disable-next-line @typescript-eslint/naming-convention
111
+ function* FlatTreeSubtreeGenerator(key, flatTreeItems) {
112
+ const item = flatTreeItems.get(key);
113
+ if (!item || item.childrenValues.length === 0) {
114
+ return [];
115
+ }
116
+ let counter = item.childrenValues.length;
117
+ let index = item.index;
118
+ while(counter > 0){
119
+ const children = flatTreeItems.getByIndex(++index);
120
+ yield children;
121
+ counter += children.childrenValues.length - 1;
122
+ }
123
+ }
124
+ /**
125
+ * Generator that returns all children of a given flat tree item
126
+ * @param key the key of the item to get the children from
127
+ */ // eslint-disable-next-line @typescript-eslint/naming-convention
128
+ function* FlatTreeChildrenGenerator(key, flatTreeItems) {
129
+ const item = flatTreeItems.get(key);
130
+ if (!item || item.childrenValues.length === 0) {
131
+ return;
132
+ }
133
+ for (const childValue of item.childrenValues){
134
+ yield flatTreeItems.get(childValue);
135
+ }
136
+ }
137
+ /**
138
+ * Generator that returns all ancestors of a given flat tree item
139
+ * @param key the key of the item to get the children from
140
+ */ // eslint-disable-next-line @typescript-eslint/naming-convention
141
+ function* FlatTreeAncestorsGenerator(key, flatTreeItems) {
142
+ let parent = flatTreeItems.getParent(key);
143
+ while(parent !== flatTreeItems.root){
144
+ yield parent;
145
+ parent = flatTreeItems.getParent(parent.value);
146
+ }
147
+ }
148
+ /**
149
+ * Generator that returns all visible items of a given flat tree
150
+ * @param openItems the open items of the tree
151
+ */ // eslint-disable-next-line @typescript-eslint/naming-convention
100
152
  function* VisibleFlatTreeItemGenerator(openItems, flatTreeItems) {
101
153
  for(let index = 0, visibleIndex = 0; index < flatTreeItems.size; index++){
102
154
  const item = flatTreeItems.getByIndex(index);
@@ -105,7 +157,7 @@ function* VisibleFlatTreeItemGenerator(openItems, flatTreeItems) {
105
157
  yield item;
106
158
  } else {
107
159
  // Jump the amount of children the current item has, since those items will also be hidden
108
- index += item.childrenSize;
160
+ index += item.childrenValues.length;
109
161
  }
110
162
  }
111
163
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["createFlatTreeItems.js"],"sourcesContent":["/**\n * creates a list of flat tree items\n * and provides a map to access each item by id\n */ export function createFlatTreeItems(flatTreeItemProps) {\n const root = createFlatTreeRootItem();\n const itemsPerValue = new Map([\n [\n root.value,\n root\n ]\n ]);\n const items = [];\n for(let index = 0; index < flatTreeItemProps.length; index++){\n const { parentValue =flatTreeRootId , ...treeItemProps } = flatTreeItemProps[index];\n const nextItemProps = flatTreeItemProps[index + 1];\n const currentParent = itemsPerValue.get(parentValue);\n if (!currentParent) {\n if (process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.error(`useFlatTree: item ${flatTreeItemProps[index].value} is wrongly positioned, did you properly ordered provided item props? make sure provided items are organized`);\n }\n break;\n }\n var _treeItemProps_itemType;\n const itemType = (_treeItemProps_itemType = treeItemProps.itemType) !== null && _treeItemProps_itemType !== void 0 ? _treeItemProps_itemType : treeItemProps.value === undefined || (nextItemProps === null || nextItemProps === void 0 ? void 0 : nextItemProps.parentValue) !== treeItemProps.value ? 'leaf' : 'branch';\n var _currentParent_level;\n const currentLevel = ((_currentParent_level = currentParent.level) !== null && _currentParent_level !== void 0 ? _currentParent_level : 0) + 1;\n const currentChildrenSize = ++currentParent.childrenSize;\n const flatTreeItem = {\n value: treeItemProps.value,\n getTreeItemProps: ()=>({\n ...treeItemProps,\n 'aria-level': currentLevel,\n 'aria-posinset': currentChildrenSize,\n 'aria-setsize': currentParent.childrenSize,\n itemType\n }),\n level: currentLevel,\n parentValue,\n childrenSize: 0,\n index: -1\n };\n itemsPerValue.set(flatTreeItem.value, flatTreeItem);\n items.push(flatTreeItem);\n }\n const flatTreeItems = {\n root,\n size: items.length,\n getByIndex: (index)=>items[index],\n get: (key)=>itemsPerValue.get(key),\n set: (key, value)=>itemsPerValue.set(key, value)\n };\n return flatTreeItems;\n}\nexport const flatTreeRootId = '__fuiFlatTreeRoot';\nfunction createFlatTreeRootItem() {\n return {\n parentValue: undefined,\n value: flatTreeRootId,\n getTreeItemProps: ()=>{\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.error('useFlatTree: internal error, trying to access treeitem props from invalid root element');\n }\n return {\n id: flatTreeRootId,\n value: flatTreeRootId,\n 'aria-setsize': -1,\n 'aria-level': -1,\n 'aria-posinset': -1,\n itemType: 'branch'\n };\n },\n childrenSize: 0,\n get index () {\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.error('useFlatTree: internal error, trying to access treeitem props from invalid root element');\n }\n return -1;\n },\n level: 0\n };\n}\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function* VisibleFlatTreeItemGenerator(openItems, flatTreeItems) {\n for(let index = 0, visibleIndex = 0; index < flatTreeItems.size; index++){\n const item = flatTreeItems.getByIndex(index);\n if (isItemVisible(item, openItems, flatTreeItems)) {\n item.index = visibleIndex++;\n yield item;\n } else {\n // Jump the amount of children the current item has, since those items will also be hidden\n index += item.childrenSize;\n }\n }\n}\nfunction isItemVisible(item, openItems, flatTreeItems) {\n if (item.level === 1) {\n return true;\n }\n while(item.parentValue && item.parentValue !== flatTreeItems.root.value){\n if (!openItems.has(item.parentValue)) {\n return false;\n }\n const parent = flatTreeItems.get(item.parentValue);\n if (!parent) {\n return false;\n }\n item = parent;\n }\n return true;\n}\n"],"names":["createFlatTreeItems","flatTreeRootId","VisibleFlatTreeItemGenerator","flatTreeItemProps","root","createFlatTreeRootItem","itemsPerValue","Map","value","items","index","length","parentValue","treeItemProps","nextItemProps","currentParent","get","process","env","NODE_ENV","console","error","_treeItemProps_itemType","itemType","undefined","_currentParent_level","currentLevel","level","currentChildrenSize","childrenSize","flatTreeItem","getTreeItemProps","set","push","flatTreeItems","size","getByIndex","key","id","openItems","visibleIndex","item","isItemVisible","has","parent"],"mappings":"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"}
1
+ {"version":3,"sources":["createFlatTreeItems.js"],"sourcesContent":["/**\n * creates a list of flat tree items\n * and provides a map to access each item by id\n */ export function createFlatTreeItems(flatTreeItemProps) {\n const root = createFlatTreeRootItem();\n const itemsPerValue = new Map([\n [\n root.value,\n root\n ]\n ]);\n const items = [];\n for(let index = 0; index < flatTreeItemProps.length; index++){\n const { parentValue =flatTreeRootId , ...treeItemProps } = flatTreeItemProps[index];\n const nextItemProps = flatTreeItemProps[index + 1];\n const currentParent = itemsPerValue.get(parentValue);\n if (!currentParent) {\n if (process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.error(`useFlatTree: item ${flatTreeItemProps[index].value} is wrongly positioned, did you properly ordered provided item props? make sure provided items are organized`);\n }\n break;\n }\n var _treeItemProps_itemType;\n const itemType = (_treeItemProps_itemType = treeItemProps.itemType) !== null && _treeItemProps_itemType !== void 0 ? _treeItemProps_itemType : treeItemProps.value === undefined || (nextItemProps === null || nextItemProps === void 0 ? void 0 : nextItemProps.parentValue) !== treeItemProps.value ? 'leaf' : 'branch';\n var _currentParent_level;\n const currentLevel = ((_currentParent_level = currentParent.level) !== null && _currentParent_level !== void 0 ? _currentParent_level : 0) + 1;\n const flatTreeItem = {\n value: treeItemProps.value,\n getTreeItemProps: ()=>({\n ...treeItemProps,\n 'aria-level': currentLevel,\n 'aria-posinset': currentChildrenSize,\n 'aria-setsize': currentParent.childrenValues.length,\n itemType\n }),\n level: currentLevel,\n parentValue,\n childrenValues: [],\n index: -1\n };\n const currentChildrenSize = currentParent.childrenValues.push(flatTreeItem.value);\n itemsPerValue.set(flatTreeItem.value, flatTreeItem);\n items.push(flatTreeItem);\n }\n var _itemsPerValue_get_parentValue, _itemsPerValue_get;\n const flatTreeItems = {\n root,\n size: items.length,\n getByIndex: (index)=>items[index],\n getParent: (key)=>{\n var _itemsPerValue_get1;\n return (_itemsPerValue_get = itemsPerValue.get((_itemsPerValue_get_parentValue = (_itemsPerValue_get1 = itemsPerValue.get(key)) === null || _itemsPerValue_get1 === void 0 ? void 0 : _itemsPerValue_get1.parentValue) !== null && _itemsPerValue_get_parentValue !== void 0 ? _itemsPerValue_get_parentValue : root.value)) !== null && _itemsPerValue_get !== void 0 ? _itemsPerValue_get : root;\n },\n get: (key)=>itemsPerValue.get(key),\n subtree: (key)=>FlatTreeSubtreeGenerator(key, flatTreeItems),\n children: (key)=>FlatTreeChildrenGenerator(key, flatTreeItems),\n ancestors: (key)=>FlatTreeAncestorsGenerator(key, flatTreeItems),\n visibleItems: (openItems)=>VisibleFlatTreeItemGenerator(openItems, flatTreeItems)\n };\n return flatTreeItems;\n}\nexport const flatTreeRootId = '__fuiFlatTreeRoot';\nfunction createFlatTreeRootItem() {\n return {\n parentValue: undefined,\n value: flatTreeRootId,\n getTreeItemProps: ()=>{\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.error('useFlatTree: internal error, trying to access treeitem props from invalid root element');\n }\n return {\n id: flatTreeRootId,\n value: flatTreeRootId,\n 'aria-setsize': -1,\n 'aria-level': -1,\n 'aria-posinset': -1,\n itemType: 'branch'\n };\n },\n childrenValues: [],\n get index () {\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.error('useFlatTree: internal error, trying to access treeitem props from invalid root element');\n }\n return -1;\n },\n level: 0\n };\n}\n/**\n * Generator that returns all subtree of a given flat tree item\n * @param key the key of the item to get the subtree from\n */ // eslint-disable-next-line @typescript-eslint/naming-convention\nfunction* FlatTreeSubtreeGenerator(key, flatTreeItems) {\n const item = flatTreeItems.get(key);\n if (!item || item.childrenValues.length === 0) {\n return [];\n }\n let counter = item.childrenValues.length;\n let index = item.index;\n while(counter > 0){\n const children = flatTreeItems.getByIndex(++index);\n yield children;\n counter += children.childrenValues.length - 1;\n }\n}\n/**\n * Generator that returns all children of a given flat tree item\n * @param key the key of the item to get the children from\n */ // eslint-disable-next-line @typescript-eslint/naming-convention\nfunction* FlatTreeChildrenGenerator(key, flatTreeItems) {\n const item = flatTreeItems.get(key);\n if (!item || item.childrenValues.length === 0) {\n return;\n }\n for (const childValue of item.childrenValues){\n yield flatTreeItems.get(childValue);\n }\n}\n/**\n * Generator that returns all ancestors of a given flat tree item\n * @param key the key of the item to get the children from\n */ // eslint-disable-next-line @typescript-eslint/naming-convention\nfunction* FlatTreeAncestorsGenerator(key, flatTreeItems) {\n let parent = flatTreeItems.getParent(key);\n while(parent !== flatTreeItems.root){\n yield parent;\n parent = flatTreeItems.getParent(parent.value);\n }\n}\n/**\n * Generator that returns all visible items of a given flat tree\n * @param openItems the open items of the tree\n */ // eslint-disable-next-line @typescript-eslint/naming-convention\nfunction* VisibleFlatTreeItemGenerator(openItems, flatTreeItems) {\n for(let index = 0, visibleIndex = 0; index < flatTreeItems.size; index++){\n const item = flatTreeItems.getByIndex(index);\n if (isItemVisible(item, openItems, flatTreeItems)) {\n item.index = visibleIndex++;\n yield item;\n } else {\n // Jump the amount of children the current item has, since those items will also be hidden\n index += item.childrenValues.length;\n }\n }\n}\nfunction isItemVisible(item, openItems, flatTreeItems) {\n if (item.level === 1) {\n return true;\n }\n while(item.parentValue && item.parentValue !== flatTreeItems.root.value){\n if (!openItems.has(item.parentValue)) {\n return false;\n }\n const parent = flatTreeItems.get(item.parentValue);\n if (!parent) {\n return false;\n }\n item = parent;\n }\n return true;\n}\n"],"names":["createFlatTreeItems","flatTreeRootId","flatTreeItemProps","root","createFlatTreeRootItem","itemsPerValue","Map","value","items","index","length","parentValue","treeItemProps","nextItemProps","currentParent","get","process","env","NODE_ENV","console","error","_treeItemProps_itemType","itemType","undefined","_currentParent_level","currentLevel","level","flatTreeItem","getTreeItemProps","currentChildrenSize","childrenValues","push","set","_itemsPerValue_get_parentValue","_itemsPerValue_get","flatTreeItems","size","getByIndex","getParent","key","_itemsPerValue_get1","subtree","FlatTreeSubtreeGenerator","children","FlatTreeChildrenGenerator","ancestors","FlatTreeAncestorsGenerator","visibleItems","openItems","VisibleFlatTreeItemGenerator","id","item","counter","childValue","parent","visibleIndex","isItemVisible","has"],"mappings":"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"}