@vscode-elements/elements 1.0.0-pre.10 → 1.0.0-pre.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/custom-elements.json +114 -55
- package/dist/bundled.js +1 -1
- package/dist/includes/VscElement.js +1 -1
- package/dist/includes/VscElement.js.map +1 -1
- package/dist/vscode-context-menu/vscode-context-menu.d.ts +14 -0
- package/dist/vscode-context-menu/vscode-context-menu.d.ts.map +1 -1
- package/dist/vscode-context-menu/vscode-context-menu.js +29 -13
- package/dist/vscode-context-menu/vscode-context-menu.js.map +1 -1
- package/dist/vscode-context-menu-item/vscode-context-menu-item.d.ts +1 -1
- package/dist/vscode-context-menu-item/vscode-context-menu-item.d.ts.map +1 -1
- package/dist/vscode-context-menu-item/vscode-context-menu-item.js +2 -1
- package/dist/vscode-context-menu-item/vscode-context-menu-item.js.map +1 -1
- package/dist/vscode-form-container/vscode-form-container.d.ts +4 -5
- package/dist/vscode-form-container/vscode-form-container.d.ts.map +1 -1
- package/dist/vscode-form-container/vscode-form-container.js +1 -0
- package/dist/vscode-form-container/vscode-form-container.js.map +1 -1
- package/dist/vscode-radio/vscode-radio.d.ts +3 -1
- package/dist/vscode-radio/vscode-radio.d.ts.map +1 -1
- package/dist/vscode-radio/vscode-radio.js +4 -1
- package/dist/vscode-radio/vscode-radio.js.map +1 -1
- package/dist/vscode-split-layout/vscode-split-layout.d.ts +1 -1
- package/dist/vscode-split-layout/vscode-split-layout.d.ts.map +1 -1
- package/dist/vscode-split-layout/vscode-split-layout.js +4 -4
- package/dist/vscode-split-layout/vscode-split-layout.js.map +1 -1
- package/dist/vscode-tabs/vscode-tabs.d.ts +8 -0
- package/dist/vscode-tabs/vscode-tabs.d.ts.map +1 -1
- package/dist/vscode-tabs/vscode-tabs.js +9 -0
- package/dist/vscode-tabs/vscode-tabs.js.map +1 -1
- package/dist/vscode-textarea/vscode-textarea.d.ts.map +1 -1
- package/dist/vscode-textarea/vscode-textarea.js +1 -0
- package/dist/vscode-textarea/vscode-textarea.js.map +1 -1
- package/dist/vscode-textfield/vscode-textfield.d.ts.map +1 -1
- package/dist/vscode-textfield/vscode-textfield.js +1 -0
- package/dist/vscode-textfield/vscode-textfield.js.map +1 -1
- package/dist/vscode-tree/vscode-tree.d.ts +12 -2
- package/dist/vscode-tree/vscode-tree.d.ts.map +1 -1
- package/dist/vscode-tree/vscode-tree.js +16 -2
- package/dist/vscode-tree/vscode-tree.js.map +1 -1
- package/package.json +30 -77
- package/vscode.css-custom-data.json +267 -0
- package/vscode.html-custom-data.json +527 -0
|
@@ -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.
|
|
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.12';\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 VscContextMenuSelectEvent = 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-context-menu-select': VscContextMenuSelectEvent;
|
|
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;
|
|
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,yBAAyB,GAAG,WAAW,CAAC;IAClD,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,yBAAyB,EAAE,yBAAyB,CAAC;KACtD;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
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
126
|
+
_dispatchSelectEvent(selectedOption) {
|
|
127
|
+
const { keybinding, label, value, separator, tabindex } = selectedOption;
|
|
128
|
+
this.dispatchEvent(new CustomEvent('vsc-context-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 - Renamed to `vsc-context-menu-select` */
|
|
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
|
|
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":";;;;;;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;AAErD,OAAO,6BAA6B,CAAC;AACrC,OAAO,MAAM,MAAM,iCAAiC,CAAC;AAUrD;;;;;;;;GAQG;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,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;QAC9C,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,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAC,YAAY,EAAE;YAC5B,MAAM;YACN,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;SACf,CAAC,CACH,CAAC;QACF,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,EAAC,MAAM,EAAC,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAEnB,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,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;;AA3OM,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,CA6O7B","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":"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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 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 VscContextMenuSelectEvent = 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-context-menu-select', {\n detail: {\n keybinding,\n label,\n separator,\n tabindex,\n value,\n },\n }) as VscContextMenuSelectEvent\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 - Renamed to `vsc-context-menu-select` */\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-context-menu-select': VscContextMenuSelectEvent;\n }\n}\n"]}
|
|
@@ -8,7 +8,7 @@ export interface VscClickEventDetail {
|
|
|
8
8
|
tabindex: number;
|
|
9
9
|
}
|
|
10
10
|
/**
|
|
11
|
-
* Child component of [ContextMenu](
|
|
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;
|
|
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](
|
|
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;
|
|
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"]}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { TemplateResult } from 'lit';
|
|
2
2
|
import { VscElement } from '../includes/VscElement.js';
|
|
3
|
-
interface FormData {
|
|
4
|
-
[key: string]: string | string[];
|
|
5
|
-
}
|
|
6
3
|
export declare class VscodeFormContainer extends VscElement {
|
|
7
4
|
static styles: import("lit").CSSResultGroup;
|
|
8
5
|
set responsive(isResponsive: boolean);
|
|
9
6
|
get responsive(): boolean;
|
|
10
7
|
breakpoint: number;
|
|
11
|
-
|
|
8
|
+
/** @deprecated - Use the native `<form>` element instead. */
|
|
9
|
+
get data(): {
|
|
10
|
+
[key: string]: string | string[];
|
|
11
|
+
};
|
|
12
12
|
private _resizeObserver;
|
|
13
13
|
private _wrapperElement;
|
|
14
14
|
private _assignedFormGroups;
|
|
@@ -29,5 +29,4 @@ declare global {
|
|
|
29
29
|
'vscode-form-container': VscodeFormContainer;
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
|
-
export {};
|
|
33
32
|
//# sourceMappingURL=vscode-form-container.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vscode-form-container.d.ts","sourceRoot":"","sources":["../../src/vscode-form-container/vscode-form-container.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,cAAc,EAAC,MAAM,KAAK,CAAC;AAOzC,OAAO,EAAC,UAAU,EAAC,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"vscode-form-container.d.ts","sourceRoot":"","sources":["../../src/vscode-form-container/vscode-form-container.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,cAAc,EAAC,MAAM,KAAK,CAAC;AAOzC,OAAO,EAAC,UAAU,EAAC,MAAM,2BAA2B,CAAC;AA8CrD,qBACa,mBAAoB,SAAQ,UAAU;IACjD,MAAM,CAAC,MAAM,+BAAU;IAEvB,IACI,UAAU,CAAC,YAAY,EAAE,OAAO,EAUnC;IACD,IAAI,UAAU,IAAI,OAAO,CAExB;IAGD,UAAU,SAAO;IAEjB,6DAA6D;IAC7D,IACI,IAAI,IAAI;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;KAAC,CAE7C;IAED,OAAO,CAAC,eAAe,CAAyB;IAGhD,OAAO,CAAC,eAAe,CAAW;IAGlC,OAAO,CAAC,mBAAmB,CAAqB;IAEhD,OAAO,CAAC,WAAW,CAAS;IAE5B,OAAO,CAAC,oBAAoB,CAAS;IAErC,OAAO,CAAC,uBAAuB,CAAmB;IAElD,OAAO,CAAC,gBAAgB;IA+CxB,OAAO,CAAC,oBAAoB;IAqC5B,OAAO,CAAC,uBAAuB;IAkB/B,OAAO,CAAC,4BAA4B,CACM;IAE1C,OAAO,CAAC,yBAAyB;IAOjC,OAAO,CAAC,yBAAyB;IAKjC,YAAY,IAAI,IAAI;IAQpB,MAAM,IAAI,cAAc;CAOzB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,uBAAuB,EAAE,mBAAmB,CAAC;KAC9C;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vscode-form-container.js","sourceRoot":"","sources":["../../src/vscode-form-container/vscode-form-container.ts"],"names":[],"mappings":"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","sourcesContent":["import {html, TemplateResult} from 'lit';\nimport {\n customElement,\n property,\n query,\n queryAssignedElements,\n} from 'lit/decorators.js';\nimport {VscElement} from '../includes/VscElement.js';\nimport {VscodeCheckbox} from '../vscode-checkbox/index.js';\nimport {VscodeCheckboxGroup} from '../vscode-checkbox-group/index.js';\nimport {VscodeFormGroup, FormGroupVariant} from '../vscode-form-group/index.js';\nimport {VscodeMultiSelect} from '../vscode-multi-select/index.js';\nimport {VscodeRadio} from '../vscode-radio/index.js';\nimport {VscodeRadioGroup} from '../vscode-radio-group/index.js';\nimport {VscodeSingleSelect} from '../vscode-single-select/index.js';\nimport styles from './vscode-form-container.styles.js';\nimport {VscodeTextarea, VscodeTextfield} from '../main.js';\n\nenum FormGroupLayout {\n HORIZONTAL = 'horizontal',\n VERTICAL = 'vertical',\n}\n\ntype CheckboxOrRadioGroup = VscodeRadioGroup | VscodeCheckboxGroup;\n\ntype VscFormWidget =\n | VscodeSingleSelect\n | VscodeMultiSelect\n | VscodeCheckbox\n | VscodeRadio;\n\ninterface FormData {\n [key: string]: string | string[];\n}\n\nconst isTextInput = (el: Element): el is VscodeTextarea | VscodeTextfield => {\n return ['vscode-textfield', 'vscode-textarea'].includes(\n el.tagName.toLocaleLowerCase()\n );\n};\n\nconst isSingleSelect = (el: Element): el is VscodeSingleSelect => {\n return el.tagName.toLocaleLowerCase() === 'vscode-single-select';\n};\n\nconst isMultiSelect = (el: Element): el is VscodeMultiSelect => {\n return el.tagName.toLocaleLowerCase() === 'vscode-multi-select';\n};\n\nconst isCheckbox = (el: Element): el is VscodeCheckbox => {\n return el.tagName.toLocaleLowerCase() === 'vscode-checkbox';\n};\n\nconst isRadio = (el: Element): el is VscodeRadio => {\n return el.tagName.toLocaleLowerCase() === 'vscode-radio';\n};\n\n@customElement('vscode-form-container')\nexport class VscodeFormContainer extends VscElement {\n static styles = styles;\n\n @property({type: Boolean, reflect: true})\n set responsive(isResponsive: boolean) {\n this._responsive = isResponsive;\n\n if (this._firstUpdateComplete) {\n if (isResponsive) {\n this._activateResponsiveLayout();\n } else {\n this._deactivateResizeObserver();\n }\n }\n }\n get responsive(): boolean {\n return this._responsive;\n }\n\n @property({type: Number})\n breakpoint = 490;\n\n @property({type: Object})\n get data(): FormData {\n return this._collectFormData();\n }\n\n private _resizeObserver!: ResizeObserver | null;\n\n @query('.wrapper')\n private _wrapperElement!: Element;\n\n @queryAssignedElements({selector: 'vscode-form-group'})\n private _assignedFormGroups!: VscodeFormGroup[];\n\n private _responsive = false;\n\n private _firstUpdateComplete = false;\n\n private _currentFormGroupLayout!: FormGroupLayout;\n\n private _collectFormData() {\n const query = [\n 'vscode-textfield',\n 'vscode-textarea',\n 'vscode-single-select',\n 'vscode-multi-select',\n 'vscode-checkbox',\n 'vscode-radio',\n ].join(',');\n const vscFormWidgets = this.querySelectorAll(\n query\n ) as NodeListOf<VscFormWidget>;\n const data: FormData = {};\n\n vscFormWidgets.forEach((widget) => {\n if (!widget.hasAttribute('name')) {\n return;\n }\n\n const name = widget.getAttribute('name') as string;\n\n if (!name) {\n return;\n }\n\n if (isCheckbox(widget) && widget.checked) {\n data[name] = Array.isArray(data[name])\n ? [...data[name], widget.value as string]\n : [widget.value as string];\n } else if (isMultiSelect(widget)) {\n data[name] = widget.value;\n } else if (isCheckbox(widget) && !widget.checked) {\n data[name] = Array.isArray(data[name]) ? data[name] : [];\n } else if (\n (isRadio(widget) && widget.checked) ||\n isTextInput(widget) ||\n isSingleSelect(widget)\n ) {\n data[name] = widget.value;\n } else if (isRadio(widget) && !widget.checked) {\n data[name] = data[name] ? data[name] : '';\n }\n });\n\n return data;\n }\n\n private _toggleCompactLayout(layout: FormGroupLayout) {\n this._assignedFormGroups.forEach((group) => {\n if (!group.dataset.originalVariant) {\n group.dataset.originalVariant = group.variant;\n }\n\n const oVariant = group.dataset.originalVariant as FormGroupVariant;\n\n if (layout === FormGroupLayout.VERTICAL && oVariant === 'horizontal') {\n group.variant = 'vertical';\n } else {\n group.variant = oVariant;\n }\n\n const checkboxOrRadioGroup = group.querySelectorAll(\n 'vscode-checkbox-group, vscode-radio-group'\n ) as NodeListOf<CheckboxOrRadioGroup>;\n\n checkboxOrRadioGroup.forEach((widgetGroup) => {\n if (!widgetGroup.dataset.originalVariant) {\n widgetGroup.dataset.originalVariant = widgetGroup.variant;\n }\n\n const originalVariant = widgetGroup.dataset.originalVariant;\n\n if (\n layout === FormGroupLayout.HORIZONTAL &&\n originalVariant === FormGroupLayout.HORIZONTAL\n ) {\n widgetGroup.variant = 'horizontal';\n } else {\n widgetGroup.variant = 'vertical';\n }\n });\n });\n }\n\n private _resizeObserverCallback(entries: ResizeObserverEntry[]) {\n let wrapperWidth = 0;\n\n for (const entry of entries) {\n wrapperWidth = entry.contentRect.width;\n }\n\n const nextLayout: FormGroupLayout =\n wrapperWidth < this.breakpoint\n ? FormGroupLayout.VERTICAL\n : FormGroupLayout.HORIZONTAL;\n\n if (nextLayout !== this._currentFormGroupLayout) {\n this._toggleCompactLayout(nextLayout);\n this._currentFormGroupLayout = nextLayout;\n }\n }\n\n private _resizeObserverCallbackBound =\n this._resizeObserverCallback.bind(this);\n\n private _activateResponsiveLayout() {\n this._resizeObserver = new ResizeObserver(\n this._resizeObserverCallbackBound\n );\n this._resizeObserver.observe(this._wrapperElement);\n }\n\n private _deactivateResizeObserver() {\n this._resizeObserver?.disconnect();\n this._resizeObserver = null;\n }\n\n firstUpdated(): void {\n this._firstUpdateComplete = true;\n\n if (this._responsive) {\n this._activateResponsiveLayout();\n }\n }\n\n render(): TemplateResult {\n return html`\n <div class=\"wrapper\">\n <slot></slot>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'vscode-form-container': VscodeFormContainer;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"vscode-form-container.js","sourceRoot":"","sources":["../../src/vscode-form-container/vscode-form-container.ts"],"names":[],"mappings":"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","sourcesContent":["import {html, TemplateResult} from 'lit';\nimport {\n customElement,\n property,\n query,\n queryAssignedElements,\n} from 'lit/decorators.js';\nimport {VscElement} from '../includes/VscElement.js';\nimport {VscodeCheckbox} from '../vscode-checkbox/index.js';\nimport {VscodeCheckboxGroup} from '../vscode-checkbox-group/index.js';\nimport {VscodeFormGroup, FormGroupVariant} from '../vscode-form-group/index.js';\nimport {VscodeMultiSelect} from '../vscode-multi-select/index.js';\nimport {VscodeRadio} from '../vscode-radio/index.js';\nimport {VscodeRadioGroup} from '../vscode-radio-group/index.js';\nimport {VscodeSingleSelect} from '../vscode-single-select/index.js';\nimport styles from './vscode-form-container.styles.js';\nimport {VscodeTextarea, VscodeTextfield} from '../main.js';\n\nenum FormGroupLayout {\n HORIZONTAL = 'horizontal',\n VERTICAL = 'vertical',\n}\n\ntype CheckboxOrRadioGroup = VscodeRadioGroup | VscodeCheckboxGroup;\n\ntype VscFormWidget =\n | VscodeSingleSelect\n | VscodeMultiSelect\n | VscodeCheckbox\n | VscodeRadio;\n\nconst isTextInput = (el: Element): el is VscodeTextarea | VscodeTextfield => {\n return ['vscode-textfield', 'vscode-textarea'].includes(\n el.tagName.toLocaleLowerCase()\n );\n};\n\nconst isSingleSelect = (el: Element): el is VscodeSingleSelect => {\n return el.tagName.toLocaleLowerCase() === 'vscode-single-select';\n};\n\nconst isMultiSelect = (el: Element): el is VscodeMultiSelect => {\n return el.tagName.toLocaleLowerCase() === 'vscode-multi-select';\n};\n\nconst isCheckbox = (el: Element): el is VscodeCheckbox => {\n return el.tagName.toLocaleLowerCase() === 'vscode-checkbox';\n};\n\nconst isRadio = (el: Element): el is VscodeRadio => {\n return el.tagName.toLocaleLowerCase() === 'vscode-radio';\n};\n\n@customElement('vscode-form-container')\nexport class VscodeFormContainer extends VscElement {\n static styles = styles;\n\n @property({type: Boolean, reflect: true})\n set responsive(isResponsive: boolean) {\n this._responsive = isResponsive;\n\n if (this._firstUpdateComplete) {\n if (isResponsive) {\n this._activateResponsiveLayout();\n } else {\n this._deactivateResizeObserver();\n }\n }\n }\n get responsive(): boolean {\n return this._responsive;\n }\n\n @property({type: Number})\n breakpoint = 490;\n\n /** @deprecated - Use the native `<form>` element instead. */\n @property({type: Object})\n get data(): {[key: string]: string | string[]} {\n return this._collectFormData();\n }\n\n private _resizeObserver!: ResizeObserver | null;\n\n @query('.wrapper')\n private _wrapperElement!: Element;\n\n @queryAssignedElements({selector: 'vscode-form-group'})\n private _assignedFormGroups!: VscodeFormGroup[];\n\n private _responsive = false;\n\n private _firstUpdateComplete = false;\n\n private _currentFormGroupLayout!: FormGroupLayout;\n\n private _collectFormData() {\n const query = [\n 'vscode-textfield',\n 'vscode-textarea',\n 'vscode-single-select',\n 'vscode-multi-select',\n 'vscode-checkbox',\n 'vscode-radio',\n ].join(',');\n const vscFormWidgets = this.querySelectorAll(\n query\n ) as NodeListOf<VscFormWidget>;\n const data: {[key: string]: string | string[]} = {};\n\n vscFormWidgets.forEach((widget) => {\n if (!widget.hasAttribute('name')) {\n return;\n }\n\n const name = widget.getAttribute('name') as string;\n\n if (!name) {\n return;\n }\n\n if (isCheckbox(widget) && widget.checked) {\n data[name] = Array.isArray(data[name])\n ? [...data[name], widget.value as string]\n : [widget.value as string];\n } else if (isMultiSelect(widget)) {\n data[name] = widget.value;\n } else if (isCheckbox(widget) && !widget.checked) {\n data[name] = Array.isArray(data[name]) ? data[name] : [];\n } else if (\n (isRadio(widget) && widget.checked) ||\n isTextInput(widget) ||\n isSingleSelect(widget)\n ) {\n data[name] = widget.value;\n } else if (isRadio(widget) && !widget.checked) {\n data[name] = data[name] ? data[name] : '';\n }\n });\n\n return data;\n }\n\n private _toggleCompactLayout(layout: FormGroupLayout) {\n this._assignedFormGroups.forEach((group) => {\n if (!group.dataset.originalVariant) {\n group.dataset.originalVariant = group.variant;\n }\n\n const oVariant = group.dataset.originalVariant as FormGroupVariant;\n\n if (layout === FormGroupLayout.VERTICAL && oVariant === 'horizontal') {\n group.variant = 'vertical';\n } else {\n group.variant = oVariant;\n }\n\n const checkboxOrRadioGroup = group.querySelectorAll(\n 'vscode-checkbox-group, vscode-radio-group'\n ) as NodeListOf<CheckboxOrRadioGroup>;\n\n checkboxOrRadioGroup.forEach((widgetGroup) => {\n if (!widgetGroup.dataset.originalVariant) {\n widgetGroup.dataset.originalVariant = widgetGroup.variant;\n }\n\n const originalVariant = widgetGroup.dataset.originalVariant;\n\n if (\n layout === FormGroupLayout.HORIZONTAL &&\n originalVariant === FormGroupLayout.HORIZONTAL\n ) {\n widgetGroup.variant = 'horizontal';\n } else {\n widgetGroup.variant = 'vertical';\n }\n });\n });\n }\n\n private _resizeObserverCallback(entries: ResizeObserverEntry[]) {\n let wrapperWidth = 0;\n\n for (const entry of entries) {\n wrapperWidth = entry.contentRect.width;\n }\n\n const nextLayout: FormGroupLayout =\n wrapperWidth < this.breakpoint\n ? FormGroupLayout.VERTICAL\n : FormGroupLayout.HORIZONTAL;\n\n if (nextLayout !== this._currentFormGroupLayout) {\n this._toggleCompactLayout(nextLayout);\n this._currentFormGroupLayout = nextLayout;\n }\n }\n\n private _resizeObserverCallbackBound =\n this._resizeObserverCallback.bind(this);\n\n private _activateResponsiveLayout() {\n this._resizeObserver = new ResizeObserver(\n this._resizeObserverCallbackBound\n );\n this._resizeObserver.observe(this._wrapperElement);\n }\n\n private _deactivateResizeObserver() {\n this._resizeObserver?.disconnect();\n this._resizeObserver = null;\n }\n\n firstUpdated(): void {\n this._firstUpdateComplete = true;\n\n if (this._responsive) {\n this._activateResponsiveLayout();\n }\n }\n\n render(): TemplateResult {\n return html`\n <div class=\"wrapper\">\n <slot></slot>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'vscode-form-container': VscodeFormContainer;\n }\n}\n"]}
|
|
@@ -5,8 +5,11 @@ declare const VscodeRadio_base: (new (...args: any[]) => import("../includes/for
|
|
|
5
5
|
/**
|
|
6
6
|
* @attr name - Name which is used as a variable name in the data of the form-container.
|
|
7
7
|
* @attr label - Attribute pair of the `label` property.
|
|
8
|
+
*
|
|
8
9
|
* @prop label - Label text. It is only applied if component's innerHTML doesn't contain any text.
|
|
9
10
|
*
|
|
11
|
+
* @fires {Event} change - Dispatched when checked state is changed.
|
|
12
|
+
*
|
|
10
13
|
* @cssprop --vscode-font-family
|
|
11
14
|
* @cssprop --vscode-font-size
|
|
12
15
|
* @cssprop --vscode-font-weight
|
|
@@ -55,7 +58,6 @@ export declare class VscodeRadio extends VscodeRadio_base implements AssociatedF
|
|
|
55
58
|
formResetCallback(): void;
|
|
56
59
|
/** @internal */
|
|
57
60
|
formStateRestoreCallback(state: string, _mode: 'restore' | 'autocomplete'): void;
|
|
58
|
-
/** @deprecated */
|
|
59
61
|
private _dispatchCustomEvent;
|
|
60
62
|
private _getRadios;
|
|
61
63
|
private _uncheckOthers;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vscode-radio.d.ts","sourceRoot":"","sources":["../../src/vscode-radio/vscode-radio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,gBAAgB,EAAE,cAAc,EAAC,MAAM,KAAK,CAAC;AAGvE,OAAO,EAAC,oBAAoB,EAAC,MAAM,wDAAwD,CAAC;AAG5F,OAAO,EAAC,qBAAqB,EAAC,MAAM,sCAAsC,CAAC;;AAE3E
|
|
1
|
+
{"version":3,"file":"vscode-radio.d.ts","sourceRoot":"","sources":["../../src/vscode-radio/vscode-radio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,gBAAgB,EAAE,cAAc,EAAC,MAAM,KAAK,CAAC;AAGvE,OAAO,EAAC,oBAAoB,EAAC,MAAM,wDAAwD,CAAC;AAG5F,OAAO,EAAC,qBAAqB,EAAC,MAAM,sCAAsC,CAAC;;AAE3E;;;;;;;;;;;;;;;;GAgBG;AACH,qBACa,WACX,SAAQ,gBACR,YAAW,qBAAqB;IAEhC,MAAM,CAAC,MAAM,+BAAU;IAEvB,gBAAgB;IAChB,MAAM,CAAC,cAAc,UAAQ;IAE7B,gBAAgB;IAChB,OAAgB,iBAAiB,EAAE,cAAc,CAG/C;IAGF,SAAS,UAAS;IAGlB,OAAO,UAAS;IAGhB,cAAc,UAAS;IAEvB;;OAEG;IAEH,IAAI,SAAM;IAGV,KAAK,SAAM;IAGX,QAAQ,UAAS;IAGjB,QAAQ,UAAS;IAEjB,gBAAgB;IAEhB,IAAI,SAAW;IAEf,gBAAgB;IAEhB,QAAQ,SAAK;IAGb,OAAO,CAAC,YAAY,CAAM;IAG1B,OAAO,CAAC,QAAQ,CAAoB;IAEpC,OAAO,CAAC,UAAU,CAAmB;;IAOrC,iBAAiB,IAAI,IAAI;IASzB,oBAAoB,IAAI,IAAI;IAO5B,MAAM,CAEJ,iBAAiB,EAAE,gBAAgB,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,GACnE,IAAI;IAYP,IAAI,IAAI,IAAI,eAAe,GAAG,IAAI,CAEjC;IAED,gBAAgB;IAChB,IAAI,IAAI,WAEP;IAED,IAAI,QAAQ,IAAI,aAAa,CAE5B;IAED,IAAI,iBAAiB,IAAI,MAAM,CAE9B;IAED,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED,aAAa,IAAI,OAAO;IAIxB,cAAc,IAAI,OAAO;IAIzB,gBAAgB;IAChB,iBAAiB,IAAI,IAAI;IAYzB,gBAAgB;IAChB,wBAAwB,CACtB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,SAAS,GAAG,cAAc,GAChC,IAAI;IAMP,OAAO,CAAC,oBAAoB;IAkB5B,OAAO,CAAC,UAAU;IAclB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,YAAY;IAWpB;;OAEG;IACH,oBAAoB,CAAC,OAAO,EAAE,OAAO;IAcrC,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,kBAAkB;IAmB1B,OAAO,CAAC,YAAY,CAWlB;IAEF,SAAS,CAAC,cAAc,OAAQ,aAAa,KAAG,IAAI,CAelD;IAEF,MAAM,IAAI,cAAc;CA+BzB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,cAAc,EAAE,WAAW,CAAC;KAC7B;CACF"}
|
|
@@ -13,8 +13,11 @@ import styles from './vscode-radio.styles.js';
|
|
|
13
13
|
/**
|
|
14
14
|
* @attr name - Name which is used as a variable name in the data of the form-container.
|
|
15
15
|
* @attr label - Attribute pair of the `label` property.
|
|
16
|
+
*
|
|
16
17
|
* @prop label - Label text. It is only applied if component's innerHTML doesn't contain any text.
|
|
17
18
|
*
|
|
19
|
+
* @fires {Event} change - Dispatched when checked state is changed.
|
|
20
|
+
*
|
|
18
21
|
* @cssprop --vscode-font-family
|
|
19
22
|
* @cssprop --vscode-font-size
|
|
20
23
|
* @cssprop --vscode-font-weight
|
|
@@ -129,8 +132,8 @@ let VscodeRadio = class VscodeRadio extends LabelledCheckboxOrRadioMixin(FormBut
|
|
|
129
132
|
this.checked = true;
|
|
130
133
|
}
|
|
131
134
|
}
|
|
132
|
-
/** @deprecated */
|
|
133
135
|
_dispatchCustomEvent() {
|
|
136
|
+
/** @deprecated - Use the native `change` event instead. */
|
|
134
137
|
this.dispatchEvent(new CustomEvent('vsc-change', {
|
|
135
138
|
detail: {
|
|
136
139
|
checked: this.checked,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vscode-radio.js","sourceRoot":"","sources":["../../src/vscode-radio/vscode-radio.ts"],"names":[],"mappings":"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","sourcesContent":["import {html, LitElement, PropertyValueMap, TemplateResult} from 'lit';\nimport {customElement, property, state, query} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport {FormButtonWidgetBase} from '../includes/form-button-widget/FormButtonWidgetBase.js';\nimport {LabelledCheckboxOrRadioMixin} from '../includes/form-button-widget/LabelledCheckboxOrRadio.js';\nimport styles from './vscode-radio.styles.js';\nimport {AssociatedFormControl} from '../includes/AssociatedFormControl.js';\n\n/**\n * @attr name - Name which is used as a variable name in the data of the form-container.\n * @attr label - Attribute pair of the `label` property.\n * @prop label - Label text. It is only applied if component's innerHTML doesn't contain any text.\n *\n * @cssprop --vscode-font-family\n * @cssprop --vscode-font-size\n * @cssprop --vscode-font-weight\n * @cssprop --vsc-foreground-translucent - Label font color. 90% transparency version of `--vscode-foreground` by default.\n * @cssprop --vscode-settings-checkboxBackground\n * @cssprop --vscode-settings-checkboxBorder\n * @cssprop --vscode-settings-checkboxForeground\n * @cssprop --vscode-focusBorder\n */\n@customElement('vscode-radio')\nexport class VscodeRadio\n extends LabelledCheckboxOrRadioMixin(FormButtonWidgetBase)\n implements AssociatedFormControl\n{\n static styles = styles;\n\n /** @internal */\n static formAssociated = true;\n\n /** @internal */\n static override shadowRootOptions: ShadowRootInit = {\n ...LitElement.shadowRootOptions,\n delegatesFocus: true,\n };\n\n @property({type: Boolean, reflect: true})\n autofocus = false;\n\n @property({type: Boolean, reflect: true})\n checked = false;\n\n @property({type: Boolean, reflect: true, attribute: 'default-checked'})\n defaultChecked = false;\n\n /**\n * Name which is used as a variable name in the data of the form-container.\n */\n @property({reflect: true})\n name = '';\n\n @property()\n value = '';\n\n @property({type: Boolean, reflect: true})\n disabled = false;\n\n @property({type: Boolean, reflect: true})\n required = false;\n\n /** @internal */\n @property({reflect: true})\n role = 'radio';\n\n /** @internal */\n @property({type: Number, reflect: true})\n tabIndex = 0;\n\n @state()\n private _slottedText = '';\n\n @query('#input')\n private _inputEl!: HTMLInputElement;\n\n private _internals: ElementInternals;\n\n constructor() {\n super();\n this._internals = this.attachInternals();\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n\n this.addEventListener('keydown', this._handleKeyDown);\n this.addEventListener('click', this._handleClick);\n\n this._handleValueChange();\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n\n this.removeEventListener('keydown', this._handleKeyDown);\n this.removeEventListener('click', this._handleClick);\n }\n\n update(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>\n ): void {\n super.update(changedProperties);\n\n if (changedProperties.has('checked')) {\n this._handleValueChange();\n }\n\n if (changedProperties.has('required')) {\n this._handleValueChange();\n }\n }\n\n get form(): HTMLFormElement | null {\n return this._internals.form;\n }\n\n /** @internal */\n get type() {\n return 'radio';\n }\n\n get validity(): ValidityState {\n return this._internals.validity;\n }\n\n get validationMessage(): string {\n return this._internals.validationMessage;\n }\n\n get willValidate(): boolean {\n return this._internals.willValidate;\n }\n\n checkValidity(): boolean {\n return this._internals.checkValidity();\n }\n\n reportValidity(): boolean {\n return this._internals.reportValidity();\n }\n\n /** @internal */\n formResetCallback(): void {\n const radios = this._getRadios();\n\n radios.forEach((r) => {\n r.checked = r.defaultChecked;\n });\n\n this.updateComplete.then(() => {\n this._handleValueChange();\n });\n }\n\n /** @internal */\n formStateRestoreCallback(\n state: string,\n _mode: 'restore' | 'autocomplete'\n ): void {\n if (this.value === state && state !== '') {\n this.checked = true;\n }\n }\n\n /** @deprecated */\n private _dispatchCustomEvent() {\n this.dispatchEvent(\n new CustomEvent<{checked: boolean; label: string; value: string}>(\n 'vsc-change',\n {\n detail: {\n checked: this.checked,\n label: this.label,\n value: this.value,\n },\n bubbles: true,\n composed: true,\n }\n )\n );\n }\n\n private _getRadios(): VscodeRadio[] {\n const root = this.getRootNode({composed: true}) as Document | ShadowRoot;\n\n if (!root) {\n return [];\n }\n\n const radios = root.querySelectorAll(\n `vscode-radio[name=\"${this.name}\"]`\n ) as NodeListOf<VscodeRadio>;\n\n return Array.from(radios);\n }\n\n private _uncheckOthers(radios: VscodeRadio[]) {\n radios.forEach((r) => {\n if (r !== this) {\n r.checked = false;\n }\n });\n }\n\n private _checkButton() {\n const radios = this._getRadios();\n this.checked = true;\n\n radios.forEach((r) => {\n if (r !== this) {\n r.checked = false;\n }\n });\n }\n\n /**\n * @internal\n */\n setComponentValidity(isValid: boolean) {\n if (isValid) {\n this._internals.setValidity({});\n } else {\n this._internals.setValidity(\n {\n valueMissing: true,\n },\n 'Please select one of these options.',\n this._inputEl\n );\n }\n }\n\n private _setGroupValidity(radios: VscodeRadio[], isValid: boolean) {\n this.updateComplete.then(() => {\n radios.forEach((r) => {\n r.setComponentValidity(isValid);\n });\n });\n }\n\n private _setActualFormValue() {\n let actualValue: string | null = '';\n\n if (this.checked) {\n actualValue = !this.value ? 'on' : this.value;\n } else {\n actualValue = null;\n }\n\n this._internals.setFormValue(actualValue);\n }\n\n private _handleValueChange() {\n const radios = this._getRadios();\n const anyRequired = radios.some((r) => {\n return r.required;\n });\n\n this._setActualFormValue();\n\n if (this.checked) {\n this._uncheckOthers(radios);\n this._setGroupValidity(radios, true);\n } else {\n const anyChecked = !!radios.find((r) => r.checked);\n const isInvalid = anyRequired && !anyChecked;\n\n this._setGroupValidity(radios, !isInvalid);\n }\n }\n\n private _handleClick = (): void => {\n if (this.disabled) {\n return;\n }\n\n if (!this.checked) {\n this._checkButton();\n this._handleValueChange();\n this._dispatchCustomEvent();\n this.dispatchEvent(new Event('change', {bubbles: true}));\n }\n };\n\n protected _handleKeyDown = (ev: KeyboardEvent): void => {\n if (!this.disabled && (ev.key === 'Enter' || ev.key === ' ')) {\n ev.preventDefault();\n\n if (ev.key === ' ' && !this.checked) {\n this.checked = true;\n this._handleValueChange();\n this._dispatchCustomEvent();\n this.dispatchEvent(new Event('change', {bubbles: true}));\n }\n\n if (ev.key === 'Enter') {\n this._internals.form?.requestSubmit();\n }\n }\n };\n\n render(): TemplateResult {\n const iconClasses = classMap({\n icon: true,\n checked: this.checked,\n });\n const labelInnerClasses = classMap({\n 'label-inner': true,\n 'is-slot-empty': this._slottedText === '',\n });\n\n return html`\n <div class=\"wrapper\">\n <input\n ?autofocus=${this.autofocus}\n id=\"input\"\n class=\"radio\"\n type=\"checkbox\"\n ?checked=\"${this.checked}\"\n value=\"${this.value}\"\n tabindex=${this.tabIndex}\n />\n <div class=\"${iconClasses}\"></div>\n <label for=\"input\" class=\"label\" @click=\"${this._handleClick}\">\n <span class=\"${labelInnerClasses}\">\n ${this._renderLabelAttribute()}\n <slot @slotchange=\"${this._handleSlotChange}\"></slot>\n </span>\n </label>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'vscode-radio': VscodeRadio;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"vscode-radio.js","sourceRoot":"","sources":["../../src/vscode-radio/vscode-radio.ts"],"names":[],"mappings":"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","sourcesContent":["import {html, LitElement, PropertyValueMap, TemplateResult} from 'lit';\nimport {customElement, property, state, query} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport {FormButtonWidgetBase} from '../includes/form-button-widget/FormButtonWidgetBase.js';\nimport {LabelledCheckboxOrRadioMixin} from '../includes/form-button-widget/LabelledCheckboxOrRadio.js';\nimport styles from './vscode-radio.styles.js';\nimport {AssociatedFormControl} from '../includes/AssociatedFormControl.js';\n\n/**\n * @attr name - Name which is used as a variable name in the data of the form-container.\n * @attr label - Attribute pair of the `label` property.\n *\n * @prop label - Label text. It is only applied if component's innerHTML doesn't contain any text.\n *\n * @fires {Event} change - Dispatched when checked state is changed.\n *\n * @cssprop --vscode-font-family\n * @cssprop --vscode-font-size\n * @cssprop --vscode-font-weight\n * @cssprop --vsc-foreground-translucent - Label font color. 90% transparency version of `--vscode-foreground` by default.\n * @cssprop --vscode-settings-checkboxBackground\n * @cssprop --vscode-settings-checkboxBorder\n * @cssprop --vscode-settings-checkboxForeground\n * @cssprop --vscode-focusBorder\n */\n@customElement('vscode-radio')\nexport class VscodeRadio\n extends LabelledCheckboxOrRadioMixin(FormButtonWidgetBase)\n implements AssociatedFormControl\n{\n static styles = styles;\n\n /** @internal */\n static formAssociated = true;\n\n /** @internal */\n static override shadowRootOptions: ShadowRootInit = {\n ...LitElement.shadowRootOptions,\n delegatesFocus: true,\n };\n\n @property({type: Boolean, reflect: true})\n autofocus = false;\n\n @property({type: Boolean, reflect: true})\n checked = false;\n\n @property({type: Boolean, reflect: true, attribute: 'default-checked'})\n defaultChecked = false;\n\n /**\n * Name which is used as a variable name in the data of the form-container.\n */\n @property({reflect: true})\n name = '';\n\n @property()\n value = '';\n\n @property({type: Boolean, reflect: true})\n disabled = false;\n\n @property({type: Boolean, reflect: true})\n required = false;\n\n /** @internal */\n @property({reflect: true})\n role = 'radio';\n\n /** @internal */\n @property({type: Number, reflect: true})\n tabIndex = 0;\n\n @state()\n private _slottedText = '';\n\n @query('#input')\n private _inputEl!: HTMLInputElement;\n\n private _internals: ElementInternals;\n\n constructor() {\n super();\n this._internals = this.attachInternals();\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n\n this.addEventListener('keydown', this._handleKeyDown);\n this.addEventListener('click', this._handleClick);\n\n this._handleValueChange();\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n\n this.removeEventListener('keydown', this._handleKeyDown);\n this.removeEventListener('click', this._handleClick);\n }\n\n update(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>\n ): void {\n super.update(changedProperties);\n\n if (changedProperties.has('checked')) {\n this._handleValueChange();\n }\n\n if (changedProperties.has('required')) {\n this._handleValueChange();\n }\n }\n\n get form(): HTMLFormElement | null {\n return this._internals.form;\n }\n\n /** @internal */\n get type() {\n return 'radio';\n }\n\n get validity(): ValidityState {\n return this._internals.validity;\n }\n\n get validationMessage(): string {\n return this._internals.validationMessage;\n }\n\n get willValidate(): boolean {\n return this._internals.willValidate;\n }\n\n checkValidity(): boolean {\n return this._internals.checkValidity();\n }\n\n reportValidity(): boolean {\n return this._internals.reportValidity();\n }\n\n /** @internal */\n formResetCallback(): void {\n const radios = this._getRadios();\n\n radios.forEach((r) => {\n r.checked = r.defaultChecked;\n });\n\n this.updateComplete.then(() => {\n this._handleValueChange();\n });\n }\n\n /** @internal */\n formStateRestoreCallback(\n state: string,\n _mode: 'restore' | 'autocomplete'\n ): void {\n if (this.value === state && state !== '') {\n this.checked = true;\n }\n }\n\n private _dispatchCustomEvent() {\n /** @deprecated - Use the native `change` event instead. */\n this.dispatchEvent(\n new CustomEvent<{checked: boolean; label: string; value: string}>(\n 'vsc-change',\n {\n detail: {\n checked: this.checked,\n label: this.label,\n value: this.value,\n },\n bubbles: true,\n composed: true,\n }\n )\n );\n }\n\n private _getRadios(): VscodeRadio[] {\n const root = this.getRootNode({composed: true}) as Document | ShadowRoot;\n\n if (!root) {\n return [];\n }\n\n const radios = root.querySelectorAll(\n `vscode-radio[name=\"${this.name}\"]`\n ) as NodeListOf<VscodeRadio>;\n\n return Array.from(radios);\n }\n\n private _uncheckOthers(radios: VscodeRadio[]) {\n radios.forEach((r) => {\n if (r !== this) {\n r.checked = false;\n }\n });\n }\n\n private _checkButton() {\n const radios = this._getRadios();\n this.checked = true;\n\n radios.forEach((r) => {\n if (r !== this) {\n r.checked = false;\n }\n });\n }\n\n /**\n * @internal\n */\n setComponentValidity(isValid: boolean) {\n if (isValid) {\n this._internals.setValidity({});\n } else {\n this._internals.setValidity(\n {\n valueMissing: true,\n },\n 'Please select one of these options.',\n this._inputEl\n );\n }\n }\n\n private _setGroupValidity(radios: VscodeRadio[], isValid: boolean) {\n this.updateComplete.then(() => {\n radios.forEach((r) => {\n r.setComponentValidity(isValid);\n });\n });\n }\n\n private _setActualFormValue() {\n let actualValue: string | null = '';\n\n if (this.checked) {\n actualValue = !this.value ? 'on' : this.value;\n } else {\n actualValue = null;\n }\n\n this._internals.setFormValue(actualValue);\n }\n\n private _handleValueChange() {\n const radios = this._getRadios();\n const anyRequired = radios.some((r) => {\n return r.required;\n });\n\n this._setActualFormValue();\n\n if (this.checked) {\n this._uncheckOthers(radios);\n this._setGroupValidity(radios, true);\n } else {\n const anyChecked = !!radios.find((r) => r.checked);\n const isInvalid = anyRequired && !anyChecked;\n\n this._setGroupValidity(radios, !isInvalid);\n }\n }\n\n private _handleClick = (): void => {\n if (this.disabled) {\n return;\n }\n\n if (!this.checked) {\n this._checkButton();\n this._handleValueChange();\n this._dispatchCustomEvent();\n this.dispatchEvent(new Event('change', {bubbles: true}));\n }\n };\n\n protected _handleKeyDown = (ev: KeyboardEvent): void => {\n if (!this.disabled && (ev.key === 'Enter' || ev.key === ' ')) {\n ev.preventDefault();\n\n if (ev.key === ' ' && !this.checked) {\n this.checked = true;\n this._handleValueChange();\n this._dispatchCustomEvent();\n this.dispatchEvent(new Event('change', {bubbles: true}));\n }\n\n if (ev.key === 'Enter') {\n this._internals.form?.requestSubmit();\n }\n }\n };\n\n render(): TemplateResult {\n const iconClasses = classMap({\n icon: true,\n checked: this.checked,\n });\n const labelInnerClasses = classMap({\n 'label-inner': true,\n 'is-slot-empty': this._slottedText === '',\n });\n\n return html`\n <div class=\"wrapper\">\n <input\n ?autofocus=${this.autofocus}\n id=\"input\"\n class=\"radio\"\n type=\"checkbox\"\n ?checked=\"${this.checked}\"\n value=\"${this.value}\"\n tabindex=${this.tabIndex}\n />\n <div class=\"${iconClasses}\"></div>\n <label for=\"input\" class=\"label\" @click=\"${this._handleClick}\">\n <span class=\"${labelInnerClasses}\">\n ${this._renderLabelAttribute()}\n <slot @slotchange=\"${this._handleSlotChange}\"></slot>\n </span>\n </label>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'vscode-radio': VscodeRadio;\n }\n}\n"]}
|
|
@@ -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
|
-
|
|
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,
|
|
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.
|
|
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.
|
|
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, "
|
|
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);
|