@fluentui/react-tree 9.0.0-beta.5 → 9.0.0-beta.7
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/.swcrc +30 -0
- package/CHANGELOG.json +145 -1
- package/CHANGELOG.md +39 -2
- package/dist/index.d.ts +26 -20
- package/lib/Tree.js.map +1 -1
- package/lib/TreeItem.js.map +1 -1
- package/lib/TreeItemLayout.js.map +1 -1
- package/lib/TreeItemPersonaLayout.js.map +1 -1
- package/lib/components/Tree/Tree.js.map +1 -1
- package/lib/components/Tree/Tree.types.js +1 -1
- package/lib/components/Tree/Tree.types.js.map +1 -1
- package/lib/components/Tree/index.js.map +1 -1
- package/lib/components/Tree/renderTree.js +1 -3
- package/lib/components/Tree/renderTree.js.map +1 -1
- package/lib/components/Tree/useTree.js +5 -4
- package/lib/components/Tree/useTree.js.map +1 -1
- package/lib/components/Tree/useTreeContextValues.js +3 -3
- package/lib/components/Tree/useTreeContextValues.js.map +1 -1
- package/lib/components/Tree/useTreeStyles.js.map +1 -1
- package/lib/components/TreeItem/TreeItem.js.map +1 -1
- package/lib/components/TreeItem/TreeItem.types.js +1 -1
- package/lib/components/TreeItem/TreeItem.types.js.map +1 -1
- package/lib/components/TreeItem/index.js.map +1 -1
- package/lib/components/TreeItem/renderTreeItem.js +2 -12
- package/lib/components/TreeItem/renderTreeItem.js.map +1 -1
- package/lib/components/TreeItem/useTreeItem.js.map +1 -1
- package/lib/components/TreeItem/useTreeItemContextValues.js.map +1 -1
- package/lib/components/TreeItem/useTreeItemStyles.js.map +1 -1
- package/lib/components/TreeItemLayout/TreeItemLayout.js.map +1 -1
- package/lib/components/TreeItemLayout/TreeItemLayout.types.js.map +1 -1
- package/lib/components/TreeItemLayout/index.js.map +1 -1
- package/lib/components/TreeItemLayout/renderTreeItemLayout.js +1 -9
- package/lib/components/TreeItemLayout/renderTreeItemLayout.js.map +1 -1
- package/lib/components/TreeItemLayout/useTreeItemLayout.js +1 -0
- package/lib/components/TreeItemLayout/useTreeItemLayout.js.map +1 -1
- package/lib/components/TreeItemLayout/useTreeItemLayoutStyles.js.map +1 -1
- package/lib/components/TreeItemPersonaLayout/TreeItemPersonaLayout.js.map +1 -1
- package/lib/components/TreeItemPersonaLayout/TreeItemPersonaLayout.types.js.map +1 -1
- package/lib/components/TreeItemPersonaLayout/index.js.map +1 -1
- package/lib/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js +2 -14
- package/lib/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js.map +1 -1
- package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js +1 -0
- package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js.map +1 -1
- package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutContextValues.js.map +1 -1
- package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.js.map +1 -1
- package/lib/contexts/index.js.map +1 -1
- package/lib/contexts/treeContext.js +1 -2
- package/lib/contexts/treeContext.js.map +1 -1
- package/lib/contexts/treeItemContext.js +2 -4
- package/lib/contexts/treeItemContext.js.map +1 -1
- package/lib/hooks/index.js.map +1 -1
- package/lib/hooks/useFlatTree.js +42 -22
- package/lib/hooks/useFlatTree.js.map +1 -1
- package/lib/hooks/useFlatTreeNavigation.js +7 -7
- package/lib/hooks/useFlatTreeNavigation.js.map +1 -1
- package/lib/hooks/useHTMLElementWalker.js +5 -5
- package/lib/hooks/useHTMLElementWalker.js.map +1 -1
- package/lib/hooks/useNestedTreeNavigation.js.map +1 -1
- package/lib/hooks/useOpenItemsState.js.map +1 -1
- package/lib/hooks/useRovingTabIndexes.js.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/utils/ImmutableSet.js.map +1 -1
- package/lib/utils/assert.js +1 -0
- package/lib/utils/assert.js.map +1 -1
- package/lib/utils/createFlatTreeItems.js +109 -0
- package/lib/utils/createFlatTreeItems.js.map +1 -0
- package/lib/utils/flattenTree.js +3 -4
- package/lib/utils/flattenTree.js.map +1 -1
- package/lib/utils/nextTypeAheadElement.js +2 -2
- package/lib/utils/nextTypeAheadElement.js.map +1 -1
- package/lib/utils/normalizeOpenItems.js.map +1 -1
- package/lib/utils/tokens.js.map +1 -1
- package/lib/utils/treeItemFilter.js.map +1 -1
- package/lib-commonjs/Tree.js +5 -4
- package/lib-commonjs/Tree.js.map +1 -1
- package/lib-commonjs/TreeItem.js +5 -4
- package/lib-commonjs/TreeItem.js.map +1 -1
- package/lib-commonjs/TreeItemLayout.js +5 -4
- package/lib-commonjs/TreeItemLayout.js.map +1 -1
- package/lib-commonjs/TreeItemPersonaLayout.js +5 -4
- package/lib-commonjs/TreeItemPersonaLayout.js.map +1 -1
- package/lib-commonjs/components/Tree/Tree.js +18 -22
- package/lib-commonjs/components/Tree/Tree.js.map +1 -1
- package/lib-commonjs/components/Tree/Tree.types.js +5 -2
- package/lib-commonjs/components/Tree/Tree.types.js.map +1 -1
- package/lib-commonjs/components/Tree/index.js +10 -9
- package/lib-commonjs/components/Tree/index.js.map +1 -1
- package/lib-commonjs/components/Tree/renderTree.js +16 -18
- package/lib-commonjs/components/Tree/renderTree.js.map +1 -1
- package/lib-commonjs/components/Tree/useTree.js +88 -101
- package/lib-commonjs/components/Tree/useTree.js.map +1 -1
- package/lib-commonjs/components/Tree/useTreeContextValues.js +22 -28
- package/lib-commonjs/components/Tree/useTreeContextValues.js.map +1 -1
- package/lib-commonjs/components/Tree/useTreeStyles.js +31 -20
- package/lib-commonjs/components/Tree/useTreeStyles.js.map +1 -1
- package/lib-commonjs/components/TreeItem/TreeItem.js +18 -17
- package/lib-commonjs/components/TreeItem/TreeItem.js.map +1 -1
- package/lib-commonjs/components/TreeItem/TreeItem.types.js +5 -3
- package/lib-commonjs/components/TreeItem/TreeItem.types.js.map +1 -1
- package/lib-commonjs/components/TreeItem/index.js +9 -8
- package/lib-commonjs/components/TreeItem/index.js.map +1 -1
- package/lib-commonjs/components/TreeItem/renderTreeItem.js +19 -32
- package/lib-commonjs/components/TreeItem/renderTreeItem.js.map +1 -1
- package/lib-commonjs/components/TreeItem/useTreeItem.js +229 -249
- package/lib-commonjs/components/TreeItem/useTreeItem.js.map +1 -1
- package/lib-commonjs/components/TreeItem/useTreeItemContextValues.js +24 -20
- package/lib-commonjs/components/TreeItem/useTreeItemContextValues.js.map +1 -1
- package/lib-commonjs/components/TreeItem/useTreeItemStyles.js +353 -188
- package/lib-commonjs/components/TreeItem/useTreeItemStyles.js.map +1 -1
- package/lib-commonjs/components/TreeItemLayout/TreeItemLayout.js +16 -15
- package/lib-commonjs/components/TreeItemLayout/TreeItemLayout.js.map +1 -1
- package/lib-commonjs/components/TreeItemLayout/TreeItemLayout.types.js +3 -2
- package/lib-commonjs/components/TreeItemLayout/TreeItemLayout.types.js.map +1 -1
- package/lib-commonjs/components/TreeItemLayout/index.js +9 -8
- package/lib-commonjs/components/TreeItemLayout/index.js.map +1 -1
- package/lib-commonjs/components/TreeItemLayout/renderTreeItemLayout.js +14 -27
- package/lib-commonjs/components/TreeItemLayout/renderTreeItemLayout.js.map +1 -1
- package/lib-commonjs/components/TreeItemLayout/useTreeItemLayout.js +42 -52
- package/lib-commonjs/components/TreeItemLayout/useTreeItemLayout.js.map +1 -1
- package/lib-commonjs/components/TreeItemLayout/useTreeItemLayoutStyles.js +126 -88
- package/lib-commonjs/components/TreeItemLayout/useTreeItemLayoutStyles.js.map +1 -1
- package/lib-commonjs/components/TreeItemPersonaLayout/TreeItemPersonaLayout.js +18 -17
- package/lib-commonjs/components/TreeItemPersonaLayout/TreeItemPersonaLayout.js.map +1 -1
- package/lib-commonjs/components/TreeItemPersonaLayout/TreeItemPersonaLayout.types.js +3 -2
- package/lib-commonjs/components/TreeItemPersonaLayout/TreeItemPersonaLayout.types.js.map +1 -1
- package/lib-commonjs/components/TreeItemPersonaLayout/index.js +9 -8
- package/lib-commonjs/components/TreeItemPersonaLayout/index.js.map +1 -1
- package/lib-commonjs/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js +17 -34
- package/lib-commonjs/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js.map +1 -1
- package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js +46 -61
- package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js.map +1 -1
- package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutContextValues.js +18 -15
- package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutContextValues.js.map +1 -1
- package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.js +165 -101
- package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.js.map +1 -1
- package/lib-commonjs/contexts/index.js +6 -5
- package/lib-commonjs/contexts/index.js.map +1 -1
- package/lib-commonjs/contexts/treeContext.js +25 -17
- package/lib-commonjs/contexts/treeContext.js.map +1 -1
- package/lib-commonjs/contexts/treeItemContext.js +20 -12
- package/lib-commonjs/contexts/treeItemContext.js.map +1 -1
- package/lib-commonjs/hooks/index.js +7 -6
- package/lib-commonjs/hooks/index.js.map +1 -1
- package/lib-commonjs/hooks/useFlatTree.js +74 -52
- package/lib-commonjs/hooks/useFlatTree.js.map +1 -1
- package/lib-commonjs/hooks/useFlatTreeNavigation.js +73 -72
- package/lib-commonjs/hooks/useFlatTreeNavigation.js.map +1 -1
- package/lib-commonjs/hooks/useHTMLElementWalker.js +94 -83
- package/lib-commonjs/hooks/useHTMLElementWalker.js.map +1 -1
- package/lib-commonjs/hooks/useNestedTreeNavigation.js +61 -58
- package/lib-commonjs/hooks/useNestedTreeNavigation.js.map +1 -1
- package/lib-commonjs/hooks/useOpenItemsState.js +32 -22
- package/lib-commonjs/hooks/useOpenItemsState.js.map +1 -1
- package/lib-commonjs/hooks/useRovingTabIndexes.js +56 -53
- package/lib-commonjs/hooks/useRovingTabIndexes.js.map +1 -1
- package/lib-commonjs/index.js +48 -180
- package/lib-commonjs/index.js.map +1 -1
- package/lib-commonjs/utils/ImmutableSet.js +39 -38
- package/lib-commonjs/utils/ImmutableSet.js.map +1 -1
- package/lib-commonjs/utils/assert.js +13 -9
- package/lib-commonjs/utils/assert.js.map +1 -1
- package/lib-commonjs/utils/createFlatTreeItems.js +126 -0
- package/lib-commonjs/utils/createFlatTreeItems.js.map +1 -0
- package/lib-commonjs/utils/flattenTree.js +25 -29
- package/lib-commonjs/utils/flattenTree.js.map +1 -1
- package/lib-commonjs/utils/nextTypeAheadElement.js +18 -16
- package/lib-commonjs/utils/nextTypeAheadElement.js.map +1 -1
- package/lib-commonjs/utils/normalizeOpenItems.js +13 -9
- package/lib-commonjs/utils/normalizeOpenItems.js.map +1 -1
- package/lib-commonjs/utils/tokens.js +30 -20
- package/lib-commonjs/utils/tokens.js.map +1 -1
- package/lib-commonjs/utils/treeItemFilter.js +9 -7
- package/lib-commonjs/utils/treeItemFilter.js.map +1 -1
- package/package.json +19 -15
- package/lib/utils/createUnfilteredFlatTree.js +0 -77
- package/lib/utils/createUnfilteredFlatTree.js.map +0 -1
- package/lib/utils/createVisibleFlatTree.js +0 -80
- package/lib/utils/createVisibleFlatTree.js.map +0 -1
- package/lib-commonjs/utils/createUnfilteredFlatTree.js +0 -84
- package/lib-commonjs/utils/createUnfilteredFlatTree.js.map +0 -1
- package/lib-commonjs/utils/createVisibleFlatTree.js +0 -87
- package/lib-commonjs/utils/createVisibleFlatTree.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fluentui/react-tree",
|
|
3
|
-
"version": "9.0.0-beta.
|
|
3
|
+
"version": "9.0.0-beta.7",
|
|
4
4
|
"description": "React components for building web experiences",
|
|
5
5
|
"main": "lib-commonjs/index.js",
|
|
6
6
|
"module": "lib/index.js",
|
|
@@ -18,7 +18,9 @@
|
|
|
18
18
|
"just": "just-scripts",
|
|
19
19
|
"lint": "just-scripts lint",
|
|
20
20
|
"test": "jest --passWithNoTests",
|
|
21
|
-
"
|
|
21
|
+
"e2e": "cypress run --component",
|
|
22
|
+
"e2e:local": "cypress open --component",
|
|
23
|
+
"generate-api": "just-scripts generate-api",
|
|
22
24
|
"type-check": "tsc -b tsconfig.json",
|
|
23
25
|
"storybook": "start-storybook",
|
|
24
26
|
"start": "yarn storybook"
|
|
@@ -26,25 +28,26 @@
|
|
|
26
28
|
"devDependencies": {
|
|
27
29
|
"@fluentui/eslint-plugin": "*",
|
|
28
30
|
"@fluentui/react-conformance": "*",
|
|
29
|
-
"@fluentui/react-conformance-griffel": "9.0.0-beta.
|
|
31
|
+
"@fluentui/react-conformance-griffel": "9.0.0-beta.20",
|
|
30
32
|
"@fluentui/scripts-api-extractor": "*",
|
|
31
33
|
"@fluentui/scripts-tasks": "*",
|
|
34
|
+
"@fluentui/scripts-cypress": "*",
|
|
32
35
|
"react-window": "^1.8.6"
|
|
33
36
|
},
|
|
34
37
|
"dependencies": {
|
|
35
|
-
"@fluentui/
|
|
36
|
-
"@fluentui/react-
|
|
37
|
-
"@fluentui/react-avatar": "^9.4.
|
|
38
|
-
"@fluentui/react-
|
|
39
|
-
"@fluentui/react-
|
|
40
|
-
"@fluentui/react-
|
|
41
|
-
"@fluentui/react-
|
|
42
|
-
"@fluentui/
|
|
43
|
-
"@fluentui/react-
|
|
44
|
-
"@fluentui/react-
|
|
45
|
-
"@fluentui/react-
|
|
38
|
+
"@fluentui/keyboard-keys": "^9.0.2",
|
|
39
|
+
"@fluentui/react-aria": "^9.3.15",
|
|
40
|
+
"@fluentui/react-avatar": "^9.4.6",
|
|
41
|
+
"@fluentui/react-button": "^9.3.6",
|
|
42
|
+
"@fluentui/react-context-selector": "^9.1.15",
|
|
43
|
+
"@fluentui/react-icons": "^2.0.196",
|
|
44
|
+
"@fluentui/react-portal": "^9.2.3",
|
|
45
|
+
"@fluentui/react-shared-contexts": "^9.3.3",
|
|
46
|
+
"@fluentui/react-tabster": "^9.6.2",
|
|
47
|
+
"@fluentui/react-theme": "^9.1.7",
|
|
48
|
+
"@fluentui/react-utilities": "^9.7.2",
|
|
46
49
|
"@griffel/react": "^1.5.2",
|
|
47
|
-
"
|
|
50
|
+
"@swc/helpers": "^0.4.14"
|
|
48
51
|
},
|
|
49
52
|
"peerDependencies": {
|
|
50
53
|
"@types/react": ">=16.8.0 <19.0.0",
|
|
@@ -62,6 +65,7 @@
|
|
|
62
65
|
"exports": {
|
|
63
66
|
".": {
|
|
64
67
|
"types": "./dist/index.d.ts",
|
|
68
|
+
"node": "./lib-commonjs/index.js",
|
|
65
69
|
"import": "./lib/index.js",
|
|
66
70
|
"require": "./lib-commonjs/index.js"
|
|
67
71
|
},
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* creates a list of flat tree items
|
|
3
|
-
* and provides a map to access each item by id
|
|
4
|
-
*/
|
|
5
|
-
export function createUnfilteredFlatTree(flatTreeItemProps) {
|
|
6
|
-
var _a;
|
|
7
|
-
const root = createRootFlatTreeItem();
|
|
8
|
-
const itemsPerId = new Map([[root.id, root]]);
|
|
9
|
-
const items = [];
|
|
10
|
-
for (let index = 0; index < flatTreeItemProps.length; index++) {
|
|
11
|
-
const {
|
|
12
|
-
parentId = flatTreeRootParentId,
|
|
13
|
-
...treeItemProps
|
|
14
|
-
} = flatTreeItemProps[index];
|
|
15
|
-
const nextItemProps = flatTreeItemProps[index + 1];
|
|
16
|
-
const currentParent = itemsPerId.get(parentId);
|
|
17
|
-
if (!currentParent) {
|
|
18
|
-
if (process.env.NODE_ENV === 'development') {
|
|
19
|
-
// eslint-disable-next-line no-console
|
|
20
|
-
console.error(`useFlatTree: item ${flatTreeItemProps[index].id} not properly initialized, make sure provided items are organized`);
|
|
21
|
-
}
|
|
22
|
-
break;
|
|
23
|
-
}
|
|
24
|
-
const isLeaf = (nextItemProps === null || nextItemProps === void 0 ? void 0 : nextItemProps.parentId) !== treeItemProps.id;
|
|
25
|
-
const currentLevel = ((_a = currentParent.level) !== null && _a !== void 0 ? _a : 0) + 1;
|
|
26
|
-
const currentChildrenSize = ++currentParent.childrenSize;
|
|
27
|
-
const flatTreeItem = {
|
|
28
|
-
id: treeItemProps.id,
|
|
29
|
-
getTreeItemProps: () => ({
|
|
30
|
-
...treeItemProps,
|
|
31
|
-
'aria-level': currentLevel,
|
|
32
|
-
'aria-posinset': currentChildrenSize,
|
|
33
|
-
'aria-setsize': currentParent.childrenSize,
|
|
34
|
-
leaf: isLeaf
|
|
35
|
-
}),
|
|
36
|
-
level: currentLevel,
|
|
37
|
-
parentId,
|
|
38
|
-
childrenSize: 0,
|
|
39
|
-
index: -1
|
|
40
|
-
};
|
|
41
|
-
itemsPerId.set(flatTreeItem.id, flatTreeItem);
|
|
42
|
-
items.push(flatTreeItem);
|
|
43
|
-
}
|
|
44
|
-
return {
|
|
45
|
-
items,
|
|
46
|
-
itemsPerId
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
export const flatTreeRootParentId = '__fuiFlatTreeRoot';
|
|
50
|
-
function createRootFlatTreeItem() {
|
|
51
|
-
return {
|
|
52
|
-
id: flatTreeRootParentId,
|
|
53
|
-
getTreeItemProps: () => {
|
|
54
|
-
if (process.env.NODE_ENV === 'development') {
|
|
55
|
-
// eslint-disable-next-line no-console
|
|
56
|
-
console.error('useFlatTree: internal error, trying to access treeitem props from invalid root element');
|
|
57
|
-
}
|
|
58
|
-
return {
|
|
59
|
-
id: flatTreeRootParentId,
|
|
60
|
-
'aria-setsize': -1,
|
|
61
|
-
'aria-level': -1,
|
|
62
|
-
'aria-posinset': -1,
|
|
63
|
-
leaf: true
|
|
64
|
-
};
|
|
65
|
-
},
|
|
66
|
-
childrenSize: 0,
|
|
67
|
-
get index() {
|
|
68
|
-
if (process.env.NODE_ENV === 'development') {
|
|
69
|
-
// eslint-disable-next-line no-console
|
|
70
|
-
console.error('useFlatTree: internal error, trying to access treeitem props from invalid root element');
|
|
71
|
-
}
|
|
72
|
-
return -1;
|
|
73
|
-
},
|
|
74
|
-
level: 0
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
//# sourceMappingURL=createUnfilteredFlatTree.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["createUnfilteredFlatTree","flatTreeItemProps","root","createRootFlatTreeItem","itemsPerId","Map","id","items","index","length","parentId","flatTreeRootParentId","treeItemProps","nextItemProps","currentParent","get","process","env","NODE_ENV","console","error","isLeaf","currentLevel","_a","level","currentChildrenSize","childrenSize","flatTreeItem","getTreeItemProps","leaf","set","push"],"sources":["../src/packages/react-components/react-tree/src/utils/createUnfilteredFlatTree.ts"],"sourcesContent":["import { FlatTreeItem, FlatTreeItemProps } from '../hooks/useFlatTree';\n\n/**\n * @internal\n */\nexport type UnfilteredFlatTree = {\n items: FlatTreeItem[];\n itemsPerId: Map<string, FlatTreeItem>;\n};\n\n/**\n * creates a list of flat tree items\n * and provides a map to access each item by id\n */\nexport function createUnfilteredFlatTree(flatTreeItemProps: FlatTreeItemProps[]): UnfilteredFlatTree {\n const root = createRootFlatTreeItem();\n const itemsPerId = new Map<string, FlatTreeItem>([[root.id, root]]);\n const items: FlatTreeItem[] = [];\n\n for (let index = 0; index < flatTreeItemProps.length; index++) {\n const { parentId = flatTreeRootParentId, ...treeItemProps } = flatTreeItemProps[index];\n\n const nextItemProps = flatTreeItemProps[index + 1] as FlatTreeItemProps | undefined;\n const currentParent = itemsPerId.get(parentId);\n if (!currentParent) {\n if (process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.error(\n `useFlatTree: item ${flatTreeItemProps[index].id} not properly initialized, make sure provided items are organized`,\n );\n }\n break;\n }\n const isLeaf = nextItemProps?.parentId !== treeItemProps.id;\n const currentLevel = (currentParent.level ?? 0) + 1;\n const currentChildrenSize = ++currentParent.childrenSize;\n\n const flatTreeItem: FlatTreeItem = {\n id: treeItemProps.id,\n getTreeItemProps: () => ({\n ...treeItemProps,\n 'aria-level': currentLevel,\n 'aria-posinset': currentChildrenSize,\n 'aria-setsize': currentParent.childrenSize,\n leaf: isLeaf,\n }),\n level: currentLevel,\n parentId,\n childrenSize: 0,\n index: -1,\n };\n itemsPerId.set(flatTreeItem.id, flatTreeItem);\n items.push(flatTreeItem);\n }\n\n return { items, itemsPerId };\n}\n\nexport const flatTreeRootParentId = '__fuiFlatTreeRoot';\n\nfunction createRootFlatTreeItem(): FlatTreeItem {\n return {\n id: flatTreeRootParentId,\n getTreeItemProps: () => {\n if (process.env.NODE_ENV === 'development') {\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 { id: flatTreeRootParentId, 'aria-setsize': -1, 'aria-level': -1, 'aria-posinset': -1, leaf: true };\n },\n childrenSize: 0,\n get index() {\n if (process.env.NODE_ENV === 'development') {\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"],"mappings":"AAUA;;;;AAIA,OAAM,SAAUA,wBAAwBA,CAACC,iBAAsC;;EAC7E,MAAMC,IAAI,GAAGC,sBAAsB,EAAE;EACrC,MAAMC,UAAU,GAAG,IAAIC,GAAG,CAAuB,CAAC,CAACH,IAAI,CAACI,EAAE,EAAEJ,IAAI,CAAC,CAAC,CAAC;EACnE,MAAMK,KAAK,GAAmB,EAAE;EAEhC,KAAK,IAAIC,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGP,iBAAiB,CAACQ,MAAM,EAAED,KAAK,EAAE,EAAE;IAC7D,MAAM;MAAEE,QAAQ,GAAGC,oBAAoB;MAAE,GAAGC;IAAa,CAAE,GAAGX,iBAAiB,CAACO,KAAK,CAAC;IAEtF,MAAMK,aAAa,GAAGZ,iBAAiB,CAACO,KAAK,GAAG,CAAC,CAAkC;IACnF,MAAMM,aAAa,GAAGV,UAAU,CAACW,GAAG,CAACL,QAAQ,CAAC;IAC9C,IAAI,CAACI,aAAa,EAAE;MAClB,IAAIE,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,aAAa,EAAE;QAC1C;QACAC,OAAO,CAACC,KAAK,CACX,qBAAqBnB,iBAAiB,CAACO,KAAK,CAAC,CAACF,EAAE,mEAAmE,CACpH;;MAEH;;IAEF,MAAMe,MAAM,GAAG,CAAAR,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEH,QAAQ,MAAKE,aAAa,CAACN,EAAE;IAC3D,MAAMgB,YAAY,GAAG,CAAC,CAAAC,EAAA,GAAAT,aAAa,CAACU,KAAK,cAAAD,EAAA,cAAAA,EAAA,GAAI,CAAC,IAAI,CAAC;IACnD,MAAME,mBAAmB,GAAG,EAAEX,aAAa,CAACY,YAAY;IAExD,MAAMC,YAAY,GAAiB;MACjCrB,EAAE,EAAEM,aAAa,CAACN,EAAE;MACpBsB,gBAAgB,EAAEA,CAAA,MAAO;QACvB,GAAGhB,aAAa;QAChB,YAAY,EAAEU,YAAY;QAC1B,eAAe,EAAEG,mBAAmB;QACpC,cAAc,EAAEX,aAAa,CAACY,YAAY;QAC1CG,IAAI,EAAER;OACP,CAAC;MACFG,KAAK,EAAEF,YAAY;MACnBZ,QAAQ;MACRgB,YAAY,EAAE,CAAC;MACflB,KAAK,EAAE,CAAC;KACT;IACDJ,UAAU,CAAC0B,GAAG,CAACH,YAAY,CAACrB,EAAE,EAAEqB,YAAY,CAAC;IAC7CpB,KAAK,CAACwB,IAAI,CAACJ,YAAY,CAAC;;EAG1B,OAAO;IAAEpB,KAAK;IAAEH;EAAU,CAAE;AAC9B;AAEA,OAAO,MAAMO,oBAAoB,GAAG,mBAAmB;AAEvD,SAASR,sBAAsBA,CAAA;EAC7B,OAAO;IACLG,EAAE,EAAEK,oBAAoB;IACxBiB,gBAAgB,EAAEA,CAAA,KAAK;MACrB,IAAIZ,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,aAAa,EAAE;QAC1C;QACAC,OAAO,CAACC,KAAK,CAAC,wFAAwF,CAAC;;MAEzG,OAAO;QAAEd,EAAE,EAAEK,oBAAoB;QAAE,cAAc,EAAE,CAAC,CAAC;QAAE,YAAY,EAAE,CAAC,CAAC;QAAE,eAAe,EAAE,CAAC,CAAC;QAAEkB,IAAI,EAAE;MAAI,CAAE;IAC5G,CAAC;IACDH,YAAY,EAAE,CAAC;IACf,IAAIlB,KAAKA,CAAA;MACP,IAAIQ,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,aAAa,EAAE;QAC1C;QACAC,OAAO,CAACC,KAAK,CAAC,wFAAwF,CAAC;;MAEzG,OAAO,CAAC,CAAC;IACX,CAAC;IACDI,KAAK,EAAE;GACR;AACH"}
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import { flatTreeRootParentId } from './createUnfilteredFlatTree';
|
|
2
|
-
import { treeDataTypes } from './tokens';
|
|
3
|
-
/**
|
|
4
|
-
* creates methods that depend on the unfilteredFlatTree and the current available openItems
|
|
5
|
-
*/
|
|
6
|
-
export function createVisibleFlatTree(unfilteredFlatTree, openItems) {
|
|
7
|
-
let visibleItems = null;
|
|
8
|
-
const getNextNavigableItem = data => {
|
|
9
|
-
var _a, _b, _c, _d;
|
|
10
|
-
const item = unfilteredFlatTree.itemsPerId.get(data.target.id);
|
|
11
|
-
if (!item || !visibleItems) {
|
|
12
|
-
return null;
|
|
13
|
-
}
|
|
14
|
-
switch (data.type) {
|
|
15
|
-
case treeDataTypes.arrowLeft:
|
|
16
|
-
return item.parentId ? (_a = unfilteredFlatTree.itemsPerId.get(item.parentId)) !== null && _a !== void 0 ? _a : null : null;
|
|
17
|
-
case treeDataTypes.arrowRight:
|
|
18
|
-
return (_b = visibleItems[item.index + 1]) !== null && _b !== void 0 ? _b : null;
|
|
19
|
-
case treeDataTypes.end:
|
|
20
|
-
return visibleItems[visibleItems.length - 1];
|
|
21
|
-
case treeDataTypes.home:
|
|
22
|
-
return visibleItems[0];
|
|
23
|
-
case treeDataTypes.arrowDown:
|
|
24
|
-
return (_c = visibleItems[item.index + 1]) !== null && _c !== void 0 ? _c : null;
|
|
25
|
-
case treeDataTypes.arrowUp:
|
|
26
|
-
return (_d = visibleItems[item.index - 1]) !== null && _d !== void 0 ? _d : null;
|
|
27
|
-
default:
|
|
28
|
-
return null;
|
|
29
|
-
}
|
|
30
|
-
};
|
|
31
|
-
function* makeVisibleItemsGenerator() {
|
|
32
|
-
var _a;
|
|
33
|
-
visibleItems = [];
|
|
34
|
-
for (let index = 0, visibleIndex = 0; index < unfilteredFlatTree.items.length; index++) {
|
|
35
|
-
const item = unfilteredFlatTree.items[index];
|
|
36
|
-
const parent = unfilteredFlatTree.itemsPerId.get((_a = item.parentId) !== null && _a !== void 0 ? _a : flatTreeRootParentId);
|
|
37
|
-
if (!parent) {
|
|
38
|
-
break;
|
|
39
|
-
}
|
|
40
|
-
if (isFlatTreeItemVisible(item, {
|
|
41
|
-
openItems,
|
|
42
|
-
unfilteredFlatTree
|
|
43
|
-
})) {
|
|
44
|
-
item.index = visibleIndex++;
|
|
45
|
-
visibleItems.push({
|
|
46
|
-
...item
|
|
47
|
-
});
|
|
48
|
-
yield item;
|
|
49
|
-
} else {
|
|
50
|
-
index += parent.childrenSize - 1 + item.childrenSize;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
return {
|
|
55
|
-
getNextNavigableItem,
|
|
56
|
-
items: () => {
|
|
57
|
-
return visibleItems || makeVisibleItemsGenerator();
|
|
58
|
-
}
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
function isFlatTreeItemVisible(item, {
|
|
62
|
-
openItems,
|
|
63
|
-
unfilteredFlatTree: flatTree
|
|
64
|
-
}) {
|
|
65
|
-
if (item.level === 1) {
|
|
66
|
-
return true;
|
|
67
|
-
}
|
|
68
|
-
while (item.parentId && item.parentId !== flatTreeRootParentId) {
|
|
69
|
-
if (!openItems.has(item.parentId)) {
|
|
70
|
-
return false;
|
|
71
|
-
}
|
|
72
|
-
const parent = flatTree.itemsPerId.get(item.parentId);
|
|
73
|
-
if (!parent) {
|
|
74
|
-
return false;
|
|
75
|
-
}
|
|
76
|
-
item = parent;
|
|
77
|
-
}
|
|
78
|
-
return true;
|
|
79
|
-
}
|
|
80
|
-
//# sourceMappingURL=createVisibleFlatTree.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["flatTreeRootParentId","treeDataTypes","createVisibleFlatTree","unfilteredFlatTree","openItems","visibleItems","getNextNavigableItem","data","item","itemsPerId","get","target","id","type","arrowLeft","parentId","_a","arrowRight","_b","index","end","length","home","arrowDown","_c","arrowUp","_d","makeVisibleItemsGenerator","visibleIndex","items","parent","isFlatTreeItemVisible","push","childrenSize","flatTree","level","has"],"sources":["../src/packages/react-components/react-tree/src/utils/createVisibleFlatTree.ts"],"sourcesContent":["import { FlatTree, FlatTreeItem } from '../hooks/useFlatTree';\nimport { TreeItemId, TreeNavigationData_unstable } from '../Tree';\nimport { flatTreeRootParentId, UnfilteredFlatTree } from './createUnfilteredFlatTree';\nimport { ImmutableSet } from './ImmutableSet';\nimport { treeDataTypes } from './tokens';\n\n/**\n * creates methods that depend on the unfilteredFlatTree and the current available openItems\n */\nexport function createVisibleFlatTree(\n unfilteredFlatTree: UnfilteredFlatTree,\n openItems: ImmutableSet<TreeItemId>,\n): Pick<FlatTree, 'items' | 'getNextNavigableItem'> {\n let visibleItems: FlatTreeItem[] | null = null;\n\n const getNextNavigableItem = (data: TreeNavigationData_unstable): FlatTreeItem | null => {\n const item = unfilteredFlatTree.itemsPerId.get(data.target.id);\n if (!item || !visibleItems) {\n return null;\n }\n switch (data.type) {\n case treeDataTypes.arrowLeft:\n return item.parentId ? unfilteredFlatTree.itemsPerId.get(item.parentId) ?? null : null;\n case treeDataTypes.arrowRight:\n return visibleItems[item.index + 1] ?? null;\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] ?? null;\n case treeDataTypes.arrowUp:\n return visibleItems[item.index - 1] ?? null;\n default:\n return null;\n }\n };\n\n function* makeVisibleItemsGenerator() {\n visibleItems = [];\n for (let index = 0, visibleIndex = 0; index < unfilteredFlatTree.items.length; index++) {\n const item = unfilteredFlatTree.items[index];\n const parent = unfilteredFlatTree.itemsPerId.get(item.parentId ?? flatTreeRootParentId);\n if (!parent) {\n break;\n }\n if (isFlatTreeItemVisible(item, { openItems, unfilteredFlatTree })) {\n item.index = visibleIndex++;\n visibleItems.push({ ...item });\n yield item;\n } else {\n index += parent.childrenSize - 1 + item.childrenSize;\n }\n }\n }\n\n return {\n getNextNavigableItem,\n items: () => {\n return visibleItems || makeVisibleItemsGenerator();\n },\n };\n}\n\nfunction isFlatTreeItemVisible(\n item: FlatTreeItem,\n {\n openItems,\n unfilteredFlatTree: flatTree,\n }: {\n openItems: ImmutableSet<TreeItemId>;\n unfilteredFlatTree: UnfilteredFlatTree;\n },\n) {\n if (item.level === 1) {\n return true;\n }\n while (item.parentId && item.parentId !== flatTreeRootParentId) {\n if (!openItems.has(item.parentId)) {\n return false;\n }\n const parent = flatTree.itemsPerId.get(item.parentId);\n if (!parent) {\n return false;\n }\n item = parent;\n }\n\n return true;\n}\n"],"mappings":"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"}
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.flatTreeRootParentId = exports.createUnfilteredFlatTree = void 0;
|
|
7
|
-
/**
|
|
8
|
-
* creates a list of flat tree items
|
|
9
|
-
* and provides a map to access each item by id
|
|
10
|
-
*/
|
|
11
|
-
function createUnfilteredFlatTree(flatTreeItemProps) {
|
|
12
|
-
var _a;
|
|
13
|
-
const root = createRootFlatTreeItem();
|
|
14
|
-
const itemsPerId = new Map([[root.id, root]]);
|
|
15
|
-
const items = [];
|
|
16
|
-
for (let index = 0; index < flatTreeItemProps.length; index++) {
|
|
17
|
-
const {
|
|
18
|
-
parentId = exports.flatTreeRootParentId,
|
|
19
|
-
...treeItemProps
|
|
20
|
-
} = flatTreeItemProps[index];
|
|
21
|
-
const nextItemProps = flatTreeItemProps[index + 1];
|
|
22
|
-
const currentParent = itemsPerId.get(parentId);
|
|
23
|
-
if (!currentParent) {
|
|
24
|
-
if (process.env.NODE_ENV === 'development') {
|
|
25
|
-
// eslint-disable-next-line no-console
|
|
26
|
-
console.error(`useFlatTree: item ${flatTreeItemProps[index].id} not properly initialized, make sure provided items are organized`);
|
|
27
|
-
}
|
|
28
|
-
break;
|
|
29
|
-
}
|
|
30
|
-
const isLeaf = (nextItemProps === null || nextItemProps === void 0 ? void 0 : nextItemProps.parentId) !== treeItemProps.id;
|
|
31
|
-
const currentLevel = ((_a = currentParent.level) !== null && _a !== void 0 ? _a : 0) + 1;
|
|
32
|
-
const currentChildrenSize = ++currentParent.childrenSize;
|
|
33
|
-
const flatTreeItem = {
|
|
34
|
-
id: treeItemProps.id,
|
|
35
|
-
getTreeItemProps: () => ({
|
|
36
|
-
...treeItemProps,
|
|
37
|
-
'aria-level': currentLevel,
|
|
38
|
-
'aria-posinset': currentChildrenSize,
|
|
39
|
-
'aria-setsize': currentParent.childrenSize,
|
|
40
|
-
leaf: isLeaf
|
|
41
|
-
}),
|
|
42
|
-
level: currentLevel,
|
|
43
|
-
parentId,
|
|
44
|
-
childrenSize: 0,
|
|
45
|
-
index: -1
|
|
46
|
-
};
|
|
47
|
-
itemsPerId.set(flatTreeItem.id, flatTreeItem);
|
|
48
|
-
items.push(flatTreeItem);
|
|
49
|
-
}
|
|
50
|
-
return {
|
|
51
|
-
items,
|
|
52
|
-
itemsPerId
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
exports.createUnfilteredFlatTree = createUnfilteredFlatTree;
|
|
56
|
-
exports.flatTreeRootParentId = '__fuiFlatTreeRoot';
|
|
57
|
-
function createRootFlatTreeItem() {
|
|
58
|
-
return {
|
|
59
|
-
id: exports.flatTreeRootParentId,
|
|
60
|
-
getTreeItemProps: () => {
|
|
61
|
-
if (process.env.NODE_ENV === 'development') {
|
|
62
|
-
// eslint-disable-next-line no-console
|
|
63
|
-
console.error('useFlatTree: internal error, trying to access treeitem props from invalid root element');
|
|
64
|
-
}
|
|
65
|
-
return {
|
|
66
|
-
id: exports.flatTreeRootParentId,
|
|
67
|
-
'aria-setsize': -1,
|
|
68
|
-
'aria-level': -1,
|
|
69
|
-
'aria-posinset': -1,
|
|
70
|
-
leaf: true
|
|
71
|
-
};
|
|
72
|
-
},
|
|
73
|
-
childrenSize: 0,
|
|
74
|
-
get index() {
|
|
75
|
-
if (process.env.NODE_ENV === 'development') {
|
|
76
|
-
// eslint-disable-next-line no-console
|
|
77
|
-
console.error('useFlatTree: internal error, trying to access treeitem props from invalid root element');
|
|
78
|
-
}
|
|
79
|
-
return -1;
|
|
80
|
-
},
|
|
81
|
-
level: 0
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
//# sourceMappingURL=createUnfilteredFlatTree.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["createUnfilteredFlatTree","flatTreeItemProps","root","createRootFlatTreeItem","itemsPerId","Map","id","items","index","length","parentId","exports","flatTreeRootParentId","treeItemProps","nextItemProps","currentParent","get","process","env","NODE_ENV","console","error","isLeaf","currentLevel","_a","level","currentChildrenSize","childrenSize","flatTreeItem","getTreeItemProps","leaf","set","push"],"sources":["../src/packages/react-components/react-tree/src/utils/createUnfilteredFlatTree.ts"],"sourcesContent":["import { FlatTreeItem, FlatTreeItemProps } from '../hooks/useFlatTree';\n\n/**\n * @internal\n */\nexport type UnfilteredFlatTree = {\n items: FlatTreeItem[];\n itemsPerId: Map<string, FlatTreeItem>;\n};\n\n/**\n * creates a list of flat tree items\n * and provides a map to access each item by id\n */\nexport function createUnfilteredFlatTree(flatTreeItemProps: FlatTreeItemProps[]): UnfilteredFlatTree {\n const root = createRootFlatTreeItem();\n const itemsPerId = new Map<string, FlatTreeItem>([[root.id, root]]);\n const items: FlatTreeItem[] = [];\n\n for (let index = 0; index < flatTreeItemProps.length; index++) {\n const { parentId = flatTreeRootParentId, ...treeItemProps } = flatTreeItemProps[index];\n\n const nextItemProps = flatTreeItemProps[index + 1] as FlatTreeItemProps | undefined;\n const currentParent = itemsPerId.get(parentId);\n if (!currentParent) {\n if (process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.error(\n `useFlatTree: item ${flatTreeItemProps[index].id} not properly initialized, make sure provided items are organized`,\n );\n }\n break;\n }\n const isLeaf = nextItemProps?.parentId !== treeItemProps.id;\n const currentLevel = (currentParent.level ?? 0) + 1;\n const currentChildrenSize = ++currentParent.childrenSize;\n\n const flatTreeItem: FlatTreeItem = {\n id: treeItemProps.id,\n getTreeItemProps: () => ({\n ...treeItemProps,\n 'aria-level': currentLevel,\n 'aria-posinset': currentChildrenSize,\n 'aria-setsize': currentParent.childrenSize,\n leaf: isLeaf,\n }),\n level: currentLevel,\n parentId,\n childrenSize: 0,\n index: -1,\n };\n itemsPerId.set(flatTreeItem.id, flatTreeItem);\n items.push(flatTreeItem);\n }\n\n return { items, itemsPerId };\n}\n\nexport const flatTreeRootParentId = '__fuiFlatTreeRoot';\n\nfunction createRootFlatTreeItem(): FlatTreeItem {\n return {\n id: flatTreeRootParentId,\n getTreeItemProps: () => {\n if (process.env.NODE_ENV === 'development') {\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 { id: flatTreeRootParentId, 'aria-setsize': -1, 'aria-level': -1, 'aria-posinset': -1, leaf: true };\n },\n childrenSize: 0,\n get index() {\n if (process.env.NODE_ENV === 'development') {\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"],"mappings":";;;;;;AAUA;;;;AAIA,SAAgBA,wBAAwBA,CAACC,iBAAsC;;EAC7E,MAAMC,IAAI,GAAGC,sBAAsB,EAAE;EACrC,MAAMC,UAAU,GAAG,IAAIC,GAAG,CAAuB,CAAC,CAACH,IAAI,CAACI,EAAE,EAAEJ,IAAI,CAAC,CAAC,CAAC;EACnE,MAAMK,KAAK,GAAmB,EAAE;EAEhC,KAAK,IAAIC,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGP,iBAAiB,CAACQ,MAAM,EAAED,KAAK,EAAE,EAAE;IAC7D,MAAM;MAAEE,QAAQ,GAAGC,OAAA,CAAAC,oBAAoB;MAAE,GAAGC;IAAa,CAAE,GAAGZ,iBAAiB,CAACO,KAAK,CAAC;IAEtF,MAAMM,aAAa,GAAGb,iBAAiB,CAACO,KAAK,GAAG,CAAC,CAAkC;IACnF,MAAMO,aAAa,GAAGX,UAAU,CAACY,GAAG,CAACN,QAAQ,CAAC;IAC9C,IAAI,CAACK,aAAa,EAAE;MAClB,IAAIE,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,aAAa,EAAE;QAC1C;QACAC,OAAO,CAACC,KAAK,CACX,qBAAqBpB,iBAAiB,CAACO,KAAK,CAAC,CAACF,EAAE,mEAAmE,CACpH;;MAEH;;IAEF,MAAMgB,MAAM,GAAG,CAAAR,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEJ,QAAQ,MAAKG,aAAa,CAACP,EAAE;IAC3D,MAAMiB,YAAY,GAAG,CAAC,CAAAC,EAAA,GAAAT,aAAa,CAACU,KAAK,cAAAD,EAAA,cAAAA,EAAA,GAAI,CAAC,IAAI,CAAC;IACnD,MAAME,mBAAmB,GAAG,EAAEX,aAAa,CAACY,YAAY;IAExD,MAAMC,YAAY,GAAiB;MACjCtB,EAAE,EAAEO,aAAa,CAACP,EAAE;MACpBuB,gBAAgB,EAAEA,CAAA,MAAO;QACvB,GAAGhB,aAAa;QAChB,YAAY,EAAEU,YAAY;QAC1B,eAAe,EAAEG,mBAAmB;QACpC,cAAc,EAAEX,aAAa,CAACY,YAAY;QAC1CG,IAAI,EAAER;OACP,CAAC;MACFG,KAAK,EAAEF,YAAY;MACnBb,QAAQ;MACRiB,YAAY,EAAE,CAAC;MACfnB,KAAK,EAAE,CAAC;KACT;IACDJ,UAAU,CAAC2B,GAAG,CAACH,YAAY,CAACtB,EAAE,EAAEsB,YAAY,CAAC;IAC7CrB,KAAK,CAACyB,IAAI,CAACJ,YAAY,CAAC;;EAG1B,OAAO;IAAErB,KAAK;IAAEH;EAAU,CAAE;AAC9B;AA1CAO,OAAA,CAAAX,wBAAA,GAAAA,wBAAA;AA4CaW,OAAA,CAAAC,oBAAoB,GAAG,mBAAmB;AAEvD,SAAST,sBAAsBA,CAAA;EAC7B,OAAO;IACLG,EAAE,EAAEK,OAAA,CAAAC,oBAAoB;IACxBiB,gBAAgB,EAAEA,CAAA,KAAK;MACrB,IAAIZ,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,aAAa,EAAE;QAC1C;QACAC,OAAO,CAACC,KAAK,CAAC,wFAAwF,CAAC;;MAEzG,OAAO;QAAEf,EAAE,EAAEK,OAAA,CAAAC,oBAAoB;QAAE,cAAc,EAAE,CAAC,CAAC;QAAE,YAAY,EAAE,CAAC,CAAC;QAAE,eAAe,EAAE,CAAC,CAAC;QAAEkB,IAAI,EAAE;MAAI,CAAE;IAC5G,CAAC;IACDH,YAAY,EAAE,CAAC;IACf,IAAInB,KAAKA,CAAA;MACP,IAAIS,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,aAAa,EAAE;QAC1C;QACAC,OAAO,CAACC,KAAK,CAAC,wFAAwF,CAAC;;MAEzG,OAAO,CAAC,CAAC;IACX,CAAC;IACDI,KAAK,EAAE;GACR;AACH"}
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.createVisibleFlatTree = void 0;
|
|
7
|
-
const createUnfilteredFlatTree_1 = /*#__PURE__*/require("./createUnfilteredFlatTree");
|
|
8
|
-
const tokens_1 = /*#__PURE__*/require("./tokens");
|
|
9
|
-
/**
|
|
10
|
-
* creates methods that depend on the unfilteredFlatTree and the current available openItems
|
|
11
|
-
*/
|
|
12
|
-
function createVisibleFlatTree(unfilteredFlatTree, openItems) {
|
|
13
|
-
let visibleItems = null;
|
|
14
|
-
const getNextNavigableItem = data => {
|
|
15
|
-
var _a, _b, _c, _d;
|
|
16
|
-
const item = unfilteredFlatTree.itemsPerId.get(data.target.id);
|
|
17
|
-
if (!item || !visibleItems) {
|
|
18
|
-
return null;
|
|
19
|
-
}
|
|
20
|
-
switch (data.type) {
|
|
21
|
-
case tokens_1.treeDataTypes.arrowLeft:
|
|
22
|
-
return item.parentId ? (_a = unfilteredFlatTree.itemsPerId.get(item.parentId)) !== null && _a !== void 0 ? _a : null : null;
|
|
23
|
-
case tokens_1.treeDataTypes.arrowRight:
|
|
24
|
-
return (_b = visibleItems[item.index + 1]) !== null && _b !== void 0 ? _b : null;
|
|
25
|
-
case tokens_1.treeDataTypes.end:
|
|
26
|
-
return visibleItems[visibleItems.length - 1];
|
|
27
|
-
case tokens_1.treeDataTypes.home:
|
|
28
|
-
return visibleItems[0];
|
|
29
|
-
case tokens_1.treeDataTypes.arrowDown:
|
|
30
|
-
return (_c = visibleItems[item.index + 1]) !== null && _c !== void 0 ? _c : null;
|
|
31
|
-
case tokens_1.treeDataTypes.arrowUp:
|
|
32
|
-
return (_d = visibleItems[item.index - 1]) !== null && _d !== void 0 ? _d : null;
|
|
33
|
-
default:
|
|
34
|
-
return null;
|
|
35
|
-
}
|
|
36
|
-
};
|
|
37
|
-
function* makeVisibleItemsGenerator() {
|
|
38
|
-
var _a;
|
|
39
|
-
visibleItems = [];
|
|
40
|
-
for (let index = 0, visibleIndex = 0; index < unfilteredFlatTree.items.length; index++) {
|
|
41
|
-
const item = unfilteredFlatTree.items[index];
|
|
42
|
-
const parent = unfilteredFlatTree.itemsPerId.get((_a = item.parentId) !== null && _a !== void 0 ? _a : createUnfilteredFlatTree_1.flatTreeRootParentId);
|
|
43
|
-
if (!parent) {
|
|
44
|
-
break;
|
|
45
|
-
}
|
|
46
|
-
if (isFlatTreeItemVisible(item, {
|
|
47
|
-
openItems,
|
|
48
|
-
unfilteredFlatTree
|
|
49
|
-
})) {
|
|
50
|
-
item.index = visibleIndex++;
|
|
51
|
-
visibleItems.push({
|
|
52
|
-
...item
|
|
53
|
-
});
|
|
54
|
-
yield item;
|
|
55
|
-
} else {
|
|
56
|
-
index += parent.childrenSize - 1 + item.childrenSize;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
return {
|
|
61
|
-
getNextNavigableItem,
|
|
62
|
-
items: () => {
|
|
63
|
-
return visibleItems || makeVisibleItemsGenerator();
|
|
64
|
-
}
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
exports.createVisibleFlatTree = createVisibleFlatTree;
|
|
68
|
-
function isFlatTreeItemVisible(item, {
|
|
69
|
-
openItems,
|
|
70
|
-
unfilteredFlatTree: flatTree
|
|
71
|
-
}) {
|
|
72
|
-
if (item.level === 1) {
|
|
73
|
-
return true;
|
|
74
|
-
}
|
|
75
|
-
while (item.parentId && item.parentId !== createUnfilteredFlatTree_1.flatTreeRootParentId) {
|
|
76
|
-
if (!openItems.has(item.parentId)) {
|
|
77
|
-
return false;
|
|
78
|
-
}
|
|
79
|
-
const parent = flatTree.itemsPerId.get(item.parentId);
|
|
80
|
-
if (!parent) {
|
|
81
|
-
return false;
|
|
82
|
-
}
|
|
83
|
-
item = parent;
|
|
84
|
-
}
|
|
85
|
-
return true;
|
|
86
|
-
}
|
|
87
|
-
//# sourceMappingURL=createVisibleFlatTree.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["createUnfilteredFlatTree_1","require","tokens_1","createVisibleFlatTree","unfilteredFlatTree","openItems","visibleItems","getNextNavigableItem","data","item","itemsPerId","get","target","id","type","treeDataTypes","arrowLeft","parentId","_a","arrowRight","_b","index","end","length","home","arrowDown","_c","arrowUp","_d","makeVisibleItemsGenerator","visibleIndex","items","parent","flatTreeRootParentId","isFlatTreeItemVisible","push","childrenSize","exports","flatTree","level","has"],"sources":["../src/packages/react-components/react-tree/src/utils/createVisibleFlatTree.ts"],"sourcesContent":["import { FlatTree, FlatTreeItem } from '../hooks/useFlatTree';\nimport { TreeItemId, TreeNavigationData_unstable } from '../Tree';\nimport { flatTreeRootParentId, UnfilteredFlatTree } from './createUnfilteredFlatTree';\nimport { ImmutableSet } from './ImmutableSet';\nimport { treeDataTypes } from './tokens';\n\n/**\n * creates methods that depend on the unfilteredFlatTree and the current available openItems\n */\nexport function createVisibleFlatTree(\n unfilteredFlatTree: UnfilteredFlatTree,\n openItems: ImmutableSet<TreeItemId>,\n): Pick<FlatTree, 'items' | 'getNextNavigableItem'> {\n let visibleItems: FlatTreeItem[] | null = null;\n\n const getNextNavigableItem = (data: TreeNavigationData_unstable): FlatTreeItem | null => {\n const item = unfilteredFlatTree.itemsPerId.get(data.target.id);\n if (!item || !visibleItems) {\n return null;\n }\n switch (data.type) {\n case treeDataTypes.arrowLeft:\n return item.parentId ? unfilteredFlatTree.itemsPerId.get(item.parentId) ?? null : null;\n case treeDataTypes.arrowRight:\n return visibleItems[item.index + 1] ?? null;\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] ?? null;\n case treeDataTypes.arrowUp:\n return visibleItems[item.index - 1] ?? null;\n default:\n return null;\n }\n };\n\n function* makeVisibleItemsGenerator() {\n visibleItems = [];\n for (let index = 0, visibleIndex = 0; index < unfilteredFlatTree.items.length; index++) {\n const item = unfilteredFlatTree.items[index];\n const parent = unfilteredFlatTree.itemsPerId.get(item.parentId ?? flatTreeRootParentId);\n if (!parent) {\n break;\n }\n if (isFlatTreeItemVisible(item, { openItems, unfilteredFlatTree })) {\n item.index = visibleIndex++;\n visibleItems.push({ ...item });\n yield item;\n } else {\n index += parent.childrenSize - 1 + item.childrenSize;\n }\n }\n }\n\n return {\n getNextNavigableItem,\n items: () => {\n return visibleItems || makeVisibleItemsGenerator();\n },\n };\n}\n\nfunction isFlatTreeItemVisible(\n item: FlatTreeItem,\n {\n openItems,\n unfilteredFlatTree: flatTree,\n }: {\n openItems: ImmutableSet<TreeItemId>;\n unfilteredFlatTree: UnfilteredFlatTree;\n },\n) {\n if (item.level === 1) {\n return true;\n }\n while (item.parentId && item.parentId !== flatTreeRootParentId) {\n if (!openItems.has(item.parentId)) {\n return false;\n }\n const parent = flatTree.itemsPerId.get(item.parentId);\n if (!parent) {\n return false;\n }\n item = parent;\n }\n\n return true;\n}\n"],"mappings":";;;;;;AAEA,MAAAA,0BAAA,gBAAAC,OAAA;AAEA,MAAAC,QAAA,gBAAAD,OAAA;AAEA;;;AAGA,SAAgBE,qBAAqBA,CACnCC,kBAAsC,EACtCC,SAAmC;EAEnC,IAAIC,YAAY,GAA0B,IAAI;EAE9C,MAAMC,oBAAoB,GAAIC,IAAiC,IAAyB;;IACtF,MAAMC,IAAI,GAAGL,kBAAkB,CAACM,UAAU,CAACC,GAAG,CAACH,IAAI,CAACI,MAAM,CAACC,EAAE,CAAC;IAC9D,IAAI,CAACJ,IAAI,IAAI,CAACH,YAAY,EAAE;MAC1B,OAAO,IAAI;;IAEb,QAAQE,IAAI,CAACM,IAAI;MACf,KAAKZ,QAAA,CAAAa,aAAa,CAACC,SAAS;QAC1B,OAAOP,IAAI,CAACQ,QAAQ,GAAG,CAAAC,EAAA,GAAAd,kBAAkB,CAACM,UAAU,CAACC,GAAG,CAACF,IAAI,CAACQ,QAAQ,CAAC,cAAAC,EAAA,cAAAA,EAAA,GAAI,IAAI,GAAG,IAAI;MACxF,KAAKhB,QAAA,CAAAa,aAAa,CAACI,UAAU;QAC3B,OAAO,CAAAC,EAAA,GAAAd,YAAY,CAACG,IAAI,CAACY,KAAK,GAAG,CAAC,CAAC,cAAAD,EAAA,cAAAA,EAAA,GAAI,IAAI;MAC7C,KAAKlB,QAAA,CAAAa,aAAa,CAACO,GAAG;QACpB,OAAOhB,YAAY,CAACA,YAAY,CAACiB,MAAM,GAAG,CAAC,CAAC;MAC9C,KAAKrB,QAAA,CAAAa,aAAa,CAACS,IAAI;QACrB,OAAOlB,YAAY,CAAC,CAAC,CAAC;MACxB,KAAKJ,QAAA,CAAAa,aAAa,CAACU,SAAS;QAC1B,OAAO,CAAAC,EAAA,GAAApB,YAAY,CAACG,IAAI,CAACY,KAAK,GAAG,CAAC,CAAC,cAAAK,EAAA,cAAAA,EAAA,GAAI,IAAI;MAC7C,KAAKxB,QAAA,CAAAa,aAAa,CAACY,OAAO;QACxB,OAAO,CAAAC,EAAA,GAAAtB,YAAY,CAACG,IAAI,CAACY,KAAK,GAAG,CAAC,CAAC,cAAAO,EAAA,cAAAA,EAAA,GAAI,IAAI;MAC7C;QACE,OAAO,IAAI;IAAC;EAElB,CAAC;EAED,UAAUC,yBAAyBA,CAAA;;IACjCvB,YAAY,GAAG,EAAE;IACjB,KAAK,IAAIe,KAAK,GAAG,CAAC,EAAES,YAAY,GAAG,CAAC,EAAET,KAAK,GAAGjB,kBAAkB,CAAC2B,KAAK,CAACR,MAAM,EAAEF,KAAK,EAAE,EAAE;MACtF,MAAMZ,IAAI,GAAGL,kBAAkB,CAAC2B,KAAK,CAACV,KAAK,CAAC;MAC5C,MAAMW,MAAM,GAAG5B,kBAAkB,CAACM,UAAU,CAACC,GAAG,CAAC,CAAAO,EAAA,GAAAT,IAAI,CAACQ,QAAQ,cAAAC,EAAA,cAAAA,EAAA,GAAIlB,0BAAA,CAAAiC,oBAAoB,CAAC;MACvF,IAAI,CAACD,MAAM,EAAE;QACX;;MAEF,IAAIE,qBAAqB,CAACzB,IAAI,EAAE;QAAEJ,SAAS;QAAED;MAAkB,CAAE,CAAC,EAAE;QAClEK,IAAI,CAACY,KAAK,GAAGS,YAAY,EAAE;QAC3BxB,YAAY,CAAC6B,IAAI,CAAC;UAAE,GAAG1B;QAAI,CAAE,CAAC;QAC9B,MAAMA,IAAI;OACX,MAAM;QACLY,KAAK,IAAIW,MAAM,CAACI,YAAY,GAAG,CAAC,GAAG3B,IAAI,CAAC2B,YAAY;;;EAG1D;EAEA,OAAO;IACL7B,oBAAoB;IACpBwB,KAAK,EAAEA,CAAA,KAAK;MACV,OAAOzB,YAAY,IAAIuB,yBAAyB,EAAE;IACpD;GACD;AACH;AArDAQ,OAAA,CAAAlC,qBAAA,GAAAA,qBAAA;AAuDA,SAAS+B,qBAAqBA,CAC5BzB,IAAkB,EAClB;EACEJ,SAAS;EACTD,kBAAkB,EAAEkC;AAAQ,CAI7B;EAED,IAAI7B,IAAI,CAAC8B,KAAK,KAAK,CAAC,EAAE;IACpB,OAAO,IAAI;;EAEb,OAAO9B,IAAI,CAACQ,QAAQ,IAAIR,IAAI,CAACQ,QAAQ,KAAKjB,0BAAA,CAAAiC,oBAAoB,EAAE;IAC9D,IAAI,CAAC5B,SAAS,CAACmC,GAAG,CAAC/B,IAAI,CAACQ,QAAQ,CAAC,EAAE;MACjC,OAAO,KAAK;;IAEd,MAAMe,MAAM,GAAGM,QAAQ,CAAC5B,UAAU,CAACC,GAAG,CAACF,IAAI,CAACQ,QAAQ,CAAC;IACrD,IAAI,CAACe,MAAM,EAAE;MACX,OAAO,KAAK;;IAEdvB,IAAI,GAAGuB,MAAM;;EAGf,OAAO,IAAI;AACb"}
|