@vscode-elements/elements 2.3.1 → 2.3.2-pre.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/README.md +3 -1
  2. package/custom-elements.json +1301 -879
  3. package/dist/bundled.js +255 -73
  4. package/dist/includes/VscElement.js +1 -1
  5. package/dist/includes/VscElement.js.map +1 -1
  6. package/dist/includes/vscode-select/OptionListController.d.ts +1 -1
  7. package/dist/includes/vscode-select/OptionListController.d.ts.map +1 -1
  8. package/dist/includes/vscode-select/OptionListController.js +1 -1
  9. package/dist/includes/vscode-select/OptionListController.js.map +1 -1
  10. package/dist/includes/vscode-select/vscode-select-base.d.ts +2 -0
  11. package/dist/includes/vscode-select/vscode-select-base.d.ts.map +1 -1
  12. package/dist/includes/vscode-select/vscode-select-base.js +9 -1
  13. package/dist/includes/vscode-select/vscode-select-base.js.map +1 -1
  14. package/dist/vscode-button/vscode-button.d.ts +5 -0
  15. package/dist/vscode-button/vscode-button.d.ts.map +1 -1
  16. package/dist/vscode-button/vscode-button.js +8 -0
  17. package/dist/vscode-button/vscode-button.js.map +1 -1
  18. package/dist/vscode-button/vscode-button.styles.d.ts.map +1 -1
  19. package/dist/vscode-button/vscode-button.styles.js +11 -0
  20. package/dist/vscode-button/vscode-button.styles.js.map +1 -1
  21. package/dist/vscode-collapsible/vscode-collapsible.d.ts +1 -0
  22. package/dist/vscode-collapsible/vscode-collapsible.d.ts.map +1 -1
  23. package/dist/vscode-collapsible/vscode-collapsible.js +4 -1
  24. package/dist/vscode-collapsible/vscode-collapsible.js.map +1 -1
  25. package/dist/vscode-collapsible/vscode-collapsible.styles.d.ts.map +1 -1
  26. package/dist/vscode-collapsible/vscode-collapsible.styles.js +4 -0
  27. package/dist/vscode-collapsible/vscode-collapsible.styles.js.map +1 -1
  28. package/dist/vscode-split-layout/vscode-split-layout.d.ts +18 -0
  29. package/dist/vscode-split-layout/vscode-split-layout.d.ts.map +1 -1
  30. package/dist/vscode-split-layout/vscode-split-layout.js +87 -14
  31. package/dist/vscode-split-layout/vscode-split-layout.js.map +1 -1
  32. package/dist/vscode-tree/tree-context.d.ts +1 -0
  33. package/dist/vscode-tree/tree-context.d.ts.map +1 -1
  34. package/dist/vscode-tree/tree-context.js.map +1 -1
  35. package/dist/vscode-tree/vscode-tree.d.ts +1 -1
  36. package/dist/vscode-tree/vscode-tree.d.ts.map +1 -1
  37. package/dist/vscode-tree/vscode-tree.js +4 -3
  38. package/dist/vscode-tree/vscode-tree.js.map +1 -1
  39. package/dist/vscode-tree/vscode-tree.styles.js +1 -1
  40. package/dist/vscode-tree/vscode-tree.styles.js.map +1 -1
  41. package/dist/vscode-tree-item/vscode-tree-item.d.ts +28 -1
  42. package/dist/vscode-tree-item/vscode-tree-item.d.ts.map +1 -1
  43. package/dist/vscode-tree-item/vscode-tree-item.js +257 -22
  44. package/dist/vscode-tree-item/vscode-tree-item.js.map +1 -1
  45. package/dist/vscode-tree-item/vscode-tree-item.styles.d.ts.map +1 -1
  46. package/dist/vscode-tree-item/vscode-tree-item.styles.js +147 -6
  47. package/dist/vscode-tree-item/vscode-tree-item.styles.js.map +1 -1
  48. package/package.json +12 -8
  49. package/vscode.css-custom-data.json +24 -24
  50. package/vscode.html-custom-data.json +69 -54
