@vscode-elements/elements 1.3.1 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/custom-elements.json +307 -125
  2. package/dist/bundled.js +1 -1
  3. package/dist/includes/VscElement.js +1 -1
  4. package/dist/includes/VscElement.js.map +1 -1
  5. package/dist/includes/vscode-select/helpers.d.ts +10 -4
  6. package/dist/includes/vscode-select/helpers.d.ts.map +1 -1
  7. package/dist/includes/vscode-select/helpers.js +119 -17
  8. package/dist/includes/vscode-select/helpers.js.map +1 -1
  9. package/dist/includes/vscode-select/styles.d.ts.map +1 -1
  10. package/dist/includes/vscode-select/styles.js +8 -0
  11. package/dist/includes/vscode-select/styles.js.map +1 -1
  12. package/dist/includes/vscode-select/types.d.ts +1 -0
  13. package/dist/includes/vscode-select/types.d.ts.map +1 -1
  14. package/dist/includes/vscode-select/types.js.map +1 -1
  15. package/dist/includes/vscode-select/vscode-select-base.d.ts +14 -5
  16. package/dist/includes/vscode-select/vscode-select-base.d.ts.map +1 -1
  17. package/dist/includes/vscode-select/vscode-select-base.js +32 -4
  18. package/dist/includes/vscode-select/vscode-select-base.js.map +1 -1
  19. package/dist/vscode-multi-select/vscode-multi-select.d.ts +4 -1
  20. package/dist/vscode-multi-select/vscode-multi-select.d.ts.map +1 -1
  21. package/dist/vscode-multi-select/vscode-multi-select.js +20 -7
  22. package/dist/vscode-multi-select/vscode-multi-select.js.map +1 -1
  23. package/dist/vscode-single-select/vscode-single-select.d.ts +4 -1
  24. package/dist/vscode-single-select/vscode-single-select.d.ts.map +1 -1
  25. package/dist/vscode-single-select/vscode-single-select.js +18 -7
  26. package/dist/vscode-single-select/vscode-single-select.js.map +1 -1
  27. package/package.json +1 -1
  28. package/vscode.css-custom-data.json +4 -0
  29. package/vscode.html-custom-data.json +24 -6
