@fluentui/react-tree 9.0.0-beta.24 → 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 (109) hide show
  1. package/CHANGELOG.json +118 -1
  2. package/CHANGELOG.md +32 -2
  3. package/dist/index.d.ts +192 -52
  4. package/lib/components/Tree/Tree.types.js +1 -1
  5. package/lib/components/Tree/Tree.types.js.map +1 -1
  6. package/lib/components/Tree/useRootTree.js +71 -73
  7. package/lib/components/Tree/useRootTree.js.map +1 -1
  8. package/lib/components/Tree/useSubtree.js +4 -0
  9. package/lib/components/Tree/useSubtree.js.map +1 -1
  10. package/lib/components/Tree/useTreeContextValues.js +4 -2
  11. package/lib/components/Tree/useTreeContextValues.js.map +1 -1
  12. package/lib/components/TreeItem/TreeItem.types.js.map +1 -1
  13. package/lib/components/TreeItem/renderTreeItem.js +4 -2
  14. package/lib/components/TreeItem/renderTreeItem.js.map +1 -1
  15. package/lib/components/TreeItem/useTreeItem.js +104 -18
  16. package/lib/components/TreeItem/useTreeItem.js.map +1 -1
  17. package/lib/components/TreeItem/useTreeItemContextValues.js +15 -6
  18. package/lib/components/TreeItem/useTreeItemContextValues.js.map +1 -1
  19. package/lib/components/TreeItemLayout/TreeItemLayout.types.js.map +1 -1
  20. package/lib/components/TreeItemLayout/renderTreeItemLayout.js +1 -1
  21. package/lib/components/TreeItemLayout/renderTreeItemLayout.js.map +1 -1
  22. package/lib/components/TreeItemLayout/useTreeItemLayout.js +14 -30
  23. package/lib/components/TreeItemLayout/useTreeItemLayout.js.map +1 -1
  24. package/lib/components/TreeItemLayout/useTreeItemLayoutStyles.styles.js +15 -8
  25. package/lib/components/TreeItemLayout/useTreeItemLayoutStyles.styles.js.map +1 -1
  26. package/lib/components/TreeItemPersonaLayout/TreeItemPersonaLayout.types.js.map +1 -1
  27. package/lib/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js.map +1 -1
  28. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js.map +1 -1
  29. package/lib/contexts/index.js +1 -0
  30. package/lib/contexts/index.js.map +1 -1
  31. package/lib/contexts/treeContext.js +5 -2
  32. package/lib/contexts/treeContext.js.map +1 -1
  33. package/lib/contexts/treeItemContext.js +0 -4
  34. package/lib/contexts/treeItemContext.js.map +1 -1
  35. package/lib/contexts/treeItemSlotsContext.js +9 -0
  36. package/lib/contexts/treeItemSlotsContext.js.map +1 -0
  37. package/lib/hooks/index.js +3 -1
  38. package/lib/hooks/index.js.map +1 -1
  39. package/lib/hooks/useControllableOpenItems.js +25 -0
  40. package/lib/hooks/useControllableOpenItems.js.map +1 -0
  41. package/lib/hooks/useFlatControllableCheckedItems.js +76 -0
  42. package/lib/hooks/useFlatControllableCheckedItems.js.map +1 -0
  43. package/lib/hooks/useFlatTree.js +17 -6
  44. package/lib/hooks/useFlatTree.js.map +1 -1
  45. package/lib/hooks/useNestedControllableCheckedItems.js +107 -0
  46. package/lib/hooks/useNestedControllableCheckedItems.js.map +1 -0
  47. package/lib/index.js.map +1 -1
  48. package/lib/utils/ImmutableMap.js +37 -0
  49. package/lib/utils/ImmutableMap.js.map +1 -0
  50. package/lib/utils/ImmutableSet.js +17 -9
  51. package/lib/utils/ImmutableSet.js.map +1 -1
  52. package/lib/utils/createFlatTreeItems.js +60 -8
  53. package/lib/utils/createFlatTreeItems.js.map +1 -1
  54. package/lib/utils/flattenTree.js +0 -5
  55. package/lib/utils/flattenTree.js.map +1 -1
  56. package/lib/utils/tokens.js +2 -1
  57. package/lib/utils/tokens.js.map +1 -1
  58. package/lib-commonjs/components/Tree/Tree.types.js +0 -2
  59. package/lib-commonjs/components/Tree/Tree.types.js.map +1 -1
  60. package/lib-commonjs/components/Tree/useRootTree.js +70 -72
  61. package/lib-commonjs/components/Tree/useRootTree.js.map +1 -1
  62. package/lib-commonjs/components/Tree/useSubtree.js +4 -0
  63. package/lib-commonjs/components/Tree/useSubtree.js.map +1 -1
  64. package/lib-commonjs/components/Tree/useTreeContextValues.js +4 -2
  65. package/lib-commonjs/components/Tree/useTreeContextValues.js.map +1 -1
  66. package/lib-commonjs/components/TreeItem/renderTreeItem.js +3 -1
  67. package/lib-commonjs/components/TreeItem/renderTreeItem.js.map +1 -1
  68. package/lib-commonjs/components/TreeItem/useTreeItem.js +103 -17
  69. package/lib-commonjs/components/TreeItem/useTreeItem.js.map +1 -1
  70. package/lib-commonjs/components/TreeItem/useTreeItemContextValues.js +16 -6
  71. package/lib-commonjs/components/TreeItem/useTreeItemContextValues.js.map +1 -1
  72. package/lib-commonjs/components/TreeItemLayout/renderTreeItemLayout.js +1 -1
  73. package/lib-commonjs/components/TreeItemLayout/renderTreeItemLayout.js.map +1 -1
  74. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayout.js +14 -29
  75. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayout.js.map +1 -1
  76. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayoutStyles.styles.js +12 -8
  77. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayoutStyles.styles.js.map +1 -1
  78. package/lib-commonjs/contexts/index.js +1 -0
  79. package/lib-commonjs/contexts/index.js.map +1 -1
  80. package/lib-commonjs/contexts/treeContext.js +4 -1
  81. package/lib-commonjs/contexts/treeContext.js.map +1 -1
  82. package/lib-commonjs/contexts/treeItemContext.js +0 -4
  83. package/lib-commonjs/contexts/treeItemContext.js.map +1 -1
  84. package/lib-commonjs/contexts/treeItemSlotsContext.js +25 -0
  85. package/lib-commonjs/contexts/treeItemSlotsContext.js.map +1 -0
  86. package/lib-commonjs/hooks/index.js +3 -1
  87. package/lib-commonjs/hooks/index.js.map +1 -1
  88. package/lib-commonjs/hooks/{useOpenItemsState.js → useControllableOpenItems.js} +15 -14
  89. package/lib-commonjs/hooks/useControllableOpenItems.js.map +1 -0
  90. package/lib-commonjs/hooks/useFlatControllableCheckedItems.js +91 -0
  91. package/lib-commonjs/hooks/useFlatControllableCheckedItems.js.map +1 -0
  92. package/lib-commonjs/hooks/useFlatTree.js +16 -5
  93. package/lib-commonjs/hooks/useFlatTree.js.map +1 -1
  94. package/lib-commonjs/hooks/useNestedControllableCheckedItems.js +116 -0
  95. package/lib-commonjs/hooks/useNestedControllableCheckedItems.js.map +1 -0
  96. package/lib-commonjs/utils/ImmutableMap.js +45 -0
  97. package/lib-commonjs/utils/ImmutableMap.js.map +1 -0
  98. package/lib-commonjs/utils/ImmutableSet.js +22 -16
  99. package/lib-commonjs/utils/ImmutableSet.js.map +1 -1
  100. package/lib-commonjs/utils/createFlatTreeItems.js +60 -8
  101. package/lib-commonjs/utils/createFlatTreeItems.js.map +1 -1
  102. package/lib-commonjs/utils/flattenTree.js +0 -5
  103. package/lib-commonjs/utils/flattenTree.js.map +1 -1
  104. package/lib-commonjs/utils/tokens.js +2 -1
  105. package/lib-commonjs/utils/tokens.js.map +1 -1
  106. package/package.json +9 -7
  107. package/lib/hooks/useOpenItemsState.js +0 -28
  108. package/lib/hooks/useOpenItemsState.js.map +0 -1
  109. package/lib-commonjs/hooks/useOpenItemsState.js.map +0 -1
