@aquera/nile-elements 0.1.55 → 0.1.56-beta-1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -8
- package/demo/index.html +9 -25
- package/demo/index.js +83 -0
- package/dist/index.cjs.js +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.js +136 -12
- package/dist/nile-avatar/nile-avatar.test.cjs.js +1 -1
- package/dist/nile-avatar/nile-avatar.test.cjs.js.map +1 -1
- package/dist/nile-avatar/nile-avatar.test.esm.js +1 -1
- package/dist/nile-badge/index.cjs.js +1 -1
- package/dist/nile-badge/index.esm.js +1 -1
- package/dist/nile-badge/nile-badge.cjs.js +1 -1
- package/dist/nile-badge/nile-badge.cjs.js.map +1 -1
- package/dist/nile-badge/nile-badge.esm.js +1 -1
- package/dist/nile-badge/nile-badge.test.cjs.js +1 -1
- package/dist/nile-badge/nile-badge.test.cjs.js.map +1 -1
- package/dist/nile-badge/nile-badge.test.esm.js +1 -1
- package/dist/nile-button/index.cjs.js +1 -1
- package/dist/nile-button/index.esm.js +1 -1
- package/dist/nile-button/nile-button.cjs.js +1 -1
- package/dist/nile-button/nile-button.cjs.js.map +1 -1
- package/dist/nile-button/nile-button.esm.js +1 -1
- package/dist/nile-button/nile-button.test.cjs.js +1 -1
- package/dist/nile-button/nile-button.test.cjs.js.map +1 -1
- package/dist/nile-button/nile-button.test.esm.js +1 -1
- package/dist/nile-calendar/nile-calendar.test.cjs.js +1 -1
- package/dist/nile-calendar/nile-calendar.test.cjs.js.map +1 -1
- package/dist/nile-calendar/nile-calendar.test.esm.js +1 -1
- package/dist/nile-chip/nile-chip.test.cjs.js +1 -1
- package/dist/nile-chip/nile-chip.test.cjs.js.map +1 -1
- package/dist/nile-chip/nile-chip.test.esm.js +1 -1
- package/dist/nile-code-editor/theme.cjs.js +1 -1
- package/dist/nile-code-editor/theme.cjs.js.map +1 -1
- package/dist/nile-code-editor/theme.esm.js +1 -1
- package/dist/nile-dialog/index.cjs.js +1 -1
- package/dist/nile-dialog/index.esm.js +1 -1
- package/dist/nile-dialog/nile-dialog.cjs.js +1 -1
- package/dist/nile-dialog/nile-dialog.cjs.js.map +1 -1
- package/dist/nile-dialog/nile-dialog.esm.js +1 -1
- package/dist/nile-dialog/nile-dialog.test.cjs.js +1 -1
- package/dist/nile-dialog/nile-dialog.test.cjs.js.map +1 -1
- package/dist/nile-dialog/nile-dialog.test.esm.js +1 -1
- package/dist/nile-drawer/index.cjs.js +1 -1
- package/dist/nile-drawer/index.esm.js +1 -1
- package/dist/nile-drawer/nile-drawer.cjs.js +1 -1
- package/dist/nile-drawer/nile-drawer.cjs.js.map +1 -1
- package/dist/nile-drawer/nile-drawer.esm.js +1 -1
- package/dist/nile-drawer/nile-drawer.test.cjs.js +1 -1
- package/dist/nile-drawer/nile-drawer.test.cjs.js.map +1 -1
- package/dist/nile-drawer/nile-drawer.test.esm.js +1 -1
- package/dist/nile-error-notification/nile-error-notification.cjs.js +1 -1
- package/dist/nile-error-notification/nile-error-notification.cjs.js.map +1 -1
- package/dist/nile-error-notification/nile-error-notification.esm.js +2 -4
- package/dist/nile-icon/icons/svg/index.cjs.js +1 -1
- package/dist/nile-icon/icons/svg/index.esm.js +1 -1
- package/dist/nile-icon/index.cjs.js +1 -1
- package/dist/nile-icon/index.cjs.js.map +1 -1
- package/dist/nile-icon/index.esm.js +1 -1
- package/dist/nile-icon/nile-icon.test.cjs.js +1 -1
- package/dist/nile-icon/nile-icon.test.cjs.js.map +1 -1
- package/dist/nile-icon/nile-icon.test.esm.js +1 -1
- package/dist/nile-icon-button/index.cjs.js +1 -1
- package/dist/nile-icon-button/index.esm.js +1 -1
- package/dist/nile-icon-button/nile-icon-button.cjs.js +1 -1
- package/dist/nile-icon-button/nile-icon-button.cjs.js.map +1 -1
- package/dist/nile-icon-button/nile-icon-button.esm.js +1 -1
- package/dist/nile-input/index.cjs.js +1 -1
- package/dist/nile-input/index.esm.js +1 -1
- package/dist/nile-input/nile-input.cjs.js +1 -1
- package/dist/nile-input/nile-input.cjs.js.map +1 -1
- package/dist/nile-input/nile-input.esm.js +1 -1
- package/dist/nile-input/nile-input.test.cjs.js +1 -1
- package/dist/nile-input/nile-input.test.cjs.js.map +1 -1
- package/dist/nile-input/nile-input.test.esm.js +1 -1
- package/dist/nile-menu-item/index.cjs.js +1 -1
- package/dist/nile-menu-item/index.esm.js +1 -1
- package/dist/nile-menu-item/nile-menu-item.cjs.js +1 -1
- package/dist/nile-menu-item/nile-menu-item.cjs.js.map +1 -1
- package/dist/nile-menu-item/nile-menu-item.esm.js +1 -1
- package/dist/nile-option/index.cjs.js +1 -1
- package/dist/nile-option/index.esm.js +1 -1
- package/dist/nile-option/nile-option.cjs.js +1 -1
- package/dist/nile-option/nile-option.cjs.js.map +1 -1
- package/dist/nile-option/nile-option.esm.js +1 -1
- package/dist/nile-select/index.cjs.js +1 -1
- package/dist/nile-select/index.esm.js +1 -1
- package/dist/nile-select/nile-select.cjs.js +1 -1
- package/dist/nile-select/nile-select.cjs.js.map +1 -1
- package/dist/nile-select/nile-select.esm.js +1 -1
- package/dist/nile-select/nile-select.test.cjs.js +1 -1
- package/dist/nile-select/nile-select.test.cjs.js.map +1 -1
- package/dist/nile-select/nile-select.test.esm.js +1 -1
- package/dist/nile-tab/index.cjs.js +1 -1
- package/dist/nile-tab/index.esm.js +1 -1
- package/dist/nile-tab/nile-tab.cjs.js +1 -1
- package/dist/nile-tab/nile-tab.cjs.js.map +1 -1
- package/dist/nile-tab/nile-tab.esm.js +1 -1
- package/dist/nile-tab-group/index.cjs.js +1 -1
- package/dist/nile-tab-group/index.esm.js +1 -1
- package/dist/nile-tab-group/nile-tab-group.cjs.js +1 -1
- package/dist/nile-tab-group/nile-tab-group.cjs.js.map +1 -1
- package/dist/nile-tab-group/nile-tab-group.esm.js +1 -1
- package/dist/nile-tab-group/nile-tab-group.test.cjs.js +1 -1
- package/dist/nile-tab-group/nile-tab-group.test.cjs.js.map +1 -1
- package/dist/nile-tab-group/nile-tab-group.test.esm.js +1 -1
- package/dist/nile-table-body/nile-table-body.css.cjs.js +1 -1
- package/dist/nile-table-body/nile-table-body.css.cjs.js.map +1 -1
- package/dist/nile-table-body/nile-table-body.css.esm.js +1 -0
- package/dist/nile-table-cell-item/nile-table-cell-item.cjs.js +1 -1
- package/dist/nile-table-cell-item/nile-table-cell-item.cjs.js.map +1 -1
- package/dist/nile-table-cell-item/nile-table-cell-item.css.cjs.js +1 -1
- package/dist/nile-table-cell-item/nile-table-cell-item.css.cjs.js.map +1 -1
- package/dist/nile-table-cell-item/nile-table-cell-item.css.esm.js +89 -3
- package/dist/nile-table-cell-item/nile-table-cell-item.esm.js +6 -3
- package/dist/nile-table-header-item/nile-table-header-item.cjs.js +1 -1
- package/dist/nile-table-header-item/nile-table-header-item.cjs.js.map +1 -1
- package/dist/nile-table-header-item/nile-table-header-item.css.cjs.js +1 -1
- package/dist/nile-table-header-item/nile-table-header-item.css.cjs.js.map +1 -1
- package/dist/nile-table-header-item/nile-table-header-item.css.esm.js +35 -0
- package/dist/nile-table-header-item/nile-table-header-item.esm.js +3 -2
- package/dist/nile-tag/index.cjs.js +1 -1
- package/dist/nile-tag/index.esm.js +1 -1
- package/dist/nile-tag/nile-tag.cjs.js +1 -1
- package/dist/nile-tag/nile-tag.cjs.js.map +1 -1
- package/dist/nile-tag/nile-tag.esm.js +1 -1
- package/dist/nile-toast/index.cjs.js +1 -1
- package/dist/nile-toast/index.esm.js +1 -1
- package/dist/nile-toast/nile-toast.cjs.js +1 -1
- package/dist/nile-toast/nile-toast.cjs.js.map +1 -1
- package/dist/nile-toast/nile-toast.esm.js +1 -1
- package/dist/nile-tree/index.cjs.js +1 -1
- package/dist/nile-tree/index.esm.js +1 -1
- package/dist/nile-tree/nile-tree.cjs.js +1 -1
- package/dist/nile-tree/nile-tree.cjs.js.map +1 -1
- package/dist/nile-tree/nile-tree.esm.js +1 -1
- package/dist/nile-tree-item/index.cjs.js +1 -1
- package/dist/nile-tree-item/index.esm.js +1 -1
- package/dist/nile-tree-item/nile-tree-item.cjs.js +1 -1
- package/dist/nile-tree-item/nile-tree-item.cjs.js.map +1 -1
- package/dist/nile-tree-item/nile-tree-item.esm.js +1 -1
- package/dist/src/nile-code-editor/theme.d.ts +2 -41
- package/dist/src/nile-code-editor/theme.js +12 -51
- package/dist/src/nile-code-editor/theme.js.map +1 -1
- package/dist/src/nile-error-notification/nile-error-notification.js +2 -4
- package/dist/src/nile-error-notification/nile-error-notification.js.map +1 -1
- package/dist/src/nile-icon/icons/svg/index.d.ts +0 -4
- package/dist/src/nile-icon/icons/svg/index.js +0 -4
- package/dist/src/nile-icon/icons/svg/index.js.map +1 -1
- package/dist/src/nile-table-body/nile-table-body.css.js +1 -0
- package/dist/src/nile-table-body/nile-table-body.css.js.map +1 -1
- package/dist/src/nile-table-cell-item/nile-table-cell-item.css.js +87 -1
- package/dist/src/nile-table-cell-item/nile-table-cell-item.css.js.map +1 -1
- package/dist/src/nile-table-cell-item/nile-table-cell-item.d.ts +4 -0
- package/dist/src/nile-table-cell-item/nile-table-cell-item.js +52 -3
- package/dist/src/nile-table-cell-item/nile-table-cell-item.js.map +1 -1
- package/dist/src/nile-table-header-item/nile-table-header-item.css.js +35 -0
- package/dist/src/nile-table-header-item/nile-table-header-item.css.js.map +1 -1
- package/dist/src/nile-table-header-item/nile-table-header-item.d.ts +5 -0
- package/dist/src/nile-table-header-item/nile-table-header-item.js +60 -15
- package/dist/src/nile-table-header-item/nile-table-header-item.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/nile-code-editor/theme.ts +12 -51
- package/src/nile-error-notification/nile-error-notification.ts +3 -4
- package/src/nile-icon/icons/svg/index.ts +0 -4
- package/src/nile-table-body/nile-table-body.css.ts +1 -0
- package/src/nile-table-cell-item/nile-table-cell-item.css.ts +87 -1
- package/src/nile-table-cell-item/nile-table-cell-item.ts +59 -3
- package/src/nile-table-header-item/nile-table-header-item.css.ts +35 -0
- package/src/nile-table-header-item/nile-table-header-item.ts +58 -5
- package/vscode-html-custom-data.json +14 -3
- package/dist/nile-icon/icons/svg/attribute.cjs.js +0 -2
- package/dist/nile-icon/icons/svg/attribute.cjs.js.map +0 -1
- package/dist/nile-icon/icons/svg/attribute.esm.js +0 -1
- package/dist/nile-icon/icons/svg/class.cjs.js +0 -2
- package/dist/nile-icon/icons/svg/class.cjs.js.map +0 -1
- package/dist/nile-icon/icons/svg/class.esm.js +0 -1
- package/dist/nile-icon/icons/svg/function.cjs.js +0 -2
- package/dist/nile-icon/icons/svg/function.cjs.js.map +0 -1
- package/dist/nile-icon/icons/svg/function.esm.js +0 -1
- package/dist/nile-icon/icons/svg/keyword.cjs.js +0 -2
- package/dist/nile-icon/icons/svg/keyword.cjs.js.map +0 -1
- package/dist/nile-icon/icons/svg/keyword.esm.js +0 -1
- package/dist/src/nile-icon/icons/svg/attribute.d.ts +0 -5
- package/dist/src/nile-icon/icons/svg/attribute.js +0 -5
- package/dist/src/nile-icon/icons/svg/attribute.js.map +0 -1
- package/dist/src/nile-icon/icons/svg/class.d.ts +0 -5
- package/dist/src/nile-icon/icons/svg/class.js +0 -5
- package/dist/src/nile-icon/icons/svg/class.js.map +0 -1
- package/dist/src/nile-icon/icons/svg/function.d.ts +0 -5
- package/dist/src/nile-icon/icons/svg/function.js +0 -5
- package/dist/src/nile-icon/icons/svg/function.js.map +0 -1
- package/dist/src/nile-icon/icons/svg/keyword.d.ts +0 -5
- package/dist/src/nile-icon/icons/svg/keyword.js +0 -5
- package/dist/src/nile-icon/icons/svg/keyword.js.map +0 -1
- package/src/nile-icon/icons/svg/attribute.ts +0 -5
- package/src/nile-icon/icons/svg/class.ts +0 -5
- package/src/nile-icon/icons/svg/function.ts +0 -5
- package/src/nile-icon/icons/svg/keyword.ts +0 -5
@@ -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","m","constructor","this","selection","clickTarget","initTreeItem","selectable","filter","status","querySelector","concat","forEach","existingIcon","append","getExpandButtonIcon","hasAttribute","replaceWith","_this","_inherits","_o3","_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","_step2","_iterator2","mutation","addedNodes","_toConsumableArray","removedNodes","includes","lastFocusedItem","focusItem","getFocusableItems","err","e","f","syncTreeItems","selectedItem","items","getAllTreeItems","_iterator3","_createForOfIteratorHelper","_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","_o8","_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
|
+
{"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","childItem","s","_step","n","done","disabled","syncAncestors","parentItem","parentElement","NileTreeItem","isTreeItem","setters","_tslib","NileTree","_o3","m","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","_this3","preventDefault","activeItemIndex","findIndex","matches","activeItem","focusItemAt","index","clamp","toggleExpand","handleClick","target","closest","isExpandButton","composedPath","classList","contains","handleMouseDown","relatedTarget","tabIndex","_handleSelectionChange","_callee2","i","_iterator4","_step4","_o8","_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 o}from"../internal/nile-element.esm.js";import{c as n}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/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/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/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/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/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/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/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/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/maximize.esm.js";import"../nile-icon/icons/svg/menu.esm.js";import"../nile-icon/icons/svg/message-notification-square.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/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/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/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/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/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 p(i,s=!1){function o(i){const s=i.getChildrenItems({includeDisabled:!1});if(s.length){const o=s.every((i=>i.selected)),n=s.every((i=>!i.selected&&!i.indeterminate));i.selected=o,i.indeterminate=!o&&!n}}!function i(n){for(const o of n.getChildrenItems())o.selected=s?n.selected||o.selected:!o.disabled&&n.selected,i(o);s&&o(n)}(i),function i(s){const n=s.parentElement;l.isTreeItem(n)&&(o(n),i(n))}(i)}let g=class extends o{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 o=i.querySelector(`[slot="${s}-icon"]`);null===o?i.append(this.getExpandButtonIcon(s)):o.hasAttribute("data-default")&&o.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 o=s.cloneNode(!0);return[o,...o.querySelectorAll("[id]")].forEach((i=>i.removeAttribute("id"))),o.setAttribute("data-default",""),o.slot=`${i}-icon`,o}return null}handleTreeChanged(i){for(const s of i){const i=[...s.addedNodes].filter(l.isTreeItem),o=[...s.removedNodes].filter(l.isTreeItem);i.forEach(this.initTreeItem),o.includes(this.lastFocusedItem)&&this.focusItem(this.getFocusableItems()[0])}}syncTreeItems(i){const s=this.getAllTreeItems();if("multiple"===this.selection)p(i);else for(const o of s)o!==i&&(o.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 o=this.selectedItems;(s.length!==o.length||o.some((i=>!s.includes(i))))&&Promise.all(o.map((i=>i.updateComplete))).then((()=>{this.emit("nile-selection-change",{detail:{selection:o}})}))}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 o=s.findIndex((i=>i.matches(":focus"))),e=s[o],c=i=>{const o=s[n(i,0,s.length-1)];this.focusItem(o)},m=i=>{e.expanded=i};"ArrowDown"===i.key?c(o+1):"ArrowUp"===i.key?c(o-1):"ArrowRight"===i.key?!e||e.disabled||e.expanded||e.isLeaf&&!e.lazy?c(o+1):m(!0):"ArrowLeft"===i.key?!e||e.disabled||e.isLeaf||!e.expanded?c(o-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,o=s.closest("nile-tree-item"),n=i.composedPath().some((i=>i?.classList?.contains("tree-item__expand-button")));o&&!o.disabled&&s===this.clickTarget&&("multiple"===this.selection&&n?o.expanded=!o.expanded:this.selectItem(o))}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 o of s)o.selectable=i;i&&(await this.updateComplete,[...this.querySelectorAll(":scope > nile-tree-item")].forEach((i=>p(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 o=i.parentElement?.closest("[role=treeitem]");return o&&(!o.expanded||o.loading||s.has(o))&&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 o}from"../internal/nile-element.esm.js";import{c as n}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/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/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/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/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/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/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/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/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/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/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/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/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/maximize.esm.js";import"../nile-icon/icons/svg/menu.esm.js";import"../nile-icon/icons/svg/message-notification-square.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/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/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/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/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/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 p(i,s=!1){function o(i){const s=i.getChildrenItems({includeDisabled:!1});if(s.length){const o=s.every((i=>i.selected)),n=s.every((i=>!i.selected&&!i.indeterminate));i.selected=o,i.indeterminate=!o&&!n}}!function i(n){for(const o of n.getChildrenItems())o.selected=s?n.selected||o.selected:!o.disabled&&n.selected,i(o);s&&o(n)}(i),function i(s){const n=s.parentElement;l.isTreeItem(n)&&(o(n),i(n))}(i)}let g=class extends o{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 o=i.querySelector(`[slot="${s}-icon"]`);null===o?i.append(this.getExpandButtonIcon(s)):o.hasAttribute("data-default")&&o.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 o=s.cloneNode(!0);return[o,...o.querySelectorAll("[id]")].forEach((i=>i.removeAttribute("id"))),o.setAttribute("data-default",""),o.slot=`${i}-icon`,o}return null}handleTreeChanged(i){for(const s of i){const i=[...s.addedNodes].filter(l.isTreeItem),o=[...s.removedNodes].filter(l.isTreeItem);i.forEach(this.initTreeItem),o.includes(this.lastFocusedItem)&&this.focusItem(this.getFocusableItems()[0])}}syncTreeItems(i){const s=this.getAllTreeItems();if("multiple"===this.selection)p(i);else for(const o of s)o!==i&&(o.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 o=this.selectedItems;(s.length!==o.length||o.some((i=>!s.includes(i))))&&Promise.all(o.map((i=>i.updateComplete))).then((()=>{this.emit("nile-selection-change",{detail:{selection:o}})}))}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 o=s.findIndex((i=>i.matches(":focus"))),e=s[o],c=i=>{const o=s[n(i,0,s.length-1)];this.focusItem(o)},m=i=>{e.expanded=i};"ArrowDown"===i.key?c(o+1):"ArrowUp"===i.key?c(o-1):"ArrowRight"===i.key?!e||e.disabled||e.expanded||e.isLeaf&&!e.lazy?c(o+1):m(!0):"ArrowLeft"===i.key?!e||e.disabled||e.isLeaf||!e.expanded?c(o-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,o=s.closest("nile-tree-item"),n=i.composedPath().some((i=>i?.classList?.contains("tree-item__expand-button")));o&&!o.disabled&&s===this.clickTarget&&("multiple"===this.selection&&n?o.expanded=!o.expanded:this.selectItem(o))}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 o of s)o.selectable=i;i&&(await this.updateComplete,[...this.querySelectorAll(":scope > nile-tree-item")].forEach((i=>p(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 o=i.parentElement?.closest("[role=treeitem]");return o&&(!o.expanded||o.loading||s.has(o))&&s.add(i),!s.has(i)}))}render(){return t`
|
2
2
|
<div
|
3
3
|
part="base"
|
4
4
|
class="tree"
|