@@ -2,7 +2,7 @@ import { LitElement } from 'lit';
2
2
  export class VscElement extends LitElement {
3
3
  constructor() {
4
4
  super(...arguments);
5
- this._version = '1.3.1';
5
+ this._version = '1.5.0';
6
6
  }
7
7
  /** VSC Element version */
8
8
  get version() {
@@ -1 +1 @@
1
- {"version":3,"file":"VscElement.js","sourceRoot":"","sources":["../../src/includes/VscElement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,KAAK,CAAC;AAE/B,MAAM,OAAO,UAAW,SAAQ,UAAU;IAA1C;;QACU,aAAQ,GAAG,OAAO,CAAC;IAM7B,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.3.1';\n\n /** VSC Element version */\n get version() {\n return this._version;\n }\n}\n"]}
1
+ {"version":3,"file":"VscElement.js","sourceRoot":"","sources":["../../src/includes/VscElement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,KAAK,CAAC;AAE/B,MAAM,OAAO,UAAW,SAAQ,UAAU;IAA1C;;QACU,aAAQ,GAAG,OAAO,CAAC;IAM7B,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.5.0';\n\n /** VSC Element version */\n get version() {\n return this._version;\n }\n}\n"]}
@@ -1,7 +1,13 @@
1
+ import { TemplateResult } from 'lit';
1
2
  import { InternalOption, SearchMethod } from './types.js';
2
- export declare const startsWithPerTermMatch: (subject: string, pattern: string) => boolean;
3
- export declare const startsWithMatch: (subject: string, pattern: string) => boolean;
4
- export declare const containsMatch: (subject: string, pattern: string) => boolean;
5
- export declare const fuzzyMatch: (subject: string, pattern: string) => boolean;
3
+ export type SearchResult = {
4
+ match: boolean;
5
+ ranges: [number, number][];
6
+ };
7
+ export declare const startsWithPerTermSearch: (subject: string, pattern: string) => SearchResult;
8
+ export declare const startsWithSearch: (subject: string, pattern: string) => SearchResult;
9
+ export declare const containsSearch: (subject: string, pattern: string) => SearchResult;
10
+ export declare const fuzzySearch: (subject: string, pattern: string) => SearchResult;
6
11
  export declare const filterOptionsByPattern: (list: InternalOption[], pattern: string, method: SearchMethod) => InternalOption[];
12
+ export declare const highlightRanges: (text: string, ranges: [number, number][]) => TemplateResult | TemplateResult[];
7
13
  //# sourceMappingURL=helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/includes/vscode-select/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAE,YAAY,EAAC,MAAM,YAAY,CAAC;AAExD,eAAO,MAAM,sBAAsB,YACxB,MAAM,WACN,MAAM,KACd,OAMF,CAAC;AAEF,eAAO,MAAM,eAAe,YAAa,MAAM,WAAW,MAAM,KAAG,OACP,CAAC;AAE7D,eAAO,MAAM,aAAa,YAAa,MAAM,WAAW,MAAM,KAAG,OACN,CAAC;AAE5D,eAAO,MAAM,UAAU,YAAa,MAAM,WAAW,MAAM,KAAG,OAkB7D,CAAC;AAEF,eAAO,MAAM,sBAAsB,SAC3B,cAAc,EAAE,WACb,MAAM,UACP,YAAY,KACnB,cAAc,EAahB,CAAC"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/includes/vscode-select/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,cAAc,EAAC,MAAM,KAAK,CAAC;AACzC,OAAO,EAAC,cAAc,EAAE,YAAY,EAAC,MAAM,YAAY,CAAC;AAExD,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;CAC5B,CAAC;AAEF,eAAO,MAAM,uBAAuB,YACzB,MAAM,WACN,MAAM,KACd,YAgCF,CAAC;AAEF,eAAO,MAAM,gBAAgB,YAClB,MAAM,WACN,MAAM,KACd,YAaF,CAAC;AAEF,eAAO,MAAM,cAAc,YAChB,MAAM,WACN,MAAM,KACd,YAaF,CAAC;AAEF,eAAO,MAAM,WAAW,YAAa,MAAM,WAAW,MAAM,KAAG,YA4B9D,CAAC;AAEF,eAAO,MAAM,sBAAsB,SAC3B,cAAc,EAAE,WACb,MAAM,UACP,YAAY,KACnB,cAAc,EA0BhB,CAAC;AAwBF,eAAO,MAAM,eAAe,SACpB,MAAM,UACJ,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,KACzB,cAAc,GAAG,cAAc,EA8BjC,CAAC"}
@@ -1,38 +1,140 @@
1
- export const startsWithPerTermMatch = (subject, pattern) => {
1
+ import { html } from 'lit';
2
+ export const startsWithPerTermSearch = (subject, pattern) => {
3
+ const result = {
4
+ match: false,
5
+ ranges: [],
6
+ };
2
7
  const lcSubject = subject.toLowerCase();
3
8
  const lcPattern = pattern.toLowerCase();
4
9
  const terms = lcSubject.split(' ');
5
- return terms.some((t) => t.indexOf(lcPattern) === 0);
10
+ let offset = 0;
11
+ terms.forEach((t, i) => {
12
+ if (i > 0) {
13
+ offset += terms[i - 1].length + 1;
14
+ }
15
+ if (result.match) {
16
+ return;
17
+ }
18
+ const foundIndex = t.indexOf(lcPattern);
19
+ const patternLength = lcPattern.length;
20
+ if (foundIndex === 0) {
21
+ result.match = true;
22
+ result.ranges.push([
23
+ offset + foundIndex,
24
+ Math.min(offset + foundIndex + patternLength, subject.length),
25
+ ]);
26
+ }
27
+ });
28
+ return result;
29
+ };
30
+ export const startsWithSearch = (subject, pattern) => {
31
+ const result = {
32
+ match: false,
33
+ ranges: [],
34
+ };
35
+ const foundIndex = subject.toLowerCase().indexOf(pattern.toLowerCase());
36
+ if (foundIndex === 0) {
37
+ result.match = true;
38
+ result.ranges = [[0, pattern.length]];
39
+ }
40
+ return result;
41
+ };
42
+ export const containsSearch = (subject, pattern) => {
43
+ const result = {
44
+ match: false,
45
+ ranges: [],
46
+ };
47
+ const foundIndex = subject.toLowerCase().indexOf(pattern.toLowerCase());
48
+ if (foundIndex > -1) {
49
+ result.match = true;
50
+ result.ranges = [[foundIndex, foundIndex + pattern.length]];
51
+ }
52
+ return result;
6
53
  };
7
- export const startsWithMatch = (subject, pattern) => subject.toLowerCase().indexOf(pattern.toLowerCase()) === 0;
8
- export const containsMatch = (subject, pattern) => subject.toLowerCase().indexOf(pattern.toLowerCase()) > -1;
9
- export const fuzzyMatch = (subject, pattern) => {
10
- let iFrom = 0;
11
- let iFound = 0;
54
+ export const fuzzySearch = (subject, pattern) => {
55
+ const result = {
56
+ match: false,
57
+ ranges: [],
58
+ };
59
+ let fromIndex = 0;
60
+ let foundIndex = 0;
12
61
  const iMax = pattern.length - 1;
13
62
  const lcSubject = subject.toLowerCase();
14
63
  const lcPattern = pattern.toLowerCase();
15
64
  for (let i = 0; i <= iMax; i++) {
16
- iFound = lcSubject.indexOf(lcPattern[i], iFrom);
17
- if (iFound === -1) {
18
- return false;
65
+ foundIndex = lcSubject.indexOf(lcPattern[i], fromIndex);
66
+ if (foundIndex === -1) {
67
+ return {
68
+ match: false,
69
+ ranges: [],
70
+ };
19
71
  }
20
- iFrom = iFound + 1;
72
+ result.match = true;
73
+ result.ranges.push([foundIndex, foundIndex + 1]);
74
+ fromIndex = foundIndex + 1;
21
75
  }
22
- return true;
76
+ return result;
23
77
  };
24
78
  export const filterOptionsByPattern = (list, pattern, method) => {
25
- return list.filter(({ label }) => {
79
+ const filtered = [];
80
+ list.forEach((op) => {
81
+ let result;
26
82
  switch (method) {
27
83
  case 'startsWithPerTerm':
28
- return startsWithPerTermMatch(label, pattern);
84
+ result = startsWithPerTermSearch(op.label, pattern);
85
+ break;
29
86
  case 'startsWith':
30
- return startsWithMatch(label, pattern);
87
+ result = startsWithSearch(op.label, pattern);
88
+ break;
31
89
  case 'contains':
32
- return containsMatch(label, pattern);
90
+ result = containsSearch(op.label, pattern);
91
+ break;
33
92
  default:
34
- return fuzzyMatch(label, pattern);
93
+ result = fuzzySearch(op.label, pattern);
94
+ }
95
+ if (result.match) {
96
+ filtered.push({ ...op, ranges: result.ranges });
97
+ }
98
+ });
99
+ return filtered;
100
+ };
101
+ const preventSpaces = (text) => {
102
+ const res = [];
103
+ if (text === ' ') {
104
+ res.push(html `&nbsp;`);
105
+ return res;
106
+ }
107
+ if (text.indexOf(' ') === 0) {
108
+ res.push(html `&nbsp;`);
109
+ }
110
+ res.push(html `${text.trimStart().trimEnd()}`);
111
+ if (text.lastIndexOf(' ') === text.length - 1) {
112
+ res.push(html `&nbsp;`);
113
+ }
114
+ return res;
115
+ };
116
+ export const highlightRanges = (text, ranges) => {
117
+ const res = [];
118
+ const rl = ranges.length;
119
+ if (rl < 1) {
120
+ return html `${text}`;
121
+ }
122
+ ranges.forEach((r, i) => {
123
+ const match = text.substring(r[0], r[1]);
124
+ if (i === 0 && r[0] !== 0) {
125
+ // text before the first range
126
+ res.push(...preventSpaces(text.substring(0, ranges[0][0])));
127
+ }
128
+ if (i > 0 && i < rl && r[0] - ranges[i - 1][1] !== 0) {
129
+ // text before the current range
130
+ res.push(...preventSpaces(text.substring(ranges[i - 1][1], r[0])));
131
+ }
132
+ res.push(html `<b>${preventSpaces(match)}</b>`);
133
+ if (i === rl - 1 && r[1] < text.length) {
134
+ // text after the last range
135
+ res.push(...preventSpaces(text.substring(r[1], text.length)));
35
136
  }
36
137
  });
138
+ return res;
37
139
  };
38
140
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/includes/vscode-select/helpers.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,OAAe,EACf,OAAe,EACN,EAAE;IACX,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACxC,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACxC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEnC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AACvD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAe,EAAE,OAAe,EAAW,EAAE,CAC3E,OAAO,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC;AAE7D,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAAe,EAAE,OAAe,EAAW,EAAE,CACzE,OAAO,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAE5D,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAe,EAAE,OAAe,EAAW,EAAE;IACtE,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IAChC,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACxC,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAExC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAEhD,IAAI,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;YAClB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC;IACrB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,IAAsB,EACtB,OAAe,EACf,MAAoB,EACF,EAAE;IACpB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,EAAC,KAAK,EAAC,EAAE,EAAE;QAC7B,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,mBAAmB;gBACtB,OAAO,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAChD,KAAK,YAAY;gBACf,OAAO,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACzC,KAAK,UAAU;gBACb,OAAO,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACvC;gBACE,OAAO,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACtC,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC","sourcesContent":["import {InternalOption, SearchMethod} from './types.js';\n\nexport const startsWithPerTermMatch = (\n subject: string,\n pattern: string\n): boolean => {\n const lcSubject = subject.toLowerCase();\n const lcPattern = pattern.toLowerCase();\n const terms = lcSubject.split(' ');\n\n return terms.some((t) => t.indexOf(lcPattern) === 0);\n};\n\nexport const startsWithMatch = (subject: string, pattern: string): boolean =>\n subject.toLowerCase().indexOf(pattern.toLowerCase()) === 0;\n\nexport const containsMatch = (subject: string, pattern: string): boolean =>\n subject.toLowerCase().indexOf(pattern.toLowerCase()) > -1;\n\nexport const fuzzyMatch = (subject: string, pattern: string): boolean => {\n let iFrom = 0;\n let iFound = 0;\n const iMax = pattern.length - 1;\n const lcSubject = subject.toLowerCase();\n const lcPattern = pattern.toLowerCase();\n\n for (let i = 0; i <= iMax; i++) {\n iFound = lcSubject.indexOf(lcPattern[i], iFrom);\n\n if (iFound === -1) {\n return false;\n }\n\n iFrom = iFound + 1;\n }\n\n return true;\n};\n\nexport const filterOptionsByPattern = (\n list: InternalOption[],\n pattern: string,\n method: SearchMethod\n): InternalOption[] => {\n return list.filter(({label}) => {\n switch (method) {\n case 'startsWithPerTerm':\n return startsWithPerTermMatch(label, pattern);\n case 'startsWith':\n return startsWithMatch(label, pattern);\n case 'contains':\n return containsMatch(label, pattern);\n default:\n return fuzzyMatch(label, pattern);\n }\n });\n};\n"]}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/includes/vscode-select/helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import {html, TemplateResult} from 'lit';\nimport {InternalOption, SearchMethod} from './types.js';\n\nexport type SearchResult = {\n match: boolean;\n ranges: [number, number][];\n};\n\nexport const startsWithPerTermSearch = (\n subject: string,\n pattern: string\n): SearchResult => {\n const result: SearchResult = {\n match: false,\n ranges: [],\n };\n const lcSubject = subject.toLowerCase();\n const lcPattern = pattern.toLowerCase();\n const terms = lcSubject.split(' ');\n let offset = 0;\n\n terms.forEach((t, i) => {\n if (i > 0) {\n offset += terms[i - 1].length + 1;\n }\n\n if (result.match) {\n return;\n }\n\n const foundIndex = t.indexOf(lcPattern);\n const patternLength = lcPattern.length;\n\n if (foundIndex === 0) {\n result.match = true;\n result.ranges.push([\n offset + foundIndex,\n Math.min(offset + foundIndex + patternLength, subject.length),\n ]);\n }\n });\n\n return result;\n};\n\nexport const startsWithSearch = (\n subject: string,\n pattern: string\n): SearchResult => {\n const result: SearchResult = {\n match: false,\n ranges: [],\n };\n const foundIndex = subject.toLowerCase().indexOf(pattern.toLowerCase());\n\n if (foundIndex === 0) {\n result.match = true;\n result.ranges = [[0, pattern.length]];\n }\n\n return result;\n};\n\nexport const containsSearch = (\n subject: string,\n pattern: string\n): SearchResult => {\n const result: SearchResult = {\n match: false,\n ranges: [],\n };\n const foundIndex = subject.toLowerCase().indexOf(pattern.toLowerCase());\n\n if (foundIndex > -1) {\n result.match = true;\n result.ranges = [[foundIndex, foundIndex + pattern.length]];\n }\n\n return result;\n};\n\nexport const fuzzySearch = (subject: string, pattern: string): SearchResult => {\n const result: SearchResult = {\n match: false,\n ranges: [],\n };\n let fromIndex = 0;\n let foundIndex = 0;\n const iMax = pattern.length - 1;\n const lcSubject = subject.toLowerCase();\n const lcPattern = pattern.toLowerCase();\n\n for (let i = 0; i <= iMax; i++) {\n foundIndex = lcSubject.indexOf(lcPattern[i], fromIndex);\n\n if (foundIndex === -1) {\n return {\n match: false,\n ranges: [],\n };\n }\n\n result.match = true;\n result.ranges.push([foundIndex, foundIndex + 1]);\n\n fromIndex = foundIndex + 1;\n }\n\n return result;\n};\n\nexport const filterOptionsByPattern = (\n list: InternalOption[],\n pattern: string,\n method: SearchMethod\n): InternalOption[] => {\n const filtered: InternalOption[] = [];\n\n list.forEach((op) => {\n let result: SearchResult;\n\n switch (method) {\n case 'startsWithPerTerm':\n result = startsWithPerTermSearch(op.label, pattern);\n break;\n case 'startsWith':\n result = startsWithSearch(op.label, pattern);\n break;\n case 'contains':\n result = containsSearch(op.label, pattern);\n break;\n default:\n result = fuzzySearch(op.label, pattern);\n }\n\n if (result.match) {\n filtered.push({...op, ranges: result.ranges});\n }\n });\n\n return filtered;\n};\n\nconst preventSpaces = (text: string): TemplateResult[] => {\n const res: TemplateResult[] = [];\n\n if (text === ' ') {\n res.push(html`&nbsp;`);\n\n return res;\n }\n\n if (text.indexOf(' ') === 0) {\n res.push(html`&nbsp;`);\n }\n\n res.push(html`${text.trimStart().trimEnd()}`);\n\n if (text.lastIndexOf(' ') === text.length - 1) {\n res.push(html`&nbsp;`);\n }\n\n return res;\n};\n\nexport const highlightRanges = (\n text: string,\n ranges: [number, number][]\n): TemplateResult | TemplateResult[] => {\n const res: TemplateResult[] = [];\n const rl = ranges.length;\n\n if (rl < 1) {\n return html`${text}`;\n }\n\n ranges.forEach((r, i) => {\n const match = text.substring(r[0], r[1]);\n\n if (i === 0 && r[0] !== 0) {\n // text before the first range\n res.push(...preventSpaces(text.substring(0, ranges[0][0])));\n }\n\n if (i > 0 && i < rl && r[0] - ranges[i - 1][1] !== 0) {\n // text before the current range\n res.push(...preventSpaces(text.substring(ranges[i - 1][1], r[0])));\n }\n\n res.push(html`<b>${preventSpaces(match)}</b>`);\n\n if (i === rl - 1 && r[1] < text.length) {\n // text after the last range\n res.push(...preventSpaces(text.substring(r[1], text.length)));\n }\n });\n\n return res;\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/includes/vscode-select/styles.ts"],"names":[],"mappings":";AAGA,wBAmUE"}
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/includes/vscode-select/styles.ts"],"names":[],"mappings":";AAGA,wBA2UE"}
@@ -192,6 +192,14 @@ export default [
192
192
  border-color: transparent;
193
193
  }
194
194
 
195
+ .option b {
196
+ color: var(--vscode-list-highlightForeground);
197
+ }
198
+
199
+ .option.active b {
200
+ color: var(--vscode-list-focusHighlightForeground);
201
+ }
202
+
195
203
  .option:hover {
196
204
  background-color: var(--vscode-list-hoverBackground);
197
205
  color: var(--vscode-list-hoverForeground);
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/includes/vscode-select/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAM,KAAK,CAAC;AACxB,OAAO,aAAa,MAAM,sBAAsB,CAAC;AAEjD,eAAe;IACb,aAAa;IACb,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgUF;CACF,CAAC","sourcesContent":["import {css} from 'lit';\nimport defaultStyles from '../default.styles.js';\n\nexport default [\n defaultStyles,\n css`\n :host {\n display: inline-block;\n max-width: 100%;\n outline: none;\n position: relative;\n width: 320px;\n }\n\n .main-slot {\n display: none;\n }\n\n .select-face,\n .combobox-face {\n background-color: var(--vscode-settings-dropdownBackground);\n border-color: var(--vscode-settings-dropdownBorder);\n border-radius: 2px;\n border-style: solid;\n border-width: 1px;\n box-sizing: border-box;\n color: var(--vscode-settings-dropdownForeground);\n font-family: var(--vscode-font-family);\n font-size: var(--vscode-font-size);\n font-weight: var(--vscode-font-weight);\n line-height: 18px;\n position: relative;\n user-select: none;\n width: 100%;\n }\n\n :host([invalid]) .select-face,\n :host(:invalid) .select-face,\n :host([invalid]) .combobox-face,\n :host(:invalid) .combobox-face {\n background-color: var(--vscode-inputValidation-errorBackground);\n border-color: var(--vscode-inputValidation-errorBorder, #be1100);\n }\n\n .select-face {\n cursor: pointer;\n padding: 3px 4px;\n }\n\n .select-face.multiselect {\n padding: 0;\n }\n\n .select-face-badge {\n background-color: var(--vscode-badge-background);\n border-radius: 2px;\n color: var(--vscode-badge-foreground);\n display: inline-block;\n flex-shrink: 0;\n font-size: 11px;\n line-height: 16px;\n margin: 2px;\n padding: 2px 3px;\n text-transform: uppercase;\n white-space: nowrap;\n }\n\n .select-face-badge.no-item {\n background-color: transparent;\n color: inherit;\n }\n\n .combobox-face {\n display: flex;\n }\n\n .empty-label-placeholder {\n display: block;\n height: 16px;\n }\n\n :host(:focus) .select-face,\n :host(:focus) .combobox-face,\n :host([focused]) .select-face,\n :host([focused]) .combobox-face {\n border-color: var(--vscode-focusBorder);\n outline: none;\n }\n\n .combobox-input {\n background-color: transparent;\n box-sizing: border-box;\n border: 0;\n color: var(--vscode-foreground);\n display: block;\n font-family: var(--vscode-font-family);\n font-size: var(--vscode-font-size);\n line-height: 16px;\n padding: 4px;\n width: 100%;\n }\n\n .combobox-input:focus {\n outline: none;\n }\n\n .combobox-button {\n background-color: transparent;\n border: 0;\n color: var(--vscode-foreground);\n cursor: pointer;\n flex-shrink: 0;\n height: 24px;\n margin: 0;\n padding: 0;\n width: 30px;\n }\n\n .combobox-button:focus,\n .combobox-button:hover {\n background-color: var(--vscode-list-hoverBackground);\n }\n\n .combobox-button:focus {\n outline: 0;\n }\n\n .icon {\n color: var(--vscode-foreground);\n display: block;\n height: 14px;\n pointer-events: none;\n position: absolute;\n right: 8px;\n top: 5px;\n width: 14px;\n }\n\n .icon svg {\n color: var(--vscode-foreground);\n height: 100%;\n width: 100%;\n }\n\n .select-face:empty:before {\n content: '\\\\00a0';\n }\n\n .dropdown {\n background-color: var(--vscode-settings-dropdownBackground);\n border-color: var(--vscode-settings-dropdownListBorder);\n border-radius: 0 0 3px 3px;\n border-style: solid;\n border-width: 1px;\n box-sizing: border-box;\n left: 0;\n padding-bottom: 2px;\n position: absolute;\n top: 100%;\n width: 100%;\n z-index: var(--dropdown-z-index, 2);\n }\n\n :host(:focus) .dropdown,\n :host([focused]) .dropdown {\n border-color: var(--vscode-focusBorder);\n }\n\n .options {\n box-sizing: border-box;\n cursor: pointer;\n list-style: none;\n margin: 0;\n max-height: 222px;\n overflow: auto;\n padding: 1px;\n }\n\n .option {\n align-items: center;\n color: var(--vscode-foreground);\n cursor: pointer;\n display: flex;\n font-family: var(--vscode-font-family);\n font-size: var(--vscode-font-size);\n font-weight: var(--vscode-font-weight);\n line-height: 18px;\n min-height: calc(var(--vscode-font-size) * 1.3);\n padding: 1px 3px;\n user-select: none;\n border-width: 1px;\n border-style: solid;\n border-color: transparent;\n }\n\n .option:hover {\n background-color: var(--vscode-list-hoverBackground);\n color: var(--vscode-list-hoverForeground);\n }\n\n :host-context(body[data-vscode-theme-kind='vscode-high-contrast'])\n .option:hover,\n :host-context(body[data-vscode-theme-kind='vscode-high-contrast-light'])\n .option:hover {\n border-style: dotted;\n border-color: var(--vscode-list-focusOutline);\n }\n\n .option.disabled {\n cursor: not-allowed;\n opacity: 0.4;\n }\n\n .option.active,\n .option.active:hover {\n background-color: var(--vscode-list-activeSelectionBackground);\n color: var(--vscode-list-activeSelectionForeground);\n border-color: var(--vscode-list-activeSelectionBackground);\n border-style: solid;\n border-width: 1px;\n }\n\n :host-context(body[data-vscode-theme-kind='vscode-high-contrast'])\n .option.active,\n :host-context(body[data-vscode-theme-kind='vscode-high-contrast-light'])\n .option.active:hover {\n border-color: var(--vscode-list-focusOutline);\n border-style: dashed;\n }\n\n .option-label {\n display: block;\n pointer-events: none;\n width: 100%;\n }\n\n .dropdown.multiple .option.selected {\n background-color: var(--vscode-list-hoverBackground);\n border-color: var(--vscode-list-hoverBackground);\n }\n\n .dropdown.multiple .option.selected.active {\n background-color: var(--vscode-list-activeSelectionBackground);\n color: var(--vscode-list-activeSelectionForeground);\n border-color: var(--vscode-list-activeSelectionBackground);\n }\n\n .checkbox-icon {\n background-color: var(--vscode-settings-checkboxBackground);\n border: 1px solid currentColor;\n border-radius: 2px;\n box-sizing: border-box;\n height: 14px;\n margin-right: 5px;\n overflow: hidden;\n position: relative;\n width: 14px;\n }\n\n .checkbox-icon.checked:before,\n .checkbox-icon.checked:after {\n content: '';\n display: block;\n height: 5px;\n position: absolute;\n transform: rotate(-45deg);\n width: 10px;\n }\n\n .checkbox-icon.checked:before {\n background-color: var(--vscode-foreground);\n left: 1px;\n top: 2.5px;\n }\n\n .checkbox-icon.checked:after {\n background-color: var(--vscode-settings-checkboxBackground);\n left: 1px;\n top: -0.5px;\n }\n\n .dropdown-controls {\n display: flex;\n justify-content: flex-end;\n padding: 4px;\n }\n\n .dropdown-controls :not(:last-child) {\n margin-right: 4px;\n }\n\n .action-icon {\n align-items: center;\n background-color: transparent;\n border: 0;\n color: var(--vscode-foreground);\n cursor: pointer;\n display: flex;\n height: 24px;\n justify-content: center;\n padding: 0;\n width: 24px;\n }\n\n .action-icon:focus {\n outline: none;\n }\n\n .action-icon:focus-visible {\n outline: 1px solid var(--vscode-focusBorder);\n outline-offset: -1px;\n }\n\n .description {\n border-color: var(--vscode-settings-dropdownBorder);\n border-style: solid;\n border-width: 1px 0 0;\n color: var(--vscode-foreground);\n font-family: var(--vscode-font-family);\n font-size: var(--vscode-font-size);\n font-weight: var(--vscode-font-weight);\n line-height: 1.3;\n padding: 6px 4px;\n word-wrap:break-word;\n }\n `,\n];\n"]}
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/includes/vscode-select/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAM,KAAK,CAAC;AACxB,OAAO,aAAa,MAAM,sBAAsB,CAAC;AAEjD,eAAe;IACb,aAAa;IACb,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwUF;CACF,CAAC","sourcesContent":["import {css} from 'lit';\nimport defaultStyles from '../default.styles.js';\n\nexport default [\n defaultStyles,\n css`\n :host {\n display: inline-block;\n max-width: 100%;\n outline: none;\n position: relative;\n width: 320px;\n }\n\n .main-slot {\n display: none;\n }\n\n .select-face,\n .combobox-face {\n background-color: var(--vscode-settings-dropdownBackground);\n border-color: var(--vscode-settings-dropdownBorder);\n border-radius: 2px;\n border-style: solid;\n border-width: 1px;\n box-sizing: border-box;\n color: var(--vscode-settings-dropdownForeground);\n font-family: var(--vscode-font-family);\n font-size: var(--vscode-font-size);\n font-weight: var(--vscode-font-weight);\n line-height: 18px;\n position: relative;\n user-select: none;\n width: 100%;\n }\n\n :host([invalid]) .select-face,\n :host(:invalid) .select-face,\n :host([invalid]) .combobox-face,\n :host(:invalid) .combobox-face {\n background-color: var(--vscode-inputValidation-errorBackground);\n border-color: var(--vscode-inputValidation-errorBorder, #be1100);\n }\n\n .select-face {\n cursor: pointer;\n padding: 3px 4px;\n }\n\n .select-face.multiselect {\n padding: 0;\n }\n\n .select-face-badge {\n background-color: var(--vscode-badge-background);\n border-radius: 2px;\n color: var(--vscode-badge-foreground);\n display: inline-block;\n flex-shrink: 0;\n font-size: 11px;\n line-height: 16px;\n margin: 2px;\n padding: 2px 3px;\n text-transform: uppercase;\n white-space: nowrap;\n }\n\n .select-face-badge.no-item {\n background-color: transparent;\n color: inherit;\n }\n\n .combobox-face {\n display: flex;\n }\n\n .empty-label-placeholder {\n display: block;\n height: 16px;\n }\n\n :host(:focus) .select-face,\n :host(:focus) .combobox-face,\n :host([focused]) .select-face,\n :host([focused]) .combobox-face {\n border-color: var(--vscode-focusBorder);\n outline: none;\n }\n\n .combobox-input {\n background-color: transparent;\n box-sizing: border-box;\n border: 0;\n color: var(--vscode-foreground);\n display: block;\n font-family: var(--vscode-font-family);\n font-size: var(--vscode-font-size);\n line-height: 16px;\n padding: 4px;\n width: 100%;\n }\n\n .combobox-input:focus {\n outline: none;\n }\n\n .combobox-button {\n background-color: transparent;\n border: 0;\n color: var(--vscode-foreground);\n cursor: pointer;\n flex-shrink: 0;\n height: 24px;\n margin: 0;\n padding: 0;\n width: 30px;\n }\n\n .combobox-button:focus,\n .combobox-button:hover {\n background-color: var(--vscode-list-hoverBackground);\n }\n\n .combobox-button:focus {\n outline: 0;\n }\n\n .icon {\n color: var(--vscode-foreground);\n display: block;\n height: 14px;\n pointer-events: none;\n position: absolute;\n right: 8px;\n top: 5px;\n width: 14px;\n }\n\n .icon svg {\n color: var(--vscode-foreground);\n height: 100%;\n width: 100%;\n }\n\n .select-face:empty:before {\n content: '\\\\00a0';\n }\n\n .dropdown {\n background-color: var(--vscode-settings-dropdownBackground);\n border-color: var(--vscode-settings-dropdownListBorder);\n border-radius: 0 0 3px 3px;\n border-style: solid;\n border-width: 1px;\n box-sizing: border-box;\n left: 0;\n padding-bottom: 2px;\n position: absolute;\n top: 100%;\n width: 100%;\n z-index: var(--dropdown-z-index, 2);\n }\n\n :host(:focus) .dropdown,\n :host([focused]) .dropdown {\n border-color: var(--vscode-focusBorder);\n }\n\n .options {\n box-sizing: border-box;\n cursor: pointer;\n list-style: none;\n margin: 0;\n max-height: 222px;\n overflow: auto;\n padding: 1px;\n }\n\n .option {\n align-items: center;\n color: var(--vscode-foreground);\n cursor: pointer;\n display: flex;\n font-family: var(--vscode-font-family);\n font-size: var(--vscode-font-size);\n font-weight: var(--vscode-font-weight);\n line-height: 18px;\n min-height: calc(var(--vscode-font-size) * 1.3);\n padding: 1px 3px;\n user-select: none;\n border-width: 1px;\n border-style: solid;\n border-color: transparent;\n }\n\n .option b {\n color: var(--vscode-list-highlightForeground);\n }\n\n .option.active b {\n color: var(--vscode-list-focusHighlightForeground);\n }\n\n .option:hover {\n background-color: var(--vscode-list-hoverBackground);\n color: var(--vscode-list-hoverForeground);\n }\n\n :host-context(body[data-vscode-theme-kind='vscode-high-contrast'])\n .option:hover,\n :host-context(body[data-vscode-theme-kind='vscode-high-contrast-light'])\n .option:hover {\n border-style: dotted;\n border-color: var(--vscode-list-focusOutline);\n }\n\n .option.disabled {\n cursor: not-allowed;\n opacity: 0.4;\n }\n\n .option.active,\n .option.active:hover {\n background-color: var(--vscode-list-activeSelectionBackground);\n color: var(--vscode-list-activeSelectionForeground);\n border-color: var(--vscode-list-activeSelectionBackground);\n border-style: solid;\n border-width: 1px;\n }\n\n :host-context(body[data-vscode-theme-kind='vscode-high-contrast'])\n .option.active,\n :host-context(body[data-vscode-theme-kind='vscode-high-contrast-light'])\n .option.active:hover {\n border-color: var(--vscode-list-focusOutline);\n border-style: dashed;\n }\n\n .option-label {\n display: block;\n pointer-events: none;\n width: 100%;\n }\n\n .dropdown.multiple .option.selected {\n background-color: var(--vscode-list-hoverBackground);\n border-color: var(--vscode-list-hoverBackground);\n }\n\n .dropdown.multiple .option.selected.active {\n background-color: var(--vscode-list-activeSelectionBackground);\n color: var(--vscode-list-activeSelectionForeground);\n border-color: var(--vscode-list-activeSelectionBackground);\n }\n\n .checkbox-icon {\n background-color: var(--vscode-settings-checkboxBackground);\n border: 1px solid currentColor;\n border-radius: 2px;\n box-sizing: border-box;\n height: 14px;\n margin-right: 5px;\n overflow: hidden;\n position: relative;\n width: 14px;\n }\n\n .checkbox-icon.checked:before,\n .checkbox-icon.checked:after {\n content: '';\n display: block;\n height: 5px;\n position: absolute;\n transform: rotate(-45deg);\n width: 10px;\n }\n\n .checkbox-icon.checked:before {\n background-color: var(--vscode-foreground);\n left: 1px;\n top: 2.5px;\n }\n\n .checkbox-icon.checked:after {\n background-color: var(--vscode-settings-checkboxBackground);\n left: 1px;\n top: -0.5px;\n }\n\n .dropdown-controls {\n display: flex;\n justify-content: flex-end;\n padding: 4px;\n }\n\n .dropdown-controls :not(:last-child) {\n margin-right: 4px;\n }\n\n .action-icon {\n align-items: center;\n background-color: transparent;\n border: 0;\n color: var(--vscode-foreground);\n cursor: pointer;\n display: flex;\n height: 24px;\n justify-content: center;\n padding: 0;\n width: 24px;\n }\n\n .action-icon:focus {\n outline: none;\n }\n\n .action-icon:focus-visible {\n outline: 1px solid var(--vscode-focusBorder);\n outline-offset: -1px;\n }\n\n .description {\n border-color: var(--vscode-settings-dropdownBorder);\n border-style: solid;\n border-width: 1px 0 0;\n color: var(--vscode-foreground);\n font-family: var(--vscode-font-family);\n font-size: var(--vscode-font-size);\n font-weight: var(--vscode-font-weight);\n line-height: 1.3;\n padding: 6px 4px;\n word-wrap:break-word;\n }\n `,\n];\n"]}
@@ -7,6 +7,7 @@ export interface Option {
7
7
  }
8
8
  export interface InternalOption extends Option {
9
9
  index: number;
10
+ ranges?: [number, number][];
10
11
  }
11
12
  export type SearchMethod = 'startsWithPerTerm' | 'startsWith' | 'contains' | 'fuzzy';
12
13
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/includes/vscode-select/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,cAAe,SAAQ,MAAM;IAC5C,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,YAAY,GACpB,mBAAmB,GACnB,YAAY,GACZ,UAAU,GACV,OAAO,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/includes/vscode-select/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,cAAe,SAAQ,MAAM;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;CAC7B;AAED,MAAM,MAAM,YAAY,GACpB,mBAAmB,GACnB,YAAY,GACZ,UAAU,GACV,OAAO,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/includes/vscode-select/types.ts"],"names":[],"mappings":"","sourcesContent":["export interface Option {\n label: string;\n value: string;\n description: string;\n selected: boolean;\n disabled: boolean;\n}\n\nexport interface InternalOption extends Option {\n index: number;\n}\n\nexport type SearchMethod =\n | 'startsWithPerTerm'\n | 'startsWith'\n | 'contains'\n | 'fuzzy';\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/includes/vscode-select/types.ts"],"names":[],"mappings":"","sourcesContent":["export interface Option {\n label: string;\n value: string;\n description: string;\n selected: boolean;\n disabled: boolean;\n}\n\nexport interface InternalOption extends Option {\n index: number;\n ranges?: [number, number][];\n}\n\nexport type SearchMethod =\n | 'startsWithPerTerm'\n | 'startsWith'\n | 'contains'\n | 'fuzzy';\n"]}
@@ -13,18 +13,24 @@ export declare class VscodeSelectBase extends VscElement {
13
13
  /** @internal */
14
14
  ariaExpanded: string;
15
15
  combobox: boolean;
16
+ set disabled(newState: boolean);
17
+ get disabled(): boolean;
16
18
  /**
17
19
  * Sets the invalid state manually.
18
20
  */
19
21
  invalid: boolean;
20
22
  /**
21
- * Filter method
23
+ * Search method in the filtered list within the combobox mode.
22
24
  *
23
- * @attr [filter=fuzzy]
24
- * @type {"fuzzy"|"contains"|"startsWith"|"startsWithPerTerm"}
25
+ * - contains - The list item includes the searched pattern at any position.
26
+ * - fuzzy - The list item contains the letters of the search pattern in the same order, but at any position.
27
+ * - startsWith - The search pattern matches the beginning of the searched text.
28
+ * - startsWithPerTerm - The search pattern matches the beginning of any word in the searched text.
29
+ *
30
+ * @default 'fuzzy'
25
31
  */
26
- set filter(val: string);
27
- get filter(): string;
32
+ set filter(val: 'contains' | 'fuzzy' | 'startsWith' | 'startsWithPerTerm');
33
+ get filter(): 'contains' | 'fuzzy' | 'startsWith' | 'startsWithPerTerm';
28
34
  focused: boolean;
29
35
  /**
30
36
  * @attr [options=[]]
@@ -61,6 +67,8 @@ export declare class VscodeSelectBase extends VscElement {
61
67
  [key: string]: number;
62
68
  };
63
69
  private _isHoverForbidden;
70
+ private _disabled;
71
+ private _originalTabIndex;
64
72
  protected get _currentOptions(): InternalOption[];
65
73
  protected _addOptionsFromSlottedElements(): OptionListStat;
66
74
  protected _toggleDropdown(visible: boolean): Promise<void>;
@@ -86,6 +94,7 @@ export declare class VscodeSelectBase extends VscElement {
86
94
  protected _onSlotChange(): void;
87
95
  protected _onComboboxInputFocus(ev: FocusEvent): void;
88
96
  protected _onComboboxInputInput(ev: InputEvent): void;
97
+ protected _onComboboxInputClick(): void;
89
98
  protected _renderOptions(): TemplateResult | TemplateResult[];
90
99
  private _renderDescription;
91
100
  protected _renderSelectFace(): TemplateResult;
@@ -1 +1 @@
1
- {"version":3,"file":"vscode-select-base.d.ts","sourceRoot":"","sources":["../../../src/includes/vscode-select/vscode-select-base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vscode-select-base.d.ts","sourceRoot":"","sources":["../../../src/includes/vscode-select/vscode-select-base.ts"],"names":[],"mappings":"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"}
@@ -49,14 +49,36 @@ export class VscodeSelectBase extends VscElement {
49
49
  */
50
50
  this._valueOptionIndexMap = {};
51
51
  this._isHoverForbidden = false;
52
+ this._disabled = false;
53
+ this._originalTabIndex = undefined;
52
54
  this._onClickOutsideBound = this._onClickOutside.bind(this);
53
55
  this._onMouseMoveBound = this._onMouseMove.bind(this);
54
56
  }
57
+ set disabled(newState) {
58
+ this._disabled = newState;
59
+ this.ariaDisabled = newState ? 'true' : 'false';
60
+ if (newState === true) {
61
+ this._originalTabIndex = this.tabIndex;
62
+ this.tabIndex = -1;
63
+ }
64
+ else {
65
+ this.tabIndex = this._originalTabIndex ?? 0;
66
+ this._originalTabIndex = undefined;
67
+ }
68
+ this.requestUpdate();
69
+ }
70
+ get disabled() {
71
+ return this._disabled;
72
+ }
55
73
  /**
56
- * Filter method
74
+ * Search method in the filtered list within the combobox mode.
57
75
  *
58
- * @attr [filter=fuzzy]
59
- * @type {"fuzzy"|"contains"|"startsWith"|"startsWithPerTerm"}
76
+ * - contains - The list item includes the searched pattern at any position.
77
+ * - fuzzy - The list item contains the letters of the search pattern in the same order, but at any position.
78
+ * - startsWith - The search pattern matches the beginning of the searched text.
79
+ * - startsWithPerTerm - The search pattern matches the beginning of any word in the searched text.
80
+ *
81
+ * @default 'fuzzy'
60
82
  */
61
83
  set filter(val) {
62
84
  const validValues = [
@@ -369,6 +391,9 @@ export class VscodeSelectBase extends VscElement {
369
391
  this._activeIndex = -1;
370
392
  this._toggleDropdown(true);
371
393
  }
394
+ _onComboboxInputClick() {
395
+ this._toggleDropdown(true);
396
+ }
372
397
  _renderOptions() {
373
398
  return [];
374
399
  }
@@ -416,11 +441,14 @@ __decorate([
416
441
  __decorate([
417
442
  property({ type: Boolean, reflect: true })
418
443
  ], VscodeSelectBase.prototype, "combobox", void 0);
444
+ __decorate([
445
+ property({ type: Boolean, reflect: true })
446
+ ], VscodeSelectBase.prototype, "disabled", null);
419
447
  __decorate([
420
448
  property({ type: Boolean, reflect: true })
421
449
  ], VscodeSelectBase.prototype, "invalid", void 0);
422
450
  __decorate([
423
- property({ type: String })
451
+ property()
424
452
  ], VscodeSelectBase.prototype, "filter", null);
425
453
  __decorate([
426
454
  property({ type: Boolean, reflect: true })
@@ -1 +1 @@
1
- {"version":3,"file":"vscode-select-base.js","sourceRoot":"","sources":["../../../src/includes/vscode-select/vscode-select-base.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAC,IAAI,EAAE,OAAO,EAAiB,MAAM,KAAK,CAAC;AAClD,OAAO,EAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAC,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAC,QAAQ,EAAC,MAAM,6BAA6B,CAAC;AACrD,OAAO,qBAAqB,CAAC;AAG7B,OAAO,EAAC,sBAAsB,EAAC,MAAM,cAAc,CAAC;AACpD,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAO5C,MAAM,YAAY,GAAG,EAAE,CAAC;AACxB,MAAM,UAAU,GAAG,EAAE,CAAC;AACtB,MAAM,WAAW,GAAG,YAAY,GAAG,UAAU,GAAG,CAAC,CAAC;AAElD;;GAEG;AACH,MAAM,OAAO,gBAAiB,SAAQ,UAAU;IAAhD;;QACE,gBAAgB;QAEhB,iBAAY,GAAG,OAAO,CAAC;QAGvB,aAAQ,GAAG,KAAK,CAAC;QAEjB;;WAEG;QAEH,YAAO,GAAG,KAAK,CAAC;QAgChB,YAAO,GAAG,KAAK,CAAC;QAsBhB,gBAAgB;QAEhB,aAAQ,GAAG,CAAC,CAAC;QAiBH,iBAAY,GAAG,CAAC,CAAC,CAAC;QAGlB,wBAAmB,GAAG,EAAE,CAAC;QAGzB,YAAO,GAAiB,OAAO,CAAC;QAgBhC,mBAAc,GAAG,EAAE,CAAC;QAGpB,mBAAc,GAAG,CAAC,CAAC,CAAC;QAGpB,qBAAgB,GAAa,EAAE,CAAC;QAGhC,kBAAa,GAAG,KAAK,CAAC;QAGtB,aAAQ,GAAqB,EAAE,CAAC;QAGhC,WAAM,GAAG,EAAE,CAAC;QAGZ,YAAO,GAAa,EAAE,CAAC;QAGvB,mBAAc,GAAG,CAAC,CAAC;QAQ7B,gBAAgB;QACN,cAAS,GAAG,KAAK,CAAC;QAE5B;;;;WAIG;QACO,yBAAoB,GAA4B,EAAE,CAAC;QAErD,sBAAiB,GAAG,KAAK,CAAC;QA4HxB,yBAAoB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAOzD,sBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAuQ3D,CAAC;IA9gBC;;;;;OAKG;IAEH,IAAI,MAAM,CAAC,GAAW;QACpB,MAAM,WAAW,GAAmB;YAClC,UAAU;YACV,OAAO;YACP,YAAY;YACZ,mBAAmB;SACpB,CAAC;QAEF,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAmB,CAAC,EAAE,CAAC;YAC9C,IAAI,CAAC,OAAO,GAAG,GAAmB,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;YACvB,OAAO,CAAC,IAAI,CACV,8CAA8C,GAAG,gGAAgG,EACjJ,IAAI,CACL,CAAC;QACJ,CAAC;IACH,CAAC;IACD,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAKD;;;OAGG;IAEH,IAAI,OAAO,CAAC,IAAc;QACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAC,GAAG,EAAE,EAAE,KAAK,EAAC,CAAC,CAAC,CAAC;IAC5D,CAAC;IACD,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CACtB,CAAC,EAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAC,EAAE,EAAE,CAAC,CAAC;YACpD,KAAK;YACL,KAAK;YACL,WAAW;YACX,QAAQ;YACR,QAAQ;SACT,CAAC,CACH,CAAC;IACJ,CAAC;IAMD,iBAAiB;QACf,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC3D,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACvD,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACvD,CAAC;IAED,oBAAoB;QAClB,KAAK,CAAC,oBAAoB,EAAE,CAAC;QAC7B,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC9D,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC1D,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC1D,CAAC;IAYD,IAAc,gBAAgB;QAC5B,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,cAAc,KAAK,EAAE,EAAE,CAAC;YACjD,OAAO,IAAI,CAAC,QAAQ,CAAC;QACvB,CAAC;QAED,OAAO,sBAAsB,CAC3B,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,OAAO,CACb,CAAC;IACJ,CAAC;IA4CD,IAAc,eAAe;QAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC/D,CAAC;IAES,8BAA8B;QACtC,MAAM,OAAO,GAAqB,EAAE,CAAC;QACrC,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;QAC7C,MAAM,eAAe,GAAmB;YACtC,eAAe,EAAE,EAAE;YACnB,MAAM,EAAE,EAAE;SACX,CAAC;QACF,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;QAE/B,KAAK,CAAC,OAAO,CAAC,CAAC,EAAQ,EAAE,EAAE;YACzB,IACE,CAAC,CACC,EAAE,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY;gBAChC,EAAc,CAAC,OAAO,CAAC,eAAe,CAAC,CACzC,EACD,CAAC;gBACD,OAAO;YACT,CAAC;YAED,MAAM,EAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAC,GAAG,EAAkB,CAAC;YAE9D,MAAM,KAAK,GAAI,EAAmB,CAAC,YAAY,CAAC,OAAO,CAAC;gBACxD,CAAC,CAAG,EAAmB,CAAC,YAAY,CAAC,OAAO,CAAY;gBACxD,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YAEnB,MAAM,QAAQ,GAAI,EAAmB,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;YAE/D,MAAM,EAAE,GAAmB;gBACzB,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE;gBACvB,KAAK;gBACL,WAAW;gBACX,QAAQ;gBACR,KAAK,EAAE,YAAY;gBACnB,QAAQ;aACT,CAAC;YAEF,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAEhC,IAAI,QAAQ,EAAE,CAAC;gBACb,eAAe,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACzD,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrC,CAAC;YAED,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QAExB,OAAO,eAAe,CAAC;IACzB,CAAC;IAES,KAAK,CAAC,eAAe,CAAC,OAAgB;QAC9C,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;QAC7B,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAEpC,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC;YAExC,IAAI,IAAI,CAAC,YAAY,GAAG,YAAY,GAAG,CAAC,EAAE,CAAC;gBACzC,MAAM,IAAI,CAAC,cAAc,CAAC;gBAE1B,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CACtC,IAAI,CAAC,YAAY,GAAG,UAAU,CAC/B,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC9D,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAES,oBAAoB;QAC5B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,kBAAkB;YAClB,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAC,YAAY,EAAE;gBAC5B,MAAM,EAAE;oBACN,aAAa,EAAE,IAAI,CAAC,cAAc;oBAClC,KAAK,EAAE,IAAI,CAAC,MAAM;iBACnB;aACF,CAAC,CACH,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,kBAAkB;YAClB,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAC,YAAY,EAAE;gBAC5B,MAAM,EAAE;oBACN,eAAe,EAAE,IAAI,CAAC,gBAAgB;oBACtC,KAAK,EAAE,IAAI,CAAC,OAAO;iBACpB;aACF,CAAC,CACH,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC1C,CAAC;IAES,YAAY;QACpB,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAE1C,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAES,eAAe,CAAC,KAAiB;QACzC,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC;QAElD,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACjB,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAC5B,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAIO,YAAY;QAClB,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAC/B,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAClE,CAAC;IAIO,uBAAuB;QAC7B,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAE1C,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAES,sBAAsB;QAC9B,IAAI,CAAC,uBAAuB,EAAE,CAAC;IACjC,CAAC;IAES,wBAAwB,CAAC,EAAiB;QAClD,IAAI,EAAE,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;YACvB,IAAI,CAAC,uBAAuB,EAAE,CAAC;QACjC,CAAC;IACH,CAAC;IAES,kBAAkB,CAAC,EAAc;QACzC,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,MAAM,EAAE,GAAG,EAAE,CAAC,MAAqB,CAAC;QAEpC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,MAAM,CACxB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAC5D,CAAC;IACJ,CAAC;IAES,eAAe;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;QACnE,MAAM,gBAAgB,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC;QAE7C,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;QAEvC,IACE,CAAC,IAAI,CAAC,SAAS;YACf,CAAC,gBAAgB;YACjB,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,YAAY,EACzC,CAAC;YACD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC;YACpD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC;YACvD,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC9B,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACzC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC;YACvE,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,gBAAgB,EAAE,CAAC;gBACxC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE;oBAC5B,IAAI,CAAC,yBAAyB,EAAE,CAAC;gBACnC,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,IAAI,gBAAgB,EAAE,CAAC;YACvC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAEO,eAAe;QACrB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC;YACnE,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;YACnE,MAAM,EAAC,QAAQ,EAAC,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAE3C,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,GAAG,CAAC,QAAQ,CAAC;YAC7C,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;YAE3B,IAAI,CAAC,OAAO,CAAC,CAAC,EAAC,KAAK,EAAE,QAAQ,EAAC,EAAE,EAAE;gBACjC,IAAI,QAAQ,EAAE,CAAC;oBACb,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACpC,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAEO,yBAAyB;QAC/B,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,CAAC;IAC3E,CAAC;IAEO,KAAK,CAAC,0BAA0B,CAAC,SAAwB;QAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ;YAC3B,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM;YAC9B,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAEzB,IAAI,OAAO,IAAI,YAAY,EAAE,CAAC;YAC5B,OAAO;QACT,CAAC;QAED,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAE7D,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,MAAM,IAAI,CAAC,cAAc,CAAC;QAC5B,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC;QAE9C,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;YACzB,IAAI,MAAM,GAAG,UAAU,IAAI,WAAW,GAAG,WAAW,EAAE,CAAC;gBACrD,IAAI,CAAC,YAAY,CAAC,SAAS;oBACzB,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;YAC1D,CAAC;QACH,CAAC;QAED,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,IAAI,MAAM,IAAI,WAAW,GAAG,UAAU,EAAE,CAAC;gBACvC,IAAI,CAAC,yBAAyB,EAAE,CAAC;YACnC,CAAC;QACH,CAAC;IACH,CAAC;IAES,iBAAiB;QACzB,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,EAAE,CAAC;gBAC3B,OAAO;YACT,CAAC;YAED,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC;YACvB,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAES,mBAAmB;QAC3B,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzD,OAAO;YACT,CAAC;YAED,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC;YACvB,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAEO,mBAAmB,CAAC,KAAoB;QAC9C,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YAChE,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,KAAK,CAAC,cAAc,EAAE,CAAC;QACzB,CAAC;QAED,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;YAC1B,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC;QAED,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;YACtB,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC;QAED,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC3B,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QAED,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YAC5B,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3B,CAAC;QAED,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE,CAAC;YAC9B,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC7B,CAAC;IACH,CAAC;IAEO,iBAAiB;QACvB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;IAEO,gBAAgB;QACtB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACvB,CAAC;IAES,aAAa;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,8BAA8B,EAAE,CAAC;QAEnD,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAC9C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC;YAC7C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;QAC7B,CAAC;QAED,IACE,CAAC,IAAI,CAAC,SAAS;YACf,CAAC,IAAI,CAAC,QAAQ;YACd,IAAI,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,EACjC,CAAC;YACD,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAES,qBAAqB,CAAC,EAAc;QAC3C,EAAE,CAAC,MAA2B,CAAC,MAAM,EAAE,CAAC;IAC3C,CAAC;IAES,qBAAqB,CAAC,EAAc;QAC5C,IAAI,CAAC,cAAc,GAAI,EAAE,CAAC,MAA2B,CAAC,KAAK,CAAC;QAC5D,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAES,cAAc;QACtB,OAAO,EAAE,CAAC;IACZ,CAAC;IAEO,kBAAkB;QACxB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YACtC,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,MAAM,EAAC,WAAW,EAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEvD,OAAO,WAAW;YAChB,CAAC,CAAC,IAAI,CAAA,4BAA4B,WAAW,QAAQ;YACrD,CAAC,CAAC,OAAO,CAAC;IACd,CAAC;IAES,iBAAiB;QACzB,OAAO,IAAI,CAAA,GAAG,OAAO,EAAE,CAAC;IAC1B,CAAC;IAES,mBAAmB;QAC3B,OAAO,IAAI,CAAA,GAAG,OAAO,EAAE,CAAC;IAC1B,CAAC;IAES,uBAAuB;QAC/B,OAAO,IAAI,CAAA,GAAG,OAAO,EAAE,CAAC;IAC1B,CAAC;IAEO,eAAe;QACrB,MAAM,OAAO,GAAG,QAAQ,CAAC;YACvB,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,IAAI,CAAC,SAAS;SACzB,CAAC,CAAC;QAEH,OAAO,IAAI,CAAA;oBACK,OAAO;UACjB,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,uBAAuB,EAAE;UACvD,IAAI,CAAC,kBAAkB,EAAE;;KAE9B,CAAC;IACJ,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;6CAC8B,IAAI,CAAC,aAAa;QACvD,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE;QACrE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,OAAO;KACxD,CAAC;IACJ,CAAC;CACF;AAzhBC;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,EAAC,CAAC;sDAC7C;AAGvB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;kDACxB;AAMjB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;iDACzB;AAShB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;8CAkBxB;AAMD;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;iDACzB;AAOhB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,KAAK,EAAC,CAAC;+CAGvB;AAeD;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;kDAC5C;AAiBH;IADT,KAAK,EAAE;sDACoB;AAGlB;IADT,KAAK,EAAE;6DAC2B;AAGzB;IADT,KAAK,EAAE;iDACkC;AAG1C;IADC,KAAK,EAAE;wDAWP;AAGS;IADT,KAAK,EAAE;wDACsB;AAGpB;IADT,KAAK,EAAE;wDACsB;AAGpB;IADT,KAAK,EAAE;0DACkC;AAGhC;IADT,KAAK,EAAE;uDACwB;AAGtB;IADT,KAAK,EAAE;kDACkC;AAGhC;IADT,KAAK,EAAE;gDACc;AAGZ;IADT,KAAK,EAAE;iDACyB;AAGvB;IADT,KAAK,EAAE;wDACqB;AAGnB;IADT,KAAK,CAAC,YAAY,CAAC;mDACkB;AAG9B;IADP,KAAK,CAAC,UAAU,CAAC;sDACsB","sourcesContent":["import {html, nothing, TemplateResult} from 'lit';\nimport {property, query, state} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport '../../vscode-button';\nimport {VscodeOption} from '../../vscode-option/index.js';\nimport type {InternalOption, Option, SearchMethod} from './types.js';\nimport {filterOptionsByPattern} from './helpers.js';\nimport {VscElement} from '../VscElement.js';\n\ninterface OptionListStat {\n selectedIndexes: number[];\n values: string[];\n}\n\nconst VISIBLE_OPTS = 10;\nconst OPT_HEIGHT = 22;\nconst LIST_HEIGHT = VISIBLE_OPTS + OPT_HEIGHT + 2;\n\n/**\n * @cssprop --dropdown-z-index - workaround for dropdown z-index issues\n */\nexport class VscodeSelectBase extends VscElement {\n /** @internal */\n @property({type: String, reflect: true, attribute: 'aria-expanded'})\n ariaExpanded = 'false';\n\n @property({type: Boolean, reflect: true})\n combobox = false;\n\n /**\n * Sets the invalid state manually.\n */\n @property({type: Boolean, reflect: true})\n invalid = false;\n\n /**\n * Filter method\n *\n * @attr [filter=fuzzy]\n * @type {\"fuzzy\"|\"contains\"|\"startsWith\"|\"startsWithPerTerm\"}\n */\n @property({type: String})\n set filter(val: string) {\n const validValues: SearchMethod[] = [\n 'contains',\n 'fuzzy',\n 'startsWith',\n 'startsWithPerTerm',\n ];\n\n if (validValues.includes(val as SearchMethod)) {\n this._filter = val as SearchMethod;\n } else {\n this._filter = 'fuzzy';\n console.warn(\n `[VSCode Webview Elements] Invalid filter: \"${val}\", fallback to default. Valid values are: \"contains\", \"fuzzy\", \"startsWith\", \"startsWithPerm\".`,\n this\n );\n }\n }\n get filter(): string {\n return this._filter;\n }\n\n @property({type: Boolean, reflect: true})\n focused = false;\n\n /**\n * @attr [options=[]]\n * @type {Option[]}\n */\n @property({type: Array})\n set options(opts: Option[]) {\n this._options = opts.map((op, index) => ({...op, index}));\n }\n get options(): Option[] {\n return this._options.map(\n ({label, value, description, selected, disabled}) => ({\n label,\n value,\n description,\n selected,\n disabled,\n })\n );\n }\n\n /** @internal */\n @property({type: Number, attribute: true, reflect: true})\n tabIndex = 0;\n\n connectedCallback(): void {\n super.connectedCallback();\n this.addEventListener('keydown', this._onComponentKeyDown);\n this.addEventListener('focus', this._onComponentFocus);\n this.addEventListener('blur', this._onComponentBlur);\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n this.removeEventListener('keydown', this._onComponentKeyDown);\n this.removeEventListener('focus', this._onComponentFocus);\n this.removeEventListener('blur', this._onComponentBlur);\n }\n\n @state()\n protected _activeIndex = -1;\n\n @state()\n protected _currentDescription = '';\n\n @state()\n protected _filter: SearchMethod = 'fuzzy';\n\n @state()\n protected get _filteredOptions(): InternalOption[] {\n if (!this.combobox || this._filterPattern === '') {\n return this._options;\n }\n\n return filterOptionsByPattern(\n this._options,\n this._filterPattern,\n this._filter\n );\n }\n\n @state()\n protected _filterPattern = '';\n\n @state()\n protected _selectedIndex = -1;\n\n @state()\n protected _selectedIndexes: number[] = [];\n\n @state()\n protected _showDropdown = false;\n\n @state()\n protected _options: InternalOption[] = [];\n\n @state()\n protected _value = '';\n\n @state()\n protected _values: string[] = [];\n\n @state()\n protected _listScrollTop = 0;\n\n @query('.main-slot')\n protected _mainSlot!: HTMLSlotElement;\n\n @query('.options')\n private _listElement!: HTMLUListElement;\n\n /** @internal */\n protected _multiple = false;\n\n /**\n * @internal\n * Quick-searchable map for searching a value in the options list.\n * Keys are the options values, values are the option indexes.\n */\n protected _valueOptionIndexMap: {[key: string]: number} = {};\n\n private _isHoverForbidden = false;\n\n protected get _currentOptions(): InternalOption[] {\n return this.combobox ? this._filteredOptions : this._options;\n }\n\n protected _addOptionsFromSlottedElements(): OptionListStat {\n const options: InternalOption[] = [];\n let currentIndex = 0;\n const nodes = this._mainSlot.assignedNodes();\n const optionsListStat: OptionListStat = {\n selectedIndexes: [],\n values: [],\n };\n this._valueOptionIndexMap = {};\n\n nodes.forEach((el: Node) => {\n if (\n !(\n el.nodeType === Node.ELEMENT_NODE &&\n (el as Element).matches('vscode-option')\n )\n ) {\n return;\n }\n\n const {innerText, description, disabled} = el as VscodeOption;\n\n const value = (el as VscodeOption).hasAttribute('value')\n ? ((el as VscodeOption).getAttribute('value') as string)\n : innerText.trim();\n\n const selected = (el as VscodeOption).hasAttribute('selected');\n\n const op: InternalOption = {\n label: innerText.trim(),\n value,\n description,\n selected,\n index: currentIndex,\n disabled,\n };\n\n currentIndex = options.push(op);\n\n if (selected) {\n optionsListStat.selectedIndexes.push(options.length - 1);\n optionsListStat.values.push(value);\n }\n\n this._valueOptionIndexMap[op.value] = op.index;\n });\n\n this._options = options;\n\n return optionsListStat;\n }\n\n protected async _toggleDropdown(visible: boolean): Promise<void> {\n this._showDropdown = visible;\n this.ariaExpanded = String(visible);\n\n if (visible && !this._multiple && !this.combobox) {\n this._activeIndex = this._selectedIndex;\n\n if (this._activeIndex > VISIBLE_OPTS - 1) {\n await this.updateComplete;\n\n this._listElement.scrollTop = Math.floor(\n this._activeIndex * OPT_HEIGHT\n );\n }\n }\n\n if (visible) {\n window.addEventListener('click', this._onClickOutsideBound);\n } else {\n window.removeEventListener('click', this._onClickOutsideBound);\n }\n }\n\n protected _dispatchChangeEvent(): void {\n if (!this._multiple) {\n /** @deprecated */\n this.dispatchEvent(\n new CustomEvent('vsc-change', {\n detail: {\n selectedIndex: this._selectedIndex,\n value: this._value,\n },\n })\n );\n } else {\n /** @deprecated */\n this.dispatchEvent(\n new CustomEvent('vsc-change', {\n detail: {\n selectedIndexes: this._selectedIndexes,\n value: this._values,\n },\n })\n );\n }\n this.dispatchEvent(new Event('change'));\n }\n\n protected _onFaceClick(): void {\n this._toggleDropdown(!this._showDropdown);\n\n if (this._multiple) {\n this._activeIndex = 0;\n }\n }\n\n protected _onClickOutside(event: MouseEvent): void {\n const path = event.composedPath();\n const found = path.findIndex((et) => et === this);\n\n if (found === -1) {\n this._toggleDropdown(false);\n window.removeEventListener('click', this._onClickOutsideBound);\n }\n }\n\n protected _onClickOutsideBound = this._onClickOutside.bind(this);\n\n private _onMouseMove() {\n this._isHoverForbidden = false;\n window.removeEventListener('mousemove', this._onMouseMoveBound);\n }\n\n private _onMouseMoveBound = this._onMouseMove.bind(this);\n\n private _toggleComboboxDropdown() {\n this._filterPattern = '';\n this._toggleDropdown(!this._showDropdown);\n\n if (this._multiple) {\n this._activeIndex = -1;\n }\n }\n\n protected _onComboboxButtonClick(): void {\n this._toggleComboboxDropdown();\n }\n\n protected _onComboboxButtonKeyDown(ev: KeyboardEvent): void {\n if (ev.key === 'Enter') {\n this._toggleComboboxDropdown();\n }\n }\n\n protected _onOptionMouseOver(ev: MouseEvent): void {\n if (this._isHoverForbidden) {\n return;\n }\n\n const el = ev.target as HTMLElement;\n\n if (!el.matches('.option')) {\n return;\n }\n\n this._activeIndex = Number(\n this.combobox ? el.dataset.filteredIndex : el.dataset.index\n );\n }\n\n protected _onEnterKeyDown(): void {\n const list = this.combobox ? this._filteredOptions : this._options;\n const showDropdownNext = !this._showDropdown;\n\n this._toggleDropdown(showDropdownNext);\n\n if (\n !this._multiple &&\n !showDropdownNext &&\n this._selectedIndex !== this._activeIndex\n ) {\n this._selectedIndex = list[this._activeIndex].index;\n this._value = this._options[this._selectedIndex].value;\n this._dispatchChangeEvent();\n }\n\n if (this.combobox) {\n if (!this._multiple && !showDropdownNext) {\n this._selectedIndex = this._filteredOptions[this._activeIndex].index;\n }\n\n if (!this._multiple && showDropdownNext) {\n this.updateComplete.then(() => {\n this._scrollActiveElementToTop();\n });\n }\n }\n\n if (this._multiple && showDropdownNext) {\n this._activeIndex = 0;\n }\n }\n\n private _onSpaceKeyDown() {\n if (!this._showDropdown) {\n this._toggleDropdown(true);\n return;\n }\n\n if (this._showDropdown && this._multiple && this._activeIndex > -1) {\n const opts = this.combobox ? this._filteredOptions : this._options;\n const {selected} = opts[this._activeIndex];\n\n opts[this._activeIndex].selected = !selected;\n this._selectedIndexes = [];\n\n opts.forEach(({index, selected}) => {\n if (selected) {\n this._selectedIndexes.push(index);\n }\n });\n }\n }\n\n private _scrollActiveElementToTop() {\n this._listElement.scrollTop = Math.floor(this._activeIndex * OPT_HEIGHT);\n }\n\n private async _adjustOptionListScrollPos(direction: 'down' | 'up') {\n const numOpts = this.combobox\n ? this._filteredOptions.length\n : this._options.length;\n\n if (numOpts <= VISIBLE_OPTS) {\n return;\n }\n\n this._isHoverForbidden = true;\n window.addEventListener('mousemove', this._onMouseMoveBound);\n\n if (!this._listElement) {\n await this.updateComplete;\n }\n\n const ulScrollTop = this._listElement.scrollTop;\n const liPosY = this._activeIndex * OPT_HEIGHT;\n\n if (direction === 'down') {\n if (liPosY + OPT_HEIGHT >= LIST_HEIGHT + ulScrollTop) {\n this._listElement.scrollTop =\n (this._activeIndex - (VISIBLE_OPTS - 1)) * OPT_HEIGHT;\n }\n }\n\n if (direction === 'up') {\n if (liPosY <= ulScrollTop - OPT_HEIGHT) {\n this._scrollActiveElementToTop();\n }\n }\n }\n\n protected _onArrowUpKeyDown(): void {\n if (this._showDropdown) {\n if (this._activeIndex <= 0) {\n return;\n }\n\n this._activeIndex -= 1;\n this._adjustOptionListScrollPos('up');\n }\n }\n\n protected _onArrowDownKeyDown(): void {\n if (this._showDropdown) {\n if (this._activeIndex >= this._currentOptions.length - 1) {\n return;\n }\n\n this._activeIndex += 1;\n this._adjustOptionListScrollPos('down');\n }\n }\n\n private _onComponentKeyDown(event: KeyboardEvent) {\n if ([' ', 'ArrowUp', 'ArrowDown', 'Escape'].includes(event.key)) {\n event.stopPropagation();\n event.preventDefault();\n }\n\n if (event.key === 'Enter') {\n this._onEnterKeyDown();\n }\n\n if (event.key === ' ') {\n this._onSpaceKeyDown();\n }\n\n if (event.key === 'Escape') {\n this._toggleDropdown(false);\n }\n\n if (event.key === 'ArrowUp') {\n this._onArrowUpKeyDown();\n }\n\n if (event.key === 'ArrowDown') {\n this._onArrowDownKeyDown();\n }\n }\n\n private _onComponentFocus() {\n this.focused = true;\n }\n\n private _onComponentBlur() {\n this.focused = false;\n }\n\n protected _onSlotChange(): void {\n const stat = this._addOptionsFromSlottedElements();\n\n if (stat.selectedIndexes.length > 0) {\n this._selectedIndex = stat.selectedIndexes[0];\n this._selectedIndexes = stat.selectedIndexes;\n this._value = stat.values[0];\n this._values = stat.values;\n }\n\n if (\n !this._multiple &&\n !this.combobox &&\n stat.selectedIndexes.length === 0\n ) {\n this._selectedIndex = 0;\n }\n }\n\n protected _onComboboxInputFocus(ev: FocusEvent): void {\n (ev.target as HTMLInputElement).select();\n }\n\n protected _onComboboxInputInput(ev: InputEvent): void {\n this._filterPattern = (ev.target as HTMLInputElement).value;\n this._activeIndex = -1;\n this._toggleDropdown(true);\n }\n\n protected _renderOptions(): TemplateResult | TemplateResult[] {\n return [];\n }\n\n private _renderDescription() {\n if (!this._options[this._activeIndex]) {\n return nothing;\n }\n\n const {description} = this._options[this._activeIndex];\n\n return description\n ? html`<div class=\"description\">${description}</div>`\n : nothing;\n }\n\n protected _renderSelectFace(): TemplateResult {\n return html`${nothing}`;\n }\n\n protected _renderComboboxFace(): TemplateResult {\n return html`${nothing}`;\n }\n\n protected _renderDropdownControls(): TemplateResult {\n return html`${nothing}`;\n }\n\n private _renderDropdown() {\n const classes = classMap({\n dropdown: true,\n multiple: this._multiple,\n });\n\n return html`\n <div class=\"${classes}\">\n ${this._renderOptions()} ${this._renderDropdownControls()}\n ${this._renderDescription()}\n </div>\n `;\n }\n\n render(): TemplateResult {\n return html`\n <slot class=\"main-slot\" @slotchange=\"${this._onSlotChange}\"></slot>\n ${this.combobox ? this._renderComboboxFace() : this._renderSelectFace()}\n ${this._showDropdown ? this._renderDropdown() : nothing}\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"vscode-select-base.js","sourceRoot":"","sources":["../../../src/includes/vscode-select/vscode-select-base.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAC,IAAI,EAAE,OAAO,EAAiB,MAAM,KAAK,CAAC;AAClD,OAAO,EAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAC,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAC,QAAQ,EAAC,MAAM,6BAA6B,CAAC;AACrD,OAAO,qBAAqB,CAAC;AAG7B,OAAO,EAAC,sBAAsB,EAAC,MAAM,cAAc,CAAC;AACpD,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAO5C,MAAM,YAAY,GAAG,EAAE,CAAC;AACxB,MAAM,UAAU,GAAG,EAAE,CAAC;AACtB,MAAM,WAAW,GAAG,YAAY,GAAG,UAAU,GAAG,CAAC,CAAC;AAElD;;GAEG;AACH,MAAM,OAAO,gBAAiB,SAAQ,UAAU;IAAhD;;QACE,gBAAgB;QAEhB,iBAAY,GAAG,OAAO,CAAC;QAGvB,aAAQ,GAAG,KAAK,CAAC;QAsBjB;;WAEG;QAEH,YAAO,GAAG,KAAK,CAAC;QAoChB,YAAO,GAAG,KAAK,CAAC;QAsBhB,gBAAgB;QAEhB,aAAQ,GAAG,CAAC,CAAC;QAiBH,iBAAY,GAAG,CAAC,CAAC,CAAC;QAGlB,wBAAmB,GAAG,EAAE,CAAC;QAGzB,YAAO,GAAiB,OAAO,CAAC;QAgBhC,mBAAc,GAAG,EAAE,CAAC;QAGpB,mBAAc,GAAG,CAAC,CAAC,CAAC;QAGpB,qBAAgB,GAAa,EAAE,CAAC;QAGhC,kBAAa,GAAG,KAAK,CAAC;QAGtB,aAAQ,GAAqB,EAAE,CAAC;QAGhC,WAAM,GAAG,EAAE,CAAC;QAGZ,YAAO,GAAa,EAAE,CAAC;QAGvB,mBAAc,GAAG,CAAC,CAAC;QAQ7B,gBAAgB;QACN,cAAS,GAAG,KAAK,CAAC;QAE5B;;;;WAIG;QACO,yBAAoB,GAA4B,EAAE,CAAC;QAErD,sBAAiB,GAAG,KAAK,CAAC;QAC1B,cAAS,GAAG,KAAK,CAAC;QAClB,sBAAiB,GAAuB,SAAS,CAAC;QA4HhD,yBAAoB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAOzD,sBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IA2Q3D,CAAC;IAjjBC,IAAI,QAAQ,CAAC,QAAiB;QAC5B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QAEhD,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC;YACvC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,iBAAiB,IAAI,CAAC,CAAC;YAC5C,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;QACrC,CAAC;QAED,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAQD;;;;;;;;;OASG;IAEH,IAAI,MAAM,CAAC,GAA8D;QACvE,MAAM,WAAW,GAAmB;YAClC,UAAU;YACV,OAAO;YACP,YAAY;YACZ,mBAAmB;SACpB,CAAC;QAEF,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAmB,CAAC,EAAE,CAAC;YAC9C,IAAI,CAAC,OAAO,GAAG,GAAmB,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;YACvB,OAAO,CAAC,IAAI,CACV,8CAA8C,GAAG,gGAAgG,EACjJ,IAAI,CACL,CAAC;QACJ,CAAC;IACH,CAAC;IACD,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAKD;;;OAGG;IAEH,IAAI,OAAO,CAAC,IAAc;QACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAC,GAAG,EAAE,EAAE,KAAK,EAAC,CAAC,CAAC,CAAC;IAC5D,CAAC;IACD,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CACtB,CAAC,EAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAC,EAAE,EAAE,CAAC,CAAC;YACpD,KAAK;YACL,KAAK;YACL,WAAW;YACX,QAAQ;YACR,QAAQ;SACT,CAAC,CACH,CAAC;IACJ,CAAC;IAMD,iBAAiB;QACf,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC3D,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACvD,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACvD,CAAC;IAED,oBAAoB;QAClB,KAAK,CAAC,oBAAoB,EAAE,CAAC;QAC7B,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC9D,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC1D,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC1D,CAAC;IAYD,IAAc,gBAAgB;QAC5B,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,cAAc,KAAK,EAAE,EAAE,CAAC;YACjD,OAAO,IAAI,CAAC,QAAQ,CAAC;QACvB,CAAC;QAED,OAAO,sBAAsB,CAC3B,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,OAAO,CACb,CAAC;IACJ,CAAC;IA8CD,IAAc,eAAe;QAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC/D,CAAC;IAES,8BAA8B;QACtC,MAAM,OAAO,GAAqB,EAAE,CAAC;QACrC,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;QAC7C,MAAM,eAAe,GAAmB;YACtC,eAAe,EAAE,EAAE;YACnB,MAAM,EAAE,EAAE;SACX,CAAC;QACF,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;QAE/B,KAAK,CAAC,OAAO,CAAC,CAAC,EAAQ,EAAE,EAAE;YACzB,IACE,CAAC,CACC,EAAE,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY;gBAChC,EAAc,CAAC,OAAO,CAAC,eAAe,CAAC,CACzC,EACD,CAAC;gBACD,OAAO;YACT,CAAC;YAED,MAAM,EAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAC,GAAG,EAAkB,CAAC;YAE9D,MAAM,KAAK,GAAI,EAAmB,CAAC,YAAY,CAAC,OAAO,CAAC;gBACtD,CAAC,CAAG,EAAmB,CAAC,YAAY,CAAC,OAAO,CAAY;gBACxD,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YAErB,MAAM,QAAQ,GAAI,EAAmB,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;YAE/D,MAAM,EAAE,GAAmB;gBACzB,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE;gBACvB,KAAK;gBACL,WAAW;gBACX,QAAQ;gBACR,KAAK,EAAE,YAAY;gBACnB,QAAQ;aACT,CAAC;YAEF,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAEhC,IAAI,QAAQ,EAAE,CAAC;gBACb,eAAe,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACzD,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrC,CAAC;YAED,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QAExB,OAAO,eAAe,CAAC;IACzB,CAAC;IAES,KAAK,CAAC,eAAe,CAAC,OAAgB;QAC9C,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;QAC7B,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAEpC,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC;YAExC,IAAI,IAAI,CAAC,YAAY,GAAG,YAAY,GAAG,CAAC,EAAE,CAAC;gBACzC,MAAM,IAAI,CAAC,cAAc,CAAC;gBAE1B,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CACtC,IAAI,CAAC,YAAY,GAAG,UAAU,CAC/B,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC9D,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAES,oBAAoB;QAC5B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,kBAAkB;YAClB,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAC,YAAY,EAAE;gBAC5B,MAAM,EAAE;oBACN,aAAa,EAAE,IAAI,CAAC,cAAc;oBAClC,KAAK,EAAE,IAAI,CAAC,MAAM;iBACnB;aACF,CAAC,CACH,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,kBAAkB;YAClB,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAC,YAAY,EAAE;gBAC5B,MAAM,EAAE;oBACN,eAAe,EAAE,IAAI,CAAC,gBAAgB;oBACtC,KAAK,EAAE,IAAI,CAAC,OAAO;iBACpB;aACF,CAAC,CACH,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC1C,CAAC;IAES,YAAY;QACpB,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAE1C,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAES,eAAe,CAAC,KAAiB;QACzC,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC;QAElD,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACjB,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAC5B,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAIO,YAAY;QAClB,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAC/B,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAClE,CAAC;IAIO,uBAAuB;QAC7B,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAE1C,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAES,sBAAsB;QAC9B,IAAI,CAAC,uBAAuB,EAAE,CAAC;IACjC,CAAC;IAES,wBAAwB,CAAC,EAAiB;QAClD,IAAI,EAAE,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;YACvB,IAAI,CAAC,uBAAuB,EAAE,CAAC;QACjC,CAAC;IACH,CAAC;IAES,kBAAkB,CAAC,EAAc;QACzC,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,MAAM,EAAE,GAAG,EAAE,CAAC,MAAqB,CAAC;QAEpC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,MAAM,CACxB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAC5D,CAAC;IACJ,CAAC;IAES,eAAe;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;QACnE,MAAM,gBAAgB,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC;QAE7C,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;QAEvC,IACE,CAAC,IAAI,CAAC,SAAS;YACf,CAAC,gBAAgB;YACjB,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,YAAY,EACzC,CAAC;YACD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC;YACpD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC;YACvD,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC9B,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACzC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC;YACvE,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,gBAAgB,EAAE,CAAC;gBACxC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE;oBAC5B,IAAI,CAAC,yBAAyB,EAAE,CAAC;gBACnC,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,IAAI,gBAAgB,EAAE,CAAC;YACvC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAEO,eAAe;QACrB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC;YACnE,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;YACnE,MAAM,EAAC,QAAQ,EAAC,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAE3C,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,GAAG,CAAC,QAAQ,CAAC;YAC7C,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;YAE3B,IAAI,CAAC,OAAO,CAAC,CAAC,EAAC,KAAK,EAAE,QAAQ,EAAC,EAAE,EAAE;gBACjC,IAAI,QAAQ,EAAE,CAAC;oBACb,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACpC,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAEO,yBAAyB;QAC/B,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,CAAC;IAC3E,CAAC;IAEO,KAAK,CAAC,0BAA0B,CAAC,SAAwB;QAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ;YAC3B,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM;YAC9B,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAEzB,IAAI,OAAO,IAAI,YAAY,EAAE,CAAC;YAC5B,OAAO;QACT,CAAC;QAED,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAE7D,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,MAAM,IAAI,CAAC,cAAc,CAAC;QAC5B,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC;QAE9C,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;YACzB,IAAI,MAAM,GAAG,UAAU,IAAI,WAAW,GAAG,WAAW,EAAE,CAAC;gBACrD,IAAI,CAAC,YAAY,CAAC,SAAS;oBACzB,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;YAC1D,CAAC;QACH,CAAC;QAED,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,IAAI,MAAM,IAAI,WAAW,GAAG,UAAU,EAAE,CAAC;gBACvC,IAAI,CAAC,yBAAyB,EAAE,CAAC;YACnC,CAAC;QACH,CAAC;IACH,CAAC;IAES,iBAAiB;QACzB,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,EAAE,CAAC;gBAC3B,OAAO;YACT,CAAC;YAED,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC;YACvB,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAES,mBAAmB;QAC3B,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzD,OAAO;YACT,CAAC;YAED,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC;YACvB,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAEO,mBAAmB,CAAC,KAAoB;QAC9C,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YAChE,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,KAAK,CAAC,cAAc,EAAE,CAAC;QACzB,CAAC;QAED,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;YAC1B,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC;QAED,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;YACtB,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC;QAED,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC3B,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QAED,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YAC5B,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3B,CAAC;QAED,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE,CAAC;YAC9B,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC7B,CAAC;IACH,CAAC;IAEO,iBAAiB;QACvB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;IAEO,gBAAgB;QACtB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACvB,CAAC;IAES,aAAa;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,8BAA8B,EAAE,CAAC;QAEnD,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAC9C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC;YAC7C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;QAC7B,CAAC;QAED,IACE,CAAC,IAAI,CAAC,SAAS;YACf,CAAC,IAAI,CAAC,QAAQ;YACd,IAAI,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,EACjC,CAAC;YACD,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAES,qBAAqB,CAAC,EAAc;QAC3C,EAAE,CAAC,MAA2B,CAAC,MAAM,EAAE,CAAC;IAC3C,CAAC;IAES,qBAAqB,CAAC,EAAc;QAC5C,IAAI,CAAC,cAAc,GAAI,EAAE,CAAC,MAA2B,CAAC,KAAK,CAAC;QAC5D,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAES,qBAAqB;QAC7B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAES,cAAc;QACtB,OAAO,EAAE,CAAC;IACZ,CAAC;IAEO,kBAAkB;QACxB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YACtC,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,MAAM,EAAC,WAAW,EAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEvD,OAAO,WAAW;YAChB,CAAC,CAAC,IAAI,CAAA,4BAA4B,WAAW,QAAQ;YACrD,CAAC,CAAC,OAAO,CAAC;IACd,CAAC;IAES,iBAAiB;QACzB,OAAO,IAAI,CAAA,GAAG,OAAO,EAAE,CAAC;IAC1B,CAAC;IAES,mBAAmB;QAC3B,OAAO,IAAI,CAAA,GAAG,OAAO,EAAE,CAAC;IAC1B,CAAC;IAES,uBAAuB;QAC/B,OAAO,IAAI,CAAA,GAAG,OAAO,EAAE,CAAC;IAC1B,CAAC;IAEO,eAAe;QACrB,MAAM,OAAO,GAAG,QAAQ,CAAC;YACvB,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,IAAI,CAAC,SAAS;SACzB,CAAC,CAAC;QAEH,OAAO,IAAI,CAAA;oBACK,OAAO;UACjB,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,uBAAuB,EAAE;UACvD,IAAI,CAAC,kBAAkB,EAAE;;KAE9B,CAAC;IACJ,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;6CAC8B,IAAI,CAAC,aAAa;QACvD,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE;QACrE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,OAAO;KACxD,CAAC;IACJ,CAAC;CACF;AAvjBC;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,EAAC,CAAC;sDAC7C;AAGvB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;kDACxB;AAGjB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;gDAcxC;AAUD;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;iDACzB;AAahB;IADC,QAAQ,EAAE;8CAkBV;AAMD;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;iDACzB;AAOhB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,KAAK,EAAC,CAAC;+CAGvB;AAeD;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;kDAC5C;AAiBH;IADT,KAAK,EAAE;sDACoB;AAGlB;IADT,KAAK,EAAE;6DAC2B;AAGzB;IADT,KAAK,EAAE;iDACkC;AAG1C;IADC,KAAK,EAAE;wDAWP;AAGS;IADT,KAAK,EAAE;wDACsB;AAGpB;IADT,KAAK,EAAE;wDACsB;AAGpB;IADT,KAAK,EAAE;0DACkC;AAGhC;IADT,KAAK,EAAE;uDACwB;AAGtB;IADT,KAAK,EAAE;kDACkC;AAGhC;IADT,KAAK,EAAE;gDACc;AAGZ;IADT,KAAK,EAAE;iDACyB;AAGvB;IADT,KAAK,EAAE;wDACqB;AAGnB;IADT,KAAK,CAAC,YAAY,CAAC;mDACkB;AAG9B;IADP,KAAK,CAAC,UAAU,CAAC;sDACsB","sourcesContent":["import {html, nothing, TemplateResult} from 'lit';\nimport {property, query, state} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport '../../vscode-button';\nimport {VscodeOption} from '../../vscode-option/index.js';\nimport type {InternalOption, Option, SearchMethod} from './types.js';\nimport {filterOptionsByPattern} from './helpers.js';\nimport {VscElement} from '../VscElement.js';\n\ninterface OptionListStat {\n selectedIndexes: number[];\n values: string[];\n}\n\nconst VISIBLE_OPTS = 10;\nconst OPT_HEIGHT = 22;\nconst LIST_HEIGHT = VISIBLE_OPTS + OPT_HEIGHT + 2;\n\n/**\n * @cssprop --dropdown-z-index - workaround for dropdown z-index issues\n */\nexport class VscodeSelectBase extends VscElement {\n /** @internal */\n @property({type: String, reflect: true, attribute: 'aria-expanded'})\n ariaExpanded = 'false';\n\n @property({type: Boolean, reflect: true})\n combobox = false;\n\n @property({type: Boolean, reflect: true})\n set disabled(newState: boolean) {\n this._disabled = newState;\n this.ariaDisabled = newState ? 'true' : 'false';\n\n if (newState === true) {\n this._originalTabIndex = this.tabIndex;\n this.tabIndex = -1;\n } else {\n this.tabIndex = this._originalTabIndex ?? 0;\n this._originalTabIndex = undefined;\n }\n\n this.requestUpdate();\n }\n\n get disabled(): boolean {\n return this._disabled;\n }\n\n /**\n * Sets the invalid state manually.\n */\n @property({type: Boolean, reflect: true})\n invalid = false;\n\n /**\n * Search method in the filtered list within the combobox mode.\n *\n * - contains - The list item includes the searched pattern at any position.\n * - fuzzy - The list item contains the letters of the search pattern in the same order, but at any position.\n * - startsWith - The search pattern matches the beginning of the searched text.\n * - startsWithPerTerm - The search pattern matches the beginning of any word in the searched text.\n *\n * @default 'fuzzy'\n */\n @property()\n set filter(val: 'contains' | 'fuzzy' | 'startsWith' | 'startsWithPerTerm') {\n const validValues: SearchMethod[] = [\n 'contains',\n 'fuzzy',\n 'startsWith',\n 'startsWithPerTerm',\n ];\n\n if (validValues.includes(val as SearchMethod)) {\n this._filter = val as SearchMethod;\n } else {\n this._filter = 'fuzzy';\n console.warn(\n `[VSCode Webview Elements] Invalid filter: \"${val}\", fallback to default. Valid values are: \"contains\", \"fuzzy\", \"startsWith\", \"startsWithPerm\".`,\n this\n );\n }\n }\n get filter(): 'contains' | 'fuzzy' | 'startsWith' | 'startsWithPerTerm' {\n return this._filter;\n }\n\n @property({type: Boolean, reflect: true})\n focused = false;\n\n /**\n * @attr [options=[]]\n * @type {Option[]}\n */\n @property({type: Array})\n set options(opts: Option[]) {\n this._options = opts.map((op, index) => ({...op, index}));\n }\n get options(): Option[] {\n return this._options.map(\n ({label, value, description, selected, disabled}) => ({\n label,\n value,\n description,\n selected,\n disabled,\n })\n );\n }\n\n /** @internal */\n @property({type: Number, attribute: true, reflect: true})\n tabIndex = 0;\n\n connectedCallback(): void {\n super.connectedCallback();\n this.addEventListener('keydown', this._onComponentKeyDown);\n this.addEventListener('focus', this._onComponentFocus);\n this.addEventListener('blur', this._onComponentBlur);\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n this.removeEventListener('keydown', this._onComponentKeyDown);\n this.removeEventListener('focus', this._onComponentFocus);\n this.removeEventListener('blur', this._onComponentBlur);\n }\n\n @state()\n protected _activeIndex = -1;\n\n @state()\n protected _currentDescription = '';\n\n @state()\n protected _filter: SearchMethod = 'fuzzy';\n\n @state()\n protected get _filteredOptions(): InternalOption[] {\n if (!this.combobox || this._filterPattern === '') {\n return this._options;\n }\n\n return filterOptionsByPattern(\n this._options,\n this._filterPattern,\n this._filter\n );\n }\n\n @state()\n protected _filterPattern = '';\n\n @state()\n protected _selectedIndex = -1;\n\n @state()\n protected _selectedIndexes: number[] = [];\n\n @state()\n protected _showDropdown = false;\n\n @state()\n protected _options: InternalOption[] = [];\n\n @state()\n protected _value = '';\n\n @state()\n protected _values: string[] = [];\n\n @state()\n protected _listScrollTop = 0;\n\n @query('.main-slot')\n protected _mainSlot!: HTMLSlotElement;\n\n @query('.options')\n private _listElement!: HTMLUListElement;\n\n /** @internal */\n protected _multiple = false;\n\n /**\n * @internal\n * Quick-searchable map for searching a value in the options list.\n * Keys are the options values, values are the option indexes.\n */\n protected _valueOptionIndexMap: {[key: string]: number} = {};\n\n private _isHoverForbidden = false;\n private _disabled = false;\n private _originalTabIndex: number | undefined = undefined;\n\n protected get _currentOptions(): InternalOption[] {\n return this.combobox ? this._filteredOptions : this._options;\n }\n\n protected _addOptionsFromSlottedElements(): OptionListStat {\n const options: InternalOption[] = [];\n let currentIndex = 0;\n const nodes = this._mainSlot.assignedNodes();\n const optionsListStat: OptionListStat = {\n selectedIndexes: [],\n values: [],\n };\n this._valueOptionIndexMap = {};\n\n nodes.forEach((el: Node) => {\n if (\n !(\n el.nodeType === Node.ELEMENT_NODE &&\n (el as Element).matches('vscode-option')\n )\n ) {\n return;\n }\n\n const {innerText, description, disabled} = el as VscodeOption;\n\n const value = (el as VscodeOption).hasAttribute('value')\n ? ((el as VscodeOption).getAttribute('value') as string)\n : innerText.trim();\n\n const selected = (el as VscodeOption).hasAttribute('selected');\n\n const op: InternalOption = {\n label: innerText.trim(),\n value,\n description,\n selected,\n index: currentIndex,\n disabled,\n };\n\n currentIndex = options.push(op);\n\n if (selected) {\n optionsListStat.selectedIndexes.push(options.length - 1);\n optionsListStat.values.push(value);\n }\n\n this._valueOptionIndexMap[op.value] = op.index;\n });\n\n this._options = options;\n\n return optionsListStat;\n }\n\n protected async _toggleDropdown(visible: boolean): Promise<void> {\n this._showDropdown = visible;\n this.ariaExpanded = String(visible);\n\n if (visible && !this._multiple && !this.combobox) {\n this._activeIndex = this._selectedIndex;\n\n if (this._activeIndex > VISIBLE_OPTS - 1) {\n await this.updateComplete;\n\n this._listElement.scrollTop = Math.floor(\n this._activeIndex * OPT_HEIGHT\n );\n }\n }\n\n if (visible) {\n window.addEventListener('click', this._onClickOutsideBound);\n } else {\n window.removeEventListener('click', this._onClickOutsideBound);\n }\n }\n\n protected _dispatchChangeEvent(): void {\n if (!this._multiple) {\n /** @deprecated */\n this.dispatchEvent(\n new CustomEvent('vsc-change', {\n detail: {\n selectedIndex: this._selectedIndex,\n value: this._value,\n },\n })\n );\n } else {\n /** @deprecated */\n this.dispatchEvent(\n new CustomEvent('vsc-change', {\n detail: {\n selectedIndexes: this._selectedIndexes,\n value: this._values,\n },\n })\n );\n }\n this.dispatchEvent(new Event('change'));\n }\n\n protected _onFaceClick(): void {\n this._toggleDropdown(!this._showDropdown);\n\n if (this._multiple) {\n this._activeIndex = 0;\n }\n }\n\n protected _onClickOutside(event: MouseEvent): void {\n const path = event.composedPath();\n const found = path.findIndex((et) => et === this);\n\n if (found === -1) {\n this._toggleDropdown(false);\n window.removeEventListener('click', this._onClickOutsideBound);\n }\n }\n\n protected _onClickOutsideBound = this._onClickOutside.bind(this);\n\n private _onMouseMove() {\n this._isHoverForbidden = false;\n window.removeEventListener('mousemove', this._onMouseMoveBound);\n }\n\n private _onMouseMoveBound = this._onMouseMove.bind(this);\n\n private _toggleComboboxDropdown() {\n this._filterPattern = '';\n this._toggleDropdown(!this._showDropdown);\n\n if (this._multiple) {\n this._activeIndex = -1;\n }\n }\n\n protected _onComboboxButtonClick(): void {\n this._toggleComboboxDropdown();\n }\n\n protected _onComboboxButtonKeyDown(ev: KeyboardEvent): void {\n if (ev.key === 'Enter') {\n this._toggleComboboxDropdown();\n }\n }\n\n protected _onOptionMouseOver(ev: MouseEvent): void {\n if (this._isHoverForbidden) {\n return;\n }\n\n const el = ev.target as HTMLElement;\n\n if (!el.matches('.option')) {\n return;\n }\n\n this._activeIndex = Number(\n this.combobox ? el.dataset.filteredIndex : el.dataset.index\n );\n }\n\n protected _onEnterKeyDown(): void {\n const list = this.combobox ? this._filteredOptions : this._options;\n const showDropdownNext = !this._showDropdown;\n\n this._toggleDropdown(showDropdownNext);\n\n if (\n !this._multiple &&\n !showDropdownNext &&\n this._selectedIndex !== this._activeIndex\n ) {\n this._selectedIndex = list[this._activeIndex].index;\n this._value = this._options[this._selectedIndex].value;\n this._dispatchChangeEvent();\n }\n\n if (this.combobox) {\n if (!this._multiple && !showDropdownNext) {\n this._selectedIndex = this._filteredOptions[this._activeIndex].index;\n }\n\n if (!this._multiple && showDropdownNext) {\n this.updateComplete.then(() => {\n this._scrollActiveElementToTop();\n });\n }\n }\n\n if (this._multiple && showDropdownNext) {\n this._activeIndex = 0;\n }\n }\n\n private _onSpaceKeyDown() {\n if (!this._showDropdown) {\n this._toggleDropdown(true);\n return;\n }\n\n if (this._showDropdown && this._multiple && this._activeIndex > -1) {\n const opts = this.combobox ? this._filteredOptions : this._options;\n const {selected} = opts[this._activeIndex];\n\n opts[this._activeIndex].selected = !selected;\n this._selectedIndexes = [];\n\n opts.forEach(({index, selected}) => {\n if (selected) {\n this._selectedIndexes.push(index);\n }\n });\n }\n }\n\n private _scrollActiveElementToTop() {\n this._listElement.scrollTop = Math.floor(this._activeIndex * OPT_HEIGHT);\n }\n\n private async _adjustOptionListScrollPos(direction: 'down' | 'up') {\n const numOpts = this.combobox\n ? this._filteredOptions.length\n : this._options.length;\n\n if (numOpts <= VISIBLE_OPTS) {\n return;\n }\n\n this._isHoverForbidden = true;\n window.addEventListener('mousemove', this._onMouseMoveBound);\n\n if (!this._listElement) {\n await this.updateComplete;\n }\n\n const ulScrollTop = this._listElement.scrollTop;\n const liPosY = this._activeIndex * OPT_HEIGHT;\n\n if (direction === 'down') {\n if (liPosY + OPT_HEIGHT >= LIST_HEIGHT + ulScrollTop) {\n this._listElement.scrollTop =\n (this._activeIndex - (VISIBLE_OPTS - 1)) * OPT_HEIGHT;\n }\n }\n\n if (direction === 'up') {\n if (liPosY <= ulScrollTop - OPT_HEIGHT) {\n this._scrollActiveElementToTop();\n }\n }\n }\n\n protected _onArrowUpKeyDown(): void {\n if (this._showDropdown) {\n if (this._activeIndex <= 0) {\n return;\n }\n\n this._activeIndex -= 1;\n this._adjustOptionListScrollPos('up');\n }\n }\n\n protected _onArrowDownKeyDown(): void {\n if (this._showDropdown) {\n if (this._activeIndex >= this._currentOptions.length - 1) {\n return;\n }\n\n this._activeIndex += 1;\n this._adjustOptionListScrollPos('down');\n }\n }\n\n private _onComponentKeyDown(event: KeyboardEvent) {\n if ([' ', 'ArrowUp', 'ArrowDown', 'Escape'].includes(event.key)) {\n event.stopPropagation();\n event.preventDefault();\n }\n\n if (event.key === 'Enter') {\n this._onEnterKeyDown();\n }\n\n if (event.key === ' ') {\n this._onSpaceKeyDown();\n }\n\n if (event.key === 'Escape') {\n this._toggleDropdown(false);\n }\n\n if (event.key === 'ArrowUp') {\n this._onArrowUpKeyDown();\n }\n\n if (event.key === 'ArrowDown') {\n this._onArrowDownKeyDown();\n }\n }\n\n private _onComponentFocus() {\n this.focused = true;\n }\n\n private _onComponentBlur() {\n this.focused = false;\n }\n\n protected _onSlotChange(): void {\n const stat = this._addOptionsFromSlottedElements();\n\n if (stat.selectedIndexes.length > 0) {\n this._selectedIndex = stat.selectedIndexes[0];\n this._selectedIndexes = stat.selectedIndexes;\n this._value = stat.values[0];\n this._values = stat.values;\n }\n\n if (\n !this._multiple &&\n !this.combobox &&\n stat.selectedIndexes.length === 0\n ) {\n this._selectedIndex = 0;\n }\n }\n\n protected _onComboboxInputFocus(ev: FocusEvent): void {\n (ev.target as HTMLInputElement).select();\n }\n\n protected _onComboboxInputInput(ev: InputEvent): void {\n this._filterPattern = (ev.target as HTMLInputElement).value;\n this._activeIndex = -1;\n this._toggleDropdown(true);\n }\n\n protected _onComboboxInputClick(): void {\n this._toggleDropdown(true);\n }\n\n protected _renderOptions(): TemplateResult | TemplateResult[] {\n return [];\n }\n\n private _renderDescription() {\n if (!this._options[this._activeIndex]) {\n return nothing;\n }\n\n const {description} = this._options[this._activeIndex];\n\n return description\n ? html`<div class=\"description\">${description}</div>`\n : nothing;\n }\n\n protected _renderSelectFace(): TemplateResult {\n return html`${nothing}`;\n }\n\n protected _renderComboboxFace(): TemplateResult {\n return html`${nothing}`;\n }\n\n protected _renderDropdownControls(): TemplateResult {\n return html`${nothing}`;\n }\n\n private _renderDropdown() {\n const classes = classMap({\n dropdown: true,\n multiple: this._multiple,\n });\n\n return html`\n <div class=\"${classes}\">\n ${this._renderOptions()} ${this._renderDropdownControls()}\n ${this._renderDescription()}\n </div>\n `;\n }\n\n render(): TemplateResult {\n return html`\n <slot class=\"main-slot\" @slotchange=\"${this._onSlotChange}\"></slot>\n ${this.combobox ? this._renderComboboxFace() : this._renderSelectFace()}\n ${this._showDropdown ? this._renderDropdown() : nothing}\n `;\n }\n}\n"]}
@@ -26,6 +26,8 @@ import { AssociatedFormControl } from '../includes/AssociatedFormControl.js';
26
26
  * @cssprop --vscode-list-activeSelectionBackground
27
27
  * @cssprop --vscode-list-activeSelectionForeground
28
28
  * @cssprop --vscode-list-focusOutline
29
+ * @cssprop --vscode-list-focusHighlightForeground
30
+ * @cssprop --vscode-list-highlightForeground
29
31
  * @cssprop --vscode-list-hoverBackground
30
32
  * @cssprop --vscode-list-hoverForeground
31
33
  * @cssprop --vscode-list-hoverBackground
@@ -34,9 +36,10 @@ import { AssociatedFormControl } from '../includes/AssociatedFormControl.js';
34
36
  */
35
37
  export declare class VscodeMultiSelect extends VscodeSelectBase implements AssociatedFormControl {
36
38
  static styles: import("lit").CSSResult[];
39
+ /** @internal */
40
+ static shadowRootOptions: ShadowRootInit;
37
41
  static formAssociated: boolean;
38
42
  defaultValue: string[];
39
- disabled: boolean;
40
43
  required: boolean;
41
44
  name: string | undefined;
42
45
  set selectedIndexes(val: number[]);