@vscode-elements/elements 1.0.0-pre.10 → 1.0.0-pre.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/custom-elements.json +100 -50
  2. package/dist/bundled.js +1 -1
  3. package/dist/includes/VscElement.js +1 -1
  4. package/dist/includes/VscElement.js.map +1 -1
  5. package/dist/vscode-context-menu/vscode-context-menu.d.ts +14 -0
  6. package/dist/vscode-context-menu/vscode-context-menu.d.ts.map +1 -1
  7. package/dist/vscode-context-menu/vscode-context-menu.js +29 -13
  8. package/dist/vscode-context-menu/vscode-context-menu.js.map +1 -1
  9. package/dist/vscode-context-menu-item/vscode-context-menu-item.d.ts +1 -1
  10. package/dist/vscode-context-menu-item/vscode-context-menu-item.d.ts.map +1 -1
  11. package/dist/vscode-context-menu-item/vscode-context-menu-item.js +2 -1
  12. package/dist/vscode-context-menu-item/vscode-context-menu-item.js.map +1 -1
  13. package/dist/vscode-split-layout/vscode-split-layout.d.ts +1 -1
  14. package/dist/vscode-split-layout/vscode-split-layout.d.ts.map +1 -1
  15. package/dist/vscode-split-layout/vscode-split-layout.js +4 -4
  16. package/dist/vscode-split-layout/vscode-split-layout.js.map +1 -1
  17. package/dist/vscode-tabs/vscode-tabs.d.ts +8 -0
  18. package/dist/vscode-tabs/vscode-tabs.d.ts.map +1 -1
  19. package/dist/vscode-tabs/vscode-tabs.js +9 -0
  20. package/dist/vscode-tabs/vscode-tabs.js.map +1 -1
  21. package/dist/vscode-textarea/vscode-textarea.d.ts.map +1 -1
  22. package/dist/vscode-textarea/vscode-textarea.js +1 -0
  23. package/dist/vscode-textarea/vscode-textarea.js.map +1 -1
  24. package/dist/vscode-textfield/vscode-textfield.d.ts.map +1 -1
  25. package/dist/vscode-textfield/vscode-textfield.js +1 -0
  26. package/dist/vscode-textfield/vscode-textfield.js.map +1 -1
  27. package/dist/vscode-tree/vscode-tree.d.ts +12 -2
  28. package/dist/vscode-tree/vscode-tree.d.ts.map +1 -1
  29. package/dist/vscode-tree/vscode-tree.js +16 -2
  30. package/dist/vscode-tree/vscode-tree.js.map +1 -1
  31. package/package.json +12 -76
