@vscode-elements/elements 2.0.0-pre.1 → 2.0.0-pre.2

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