@fluentui/react-tree 9.0.0-beta.1 → 9.0.0-beta.3
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.
- package/CHANGELOG.json +67 -1
- package/CHANGELOG.md +26 -2
- package/dist/index.d.ts +80 -22
- package/lib/hooks/index.js +1 -1
- package/lib/hooks/index.js.map +1 -1
- package/lib/hooks/useFlatTree.js +49 -0
- package/lib/hooks/useFlatTree.js.map +1 -0
- package/lib/hooks/useFlatTreeNavigation.js +6 -6
- package/lib/hooks/useFlatTreeNavigation.js.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/utils/createUnfilteredFlatTree.js +77 -0
- package/lib/utils/createUnfilteredFlatTree.js.map +1 -0
- package/lib/utils/createVisibleFlatTree.js +80 -0
- package/lib/utils/createVisibleFlatTree.js.map +1 -0
- package/lib/utils/flattenTree.js.map +1 -1
- package/lib-commonjs/hooks/index.js +1 -1
- package/lib-commonjs/hooks/index.js.map +1 -1
- package/lib-commonjs/hooks/useFlatTree.js +56 -0
- package/lib-commonjs/hooks/useFlatTree.js.map +1 -0
- package/lib-commonjs/hooks/useFlatTreeNavigation.js +6 -6
- package/lib-commonjs/hooks/useFlatTreeNavigation.js.map +1 -1
- package/lib-commonjs/index.js +3 -3
- package/lib-commonjs/index.js.map +1 -1
- package/lib-commonjs/utils/createUnfilteredFlatTree.js +84 -0
- package/lib-commonjs/utils/createUnfilteredFlatTree.js.map +1 -0
- package/lib-commonjs/utils/createVisibleFlatTree.js +87 -0
- package/lib-commonjs/utils/createVisibleFlatTree.js.map +1 -0
- package/lib-commonjs/utils/flattenTree.js.map +1 -1
- package/package.json +8 -8
- package/lib/hooks/useFlatTreeItems.js +0 -134
- package/lib/hooks/useFlatTreeItems.js.map +0 -1
- package/lib-commonjs/hooks/useFlatTreeItems.js +0 -141
- 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":["../src/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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"}
|