@@ -2,7 +2,7 @@ import { LitElement } from 'lit';
2
2
  export class VscElement extends LitElement {
3
3
  constructor() {
4
4
  super(...arguments);
5
- this._version = '1.0.0-pre.10';
5
+ this._version = '1.0.0-pre.11';
6
6
  }
7
7
  /** VSC Element version */
8
8
  get version() {
@@ -1 +1 @@
1
- {"version":3,"file":"VscElement.js","sourceRoot":"","sources":["../../src/includes/VscElement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,KAAK,CAAC;AAE/B,MAAM,OAAO,UAAW,SAAQ,UAAU;IAA1C;;QACU,aAAQ,GAAG,cAAc,CAAC;IAMpC,CAAC;IAJC,0BAA0B;IAC1B,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;CACF","sourcesContent":["import {LitElement} from 'lit';\n\nexport class VscElement extends LitElement {\n private _version = '1.0.0-pre.10';\n\n /** VSC Element version */\n get version() {\n return this._version;\n }\n}\n"]}
1
+ {"version":3,"file":"VscElement.js","sourceRoot":"","sources":["../../src/includes/VscElement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,KAAK,CAAC;AAE/B,MAAM,OAAO,UAAW,SAAQ,UAAU;IAA1C;;QACU,aAAQ,GAAG,cAAc,CAAC;IAMpC,CAAC;IAJC,0BAA0B;IAC1B,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;CACF","sourcesContent":["import {LitElement} from 'lit';\n\nexport class VscElement extends LitElement {\n private _version = '1.0.0-pre.11';\n\n /** VSC Element version */\n get version() {\n return this._version;\n }\n}\n"]}
@@ -8,7 +8,16 @@ interface MenuItemData {
8
8
  separator?: boolean;
9
9
  tabindex?: number;
10
10
  }
11
+ export type VscMenuSelectEvent = CustomEvent<{
12
+ keybinding: string;
13
+ label: string;
14
+ value: string;
15
+ separator: boolean;
16
+ tabindex: number;
17
+ }>;
11
18
  /**
19
+ * @fires {VscMenuSelectEvent} vsc-menu-select - Emitted when a menu item is clicked
20
+ *
12
21
  * @cssprop --vscode-font-family
13
22
  * @cssprop --vscode-font-size
14
23
  * @cssprop --vscode-font-weight
@@ -37,6 +46,8 @@ export declare class VscodeContextMenu extends VscElement {
37
46
  private _handleArrowUp;
38
47
  private _handleArrowDown;
39
48
  private _handleEscape;
49
+ private _dispatchSelectEvent;
50
+ private _dispatchLegacySelectEvent;
40
51
  private _handleEnter;
41
52
  private _onItemClick;
42
53
  private _onItemMouseOver;
@@ -47,6 +58,9 @@ declare global {
47
58
  interface HTMLElementTagNameMap {
48
59
  'vscode-context-menu': VscodeContextMenu;
49
60
  }
61
+ interface GlobalEventHandlersEventMap {
62
+ 'vsc-menu-select': VscMenuSelectEvent;
63
+ }
50
64
  }
51
65
  export {};
52
66
  //# sourceMappingURL=vscode-context-menu.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"vscode-context-menu.d.ts","sourceRoot":"","sources":["../../src/vscode-context-menu/vscode-context-menu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,cAAc,EAAC,MAAM,KAAK,CAAC;AAElD,OAAO,EAAC,UAAU,EAAC,MAAM,2BAA2B,CAAC;AAErD,OAAO,6BAA6B,CAAC;AAGrC,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;GAQG;AACH,qBACa,iBAAkB,SAAQ,UAAU;IAC/C,MAAM,CAAC,MAAM,+BAAU;IAEvB,IACI,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,EAY5B;IACD,IAAI,IAAI,IAAI,YAAY,EAAE,CAEzB;IAED,IACI,IAAI,CAAC,IAAI,EAAE,OAAO,EAiBrB;IACD,IAAI,IAAI,IAAI,OAAO,CAElB;IAED,gBAAgB;IAEhB,QAAQ,SAAK;;IAkBb,OAAO,CAAC,2BAA2B,CAAM;IAGzC,OAAO,CAAC,KAAK,CAAS;IAGtB,OAAO,CAAC,UAAU,CAAkB;IAEpC,OAAO,CAAC,KAAK,CAAsB;IAEnC,OAAO,CAAC,qBAAqB,CAAgB;IAE7C,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,oBAAoB,CAAmC;IAE/D,OAAO,CAAC,UAAU;IA6BlB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,YAAY;IA+BpB,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,eAAe;IAIvB,MAAM,IAAI,cAAc;CAwCzB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,qBAAqB,EAAE,iBAAiB,CAAC;KAC1C;CACF"}
1
+ {"version":3,"file":"vscode-context-menu.d.ts","sourceRoot":"","sources":["../../src/vscode-context-menu/vscode-context-menu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,cAAc,EAAC,MAAM,KAAK,CAAC;AAElD,OAAO,EAAC,UAAU,EAAC,MAAM,2BAA2B,CAAC;AAKrD,OAAO,6BAA6B,CAAC;AAGrC,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,kBAAkB,GAAG,WAAW,CAAC;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC,CAAC;AAEH;;;;;;;;;;GAUG;AACH,qBACa,iBAAkB,SAAQ,UAAU;IAC/C,MAAM,CAAC,MAAM,+BAAU;IAEvB,IACI,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,EAY5B;IACD,IAAI,IAAI,IAAI,YAAY,EAAE,CAEzB;IAED,IACI,IAAI,CAAC,IAAI,EAAE,OAAO,EAiBrB;IACD,IAAI,IAAI,IAAI,OAAO,CAElB;IAED,gBAAgB;IAEhB,QAAQ,SAAK;;IAkBb,OAAO,CAAC,2BAA2B,CAAM;IAGzC,OAAO,CAAC,KAAK,CAAS;IAGtB,OAAO,CAAC,UAAU,CAAkB;IAEpC,OAAO,CAAC,KAAK,CAAsB;IAEnC,OAAO,CAAC,qBAAqB,CAAgB;IAE7C,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,oBAAoB,CAAmC;IAE/D,OAAO,CAAC,UAAU;IA6BlB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,oBAAoB;IAgB5B,OAAO,CAAC,0BAA0B;IAoBlC,OAAO,CAAC,YAAY;IAkBpB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,eAAe;IAIvB,MAAM,IAAI,cAAc;CAwCzB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,qBAAqB,EAAE,iBAAiB,CAAC;KAC1C;IAED,UAAU,2BAA2B;QACnC,iBAAiB,EAAE,kBAAkB,CAAC;KACvC;CACF"}
@@ -10,6 +10,8 @@ import { VscElement } from '../includes/VscElement.js';
10
10
  import '../vscode-context-menu-item';
11
11
  import styles from './vscode-context-menu.styles.js';
12
12
  /**
13
+ * @fires {VscMenuSelectEvent} vsc-menu-select - Emitted when a menu item is clicked
14
+ *
13
15
  * @cssprop --vscode-font-family
14
16
  * @cssprop --vscode-font-size
15
17
  * @cssprop --vscode-font-weight
@@ -121,13 +123,19 @@ let VscodeContextMenu = class VscodeContextMenu extends VscElement {
121
123
  this._show = false;
122
124
  document.removeEventListener('click', this._onClickOutsideBound);
123
125
  }
124
- _handleEnter() {
125
- if (this._selectedClickableItemIndex === -1) {
126
- return;
127
- }
128
- const realItemIndex = this._clickableItemIndexes[this._selectedClickableItemIndex];
129
- const options = this._wrapperEl.querySelectorAll('vscode-context-menu-item');
130
- const selectedOption = options[realItemIndex];
126
+ _dispatchSelectEvent(selectedOption) {
127
+ const { keybinding, label, value, separator, tabindex } = selectedOption;
128
+ this.dispatchEvent(new CustomEvent('vsc-menu-select', {
129
+ detail: {
130
+ keybinding,
131
+ label,
132
+ separator,
133
+ tabindex,
134
+ value,
135
+ },
136
+ }));
137
+ }
138
+ _dispatchLegacySelectEvent(selectedOption) {
131
139
  const { keybinding, label, value, separator, tabindex } = selectedOption;
132
140
  const detail = {
133
141
  keybinding,
@@ -136,22 +144,30 @@ let VscodeContextMenu = class VscodeContextMenu extends VscElement {
136
144
  separator,
137
145
  tabindex,
138
146
  };
147
+ /** @deprecated */
139
148
  this.dispatchEvent(new CustomEvent('vsc-select', {
140
149
  detail,
141
150
  bubbles: true,
142
151
  composed: true,
143
152
  }));
153
+ }
154
+ _handleEnter() {
155
+ if (this._selectedClickableItemIndex === -1) {
156
+ return;
157
+ }
158
+ const realItemIndex = this._clickableItemIndexes[this._selectedClickableItemIndex];
159
+ const options = this._wrapperEl.querySelectorAll('vscode-context-menu-item');
160
+ const selectedOption = options[realItemIndex];
161
+ this._dispatchLegacySelectEvent(selectedOption);
162
+ this._dispatchSelectEvent(selectedOption);
144
163
  this._show = false;
145
164
  document.removeEventListener('click', this._onClickOutsideBound);
146
165
  }
147
166
  _onItemClick(event) {
148
- const { detail } = event;
167
+ const et = event.currentTarget;
168
+ this._dispatchLegacySelectEvent(et);
169
+ this._dispatchSelectEvent(et);
149
170
  this._show = false;
150
- this.dispatchEvent(new CustomEvent('vsc-select', {
151
- detail,
152
- bubbles: true,
153
- composed: true,
154
- }));
155
171
  }
156
172
  _onItemMouseOver(event) {
157
173
  const el = event.target;
@@ -1 +1 @@
1
- {"version":3,"file":"vscode-context-menu.js","sourceRoot":"","sources":["../../src/vscode-context-menu/vscode-context-menu.ts"],"names":[],"mappings":"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","sourcesContent":["import {html, nothing, TemplateResult} from 'lit';\nimport {customElement, property, query, state} from 'lit/decorators.js';\nimport {VscElement} from '../includes/VscElement.js';\nimport {VscClickEventDetail} from '../vscode-context-menu-item/vscode-context-menu-item.js';\nimport '../vscode-context-menu-item';\nimport styles from './vscode-context-menu.styles.js';\n\ninterface MenuItemData {\n label: string;\n keybinding?: string;\n value?: string;\n separator?: boolean;\n tabindex?: number;\n}\n\n/**\n * @cssprop --vscode-font-family\n * @cssprop --vscode-font-size\n * @cssprop --vscode-font-weight\n * @cssprop --vscode-menu-background\n * @cssprop --vscode-menu-border\n * @cssprop --vscode-menu-foreground\n * @cssprop --vscode-widget-shadow\n */\n@customElement('vscode-context-menu')\nexport class VscodeContextMenu extends VscElement {\n static styles = styles;\n\n @property({type: Array, attribute: false})\n set data(data: MenuItemData[]) {\n this._data = data;\n\n const indexes: number[] = [];\n\n data.forEach((v, i) => {\n if (!v.separator) {\n indexes.push(i);\n }\n });\n\n this._clickableItemIndexes = indexes;\n }\n get data(): MenuItemData[] {\n return this._data;\n }\n\n @property({type: Boolean, reflect: true})\n set show(show: boolean) {\n this._show = show;\n this._selectedClickableItemIndex = -1;\n\n if (show) {\n this.updateComplete.then(() => {\n if (this._wrapperEl) {\n this._wrapperEl.focus();\n }\n\n requestAnimationFrame(() => {\n document.addEventListener('click', this._onClickOutsideBound, {\n once: true,\n });\n });\n });\n }\n }\n get show(): boolean {\n return this._show;\n }\n\n /** @internal */\n @property({type: Number, reflect: true})\n tabIndex = 0;\n\n constructor() {\n super();\n this.addEventListener('keydown', this._onKeyDown);\n }\n\n /* connectedCallback(): void {\n super.connectedCallback();\n document.addEventListener('click', this._onClickOutsideBound);\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n document.removeEventListener('click', this._onClickOutsideBound);\n } */\n\n @state()\n private _selectedClickableItemIndex = -1;\n\n @state()\n private _show = false;\n\n @query('.context-menu')\n private _wrapperEl!: HTMLDivElement;\n\n private _data: MenuItemData[] = [];\n\n private _clickableItemIndexes: number[] = [];\n\n private _onClickOutside(ev: MouseEvent) {\n if (!ev.composedPath().includes(this)) {\n this._show = false;\n }\n }\n\n private _onClickOutsideBound = this._onClickOutside.bind(this);\n\n private _onKeyDown(ev: KeyboardEvent) {\n const {key} = ev;\n\n if (\n key === 'ArrowUp' ||\n key === 'ArrowDown' ||\n key === 'Escape' ||\n key === 'Enter'\n ) {\n ev.preventDefault();\n }\n\n switch (key) {\n case 'ArrowUp':\n this._handleArrowUp();\n break;\n case 'ArrowDown':\n this._handleArrowDown();\n break;\n case 'Escape':\n this._handleEscape();\n break;\n case 'Enter':\n this._handleEnter();\n break;\n default:\n }\n }\n\n private _handleArrowUp() {\n if (this._selectedClickableItemIndex === 0) {\n this._selectedClickableItemIndex = this._clickableItemIndexes.length - 1;\n } else {\n this._selectedClickableItemIndex -= 1;\n }\n }\n\n private _handleArrowDown() {\n if (\n this._selectedClickableItemIndex + 1 <\n this._clickableItemIndexes.length\n ) {\n this._selectedClickableItemIndex += 1;\n } else {\n this._selectedClickableItemIndex = 0;\n }\n }\n\n private _handleEscape() {\n this._show = false;\n document.removeEventListener('click', this._onClickOutsideBound);\n }\n\n private _handleEnter() {\n if (this._selectedClickableItemIndex === -1) {\n return;\n }\n\n const realItemIndex =\n this._clickableItemIndexes[this._selectedClickableItemIndex];\n const options = this._wrapperEl.querySelectorAll(\n 'vscode-context-menu-item'\n );\n const selectedOption = options[realItemIndex];\n const {keybinding, label, value, separator, tabindex} = selectedOption;\n const detail: VscClickEventDetail = {\n keybinding,\n label,\n value,\n separator,\n tabindex,\n };\n\n this.dispatchEvent(\n new CustomEvent('vsc-select', {\n detail,\n bubbles: true,\n composed: true,\n })\n );\n this._show = false;\n document.removeEventListener('click', this._onClickOutsideBound);\n }\n\n private _onItemClick(event: CustomEvent) {\n const {detail} = event;\n this._show = false;\n\n this.dispatchEvent(\n new CustomEvent('vsc-select', {\n detail,\n bubbles: true,\n composed: true,\n })\n );\n }\n\n private _onItemMouseOver(event: MouseEvent) {\n const el = event.target as HTMLElement;\n const index = el.dataset.index ? +el.dataset.index : -1;\n const found = this._clickableItemIndexes.findIndex(\n (item) => item === index\n );\n\n if (found !== -1) {\n this._selectedClickableItemIndex = found;\n }\n }\n\n private _onItemMouseOut() {\n this._selectedClickableItemIndex = -1;\n }\n\n render(): TemplateResult {\n if (!this._show) {\n return html`${nothing}`;\n }\n\n const selectedIndex =\n this._clickableItemIndexes[this._selectedClickableItemIndex];\n\n return html`\n <div class=\"context-menu\" tabindex=\"0\">\n ${this.data\n ? this.data.map(\n (\n {\n label = '',\n keybinding = '',\n value = '',\n separator = false,\n tabindex = 0,\n },\n index\n ) => html`\n <vscode-context-menu-item\n label=\"${label}\"\n keybinding=\"${keybinding}\"\n value=\"${value}\"\n ?separator=\"${separator}\"\n ?selected=\"${index === selectedIndex}\"\n tabindex=\"${tabindex}\"\n @vsc-click=\"${this._onItemClick}\"\n @mouseover=${this._onItemMouseOver}\n @mouseout=${this._onItemMouseOut}\n data-index=${index}\n ></vscode-context-menu-item>\n `\n )\n : html`<slot></slot>`}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'vscode-context-menu': VscodeContextMenu;\n }\n}\n"]}
1
+ {"version":3,"file":"vscode-context-menu.js","sourceRoot":"","sources":["../../src/vscode-context-menu/vscode-context-menu.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAC,IAAI,EAAE,OAAO,EAAiB,MAAM,KAAK,CAAC;AAClD,OAAO,EAAC,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAC,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAC,UAAU,EAAC,MAAM,2BAA2B,CAAC;AAKrD,OAAO,6BAA6B,CAAC;AACrC,OAAO,MAAM,MAAM,iCAAiC,CAAC;AAkBrD;;;;;;;;;;GAUG;AAEI,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,UAAU;IAI/C,IAAI,IAAI,CAAC,IAAoB;QAC3B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAElB,MAAM,OAAO,GAAa,EAAE,CAAC;QAE7B,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACpB,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,qBAAqB,GAAG,OAAO,CAAC;IACvC,CAAC;IACD,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAGD,IAAI,IAAI,CAAC,IAAa;QACpB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,2BAA2B,GAAG,CAAC,CAAC,CAAC;QAEtC,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE;gBAC5B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;oBACpB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;gBAC1B,CAAC;gBAED,qBAAqB,CAAC,GAAG,EAAE;oBACzB,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,oBAAoB,EAAE;wBAC5D,IAAI,EAAE,IAAI;qBACX,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAMD;QACE,KAAK,EAAE,CAAC;QALV,gBAAgB;QAEhB,aAAQ,GAAG,CAAC,CAAC;QAOb;;;;;;;;YAQI;QAGI,gCAA2B,GAAG,CAAC,CAAC,CAAC;QAGjC,UAAK,GAAG,KAAK,CAAC;QAKd,UAAK,GAAmB,EAAE,CAAC;QAE3B,0BAAqB,GAAa,EAAE,CAAC;QAQrC,yBAAoB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAhC7D,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACpD,CAAC;IAyBO,eAAe,CAAC,EAAc;QACpC,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACrB,CAAC;IACH,CAAC;IAIO,UAAU,CAAC,EAAiB;QAClC,MAAM,EAAC,GAAG,EAAC,GAAG,EAAE,CAAC;QAEjB,IACE,GAAG,KAAK,SAAS;YACjB,GAAG,KAAK,WAAW;YACnB,GAAG,KAAK,QAAQ;YAChB,GAAG,KAAK,OAAO,EACf,CAAC;YACD,EAAE,CAAC,cAAc,EAAE,CAAC;QACtB,CAAC;QAED,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,SAAS;gBACZ,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,MAAM;YACR,KAAK,WAAW;gBACd,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACxB,MAAM;YACR,KAAK,QAAQ;gBACX,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrB,MAAM;YACR,KAAK,OAAO;gBACV,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,MAAM;YACR,QAAQ;QACV,CAAC;IACH,CAAC;IAEO,cAAc;QACpB,IAAI,IAAI,CAAC,2BAA2B,KAAK,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC,CAAC;QAC3E,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,2BAA2B,IAAI,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAEO,gBAAgB;QACtB,IACE,IAAI,CAAC,2BAA2B,GAAG,CAAC;YACpC,IAAI,CAAC,qBAAqB,CAAC,MAAM,EACjC,CAAC;YACD,IAAI,CAAC,2BAA2B,IAAI,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,2BAA2B,GAAG,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAEO,aAAa;QACnB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACnE,CAAC;IAEO,oBAAoB,CAAC,cAAqC;QAChE,MAAM,EAAC,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAC,GAAG,cAAc,CAAC;QAEvE,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAC,iBAAiB,EAAE;YACjC,MAAM,EAAE;gBACN,UAAU;gBACV,KAAK;gBACL,SAAS;gBACT,QAAQ;gBACR,KAAK;aACN;SACF,CAAuB,CACzB,CAAC;IACJ,CAAC;IAEO,0BAA0B,CAAC,cAAqC;QACtE,MAAM,EAAC,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAC,GAAG,cAAc,CAAC;QACvE,MAAM,MAAM,GAAwB;YAClC,UAAU;YACV,KAAK;YACL,KAAK;YACL,SAAS;YACT,QAAQ;SACT,CAAC;QAEF,kBAAkB;QAClB,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAC,YAAY,EAAE;YAC5B,MAAM;YACN,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;SACf,CAAC,CACH,CAAC;IACJ,CAAC;IAEO,YAAY;QAClB,IAAI,IAAI,CAAC,2BAA2B,KAAK,CAAC,CAAC,EAAE,CAAC;YAC5C,OAAO;QACT,CAAC;QAED,MAAM,aAAa,GACjB,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAC9C,0BAA0B,CAC3B,CAAC;QACF,MAAM,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;QAE9C,IAAI,CAAC,0BAA0B,CAAC,cAAc,CAAC,CAAC;QAChD,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACnE,CAAC;IAEO,YAAY,CAAC,KAAkB;QACrC,MAAM,EAAE,GAAG,KAAK,CAAC,aAAsC,CAAC;QAExD,IAAI,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC;QACpC,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAEO,gBAAgB,CAAC,KAAiB;QACxC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAqB,CAAC;QACvC,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,MAAM,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAChD,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,KAAK,CACzB,CAAC;QAEF,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACjB,IAAI,CAAC,2BAA2B,GAAG,KAAK,CAAC;QAC3C,CAAC;IACH,CAAC;IAEO,eAAe;QACrB,IAAI,CAAC,2BAA2B,GAAG,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,OAAO,IAAI,CAAA,GAAG,OAAO,EAAE,CAAC;QAC1B,CAAC;QAED,MAAM,aAAa,GACjB,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAE/D,OAAO,IAAI,CAAA;;UAEL,IAAI,CAAC,IAAI;YACT,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACX,CACE,EACE,KAAK,GAAG,EAAE,EACV,UAAU,GAAG,EAAE,EACf,KAAK,GAAG,EAAE,EACV,SAAS,GAAG,KAAK,EACjB,QAAQ,GAAG,CAAC,GACb,EACD,KAAK,EACL,EAAE,CAAC,IAAI,CAAA;;2BAEI,KAAK;gCACA,UAAU;2BACf,KAAK;gCACA,SAAS;+BACV,KAAK,KAAK,aAAa;8BACxB,QAAQ;gCACN,IAAI,CAAC,YAAY;+BAClB,IAAI,CAAC,gBAAgB;8BACtB,IAAI,CAAC,eAAe;+BACnB,KAAK;;eAErB,CACF;YACH,CAAC,CAAC,IAAI,CAAA,eAAe;;KAE1B,CAAC;IACJ,CAAC;;AA7PM,wBAAM,GAAG,MAAM,AAAT,CAAU;AAGvB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAC,CAAC;6CAazC;AAMD;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;6CAkBxC;AAOD;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;mDAC3B;AAkBL;IADP,KAAK,EAAE;sEACiC;AAGjC;IADP,KAAK,EAAE;gDACc;AAGd;IADP,KAAK,CAAC,eAAe,CAAC;qDACa;AAtEzB,iBAAiB;IAD7B,aAAa,CAAC,qBAAqB,CAAC;GACxB,iBAAiB,CA+P7B","sourcesContent":["import {html, nothing, TemplateResult} from 'lit';\nimport {customElement, property, query, state} from 'lit/decorators.js';\nimport {VscElement} from '../includes/VscElement.js';\nimport type {\n VscClickEventDetail,\n VscodeContextMenuItem,\n} from '../vscode-context-menu-item/vscode-context-menu-item.js';\nimport '../vscode-context-menu-item';\nimport styles from './vscode-context-menu.styles.js';\n\ninterface MenuItemData {\n label: string;\n keybinding?: string;\n value?: string;\n separator?: boolean;\n tabindex?: number;\n}\n\nexport type VscMenuSelectEvent = CustomEvent<{\n keybinding: string;\n label: string;\n value: string;\n separator: boolean;\n tabindex: number;\n}>;\n\n/**\n * @fires {VscMenuSelectEvent} vsc-menu-select - Emitted when a menu item is clicked\n *\n * @cssprop --vscode-font-family\n * @cssprop --vscode-font-size\n * @cssprop --vscode-font-weight\n * @cssprop --vscode-menu-background\n * @cssprop --vscode-menu-border\n * @cssprop --vscode-menu-foreground\n * @cssprop --vscode-widget-shadow\n */\n@customElement('vscode-context-menu')\nexport class VscodeContextMenu extends VscElement {\n static styles = styles;\n\n @property({type: Array, attribute: false})\n set data(data: MenuItemData[]) {\n this._data = data;\n\n const indexes: number[] = [];\n\n data.forEach((v, i) => {\n if (!v.separator) {\n indexes.push(i);\n }\n });\n\n this._clickableItemIndexes = indexes;\n }\n get data(): MenuItemData[] {\n return this._data;\n }\n\n @property({type: Boolean, reflect: true})\n set show(show: boolean) {\n this._show = show;\n this._selectedClickableItemIndex = -1;\n\n if (show) {\n this.updateComplete.then(() => {\n if (this._wrapperEl) {\n this._wrapperEl.focus();\n }\n\n requestAnimationFrame(() => {\n document.addEventListener('click', this._onClickOutsideBound, {\n once: true,\n });\n });\n });\n }\n }\n get show(): boolean {\n return this._show;\n }\n\n /** @internal */\n @property({type: Number, reflect: true})\n tabIndex = 0;\n\n constructor() {\n super();\n this.addEventListener('keydown', this._onKeyDown);\n }\n\n /* connectedCallback(): void {\n super.connectedCallback();\n document.addEventListener('click', this._onClickOutsideBound);\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n document.removeEventListener('click', this._onClickOutsideBound);\n } */\n\n @state()\n private _selectedClickableItemIndex = -1;\n\n @state()\n private _show = false;\n\n @query('.context-menu')\n private _wrapperEl!: HTMLDivElement;\n\n private _data: MenuItemData[] = [];\n\n private _clickableItemIndexes: number[] = [];\n\n private _onClickOutside(ev: MouseEvent) {\n if (!ev.composedPath().includes(this)) {\n this._show = false;\n }\n }\n\n private _onClickOutsideBound = this._onClickOutside.bind(this);\n\n private _onKeyDown(ev: KeyboardEvent) {\n const {key} = ev;\n\n if (\n key === 'ArrowUp' ||\n key === 'ArrowDown' ||\n key === 'Escape' ||\n key === 'Enter'\n ) {\n ev.preventDefault();\n }\n\n switch (key) {\n case 'ArrowUp':\n this._handleArrowUp();\n break;\n case 'ArrowDown':\n this._handleArrowDown();\n break;\n case 'Escape':\n this._handleEscape();\n break;\n case 'Enter':\n this._handleEnter();\n break;\n default:\n }\n }\n\n private _handleArrowUp() {\n if (this._selectedClickableItemIndex === 0) {\n this._selectedClickableItemIndex = this._clickableItemIndexes.length - 1;\n } else {\n this._selectedClickableItemIndex -= 1;\n }\n }\n\n private _handleArrowDown() {\n if (\n this._selectedClickableItemIndex + 1 <\n this._clickableItemIndexes.length\n ) {\n this._selectedClickableItemIndex += 1;\n } else {\n this._selectedClickableItemIndex = 0;\n }\n }\n\n private _handleEscape() {\n this._show = false;\n document.removeEventListener('click', this._onClickOutsideBound);\n }\n\n private _dispatchSelectEvent(selectedOption: VscodeContextMenuItem) {\n const {keybinding, label, value, separator, tabindex} = selectedOption;\n\n this.dispatchEvent(\n new CustomEvent('vsc-menu-select', {\n detail: {\n keybinding,\n label,\n separator,\n tabindex,\n value,\n },\n }) as VscMenuSelectEvent\n );\n }\n\n private _dispatchLegacySelectEvent(selectedOption: VscodeContextMenuItem) {\n const {keybinding, label, value, separator, tabindex} = selectedOption;\n const detail: VscClickEventDetail = {\n keybinding,\n label,\n value,\n separator,\n tabindex,\n };\n\n /** @deprecated */\n this.dispatchEvent(\n new CustomEvent('vsc-select', {\n detail,\n bubbles: true,\n composed: true,\n })\n );\n }\n\n private _handleEnter() {\n if (this._selectedClickableItemIndex === -1) {\n return;\n }\n\n const realItemIndex =\n this._clickableItemIndexes[this._selectedClickableItemIndex];\n const options = this._wrapperEl.querySelectorAll(\n 'vscode-context-menu-item'\n );\n const selectedOption = options[realItemIndex];\n\n this._dispatchLegacySelectEvent(selectedOption);\n this._dispatchSelectEvent(selectedOption);\n this._show = false;\n document.removeEventListener('click', this._onClickOutsideBound);\n }\n\n private _onItemClick(event: CustomEvent) {\n const et = event.currentTarget as VscodeContextMenuItem;\n\n this._dispatchLegacySelectEvent(et);\n this._dispatchSelectEvent(et);\n this._show = false;\n }\n\n private _onItemMouseOver(event: MouseEvent) {\n const el = event.target as HTMLElement;\n const index = el.dataset.index ? +el.dataset.index : -1;\n const found = this._clickableItemIndexes.findIndex(\n (item) => item === index\n );\n\n if (found !== -1) {\n this._selectedClickableItemIndex = found;\n }\n }\n\n private _onItemMouseOut() {\n this._selectedClickableItemIndex = -1;\n }\n\n render(): TemplateResult {\n if (!this._show) {\n return html`${nothing}`;\n }\n\n const selectedIndex =\n this._clickableItemIndexes[this._selectedClickableItemIndex];\n\n return html`\n <div class=\"context-menu\" tabindex=\"0\">\n ${this.data\n ? this.data.map(\n (\n {\n label = '',\n keybinding = '',\n value = '',\n separator = false,\n tabindex = 0,\n },\n index\n ) => html`\n <vscode-context-menu-item\n label=\"${label}\"\n keybinding=\"${keybinding}\"\n value=\"${value}\"\n ?separator=\"${separator}\"\n ?selected=\"${index === selectedIndex}\"\n tabindex=\"${tabindex}\"\n @vsc-click=\"${this._onItemClick}\"\n @mouseover=${this._onItemMouseOver}\n @mouseout=${this._onItemMouseOut}\n data-index=${index}\n ></vscode-context-menu-item>\n `\n )\n : html`<slot></slot>`}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'vscode-context-menu': VscodeContextMenu;\n }\n\n interface GlobalEventHandlersEventMap {\n 'vsc-menu-select': VscMenuSelectEvent;\n }\n}\n"]}
@@ -8,7 +8,7 @@ export interface VscClickEventDetail {
8
8
  tabindex: number;
9
9
  }
10
10
  /**
11
- * Child component of [ContextMenu](https://bendera.github.io/vscode-webview-elements/components/vscode-context-menu/).
11
+ * Child component of [ContextMenu](/components/context-menu/).
12
12
  *
13
13
  * @cssprop --vscode-font-family
14
14
  * @cssprop --vscode-font-size
@@ -1 +1 @@
1
- {"version":3,"file":"vscode-context-menu-item.d.ts","sourceRoot":"","sources":["../../src/vscode-context-menu-item/vscode-context-menu-item.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,cAAc,EAAC,MAAM,KAAK,CAAC;AAElD,OAAO,EAAC,UAAU,EAAC,MAAM,2BAA2B,CAAC;AAGrD,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;GAYG;AACH,qBACa,qBAAsB,SAAQ,UAAU;IACnD,MAAM,CAAC,MAAM,+BAAU;IAGvB,KAAK,SAAM;IAGX,UAAU,SAAM;IAGhB,KAAK,SAAM;IAGX,SAAS,UAAS;IAGlB,QAAQ,SAAK;IAEb,OAAO,CAAC,WAAW;IAgBnB,MAAM,IAAI,cAAc;CAsBzB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,0BAA0B,EAAE,qBAAqB,CAAC;KACnD;CACF"}
1
+ {"version":3,"file":"vscode-context-menu-item.d.ts","sourceRoot":"","sources":["../../src/vscode-context-menu-item/vscode-context-menu-item.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,cAAc,EAAC,MAAM,KAAK,CAAC;AAElD,OAAO,EAAC,UAAU,EAAC,MAAM,2BAA2B,CAAC;AAGrD,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;GAYG;AACH,qBACa,qBAAsB,SAAQ,UAAU;IACnD,MAAM,CAAC,MAAM,+BAAU;IAGvB,KAAK,SAAM;IAGX,UAAU,SAAM;IAGhB,KAAK,SAAM;IAGX,SAAS,UAAS;IAGlB,QAAQ,SAAK;IAEb,OAAO,CAAC,WAAW;IAiBnB,MAAM,IAAI,cAAc;CAsBzB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,0BAA0B,EAAE,qBAAqB,CAAC;KACnD;CACF"}
@@ -9,7 +9,7 @@ import { customElement, property } from 'lit/decorators.js';
9
9
  import { VscElement } from '../includes/VscElement.js';
10
10
  import styles from './vscode-context-menu-item.styles.js';
11
11
  /**
12
- * Child component of [ContextMenu](https://bendera.github.io/vscode-webview-elements/components/vscode-context-menu/).
12
+ * Child component of [ContextMenu](/components/context-menu/).
13
13
  *
14
14
  * @cssprop --vscode-font-family
15
15
  * @cssprop --vscode-font-size
@@ -31,6 +31,7 @@ let VscodeContextMenuItem = class VscodeContextMenuItem extends VscElement {
31
31
  this.tabindex = 0;
32
32
  }
33
33
  onItemClick() {
34
+ /** @internal */
34
35
  this.dispatchEvent(new CustomEvent('vsc-click', {
35
36
  detail: {
36
37
  label: this.label,
@@ -1 +1 @@
1
- {"version":3,"file":"vscode-context-menu-item.js","sourceRoot":"","sources":["../../src/vscode-context-menu-item/vscode-context-menu-item.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAC,IAAI,EAAE,OAAO,EAAiB,MAAM,KAAK,CAAC;AAClD,OAAO,EAAC,aAAa,EAAE,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAC,UAAU,EAAC,MAAM,2BAA2B,CAAC;AACrD,OAAO,MAAM,MAAM,sCAAsC,CAAC;AAU1D;;;;;;;;;;;;GAYG;AAEI,IAAM,qBAAqB,GAA3B,MAAM,qBAAsB,SAAQ,UAAU;IAA9C;;QAIL,UAAK,GAAG,EAAE,CAAC;QAGX,eAAU,GAAG,EAAE,CAAC;QAGhB,UAAK,GAAG,EAAE,CAAC;QAGX,cAAS,GAAG,KAAK,CAAC;QAGlB,aAAQ,GAAG,CAAC,CAAC;IAwCf,CAAC;IAtCS,WAAW;QACjB,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAsB,WAAW,EAAE;YAChD,MAAM,EAAE;gBACN,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK;gBAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB;YACD,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;SACf,CAAC,CACH,CAAC;IACJ,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;QACP,IAAI,CAAC,SAAS;YACd,CAAC,CAAC,IAAI,CAAA;;;;WAIH;YACH,CAAC,CAAC,IAAI,CAAA;;2BAEa,IAAI,CAAC,WAAW;kBACzB,IAAI,CAAC,KAAK;gBACV,CAAC,CAAC,IAAI,CAAA,uBAAuB,IAAI,CAAC,KAAK,SAAS;gBAChD,CAAC,CAAC,OAAO;kBACT,IAAI,CAAC,UAAU;gBACf,CAAC,CAAC,IAAI,CAAA,4BAA4B,IAAI,CAAC,UAAU,SAAS;gBAC1D,CAAC,CAAC,OAAO;;;WAGhB;KACN,CAAC;IACJ,CAAC;;AAtDM,4BAAM,GAAG,MAAM,AAAT,CAAU;AAGvB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;oDACd;AAGX;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;yDACT;AAGhB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;oDACd;AAGX;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;wDACvB;AAGlB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;uDACZ;AAhBF,qBAAqB;IADjC,aAAa,CAAC,0BAA0B,CAAC;GAC7B,qBAAqB,CAwDjC","sourcesContent":["import {html, nothing, TemplateResult} from 'lit';\nimport {customElement, property} from 'lit/decorators.js';\nimport {VscElement} from '../includes/VscElement.js';\nimport styles from './vscode-context-menu-item.styles.js';\n\nexport interface VscClickEventDetail {\n label: string;\n keybinding: string;\n value: string;\n separator: boolean;\n tabindex: number;\n}\n\n/**\n * Child component of [ContextMenu](https://bendera.github.io/vscode-webview-elements/components/vscode-context-menu/).\n *\n * @cssprop --vscode-font-family\n * @cssprop --vscode-font-size\n * @cssprop --vscode-font-weight\n * @cssprop --vscode-menu-background\n * @cssprop [--vscode-menu-selectionBorder=var(--vscode-menu-selectionBackground)]\n * @cssprop --vscode-menu-foreground\n * @cssprop --vscode-menu-selectionBackground\n * @cssprop --vscode-menu-selectionForeground\n * @cssprop --vscode-menu-separatorBackground\n */\n@customElement('vscode-context-menu-item')\nexport class VscodeContextMenuItem extends VscElement {\n static styles = styles;\n\n @property({type: String})\n label = '';\n\n @property({type: String})\n keybinding = '';\n\n @property({type: String})\n value = '';\n\n @property({type: Boolean, reflect: true})\n separator = false;\n\n @property({type: Number})\n tabindex = 0;\n\n private onItemClick() {\n this.dispatchEvent(\n new CustomEvent<VscClickEventDetail>('vsc-click', {\n detail: {\n label: this.label,\n keybinding: this.keybinding,\n value: this.value || this.label,\n separator: this.separator,\n tabindex: this.tabindex,\n },\n bubbles: true,\n composed: true,\n })\n );\n }\n\n render(): TemplateResult {\n return html`\n ${this.separator\n ? html`\n <div class=\"context-menu-item separator\">\n <span class=\"ruler\"></span>\n </div>\n `\n : html`\n <div class=\"context-menu-item\">\n <a @click=\"${this.onItemClick}\">\n ${this.label\n ? html`<span class=\"label\">${this.label}</span>`\n : nothing}\n ${this.keybinding\n ? html`<span class=\"keybinding\">${this.keybinding}</span>`\n : nothing}\n </a>\n </div>\n `}\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'vscode-context-menu-item': VscodeContextMenuItem;\n }\n}\n"]}
1
+ {"version":3,"file":"vscode-context-menu-item.js","sourceRoot":"","sources":["../../src/vscode-context-menu-item/vscode-context-menu-item.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAC,IAAI,EAAE,OAAO,EAAiB,MAAM,KAAK,CAAC;AAClD,OAAO,EAAC,aAAa,EAAE,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAC,UAAU,EAAC,MAAM,2BAA2B,CAAC;AACrD,OAAO,MAAM,MAAM,sCAAsC,CAAC;AAU1D;;;;;;;;;;;;GAYG;AAEI,IAAM,qBAAqB,GAA3B,MAAM,qBAAsB,SAAQ,UAAU;IAA9C;;QAIL,UAAK,GAAG,EAAE,CAAC;QAGX,eAAU,GAAG,EAAE,CAAC;QAGhB,UAAK,GAAG,EAAE,CAAC;QAGX,cAAS,GAAG,KAAK,CAAC;QAGlB,aAAQ,GAAG,CAAC,CAAC;IAyCf,CAAC;IAvCS,WAAW;QACjB,gBAAgB;QAChB,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAsB,WAAW,EAAE;YAChD,MAAM,EAAE;gBACN,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK;gBAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB;YACD,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;SACf,CAAC,CACH,CAAC;IACJ,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;QACP,IAAI,CAAC,SAAS;YACd,CAAC,CAAC,IAAI,CAAA;;;;WAIH;YACH,CAAC,CAAC,IAAI,CAAA;;2BAEa,IAAI,CAAC,WAAW;kBACzB,IAAI,CAAC,KAAK;gBACV,CAAC,CAAC,IAAI,CAAA,uBAAuB,IAAI,CAAC,KAAK,SAAS;gBAChD,CAAC,CAAC,OAAO;kBACT,IAAI,CAAC,UAAU;gBACf,CAAC,CAAC,IAAI,CAAA,4BAA4B,IAAI,CAAC,UAAU,SAAS;gBAC1D,CAAC,CAAC,OAAO;;;WAGhB;KACN,CAAC;IACJ,CAAC;;AAvDM,4BAAM,GAAG,MAAM,AAAT,CAAU;AAGvB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;oDACd;AAGX;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;yDACT;AAGhB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;oDACd;AAGX;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;wDACvB;AAGlB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;uDACZ;AAhBF,qBAAqB;IADjC,aAAa,CAAC,0BAA0B,CAAC;GAC7B,qBAAqB,CAyDjC","sourcesContent":["import {html, nothing, TemplateResult} from 'lit';\nimport {customElement, property} from 'lit/decorators.js';\nimport {VscElement} from '../includes/VscElement.js';\nimport styles from './vscode-context-menu-item.styles.js';\n\nexport interface VscClickEventDetail {\n label: string;\n keybinding: string;\n value: string;\n separator: boolean;\n tabindex: number;\n}\n\n/**\n * Child component of [ContextMenu](/components/context-menu/).\n *\n * @cssprop --vscode-font-family\n * @cssprop --vscode-font-size\n * @cssprop --vscode-font-weight\n * @cssprop --vscode-menu-background\n * @cssprop [--vscode-menu-selectionBorder=var(--vscode-menu-selectionBackground)]\n * @cssprop --vscode-menu-foreground\n * @cssprop --vscode-menu-selectionBackground\n * @cssprop --vscode-menu-selectionForeground\n * @cssprop --vscode-menu-separatorBackground\n */\n@customElement('vscode-context-menu-item')\nexport class VscodeContextMenuItem extends VscElement {\n static styles = styles;\n\n @property({type: String})\n label = '';\n\n @property({type: String})\n keybinding = '';\n\n @property({type: String})\n value = '';\n\n @property({type: Boolean, reflect: true})\n separator = false;\n\n @property({type: Number})\n tabindex = 0;\n\n private onItemClick() {\n /** @internal */\n this.dispatchEvent(\n new CustomEvent<VscClickEventDetail>('vsc-click', {\n detail: {\n label: this.label,\n keybinding: this.keybinding,\n value: this.value || this.label,\n separator: this.separator,\n tabindex: this.tabindex,\n },\n bubbles: true,\n composed: true,\n })\n );\n }\n\n render(): TemplateResult {\n return html`\n ${this.separator\n ? html`\n <div class=\"context-menu-item separator\">\n <span class=\"ruler\"></span>\n </div>\n `\n : html`\n <div class=\"context-menu-item\">\n <a @click=\"${this.onItemClick}\">\n ${this.label\n ? html`<span class=\"label\">${this.label}</span>`\n : nothing}\n ${this.keybinding\n ? html`<span class=\"keybinding\">${this.keybinding}</span>`\n : nothing}\n </a>\n </div>\n `}\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'vscode-context-menu-item': VscodeContextMenuItem;\n }\n}\n"]}
@@ -11,7 +11,7 @@ export declare class VscodeSplitLayout extends VscElement {
11
11
  * Controls the draggable area size in pixels. it is recommended to use the value of `workbench.sash.size`.
12
12
  */
13
13
  handleSize: number;
14
- initialPosition: string;
14
+ initialHandlePosition: string;
15
15
  private _startPaneRight;
16
16
  private _startPaneBottom;
17
17
  private _endPaneTop;
@@ -1 +1 @@
1
- {"version":3,"file":"vscode-split-layout.d.ts","sourceRoot":"","sources":["../../src/vscode-split-layout/vscode-split-layout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,cAAc,EAAC,MAAM,KAAK,CAAC;AASzC,OAAO,EAAC,UAAU,EAAC,MAAM,2BAA2B,CAAC;AAGrD;;GAEG;AACH,qBACa,iBAAkB,SAAQ,UAAU;IAC/C,MAAM,CAAC,MAAM,+BAAU;IAGvB,KAAK,EAAE,YAAY,GAAG,UAAU,CAAc;IAG9C,eAAe,UAAS;IAExB;;OAEG;IAEH,UAAU,SAAK;IAGf,eAAe,SAAS;IAGxB,OAAO,CAAC,eAAe,CAAK;IAG5B,OAAO,CAAC,gBAAgB,CAAK;IAG7B,OAAO,CAAC,WAAW,CAAK;IAGxB,OAAO,CAAC,YAAY,CAAK;IAGzB,OAAO,CAAC,WAAW,CAAK;IAGxB,OAAO,CAAC,UAAU,CAAK;IAGvB,OAAO,CAAC,aAAa,CAAS;IAG9B,OAAO,CAAC,MAAM,CAAS;IAGvB,OAAO,CAAC,KAAK,CAAS;IAGtB,OAAO,CAAC,qBAAqB,CAAiB;IAG9C,OAAO,CAAC,mBAAmB,CAAiB;IAE5C,OAAO,CAAC,UAAU,CAA0B;IAC5C,OAAO,CAAC,aAAa,CAAK;IAE1B,iBAAiB,IAAI,IAAI;IAMzB,gBAAgB;IAChB,uBAAuB;IAIvB,OAAO,CAAC,aAAa;IAiCrB,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,gBAAgB;IAyBxB,OAAO,CAAC,cAAc,CAIpB;IAEF,OAAO,CAAC,gBAAgB,CAmCtB;IAEF,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,iBAAiB;IAazB,MAAM,IAAI,cAAc;CA6DzB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,qBAAqB,EAAE,iBAAiB,CAAC;KAC1C;CACF"}
1
+ {"version":3,"file":"vscode-split-layout.d.ts","sourceRoot":"","sources":["../../src/vscode-split-layout/vscode-split-layout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,cAAc,EAAC,MAAM,KAAK,CAAC;AASzC,OAAO,EAAC,UAAU,EAAC,MAAM,2BAA2B,CAAC;AAGrD;;GAEG;AACH,qBACa,iBAAkB,SAAQ,UAAU;IAC/C,MAAM,CAAC,MAAM,+BAAU;IAGvB,KAAK,EAAE,YAAY,GAAG,UAAU,CAAc;IAG9C,eAAe,UAAS;IAExB;;OAEG;IAEH,UAAU,SAAK;IAGf,qBAAqB,SAAS;IAG9B,OAAO,CAAC,eAAe,CAAK;IAG5B,OAAO,CAAC,gBAAgB,CAAK;IAG7B,OAAO,CAAC,WAAW,CAAK;IAGxB,OAAO,CAAC,YAAY,CAAK;IAGzB,OAAO,CAAC,WAAW,CAAK;IAGxB,OAAO,CAAC,UAAU,CAAK;IAGvB,OAAO,CAAC,aAAa,CAAS;IAG9B,OAAO,CAAC,MAAM,CAAS;IAGvB,OAAO,CAAC,KAAK,CAAS;IAGtB,OAAO,CAAC,qBAAqB,CAAiB;IAG9C,OAAO,CAAC,mBAAmB,CAAiB;IAE5C,OAAO,CAAC,UAAU,CAA0B;IAC5C,OAAO,CAAC,aAAa,CAAK;IAE1B,iBAAiB,IAAI,IAAI;IAMzB,gBAAgB;IAChB,uBAAuB;IAIvB,OAAO,CAAC,aAAa;IAiCrB,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,gBAAgB;IAyBxB,OAAO,CAAC,cAAc,CAIpB;IAEF,OAAO,CAAC,gBAAgB,CAmCtB;IAEF,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,iBAAiB;IAazB,MAAM,IAAI,cAAc;CA6DzB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,qBAAqB,EAAE,iBAAiB,CAAC;KAC1C;CACF"}
@@ -23,7 +23,7 @@ let VscodeSplitLayout = VscodeSplitLayout_1 = class VscodeSplitLayout extends Vs
23
23
  * Controls the draggable area size in pixels. it is recommended to use the value of `workbench.sash.size`.
24
24
  */
25
25
  this.handleSize = 4;
26
- this.initialPosition = '50%';
26
+ this.initialHandlePosition = '50%';
27
27
  this._startPaneRight = 0;
28
28
  this._startPaneBottom = 0;
29
29
  this._endPaneTop = 0;
@@ -77,7 +77,7 @@ let VscodeSplitLayout = VscodeSplitLayout_1 = class VscodeSplitLayout extends Vs
77
77
  this._boundRect = this.getBoundingClientRect();
78
78
  const { height, width } = this._boundRect;
79
79
  const maxPos = this.split === 'vertical' ? width : height;
80
- const matches = /(^[0-9.]+)(%{0,1})$/.exec(this.initialPosition);
80
+ const matches = /(^[0-9.]+)(%{0,1})$/.exec(this.initialHandlePosition);
81
81
  let pos = 0;
82
82
  let numericVal = 0;
83
83
  if (matches) {
@@ -213,8 +213,8 @@ __decorate([
213
213
  property({ type: Number, reflect: true, attribute: 'handle-size' })
214
214
  ], VscodeSplitLayout.prototype, "handleSize", void 0);
215
215
  __decorate([
216
- property({ reflect: true, attribute: 'initial-position' })
217
- ], VscodeSplitLayout.prototype, "initialPosition", void 0);
216
+ property({ reflect: true, attribute: 'initial-handle-position' })
217
+ ], VscodeSplitLayout.prototype, "initialHandlePosition", void 0);
218
218
  __decorate([
219
219
  state()
220
220
  ], VscodeSplitLayout.prototype, "_startPaneRight", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"vscode-split-layout.js","sourceRoot":"","sources":["../../src/vscode-split-layout/vscode-split-layout.ts"],"names":[],"mappings":"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","sourcesContent":["import {html, TemplateResult} from 'lit';\nimport {\n customElement,\n property,\n queryAssignedElements,\n state,\n} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport {styleMap} from 'lit/directives/style-map.js';\nimport {VscElement} from '../includes/VscElement.js';\nimport styles from './vscode-split-layout.styles.js';\n\n/**\n * @cssprop [--hover-border=var(--vscode-sash-hoverBorder)]\n */\n@customElement('vscode-split-layout')\nexport class VscodeSplitLayout extends VscElement {\n static styles = styles;\n\n @property({reflect: true})\n split: 'horizontal' | 'vertical' = 'vertical';\n\n @property({type: Boolean, reflect: true, attribute: 'reset-on-dbl-click'})\n resetOnDblClick = false;\n\n /**\n * Controls the draggable area size in pixels. it is recommended to use the value of `workbench.sash.size`.\n */\n @property({type: Number, reflect: true, attribute: 'handle-size'})\n handleSize = 4;\n\n @property({reflect: true, attribute: 'initial-position'})\n initialPosition = '50%';\n\n @state()\n private _startPaneRight = 0;\n\n @state()\n private _startPaneBottom = 0;\n\n @state()\n private _endPaneTop = 0;\n\n @state()\n private _endPaneLeft = 0;\n\n @state()\n private _handleLeft = 0;\n\n @state()\n private _handleTop = 0;\n\n @state()\n private _isDragActive = false;\n\n @state()\n private _hover = false;\n\n @state()\n private _hide = false;\n\n @queryAssignedElements({slot: 'start', selector: 'vscode-split-layout'})\n private _nestedLayoutsAtStart!: HTMLElement[];\n\n @queryAssignedElements({slot: 'end', selector: 'vscode-split-layout'})\n private _nestedLayoutsAtEnd!: HTMLElement[];\n\n private _boundRect: DOMRect = new DOMRect();\n private _handleOffset = 0;\n\n connectedCallback(): void {\n super.connectedCallback();\n\n this._initPosition();\n }\n\n /** @internal */\n initializeResizeHandler() {\n this._initPosition();\n }\n\n private _initPosition() {\n this._boundRect = this.getBoundingClientRect();\n const {height, width} = this._boundRect;\n const maxPos = this.split === 'vertical' ? width : height;\n const matches = /(^[0-9.]+)(%{0,1})$/.exec(this.initialPosition);\n let pos = 0;\n let numericVal = 0;\n\n if (matches) {\n numericVal = parseFloat(matches[1]);\n }\n\n if (matches && matches[2] === '%') {\n pos = Math.min(maxPos, (maxPos / 100) * numericVal);\n } else if (matches && matches[2] !== '%') {\n pos = Math.min(numericVal, maxPos);\n } else {\n pos = maxPos / 2;\n }\n\n if (this.split === 'vertical') {\n this._startPaneRight = ((maxPos - pos) / width) * 100;\n this._endPaneLeft = (pos / width) * 100;\n this._handleLeft = (pos / width) * 100;\n }\n\n if (this.split === 'horizontal') {\n this._startPaneBottom = ((maxPos - pos) / height) * 100;\n this._endPaneTop = (pos / height) * 100;\n this._handleTop = (pos / height) * 100;\n }\n }\n\n private _handleMouseOver() {\n this._hover = true;\n this._hide = false;\n }\n\n private _handleMouseOut(event: MouseEvent) {\n if (event.buttons !== 1) {\n this._hover = false;\n this._hide = true;\n }\n }\n\n private _handleMouseDown(event: MouseEvent) {\n event.stopPropagation();\n event.preventDefault();\n\n this._boundRect = this.getBoundingClientRect();\n const {left, top, width, height} = this._boundRect;\n\n const mouseXLocal = ((event.clientX - left) / width) * 100;\n const mouseYLocal = ((event.clientY - top) / height) * 100;\n\n if (this.split === 'vertical') {\n this._handleOffset = mouseXLocal - this._handleLeft;\n }\n\n if (this.split === 'horizontal') {\n this._handleOffset = mouseYLocal - this._handleTop;\n }\n\n this._boundRect = this.getBoundingClientRect();\n this._isDragActive = true;\n\n window.addEventListener('mouseup', this._handleMouseUp);\n window.addEventListener('mousemove', this._handleMouseMove);\n }\n\n private _handleMouseUp = () => {\n this._isDragActive = false;\n window.removeEventListener('mouseup', this._handleMouseUp);\n window.removeEventListener('mousemove', this._handleMouseMove);\n };\n\n private _handleMouseMove = (event: MouseEvent) => {\n const {clientX, clientY} = event;\n const {left, top, height, width} = this._boundRect;\n\n if (this.split === 'vertical') {\n const mouseXLocal = clientX - left;\n const handleLeftPx = Math.max(\n 0,\n Math.min(mouseXLocal - this._handleOffset, width)\n );\n const startPaneRightPx = Math.max(0, width - handleLeftPx);\n\n const handleLeftPercentage = (handleLeftPx / width) * 100;\n const startPaneRightPercentage = (startPaneRightPx / width) * 100;\n\n this._handleLeft = handleLeftPercentage;\n this._startPaneRight = startPaneRightPercentage;\n this._endPaneLeft = this._handleLeft;\n }\n\n if (this.split === 'horizontal') {\n const mouseYLocal = clientY - top;\n const handleTopPx = Math.max(\n 0,\n Math.min(mouseYLocal - this._handleOffset, height)\n );\n const startPaneBottomPx = Math.max(0, height - handleTopPx);\n\n const handleTopPercentage = (handleTopPx / height) * 100;\n const startPaneBottomPercentage = (startPaneBottomPx / height) * 100;\n\n this._handleTop = handleTopPercentage;\n this._startPaneBottom = startPaneBottomPercentage;\n this._endPaneTop = this._handleTop;\n }\n };\n\n private _handleDblClick() {\n if (!this.resetOnDblClick) {\n return;\n }\n\n this._initPosition();\n }\n\n private _handleSlotChange() {\n const nestedLayouts = [\n ...this._nestedLayoutsAtStart,\n ...this._nestedLayoutsAtEnd,\n ];\n\n nestedLayouts.forEach((e) => {\n if (e instanceof VscodeSplitLayout) {\n e.initializeResizeHandler();\n }\n });\n }\n\n render(): TemplateResult {\n const startPaneStyles = styleMap({\n bottom: `${this._startPaneBottom}%`,\n right: `${this._startPaneRight}%`,\n });\n\n const endPaneStyles = styleMap({\n left: `${this._endPaneLeft}%`,\n top: `${this._endPaneTop}%`,\n });\n\n const handleStylesPropObj: {[prop: string]: string} = {\n left: `${this._handleLeft}%`,\n top: `${this._handleTop}%`,\n };\n\n if (this.split === 'vertical') {\n handleStylesPropObj.marginLeft = `${0 - this.handleSize / 2}px`;\n handleStylesPropObj.width = `${this.handleSize}px`;\n }\n\n if (this.split === 'horizontal') {\n handleStylesPropObj.height = `${this.handleSize}px`;\n handleStylesPropObj.marginTop = `${0 - this.handleSize / 2}px`;\n }\n\n const handleStyles = styleMap(handleStylesPropObj);\n\n const handleOverlayClasses = classMap({\n 'handle-overlay': true,\n active: this._isDragActive,\n 'split-vertical': this.split === 'vertical',\n 'split-horizontal': this.split === 'horizontal',\n });\n\n const handleClasses = classMap({\n handle: true,\n hover: this._hover,\n hide: this._hide,\n 'split-vertical': this.split === 'vertical',\n 'split-horizontal': this.split === 'horizontal',\n });\n\n return html`\n <div class=\"start\" style=\"${startPaneStyles}\">\n <slot name=\"start\" @slotchange=${this._handleSlotChange}></slot>\n </div>\n <div class=\"end\" style=\"${endPaneStyles}\">\n <slot name=\"end\" @slotchange=${this._handleSlotChange}></slot>\n </div>\n <div class=\"${handleOverlayClasses}\"></div>\n <div\n class=\"${handleClasses}\"\n style=\"${handleStyles}\"\n @mouseover=\"${this._handleMouseOver}\"\n @mouseout=\"${this._handleMouseOut}\"\n @mousedown=\"${this._handleMouseDown}\"\n @dblclick=\"${this._handleDblClick}\"\n ></div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'vscode-split-layout': VscodeSplitLayout;\n }\n}\n"]}
1
+ {"version":3,"file":"vscode-split-layout.js","sourceRoot":"","sources":["../../src/vscode-split-layout/vscode-split-layout.ts"],"names":[],"mappings":"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","sourcesContent":["import {html, TemplateResult} from 'lit';\nimport {\n customElement,\n property,\n queryAssignedElements,\n state,\n} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport {styleMap} from 'lit/directives/style-map.js';\nimport {VscElement} from '../includes/VscElement.js';\nimport styles from './vscode-split-layout.styles.js';\n\n/**\n * @cssprop [--hover-border=var(--vscode-sash-hoverBorder)]\n */\n@customElement('vscode-split-layout')\nexport class VscodeSplitLayout extends VscElement {\n static styles = styles;\n\n @property({reflect: true})\n split: 'horizontal' | 'vertical' = 'vertical';\n\n @property({type: Boolean, reflect: true, attribute: 'reset-on-dbl-click'})\n resetOnDblClick = false;\n\n /**\n * Controls the draggable area size in pixels. it is recommended to use the value of `workbench.sash.size`.\n */\n @property({type: Number, reflect: true, attribute: 'handle-size'})\n handleSize = 4;\n\n @property({reflect: true, attribute: 'initial-handle-position'})\n initialHandlePosition = '50%';\n\n @state()\n private _startPaneRight = 0;\n\n @state()\n private _startPaneBottom = 0;\n\n @state()\n private _endPaneTop = 0;\n\n @state()\n private _endPaneLeft = 0;\n\n @state()\n private _handleLeft = 0;\n\n @state()\n private _handleTop = 0;\n\n @state()\n private _isDragActive = false;\n\n @state()\n private _hover = false;\n\n @state()\n private _hide = false;\n\n @queryAssignedElements({slot: 'start', selector: 'vscode-split-layout'})\n private _nestedLayoutsAtStart!: HTMLElement[];\n\n @queryAssignedElements({slot: 'end', selector: 'vscode-split-layout'})\n private _nestedLayoutsAtEnd!: HTMLElement[];\n\n private _boundRect: DOMRect = new DOMRect();\n private _handleOffset = 0;\n\n connectedCallback(): void {\n super.connectedCallback();\n\n this._initPosition();\n }\n\n /** @internal */\n initializeResizeHandler() {\n this._initPosition();\n }\n\n private _initPosition() {\n this._boundRect = this.getBoundingClientRect();\n const {height, width} = this._boundRect;\n const maxPos = this.split === 'vertical' ? width : height;\n const matches = /(^[0-9.]+)(%{0,1})$/.exec(this.initialHandlePosition);\n let pos = 0;\n let numericVal = 0;\n\n if (matches) {\n numericVal = parseFloat(matches[1]);\n }\n\n if (matches && matches[2] === '%') {\n pos = Math.min(maxPos, (maxPos / 100) * numericVal);\n } else if (matches && matches[2] !== '%') {\n pos = Math.min(numericVal, maxPos);\n } else {\n pos = maxPos / 2;\n }\n\n if (this.split === 'vertical') {\n this._startPaneRight = ((maxPos - pos) / width) * 100;\n this._endPaneLeft = (pos / width) * 100;\n this._handleLeft = (pos / width) * 100;\n }\n\n if (this.split === 'horizontal') {\n this._startPaneBottom = ((maxPos - pos) / height) * 100;\n this._endPaneTop = (pos / height) * 100;\n this._handleTop = (pos / height) * 100;\n }\n }\n\n private _handleMouseOver() {\n this._hover = true;\n this._hide = false;\n }\n\n private _handleMouseOut(event: MouseEvent) {\n if (event.buttons !== 1) {\n this._hover = false;\n this._hide = true;\n }\n }\n\n private _handleMouseDown(event: MouseEvent) {\n event.stopPropagation();\n event.preventDefault();\n\n this._boundRect = this.getBoundingClientRect();\n const {left, top, width, height} = this._boundRect;\n\n const mouseXLocal = ((event.clientX - left) / width) * 100;\n const mouseYLocal = ((event.clientY - top) / height) * 100;\n\n if (this.split === 'vertical') {\n this._handleOffset = mouseXLocal - this._handleLeft;\n }\n\n if (this.split === 'horizontal') {\n this._handleOffset = mouseYLocal - this._handleTop;\n }\n\n this._boundRect = this.getBoundingClientRect();\n this._isDragActive = true;\n\n window.addEventListener('mouseup', this._handleMouseUp);\n window.addEventListener('mousemove', this._handleMouseMove);\n }\n\n private _handleMouseUp = () => {\n this._isDragActive = false;\n window.removeEventListener('mouseup', this._handleMouseUp);\n window.removeEventListener('mousemove', this._handleMouseMove);\n };\n\n private _handleMouseMove = (event: MouseEvent) => {\n const {clientX, clientY} = event;\n const {left, top, height, width} = this._boundRect;\n\n if (this.split === 'vertical') {\n const mouseXLocal = clientX - left;\n const handleLeftPx = Math.max(\n 0,\n Math.min(mouseXLocal - this._handleOffset, width)\n );\n const startPaneRightPx = Math.max(0, width - handleLeftPx);\n\n const handleLeftPercentage = (handleLeftPx / width) * 100;\n const startPaneRightPercentage = (startPaneRightPx / width) * 100;\n\n this._handleLeft = handleLeftPercentage;\n this._startPaneRight = startPaneRightPercentage;\n this._endPaneLeft = this._handleLeft;\n }\n\n if (this.split === 'horizontal') {\n const mouseYLocal = clientY - top;\n const handleTopPx = Math.max(\n 0,\n Math.min(mouseYLocal - this._handleOffset, height)\n );\n const startPaneBottomPx = Math.max(0, height - handleTopPx);\n\n const handleTopPercentage = (handleTopPx / height) * 100;\n const startPaneBottomPercentage = (startPaneBottomPx / height) * 100;\n\n this._handleTop = handleTopPercentage;\n this._startPaneBottom = startPaneBottomPercentage;\n this._endPaneTop = this._handleTop;\n }\n };\n\n private _handleDblClick() {\n if (!this.resetOnDblClick) {\n return;\n }\n\n this._initPosition();\n }\n\n private _handleSlotChange() {\n const nestedLayouts = [\n ...this._nestedLayoutsAtStart,\n ...this._nestedLayoutsAtEnd,\n ];\n\n nestedLayouts.forEach((e) => {\n if (e instanceof VscodeSplitLayout) {\n e.initializeResizeHandler();\n }\n });\n }\n\n render(): TemplateResult {\n const startPaneStyles = styleMap({\n bottom: `${this._startPaneBottom}%`,\n right: `${this._startPaneRight}%`,\n });\n\n const endPaneStyles = styleMap({\n left: `${this._endPaneLeft}%`,\n top: `${this._endPaneTop}%`,\n });\n\n const handleStylesPropObj: {[prop: string]: string} = {\n left: `${this._handleLeft}%`,\n top: `${this._handleTop}%`,\n };\n\n if (this.split === 'vertical') {\n handleStylesPropObj.marginLeft = `${0 - this.handleSize / 2}px`;\n handleStylesPropObj.width = `${this.handleSize}px`;\n }\n\n if (this.split === 'horizontal') {\n handleStylesPropObj.height = `${this.handleSize}px`;\n handleStylesPropObj.marginTop = `${0 - this.handleSize / 2}px`;\n }\n\n const handleStyles = styleMap(handleStylesPropObj);\n\n const handleOverlayClasses = classMap({\n 'handle-overlay': true,\n active: this._isDragActive,\n 'split-vertical': this.split === 'vertical',\n 'split-horizontal': this.split === 'horizontal',\n });\n\n const handleClasses = classMap({\n handle: true,\n hover: this._hover,\n hide: this._hide,\n 'split-vertical': this.split === 'vertical',\n 'split-horizontal': this.split === 'horizontal',\n });\n\n return html`\n <div class=\"start\" style=\"${startPaneStyles}\">\n <slot name=\"start\" @slotchange=${this._handleSlotChange}></slot>\n </div>\n <div class=\"end\" style=\"${endPaneStyles}\">\n <slot name=\"end\" @slotchange=${this._handleSlotChange}></slot>\n </div>\n <div class=\"${handleOverlayClasses}\"></div>\n <div\n class=\"${handleClasses}\"\n style=\"${handleStyles}\"\n @mouseover=\"${this._handleMouseOver}\"\n @mouseout=\"${this._handleMouseOut}\"\n @mousedown=\"${this._handleMouseDown}\"\n @dblclick=\"${this._handleDblClick}\"\n ></div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'vscode-split-layout': VscodeSplitLayout;\n }\n}\n"]}
@@ -1,10 +1,15 @@
1
1
  import { TemplateResult } from 'lit';
2
2
  import { VscElement } from '../includes/VscElement.js';
3
+ export type VscTabsSelectEvent = CustomEvent<{
4
+ selectedIndex: number;
5
+ }>;
3
6
  /**
4
7
  * @slot - Default slot. It is used for tab panels.
5
8
  * @slot header - Slot for tab headers.
6
9
  * @slot addons - Right aligned area in the header.
7
10
  *
11
+ * @fires {VscTabSelectEvent} vsc-tabs-select - Dispatched when the active tab is changed
12
+ *
8
13
  * @cssprop --vscode-font-family
9
14
  * @cssprop --vscode-font-size
10
15
  * @cssprop --vscode-font-weight
@@ -43,5 +48,8 @@ declare global {
43
48
  interface HTMLElementTagNameMap {
44
49
  'vscode-tabs': VscodeTabs;
45
50
  }
51
+ interface GlobalEventHandlersEventMap {
52
+ 'vsc-tabs-select': VscTabsSelectEvent;
53
+ }
46
54
  }
47
55
  //# sourceMappingURL=vscode-tabs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"vscode-tabs.d.ts","sourceRoot":"","sources":["../../src/vscode-tabs/vscode-tabs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,cAAc,EAAC,MAAM,KAAK,CAAC;AAQzC,OAAO,EAAC,UAAU,EAAC,MAAM,2BAA2B,CAAC;AAKrD;;;;;;;;;;GAUG;AACH,qBACa,UAAW,SAAQ,UAAU;IACxC,MAAM,CAAC,MAAM,+BAAU;IACvB;;OAEG;IAEH,KAAK,UAAS;IAEd,gBAAgB;IAEhB,IAAI,SAAa;IAGjB,aAAa,SAAK;;IAOlB,wBAAwB,CACtB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GAAG,IAAI,EAClB,KAAK,EAAE,MAAM,GAAG,IAAI,GACnB,IAAI;IAcP,OAAO,CAAC,mBAAmB,CAAa;IAGxC,OAAO,CAAC,iBAAiB,CAAa;IAEtC,OAAO,CAAC,WAAW,CAAyB;IAE5C,OAAO,CAAC,UAAU,CAAwB;IAE1C,OAAO,CAAC,YAAY,CAAM;IAE1B,OAAO,CAAC,SAAS,CAAK;IAEtB,OAAO,CAAC,oBAAoB;IAW5B,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,gBAAgB;IAsBxB,OAAO,CAAC,wBAAwB;IAUhC,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,cAAc;IAatB,MAAM,IAAI,cAAc;CAazB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,aAAa,EAAE,UAAU,CAAC;KAC3B;CACF"}
1
+ {"version":3,"file":"vscode-tabs.d.ts","sourceRoot":"","sources":["../../src/vscode-tabs/vscode-tabs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,cAAc,EAAC,MAAM,KAAK,CAAC;AAQzC,OAAO,EAAC,UAAU,EAAC,MAAM,2BAA2B,CAAC;AAKrD,MAAM,MAAM,kBAAkB,GAAG,WAAW,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAC,CAAC,CAAC;AAEtE;;;;;;;;;;;;GAYG;AACH,qBACa,UAAW,SAAQ,UAAU;IACxC,MAAM,CAAC,MAAM,+BAAU;IACvB;;OAEG;IAEH,KAAK,UAAS;IAEd,gBAAgB;IAEhB,IAAI,SAAa;IAGjB,aAAa,SAAK;;IAOlB,wBAAwB,CACtB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GAAG,IAAI,EAClB,KAAK,EAAE,MAAM,GAAG,IAAI,GACnB,IAAI;IAcP,OAAO,CAAC,mBAAmB,CAAa;IAGxC,OAAO,CAAC,iBAAiB,CAAa;IAEtC,OAAO,CAAC,WAAW,CAAyB;IAE5C,OAAO,CAAC,UAAU,CAAwB;IAE1C,OAAO,CAAC,YAAY,CAAM;IAE1B,OAAO,CAAC,SAAS,CAAK;IAEtB,OAAO,CAAC,oBAAoB;IAqB5B,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,gBAAgB;IAsBxB,OAAO,CAAC,wBAAwB;IAUhC,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,cAAc;IAatB,MAAM,IAAI,cAAc;CAazB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,aAAa,EAAE,UAAU,CAAC;KAC3B;IAED,UAAU,2BAA2B;QACnC,iBAAiB,EAAE,kBAAkB,CAAC;KACvC;CACF"}
@@ -17,6 +17,8 @@ import styles from './vscode-tabs.styles.js';
17
17
  * @slot header - Slot for tab headers.
18
18
  * @slot addons - Right aligned area in the header.
19
19
  *
20
+ * @fires {VscTabSelectEvent} vsc-tabs-select - Dispatched when the active tab is changed
21
+ *
20
22
  * @cssprop --vscode-font-family
21
23
  * @cssprop --vscode-font-size
22
24
  * @cssprop --vscode-font-weight
@@ -50,12 +52,19 @@ let VscodeTabs = class VscodeTabs extends VscElement {
50
52
  }
51
53
  }
52
54
  _dispatchSelectEvent() {
55
+ /** @deprecated */
53
56
  this.dispatchEvent(new CustomEvent('vsc-select', {
54
57
  detail: {
55
58
  selectedIndex: this.selectedIndex,
56
59
  },
57
60
  composed: true,
58
61
  }));
62
+ this.dispatchEvent(new CustomEvent('vsc-tabs-select', {
63
+ detail: {
64
+ selectedIndex: this.selectedIndex,
65
+ },
66
+ composed: true,
67
+ }));
59
68
  }
60
69
  _setActiveTab() {
61
70
  this._tabFocus = this.selectedIndex;
@@ -1 +1 @@
1
- {"version":3,"file":"vscode-tabs.js","sourceRoot":"","sources":["../../src/vscode-tabs/vscode-tabs.ts"],"names":[],"mappings":"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","sourcesContent":["import {html, TemplateResult} from 'lit';\nimport {\n customElement,\n property,\n queryAssignedElements,\n} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport uniqueId from '../includes/uniqueId.js';\nimport {VscElement} from '../includes/VscElement.js';\nimport {VscodeTabHeader} from '../vscode-tab-header/index.js';\nimport {VscodeTabPanel} from '../vscode-tab-panel/index.js';\nimport styles from './vscode-tabs.styles.js';\n\n/**\n * @slot - Default slot. It is used for tab panels.\n * @slot header - Slot for tab headers.\n * @slot addons - Right aligned area in the header.\n *\n * @cssprop --vscode-font-family\n * @cssprop --vscode-font-size\n * @cssprop --vscode-font-weight\n * @cssprop --vscode-settings-headerBorder\n * @cssprop --vscode-panel-background\n */\n@customElement('vscode-tabs')\nexport class VscodeTabs extends VscElement {\n static styles = styles;\n /**\n * Panel-like look\n */\n @property({type: Boolean, reflect: true})\n panel = false;\n\n /** @internal */\n @property({reflect: true})\n role = 'tablist';\n\n @property({type: Number, reflect: true, attribute: 'selected-index'})\n selectedIndex = 0;\n\n constructor() {\n super();\n this._componentId = uniqueId();\n }\n\n attributeChangedCallback(\n name: string,\n old: string | null,\n value: string | null\n ): void {\n super.attributeChangedCallback(name, old, value);\n\n if (name === 'selected-index') {\n this._setActiveTab();\n }\n\n if (name === 'panel') {\n this._tabHeaders.forEach((h) => (h.panel = value !== null));\n this._tabPanels.forEach((p) => (p.panel = value !== null));\n }\n }\n\n @queryAssignedElements({slot: 'header'})\n private _headerSlotElements!: Element[];\n\n @queryAssignedElements()\n private _mainSlotElements!: Element[];\n\n private _tabHeaders: VscodeTabHeader[] = [];\n\n private _tabPanels: VscodeTabPanel[] = [];\n\n private _componentId = '';\n\n private _tabFocus = 0;\n\n private _dispatchSelectEvent() {\n this.dispatchEvent(\n new CustomEvent('vsc-select', {\n detail: {\n selectedIndex: this.selectedIndex,\n },\n composed: true,\n })\n );\n }\n\n private _setActiveTab() {\n this._tabFocus = this.selectedIndex;\n\n this._tabPanels.forEach((el, i) => {\n el.hidden = i !== this.selectedIndex;\n });\n\n this._tabHeaders.forEach((el: VscodeTabHeader, i) => {\n el.active = i === this.selectedIndex;\n });\n }\n\n private _focusPrevTab() {\n if (this._tabFocus === 0) {\n this._tabFocus = this._tabHeaders.length - 1;\n } else {\n this._tabFocus -= 1;\n }\n }\n\n private _focusNextTab() {\n if (this._tabFocus === this._tabHeaders.length - 1) {\n this._tabFocus = 0;\n } else {\n this._tabFocus += 1;\n }\n }\n\n private _onHeaderKeyDown(ev: KeyboardEvent) {\n if (ev.key === 'ArrowLeft' || ev.key === 'ArrowRight') {\n ev.preventDefault();\n this._tabHeaders[this._tabFocus].setAttribute('tabindex', '-1');\n\n if (ev.key === 'ArrowLeft') {\n this._focusPrevTab();\n } else if (ev.key === 'ArrowRight') {\n this._focusNextTab();\n }\n\n this._tabHeaders[this._tabFocus].setAttribute('tabindex', '0');\n this._tabHeaders[this._tabFocus].focus();\n }\n\n if (ev.key === 'Enter') {\n ev.preventDefault();\n this.selectedIndex = this._tabFocus;\n this._dispatchSelectEvent();\n }\n }\n\n private _moveHeadersToHeaderSlot() {\n const headers = this._mainSlotElements.filter(\n (el) => el instanceof VscodeTabHeader\n ) as VscodeTabHeader[];\n\n if (headers.length > 0) {\n headers.forEach((h) => h.setAttribute('slot', 'header'));\n }\n }\n\n private _onMainSlotChange() {\n this._moveHeadersToHeaderSlot();\n\n this._tabPanels = this._mainSlotElements.filter(\n (el) => el instanceof VscodeTabPanel\n ) as VscodeTabPanel[];\n this._tabPanels.forEach((el, i) => {\n el.ariaLabelledby = `t${this._componentId}-h${i}`;\n el.id = `t${this._componentId}-p${i}`;\n el.panel = this.panel;\n });\n\n this._setActiveTab();\n }\n\n private _onHeaderSlotChange() {\n this._tabHeaders = this._headerSlotElements.filter(\n (el) => el instanceof VscodeTabHeader\n ) as VscodeTabHeader[];\n this._tabHeaders.forEach((el, i) => {\n el.tabId = i;\n el.id = `t${this._componentId}-h${i}`;\n el.ariaControls = `t${this._componentId}-p${i}`;\n el.panel = this.panel;\n el.active = i === this.selectedIndex;\n });\n }\n\n private _onHeaderClick(event: MouseEvent) {\n const path = event.composedPath();\n const headerEl = path.find(\n (et) => (et as VscodeTabHeader) instanceof VscodeTabHeader\n );\n\n if (headerEl) {\n this.selectedIndex = (headerEl as VscodeTabHeader).tabId;\n this._setActiveTab();\n this._dispatchSelectEvent();\n }\n }\n\n render(): TemplateResult {\n return html`\n <div\n class=${classMap({header: true, panel: this.panel})}\n @click=\"${this._onHeaderClick}\"\n @keydown=${this._onHeaderKeyDown}\n >\n <slot name=\"header\" @slotchange=${this._onHeaderSlotChange}></slot>\n <slot name=\"addons\"></slot>\n </div>\n <slot @slotchange=${this._onMainSlotChange}></slot>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'vscode-tabs': VscodeTabs;\n }\n}\n"]}
1
+ {"version":3,"file":"vscode-tabs.js","sourceRoot":"","sources":["../../src/vscode-tabs/vscode-tabs.ts"],"names":[],"mappings":"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","sourcesContent":["import {html, TemplateResult} from 'lit';\nimport {\n customElement,\n property,\n queryAssignedElements,\n} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport uniqueId from '../includes/uniqueId.js';\nimport {VscElement} from '../includes/VscElement.js';\nimport {VscodeTabHeader} from '../vscode-tab-header/index.js';\nimport {VscodeTabPanel} from '../vscode-tab-panel/index.js';\nimport styles from './vscode-tabs.styles.js';\n\nexport type VscTabsSelectEvent = CustomEvent<{selectedIndex: number}>;\n\n/**\n * @slot - Default slot. It is used for tab panels.\n * @slot header - Slot for tab headers.\n * @slot addons - Right aligned area in the header.\n *\n * @fires {VscTabSelectEvent} vsc-tabs-select - Dispatched when the active tab is changed\n *\n * @cssprop --vscode-font-family\n * @cssprop --vscode-font-size\n * @cssprop --vscode-font-weight\n * @cssprop --vscode-settings-headerBorder\n * @cssprop --vscode-panel-background\n */\n@customElement('vscode-tabs')\nexport class VscodeTabs extends VscElement {\n static styles = styles;\n /**\n * Panel-like look\n */\n @property({type: Boolean, reflect: true})\n panel = false;\n\n /** @internal */\n @property({reflect: true})\n role = 'tablist';\n\n @property({type: Number, reflect: true, attribute: 'selected-index'})\n selectedIndex = 0;\n\n constructor() {\n super();\n this._componentId = uniqueId();\n }\n\n attributeChangedCallback(\n name: string,\n old: string | null,\n value: string | null\n ): void {\n super.attributeChangedCallback(name, old, value);\n\n if (name === 'selected-index') {\n this._setActiveTab();\n }\n\n if (name === 'panel') {\n this._tabHeaders.forEach((h) => (h.panel = value !== null));\n this._tabPanels.forEach((p) => (p.panel = value !== null));\n }\n }\n\n @queryAssignedElements({slot: 'header'})\n private _headerSlotElements!: Element[];\n\n @queryAssignedElements()\n private _mainSlotElements!: Element[];\n\n private _tabHeaders: VscodeTabHeader[] = [];\n\n private _tabPanels: VscodeTabPanel[] = [];\n\n private _componentId = '';\n\n private _tabFocus = 0;\n\n private _dispatchSelectEvent() {\n /** @deprecated */\n this.dispatchEvent(\n new CustomEvent('vsc-select', {\n detail: {\n selectedIndex: this.selectedIndex,\n },\n composed: true,\n })\n );\n\n this.dispatchEvent(\n new CustomEvent('vsc-tabs-select', {\n detail: {\n selectedIndex: this.selectedIndex,\n },\n composed: true,\n }) as VscTabsSelectEvent\n );\n }\n\n private _setActiveTab() {\n this._tabFocus = this.selectedIndex;\n\n this._tabPanels.forEach((el, i) => {\n el.hidden = i !== this.selectedIndex;\n });\n\n this._tabHeaders.forEach((el: VscodeTabHeader, i) => {\n el.active = i === this.selectedIndex;\n });\n }\n\n private _focusPrevTab() {\n if (this._tabFocus === 0) {\n this._tabFocus = this._tabHeaders.length - 1;\n } else {\n this._tabFocus -= 1;\n }\n }\n\n private _focusNextTab() {\n if (this._tabFocus === this._tabHeaders.length - 1) {\n this._tabFocus = 0;\n } else {\n this._tabFocus += 1;\n }\n }\n\n private _onHeaderKeyDown(ev: KeyboardEvent) {\n if (ev.key === 'ArrowLeft' || ev.key === 'ArrowRight') {\n ev.preventDefault();\n this._tabHeaders[this._tabFocus].setAttribute('tabindex', '-1');\n\n if (ev.key === 'ArrowLeft') {\n this._focusPrevTab();\n } else if (ev.key === 'ArrowRight') {\n this._focusNextTab();\n }\n\n this._tabHeaders[this._tabFocus].setAttribute('tabindex', '0');\n this._tabHeaders[this._tabFocus].focus();\n }\n\n if (ev.key === 'Enter') {\n ev.preventDefault();\n this.selectedIndex = this._tabFocus;\n this._dispatchSelectEvent();\n }\n }\n\n private _moveHeadersToHeaderSlot() {\n const headers = this._mainSlotElements.filter(\n (el) => el instanceof VscodeTabHeader\n ) as VscodeTabHeader[];\n\n if (headers.length > 0) {\n headers.forEach((h) => h.setAttribute('slot', 'header'));\n }\n }\n\n private _onMainSlotChange() {\n this._moveHeadersToHeaderSlot();\n\n this._tabPanels = this._mainSlotElements.filter(\n (el) => el instanceof VscodeTabPanel\n ) as VscodeTabPanel[];\n this._tabPanels.forEach((el, i) => {\n el.ariaLabelledby = `t${this._componentId}-h${i}`;\n el.id = `t${this._componentId}-p${i}`;\n el.panel = this.panel;\n });\n\n this._setActiveTab();\n }\n\n private _onHeaderSlotChange() {\n this._tabHeaders = this._headerSlotElements.filter(\n (el) => el instanceof VscodeTabHeader\n ) as VscodeTabHeader[];\n this._tabHeaders.forEach((el, i) => {\n el.tabId = i;\n el.id = `t${this._componentId}-h${i}`;\n el.ariaControls = `t${this._componentId}-p${i}`;\n el.panel = this.panel;\n el.active = i === this.selectedIndex;\n });\n }\n\n private _onHeaderClick(event: MouseEvent) {\n const path = event.composedPath();\n const headerEl = path.find(\n (et) => (et as VscodeTabHeader) instanceof VscodeTabHeader\n );\n\n if (headerEl) {\n this.selectedIndex = (headerEl as VscodeTabHeader).tabId;\n this._setActiveTab();\n this._dispatchSelectEvent();\n }\n }\n\n render(): TemplateResult {\n return html`\n <div\n class=${classMap({header: true, panel: this.panel})}\n @click=\"${this._onHeaderClick}\"\n @keydown=${this._onHeaderKeyDown}\n >\n <slot name=\"header\" @slotchange=${this._onHeaderSlotChange}></slot>\n <slot name=\"addons\"></slot>\n </div>\n <slot @slotchange=${this._onMainSlotChange}></slot>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'vscode-tabs': VscodeTabs;\n }\n\n interface GlobalEventHandlersEventMap {\n 'vsc-tabs-select': VscTabsSelectEvent;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"vscode-textarea.d.ts","sourceRoot":"","sources":["../../src/vscode-textarea/vscode-textarea.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,cAAc,EAAE,cAAc,EAAC,MAAM,KAAK,CAAC;AAKrE,OAAO,EAAC,UAAU,EAAC,MAAM,2BAA2B,CAAC;AAErD,OAAO,EAAC,qBAAqB,EAAC,MAAM,sCAAsC,CAAC;AAE3E;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBACa,cACX,SAAQ,UACR,YAAW,qBAAqB;IAEhC,MAAM,CAAC,MAAM,+BAAU;IAEvB;;OAEG;IACH,MAAM,CAAC,cAAc,UAAQ;IAE7B,gBAAgB;IAChB,OAAgB,iBAAiB,EAAE,cAAc,CAG/C;IAIF,YAAY,EAAE,IAAI,GAAG,KAAK,GAAG,SAAS,CAAa;IAGnD,SAAS,UAAS;IAGlB,YAAY,SAAM;IAGlB,QAAQ,UAAS;IAGjB,OAAO,UAAS;IAGhB,KAAK,SAAM;IAGX,SAAS,EAAE,MAAM,GAAG,SAAS,CAAa;IAG1C,SAAS,EAAE,MAAM,GAAG,SAAS,CAAa;IAG1C,IAAI,EAAE,MAAM,GAAG,SAAS,CAAa;IAGrC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAa;IAGrC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAa;IAGrC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAa;IAG5C,QAAQ,UAAS;IAGjB,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,UAAU,GAAG,MAAM,CAAU;IAG7D,QAAQ,UAAS;IAGjB,UAAU,UAAS;IAEnB;;;OAGG;IAEH,SAAS,UAAS;IAElB,IACI,KAAK,CAAC,GAAG,EAAE,MAAM,EAGpB;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED;;OAEG;IACH,IAAI,cAAc,IAAI,mBAAmB,CAExC;IAED,IAAI,IAAI,IAAI,eAAe,GAAG,IAAI,CAEjC;IAED,gBAAgB;IAChB,IAAI,IAAI,IAAI,UAAU,CAErB;IAED,IAAI,QAAQ,IAAI,aAAa,CAE5B;IAED,IAAI,iBAAiB,WAEpB;IAED,IAAI,YAAY,YAEf;IAED;;OAEG;IACH,IAAI,SAAS,CAAC,GAAG,EAAE,MAAM,EAExB;IAED,IAAI,SAAS,IAAI,MAAM,GAAG,SAAS,CAElC;IAED;;OAEG;IACH,IAAI,SAAS,CAAC,GAAG,EAAE,MAAM,EAExB;IAED,IAAI,SAAS,IAAI,MAAM,GAAG,SAAS,CAElC;;IAQD,iBAAiB,IAAI,IAAI;IASzB,OAAO,CACL,iBAAiB,EAAE,cAAc,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,GACrE,IAAI;IAaP,gBAAgB;IAChB,iBAAiB,IAAI,IAAI;IAIzB,gBAAgB;IAChB,wBAAwB,CACtB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,SAAS,GAAG,cAAc,GAChC,IAAI;IAMP,aAAa,IAAI,OAAO;IAIxB,cAAc,IAAI,OAAO;IAKzB,OAAO,CAAC,WAAW,CAAuB;IAG1C,OAAO,CAAC,MAAM,CAAM;IAGpB,OAAO,CAAC,sBAAsB,CAAS;IAGvC,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO,CAAC,UAAU,CAAmB;IAErC,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,gBAAgB;IAexB,OAAO,CAAC,aAAa;IAIrB,MAAM,IAAI,cAAc;CAsCzB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,iBAAiB,EAAE,cAAc,CAAC;KACnC;CACF"}
1
+ {"version":3,"file":"vscode-textarea.d.ts","sourceRoot":"","sources":["../../src/vscode-textarea/vscode-textarea.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,cAAc,EAAE,cAAc,EAAC,MAAM,KAAK,CAAC;AAKrE,OAAO,EAAC,UAAU,EAAC,MAAM,2BAA2B,CAAC;AAErD,OAAO,EAAC,qBAAqB,EAAC,MAAM,sCAAsC,CAAC;AAE3E;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBACa,cACX,SAAQ,UACR,YAAW,qBAAqB;IAEhC,MAAM,CAAC,MAAM,+BAAU;IAEvB;;OAEG;IACH,MAAM,CAAC,cAAc,UAAQ;IAE7B,gBAAgB;IAChB,OAAgB,iBAAiB,EAAE,cAAc,CAG/C;IAIF,YAAY,EAAE,IAAI,GAAG,KAAK,GAAG,SAAS,CAAa;IAGnD,SAAS,UAAS;IAGlB,YAAY,SAAM;IAGlB,QAAQ,UAAS;IAGjB,OAAO,UAAS;IAGhB,KAAK,SAAM;IAGX,SAAS,EAAE,MAAM,GAAG,SAAS,CAAa;IAG1C,SAAS,EAAE,MAAM,GAAG,SAAS,CAAa;IAG1C,IAAI,EAAE,MAAM,GAAG,SAAS,CAAa;IAGrC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAa;IAGrC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAa;IAGrC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAa;IAG5C,QAAQ,UAAS;IAGjB,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,UAAU,GAAG,MAAM,CAAU;IAG7D,QAAQ,UAAS;IAGjB,UAAU,UAAS;IAEnB;;;OAGG;IAEH,SAAS,UAAS;IAElB,IACI,KAAK,CAAC,GAAG,EAAE,MAAM,EAGpB;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED;;OAEG;IACH,IAAI,cAAc,IAAI,mBAAmB,CAExC;IAED,IAAI,IAAI,IAAI,eAAe,GAAG,IAAI,CAEjC;IAED,gBAAgB;IAChB,IAAI,IAAI,IAAI,UAAU,CAErB;IAED,IAAI,QAAQ,IAAI,aAAa,CAE5B;IAED,IAAI,iBAAiB,WAEpB;IAED,IAAI,YAAY,YAEf;IAED;;OAEG;IACH,IAAI,SAAS,CAAC,GAAG,EAAE,MAAM,EAExB;IAED,IAAI,SAAS,IAAI,MAAM,GAAG,SAAS,CAElC;IAED;;OAEG;IACH,IAAI,SAAS,CAAC,GAAG,EAAE,MAAM,EAExB;IAED,IAAI,SAAS,IAAI,MAAM,GAAG,SAAS,CAElC;;IAQD,iBAAiB,IAAI,IAAI;IAUzB,OAAO,CACL,iBAAiB,EAAE,cAAc,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,GACrE,IAAI;IAaP,gBAAgB;IAChB,iBAAiB,IAAI,IAAI;IAIzB,gBAAgB;IAChB,wBAAwB,CACtB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,SAAS,GAAG,cAAc,GAChC,IAAI;IAMP,aAAa,IAAI,OAAO;IAIxB,cAAc,IAAI,OAAO;IAKzB,OAAO,CAAC,WAAW,CAAuB;IAG1C,OAAO,CAAC,MAAM,CAAM;IAGpB,OAAO,CAAC,sBAAsB,CAAS;IAGvC,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO,CAAC,UAAU,CAAmB;IAErC,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,gBAAgB;IAexB,OAAO,CAAC,aAAa;IAIrB,MAAM,IAAI,cAAc;CAsCzB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,iBAAiB,EAAE,cAAc,CAAC;KACnC;CACF"}
@@ -119,6 +119,7 @@ let VscodeTextarea = class VscodeTextarea extends VscElement {
119
119
  this.updateComplete.then(() => {
120
120
  this._textareaEl.checkValidity();
121
121
  this._setValidityFromInput();
122
+ this._internals.setFormValue(this._textareaEl.value);
122
123
  });
123
124
  }
124
125
  updated(changedProperties) {
@@ -1 +1 @@
1
- {"version":3,"file":"vscode-textarea.js","sourceRoot":"","sources":["../../src/vscode-textarea/vscode-textarea.ts"],"names":[],"mappings":"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","sourcesContent":["import {html, LitElement, TemplateResult, PropertyValues} from 'lit';\nimport {customElement, property, query, state} from 'lit/decorators.js';\nimport {ifDefined} from 'lit/directives/if-defined.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport {styleMap} from 'lit/directives/style-map.js';\nimport {VscElement} from '../includes/VscElement.js';\nimport styles from './vscode-textarea.styles.js';\nimport {AssociatedFormControl} from '../includes/AssociatedFormControl.js';\n\n/**\n * Multi-line text input.\n *\n * @fires {InputEvent} input\n * @fires {Event} change\n *\n * @cssprop --vscode-scrollbar-shadow\n * @cssprop --vscode-settings-textInputBackground\n * @cssprop --vscode-settings-textInputBorder\n * @cssprop --vscode-settings-textInputForeground\n * @cssprop --vscode-input-placeholderForeground\n * @cssprop --vscode-font-family\n * @cssprop --vscode-font-size\n * @cssprop --vscode-font-weight\n * @cssprop --vscode-editor-background\n * @cssprop --vscode-editor-foreground\n * @cssprop --vscode-editor-font-family\n * @cssprop --vscode-editor-font-size\n * @cssprop --vscode-editor-font-weight\n * @cssprop --vscode-editor-inlineValuesForeground\n * @cssprop --vscode-focusBorder\n * @cssprop --vscode-scrollbarSlider-background\n * @cssprop --vscode-scrollbarSlider-hoverBackground\n * @cssprop --vscode-scrollbarSlider-activeBackground\n */\n@customElement('vscode-textarea')\nexport class VscodeTextarea\n extends VscElement\n implements AssociatedFormControl\n{\n static styles = styles;\n\n /**\n * @internal\n */\n static formAssociated = true;\n\n /** @internal */\n static override shadowRootOptions: ShadowRootInit = {\n ...LitElement.shadowRootOptions,\n delegatesFocus: true,\n };\n\n // #region properties, setters/getters\n @property()\n autocomplete: 'on' | 'off' | undefined = undefined;\n\n @property({type: Boolean, reflect: true})\n autofocus = false;\n\n @property({attribute: 'default-value'})\n defaultValue = '';\n\n @property({type: Boolean, reflect: true})\n disabled = false;\n\n @property({type: Boolean, reflect: true})\n invalid = false;\n\n @property({attribute: false})\n label = '';\n\n @property({type: Number})\n maxLength: number | undefined = undefined;\n\n @property({type: Number})\n minLength: number | undefined = undefined;\n\n @property({type: Number})\n rows: number | undefined = undefined;\n\n @property({type: Number})\n cols: number | undefined = undefined;\n\n @property()\n name: string | undefined = undefined;\n\n @property()\n placeholder: string | undefined = undefined;\n\n @property({type: Boolean, reflect: true})\n readonly = false;\n\n @property()\n resize: 'both' | 'horizontal' | 'vertical' | 'none' = 'none';\n\n @property({type: Boolean, reflect: true})\n required = false;\n\n @property({type: Boolean})\n spellcheck = false;\n\n /**\n * Use monospace fonts. The font family, weight, size, and color will be the same as set in the\n * VSCode code editor.\n */\n @property({type: Boolean, reflect: true})\n monospace = false;\n\n @property()\n set value(val: string) {\n this._value = val;\n this._internals.setFormValue(val);\n }\n\n get value(): string {\n return this._value;\n }\n\n /**\n * Getter for the inner textarea element if it needs to be accessed for some reason.\n */\n get wrappedElement(): HTMLTextAreaElement {\n return this._textareaEl;\n }\n\n get form(): HTMLFormElement | null {\n return this._internals.form;\n }\n\n /** @internal */\n get type(): 'textarea' {\n return 'textarea';\n }\n\n get validity(): ValidityState {\n return this._internals.validity;\n }\n\n get validationMessage() {\n return this._internals.validationMessage;\n }\n\n get willValidate() {\n return this._internals.willValidate;\n }\n\n /**\n * Lowercase alias to minLength\n */\n set minlength(val: number) {\n this.minLength = val;\n }\n\n get minlength(): number | undefined {\n return this.minLength;\n }\n\n /**\n * Lowercase alias to maxLength\n */\n set maxlength(val: number) {\n this.maxLength = val;\n }\n\n get maxlength(): number | undefined {\n return this.maxLength;\n }\n // #endregion\n\n constructor() {\n super();\n this._internals = this.attachInternals();\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n\n this.updateComplete.then(() => {\n this._textareaEl.checkValidity();\n this._setValidityFromInput();\n });\n }\n\n updated(\n changedProperties: PropertyValues<unknown> | Map<PropertyKey, unknown>\n ): void {\n const validationRelatedProps = ['maxLength', 'minLength', 'required'];\n\n for (const key of changedProperties.keys()) {\n if (validationRelatedProps.includes(String(key))) {\n this.updateComplete.then(() => {\n this._setValidityFromInput();\n });\n break;\n }\n }\n }\n\n /** @internal */\n formResetCallback(): void {\n this.value = this.defaultValue;\n }\n\n /** @internal */\n formStateRestoreCallback(\n state: string,\n _mode: 'restore' | 'autocomplete'\n ): void {\n this.updateComplete.then(() => {\n this._value = state;\n });\n }\n\n checkValidity(): boolean {\n return this._internals.checkValidity();\n }\n\n reportValidity(): boolean {\n return this._internals.reportValidity();\n }\n\n @query('#textarea')\n private _textareaEl!: HTMLTextAreaElement;\n\n @state()\n private _value = '';\n\n @state()\n private _textareaPointerCursor = false;\n\n @state()\n private _shadow = false;\n\n private _internals: ElementInternals;\n\n private _setValidityFromInput() {\n this._internals.setValidity(\n this._textareaEl.validity,\n this._textareaEl.validationMessage,\n this._textareaEl\n );\n }\n\n private _dataChanged() {\n this._value = this._textareaEl.value;\n this._internals.setFormValue(this._textareaEl.value);\n }\n\n private _handleChange(ev: Event) {\n this._dataChanged();\n this._setValidityFromInput();\n this.dispatchEvent(new Event('change'));\n /** @deprecated */\n this.dispatchEvent(\n new CustomEvent('vsc-change', {\n detail: {data: this.value, originalEvent: ev},\n })\n );\n }\n\n private _handleInput(ev: InputEvent) {\n this._dataChanged();\n this._setValidityFromInput();\n /** @deprecated */\n this.dispatchEvent(\n new CustomEvent('vsc-input', {\n detail: {data: ev.data, originalEvent: ev},\n })\n );\n }\n\n private _handleMouseMove(ev: MouseEvent) {\n if (this._textareaEl.clientHeight >= this._textareaEl.scrollHeight) {\n this._textareaPointerCursor = false;\n return;\n }\n\n const SCROLLBAR_WIDTH = 14;\n const BORDER_WIDTH = 1;\n const br = this._textareaEl.getBoundingClientRect();\n const x = ev.clientX;\n\n this._textareaPointerCursor =\n x >= br.left + br.width - SCROLLBAR_WIDTH - BORDER_WIDTH * 2;\n }\n\n private _handleScroll() {\n this._shadow = this._textareaEl.scrollTop > 0;\n }\n\n render(): TemplateResult {\n return html`\n <div\n class=${classMap({\n shadow: true,\n visible: this._shadow,\n })}\n ></div>\n <textarea\n autocomplete=${ifDefined(this.autocomplete)}\n ?autofocus=${this.autofocus}\n ?disabled=${this.disabled}\n aria-label=${this.label}\n id=\"textarea\"\n class=${classMap({\n monospace: this.monospace,\n 'cursor-pointer': this._textareaPointerCursor,\n })}\n maxlength=${ifDefined(this.maxLength)}\n minlength=${ifDefined(this.minLength)}\n rows=${ifDefined(this.rows)}\n cols=${ifDefined(this.cols)}\n name=${ifDefined(this.name)}\n placeholder=${ifDefined(this.placeholder)}\n ?readonly=${this.readonly}\n style=${styleMap({\n resize: this.resize,\n })}\n ?required=${this.required}\n spellcheck=${this.spellcheck}\n @change=${this._handleChange}\n @input=${this._handleInput}\n @mousemove=${this._handleMouseMove}\n @scroll=${this._handleScroll}\n .value=${this._value}\n ></textarea>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'vscode-textarea': VscodeTextarea;\n }\n}\n"]}
1
+ {"version":3,"file":"vscode-textarea.js","sourceRoot":"","sources":["../../src/vscode-textarea/vscode-textarea.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAC,IAAI,EAAE,UAAU,EAAiC,MAAM,KAAK,CAAC;AACrE,OAAO,EAAC,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAC,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAC,SAAS,EAAC,MAAM,8BAA8B,CAAC;AACvD,OAAO,EAAC,QAAQ,EAAC,MAAM,6BAA6B,CAAC;AACrD,OAAO,EAAC,QAAQ,EAAC,MAAM,6BAA6B,CAAC;AACrD,OAAO,EAAC,UAAU,EAAC,MAAM,2BAA2B,CAAC;AACrD,OAAO,MAAM,MAAM,6BAA6B,CAAC;AAGjD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEI,IAAM,cAAc,GAApB,MAAM,cACX,SAAQ,UAAU;IAyElB,IAAI,KAAK,CAAC,GAAW;QACnB,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;QAClB,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;IAC9B,CAAC;IAED,gBAAgB;IAChB,IAAI,IAAI;QACN,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;IAClC,CAAC;IAED,IAAI,iBAAiB;QACnB,OAAO,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC;IAC3C,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,IAAI,SAAS,CAAC,GAAW;QACvB,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;IACvB,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,IAAI,SAAS,CAAC,GAAW;QACvB,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;IACvB,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IACD,aAAa;IAEb;QACE,KAAK,EAAE,CAAC;QAtHV,sCAAsC;QAEtC,iBAAY,GAA6B,SAAS,CAAC;QAGnD,cAAS,GAAG,KAAK,CAAC;QAGlB,iBAAY,GAAG,EAAE,CAAC;QAGlB,aAAQ,GAAG,KAAK,CAAC;QAGjB,YAAO,GAAG,KAAK,CAAC;QAGhB,UAAK,GAAG,EAAE,CAAC;QAGX,cAAS,GAAuB,SAAS,CAAC;QAG1C,cAAS,GAAuB,SAAS,CAAC;QAG1C,SAAI,GAAuB,SAAS,CAAC;QAGrC,SAAI,GAAuB,SAAS,CAAC;QAGrC,SAAI,GAAuB,SAAS,CAAC;QAGrC,gBAAW,GAAuB,SAAS,CAAC;QAG5C,aAAQ,GAAG,KAAK,CAAC;QAGjB,WAAM,GAAgD,MAAM,CAAC;QAG7D,aAAQ,GAAG,KAAK,CAAC;QAGjB,eAAU,GAAG,KAAK,CAAC;QAEnB;;;WAGG;QAEH,cAAS,GAAG,KAAK,CAAC;QAwHV,WAAM,GAAG,EAAE,CAAC;QAGZ,2BAAsB,GAAG,KAAK,CAAC;QAG/B,YAAO,GAAG,KAAK,CAAC;QA7DtB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;IAC3C,CAAC;IAED,iBAAiB;QACf,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAE1B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;YACjC,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CACL,iBAAsE;QAEtE,MAAM,sBAAsB,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;QAEtE,KAAK,MAAM,GAAG,IAAI,iBAAiB,CAAC,IAAI,EAAE,EAAE,CAAC;YAC3C,IAAI,sBAAsB,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACjD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE;oBAC5B,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBAC/B,CAAC,CAAC,CAAC;gBACH,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,gBAAgB;IAChB,iBAAiB;QACf,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;IACjC,CAAC;IAED,gBAAgB;IAChB,wBAAwB,CACtB,KAAa,EACb,KAAiC;QAEjC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACtB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;IACzC,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;IAC1C,CAAC;IAgBO,qBAAqB;QAC3B,IAAI,CAAC,UAAU,CAAC,WAAW,CACzB,IAAI,CAAC,WAAW,CAAC,QAAQ,EACzB,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAClC,IAAI,CAAC,WAAW,CACjB,CAAC;IACJ,CAAC;IAEO,YAAY;QAClB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QACrC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IACvD,CAAC;IAEO,aAAa,CAAC,EAAS;QAC7B,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;QACxC,kBAAkB;QAClB,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAC,YAAY,EAAE;YAC5B,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,EAAC;SAC9C,CAAC,CACH,CAAC;IACJ,CAAC;IAEO,YAAY,CAAC,EAAc;QACjC,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,kBAAkB;QAClB,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAC,WAAW,EAAE;YAC3B,MAAM,EAAE,EAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,EAAC;SAC3C,CAAC,CACH,CAAC;IACJ,CAAC;IAEO,gBAAgB,CAAC,EAAc;QACrC,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;YACnE,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;YACpC,OAAO;QACT,CAAC;QAED,MAAM,eAAe,GAAG,EAAE,CAAC;QAC3B,MAAM,YAAY,GAAG,CAAC,CAAC;QACvB,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,qBAAqB,EAAE,CAAC;QACpD,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC;QAErB,IAAI,CAAC,sBAAsB;YACzB,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,KAAK,GAAG,eAAe,GAAG,YAAY,GAAG,CAAC,CAAC;IACjE,CAAC;IAEO,aAAa;QACnB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC;IAChD,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;;gBAEC,QAAQ,CAAC;YACf,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC;;;uBAGa,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC;qBAC9B,IAAI,CAAC,SAAS;oBACf,IAAI,CAAC,QAAQ;qBACZ,IAAI,CAAC,KAAK;;gBAEf,QAAQ,CAAC;YACf,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,gBAAgB,EAAE,IAAI,CAAC,sBAAsB;SAC9C,CAAC;oBACU,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;oBACzB,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;eAC9B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;eACpB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;eACpB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;sBACb,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC;oBAC7B,IAAI,CAAC,QAAQ;gBACjB,QAAQ,CAAC;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC;oBACU,IAAI,CAAC,QAAQ;qBACZ,IAAI,CAAC,UAAU;kBAClB,IAAI,CAAC,aAAa;iBACnB,IAAI,CAAC,YAAY;qBACb,IAAI,CAAC,gBAAgB;kBACxB,IAAI,CAAC,aAAa;iBACnB,IAAI,CAAC,MAAM;;KAEvB,CAAC;IACJ,CAAC;;AAjSM,qBAAM,GAAG,MAAM,AAAT,CAAU;AAEvB;;GAEG;AACI,6BAAc,GAAG,IAAI,AAAP,CAAQ;AAE7B,gBAAgB;AACA,gCAAiB,GAAmB;IAClD,GAAG,UAAU,CAAC,iBAAiB;IAC/B,cAAc,EAAE,IAAI;CACrB,AAHgC,CAG/B;AAIF;IADC,QAAQ,EAAE;oDACwC;AAGnD;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;iDACvB;AAGlB;IADC,QAAQ,CAAC,EAAC,SAAS,EAAE,eAAe,EAAC,CAAC;oDACrB;AAGlB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;gDACxB;AAGjB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;+CACzB;AAGhB;IADC,QAAQ,CAAC,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC;6CAClB;AAGX;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;iDACiB;AAG1C;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;iDACiB;AAG1C;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;4CACY;AAGrC;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;4CACY;AAGrC;IADC,QAAQ,EAAE;4CAC0B;AAGrC;IADC,QAAQ,EAAE;mDACiC;AAG5C;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;gDACxB;AAGjB;IADC,QAAQ,EAAE;8CACkD;AAG7D;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;gDACxB;AAGjB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAC,CAAC;kDACP;AAOnB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;iDACvB;AAGlB;IADC,QAAQ,EAAE;2CAIV;AA+GO;IADP,KAAK,CAAC,WAAW,CAAC;mDACuB;AAGlC;IADP,KAAK,EAAE;8CACY;AAGZ;IADP,KAAK,EAAE;8DAC+B;AAG/B;IADP,KAAK,EAAE;+CACgB;AArMb,cAAc;IAD1B,aAAa,CAAC,iBAAiB,CAAC;GACpB,cAAc,CAsS1B","sourcesContent":["import {html, LitElement, TemplateResult, PropertyValues} from 'lit';\nimport {customElement, property, query, state} from 'lit/decorators.js';\nimport {ifDefined} from 'lit/directives/if-defined.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport {styleMap} from 'lit/directives/style-map.js';\nimport {VscElement} from '../includes/VscElement.js';\nimport styles from './vscode-textarea.styles.js';\nimport {AssociatedFormControl} from '../includes/AssociatedFormControl.js';\n\n/**\n * Multi-line text input.\n *\n * @fires {InputEvent} input\n * @fires {Event} change\n *\n * @cssprop --vscode-scrollbar-shadow\n * @cssprop --vscode-settings-textInputBackground\n * @cssprop --vscode-settings-textInputBorder\n * @cssprop --vscode-settings-textInputForeground\n * @cssprop --vscode-input-placeholderForeground\n * @cssprop --vscode-font-family\n * @cssprop --vscode-font-size\n * @cssprop --vscode-font-weight\n * @cssprop --vscode-editor-background\n * @cssprop --vscode-editor-foreground\n * @cssprop --vscode-editor-font-family\n * @cssprop --vscode-editor-font-size\n * @cssprop --vscode-editor-font-weight\n * @cssprop --vscode-editor-inlineValuesForeground\n * @cssprop --vscode-focusBorder\n * @cssprop --vscode-scrollbarSlider-background\n * @cssprop --vscode-scrollbarSlider-hoverBackground\n * @cssprop --vscode-scrollbarSlider-activeBackground\n */\n@customElement('vscode-textarea')\nexport class VscodeTextarea\n extends VscElement\n implements AssociatedFormControl\n{\n static styles = styles;\n\n /**\n * @internal\n */\n static formAssociated = true;\n\n /** @internal */\n static override shadowRootOptions: ShadowRootInit = {\n ...LitElement.shadowRootOptions,\n delegatesFocus: true,\n };\n\n // #region properties, setters/getters\n @property()\n autocomplete: 'on' | 'off' | undefined = undefined;\n\n @property({type: Boolean, reflect: true})\n autofocus = false;\n\n @property({attribute: 'default-value'})\n defaultValue = '';\n\n @property({type: Boolean, reflect: true})\n disabled = false;\n\n @property({type: Boolean, reflect: true})\n invalid = false;\n\n @property({attribute: false})\n label = '';\n\n @property({type: Number})\n maxLength: number | undefined = undefined;\n\n @property({type: Number})\n minLength: number | undefined = undefined;\n\n @property({type: Number})\n rows: number | undefined = undefined;\n\n @property({type: Number})\n cols: number | undefined = undefined;\n\n @property()\n name: string | undefined = undefined;\n\n @property()\n placeholder: string | undefined = undefined;\n\n @property({type: Boolean, reflect: true})\n readonly = false;\n\n @property()\n resize: 'both' | 'horizontal' | 'vertical' | 'none' = 'none';\n\n @property({type: Boolean, reflect: true})\n required = false;\n\n @property({type: Boolean})\n spellcheck = false;\n\n /**\n * Use monospace fonts. The font family, weight, size, and color will be the same as set in the\n * VSCode code editor.\n */\n @property({type: Boolean, reflect: true})\n monospace = false;\n\n @property()\n set value(val: string) {\n this._value = val;\n this._internals.setFormValue(val);\n }\n\n get value(): string {\n return this._value;\n }\n\n /**\n * Getter for the inner textarea element if it needs to be accessed for some reason.\n */\n get wrappedElement(): HTMLTextAreaElement {\n return this._textareaEl;\n }\n\n get form(): HTMLFormElement | null {\n return this._internals.form;\n }\n\n /** @internal */\n get type(): 'textarea' {\n return 'textarea';\n }\n\n get validity(): ValidityState {\n return this._internals.validity;\n }\n\n get validationMessage() {\n return this._internals.validationMessage;\n }\n\n get willValidate() {\n return this._internals.willValidate;\n }\n\n /**\n * Lowercase alias to minLength\n */\n set minlength(val: number) {\n this.minLength = val;\n }\n\n get minlength(): number | undefined {\n return this.minLength;\n }\n\n /**\n * Lowercase alias to maxLength\n */\n set maxlength(val: number) {\n this.maxLength = val;\n }\n\n get maxlength(): number | undefined {\n return this.maxLength;\n }\n // #endregion\n\n constructor() {\n super();\n this._internals = this.attachInternals();\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n\n this.updateComplete.then(() => {\n this._textareaEl.checkValidity();\n this._setValidityFromInput();\n this._internals.setFormValue(this._textareaEl.value);\n });\n }\n\n updated(\n changedProperties: PropertyValues<unknown> | Map<PropertyKey, unknown>\n ): void {\n const validationRelatedProps = ['maxLength', 'minLength', 'required'];\n\n for (const key of changedProperties.keys()) {\n if (validationRelatedProps.includes(String(key))) {\n this.updateComplete.then(() => {\n this._setValidityFromInput();\n });\n break;\n }\n }\n }\n\n /** @internal */\n formResetCallback(): void {\n this.value = this.defaultValue;\n }\n\n /** @internal */\n formStateRestoreCallback(\n state: string,\n _mode: 'restore' | 'autocomplete'\n ): void {\n this.updateComplete.then(() => {\n this._value = state;\n });\n }\n\n checkValidity(): boolean {\n return this._internals.checkValidity();\n }\n\n reportValidity(): boolean {\n return this._internals.reportValidity();\n }\n\n @query('#textarea')\n private _textareaEl!: HTMLTextAreaElement;\n\n @state()\n private _value = '';\n\n @state()\n private _textareaPointerCursor = false;\n\n @state()\n private _shadow = false;\n\n private _internals: ElementInternals;\n\n private _setValidityFromInput() {\n this._internals.setValidity(\n this._textareaEl.validity,\n this._textareaEl.validationMessage,\n this._textareaEl\n );\n }\n\n private _dataChanged() {\n this._value = this._textareaEl.value;\n this._internals.setFormValue(this._textareaEl.value);\n }\n\n private _handleChange(ev: Event) {\n this._dataChanged();\n this._setValidityFromInput();\n this.dispatchEvent(new Event('change'));\n /** @deprecated */\n this.dispatchEvent(\n new CustomEvent('vsc-change', {\n detail: {data: this.value, originalEvent: ev},\n })\n );\n }\n\n private _handleInput(ev: InputEvent) {\n this._dataChanged();\n this._setValidityFromInput();\n /** @deprecated */\n this.dispatchEvent(\n new CustomEvent('vsc-input', {\n detail: {data: ev.data, originalEvent: ev},\n })\n );\n }\n\n private _handleMouseMove(ev: MouseEvent) {\n if (this._textareaEl.clientHeight >= this._textareaEl.scrollHeight) {\n this._textareaPointerCursor = false;\n return;\n }\n\n const SCROLLBAR_WIDTH = 14;\n const BORDER_WIDTH = 1;\n const br = this._textareaEl.getBoundingClientRect();\n const x = ev.clientX;\n\n this._textareaPointerCursor =\n x >= br.left + br.width - SCROLLBAR_WIDTH - BORDER_WIDTH * 2;\n }\n\n private _handleScroll() {\n this._shadow = this._textareaEl.scrollTop > 0;\n }\n\n render(): TemplateResult {\n return html`\n <div\n class=${classMap({\n shadow: true,\n visible: this._shadow,\n })}\n ></div>\n <textarea\n autocomplete=${ifDefined(this.autocomplete)}\n ?autofocus=${this.autofocus}\n ?disabled=${this.disabled}\n aria-label=${this.label}\n id=\"textarea\"\n class=${classMap({\n monospace: this.monospace,\n 'cursor-pointer': this._textareaPointerCursor,\n })}\n maxlength=${ifDefined(this.maxLength)}\n minlength=${ifDefined(this.minLength)}\n rows=${ifDefined(this.rows)}\n cols=${ifDefined(this.cols)}\n name=${ifDefined(this.name)}\n placeholder=${ifDefined(this.placeholder)}\n ?readonly=${this.readonly}\n style=${styleMap({\n resize: this.resize,\n })}\n ?required=${this.required}\n spellcheck=${this.spellcheck}\n @change=${this._handleChange}\n @input=${this._handleInput}\n @mousemove=${this._handleMouseMove}\n @scroll=${this._handleScroll}\n .value=${this._value}\n ></textarea>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'vscode-textarea': VscodeTextarea;\n }\n}\n"]}