@fluentui/react-tree 0.0.0-nightly-20230310-0421.1 → 9.0.0-beta.2

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 (122) hide show
  1. package/CHANGELOG.json +33 -42
  2. package/CHANGELOG.md +20 -15
  3. package/dist/index.d.ts +80 -22
  4. package/lib/Tree.js.map +1 -1
  5. package/lib/TreeItem.js.map +1 -1
  6. package/lib/TreeItemLayout.js.map +1 -1
  7. package/lib/TreeItemPersonaLayout.js.map +1 -1
  8. package/lib/components/Tree/Tree.js.map +1 -1
  9. package/lib/components/Tree/Tree.types.js.map +1 -1
  10. package/lib/components/Tree/index.js.map +1 -1
  11. package/lib/components/Tree/renderTree.js.map +1 -1
  12. package/lib/components/Tree/useTree.js.map +1 -1
  13. package/lib/components/Tree/useTreeContextValues.js.map +1 -1
  14. package/lib/components/Tree/useTreeStyles.js.map +1 -1
  15. package/lib/components/TreeItem/TreeItem.js.map +1 -1
  16. package/lib/components/TreeItem/TreeItem.types.js.map +1 -1
  17. package/lib/components/TreeItem/index.js.map +1 -1
  18. package/lib/components/TreeItem/renderTreeItem.js.map +1 -1
  19. package/lib/components/TreeItem/useTreeItem.js.map +1 -1
  20. package/lib/components/TreeItem/useTreeItemContextValues.js.map +1 -1
  21. package/lib/components/TreeItem/useTreeItemStyles.js.map +1 -1
  22. package/lib/components/TreeItemLayout/TreeItemLayout.js.map +1 -1
  23. package/lib/components/TreeItemLayout/TreeItemLayout.types.js.map +1 -1
  24. package/lib/components/TreeItemLayout/index.js.map +1 -1
  25. package/lib/components/TreeItemLayout/renderTreeItemLayout.js.map +1 -1
  26. package/lib/components/TreeItemLayout/useTreeItemLayout.js.map +1 -1
  27. package/lib/components/TreeItemLayout/useTreeItemLayoutStyles.js.map +1 -1
  28. package/lib/components/TreeItemPersonaLayout/TreeItemPersonaLayout.js.map +1 -1
  29. package/lib/components/TreeItemPersonaLayout/TreeItemPersonaLayout.types.js.map +1 -1
  30. package/lib/components/TreeItemPersonaLayout/index.js.map +1 -1
  31. package/lib/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js.map +1 -1
  32. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js.map +1 -1
  33. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutContextValues.js.map +1 -1
  34. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.js.map +1 -1
  35. package/lib/contexts/index.js.map +1 -1
  36. package/lib/contexts/treeContext.js.map +1 -1
  37. package/lib/contexts/treeItemContext.js.map +1 -1
  38. package/lib/hooks/index.js +1 -1
  39. package/lib/hooks/index.js.map +1 -1
  40. package/lib/hooks/useFlatTree.js +49 -0
  41. package/lib/hooks/useFlatTree.js.map +1 -0
  42. package/lib/hooks/useFlatTreeNavigation.js +6 -6
  43. package/lib/hooks/useFlatTreeNavigation.js.map +1 -1
  44. package/lib/hooks/useHTMLElementWalker.js.map +1 -1
  45. package/lib/hooks/useNestedTreeNavigation.js.map +1 -1
  46. package/lib/hooks/useOpenItemsState.js.map +1 -1
  47. package/lib/hooks/useRovingTabIndexes.js.map +1 -1
  48. package/lib/index.js +1 -1
  49. package/lib/index.js.map +1 -1
  50. package/lib/utils/ImmutableSet.js.map +1 -1
  51. package/lib/utils/assert.js.map +1 -1
  52. package/lib/utils/createUnfilteredFlatTree.js +77 -0
  53. package/lib/utils/createUnfilteredFlatTree.js.map +1 -0
  54. package/lib/utils/createVisibleFlatTree.js +80 -0
  55. package/lib/utils/createVisibleFlatTree.js.map +1 -0
  56. package/lib/utils/flattenTree.js.map +1 -1
  57. package/lib/utils/nextTypeAheadElement.js.map +1 -1
  58. package/lib/utils/normalizeOpenItems.js.map +1 -1
  59. package/lib/utils/tokens.js.map +1 -1
  60. package/lib/utils/treeItemFilter.js.map +1 -1
  61. package/lib-commonjs/Tree.js.map +1 -1
  62. package/lib-commonjs/TreeItem.js.map +1 -1
  63. package/lib-commonjs/TreeItemLayout.js.map +1 -1
  64. package/lib-commonjs/TreeItemPersonaLayout.js.map +1 -1
  65. package/lib-commonjs/components/Tree/Tree.js.map +1 -1
  66. package/lib-commonjs/components/Tree/Tree.types.js.map +1 -1
  67. package/lib-commonjs/components/Tree/index.js.map +1 -1
  68. package/lib-commonjs/components/Tree/renderTree.js.map +1 -1
  69. package/lib-commonjs/components/Tree/useTree.js.map +1 -1
  70. package/lib-commonjs/components/Tree/useTreeContextValues.js.map +1 -1
  71. package/lib-commonjs/components/Tree/useTreeStyles.js.map +1 -1
  72. package/lib-commonjs/components/TreeItem/TreeItem.js.map +1 -1
  73. package/lib-commonjs/components/TreeItem/TreeItem.types.js.map +1 -1
  74. package/lib-commonjs/components/TreeItem/index.js.map +1 -1
  75. package/lib-commonjs/components/TreeItem/renderTreeItem.js.map +1 -1
  76. package/lib-commonjs/components/TreeItem/useTreeItem.js.map +1 -1
  77. package/lib-commonjs/components/TreeItem/useTreeItemContextValues.js.map +1 -1
  78. package/lib-commonjs/components/TreeItem/useTreeItemStyles.js.map +1 -1
  79. package/lib-commonjs/components/TreeItemLayout/TreeItemLayout.js.map +1 -1
  80. package/lib-commonjs/components/TreeItemLayout/TreeItemLayout.types.js.map +1 -1
  81. package/lib-commonjs/components/TreeItemLayout/index.js.map +1 -1
  82. package/lib-commonjs/components/TreeItemLayout/renderTreeItemLayout.js.map +1 -1
  83. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayout.js.map +1 -1
  84. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayoutStyles.js.map +1 -1
  85. package/lib-commonjs/components/TreeItemPersonaLayout/TreeItemPersonaLayout.js.map +1 -1
  86. package/lib-commonjs/components/TreeItemPersonaLayout/TreeItemPersonaLayout.types.js.map +1 -1
  87. package/lib-commonjs/components/TreeItemPersonaLayout/index.js.map +1 -1
  88. package/lib-commonjs/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js.map +1 -1
  89. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js.map +1 -1
  90. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutContextValues.js.map +1 -1
  91. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.js.map +1 -1
  92. package/lib-commonjs/contexts/index.js.map +1 -1
  93. package/lib-commonjs/contexts/treeContext.js.map +1 -1
  94. package/lib-commonjs/contexts/treeItemContext.js.map +1 -1
  95. package/lib-commonjs/hooks/index.js +1 -1
  96. package/lib-commonjs/hooks/index.js.map +1 -1
  97. package/lib-commonjs/hooks/useFlatTree.js +56 -0
  98. package/lib-commonjs/hooks/useFlatTree.js.map +1 -0
  99. package/lib-commonjs/hooks/useFlatTreeNavigation.js +6 -6
  100. package/lib-commonjs/hooks/useFlatTreeNavigation.js.map +1 -1
  101. package/lib-commonjs/hooks/useHTMLElementWalker.js.map +1 -1
  102. package/lib-commonjs/hooks/useNestedTreeNavigation.js.map +1 -1
  103. package/lib-commonjs/hooks/useOpenItemsState.js.map +1 -1
  104. package/lib-commonjs/hooks/useRovingTabIndexes.js.map +1 -1
  105. package/lib-commonjs/index.js +3 -3
  106. package/lib-commonjs/index.js.map +1 -1
  107. package/lib-commonjs/utils/ImmutableSet.js.map +1 -1
  108. package/lib-commonjs/utils/assert.js.map +1 -1
  109. package/lib-commonjs/utils/createUnfilteredFlatTree.js +84 -0
  110. package/lib-commonjs/utils/createUnfilteredFlatTree.js.map +1 -0
  111. package/lib-commonjs/utils/createVisibleFlatTree.js +87 -0
  112. package/lib-commonjs/utils/createVisibleFlatTree.js.map +1 -0
  113. package/lib-commonjs/utils/flattenTree.js.map +1 -1
  114. package/lib-commonjs/utils/nextTypeAheadElement.js.map +1 -1
  115. package/lib-commonjs/utils/normalizeOpenItems.js.map +1 -1
  116. package/lib-commonjs/utils/tokens.js.map +1 -1
  117. package/lib-commonjs/utils/treeItemFilter.js.map +1 -1
  118. package/package.json +19 -13
  119. package/lib/hooks/useFlatTreeItems.js +0 -134
  120. package/lib/hooks/useFlatTreeItems.js.map +0 -1
  121. package/lib-commonjs/hooks/useFlatTreeItems.js +0 -141
  122. package/lib-commonjs/hooks/useFlatTreeItems.js.map +0 -1
