@vscode-elements/elements 2.0.0-pre.1 → 2.0.0-pre.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -1
- package/custom-elements.json +4505 -2986
- package/dist/bundled.js +1157 -934
- package/dist/includes/VscElement.d.ts +9 -1
- package/dist/includes/VscElement.d.ts.map +1 -1
- package/dist/includes/VscElement.js +38 -5
- package/dist/includes/VscElement.js.map +1 -1
- package/dist/includes/form-button-widget/LabelledCheckboxOrRadio.d.ts.map +1 -1
- package/dist/includes/form-button-widget/base.styles.js +8 -8
- package/dist/includes/form-button-widget/base.styles.js.map +1 -1
- package/dist/includes/uniqueId.d.ts.map +1 -1
- package/dist/includes/vscode-select/OptionListController.d.ts +61 -0
- package/dist/includes/vscode-select/OptionListController.d.ts.map +1 -0
- package/dist/includes/vscode-select/OptionListController.js +373 -0
- package/dist/includes/vscode-select/OptionListController.js.map +1 -0
- package/dist/includes/vscode-select/helpers.d.ts +4 -2
- package/dist/includes/vscode-select/helpers.d.ts.map +1 -1
- package/dist/includes/vscode-select/helpers.js +26 -0
- package/dist/includes/vscode-select/helpers.js.map +1 -1
- package/dist/includes/vscode-select/styles.d.ts.map +1 -1
- package/dist/includes/vscode-select/styles.js +137 -86
- package/dist/includes/vscode-select/styles.js.map +1 -1
- package/dist/includes/vscode-select/template-elements.d.ts +1 -0
- package/dist/includes/vscode-select/template-elements.d.ts.map +1 -1
- package/dist/includes/vscode-select/template-elements.js +14 -1
- package/dist/includes/vscode-select/template-elements.js.map +1 -1
- package/dist/includes/vscode-select/types.d.ts +11 -7
- package/dist/includes/vscode-select/types.d.ts.map +1 -1
- package/dist/includes/vscode-select/types.js.map +1 -1
- package/dist/includes/vscode-select/vscode-select-base.d.ts +42 -31
- package/dist/includes/vscode-select/vscode-select-base.d.ts.map +1 -1
- package/dist/includes/vscode-select/vscode-select-base.js +379 -245
- package/dist/includes/vscode-select/vscode-select-base.js.map +1 -1
- package/dist/main.d.ts +4 -0
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +4 -0
- package/dist/main.js.map +1 -1
- package/dist/vscode-badge/vscode-badge.d.ts.map +1 -1
- package/dist/vscode-badge/vscode-badge.js +2 -2
- package/dist/vscode-badge/vscode-badge.js.map +1 -1
- package/dist/vscode-button/vscode-button.d.ts +1 -0
- package/dist/vscode-button/vscode-button.d.ts.map +1 -1
- package/dist/vscode-button/vscode-button.js +8 -2
- package/dist/vscode-button/vscode-button.js.map +1 -1
- package/dist/vscode-button/vscode-button.styles.d.ts.map +1 -1
- package/dist/vscode-button/vscode-button.styles.js +60 -11
- package/dist/vscode-button/vscode-button.styles.js.map +1 -1
- package/dist/vscode-button-group/index.d.ts +2 -0
- package/dist/vscode-button-group/index.d.ts.map +1 -0
- package/dist/vscode-button-group/index.js +2 -0
- package/dist/vscode-button-group/index.js.map +1 -0
- package/dist/vscode-button-group/vscode-button-group.d.ts +29 -0
- package/dist/vscode-button-group/vscode-button-group.d.ts.map +1 -0
- package/dist/vscode-button-group/vscode-button-group.js +38 -0
- package/dist/vscode-button-group/vscode-button-group.js.map +1 -0
- package/dist/vscode-button-group/vscode-button-group.styles.d.ts +4 -0
- package/dist/vscode-button-group/vscode-button-group.styles.d.ts.map +1 -0
- package/dist/vscode-button-group/vscode-button-group.styles.js +35 -0
- package/dist/vscode-button-group/vscode-button-group.styles.js.map +1 -0
- package/dist/vscode-checkbox/vscode-checkbox.d.ts +10 -10
- package/dist/vscode-checkbox/vscode-checkbox.d.ts.map +1 -1
- package/dist/vscode-checkbox/vscode-checkbox.js +12 -14
- package/dist/vscode-checkbox/vscode-checkbox.js.map +1 -1
- package/dist/vscode-checkbox/vscode-checkbox.styles.js +2 -2
- package/dist/vscode-checkbox/vscode-checkbox.styles.js.map +1 -1
- package/dist/vscode-checkbox-group/vscode-checkbox-group.d.ts.map +1 -1
- package/dist/vscode-checkbox-group/vscode-checkbox-group.js +2 -2
- package/dist/vscode-checkbox-group/vscode-checkbox-group.js.map +1 -1
- package/dist/vscode-collapsible/vscode-collapsible.d.ts +6 -6
- package/dist/vscode-collapsible/vscode-collapsible.d.ts.map +1 -1
- package/dist/vscode-collapsible/vscode-collapsible.js +8 -8
- package/dist/vscode-collapsible/vscode-collapsible.js.map +1 -1
- package/dist/vscode-collapsible/vscode-collapsible.styles.js +6 -6
- package/dist/vscode-collapsible/vscode-collapsible.styles.js.map +1 -1
- package/dist/vscode-context-menu/vscode-context-menu.d.ts +8 -8
- package/dist/vscode-context-menu/vscode-context-menu.d.ts.map +1 -1
- package/dist/vscode-context-menu/vscode-context-menu.js +9 -9
- package/dist/vscode-context-menu/vscode-context-menu.js.map +1 -1
- package/dist/vscode-context-menu/vscode-context-menu.styles.js +7 -7
- package/dist/vscode-context-menu/vscode-context-menu.styles.js.map +1 -1
- package/dist/vscode-context-menu-item/vscode-context-menu-item.d.ts +9 -9
- 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 +11 -11
- package/dist/vscode-context-menu-item/vscode-context-menu-item.js.map +1 -1
- package/dist/vscode-context-menu-item/vscode-context-menu-item.styles.d.ts.map +1 -1
- package/dist/vscode-context-menu-item/vscode-context-menu-item.styles.js +10 -13
- package/dist/vscode-context-menu-item/vscode-context-menu-item.styles.js.map +1 -1
- package/dist/vscode-divider/vscode-divider.d.ts +2 -0
- package/dist/vscode-divider/vscode-divider.d.ts.map +1 -1
- package/dist/vscode-divider/vscode-divider.js +4 -2
- package/dist/vscode-divider/vscode-divider.js.map +1 -1
- package/dist/vscode-divider/vscode-divider.styles.js +1 -1
- package/dist/vscode-divider/vscode-divider.styles.js.map +1 -1
- package/dist/vscode-form-container/vscode-form-container.d.ts.map +1 -1
- package/dist/vscode-form-container/vscode-form-container.js +2 -2
- package/dist/vscode-form-container/vscode-form-container.js.map +1 -1
- package/dist/vscode-form-group/vscode-form-group.d.ts.map +1 -1
- package/dist/vscode-form-group/vscode-form-group.js +2 -2
- package/dist/vscode-form-group/vscode-form-group.js.map +1 -1
- package/dist/vscode-form-helper/vscode-form-helper.d.ts.map +1 -1
- package/dist/vscode-form-helper/vscode-form-helper.js +1 -2
- package/dist/vscode-form-helper/vscode-form-helper.js.map +1 -1
- package/dist/vscode-icon/vscode-icon.d.ts +4 -4
- package/dist/vscode-icon/vscode-icon.d.ts.map +1 -1
- package/dist/vscode-icon/vscode-icon.js +7 -6
- package/dist/vscode-icon/vscode-icon.js.map +1 -1
- package/dist/vscode-icon/vscode-icon.styles.d.ts.map +1 -1
- package/dist/vscode-icon/vscode-icon.styles.js +10 -4
- package/dist/vscode-icon/vscode-icon.styles.js.map +1 -1
- package/dist/vscode-label/vscode-label.d.ts +3 -3
- package/dist/vscode-label/vscode-label.d.ts.map +1 -1
- package/dist/vscode-label/vscode-label.js +14 -12
- package/dist/vscode-label/vscode-label.js.map +1 -1
- package/dist/vscode-label/vscode-label.styles.js +4 -4
- package/dist/vscode-label/vscode-label.styles.js.map +1 -1
- package/dist/vscode-multi-select/vscode-multi-select.d.ts +39 -26
- package/dist/vscode-multi-select/vscode-multi-select.d.ts.map +1 -1
- package/dist/vscode-multi-select/vscode-multi-select.js +184 -161
- package/dist/vscode-multi-select/vscode-multi-select.js.map +1 -1
- package/dist/vscode-option/vscode-option.d.ts.map +1 -1
- package/dist/vscode-option/vscode-option.js +2 -2
- package/dist/vscode-option/vscode-option.js.map +1 -1
- package/dist/vscode-progress-ring/vscode-progress-ring.d.ts +2 -0
- package/dist/vscode-progress-ring/vscode-progress-ring.d.ts.map +1 -1
- package/dist/vscode-progress-ring/vscode-progress-ring.js +4 -2
- package/dist/vscode-progress-ring/vscode-progress-ring.js.map +1 -1
- package/dist/vscode-progress-ring/vscode-progress-ring.styles.js +1 -1
- package/dist/vscode-progress-ring/vscode-progress-ring.styles.js.map +1 -1
- package/dist/vscode-radio/vscode-radio.d.ts +9 -8
- package/dist/vscode-radio/vscode-radio.d.ts.map +1 -1
- package/dist/vscode-radio/vscode-radio.js +11 -9
- package/dist/vscode-radio/vscode-radio.js.map +1 -1
- package/dist/vscode-radio/vscode-radio.styles.js +2 -2
- package/dist/vscode-radio/vscode-radio.styles.js.map +1 -1
- package/dist/vscode-radio-group/vscode-radio-group.d.ts.map +1 -1
- package/dist/vscode-radio-group/vscode-radio-group.js +2 -2
- package/dist/vscode-radio-group/vscode-radio-group.js.map +1 -1
- package/dist/vscode-scrollable/vscode-scrollable.d.ts +61 -17
- package/dist/vscode-scrollable/vscode-scrollable.d.ts.map +1 -1
- package/dist/vscode-scrollable/vscode-scrollable.js +193 -88
- package/dist/vscode-scrollable/vscode-scrollable.js.map +1 -1
- package/dist/vscode-scrollable/vscode-scrollable.styles.d.ts.map +1 -1
- package/dist/vscode-scrollable/vscode-scrollable.styles.js +17 -5
- package/dist/vscode-scrollable/vscode-scrollable.styles.js.map +1 -1
- package/dist/vscode-single-select/vscode-single-select.d.ts +39 -28
- package/dist/vscode-single-select/vscode-single-select.d.ts.map +1 -1
- package/dist/vscode-single-select/vscode-single-select.js +180 -125
- package/dist/vscode-single-select/vscode-single-select.js.map +1 -1
- package/dist/vscode-split-layout/vscode-split-layout.d.ts +3 -1
- package/dist/vscode-split-layout/vscode-split-layout.d.ts.map +1 -1
- package/dist/vscode-split-layout/vscode-split-layout.js +8 -3
- package/dist/vscode-split-layout/vscode-split-layout.js.map +1 -1
- package/dist/vscode-split-layout/vscode-split-layout.styles.js +3 -3
- package/dist/vscode-split-layout/vscode-split-layout.styles.js.map +1 -1
- package/dist/vscode-tab-header/vscode-tab-header.d.ts.map +1 -1
- package/dist/vscode-tab-header/vscode-tab-header.js +2 -2
- package/dist/vscode-tab-header/vscode-tab-header.js.map +1 -1
- package/dist/vscode-tab-panel/vscode-tab-panel.d.ts.map +1 -1
- package/dist/vscode-tab-panel/vscode-tab-panel.js +2 -2
- package/dist/vscode-tab-panel/vscode-tab-panel.js.map +1 -1
- package/dist/vscode-table/helpers.d.ts.map +1 -1
- package/dist/vscode-table/vscode-table.d.ts +1 -0
- package/dist/vscode-table/vscode-table.d.ts.map +1 -1
- package/dist/vscode-table/vscode-table.js +20 -16
- package/dist/vscode-table/vscode-table.js.map +1 -1
- package/dist/vscode-table-body/vscode-table-body.d.ts.map +1 -1
- package/dist/vscode-table-body/vscode-table-body.js +2 -2
- package/dist/vscode-table-body/vscode-table-body.js.map +1 -1
- package/dist/vscode-table-cell/vscode-table-cell.d.ts.map +1 -1
- package/dist/vscode-table-cell/vscode-table-cell.js +2 -2
- package/dist/vscode-table-cell/vscode-table-cell.js.map +1 -1
- package/dist/vscode-table-header/vscode-table-header.d.ts.map +1 -1
- package/dist/vscode-table-header/vscode-table-header.js +2 -2
- package/dist/vscode-table-header/vscode-table-header.js.map +1 -1
- package/dist/vscode-table-header-cell/vscode-table-header-cell.d.ts.map +1 -1
- package/dist/vscode-table-header-cell/vscode-table-header-cell.js +2 -2
- package/dist/vscode-table-header-cell/vscode-table-header-cell.js.map +1 -1
- package/dist/vscode-table-row/vscode-table-row.d.ts.map +1 -1
- package/dist/vscode-table-row/vscode-table-row.js +2 -2
- package/dist/vscode-table-row/vscode-table-row.js.map +1 -1
- package/dist/vscode-tabs/vscode-tabs.d.ts.map +1 -1
- package/dist/vscode-tabs/vscode-tabs.js +2 -2
- package/dist/vscode-tabs/vscode-tabs.js.map +1 -1
- package/dist/vscode-textarea/vscode-textarea.d.ts +18 -18
- package/dist/vscode-textarea/vscode-textarea.d.ts.map +1 -1
- package/dist/vscode-textarea/vscode-textarea.js +20 -20
- package/dist/vscode-textarea/vscode-textarea.js.map +1 -1
- package/dist/vscode-textarea/vscode-textarea.styles.d.ts.map +1 -1
- package/dist/vscode-textarea/vscode-textarea.styles.js +31 -22
- package/dist/vscode-textarea/vscode-textarea.styles.js.map +1 -1
- package/dist/vscode-textfield/vscode-textfield.d.ts.map +1 -1
- package/dist/vscode-textfield/vscode-textfield.js +2 -2
- package/dist/vscode-textfield/vscode-textfield.js.map +1 -1
- package/dist/vscode-toolbar-button/index.d.ts +2 -0
- package/dist/vscode-toolbar-button/index.d.ts.map +1 -0
- package/dist/vscode-toolbar-button/index.js +2 -0
- package/dist/vscode-toolbar-button/index.js.map +1 -0
- package/dist/vscode-toolbar-button/vscode-toolbar-button.d.ts +26 -0
- package/dist/vscode-toolbar-button/vscode-toolbar-button.d.ts.map +1 -0
- package/dist/vscode-toolbar-button/vscode-toolbar-button.js +83 -0
- package/dist/vscode-toolbar-button/vscode-toolbar-button.js.map +1 -0
- package/dist/vscode-toolbar-button/vscode-toolbar-button.styles.d.ts +4 -0
- package/dist/vscode-toolbar-button/vscode-toolbar-button.styles.d.ts.map +1 -0
- package/dist/vscode-toolbar-button/vscode-toolbar-button.styles.js +77 -0
- package/dist/vscode-toolbar-button/vscode-toolbar-button.styles.js.map +1 -0
- package/dist/vscode-toolbar-container/index.d.ts +2 -0
- package/dist/vscode-toolbar-container/index.d.ts.map +1 -0
- package/dist/vscode-toolbar-container/index.js +2 -0
- package/dist/vscode-toolbar-container/index.js.map +1 -0
- package/dist/vscode-toolbar-container/vscode-toolbar-container.d.ts +17 -0
- package/dist/vscode-toolbar-container/vscode-toolbar-container.d.ts.map +1 -0
- package/dist/vscode-toolbar-container/vscode-toolbar-container.js +25 -0
- package/dist/vscode-toolbar-container/vscode-toolbar-container.js.map +1 -0
- package/dist/vscode-toolbar-container/vscode-toolbar-container.styles.d.ts +4 -0
- package/dist/vscode-toolbar-container/vscode-toolbar-container.styles.d.ts.map +1 -0
- package/dist/vscode-toolbar-container/vscode-toolbar-container.styles.js +14 -0
- package/dist/vscode-toolbar-container/vscode-toolbar-container.styles.js.map +1 -0
- package/dist/vscode-tree/helpers.d.ts +11 -0
- package/dist/vscode-tree/helpers.d.ts.map +1 -0
- package/dist/vscode-tree/helpers.js +139 -0
- package/dist/vscode-tree/helpers.js.map +1 -0
- package/dist/vscode-tree/tree-context.d.ts +33 -0
- package/dist/vscode-tree/tree-context.d.ts.map +1 -0
- package/dist/vscode-tree/tree-context.js +4 -0
- package/dist/vscode-tree/tree-context.js.map +1 -0
- package/dist/vscode-tree/vscode-tree.d.ts +35 -150
- package/dist/vscode-tree/vscode-tree.d.ts.map +1 -1
- package/dist/vscode-tree/vscode-tree.js +263 -627
- package/dist/vscode-tree/vscode-tree.js.map +1 -1
- package/dist/vscode-tree/vscode-tree.styles.d.ts.map +1 -1
- package/dist/vscode-tree/vscode-tree.styles.js +4 -240
- package/dist/vscode-tree/vscode-tree.styles.js.map +1 -1
- package/dist/vscode-tree-item/index.d.ts +2 -0
- package/dist/vscode-tree-item/index.d.ts.map +1 -0
- package/dist/vscode-tree-item/index.js +2 -0
- package/dist/vscode-tree-item/index.js.map +1 -0
- package/dist/vscode-tree-item/vscode-tree-item.d.ts +45 -0
- package/dist/vscode-tree-item/vscode-tree-item.d.ts.map +1 -0
- package/dist/vscode-tree-item/vscode-tree-item.js +377 -0
- package/dist/vscode-tree-item/vscode-tree-item.js.map +1 -0
- package/dist/vscode-tree-item/vscode-tree-item.styles.d.ts +4 -0
- package/dist/vscode-tree-item/vscode-tree-item.styles.d.ts.map +1 -0
- package/dist/vscode-tree-item/vscode-tree-item.styles.js +165 -0
- package/dist/vscode-tree-item/vscode-tree-item.styles.js.map +1 -0
- package/package.json +38 -38
- package/vscode.css-custom-data.json +47 -58
- package/vscode.html-custom-data.json +166 -81
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
import { LitElement } from 'lit';
|
|
2
2
|
export declare class VscElement extends LitElement {
|
|
3
|
-
private _version;
|
|
4
3
|
/** VSCode Elements version */
|
|
5
4
|
get version(): string;
|
|
6
5
|
}
|
|
6
|
+
type CustomElementClass = Omit<typeof HTMLElement, 'new'>;
|
|
7
|
+
export type Constructor<T> = {
|
|
8
|
+
new (...args: any[]): T;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Own implementation of Lit's customElement decorator.
|
|
12
|
+
*/
|
|
13
|
+
export declare const customElement: (tagName: string) => (classOrTarget: CustomElementClass) => void;
|
|
14
|
+
export {};
|
|
7
15
|
//# sourceMappingURL=VscElement.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VscElement.d.ts","sourceRoot":"","sources":["../../src/includes/VscElement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"VscElement.d.ts","sourceRoot":"","sources":["../../src/includes/VscElement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,KAAK,CAAC;AAK/B,qBAAa,UAAW,SAAQ,UAAU;IACxC,8BAA8B;IAC9B,IAAI,OAAO,IAAI,MAAM,CAEpB;CACF;AAED,KAAK,kBAAkB,GAAG,IAAI,CAAC,OAAO,WAAW,EAAE,KAAK,CAAC,CAAC;AAE1D,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;IAE3B,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;CACzB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,SAAS,MAAM,MACnC,eAAe,kBAAkB,SAsC1C,CAAC"}
|
|
@@ -1,12 +1,45 @@
|
|
|
1
1
|
import { LitElement } from 'lit';
|
|
2
|
+
const VERSION = '2.0.0-pre.2';
|
|
3
|
+
const CONFIG_KEY = '__vscodeElements_disableRegistryWarning__';
|
|
2
4
|
export class VscElement extends LitElement {
|
|
3
|
-
constructor() {
|
|
4
|
-
super(...arguments);
|
|
5
|
-
this._version = '2.0.0-pre.1';
|
|
6
|
-
}
|
|
7
5
|
/** VSCode Elements version */
|
|
8
6
|
get version() {
|
|
9
|
-
return
|
|
7
|
+
return VERSION;
|
|
10
8
|
}
|
|
11
9
|
}
|
|
10
|
+
/**
|
|
11
|
+
* Own implementation of Lit's customElement decorator.
|
|
12
|
+
*/
|
|
13
|
+
export const customElement = (tagName) => {
|
|
14
|
+
return (classOrTarget) => {
|
|
15
|
+
const customElementClass = customElements.get(tagName);
|
|
16
|
+
if (!customElementClass) {
|
|
17
|
+
customElements.define(tagName, classOrTarget);
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
if (CONFIG_KEY in window) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const el = document.createElement(tagName);
|
|
24
|
+
const anotherVersion = el?.version;
|
|
25
|
+
let message = '';
|
|
26
|
+
if (!anotherVersion) {
|
|
27
|
+
// eslint-disable-next-line no-console
|
|
28
|
+
console.warn(tagName, 'is already registered by an unknown custom element handler class.');
|
|
29
|
+
message +=
|
|
30
|
+
'is already registered by an unknown custom element handler class.';
|
|
31
|
+
}
|
|
32
|
+
else if (anotherVersion !== VERSION) {
|
|
33
|
+
message +=
|
|
34
|
+
'is already registered by a different version of VSCode Elements. ';
|
|
35
|
+
message += `This version is "${VERSION}", while the other one is "${anotherVersion}".`;
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
message +=
|
|
39
|
+
'is already registered by the same version of VSCode Elements. ';
|
|
40
|
+
}
|
|
41
|
+
// eslint-disable-next-line no-console
|
|
42
|
+
console.warn(`[VSCode Elements] ${tagName} ${message}\nTo suppress this warning, set window.${CONFIG_KEY} to true`);
|
|
43
|
+
};
|
|
44
|
+
};
|
|
12
45
|
//# sourceMappingURL=VscElement.js.map
|
|
@@ -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;
|
|
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,GAAG,aAAa,CAAC;AAC9B,MAAM,UAAU,GAAG,2CAA2C,CAAC;AAE/D,MAAM,OAAO,UAAW,SAAQ,UAAU;IACxC,8BAA8B;IAC9B,IAAI,OAAO;QACT,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AASD;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAAe,EAAE,EAAE;IAC/C,OAAO,CAAC,aAAiC,EAAE,EAAE;QAC3C,MAAM,kBAAkB,GAAG,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAEvD,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACxB,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,aAAyC,CAAC,CAAC;YAC1E,OAAO;QACT,CAAC;QAED,IAAI,UAAU,IAAI,MAAM,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QAED,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,cAAc,GAAI,EAAiB,EAAE,OAAO,CAAC;QACnD,IAAI,OAAO,GAAG,EAAE,CAAC;QAEjB,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,sCAAsC;YACtC,OAAO,CAAC,IAAI,CACV,OAAO,EACP,mEAAmE,CACpE,CAAC;YACF,OAAO;gBACL,mEAAmE,CAAC;QACxE,CAAC;aAAM,IAAI,cAAc,KAAK,OAAO,EAAE,CAAC;YACtC,OAAO;gBACL,mEAAmE,CAAC;YACtE,OAAO,IAAI,oBAAoB,OAAO,8BAA8B,cAAc,IAAI,CAAC;QACzF,CAAC;aAAM,CAAC;YACN,OAAO;gBACL,gEAAgE,CAAC;QACrE,CAAC;QAED,sCAAsC;QACtC,OAAO,CAAC,IAAI,CACV,qBAAqB,OAAO,IAAI,OAAO,0CAA0C,UAAU,UAAU,CACtG,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import {LitElement} from 'lit';\n\nconst VERSION = '2.0.0-pre.2';\nconst CONFIG_KEY = '__vscodeElements_disableRegistryWarning__';\n\nexport class VscElement extends LitElement {\n /** VSCode Elements version */\n get version(): string {\n return VERSION;\n }\n}\n\ntype CustomElementClass = Omit<typeof HTMLElement, 'new'>;\n\nexport type Constructor<T> = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n new (...args: any[]): T;\n};\n\n/**\n * Own implementation of Lit's customElement decorator.\n */\nexport const customElement = (tagName: string) => {\n return (classOrTarget: CustomElementClass) => {\n const customElementClass = customElements.get(tagName);\n\n if (!customElementClass) {\n customElements.define(tagName, classOrTarget as CustomElementConstructor);\n return;\n }\n\n if (CONFIG_KEY in window) {\n return;\n }\n\n const el = document.createElement(tagName);\n const anotherVersion = (el as VscElement)?.version;\n let message = '';\n\n if (!anotherVersion) {\n // eslint-disable-next-line no-console\n console.warn(\n tagName,\n 'is already registered by an unknown custom element handler class.'\n );\n message +=\n 'is already registered by an unknown custom element handler class.';\n } else if (anotherVersion !== VERSION) {\n message +=\n 'is already registered by a different version of VSCode Elements. ';\n message += `This version is \"${VERSION}\", while the other one is \"${anotherVersion}\".`;\n } else {\n message +=\n 'is already registered by the same version of VSCode Elements. ';\n }\n\n // eslint-disable-next-line no-console\n console.warn(\n `[VSCode Elements] ${tagName} ${message}\\nTo suppress this warning, set window.${CONFIG_KEY} to true`\n );\n };\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LabelledCheckboxOrRadio.d.ts","sourceRoot":"","sources":["../../../src/includes/form-button-widget/LabelledCheckboxOrRadio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,UAAU,EAAW,cAAc,EAAC,MAAM,KAAK,CAAC;AAI9D,KAAK,WAAW,CAAC,CAAC,GAAG,OAAO,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAE1D,MAAM,CAAC,OAAO,OAAO,gCAAgC;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,iBAAiB,IAAI,IAAI;IACnC,SAAS,CAAC,qBAAqB,IAAI,cAAc;CAClD;AAED,eAAO,MAAM,4BAA4B,GAAI,CAAC,SAAS,WAAW,CAAC,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"LabelledCheckboxOrRadio.d.ts","sourceRoot":"","sources":["../../../src/includes/form-button-widget/LabelledCheckboxOrRadio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,UAAU,EAAW,cAAc,EAAC,MAAM,KAAK,CAAC;AAI9D,KAAK,WAAW,CAAC,CAAC,GAAG,OAAO,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAE1D,MAAM,CAAC,OAAO,OAAO,gCAAgC;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,iBAAiB,IAAI,IAAI;IACnC,SAAS,CAAC,qBAAqB,IAAI,cAAc;CAClD;AAED,eAAO,MAAM,4BAA4B,GAAI,CAAC,SAAS,WAAW,CAAC,UAAU,CAAC,EAC5E,YAAY,CAAC,KAmCgC,WAAW,CAAC,gCAAgC,CAAC,GACxF,CACH,CAAC"}
|
|
@@ -2,11 +2,11 @@ import { css } from 'lit';
|
|
|
2
2
|
export default [
|
|
3
3
|
css `
|
|
4
4
|
:host {
|
|
5
|
-
color: var(--
|
|
5
|
+
color: var(--vscode-foreground, #cccccc);
|
|
6
6
|
display: inline-block;
|
|
7
|
-
font-family: var(--vscode-font-family);
|
|
8
|
-
font-size: var(--vscode-font-size);
|
|
9
|
-
font-weight: var(--vscode-font-weight);
|
|
7
|
+
font-family: var(--vscode-font-family, sans-serif);
|
|
8
|
+
font-size: var(--vscode-font-size, 13px);
|
|
9
|
+
font-weight: var(--vscode-font-weight, normal);
|
|
10
10
|
line-height: 18px;
|
|
11
11
|
}
|
|
12
12
|
|
|
@@ -21,7 +21,7 @@ export default [
|
|
|
21
21
|
.wrapper {
|
|
22
22
|
cursor: pointer;
|
|
23
23
|
display: block;
|
|
24
|
-
font-size: var(--vscode-font-size);
|
|
24
|
+
font-size: var(--vscode-font-size, 13px);
|
|
25
25
|
margin-bottom: 4px;
|
|
26
26
|
margin-top: 4px;
|
|
27
27
|
min-height: 18px;
|
|
@@ -47,11 +47,11 @@ export default [
|
|
|
47
47
|
|
|
48
48
|
.icon {
|
|
49
49
|
align-items: center;
|
|
50
|
-
background-color: var(--vscode-settings-checkboxBackground);
|
|
50
|
+
background-color: var(--vscode-settings-checkboxBackground, #313131);
|
|
51
51
|
background-size: 16px;
|
|
52
|
-
border: 1px solid var(--vscode-settings-checkboxBorder);
|
|
52
|
+
border: 1px solid var(--vscode-settings-checkboxBorder, #3c3c3c);
|
|
53
53
|
box-sizing: border-box;
|
|
54
|
-
color: var(--vscode-settings-checkboxForeground);
|
|
54
|
+
color: var(--vscode-settings-checkboxForeground, #cccccc);
|
|
55
55
|
display: flex;
|
|
56
56
|
height: 18px;
|
|
57
57
|
justify-content: center;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.styles.js","sourceRoot":"","sources":["../../../src/includes/form-button-widget/base.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAM,KAAK,CAAC;AAExB,eAAe;IACb,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyFF;CACF,CAAC","sourcesContent":["import {css} from 'lit';\n\nexport default [\n css`\n :host {\n color: var(--
|
|
1
|
+
{"version":3,"file":"base.styles.js","sourceRoot":"","sources":["../../../src/includes/form-button-widget/base.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAM,KAAK,CAAC;AAExB,eAAe;IACb,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyFF;CACF,CAAC","sourcesContent":["import {css} from 'lit';\n\nexport default [\n css`\n :host {\n color: var(--vscode-foreground, #cccccc);\n display: inline-block;\n font-family: var(--vscode-font-family, sans-serif);\n font-size: var(--vscode-font-size, 13px);\n font-weight: var(--vscode-font-weight, normal);\n line-height: 18px;\n }\n\n :host(:focus) {\n outline: none;\n }\n\n :host([disabled]) {\n opacity: 0.4;\n }\n\n .wrapper {\n cursor: pointer;\n display: block;\n font-size: var(--vscode-font-size, 13px);\n margin-bottom: 4px;\n margin-top: 4px;\n min-height: 18px;\n position: relative;\n user-select: none;\n }\n\n :host([disabled]) .wrapper {\n cursor: default;\n }\n\n input {\n position: absolute;\n height: 1px;\n left: 9px;\n margin: 0;\n top: 17px;\n width: 1px;\n overflow: hidden;\n clip: rect(1px, 1px, 1px, 1px);\n white-space: nowrap;\n }\n\n .icon {\n align-items: center;\n background-color: var(--vscode-settings-checkboxBackground, #313131);\n background-size: 16px;\n border: 1px solid var(--vscode-settings-checkboxBorder, #3c3c3c);\n box-sizing: border-box;\n color: var(--vscode-settings-checkboxForeground, #cccccc);\n display: flex;\n height: 18px;\n justify-content: center;\n left: 0;\n margin-left: 0;\n margin-right: 9px;\n padding: 0;\n pointer-events: none;\n position: absolute;\n top: 0;\n width: 18px;\n }\n\n .icon.before-empty-label {\n margin-right: 0;\n }\n\n .label {\n cursor: pointer;\n display: block;\n min-height: 18px;\n min-width: 18px;\n }\n\n .label-inner {\n display: block;\n opacity: 0.9;\n padding-left: 27px;\n }\n\n .label-inner.empty {\n padding-left: 0;\n }\n\n :host([disabled]) .label {\n cursor: default;\n }\n `,\n];\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uniqueId.d.ts","sourceRoot":"","sources":["../../src/includes/uniqueId.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,QAAQ,
|
|
1
|
+
{"version":3,"file":"uniqueId.d.ts","sourceRoot":"","sources":["../../src/includes/uniqueId.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,QAAQ,GAAI,eAAW,WAI5B,CAAC;AAEF,eAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { ReactiveController, ReactiveControllerHost } from 'lit';
|
|
2
|
+
import { FilterMethod, InternalOption, Option } from './types';
|
|
3
|
+
export declare class OptionListController implements ReactiveController {
|
|
4
|
+
private _activeIndex;
|
|
5
|
+
private _host;
|
|
6
|
+
private _options;
|
|
7
|
+
private _filterPattern;
|
|
8
|
+
private _filterMethod;
|
|
9
|
+
private _combobox;
|
|
10
|
+
private _indexByValue;
|
|
11
|
+
private _indexByLabel;
|
|
12
|
+
private _selectedIndex;
|
|
13
|
+
private _selectedIndexes;
|
|
14
|
+
private _multiSelect;
|
|
15
|
+
private _numOfVisibleOptions;
|
|
16
|
+
constructor(host: ReactiveControllerHost);
|
|
17
|
+
hostConnected(): void;
|
|
18
|
+
get activeIndex(): number;
|
|
19
|
+
set activeIndex(index: number);
|
|
20
|
+
get relativeActiveIndex(): number;
|
|
21
|
+
set comboboxMode(enabled: boolean);
|
|
22
|
+
get comboboxMode(): boolean;
|
|
23
|
+
get multiSelect(): boolean;
|
|
24
|
+
set multiSelect(multiSelect: boolean);
|
|
25
|
+
get selectedIndex(): number;
|
|
26
|
+
set selectedIndex(index: number);
|
|
27
|
+
get selectedIndexes(): number[];
|
|
28
|
+
set selectedIndexes(value: number[]);
|
|
29
|
+
set value(newValue: string | string[]);
|
|
30
|
+
get value(): string | string[];
|
|
31
|
+
set multiSelectValue(newValue: string[]);
|
|
32
|
+
get multiSelectValue(): string[];
|
|
33
|
+
get filterPattern(): string;
|
|
34
|
+
set filterPattern(pattern: string);
|
|
35
|
+
get filterMethod(): FilterMethod;
|
|
36
|
+
set filterMethod(method: FilterMethod);
|
|
37
|
+
get options(): InternalOption[];
|
|
38
|
+
get numOfVisibleOptions(): number;
|
|
39
|
+
get numOptions(): number;
|
|
40
|
+
populate(options: Option[]): void;
|
|
41
|
+
add(option: Option): void;
|
|
42
|
+
clear(): void;
|
|
43
|
+
getIsIndexSelected(index: number): boolean;
|
|
44
|
+
expandMultiSelection(values: string[]): void;
|
|
45
|
+
toggleActiveMultiselectOption(): void;
|
|
46
|
+
toggleOptionSelected(optIndex: number): void;
|
|
47
|
+
getActiveOption(): InternalOption | null;
|
|
48
|
+
getSelectedOption(): InternalOption | null;
|
|
49
|
+
getOptionByIndex(index: number): InternalOption;
|
|
50
|
+
findOptionIndex(value: string): number;
|
|
51
|
+
getOptionByValue(value: string, includeHiddenOptions?: boolean): InternalOption | null;
|
|
52
|
+
getOptionByLabel(label: string): InternalOption | null;
|
|
53
|
+
next(fromIndex?: number): InternalOption | null;
|
|
54
|
+
prev(fromIndex?: number): InternalOption | null;
|
|
55
|
+
activateDefault(): void;
|
|
56
|
+
selectAll(): void;
|
|
57
|
+
selectNone(): void;
|
|
58
|
+
private _searchByPattern;
|
|
59
|
+
private _updateState;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=OptionListController.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OptionListController.d.ts","sourceRoot":"","sources":["../../../src/includes/vscode-select/OptionListController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAE,sBAAsB,EAAC,MAAM,KAAK,CAAC;AAC/D,OAAO,EAAC,YAAY,EAAE,cAAc,EAAE,MAAM,EAAC,MAAM,SAAS,CAAC;AAS7D,qBAAa,oBAAqB,YAAW,kBAAkB;IAC7D,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,KAAK,CAAyB;IACtC,OAAO,CAAC,QAAQ,CAAwB;IACxC,OAAO,CAAC,cAAc,CAAM;IAC5B,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,aAAa,CAAkC;IACvD,OAAO,CAAC,aAAa,CAAkC;IACvD,OAAO,CAAC,cAAc,CAAM;IAC5B,OAAO,CAAC,gBAAgB,CAA0B;IAClD,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,oBAAoB,CAAK;gBAErB,IAAI,EAAE,sBAAsB;IAIxC,aAAa,IAAI,IAAI;IAIrB,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,WAAW,CAAC,KAAK,EAAE,MAAM,EAG5B;IAED,IAAI,mBAAmB,IAAI,MAAM,CAEhC;IAED,IAAI,YAAY,CAAC,OAAO,EAAE,OAAO,EAGhC;IAED,IAAI,YAAY,IALU,OAAO,CAOhC;IAED,IAAI,WAAW,IAIc,OAAO,CAFnC;IAED,IAAI,WAAW,CAAC,WAAW,EAAE,OAAO,EAKnC;IAED,IAAI,aAAa,IAIQ,MAAM,CAF9B;IAED,IAAI,aAAa,CAAC,KAAK,EAAE,MAAM,EAS9B;IAED,IAAI,eAAe,IAIQ,MAAM,EAAE,CAFlC;IAED,IAAI,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,EAclC;IAED,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,EAWpC;IAED,IAAI,KAAK,IAAI,MAAM,GAAG,MAAM,EAAE,CAU7B;IAED,IAAI,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAMtC;IAED,IAAI,gBAAgB,IAAI,MAAM,EAAE,CAI/B;IAED,IAAI,aAAa,IAIU,MAAM,CAFhC;IAED,IAAI,aAAa,CAAC,OAAO,EAAE,MAAM,EAKhC;IAED,IAAI,YAAY,IAAI,YAAY,CAE/B;IAED,IAAI,YAAY,CAAC,MAAM,EAAE,YAAY,EAKpC;IAED,IAAI,OAAO,IAAI,cAAc,EAAE,CAE9B;IAED,IAAI,mBAAmB,WAEtB;IAED,IAAI,UAAU,WAEb;IAMD,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE;IAwB1B,GAAG,CAAC,MAAM,EAAE,MAAM;IAsClB,KAAK;IAOL,kBAAkB,CAAC,KAAK,EAAE,MAAM;IAQhC,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE;IAYrC,6BAA6B;IAkB7B,oBAAoB,CAAC,QAAQ,EAAE,MAAM;IAarC,eAAe,IAAI,cAAc,GAAG,IAAI;IAIxC,iBAAiB,IAAI,cAAc,GAAG,IAAI;IAI1C,gBAAgB,CAAC,KAAK,EAAE,MAAM;IAI9B,eAAe,CAAC,KAAK,EAAE,MAAM;IAI7B,gBAAgB,CACd,KAAK,EAAE,MAAM,EACb,oBAAoB,UAAQ,GAC3B,cAAc,GAAG,IAAI;IAcxB,gBAAgB,CAAC,KAAK,EAAE,MAAM;IAU9B,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAkB/C,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAmB/C,eAAe;IAkBf,SAAS;IAaT,UAAU;IAiBV,OAAO,CAAC,gBAAgB;IAoBxB,OAAO,CAAC,YAAY;CA6BrB"}
|
|
@@ -0,0 +1,373 @@
|
|
|
1
|
+
import { containsSearch, fuzzySearch, startsWithPerTermSearch, startsWithSearch, } from './helpers';
|
|
2
|
+
export class OptionListController {
|
|
3
|
+
constructor(host) {
|
|
4
|
+
this._activeIndex = -1;
|
|
5
|
+
this._options = [];
|
|
6
|
+
this._filterPattern = '';
|
|
7
|
+
this._filterMethod = 'fuzzy';
|
|
8
|
+
this._combobox = false;
|
|
9
|
+
this._indexByValue = new Map();
|
|
10
|
+
this._indexByLabel = new Map();
|
|
11
|
+
this._selectedIndex = -1;
|
|
12
|
+
this._selectedIndexes = new Set();
|
|
13
|
+
this._multiSelect = false;
|
|
14
|
+
this._numOfVisibleOptions = 0;
|
|
15
|
+
(this._host = host).addController(this);
|
|
16
|
+
}
|
|
17
|
+
hostConnected() { }
|
|
18
|
+
//#region getters/setters
|
|
19
|
+
get activeIndex() {
|
|
20
|
+
return this._activeIndex;
|
|
21
|
+
}
|
|
22
|
+
set activeIndex(index) {
|
|
23
|
+
this._activeIndex = index;
|
|
24
|
+
this._host.requestUpdate();
|
|
25
|
+
}
|
|
26
|
+
get relativeActiveIndex() {
|
|
27
|
+
return this._options[this._activeIndex]?.filteredIndex ?? -1;
|
|
28
|
+
}
|
|
29
|
+
set comboboxMode(enabled) {
|
|
30
|
+
this._combobox = enabled;
|
|
31
|
+
this._host.requestUpdate();
|
|
32
|
+
}
|
|
33
|
+
get comboboxMode() {
|
|
34
|
+
return this._combobox;
|
|
35
|
+
}
|
|
36
|
+
get multiSelect() {
|
|
37
|
+
return this._multiSelect;
|
|
38
|
+
}
|
|
39
|
+
set multiSelect(multiSelect) {
|
|
40
|
+
this._selectedIndex = -1;
|
|
41
|
+
this._selectedIndexes.clear();
|
|
42
|
+
this._multiSelect = multiSelect;
|
|
43
|
+
this._host.requestUpdate();
|
|
44
|
+
}
|
|
45
|
+
get selectedIndex() {
|
|
46
|
+
return this._selectedIndex;
|
|
47
|
+
}
|
|
48
|
+
set selectedIndex(index) {
|
|
49
|
+
if (this._selectedIndex !== -1) {
|
|
50
|
+
this._options[this._selectedIndex].selected ??= false;
|
|
51
|
+
}
|
|
52
|
+
const op = this.getOptionByIndex(index);
|
|
53
|
+
this._selectedIndex = op ? index : -1;
|
|
54
|
+
this._host.requestUpdate();
|
|
55
|
+
}
|
|
56
|
+
get selectedIndexes() {
|
|
57
|
+
return Array.from(this._selectedIndexes);
|
|
58
|
+
}
|
|
59
|
+
set selectedIndexes(value) {
|
|
60
|
+
this._selectedIndexes.forEach((v) => {
|
|
61
|
+
this._options[v].selected = false;
|
|
62
|
+
});
|
|
63
|
+
this._selectedIndexes = new Set(value);
|
|
64
|
+
value.forEach((v) => {
|
|
65
|
+
if (this._options[v] !== undefined) {
|
|
66
|
+
this._options[v].selected = true;
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
this._host.requestUpdate();
|
|
70
|
+
}
|
|
71
|
+
set value(newValue) {
|
|
72
|
+
if (this._multiSelect) {
|
|
73
|
+
const valueList = newValue
|
|
74
|
+
.map((v) => this._indexByValue.get(v))
|
|
75
|
+
.filter((v) => v !== undefined);
|
|
76
|
+
this._selectedIndexes = new Set(valueList);
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
this._selectedIndex = this._indexByValue.get(newValue) ?? -1;
|
|
80
|
+
}
|
|
81
|
+
this._host.requestUpdate();
|
|
82
|
+
}
|
|
83
|
+
get value() {
|
|
84
|
+
if (this._multiSelect) {
|
|
85
|
+
return this._selectedIndexes.size > 0
|
|
86
|
+
? Array.from(this._selectedIndexes).map((v) => this._options[v].value)
|
|
87
|
+
: [];
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
return this._selectedIndex > -1
|
|
91
|
+
? this._options[this._selectedIndex].value
|
|
92
|
+
: '';
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
set multiSelectValue(newValue) {
|
|
96
|
+
const valueList = newValue
|
|
97
|
+
.map((v) => this._indexByValue.get(v))
|
|
98
|
+
.filter((v) => v !== undefined);
|
|
99
|
+
this._selectedIndexes = new Set(valueList);
|
|
100
|
+
}
|
|
101
|
+
get multiSelectValue() {
|
|
102
|
+
return this._selectedIndexes.size > 0
|
|
103
|
+
? Array.from(this._selectedIndexes).map((v) => this._options[v].value)
|
|
104
|
+
: [];
|
|
105
|
+
}
|
|
106
|
+
get filterPattern() {
|
|
107
|
+
return this._filterPattern;
|
|
108
|
+
}
|
|
109
|
+
set filterPattern(pattern) {
|
|
110
|
+
if (pattern !== this._filterPattern) {
|
|
111
|
+
this._filterPattern = pattern;
|
|
112
|
+
this._updateState();
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
get filterMethod() {
|
|
116
|
+
return this._filterMethod;
|
|
117
|
+
}
|
|
118
|
+
set filterMethod(method) {
|
|
119
|
+
if (method !== this._filterMethod) {
|
|
120
|
+
this._filterMethod = method;
|
|
121
|
+
this._updateState();
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
get options() {
|
|
125
|
+
return this._options;
|
|
126
|
+
}
|
|
127
|
+
get numOfVisibleOptions() {
|
|
128
|
+
return this._numOfVisibleOptions;
|
|
129
|
+
}
|
|
130
|
+
get numOptions() {
|
|
131
|
+
return this._options.length;
|
|
132
|
+
}
|
|
133
|
+
//#endregion
|
|
134
|
+
//#region public functions
|
|
135
|
+
populate(options) {
|
|
136
|
+
this._indexByValue.clear();
|
|
137
|
+
this._indexByLabel.clear();
|
|
138
|
+
this._options = options.map((op, index) => {
|
|
139
|
+
this._indexByValue.set(op.value ?? '', index);
|
|
140
|
+
this._indexByLabel.set(op.label ?? '', index);
|
|
141
|
+
return {
|
|
142
|
+
description: op.description ?? '',
|
|
143
|
+
disabled: op.disabled ?? false,
|
|
144
|
+
label: op.label ?? '',
|
|
145
|
+
selected: op.selected ?? false,
|
|
146
|
+
value: op.value ?? '',
|
|
147
|
+
index,
|
|
148
|
+
filteredIndex: index,
|
|
149
|
+
ranges: [],
|
|
150
|
+
visible: true,
|
|
151
|
+
};
|
|
152
|
+
});
|
|
153
|
+
this._numOfVisibleOptions = this._options.length;
|
|
154
|
+
}
|
|
155
|
+
add(option) {
|
|
156
|
+
const nextIndex = this._options.length;
|
|
157
|
+
const { description, disabled, label, selected, value } = option;
|
|
158
|
+
let visible = true;
|
|
159
|
+
let ranges = [];
|
|
160
|
+
if (this._combobox && this._filterPattern !== '') {
|
|
161
|
+
const res = this._searchByPattern(label ?? '');
|
|
162
|
+
visible = res.match;
|
|
163
|
+
ranges = res.ranges;
|
|
164
|
+
}
|
|
165
|
+
this._indexByValue.set(value ?? '', nextIndex);
|
|
166
|
+
this._indexByLabel.set(label ?? '', nextIndex);
|
|
167
|
+
if (selected) {
|
|
168
|
+
this._selectedIndex = nextIndex;
|
|
169
|
+
this._selectedIndexes.add(nextIndex);
|
|
170
|
+
this._activeIndex = nextIndex;
|
|
171
|
+
}
|
|
172
|
+
this._options.push({
|
|
173
|
+
index: nextIndex,
|
|
174
|
+
filteredIndex: nextIndex,
|
|
175
|
+
description: description ?? '',
|
|
176
|
+
disabled: disabled ?? false,
|
|
177
|
+
label: label ?? '',
|
|
178
|
+
selected: selected ?? false,
|
|
179
|
+
value: value ?? '',
|
|
180
|
+
visible,
|
|
181
|
+
ranges,
|
|
182
|
+
});
|
|
183
|
+
if (visible) {
|
|
184
|
+
this._numOfVisibleOptions += 1;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
clear() {
|
|
188
|
+
this._options = [];
|
|
189
|
+
this._indexByValue.clear();
|
|
190
|
+
this._indexByLabel.clear();
|
|
191
|
+
this._numOfVisibleOptions = 0;
|
|
192
|
+
}
|
|
193
|
+
getIsIndexSelected(index) {
|
|
194
|
+
if (this._multiSelect) {
|
|
195
|
+
return this._selectedIndexes.has(index);
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
return this._selectedIndex === index;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
expandMultiSelection(values) {
|
|
202
|
+
values.forEach((v) => {
|
|
203
|
+
const foundIndex = this._indexByValue.get(v) ?? -1;
|
|
204
|
+
if (foundIndex !== -1) {
|
|
205
|
+
this._selectedIndexes.add(foundIndex);
|
|
206
|
+
}
|
|
207
|
+
});
|
|
208
|
+
this._host.requestUpdate();
|
|
209
|
+
}
|
|
210
|
+
toggleActiveMultiselectOption() {
|
|
211
|
+
const activeOption = this._options[this._activeIndex] ?? null;
|
|
212
|
+
if (!activeOption) {
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
const checked = this._selectedIndexes.has(activeOption.index);
|
|
216
|
+
if (checked) {
|
|
217
|
+
this._selectedIndexes.delete(activeOption.index);
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
this._selectedIndexes.add(activeOption.index);
|
|
221
|
+
}
|
|
222
|
+
this._host.requestUpdate();
|
|
223
|
+
}
|
|
224
|
+
toggleOptionSelected(optIndex) {
|
|
225
|
+
const checked = this._selectedIndexes.has(optIndex);
|
|
226
|
+
this._options[optIndex].selected = !this._options[optIndex].selected;
|
|
227
|
+
if (checked) {
|
|
228
|
+
this._selectedIndexes.delete(optIndex);
|
|
229
|
+
}
|
|
230
|
+
else {
|
|
231
|
+
this._selectedIndexes.add(optIndex);
|
|
232
|
+
}
|
|
233
|
+
this._host.requestUpdate();
|
|
234
|
+
}
|
|
235
|
+
getActiveOption() {
|
|
236
|
+
return this._options[this._activeIndex] ?? null;
|
|
237
|
+
}
|
|
238
|
+
getSelectedOption() {
|
|
239
|
+
return this._options[this._selectedIndex] ?? null;
|
|
240
|
+
}
|
|
241
|
+
getOptionByIndex(index) {
|
|
242
|
+
return this._options[index] ?? null;
|
|
243
|
+
}
|
|
244
|
+
findOptionIndex(value) {
|
|
245
|
+
return this._indexByValue.get(value) ?? -1;
|
|
246
|
+
}
|
|
247
|
+
getOptionByValue(value, includeHiddenOptions = false) {
|
|
248
|
+
const index = this._indexByValue.get(value) ?? -1;
|
|
249
|
+
if (index === -1) {
|
|
250
|
+
return null;
|
|
251
|
+
}
|
|
252
|
+
if (!includeHiddenOptions) {
|
|
253
|
+
return this._options[index].visible ? this._options[index] : null;
|
|
254
|
+
}
|
|
255
|
+
return this._options[index];
|
|
256
|
+
}
|
|
257
|
+
getOptionByLabel(label) {
|
|
258
|
+
const index = this._indexByLabel.get(label) ?? -1;
|
|
259
|
+
if (index === -1) {
|
|
260
|
+
return null;
|
|
261
|
+
}
|
|
262
|
+
return this._options[index];
|
|
263
|
+
}
|
|
264
|
+
next(fromIndex) {
|
|
265
|
+
const from = fromIndex ?? this._activeIndex;
|
|
266
|
+
let nextIndex = -1;
|
|
267
|
+
for (let i = from + 1; i < this._options.length; i++) {
|
|
268
|
+
if (this._options[i] &&
|
|
269
|
+
!this._options[i].disabled &&
|
|
270
|
+
this._options[i].visible) {
|
|
271
|
+
nextIndex = i;
|
|
272
|
+
break;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
return nextIndex > -1 ? this._options[nextIndex] : null;
|
|
276
|
+
}
|
|
277
|
+
prev(fromIndex) {
|
|
278
|
+
const from = fromIndex ?? this._activeIndex;
|
|
279
|
+
let prevIndex = -1;
|
|
280
|
+
for (let i = from - 1; i >= 0; i--) {
|
|
281
|
+
if (this._options[i] &&
|
|
282
|
+
!this._options[i].disabled &&
|
|
283
|
+
this._options[i].visible) {
|
|
284
|
+
prevIndex = i;
|
|
285
|
+
break;
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
return prevIndex > -1 ? this._options[prevIndex] : null;
|
|
289
|
+
}
|
|
290
|
+
activateDefault() {
|
|
291
|
+
if (this._multiSelect) {
|
|
292
|
+
if (this._selectedIndexes.size > 0) {
|
|
293
|
+
const indexes = this._selectedIndexes.values();
|
|
294
|
+
const first = indexes.next();
|
|
295
|
+
this._activeIndex = first.value ? first.value : 0;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
else {
|
|
299
|
+
if (this._selectedIndex > -1) {
|
|
300
|
+
this._activeIndex = this._selectedIndex;
|
|
301
|
+
}
|
|
302
|
+
else {
|
|
303
|
+
this._activeIndex = 0;
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
this._host.requestUpdate();
|
|
307
|
+
}
|
|
308
|
+
selectAll() {
|
|
309
|
+
if (!this._multiSelect) {
|
|
310
|
+
return;
|
|
311
|
+
}
|
|
312
|
+
this._options.forEach((_, i) => {
|
|
313
|
+
this._options[i].selected = true;
|
|
314
|
+
this._selectedIndexes.add(i);
|
|
315
|
+
});
|
|
316
|
+
this._host.requestUpdate();
|
|
317
|
+
}
|
|
318
|
+
selectNone() {
|
|
319
|
+
if (!this._multiSelect) {
|
|
320
|
+
return;
|
|
321
|
+
}
|
|
322
|
+
this._options.forEach((_, i) => {
|
|
323
|
+
this._options[i].selected = false;
|
|
324
|
+
});
|
|
325
|
+
this._selectedIndexes.clear();
|
|
326
|
+
this._host.requestUpdate();
|
|
327
|
+
}
|
|
328
|
+
//#endregion
|
|
329
|
+
//#region private functions
|
|
330
|
+
_searchByPattern(text) {
|
|
331
|
+
let result;
|
|
332
|
+
switch (this._filterMethod) {
|
|
333
|
+
case 'startsWithPerTerm':
|
|
334
|
+
result = startsWithPerTermSearch(text, this._filterPattern);
|
|
335
|
+
break;
|
|
336
|
+
case 'startsWith':
|
|
337
|
+
result = startsWithSearch(text, this._filterPattern);
|
|
338
|
+
break;
|
|
339
|
+
case 'contains':
|
|
340
|
+
result = containsSearch(text, this._filterPattern);
|
|
341
|
+
break;
|
|
342
|
+
default:
|
|
343
|
+
result = fuzzySearch(text, this._filterPattern);
|
|
344
|
+
}
|
|
345
|
+
return result;
|
|
346
|
+
}
|
|
347
|
+
_updateState() {
|
|
348
|
+
if (!this._combobox || this._filterPattern === '') {
|
|
349
|
+
this._options.forEach((_, i) => {
|
|
350
|
+
this._options[i].visible = true;
|
|
351
|
+
this._options[i].ranges = [];
|
|
352
|
+
});
|
|
353
|
+
this._numOfVisibleOptions = this._options.length;
|
|
354
|
+
}
|
|
355
|
+
else {
|
|
356
|
+
let filteredListNextIndex = -1;
|
|
357
|
+
this._numOfVisibleOptions = 0;
|
|
358
|
+
this._options.forEach(({ label }, i) => {
|
|
359
|
+
const result = this._searchByPattern(label);
|
|
360
|
+
this._options[i].visible = result.match;
|
|
361
|
+
this._options[i].ranges = result.ranges;
|
|
362
|
+
this._options[i].filteredIndex = result.match
|
|
363
|
+
? ++filteredListNextIndex
|
|
364
|
+
: -1;
|
|
365
|
+
if (result.match) {
|
|
366
|
+
this._numOfVisibleOptions += 1;
|
|
367
|
+
}
|
|
368
|
+
});
|
|
369
|
+
}
|
|
370
|
+
this._host.requestUpdate();
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
//# sourceMappingURL=OptionListController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OptionListController.js","sourceRoot":"","sources":["../../../src/includes/vscode-select/OptionListController.ts"],"names":[],"mappings":"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","sourcesContent":["import {ReactiveController, ReactiveControllerHost} from 'lit';\nimport {FilterMethod, InternalOption, Option} from './types';\nimport {\n containsSearch,\n fuzzySearch,\n SearchResult,\n startsWithPerTermSearch,\n startsWithSearch,\n} from './helpers';\n\nexport class OptionListController implements ReactiveController {\n private _activeIndex = -1;\n private _host: ReactiveControllerHost;\n private _options: InternalOption[] = [];\n private _filterPattern = '';\n private _filterMethod: FilterMethod = 'fuzzy';\n private _combobox = false;\n private _indexByValue: Map<string, number> = new Map();\n private _indexByLabel: Map<string, number> = new Map();\n private _selectedIndex = -1;\n private _selectedIndexes: Set<number> = new Set();\n private _multiSelect = false;\n private _numOfVisibleOptions = 0;\n\n constructor(host: ReactiveControllerHost) {\n (this._host = host).addController(this);\n }\n\n hostConnected(): void {}\n\n //#region getters/setters\n\n get activeIndex(): number {\n return this._activeIndex;\n }\n\n set activeIndex(index: number) {\n this._activeIndex = index;\n this._host.requestUpdate();\n }\n\n get relativeActiveIndex(): number {\n return this._options[this._activeIndex]?.filteredIndex ?? -1;\n }\n\n set comboboxMode(enabled: boolean) {\n this._combobox = enabled;\n this._host.requestUpdate();\n }\n\n get comboboxMode() {\n return this._combobox;\n }\n\n get multiSelect() {\n return this._multiSelect;\n }\n\n set multiSelect(multiSelect: boolean) {\n this._selectedIndex = -1;\n this._selectedIndexes.clear();\n this._multiSelect = multiSelect;\n this._host.requestUpdate();\n }\n\n get selectedIndex() {\n return this._selectedIndex;\n }\n\n set selectedIndex(index: number) {\n if (this._selectedIndex !== -1) {\n this._options[this._selectedIndex].selected ??= false;\n }\n\n const op = this.getOptionByIndex(index);\n\n this._selectedIndex = op ? index : -1;\n this._host.requestUpdate();\n }\n\n get selectedIndexes() {\n return Array.from(this._selectedIndexes);\n }\n\n set selectedIndexes(value: number[]) {\n this._selectedIndexes.forEach((v) => {\n this._options[v].selected = false;\n });\n\n this._selectedIndexes = new Set(value);\n\n value.forEach((v) => {\n if (this._options[v] !== undefined) {\n this._options[v].selected = true;\n }\n });\n\n this._host.requestUpdate();\n }\n\n set value(newValue: string | string[]) {\n if (this._multiSelect) {\n const valueList = (newValue as string[])\n .map((v) => this._indexByValue.get(v))\n .filter((v) => v !== undefined);\n\n this._selectedIndexes = new Set(valueList);\n } else {\n this._selectedIndex = this._indexByValue.get(newValue as string) ?? -1;\n }\n this._host.requestUpdate();\n }\n\n get value(): string | string[] {\n if (this._multiSelect) {\n return this._selectedIndexes.size > 0\n ? Array.from(this._selectedIndexes).map((v) => this._options[v].value)\n : [];\n } else {\n return this._selectedIndex > -1\n ? this._options[this._selectedIndex].value\n : '';\n }\n }\n\n set multiSelectValue(newValue: string[]) {\n const valueList = (newValue as string[])\n .map((v) => this._indexByValue.get(v))\n .filter((v) => v !== undefined);\n\n this._selectedIndexes = new Set(valueList);\n }\n\n get multiSelectValue(): string[] {\n return this._selectedIndexes.size > 0\n ? Array.from(this._selectedIndexes).map((v) => this._options[v].value)\n : [];\n }\n\n get filterPattern() {\n return this._filterPattern;\n }\n\n set filterPattern(pattern: string) {\n if (pattern !== this._filterPattern) {\n this._filterPattern = pattern;\n this._updateState();\n }\n }\n\n get filterMethod(): FilterMethod {\n return this._filterMethod;\n }\n\n set filterMethod(method: FilterMethod) {\n if (method !== this._filterMethod) {\n this._filterMethod = method;\n this._updateState();\n }\n }\n\n get options(): InternalOption[] {\n return this._options;\n }\n\n get numOfVisibleOptions() {\n return this._numOfVisibleOptions;\n }\n\n get numOptions() {\n return this._options.length;\n }\n\n //#endregion\n\n //#region public functions\n\n populate(options: Option[]) {\n this._indexByValue.clear();\n this._indexByLabel.clear();\n\n this._options = options.map((op, index) => {\n this._indexByValue.set(op.value ?? '', index);\n this._indexByLabel.set(op.label ?? '', index);\n\n return {\n description: op.description ?? '',\n disabled: op.disabled ?? false,\n label: op.label ?? '',\n selected: op.selected ?? false,\n value: op.value ?? '',\n index,\n filteredIndex: index,\n ranges: [],\n visible: true,\n };\n });\n\n this._numOfVisibleOptions = this._options.length;\n }\n\n add(option: Option) {\n const nextIndex = this._options.length;\n const {description, disabled, label, selected, value} = option;\n let visible = true;\n let ranges: [number, number][] = [];\n\n if (this._combobox && this._filterPattern !== '') {\n const res = this._searchByPattern(label ?? '');\n visible = res.match;\n ranges = res.ranges;\n }\n\n this._indexByValue.set(value ?? '', nextIndex);\n this._indexByLabel.set(label ?? '', nextIndex);\n\n if (selected) {\n this._selectedIndex = nextIndex;\n this._selectedIndexes.add(nextIndex);\n this._activeIndex = nextIndex;\n }\n\n this._options.push({\n index: nextIndex,\n filteredIndex: nextIndex,\n description: description ?? '',\n disabled: disabled ?? false,\n label: label ?? '',\n selected: selected ?? false,\n value: value ?? '',\n visible,\n ranges,\n });\n\n if (visible) {\n this._numOfVisibleOptions += 1;\n }\n }\n\n clear() {\n this._options = [];\n this._indexByValue.clear();\n this._indexByLabel.clear();\n this._numOfVisibleOptions = 0;\n }\n\n getIsIndexSelected(index: number) {\n if (this._multiSelect) {\n return this._selectedIndexes.has(index);\n } else {\n return this._selectedIndex === index;\n }\n }\n\n expandMultiSelection(values: string[]) {\n values.forEach((v) => {\n const foundIndex = this._indexByValue.get(v) ?? -1;\n\n if (foundIndex !== -1) {\n this._selectedIndexes.add(foundIndex);\n }\n });\n\n this._host.requestUpdate();\n }\n\n toggleActiveMultiselectOption() {\n const activeOption = this._options[this._activeIndex] ?? null;\n\n if (!activeOption) {\n return;\n }\n\n const checked = this._selectedIndexes.has(activeOption.index);\n\n if (checked) {\n this._selectedIndexes.delete(activeOption.index);\n } else {\n this._selectedIndexes.add(activeOption.index);\n }\n\n this._host.requestUpdate();\n }\n\n toggleOptionSelected(optIndex: number) {\n const checked = this._selectedIndexes.has(optIndex);\n this._options[optIndex].selected = !this._options[optIndex].selected;\n\n if (checked) {\n this._selectedIndexes.delete(optIndex);\n } else {\n this._selectedIndexes.add(optIndex);\n }\n\n this._host.requestUpdate();\n }\n\n getActiveOption(): InternalOption | null {\n return this._options[this._activeIndex] ?? null;\n }\n\n getSelectedOption(): InternalOption | null {\n return this._options[this._selectedIndex] ?? null;\n }\n\n getOptionByIndex(index: number) {\n return this._options[index] ?? null;\n }\n\n findOptionIndex(value: string) {\n return this._indexByValue.get(value) ?? -1;\n }\n\n getOptionByValue(\n value: string,\n includeHiddenOptions = false\n ): InternalOption | null {\n const index = this._indexByValue.get(value) ?? -1;\n\n if (index === -1) {\n return null;\n }\n\n if (!includeHiddenOptions) {\n return this._options[index].visible ? this._options[index] : null;\n }\n\n return this._options[index];\n }\n\n getOptionByLabel(label: string) {\n const index = this._indexByLabel.get(label) ?? -1;\n\n if (index === -1) {\n return null;\n }\n\n return this._options[index];\n }\n\n next(fromIndex?: number): InternalOption | null {\n const from = fromIndex ?? this._activeIndex;\n let nextIndex = -1;\n\n for (let i = from + 1; i < this._options.length; i++) {\n if (\n this._options[i] &&\n !this._options[i].disabled &&\n this._options[i].visible\n ) {\n nextIndex = i;\n break;\n }\n }\n\n return nextIndex > -1 ? this._options[nextIndex] : null;\n }\n\n prev(fromIndex?: number): InternalOption | null {\n const from = fromIndex ?? this._activeIndex;\n\n let prevIndex = -1;\n\n for (let i = from - 1; i >= 0; i--) {\n if (\n this._options[i] &&\n !this._options[i].disabled &&\n this._options[i].visible\n ) {\n prevIndex = i;\n break;\n }\n }\n\n return prevIndex > -1 ? this._options[prevIndex] : null;\n }\n\n activateDefault() {\n if (this._multiSelect) {\n if (this._selectedIndexes.size > 0) {\n const indexes = this._selectedIndexes.values();\n const first = indexes.next();\n this._activeIndex = first.value ? first.value : 0;\n }\n } else {\n if (this._selectedIndex > -1) {\n this._activeIndex = this._selectedIndex;\n } else {\n this._activeIndex = 0;\n }\n }\n\n this._host.requestUpdate();\n }\n\n selectAll() {\n if (!this._multiSelect) {\n return;\n }\n\n this._options.forEach((_, i) => {\n this._options[i].selected = true;\n this._selectedIndexes.add(i);\n });\n\n this._host.requestUpdate();\n }\n\n selectNone() {\n if (!this._multiSelect) {\n return;\n }\n\n this._options.forEach((_, i) => {\n this._options[i].selected = false;\n });\n this._selectedIndexes.clear();\n\n this._host.requestUpdate();\n }\n\n //#endregion\n\n //#region private functions\n\n private _searchByPattern(text: string) {\n let result: SearchResult;\n\n switch (this._filterMethod) {\n case 'startsWithPerTerm':\n result = startsWithPerTermSearch(text, this._filterPattern);\n break;\n case 'startsWith':\n result = startsWithSearch(text, this._filterPattern);\n break;\n case 'contains':\n result = containsSearch(text, this._filterPattern);\n break;\n default:\n result = fuzzySearch(text, this._filterPattern);\n }\n\n return result;\n }\n\n private _updateState() {\n if (!this._combobox || this._filterPattern === '') {\n this._options.forEach((_, i) => {\n this._options[i].visible = true;\n this._options[i].ranges = [];\n });\n this._numOfVisibleOptions = this._options.length;\n } else {\n let filteredListNextIndex = -1;\n this._numOfVisibleOptions = 0;\n\n this._options.forEach(({label}, i) => {\n const result = this._searchByPattern(label);\n this._options[i].visible = result.match;\n this._options[i].ranges = result.ranges;\n this._options[i].filteredIndex = result.match\n ? ++filteredListNextIndex\n : -1;\n\n if (result.match) {\n this._numOfVisibleOptions += 1;\n }\n });\n }\n\n this._host.requestUpdate();\n }\n\n //#endregion\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { TemplateResult } from 'lit';
|
|
2
|
-
import { InternalOption,
|
|
2
|
+
import { InternalOption, FilterMethod } from './types.js';
|
|
3
3
|
export type SearchResult = {
|
|
4
4
|
match: boolean;
|
|
5
5
|
ranges: [number, number][];
|
|
@@ -8,6 +8,8 @@ export declare const startsWithPerTermSearch: (subject: string, pattern: string)
|
|
|
8
8
|
export declare const startsWithSearch: (subject: string, pattern: string) => SearchResult;
|
|
9
9
|
export declare const containsSearch: (subject: string, pattern: string) => SearchResult;
|
|
10
10
|
export declare const fuzzySearch: (subject: string, pattern: string) => SearchResult;
|
|
11
|
-
export declare const filterOptionsByPattern: (list: InternalOption[], pattern: string, method:
|
|
11
|
+
export declare const filterOptionsByPattern: (list: InternalOption[], pattern: string, method: FilterMethod) => InternalOption[];
|
|
12
12
|
export declare const highlightRanges: (text: string, ranges: [number, number][]) => TemplateResult | TemplateResult[];
|
|
13
|
+
export declare function findNextSelectableOptionIndex(options: InternalOption[], fromIndex: number): number;
|
|
14
|
+
export declare function findPrevSelectableOptionIndex(options: InternalOption[], fromIndex: number): number;
|
|
13
15
|
//# sourceMappingURL=helpers.d.ts.map
|