@@ -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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"}
@@ -6,18 +6,13 @@ Object.defineProperty(exports, "flattenTree_unstable", {
6
6
  enumerable: true,
7
7
  get: ()=>flattenTree_unstable
8
8
  });
9
- let count = 1;
10
9
  function flattenTreeRecursive(items, parent, level = 1) {
11
10
  return items.reduce((acc, { subtree , ...item }, index)=>{
12
- var _item_id;
13
- const id = (_item_id = item.id) !== null && _item_id !== void 0 ? _item_id : `fui-FlatTreeItem-${count++}`;
14
- var _item_value;
15
11
  const flatTreeItem = {
16
12
  'aria-level': level,
17
13
  'aria-posinset': index + 1,
18
14
  'aria-setsize': items.length,
19
15
  parentValue: parent === null || parent === void 0 ? void 0 : parent.value,
20
- value: (_item_value = item.value) !== null && _item_value !== void 0 ? _item_value : id,
21
16
  ...item
22
17
  };
23
18
  acc.push(flatTreeItem);
@@ -1 +1 @@
1
- {"version":3,"sources":["flattenTree.js"],"sourcesContent":["let count = 1;\nfunction flattenTreeRecursive(items, parent, level = 1) {\n return items.reduce((acc, { subtree , ...item }, index)=>{\n var _item_id;\n const id = (_item_id = item.id) !== null && _item_id !== void 0 ? _item_id : `fui-FlatTreeItem-${count++}`;\n var _item_value;\n const flatTreeItem = {\n 'aria-level': level,\n 'aria-posinset': index + 1,\n 'aria-setsize': items.length,\n parentValue: parent === null || parent === void 0 ? void 0 : parent.value,\n value: (_item_value = item.value) !== null && _item_value !== void 0 ? _item_value : id,\n ...item\n };\n acc.push(flatTreeItem);\n if (subtree !== undefined) {\n acc.push(...flattenTreeRecursive(subtree, flatTreeItem, level + 1));\n }\n return acc;\n }, []);\n}\n/**\n * Converts a nested structure to a flat one which can be consumed by `useFlatTreeItems`\n * @example\n * ```tsx\n * const defaultItems = flattenTree_unstable([\n * {\n * children: <TreeItemLayout>level 1, item 1</TreeItemLayout>,\n * subtree: [\n * {\n * children: <TreeItemLayout>level 2, item 1</TreeItemLayout>,\n * },\n * {\n * children: <TreeItemLayout>level 2, item 2</TreeItemLayout>,\n * },\n * {\n * children: <TreeItemLayout>level 2, item 3</TreeItemLayout>,\n * },\n * ],\n * },\n * {\n * children: <TreeItemLayout>level 1, item 2</TreeItemLayout>,\n * subtree: [\n * {\n * children: <TreeItemLayout>level 2, item 1</TreeItemLayout>,\n * subtree: [\n * {\n * children: <TreeItemLayout>level 3, item 1</TreeItemLayout>,\n * subtree: [\n * {\n * children: <TreeItemLayout>level 4, item 1</TreeItemLayout>,\n * },\n * ],\n * },\n * ],\n * },\n * ],\n * },\n * ]);\n * ```\n */ // eslint-disable-next-line @typescript-eslint/naming-convention\nexport const flattenTree_unstable = (items)=>flattenTreeRecursive(items);\n"],"names":["flattenTree_unstable","count","flattenTreeRecursive","items","parent","level","reduce","acc","subtree","item","index","_item_id","id","_item_value","flatTreeItem","length","parentValue","value","push","undefined"],"mappings":";;;;+BA6DaA;;aAAAA;;AA7Db,IAAIC,QAAQ;AACZ,SAASC,qBAAqBC,KAAK,EAAEC,MAAM,EAAEC,QAAQ,CAAC,EAAE;IACpD,OAAOF,MAAMG,MAAM,CAAC,CAACC,KAAK,EAAEC,QAAO,EAAG,GAAGC,MAAM,EAAEC,QAAQ;QACrD,IAAIC;QACJ,MAAMC,KAAK,AAACD,CAAAA,WAAWF,KAAKG,EAAE,AAAD,MAAO,IAAI,IAAID,aAAa,KAAK,IAAIA,WAAW,CAAC,iBAAiB,EAAEV,QAAQ,CAAC;QAC1G,IAAIY;QACJ,MAAMC,eAAe;YACjB,cAAcT;YACd,iBAAiBK,QAAQ;YACzB,gBAAgBP,MAAMY,MAAM;YAC5BC,aAAaZ,WAAW,IAAI,IAAIA,WAAW,KAAK,IAAI,KAAK,IAAIA,OAAOa,KAAK;YACzEA,OAAO,AAACJ,CAAAA,cAAcJ,KAAKQ,KAAK,AAAD,MAAO,IAAI,IAAIJ,gBAAgB,KAAK,IAAIA,cAAcD,EAAE;YACvF,GAAGH,IAAI;QACX;QACAF,IAAIW,IAAI,CAACJ;QACT,IAAIN,YAAYW,WAAW;YACvBZ,IAAIW,IAAI,IAAIhB,qBAAqBM,SAASM,cAAcT,QAAQ;QACpE,CAAC;QACD,OAAOE;IACX,GAAG,EAAE;AACT;AAyCO,MAAMP,uBAAuB,CAACG,QAAQD,qBAAqBC"}
1
+ {"version":3,"sources":["flattenTree.js"],"sourcesContent":["function flattenTreeRecursive(items, parent, level = 1) {\n return items.reduce((acc, { subtree , ...item }, index)=>{\n const flatTreeItem = {\n 'aria-level': level,\n 'aria-posinset': index + 1,\n 'aria-setsize': items.length,\n parentValue: parent === null || parent === void 0 ? void 0 : parent.value,\n ...item\n };\n acc.push(flatTreeItem);\n if (subtree !== undefined) {\n acc.push(...flattenTreeRecursive(subtree, flatTreeItem, level + 1));\n }\n return acc;\n }, []);\n}\n/**\n * Converts a nested structure to a flat one which can be consumed by `useFlatTreeItems`\n * @example\n * ```tsx\n * const defaultItems = flattenTree_unstable([\n * {\n * children: <TreeItemLayout>level 1, item 1</TreeItemLayout>,\n * subtree: [\n * {\n * children: <TreeItemLayout>level 2, item 1</TreeItemLayout>,\n * },\n * {\n * children: <TreeItemLayout>level 2, item 2</TreeItemLayout>,\n * },\n * {\n * children: <TreeItemLayout>level 2, item 3</TreeItemLayout>,\n * },\n * ],\n * },\n * {\n * children: <TreeItemLayout>level 1, item 2</TreeItemLayout>,\n * subtree: [\n * {\n * children: <TreeItemLayout>level 2, item 1</TreeItemLayout>,\n * subtree: [\n * {\n * children: <TreeItemLayout>level 3, item 1</TreeItemLayout>,\n * subtree: [\n * {\n * children: <TreeItemLayout>level 4, item 1</TreeItemLayout>,\n * },\n * ],\n * },\n * ],\n * },\n * ],\n * },\n * ]);\n * ```\n */ // eslint-disable-next-line @typescript-eslint/naming-convention\nexport const flattenTree_unstable = (items)=>flattenTreeRecursive(items);\n"],"names":["flattenTree_unstable","flattenTreeRecursive","items","parent","level","reduce","acc","subtree","item","index","flatTreeItem","length","parentValue","value","push","undefined"],"mappings":";;;;+BAwDaA;;aAAAA;;AAxDb,SAASC,qBAAqBC,KAAK,EAAEC,MAAM,EAAEC,QAAQ,CAAC,EAAE;IACpD,OAAOF,MAAMG,MAAM,CAAC,CAACC,KAAK,EAAEC,QAAO,EAAG,GAAGC,MAAM,EAAEC,QAAQ;QACrD,MAAMC,eAAe;YACjB,cAAcN;YACd,iBAAiBK,QAAQ;YACzB,gBAAgBP,MAAMS,MAAM;YAC5BC,aAAaT,WAAW,IAAI,IAAIA,WAAW,KAAK,IAAI,KAAK,IAAIA,OAAOU,KAAK;YACzE,GAAGL,IAAI;QACX;QACAF,IAAIQ,IAAI,CAACJ;QACT,IAAIH,YAAYQ,WAAW;YACvBT,IAAIQ,IAAI,IAAIb,qBAAqBM,SAASG,cAAcN,QAAQ;QACpE,CAAC;QACD,OAAOE;IACX,GAAG,EAAE;AACT;AAyCO,MAAMN,uBAAuB,CAACE,QAAQD,qBAAqBC"}
@@ -29,5 +29,6 @@ const treeDataTypes = {
29
29
  Home: _keyboardKeys.Home,
30
30
  ArrowUp: _keyboardKeys.ArrowUp,
31
31
  ArrowDown: _keyboardKeys.ArrowDown,
32
- TypeAhead: 'TypeAhead'
32
+ TypeAhead: 'TypeAhead',
33
+ Change: 'Change'
33
34
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["tokens.js"],"sourcesContent":["import { ArrowDown, ArrowLeft, ArrowRight, ArrowUp, End, Home, Enter } from '@fluentui/keyboard-keys';\nexport const treeItemLevelToken = '--fluent-TreeItem--level';\nexport const treeAvatarSize = {\n medium: 32,\n small: 24\n};\nexport const treeDataTypes = {\n ArrowLeft,\n ArrowRight,\n Enter,\n Click: 'Click',\n ExpandIconClick: 'ExpandIconClick',\n End,\n Home,\n ArrowUp,\n ArrowDown,\n TypeAhead: 'TypeAhead'\n};\n"],"names":["treeItemLevelToken","treeAvatarSize","treeDataTypes","medium","small","ArrowLeft","ArrowRight","Enter","Click","ExpandIconClick","End","Home","ArrowUp","ArrowDown","TypeAhead"],"mappings":";;;;;;;;;;;IACaA,kBAAkB,MAAlBA;IACAC,cAAc,MAAdA;IAIAC,aAAa,MAAbA;;8BAN+D;AACrE,MAAMF,qBAAqB;AAC3B,MAAMC,iBAAiB;IAC1BE,QAAQ;IACRC,OAAO;AACX;AACO,MAAMF,gBAAgB;IACzBG,WAAAA,uBAAS;IACTC,YAAAA,wBAAU;IACVC,OAAAA,mBAAK;IACLC,OAAO;IACPC,iBAAiB;IACjBC,KAAAA,iBAAG;IACHC,MAAAA,kBAAI;IACJC,SAAAA,qBAAO;IACPC,WAAAA,uBAAS;IACTC,WAAW;AACf"}
1
+ {"version":3,"sources":["tokens.js"],"sourcesContent":["import { ArrowDown, ArrowLeft, ArrowRight, ArrowUp, End, Home, Enter } from '@fluentui/keyboard-keys';\nexport const treeItemLevelToken = '--fluent-TreeItem--level';\nexport const treeAvatarSize = {\n medium: 32,\n small: 24\n};\nexport const treeDataTypes = {\n ArrowLeft,\n ArrowRight,\n Enter,\n Click: 'Click',\n ExpandIconClick: 'ExpandIconClick',\n End,\n Home,\n ArrowUp,\n ArrowDown,\n TypeAhead: 'TypeAhead',\n Change: 'Change'\n};\n"],"names":["treeItemLevelToken","treeAvatarSize","treeDataTypes","medium","small","ArrowLeft","ArrowRight","Enter","Click","ExpandIconClick","End","Home","ArrowUp","ArrowDown","TypeAhead","Change"],"mappings":";;;;;;;;;;;IACaA,kBAAkB,MAAlBA;IACAC,cAAc,MAAdA;IAIAC,aAAa,MAAbA;;8BAN+D;AACrE,MAAMF,qBAAqB;AAC3B,MAAMC,iBAAiB;IAC1BE,QAAQ;IACRC,OAAO;AACX;AACO,MAAMF,gBAAgB;IACzBG,WAAAA,uBAAS;IACTC,YAAAA,wBAAU;IACVC,OAAAA,mBAAK;IACLC,OAAO;IACPC,iBAAiB;IACjBC,KAAAA,iBAAG;IACHC,MAAAA,kBAAI;IACJC,SAAAA,qBAAO;IACPC,WAAAA,uBAAS;IACTC,WAAW;IACXC,QAAQ;AACZ"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluentui/react-tree",
3
- "version": "9.0.0-beta.24",
3
+ "version": "9.0.0-beta.26",
4
4
  "description": "React components for building web experiences",
5
5
  "main": "lib-commonjs/index.js",
6
6
  "module": "lib/index.js",
@@ -29,7 +29,7 @@
29
29
  "devDependencies": {
30
30
  "@fluentui/eslint-plugin": "*",
31
31
  "@fluentui/react-conformance": "*",
32
- "@fluentui/react-conformance-griffel": "9.0.0-beta.23",
32
+ "@fluentui/react-conformance-griffel": "*",
33
33
  "@fluentui/scripts-api-extractor": "*",
34
34
  "@fluentui/scripts-tasks": "*",
35
35
  "@fluentui/scripts-cypress": "*",
@@ -37,17 +37,19 @@
37
37
  },
38
38
  "dependencies": {
39
39
  "@fluentui/keyboard-keys": "^9.0.3",
40
- "@fluentui/react-aria": "^9.3.26",
41
- "@fluentui/react-avatar": "^9.5.11",
42
- "@fluentui/react-button": "^9.3.22",
40
+ "@fluentui/react-aria": "^9.3.27",
41
+ "@fluentui/react-avatar": "^9.5.13",
42
+ "@fluentui/react-button": "^9.3.24",
43
+ "@fluentui/react-checkbox": "^9.1.25",
43
44
  "@fluentui/react-context-selector": "^9.1.26",
44
45
  "@fluentui/react-icons": "^2.0.203",
45
- "@fluentui/react-portal": "^9.3.1",
46
+ "@fluentui/react-portal": "^9.3.2",
47
+ "@fluentui/react-radio": "^9.1.25",
46
48
  "@fluentui/react-shared-contexts": "^9.6.0",
47
49
  "@fluentui/react-tabster": "^9.10.0",
48
50
  "@fluentui/react-theme": "^9.1.9",
49
51
  "@fluentui/react-utilities": "^9.10.1",
50
- "@fluentui/react-jsx-runtime": "9.0.0-alpha.10",
52
+ "@fluentui/react-jsx-runtime": "9.0.0-alpha.12",
51
53
  "@griffel/react": "^1.5.7",
52
54
  "@swc/helpers": "^0.4.14"
53
55
  },
@@ -1,28 +0,0 @@
1
- import { useControllableState, useEventCallback } from '@fluentui/react-utilities';
2
- import * as React from 'react';
3
- import { createImmutableSet, emptyImmutableSet } from '../utils/ImmutableSet';
4
- export function useOpenItemsState(props) {
5
- const [openItems, setOpenItems] = useControllableState({
6
- state: React.useMemo(()=>props.openItems && createImmutableSet(props.openItems), [
7
- props.openItems
8
- ]),
9
- defaultState: props.defaultOpenItems && (()=>createImmutableSet(props.defaultOpenItems)),
10
- initialState: emptyImmutableSet
11
- });
12
- const updateOpenItems = useEventCallback((data)=>setOpenItems((currentOpenItems)=>createNextOpenItems(data, currentOpenItems)));
13
- return [
14
- openItems,
15
- updateOpenItems
16
- ];
17
- }
18
- function createNextOpenItems(data, previousOpenItems) {
19
- if (data.value === null) {
20
- return previousOpenItems;
21
- }
22
- const previousOpenItemsHasId = previousOpenItems.has(data.value);
23
- if (data.open ? previousOpenItemsHasId : !previousOpenItemsHasId) {
24
- return previousOpenItems;
25
- }
26
- const nextOpenItems = createImmutableSet(previousOpenItems);
27
- return data.open ? nextOpenItems.add(data.value) : nextOpenItems.delete(data.value);
28
- }
@@ -1 +0,0 @@
1
- {"version":3,"sources":["useOpenItemsState.ts"],"sourcesContent":["import { useControllableState, useEventCallback } from '@fluentui/react-utilities';\nimport * as React from 'react';\nimport { createImmutableSet, emptyImmutableSet, ImmutableSet } from '../utils/ImmutableSet';\nimport type { TreeOpenChangeData, TreeProps } from '../Tree';\n\nexport function useOpenItemsState(props: Pick<TreeProps, 'openItems' | 'defaultOpenItems'>) {\n const [openItems, setOpenItems] = useControllableState({\n state: React.useMemo(() => props.openItems && createImmutableSet(props.openItems), [props.openItems]),\n defaultState: props.defaultOpenItems && (() => createImmutableSet(props.defaultOpenItems)),\n initialState: emptyImmutableSet,\n });\n const updateOpenItems = useEventCallback((data: TreeOpenChangeData) =>\n setOpenItems(currentOpenItems => createNextOpenItems(data, currentOpenItems)),\n );\n return [openItems, updateOpenItems] as const;\n}\n\nfunction createNextOpenItems(data: TreeOpenChangeData, previousOpenItems: ImmutableSet<string>): ImmutableSet<string> {\n if (data.value === null) {\n return previousOpenItems;\n }\n const previousOpenItemsHasId = previousOpenItems.has(data.value);\n if (data.open ? previousOpenItemsHasId : !previousOpenItemsHasId) {\n return previousOpenItems;\n }\n const nextOpenItems = createImmutableSet(previousOpenItems);\n return data.open ? nextOpenItems.add(data.value) : nextOpenItems.delete(data.value);\n}\n"],"names":["useControllableState","useEventCallback","React","createImmutableSet","emptyImmutableSet","useOpenItemsState","props","openItems","setOpenItems","state","useMemo","defaultState","defaultOpenItems","initialState","updateOpenItems","data","currentOpenItems","createNextOpenItems","previousOpenItems","value","previousOpenItemsHasId","has","open","nextOpenItems","add","delete"],"mappings":"AAAA,SAASA,oBAAoB,EAAEC,gBAAgB,QAAQ,4BAA4B;AACnF,YAAYC,WAAW,QAAQ;AAC/B,SAASC,kBAAkB,EAAEC,iBAAiB,QAAsB,wBAAwB;AAG5F,OAAO,SAASC,kBAAkBC,KAAwD,EAAE;IAC1F,MAAM,CAACC,WAAWC,aAAa,GAAGR,qBAAqB;QACrDS,OAAOP,MAAMQ,OAAO,CAAC,IAAMJ,MAAMC,SAAS,IAAIJ,mBAAmBG,MAAMC,SAAS,GAAG;YAACD,MAAMC,SAAS;SAAC;QACpGI,cAAcL,MAAMM,gBAAgB,IAAK,CAAA,IAAMT,mBAAmBG,MAAMM,gBAAgB,CAAA;QACxFC,cAAcT;IAChB;IACA,MAAMU,kBAAkBb,iBAAiB,CAACc,OACxCP,aAAaQ,CAAAA,mBAAoBC,oBAAoBF,MAAMC;IAE7D,OAAO;QAACT;QAAWO;KAAgB;AACrC,CAAC;AAED,SAASG,oBAAoBF,IAAwB,EAAEG,iBAAuC,EAAwB;IACpH,IAAIH,KAAKI,KAAK,KAAK,IAAI,EAAE;QACvB,OAAOD;IACT,CAAC;IACD,MAAME,yBAAyBF,kBAAkBG,GAAG,CAACN,KAAKI,KAAK;IAC/D,IAAIJ,KAAKO,IAAI,GAAGF,yBAAyB,CAACA,sBAAsB,EAAE;QAChE,OAAOF;IACT,CAAC;IACD,MAAMK,gBAAgBpB,mBAAmBe;IACzC,OAAOH,KAAKO,IAAI,GAAGC,cAAcC,GAAG,CAACT,KAAKI,KAAK,IAAII,cAAcE,MAAM,CAACV,KAAKI,KAAK,CAAC;AACrF"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["useOpenItemsState.js"],"sourcesContent":["import { useControllableState, useEventCallback } from '@fluentui/react-utilities';\nimport * as React from 'react';\nimport { createImmutableSet, emptyImmutableSet } from '../utils/ImmutableSet';\nexport function useOpenItemsState(props) {\n const [openItems, setOpenItems] = useControllableState({\n state: React.useMemo(()=>props.openItems && createImmutableSet(props.openItems), [\n props.openItems\n ]),\n defaultState: props.defaultOpenItems && (()=>createImmutableSet(props.defaultOpenItems)),\n initialState: emptyImmutableSet\n });\n const updateOpenItems = useEventCallback((data)=>setOpenItems((currentOpenItems)=>createNextOpenItems(data, currentOpenItems)));\n return [\n openItems,\n updateOpenItems\n ];\n}\nfunction createNextOpenItems(data, previousOpenItems) {\n if (data.value === null) {\n return previousOpenItems;\n }\n const previousOpenItemsHasId = previousOpenItems.has(data.value);\n if (data.open ? previousOpenItemsHasId : !previousOpenItemsHasId) {\n return previousOpenItems;\n }\n const nextOpenItems = createImmutableSet(previousOpenItems);\n return data.open ? nextOpenItems.add(data.value) : nextOpenItems.delete(data.value);\n}\n"],"names":["useOpenItemsState","props","openItems","setOpenItems","useControllableState","state","React","useMemo","createImmutableSet","defaultState","defaultOpenItems","initialState","emptyImmutableSet","updateOpenItems","useEventCallback","data","currentOpenItems","createNextOpenItems","previousOpenItems","value","previousOpenItemsHasId","has","open","nextOpenItems","add","delete"],"mappings":";;;;+BAGgBA;;aAAAA;;;gCAHuC;6DAChC;8BAC+B;AAC/C,SAASA,kBAAkBC,KAAK,EAAE;IACrC,MAAM,CAACC,WAAWC,aAAa,GAAGC,IAAAA,oCAAoB,EAAC;QACnDC,OAAOC,OAAMC,OAAO,CAAC,IAAIN,MAAMC,SAAS,IAAIM,IAAAA,gCAAkB,EAACP,MAAMC,SAAS,GAAG;YAC7ED,MAAMC,SAAS;SAClB;QACDO,cAAcR,MAAMS,gBAAgB,IAAK,CAAA,IAAIF,IAAAA,gCAAkB,EAACP,MAAMS,gBAAgB,CAAA;QACtFC,cAAcC,+BAAiB;IACnC;IACA,MAAMC,kBAAkBC,IAAAA,gCAAgB,EAAC,CAACC,OAAOZ,aAAa,CAACa,mBAAmBC,oBAAoBF,MAAMC;IAC5G,OAAO;QACHd;QACAW;KACH;AACL;AACA,SAASI,oBAAoBF,IAAI,EAAEG,iBAAiB,EAAE;IAClD,IAAIH,KAAKI,KAAK,KAAK,IAAI,EAAE;QACrB,OAAOD;IACX,CAAC;IACD,MAAME,yBAAyBF,kBAAkBG,GAAG,CAACN,KAAKI,KAAK;IAC/D,IAAIJ,KAAKO,IAAI,GAAGF,yBAAyB,CAACA,sBAAsB,EAAE;QAC9D,OAAOF;IACX,CAAC;IACD,MAAMK,gBAAgBf,IAAAA,gCAAkB,EAACU;IACzC,OAAOH,KAAKO,IAAI,GAAGC,cAAcC,GAAG,CAACT,KAAKI,KAAK,IAAII,cAAcE,MAAM,CAACV,KAAKI,KAAK,CAAC;AACvF"}