@vscode-elements/elements 2.0.0-pre.2 → 2.0.0-pre.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/custom-elements.json +1906 -1856
- package/dist/bundled.js +204 -195
- package/dist/includes/VscElement.js +1 -1
- package/dist/includes/VscElement.js.map +1 -1
- package/dist/vscode-tree/helpers.d.ts +4 -6
- package/dist/vscode-tree/helpers.d.ts.map +1 -1
- package/dist/vscode-tree/helpers.js +45 -68
- package/dist/vscode-tree/helpers.js.map +1 -1
- package/dist/vscode-tree/tree-context.d.ts +5 -5
- package/dist/vscode-tree/tree-context.d.ts.map +1 -1
- package/dist/vscode-tree/tree-context.js.map +1 -1
- package/dist/vscode-tree/vscode-tree.d.ts +74 -7
- package/dist/vscode-tree/vscode-tree.d.ts.map +1 -1
- package/dist/vscode-tree/vscode-tree.js +117 -51
- package/dist/vscode-tree/vscode-tree.js.map +1 -1
- package/dist/vscode-tree/vscode-tree.styles.d.ts.map +1 -1
- package/dist/vscode-tree/vscode-tree.styles.js +39 -3
- package/dist/vscode-tree/vscode-tree.styles.js.map +1 -1
- package/dist/vscode-tree-item/vscode-tree-item.d.ts +5 -0
- package/dist/vscode-tree-item/vscode-tree-item.d.ts.map +1 -1
- package/dist/vscode-tree-item/vscode-tree-item.js +77 -36
- package/dist/vscode-tree-item/vscode-tree-item.js.map +1 -1
- package/dist/vscode-tree-item/vscode-tree-item.styles.d.ts.map +1 -1
- package/dist/vscode-tree-item/vscode-tree-item.styles.js +25 -50
- package/dist/vscode-tree-item/vscode-tree-item.styles.js.map +1 -1
- package/package.json +3 -3
- package/vscode.css-custom-data.json +39 -39
- package/vscode.html-custom-data.json +108 -84
|
@@ -10,10 +10,15 @@ import { customElement, property, queryAssignedElements, } from 'lit/decorators.
|
|
|
10
10
|
import { VscElement } from '../includes/VscElement';
|
|
11
11
|
import styles from './vscode-tree.styles';
|
|
12
12
|
import { configContext, treeContext, } from './tree-context';
|
|
13
|
-
import { findNextItem, findPrevItem,
|
|
14
|
-
export const
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
import { findNextItem, findPrevItem, findParentItem, initPathTrackerProps, } from './helpers.js';
|
|
14
|
+
export const ExpandMode = {
|
|
15
|
+
singleClick: 'singleClick',
|
|
16
|
+
doubleClick: 'doubleClick',
|
|
17
|
+
};
|
|
18
|
+
export const IndentGuides = {
|
|
19
|
+
none: 'none',
|
|
20
|
+
onHover: 'onHover',
|
|
21
|
+
always: 'always',
|
|
17
22
|
};
|
|
18
23
|
const listenedKeys = [
|
|
19
24
|
' ',
|
|
@@ -25,20 +30,75 @@ const listenedKeys = [
|
|
|
25
30
|
'Escape',
|
|
26
31
|
'Shift',
|
|
27
32
|
];
|
|
28
|
-
const
|
|
33
|
+
const DEFAULT_HIDE_ARROWS = false;
|
|
29
34
|
const DEFAULT_INDENT = 8;
|
|
30
|
-
const DEFAULT_INDENT_GUIDES = false;
|
|
31
35
|
const DEFAULT_MULTI_SELECT = false;
|
|
32
|
-
const DEFAULT_EXPAND_MODE =
|
|
36
|
+
const DEFAULT_EXPAND_MODE = ExpandMode.singleClick;
|
|
37
|
+
const DEFAULT_INDENT_GUIDE_DISPLAY = IndentGuides.onHover;
|
|
38
|
+
/**
|
|
39
|
+
* @tag vscode-tree
|
|
40
|
+
*/
|
|
33
41
|
let VscodeTree = class VscodeTree extends VscElement {
|
|
42
|
+
//#endregion
|
|
34
43
|
//#region lifecycle methods
|
|
35
44
|
constructor() {
|
|
36
45
|
super();
|
|
37
46
|
//#region properties
|
|
38
|
-
|
|
47
|
+
/**
|
|
48
|
+
* Although arrows are always visible in the Tree component by default in VSCode, some icon sets
|
|
49
|
+
* (e.g., Material Icon Theme) allow disabling them in the file explorer view. This flag makes it
|
|
50
|
+
* possible to mimic that behavior.
|
|
51
|
+
*
|
|
52
|
+
* @type {boolean}
|
|
53
|
+
* @default false
|
|
54
|
+
*/
|
|
55
|
+
this.hideArrows = DEFAULT_HIDE_ARROWS;
|
|
56
|
+
/**
|
|
57
|
+
* Controls how tree folders are expanded when clicked. This property is designed to use
|
|
58
|
+
* the `workbench.tree.expandMode` setting.
|
|
59
|
+
*
|
|
60
|
+
* Valid options are available as constants.
|
|
61
|
+
*
|
|
62
|
+
* ```javascript
|
|
63
|
+
* import {ExpandMode} from '@vscode-elements/elements/dist/vscode-tree/vscode-tree.js';
|
|
64
|
+
*
|
|
65
|
+
* document.querySelector('vscode-tree').expandMode = ExpandMode.singleClick;
|
|
66
|
+
* ```
|
|
67
|
+
*
|
|
68
|
+
* @type {'singleClick' | 'doubleClick'}
|
|
69
|
+
* @default 'singleClick'
|
|
70
|
+
*/
|
|
39
71
|
this.expandMode = DEFAULT_EXPAND_MODE;
|
|
72
|
+
/**
|
|
73
|
+
* Controls the indentation in pixels. This property is designed to use the
|
|
74
|
+
* `workbench.tree.indent` setting.
|
|
75
|
+
*
|
|
76
|
+
* @type {number}
|
|
77
|
+
* @default 8
|
|
78
|
+
*/
|
|
40
79
|
this.indent = DEFAULT_INDENT;
|
|
41
|
-
|
|
80
|
+
/**
|
|
81
|
+
* Controls whether the tree should render indent guides. This property is
|
|
82
|
+
* designed to use the `workbench.tree.renderIndentGuides` setting.
|
|
83
|
+
*
|
|
84
|
+
* Valid options are available as constants.
|
|
85
|
+
*
|
|
86
|
+
* ```javascript
|
|
87
|
+
* import {IndentGuides} from '@vscode-elements/elements/dist/vscode-tree/vscode-tree.js';
|
|
88
|
+
*
|
|
89
|
+
* document.querySelector('vscode-tree').expandMode = IndentGuides.onHover;
|
|
90
|
+
* ```
|
|
91
|
+
*
|
|
92
|
+
* @type {'none' | 'onHover' | 'always'}
|
|
93
|
+
* @default 'onHover'
|
|
94
|
+
*/
|
|
95
|
+
this.indentGuides = DEFAULT_INDENT_GUIDE_DISPLAY;
|
|
96
|
+
/**
|
|
97
|
+
* Allows selecting multiple items.
|
|
98
|
+
*
|
|
99
|
+
* @type {boolean}
|
|
100
|
+
* @default false
|
|
101
|
+
*/
|
|
42
102
|
this.multiSelect = DEFAULT_MULTI_SELECT;
|
|
43
103
|
//#endregion
|
|
44
104
|
//#region private variables
|
|
@@ -52,19 +112,19 @@ let VscodeTree = class VscodeTree extends VscElement {
|
|
|
52
112
|
prevFocusedItem: null,
|
|
53
113
|
hasBranchItem: false,
|
|
54
114
|
rootElement: this,
|
|
55
|
-
highlightedItems:
|
|
56
|
-
|
|
57
|
-
this.
|
|
115
|
+
highlightedItems: new Set(),
|
|
116
|
+
highlightIndentGuides: () => {
|
|
117
|
+
this._highlightIndentGuides();
|
|
58
118
|
},
|
|
59
119
|
emitSelectEvent: () => {
|
|
60
120
|
this._emitSelectEvent();
|
|
61
121
|
},
|
|
62
122
|
};
|
|
63
123
|
this._configContext = {
|
|
64
|
-
|
|
124
|
+
hideArrows: DEFAULT_HIDE_ARROWS,
|
|
65
125
|
expandMode: DEFAULT_EXPAND_MODE,
|
|
66
126
|
indent: DEFAULT_INDENT,
|
|
67
|
-
indentGuides:
|
|
127
|
+
indentGuides: DEFAULT_INDENT_GUIDE_DISPLAY,
|
|
68
128
|
multiSelect: DEFAULT_MULTI_SELECT,
|
|
69
129
|
};
|
|
70
130
|
this._handleComponentKeyDown = (ev) => {
|
|
@@ -111,7 +171,6 @@ let VscodeTree = class VscodeTree extends VscElement {
|
|
|
111
171
|
firstChild.active = true;
|
|
112
172
|
}
|
|
113
173
|
}
|
|
114
|
-
this._highlightGuides();
|
|
115
174
|
});
|
|
116
175
|
};
|
|
117
176
|
this.addEventListener('keyup', this._handleComponentKeyUp);
|
|
@@ -129,6 +188,9 @@ let VscodeTree = class VscodeTree extends VscElement {
|
|
|
129
188
|
}
|
|
130
189
|
//#endregion
|
|
131
190
|
//#region public methods
|
|
191
|
+
/**
|
|
192
|
+
* Expands all folders.
|
|
193
|
+
*/
|
|
132
194
|
expandAll() {
|
|
133
195
|
const children = this.querySelectorAll('vscode-tree-item');
|
|
134
196
|
children.forEach((item) => {
|
|
@@ -137,6 +199,9 @@ let VscodeTree = class VscodeTree extends VscElement {
|
|
|
137
199
|
}
|
|
138
200
|
});
|
|
139
201
|
}
|
|
202
|
+
/**
|
|
203
|
+
* Collapses all folders.
|
|
204
|
+
*/
|
|
140
205
|
collapseAll() {
|
|
141
206
|
const children = this.querySelectorAll('vscode-tree-item');
|
|
142
207
|
children.forEach((item) => {
|
|
@@ -162,43 +227,36 @@ let VscodeTree = class VscodeTree extends VscElement {
|
|
|
162
227
|
});
|
|
163
228
|
this.dispatchEvent(ev);
|
|
164
229
|
}
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
const parent = getParentItem(activeItem);
|
|
176
|
-
if (parent && parent.branch) {
|
|
177
|
-
parent.highlightedGuides = true;
|
|
178
|
-
this._treeContextState.highlightedItems.push(parent);
|
|
179
|
-
}
|
|
230
|
+
_highlightIndentGuideOfItem(item) {
|
|
231
|
+
if (item.branch && item.open) {
|
|
232
|
+
item.highlightedGuides = true;
|
|
233
|
+
this._treeContextState.highlightedItems?.add(item);
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
const parent = findParentItem(item);
|
|
237
|
+
if (parent) {
|
|
238
|
+
parent.highlightedGuides = true;
|
|
239
|
+
this._treeContextState.highlightedItems?.add(parent);
|
|
180
240
|
}
|
|
181
241
|
}
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
this._treeContextState.highlightedItems.push(item);
|
|
187
|
-
}
|
|
188
|
-
else {
|
|
189
|
-
const parent = getParentItem(item);
|
|
190
|
-
if (parent && parent.branch) {
|
|
191
|
-
parent.highlightedGuides = true;
|
|
192
|
-
this._treeContextState.highlightedItems.push(item);
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
});
|
|
242
|
+
}
|
|
243
|
+
_highlightIndentGuides() {
|
|
244
|
+
if (this.indentGuides === IndentGuides.none) {
|
|
245
|
+
return;
|
|
196
246
|
}
|
|
247
|
+
this._treeContextState.highlightedItems?.forEach((i) => (i.highlightedGuides = false));
|
|
248
|
+
this._treeContextState.highlightedItems?.clear();
|
|
249
|
+
if (this._treeContextState.activeItem) {
|
|
250
|
+
this._highlightIndentGuideOfItem(this._treeContextState.activeItem);
|
|
251
|
+
}
|
|
252
|
+
this._treeContextState.selectedItems.forEach((item) => {
|
|
253
|
+
this._highlightIndentGuideOfItem(item);
|
|
254
|
+
});
|
|
197
255
|
}
|
|
198
256
|
_updateConfigContext(changedProperties) {
|
|
199
|
-
const {
|
|
200
|
-
if (changedProperties.has('
|
|
201
|
-
this._configContext = { ...this._configContext,
|
|
257
|
+
const { hideArrows, expandMode, indent, indentGuides, multiSelect } = this;
|
|
258
|
+
if (changedProperties.has('hideArrows')) {
|
|
259
|
+
this._configContext = { ...this._configContext, hideArrows };
|
|
202
260
|
}
|
|
203
261
|
if (changedProperties.has('expandMode')) {
|
|
204
262
|
this._configContext = { ...this._configContext, expandMode };
|
|
@@ -217,6 +275,7 @@ let VscodeTree = class VscodeTree extends VscElement {
|
|
|
217
275
|
item.active = true;
|
|
218
276
|
item.updateComplete.then(() => {
|
|
219
277
|
item.focus();
|
|
278
|
+
this._highlightIndentGuides();
|
|
220
279
|
});
|
|
221
280
|
}
|
|
222
281
|
_focusPrevItem() {
|
|
@@ -268,7 +327,7 @@ let VscodeTree = class VscodeTree extends VscElement {
|
|
|
268
327
|
return;
|
|
269
328
|
}
|
|
270
329
|
const { focusedItem } = this._treeContextState;
|
|
271
|
-
const parent =
|
|
330
|
+
const parent = findParentItem(focusedItem);
|
|
272
331
|
if (!focusedItem.branch) {
|
|
273
332
|
if (parent && parent.branch) {
|
|
274
333
|
this._focusItem(parent);
|
|
@@ -305,6 +364,8 @@ let VscodeTree = class VscodeTree extends VscElement {
|
|
|
305
364
|
const { focusedItem } = this._treeContextState;
|
|
306
365
|
if (focusedItem) {
|
|
307
366
|
this._treeContextState.selectedItems.forEach((li) => (li.selected = false));
|
|
367
|
+
this._treeContextState.selectedItems.clear();
|
|
368
|
+
this._highlightIndentGuides();
|
|
308
369
|
focusedItem.selected = true;
|
|
309
370
|
this._emitSelectEvent();
|
|
310
371
|
if (focusedItem.branch) {
|
|
@@ -324,8 +385,8 @@ let VscodeTree = class VscodeTree extends VscElement {
|
|
|
324
385
|
};
|
|
325
386
|
VscodeTree.styles = styles;
|
|
326
387
|
__decorate([
|
|
327
|
-
property({ type: Boolean, reflect: true })
|
|
328
|
-
], VscodeTree.prototype, "
|
|
388
|
+
property({ type: Boolean, reflect: true, attribute: 'hide-arrows' })
|
|
389
|
+
], VscodeTree.prototype, "hideArrows", void 0);
|
|
329
390
|
__decorate([
|
|
330
391
|
property({ type: String, attribute: 'expand-mode' })
|
|
331
392
|
], VscodeTree.prototype, "expandMode", void 0);
|
|
@@ -333,7 +394,12 @@ __decorate([
|
|
|
333
394
|
property({ type: Number, reflect: true })
|
|
334
395
|
], VscodeTree.prototype, "indent", void 0);
|
|
335
396
|
__decorate([
|
|
336
|
-
property({
|
|
397
|
+
property({
|
|
398
|
+
type: String,
|
|
399
|
+
attribute: 'indent-guides',
|
|
400
|
+
useDefault: true,
|
|
401
|
+
reflect: true,
|
|
402
|
+
})
|
|
337
403
|
], VscodeTree.prototype, "indentGuides", void 0);
|
|
338
404
|
__decorate([
|
|
339
405
|
property({ type: Boolean, reflect: true, attribute: 'multi-select' })
|
|
@@ -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 {\n customElement,\n property,\n queryAssignedElements,\n} from 'lit/decorators.js';\nimport {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 getParentItem,\n initPathTrackerProps,\n} from './helpers.js';\n\nexport type VscTreeSelectEvent = CustomEvent<{selectedItems: VscodeTreeItem[]}>;\n\nexport const EXPAND_MODE = {\n SINGLE_CLICK: 'singleClick',\n DOUBLE_CLICK: 'doubleClick',\n} as const;\n\nexport type ExpandMode = (typeof EXPAND_MODE)[keyof typeof EXPAND_MODE];\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];\nconst DEFAULT_ARROWS = false;\nconst DEFAULT_INDENT = 8;\nconst DEFAULT_INDENT_GUIDES = false;\nconst DEFAULT_MULTI_SELECT = false;\nconst DEFAULT_EXPAND_MODE = EXPAND_MODE.SINGLE_CLICK;\n\n@customElement('vscode-tree')\nexport class VscodeTree extends VscElement {\n static override styles = styles;\n\n //#region properties\n\n @property({type: Boolean, reflect: true})\n arrows = DEFAULT_ARROWS;\n\n @property({type: String, attribute: 'expand-mode'})\n expandMode: ExpandMode = DEFAULT_EXPAND_MODE;\n\n @property({type: Number, reflect: true})\n indent = DEFAULT_INDENT;\n\n @property({type: Boolean, attribute: 'indent-guides', reflect: true})\n indentGuides = DEFAULT_INDENT_GUIDES;\n\n @property({type: Boolean, reflect: true, attribute: 'multi-select'})\n multiSelect = DEFAULT_MULTI_SELECT;\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: [],\n highlightGuides: () => {\n this._highlightGuides();\n },\n emitSelectEvent: () => {\n this._emitSelectEvent();\n },\n };\n\n @provide({context: configContext})\n private _configContext: ConfigContext = {\n arrows: DEFAULT_ARROWS,\n expandMode: DEFAULT_EXPAND_MODE,\n indent: DEFAULT_INDENT,\n indentGuides: DEFAULT_INDENT_GUIDES,\n multiSelect: DEFAULT_MULTI_SELECT,\n };\n\n @queryAssignedElements({selector: 'vscode-tree-item'})\n private _assignedTreeItems!: VscodeTreeItem[];\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 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 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 _highlightGuides() {\n const {activeItem, highlightedItems, selectedItems} =\n this._treeContextState;\n\n highlightedItems.forEach((i) => (i.highlightedGuides = false));\n\n if (activeItem) {\n this._treeContextState.highlightedItems = [];\n\n if (activeItem.branch && activeItem.open) {\n activeItem.highlightedGuides = true;\n this._treeContextState.highlightedItems.push(activeItem);\n } else {\n const parent = getParentItem(activeItem);\n\n if (parent && parent.branch) {\n parent.highlightedGuides = true;\n this._treeContextState.highlightedItems.push(parent);\n }\n }\n }\n\n if (selectedItems) {\n selectedItems.forEach((item) => {\n if (item.branch && item.open) {\n item.highlightedGuides = true;\n this._treeContextState.highlightedItems.push(item);\n } else {\n const parent = getParentItem(item);\n\n if (parent && parent.branch) {\n parent.highlightedGuides = true;\n this._treeContextState.highlightedItems.push(item);\n }\n }\n });\n }\n }\n\n private _updateConfigContext(changedProperties: PropertyValues) {\n const {arrows, expandMode, indent, indentGuides, multiSelect} = this;\n\n if (changedProperties.has('arrows')) {\n this._configContext = {...this._configContext, arrows};\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 });\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 = getParentItem(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\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 this._highlightGuides();\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 {\n customElement,\n property,\n queryAssignedElements,\n} from 'lit/decorators.js';\nimport {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];\nconst DEFAULT_HIDE_ARROWS = false;\nconst DEFAULT_INDENT = 8;\nconst DEFAULT_MULTI_SELECT = false;\nconst DEFAULT_EXPAND_MODE = ExpandMode.singleClick;\nconst DEFAULT_INDENT_GUIDE_DISPLAY = IndentGuides.onHover;\n\n/**\n * @tag vscode-tree\n */\n@customElement('vscode-tree')\nexport class VscodeTree extends VscElement {\n static override styles = styles;\n\n //#region properties\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 * @type {boolean}\n * @default false\n */\n @property({type: Boolean, reflect: true, attribute: 'hide-arrows'})\n hideArrows: boolean = DEFAULT_HIDE_ARROWS;\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 * @default 'singleClick'\n */\n @property({type: String, attribute: 'expand-mode'})\n expandMode: ExpandMode = DEFAULT_EXPAND_MODE;\n\n /**\n * Controls the indentation in pixels. This property is designed to use the\n * `workbench.tree.indent` setting.\n *\n * @type {number}\n * @default 8\n */\n @property({type: Number, reflect: true})\n indent: number = DEFAULT_INDENT;\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 * @default 'onHover'\n */\n @property({\n type: String,\n attribute: 'indent-guides',\n useDefault: true,\n reflect: true,\n })\n indentGuides: IndentGuideDisplay = DEFAULT_INDENT_GUIDE_DISPLAY;\n\n /**\n * Allows selecting multiple items.\n *\n * @type {boolean}\n * @default false\n */\n @property({type: Boolean, reflect: true, attribute: 'multi-select'})\n multiSelect: boolean = DEFAULT_MULTI_SELECT;\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: DEFAULT_HIDE_ARROWS,\n expandMode: DEFAULT_EXPAND_MODE,\n indent: DEFAULT_INDENT,\n indentGuides: DEFAULT_INDENT_GUIDE_DISPLAY,\n multiSelect: DEFAULT_MULTI_SELECT,\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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vscode-tree.styles.d.ts","sourceRoot":"","sources":["../../src/vscode-tree/vscode-tree.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAM,MAAM,KAAK,CAAC;AAGxC,QAAA,MAAM,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"vscode-tree.styles.d.ts","sourceRoot":"","sources":["../../src/vscode-tree/vscode-tree.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAM,MAAM,KAAK,CAAC;AAGxC,QAAA,MAAM,MAAM,EAAE,cAiDb,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
|
@@ -4,13 +4,49 @@ const styles = [
|
|
|
4
4
|
defaultStyles,
|
|
5
5
|
css `
|
|
6
6
|
:host {
|
|
7
|
-
--vsc-tree-item-arrow-display:
|
|
7
|
+
--vsc-tree-item-arrow-display: flex;
|
|
8
|
+
--internal-selectionBackground: var(
|
|
9
|
+
--vscode-list-inactiveSelectionBackground
|
|
10
|
+
);
|
|
11
|
+
--internal-selectionForeground: var(--vscode-foreground);
|
|
12
|
+
--internal-selectionIconForeground: var(--vscode-icon-foreground);
|
|
13
|
+
--internal-defaultIndentGuideDisplay: none;
|
|
14
|
+
--internal-highlightedIndentGuideDisplay: block;
|
|
8
15
|
|
|
9
16
|
display: block;
|
|
10
17
|
}
|
|
11
18
|
|
|
12
|
-
:host(
|
|
13
|
-
--
|
|
19
|
+
:host(:hover) {
|
|
20
|
+
--internal-defaultIndentGuideDisplay: block;
|
|
21
|
+
--internal-highlightedIndentGuideDisplay: block;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
:host(:focus-within) {
|
|
25
|
+
--internal-selectionBackground: var(
|
|
26
|
+
--vscode-list-activeSelectionBackground
|
|
27
|
+
);
|
|
28
|
+
--internal-selectionForeground: var(
|
|
29
|
+
--vscode-list-activeSelectionForeground
|
|
30
|
+
);
|
|
31
|
+
--internal-selectionIconForeground: var(
|
|
32
|
+
--vscode-list-activeSelectionIconForeground
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
:host([hide-arrows]) {
|
|
37
|
+
--vsc-tree-item-arrow-display: none;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
:host([indent-guides='none']),
|
|
41
|
+
:host([indent-guides='none']:hover) {
|
|
42
|
+
--internal-defaultIndentGuideDisplay: none;
|
|
43
|
+
--internal-highlightedIndentGuideDisplay: none;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
:host([indent-guides='always']),
|
|
47
|
+
:host([indent-guides='always']:hover) {
|
|
48
|
+
--internal-defaultIndentGuideDisplay: block;
|
|
49
|
+
--internal-highlightedIndentGuideDisplay: block;
|
|
14
50
|
}
|
|
15
51
|
`,
|
|
16
52
|
];
|
|
@@ -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
|
|
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CF;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 );\n --internal-selectionForeground: var(--vscode-foreground);\n --internal-selectionIconForeground: var(--vscode-icon-foreground);\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 );\n --internal-selectionForeground: var(\n --vscode-list-activeSelectionForeground\n );\n --internal-selectionIconForeground: var(\n --vscode-list-activeSelectionIconForeground\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"]}
|
|
@@ -16,6 +16,10 @@ export declare class VscodeTreeItem extends VscElement {
|
|
|
16
16
|
set path(newPath: number[]);
|
|
17
17
|
get path(): number[];
|
|
18
18
|
private _path;
|
|
19
|
+
private _internals;
|
|
20
|
+
private _hasBranchIcon;
|
|
21
|
+
private _hasBranchOpenedIcon;
|
|
22
|
+
private _hasLeafIcon;
|
|
19
23
|
private _treeContextState;
|
|
20
24
|
private _configContext;
|
|
21
25
|
private _initiallyAssignedTreeItems;
|
|
@@ -35,6 +39,7 @@ export declare class VscodeTreeItem extends VscElement {
|
|
|
35
39
|
private _handleComponentFocus;
|
|
36
40
|
private _handleContentClick;
|
|
37
41
|
private _handleDoubleClick;
|
|
42
|
+
private _handleIconSlotChange;
|
|
38
43
|
render(): TemplateResult;
|
|
39
44
|
}
|
|
40
45
|
declare global {
|
|
@@ -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;
|
|
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;AASlE,OAAO,EAAC,UAAU,EAAC,MAAM,wBAAwB,CAAC;AAwClD,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;IAQ1B,OAAO,CAAC,qBAAqB;IAoBpB,MAAM,IAAI,cAAc;CAyFlC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,kBAAkB,EAAE,cAAc,CAAC;KACpC;CACF"}
|