@@ -1,141 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.useFlatTreeItems_unstable = void 0;
7
- const react_utilities_1 = /*#__PURE__*/require("@fluentui/react-utilities");
8
- const React = /*#__PURE__*/require("react");
9
- const useFlatTreeNavigation_1 = /*#__PURE__*/require("./useFlatTreeNavigation");
10
- const useOpenItemsState_1 = /*#__PURE__*/require("./useOpenItemsState");
11
- function useFlatTreeItems_unstable(items, options) {
12
- const references = React.useMemo(() => createTreeItemPropsRefs(items), [items]);
13
- const [openItems, updateOpenItems] = useOpenItemsState_1.useOpenItemsState(options !== null && options !== void 0 ? options : {});
14
- const [navigate, treeRef] = useFlatTreeNavigation_1.useFlatTreeNavigation(references);
15
- const handleOpenChange = react_utilities_1.useEventCallback((event, data) => {
16
- event.preventDefault();
17
- updateOpenItems(data);
18
- });
19
- const handleNavigation = react_utilities_1.useEventCallback((event, data) => {
20
- event.preventDefault();
21
- navigate(data);
22
- });
23
- const lazyFlatTreeItems = React.useMemo(() => createLazyFlatTreeItems(references, {
24
- filter: item => isTreeItemVisible(item, {
25
- openItems,
26
- references
27
- })
28
- }), [references, openItems]);
29
- return [{
30
- ref: treeRef,
31
- openItems,
32
- onOpenChange: handleOpenChange,
33
- // eslint-disable-next-line @typescript-eslint/naming-convention
34
- onNavigation_unstable: handleNavigation
35
- }, lazyFlatTreeItems];
36
- }
37
- exports.useFlatTreeItems_unstable = useFlatTreeItems_unstable;
38
- function isTreeItemVisible(itemRef, {
39
- openItems,
40
- references
41
- }) {
42
- if (itemRef.props['aria-level'] === 1) {
43
- return true;
44
- }
45
- while (itemRef.parentId !== undefined) {
46
- if (!openItems.has(itemRef.parentId)) {
47
- return false;
48
- }
49
- const parent = references.getParent(itemRef);
50
- if (!parent) {
51
- return false;
52
- }
53
- itemRef = parent;
54
- }
55
- return true;
56
- }
57
- function createTreeItemPropsRefs(flatTreeItemProps) {
58
- var _a, _b;
59
- const root = {
60
- props: {
61
- id: 'root',
62
- leaf: false,
63
- 'aria-level': 0,
64
- 'aria-posinset': 0
65
- },
66
- childrenSize: 0,
67
- index: -1
68
- };
69
- const treeItemPropsRefsPerId = new Map();
70
- const refs = [];
71
- for (let index = 0; index < flatTreeItemProps.length; index++) {
72
- const {
73
- parentId,
74
- ...treeItemProps
75
- } = flatTreeItemProps[index];
76
- const nextPartialItem = flatTreeItemProps[index + 1];
77
- const currentParentRef = parentId ? (_a = treeItemPropsRefsPerId.get(parentId)) !== null && _a !== void 0 ? _a : root : root;
78
- const isLeaf = (nextPartialItem === null || nextPartialItem === void 0 ? void 0 : nextPartialItem.parentId) !== treeItemProps.id;
79
- const currentLevel = ((_b = currentParentRef.props['aria-level']) !== null && _b !== void 0 ? _b : 0) + 1;
80
- currentParentRef.childrenSize++;
81
- const treeItemPropsRef = {
82
- props: {
83
- ...treeItemProps,
84
- 'aria-level': currentLevel,
85
- 'aria-posinset': currentParentRef.childrenSize,
86
- leaf: isLeaf
87
- },
88
- parentId,
89
- childrenSize: 0,
90
- index: -1
91
- };
92
- treeItemPropsRefsPerId.set(treeItemPropsRef.props.id, treeItemPropsRef);
93
- refs.push(treeItemPropsRef);
94
- }
95
- function getParent(itemRef) {
96
- const parentRef = itemRef.parentId ? treeItemPropsRefsPerId.get(itemRef.parentId) : root;
97
- return parentRef !== null && parentRef !== void 0 ? parentRef : null;
98
- }
99
- function get(id) {
100
- var _a;
101
- return (_a = treeItemPropsRefsPerId.get(id)) !== null && _a !== void 0 ? _a : null;
102
- }
103
- return {
104
- refs,
105
- getParent,
106
- get
107
- };
108
- }
109
- function createLazyFlatTreeItems(treeItemPropsRefs, {
110
- filter = () => true
111
- }) {
112
- const flatTreeItems = {
113
- get: treeItemPropsRefs.get,
114
- toArray: () => flatTreeItems.map(identity),
115
- map: fn => {
116
- const items = [];
117
- for (let index = 0; index < treeItemPropsRefs.refs.length; index++) {
118
- const currentItemRef = treeItemPropsRefs.refs[index];
119
- const currentParentRef = treeItemPropsRefs.getParent(currentItemRef);
120
- if (!currentParentRef) {
121
- break;
122
- }
123
- if (filter(currentItemRef)) {
124
- currentItemRef.index = index;
125
- items.push(fn({
126
- ...currentItemRef.props,
127
- 'aria-setsize': currentParentRef.childrenSize
128
- }));
129
- } else {
130
- index += currentParentRef.childrenSize - 1 + currentItemRef.childrenSize;
131
- }
132
- }
133
- return items;
134
- }
135
- };
136
- return flatTreeItems;
137
- }
138
- function identity(item) {
139
- return item;
140
- }
141
- //# sourceMappingURL=useFlatTreeItems.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["react_utilities_1","require","React","useFlatTreeNavigation_1","useOpenItemsState_1","useFlatTreeItems_unstable","items","options","references","useMemo","createTreeItemPropsRefs","openItems","updateOpenItems","useOpenItemsState","navigate","treeRef","useFlatTreeNavigation","handleOpenChange","useEventCallback","event","data","preventDefault","handleNavigation","lazyFlatTreeItems","createLazyFlatTreeItems","filter","item","isTreeItemVisible","ref","onOpenChange","onNavigation_unstable","exports","itemRef","props","parentId","undefined","has","parent","getParent","flatTreeItemProps","root","id","leaf","childrenSize","index","treeItemPropsRefsPerId","Map","refs","length","treeItemProps","nextPartialItem","currentParentRef","_a","get","isLeaf","currentLevel","_b","treeItemPropsRef","set","push","parentRef","treeItemPropsRefs","flatTreeItems","toArray","map","identity","fn","currentItemRef"],"sources":["../../../../../../../../packages/react-components/react-tree/src/hooks/useFlatTreeItems.ts"],"sourcesContent":["import { useEventCallback } from '@fluentui/react-utilities';\nimport * as React from 'react';\nimport {\n TreeItemId,\n TreeNavigationData_unstable,\n TreeNavigationEvent_unstable,\n TreeOpenChangeData,\n TreeOpenChangeEvent,\n TreeProps,\n} from '../Tree';\nimport { TreeItemProps } from '../TreeItem';\nimport { ImmutableSet } from '../utils/ImmutableSet';\nimport { useFlatTreeNavigation } from './useFlatTreeNavigation';\nimport { useOpenItemsState } from './useOpenItemsState';\n\nexport type FlatTreeItem = Required<Pick<TreeItemProps, 'id'>> &\n TreeItemProps & {\n parentId?: string;\n };\n\nexport type FlatTreeItemProps = Required<\n Pick<TreeItemProps, 'id' | 'aria-level' | 'aria-posinset' | 'leaf' | 'aria-setsize'>\n> &\n TreeItemProps;\n\ntype TreeItemPropsReference = {\n props: Required<Pick<TreeItemProps, 'id' | 'aria-level' | 'aria-posinset' | 'leaf'>> & TreeItemProps;\n parentId?: string;\n childrenSize: number;\n index: number;\n};\n\nexport type TreeItemPropsReferences = {\n refs: TreeItemPropsReference[];\n getParent(ref: TreeItemPropsReference): TreeItemPropsReference | null;\n get(id: string): TreeItemPropsReference | null;\n};\n\ntype LazyArray<Value> = {\n map<NextValue>(fn: (child: Value) => NextValue): NextValue[];\n toArray(): Value[];\n};\n\nexport type FlatTreeProps = Required<\n Pick<TreeProps, 'openItems' | 'onOpenChange' | 'onNavigation_unstable'> & { ref: React.Ref<HTMLDivElement> }\n>;\nexport type LazyFlatTreeItems = LazyArray<FlatTreeItemProps> & {\n get(id: string): TreeItemPropsReference | null;\n};\n\nexport type UseFlatTreeItemsOptions = Pick<TreeProps, 'openItems' | 'defaultOpenItems'>;\n\nexport function useFlatTreeItems_unstable(\n items: FlatTreeItem[],\n options?: UseFlatTreeItemsOptions,\n): readonly [FlatTreeProps, LazyFlatTreeItems] {\n const references = React.useMemo(() => createTreeItemPropsRefs(items), [items]);\n const [openItems, updateOpenItems] = useOpenItemsState(options ?? {});\n const [navigate, treeRef] = useFlatTreeNavigation(references);\n\n const handleOpenChange = useEventCallback((event: TreeOpenChangeEvent, data: TreeOpenChangeData) => {\n event.preventDefault();\n updateOpenItems(data);\n });\n\n const handleNavigation = useEventCallback(\n (event: TreeNavigationEvent_unstable, data: TreeNavigationData_unstable) => {\n event.preventDefault();\n navigate(data);\n },\n );\n\n const lazyFlatTreeItems = React.useMemo(\n () =>\n createLazyFlatTreeItems(references, {\n filter: item => isTreeItemVisible(item, { openItems, references }),\n }),\n [references, openItems],\n );\n\n return [\n {\n ref: treeRef as React.Ref<HTMLDivElement>,\n openItems,\n onOpenChange: handleOpenChange,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n onNavigation_unstable: handleNavigation,\n },\n lazyFlatTreeItems,\n ];\n}\n\nfunction isTreeItemVisible(\n itemRef: TreeItemPropsReference,\n {\n openItems,\n references,\n }: {\n openItems: ImmutableSet<TreeItemId>;\n references: TreeItemPropsReferences;\n },\n) {\n if (itemRef.props['aria-level'] === 1) {\n return true;\n }\n while (itemRef.parentId !== undefined) {\n if (!openItems.has(itemRef.parentId)) {\n return false;\n }\n const parent = references.getParent(itemRef);\n if (!parent) {\n return false;\n }\n itemRef = parent;\n }\n return true;\n}\n\nfunction createTreeItemPropsRefs(flatTreeItemProps: FlatTreeItem[]): TreeItemPropsReferences {\n const root: TreeItemPropsReference = {\n props: { id: 'root', leaf: false, 'aria-level': 0, 'aria-posinset': 0 },\n childrenSize: 0,\n index: -1,\n };\n const treeItemPropsRefsPerId = new Map<string, TreeItemPropsReference>();\n const refs: TreeItemPropsReference[] = [];\n\n for (let index = 0; index < flatTreeItemProps.length; index++) {\n const { parentId, ...treeItemProps } = flatTreeItemProps[index];\n\n const nextPartialItem = flatTreeItemProps[index + 1] as FlatTreeItem | undefined;\n const currentParentRef = parentId ? treeItemPropsRefsPerId.get(parentId) ?? root : root;\n const isLeaf = nextPartialItem?.parentId !== treeItemProps.id;\n const currentLevel = (currentParentRef.props['aria-level'] ?? 0) + 1;\n currentParentRef.childrenSize++;\n\n const treeItemPropsRef: TreeItemPropsReference = {\n props: {\n ...treeItemProps,\n 'aria-level': currentLevel,\n 'aria-posinset': currentParentRef.childrenSize,\n leaf: isLeaf,\n },\n parentId,\n childrenSize: 0,\n index: -1,\n };\n treeItemPropsRefsPerId.set(treeItemPropsRef.props.id, treeItemPropsRef);\n refs.push(treeItemPropsRef);\n }\n\n function getParent(itemRef: TreeItemPropsReference): TreeItemPropsReference | null {\n const parentRef = itemRef.parentId ? treeItemPropsRefsPerId.get(itemRef.parentId) : root;\n return parentRef ?? null;\n }\n function get(id: string): TreeItemPropsReference | null {\n return treeItemPropsRefsPerId.get(id) ?? null;\n }\n\n return { refs, getParent, get };\n}\n\nfunction createLazyFlatTreeItems(\n treeItemPropsRefs: TreeItemPropsReferences,\n { filter = () => true }: { filter: (item: TreeItemPropsReference) => boolean },\n): LazyFlatTreeItems {\n const flatTreeItems: LazyFlatTreeItems = {\n get: treeItemPropsRefs.get,\n toArray: () => flatTreeItems.map(identity),\n map: fn => {\n const items: ReturnType<typeof fn>[] = [];\n for (let index = 0; index < treeItemPropsRefs.refs.length; index++) {\n const currentItemRef = treeItemPropsRefs.refs[index];\n const currentParentRef = treeItemPropsRefs.getParent(currentItemRef);\n if (!currentParentRef) {\n break;\n }\n if (filter(currentItemRef)) {\n currentItemRef.index = index;\n items.push(fn({ ...currentItemRef.props, 'aria-setsize': currentParentRef.childrenSize }));\n } else {\n index += currentParentRef.childrenSize - 1 + currentItemRef.childrenSize;\n }\n }\n return items;\n },\n };\n return flatTreeItems;\n}\n\nfunction identity<T>(item: T) {\n return item;\n}\n"],"mappings":"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"}