@digital-realty/ix-generic-tree 2.0.2 → 2.0.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.
@@ -130,7 +130,7 @@ export function resetCheckedAndIndeterminateStatus(node) {
130
130
  export function getCheckedAndIndeterminateNodesOnly(node) {
131
131
  const checkedNodes = [];
132
132
  function getCheckedNodes(n) {
133
- if (n.checked || n.indeterminate) {
133
+ if (n.checked || n.indeterminate || n.inherited) {
134
134
  checkedNodes.push(n);
135
135
  }
136
136
  if (n.children) {
@@ -1 +1 @@
1
- {"version":3,"file":"ix-generic-tree-utils.js","sourceRoot":"","sources":["../src/ix-generic-tree-utils.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable no-nested-ternary */\nimport type { IGenericTreeNode } from './ix-generic-tree-types.js';\n\nexport const IconTypeMap = {\n Global: 'globe',\n Continent: 'map',\n Country: 'flag',\n City: 'domain',\n Campus: 'device_hub',\n Site: 'location_on',\n Floor: 'view_stream',\n Room: 'meeting_room',\n Cage: 'view_column',\n Row: 'view_headline',\n Cabinet: 'dock',\n Panel: 'calendar_view_day',\n Port: '',\n Fallback: 'chevron_right',\n};\n\nexport function findChildNodeById(\n node: IGenericTreeNode,\n id: string,\n): IGenericTreeNode | null {\n if (node.id === id) {\n return node;\n }\n if (!node.children) {\n return null;\n }\n\n for (const childNode of node.children) {\n const foundNode = findChildNodeById(childNode, id);\n\n if (foundNode) {\n return foundNode;\n }\n }\n\n return null;\n}\n\nexport function updateNodeCheckedStatus(\n node: IGenericTreeNode,\n rootNode: IGenericTreeNode,\n): void {\n /* eslint-disable no-param-reassign */\n function updateChildren(n: IGenericTreeNode, checked = false): void {\n n.indeterminate = false;\n if (n.children) {\n n.children.forEach(child => {\n child.inherited = checked;\n child.checked = false;\n updateChildren(child, checked);\n });\n }\n }\n\n function updateParents(n: IGenericTreeNode): void {\n if (!n.parentId) return;\n\n const currentParent = findChildNodeById(rootNode, n.parentId);\n if (!currentParent || !currentParent.children) return;\n\n const someChildrenChecked = currentParent.children.some(\n child => child.checked || child.indeterminate,\n );\n\n currentParent.indeterminate = someChildrenChecked;\n\n updateParents(currentParent);\n }\n\n // update all children to match current node checked status\n updateChildren(node, node.checked);\n\n // update all parents checked and indeterminate status\n updateParents(node);\n}\n\nexport function getFlatArrayOfCheckedNodes(\n node: IGenericTreeNode,\n): IGenericTreeNode[] {\n const checkedNodes: IGenericTreeNode[] = [];\n\n function getCheckedNodes(n: IGenericTreeNode): void {\n if (n.checked) {\n checkedNodes.push(n);\n }\n if (n.children) {\n n.children.forEach(child => {\n getCheckedNodes(child);\n });\n }\n }\n\n getCheckedNodes(node);\n return checkedNodes;\n}\n\nexport function flattenTree(rootNode: IGenericTreeNode): IGenericTreeNode[] {\n const flatArray: IGenericTreeNode[] = [];\n\n function flatten(n: IGenericTreeNode): void {\n flatArray.push(n);\n if (n.children) {\n n.children.forEach(child => {\n flatten(child);\n });\n }\n }\n\n flatten(rootNode);\n return flatArray;\n}\n\nexport function buildTreeFromFlatArray(\n flatArray: IGenericTreeNode[],\n): IGenericTreeNode {\n const rootNode: IGenericTreeNode = {\n id: 'root',\n label: '',\n children: [],\n };\n\n rootNode.children = flatArray.filter(child => !child.parentId);\n\n function buildTree(n: IGenericTreeNode): void {\n const children = flatArray.filter(child => child.parentId === n.id);\n n.children = children;\n n.children.forEach(child => {\n buildTree(child);\n });\n }\n\n rootNode.children.forEach(child => {\n buildTree(child);\n });\n return rootNode;\n}\n\nexport function isAnyNodeChecked(node: IGenericTreeNode): boolean {\n if (node.checked || node.indeterminate) {\n return true;\n }\n if (!node.children) {\n return false;\n }\n\n for (const childNode of node.children) {\n const checked = isAnyNodeChecked(childNode);\n\n if (checked) {\n return checked;\n }\n }\n\n return false;\n}\n\nexport function resetCheckedAndIndeterminateStatus(\n node: IGenericTreeNode,\n): void {\n node.checked = false;\n node.indeterminate = false;\n\n if (node.children) {\n node.children.forEach(child => {\n resetCheckedAndIndeterminateStatus(child);\n });\n }\n}\n\nexport function getCheckedAndIndeterminateNodesOnly(\n node: IGenericTreeNode,\n): IGenericTreeNode[] {\n const checkedNodes: IGenericTreeNode[] = [];\n\n function getCheckedNodes(n: IGenericTreeNode): void {\n if (n.checked || n.indeterminate) {\n checkedNodes.push(n);\n }\n if (n.children) {\n n.children.forEach(child => {\n getCheckedNodes(child);\n });\n }\n }\n\n getCheckedNodes(node);\n return checkedNodes;\n}\n\nexport function findDeepestNode(\n root: IGenericTreeNode,\n): IGenericTreeNode | null {\n let maxDepth = -1;\n let deepestNode = null;\n function dfs(node: IGenericTreeNode, depth: number) {\n if (!node) return;\n if (depth > maxDepth) {\n maxDepth = depth;\n deepestNode = node;\n }\n if (!node.children) return;\n for (const child of node.children) {\n dfs(child, depth + 1);\n }\n }\n dfs(root, 0);\n return deepestNode;\n}\n\nexport function updateChildrenCount(rootNode: IGenericTreeNode): void {\n const deepestNode = findDeepestNode(rootNode);\n if (!deepestNode) return;\n\n function updateParents(n: IGenericTreeNode): void {\n if (!n.parentId) return;\n\n const currentParent = findChildNodeById(rootNode, n.parentId);\n if (!currentParent) return;\n currentParent.childrenCount = 0;\n if (currentParent.children) {\n currentParent.childrenCount += currentParent.children.reduce(\n (prev, curr) =>\n prev + (curr.childrenCount === 0 ? 1 : (curr.childrenCount ?? 0)),\n 0,\n );\n }\n updateParents(currentParent);\n }\n\n updateParents(deepestNode);\n}\n\nexport function getCheckedNodesCount(node: IGenericTreeNode): number {\n let count = 0;\n function getCheckedNodes(n: IGenericTreeNode): void {\n if (n.checked || n.inherited) {\n count += 1;\n }\n if (n.children) {\n n.children.forEach(child => {\n getCheckedNodes(child);\n });\n }\n }\n getCheckedNodes(node);\n return count;\n}\n\nexport function collapseAllNodes(node: IGenericTreeNode): void {\n node.expanded = false;\n if (node.children) {\n node.children.forEach(child => {\n collapseAllNodes(child);\n });\n }\n}\n\nexport function calculateCheckedEndNodesCount(node: IGenericTreeNode): number {\n let count = 0;\n function getCheckedEndNodes(n: IGenericTreeNode): void {\n if ((n.checked || n.inherited) && n.childrenCount === 0) {\n count += 1;\n }\n if (n.children) {\n n.children.forEach(child => {\n getCheckedEndNodes(child);\n });\n }\n if (!n.children?.length && n.childrenCount !== 0) {\n if (n.checked) count += n.childrenCount ?? 0;\n if (n.indeterminate) count += n.checkedChildrenCount ?? 0;\n }\n }\n getCheckedEndNodes(node);\n return count;\n}\n"]}
1
+ {"version":3,"file":"ix-generic-tree-utils.js","sourceRoot":"","sources":["../src/ix-generic-tree-utils.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable no-nested-ternary */\nimport type { IGenericTreeNode } from './ix-generic-tree-types.js';\n\nexport const IconTypeMap = {\n Global: 'globe',\n Continent: 'map',\n Country: 'flag',\n City: 'domain',\n Campus: 'device_hub',\n Site: 'location_on',\n Floor: 'view_stream',\n Room: 'meeting_room',\n Cage: 'view_column',\n Row: 'view_headline',\n Cabinet: 'dock',\n Panel: 'calendar_view_day',\n Port: '',\n Fallback: 'chevron_right',\n};\n\nexport function findChildNodeById(\n node: IGenericTreeNode,\n id: string,\n): IGenericTreeNode | null {\n if (node.id === id) {\n return node;\n }\n if (!node.children) {\n return null;\n }\n\n for (const childNode of node.children) {\n const foundNode = findChildNodeById(childNode, id);\n\n if (foundNode) {\n return foundNode;\n }\n }\n\n return null;\n}\n\nexport function updateNodeCheckedStatus(\n node: IGenericTreeNode,\n rootNode: IGenericTreeNode,\n): void {\n /* eslint-disable no-param-reassign */\n function updateChildren(n: IGenericTreeNode, checked = false): void {\n n.indeterminate = false;\n if (n.children) {\n n.children.forEach(child => {\n child.inherited = checked;\n child.checked = false;\n updateChildren(child, checked);\n });\n }\n }\n\n function updateParents(n: IGenericTreeNode): void {\n if (!n.parentId) return;\n\n const currentParent = findChildNodeById(rootNode, n.parentId);\n if (!currentParent || !currentParent.children) return;\n\n const someChildrenChecked = currentParent.children.some(\n child => child.checked || child.indeterminate,\n );\n\n currentParent.indeterminate = someChildrenChecked;\n\n updateParents(currentParent);\n }\n\n // update all children to match current node checked status\n updateChildren(node, node.checked);\n\n // update all parents checked and indeterminate status\n updateParents(node);\n}\n\nexport function getFlatArrayOfCheckedNodes(\n node: IGenericTreeNode,\n): IGenericTreeNode[] {\n const checkedNodes: IGenericTreeNode[] = [];\n\n function getCheckedNodes(n: IGenericTreeNode): void {\n if (n.checked) {\n checkedNodes.push(n);\n }\n if (n.children) {\n n.children.forEach(child => {\n getCheckedNodes(child);\n });\n }\n }\n\n getCheckedNodes(node);\n return checkedNodes;\n}\n\nexport function flattenTree(rootNode: IGenericTreeNode): IGenericTreeNode[] {\n const flatArray: IGenericTreeNode[] = [];\n\n function flatten(n: IGenericTreeNode): void {\n flatArray.push(n);\n if (n.children) {\n n.children.forEach(child => {\n flatten(child);\n });\n }\n }\n\n flatten(rootNode);\n return flatArray;\n}\n\nexport function buildTreeFromFlatArray(\n flatArray: IGenericTreeNode[],\n): IGenericTreeNode {\n const rootNode: IGenericTreeNode = {\n id: 'root',\n label: '',\n children: [],\n };\n\n rootNode.children = flatArray.filter(child => !child.parentId);\n\n function buildTree(n: IGenericTreeNode): void {\n const children = flatArray.filter(child => child.parentId === n.id);\n n.children = children;\n n.children.forEach(child => {\n buildTree(child);\n });\n }\n\n rootNode.children.forEach(child => {\n buildTree(child);\n });\n return rootNode;\n}\n\nexport function isAnyNodeChecked(node: IGenericTreeNode): boolean {\n if (node.checked || node.indeterminate) {\n return true;\n }\n if (!node.children) {\n return false;\n }\n\n for (const childNode of node.children) {\n const checked = isAnyNodeChecked(childNode);\n\n if (checked) {\n return checked;\n }\n }\n\n return false;\n}\n\nexport function resetCheckedAndIndeterminateStatus(\n node: IGenericTreeNode,\n): void {\n node.checked = false;\n node.indeterminate = false;\n\n if (node.children) {\n node.children.forEach(child => {\n resetCheckedAndIndeterminateStatus(child);\n });\n }\n}\n\nexport function getCheckedAndIndeterminateNodesOnly(\n node: IGenericTreeNode,\n): IGenericTreeNode[] {\n const checkedNodes: IGenericTreeNode[] = [];\n\n function getCheckedNodes(n: IGenericTreeNode): void {\n if (n.checked || n.indeterminate || n.inherited) {\n checkedNodes.push(n);\n }\n if (n.children) {\n n.children.forEach(child => {\n getCheckedNodes(child);\n });\n }\n }\n\n getCheckedNodes(node);\n return checkedNodes;\n}\n\nexport function findDeepestNode(\n root: IGenericTreeNode,\n): IGenericTreeNode | null {\n let maxDepth = -1;\n let deepestNode = null;\n function dfs(node: IGenericTreeNode, depth: number) {\n if (!node) return;\n if (depth > maxDepth) {\n maxDepth = depth;\n deepestNode = node;\n }\n if (!node.children) return;\n for (const child of node.children) {\n dfs(child, depth + 1);\n }\n }\n dfs(root, 0);\n return deepestNode;\n}\n\nexport function updateChildrenCount(rootNode: IGenericTreeNode): void {\n const deepestNode = findDeepestNode(rootNode);\n if (!deepestNode) return;\n\n function updateParents(n: IGenericTreeNode): void {\n if (!n.parentId) return;\n\n const currentParent = findChildNodeById(rootNode, n.parentId);\n if (!currentParent) return;\n currentParent.childrenCount = 0;\n if (currentParent.children) {\n currentParent.childrenCount += currentParent.children.reduce(\n (prev, curr) =>\n prev + (curr.childrenCount === 0 ? 1 : (curr.childrenCount ?? 0)),\n 0,\n );\n }\n updateParents(currentParent);\n }\n\n updateParents(deepestNode);\n}\n\nexport function getCheckedNodesCount(node: IGenericTreeNode): number {\n let count = 0;\n function getCheckedNodes(n: IGenericTreeNode): void {\n if (n.checked || n.inherited) {\n count += 1;\n }\n if (n.children) {\n n.children.forEach(child => {\n getCheckedNodes(child);\n });\n }\n }\n getCheckedNodes(node);\n return count;\n}\n\nexport function collapseAllNodes(node: IGenericTreeNode): void {\n node.expanded = false;\n if (node.children) {\n node.children.forEach(child => {\n collapseAllNodes(child);\n });\n }\n}\n\nexport function calculateCheckedEndNodesCount(node: IGenericTreeNode): number {\n let count = 0;\n function getCheckedEndNodes(n: IGenericTreeNode): void {\n if ((n.checked || n.inherited) && n.childrenCount === 0) {\n count += 1;\n }\n if (n.children) {\n n.children.forEach(child => {\n getCheckedEndNodes(child);\n });\n }\n if (!n.children?.length && n.childrenCount !== 0) {\n if (n.checked) count += n.childrenCount ?? 0;\n if (n.indeterminate) count += n.checkedChildrenCount ?? 0;\n }\n }\n getCheckedEndNodes(node);\n return count;\n}\n"]}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "Webcomponent ix-generic-tree following open-wc recommendations",
4
4
  "license": "MIT",
5
5
  "author": "Digital Realty",
6
- "version": "2.0.2",
6
+ "version": "2.0.3",
7
7
  "type": "module",
8
8
  "main": "dist/index.js",
9
9
  "module": "dist/index.js",
@@ -97,5 +97,5 @@
97
97
  "README.md",
98
98
  "LICENSE"
99
99
  ],
100
- "gitHead": "d37e3ce6b4ce957dac894bab5320e2f21b83a57b"
100
+ "gitHead": "7e986c857f72feed6990d7460b693419dcec94ac"
101
101
  }