@aquera/nile-elements 1.5.7 → 1.5.9

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 (201) hide show
  1. package/README.md +9 -0
  2. package/dist/index.cjs.js +1 -1
  3. package/dist/index.esm.js +1 -1
  4. package/dist/index.js +14 -16
  5. package/dist/nile-badge/index.cjs.js +1 -1
  6. package/dist/nile-badge/index.esm.js +1 -1
  7. package/dist/nile-badge/nile-badge.cjs.js +1 -1
  8. package/dist/nile-badge/nile-badge.cjs.js.map +1 -1
  9. package/dist/nile-badge/nile-badge.esm.js +1 -1
  10. package/dist/nile-button/index.cjs.js +1 -1
  11. package/dist/nile-button/index.esm.js +1 -1
  12. package/dist/nile-button/nile-button.cjs.js +1 -1
  13. package/dist/nile-button/nile-button.cjs.js.map +1 -1
  14. package/dist/nile-button/nile-button.css.cjs.js +1 -1
  15. package/dist/nile-button/nile-button.css.cjs.js.map +1 -1
  16. package/dist/nile-button/nile-button.css.esm.js +8 -9
  17. package/dist/nile-button/nile-button.esm.js +1 -1
  18. package/dist/nile-carousel/index.cjs.js +1 -1
  19. package/dist/nile-carousel/index.esm.js +1 -1
  20. package/dist/nile-carousel/nile-carousel.cjs.js +1 -1
  21. package/dist/nile-carousel/nile-carousel.cjs.js.map +1 -1
  22. package/dist/nile-carousel/nile-carousel.esm.js +11 -11
  23. package/dist/nile-dialog/index.cjs.js +1 -1
  24. package/dist/nile-dialog/index.esm.js +1 -1
  25. package/dist/nile-dialog/nile-dialog.cjs.js +1 -1
  26. package/dist/nile-dialog/nile-dialog.cjs.js.map +1 -1
  27. package/dist/nile-dialog/nile-dialog.esm.js +1 -1
  28. package/dist/nile-drawer/index.cjs.js +1 -1
  29. package/dist/nile-drawer/index.esm.js +1 -1
  30. package/dist/nile-drawer/nile-drawer.cjs.js +1 -1
  31. package/dist/nile-drawer/nile-drawer.cjs.js.map +1 -1
  32. package/dist/nile-drawer/nile-drawer.esm.js +1 -1
  33. package/dist/nile-dropdown/nile-dropdown.cjs.js +1 -1
  34. package/dist/nile-dropdown/nile-dropdown.cjs.js.map +1 -1
  35. package/dist/nile-dropdown/nile-dropdown.esm.js +1 -1
  36. package/dist/nile-grid/nile-grid.cjs.js +1 -1
  37. package/dist/nile-grid/nile-grid.cjs.js.map +1 -1
  38. package/dist/nile-grid/nile-grid.css.cjs.js +1 -1
  39. package/dist/nile-grid/nile-grid.css.cjs.js.map +1 -1
  40. package/dist/nile-grid/nile-grid.css.esm.js +0 -1
  41. package/dist/nile-grid/nile-grid.esm.js +2 -2
  42. package/dist/nile-grid/nile-grid.width.cjs.js +1 -1
  43. package/dist/nile-grid/nile-grid.width.cjs.js.map +1 -1
  44. package/dist/nile-grid/nile-grid.width.esm.js +1 -1
  45. package/dist/nile-icon/icons/svg/index.cjs.js +1 -1
  46. package/dist/nile-icon/icons/svg/index.esm.js +1 -1
  47. package/dist/nile-icon/icons/svg/ng-boolean.cjs.js +2 -0
  48. package/dist/nile-icon/icons/svg/ng-boolean.cjs.js.map +1 -0
  49. package/dist/nile-icon/icons/svg/ng-boolean.esm.js +1 -0
  50. package/dist/nile-icon/icons/svg/ng-building-07.cjs.js +2 -0
  51. package/dist/nile-icon/icons/svg/ng-building-07.cjs.js.map +1 -0
  52. package/dist/nile-icon/icons/svg/ng-building-07.esm.js +1 -0
  53. package/dist/nile-icon/icons/svg/ng-clock-refresh.cjs.js +2 -0
  54. package/dist/nile-icon/icons/svg/ng-clock-refresh.cjs.js.map +1 -0
  55. package/dist/nile-icon/icons/svg/ng-clock-refresh.esm.js +1 -0
  56. package/dist/nile-icon/icons/svg/ng-dataflow-02.cjs.js +2 -0
  57. package/dist/nile-icon/icons/svg/ng-dataflow-02.cjs.js.map +1 -0
  58. package/dist/nile-icon/icons/svg/ng-dataflow-02.esm.js +1 -0
  59. package/dist/nile-icon/icons/svg/ng-folder-code.cjs.js +2 -0
  60. package/dist/nile-icon/icons/svg/ng-folder-code.cjs.js.map +1 -0
  61. package/dist/nile-icon/icons/svg/ng-folder-code.esm.js +1 -0
  62. package/dist/nile-icon/icons/svg/ng-lightbulb-05.cjs.js +2 -0
  63. package/dist/nile-icon/icons/svg/ng-lightbulb-05.cjs.js.map +1 -0
  64. package/dist/nile-icon/icons/svg/ng-lightbulb-05.esm.js +1 -0
  65. package/dist/nile-icon/icons/svg/ng-number.cjs.js +2 -0
  66. package/dist/nile-icon/icons/svg/ng-number.cjs.js.map +1 -0
  67. package/dist/nile-icon/icons/svg/ng-number.esm.js +1 -0
  68. package/dist/nile-icon/icons/svg/ng-string.cjs.js +2 -0
  69. package/dist/nile-icon/icons/svg/ng-string.cjs.js.map +1 -0
  70. package/dist/nile-icon/icons/svg/ng-string.esm.js +1 -0
  71. package/dist/nile-icon/index.cjs.js +1 -1
  72. package/dist/nile-icon/index.cjs.js.map +1 -1
  73. package/dist/nile-icon/index.esm.js +1 -1
  74. package/dist/nile-icon-button/index.cjs.js +1 -1
  75. package/dist/nile-icon-button/index.esm.js +1 -1
  76. package/dist/nile-icon-button/nile-icon-button.cjs.js +1 -1
  77. package/dist/nile-icon-button/nile-icon-button.cjs.js.map +1 -1
  78. package/dist/nile-icon-button/nile-icon-button.esm.js +1 -1
  79. package/dist/nile-input/index.cjs.js +1 -1
  80. package/dist/nile-input/index.esm.js +1 -1
  81. package/dist/nile-input/nile-input.cjs.js +1 -1
  82. package/dist/nile-input/nile-input.cjs.js.map +1 -1
  83. package/dist/nile-input/nile-input.esm.js +1 -1
  84. package/dist/nile-loader/nile-loader.css.cjs.js +1 -1
  85. package/dist/nile-loader/nile-loader.css.cjs.js.map +1 -1
  86. package/dist/nile-loader/nile-loader.css.esm.js +1 -1
  87. package/dist/nile-menu-item/index.cjs.js +1 -1
  88. package/dist/nile-menu-item/index.esm.js +1 -1
  89. package/dist/nile-menu-item/nile-menu-item.cjs.js +1 -1
  90. package/dist/nile-menu-item/nile-menu-item.cjs.js.map +1 -1
  91. package/dist/nile-menu-item/nile-menu-item.esm.js +1 -1
  92. package/dist/nile-option/index.cjs.js +1 -1
  93. package/dist/nile-option/index.esm.js +1 -1
  94. package/dist/nile-option/nile-option.cjs.js +1 -1
  95. package/dist/nile-option/nile-option.cjs.js.map +1 -1
  96. package/dist/nile-option/nile-option.esm.js +1 -1
  97. package/dist/nile-select/index.cjs.js +1 -1
  98. package/dist/nile-select/index.esm.js +1 -1
  99. package/dist/nile-select/nile-select.cjs.js +1 -1
  100. package/dist/nile-select/nile-select.cjs.js.map +1 -1
  101. package/dist/nile-select/nile-select.esm.js +4 -4
  102. package/dist/nile-side-bar-action-menu-item/index.cjs.js +1 -1
  103. package/dist/nile-side-bar-action-menu-item/index.esm.js +1 -1
  104. package/dist/nile-side-bar-action-menu-item/nile-side-bar-action-menu-item.cjs.js +1 -1
  105. package/dist/nile-side-bar-action-menu-item/nile-side-bar-action-menu-item.cjs.js.map +1 -1
  106. package/dist/nile-side-bar-action-menu-item/nile-side-bar-action-menu-item.esm.js +1 -1
  107. package/dist/nile-tab/index.cjs.js +1 -1
  108. package/dist/nile-tab/index.esm.js +1 -1
  109. package/dist/nile-tab/nile-tab.cjs.js +1 -1
  110. package/dist/nile-tab/nile-tab.cjs.js.map +1 -1
  111. package/dist/nile-tab/nile-tab.esm.js +1 -1
  112. package/dist/nile-tab-group/index.cjs.js +1 -1
  113. package/dist/nile-tab-group/index.esm.js +1 -1
  114. package/dist/nile-tab-group/nile-tab-group.cjs.js +1 -1
  115. package/dist/nile-tab-group/nile-tab-group.cjs.js.map +1 -1
  116. package/dist/nile-tab-group/nile-tab-group.esm.js +2 -2
  117. package/dist/nile-tag/index.cjs.js +1 -1
  118. package/dist/nile-tag/index.esm.js +1 -1
  119. package/dist/nile-tag/nile-tag.cjs.js +1 -1
  120. package/dist/nile-tag/nile-tag.cjs.js.map +1 -1
  121. package/dist/nile-tag/nile-tag.esm.js +1 -1
  122. package/dist/nile-toast/index.cjs.js +1 -1
  123. package/dist/nile-toast/index.esm.js +1 -1
  124. package/dist/nile-toast/nile-toast.cjs.js +1 -1
  125. package/dist/nile-toast/nile-toast.cjs.js.map +1 -1
  126. package/dist/nile-toast/nile-toast.esm.js +1 -1
  127. package/dist/nile-tree/index.cjs.js +1 -1
  128. package/dist/nile-tree/index.esm.js +1 -1
  129. package/dist/nile-tree/nile-tree.cjs.js +1 -1
  130. package/dist/nile-tree/nile-tree.cjs.js.map +1 -1
  131. package/dist/nile-tree/nile-tree.esm.js +1 -1
  132. package/dist/nile-tree-item/index.cjs.js +1 -1
  133. package/dist/nile-tree-item/index.esm.js +1 -1
  134. package/dist/nile-tree-item/nile-tree-item.cjs.js +1 -1
  135. package/dist/nile-tree-item/nile-tree-item.cjs.js.map +1 -1
  136. package/dist/nile-tree-item/nile-tree-item.esm.js +3 -3
  137. package/dist/nile-virtual-select/index.cjs.js +1 -1
  138. package/dist/nile-virtual-select/index.esm.js +1 -1
  139. package/dist/nile-virtual-select/nile-virtual-select.cjs.js +3 -3
  140. package/dist/nile-virtual-select/nile-virtual-select.cjs.js.map +1 -1
  141. package/dist/nile-virtual-select/nile-virtual-select.esm.js +3 -3
  142. package/dist/src/nile-button/nile-button.css.js +8 -9
  143. package/dist/src/nile-button/nile-button.css.js.map +1 -1
  144. package/dist/src/nile-dropdown/nile-dropdown.js +4 -2
  145. package/dist/src/nile-dropdown/nile-dropdown.js.map +1 -1
  146. package/dist/src/nile-grid/nile-grid.css.js +0 -1
  147. package/dist/src/nile-grid/nile-grid.css.js.map +1 -1
  148. package/dist/src/nile-grid/nile-grid.d.ts +5 -0
  149. package/dist/src/nile-grid/nile-grid.js +21 -1
  150. package/dist/src/nile-grid/nile-grid.js.map +1 -1
  151. package/dist/src/nile-grid/nile-grid.layout.js +4 -0
  152. package/dist/src/nile-grid/nile-grid.layout.js.map +1 -1
  153. package/dist/src/nile-icon/icons/svg/index.d.ts +8 -0
  154. package/dist/src/nile-icon/icons/svg/index.js +8 -0
  155. package/dist/src/nile-icon/icons/svg/index.js.map +1 -1
  156. package/dist/src/nile-icon/icons/svg/ng-boolean.d.ts +5 -0
  157. package/dist/src/nile-icon/icons/svg/ng-boolean.js +5 -0
  158. package/dist/src/nile-icon/icons/svg/ng-boolean.js.map +1 -0
  159. package/dist/src/nile-icon/icons/svg/ng-building-07.d.ts +5 -0
  160. package/dist/src/nile-icon/icons/svg/ng-building-07.js +5 -0
  161. package/dist/src/nile-icon/icons/svg/ng-building-07.js.map +1 -0
  162. package/dist/src/nile-icon/icons/svg/ng-clock-refresh.d.ts +5 -0
  163. package/dist/src/nile-icon/icons/svg/ng-clock-refresh.js +5 -0
  164. package/dist/src/nile-icon/icons/svg/ng-clock-refresh.js.map +1 -0
  165. package/dist/src/nile-icon/icons/svg/ng-dataflow-02.d.ts +5 -0
  166. package/dist/src/nile-icon/icons/svg/ng-dataflow-02.js +5 -0
  167. package/dist/src/nile-icon/icons/svg/ng-dataflow-02.js.map +1 -0
  168. package/dist/src/nile-icon/icons/svg/ng-folder-code.d.ts +5 -0
  169. package/dist/src/nile-icon/icons/svg/ng-folder-code.js +5 -0
  170. package/dist/src/nile-icon/icons/svg/ng-folder-code.js.map +1 -0
  171. package/dist/src/nile-icon/icons/svg/ng-lightbulb-05.d.ts +5 -0
  172. package/dist/src/nile-icon/icons/svg/ng-lightbulb-05.js +5 -0
  173. package/dist/src/nile-icon/icons/svg/ng-lightbulb-05.js.map +1 -0
  174. package/dist/src/nile-icon/icons/svg/ng-number.d.ts +5 -0
  175. package/dist/src/nile-icon/icons/svg/ng-number.js +5 -0
  176. package/dist/src/nile-icon/icons/svg/ng-number.js.map +1 -0
  177. package/dist/src/nile-icon/icons/svg/ng-string.d.ts +5 -0
  178. package/dist/src/nile-icon/icons/svg/ng-string.js +5 -0
  179. package/dist/src/nile-icon/icons/svg/ng-string.js.map +1 -0
  180. package/dist/src/nile-loader/nile-loader.css.js +1 -1
  181. package/dist/src/nile-loader/nile-loader.css.js.map +1 -1
  182. package/dist/src/version.js +2 -2
  183. package/dist/src/version.js.map +1 -1
  184. package/dist/tsconfig.tsbuildinfo +1 -1
  185. package/package.json +1 -1
  186. package/src/nile-button/nile-button.css.ts +8 -9
  187. package/src/nile-dropdown/nile-dropdown.ts +5 -3
  188. package/src/nile-grid/nile-grid.css.ts +0 -1
  189. package/src/nile-grid/nile-grid.layout.ts +5 -0
  190. package/src/nile-grid/nile-grid.ts +22 -1
  191. package/src/nile-icon/icons/svg/index.ts +8 -0
  192. package/src/nile-icon/icons/svg/ng-boolean.ts +5 -0
  193. package/src/nile-icon/icons/svg/ng-building-07.ts +5 -0
  194. package/src/nile-icon/icons/svg/ng-clock-refresh.ts +5 -0
  195. package/src/nile-icon/icons/svg/ng-dataflow-02.ts +5 -0
  196. package/src/nile-icon/icons/svg/ng-folder-code.ts +5 -0
  197. package/src/nile-icon/icons/svg/ng-lightbulb-05.ts +5 -0
  198. package/src/nile-icon/icons/svg/ng-number.ts +5 -0
  199. package/src/nile-icon/icons/svg/ng-string.ts +5 -0
  200. package/src/nile-loader/nile-loader.css.ts +1 -1
  201. package/vscode-html-custom-data.json +5 -1