@@ -1 +1 @@
1
- {"version":3,"file":"vscode-tree.js","sourceRoot":"","sources":["../../src/vscode-tree/vscode-tree.ts"],"names":[],"mappings":"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","sourcesContent":["import {PropertyValues, TemplateResult, html} from 'lit';\nimport {provide} from '@lit/context';\nimport {property, queryAssignedElements} from 'lit/decorators.js';\nimport {customElement, VscElement} from '../includes/VscElement';\nimport type {VscodeTreeItem} from '../vscode-tree-item';\nimport styles from './vscode-tree.styles';\nimport {\n ConfigContext,\n configContext,\n treeContext,\n type TreeContext,\n} from './tree-context';\nimport {\n findNextItem,\n findPrevItem,\n findParentItem,\n initPathTrackerProps,\n} from './helpers.js';\n\nexport type VscTreeSelectEvent = CustomEvent<{selectedItems: VscodeTreeItem[]}>;\n\nexport const ExpandMode = {\n singleClick: 'singleClick',\n doubleClick: 'doubleClick',\n} as const;\n\nexport type ExpandMode = (typeof ExpandMode)[keyof typeof ExpandMode];\n\nexport const IndentGuides = {\n none: 'none',\n onHover: 'onHover',\n always: 'always',\n} as const;\n\nexport type IndentGuideDisplay =\n (typeof IndentGuides)[keyof typeof IndentGuides];\n\ntype ListenedKey =\n | 'ArrowDown'\n | 'ArrowUp'\n | 'ArrowLeft'\n | 'ArrowRight'\n | 'Enter'\n | 'Escape'\n | 'Shift'\n | ' ';\n\nconst listenedKeys: ListenedKey[] = [\n ' ',\n 'ArrowDown',\n 'ArrowUp',\n 'ArrowLeft',\n 'ArrowRight',\n 'Enter',\n 'Escape',\n 'Shift',\n];\n\n/**\n * @tag vscode-tree\n *\n * @cssprop [--vscode-font-family=sans-serif]\n * @cssprop [--vscode-font-size=13px]\n * @cssprop [--vscode-font-weight=normal]\n * @cssprop [--vscode-foreground=#cccccc]\n * @cssprop [--vscode-icon-foreground=#cccccc]\n * @cssprop [--vscode-list-focusAndSelectionOutline=#0078d4]\n * @cssprop [--vscode-list-focusOutline=#0078d4]\n * @cssprop [--vscode-list-hoverBackground=#2a2d2e]\n * @cssprop [--vscode-list-hoverForeground=#cccccc]\n * @cssprop [--vscode-tree-inactiveIndentGuidesStroke=rgba(88, 88, 88, 0.4)]\n * @cssprop [--vscode-tree-indentGuidesStroke=#585858]\n */\n@customElement('vscode-tree')\nexport class VscodeTree extends VscElement {\n static override styles = styles;\n\n //#region properties\n\n /**\n * Controls how tree folders are expanded when clicked. This property is designed to use\n * the `workbench.tree.expandMode` setting.\n *\n * Valid options are available as constants.\n *\n * ```javascript\n * import {ExpandMode} from '@vscode-elements/elements/dist/vscode-tree/vscode-tree.js';\n *\n * document.querySelector('vscode-tree').expandMode = ExpandMode.singleClick;\n * ```\n *\n * @type {'singleClick' | 'doubleClick'}\n */\n @property({type: String, attribute: 'expand-mode'})\n expandMode: ExpandMode = 'singleClick';\n\n /**\n * Although arrows are always visible in the Tree component by default in VSCode, some icon sets\n * (e.g., Material Icon Theme) allow disabling them in the file explorer view. This flag makes it\n * possible to mimic that behavior.\n */\n @property({type: Boolean, reflect: true, attribute: 'hide-arrows'})\n hideArrows: boolean = false;\n\n /**\n * Controls the indentation in pixels. This property is designed to use the\n * `workbench.tree.indent` setting.\n */\n @property({type: Number, reflect: true})\n indent: number = 8;\n\n /**\n * Controls whether the tree should render indent guides. This property is\n * designed to use the `workbench.tree.renderIndentGuides` setting.\n *\n * Valid options are available as constants.\n *\n * ```javascript\n * import {IndentGuides} from '@vscode-elements/elements/dist/vscode-tree/vscode-tree.js';\n *\n * document.querySelector('vscode-tree').expandMode = IndentGuides.onHover;\n * ```\n *\n * @type {'none' | 'onHover' | 'always'}\n */\n @property({\n type: String,\n attribute: 'indent-guides',\n useDefault: true,\n reflect: true,\n })\n indentGuides: IndentGuideDisplay = 'onHover';\n\n /**\n * Allows selecting multiple items.\n */\n @property({type: Boolean, reflect: true, attribute: 'multi-select'})\n multiSelect: boolean = false;\n\n //#endregion\n\n //#region private variables\n\n @provide({context: treeContext})\n private _treeContextState: TreeContext = {\n isShiftPressed: false,\n activeItem: null,\n selectedItems: new Set(),\n allItems: null,\n itemListUpToDate: false,\n focusedItem: null,\n prevFocusedItem: null,\n hasBranchItem: false,\n rootElement: this,\n highlightedItems: new Set(),\n highlightIndentGuides: () => {\n this._highlightIndentGuides();\n },\n emitSelectEvent: () => {\n this._emitSelectEvent();\n },\n };\n\n @provide({context: configContext})\n private _configContext: ConfigContext = {\n hideArrows: this.hideArrows,\n expandMode: this.expandMode,\n indent: this.indent,\n indentGuides: this.indentGuides,\n multiSelect: this.multiSelect,\n };\n\n @queryAssignedElements({selector: 'vscode-tree-item'})\n private _assignedTreeItems!: VscodeTreeItem[];\n\n //#endregion\n\n //#region lifecycle methods\n\n constructor() {\n super();\n\n this.addEventListener('keyup', this._handleComponentKeyUp);\n this.addEventListener('keydown', this._handleComponentKeyDown);\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n this.role = 'tree';\n }\n\n protected override willUpdate(changedProperties: PropertyValues<this>): void {\n this._updateConfigContext(changedProperties);\n\n if (changedProperties.has('multiSelect')) {\n this.ariaMultiSelectable = this.multiSelect ? 'true' : 'false';\n }\n }\n\n //#endregion\n\n //#region public methods\n\n /**\n * Expands all folders.\n */\n expandAll() {\n const children = this.querySelectorAll<VscodeTreeItem>('vscode-tree-item');\n\n children.forEach((item) => {\n if (item.branch) {\n item.open = true;\n }\n });\n }\n\n /**\n * Collapses all folders.\n */\n collapseAll() {\n const children = this.querySelectorAll<VscodeTreeItem>('vscode-tree-item');\n\n children.forEach((item) => {\n if (item.branch) {\n item.open = false;\n }\n });\n }\n\n /**\n * @internal\n * Updates `hasBranchItem` property in the context state in order to removing\n * extra padding before the leaf elements, if it is required.\n */\n updateHasBranchItemFlag() {\n const hasBranchItem = this._assignedTreeItems.some((li) => li.branch);\n this._treeContextState = {...this._treeContextState, hasBranchItem};\n }\n\n //#endregion\n\n //#region private methods\n\n private _emitSelectEvent() {\n const ev = new CustomEvent('vsc-tree-select', {\n detail: Array.from(this._treeContextState.selectedItems),\n });\n\n this.dispatchEvent(ev);\n }\n\n private _highlightIndentGuideOfItem(item: VscodeTreeItem) {\n if (item.branch && item.open) {\n item.highlightedGuides = true;\n this._treeContextState.highlightedItems?.add(item);\n } else {\n const parent = findParentItem(item);\n\n if (parent) {\n parent.highlightedGuides = true;\n this._treeContextState.highlightedItems?.add(parent);\n }\n }\n }\n\n private _highlightIndentGuides() {\n if (this.indentGuides === IndentGuides.none) {\n return;\n }\n\n this._treeContextState.highlightedItems?.forEach(\n (i) => (i.highlightedGuides = false)\n );\n this._treeContextState.highlightedItems?.clear();\n\n if (this._treeContextState.activeItem) {\n this._highlightIndentGuideOfItem(this._treeContextState.activeItem);\n }\n\n this._treeContextState.selectedItems.forEach((item) => {\n this._highlightIndentGuideOfItem(item);\n });\n }\n\n private _updateConfigContext(changedProperties: PropertyValues) {\n const {hideArrows, expandMode, indent, indentGuides, multiSelect} = this;\n\n if (changedProperties.has('hideArrows')) {\n this._configContext = {...this._configContext, hideArrows};\n }\n\n if (changedProperties.has('expandMode')) {\n this._configContext = {...this._configContext, expandMode};\n }\n\n if (changedProperties.has('indent')) {\n this._configContext = {...this._configContext, indent};\n }\n\n if (changedProperties.has('indentGuides')) {\n this._configContext = {...this._configContext, indentGuides};\n }\n\n if (changedProperties.has('multiSelect')) {\n this._configContext = {...this._configContext, multiSelect};\n }\n }\n\n private _focusItem(item: VscodeTreeItem) {\n item.active = true;\n\n item.updateComplete.then(() => {\n item.focus();\n this._highlightIndentGuides();\n });\n }\n\n private _focusPrevItem() {\n if (this._treeContextState.focusedItem) {\n const item = findPrevItem(this._treeContextState.focusedItem);\n\n if (item) {\n this._focusItem(item);\n\n if (this._treeContextState.isShiftPressed && this.multiSelect) {\n item.selected = !item.selected;\n this._emitSelectEvent();\n }\n }\n }\n }\n\n private _focusNextItem() {\n if (this._treeContextState.focusedItem) {\n const item = findNextItem(this._treeContextState.focusedItem);\n\n if (item) {\n this._focusItem(item);\n\n if (this._treeContextState.isShiftPressed && this.multiSelect) {\n item.selected = !item.selected;\n this._emitSelectEvent();\n }\n }\n }\n }\n\n //#endregion\n\n //#region event handlers\n\n private _handleArrowRightPress() {\n if (!this._treeContextState.focusedItem) {\n return;\n }\n\n const {focusedItem} = this._treeContextState;\n\n if (focusedItem.branch) {\n if (focusedItem.open) {\n this._focusNextItem();\n } else {\n focusedItem.open = true;\n }\n }\n }\n\n private _handleArrowLeftPress(ev: KeyboardEvent) {\n if (ev.ctrlKey) {\n this.collapseAll();\n return;\n }\n\n if (!this._treeContextState.focusedItem) {\n return;\n }\n\n const {focusedItem} = this._treeContextState;\n const parent = findParentItem(focusedItem);\n\n if (!focusedItem.branch) {\n if (parent && parent.branch) {\n this._focusItem(parent);\n }\n } else {\n if (focusedItem.open) {\n focusedItem.open = false;\n } else {\n if (parent && parent.branch) {\n this._focusItem(parent);\n }\n }\n }\n }\n\n private _handleArrowDownPress() {\n if (this._treeContextState.focusedItem) {\n this._focusNextItem();\n } else {\n this._focusItem(this._assignedTreeItems[0]);\n }\n }\n\n private _handleArrowUpPress() {\n if (this._treeContextState.focusedItem) {\n this._focusPrevItem();\n } else {\n this._focusItem(this._assignedTreeItems[0]);\n }\n }\n\n private _handleEnterPress() {\n const {focusedItem} = this._treeContextState;\n\n if (focusedItem) {\n this._treeContextState.selectedItems.forEach(\n (li) => (li.selected = false)\n );\n this._treeContextState.selectedItems.clear();\n this._highlightIndentGuides();\n\n focusedItem.selected = true;\n this._emitSelectEvent();\n\n if (focusedItem.branch) {\n focusedItem.open = !focusedItem.open;\n }\n }\n }\n\n private _handleShiftPress() {\n this._treeContextState.isShiftPressed = true;\n }\n\n private _handleComponentKeyDown = (ev: KeyboardEvent) => {\n const key = ev.key as ListenedKey;\n\n if (listenedKeys.includes(key)) {\n ev.stopPropagation();\n ev.preventDefault();\n }\n\n switch (key) {\n case ' ':\n case 'Enter':\n this._handleEnterPress();\n break;\n case 'ArrowDown':\n this._handleArrowDownPress();\n break;\n case 'ArrowLeft':\n this._handleArrowLeftPress(ev);\n break;\n case 'ArrowRight':\n this._handleArrowRightPress();\n break;\n case 'ArrowUp':\n this._handleArrowUpPress();\n break;\n case 'Shift':\n this._handleShiftPress();\n break;\n default:\n }\n };\n\n private _handleComponentKeyUp = (ev: KeyboardEvent) => {\n if (ev.key === 'Shift') {\n this._treeContextState.isShiftPressed = false;\n }\n };\n\n private _handleSlotChange = () => {\n this._treeContextState.itemListUpToDate = false;\n initPathTrackerProps(this, this._assignedTreeItems);\n\n this.updateComplete.then(() => {\n if (this._treeContextState.activeItem === null) {\n const firstChild = this.querySelector<VscodeTreeItem>(\n ':scope > vscode-tree-item'\n );\n\n if (firstChild) {\n firstChild.active = true;\n }\n }\n });\n };\n\n //#endregion\n\n override render(): TemplateResult {\n return html`<div>\n <slot @slotchange=${this._handleSlotChange}></slot>\n </div>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'vscode-tree': VscodeTree;\n }\n\n interface GlobalEventHandlersEventMap {\n 'vsc-tree-select': VscTreeSelectEvent;\n }\n}\n"]}
1
+ {"version":3,"file":"vscode-tree.js","sourceRoot":"","sources":["../../src/vscode-tree/vscode-tree.ts"],"names":[],"mappings":"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","sourcesContent":["import {PropertyValues, TemplateResult, html} from 'lit';\nimport {provide} from '@lit/context';\nimport {property, queryAssignedElements} from 'lit/decorators.js';\nimport {customElement, VscElement} from '../includes/VscElement.js';\nimport type {VscodeTreeItem} from '../vscode-tree-item';\nimport styles from './vscode-tree.styles.js';\nimport {\n ConfigContext,\n configContext,\n treeContext,\n type TreeContext,\n} from './tree-context.js';\nimport {\n findNextItem,\n findPrevItem,\n findParentItem,\n initPathTrackerProps,\n} from './helpers.js';\n\nexport type VscTreeSelectEvent = CustomEvent<{selectedItems: VscodeTreeItem[]}>;\n\nexport const ExpandMode = {\n singleClick: 'singleClick',\n doubleClick: 'doubleClick',\n} as const;\n\nexport type ExpandMode = (typeof ExpandMode)[keyof typeof ExpandMode];\n\nexport const IndentGuides = {\n none: 'none',\n onHover: 'onHover',\n always: 'always',\n} as const;\n\nexport type IndentGuideDisplay =\n (typeof IndentGuides)[keyof typeof IndentGuides];\n\ntype ListenedKey =\n | 'ArrowDown'\n | 'ArrowUp'\n | 'ArrowLeft'\n | 'ArrowRight'\n | 'Enter'\n | 'Escape'\n | 'Shift'\n | ' ';\n\nconst listenedKeys: ListenedKey[] = [\n ' ',\n 'ArrowDown',\n 'ArrowUp',\n 'ArrowLeft',\n 'ArrowRight',\n 'Enter',\n 'Escape',\n 'Shift',\n];\n\n/**\n * @tag vscode-tree\n *\n * @cssprop [--vscode-font-family=sans-serif]\n * @cssprop [--vscode-font-size=13px]\n * @cssprop [--vscode-font-weight=normal]\n * @cssprop [--vscode-foreground=#cccccc]\n * @cssprop [--vscode-icon-foreground=#cccccc]\n * @cssprop [--vscode-list-focusAndSelectionOutline=#0078d4]\n * @cssprop [--vscode-list-focusOutline=#0078d4]\n * @cssprop [--vscode-list-hoverBackground=#2a2d2e]\n * @cssprop [--vscode-list-hoverForeground=#cccccc]\n * @cssprop [--vscode-tree-inactiveIndentGuidesStroke=rgba(88, 88, 88, 0.4)]\n * @cssprop [--vscode-tree-indentGuidesStroke=#585858]\n */\n@customElement('vscode-tree')\nexport class VscodeTree extends VscElement {\n static override styles = styles;\n\n //#region properties\n\n /**\n * Controls how tree folders are expanded when clicked. This property is designed to use\n * the `workbench.tree.expandMode` setting.\n *\n * Valid options are available as constants.\n *\n * ```javascript\n * import {ExpandMode} from '@vscode-elements/elements/dist/vscode-tree/vscode-tree.js';\n *\n * document.querySelector('vscode-tree').expandMode = ExpandMode.singleClick;\n * ```\n *\n * @type {'singleClick' | 'doubleClick'}\n */\n @property({type: String, attribute: 'expand-mode'})\n expandMode: ExpandMode = 'singleClick';\n\n /**\n * Although arrows are always visible in the Tree component by default in VSCode, some icon sets\n * (e.g., Material Icon Theme) allow disabling them in the file explorer view. This flag makes it\n * possible to mimic that behavior.\n */\n @property({type: Boolean, reflect: true, attribute: 'hide-arrows'})\n hideArrows: boolean = false;\n\n /**\n * Controls the indentation in pixels. This property is designed to use the\n * `workbench.tree.indent` setting.\n */\n @property({type: Number, reflect: true})\n indent: number = 8;\n\n /**\n * Controls whether the tree should render indent guides. This property is\n * designed to use the `workbench.tree.renderIndentGuides` setting.\n *\n * Valid options are available as constants.\n *\n * ```javascript\n * import {IndentGuides} from '@vscode-elements/elements/dist/vscode-tree/vscode-tree.js';\n *\n * document.querySelector('vscode-tree').expandMode = IndentGuides.onHover;\n * ```\n *\n * @type {'none' | 'onHover' | 'always'}\n */\n @property({\n type: String,\n attribute: 'indent-guides',\n useDefault: true,\n reflect: true,\n })\n indentGuides: IndentGuideDisplay = 'onHover';\n\n /**\n * Allows selecting multiple items.\n */\n @property({type: Boolean, reflect: true, attribute: 'multi-select'})\n multiSelect: boolean = false;\n\n //#endregion\n\n //#region private variables\n\n @provide({context: treeContext})\n private _treeContextState: TreeContext = {\n isShiftPressed: false,\n activeItem: null,\n selectedItems: new Set(),\n hoveredItem: null,\n allItems: null,\n itemListUpToDate: false,\n focusedItem: null,\n prevFocusedItem: null,\n hasBranchItem: false,\n rootElement: this,\n highlightedItems: new Set(),\n highlightIndentGuides: () => {\n this._highlightIndentGuides();\n },\n emitSelectEvent: () => {\n this._emitSelectEvent();\n },\n };\n\n @provide({context: configContext})\n private _configContext: ConfigContext = {\n hideArrows: this.hideArrows,\n expandMode: this.expandMode,\n indent: this.indent,\n indentGuides: this.indentGuides,\n multiSelect: this.multiSelect,\n };\n\n @queryAssignedElements({selector: 'vscode-tree-item'})\n private _assignedTreeItems!: VscodeTreeItem[];\n\n //#endregion\n\n //#region lifecycle methods\n\n constructor() {\n super();\n\n this.addEventListener('keyup', this._handleComponentKeyUp);\n this.addEventListener('keydown', this._handleComponentKeyDown);\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n this.role = 'tree';\n }\n\n protected override willUpdate(changedProperties: PropertyValues<this>): void {\n this._updateConfigContext(changedProperties);\n\n if (changedProperties.has('multiSelect')) {\n this.ariaMultiSelectable = this.multiSelect ? 'true' : 'false';\n }\n }\n\n //#endregion\n\n //#region public methods\n\n /**\n * Expands all folders.\n */\n expandAll() {\n const children = this.querySelectorAll<VscodeTreeItem>('vscode-tree-item');\n\n children.forEach((item) => {\n if (item.branch) {\n item.open = true;\n }\n });\n }\n\n /**\n * Collapses all folders.\n */\n collapseAll() {\n const children = this.querySelectorAll<VscodeTreeItem>('vscode-tree-item');\n\n children.forEach((item) => {\n if (item.branch) {\n item.open = false;\n }\n });\n }\n\n /**\n * @internal\n * Updates `hasBranchItem` property in the context state in order to removing\n * extra padding before the leaf elements, if it is required.\n */\n updateHasBranchItemFlag() {\n const hasBranchItem = this._assignedTreeItems.some((li) => li.branch);\n this._treeContextState = {...this._treeContextState, hasBranchItem};\n }\n\n //#endregion\n\n //#region private methods\n\n private _emitSelectEvent() {\n const ev = new CustomEvent('vsc-tree-select', {\n detail: Array.from(this._treeContextState.selectedItems),\n });\n\n this.dispatchEvent(ev);\n }\n\n private _highlightIndentGuideOfItem(item: VscodeTreeItem) {\n if (item.branch && item.open) {\n item.highlightedGuides = true;\n this._treeContextState.highlightedItems?.add(item);\n } else {\n const parent = findParentItem(item);\n\n if (parent) {\n parent.highlightedGuides = true;\n this._treeContextState.highlightedItems?.add(parent);\n }\n }\n }\n\n private _highlightIndentGuides() {\n if (this.indentGuides === IndentGuides.none) {\n return;\n }\n\n this._treeContextState.highlightedItems?.forEach(\n (i) => (i.highlightedGuides = false)\n );\n this._treeContextState.highlightedItems?.clear();\n\n if (this._treeContextState.activeItem) {\n this._highlightIndentGuideOfItem(this._treeContextState.activeItem);\n }\n\n this._treeContextState.selectedItems.forEach((item) => {\n this._highlightIndentGuideOfItem(item);\n });\n }\n\n private _updateConfigContext(changedProperties: PropertyValues) {\n const {hideArrows, expandMode, indent, indentGuides, multiSelect} = this;\n\n if (changedProperties.has('hideArrows')) {\n this._configContext = {...this._configContext, hideArrows};\n }\n\n if (changedProperties.has('expandMode')) {\n this._configContext = {...this._configContext, expandMode};\n }\n\n if (changedProperties.has('indent')) {\n this._configContext = {...this._configContext, indent};\n }\n\n if (changedProperties.has('indentGuides')) {\n this._configContext = {...this._configContext, indentGuides};\n }\n\n if (changedProperties.has('multiSelect')) {\n this._configContext = {...this._configContext, multiSelect};\n }\n }\n\n private _focusItem(item: VscodeTreeItem) {\n item.active = true;\n\n item.updateComplete.then(() => {\n item.focus();\n this._highlightIndentGuides();\n });\n }\n\n private _focusPrevItem() {\n if (this._treeContextState.focusedItem) {\n const item = findPrevItem(this._treeContextState.focusedItem);\n\n if (item) {\n this._focusItem(item);\n\n if (this._treeContextState.isShiftPressed && this.multiSelect) {\n item.selected = !item.selected;\n this._emitSelectEvent();\n }\n }\n }\n }\n\n private _focusNextItem() {\n if (this._treeContextState.focusedItem) {\n const item = findNextItem(this._treeContextState.focusedItem);\n\n if (item) {\n this._focusItem(item);\n\n if (this._treeContextState.isShiftPressed && this.multiSelect) {\n item.selected = !item.selected;\n this._emitSelectEvent();\n }\n }\n }\n }\n\n //#endregion\n\n //#region event handlers\n\n private _handleArrowRightPress() {\n if (!this._treeContextState.focusedItem) {\n return;\n }\n\n const {focusedItem} = this._treeContextState;\n\n if (focusedItem.branch) {\n if (focusedItem.open) {\n this._focusNextItem();\n } else {\n focusedItem.open = true;\n }\n }\n }\n\n private _handleArrowLeftPress(ev: KeyboardEvent) {\n if (ev.ctrlKey) {\n this.collapseAll();\n return;\n }\n\n if (!this._treeContextState.focusedItem) {\n return;\n }\n\n const {focusedItem} = this._treeContextState;\n const parent = findParentItem(focusedItem);\n\n if (!focusedItem.branch) {\n if (parent && parent.branch) {\n this._focusItem(parent);\n }\n } else {\n if (focusedItem.open) {\n focusedItem.open = false;\n } else {\n if (parent && parent.branch) {\n this._focusItem(parent);\n }\n }\n }\n }\n\n private _handleArrowDownPress() {\n if (this._treeContextState.focusedItem) {\n this._focusNextItem();\n } else {\n this._focusItem(this._assignedTreeItems[0]);\n }\n }\n\n private _handleArrowUpPress() {\n if (this._treeContextState.focusedItem) {\n this._focusPrevItem();\n } else {\n this._focusItem(this._assignedTreeItems[0]);\n }\n }\n\n private _handleEnterPress() {\n const {focusedItem} = this._treeContextState;\n\n if (focusedItem) {\n this._treeContextState.selectedItems.forEach(\n (li) => (li.selected = false)\n );\n this._treeContextState.selectedItems.clear();\n this._highlightIndentGuides();\n\n focusedItem.selected = true;\n this._emitSelectEvent();\n\n if (focusedItem.branch) {\n focusedItem.open = !focusedItem.open;\n }\n }\n }\n\n private _handleShiftPress() {\n this._treeContextState.isShiftPressed = true;\n }\n\n private _handleComponentKeyDown = (ev: KeyboardEvent) => {\n const key = ev.key as ListenedKey;\n\n if (listenedKeys.includes(key)) {\n ev.stopPropagation();\n ev.preventDefault();\n }\n\n switch (key) {\n case ' ':\n case 'Enter':\n this._handleEnterPress();\n break;\n case 'ArrowDown':\n this._handleArrowDownPress();\n break;\n case 'ArrowLeft':\n this._handleArrowLeftPress(ev);\n break;\n case 'ArrowRight':\n this._handleArrowRightPress();\n break;\n case 'ArrowUp':\n this._handleArrowUpPress();\n break;\n case 'Shift':\n this._handleShiftPress();\n break;\n default:\n }\n };\n\n private _handleComponentKeyUp = (ev: KeyboardEvent) => {\n if (ev.key === 'Shift') {\n this._treeContextState.isShiftPressed = false;\n }\n };\n\n private _handleSlotChange = () => {\n this._treeContextState.itemListUpToDate = false;\n initPathTrackerProps(this, this._assignedTreeItems);\n\n this.updateComplete.then(() => {\n if (this._treeContextState.activeItem === null) {\n const firstChild = this.querySelector<VscodeTreeItem>(\n ':scope > vscode-tree-item'\n );\n\n if (firstChild) {\n firstChild.active = true;\n }\n }\n });\n };\n\n //#endregion\n\n override render(): TemplateResult {\n return html`<div>\n <slot @slotchange=${this._handleSlotChange}></slot>\n </div>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'vscode-tree': VscodeTree;\n }\n\n interface GlobalEventHandlersEventMap {\n 'vsc-tree-select': VscTreeSelectEvent;\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import { css } from 'lit';
2
- import defaultStyles from '../includes/default.styles';
2
+ import defaultStyles from '../includes/default.styles.js';
3
3
  const styles = [
4
4
  defaultStyles,
5
5
  css `
@@ -1 +1 @@
1
- {"version":3,"file":"vscode-tree.styles.js","sourceRoot":"","sources":["../../src/vscode-tree/vscode-tree.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,GAAG,EAAC,MAAM,KAAK,CAAC;AACxC,OAAO,aAAa,MAAM,4BAA4B,CAAC;AAEvD,MAAM,MAAM,GAAmB;IAC7B,aAAa;IACb,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDF;CACF,CAAC;AAEF,eAAe,MAAM,CAAC","sourcesContent":["import {CSSResultGroup, css} from 'lit';\nimport defaultStyles from '../includes/default.styles';\n\nconst styles: CSSResultGroup = [\n defaultStyles,\n css`\n :host {\n --vsc-tree-item-arrow-display: flex;\n --internal-selectionBackground: var(\n --vscode-list-inactiveSelectionBackground,\n #37373d\n );\n --internal-selectionForeground: var(--vscode-foreground, #cccccc);\n --internal-selectionIconForeground: var(\n --vscode-icon-foreground,\n #cccccc\n );\n --internal-defaultIndentGuideDisplay: none;\n --internal-highlightedIndentGuideDisplay: block;\n\n display: block;\n }\n\n :host(:hover) {\n --internal-defaultIndentGuideDisplay: block;\n --internal-highlightedIndentGuideDisplay: block;\n }\n\n :host(:focus-within) {\n --internal-selectionBackground: var(\n --vscode-list-activeSelectionBackground,\n #04395e\n );\n --internal-selectionForeground: var(\n --vscode-list-activeSelectionForeground,\n #ffffff\n );\n --internal-selectionIconForeground: var(\n --vscode-list-activeSelectionIconForeground,\n #ffffff\n );\n }\n\n :host([hide-arrows]) {\n --vsc-tree-item-arrow-display: none;\n }\n\n :host([indent-guides='none']),\n :host([indent-guides='none']:hover) {\n --internal-defaultIndentGuideDisplay: none;\n --internal-highlightedIndentGuideDisplay: none;\n }\n\n :host([indent-guides='always']),\n :host([indent-guides='always']:hover) {\n --internal-defaultIndentGuideDisplay: block;\n --internal-highlightedIndentGuideDisplay: block;\n }\n `,\n];\n\nexport default styles;\n"]}
1
+ {"version":3,"file":"vscode-tree.styles.js","sourceRoot":"","sources":["../../src/vscode-tree/vscode-tree.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,GAAG,EAAC,MAAM,KAAK,CAAC;AACxC,OAAO,aAAa,MAAM,+BAA+B,CAAC;AAE1D,MAAM,MAAM,GAAmB;IAC7B,aAAa;IACb,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDF;CACF,CAAC;AAEF,eAAe,MAAM,CAAC","sourcesContent":["import {CSSResultGroup, css} from 'lit';\nimport defaultStyles from '../includes/default.styles.js';\n\nconst styles: CSSResultGroup = [\n defaultStyles,\n css`\n :host {\n --vsc-tree-item-arrow-display: flex;\n --internal-selectionBackground: var(\n --vscode-list-inactiveSelectionBackground,\n #37373d\n );\n --internal-selectionForeground: var(--vscode-foreground, #cccccc);\n --internal-selectionIconForeground: var(\n --vscode-icon-foreground,\n #cccccc\n );\n --internal-defaultIndentGuideDisplay: none;\n --internal-highlightedIndentGuideDisplay: block;\n\n display: block;\n }\n\n :host(:hover) {\n --internal-defaultIndentGuideDisplay: block;\n --internal-highlightedIndentGuideDisplay: block;\n }\n\n :host(:focus-within) {\n --internal-selectionBackground: var(\n --vscode-list-activeSelectionBackground,\n #04395e\n );\n --internal-selectionForeground: var(\n --vscode-list-activeSelectionForeground,\n #ffffff\n );\n --internal-selectionIconForeground: var(\n --vscode-list-activeSelectionIconForeground,\n #ffffff\n );\n }\n\n :host([hide-arrows]) {\n --vsc-tree-item-arrow-display: none;\n }\n\n :host([indent-guides='none']),\n :host([indent-guides='none']:hover) {\n --internal-defaultIndentGuideDisplay: none;\n --internal-highlightedIndentGuideDisplay: none;\n }\n\n :host([indent-guides='always']),\n :host([indent-guides='always']:hover) {\n --internal-defaultIndentGuideDisplay: block;\n --internal-highlightedIndentGuideDisplay: block;\n }\n `,\n];\n\nexport default styles;\n"]}
@@ -1,5 +1,5 @@
1
1
  import { PropertyValues, TemplateResult } from 'lit';
2
- import { VscElement } from '../includes/VscElement';
2
+ import { VscElement } from '../includes/VscElement.js';
3
3
  export declare class VscodeTreeItem extends VscElement {
4
4
  static styles: import("lit").CSSResultGroup;
5
5
  active: boolean;
@@ -20,23 +20,50 @@ export declare class VscodeTreeItem extends VscElement {
20
20
  private _hasBranchIcon;
21
21
  private _hasBranchOpenedIcon;
22
22
  private _hasLeafIcon;
23
+ private _hasDescriptionSlotContent;
24
+ private _hasActionsSlotContent;
25
+ private _hasDecorationSlotContent;
23
26
  private _treeContextState;
24
27
  private _configContext;
25
28
  private _initiallyAssignedTreeItems;
26
29
  private _childrenTreeItems;
30
+ private _descriptionSlotElements;
31
+ private _actionsSlotElements;
32
+ private _decorationSlotElements;
33
+ private _isPointerInside;
34
+ private _hasKeyboardFocus;
27
35
  constructor();
28
36
  connectedCallback(): void;
37
+ protected firstUpdated(changedProperties: PropertyValues): void;
29
38
  protected willUpdate(changedProperties: PropertyValues): void;
30
39
  private _setAriaExpanded;
31
40
  private _setHasActiveItemFlagOnParent;
41
+ private _refreshDescriptionSlotState;
42
+ private _refreshActionsSlotState;
43
+ private _refreshDecorationSlotState;
44
+ private _setCustomState;
45
+ private _getActiveElement;
46
+ private _isActiveElementInActions;
47
+ private _updateActionsVisibility;
48
+ private _updateFocusState;
49
+ private _clearHoverState;
50
+ private _adoptHoverFromSibling;
51
+ private _claimHover;
32
52
  private _toggleActiveState;
33
53
  private _selectItem;
34
54
  private _selectRange;
35
55
  private _selectItemsAndAllVisibleDescendants;
36
56
  private _mainSlotChange;
37
57
  private _handleChildrenSlotChange;
58
+ private _handleDescriptionSlotChange;
59
+ private _handleActionsSlotChange;
60
+ private _handleDecorationSlotChange;
38
61
  private _handleMainSlotChange;
39
62
  private _handleComponentFocus;
63
+ private _handlePointerEnter;
64
+ private _handlePointerLeave;
65
+ private _handleFocusIn;
66
+ private _handleFocusOut;
40
67
  private _handleContentClick;
41
68
  private _handleDoubleClick;
42
69
  private _handleIconSlotChange;
@@ -1 +1 @@
1
- {"version":3,"file":"vscode-tree-item.d.ts","sourceRoot":"","sources":["../../src/vscode-tree-item/vscode-tree-item.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAE,cAAc,EAAgB,MAAM,KAAK,CAAC;AAIlE,OAAO,EAAgB,UAAU,EAAC,MAAM,wBAAwB,CAAC;AAwCjE,qBACa,cAAe,SAAQ,UAAU;IAC5C,OAAgB,MAAM,+BAAU;IAKhC,MAAM,UAAS;IAGf,MAAM,UAAS;IAGf,aAAa,UAAS;IAGtB,eAAe,UAAS;IAExB,gBAAgB;IAEhB,iBAAiB,UAAS;IAG1B,IAAI,UAAS;IAGb,KAAK,SAAK;IAEV,IACI,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAI7B;IACD,IAAI,QAAQ,IAAI,OAAO,CAEtB;IACD,OAAO,CAAC,SAAS,CAAS;IAE1B,IAAI,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAEzB;IACD,IAAI,IAAI,IAAI,MAAM,EAAE,CAEnB;IAMD,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,UAAU,CAAmB;IAGrC,OAAO,CAAC,cAAc,CAAS;IAG/B,OAAO,CAAC,oBAAoB,CAAS;IAGrC,OAAO,CAAC,YAAY,CAAS;IAG7B,OAAO,CAAC,iBAAiB,CAUvB;IAGF,OAAO,CAAC,cAAc,CAAiB;IAGvC,OAAO,CAAC,2BAA2B,CAAoB;IAGvD,OAAO,CAAC,kBAAkB,CAAoB;;IAarC,iBAAiB,IAAI,IAAI;cAOf,UAAU,CAAC,iBAAiB,EAAE,cAAc,GAAG,IAAI;IActE,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,6BAA6B;IAWrC,OAAO,CAAC,kBAAkB;IAyB1B,OAAO,CAAC,WAAW;IAoBnB,OAAO,CAAC,YAAY;IAmCpB,OAAO,CAAC,oCAAoC;IAwB5C,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,yBAAyB;IAQjC,OAAO,CAAC,qBAAqB,CAG3B;IAEF,OAAO,CAAC,qBAAqB,CAc3B;IAEF,OAAO,CAAC,mBAAmB;IAkC3B,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,qBAAqB;IAoBpB,MAAM,IAAI,cAAc;CAyFlC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,kBAAkB,EAAE,cAAc,CAAC;KACpC;CACF"}
1
+ {"version":3,"file":"vscode-tree-item.d.ts","sourceRoot":"","sources":["../../src/vscode-tree-item/vscode-tree-item.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAE,cAAc,EAAgB,MAAM,KAAK,CAAC;AAIlE,OAAO,EAAgB,UAAU,EAAC,MAAM,2BAA2B,CAAC;AAwCpE,qBACa,cAAe,SAAQ,UAAU;IAC5C,OAAgB,MAAM,+BAAU;IAKhC,MAAM,UAAS;IAGf,MAAM,UAAS;IAGf,aAAa,UAAS;IAGtB,eAAe,UAAS;IAExB,gBAAgB;IAEhB,iBAAiB,UAAS;IAG1B,IAAI,UAAS;IAGb,KAAK,SAAK;IAEV,IACI,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAS7B;IACD,IAAI,QAAQ,IAAI,OAAO,CAEtB;IACD,OAAO,CAAC,SAAS,CAAS;IAE1B,IAAI,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAEzB;IACD,IAAI,IAAI,IAAI,MAAM,EAAE,CAEnB;IAMD,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,UAAU,CAAmB;IAGrC,OAAO,CAAC,cAAc,CAAS;IAG/B,OAAO,CAAC,oBAAoB,CAAS;IAGrC,OAAO,CAAC,YAAY,CAAS;IAG7B,OAAO,CAAC,0BAA0B,CAAS;IAG3C,OAAO,CAAC,sBAAsB,CAAS;IAGvC,OAAO,CAAC,yBAAyB,CAAS;IAG1C,OAAO,CAAC,iBAAiB,CAWvB;IAGF,OAAO,CAAC,cAAc,CAAiB;IAGvC,OAAO,CAAC,2BAA2B,CAAoB;IAGvD,OAAO,CAAC,kBAAkB,CAAoB;IAG9C,OAAO,CAAC,wBAAwB,CAAa;IAG7C,OAAO,CAAC,oBAAoB,CAAa;IAGzC,OAAO,CAAC,uBAAuB,CAAa;IAM5C,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,iBAAiB,CAAS;;IAiBzB,iBAAiB,IAAI,IAAI;cAOf,YAAY,CAAC,iBAAiB,EAAE,cAAc,GAAG,IAAI;cAarD,UAAU,CAAC,iBAAiB,EAAE,cAAc,GAAG,IAAI;IActE,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,6BAA6B;IAWrC,OAAO,CAAC,4BAA4B;IAOpC,OAAO,CAAC,wBAAwB;IAQhC,OAAO,CAAC,2BAA2B;IAWnC,OAAO,CAAC,eAAe;IAqBvB,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,yBAAyB;IAUjC,OAAO,CAAC,wBAAwB;IAkBhC,OAAO,CAAC,iBAAiB;IAwBzB,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,sBAAsB;IAK9B,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,kBAAkB;IAyB1B,OAAO,CAAC,WAAW;IAyBnB,OAAO,CAAC,YAAY;IA8CpB,OAAO,CAAC,oCAAoC;IAwB5C,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,yBAAyB;IAQjC,OAAO,CAAC,4BAA4B;IAIpC,OAAO,CAAC,wBAAwB;IAIhC,OAAO,CAAC,2BAA2B;IAInC,OAAO,CAAC,qBAAqB,CAG3B;IAEF,OAAO,CAAC,qBAAqB,CAc3B;IAEF,OAAO,CAAC,mBAAmB,CAGzB;IAEF,OAAO,CAAC,mBAAmB,CAezB;IAEF,OAAO,CAAC,cAAc,CAEpB;IAEF,OAAO,CAAC,eAAe,CAErB;IAEF,OAAO,CAAC,mBAAmB;IAkC3B,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,qBAAqB;IAoBpB,MAAM,IAAI,cAAc;CA4HlC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,kBAAkB,EAAE,cAAc,CAAC;KACpC;CACF"}
@@ -4,13 +4,14 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
+ var VscodeTreeItem_1;
7
8
  import { html, nothing } from 'lit';
8
9
  import { consume } from '@lit/context';
9
10
  import { property, queryAssignedElements, state } from 'lit/decorators.js';
10
11
  import { classMap } from 'lit/directives/class-map.js';
11
- import { customElement, VscElement } from '../includes/VscElement';
12
- import { stylePropertyMap } from '../includes/style-property-map';
13
- import { configContext, treeContext, } from '../vscode-tree/tree-context';
12
+ import { customElement, VscElement } from '../includes/VscElement.js';
13
+ import { stylePropertyMap } from '../includes/style-property-map.js';
14
+ import { configContext, treeContext, } from '../vscode-tree/tree-context.js';
14
15
  import { initPathTrackerProps } from '../vscode-tree/helpers.js';
15
16
  import styles from './vscode-tree-item.styles.js';
16
17
  import { ExpandMode, IndentGuides } from '../vscode-tree/vscode-tree.js';
@@ -37,11 +38,17 @@ function getParentItem(childItem) {
37
38
  }
38
39
  return childItem.parentElement;
39
40
  }
40
- let VscodeTreeItem = class VscodeTreeItem extends VscElement {
41
+ let VscodeTreeItem = VscodeTreeItem_1 = class VscodeTreeItem extends VscElement {
41
42
  set selected(selected) {
42
43
  this._selected = selected;
43
- this._treeContextState.selectedItems.add(this);
44
+ if (selected) {
45
+ this._treeContextState.selectedItems.add(this);
46
+ }
47
+ else {
48
+ this._treeContextState.selectedItems.delete(this);
49
+ }
44
50
  this.ariaSelected = selected ? 'true' : 'false';
51
+ this._updateActionsVisibility();
45
52
  }
46
53
  get selected() {
47
54
  return this._selected;
@@ -72,9 +79,13 @@ let VscodeTreeItem = class VscodeTreeItem extends VscElement {
72
79
  this._hasBranchIcon = false;
73
80
  this._hasBranchOpenedIcon = false;
74
81
  this._hasLeafIcon = false;
82
+ this._hasDescriptionSlotContent = false;
83
+ this._hasActionsSlotContent = false;
84
+ this._hasDecorationSlotContent = false;
75
85
  this._treeContextState = {
76
86
  isShiftPressed: false,
77
87
  selectedItems: new Set(),
88
+ hoveredItem: null,
78
89
  allItems: null,
79
90
  itemListUpToDate: false,
80
91
  focusedItem: null,
@@ -83,6 +94,10 @@ let VscodeTreeItem = class VscodeTreeItem extends VscElement {
83
94
  rootElement: null,
84
95
  activeItem: null,
85
96
  };
97
+ //#endregion
98
+ //#region derived state
99
+ this._isPointerInside = false;
100
+ this._hasKeyboardFocus = false;
86
101
  this._handleMainSlotChange = () => {
87
102
  this._mainSlotChange();
88
103
  this._treeContextState.itemListUpToDate = false;
@@ -98,8 +113,36 @@ let VscodeTreeItem = class VscodeTreeItem extends VscElement {
98
113
  }
99
114
  this._treeContextState.focusedItem = this;
100
115
  };
116
+ this._handlePointerEnter = () => {
117
+ this._isPointerInside = true;
118
+ this._claimHover();
119
+ };
120
+ this._handlePointerLeave = (ev) => {
121
+ this._isPointerInside = false;
122
+ if (this._treeContextState.hoveredItem === this) {
123
+ this._treeContextState.hoveredItem = null;
124
+ }
125
+ this._clearHoverState();
126
+ const relatedTarget = ev.relatedTarget;
127
+ if (relatedTarget instanceof Element) {
128
+ const nextItem = relatedTarget.closest('vscode-tree-item');
129
+ if (nextItem && nextItem !== this && nextItem.isConnected) {
130
+ nextItem._adoptHoverFromSibling();
131
+ }
132
+ }
133
+ };
134
+ this._handleFocusIn = () => {
135
+ this._updateFocusState();
136
+ };
137
+ this._handleFocusOut = () => {
138
+ this._updateFocusState();
139
+ };
101
140
  this._internals = this.attachInternals();
102
141
  this.addEventListener('focus', this._handleComponentFocus);
142
+ this.addEventListener('pointerenter', this._handlePointerEnter);
143
+ this.addEventListener('pointerleave', this._handlePointerLeave);
144
+ this.addEventListener('focusin', this._handleFocusIn);
145
+ this.addEventListener('focusout', this._handleFocusOut);
103
146
  }
104
147
  connectedCallback() {
105
148
  super.connectedCallback();
@@ -107,6 +150,19 @@ let VscodeTreeItem = class VscodeTreeItem extends VscElement {
107
150
  this.role = 'treeitem';
108
151
  this.ariaDisabled = 'false';
109
152
  }
153
+ firstUpdated(changedProperties) {
154
+ super.firstUpdated(changedProperties);
155
+ this._refreshDescriptionSlotState();
156
+ this._refreshActionsSlotState();
157
+ this._refreshDecorationSlotState();
158
+ if (this.matches(':hover')) {
159
+ this._isPointerInside = true;
160
+ this._claimHover();
161
+ }
162
+ else {
163
+ this._updateActionsVisibility();
164
+ }
165
+ }
110
166
  willUpdate(changedProperties) {
111
167
  if (changedProperties.has('active')) {
112
168
  this._toggleActiveState();
@@ -131,6 +187,114 @@ let VscodeTreeItem = class VscodeTreeItem extends VscElement {
131
187
  parent.hasActiveItem = value;
132
188
  }
133
189
  }
190
+ _refreshDescriptionSlotState() {
191
+ const hasContent = (this._descriptionSlotElements?.length ?? 0) > 0;
192
+ this._hasDescriptionSlotContent = hasContent;
193
+ this._setCustomState('has-description', hasContent);
194
+ }
195
+ _refreshActionsSlotState() {
196
+ const hasContent = (this._actionsSlotElements?.length ?? 0) > 0;
197
+ this._hasActionsSlotContent = hasContent;
198
+ this._setCustomState('has-actions', hasContent);
199
+ this._updateActionsVisibility();
200
+ }
201
+ _refreshDecorationSlotState() {
202
+ const hasContent = (this._decorationSlotElements?.length ?? 0) > 0;
203
+ const prevHasDecoration = this._hasDecorationSlotContent;
204
+ this._hasDecorationSlotContent = hasContent;
205
+ this._setCustomState('has-decoration', hasContent);
206
+ if (prevHasDecoration !== hasContent) {
207
+ this.requestUpdate();
208
+ }
209
+ }
210
+ _setCustomState(stateName, present) {
211
+ if (!this._internals?.states) {
212
+ return;
213
+ }
214
+ try {
215
+ if (present) {
216
+ this._internals.states.add(stateName);
217
+ }
218
+ else {
219
+ this._internals.states.delete(stateName);
220
+ }
221
+ }
222
+ catch {
223
+ // https://developer.mozilla.org/en-US/docs/Web/API/CustomStateSet#compatibility_with_dashed-ident_syntax
224
+ if (present) {
225
+ this._internals.states.add(`--${stateName}`);
226
+ }
227
+ else {
228
+ this._internals.states.delete(`--${stateName}`);
229
+ }
230
+ }
231
+ }
232
+ _getActiveElement() {
233
+ const root = this.getRootNode({ composed: true });
234
+ if (root instanceof Document) {
235
+ return root.activeElement instanceof Element ? root.activeElement : null;
236
+ }
237
+ if (root instanceof ShadowRoot) {
238
+ return root.activeElement instanceof Element ? root.activeElement : null;
239
+ }
240
+ return null;
241
+ }
242
+ _isActiveElementInActions(activeElement) {
243
+ if (!activeElement) {
244
+ return false;
245
+ }
246
+ return (this._actionsSlotElements ?? []).some((element) => element === activeElement || element.contains(activeElement));
247
+ }
248
+ _updateActionsVisibility() {
249
+ if (!this._hasActionsSlotContent) {
250
+ this._setCustomState('show-actions', false);
251
+ return;
252
+ }
253
+ const activeElement = this._getActiveElement();
254
+ const isActionsFocused = this._isActiveElementInActions(activeElement);
255
+ const shouldShow = this.selected ||
256
+ this._isPointerInside ||
257
+ this._hasKeyboardFocus ||
258
+ isActionsFocused;
259
+ this._setCustomState('show-actions', shouldShow);
260
+ }
261
+ _updateFocusState() {
262
+ const hostFocusVisible = this.matches(':focus-visible');
263
+ this._setCustomState('focus-visible', hostFocusVisible);
264
+ const activeElement = this._getActiveElement();
265
+ let owner = null;
266
+ if (activeElement instanceof Element) {
267
+ owner = activeElement.closest('vscode-tree-item');
268
+ if (!owner) {
269
+ const root = activeElement.getRootNode();
270
+ if (root instanceof ShadowRoot && root.host instanceof VscodeTreeItem_1) {
271
+ owner = root.host;
272
+ }
273
+ }
274
+ }
275
+ const hasKeyboardFocus = owner === this;
276
+ this._hasKeyboardFocus = hasKeyboardFocus;
277
+ this._setCustomState('keyboard-focus', hasKeyboardFocus);
278
+ this._updateActionsVisibility();
279
+ }
280
+ _clearHoverState() {
281
+ this._isPointerInside = false;
282
+ this._setCustomState('hover', false);
283
+ this._updateActionsVisibility();
284
+ }
285
+ _adoptHoverFromSibling() {
286
+ this._isPointerInside = true;
287
+ this._claimHover();
288
+ }
289
+ _claimHover() {
290
+ const treeState = this._treeContextState;
291
+ if (treeState.hoveredItem && treeState.hoveredItem !== this) {
292
+ treeState.hoveredItem._clearHoverState();
293
+ }
294
+ treeState.hoveredItem = this;
295
+ this._setCustomState('hover', true);
296
+ this._updateActionsVisibility();
297
+ }
134
298
  _toggleActiveState() {
135
299
  if (this.active) {
136
300
  if (this._treeContextState.activeItem) {
@@ -140,7 +304,7 @@ let VscodeTreeItem = class VscodeTreeItem extends VscElement {
140
304
  this._treeContextState.activeItem = this;
141
305
  this._setHasActiveItemFlagOnParent(this, true);
142
306
  this.tabIndex = 0;
143
- this._internals.states.add('active');
307
+ this._setCustomState('active', true);
144
308
  }
145
309
  else {
146
310
  if (this._treeContextState.activeItem === this) {
@@ -148,34 +312,38 @@ let VscodeTreeItem = class VscodeTreeItem extends VscElement {
148
312
  this._setHasActiveItemFlagOnParent(this, false);
149
313
  }
150
314
  this.tabIndex = -1;
151
- this._internals.states.delete('active');
315
+ this._setCustomState('active', false);
152
316
  }
153
317
  }
154
318
  _selectItem(isCtrlDown) {
155
319
  const { selectedItems } = this._treeContextState;
156
320
  const { multiSelect } = this._configContext;
321
+ const prevSelected = new Set(selectedItems);
157
322
  if (multiSelect && isCtrlDown) {
158
- if (this.selected) {
159
- this.selected = false;
160
- selectedItems.delete(this);
161
- }
162
- else {
163
- this.selected = true;
164
- selectedItems.add(this);
165
- }
323
+ this.selected = !this.selected;
166
324
  }
167
325
  else {
168
- selectedItems.forEach((li) => (li.selected = false));
326
+ Array.from(selectedItems).forEach((li) => {
327
+ if (li !== this) {
328
+ li.selected = false;
329
+ }
330
+ });
169
331
  selectedItems.clear();
170
332
  this.selected = true;
171
- selectedItems.add(this);
172
333
  }
334
+ const affected = new Set([
335
+ ...prevSelected,
336
+ ...selectedItems,
337
+ ]);
338
+ affected.add(this);
339
+ affected.forEach((li) => li._updateActionsVisibility());
173
340
  }
174
341
  _selectRange() {
175
342
  const prevFocused = this._treeContextState.prevFocusedItem;
176
343
  if (!prevFocused || prevFocused === this) {
177
344
  return;
178
345
  }
346
+ const prevSelected = new Set(this._treeContextState.selectedItems);
179
347
  if (!this._treeContextState.itemListUpToDate) {
180
348
  this._treeContextState.allItems =
181
349
  this._treeContextState.rootElement.querySelectorAll('vscode-tree-item');
@@ -191,9 +359,15 @@ let VscodeTreeItem = class VscodeTreeItem extends VscElement {
191
359
  if (from > to) {
192
360
  [from, to] = [to, from];
193
361
  }
194
- this._treeContextState.selectedItems.forEach((li) => (li.selected = false));
362
+ Array.from(this._treeContextState.selectedItems).forEach((li) => (li.selected = false));
195
363
  this._treeContextState.selectedItems.clear();
196
364
  this._selectItemsAndAllVisibleDescendants(from, to);
365
+ const affected = new Set([
366
+ ...prevSelected,
367
+ ...this._treeContextState.selectedItems,
368
+ ]);
369
+ affected.add(this);
370
+ affected.forEach((li) => li._updateActionsVisibility());
197
371
  }
198
372
  _selectItemsAndAllVisibleDescendants(from, to) {
199
373
  let i = from;
@@ -230,6 +404,15 @@ let VscodeTreeItem = class VscodeTreeItem extends VscElement {
230
404
  this._treeContextState.rootElement.updateHasBranchItemFlag();
231
405
  }
232
406
  }
407
+ _handleDescriptionSlotChange() {
408
+ this._refreshDescriptionSlotState();
409
+ }
410
+ _handleActionsSlotChange() {
411
+ this._refreshActionsSlotState();
412
+ }
413
+ _handleDecorationSlotChange() {
414
+ this._refreshDecorationSlotState();
415
+ }
233
416
  _handleContentClick(ev) {
234
417
  ev.stopPropagation();
235
418
  const isCtrlDown = ev.ctrlKey || ev.metaKey;
@@ -298,6 +481,9 @@ let VscodeTreeItem = class VscodeTreeItem extends VscElement {
298
481
  const wrapperClasses = {
299
482
  wrapper: true,
300
483
  active: this.active,
484
+ 'has-description': this._hasDescriptionSlotContent,
485
+ 'has-actions': this._hasActionsSlotContent,
486
+ 'has-decoration': this._hasDecorationSlotContent,
301
487
  };
302
488
  const childrenClasses = {
303
489
  children: true,
@@ -309,9 +495,15 @@ let VscodeTreeItem = class VscodeTreeItem extends VscElement {
309
495
  'icon-container': true,
310
496
  'has-icon': hasVisibleIcon,
311
497
  };
498
+ const contentClasses = {
499
+ content: true,
500
+ 'has-description': this._hasDescriptionSlotContent,
501
+ 'has-decoration': this._hasDecorationSlotContent,
502
+ };
312
503
  return html ` <div class="root">
313
504
  <div
314
505
  class=${classMap(wrapperClasses)}
506
+ part="wrapper"
315
507
  @click=${this._handleContentClick}
316
508
  @dblclick=${this._handleDoubleClick}
317
509
  .style=${stylePropertyMap({ paddingLeft: `${indentation}px` })}
@@ -322,11 +514,12 @@ let VscodeTreeItem = class VscodeTreeItem extends VscElement {
322
514
  'arrow-container': true,
323
515
  'icon-rotated': this.open,
324
516
  })}
517
+ part="arrow-icon-container"
325
518
  >
326
519
  ${arrowIcon}
327
520
  </div>`
328
521
  : nothing}
329
- <div class=${classMap(iconContainerClasses)}>
522
+ <div class=${classMap(iconContainerClasses)} part="icon-container">
330
523
  ${this.branch && !this.open
331
524
  ? html `<slot
332
525
  name="icon-branch"
@@ -346,8 +539,32 @@ let VscodeTreeItem = class VscodeTreeItem extends VscElement {
346
539
  ></slot>`
347
540
  : nothing}
348
541
  </div>
349
- <div class="content" part="content">
350
- <slot @slotchange=${this._handleMainSlotChange}></slot>
542
+ <div class=${classMap(contentClasses)} part="content">
543
+ <span class="label" part="label">
544
+ <slot @slotchange=${this._handleMainSlotChange}></slot>
545
+ </span>
546
+ <span
547
+ class="description"
548
+ part="description"
549
+ ?hidden=${!this._hasDescriptionSlotContent}
550
+ >
551
+ <slot
552
+ name="description"
553
+ @slotchange=${this._handleDescriptionSlotChange}
554
+ ></slot>
555
+ </span>
556
+ <div class="actions" part="actions">
557
+ <slot
558
+ name="actions"
559
+ @slotchange=${this._handleActionsSlotChange}
560
+ ></slot>
561
+ </div>
562
+ <div class="decoration" part="decoration">
563
+ <slot
564
+ name="decoration"
565
+ @slotchange=${this._handleDecorationSlotChange}
566
+ ></slot>
567
+ </div>
351
568
  </div>
352
569
  </div>
353
570
  <div
@@ -400,6 +617,15 @@ __decorate([
400
617
  __decorate([
401
618
  state()
402
619
  ], VscodeTreeItem.prototype, "_hasLeafIcon", void 0);
620
+ __decorate([
621
+ state()
622
+ ], VscodeTreeItem.prototype, "_hasDescriptionSlotContent", void 0);
623
+ __decorate([
624
+ state()
625
+ ], VscodeTreeItem.prototype, "_hasActionsSlotContent", void 0);
626
+ __decorate([
627
+ state()
628
+ ], VscodeTreeItem.prototype, "_hasDecorationSlotContent", void 0);
403
629
  __decorate([
404
630
  consume({ context: treeContext, subscribe: true })
405
631
  ], VscodeTreeItem.prototype, "_treeContextState", void 0);
@@ -412,7 +638,16 @@ __decorate([
412
638
  __decorate([
413
639
  queryAssignedElements({ selector: 'vscode-tree-item', slot: 'children' })
414
640
  ], VscodeTreeItem.prototype, "_childrenTreeItems", void 0);
415
- VscodeTreeItem = __decorate([
641
+ __decorate([
642
+ queryAssignedElements({ slot: 'description', flatten: true })
643
+ ], VscodeTreeItem.prototype, "_descriptionSlotElements", void 0);
644
+ __decorate([
645
+ queryAssignedElements({ slot: 'actions', flatten: true })
646
+ ], VscodeTreeItem.prototype, "_actionsSlotElements", void 0);
647
+ __decorate([
648
+ queryAssignedElements({ slot: 'decoration', flatten: true })
649
+ ], VscodeTreeItem.prototype, "_decorationSlotElements", void 0);
650
+ VscodeTreeItem = VscodeTreeItem_1 = __decorate([
416
651
  customElement('vscode-tree-item')
417
652
  ], VscodeTreeItem);
418
653
  export { VscodeTreeItem };