@vscode-elements/elements 2.3.1-pre.0 → 2.3.1-pre.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"vscode-radio.js","sourceRoot":"","sources":["../../src/vscode-radio/vscode-radio.ts"],"names":[],"mappings":"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","sourcesContent":["import {html, LitElement, PropertyValueMap, TemplateResult} from 'lit';\nimport {property, state, query} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport {customElement} from '../includes/VscElement.js';\nimport {FormButtonWidgetBase} from '../includes/form-button-widget/FormButtonWidgetBase.js';\nimport {LabelledCheckboxOrRadioMixin} from '../includes/form-button-widget/LabelledCheckboxOrRadio.js';\nimport styles from './vscode-radio.styles.js';\nimport {AssociatedFormControl} from '../includes/AssociatedFormControl.js';\n\n/**\n * When participating in a form, it supports the `:invalid` pseudo class. Otherwise the error styles\n * can be applied through the `invalid` property.\n *\n * @tag vscode-radio\n *\n * @attr name - Name which is used as a variable name in the data of the form-container.\n * @attr label - Attribute pair of the `label` property.\n *\n * @prop label - Label text. It is only applied if component's innerHTML doesn't contain any text.\n *\n * @fires {Event} change - Dispatched when checked state is changed.\n * @fires {Event} invalid - Dispatched when the element is invalid and `checkValidity()` has been called or the form containing this element is submitted.\n *\n * [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/invalid_event)\n *\n * @cssprop [--vscode-font-family=sans-serif]\n * @cssprop [--vscode-font-size=13px]\n * @cssprop [--vscode-font-weight=normal]\n * @cssprop [--vscode-settings-checkboxBackground=#313131]\n * @cssprop [--vscode-settings-checkboxBorder=#3c3c3c]\n * @cssprop [--vscode-settings-checkboxForeground=#cccccc]\n * @cssprop [--vscode-focusBorder=#0078d4]\n * @cssprop [--vscode-inputValidation-errorBackground=#5a1d1d]\n * @cssprop [--vscode-inputValidation-errorBorder=#be1100]\n */\n@customElement('vscode-radio')\nexport class VscodeRadio\n extends LabelledCheckboxOrRadioMixin(FormButtonWidgetBase)\n implements AssociatedFormControl\n{\n static override styles = styles;\n\n /** @internal */\n static formAssociated = true;\n\n /** @internal */\n static override shadowRootOptions: ShadowRootInit = {\n ...LitElement.shadowRootOptions,\n delegatesFocus: true,\n };\n\n //#region properties\n\n @property({type: Boolean, reflect: true})\n override autofocus = false;\n\n @property({type: Boolean, reflect: true})\n checked = false;\n\n @property({type: Boolean, reflect: true, attribute: 'default-checked'})\n defaultChecked = false;\n\n @property({type: Boolean, reflect: true})\n invalid = false;\n\n /**\n * Name which is used as a variable name in the data of the form-container.\n */\n @property({reflect: true})\n name = '';\n\n /** @internal */\n @property()\n type = 'radio';\n\n @property()\n value = '';\n\n @property({type: Boolean, reflect: true})\n disabled = false;\n\n @property({type: Boolean, reflect: true})\n required = false;\n\n /** @internal */\n @property({type: Number, reflect: true})\n override tabIndex = 0;\n\n get form(): HTMLFormElement | null {\n return this._internals.form;\n }\n\n get validity(): ValidityState {\n return this._internals.validity;\n }\n\n get validationMessage(): string {\n return this._internals.validationMessage;\n }\n\n get willValidate(): boolean {\n return this._internals.willValidate;\n }\n\n //#endregion\n\n //#region private variables\n\n @state()\n private _slottedText = '';\n\n @query('#input')\n private _inputEl!: HTMLInputElement;\n\n private _internals: ElementInternals;\n\n //#endregion\n\n //#region lifecycle methods\n\n constructor() {\n super();\n this._internals = this.attachInternals();\n\n this.addEventListener('keydown', this._handleKeyDown);\n this.addEventListener('click', this._handleClick);\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n this._handleValueChange();\n }\n\n override update(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>\n ): void {\n super.update(changedProperties);\n\n if (changedProperties.has('checked')) {\n this._handleValueChange();\n }\n\n if (changedProperties.has('required')) {\n this._handleValueChange();\n }\n }\n\n //#endregion\n\n //#region public methods\n\n checkValidity(): boolean {\n return this._internals.checkValidity();\n }\n\n reportValidity(): boolean {\n return this._internals.reportValidity();\n }\n\n /** @internal */\n formResetCallback(): void {\n const radios = this._getRadios();\n\n radios.forEach((r) => {\n r.checked = r.defaultChecked;\n });\n\n this.updateComplete.then(() => {\n this._handleValueChange();\n });\n }\n\n /** @internal */\n formStateRestoreCallback(\n state: string,\n _mode: 'restore' | 'autocomplete'\n ): void {\n if (this.value === state && state !== '') {\n this.checked = true;\n }\n }\n\n /**\n * @internal\n */\n setComponentValidity(isValid: boolean) {\n if (isValid) {\n this._internals.setValidity({});\n } else {\n this._internals.setValidity(\n {\n valueMissing: true,\n },\n 'Please select one of these options.',\n this._inputEl\n );\n }\n }\n\n //#endregion\n\n //#region private methods\n\n private _getRadios(): VscodeRadio[] {\n const root = this.getRootNode({composed: true}) as Document | ShadowRoot;\n\n if (!root) {\n return [];\n }\n\n const radios = root.querySelectorAll(\n `vscode-radio[name=\"${this.name}\"]`\n ) as NodeListOf<VscodeRadio>;\n\n return Array.from(radios);\n }\n\n private _uncheckOthers(radios: VscodeRadio[]) {\n radios.forEach((r) => {\n if (r !== this) {\n r.checked = false;\n }\n });\n }\n\n private _checkButton() {\n const radios = this._getRadios();\n this.checked = true;\n\n radios.forEach((r) => {\n if (r !== this) {\n r.checked = false;\n }\n });\n }\n\n private _setGroupValidity(radios: VscodeRadio[], isValid: boolean) {\n this.updateComplete.then(() => {\n radios.forEach((r) => {\n r.setComponentValidity(isValid);\n });\n });\n }\n\n private _setActualFormValue() {\n let actualValue: string | null = '';\n\n if (this.checked) {\n actualValue = !this.value ? 'on' : this.value;\n } else {\n actualValue = null;\n }\n\n this._internals.setFormValue(actualValue);\n }\n\n //#endregion\n\n //#region event handlers\n\n private _handleValueChange() {\n const radios = this._getRadios();\n const anyRequired = radios.some((r) => {\n return r.required;\n });\n\n this._setActualFormValue();\n\n if (this.checked) {\n this._uncheckOthers(radios);\n this._setGroupValidity(radios, true);\n } else {\n const anyChecked = !!radios.find((r) => r.checked);\n const isInvalid = anyRequired && !anyChecked;\n\n this._setGroupValidity(radios, !isInvalid);\n }\n }\n\n private _handleClick = (): void => {\n if (this.disabled) {\n return;\n }\n\n if (!this.checked) {\n this._checkButton();\n this._handleValueChange();\n this.dispatchEvent(new Event('change', {bubbles: true}));\n }\n };\n\n protected _handleKeyDown = (ev: KeyboardEvent): void => {\n if (!this.disabled && (ev.key === 'Enter' || ev.key === ' ')) {\n ev.preventDefault();\n\n if (ev.key === ' ' && !this.checked) {\n this.checked = true;\n this._handleValueChange();\n this.dispatchEvent(new Event('change', {bubbles: true}));\n }\n\n if (ev.key === 'Enter') {\n this._internals.form?.requestSubmit();\n }\n }\n };\n\n //#endregion\n\n override render(): TemplateResult {\n const iconClasses = classMap({\n icon: true,\n checked: this.checked,\n });\n const labelInnerClasses = classMap({\n 'label-inner': true,\n 'is-slot-empty': this._slottedText === '',\n });\n\n return html`\n <div class=\"wrapper\">\n <input\n ?autofocus=${this.autofocus}\n id=\"input\"\n class=\"radio\"\n type=\"checkbox\"\n ?checked=${this.checked}\n value=${this.value}\n tabindex=${this.tabIndex}\n >\n <div class=${iconClasses}></div>\n <label for=\"input\" class=\"label\" @click=${this._handleClick}>\n <span class=${labelInnerClasses}>\n ${this._renderLabelAttribute()}\n <slot @slotchange=${this._handleSlotChange}></slot>\n </span>\n </label>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'vscode-radio': VscodeRadio;\n }\n}\n"]}
1
+ {"version":3,"file":"vscode-radio.js","sourceRoot":"","sources":["../../src/vscode-radio/vscode-radio.ts"],"names":[],"mappings":"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","sourcesContent":["import {html, LitElement, PropertyValueMap, TemplateResult} from 'lit';\nimport {property, state, query} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport {customElement} from '../includes/VscElement.js';\nimport {FormButtonWidgetBase} from '../includes/form-button-widget/FormButtonWidgetBase.js';\nimport {LabelledCheckboxOrRadioMixin} from '../includes/form-button-widget/LabelledCheckboxOrRadio.js';\nimport styles from './vscode-radio.styles.js';\nimport {AssociatedFormControl} from '../includes/AssociatedFormControl.js';\n\n/**\n * When participating in a form, it supports the `:invalid` pseudo class. Otherwise the error styles\n * can be applied through the `invalid` property.\n *\n * @tag vscode-radio\n *\n * @attr name - Name which is used as a variable name in the data of the form-container.\n * @attr label - Attribute pair of the `label` property.\n *\n * @prop label - Label text. It is only applied if component's innerHTML doesn't contain any text.\n *\n * @fires {Event} change - Dispatched when checked state is changed.\n * @fires {Event} invalid - Dispatched when the element is invalid and `checkValidity()` has been called or the form containing this element is submitted.\n *\n * [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/invalid_event)\n *\n * @cssprop [--vscode-font-family=sans-serif]\n * @cssprop [--vscode-font-size=13px]\n * @cssprop [--vscode-font-weight=normal]\n * @cssprop [--vscode-settings-checkboxBackground=#313131]\n * @cssprop [--vscode-settings-checkboxBorder=#3c3c3c]\n * @cssprop [--vscode-settings-checkboxForeground=#cccccc]\n * @cssprop [--vscode-focusBorder=#0078d4]\n * @cssprop [--vscode-inputValidation-errorBackground=#5a1d1d]\n * @cssprop [--vscode-inputValidation-errorBorder=#be1100]\n */\n@customElement('vscode-radio')\nexport class VscodeRadio\n extends LabelledCheckboxOrRadioMixin(FormButtonWidgetBase)\n implements AssociatedFormControl\n{\n static override styles = styles;\n\n /** @internal */\n static formAssociated = true;\n\n /** @internal */\n static override shadowRootOptions: ShadowRootInit = {\n ...LitElement.shadowRootOptions,\n delegatesFocus: true,\n };\n\n //#region properties\n\n @property({type: Boolean, reflect: true})\n override autofocus = false;\n\n @property({type: Boolean, reflect: true})\n checked = false;\n\n @property({type: Boolean, reflect: true, attribute: 'default-checked'})\n defaultChecked = false;\n\n @property({type: Boolean, reflect: true})\n invalid = false;\n\n /**\n * Name which is used as a variable name in the data of the form-container.\n */\n @property({reflect: true})\n name = '';\n\n /** @internal */\n @property()\n type = 'radio';\n\n @property()\n value = '';\n\n @property({type: Boolean, reflect: true})\n disabled = false;\n\n @property({type: Boolean, reflect: true})\n required = false;\n\n /** @internal */\n @property({type: Number, reflect: true})\n override tabIndex = 0;\n\n get form(): HTMLFormElement | null {\n return this._internals.form;\n }\n\n get validity(): ValidityState {\n return this._internals.validity;\n }\n\n get validationMessage(): string {\n return this._internals.validationMessage;\n }\n\n get willValidate(): boolean {\n return this._internals.willValidate;\n }\n\n //#endregion\n\n //#region private variables\n\n @state()\n private _slottedText = '';\n\n @query('#input')\n private _inputEl!: HTMLInputElement;\n\n private _internals: ElementInternals;\n\n //#endregion\n\n //#region lifecycle methods\n\n constructor() {\n super();\n this._internals = this.attachInternals();\n\n this.addEventListener('keydown', this._handleKeyDown);\n this.addEventListener('click', this._handleClick);\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n this._handleValueChange();\n }\n\n override update(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>\n ): void {\n super.update(changedProperties);\n\n if (changedProperties.has('checked')) {\n this._handleValueChange();\n }\n\n if (changedProperties.has('required')) {\n this._handleValueChange();\n }\n }\n\n //#endregion\n\n //#region public methods\n\n checkValidity(): boolean {\n return this._internals.checkValidity();\n }\n\n reportValidity(): boolean {\n return this._internals.reportValidity();\n }\n\n /** @internal */\n formResetCallback(): void {\n const radios = this._getRadios();\n\n radios.forEach((r) => {\n r.checked = r.defaultChecked;\n });\n\n this.updateComplete.then(() => {\n this._handleValueChange();\n });\n }\n\n /** @internal */\n formStateRestoreCallback(\n state: string,\n _mode: 'restore' | 'autocomplete'\n ): void {\n if (this.value === state && state !== '') {\n this.checked = true;\n }\n }\n\n /**\n * @internal\n */\n setComponentValidity(isValid: boolean) {\n if (isValid) {\n this._internals.setValidity({});\n } else {\n this._internals.setValidity(\n {\n valueMissing: true,\n },\n 'Please select one of these options.',\n this._inputEl\n );\n }\n }\n\n //#endregion\n\n //#region private methods\n\n private _getRadios(): VscodeRadio[] {\n const root = this.getRootNode({composed: false}) as Document | ShadowRoot;\n\n if (!root) {\n return [];\n }\n\n const radios = root.querySelectorAll(\n `vscode-radio[name=\"${this.name}\"]`\n ) as NodeListOf<VscodeRadio>;\n\n return Array.from(radios);\n }\n\n private _uncheckOthers(radios: VscodeRadio[]) {\n radios.forEach((r) => {\n if (r !== this) {\n r.checked = false;\n }\n });\n }\n\n private _checkButton() {\n const radios = this._getRadios();\n this.checked = true;\n\n radios.forEach((r) => {\n if (r !== this) {\n r.checked = false;\n }\n });\n }\n\n private _setGroupValidity(radios: VscodeRadio[], isValid: boolean) {\n this.updateComplete.then(() => {\n radios.forEach((r) => {\n r.setComponentValidity(isValid);\n });\n });\n }\n\n private _setActualFormValue() {\n let actualValue: string | null = '';\n\n if (this.checked) {\n actualValue = !this.value ? 'on' : this.value;\n } else {\n actualValue = null;\n }\n\n this._internals.setFormValue(actualValue);\n }\n\n //#endregion\n\n //#region event handlers\n\n private _handleValueChange() {\n const radios = this._getRadios();\n const anyRequired = radios.some((r) => {\n return r.required;\n });\n\n this._setActualFormValue();\n\n if (this.checked) {\n this._uncheckOthers(radios);\n this._setGroupValidity(radios, true);\n } else {\n const anyChecked = !!radios.find((r) => r.checked);\n const isInvalid = anyRequired && !anyChecked;\n\n this._setGroupValidity(radios, !isInvalid);\n }\n }\n\n private _handleClick = (): void => {\n if (this.disabled) {\n return;\n }\n\n if (!this.checked) {\n this._checkButton();\n this._handleValueChange();\n this.dispatchEvent(new Event('change', {bubbles: true}));\n }\n };\n\n protected _handleKeyDown = (ev: KeyboardEvent): void => {\n if (!this.disabled && (ev.key === 'Enter' || ev.key === ' ')) {\n ev.preventDefault();\n\n if (ev.key === ' ' && !this.checked) {\n this.checked = true;\n this._handleValueChange();\n this.dispatchEvent(new Event('change', {bubbles: true}));\n }\n\n if (ev.key === 'Enter') {\n this._internals.form?.requestSubmit();\n }\n }\n };\n\n //#endregion\n\n override render(): TemplateResult {\n const iconClasses = classMap({\n icon: true,\n checked: this.checked,\n });\n const labelInnerClasses = classMap({\n 'label-inner': true,\n 'is-slot-empty': this._slottedText === '',\n });\n\n return html`\n <div class=\"wrapper\">\n <input\n ?autofocus=${this.autofocus}\n id=\"input\"\n class=\"radio\"\n type=\"checkbox\"\n ?checked=${this.checked}\n value=${this.value}\n tabindex=${this.tabIndex}\n >\n <div class=${iconClasses}></div>\n <label for=\"input\" class=\"label\" @click=${this._handleClick}>\n <span class=${labelInnerClasses}>\n ${this._renderLabelAttribute()}\n <slot @slotchange=${this._handleSlotChange}></slot>\n </span>\n </label>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'vscode-radio': VscodeRadio;\n }\n}\n"]}
@@ -63,6 +63,8 @@ export declare class VscodeScrollable extends VscElement {
63
63
  private _assignedElements;
64
64
  private _hostResizeObserver;
65
65
  private _contentResizeObserver;
66
+ private _componentHeight;
67
+ private _contentHeight;
66
68
  private _scrollThumbStartY;
67
69
  private _mouseStartY;
68
70
  private _scrollbarVisible;
@@ -1 +1 @@
1
- {"version":3,"file":"vscode-scrollable.d.ts","sourceRoot":"","sources":["../../src/vscode-scrollable/vscode-scrollable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,cAAc,EAAE,cAAc,EAAC,MAAM,KAAK,CAAC;AAGlE,OAAO,EAAgB,UAAU,EAAC,MAAM,2BAA2B,CAAC;AAIpE,MAAM,MAAM,wBAAwB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;AAE3D;;;;;;;GAOG;AACH,qBACa,gBAAiB,SAAQ,UAAU;IAC9C,OAAgB,MAAM,+BAAU;IAEhC;;;OAGG;IAEH,aAAa,UAAS;IAEtB;;;;OAIG;IAEH,qBAAqB,SAAK;IAE1B;;OAEG;IAEH,YAAY,SAAM;IAElB;;;;;OAKG;IAEH,2BAA2B,SAAK;IAEhC;;OAEG;IAEH,MAAM,UAAQ;IAEd;;OAEG;IAEH,QAAQ,UAAS;IAEjB;;OAEG;IACH,IACI,SAAS,CAAC,GAAG,EAAE,MAAM,EAKxB;IACD,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,OAAO,CAAC,UAAU,CAAK;IAEvB;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,CAStB;IAGD,OAAO,CAAC,WAAW,CAAS;IAG5B,OAAO,CAAC,YAAY,CAAK;IAGzB,OAAO,CAAC,OAAO,CAAK;IAGpB,OAAO,CAAC,aAAa,CAAS;IAG9B,OAAO,CAAC,UAAU,CAAS;IAG3B,OAAO,CAAC,YAAY,CAAS;IAG7B,OAAO,CAAC,eAAe,CAAkB;IAGzC,OAAO,CAAC,mBAAmB,CAAkB;IAG7C,OAAO,CAAC,oBAAoB,CAAkB;IAG9C,OAAO,CAAC,iBAAiB,CAAY;IAErC,OAAO,CAAC,mBAAmB,CAAkB;IAC7C,OAAO,CAAC,sBAAsB,CAAkB;IAChD,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,iBAAiB,CAAQ;IACjC,OAAO,CAAC,gBAAgB,CAAK;;IAWpB,iBAAiB,IAAI,IAAI;IAiBzB,oBAAoB,IAAI,IAAI;cASlB,YAAY,CAAC,kBAAkB,EAAE,cAAc,GAAG,IAAI;IAMzE,OAAO,CAAC,uBAAuB,CAG7B;IAEF,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,UAAU;IAqBlB,OAAO,CAAC,oBAAoB;IAkB5B,OAAO,CAAC,+BAA+B;IASvC,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,iBAAiB,CAIvB;IAEF,OAAO,CAAC,2BAA2B;IAanC,OAAO,CAAC,2BAA2B,CAWjC;IAEF,OAAO,CAAC,yBAAyB,CAe/B;IAEF,OAAO,CAAC,yBAAyB,CAG/B;IAEF,OAAO,CAAC,wBAAwB,CAK9B;IAEF,OAAO,CAAC,qBAAqB,CAe3B;IAEF,OAAO,CAAC,0BAA0B;IASlC,OAAO,CAAC,gCAAgC,CAItC;IAIO,MAAM,IAAI,cAAc;CA8ClC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,mBAAmB,EAAE,gBAAgB,CAAC;KACvC;IAED,UAAU,2BAA2B;QACnC,uBAAuB,EAAE,wBAAwB,CAAC;KACnD;CACF"}
1
+ {"version":3,"file":"vscode-scrollable.d.ts","sourceRoot":"","sources":["../../src/vscode-scrollable/vscode-scrollable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,cAAc,EAAE,cAAc,EAAC,MAAM,KAAK,CAAC;AAGlE,OAAO,EAAgB,UAAU,EAAC,MAAM,2BAA2B,CAAC;AAIpE,MAAM,MAAM,wBAAwB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;AAE3D;;;;;;;GAOG;AACH,qBACa,gBAAiB,SAAQ,UAAU;IAC9C,OAAgB,MAAM,+BAAU;IAEhC;;;OAGG;IAEH,aAAa,UAAS;IAEtB;;;;OAIG;IAEH,qBAAqB,SAAK;IAE1B;;OAEG;IAEH,YAAY,SAAM;IAElB;;;;;OAKG;IAEH,2BAA2B,SAAK;IAEhC;;OAEG;IAEH,MAAM,UAAQ;IAEd;;OAEG;IAEH,QAAQ,UAAS;IAEjB;;OAEG;IACH,IACI,SAAS,CAAC,GAAG,EAAE,MAAM,EAKxB;IACD,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,OAAO,CAAC,UAAU,CAAK;IAEvB;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,CAStB;IAGD,OAAO,CAAC,WAAW,CAAS;IAG5B,OAAO,CAAC,YAAY,CAAK;IAGzB,OAAO,CAAC,OAAO,CAAK;IAGpB,OAAO,CAAC,aAAa,CAAS;IAG9B,OAAO,CAAC,UAAU,CAAS;IAG3B,OAAO,CAAC,YAAY,CAAS;IAG7B,OAAO,CAAC,eAAe,CAAkB;IAGzC,OAAO,CAAC,mBAAmB,CAAkB;IAG7C,OAAO,CAAC,oBAAoB,CAAkB;IAG9C,OAAO,CAAC,iBAAiB,CAAY;IAErC,OAAO,CAAC,mBAAmB,CAAkB;IAC7C,OAAO,CAAC,sBAAsB,CAAkB;IAChD,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,iBAAiB,CAAQ;IACjC,OAAO,CAAC,gBAAgB,CAAK;;IAWpB,iBAAiB,IAAI,IAAI;IAiBzB,oBAAoB,IAAI,IAAI;cASlB,YAAY,CAAC,kBAAkB,EAAE,cAAc,GAAG,IAAI;IAMzE,OAAO,CAAC,uBAAuB,CAK7B;IAEF,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,UAAU;IAqBlB,OAAO,CAAC,oBAAoB;IAkB5B,OAAO,CAAC,+BAA+B;IASvC,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,iBAAiB,CAIvB;IAEF,OAAO,CAAC,2BAA2B;IAanC,OAAO,CAAC,2BAA2B,CAWjC;IAEF,OAAO,CAAC,yBAAyB,CAe/B;IAEF,OAAO,CAAC,yBAAyB,CAG/B;IAEF,OAAO,CAAC,wBAAwB,CAK9B;IAEF,OAAO,CAAC,qBAAqB,CAmB3B;IAEF,OAAO,CAAC,0BAA0B;IASlC,OAAO,CAAC,gCAAgC,CAItC;IAIO,MAAM,IAAI,cAAc;CA8ClC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,mBAAmB,EAAE,gBAAgB,CAAC;KACvC;IAED,UAAU,2BAA2B;QACnC,uBAAuB,EAAE,wBAAwB,CAAC;KACnD;CACF"}
@@ -81,12 +81,16 @@ let VscodeScrollable = class VscodeScrollable extends VscElement {
81
81
  this._thumbVisible = false;
82
82
  this._thumbFade = false;
83
83
  this._thumbActive = false;
84
+ this._componentHeight = 0;
85
+ this._contentHeight = 0;
84
86
  this._scrollThumbStartY = 0;
85
87
  this._mouseStartY = 0;
86
88
  this._scrollbarVisible = true;
87
89
  this._scrollbarTrackZ = 0;
88
90
  //#endregion
89
91
  this._resizeObserverCallback = () => {
92
+ this._componentHeight = this.offsetHeight;
93
+ this._contentHeight = this._contentElement.offsetHeight;
90
94
  this._updateScrollbar();
91
95
  this._updateThumbPosition();
92
96
  };
@@ -128,6 +132,9 @@ let VscodeScrollable = class VscodeScrollable extends VscElement {
128
132
  }
129
133
  };
130
134
  this._handleComponentWheel = (ev) => {
135
+ if (this._contentHeight <= this._componentHeight) {
136
+ return;
137
+ }
131
138
  ev.preventDefault();
132
139
  const multiplier = ev.altKey
133
140
  ? this.mouseWheelScrollSensitivity * this.fastScrollSensitivity
@@ -1 +1 @@
1
- {"version":3,"file":"vscode-scrollable.js","sourceRoot":"","sources":["../../src/vscode-scrollable/vscode-scrollable.ts"],"names":[],"mappings":"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","sourcesContent":["import {html, nothing, PropertyValues, TemplateResult} from 'lit';\nimport {property, query, queryAssignedElements, state} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport {customElement, VscElement} from '../includes/VscElement.js';\nimport {stylePropertyMap} from '../includes/style-property-map.js';\nimport styles from './vscode-scrollable.styles.js';\n\nexport type VscScrollableScrollEvent = CustomEvent<number>;\n\n/**\n * @tag vscode-scrollable\n *\n * @cssprop [--vscode-scrollbar-shadow=#000000]\n * @cssprop [--vscode-scrollbarSlider-background=rgba(121, 121, 121, 0.4)]\n * @cssprop [--vscode-scrollbarSlider-hoverBackground=rgba(100, 100, 100, 0.7)]\n * @cssprop [--vscode-scrollbarSlider-activeBackground=rgba(191, 191, 191, 0.4)]\n */\n@customElement('vscode-scrollable')\nexport class VscodeScrollable extends VscElement {\n static override styles = styles;\n\n /**\n * By default, the scrollbar appears only when the cursor hovers over the\n * component. With this option, the scrollbar will always be visible.\n */\n @property({type: Boolean, reflect: true, attribute: 'always-visible'})\n alwaysVisible = false;\n\n /**\n * Scrolling speed multiplier when pressing `Alt`. This property is designed to use the value of\n * `editor.fastScrollSensitivity`, `workbench.list.fastScrollSensitivity` or\n * `terminal.integrated.fastScrollSensitivity` depending on the context.\n */\n @property({type: Number, attribute: 'fast-scroll-sensitivity'})\n fastScrollSensitivity = 5;\n\n /**\n * This setting defines the scrollbar's minimum size when the component contains a large amount of content.\n */\n @property({type: Number, attribute: 'min-thumb-size'})\n minThumbSize = 20;\n\n /**\n * A multiplier to be used on the `deltaY` of the mouse wheel scroll events. This property is\n * designed to use the value of `editor.mouseWheelScrollSensitivity`,\n * `workbench.list.mouseWheelScrollSensitivity` or\n * `terminal.integrated.mouseWheelScrollSensitivity` depending on the context.\n */\n @property({type: Number, attribute: 'mouse-wheel-scroll-sensitivity'})\n mouseWheelScrollSensitivity = 1;\n\n /**\n * Controls shadow visibility when content overflows.\n */\n @property({type: Boolean, reflect: true})\n shadow = true;\n\n /**\n * It's true when `scrollPos` greater than 0\n */\n @property({type: Boolean, reflect: true})\n scrolled = false;\n\n /**\n * Scroll position.\n */\n @property({type: Number, attribute: 'scroll-pos'})\n set scrollPos(val: number) {\n this._scrollPos = this._limitScrollPos(val);\n this._updateScrollbar();\n this._updateThumbPosition();\n this.requestUpdate();\n }\n get scrollPos(): number {\n return this._scrollPos;\n }\n\n private _scrollPos = 0;\n\n /**\n * The maximum amount of the `scrollPos`.\n */\n get scrollMax(): number {\n if (!this._scrollableContainer) {\n return 0;\n }\n\n return (\n this._scrollableContainer.scrollHeight -\n this._scrollableContainer.clientHeight\n );\n }\n\n @state()\n private _isDragging = false;\n\n @state()\n private _thumbHeight = 0;\n\n @state()\n private _thumbY = 0;\n\n @state()\n private _thumbVisible = false;\n\n @state()\n private _thumbFade = false;\n\n @state()\n private _thumbActive = false;\n\n @query('.content')\n private _contentElement!: HTMLDivElement;\n\n @query('.scrollbar-thumb', true)\n private _scrollThumbElement!: HTMLDivElement;\n\n @query('.scrollable-container')\n private _scrollableContainer!: HTMLDivElement;\n\n @queryAssignedElements()\n private _assignedElements!: NodeList;\n\n private _hostResizeObserver!: ResizeObserver;\n private _contentResizeObserver!: ResizeObserver;\n private _scrollThumbStartY = 0;\n private _mouseStartY = 0;\n private _scrollbarVisible = true;\n private _scrollbarTrackZ = 0;\n\n //#region lifecycle methods\n\n constructor() {\n super();\n this.addEventListener('mouseover', this._handleComponentMouseOver);\n this.addEventListener('mouseout', this._handleComponentMouseOut);\n this.addEventListener('wheel', this._handleComponentWheel);\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n this._hostResizeObserver = new ResizeObserver(this._resizeObserverCallback);\n this._contentResizeObserver = new ResizeObserver(\n this._resizeObserverCallback\n );\n\n this.requestUpdate();\n\n this.updateComplete.then(() => {\n this._hostResizeObserver.observe(this);\n this._contentResizeObserver.observe(this._contentElement);\n this._updateThumbPosition();\n });\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n\n this._hostResizeObserver.unobserve(this);\n this._hostResizeObserver.disconnect();\n this._contentResizeObserver.unobserve(this._contentElement);\n this._contentResizeObserver.disconnect();\n }\n\n protected override firstUpdated(_changedProperties: PropertyValues): void {\n this._updateThumbPosition();\n }\n\n //#endregion\n\n private _resizeObserverCallback = () => {\n this._updateScrollbar();\n this._updateThumbPosition();\n };\n\n private _calcThumbHeight() {\n const componentHeight = this.offsetHeight;\n const contentHeight = this._contentElement?.offsetHeight ?? 0;\n const proposedSize = componentHeight * (componentHeight / contentHeight);\n\n return Math.max(this.minThumbSize, proposedSize);\n }\n\n private _updateScrollbar() {\n const contentHeight = this._contentElement?.offsetHeight ?? 0;\n const componentHeight = this.offsetHeight;\n\n if (componentHeight >= contentHeight) {\n this._scrollbarVisible = false;\n } else {\n this._scrollbarVisible = true;\n this._thumbHeight = this._calcThumbHeight();\n }\n\n this.requestUpdate();\n }\n\n private _zIndexFix() {\n let highestZ = 0;\n\n this._assignedElements.forEach((n) => {\n if ('style' in n) {\n const computedZIndex = window.getComputedStyle(n as HTMLElement).zIndex;\n const isNumber = /([0-9-])+/g.test(computedZIndex);\n\n if (isNumber) {\n highestZ =\n Number(computedZIndex) > highestZ\n ? Number(computedZIndex)\n : highestZ;\n }\n }\n });\n\n this._scrollbarTrackZ = highestZ + 1;\n this.requestUpdate();\n }\n\n private _updateThumbPosition() {\n if (!this._scrollableContainer) {\n return;\n }\n\n this.scrolled = this.scrollPos > 0;\n\n const componentH = this.offsetHeight;\n const thumbH = this._thumbHeight;\n const contentH = this._contentElement.offsetHeight;\n\n const overflown = contentH - componentH;\n const ratio = this.scrollPos / overflown;\n const thumbYMax = componentH - thumbH;\n\n this._thumbY = Math.min(ratio * (componentH - thumbH), thumbYMax);\n }\n\n private _calculateScrollPosFromThumbPos(scrollPos: number) {\n const cmpH = this.getBoundingClientRect().height;\n const thumbH = this._scrollThumbElement.getBoundingClientRect().height;\n const contentH = this._contentElement.getBoundingClientRect().height;\n const rawScrollPos = (scrollPos / (cmpH - thumbH)) * (contentH - cmpH);\n\n return this._limitScrollPos(rawScrollPos);\n }\n\n private _limitScrollPos(newPos: number) {\n if (newPos < 0) {\n return 0;\n } else if (newPos > this.scrollMax) {\n return this.scrollMax;\n } else {\n return newPos;\n }\n }\n\n private _limitThumbPos(newPos: number) {\n const cmpH = this.getBoundingClientRect().height;\n const thumbH = this._scrollThumbElement.getBoundingClientRect().height;\n\n if (newPos < 0) {\n return 0;\n } else if (newPos > cmpH - thumbH) {\n return cmpH - thumbH;\n } else {\n return newPos;\n }\n }\n\n //#region event handlers\n private _handleSlotChange = () => {\n this._updateScrollbar();\n this._updateThumbPosition();\n this._zIndexFix();\n };\n\n private _handleScrollThumbMouseDown(event: MouseEvent) {\n const cmpCr = this.getBoundingClientRect();\n const thCr = this._scrollThumbElement.getBoundingClientRect();\n\n this._mouseStartY = event.screenY;\n this._scrollThumbStartY = thCr.top - cmpCr.top;\n this._isDragging = true;\n this._thumbActive = true;\n\n document.addEventListener('mousemove', this._handleScrollThumbMouseMove);\n document.addEventListener('mouseup', this._handleScrollThumbMouseUp);\n }\n\n private _handleScrollThumbMouseMove = (event: MouseEvent) => {\n const rawThumbPos =\n this._scrollThumbStartY + (event.screenY - this._mouseStartY);\n this._thumbY = this._limitThumbPos(rawThumbPos);\n this.scrollPos = this._calculateScrollPosFromThumbPos(this._thumbY);\n\n this.dispatchEvent(\n new CustomEvent('vsc-scrollable-scroll', {\n detail: this.scrollPos,\n })\n );\n };\n\n private _handleScrollThumbMouseUp = (event: MouseEvent) => {\n this._isDragging = false;\n this._thumbActive = false;\n\n const cr = this.getBoundingClientRect();\n const {x, y, width, height} = cr;\n const {pageX, pageY} = event;\n\n if (pageX > x + width || pageX < x || pageY > y + height || pageY < y) {\n this._thumbFade = true;\n this._thumbVisible = false;\n }\n\n document.removeEventListener('mousemove', this._handleScrollThumbMouseMove);\n document.removeEventListener('mouseup', this._handleScrollThumbMouseUp);\n };\n\n private _handleComponentMouseOver = () => {\n this._thumbVisible = true;\n this._thumbFade = false;\n };\n\n private _handleComponentMouseOut = () => {\n if (!this._thumbActive) {\n this._thumbVisible = false;\n this._thumbFade = true;\n }\n };\n\n private _handleComponentWheel = (ev: WheelEvent) => {\n ev.preventDefault();\n\n const multiplier = ev.altKey\n ? this.mouseWheelScrollSensitivity * this.fastScrollSensitivity\n : this.mouseWheelScrollSensitivity;\n\n this.scrollPos = this._limitScrollPos(\n this.scrollPos + ev.deltaY * multiplier\n );\n this.dispatchEvent(\n new CustomEvent('vsc-scrollable-scroll', {\n detail: this.scrollPos,\n })\n );\n };\n\n private _handleScrollbarTrackPress(ev: PointerEvent) {\n if (ev.target !== ev.currentTarget) {\n return;\n }\n\n this._thumbY = ev.offsetY - this._thumbHeight / 2;\n this.scrollPos = this._calculateScrollPosFromThumbPos(this._thumbY);\n }\n\n private _handleScrollableContainerScroll = (ev: Event) => {\n if (ev.currentTarget) {\n this.scrollPos = (ev.currentTarget as HTMLDivElement).scrollTop;\n }\n };\n\n //#endregion\n\n override render(): TemplateResult {\n return html`\n <div\n class=\"scrollable-container\"\n .style=${stylePropertyMap({\n userSelect: this._isDragging ? 'none' : 'auto',\n })}\n .scrollTop=${this.scrollPos}\n @scroll=${this._handleScrollableContainerScroll}\n >\n <div\n class=${classMap({shadow: true, visible: this.scrolled})}\n .style=${stylePropertyMap({\n zIndex: String(this._scrollbarTrackZ),\n })}\n ></div>\n ${this._isDragging\n ? html`<div class=\"prevent-interaction\"></div>`\n : nothing}\n <div\n class=${classMap({\n 'scrollbar-track': true,\n hidden: !this._scrollbarVisible,\n })}\n @mousedown=${this._handleScrollbarTrackPress}\n >\n <div\n class=${classMap({\n 'scrollbar-thumb': true,\n visible: this.alwaysVisible ? true : this._thumbVisible,\n fade: this.alwaysVisible ? false : this._thumbFade,\n active: this._thumbActive,\n })}\n .style=${stylePropertyMap({\n height: `${this._thumbHeight}px`,\n top: `${this._thumbY}px`,\n })}\n @mousedown=${this._handleScrollThumbMouseDown}\n ></div>\n </div>\n <div class=\"content\">\n <slot @slotchange=${this._handleSlotChange}></slot>\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'vscode-scrollable': VscodeScrollable;\n }\n\n interface GlobalEventHandlersEventMap {\n 'vsc-scrollable-scroll': VscScrollableScrollEvent;\n }\n}\n"]}
1
+ {"version":3,"file":"vscode-scrollable.js","sourceRoot":"","sources":["../../src/vscode-scrollable/vscode-scrollable.ts"],"names":[],"mappings":"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","sourcesContent":["import {html, nothing, PropertyValues, TemplateResult} from 'lit';\nimport {property, query, queryAssignedElements, state} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport {customElement, VscElement} from '../includes/VscElement.js';\nimport {stylePropertyMap} from '../includes/style-property-map.js';\nimport styles from './vscode-scrollable.styles.js';\n\nexport type VscScrollableScrollEvent = CustomEvent<number>;\n\n/**\n * @tag vscode-scrollable\n *\n * @cssprop [--vscode-scrollbar-shadow=#000000]\n * @cssprop [--vscode-scrollbarSlider-background=rgba(121, 121, 121, 0.4)]\n * @cssprop [--vscode-scrollbarSlider-hoverBackground=rgba(100, 100, 100, 0.7)]\n * @cssprop [--vscode-scrollbarSlider-activeBackground=rgba(191, 191, 191, 0.4)]\n */\n@customElement('vscode-scrollable')\nexport class VscodeScrollable extends VscElement {\n static override styles = styles;\n\n /**\n * By default, the scrollbar appears only when the cursor hovers over the\n * component. With this option, the scrollbar will always be visible.\n */\n @property({type: Boolean, reflect: true, attribute: 'always-visible'})\n alwaysVisible = false;\n\n /**\n * Scrolling speed multiplier when pressing `Alt`. This property is designed to use the value of\n * `editor.fastScrollSensitivity`, `workbench.list.fastScrollSensitivity` or\n * `terminal.integrated.fastScrollSensitivity` depending on the context.\n */\n @property({type: Number, attribute: 'fast-scroll-sensitivity'})\n fastScrollSensitivity = 5;\n\n /**\n * This setting defines the scrollbar's minimum size when the component contains a large amount of content.\n */\n @property({type: Number, attribute: 'min-thumb-size'})\n minThumbSize = 20;\n\n /**\n * A multiplier to be used on the `deltaY` of the mouse wheel scroll events. This property is\n * designed to use the value of `editor.mouseWheelScrollSensitivity`,\n * `workbench.list.mouseWheelScrollSensitivity` or\n * `terminal.integrated.mouseWheelScrollSensitivity` depending on the context.\n */\n @property({type: Number, attribute: 'mouse-wheel-scroll-sensitivity'})\n mouseWheelScrollSensitivity = 1;\n\n /**\n * Controls shadow visibility when content overflows.\n */\n @property({type: Boolean, reflect: true})\n shadow = true;\n\n /**\n * It's true when `scrollPos` greater than 0\n */\n @property({type: Boolean, reflect: true})\n scrolled = false;\n\n /**\n * Scroll position.\n */\n @property({type: Number, attribute: 'scroll-pos'})\n set scrollPos(val: number) {\n this._scrollPos = this._limitScrollPos(val);\n this._updateScrollbar();\n this._updateThumbPosition();\n this.requestUpdate();\n }\n get scrollPos(): number {\n return this._scrollPos;\n }\n\n private _scrollPos = 0;\n\n /**\n * The maximum amount of the `scrollPos`.\n */\n get scrollMax(): number {\n if (!this._scrollableContainer) {\n return 0;\n }\n\n return (\n this._scrollableContainer.scrollHeight -\n this._scrollableContainer.clientHeight\n );\n }\n\n @state()\n private _isDragging = false;\n\n @state()\n private _thumbHeight = 0;\n\n @state()\n private _thumbY = 0;\n\n @state()\n private _thumbVisible = false;\n\n @state()\n private _thumbFade = false;\n\n @state()\n private _thumbActive = false;\n\n @query('.content')\n private _contentElement!: HTMLDivElement;\n\n @query('.scrollbar-thumb', true)\n private _scrollThumbElement!: HTMLDivElement;\n\n @query('.scrollable-container')\n private _scrollableContainer!: HTMLDivElement;\n\n @queryAssignedElements()\n private _assignedElements!: NodeList;\n\n private _hostResizeObserver!: ResizeObserver;\n private _contentResizeObserver!: ResizeObserver;\n private _componentHeight = 0;\n private _contentHeight = 0;\n private _scrollThumbStartY = 0;\n private _mouseStartY = 0;\n private _scrollbarVisible = true;\n private _scrollbarTrackZ = 0;\n\n //#region lifecycle methods\n\n constructor() {\n super();\n this.addEventListener('mouseover', this._handleComponentMouseOver);\n this.addEventListener('mouseout', this._handleComponentMouseOut);\n this.addEventListener('wheel', this._handleComponentWheel);\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n this._hostResizeObserver = new ResizeObserver(this._resizeObserverCallback);\n this._contentResizeObserver = new ResizeObserver(\n this._resizeObserverCallback\n );\n\n this.requestUpdate();\n\n this.updateComplete.then(() => {\n this._hostResizeObserver.observe(this);\n this._contentResizeObserver.observe(this._contentElement);\n this._updateThumbPosition();\n });\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n\n this._hostResizeObserver.unobserve(this);\n this._hostResizeObserver.disconnect();\n this._contentResizeObserver.unobserve(this._contentElement);\n this._contentResizeObserver.disconnect();\n }\n\n protected override firstUpdated(_changedProperties: PropertyValues): void {\n this._updateThumbPosition();\n }\n\n //#endregion\n\n private _resizeObserverCallback = () => {\n this._componentHeight = this.offsetHeight;\n this._contentHeight = this._contentElement.offsetHeight;\n this._updateScrollbar();\n this._updateThumbPosition();\n };\n\n private _calcThumbHeight() {\n const componentHeight = this.offsetHeight;\n const contentHeight = this._contentElement?.offsetHeight ?? 0;\n const proposedSize = componentHeight * (componentHeight / contentHeight);\n\n return Math.max(this.minThumbSize, proposedSize);\n }\n\n private _updateScrollbar() {\n const contentHeight = this._contentElement?.offsetHeight ?? 0;\n const componentHeight = this.offsetHeight;\n\n if (componentHeight >= contentHeight) {\n this._scrollbarVisible = false;\n } else {\n this._scrollbarVisible = true;\n this._thumbHeight = this._calcThumbHeight();\n }\n\n this.requestUpdate();\n }\n\n private _zIndexFix() {\n let highestZ = 0;\n\n this._assignedElements.forEach((n) => {\n if ('style' in n) {\n const computedZIndex = window.getComputedStyle(n as HTMLElement).zIndex;\n const isNumber = /([0-9-])+/g.test(computedZIndex);\n\n if (isNumber) {\n highestZ =\n Number(computedZIndex) > highestZ\n ? Number(computedZIndex)\n : highestZ;\n }\n }\n });\n\n this._scrollbarTrackZ = highestZ + 1;\n this.requestUpdate();\n }\n\n private _updateThumbPosition() {\n if (!this._scrollableContainer) {\n return;\n }\n\n this.scrolled = this.scrollPos > 0;\n\n const componentH = this.offsetHeight;\n const thumbH = this._thumbHeight;\n const contentH = this._contentElement.offsetHeight;\n\n const overflown = contentH - componentH;\n const ratio = this.scrollPos / overflown;\n const thumbYMax = componentH - thumbH;\n\n this._thumbY = Math.min(ratio * (componentH - thumbH), thumbYMax);\n }\n\n private _calculateScrollPosFromThumbPos(scrollPos: number) {\n const cmpH = this.getBoundingClientRect().height;\n const thumbH = this._scrollThumbElement.getBoundingClientRect().height;\n const contentH = this._contentElement.getBoundingClientRect().height;\n const rawScrollPos = (scrollPos / (cmpH - thumbH)) * (contentH - cmpH);\n\n return this._limitScrollPos(rawScrollPos);\n }\n\n private _limitScrollPos(newPos: number) {\n if (newPos < 0) {\n return 0;\n } else if (newPos > this.scrollMax) {\n return this.scrollMax;\n } else {\n return newPos;\n }\n }\n\n private _limitThumbPos(newPos: number) {\n const cmpH = this.getBoundingClientRect().height;\n const thumbH = this._scrollThumbElement.getBoundingClientRect().height;\n\n if (newPos < 0) {\n return 0;\n } else if (newPos > cmpH - thumbH) {\n return cmpH - thumbH;\n } else {\n return newPos;\n }\n }\n\n //#region event handlers\n private _handleSlotChange = () => {\n this._updateScrollbar();\n this._updateThumbPosition();\n this._zIndexFix();\n };\n\n private _handleScrollThumbMouseDown(event: MouseEvent) {\n const cmpCr = this.getBoundingClientRect();\n const thCr = this._scrollThumbElement.getBoundingClientRect();\n\n this._mouseStartY = event.screenY;\n this._scrollThumbStartY = thCr.top - cmpCr.top;\n this._isDragging = true;\n this._thumbActive = true;\n\n document.addEventListener('mousemove', this._handleScrollThumbMouseMove);\n document.addEventListener('mouseup', this._handleScrollThumbMouseUp);\n }\n\n private _handleScrollThumbMouseMove = (event: MouseEvent) => {\n const rawThumbPos =\n this._scrollThumbStartY + (event.screenY - this._mouseStartY);\n this._thumbY = this._limitThumbPos(rawThumbPos);\n this.scrollPos = this._calculateScrollPosFromThumbPos(this._thumbY);\n\n this.dispatchEvent(\n new CustomEvent('vsc-scrollable-scroll', {\n detail: this.scrollPos,\n })\n );\n };\n\n private _handleScrollThumbMouseUp = (event: MouseEvent) => {\n this._isDragging = false;\n this._thumbActive = false;\n\n const cr = this.getBoundingClientRect();\n const {x, y, width, height} = cr;\n const {pageX, pageY} = event;\n\n if (pageX > x + width || pageX < x || pageY > y + height || pageY < y) {\n this._thumbFade = true;\n this._thumbVisible = false;\n }\n\n document.removeEventListener('mousemove', this._handleScrollThumbMouseMove);\n document.removeEventListener('mouseup', this._handleScrollThumbMouseUp);\n };\n\n private _handleComponentMouseOver = () => {\n this._thumbVisible = true;\n this._thumbFade = false;\n };\n\n private _handleComponentMouseOut = () => {\n if (!this._thumbActive) {\n this._thumbVisible = false;\n this._thumbFade = true;\n }\n };\n\n private _handleComponentWheel = (ev: WheelEvent) => {\n if (this._contentHeight <= this._componentHeight) {\n return;\n }\n\n ev.preventDefault();\n\n const multiplier = ev.altKey\n ? this.mouseWheelScrollSensitivity * this.fastScrollSensitivity\n : this.mouseWheelScrollSensitivity;\n\n this.scrollPos = this._limitScrollPos(\n this.scrollPos + ev.deltaY * multiplier\n );\n this.dispatchEvent(\n new CustomEvent('vsc-scrollable-scroll', {\n detail: this.scrollPos,\n })\n );\n };\n\n private _handleScrollbarTrackPress(ev: PointerEvent) {\n if (ev.target !== ev.currentTarget) {\n return;\n }\n\n this._thumbY = ev.offsetY - this._thumbHeight / 2;\n this.scrollPos = this._calculateScrollPosFromThumbPos(this._thumbY);\n }\n\n private _handleScrollableContainerScroll = (ev: Event) => {\n if (ev.currentTarget) {\n this.scrollPos = (ev.currentTarget as HTMLDivElement).scrollTop;\n }\n };\n\n //#endregion\n\n override render(): TemplateResult {\n return html`\n <div\n class=\"scrollable-container\"\n .style=${stylePropertyMap({\n userSelect: this._isDragging ? 'none' : 'auto',\n })}\n .scrollTop=${this.scrollPos}\n @scroll=${this._handleScrollableContainerScroll}\n >\n <div\n class=${classMap({shadow: true, visible: this.scrolled})}\n .style=${stylePropertyMap({\n zIndex: String(this._scrollbarTrackZ),\n })}\n ></div>\n ${this._isDragging\n ? html`<div class=\"prevent-interaction\"></div>`\n : nothing}\n <div\n class=${classMap({\n 'scrollbar-track': true,\n hidden: !this._scrollbarVisible,\n })}\n @mousedown=${this._handleScrollbarTrackPress}\n >\n <div\n class=${classMap({\n 'scrollbar-thumb': true,\n visible: this.alwaysVisible ? true : this._thumbVisible,\n fade: this.alwaysVisible ? false : this._thumbFade,\n active: this._thumbActive,\n })}\n .style=${stylePropertyMap({\n height: `${this._thumbHeight}px`,\n top: `${this._thumbY}px`,\n })}\n @mousedown=${this._handleScrollThumbMouseDown}\n ></div>\n </div>\n <div class=\"content\">\n <slot @slotchange=${this._handleSlotChange}></slot>\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'vscode-scrollable': VscodeScrollable;\n }\n\n interface GlobalEventHandlersEventMap {\n 'vsc-scrollable-scroll': VscScrollableScrollEvent;\n }\n}\n"]}
@@ -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;IAQ1B,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,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"}
@@ -232,7 +232,7 @@ let VscodeTreeItem = class VscodeTreeItem extends VscElement {
232
232
  }
233
233
  _handleContentClick(ev) {
234
234
  ev.stopPropagation();
235
- const isCtrlDown = ev.ctrlKey;
235
+ const isCtrlDown = ev.ctrlKey || ev.metaKey;
236
236
  const isShiftDown = ev.shiftKey;
237
237
  if (isShiftDown && this._configContext.multiSelect) {
238
238
  this._selectRange();
@@ -260,7 +260,8 @@ let VscodeTreeItem = class VscodeTreeItem extends VscElement {
260
260
  }
261
261
  _handleDoubleClick(ev) {
262
262
  if (this._configContext.expandMode === ExpandMode.doubleClick) {
263
- if (this.branch && !(this._configContext.multiSelect && ev.ctrlKey)) {
263
+ if (this.branch &&
264
+ !(this._configContext.multiSelect && (ev.ctrlKey || ev.metaKey))) {
264
265
  this.open = !this.open;
265
266
  }
266
267
  }
@@ -1 +1 @@
1
- {"version":3,"file":"vscode-tree-item.js","sourceRoot":"","sources":["../../src/vscode-tree-item/vscode-tree-item.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAiC,IAAI,EAAE,OAAO,EAAC,MAAM,KAAK,CAAC;AAClE,OAAO,EAAC,OAAO,EAAC,MAAM,cAAc,CAAC;AACrC,OAAO,EAAC,QAAQ,EAAE,qBAAqB,EAAE,KAAK,EAAC,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAC,QAAQ,EAAC,MAAM,6BAA6B,CAAC;AACrD,OAAO,EAAC,aAAa,EAAE,UAAU,EAAC,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAC,gBAAgB,EAAC,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAEL,aAAa,EACb,WAAW,GAEZ,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAC,oBAAoB,EAAC,MAAM,2BAA2B,CAAC;AAC/D,OAAO,MAAM,MAAM,8BAA8B,CAAC;AAClD,OAAO,EAAC,UAAU,EAAE,YAAY,EAAC,MAAM,+BAA+B,CAAC;AAEvE,MAAM,WAAW,GAAG,CAAC,CAAC;AACtB,MAAM,qBAAqB,GAAG,EAAE,CAAC;AAEjC,MAAM,SAAS,GAAG,IAAI,CAAA;;;;;;;;;;;OAWf,CAAC;AAER,SAAS,aAAa,CAAC,SAAyB;IAC9C,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,CAAC,SAAS,CAAC,aAAa,YAAY,cAAc,CAAC,EAAE,CAAC;QACzD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,SAAS,CAAC,aAAa,CAAC;AACjC,CAAC;AAGM,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQ,UAAU;IA4B5C,IAAI,QAAQ,CAAC,QAAiB;QAC5B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAClD,CAAC;IACD,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAGD,IAAI,IAAI,CAAC,OAAiB;QACxB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;IACvB,CAAC;IACD,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAwCD,YAAY;IAEZ,2BAA2B;IAE3B;QACE,KAAK,EAAE,CAAC;QArFV,oBAAoB;QAGpB,WAAM,GAAG,KAAK,CAAC;QAGf,WAAM,GAAG,KAAK,CAAC;QAGf,kBAAa,GAAG,KAAK,CAAC;QAGtB,oBAAe,GAAG,KAAK,CAAC;QAExB,gBAAgB;QAEhB,sBAAiB,GAAG,KAAK,CAAC;QAG1B,SAAI,GAAG,KAAK,CAAC;QAGb,UAAK,GAAG,CAAC,CAAC;QAWF,cAAS,GAAG,KAAK,CAAC;QAS1B,YAAY;QAEZ,2BAA2B;QAEnB,UAAK,GAAa,EAAE,CAAC;QAIrB,mBAAc,GAAG,KAAK,CAAC;QAGvB,yBAAoB,GAAG,KAAK,CAAC;QAG7B,iBAAY,GAAG,KAAK,CAAC;QAGrB,sBAAiB,GAAgB;YACvC,cAAc,EAAE,KAAK;YACrB,aAAa,EAAE,IAAI,GAAG,EAAE;YACxB,QAAQ,EAAE,IAAI;YACd,gBAAgB,EAAE,KAAK;YACvB,WAAW,EAAE,IAAI;YACjB,eAAe,EAAE,IAAI;YACrB,aAAa,EAAE,KAAK;YACpB,WAAW,EAAE,IAAI;YACjB,UAAU,EAAE,IAAI;SACjB,CAAC;QAwLM,0BAAqB,GAAG,GAAG,EAAE;YACnC,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAClD,CAAC,CAAC;QAEM,0BAAqB,GAAG,GAAG,EAAE;YACnC,IACE,IAAI,CAAC,iBAAiB,CAAC,WAAW;gBAClC,IAAI,CAAC,iBAAiB,CAAC,WAAW,KAAK,IAAI,EAC3C,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC;oBAC3C,IAAI,CAAC,iBAAiB,CAAC,eAAe;wBACpC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC;gBACvC,CAAC;gBAED,IAAI,CAAC,iBAAiB,CAAC,WAAW,GAAG,IAAI,CAAC;YAC5C,CAAC;YAED,IAAI,CAAC,iBAAiB,CAAC,WAAW,GAAG,IAAI,CAAC;QAC5C,CAAC,CAAC;QAzLA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACzC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAC7D,CAAC;IAEQ,iBAAiB;QACxB,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;IAC9B,CAAC;IAEkB,UAAU,CAAC,iBAAiC;QAC7D,IAAI,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC5B,CAAC;QAED,IAAI,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrE,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,YAAY;IAEZ,yBAAyB;IAEjB,gBAAgB;QACtB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QACnD,CAAC;IACH,CAAC;IAEO,6BAA6B,CACnC,SAAyB,EACzB,KAAc;QAEd,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;QAExC,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,aAAa,GAAG,KAAK,CAAC;QAC/B,CAAC;IACH,CAAC;IAEO,kBAAkB;QACxB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,CAAC;gBACtC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC;gBACjD,IAAI,CAAC,6BAA6B,CAChC,IAAI,CAAC,iBAAiB,CAAC,UAAU,EACjC,KAAK,CACN,CAAC;YACJ,CAAC;YAED,IAAI,CAAC,iBAAiB,CAAC,UAAU,GAAG,IAAI,CAAC;YACzC,IAAI,CAAC,6BAA6B,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC/C,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;YAClB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,IAAI,IAAI,CAAC,iBAAiB,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;gBAC/C,IAAI,CAAC,iBAAiB,CAAC,UAAU,GAAG,IAAI,CAAC;gBACzC,IAAI,CAAC,6BAA6B,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAClD,CAAC;YAED,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;YACnB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAEO,WAAW,CAAC,UAAmB;QACrC,MAAM,EAAC,aAAa,EAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAC/C,MAAM,EAAC,WAAW,EAAC,GAAG,IAAI,CAAC,cAAc,CAAC;QAE1C,IAAI,WAAW,IAAI,UAAU,EAAE,CAAC;YAC9B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACtB,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACrB,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;aAAM,CAAC;YACN,aAAa,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC;YACrD,aAAa,CAAC,KAAK,EAAE,CAAC;YACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAEO,YAAY;QAClB,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC;QAE3D,IAAI,CAAC,WAAW,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACzC,OAAO;QACT,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,CAAC;YAC7C,IAAI,CAAC,iBAAiB,CAAC,QAAQ;gBAC7B,IAAI,CAAC,iBAAiB,CAAC,WAAY,CAAC,gBAAgB,CAClD,kBAAkB,CACnB,CAAC;YAEJ,IAAI,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC;gBACpC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;oBAChD,EAAE,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAClC,CAAC,CAAC,CAAC;YACL,CAAC;YAED,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,GAAG,IAAI,CAAC;QACjD,CAAC;QAED,IAAI,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9C,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;QAErC,IAAI,IAAI,GAAG,EAAE,EAAE,CAAC;YACd,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAC1B,CAAC;QAED,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC;QAC5E,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAE7C,IAAI,CAAC,oCAAoC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACtD,CAAC;IAEO,oCAAoC,CAAC,IAAY,EAAE,EAAU;QACnE,IAAI,CAAC,GAAG,IAAI,CAAC;QAEb,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YACf,IAAI,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC;gBACpC,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAEhD,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;oBAC9B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;oBACrB,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC;oBACrE,CAAC,IAAI,WAAW,CAAC;gBACnB,CAAC;qBAAM,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBACpC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;oBACrB,CAAC,IAAI,IAAI,CAAC,oCAAoC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC5D,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;oBACrB,CAAC,IAAI,CAAC,CAAC;gBACT,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,CAAC,CAAC;IACX,CAAC;IAEO,eAAe;QACrB,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YAC9C,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,YAAY;IAEZ,wBAAwB;IAEhB,yBAAyB;QAC/B,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAEpD,IAAI,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC;YACvC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,uBAAuB,EAAE,CAAC;QAC/D,CAAC;IACH,CAAC;IAuBO,mBAAmB,CAAC,EAAc;QACxC,EAAE,CAAC,eAAe,EAAE,CAAC;QAErB,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC;QAC9B,MAAM,WAAW,GAAG,EAAE,CAAC,QAAQ,CAAC;QAEhC,IAAI,WAAW,IAAI,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;YACnD,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,iBAAiB,CAAC,eAAe,EAAE,EAAE,CAAC;YAE3C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE;gBAC5B,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,EAAE,CAAC;YACnD,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YAC7B,IAAI,CAAC,iBAAiB,CAAC,eAAe,EAAE,EAAE,CAAC;YAC3C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE;gBAC5B,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,EAAE,CAAC;YACnD,CAAC,CAAC,CAAC;YAEH,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,KAAK,UAAU,CAAC,WAAW,EAAE,CAAC;gBAC9D,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,IAAI,UAAU,CAAC,EAAE,CAAC;oBACpE,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;gBACzB,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QAEnB,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,IAAI,CAAC,iBAAiB,CAAC,eAAe,GAAG,IAAI,CAAC;QAChD,CAAC;IACH,CAAC;IAEO,kBAAkB,CAAC,EAAc;QACvC,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,KAAK,UAAU,CAAC,WAAW,EAAE,CAAC;YAC9D,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;gBACpE,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YACzB,CAAC;QACH,CAAC;IACH,CAAC;IAEO,qBAAqB,CAAC,EAAS;QACrC,MAAM,IAAI,GAAG,EAAE,CAAC,MAAyB,CAAC;QAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;QAEtD,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,aAAa;gBAChB,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC;gBACjC,MAAM;YACR,KAAK,oBAAoB;gBACvB,IAAI,CAAC,oBAAoB,GAAG,UAAU,CAAC;gBACvC,MAAM;YACR,KAAK,WAAW;gBACd,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC;gBAC/B,MAAM;YACR,QAAQ;QACV,CAAC;IACH,CAAC;IAED,YAAY;IAEH,MAAM;QACb,MAAM,EAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAC,GAAG,IAAI,CAAC,cAAc,CAAC;QAC/D,MAAM,EAAC,aAAa,EAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAC/C,IAAI,WAAW,GAAG,WAAW,GAAG,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;QACpD,MAAM,WAAW,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,YAAY,GAAG,WAAW,GAAG,IAAI,CAAC,KAAK,GAAG,MAAM,GAAG,WAAW,CAAC;QAErE,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,UAAU,IAAI,aAAa,EAAE,CAAC;YACjD,WAAW,IAAI,qBAAqB,CAAC;QACvC,CAAC;QAED,MAAM,cAAc,GAClB,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,MAAM,CAAC;YACpC,CAAC,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC;YACvD,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEtC,MAAM,cAAc,GAAG;YACrB,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC;QAEF,MAAM,eAAe,GAAG;YACtB,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,YAAY,KAAK,YAAY,CAAC,IAAI;YACzC,eAAe,EAAE,YAAY,KAAK,YAAY,CAAC,IAAI;YACnD,mBAAmB,EAAE,IAAI,CAAC,iBAAiB;SAC5C,CAAC;QAEF,MAAM,oBAAoB,GAAG;YAC3B,gBAAgB,EAAE,IAAI;YACtB,UAAU,EAAE,cAAc;SAC3B,CAAC;QAEF,OAAO,IAAI,CAAA;;gBAEC,QAAQ,CAAC,cAAc,CAAC;iBACvB,IAAI,CAAC,mBAAmB;oBACrB,IAAI,CAAC,kBAAkB;iBAC1B,gBAAgB,CAAC,EAAC,WAAW,EAAE,GAAG,WAAW,IAAI,EAAC,CAAC;;UAE1D,IAAI,CAAC,MAAM,IAAI,CAAC,UAAU;YAC1B,CAAC,CAAC,IAAI,CAAA;sBACM,QAAQ,CAAC;gBACf,iBAAiB,EAAE,IAAI;gBACvB,cAAc,EAAE,IAAI,CAAC,IAAI;aAC1B,CAAC;;gBAEA,SAAS;mBACN;YACT,CAAC,CAAC,OAAO;qBACE,QAAQ,CAAC,oBAAoB,CAAC;YACvC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI;YACzB,CAAC,CAAC,IAAI,CAAA;;8BAEY,IAAI,CAAC,qBAAqB;uBACjC;YACX,CAAC,CAAC,OAAO;YACT,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI;YACxB,CAAC,CAAC,IAAI,CAAA;;8BAEY,IAAI,CAAC,qBAAqB;uBACjC;YACX,CAAC,CAAC,OAAO;YACT,CAAC,IAAI,CAAC,MAAM;YACZ,CAAC,CAAC,IAAI,CAAA;;8BAEY,IAAI,CAAC,qBAAqB;uBACjC;YACX,CAAC,CAAC,OAAO;;;8BAGS,IAAI,CAAC,qBAAqB;;;;gBAIxC,QAAQ,CAAC,eAAe,CAAC;iBACxB,gBAAgB,CAAC;YACxB,0BAA0B,EAAE,GAAG,YAAY,IAAI;SAChD,CAAC;;;;;;wBAMc,IAAI,CAAC,yBAAyB;;;WAG3C,CAAC;IACV,CAAC;;AA1ae,qBAAM,GAAG,MAAM,AAAT,CAAU;AAKhC;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAC,CAAC;8CACX;AAGf;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;8CAC1B;AAGf;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAC,CAAC;qDACJ;AAGtB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAC,CAAC;uDACF;AAIxB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAC,CAAC;yDACA;AAG1B;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;4CAC5B;AAGb;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;6CAC9B;AAGV;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;8CAKxC;AAqBO;IADP,KAAK,EAAE;sDACuB;AAGvB;IADP,KAAK,EAAE;4DAC6B;AAG7B;IADP,KAAK,EAAE;oDACqB;AAGrB;IADP,OAAO,CAAC,EAAC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAC,CAAC;yDAW/C;AAGM;IADP,OAAO,CAAC,EAAC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,IAAI,EAAC,CAAC;sDACZ;AAG/B;IADP,qBAAqB,CAAC,EAAC,QAAQ,EAAE,kBAAkB,EAAC,CAAC;mEACC;AAG/C;IADP,qBAAqB,CAAC,EAAC,QAAQ,EAAE,kBAAkB,EAAE,IAAI,EAAE,UAAU,EAAC,CAAC;0DAC1B;AAjFnC,cAAc;IAD1B,aAAa,CAAC,kBAAkB,CAAC;GACrB,cAAc,CA4a1B","sourcesContent":["import {PropertyValues, TemplateResult, html, nothing} from 'lit';\nimport {consume} from '@lit/context';\nimport {property, queryAssignedElements, state} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport {customElement, VscElement} from '../includes/VscElement';\nimport {stylePropertyMap} from '../includes/style-property-map';\nimport {\n ConfigContext,\n configContext,\n treeContext,\n type TreeContext,\n} from '../vscode-tree/tree-context';\nimport {initPathTrackerProps} from '../vscode-tree/helpers.js';\nimport styles from './vscode-tree-item.styles.js';\nimport {ExpandMode, IndentGuides} from '../vscode-tree/vscode-tree.js';\n\nconst BASE_INDENT = 3;\nconst ARROW_CONTAINER_WIDTH = 30;\n\nconst arrowIcon = html`<svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n>\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M10.072 8.024L5.715 3.667l.618-.62L11 7.716v.618L6.333 13l-.618-.619 4.357-4.357z\"\n />\n</svg>`;\n\nfunction getParentItem(childItem: VscodeTreeItem) {\n if (!childItem.parentElement) {\n return null;\n }\n\n if (!(childItem.parentElement instanceof VscodeTreeItem)) {\n return null;\n }\n\n return childItem.parentElement;\n}\n\n@customElement('vscode-tree-item')\nexport class VscodeTreeItem extends VscElement {\n static override styles = styles;\n\n //#region properties\n\n @property({type: Boolean})\n active = false;\n\n @property({type: Boolean, reflect: true})\n branch = false;\n\n @property({type: Boolean})\n hasActiveItem = false;\n\n @property({type: Boolean})\n hasSelectedItem = false;\n\n /** @internal */\n @property({type: Boolean})\n highlightedGuides = false;\n\n @property({type: Boolean, reflect: true})\n open = false;\n\n @property({type: Number, reflect: true})\n level = 0;\n\n @property({type: Boolean, reflect: true})\n set selected(selected: boolean) {\n this._selected = selected;\n this._treeContextState.selectedItems.add(this);\n this.ariaSelected = selected ? 'true' : 'false';\n }\n get selected(): boolean {\n return this._selected;\n }\n private _selected = false;\n\n set path(newPath: number[]) {\n this._path = newPath;\n }\n get path(): number[] {\n return this._path;\n }\n\n //#endregion\n\n //#region private variables\n\n private _path: number[] = [];\n private _internals: ElementInternals;\n\n @state()\n private _hasBranchIcon = false;\n\n @state()\n private _hasBranchOpenedIcon = false;\n\n @state()\n private _hasLeafIcon = false;\n\n @consume({context: treeContext, subscribe: true})\n private _treeContextState: TreeContext = {\n isShiftPressed: false,\n selectedItems: new Set(),\n allItems: null,\n itemListUpToDate: false,\n focusedItem: null,\n prevFocusedItem: null,\n hasBranchItem: false,\n rootElement: null,\n activeItem: null,\n };\n\n @consume({context: configContext, subscribe: true})\n private _configContext!: ConfigContext;\n\n @queryAssignedElements({selector: 'vscode-tree-item'})\n private _initiallyAssignedTreeItems!: VscodeTreeItem[];\n\n @queryAssignedElements({selector: 'vscode-tree-item', slot: 'children'})\n private _childrenTreeItems!: VscodeTreeItem[];\n\n //#endregion\n\n //#region lifecycle methods\n\n constructor() {\n super();\n\n this._internals = this.attachInternals();\n this.addEventListener('focus', this._handleComponentFocus);\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n this._mainSlotChange();\n this.role = 'treeitem';\n this.ariaDisabled = 'false';\n }\n\n protected override willUpdate(changedProperties: PropertyValues): void {\n if (changedProperties.has('active')) {\n this._toggleActiveState();\n }\n\n if (changedProperties.has('open') || changedProperties.has('branch')) {\n this._setAriaExpanded();\n }\n }\n\n //#endregion\n\n //#region private methods\n\n private _setAriaExpanded() {\n if (!this.branch) {\n this.ariaExpanded = null;\n } else {\n this.ariaExpanded = this.open ? 'true' : 'false';\n }\n }\n\n private _setHasActiveItemFlagOnParent(\n childItem: VscodeTreeItem,\n value: boolean\n ) {\n const parent = getParentItem(childItem);\n\n if (parent) {\n parent.hasActiveItem = value;\n }\n }\n\n private _toggleActiveState() {\n if (this.active) {\n if (this._treeContextState.activeItem) {\n this._treeContextState.activeItem.active = false;\n this._setHasActiveItemFlagOnParent(\n this._treeContextState.activeItem,\n false\n );\n }\n\n this._treeContextState.activeItem = this;\n this._setHasActiveItemFlagOnParent(this, true);\n this.tabIndex = 0;\n this._internals.states.add('active');\n } else {\n if (this._treeContextState.activeItem === this) {\n this._treeContextState.activeItem = null;\n this._setHasActiveItemFlagOnParent(this, false);\n }\n\n this.tabIndex = -1;\n this._internals.states.delete('active');\n }\n }\n\n private _selectItem(isCtrlDown: boolean) {\n const {selectedItems} = this._treeContextState;\n const {multiSelect} = this._configContext;\n\n if (multiSelect && isCtrlDown) {\n if (this.selected) {\n this.selected = false;\n selectedItems.delete(this);\n } else {\n this.selected = true;\n selectedItems.add(this);\n }\n } else {\n selectedItems.forEach((li) => (li.selected = false));\n selectedItems.clear();\n this.selected = true;\n selectedItems.add(this);\n }\n }\n\n private _selectRange() {\n const prevFocused = this._treeContextState.prevFocusedItem;\n\n if (!prevFocused || prevFocused === this) {\n return;\n }\n\n if (!this._treeContextState.itemListUpToDate) {\n this._treeContextState.allItems =\n this._treeContextState.rootElement!.querySelectorAll(\n 'vscode-tree-item'\n );\n\n if (this._treeContextState.allItems) {\n this._treeContextState.allItems.forEach((li, i) => {\n li.dataset.score = i.toString();\n });\n }\n\n this._treeContextState.itemListUpToDate = true;\n }\n\n let from = +(prevFocused.dataset.score ?? -1);\n let to = +(this.dataset.score ?? -1);\n\n if (from > to) {\n [from, to] = [to, from];\n }\n\n this._treeContextState.selectedItems.forEach((li) => (li.selected = false));\n this._treeContextState.selectedItems.clear();\n\n this._selectItemsAndAllVisibleDescendants(from, to);\n }\n\n private _selectItemsAndAllVisibleDescendants(from: number, to: number) {\n let i = from;\n\n while (i <= to) {\n if (this._treeContextState.allItems) {\n const item = this._treeContextState.allItems[i];\n\n if (item.branch && !item.open) {\n item.selected = true;\n const numChildren = item.querySelectorAll('vscode-tree-item').length;\n i += numChildren;\n } else if (item.branch && item.open) {\n item.selected = true;\n i += this._selectItemsAndAllVisibleDescendants(i + 1, to);\n } else {\n item.selected = true;\n i += 1;\n }\n }\n }\n\n return i;\n }\n\n private _mainSlotChange() {\n this._initiallyAssignedTreeItems.forEach((li) => {\n li.setAttribute('slot', 'children');\n });\n }\n\n //#endregion\n\n //#region event handlers\n\n private _handleChildrenSlotChange() {\n initPathTrackerProps(this, this._childrenTreeItems);\n\n if (this._treeContextState.rootElement) {\n this._treeContextState.rootElement.updateHasBranchItemFlag();\n }\n }\n\n private _handleMainSlotChange = () => {\n this._mainSlotChange();\n this._treeContextState.itemListUpToDate = false;\n };\n\n private _handleComponentFocus = () => {\n if (\n this._treeContextState.focusedItem &&\n this._treeContextState.focusedItem !== this\n ) {\n if (!this._treeContextState.isShiftPressed) {\n this._treeContextState.prevFocusedItem =\n this._treeContextState.focusedItem;\n }\n\n this._treeContextState.focusedItem = null;\n }\n\n this._treeContextState.focusedItem = this;\n };\n\n private _handleContentClick(ev: MouseEvent) {\n ev.stopPropagation();\n\n const isCtrlDown = ev.ctrlKey;\n const isShiftDown = ev.shiftKey;\n\n if (isShiftDown && this._configContext.multiSelect) {\n this._selectRange();\n this._treeContextState.emitSelectEvent?.();\n\n this.updateComplete.then(() => {\n this._treeContextState.highlightIndentGuides?.();\n });\n } else {\n this._selectItem(isCtrlDown);\n this._treeContextState.emitSelectEvent?.();\n this.updateComplete.then(() => {\n this._treeContextState.highlightIndentGuides?.();\n });\n\n if (this._configContext.expandMode === ExpandMode.singleClick) {\n if (this.branch && !(this._configContext.multiSelect && isCtrlDown)) {\n this.open = !this.open;\n }\n }\n }\n\n this.active = true;\n\n if (!isShiftDown) {\n this._treeContextState.prevFocusedItem = this;\n }\n }\n\n private _handleDoubleClick(ev: MouseEvent) {\n if (this._configContext.expandMode === ExpandMode.doubleClick) {\n if (this.branch && !(this._configContext.multiSelect && ev.ctrlKey)) {\n this.open = !this.open;\n }\n }\n }\n\n private _handleIconSlotChange(ev: Event) {\n const slot = ev.target as HTMLSlotElement;\n const hasContent = slot.assignedElements().length > 0;\n\n switch (slot.name) {\n case 'icon-branch':\n this._hasBranchIcon = hasContent;\n break;\n case 'icon-branch-opened':\n this._hasBranchOpenedIcon = hasContent;\n break;\n case 'icon-leaf':\n this._hasLeafIcon = hasContent;\n break;\n default:\n }\n }\n\n //#endregion\n\n override render(): TemplateResult {\n const {hideArrows, indent, indentGuides} = this._configContext;\n const {hasBranchItem} = this._treeContextState;\n let indentation = BASE_INDENT + this.level * indent;\n const guideOffset = !hideArrows ? 13 : 3;\n const indentGuideX = BASE_INDENT + this.level * indent + guideOffset;\n\n if (!this.branch && !hideArrows && hasBranchItem) {\n indentation += ARROW_CONTAINER_WIDTH;\n }\n\n const hasVisibleIcon =\n (this._hasBranchIcon && this.branch) ||\n (this._hasBranchOpenedIcon && this.branch && this.open) ||\n (this._hasLeafIcon && !this.branch);\n\n const wrapperClasses = {\n wrapper: true,\n active: this.active,\n };\n\n const childrenClasses = {\n children: true,\n guide: indentGuides !== IndentGuides.none,\n 'default-guide': indentGuides !== IndentGuides.none,\n 'highlighted-guide': this.highlightedGuides,\n };\n\n const iconContainerClasses = {\n 'icon-container': true,\n 'has-icon': hasVisibleIcon,\n };\n\n return html` <div class=\"root\">\n <div\n class=${classMap(wrapperClasses)}\n @click=${this._handleContentClick}\n @dblclick=${this._handleDoubleClick}\n .style=${stylePropertyMap({paddingLeft: `${indentation}px`})}\n >\n ${this.branch && !hideArrows\n ? html`<div\n class=${classMap({\n 'arrow-container': true,\n 'icon-rotated': this.open,\n })}\n >\n ${arrowIcon}\n </div>`\n : nothing}\n <div class=${classMap(iconContainerClasses)}>\n ${this.branch && !this.open\n ? html`<slot\n name=\"icon-branch\"\n @slotchange=${this._handleIconSlotChange}\n ></slot>`\n : nothing}\n ${this.branch && this.open\n ? html`<slot\n name=\"icon-branch-opened\"\n @slotchange=${this._handleIconSlotChange}\n ></slot>`\n : nothing}\n ${!this.branch\n ? html`<slot\n name=\"icon-leaf\"\n @slotchange=${this._handleIconSlotChange}\n ></slot>`\n : nothing}\n </div>\n <div class=\"content\" part=\"content\">\n <slot @slotchange=${this._handleMainSlotChange}></slot>\n </div>\n </div>\n <div\n class=${classMap(childrenClasses)}\n .style=${stylePropertyMap({\n '--indentation-guide-left': `${indentGuideX}px`,\n })}\n role=\"group\"\n part=\"children\"\n >\n <slot\n name=\"children\"\n @slotchange=${this._handleChildrenSlotChange}\n ></slot>\n </div>\n </div>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'vscode-tree-item': VscodeTreeItem;\n }\n}\n"]}
1
+ {"version":3,"file":"vscode-tree-item.js","sourceRoot":"","sources":["../../src/vscode-tree-item/vscode-tree-item.ts"],"names":[],"mappings":"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","sourcesContent":["import {PropertyValues, TemplateResult, html, nothing} from 'lit';\nimport {consume} from '@lit/context';\nimport {property, queryAssignedElements, state} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport {customElement, VscElement} from '../includes/VscElement';\nimport {stylePropertyMap} from '../includes/style-property-map';\nimport {\n ConfigContext,\n configContext,\n treeContext,\n type TreeContext,\n} from '../vscode-tree/tree-context';\nimport {initPathTrackerProps} from '../vscode-tree/helpers.js';\nimport styles from './vscode-tree-item.styles.js';\nimport {ExpandMode, IndentGuides} from '../vscode-tree/vscode-tree.js';\n\nconst BASE_INDENT = 3;\nconst ARROW_CONTAINER_WIDTH = 30;\n\nconst arrowIcon = html`<svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n>\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M10.072 8.024L5.715 3.667l.618-.62L11 7.716v.618L6.333 13l-.618-.619 4.357-4.357z\"\n />\n</svg>`;\n\nfunction getParentItem(childItem: VscodeTreeItem) {\n if (!childItem.parentElement) {\n return null;\n }\n\n if (!(childItem.parentElement instanceof VscodeTreeItem)) {\n return null;\n }\n\n return childItem.parentElement;\n}\n\n@customElement('vscode-tree-item')\nexport class VscodeTreeItem extends VscElement {\n static override styles = styles;\n\n //#region properties\n\n @property({type: Boolean})\n active = false;\n\n @property({type: Boolean, reflect: true})\n branch = false;\n\n @property({type: Boolean})\n hasActiveItem = false;\n\n @property({type: Boolean})\n hasSelectedItem = false;\n\n /** @internal */\n @property({type: Boolean})\n highlightedGuides = false;\n\n @property({type: Boolean, reflect: true})\n open = false;\n\n @property({type: Number, reflect: true})\n level = 0;\n\n @property({type: Boolean, reflect: true})\n set selected(selected: boolean) {\n this._selected = selected;\n this._treeContextState.selectedItems.add(this);\n this.ariaSelected = selected ? 'true' : 'false';\n }\n get selected(): boolean {\n return this._selected;\n }\n private _selected = false;\n\n set path(newPath: number[]) {\n this._path = newPath;\n }\n get path(): number[] {\n return this._path;\n }\n\n //#endregion\n\n //#region private variables\n\n private _path: number[] = [];\n private _internals: ElementInternals;\n\n @state()\n private _hasBranchIcon = false;\n\n @state()\n private _hasBranchOpenedIcon = false;\n\n @state()\n private _hasLeafIcon = false;\n\n @consume({context: treeContext, subscribe: true})\n private _treeContextState: TreeContext = {\n isShiftPressed: false,\n selectedItems: new Set(),\n allItems: null,\n itemListUpToDate: false,\n focusedItem: null,\n prevFocusedItem: null,\n hasBranchItem: false,\n rootElement: null,\n activeItem: null,\n };\n\n @consume({context: configContext, subscribe: true})\n private _configContext!: ConfigContext;\n\n @queryAssignedElements({selector: 'vscode-tree-item'})\n private _initiallyAssignedTreeItems!: VscodeTreeItem[];\n\n @queryAssignedElements({selector: 'vscode-tree-item', slot: 'children'})\n private _childrenTreeItems!: VscodeTreeItem[];\n\n //#endregion\n\n //#region lifecycle methods\n\n constructor() {\n super();\n\n this._internals = this.attachInternals();\n this.addEventListener('focus', this._handleComponentFocus);\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n this._mainSlotChange();\n this.role = 'treeitem';\n this.ariaDisabled = 'false';\n }\n\n protected override willUpdate(changedProperties: PropertyValues): void {\n if (changedProperties.has('active')) {\n this._toggleActiveState();\n }\n\n if (changedProperties.has('open') || changedProperties.has('branch')) {\n this._setAriaExpanded();\n }\n }\n\n //#endregion\n\n //#region private methods\n\n private _setAriaExpanded() {\n if (!this.branch) {\n this.ariaExpanded = null;\n } else {\n this.ariaExpanded = this.open ? 'true' : 'false';\n }\n }\n\n private _setHasActiveItemFlagOnParent(\n childItem: VscodeTreeItem,\n value: boolean\n ) {\n const parent = getParentItem(childItem);\n\n if (parent) {\n parent.hasActiveItem = value;\n }\n }\n\n private _toggleActiveState() {\n if (this.active) {\n if (this._treeContextState.activeItem) {\n this._treeContextState.activeItem.active = false;\n this._setHasActiveItemFlagOnParent(\n this._treeContextState.activeItem,\n false\n );\n }\n\n this._treeContextState.activeItem = this;\n this._setHasActiveItemFlagOnParent(this, true);\n this.tabIndex = 0;\n this._internals.states.add('active');\n } else {\n if (this._treeContextState.activeItem === this) {\n this._treeContextState.activeItem = null;\n this._setHasActiveItemFlagOnParent(this, false);\n }\n\n this.tabIndex = -1;\n this._internals.states.delete('active');\n }\n }\n\n private _selectItem(isCtrlDown: boolean) {\n const {selectedItems} = this._treeContextState;\n const {multiSelect} = this._configContext;\n\n if (multiSelect && isCtrlDown) {\n if (this.selected) {\n this.selected = false;\n selectedItems.delete(this);\n } else {\n this.selected = true;\n selectedItems.add(this);\n }\n } else {\n selectedItems.forEach((li) => (li.selected = false));\n selectedItems.clear();\n this.selected = true;\n selectedItems.add(this);\n }\n }\n\n private _selectRange() {\n const prevFocused = this._treeContextState.prevFocusedItem;\n\n if (!prevFocused || prevFocused === this) {\n return;\n }\n\n if (!this._treeContextState.itemListUpToDate) {\n this._treeContextState.allItems =\n this._treeContextState.rootElement!.querySelectorAll(\n 'vscode-tree-item'\n );\n\n if (this._treeContextState.allItems) {\n this._treeContextState.allItems.forEach((li, i) => {\n li.dataset.score = i.toString();\n });\n }\n\n this._treeContextState.itemListUpToDate = true;\n }\n\n let from = +(prevFocused.dataset.score ?? -1);\n let to = +(this.dataset.score ?? -1);\n\n if (from > to) {\n [from, to] = [to, from];\n }\n\n this._treeContextState.selectedItems.forEach((li) => (li.selected = false));\n this._treeContextState.selectedItems.clear();\n\n this._selectItemsAndAllVisibleDescendants(from, to);\n }\n\n private _selectItemsAndAllVisibleDescendants(from: number, to: number) {\n let i = from;\n\n while (i <= to) {\n if (this._treeContextState.allItems) {\n const item = this._treeContextState.allItems[i];\n\n if (item.branch && !item.open) {\n item.selected = true;\n const numChildren = item.querySelectorAll('vscode-tree-item').length;\n i += numChildren;\n } else if (item.branch && item.open) {\n item.selected = true;\n i += this._selectItemsAndAllVisibleDescendants(i + 1, to);\n } else {\n item.selected = true;\n i += 1;\n }\n }\n }\n\n return i;\n }\n\n private _mainSlotChange() {\n this._initiallyAssignedTreeItems.forEach((li) => {\n li.setAttribute('slot', 'children');\n });\n }\n\n //#endregion\n\n //#region event handlers\n\n private _handleChildrenSlotChange() {\n initPathTrackerProps(this, this._childrenTreeItems);\n\n if (this._treeContextState.rootElement) {\n this._treeContextState.rootElement.updateHasBranchItemFlag();\n }\n }\n\n private _handleMainSlotChange = () => {\n this._mainSlotChange();\n this._treeContextState.itemListUpToDate = false;\n };\n\n private _handleComponentFocus = () => {\n if (\n this._treeContextState.focusedItem &&\n this._treeContextState.focusedItem !== this\n ) {\n if (!this._treeContextState.isShiftPressed) {\n this._treeContextState.prevFocusedItem =\n this._treeContextState.focusedItem;\n }\n\n this._treeContextState.focusedItem = null;\n }\n\n this._treeContextState.focusedItem = this;\n };\n\n private _handleContentClick(ev: MouseEvent) {\n ev.stopPropagation();\n\n const isCtrlDown = ev.ctrlKey || ev.metaKey;\n const isShiftDown = ev.shiftKey;\n\n if (isShiftDown && this._configContext.multiSelect) {\n this._selectRange();\n this._treeContextState.emitSelectEvent?.();\n\n this.updateComplete.then(() => {\n this._treeContextState.highlightIndentGuides?.();\n });\n } else {\n this._selectItem(isCtrlDown);\n this._treeContextState.emitSelectEvent?.();\n this.updateComplete.then(() => {\n this._treeContextState.highlightIndentGuides?.();\n });\n\n if (this._configContext.expandMode === ExpandMode.singleClick) {\n if (this.branch && !(this._configContext.multiSelect && isCtrlDown)) {\n this.open = !this.open;\n }\n }\n }\n\n this.active = true;\n\n if (!isShiftDown) {\n this._treeContextState.prevFocusedItem = this;\n }\n }\n\n private _handleDoubleClick(ev: MouseEvent) {\n if (this._configContext.expandMode === ExpandMode.doubleClick) {\n if (\n this.branch &&\n !(this._configContext.multiSelect && (ev.ctrlKey || ev.metaKey))\n ) {\n this.open = !this.open;\n }\n }\n }\n\n private _handleIconSlotChange(ev: Event) {\n const slot = ev.target as HTMLSlotElement;\n const hasContent = slot.assignedElements().length > 0;\n\n switch (slot.name) {\n case 'icon-branch':\n this._hasBranchIcon = hasContent;\n break;\n case 'icon-branch-opened':\n this._hasBranchOpenedIcon = hasContent;\n break;\n case 'icon-leaf':\n this._hasLeafIcon = hasContent;\n break;\n default:\n }\n }\n\n //#endregion\n\n override render(): TemplateResult {\n const {hideArrows, indent, indentGuides} = this._configContext;\n const {hasBranchItem} = this._treeContextState;\n let indentation = BASE_INDENT + this.level * indent;\n const guideOffset = !hideArrows ? 13 : 3;\n const indentGuideX = BASE_INDENT + this.level * indent + guideOffset;\n\n if (!this.branch && !hideArrows && hasBranchItem) {\n indentation += ARROW_CONTAINER_WIDTH;\n }\n\n const hasVisibleIcon =\n (this._hasBranchIcon && this.branch) ||\n (this._hasBranchOpenedIcon && this.branch && this.open) ||\n (this._hasLeafIcon && !this.branch);\n\n const wrapperClasses = {\n wrapper: true,\n active: this.active,\n };\n\n const childrenClasses = {\n children: true,\n guide: indentGuides !== IndentGuides.none,\n 'default-guide': indentGuides !== IndentGuides.none,\n 'highlighted-guide': this.highlightedGuides,\n };\n\n const iconContainerClasses = {\n 'icon-container': true,\n 'has-icon': hasVisibleIcon,\n };\n\n return html` <div class=\"root\">\n <div\n class=${classMap(wrapperClasses)}\n @click=${this._handleContentClick}\n @dblclick=${this._handleDoubleClick}\n .style=${stylePropertyMap({paddingLeft: `${indentation}px`})}\n >\n ${this.branch && !hideArrows\n ? html`<div\n class=${classMap({\n 'arrow-container': true,\n 'icon-rotated': this.open,\n })}\n >\n ${arrowIcon}\n </div>`\n : nothing}\n <div class=${classMap(iconContainerClasses)}>\n ${this.branch && !this.open\n ? html`<slot\n name=\"icon-branch\"\n @slotchange=${this._handleIconSlotChange}\n ></slot>`\n : nothing}\n ${this.branch && this.open\n ? html`<slot\n name=\"icon-branch-opened\"\n @slotchange=${this._handleIconSlotChange}\n ></slot>`\n : nothing}\n ${!this.branch\n ? html`<slot\n name=\"icon-leaf\"\n @slotchange=${this._handleIconSlotChange}\n ></slot>`\n : nothing}\n </div>\n <div class=\"content\" part=\"content\">\n <slot @slotchange=${this._handleMainSlotChange}></slot>\n </div>\n </div>\n <div\n class=${classMap(childrenClasses)}\n .style=${stylePropertyMap({\n '--indentation-guide-left': `${indentGuideX}px`,\n })}\n role=\"group\"\n part=\"children\"\n >\n <slot\n name=\"children\"\n @slotchange=${this._handleChildrenSlotChange}\n ></slot>\n </div>\n </div>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'vscode-tree-item': VscodeTreeItem;\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vscode-elements/elements",
3
- "version": "2.3.1-pre.0",
3
+ "version": "2.3.1-pre.2",
4
4
  "description": "Web components for creating Visual Studio Code extensions",
5
5
  "main": "dist/main.js",
6
6
  "module": "dist/main.js",
@@ -152,7 +152,7 @@
152
152
  "@typescript-eslint/eslint-plugin": "^8.29.0",
153
153
  "@typescript-eslint/parser": "^8.29.0",
154
154
  "@vscode-elements/webview-playground": "^1.6.0",
155
- "@vscode/codicons": "^0.0.39",
155
+ "@vscode/codicons": "^0.0.40",
156
156
  "@web/dev-server": "^0.4.6",
157
157
  "@web/dev-server-esbuild": "^1.0.4",
158
158
  "@web/dev-server-legacy": "^2.1.1",
@@ -2,6 +2,21 @@
2
2
  "$schema": "https://raw.githubusercontent.com/microsoft/vscode-css-languageservice/main/docs/customData.schema.json",
3
3
  "version": 1.1,
4
4
  "properties": [
5
+ { "name": "--vscode-button-background", "values": [] },
6
+ { "name": "--vscode-button-foreground", "values": [] },
7
+ { "name": "--vscode-button-border", "values": [] },
8
+ { "name": "--vscode-button-hoverBackground", "values": [] },
9
+ {
10
+ "name": "--vscode-font-family",
11
+ "description": "A sans-serif font type depends on the host OS.",
12
+ "values": []
13
+ },
14
+ { "name": "--vscode-font-size", "values": [] },
15
+ { "name": "--vscode-font-weight", "values": [] },
16
+ { "name": "--vscode-button-secondaryForeground", "values": [] },
17
+ { "name": "--vscode-button-secondaryBackground", "values": [] },
18
+ { "name": "--vscode-button-secondaryHoverBackground", "values": [] },
19
+ { "name": "--vscode-focusBorder", "values": [] },
5
20
  {
6
21
  "name": "--vscode-font-family",
7
22
  "description": "A sans-serif font type depends on the host OS.",
@@ -43,21 +58,6 @@
43
58
  { "name": "--vscode-button-secondaryBackground", "values": [] },
44
59
  { "name": "--vscode-button-secondaryHoverBackground", "values": [] },
45
60
  { "name": "--vscode-focusBorder", "values": [] },
46
- { "name": "--vscode-button-background", "values": [] },
47
- { "name": "--vscode-button-foreground", "values": [] },
48
- { "name": "--vscode-button-border", "values": [] },
49
- { "name": "--vscode-button-hoverBackground", "values": [] },
50
- {
51
- "name": "--vscode-font-family",
52
- "description": "A sans-serif font type depends on the host OS.",
53
- "values": []
54
- },
55
- { "name": "--vscode-font-size", "values": [] },
56
- { "name": "--vscode-font-weight", "values": [] },
57
- { "name": "--vscode-button-secondaryForeground", "values": [] },
58
- { "name": "--vscode-button-secondaryBackground", "values": [] },
59
- { "name": "--vscode-button-secondaryHoverBackground", "values": [] },
60
- { "name": "--vscode-focusBorder", "values": [] },
61
61
  { "name": "--vscode-font-family", "values": [] },
62
62
  { "name": "--vscode-font-size", "values": [] },
63
63
  { "name": "--vscode-font-weight", "values": [] },
@@ -115,11 +115,6 @@
115
115
  { "name": "--vscode-menu-selectionForeground", "values": [] },
116
116
  { "name": "--vscode-menu-separatorBackground", "values": [] },
117
117
  { "name": "--vscode-foreground", "values": [] },
118
- {
119
- "name": "--vsc-foreground-translucent",
120
- "description": "Default text color. 90% transparency version of `--vscode-foreground` by default.",
121
- "values": []
122
- },
123
118
  {
124
119
  "name": "--label-width",
125
120
  "description": "The width of the label in horizontal mode",
@@ -130,6 +125,11 @@
130
125
  "description": "The right margin of the label in horizontal mode",
131
126
  "values": []
132
127
  },
128
+ {
129
+ "name": "--vsc-foreground-translucent",
130
+ "description": "Default text color. 90% transparency version of `--vscode-foreground` by default.",
131
+ "values": []
132
+ },
133
133
  { "name": "--vscode-icon-foreground", "values": [] },
134
134
  {
135
135
  "name": "--vscode-toolbar-hoverBackground",
@@ -2,23 +2,6 @@
2
2
  "$schema": "https://raw.githubusercontent.com/microsoft/vscode-html-languageservice/main/docs/customData.schema.json",
3
3
  "version": 1.1,
4
4
  "tags": [
5
- {
6
- "name": "vscode-badge",
7
- "description": "Show counts or status information. Badges can also be used within [Textfield](https://vscode-elements.github.io/components/textfield) and [TabHeader](https://vscode-elements.github.io/components/tabs) components.\n---\n\n\n### **CSS Properties:**\n - **--vscode-font-family** - A sans-serif font type depends on the host OS. _(default: sans-serif)_\n- **--vscode-contrastBorder** - undefined _(default: transparent)_\n- **--vscode-badge-background** - default and counter variant background color _(default: #616161)_\n- **--vscode-badge-foreground** - default and counter variant foreground color _(default: #f8f8f8)_\n- **--vscode-activityBarBadge-background** - activity bar variant background color _(default: #0078d4)_\n- **--vscode-activityBarBadge-foreground** - activity bar variant foreground color _(default: #ffffff)_",
8
- "attributes": [
9
- {
10
- "name": "variant",
11
- "values": [
12
- { "name": "" },
13
- { "name": "default" },
14
- { "name": "counter" },
15
- { "name": "activity-bar-counter" },
16
- { "name": "tab-header-counter" }
17
- ]
18
- }
19
- ],
20
- "references": []
21
- },
22
5
  {
23
6
  "name": "vscode-button",
24
7
  "description": "Clickable element that are used to trigger actions.\n---\n\n\n### **Slots:**\n - **content-before** - Slot before the main content.\n- **content-after** - Slot after the main content.\n\n### **CSS Properties:**\n - **--vscode-button-background** - undefined _(default: #0078d4)_\n- **--vscode-button-foreground** - undefined _(default: #ffffff)_\n- **--vscode-button-border** - undefined _(default: var(--vscode-button-background, rgba(255, 255, 255, 0.07)))_\n- **--vscode-button-hoverBackground** - undefined _(default: #026ec1)_\n- **--vscode-font-family** - A sans-serif font type depends on the host OS. _(default: sans-serif)_\n- **--vscode-font-size** - undefined _(default: 13px)_\n- **--vscode-font-weight** - undefined _(default: normal)_\n- **--vscode-button-secondaryForeground** - undefined _(default: #cccccc)_\n- **--vscode-button-secondaryBackground** - undefined _(default: #313131)_\n- **--vscode-button-secondaryHoverBackground** - undefined _(default: #3c3c3c)_\n- **--vscode-focusBorder** - undefined _(default: #0078d4)_\n\n### **CSS Parts:**\n - **base** - The main content area of the component.",
@@ -76,22 +59,28 @@
76
59
  "references": []
77
60
  },
78
61
  {
79
- "name": "vscode-button-group",
80
- "description": "Shows a split button, including several components in a single button. Commonly used to show a button with a dropdown to the right.\n---\n\n\n### **CSS Properties:**\n - **--vscode-button-background** - undefined _(default: #0078d4)_\n- **--vscode-button-foreground** - undefined _(default: #ffffff)_\n- **--vscode-button-border** - undefined _(default: var(--vscode-button-background, rgba(255, 255, 255, 0.07)))_\n- **--vscode-button-hoverBackground** - undefined _(default: #026ec1)_\n- **--vscode-font-family** - A sans-serif font type depends on the host OS. _(default: sans-serif)_\n- **--vscode-font-size** - undefined _(default: 13px)_\n- **--vscode-font-weight** - undefined _(default: normal)_\n- **--vscode-button-secondaryForeground** - undefined _(default: #cccccc)_\n- **--vscode-button-secondaryBackground** - undefined _(default: #313131)_\n- **--vscode-button-secondaryHoverBackground** - undefined _(default: #3c3c3c)_\n- **--vscode-focusBorder** - undefined _(default: #0078d4)_",
81
- "attributes": [],
82
- "references": []
83
- },
84
- {
85
- "name": "vscode-checkbox-group",
86
- "description": "Arranges a group of checkboxes horizontally or vertically.\n---\n",
62
+ "name": "vscode-badge",
63
+ "description": "Show counts or status information. Badges can also be used within [Textfield](https://vscode-elements.github.io/components/textfield) and [TabHeader](https://vscode-elements.github.io/components/tabs) components.\n---\n\n\n### **CSS Properties:**\n - **--vscode-font-family** - A sans-serif font type depends on the host OS. _(default: sans-serif)_\n- **--vscode-contrastBorder** - undefined _(default: transparent)_\n- **--vscode-badge-background** - default and counter variant background color _(default: #616161)_\n- **--vscode-badge-foreground** - default and counter variant foreground color _(default: #f8f8f8)_\n- **--vscode-activityBarBadge-background** - activity bar variant background color _(default: #0078d4)_\n- **--vscode-activityBarBadge-foreground** - activity bar variant foreground color _(default: #ffffff)_",
87
64
  "attributes": [
88
65
  {
89
66
  "name": "variant",
90
- "values": [{ "name": "horizontal" }, { "name": "vertical" }]
67
+ "values": [
68
+ { "name": "" },
69
+ { "name": "default" },
70
+ { "name": "counter" },
71
+ { "name": "activity-bar-counter" },
72
+ { "name": "tab-header-counter" }
73
+ ]
91
74
  }
92
75
  ],
93
76
  "references": []
94
77
  },
78
+ {
79
+ "name": "vscode-button-group",
80
+ "description": "Shows a split button, including several components in a single button. Commonly used to show a button with a dropdown to the right.\n---\n\n\n### **CSS Properties:**\n - **--vscode-button-background** - undefined _(default: #0078d4)_\n- **--vscode-button-foreground** - undefined _(default: #ffffff)_\n- **--vscode-button-border** - undefined _(default: var(--vscode-button-background, rgba(255, 255, 255, 0.07)))_\n- **--vscode-button-hoverBackground** - undefined _(default: #026ec1)_\n- **--vscode-font-family** - A sans-serif font type depends on the host OS. _(default: sans-serif)_\n- **--vscode-font-size** - undefined _(default: 13px)_\n- **--vscode-font-weight** - undefined _(default: normal)_\n- **--vscode-button-secondaryForeground** - undefined _(default: #cccccc)_\n- **--vscode-button-secondaryBackground** - undefined _(default: #313131)_\n- **--vscode-button-secondaryHoverBackground** - undefined _(default: #3c3c3c)_\n- **--vscode-focusBorder** - undefined _(default: #0078d4)_",
81
+ "attributes": [],
82
+ "references": []
83
+ },
95
84
  {
96
85
  "name": "vscode-checkbox",
97
86
  "description": "Allows users to select one or more options from a set. When participating in a form, it supports\nthe `:invalid` pseudo class. Otherwise the error styles can be applied through the `invalid`\nproperty.\n---\n\n\n### **Events:**\n - **change** - Dispatched when checked state is changed. The event is bubbled, so it can be listened on a parent element like the `CheckboxGroup`.\n- **invalid** - Dispatched when the element is invalid and `checkValidity()` has been called or the form containing this element is submitted. [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/invalid_event)\n\n### **Methods:**\n - **checkValidity(): _boolean_** - Returns `true` if the element's value is valid; otherwise, it returns `false`.\nIf the element's value is invalid, an invalid event is triggered on the element.\n\n[MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/checkValidity)\n- **reportValidity(): _boolean_** - Returns `true` if the element's value is valid; otherwise, it returns `false`.\nIf the element's value is invalid, an invalid event is triggered on the element, and the\nbrowser displays an error message to the user.\n\n[MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/reportValidity)\n\n### **CSS Properties:**\n - **--vscode-font-family** - undefined _(default: sans-serif)_\n- **--vscode-font-size** - undefined _(default: 13px)_\n- **--vscode-font-weight** - undefined _(default: normal)_\n- **--vscode-foreground** - undefined _(default: #cccccc)_\n- **--vscode-settings-checkboxBackground** - undefined _(default: #313131)_\n- **--vscode-settings-checkboxBorder** - undefined _(default: #3c3c3c)_\n- **--vscode-settings-checkboxForeground** - undefined _(default: #cccccc)_\n- **--vscode-focusBorder** - undefined _(default: #0078d4)_\n- **--vscode-inputValidation-errorBackground** - undefined _(default: #5a1d1d)_\n- **--vscode-inputValidation-errorBorder** - undefined _(default: #be1100)_",
@@ -135,6 +124,17 @@
135
124
  ],
136
125
  "references": []
137
126
  },
127
+ {
128
+ "name": "vscode-checkbox-group",
129
+ "description": "Arranges a group of checkboxes horizontally or vertically.\n---\n",
130
+ "attributes": [
131
+ {
132
+ "name": "variant",
133
+ "values": [{ "name": "horizontal" }, { "name": "vertical" }]
134
+ }
135
+ ],
136
+ "references": []
137
+ },
138
138
  {
139
139
  "name": "vscode-collapsible",
140
140
  "description": "Allows users to reveal or hide related content on a page.\n---\n\n\n### **Events:**\n - **vsc-collapsible-toggle** - Dispatched when the content visibility is changed.\n\n### **Slots:**\n - _default_ - Main content.\n- **actions** - You can place any action icon in this slot in the header, but it's also possible to use any HTML element in it. It's only visible when the component is open.\n- **decorations** - The elements placed in the decorations slot are always visible.\n\n### **CSS Properties:**\n - **--vscode-sideBar-background** - Background color _(default: #181818)_\n- **--vscode-focusBorder** - Focus border color _(default: #0078d4)_\n- **--vscode-font-family** - Header font family _(default: sans-serif)_\n- **--vscode-sideBarSectionHeader-background** - Header background _(default: #181818)_\n- **--vscode-icon-foreground** - Arrow icon color _(default: #cccccc)_\n- **--vscode-sideBarTitle-foreground** - Header font color _(default: #cccccc)_\n\n### **CSS Parts:**\n - **body** - Container for the toggleable content of the component. The container's overflow content is hidden by default. This CSS part can serve as an escape hatch to modify this behavior.",
@@ -204,12 +204,6 @@
204
204
  ],
205
205
  "references": []
206
206
  },
207
- {
208
- "name": "vscode-form-helper",
209
- "description": "Adds more detailed description to a [FromGroup](https://bendera.github.io/vscode-webview-elements/components/vscode-form-group/)\n---\n\n\n### **CSS Properties:**\n - **--vsc-foreground-translucent** - Default text color. 90% transparency version of `--vscode-foreground` by default. _(default: undefined)_",
210
- "attributes": [],
211
- "references": []
212
- },
213
207
  {
214
208
  "name": "vscode-form-group",
215
209
  "description": "\n---\n\n\n### **CSS Properties:**\n - **--label-width** - The width of the label in horizontal mode _(default: 150px)_\n- **--label-right-margin** - The right margin of the label in horizontal mode _(default: 14px)_",
@@ -218,6 +212,12 @@
218
212
  ],
219
213
  "references": []
220
214
  },
215
+ {
216
+ "name": "vscode-form-helper",
217
+ "description": "Adds more detailed description to a [FromGroup](https://bendera.github.io/vscode-webview-elements/components/vscode-form-group/)\n---\n\n\n### **CSS Properties:**\n - **--vsc-foreground-translucent** - Default text color. 90% transparency version of `--vscode-foreground` by default. _(default: undefined)_",
218
+ "attributes": [],
219
+ "references": []
220
+ },
221
221
  {
222
222
  "name": "vscode-icon",
223
223
  "description": "Display a [Codicon](https://microsoft.github.io/vscode-codicons/dist/codicon.html).\nIn \"action-icon\" mode it behaves like a button. In this case, it is\nrecommended that a meaningful label is specified with the `label` property.\n---\n\n\n### **CSS Properties:**\n - **--vscode-icon-foreground** - undefined _(default: #cccccc)_\n- **--vscode-toolbar-hoverBackground** - Hover state background color in `active-icon` mode _(default: rgba(90, 93, 94, 0.31))_\n- **--vscode-toolbar-activeBackground** - Active state background color in `active-icon` mode _(default: rgba(99, 102, 103, 0.31))_\n- **--vscode-focusBorder** - undefined _(default: #0078d4)_",