@@ -1 +1 @@
1
- {"version":3,"file":"nile-tree.cjs.js","sources":["../../../src/nile-tree/nile-tree.ts"],"sourcesContent":["/**\n * Copyright Aquera Inc 2023\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport {LitElement, CSSResultArray, TemplateResult} from 'lit';\nimport {styles} from './nile-tree.css';\nimport NileElement from '../internal/nile-element';\nimport { clamp } from '../internal/math';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { html } from 'lit';\nimport { watch } from '../internal/watch';\nimport NileTreeItem from '../nile-tree-item/nile-tree-item';\nimport type { CSSResultGroup } from 'lit';\n\nfunction syncCheckboxes(changedTreeItem: NileTreeItem, initialSync = false) {\n function syncParentItem(treeItem: NileTreeItem) {\n const children = treeItem.getChildrenItems({ includeDisabled: false });\n\n if (children.length) {\n const allChecked = children.every(item => item.selected);\n const allUnchecked = children.every(item => !item.selected && !item.indeterminate);\n\n treeItem.selected = allChecked;\n treeItem.indeterminate = !allChecked && !allUnchecked;\n }\n }\n\n function syncAncestors(treeItem: NileTreeItem) {\n const parentItem: NileTreeItem | null = treeItem.parentElement as NileTreeItem;\n\n if (NileTreeItem.isTreeItem(parentItem)) {\n syncParentItem(parentItem);\n syncAncestors(parentItem);\n }\n }\n\n function syncDescendants(treeItem: NileTreeItem) {\n for (const childItem of treeItem.getChildrenItems()) {\n childItem.selected = initialSync\n ? treeItem.selected || childItem.selected\n : !childItem.disabled && treeItem.selected;\n\n syncDescendants(childItem);\n }\n\n if (initialSync) {\n syncParentItem(treeItem);\n }\n }\n\n syncDescendants(changedTreeItem);\n syncAncestors(changedTreeItem);\n}\n\n\n/**\n * @summary Trees allow you to display a hierarchical list of selectable [tree items](/components/tree-item). Items with children can be expanded and collapsed as desired by the user.\n *\n * @event {{ selection: NileTreeItem[] }} nile-selection-change - Emitted when a tree item is selected or deselected.\n *\n * @slot - The default slot.\n * @slot expand-icon - The icon to show when the tree item is expanded. Works best with `<nile-icon>`.\n * @slot collapse-icon - The icon to show when the tree item is collapsed. Works best with `<nile-icon>`.\n *\n * @csspart base - The component's base wrapper.\n *\n * @cssproperty [--indent-size=var(--nile-spacing-medium)] - The size of the indentation for nested items.\n * @cssproperty [--indent-guide-color=var(--nile-color-neutral-200)] - The color of the indentation line.\n * @cssproperty [--indent-guide-offset=0] - The amount of vertical spacing to leave between the top and bottom of the\n * indentation line's starting position.\n * @cssproperty [--indent-guide-style=solid] - The style of the indentation line, e.g. solid, dotted, dashed.\n * @cssproperty [--indent-guide-width=0] - The width of the indentation line.\n */\n\n@customElement('nile-tree')\nexport class NileTree extends NileElement {\n\n\tstatic styles: CSSResultGroup = styles;\n\n @query('slot:not([name])') defaultSlot: HTMLSlotElement;\n @query('slot[name=expand-icon]') expandedIconSlot: HTMLSlotElement;\n @query('slot[name=collapse-icon]') collapsedIconSlot: HTMLSlotElement;\n\n /**\n * The selection behavior of the tree. Single selection allows only one node to be selected at a time. Multiple\n * displays checkboxes and allows more than one node to be selected. Leaf allows only leaf nodes to be selected.\n */\n @property() selection: 'single' | 'multiple' | 'leaf' = 'leaf';\n\n //\n // A collection of all the items in the tree, in the order they appear. The collection is live, meaning it is\n // automatically updated when the underlying document is changed.\n //\n private lastFocusedItem: NileTreeItem;\n private mutationObserver: MutationObserver;\n private clickTarget: NileTreeItem | null = null;\n\n async connectedCallback() {\n super.connectedCallback();\n this.handleTreeChanged = this.handleTreeChanged.bind(this);\n this.handleFocusIn = this.handleFocusIn.bind(this);\n this.handleFocusOut = this.handleFocusOut.bind(this);\n\n this.setAttribute('role', 'tree');\n this.setAttribute('tabindex', '0');\n\n this.addEventListener('focusin', this.handleFocusIn);\n this.addEventListener('focusout', this.handleFocusOut);\n this.addEventListener('nile-lazy-change', this.handleSlotChange);\n\n await this.updateComplete;\n\n this.mutationObserver = new MutationObserver(this.handleTreeChanged);\n this.mutationObserver.observe(this, { childList: true, subtree: true });\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n\n this.mutationObserver.disconnect();\n\n this.removeEventListener('focusin', this.handleFocusIn);\n this.removeEventListener('focusout', this.handleFocusOut);\n this.removeEventListener('nile-lazy-change', this.handleSlotChange);\n }\n\n // Generates a clone of the expand icon element to use for each tree item\n private getExpandButtonIcon(status: 'expand' | 'collapse') {\n const slot = status === 'expand' ? this.expandedIconSlot : this.collapsedIconSlot;\n const icon = slot.assignedElements({ flatten: true })[0] as HTMLElement;\n\n // Clone it, remove ids, and slot it\n if (icon) {\n const clone = icon.cloneNode(true) as HTMLElement;\n [clone, ...clone.querySelectorAll('[id]')].forEach(el => el.removeAttribute('id'));\n clone.setAttribute('data-default', '');\n clone.slot = `${status}-icon`;\n\n return clone;\n }\n\n return null;\n }\n\n // Initializes new items by setting the `selectable` property and the expanded/collapsed icons if any\n private initTreeItem = (item: NileTreeItem) => {\n item.selectable = this.selection === 'multiple';\n\n ['expand', 'collapse']\n .filter(status => !!this.querySelector(`[slot=\"${status}-icon\"]`))\n .forEach((status: 'expand' | 'collapse') => {\n const existingIcon = item.querySelector(`[slot=\"${status}-icon\"]`);\n\n if (existingIcon === null) {\n // No separator exists, add one\n item.append(this.getExpandButtonIcon(status)!);\n } else if (existingIcon.hasAttribute('data-default')) {\n // A default separator exists, replace it\n existingIcon.replaceWith(this.getExpandButtonIcon(status)!);\n } else {\n // The user provided a custom icon, leave it alone\n }\n });\n };\n\n private handleTreeChanged(mutations: MutationRecord[]) {\n for (const mutation of mutations) {\n const addedNodes: NileTreeItem[] = [...mutation.addedNodes].filter(NileTreeItem.isTreeItem) as NileTreeItem[];\n const removedNodes = [...mutation.removedNodes].filter(NileTreeItem.isTreeItem) as NileTreeItem[];\n\n addedNodes.forEach(this.initTreeItem);\n\n // If the focused item has been removed form the DOM, move the focus to the first focusable item\n if (removedNodes.includes(this.lastFocusedItem)) {\n this.focusItem(this.getFocusableItems()[0]);\n }\n }\n }\n\n private syncTreeItems(selectedItem: NileTreeItem) {\n const items = this.getAllTreeItems();\n\n if (this.selection === 'multiple') {\n syncCheckboxes(selectedItem);\n } else {\n for (const item of items) {\n if (item !== selectedItem) {\n item.selected = false;\n }\n }\n }\n }\n\n private selectItem(selectedItem: NileTreeItem) {\n const previousSelection = [...this.selectedItems];\n\n if (this.selection === 'multiple') {\n selectedItem.selected = !selectedItem.selected;\n if (selectedItem.lazy) {\n selectedItem.expanded = true;\n }\n this.syncTreeItems(selectedItem);\n } else if (this.selection === 'single' || selectedItem.isLeaf) {\n selectedItem.expanded = !selectedItem.expanded;\n selectedItem.selected = true;\n\n this.syncTreeItems(selectedItem);\n } else if (this.selection === 'leaf') {\n selectedItem.expanded = !selectedItem.expanded;\n }\n\n const nextSelection = this.selectedItems;\n\n if (\n previousSelection.length !== nextSelection.length ||\n nextSelection.some(item => !previousSelection.includes(item))\n ) {\n // Wait for the tree items' DOM to update before emitting\n Promise.all(nextSelection.map(el => el.updateComplete)).then(() => {\n this.emit('nile-selection-change', { detail: { selection: nextSelection } });\n });\n }\n }\n\n private getAllTreeItems() {\n return [...this.querySelectorAll<NileTreeItem>('nile-tree-item')];\n }\n\n private focusItem(item?: NileTreeItem | null) {\n item?.focus();\n }\n\n private handleKeyDown(event: KeyboardEvent) {\n if (!['ArrowDown', 'ArrowUp', 'ArrowRight', 'ArrowLeft', 'Home', 'End', 'Enter', ' '].includes(event.key)) {\n return;\n }\n\n const items = this.getFocusableItems();\n const isLtr = true;\n const isRtl = false;\n\n if (items.length > 0) {\n event.preventDefault();\n const activeItemIndex = items.findIndex(item => item.matches(':focus'));\n const activeItem: NileTreeItem | undefined = items[activeItemIndex];\n\n const focusItemAt = (index: number) => {\n const item = items[clamp(index, 0, items.length - 1)];\n this.focusItem(item);\n };\n const toggleExpand = (expanded: boolean) => {\n activeItem.expanded = expanded;\n };\n\n if (event.key === 'ArrowDown') {\n // Moves focus to the next node that is focusable without opening or closing a node.\n focusItemAt(activeItemIndex + 1);\n } else if (event.key === 'ArrowUp') {\n // Moves focus to the next node that is focusable without opening or closing a node.\n focusItemAt(activeItemIndex - 1);\n } else if ((isLtr && event.key === 'ArrowRight') || (isRtl && event.key === 'ArrowLeft')) {\n //\n // When focus is on a closed node, opens the node; focus does not move.\n // When focus is on a open node, moves focus to the first child node.\n // When focus is on an end node (a tree item with no children), does nothing.\n //\n if (!activeItem || activeItem.disabled || activeItem.expanded || (activeItem.isLeaf && !activeItem.lazy)) {\n focusItemAt(activeItemIndex + 1);\n } else {\n toggleExpand(true);\n }\n } else if ((isLtr && event.key === 'ArrowLeft') || (isRtl && event.key === 'ArrowRight')) {\n //\n // When focus is on an open node, closes the node.\n // When focus is on a child node that is also either an end node or a closed node, moves focus to its parent node.\n // When focus is on a closed `tree`, does nothing.\n //\n if (!activeItem || activeItem.disabled || activeItem.isLeaf || !activeItem.expanded) {\n focusItemAt(activeItemIndex - 1);\n } else {\n toggleExpand(false);\n }\n } else if (event.key === 'Home') {\n // Moves focus to the first node in the tree without opening or closing a node.\n focusItemAt(0);\n } else if (event.key === 'End') {\n // Moves focus to the last node in the tree that is focusable without opening the node.\n focusItemAt(items.length - 1);\n } else if (event.key === 'Enter' || event.key === ' ') {\n // Selects the focused node.\n if (!activeItem.disabled) {\n this.selectItem(activeItem);\n }\n }\n }\n }\n\n private handleClick(event: Event) {\n const target = event.target as NileTreeItem;\n const treeItem = target.closest('nile-tree-item')!;\n const isExpandButton = event\n .composedPath()\n .some((el: HTMLElement) => el?.classList?.contains('tree-item__expand-button'));\n\n //\n // Don't Do anything if there's no tree item, if it's disabled, or if the click doesn't match the initial target\n // from mousedown. The latter case prevents the user from starting a click on one item and ending it on another,\n // causing the parent node to collapse.\n //\n if (!treeItem || treeItem.disabled || target !== this.clickTarget) {\n return;\n }\n\n if (this.selection === 'multiple' && isExpandButton) {\n treeItem.expanded = !treeItem.expanded;\n } else {\n this.selectItem(treeItem);\n }\n }\n\n handleMouseDown(event: MouseEvent) {\n // Record the click target so we know which item the click initially targeted\n this.clickTarget = event.target as NileTreeItem;\n }\n\n private handleFocusOut(event: FocusEvent) {\n const relatedTarget = event.relatedTarget as HTMLElement;\n\n // If the element that got the focus is not in the tree\n if (!relatedTarget || !this.contains(relatedTarget)) {\n this.tabIndex = 0;\n }\n }\n\n private handleFocusIn(event: FocusEvent) {\n const target = event.target as NileTreeItem;\n\n // If the tree has been focused, move the focus to the last focused item\n if (event.target === this) {\n this.focusItem(this.lastFocusedItem || this.getAllTreeItems()[0]);\n }\n\n // If the target is a tree item, update the tabindex\n if (NileTreeItem.isTreeItem(target) && !target.disabled) {\n if (this.lastFocusedItem) {\n this.lastFocusedItem.tabIndex = -1;\n }\n this.lastFocusedItem = target;\n this.tabIndex = -1;\n\n target.tabIndex = 0;\n }\n }\n\n private handleSlotChange() {\n const items = this.getAllTreeItems();\n items.forEach(this.initTreeItem);\n }\n\n @watch('selection')\n async handleSelectionChange() {\n const isSelectionMultiple = this.selection === 'multiple';\n const items = this.getAllTreeItems();\n\n this.setAttribute('aria-multiselectable', isSelectionMultiple ? 'true' : 'false');\n\n for (const item of items) {\n item.selectable = isSelectionMultiple;\n }\n\n if (isSelectionMultiple) {\n await this.updateComplete;\n\n [...this.querySelectorAll(':scope > nile-tree-item')].forEach((treeItem: NileTreeItem) =>\n syncCheckboxes(treeItem, true)\n );\n }\n }\n\n /** @internal Returns the list of tree items that are selected in the tree. */\n get selectedItems(): NileTreeItem[] {\n const items = this.getAllTreeItems();\n const isSelected = (item: NileTreeItem) => item.selected;\n\n return items.filter(isSelected);\n }\n\n /** @internal Gets focusable tree items in the tree. */\n getFocusableItems() {\n const items = this.getAllTreeItems();\n const collapsedItems = new Set();\n\n return items.filter(item => {\n // Exclude disabled elements\n if (item.disabled) return false;\n\n // Exclude those whose parent is collapsed or loading\n const parent: NileTreeItem | null | undefined = item.parentElement?.closest('[role=treeitem]');\n if (parent && (!parent.expanded || parent.loading || collapsedItems.has(parent))) {\n collapsedItems.add(item);\n }\n\n return !collapsedItems.has(item);\n });\n }\n\n render() {\n return html`\n <div\n part=\"base\"\n class=\"tree\"\n @click=${this.handleClick}\n @keydown=${this.handleKeyDown}\n @mousedown=${this.handleMouseDown}\n >\n <slot @slotchange=${this.handleSlotChange}></slot>\n <slot name=\"expand-icon\" hidden aria-hidden=\"true\"> </slot>\n <slot name=\"collapse-icon\" hidden aria-hidden=\"true\"> </slot>\n </div>\n `;\n }\n}\n\nexport default NileTree;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-tree': NileTree;\n }\n}\n"],"names":["syncCheckboxes","changedTreeItem","initialSync","syncParentItem","treeItem","children","getChildrenItems","includeDisabled","length","allChecked","every","item","selected","allUnchecked","indeterminate","syncDescendants","_iterator","s","_step","n","done","childItem","disabled","syncAncestors","parentItem","parentElement","NileTreeItem","isTreeItem","setters","_tslib","NileTree","_n3","p","constructor","this","selection","clickTarget","initTreeItem","selectable","filter","status","querySelector","concat","forEach","existingIcon","append","getExpandButtonIcon","hasAttribute","replaceWith","_this","_inherits","_createClass","key","value","_connectedCallback","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context2","prev","next","_superPropGet","handleTreeChanged","bind","handleFocusIn","handleFocusOut","setAttribute","addEventListener","handleSlotChange","updateComplete","mutationObserver","MutationObserver","observe","childList","subtree","stop","connectedCallback","disconnectedCallback","super","disconnect","removeEventListener","icon","expandedIconSlot","collapsedIconSlot","assignedElements","flatten","clone","cloneNode","querySelectorAll","el","removeAttribute","slot","mutations","_iterator2","_step2","mutation","addedNodes","_toConsumableArray","removedNodes","includes","lastFocusedItem","focusItem","getFocusableItems","err","e","f","syncTreeItems","selectedItem","items","getAllTreeItems","_iterator3","_step3","selectItem","previousSelection","selectedItems","lazy","expanded","isLeaf","nextSelection","some","Promise","all","map","then","emit","detail","focus","handleKeyDown","event","preventDefault","activeItemIndex","findIndex","matches","activeItem","focusItemAt","index","clamp","toggleExpand","handleClick","target","closest","isExpandButton","composedPath","classList","contains","handleMouseDown","relatedTarget","tabIndex","_handleSelectionChange","_callee2","i","_iterator4","_step4","_n8","_callee2$","_context3","isSelectionMultiple","_createForOfIteratorHelper","handleSelectionChange","get","collapsedItems","Set","parent","loading","has","add","render","html","_templateObject","_taggedTemplateLiteral","NileElement","styles","__decorate","query","prototype","property","watch","_export","customElement"],"mappings":"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"}
1
+ {"version":3,"file":"nile-tree.cjs.js","sources":["../../../src/nile-tree/nile-tree.ts"],"sourcesContent":["/**\n * Copyright Aquera Inc 2023\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport {LitElement, CSSResultArray, TemplateResult} from 'lit';\nimport {styles} from './nile-tree.css';\nimport NileElement from '../internal/nile-element';\nimport { clamp } from '../internal/math';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { html } from 'lit';\nimport { watch } from '../internal/watch';\nimport NileTreeItem from '../nile-tree-item/nile-tree-item';\nimport type { CSSResultGroup } from 'lit';\n\nfunction syncCheckboxes(changedTreeItem: NileTreeItem, initialSync = false) {\n function syncParentItem(treeItem: NileTreeItem) {\n const children = treeItem.getChildrenItems({ includeDisabled: false });\n\n if (children.length) {\n const allChecked = children.every(item => item.selected);\n const allUnchecked = children.every(item => !item.selected && !item.indeterminate);\n\n treeItem.selected = allChecked;\n treeItem.indeterminate = !allChecked && !allUnchecked;\n }\n }\n\n function syncAncestors(treeItem: NileTreeItem) {\n const parentItem: NileTreeItem | null = treeItem.parentElement as NileTreeItem;\n\n if (NileTreeItem.isTreeItem(parentItem)) {\n syncParentItem(parentItem);\n syncAncestors(parentItem);\n }\n }\n\n function syncDescendants(treeItem: NileTreeItem) {\n for (const childItem of treeItem.getChildrenItems()) {\n childItem.selected = initialSync\n ? treeItem.selected || childItem.selected\n : !childItem.disabled && treeItem.selected;\n\n syncDescendants(childItem);\n }\n\n if (initialSync) {\n syncParentItem(treeItem);\n }\n }\n\n syncDescendants(changedTreeItem);\n syncAncestors(changedTreeItem);\n}\n\n\n/**\n * @summary Trees allow you to display a hierarchical list of selectable [tree items](/components/tree-item). Items with children can be expanded and collapsed as desired by the user.\n *\n * @event {{ selection: NileTreeItem[] }} nile-selection-change - Emitted when a tree item is selected or deselected.\n *\n * @slot - The default slot.\n * @slot expand-icon - The icon to show when the tree item is expanded. Works best with `<nile-icon>`.\n * @slot collapse-icon - The icon to show when the tree item is collapsed. Works best with `<nile-icon>`.\n *\n * @csspart base - The component's base wrapper.\n *\n * @cssproperty [--indent-size=var(--nile-spacing-medium)] - The size of the indentation for nested items.\n * @cssproperty [--indent-guide-color=var(--nile-color-neutral-200)] - The color of the indentation line.\n * @cssproperty [--indent-guide-offset=0] - The amount of vertical spacing to leave between the top and bottom of the\n * indentation line's starting position.\n * @cssproperty [--indent-guide-style=solid] - The style of the indentation line, e.g. solid, dotted, dashed.\n * @cssproperty [--indent-guide-width=0] - The width of the indentation line.\n */\n\n@customElement('nile-tree')\nexport class NileTree extends NileElement {\n\n\tstatic styles: CSSResultGroup = styles;\n\n @query('slot:not([name])') defaultSlot: HTMLSlotElement;\n @query('slot[name=expand-icon]') expandedIconSlot: HTMLSlotElement;\n @query('slot[name=collapse-icon]') collapsedIconSlot: HTMLSlotElement;\n\n /**\n * The selection behavior of the tree. Single selection allows only one node to be selected at a time. Multiple\n * displays checkboxes and allows more than one node to be selected. Leaf allows only leaf nodes to be selected.\n */\n @property() selection: 'single' | 'multiple' | 'leaf' = 'leaf';\n\n //\n // A collection of all the items in the tree, in the order they appear. The collection is live, meaning it is\n // automatically updated when the underlying document is changed.\n //\n private lastFocusedItem: NileTreeItem;\n private mutationObserver: MutationObserver;\n private clickTarget: NileTreeItem | null = null;\n\n async connectedCallback() {\n super.connectedCallback();\n this.handleTreeChanged = this.handleTreeChanged.bind(this);\n this.handleFocusIn = this.handleFocusIn.bind(this);\n this.handleFocusOut = this.handleFocusOut.bind(this);\n\n this.setAttribute('role', 'tree');\n this.setAttribute('tabindex', '0');\n\n this.addEventListener('focusin', this.handleFocusIn);\n this.addEventListener('focusout', this.handleFocusOut);\n this.addEventListener('nile-lazy-change', this.handleSlotChange);\n\n await this.updateComplete;\n\n this.mutationObserver = new MutationObserver(this.handleTreeChanged);\n this.mutationObserver.observe(this, { childList: true, subtree: true });\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n\n this.mutationObserver.disconnect();\n\n this.removeEventListener('focusin', this.handleFocusIn);\n this.removeEventListener('focusout', this.handleFocusOut);\n this.removeEventListener('nile-lazy-change', this.handleSlotChange);\n }\n\n // Generates a clone of the expand icon element to use for each tree item\n private getExpandButtonIcon(status: 'expand' | 'collapse') {\n const slot = status === 'expand' ? this.expandedIconSlot : this.collapsedIconSlot;\n const icon = slot.assignedElements({ flatten: true })[0] as HTMLElement;\n\n // Clone it, remove ids, and slot it\n if (icon) {\n const clone = icon.cloneNode(true) as HTMLElement;\n [clone, ...clone.querySelectorAll('[id]')].forEach(el => el.removeAttribute('id'));\n clone.setAttribute('data-default', '');\n clone.slot = `${status}-icon`;\n\n return clone;\n }\n\n return null;\n }\n\n // Initializes new items by setting the `selectable` property and the expanded/collapsed icons if any\n private initTreeItem = (item: NileTreeItem) => {\n item.selectable = this.selection === 'multiple';\n\n ['expand', 'collapse']\n .filter(status => !!this.querySelector(`[slot=\"${status}-icon\"]`))\n .forEach((status: 'expand' | 'collapse') => {\n const existingIcon = item.querySelector(`[slot=\"${status}-icon\"]`);\n\n if (existingIcon === null) {\n // No separator exists, add one\n item.append(this.getExpandButtonIcon(status)!);\n } else if (existingIcon.hasAttribute('data-default')) {\n // A default separator exists, replace it\n existingIcon.replaceWith(this.getExpandButtonIcon(status)!);\n } else {\n // The user provided a custom icon, leave it alone\n }\n });\n };\n\n private handleTreeChanged(mutations: MutationRecord[]) {\n for (const mutation of mutations) {\n const addedNodes: NileTreeItem[] = [...mutation.addedNodes].filter(NileTreeItem.isTreeItem) as NileTreeItem[];\n const removedNodes = [...mutation.removedNodes].filter(NileTreeItem.isTreeItem) as NileTreeItem[];\n\n addedNodes.forEach(this.initTreeItem);\n\n // If the focused item has been removed form the DOM, move the focus to the first focusable item\n if (removedNodes.includes(this.lastFocusedItem)) {\n this.focusItem(this.getFocusableItems()[0]);\n }\n }\n }\n\n private syncTreeItems(selectedItem: NileTreeItem) {\n const items = this.getAllTreeItems();\n\n if (this.selection === 'multiple') {\n syncCheckboxes(selectedItem);\n } else {\n for (const item of items) {\n if (item !== selectedItem) {\n item.selected = false;\n }\n }\n }\n }\n\n private selectItem(selectedItem: NileTreeItem) {\n const previousSelection = [...this.selectedItems];\n\n if (this.selection === 'multiple') {\n selectedItem.selected = !selectedItem.selected;\n if (selectedItem.lazy) {\n selectedItem.expanded = true;\n }\n this.syncTreeItems(selectedItem);\n } else if (this.selection === 'single' || selectedItem.isLeaf) {\n selectedItem.expanded = !selectedItem.expanded;\n selectedItem.selected = true;\n\n this.syncTreeItems(selectedItem);\n } else if (this.selection === 'leaf') {\n selectedItem.expanded = !selectedItem.expanded;\n }\n\n const nextSelection = this.selectedItems;\n\n if (\n previousSelection.length !== nextSelection.length ||\n nextSelection.some(item => !previousSelection.includes(item))\n ) {\n // Wait for the tree items' DOM to update before emitting\n Promise.all(nextSelection.map(el => el.updateComplete)).then(() => {\n this.emit('nile-selection-change', { detail: { selection: nextSelection } });\n });\n }\n }\n\n private getAllTreeItems() {\n return [...this.querySelectorAll<NileTreeItem>('nile-tree-item')];\n }\n\n private focusItem(item?: NileTreeItem | null) {\n item?.focus();\n }\n\n private handleKeyDown(event: KeyboardEvent) {\n if (!['ArrowDown', 'ArrowUp', 'ArrowRight', 'ArrowLeft', 'Home', 'End', 'Enter', ' '].includes(event.key)) {\n return;\n }\n\n const items = this.getFocusableItems();\n const isLtr = true;\n const isRtl = false;\n\n if (items.length > 0) {\n event.preventDefault();\n const activeItemIndex = items.findIndex(item => item.matches(':focus'));\n const activeItem: NileTreeItem | undefined = items[activeItemIndex];\n\n const focusItemAt = (index: number) => {\n const item = items[clamp(index, 0, items.length - 1)];\n this.focusItem(item);\n };\n const toggleExpand = (expanded: boolean) => {\n activeItem.expanded = expanded;\n };\n\n if (event.key === 'ArrowDown') {\n // Moves focus to the next node that is focusable without opening or closing a node.\n focusItemAt(activeItemIndex + 1);\n } else if (event.key === 'ArrowUp') {\n // Moves focus to the next node that is focusable without opening or closing a node.\n focusItemAt(activeItemIndex - 1);\n } else if ((isLtr && event.key === 'ArrowRight') || (isRtl && event.key === 'ArrowLeft')) {\n //\n // When focus is on a closed node, opens the node; focus does not move.\n // When focus is on a open node, moves focus to the first child node.\n // When focus is on an end node (a tree item with no children), does nothing.\n //\n if (!activeItem || activeItem.disabled || activeItem.expanded || (activeItem.isLeaf && !activeItem.lazy)) {\n focusItemAt(activeItemIndex + 1);\n } else {\n toggleExpand(true);\n }\n } else if ((isLtr && event.key === 'ArrowLeft') || (isRtl && event.key === 'ArrowRight')) {\n //\n // When focus is on an open node, closes the node.\n // When focus is on a child node that is also either an end node or a closed node, moves focus to its parent node.\n // When focus is on a closed `tree`, does nothing.\n //\n if (!activeItem || activeItem.disabled || activeItem.isLeaf || !activeItem.expanded) {\n focusItemAt(activeItemIndex - 1);\n } else {\n toggleExpand(false);\n }\n } else if (event.key === 'Home') {\n // Moves focus to the first node in the tree without opening or closing a node.\n focusItemAt(0);\n } else if (event.key === 'End') {\n // Moves focus to the last node in the tree that is focusable without opening the node.\n focusItemAt(items.length - 1);\n } else if (event.key === 'Enter' || event.key === ' ') {\n // Selects the focused node.\n if (!activeItem.disabled) {\n this.selectItem(activeItem);\n }\n }\n }\n }\n\n private handleClick(event: Event) {\n const target = event.target as NileTreeItem;\n const treeItem = target.closest('nile-tree-item')!;\n const isExpandButton = event\n .composedPath()\n .some((el: HTMLElement) => el?.classList?.contains('tree-item__expand-button'));\n\n //\n // Don't Do anything if there's no tree item, if it's disabled, or if the click doesn't match the initial target\n // from mousedown. The latter case prevents the user from starting a click on one item and ending it on another,\n // causing the parent node to collapse.\n //\n if (!treeItem || treeItem.disabled || target !== this.clickTarget) {\n return;\n }\n\n if (this.selection === 'multiple' && isExpandButton) {\n treeItem.expanded = !treeItem.expanded;\n } else {\n this.selectItem(treeItem);\n }\n }\n\n handleMouseDown(event: MouseEvent) {\n // Record the click target so we know which item the click initially targeted\n this.clickTarget = event.target as NileTreeItem;\n }\n\n private handleFocusOut(event: FocusEvent) {\n const relatedTarget = event.relatedTarget as HTMLElement;\n\n // If the element that got the focus is not in the tree\n if (!relatedTarget || !this.contains(relatedTarget)) {\n this.tabIndex = 0;\n }\n }\n\n private handleFocusIn(event: FocusEvent) {\n const target = event.target as NileTreeItem;\n\n // If the tree has been focused, move the focus to the last focused item\n if (event.target === this) {\n this.focusItem(this.lastFocusedItem || this.getAllTreeItems()[0]);\n }\n\n // If the target is a tree item, update the tabindex\n if (NileTreeItem.isTreeItem(target) && !target.disabled) {\n if (this.lastFocusedItem) {\n this.lastFocusedItem.tabIndex = -1;\n }\n this.lastFocusedItem = target;\n this.tabIndex = -1;\n\n target.tabIndex = 0;\n }\n }\n\n private handleSlotChange() {\n const items = this.getAllTreeItems();\n items.forEach(this.initTreeItem);\n }\n\n @watch('selection')\n async handleSelectionChange() {\n const isSelectionMultiple = this.selection === 'multiple';\n const items = this.getAllTreeItems();\n\n this.setAttribute('aria-multiselectable', isSelectionMultiple ? 'true' : 'false');\n\n for (const item of items) {\n item.selectable = isSelectionMultiple;\n }\n\n if (isSelectionMultiple) {\n await this.updateComplete;\n\n [...this.querySelectorAll(':scope > nile-tree-item')].forEach((treeItem: NileTreeItem) =>\n syncCheckboxes(treeItem, true)\n );\n }\n }\n\n /** @internal Returns the list of tree items that are selected in the tree. */\n get selectedItems(): NileTreeItem[] {\n const items = this.getAllTreeItems();\n const isSelected = (item: NileTreeItem) => item.selected;\n\n return items.filter(isSelected);\n }\n\n /** @internal Gets focusable tree items in the tree. */\n getFocusableItems() {\n const items = this.getAllTreeItems();\n const collapsedItems = new Set();\n\n return items.filter(item => {\n // Exclude disabled elements\n if (item.disabled) return false;\n\n // Exclude those whose parent is collapsed or loading\n const parent: NileTreeItem | null | undefined = item.parentElement?.closest('[role=treeitem]');\n if (parent && (!parent.expanded || parent.loading || collapsedItems.has(parent))) {\n collapsedItems.add(item);\n }\n\n return !collapsedItems.has(item);\n });\n }\n\n render() {\n return html`\n <div\n part=\"base\"\n class=\"tree\"\n @click=${this.handleClick}\n @keydown=${this.handleKeyDown}\n @mousedown=${this.handleMouseDown}\n >\n <slot @slotchange=${this.handleSlotChange}></slot>\n <slot name=\"expand-icon\" hidden aria-hidden=\"true\"> </slot>\n <slot name=\"collapse-icon\" hidden aria-hidden=\"true\"> </slot>\n </div>\n `;\n }\n}\n\nexport default NileTree;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-tree': NileTree;\n }\n}\n"],"names":["syncCheckboxes","changedTreeItem","initialSync","syncParentItem","treeItem","children","getChildrenItems","includeDisabled","length","allChecked","every","item","selected","allUnchecked","indeterminate","syncDescendants","_iterator","_createForOfIteratorHelper","s","_step","n","done","childItem","disabled","syncAncestors","parentItem","parentElement","NileTreeItem","isTreeItem","setters","_tslib","NileTree","p","this","selection","clickTarget","initTreeItem","selectable","filter","status","querySelector","concat","forEach","existingIcon","append","getExpandButtonIcon","hasAttribute","replaceWith","_this","_inherits","_n3","_createClass","key","value","_connectedCallback","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context2","prev","next","_superPropGet","handleTreeChanged","bind","handleFocusIn","handleFocusOut","setAttribute","addEventListener","handleSlotChange","updateComplete","mutationObserver","MutationObserver","observe","childList","subtree","stop","connectedCallback","disconnectedCallback","super","disconnect","removeEventListener","icon","expandedIconSlot","collapsedIconSlot","assignedElements","flatten","clone","cloneNode","querySelectorAll","el","removeAttribute","slot","mutations","_iterator2","_step2","mutation","addedNodes","_toConsumableArray","removedNodes","includes","lastFocusedItem","focusItem","getFocusableItems","err","e","f","syncTreeItems","selectedItem","items","getAllTreeItems","_iterator3","_step3","selectItem","previousSelection","selectedItems","lazy","expanded","isLeaf","nextSelection","some","Promise","all","map","then","emit","detail","focus","handleKeyDown","event","preventDefault","activeItemIndex","findIndex","matches","activeItem","focusItemAt","index","clamp","toggleExpand","handleClick","target","closest","isExpandButton","composedPath","classList","contains","handleMouseDown","relatedTarget","tabIndex","_handleSelectionChange","_callee2","i","_iterator4","_step4","_n8","_callee2$","_context3","isSelectionMultiple","handleSelectionChange","get","collapsedItems","Set","parent","loading","has","add","render","html","_templateObject","_taggedTemplateLiteral","NileElement","styles","__decorate","query","prototype","property","watch","_export","customElement"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import{__decorate as i}from"tslib";import{s}from"./nile-tree.css.esm.js";import{N as n}from"../internal/nile-element.esm.js";import{c as o}from"../internal/math.esm.js";import{query as e,property as c,customElement as m}from"lit/decorators.js";import{html as t}from"lit";import{w as r}from"../internal/watch.esm.js";import{N as l}from"../nile-tree-item/nile-tree-item.esm.js";import"../internal/animate.esm.js";import"lit/directives/class-map.js";import"../utilities/animation-registry.esm.js";import"lit/directives/live.js";import"lit/directives/when.js";import"../nile-tree-item/nile-tree-item.css.esm.js";import"../nile-checkbox/nile-checkbox.esm.js";import"../nile-checkbox/nile-checkbox.css.esm.js";import"../internal/default-value.esm.js";import"lit/directives/if-defined.js";import"../nile-icon/index.esm.js";import"lit/directives/unsafe-svg.js";import"../nile-icon/icons/svg/index.esm.js";import"../nile-icon/icons/svg/access-request.esm.js";import"../nile-icon/icons/svg/accessreview.esm.js";import"../nile-icon/icons/svg/action.esm.js";import"../nile-icon/icons/svg/activity-logs.esm.js";import"../nile-icon/icons/svg/address.esm.js";import"../nile-icon/icons/svg/adjustment.esm.js";import"../nile-icon/icons/svg/admin-users.esm.js";import"../nile-icon/icons/svg/agent.esm.js";import"../nile-icon/icons/svg/aggregation.esm.js";import"../nile-icon/icons/svg/alert-circle.esm.js";import"../nile-icon/icons/svg/alert.esm.js";import"../nile-icon/icons/svg/allapplication.esm.js";import"../nile-icon/icons/svg/allsearch.esm.js";import"../nile-icon/icons/svg/analytics.esm.js";import"../nile-icon/icons/svg/api.esm.js";import"../nile-icon/icons/svg/applications-2.esm.js";import"../nile-icon/icons/svg/apply-filter.esm.js";import"../nile-icon/icons/svg/apps.esm.js";import"../nile-icon/icons/svg/aquera.esm.js";import"../nile-icon/icons/svg/aquerasupport.esm.js";import"../nile-icon/icons/svg/area.esm.js";import"../nile-icon/icons/svg/array-loop.esm.js";import"../nile-icon/icons/svg/array-of-boolean.esm.js";import"../nile-icon/icons/svg/array-of-integer.esm.js";import"../nile-icon/icons/svg/array-of-string.esm.js";import"../nile-icon/icons/svg/array.esm.js";import"../nile-icon/icons/svg/arrayofobject.esm.js";import"../nile-icon/icons/svg/arrow-narrow-left.esm.js";import"../nile-icon/icons/svg/arrow.esm.js";import"../nile-icon/icons/svg/arrowdown.esm.js";import"../nile-icon/icons/svg/arrowdropdown.esm.js";import"../nile-icon/icons/svg/arrowdropup.esm.js";import"../nile-icon/icons/svg/arrowleft.esm.js";import"../nile-icon/icons/svg/arrowright.esm.js";import"../nile-icon/icons/svg/arrowup.esm.js";import"../nile-icon/icons/svg/attribute-map-analysis-icon.esm.js";import"../nile-icon/icons/svg/attribute.esm.js";import"../nile-icon/icons/svg/attributemap.esm.js";import"../nile-icon/icons/svg/automation-details.esm.js";import"../nile-icon/icons/svg/back.esm.js";import"../nile-icon/icons/svg/bar-and-line-chart.esm.js";import"../nile-icon/icons/svg/bar-chart-square-02.esm.js";import"../nile-icon/icons/svg/bar-chart.esm.js";import"../nile-icon/icons/svg/bargraph.esm.js";import"../nile-icon/icons/svg/block.esm.js";import"../nile-icon/icons/svg/bluedot.esm.js";import"../nile-icon/icons/svg/book-closed.esm.js";import"../nile-icon/icons/svg/boolean.esm.js";import"../nile-icon/icons/svg/border_all.esm.js";import"../nile-icon/icons/svg/box.esm.js";import"../nile-icon/icons/svg/bubble-chart.esm.js";import"../nile-icon/icons/svg/bulk-sync.esm.js";import"../nile-icon/icons/svg/button-loading-black.esm.js";import"../nile-icon/icons/svg/button-loading-blue-animated.esm.js";import"../nile-icon/icons/svg/button-loading-blue.esm.js";import"../nile-icon/icons/svg/button-loading-white.esm.js";import"../nile-icon/icons/svg/calendar.esm.js";import"../nile-icon/icons/svg/cases.esm.js";import"../nile-icon/icons/svg/cell-loader.esm.js";import"../nile-icon/icons/svg/certification.esm.js";import"../nile-icon/icons/svg/check-circle.esm.js";import"../nile-icon/icons/svg/check-done-01.esm.js";import"../nile-icon/icons/svg/check-done-02.esm.js";import"../nile-icon/icons/svg/chevron-left-double.esm.js";import"../nile-icon/icons/svg/chevron-up.esm.js";import"../nile-icon/icons/svg/class.esm.js";import"../nile-icon/icons/svg/clock-check.esm.js";import"../nile-icon/icons/svg/clock-rewind.esm.js";import"../nile-icon/icons/svg/clock.esm.js";import"../nile-icon/icons/svg/close.esm.js";import"../nile-icon/icons/svg/cloud-01.esm.js";import"../nile-icon/icons/svg/code-generator.esm.js";import"../nile-icon/icons/svg/collapse-1.esm.js";import"../nile-icon/icons/svg/collapse.esm.js";import"../nile-icon/icons/svg/color.esm.js";import"../nile-icon/icons/svg/column-02.esm.js";import"../nile-icon/icons/svg/column-add.esm.js";import"../nile-icon/icons/svg/columns-03.esm.js";import"../nile-icon/icons/svg/combo1.esm.js";import"../nile-icon/icons/svg/comment.esm.js";import"../nile-icon/icons/svg/compact.esm.js";import"../nile-icon/icons/svg/compare-tiles.esm.js";import"../nile-icon/icons/svg/compare.esm.js";import"../nile-icon/icons/svg/component-menu.esm.js";import"../nile-icon/icons/svg/component.esm.js";import"../nile-icon/icons/svg/components-icon.esm.js";import"../nile-icon/icons/svg/componenttext.esm.js";import"../nile-icon/icons/svg/condition.esm.js";import"../nile-icon/icons/svg/conditions.esm.js";import"../nile-icon/icons/svg/connect.esm.js";import"../nile-icon/icons/svg/connectivitymap.esm.js";import"../nile-icon/icons/svg/connectorrightarrow.esm.js";import"../nile-icon/icons/svg/copy-06.esm.js";import"../nile-icon/icons/svg/copy.esm.js";import"../nile-icon/icons/svg/cor-analysis.esm.js";import"../nile-icon/icons/svg/correlation.esm.js";import"../nile-icon/icons/svg/cost-analytics.esm.js";import"../nile-icon/icons/svg/create.esm.js";import"../nile-icon/icons/svg/createuser.esm.js";import"../nile-icon/icons/svg/dashboard.esm.js";import"../nile-icon/icons/svg/data-insight.esm.js";import"../nile-icon/icons/svg/data-type-array.esm.js";import"../nile-icon/icons/svg/data-type-boolean.esm.js";import"../nile-icon/icons/svg/data-type-json.esm.js";import"../nile-icon/icons/svg/data-type-null.esm.js";import"../nile-icon/icons/svg/data-type-number.esm.js";import"../nile-icon/icons/svg/data-type-string.esm.js";import"../nile-icon/icons/svg/data-type-unknown.esm.js";import"../nile-icon/icons/svg/database.esm.js";import"../nile-icon/icons/svg/databaseview.esm.js";import"../nile-icon/icons/svg/dataflow-03.esm.js";import"../nile-icon/icons/svg/dataflow-04.esm.js";import"../nile-icon/icons/svg/default-cursor.esm.js";import"../nile-icon/icons/svg/default.esm.js";import"../nile-icon/icons/svg/delegate.esm.js";import"../nile-icon/icons/svg/delete.esm.js";import"../nile-icon/icons/svg/delete_history.esm.js";import"../nile-icon/icons/svg/deligateduser.esm.js";import"../nile-icon/icons/svg/directory.esm.js";import"../nile-icon/icons/svg/disabled.esm.js";import"../nile-icon/icons/svg/dock-to-right.esm.js";import"../nile-icon/icons/svg/document-new.esm.js";import"../nile-icon/icons/svg/done-02.esm.js";import"../nile-icon/icons/svg/done.esm.js";import"../nile-icon/icons/svg/dontmap.esm.js";import"../nile-icon/icons/svg/donut.esm.js";import"../nile-icon/icons/svg/dotpoints-02.esm.js";import"../nile-icon/icons/svg/dots-grid.esm.js";import"../nile-icon/icons/svg/doublearrowleft.esm.js";import"../nile-icon/icons/svg/doublearrowright.esm.js";import"../nile-icon/icons/svg/dowhileloop.esm.js";import"../nile-icon/icons/svg/downgrade.esm.js";import"../nile-icon/icons/svg/download.esm.js";import"../nile-icon/icons/svg/drag.esm.js";import"../nile-icon/icons/svg/edit-write.esm.js";import"../nile-icon/icons/svg/else.esm.js";import"../nile-icon/icons/svg/email.esm.js";import"../nile-icon/icons/svg/enable.esm.js";import"../nile-icon/icons/svg/entities.esm.js";import"../nile-icon/icons/svg/entitlement.esm.js";import"../nile-icon/icons/svg/error.esm.js";import"../nile-icon/icons/svg/escalate.esm.js";import"../nile-icon/icons/svg/exactmatch.esm.js";import"../nile-icon/icons/svg/execute.esm.js";import"../nile-icon/icons/svg/expand-03.esm.js";import"../nile-icon/icons/svg/expand-06.esm.js";import"../nile-icon/icons/svg/expand-2.esm.js";import"../nile-icon/icons/svg/expand.esm.js";import"../nile-icon/icons/svg/eye-off.esm.js";import"../nile-icon/icons/svg/eye.esm.js";import"../nile-icon/icons/svg/eyeclosed.esm.js";import"../nile-icon/icons/svg/featured-icon.esm.js";import"../nile-icon/icons/svg/file-06.esm.js";import"../nile-icon/icons/svg/file-check-02.esm.js";import"../nile-icon/icons/svg/file-shield-01.esm.js";import"../nile-icon/icons/svg/file-shield-02.esm.js";import"../nile-icon/icons/svg/file-type-icon.esm.js";import"../nile-icon/icons/svg/file.esm.js";import"../nile-icon/icons/svg/filter-1.esm.js";import"../nile-icon/icons/svg/filter.esm.js";import"../nile-icon/icons/svg/fingerprint-03.esm.js";import"../nile-icon/icons/svg/firewall.esm.js";import"../nile-icon/icons/svg/firewallagent.esm.js";import"../nile-icon/icons/svg/flow.esm.js";import"../nile-icon/icons/svg/flowmap-agent.esm.js";import"../nile-icon/icons/svg/flowmap-application.esm.js";import"../nile-icon/icons/svg/flowmap-colorpalatte.esm.js";import"../nile-icon/icons/svg/flowmap-firewall-agent.esm.js";import"../nile-icon/icons/svg/flowmap-firewall.esm.js";import"../nile-icon/icons/svg/flowmap-gateway.esm.js";import"../nile-icon/icons/svg/flowmap-orchestration.esm.js";import"../nile-icon/icons/svg/flowmap-undo.esm.js";import"../nile-icon/icons/svg/flowmap-workflow.esm.js";import"../nile-icon/icons/svg/flowmap.esm.js";import"../nile-icon/icons/svg/folder.esm.js";import"../nile-icon/icons/svg/foreach.esm.js";import"../nile-icon/icons/svg/format_align_justify.esm.js";import"../nile-icon/icons/svg/format_align_left.esm.js";import"../nile-icon/icons/svg/format_align_middle.esm.js";import"../nile-icon/icons/svg/format_align_right.esm.js";import"../nile-icon/icons/svg/format_bold.esm.js";import"../nile-icon/icons/svg/format_clear.esm.js";import"../nile-icon/icons/svg/format_italic.esm.js";import"../nile-icon/icons/svg/format_list_bulleted.esm.js";import"../nile-icon/icons/svg/format_list_numbered.esm.js";import"../nile-icon/icons/svg/format_underline.esm.js";import"../nile-icon/icons/svg/frequency.esm.js";import"../nile-icon/icons/svg/full-union.esm.js";import"../nile-icon/icons/svg/fullscreen.esm.js";import"../nile-icon/icons/svg/fullscreenexit.esm.js";import"../nile-icon/icons/svg/fullscreenshrink.esm.js";import"../nile-icon/icons/svg/function.esm.js";import"../nile-icon/icons/svg/funnel-02.esm.js";import"../nile-icon/icons/svg/funnel.esm.js";import"../nile-icon/icons/svg/gateway.esm.js";import"../nile-icon/icons/svg/gauge.esm.js";import"../nile-icon/icons/svg/general.esm.js";import"../nile-icon/icons/svg/generationphase.esm.js";import"../nile-icon/icons/svg/global-search.esm.js";import"../nile-icon/icons/svg/globe-03.esm.js";import"../nile-icon/icons/svg/globe.esm.js";import"../nile-icon/icons/svg/goal.esm.js";import"../nile-icon/icons/svg/goto.esm.js";import"../nile-icon/icons/svg/graph.esm.js";import"../nile-icon/icons/svg/graphedit.esm.js";import"../nile-icon/icons/svg/greendot.esm.js";import"../nile-icon/icons/svg/greydot.esm.js";import"../nile-icon/icons/svg/greylightdot.esm.js";import"../nile-icon/icons/svg/grid-01.esm.js";import"../nile-icon/icons/svg/group-analysis-icon.esm.js";import"../nile-icon/icons/svg/group.esm.js";import"../nile-icon/icons/svg/groupby.esm.js";import"../nile-icon/icons/svg/groups.esm.js";import"../nile-icon/icons/svg/guide-01.esm.js";import"../nile-icon/icons/svg/guide.esm.js";import"../nile-icon/icons/svg/handtool.esm.js";import"../nile-icon/icons/svg/header-child-workflow.esm.js";import"../nile-icon/icons/svg/header-flows.esm.js";import"../nile-icon/icons/svg/header-tasks.esm.js";import"../nile-icon/icons/svg/headphones-01.esm.js";import"../nile-icon/icons/svg/help.esm.js";import"../nile-icon/icons/svg/helpandsupport.esm.js";import"../nile-icon/icons/svg/helpers.esm.js";import"../nile-icon/icons/svg/helpsupport.esm.js";import"../nile-icon/icons/svg/history.esm.js";import"../nile-icon/icons/svg/horizontal_bar_chart.esm.js";import"../nile-icon/icons/svg/identitygraph.esm.js";import"../nile-icon/icons/svg/identityledger.esm.js";import"../nile-icon/icons/svg/ifelse.esm.js";import"../nile-icon/icons/svg/ifelsenew.esm.js";import"../nile-icon/icons/svg/image.esm.js";import"../nile-icon/icons/svg/image_2.esm.js";import"../nile-icon/icons/svg/immutable.esm.js";import"../nile-icon/icons/svg/info-icon.esm.js";import"../nile-icon/icons/svg/info.esm.js";import"../nile-icon/icons/svg/inner-union.esm.js";import"../nile-icon/icons/svg/inprogress.esm.js";import"../nile-icon/icons/svg/insert-at-cursor.esm.js";import"../nile-icon/icons/svg/integer.esm.js";import"../nile-icon/icons/svg/intersection.esm.js";import"../nile-icon/icons/svg/js.esm.js";import"../nile-icon/icons/svg/key-performance-indicator.esm.js";import"../nile-icon/icons/svg/keyboard-01.esm.js";import"../nile-icon/icons/svg/keyword.esm.js";import"../nile-icon/icons/svg/kill.esm.js";import"../nile-icon/icons/svg/laptop-01.esm.js";import"../nile-icon/icons/svg/layers-three-02.esm.js";import"../nile-icon/icons/svg/layout-alt-02.esm.js";import"../nile-icon/icons/svg/layout-alt-03.esm.js";import"../nile-icon/icons/svg/left-join.esm.js";import"../nile-icon/icons/svg/left-union.esm.js";import"../nile-icon/icons/svg/leftpointarrow.esm.js";import"../nile-icon/icons/svg/life-buoy-01.esm.js";import"../nile-icon/icons/svg/line.esm.js";import"../nile-icon/icons/svg/link.esm.js";import"../nile-icon/icons/svg/link_2.esm.js";import"../nile-icon/icons/svg/list-attribute.esm.js";import"../nile-icon/icons/svg/list.esm.js";import"../nile-icon/icons/svg/loader.esm.js";import"../nile-icon/icons/svg/loading.esm.js";import"../nile-icon/icons/svg/loading2.esm.js";import"../nile-icon/icons/svg/lock.esm.js";import"../nile-icon/icons/svg/log-info.esm.js";import"../nile-icon/icons/svg/log.esm.js";import"../nile-icon/icons/svg/logo-white.esm.js";import"../nile-icon/icons/svg/logout.esm.js";import"../nile-icon/icons/svg/logs.esm.js";import"../nile-icon/icons/svg/loop.esm.js";import"../nile-icon/icons/svg/manage.esm.js";import"../nile-icon/icons/svg/map.esm.js";import"../nile-icon/icons/svg/mapcreate.esm.js";import"../nile-icon/icons/svg/mapdont.esm.js";import"../nile-icon/icons/svg/maponcreate.esm.js";import"../nile-icon/icons/svg/maponupdate.esm.js";import"../nile-icon/icons/svg/mapper.esm.js";import"../nile-icon/icons/svg/mapupdate.esm.js";import"../nile-icon/icons/svg/marker-pin-01.esm.js";import"../nile-icon/icons/svg/marker_pin_02.esm.js";import"../nile-icon/icons/svg/maximize.esm.js";import"../nile-icon/icons/svg/menu.esm.js";import"../nile-icon/icons/svg/menu_close.esm.js";import"../nile-icon/icons/svg/menu_open.esm.js";import"../nile-icon/icons/svg/message-notification-square.esm.js";import"../nile-icon/icons/svg/metric.esm.js";import"../nile-icon/icons/svg/minus.esm.js";import"../nile-icon/icons/svg/monitor-01.esm.js";import"../nile-icon/icons/svg/mouse.esm.js";import"../nile-icon/icons/svg/move-application.esm.js";import"../nile-icon/icons/svg/moveleft.esm.js";import"../nile-icon/icons/svg/moveright.esm.js";import"../nile-icon/icons/svg/mute.esm.js";import"../nile-icon/icons/svg/my-integration.esm.js";import"../nile-icon/icons/svg/new-calendar.esm.js";import"../nile-icon/icons/svg/ng-action.esm.js";import"../nile-icon/icons/svg/ng-activity.esm.js";import"../nile-icon/icons/svg/ng-alert-circle.esm.js";import"../nile-icon/icons/svg/ng-alert-triangle.esm.js";import"../nile-icon/icons/svg/ng-align-center.esm.js";import"../nile-icon/icons/svg/ng-annotation-x.esm.js";import"../nile-icon/icons/svg/ng-arrow-down.esm.js";import"../nile-icon/icons/svg/ng-arrow-narrow-down.esm.js";import"../nile-icon/icons/svg/ng-arrow-narrow-left.esm.js";import"../nile-icon/icons/svg/ng-arrow-narrow-right.esm.js";import"../nile-icon/icons/svg/ng-arrow-up.esm.js";import"../nile-icon/icons/svg/ng-bar-chart-12.esm.js";import"../nile-icon/icons/svg/ng-bar-chart-square-02.esm.js";import"../nile-icon/icons/svg/ng-battery-charging.esm.js";import"../nile-icon/icons/svg/ng-bell-01.esm.js";import"../nile-icon/icons/svg/ng-bell-ringing-04.esm.js";import"../nile-icon/icons/svg/ng-bold-01.esm.js";import"../nile-icon/icons/svg/ng-briefcase-01.esm.js";import"../nile-icon/icons/svg/ng-building-01.esm.js";import"../nile-icon/icons/svg/ng-building-05.esm.js";import"../nile-icon/icons/svg/ng-button-loading-blue-animated.esm.js";import"../nile-icon/icons/svg/ng-button-loading-blue.esm.js";import"../nile-icon/icons/svg/ng-calendar-plus-02.esm.js";import"../nile-icon/icons/svg/ng-calendar.esm.js";import"../nile-icon/icons/svg/ng-check-circle-broken.esm.js";import"../nile-icon/icons/svg/ng-check-circle.esm.js";import"../nile-icon/icons/svg/ng-check-done-01.esm.js";import"../nile-icon/icons/svg/ng-check-square-broken.esm.js";import"../nile-icon/icons/svg/ng-check.esm.js";import"../nile-icon/icons/svg/ng-chevron-down.esm.js";import"../nile-icon/icons/svg/ng-chevron-left-double.esm.js";import"../nile-icon/icons/svg/ng-chevron-left.esm.js";import"../nile-icon/icons/svg/ng-chevron-right-double.esm.js";import"../nile-icon/icons/svg/ng-chevron-right.esm.js";import"../nile-icon/icons/svg/ng-chevron-selector-vertical.esm.js";import"../nile-icon/icons/svg/ng-chevron-up-double.esm.js";import"../nile-icon/icons/svg/ng-chevron-up.esm.js";import"../nile-icon/icons/svg/ng-columns-02.esm.js";import"../nile-icon/icons/svg/ng-copy-03.esm.js";import"../nile-icon/icons/svg/ng-dataflow-04.esm.js";import"../nile-icon/icons/svg/ng-dots-grid.esm.js";import"../nile-icon/icons/svg/ng-dots-vertical.esm.js";import"../nile-icon/icons/svg/ng-download-01.esm.js";import"../nile-icon/icons/svg/ng-dropdown.esm.js";import"../nile-icon/icons/svg/ng-edit-02.esm.js";import"../nile-icon/icons/svg/ng-edit-05.esm.js";import"../nile-icon/icons/svg/ng-expand-06.esm.js";import"../nile-icon/icons/svg/ng-eye-off.esm.js";import"../nile-icon/icons/svg/ng-eye.esm.js";import"../nile-icon/icons/svg/ng-file-02.esm.js";import"../nile-icon/icons/svg/ng-file-06.esm.js";import"../nile-icon/icons/svg/ng-file-check-02.esm.js";import"../nile-icon/icons/svg/ng-file-question-03.esm.js";import"../nile-icon/icons/svg/ng-filter-lines.esm.js";import"../nile-icon/icons/svg/ng-grid-01.esm.js";import"../nile-icon/icons/svg/ng-hash.esm.js";import"../nile-icon/icons/svg/ng-help-circle.esm.js";import"../nile-icon/icons/svg/ng-home-line.esm.js";import"../nile-icon/icons/svg/ng-image-03.esm.js";import"../nile-icon/icons/svg/ng-image-user-left.esm.js";import"../nile-icon/icons/svg/ng-info-circle.esm.js";import"../nile-icon/icons/svg/ng-italic-01.esm.js";import"../nile-icon/icons/svg/ng-key-01.esm.js";import"../nile-icon/icons/svg/ng-layers-three-01.esm.js";import"../nile-icon/icons/svg/ng-layers-three-02.esm.js";import"../nile-icon/icons/svg/ng-list.esm.js";import"../nile-icon/icons/svg/ng-lock-03.esm.js";import"../nile-icon/icons/svg/ng-log-out-01.esm.js";import"../nile-icon/icons/svg/ng-mail-01.esm.js";import"../nile-icon/icons/svg/ng-mail-04.esm.js";import"../nile-icon/icons/svg/ng-marker-pin-01.esm.js";import"../nile-icon/icons/svg/ng-menu-05.esm.js";import"../nile-icon/icons/svg/ng-message-text-square-01.esm.js";import"../nile-icon/icons/svg/ng-minimize-02.esm.js";import"../nile-icon/icons/svg/ng-minus.esm.js";import"../nile-icon/icons/svg/ng-monitor.esm.js";import"../nile-icon/icons/svg/ng-pie-chart-03.esm.js";import"../nile-icon/icons/svg/ng-plus.esm.js";import"../nile-icon/icons/svg/ng-power-01.esm.js";import"../nile-icon/icons/svg/ng-refresh-cw-01.esm.js";import"../nile-icon/icons/svg/ng-refresh-cw-02.esm.js";import"../nile-icon/icons/svg/ng-rocket-02.esm.js";import"../nile-icon/icons/svg/ng-rows-01.esm.js";import"../nile-icon/icons/svg/ng-search-lg.esm.js";import"../nile-icon/icons/svg/ng-send-01.esm.js";import"../nile-icon/icons/svg/ng-server.esm.js";import"../nile-icon/icons/svg/ng-settings-01.esm.js";import"../nile-icon/icons/svg/ng-share-04.esm.js";import"../nile-icon/icons/svg/ng-share-06.esm.js";import"../nile-icon/icons/svg/ng-shield-tick.esm.js";import"../nile-icon/icons/svg/ng-shopping-bag-01.esm.js";import"../nile-icon/icons/svg/ng-stars-02.esm.js";import"../nile-icon/icons/svg/ng-switch-horizontal-01.esm.js";import"../nile-icon/icons/svg/ng-tag.esm.js";import"../nile-icon/icons/svg/ng-trash-01.esm.js";import"../nile-icon/icons/svg/ng-trash-03.esm.js";import"../nile-icon/icons/svg/ng-trend-up-01.esm.js";import"../nile-icon/icons/svg/ng-underline-01.esm.js";import"../nile-icon/icons/svg/ng-upload-01.esm.js";import"../nile-icon/icons/svg/ng-upload-cloud-02.esm.js";import"../nile-icon/icons/svg/ng-user-01.esm.js";import"../nile-icon/icons/svg/ng-user-check-02-1.esm.js";import"../nile-icon/icons/svg/ng-user-check-02.esm.js";import"../nile-icon/icons/svg/ng-user-plus-02.esm.js";import"../nile-icon/icons/svg/ng-user-right-01.esm.js";import"../nile-icon/icons/svg/ng-users-01.esm.js";import"../nile-icon/icons/svg/ng-wifi.esm.js";import"../nile-icon/icons/svg/ng-x-circle.esm.js";import"../nile-icon/icons/svg/ng-x-close.esm.js";import"../nile-icon/icons/svg/ng-x-square.esm.js";import"../nile-icon/icons/svg/ng-zap.esm.js";import"../nile-icon/icons/svg/nightingale-chart.esm.js";import"../nile-icon/icons/svg/nlp.esm.js";import"../nile-icon/icons/svg/nomatch.esm.js";import"../nile-icon/icons/svg/note.esm.js";import"../nile-icon/icons/svg/notification.esm.js";import"../nile-icon/icons/svg/notificationadd.esm.js";import"../nile-icon/icons/svg/notificationadded.esm.js";import"../nile-icon/icons/svg/null.esm.js";import"../nile-icon/icons/svg/number.esm.js";import"../nile-icon/icons/svg/numberinput.esm.js";import"../nile-icon/icons/svg/numbers.esm.js";import"../nile-icon/icons/svg/object.esm.js";import"../nile-icon/icons/svg/operators.esm.js";import"../nile-icon/icons/svg/options.esm.js";import"../nile-icon/icons/svg/orchestration-solid.esm.js";import"../nile-icon/icons/svg/orchestration.esm.js";import"../nile-icon/icons/svg/organization.esm.js";import"../nile-icon/icons/svg/other.esm.js";import"../nile-icon/icons/svg/otherdetails.esm.js";import"../nile-icon/icons/svg/override.esm.js";import"../nile-icon/icons/svg/palletemenu.esm.js";import"../nile-icon/icons/svg/paperclip.esm.js";import"../nile-icon/icons/svg/partner.esm.js";import"../nile-icon/icons/svg/partners.esm.js";import"../nile-icon/icons/svg/pause.esm.js";import"../nile-icon/icons/svg/pencil.esm.js";import"../nile-icon/icons/svg/peopletask.esm.js";import"../nile-icon/icons/svg/persistent-variable.esm.js";import"../nile-icon/icons/svg/persistentdata.esm.js";import"../nile-icon/icons/svg/phone.esm.js";import"../nile-icon/icons/svg/pie.esm.js";import"../nile-icon/icons/svg/pin.esm.js";import"../nile-icon/icons/svg/play.esm.js";import"../nile-icon/icons/svg/play_pause.esm.js";import"../nile-icon/icons/svg/plus.esm.js";import"../nile-icon/icons/svg/pluscircle.esm.js";import"../nile-icon/icons/svg/plussquare.esm.js";import"../nile-icon/icons/svg/policy.esm.js";import"../nile-icon/icons/svg/potentialmatch.esm.js";import"../nile-icon/icons/svg/poweron.esm.js";import"../nile-icon/icons/svg/predefined.esm.js";import"../nile-icon/icons/svg/preview.esm.js";import"../nile-icon/icons/svg/printer.esm.js";import"../nile-icon/icons/svg/priority-high.esm.js";import"../nile-icon/icons/svg/priority-highest.esm.js";import"../nile-icon/icons/svg/priority-low.esm.js";import"../nile-icon/icons/svg/priority-medium.esm.js";import"../nile-icon/icons/svg/privilage.esm.js";import"../nile-icon/icons/svg/privilege.esm.js";import"../nile-icon/icons/svg/privilegeobject.esm.js";import"../nile-icon/icons/svg/process.esm.js";import"../nile-icon/icons/svg/professionaldetails.esm.js";import"../nile-icon/icons/svg/question.esm.js";import"../nile-icon/icons/svg/radar.esm.js";import"../nile-icon/icons/svg/radio.esm.js";import"../nile-icon/icons/svg/radioactive.esm.js";import"../nile-icon/icons/svg/radiodone.esm.js";import"../nile-icon/icons/svg/read.esm.js";import"../nile-icon/icons/svg/readexpression.esm.js";import"../nile-icon/icons/svg/readonly.esm.js";import"../nile-icon/icons/svg/readonlyuser.esm.js";import"../nile-icon/icons/svg/readuser.esm.js";import"../nile-icon/icons/svg/reddot.esm.js";import"../nile-icon/icons/svg/redo-02.esm.js";import"../nile-icon/icons/svg/redo.esm.js";import"../nile-icon/icons/svg/refresh.esm.js";import"../nile-icon/icons/svg/reminder.esm.js";import"../nile-icon/icons/svg/resize.esm.js";import"../nile-icon/icons/svg/resource.esm.js";import"../nile-icon/icons/svg/resource_analysis.esm.js";import"../nile-icon/icons/svg/resource_graph.esm.js";import"../nile-icon/icons/svg/restart_alt.esm.js";import"../nile-icon/icons/svg/revocation-cycle.esm.js";import"../nile-icon/icons/svg/right-join.esm.js";import"../nile-icon/icons/svg/right-union.esm.js";import"../nile-icon/icons/svg/rocket-02.esm.js";import"../nile-icon/icons/svg/role.esm.js";import"../nile-icon/icons/svg/run.esm.js";import"../nile-icon/icons/svg/sankey.esm.js";import"../nile-icon/icons/svg/save.esm.js";import"../nile-icon/icons/svg/savings.esm.js";import"../nile-icon/icons/svg/scatter-plot.esm.js";import"../nile-icon/icons/svg/schedule.esm.js";import"../nile-icon/icons/svg/schema.esm.js";import"../nile-icon/icons/svg/script.esm.js";import"../nile-icon/icons/svg/search-steps-icon.esm.js";import"../nile-icon/icons/svg/search.esm.js";import"../nile-icon/icons/svg/section.esm.js";import"../nile-icon/icons/svg/select-02.esm.js";import"../nile-icon/icons/svg/select.esm.js";import"../nile-icon/icons/svg/selectapplication.esm.js";import"../nile-icon/icons/svg/selectattributes.esm.js";import"../nile-icon/icons/svg/semi-circle-donut-chart.esm.js";import"../nile-icon/icons/svg/send.esm.js";import"../nile-icon/icons/svg/sendemail.esm.js";import"../nile-icon/icons/svg/sendescalation.esm.js";import"../nile-icon/icons/svg/sendreminder.esm.js";import"../nile-icon/icons/svg/server-03.esm.js";import"../nile-icon/icons/svg/settings-02.esm.js";import"../nile-icon/icons/svg/settings.esm.js";import"../nile-icon/icons/svg/share.esm.js";import"../nile-icon/icons/svg/shield-01.esm.js";import"../nile-icon/icons/svg/smartcode.esm.js";import"../nile-icon/icons/svg/sort.esm.js";import"../nile-icon/icons/svg/sort_ascending.esm.js";import"../nile-icon/icons/svg/sort_descending.esm.js";import"../nile-icon/icons/svg/sortascending.esm.js";import"../nile-icon/icons/svg/sortdescending.esm.js";import"../nile-icon/icons/svg/sortdown.esm.js";import"../nile-icon/icons/svg/sortup.esm.js";import"../nile-icon/icons/svg/stacked-bar-chart.esm.js";import"../nile-icon/icons/svg/step_into.esm.js";import"../nile-icon/icons/svg/step_out.esm.js";import"../nile-icon/icons/svg/step_over.esm.js";import"../nile-icon/icons/svg/stop.esm.js";import"../nile-icon/icons/svg/storybook.esm.js";import"../nile-icon/icons/svg/string.esm.js";import"../nile-icon/icons/svg/stringinput.esm.js";import"../nile-icon/icons/svg/stringletters.esm.js";import"../nile-icon/icons/svg/support.esm.js";import"../nile-icon/icons/svg/swap.esm.js";import"../nile-icon/icons/svg/switch.esm.js";import"../nile-icon/icons/svg/sync.esm.js";import"../nile-icon/icons/svg/table.esm.js";import"../nile-icon/icons/svg/tag.esm.js";import"../nile-icon/icons/svg/tag_cloud.esm.js";import"../nile-icon/icons/svg/test.esm.js";import"../nile-icon/icons/svg/text-02.esm.js";import"../nile-icon/icons/svg/text.esm.js";import"../nile-icon/icons/svg/textarea-expander.esm.js";import"../nile-icon/icons/svg/thumbsdown.esm.js";import"../nile-icon/icons/svg/thumbsup.esm.js";import"../nile-icon/icons/svg/thumsup.esm.js";import"../nile-icon/icons/svg/tick.esm.js";import"../nile-icon/icons/svg/timeupdate.esm.js";import"../nile-icon/icons/svg/timezone.esm.js";import"../nile-icon/icons/svg/transaction_monitor.esm.js";import"../nile-icon/icons/svg/travel_map.esm.js";import"../nile-icon/icons/svg/trend-up-02.esm.js";import"../nile-icon/icons/svg/trigger.esm.js";import"../nile-icon/icons/svg/undo-02.esm.js";import"../nile-icon/icons/svg/undo.esm.js";import"../nile-icon/icons/svg/union.esm.js";import"../nile-icon/icons/svg/unlink.esm.js";import"../nile-icon/icons/svg/unmute.esm.js";import"../nile-icon/icons/svg/update.esm.js";import"../nile-icon/icons/svg/updown.esm.js";import"../nile-icon/icons/svg/upgrade.esm.js";import"../nile-icon/icons/svg/upload.esm.js";import"../nile-icon/icons/svg/user-group.esm.js";import"../nile-icon/icons/svg/user.esm.js";import"../nile-icon/icons/svg/useractive.esm.js";import"../nile-icon/icons/svg/useradd.esm.js";import"../nile-icon/icons/svg/useraddgroup.esm.js";import"../nile-icon/icons/svg/userfind.esm.js";import"../nile-icon/icons/svg/userimport.esm.js";import"../nile-icon/icons/svg/userimportgroup.esm.js";import"../nile-icon/icons/svg/usermixed.esm.js";import"../nile-icon/icons/svg/userremove.esm.js";import"../nile-icon/icons/svg/userremovegroup.esm.js";import"../nile-icon/icons/svg/users-plus.esm.js";import"../nile-icon/icons/svg/users-up.esm.js";import"../nile-icon/icons/svg/users.esm.js";import"../nile-icon/icons/svg/userupdate.esm.js";import"../nile-icon/icons/svg/validationexpression.esm.js";import"../nile-icon/icons/svg/variable-global.esm.js";import"../nile-icon/icons/svg/variable-local.esm.js";import"../nile-icon/icons/svg/variable-new.esm.js";import"../nile-icon/icons/svg/variable.esm.js";import"../nile-icon/icons/svg/video.esm.js";import"../nile-icon/icons/svg/view.esm.js";import"../nile-icon/icons/svg/virtualserver.esm.js";import"../nile-icon/icons/svg/virtualservergroup.esm.js";import"../nile-icon/icons/svg/visibility.esm.js";import"../nile-icon/icons/svg/visibilityoff.esm.js";import"../nile-icon/icons/svg/visual_builder.esm.js";import"../nile-icon/icons/svg/wait.esm.js";import"../nile-icon/icons/svg/warning-01.esm.js";import"../nile-icon/icons/svg/warning.esm.js";import"../nile-icon/icons/svg/whileloop.esm.js";import"../nile-icon/icons/svg/workflow-application.esm.js";import"../nile-icon/icons/svg/workflow-text.esm.js";import"../nile-icon/icons/svg/workflow.esm.js";import"../nile-icon/icons/svg/writeexpression.esm.js";import"../nile-icon/aliasmap.esm.js";import"../nile-spinner/nile-spinner.esm.js";import"../nile-spinner/nile-spinner.css.esm.js";function g(i,s=!1){function n(i){const s=i.getChildrenItems({includeDisabled:!1});if(s.length){const n=s.every((i=>i.selected)),o=s.every((i=>!i.selected&&!i.indeterminate));i.selected=n,i.indeterminate=!n&&!o}}!function i(o){for(const n of o.getChildrenItems())n.selected=s?o.selected||n.selected:!n.disabled&&o.selected,i(n);s&&n(o)}(i),function i(s){const o=s.parentElement;l.isTreeItem(o)&&(n(o),i(o))}(i)}let p=class extends n{constructor(){super(...arguments),this.selection="leaf",this.clickTarget=null,this.initTreeItem=i=>{i.selectable="multiple"===this.selection,["expand","collapse"].filter((i=>!!this.querySelector(`[slot="${i}-icon"]`))).forEach((s=>{const n=i.querySelector(`[slot="${s}-icon"]`);null===n?i.append(this.getExpandButtonIcon(s)):n.hasAttribute("data-default")&&n.replaceWith(this.getExpandButtonIcon(s))}))}}async connectedCallback(){super.connectedCallback(),this.handleTreeChanged=this.handleTreeChanged.bind(this),this.handleFocusIn=this.handleFocusIn.bind(this),this.handleFocusOut=this.handleFocusOut.bind(this),this.setAttribute("role","tree"),this.setAttribute("tabindex","0"),this.addEventListener("focusin",this.handleFocusIn),this.addEventListener("focusout",this.handleFocusOut),this.addEventListener("nile-lazy-change",this.handleSlotChange),await this.updateComplete,this.mutationObserver=new MutationObserver(this.handleTreeChanged),this.mutationObserver.observe(this,{childList:!0,subtree:!0})}disconnectedCallback(){super.disconnectedCallback(),this.mutationObserver.disconnect(),this.removeEventListener("focusin",this.handleFocusIn),this.removeEventListener("focusout",this.handleFocusOut),this.removeEventListener("nile-lazy-change",this.handleSlotChange)}getExpandButtonIcon(i){const s=("expand"===i?this.expandedIconSlot:this.collapsedIconSlot).assignedElements({flatten:!0})[0];if(s){const n=s.cloneNode(!0);return[n,...n.querySelectorAll("[id]")].forEach((i=>i.removeAttribute("id"))),n.setAttribute("data-default",""),n.slot=`${i}-icon`,n}return null}handleTreeChanged(i){for(const s of i){const i=[...s.addedNodes].filter(l.isTreeItem),n=[...s.removedNodes].filter(l.isTreeItem);i.forEach(this.initTreeItem),n.includes(this.lastFocusedItem)&&this.focusItem(this.getFocusableItems()[0])}}syncTreeItems(i){const s=this.getAllTreeItems();if("multiple"===this.selection)g(i);else for(const n of s)n!==i&&(n.selected=!1)}selectItem(i){const s=[...this.selectedItems];"multiple"===this.selection?(i.selected=!i.selected,i.lazy&&(i.expanded=!0),this.syncTreeItems(i)):"single"===this.selection||i.isLeaf?(i.expanded=!i.expanded,i.selected=!0,this.syncTreeItems(i)):"leaf"===this.selection&&(i.expanded=!i.expanded);const n=this.selectedItems;(s.length!==n.length||n.some((i=>!s.includes(i))))&&Promise.all(n.map((i=>i.updateComplete))).then((()=>{this.emit("nile-selection-change",{detail:{selection:n}})}))}getAllTreeItems(){return[...this.querySelectorAll("nile-tree-item")]}focusItem(i){i?.focus()}handleKeyDown(i){if(!["ArrowDown","ArrowUp","ArrowRight","ArrowLeft","Home","End","Enter"," "].includes(i.key))return;const s=this.getFocusableItems();if(s.length>0){i.preventDefault();const n=s.findIndex((i=>i.matches(":focus"))),e=s[n],c=i=>{const n=s[o(i,0,s.length-1)];this.focusItem(n)},m=i=>{e.expanded=i};"ArrowDown"===i.key?c(n+1):"ArrowUp"===i.key?c(n-1):"ArrowRight"===i.key?!e||e.disabled||e.expanded||e.isLeaf&&!e.lazy?c(n+1):m(!0):"ArrowLeft"===i.key?!e||e.disabled||e.isLeaf||!e.expanded?c(n-1):m(!1):"Home"===i.key?c(0):"End"===i.key?c(s.length-1):"Enter"!==i.key&&" "!==i.key||e.disabled||this.selectItem(e)}}handleClick(i){const s=i.target,n=s.closest("nile-tree-item"),o=i.composedPath().some((i=>i?.classList?.contains("tree-item__expand-button")));n&&!n.disabled&&s===this.clickTarget&&("multiple"===this.selection&&o?n.expanded=!n.expanded:this.selectItem(n))}handleMouseDown(i){this.clickTarget=i.target}handleFocusOut(i){const s=i.relatedTarget;s&&this.contains(s)||(this.tabIndex=0)}handleFocusIn(i){const s=i.target;i.target===this&&this.focusItem(this.lastFocusedItem||this.getAllTreeItems()[0]),l.isTreeItem(s)&&!s.disabled&&(this.lastFocusedItem&&(this.lastFocusedItem.tabIndex=-1),this.lastFocusedItem=s,this.tabIndex=-1,s.tabIndex=0)}handleSlotChange(){this.getAllTreeItems().forEach(this.initTreeItem)}async handleSelectionChange(){const i="multiple"===this.selection,s=this.getAllTreeItems();this.setAttribute("aria-multiselectable",i?"true":"false");for(const n of s)n.selectable=i;i&&(await this.updateComplete,[...this.querySelectorAll(":scope > nile-tree-item")].forEach((i=>g(i,!0))))}get selectedItems(){return this.getAllTreeItems().filter((i=>i.selected))}getFocusableItems(){const i=this.getAllTreeItems(),s=new Set;return i.filter((i=>{if(i.disabled)return!1;const n=i.parentElement?.closest("[role=treeitem]");return n&&(!n.expanded||n.loading||s.has(n))&&s.add(i),!s.has(i)}))}render(){return t`
1
+ import{__decorate as i}from"tslib";import{s}from"./nile-tree.css.esm.js";import{N as n}from"../internal/nile-element.esm.js";import{c as o}from"../internal/math.esm.js";import{query as e,property as c,customElement as m}from"lit/decorators.js";import{html as t}from"lit";import{w as r}from"../internal/watch.esm.js";import{N as l}from"../nile-tree-item/nile-tree-item.esm.js";import"../internal/animate.esm.js";import"lit/directives/class-map.js";import"../utilities/animation-registry.esm.js";import"lit/directives/live.js";import"lit/directives/when.js";import"../nile-tree-item/nile-tree-item.css.esm.js";import"../nile-checkbox/nile-checkbox.esm.js";import"../nile-checkbox/nile-checkbox.css.esm.js";import"../internal/default-value.esm.js";import"lit/directives/if-defined.js";import"../nile-icon/index.esm.js";import"lit/directives/unsafe-svg.js";import"../nile-icon/icons/svg/index.esm.js";import"../nile-icon/icons/svg/access-request.esm.js";import"../nile-icon/icons/svg/accessreview.esm.js";import"../nile-icon/icons/svg/action.esm.js";import"../nile-icon/icons/svg/activity-logs.esm.js";import"../nile-icon/icons/svg/address.esm.js";import"../nile-icon/icons/svg/adjustment.esm.js";import"../nile-icon/icons/svg/admin-users.esm.js";import"../nile-icon/icons/svg/agent.esm.js";import"../nile-icon/icons/svg/aggregation.esm.js";import"../nile-icon/icons/svg/alert-circle.esm.js";import"../nile-icon/icons/svg/alert.esm.js";import"../nile-icon/icons/svg/allapplication.esm.js";import"../nile-icon/icons/svg/allsearch.esm.js";import"../nile-icon/icons/svg/analytics.esm.js";import"../nile-icon/icons/svg/api.esm.js";import"../nile-icon/icons/svg/applications-2.esm.js";import"../nile-icon/icons/svg/apply-filter.esm.js";import"../nile-icon/icons/svg/apps.esm.js";import"../nile-icon/icons/svg/aquera.esm.js";import"../nile-icon/icons/svg/aquerasupport.esm.js";import"../nile-icon/icons/svg/area.esm.js";import"../nile-icon/icons/svg/array-loop.esm.js";import"../nile-icon/icons/svg/array-of-boolean.esm.js";import"../nile-icon/icons/svg/array-of-integer.esm.js";import"../nile-icon/icons/svg/array-of-string.esm.js";import"../nile-icon/icons/svg/array.esm.js";import"../nile-icon/icons/svg/arrayofobject.esm.js";import"../nile-icon/icons/svg/arrow-narrow-left.esm.js";import"../nile-icon/icons/svg/arrow.esm.js";import"../nile-icon/icons/svg/arrowdown.esm.js";import"../nile-icon/icons/svg/arrowdropdown.esm.js";import"../nile-icon/icons/svg/arrowdropup.esm.js";import"../nile-icon/icons/svg/arrowleft.esm.js";import"../nile-icon/icons/svg/arrowright.esm.js";import"../nile-icon/icons/svg/arrowup.esm.js";import"../nile-icon/icons/svg/attribute-map-analysis-icon.esm.js";import"../nile-icon/icons/svg/attribute.esm.js";import"../nile-icon/icons/svg/attributemap.esm.js";import"../nile-icon/icons/svg/automation-details.esm.js";import"../nile-icon/icons/svg/back.esm.js";import"../nile-icon/icons/svg/bar-and-line-chart.esm.js";import"../nile-icon/icons/svg/bar-chart-square-02.esm.js";import"../nile-icon/icons/svg/bar-chart.esm.js";import"../nile-icon/icons/svg/bargraph.esm.js";import"../nile-icon/icons/svg/block.esm.js";import"../nile-icon/icons/svg/bluedot.esm.js";import"../nile-icon/icons/svg/book-closed.esm.js";import"../nile-icon/icons/svg/boolean.esm.js";import"../nile-icon/icons/svg/border_all.esm.js";import"../nile-icon/icons/svg/box.esm.js";import"../nile-icon/icons/svg/bubble-chart.esm.js";import"../nile-icon/icons/svg/bulk-sync.esm.js";import"../nile-icon/icons/svg/button-loading-black.esm.js";import"../nile-icon/icons/svg/button-loading-blue-animated.esm.js";import"../nile-icon/icons/svg/button-loading-blue.esm.js";import"../nile-icon/icons/svg/button-loading-white.esm.js";import"../nile-icon/icons/svg/calendar.esm.js";import"../nile-icon/icons/svg/cases.esm.js";import"../nile-icon/icons/svg/cell-loader.esm.js";import"../nile-icon/icons/svg/certification.esm.js";import"../nile-icon/icons/svg/check-circle.esm.js";import"../nile-icon/icons/svg/check-done-01.esm.js";import"../nile-icon/icons/svg/check-done-02.esm.js";import"../nile-icon/icons/svg/chevron-left-double.esm.js";import"../nile-icon/icons/svg/chevron-up.esm.js";import"../nile-icon/icons/svg/class.esm.js";import"../nile-icon/icons/svg/clock-check.esm.js";import"../nile-icon/icons/svg/clock-rewind.esm.js";import"../nile-icon/icons/svg/clock.esm.js";import"../nile-icon/icons/svg/close.esm.js";import"../nile-icon/icons/svg/cloud-01.esm.js";import"../nile-icon/icons/svg/code-generator.esm.js";import"../nile-icon/icons/svg/collapse-1.esm.js";import"../nile-icon/icons/svg/collapse.esm.js";import"../nile-icon/icons/svg/color.esm.js";import"../nile-icon/icons/svg/column-02.esm.js";import"../nile-icon/icons/svg/column-add.esm.js";import"../nile-icon/icons/svg/columns-03.esm.js";import"../nile-icon/icons/svg/combo1.esm.js";import"../nile-icon/icons/svg/comment.esm.js";import"../nile-icon/icons/svg/compact.esm.js";import"../nile-icon/icons/svg/compare-tiles.esm.js";import"../nile-icon/icons/svg/compare.esm.js";import"../nile-icon/icons/svg/component-menu.esm.js";import"../nile-icon/icons/svg/component.esm.js";import"../nile-icon/icons/svg/components-icon.esm.js";import"../nile-icon/icons/svg/componenttext.esm.js";import"../nile-icon/icons/svg/condition.esm.js";import"../nile-icon/icons/svg/conditions.esm.js";import"../nile-icon/icons/svg/connect.esm.js";import"../nile-icon/icons/svg/connectivitymap.esm.js";import"../nile-icon/icons/svg/connectorrightarrow.esm.js";import"../nile-icon/icons/svg/copy-06.esm.js";import"../nile-icon/icons/svg/copy.esm.js";import"../nile-icon/icons/svg/cor-analysis.esm.js";import"../nile-icon/icons/svg/correlation.esm.js";import"../nile-icon/icons/svg/cost-analytics.esm.js";import"../nile-icon/icons/svg/create.esm.js";import"../nile-icon/icons/svg/createuser.esm.js";import"../nile-icon/icons/svg/dashboard.esm.js";import"../nile-icon/icons/svg/data-insight.esm.js";import"../nile-icon/icons/svg/data-type-array.esm.js";import"../nile-icon/icons/svg/data-type-boolean.esm.js";import"../nile-icon/icons/svg/data-type-json.esm.js";import"../nile-icon/icons/svg/data-type-null.esm.js";import"../nile-icon/icons/svg/data-type-number.esm.js";import"../nile-icon/icons/svg/data-type-string.esm.js";import"../nile-icon/icons/svg/data-type-unknown.esm.js";import"../nile-icon/icons/svg/database.esm.js";import"../nile-icon/icons/svg/databaseview.esm.js";import"../nile-icon/icons/svg/dataflow-03.esm.js";import"../nile-icon/icons/svg/dataflow-04.esm.js";import"../nile-icon/icons/svg/default-cursor.esm.js";import"../nile-icon/icons/svg/default.esm.js";import"../nile-icon/icons/svg/delegate.esm.js";import"../nile-icon/icons/svg/delete.esm.js";import"../nile-icon/icons/svg/delete_history.esm.js";import"../nile-icon/icons/svg/deligateduser.esm.js";import"../nile-icon/icons/svg/directory.esm.js";import"../nile-icon/icons/svg/disabled.esm.js";import"../nile-icon/icons/svg/dock-to-right.esm.js";import"../nile-icon/icons/svg/document-new.esm.js";import"../nile-icon/icons/svg/done-02.esm.js";import"../nile-icon/icons/svg/done.esm.js";import"../nile-icon/icons/svg/dontmap.esm.js";import"../nile-icon/icons/svg/donut.esm.js";import"../nile-icon/icons/svg/dotpoints-02.esm.js";import"../nile-icon/icons/svg/dots-grid.esm.js";import"../nile-icon/icons/svg/doublearrowleft.esm.js";import"../nile-icon/icons/svg/doublearrowright.esm.js";import"../nile-icon/icons/svg/dowhileloop.esm.js";import"../nile-icon/icons/svg/downgrade.esm.js";import"../nile-icon/icons/svg/download.esm.js";import"../nile-icon/icons/svg/drag.esm.js";import"../nile-icon/icons/svg/edit-write.esm.js";import"../nile-icon/icons/svg/else.esm.js";import"../nile-icon/icons/svg/email.esm.js";import"../nile-icon/icons/svg/enable.esm.js";import"../nile-icon/icons/svg/entities.esm.js";import"../nile-icon/icons/svg/entitlement.esm.js";import"../nile-icon/icons/svg/error.esm.js";import"../nile-icon/icons/svg/escalate.esm.js";import"../nile-icon/icons/svg/exactmatch.esm.js";import"../nile-icon/icons/svg/execute.esm.js";import"../nile-icon/icons/svg/expand-03.esm.js";import"../nile-icon/icons/svg/expand-06.esm.js";import"../nile-icon/icons/svg/expand-2.esm.js";import"../nile-icon/icons/svg/expand.esm.js";import"../nile-icon/icons/svg/eye-off.esm.js";import"../nile-icon/icons/svg/eye.esm.js";import"../nile-icon/icons/svg/eyeclosed.esm.js";import"../nile-icon/icons/svg/featured-icon.esm.js";import"../nile-icon/icons/svg/file-06.esm.js";import"../nile-icon/icons/svg/file-check-02.esm.js";import"../nile-icon/icons/svg/file-shield-01.esm.js";import"../nile-icon/icons/svg/file-shield-02.esm.js";import"../nile-icon/icons/svg/file-type-icon.esm.js";import"../nile-icon/icons/svg/file.esm.js";import"../nile-icon/icons/svg/filter-1.esm.js";import"../nile-icon/icons/svg/filter.esm.js";import"../nile-icon/icons/svg/fingerprint-03.esm.js";import"../nile-icon/icons/svg/firewall.esm.js";import"../nile-icon/icons/svg/firewallagent.esm.js";import"../nile-icon/icons/svg/flow.esm.js";import"../nile-icon/icons/svg/flowmap-agent.esm.js";import"../nile-icon/icons/svg/flowmap-application.esm.js";import"../nile-icon/icons/svg/flowmap-colorpalatte.esm.js";import"../nile-icon/icons/svg/flowmap-firewall-agent.esm.js";import"../nile-icon/icons/svg/flowmap-firewall.esm.js";import"../nile-icon/icons/svg/flowmap-gateway.esm.js";import"../nile-icon/icons/svg/flowmap-orchestration.esm.js";import"../nile-icon/icons/svg/flowmap-undo.esm.js";import"../nile-icon/icons/svg/flowmap-workflow.esm.js";import"../nile-icon/icons/svg/flowmap.esm.js";import"../nile-icon/icons/svg/folder.esm.js";import"../nile-icon/icons/svg/foreach.esm.js";import"../nile-icon/icons/svg/format_align_justify.esm.js";import"../nile-icon/icons/svg/format_align_left.esm.js";import"../nile-icon/icons/svg/format_align_middle.esm.js";import"../nile-icon/icons/svg/format_align_right.esm.js";import"../nile-icon/icons/svg/format_bold.esm.js";import"../nile-icon/icons/svg/format_clear.esm.js";import"../nile-icon/icons/svg/format_italic.esm.js";import"../nile-icon/icons/svg/format_list_bulleted.esm.js";import"../nile-icon/icons/svg/format_list_numbered.esm.js";import"../nile-icon/icons/svg/format_underline.esm.js";import"../nile-icon/icons/svg/frequency.esm.js";import"../nile-icon/icons/svg/full-union.esm.js";import"../nile-icon/icons/svg/fullscreen.esm.js";import"../nile-icon/icons/svg/fullscreenexit.esm.js";import"../nile-icon/icons/svg/fullscreenshrink.esm.js";import"../nile-icon/icons/svg/function.esm.js";import"../nile-icon/icons/svg/funnel-02.esm.js";import"../nile-icon/icons/svg/funnel.esm.js";import"../nile-icon/icons/svg/gateway.esm.js";import"../nile-icon/icons/svg/gauge.esm.js";import"../nile-icon/icons/svg/general.esm.js";import"../nile-icon/icons/svg/generationphase.esm.js";import"../nile-icon/icons/svg/global-search.esm.js";import"../nile-icon/icons/svg/globe-03.esm.js";import"../nile-icon/icons/svg/globe.esm.js";import"../nile-icon/icons/svg/goal.esm.js";import"../nile-icon/icons/svg/goto.esm.js";import"../nile-icon/icons/svg/graph.esm.js";import"../nile-icon/icons/svg/graphedit.esm.js";import"../nile-icon/icons/svg/greendot.esm.js";import"../nile-icon/icons/svg/greydot.esm.js";import"../nile-icon/icons/svg/greylightdot.esm.js";import"../nile-icon/icons/svg/grid-01.esm.js";import"../nile-icon/icons/svg/group-analysis-icon.esm.js";import"../nile-icon/icons/svg/group.esm.js";import"../nile-icon/icons/svg/groupby.esm.js";import"../nile-icon/icons/svg/groups.esm.js";import"../nile-icon/icons/svg/guide-01.esm.js";import"../nile-icon/icons/svg/guide.esm.js";import"../nile-icon/icons/svg/handtool.esm.js";import"../nile-icon/icons/svg/header-child-workflow.esm.js";import"../nile-icon/icons/svg/header-flows.esm.js";import"../nile-icon/icons/svg/header-tasks.esm.js";import"../nile-icon/icons/svg/headphones-01.esm.js";import"../nile-icon/icons/svg/help.esm.js";import"../nile-icon/icons/svg/helpandsupport.esm.js";import"../nile-icon/icons/svg/helpers.esm.js";import"../nile-icon/icons/svg/helpsupport.esm.js";import"../nile-icon/icons/svg/history.esm.js";import"../nile-icon/icons/svg/horizontal_bar_chart.esm.js";import"../nile-icon/icons/svg/identitygraph.esm.js";import"../nile-icon/icons/svg/identityledger.esm.js";import"../nile-icon/icons/svg/ifelse.esm.js";import"../nile-icon/icons/svg/ifelsenew.esm.js";import"../nile-icon/icons/svg/image.esm.js";import"../nile-icon/icons/svg/image_2.esm.js";import"../nile-icon/icons/svg/immutable.esm.js";import"../nile-icon/icons/svg/info-icon.esm.js";import"../nile-icon/icons/svg/info.esm.js";import"../nile-icon/icons/svg/inner-union.esm.js";import"../nile-icon/icons/svg/inprogress.esm.js";import"../nile-icon/icons/svg/insert-at-cursor.esm.js";import"../nile-icon/icons/svg/integer.esm.js";import"../nile-icon/icons/svg/intersection.esm.js";import"../nile-icon/icons/svg/js.esm.js";import"../nile-icon/icons/svg/key-performance-indicator.esm.js";import"../nile-icon/icons/svg/keyboard-01.esm.js";import"../nile-icon/icons/svg/keyword.esm.js";import"../nile-icon/icons/svg/kill.esm.js";import"../nile-icon/icons/svg/laptop-01.esm.js";import"../nile-icon/icons/svg/layers-three-02.esm.js";import"../nile-icon/icons/svg/layout-alt-02.esm.js";import"../nile-icon/icons/svg/layout-alt-03.esm.js";import"../nile-icon/icons/svg/left-join.esm.js";import"../nile-icon/icons/svg/left-union.esm.js";import"../nile-icon/icons/svg/leftpointarrow.esm.js";import"../nile-icon/icons/svg/life-buoy-01.esm.js";import"../nile-icon/icons/svg/line.esm.js";import"../nile-icon/icons/svg/link.esm.js";import"../nile-icon/icons/svg/link_2.esm.js";import"../nile-icon/icons/svg/list-attribute.esm.js";import"../nile-icon/icons/svg/list.esm.js";import"../nile-icon/icons/svg/loader.esm.js";import"../nile-icon/icons/svg/loading.esm.js";import"../nile-icon/icons/svg/loading2.esm.js";import"../nile-icon/icons/svg/lock.esm.js";import"../nile-icon/icons/svg/log-info.esm.js";import"../nile-icon/icons/svg/log.esm.js";import"../nile-icon/icons/svg/logo-white.esm.js";import"../nile-icon/icons/svg/logout.esm.js";import"../nile-icon/icons/svg/logs.esm.js";import"../nile-icon/icons/svg/loop.esm.js";import"../nile-icon/icons/svg/manage.esm.js";import"../nile-icon/icons/svg/map.esm.js";import"../nile-icon/icons/svg/mapcreate.esm.js";import"../nile-icon/icons/svg/mapdont.esm.js";import"../nile-icon/icons/svg/maponcreate.esm.js";import"../nile-icon/icons/svg/maponupdate.esm.js";import"../nile-icon/icons/svg/mapper.esm.js";import"../nile-icon/icons/svg/mapupdate.esm.js";import"../nile-icon/icons/svg/marker-pin-01.esm.js";import"../nile-icon/icons/svg/marker_pin_02.esm.js";import"../nile-icon/icons/svg/maximize.esm.js";import"../nile-icon/icons/svg/menu.esm.js";import"../nile-icon/icons/svg/menu_close.esm.js";import"../nile-icon/icons/svg/menu_open.esm.js";import"../nile-icon/icons/svg/message-notification-square.esm.js";import"../nile-icon/icons/svg/metric.esm.js";import"../nile-icon/icons/svg/minus.esm.js";import"../nile-icon/icons/svg/monitor-01.esm.js";import"../nile-icon/icons/svg/mouse.esm.js";import"../nile-icon/icons/svg/move-application.esm.js";import"../nile-icon/icons/svg/moveleft.esm.js";import"../nile-icon/icons/svg/moveright.esm.js";import"../nile-icon/icons/svg/mute.esm.js";import"../nile-icon/icons/svg/my-integration.esm.js";import"../nile-icon/icons/svg/new-calendar.esm.js";import"../nile-icon/icons/svg/ng-action.esm.js";import"../nile-icon/icons/svg/ng-activity.esm.js";import"../nile-icon/icons/svg/ng-alert-circle.esm.js";import"../nile-icon/icons/svg/ng-alert-triangle.esm.js";import"../nile-icon/icons/svg/ng-align-center.esm.js";import"../nile-icon/icons/svg/ng-annotation-x.esm.js";import"../nile-icon/icons/svg/ng-arrow-down.esm.js";import"../nile-icon/icons/svg/ng-arrow-narrow-down.esm.js";import"../nile-icon/icons/svg/ng-arrow-narrow-left.esm.js";import"../nile-icon/icons/svg/ng-arrow-narrow-right.esm.js";import"../nile-icon/icons/svg/ng-arrow-up.esm.js";import"../nile-icon/icons/svg/ng-bar-chart-12.esm.js";import"../nile-icon/icons/svg/ng-bar-chart-square-02.esm.js";import"../nile-icon/icons/svg/ng-battery-charging.esm.js";import"../nile-icon/icons/svg/ng-bell-01.esm.js";import"../nile-icon/icons/svg/ng-bell-ringing-04.esm.js";import"../nile-icon/icons/svg/ng-bold-01.esm.js";import"../nile-icon/icons/svg/ng-boolean.esm.js";import"../nile-icon/icons/svg/ng-briefcase-01.esm.js";import"../nile-icon/icons/svg/ng-building-01.esm.js";import"../nile-icon/icons/svg/ng-building-05.esm.js";import"../nile-icon/icons/svg/ng-building-07.esm.js";import"../nile-icon/icons/svg/ng-button-loading-blue-animated.esm.js";import"../nile-icon/icons/svg/ng-button-loading-blue.esm.js";import"../nile-icon/icons/svg/ng-calendar-plus-02.esm.js";import"../nile-icon/icons/svg/ng-calendar.esm.js";import"../nile-icon/icons/svg/ng-check-circle-broken.esm.js";import"../nile-icon/icons/svg/ng-check-circle.esm.js";import"../nile-icon/icons/svg/ng-check-done-01.esm.js";import"../nile-icon/icons/svg/ng-check-square-broken.esm.js";import"../nile-icon/icons/svg/ng-check.esm.js";import"../nile-icon/icons/svg/ng-chevron-down.esm.js";import"../nile-icon/icons/svg/ng-chevron-left-double.esm.js";import"../nile-icon/icons/svg/ng-chevron-left.esm.js";import"../nile-icon/icons/svg/ng-chevron-right-double.esm.js";import"../nile-icon/icons/svg/ng-chevron-right.esm.js";import"../nile-icon/icons/svg/ng-chevron-selector-vertical.esm.js";import"../nile-icon/icons/svg/ng-chevron-up-double.esm.js";import"../nile-icon/icons/svg/ng-chevron-up.esm.js";import"../nile-icon/icons/svg/ng-clock-refresh.esm.js";import"../nile-icon/icons/svg/ng-columns-02.esm.js";import"../nile-icon/icons/svg/ng-copy-03.esm.js";import"../nile-icon/icons/svg/ng-dataflow-02.esm.js";import"../nile-icon/icons/svg/ng-dataflow-04.esm.js";import"../nile-icon/icons/svg/ng-dots-grid.esm.js";import"../nile-icon/icons/svg/ng-dots-vertical.esm.js";import"../nile-icon/icons/svg/ng-download-01.esm.js";import"../nile-icon/icons/svg/ng-dropdown.esm.js";import"../nile-icon/icons/svg/ng-edit-02.esm.js";import"../nile-icon/icons/svg/ng-edit-05.esm.js";import"../nile-icon/icons/svg/ng-expand-06.esm.js";import"../nile-icon/icons/svg/ng-eye-off.esm.js";import"../nile-icon/icons/svg/ng-eye.esm.js";import"../nile-icon/icons/svg/ng-file-02.esm.js";import"../nile-icon/icons/svg/ng-file-06.esm.js";import"../nile-icon/icons/svg/ng-file-check-02.esm.js";import"../nile-icon/icons/svg/ng-file-question-03.esm.js";import"../nile-icon/icons/svg/ng-filter-lines.esm.js";import"../nile-icon/icons/svg/ng-folder-code.esm.js";import"../nile-icon/icons/svg/ng-grid-01.esm.js";import"../nile-icon/icons/svg/ng-hash.esm.js";import"../nile-icon/icons/svg/ng-help-circle.esm.js";import"../nile-icon/icons/svg/ng-home-line.esm.js";import"../nile-icon/icons/svg/ng-image-03.esm.js";import"../nile-icon/icons/svg/ng-image-user-left.esm.js";import"../nile-icon/icons/svg/ng-info-circle.esm.js";import"../nile-icon/icons/svg/ng-italic-01.esm.js";import"../nile-icon/icons/svg/ng-key-01.esm.js";import"../nile-icon/icons/svg/ng-layers-three-01.esm.js";import"../nile-icon/icons/svg/ng-layers-three-02.esm.js";import"../nile-icon/icons/svg/ng-lightbulb-05.esm.js";import"../nile-icon/icons/svg/ng-list.esm.js";import"../nile-icon/icons/svg/ng-lock-03.esm.js";import"../nile-icon/icons/svg/ng-log-out-01.esm.js";import"../nile-icon/icons/svg/ng-mail-01.esm.js";import"../nile-icon/icons/svg/ng-mail-04.esm.js";import"../nile-icon/icons/svg/ng-marker-pin-01.esm.js";import"../nile-icon/icons/svg/ng-menu-05.esm.js";import"../nile-icon/icons/svg/ng-message-text-square-01.esm.js";import"../nile-icon/icons/svg/ng-minimize-02.esm.js";import"../nile-icon/icons/svg/ng-minus.esm.js";import"../nile-icon/icons/svg/ng-monitor.esm.js";import"../nile-icon/icons/svg/ng-number.esm.js";import"../nile-icon/icons/svg/ng-pie-chart-03.esm.js";import"../nile-icon/icons/svg/ng-plus.esm.js";import"../nile-icon/icons/svg/ng-power-01.esm.js";import"../nile-icon/icons/svg/ng-refresh-cw-01.esm.js";import"../nile-icon/icons/svg/ng-refresh-cw-02.esm.js";import"../nile-icon/icons/svg/ng-rocket-02.esm.js";import"../nile-icon/icons/svg/ng-rows-01.esm.js";import"../nile-icon/icons/svg/ng-search-lg.esm.js";import"../nile-icon/icons/svg/ng-send-01.esm.js";import"../nile-icon/icons/svg/ng-server.esm.js";import"../nile-icon/icons/svg/ng-settings-01.esm.js";import"../nile-icon/icons/svg/ng-share-04.esm.js";import"../nile-icon/icons/svg/ng-share-06.esm.js";import"../nile-icon/icons/svg/ng-shield-tick.esm.js";import"../nile-icon/icons/svg/ng-shopping-bag-01.esm.js";import"../nile-icon/icons/svg/ng-stars-02.esm.js";import"../nile-icon/icons/svg/ng-string.esm.js";import"../nile-icon/icons/svg/ng-switch-horizontal-01.esm.js";import"../nile-icon/icons/svg/ng-tag.esm.js";import"../nile-icon/icons/svg/ng-trash-01.esm.js";import"../nile-icon/icons/svg/ng-trash-03.esm.js";import"../nile-icon/icons/svg/ng-trend-up-01.esm.js";import"../nile-icon/icons/svg/ng-underline-01.esm.js";import"../nile-icon/icons/svg/ng-upload-01.esm.js";import"../nile-icon/icons/svg/ng-upload-cloud-02.esm.js";import"../nile-icon/icons/svg/ng-user-01.esm.js";import"../nile-icon/icons/svg/ng-user-check-02-1.esm.js";import"../nile-icon/icons/svg/ng-user-check-02.esm.js";import"../nile-icon/icons/svg/ng-user-plus-02.esm.js";import"../nile-icon/icons/svg/ng-user-right-01.esm.js";import"../nile-icon/icons/svg/ng-users-01.esm.js";import"../nile-icon/icons/svg/ng-wifi.esm.js";import"../nile-icon/icons/svg/ng-x-circle.esm.js";import"../nile-icon/icons/svg/ng-x-close.esm.js";import"../nile-icon/icons/svg/ng-x-square.esm.js";import"../nile-icon/icons/svg/ng-zap.esm.js";import"../nile-icon/icons/svg/nightingale-chart.esm.js";import"../nile-icon/icons/svg/nlp.esm.js";import"../nile-icon/icons/svg/nomatch.esm.js";import"../nile-icon/icons/svg/note.esm.js";import"../nile-icon/icons/svg/notification.esm.js";import"../nile-icon/icons/svg/notificationadd.esm.js";import"../nile-icon/icons/svg/notificationadded.esm.js";import"../nile-icon/icons/svg/null.esm.js";import"../nile-icon/icons/svg/number.esm.js";import"../nile-icon/icons/svg/numberinput.esm.js";import"../nile-icon/icons/svg/numbers.esm.js";import"../nile-icon/icons/svg/object.esm.js";import"../nile-icon/icons/svg/operators.esm.js";import"../nile-icon/icons/svg/options.esm.js";import"../nile-icon/icons/svg/orchestration-solid.esm.js";import"../nile-icon/icons/svg/orchestration.esm.js";import"../nile-icon/icons/svg/organization.esm.js";import"../nile-icon/icons/svg/other.esm.js";import"../nile-icon/icons/svg/otherdetails.esm.js";import"../nile-icon/icons/svg/override.esm.js";import"../nile-icon/icons/svg/palletemenu.esm.js";import"../nile-icon/icons/svg/paperclip.esm.js";import"../nile-icon/icons/svg/partner.esm.js";import"../nile-icon/icons/svg/partners.esm.js";import"../nile-icon/icons/svg/pause.esm.js";import"../nile-icon/icons/svg/pencil.esm.js";import"../nile-icon/icons/svg/peopletask.esm.js";import"../nile-icon/icons/svg/persistent-variable.esm.js";import"../nile-icon/icons/svg/persistentdata.esm.js";import"../nile-icon/icons/svg/phone.esm.js";import"../nile-icon/icons/svg/pie.esm.js";import"../nile-icon/icons/svg/pin.esm.js";import"../nile-icon/icons/svg/play.esm.js";import"../nile-icon/icons/svg/play_pause.esm.js";import"../nile-icon/icons/svg/plus.esm.js";import"../nile-icon/icons/svg/pluscircle.esm.js";import"../nile-icon/icons/svg/plussquare.esm.js";import"../nile-icon/icons/svg/policy.esm.js";import"../nile-icon/icons/svg/potentialmatch.esm.js";import"../nile-icon/icons/svg/poweron.esm.js";import"../nile-icon/icons/svg/predefined.esm.js";import"../nile-icon/icons/svg/preview.esm.js";import"../nile-icon/icons/svg/printer.esm.js";import"../nile-icon/icons/svg/priority-high.esm.js";import"../nile-icon/icons/svg/priority-highest.esm.js";import"../nile-icon/icons/svg/priority-low.esm.js";import"../nile-icon/icons/svg/priority-medium.esm.js";import"../nile-icon/icons/svg/privilage.esm.js";import"../nile-icon/icons/svg/privilege.esm.js";import"../nile-icon/icons/svg/privilegeobject.esm.js";import"../nile-icon/icons/svg/process.esm.js";import"../nile-icon/icons/svg/professionaldetails.esm.js";import"../nile-icon/icons/svg/question.esm.js";import"../nile-icon/icons/svg/radar.esm.js";import"../nile-icon/icons/svg/radio.esm.js";import"../nile-icon/icons/svg/radioactive.esm.js";import"../nile-icon/icons/svg/radiodone.esm.js";import"../nile-icon/icons/svg/read.esm.js";import"../nile-icon/icons/svg/readexpression.esm.js";import"../nile-icon/icons/svg/readonly.esm.js";import"../nile-icon/icons/svg/readonlyuser.esm.js";import"../nile-icon/icons/svg/readuser.esm.js";import"../nile-icon/icons/svg/reddot.esm.js";import"../nile-icon/icons/svg/redo-02.esm.js";import"../nile-icon/icons/svg/redo.esm.js";import"../nile-icon/icons/svg/refresh.esm.js";import"../nile-icon/icons/svg/reminder.esm.js";import"../nile-icon/icons/svg/resize.esm.js";import"../nile-icon/icons/svg/resource.esm.js";import"../nile-icon/icons/svg/resource_analysis.esm.js";import"../nile-icon/icons/svg/resource_graph.esm.js";import"../nile-icon/icons/svg/restart_alt.esm.js";import"../nile-icon/icons/svg/revocation-cycle.esm.js";import"../nile-icon/icons/svg/right-join.esm.js";import"../nile-icon/icons/svg/right-union.esm.js";import"../nile-icon/icons/svg/rocket-02.esm.js";import"../nile-icon/icons/svg/role.esm.js";import"../nile-icon/icons/svg/run.esm.js";import"../nile-icon/icons/svg/sankey.esm.js";import"../nile-icon/icons/svg/save.esm.js";import"../nile-icon/icons/svg/savings.esm.js";import"../nile-icon/icons/svg/scatter-plot.esm.js";import"../nile-icon/icons/svg/schedule.esm.js";import"../nile-icon/icons/svg/schema.esm.js";import"../nile-icon/icons/svg/script.esm.js";import"../nile-icon/icons/svg/search-steps-icon.esm.js";import"../nile-icon/icons/svg/search.esm.js";import"../nile-icon/icons/svg/section.esm.js";import"../nile-icon/icons/svg/select-02.esm.js";import"../nile-icon/icons/svg/select.esm.js";import"../nile-icon/icons/svg/selectapplication.esm.js";import"../nile-icon/icons/svg/selectattributes.esm.js";import"../nile-icon/icons/svg/semi-circle-donut-chart.esm.js";import"../nile-icon/icons/svg/send.esm.js";import"../nile-icon/icons/svg/sendemail.esm.js";import"../nile-icon/icons/svg/sendescalation.esm.js";import"../nile-icon/icons/svg/sendreminder.esm.js";import"../nile-icon/icons/svg/server-03.esm.js";import"../nile-icon/icons/svg/settings-02.esm.js";import"../nile-icon/icons/svg/settings.esm.js";import"../nile-icon/icons/svg/share.esm.js";import"../nile-icon/icons/svg/shield-01.esm.js";import"../nile-icon/icons/svg/smartcode.esm.js";import"../nile-icon/icons/svg/sort.esm.js";import"../nile-icon/icons/svg/sort_ascending.esm.js";import"../nile-icon/icons/svg/sort_descending.esm.js";import"../nile-icon/icons/svg/sortascending.esm.js";import"../nile-icon/icons/svg/sortdescending.esm.js";import"../nile-icon/icons/svg/sortdown.esm.js";import"../nile-icon/icons/svg/sortup.esm.js";import"../nile-icon/icons/svg/stacked-bar-chart.esm.js";import"../nile-icon/icons/svg/step_into.esm.js";import"../nile-icon/icons/svg/step_out.esm.js";import"../nile-icon/icons/svg/step_over.esm.js";import"../nile-icon/icons/svg/stop.esm.js";import"../nile-icon/icons/svg/storybook.esm.js";import"../nile-icon/icons/svg/string.esm.js";import"../nile-icon/icons/svg/stringinput.esm.js";import"../nile-icon/icons/svg/stringletters.esm.js";import"../nile-icon/icons/svg/support.esm.js";import"../nile-icon/icons/svg/swap.esm.js";import"../nile-icon/icons/svg/switch.esm.js";import"../nile-icon/icons/svg/sync.esm.js";import"../nile-icon/icons/svg/table.esm.js";import"../nile-icon/icons/svg/tag.esm.js";import"../nile-icon/icons/svg/tag_cloud.esm.js";import"../nile-icon/icons/svg/test.esm.js";import"../nile-icon/icons/svg/text-02.esm.js";import"../nile-icon/icons/svg/text.esm.js";import"../nile-icon/icons/svg/textarea-expander.esm.js";import"../nile-icon/icons/svg/thumbsdown.esm.js";import"../nile-icon/icons/svg/thumbsup.esm.js";import"../nile-icon/icons/svg/thumsup.esm.js";import"../nile-icon/icons/svg/tick.esm.js";import"../nile-icon/icons/svg/timeupdate.esm.js";import"../nile-icon/icons/svg/timezone.esm.js";import"../nile-icon/icons/svg/transaction_monitor.esm.js";import"../nile-icon/icons/svg/travel_map.esm.js";import"../nile-icon/icons/svg/trend-up-02.esm.js";import"../nile-icon/icons/svg/trigger.esm.js";import"../nile-icon/icons/svg/undo-02.esm.js";import"../nile-icon/icons/svg/undo.esm.js";import"../nile-icon/icons/svg/union.esm.js";import"../nile-icon/icons/svg/unlink.esm.js";import"../nile-icon/icons/svg/unmute.esm.js";import"../nile-icon/icons/svg/update.esm.js";import"../nile-icon/icons/svg/updown.esm.js";import"../nile-icon/icons/svg/upgrade.esm.js";import"../nile-icon/icons/svg/upload.esm.js";import"../nile-icon/icons/svg/user-group.esm.js";import"../nile-icon/icons/svg/user.esm.js";import"../nile-icon/icons/svg/useractive.esm.js";import"../nile-icon/icons/svg/useradd.esm.js";import"../nile-icon/icons/svg/useraddgroup.esm.js";import"../nile-icon/icons/svg/userfind.esm.js";import"../nile-icon/icons/svg/userimport.esm.js";import"../nile-icon/icons/svg/userimportgroup.esm.js";import"../nile-icon/icons/svg/usermixed.esm.js";import"../nile-icon/icons/svg/userremove.esm.js";import"../nile-icon/icons/svg/userremovegroup.esm.js";import"../nile-icon/icons/svg/users-plus.esm.js";import"../nile-icon/icons/svg/users-up.esm.js";import"../nile-icon/icons/svg/users.esm.js";import"../nile-icon/icons/svg/userupdate.esm.js";import"../nile-icon/icons/svg/validationexpression.esm.js";import"../nile-icon/icons/svg/variable-global.esm.js";import"../nile-icon/icons/svg/variable-local.esm.js";import"../nile-icon/icons/svg/variable-new.esm.js";import"../nile-icon/icons/svg/variable.esm.js";import"../nile-icon/icons/svg/video.esm.js";import"../nile-icon/icons/svg/view.esm.js";import"../nile-icon/icons/svg/virtualserver.esm.js";import"../nile-icon/icons/svg/virtualservergroup.esm.js";import"../nile-icon/icons/svg/visibility.esm.js";import"../nile-icon/icons/svg/visibilityoff.esm.js";import"../nile-icon/icons/svg/visual_builder.esm.js";import"../nile-icon/icons/svg/wait.esm.js";import"../nile-icon/icons/svg/warning-01.esm.js";import"../nile-icon/icons/svg/warning.esm.js";import"../nile-icon/icons/svg/whileloop.esm.js";import"../nile-icon/icons/svg/workflow-application.esm.js";import"../nile-icon/icons/svg/workflow-text.esm.js";import"../nile-icon/icons/svg/workflow.esm.js";import"../nile-icon/icons/svg/writeexpression.esm.js";import"../nile-icon/aliasmap.esm.js";import"../nile-spinner/nile-spinner.esm.js";import"../nile-spinner/nile-spinner.css.esm.js";function g(i,s=!1){function n(i){const s=i.getChildrenItems({includeDisabled:!1});if(s.length){const n=s.every((i=>i.selected)),o=s.every((i=>!i.selected&&!i.indeterminate));i.selected=n,i.indeterminate=!n&&!o}}!function i(o){for(const n of o.getChildrenItems())n.selected=s?o.selected||n.selected:!n.disabled&&o.selected,i(n);s&&n(o)}(i),function i(s){const o=s.parentElement;l.isTreeItem(o)&&(n(o),i(o))}(i)}let p=class extends n{constructor(){super(...arguments),this.selection="leaf",this.clickTarget=null,this.initTreeItem=i=>{i.selectable="multiple"===this.selection,["expand","collapse"].filter((i=>!!this.querySelector(`[slot="${i}-icon"]`))).forEach((s=>{const n=i.querySelector(`[slot="${s}-icon"]`);null===n?i.append(this.getExpandButtonIcon(s)):n.hasAttribute("data-default")&&n.replaceWith(this.getExpandButtonIcon(s))}))}}async connectedCallback(){super.connectedCallback(),this.handleTreeChanged=this.handleTreeChanged.bind(this),this.handleFocusIn=this.handleFocusIn.bind(this),this.handleFocusOut=this.handleFocusOut.bind(this),this.setAttribute("role","tree"),this.setAttribute("tabindex","0"),this.addEventListener("focusin",this.handleFocusIn),this.addEventListener("focusout",this.handleFocusOut),this.addEventListener("nile-lazy-change",this.handleSlotChange),await this.updateComplete,this.mutationObserver=new MutationObserver(this.handleTreeChanged),this.mutationObserver.observe(this,{childList:!0,subtree:!0})}disconnectedCallback(){super.disconnectedCallback(),this.mutationObserver.disconnect(),this.removeEventListener("focusin",this.handleFocusIn),this.removeEventListener("focusout",this.handleFocusOut),this.removeEventListener("nile-lazy-change",this.handleSlotChange)}getExpandButtonIcon(i){const s=("expand"===i?this.expandedIconSlot:this.collapsedIconSlot).assignedElements({flatten:!0})[0];if(s){const n=s.cloneNode(!0);return[n,...n.querySelectorAll("[id]")].forEach((i=>i.removeAttribute("id"))),n.setAttribute("data-default",""),n.slot=`${i}-icon`,n}return null}handleTreeChanged(i){for(const s of i){const i=[...s.addedNodes].filter(l.isTreeItem),n=[...s.removedNodes].filter(l.isTreeItem);i.forEach(this.initTreeItem),n.includes(this.lastFocusedItem)&&this.focusItem(this.getFocusableItems()[0])}}syncTreeItems(i){const s=this.getAllTreeItems();if("multiple"===this.selection)g(i);else for(const n of s)n!==i&&(n.selected=!1)}selectItem(i){const s=[...this.selectedItems];"multiple"===this.selection?(i.selected=!i.selected,i.lazy&&(i.expanded=!0),this.syncTreeItems(i)):"single"===this.selection||i.isLeaf?(i.expanded=!i.expanded,i.selected=!0,this.syncTreeItems(i)):"leaf"===this.selection&&(i.expanded=!i.expanded);const n=this.selectedItems;(s.length!==n.length||n.some((i=>!s.includes(i))))&&Promise.all(n.map((i=>i.updateComplete))).then((()=>{this.emit("nile-selection-change",{detail:{selection:n}})}))}getAllTreeItems(){return[...this.querySelectorAll("nile-tree-item")]}focusItem(i){i?.focus()}handleKeyDown(i){if(!["ArrowDown","ArrowUp","ArrowRight","ArrowLeft","Home","End","Enter"," "].includes(i.key))return;const s=this.getFocusableItems();if(s.length>0){i.preventDefault();const n=s.findIndex((i=>i.matches(":focus"))),e=s[n],c=i=>{const n=s[o(i,0,s.length-1)];this.focusItem(n)},m=i=>{e.expanded=i};"ArrowDown"===i.key?c(n+1):"ArrowUp"===i.key?c(n-1):"ArrowRight"===i.key?!e||e.disabled||e.expanded||e.isLeaf&&!e.lazy?c(n+1):m(!0):"ArrowLeft"===i.key?!e||e.disabled||e.isLeaf||!e.expanded?c(n-1):m(!1):"Home"===i.key?c(0):"End"===i.key?c(s.length-1):"Enter"!==i.key&&" "!==i.key||e.disabled||this.selectItem(e)}}handleClick(i){const s=i.target,n=s.closest("nile-tree-item"),o=i.composedPath().some((i=>i?.classList?.contains("tree-item__expand-button")));n&&!n.disabled&&s===this.clickTarget&&("multiple"===this.selection&&o?n.expanded=!n.expanded:this.selectItem(n))}handleMouseDown(i){this.clickTarget=i.target}handleFocusOut(i){const s=i.relatedTarget;s&&this.contains(s)||(this.tabIndex=0)}handleFocusIn(i){const s=i.target;i.target===this&&this.focusItem(this.lastFocusedItem||this.getAllTreeItems()[0]),l.isTreeItem(s)&&!s.disabled&&(this.lastFocusedItem&&(this.lastFocusedItem.tabIndex=-1),this.lastFocusedItem=s,this.tabIndex=-1,s.tabIndex=0)}handleSlotChange(){this.getAllTreeItems().forEach(this.initTreeItem)}async handleSelectionChange(){const i="multiple"===this.selection,s=this.getAllTreeItems();this.setAttribute("aria-multiselectable",i?"true":"false");for(const n of s)n.selectable=i;i&&(await this.updateComplete,[...this.querySelectorAll(":scope > nile-tree-item")].forEach((i=>g(i,!0))))}get selectedItems(){return this.getAllTreeItems().filter((i=>i.selected))}getFocusableItems(){const i=this.getAllTreeItems(),s=new Set;return i.filter((i=>{if(i.disabled)return!1;const n=i.parentElement?.closest("[role=treeitem]");return n&&(!n.expanded||n.loading||s.has(n))&&s.add(i),!s.has(i)}))}render(){return t`
2
2
  <div
3
3
  part="base"
4
4
  class="tree"