@vscode-elements/elements 2.4.0 → 2.4.1-pre.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 (43) hide show
  1. package/custom-elements.json +1370 -314
  2. package/dist/bundled.js +163 -164
  3. package/dist/includes/VscElement.d.ts +1 -0
  4. package/dist/includes/VscElement.d.ts.map +1 -1
  5. package/dist/includes/VscElement.js +16 -3
  6. package/dist/includes/VscElement.js.map +1 -1
  7. package/dist/includes/helpers.d.ts +1 -0
  8. package/dist/includes/helpers.d.ts.map +1 -1
  9. package/dist/includes/helpers.js +3 -0
  10. package/dist/includes/helpers.js.map +1 -1
  11. package/dist/includes/vscode-select/vscode-select-base.d.ts.map +1 -1
  12. package/dist/includes/vscode-select/vscode-select-base.js +1 -4
  13. package/dist/includes/vscode-select/vscode-select-base.js.map +1 -1
  14. package/dist/vscode-icon/vscode-icon.d.ts.map +1 -1
  15. package/dist/vscode-icon/vscode-icon.js +2 -3
  16. package/dist/vscode-icon/vscode-icon.js.map +1 -1
  17. package/dist/vscode-table/ColumnResizeController.d.ts +37 -0
  18. package/dist/vscode-table/ColumnResizeController.d.ts.map +1 -0
  19. package/dist/vscode-table/ColumnResizeController.js +141 -0
  20. package/dist/vscode-table/ColumnResizeController.js.map +1 -0
  21. package/dist/vscode-table/calculations.d.ts +13 -0
  22. package/dist/vscode-table/calculations.d.ts.map +1 -0
  23. package/dist/vscode-table/calculations.js +82 -0
  24. package/dist/vscode-table/calculations.js.map +1 -0
  25. package/dist/vscode-table/vscode-table.d.ts +9 -14
  26. package/dist/vscode-table/vscode-table.d.ts.map +1 -1
  27. package/dist/vscode-table/vscode-table.js +62 -98
  28. package/dist/vscode-table/vscode-table.js.map +1 -1
  29. package/dist/vscode-table/vscode-table.styles.d.ts +2 -0
  30. package/dist/vscode-table/vscode-table.styles.d.ts.map +1 -1
  31. package/dist/vscode-table/vscode-table.styles.js +6 -5
  32. package/dist/vscode-table/vscode-table.styles.js.map +1 -1
  33. package/dist/vscode-tree-item/vscode-tree-item.d.ts +13 -0
  34. package/dist/vscode-tree-item/vscode-tree-item.d.ts.map +1 -1
  35. package/dist/vscode-tree-item/vscode-tree-item.js +13 -0
  36. package/dist/vscode-tree-item/vscode-tree-item.js.map +1 -1
  37. package/package.json +3 -3
  38. package/vscode.css-custom-data.json +15 -15
  39. package/vscode.html-custom-data.json +19 -19
  40. package/dist/vscode-table/helpers.d.ts +0 -2
  41. package/dist/vscode-table/helpers.d.ts.map +0 -1
  42. package/dist/vscode-table/helpers.js +0 -20
  43. package/dist/vscode-table/helpers.js.map +0 -1
@@ -2,6 +2,7 @@ import { LitElement } from 'lit';
2
2
  export declare class VscElement extends LitElement {
3
3
  /** VSCode Elements version */
4
4
  get version(): string;
5
+ warn(message: string): void;
5
6
  }
6
7
  type CustomElementClass = Omit<typeof HTMLElement, 'new'>;
7
8
  export type Constructor<T> = {
@@ -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;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,SAgC1C,CAAC"}
1
+ {"version":3,"file":"VscElement.d.ts","sourceRoot":"","sources":["../../src/includes/VscElement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,KAAK,CAAC;AAiB/B,qBAAa,UAAW,SAAQ,UAAU;IACxC,8BAA8B;IAC9B,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,CAAC,OAAO,EAAE,MAAM;CAGrB;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,SA+B1C,CAAC"}
@@ -1,11 +1,25 @@
1
1
  import { LitElement } from 'lit';
2
- const VERSION = '2.4.0';
2
+ const VERSION = '2.4.1-pre.0';
3
3
  const CONFIG_KEY = '__vscodeElements_disableRegistryWarning__';
4
+ const warn = (message, componentInstance) => {
5
+ const prefix = '[VSCode Elements] ';
6
+ if (componentInstance) {
7
+ // eslint-disable-next-line no-console
8
+ console.warn(`${prefix}${message}\n%o`, componentInstance);
9
+ }
10
+ else {
11
+ // eslint-disable-next-line no-console
12
+ console.warn(`${message}\n%o`, componentInstance);
13
+ }
14
+ };
4
15
  export class VscElement extends LitElement {
5
16
  /** VSCode Elements version */
6
17
  get version() {
7
18
  return VERSION;
8
19
  }
20
+ warn(message) {
21
+ warn(message, this);
22
+ }
9
23
  }
10
24
  /**
11
25
  * Own implementation of Lit's customElement decorator.
@@ -35,8 +49,7 @@ export const customElement = (tagName) => {
35
49
  else {
36
50
  message += `is already registered by the same version of VSCode Elements (${VERSION}).`;
37
51
  }
38
- // eslint-disable-next-line no-console
39
- console.warn(`[VSCode Elements] ${tagName} ${message}\nTo suppress this warning, set window.${CONFIG_KEY} to true`);
52
+ warn(`The custom element "${tagName}" ${message}\nTo suppress this warning, set window.${CONFIG_KEY} to true`);
40
53
  };
41
54
  };
42
55
  //# 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,GAAG,OAAO,CAAC;AACxB,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,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,IAAI,iEAAiE,OAAO,IAAI,CAAC;QAC1F,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.4.0';\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 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 += `is already registered by the same version of VSCode Elements (${VERSION}).`;\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
+ {"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,IAAI,GAAG,CAAC,OAAe,EAAE,iBAA8B,EAAE,EAAE;IAC/D,MAAM,MAAM,GAAG,oBAAoB,CAAC;IAEpC,IAAI,iBAAiB,EAAE,CAAC;QACtB,sCAAsC;QACtC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,OAAO,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC7D,CAAC;SAAM,CAAC;QACN,sCAAsC;QACtC,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACpD,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,OAAO,UAAW,SAAQ,UAAU;IACxC,8BAA8B;IAC9B,IAAI,OAAO;QACT,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,IAAI,CAAC,OAAe;QAClB,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACtB,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,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,IAAI,iEAAiE,OAAO,IAAI,CAAC;QAC1F,CAAC;QAED,IAAI,CACF,uBAAuB,OAAO,KAAK,OAAO,0CAA0C,UAAU,UAAU,CACzG,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import {LitElement} from 'lit';\n\nconst VERSION = '2.4.1-pre.0';\nconst CONFIG_KEY = '__vscodeElements_disableRegistryWarning__';\n\nconst warn = (message: string, componentInstance?: VscElement) => {\n const prefix = '[VSCode Elements] ';\n\n if (componentInstance) {\n // eslint-disable-next-line no-console\n console.warn(`${prefix}${message}\\n%o`, componentInstance);\n } else {\n // eslint-disable-next-line no-console\n console.warn(`${message}\\n%o`, componentInstance);\n }\n};\n\nexport class VscElement extends LitElement {\n /** VSCode Elements version */\n get version(): string {\n return VERSION;\n }\n\n warn(message: string) {\n warn(message, this);\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 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 += `is already registered by the same version of VSCode Elements (${VERSION}).`;\n }\n\n warn(\n `The custom element \"${tagName}\" ${message}\\nTo suppress this warning, set window.${CONFIG_KEY} to true`\n );\n };\n};\n"]}
@@ -2,4 +2,5 @@ export declare const INPUT_LINE_HEIGHT_RATIO: number;
2
2
  export declare const DEFUALT_INPUT_WIDGET_WIDTH = 320;
3
3
  export declare function getDefaultFontStack(): "system-ui, \"Ubuntu\", \"Droid Sans\", sans-serif" | "-apple-system, BlinkMacSystemFont, sans-serif" | "\"Segoe WPC\", \"Segoe UI\", sans-serif" | "sans-serif";
4
4
  export declare function getDefaultEditorFontStack(): "\"Droid Sans Mono\", \"monospace\", monospace" | "Menlo, Monaco, \"Courier New\", monospace" | "Consolas, \"Courier New\", monospace" | "monospace";
5
+ export declare function logMessage(msg: string): string;
5
6
  //# sourceMappingURL=helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/includes/helpers.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,uBAAuB,QAA0C,CAAC;AAE/E,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAE9C,wBAAgB,mBAAmB,qKAUlC;AAED,wBAAgB,yBAAyB,yJAUxC"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/includes/helpers.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,uBAAuB,QAA0C,CAAC;AAE/E,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAE9C,wBAAgB,mBAAmB,qKAUlC;AAED,wBAAgB,yBAAyB,yJAUxC;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,UAErC"}
@@ -30,4 +30,7 @@ export function getDefaultEditorFontStack() {
30
30
  return 'monospace';
31
31
  }
32
32
  }
33
+ export function logMessage(msg) {
34
+ return `[VSCode Elements] ${msg}`;
35
+ }
33
36
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/includes/helpers.ts"],"names":[],"mappings":"AAAA,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAC/B,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAE7B,MAAM,CAAC,MAAM,uBAAuB,GAAG,mBAAmB,GAAG,iBAAiB,CAAC;AAE/E,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAE9C,MAAM,UAAU,mBAAmB;IACjC,IAAI,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAC9C,OAAO,+CAA+C,CAAC;IACzD,CAAC;SAAM,IAAI,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACnD,OAAO,+CAA+C,CAAC;IACzD,CAAC;SAAM,IAAI,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACvD,OAAO,qCAAqC,CAAC;IAC/C,CAAC;SAAM,CAAC;QACN,OAAO,YAAY,CAAC;IACtB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,yBAAyB;IACvC,IAAI,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAC9C,OAAO,2CAA2C,CAAC;IACrD,CAAC;SAAM,IAAI,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACnD,OAAO,yCAAyC,CAAC;IACnD,CAAC;SAAM,IAAI,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACvD,OAAO,oCAAoC,CAAC;IAC9C,CAAC;SAAM,CAAC;QACN,OAAO,WAAW,CAAC;IACrB,CAAC;AACH,CAAC","sourcesContent":["const DEFAULT_LINE_HEIGHT = 16;\nconst DEFAULT_FONT_SIZE = 13;\n\nexport const INPUT_LINE_HEIGHT_RATIO = DEFAULT_LINE_HEIGHT / DEFAULT_FONT_SIZE;\n\nexport const DEFUALT_INPUT_WIDGET_WIDTH = 320;\n\nexport function getDefaultFontStack() {\n if (navigator.userAgent.indexOf('Linux') > -1) {\n return 'system-ui, \"Ubuntu\", \"Droid Sans\", sans-serif';\n } else if (navigator.userAgent.indexOf('Mac') > -1) {\n return '-apple-system, BlinkMacSystemFont, sans-serif';\n } else if (navigator.userAgent.indexOf('Windows') > -1) {\n return '\"Segoe WPC\", \"Segoe UI\", sans-serif';\n } else {\n return 'sans-serif';\n }\n}\n\nexport function getDefaultEditorFontStack() {\n if (navigator.userAgent.indexOf('Linux') > -1) {\n return '\"Droid Sans Mono\", \"monospace\", monospace';\n } else if (navigator.userAgent.indexOf('Mac') > -1) {\n return 'Menlo, Monaco, \"Courier New\", monospace';\n } else if (navigator.userAgent.indexOf('Windows') > -1) {\n return 'Consolas, \"Courier New\", monospace';\n } else {\n return 'monospace';\n }\n}\n"]}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/includes/helpers.ts"],"names":[],"mappings":"AAAA,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAC/B,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAE7B,MAAM,CAAC,MAAM,uBAAuB,GAAG,mBAAmB,GAAG,iBAAiB,CAAC;AAE/E,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAE9C,MAAM,UAAU,mBAAmB;IACjC,IAAI,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAC9C,OAAO,+CAA+C,CAAC;IACzD,CAAC;SAAM,IAAI,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACnD,OAAO,+CAA+C,CAAC;IACzD,CAAC;SAAM,IAAI,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACvD,OAAO,qCAAqC,CAAC;IAC/C,CAAC;SAAM,CAAC;QACN,OAAO,YAAY,CAAC;IACtB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,yBAAyB;IACvC,IAAI,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAC9C,OAAO,2CAA2C,CAAC;IACrD,CAAC;SAAM,IAAI,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACnD,OAAO,yCAAyC,CAAC;IACnD,CAAC;SAAM,IAAI,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACvD,OAAO,oCAAoC,CAAC;IAC9C,CAAC;SAAM,CAAC;QACN,OAAO,WAAW,CAAC;IACrB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,OAAO,qBAAqB,GAAG,EAAE,CAAC;AACpC,CAAC","sourcesContent":["const DEFAULT_LINE_HEIGHT = 16;\nconst DEFAULT_FONT_SIZE = 13;\n\nexport const INPUT_LINE_HEIGHT_RATIO = DEFAULT_LINE_HEIGHT / DEFAULT_FONT_SIZE;\n\nexport const DEFUALT_INPUT_WIDGET_WIDTH = 320;\n\nexport function getDefaultFontStack() {\n if (navigator.userAgent.indexOf('Linux') > -1) {\n return 'system-ui, \"Ubuntu\", \"Droid Sans\", sans-serif';\n } else if (navigator.userAgent.indexOf('Mac') > -1) {\n return '-apple-system, BlinkMacSystemFont, sans-serif';\n } else if (navigator.userAgent.indexOf('Windows') > -1) {\n return '\"Segoe WPC\", \"Segoe UI\", sans-serif';\n } else {\n return 'sans-serif';\n }\n}\n\nexport function getDefaultEditorFontStack() {\n if (navigator.userAgent.indexOf('Linux') > -1) {\n return '\"Droid Sans Mono\", \"monospace\", monospace';\n } else if (navigator.userAgent.indexOf('Mac') > -1) {\n return 'Menlo, Monaco, \"Courier New\", monospace';\n } else if (navigator.userAgent.indexOf('Windows') > -1) {\n return 'Consolas, \"Courier New\", monospace';\n } else {\n return 'monospace';\n }\n}\n\nexport function logMessage(msg: string) {\n return `[VSCode Elements] ${msg}`;\n}\n"]}
@@ -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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"}
@@ -68,13 +68,10 @@ export class VscodeSelectBase extends VscElement {
68
68
  ];
69
69
  let fm;
70
70
  if (validValues.includes(val)) {
71
- // this._filter = val as FilterMethod;
72
71
  fm = val;
73
72
  }
74
73
  else {
75
- // this._filter = 'fuzzy';
76
- // eslint-disable-next-line no-console
77
- console.warn(`[VSCode Webview Elements] Invalid filter: "${val}", fallback to default. Valid values are: "contains", "fuzzy", "startsWith", "startsWithPerm".`, this);
74
+ this.warn(`Invalid filter: "${val}", fallback to default. Valid values are: "contains", "fuzzy", "startsWith", "startsWithPerm".`);
78
75
  fm = 'fuzzy';
79
76
  }
80
77
  this._opts.filterMethod = fm;
@@ -1 +1 @@
1
- {"version":3,"file":"vscode-select-base.js","sourceRoot":"","sources":["../../../src/includes/vscode-select/vscode-select-base.ts"],"names":[],"mappings":"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","sourcesContent":["import {html, render, nothing, TemplateResult, PropertyValues} from 'lit';\nimport {property, query, queryAssignedElements, state} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport {ifDefined} from 'lit/directives/if-defined.js';\nimport {repeat} from 'lit/directives/repeat.js';\nimport {when} from 'lit/directives/when.js';\nimport '../../vscode-button/index.js';\nimport '../../vscode-option/index.js';\nimport {VscodeOption} from '../../vscode-option/index.js';\nimport {stylePropertyMap} from '../style-property-map.js';\nimport {VscElement} from '../VscElement.js';\nimport {filterOptionsByPattern, highlightRanges} from './helpers.js';\nimport type {InternalOption, Option, FilterMethod} from './types.js';\nimport {OptionListController} from './OptionListController.js';\nimport {checkIcon} from './template-elements.js';\nimport '../../vscode-scrollable/vscode-scrollable.js';\n\nexport const VISIBLE_OPTS = 10;\nexport const OPT_HEIGHT = 22;\n\nexport class VscodeSelectBase extends VscElement {\n @property({type: Boolean, reflect: true})\n creatable = false;\n\n /**\n * Options can be filtered by typing into a text input field.\n */\n @property({type: Boolean, reflect: true})\n set combobox(enabled: boolean) {\n this._opts.comboboxMode = enabled;\n }\n get combobox() {\n return this._opts.comboboxMode;\n }\n\n /**\n * Accessible label for screen readers. When a `<vscode-label>` is connected\n * to the component, it will be filled automatically.\n */\n @property({reflect: true})\n label = '';\n\n /**\n * The element cannot be used and is not focusable.\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: FilterMethod[] = [\n 'contains',\n 'fuzzy',\n 'startsWith',\n 'startsWithPerTerm',\n ];\n\n let fm: FilterMethod;\n\n if (validValues.includes(val as FilterMethod)) {\n // this._filter = val as FilterMethod;\n fm = val;\n } else {\n // this._filter = 'fuzzy';\n // eslint-disable-next-line no-console\n console.warn(\n `[VSCode Webview Elements] Invalid filter: \"${val}\", fallback to default. Valid values are: \"contains\", \"fuzzy\", \"startsWith\", \"startsWithPerm\".`,\n this\n );\n fm = 'fuzzy';\n }\n\n this._opts.filterMethod = fm;\n }\n get filter(): 'contains' | 'fuzzy' | 'startsWith' | 'startsWithPerTerm' {\n return this._opts.filterMethod;\n }\n\n /**\n * Its value is true when element is focused.\n */\n @property({type: Boolean, reflect: true})\n focused = false;\n\n /**\n * Toggle the dropdown visibility.\n */\n @property({type: Boolean, reflect: true})\n open = false;\n\n /**\n * @attr [options=[]]\n * @type {Option[]}\n */\n @property({type: Array})\n set options(opts: Option[]) {\n this._opts.populate(opts);\n }\n get options(): Option[] {\n return this._opts.options.map(\n ({label, value, description, selected, disabled}) => ({\n label,\n value,\n description,\n selected,\n disabled,\n })\n );\n }\n\n /**\n * Position of the options list when visible.\n */\n @property({reflect: true})\n position: 'above' | 'below' = 'below';\n\n @queryAssignedElements({\n flatten: true,\n selector: 'vscode-option',\n })\n private _assignedOptions!: VscodeOption[];\n\n @query('.dropdown', true)\n private _dropdownEl!: HTMLDivElement;\n\n private _prevXPos = 0;\n private _prevYPos = 0;\n\n protected _opts = new OptionListController(this);\n\n //#region lifecycle callbacks\n\n constructor() {\n super();\n this.addEventListener('vsc-option-state-change', (ev) => {\n ev.stopPropagation();\n this._setStateFromSlottedElements();\n this.requestUpdate();\n });\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.addEventListener('keydown', this._onComponentKeyDown);\n this.addEventListener('focus', this._onComponentFocus);\n this.addEventListener('blur', this._onComponentBlur);\n this._setAutoFocus();\n }\n\n override 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 protected _firstUpdateCompleted = false;\n\n protected override firstUpdated(_changedProperties: PropertyValues): void {\n this._firstUpdateCompleted = true;\n }\n\n protected override willUpdate(changedProperties: PropertyValues): void {\n if (changedProperties.has('required') && this._firstUpdateCompleted) {\n this._manageRequired();\n }\n\n if (changedProperties.has('open') && this._firstUpdateCompleted) {\n if (this.open) {\n this._dropdownEl.showPopover();\n\n const {x, y} = this.getBoundingClientRect();\n this._prevXPos = x;\n this._prevYPos = y;\n\n window.addEventListener('scroll', this._handleWindowScroll, {\n capture: true,\n });\n\n this._opts.activateDefault();\n this._scrollActiveElementToTop();\n } else {\n this._dropdownEl.hidePopover();\n\n window.removeEventListener('scroll', this._handleWindowScroll);\n }\n }\n }\n\n //#endregion\n\n @state()\n protected _currentDescription = '';\n\n @state()\n protected _filter: FilterMethod = 'fuzzy';\n\n @state()\n protected get _filteredOptions(): InternalOption[] {\n if (!this.combobox || this._opts.filterPattern === '') {\n return this._options;\n }\n\n return filterOptionsByPattern(\n this._options,\n this._opts.filterPattern,\n this._filter\n );\n }\n\n @state()\n protected _selectedIndexes: number[] = [];\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 _isPlaceholderOptionActive = false;\n\n @state()\n protected _isBeingFiltered = false;\n\n @state()\n protected _optionListScrollPos = 0;\n\n private _isHoverForbidden = false;\n private _disabled = false;\n private _originalTabIndex: number | undefined = undefined;\n\n private _setAutoFocus() {\n if (this.hasAttribute('autofocus')) {\n if (this.tabIndex < 0) {\n this.tabIndex = 0;\n }\n\n if (this.combobox) {\n this.updateComplete.then(() => {\n this.shadowRoot\n ?.querySelector<HTMLInputElement>('.combobox-input')!\n .focus();\n });\n } else {\n this.updateComplete.then(() => {\n this.shadowRoot\n ?.querySelector<HTMLInputElement>('.select-face')!\n .focus();\n });\n }\n }\n }\n\n protected get _isSuggestedOptionVisible() {\n if (!(this.combobox && this.creatable)) {\n return false;\n }\n\n const filterPatternExistsAsOption =\n this._opts.getOptionByValue(this._opts.filterPattern) !== null;\n const filtered = this._opts.filterPattern.length > 0;\n return !filterPatternExistsAsOption && filtered;\n }\n\n protected _manageRequired() {}\n\n protected _setStateFromSlottedElements() {\n const optionElements = this._assignedOptions ?? [];\n this._opts.clear();\n\n optionElements.forEach((el) => {\n const {innerText, description, disabled} = el;\n const value = typeof el.value === 'string' ? el.value : innerText.trim();\n const selected = el.selected ?? false;\n const op: Option = {\n label: innerText.trim(),\n value,\n description,\n selected,\n disabled,\n };\n\n this._opts.add(op);\n });\n }\n\n protected _createSuggestedOption() {\n const nextSelectedIndex = this._opts.numOptions;\n const op = document.createElement('vscode-option');\n op.value = this._opts.filterPattern;\n render(this._opts.filterPattern, op);\n this.appendChild(op);\n\n return nextSelectedIndex;\n }\n\n protected _dispatchChangeEvent(): void {\n this.dispatchEvent(new Event('change'));\n this.dispatchEvent(new Event('input'));\n }\n\n protected async _createAndSelectSuggestedOption() {}\n\n protected _toggleComboboxDropdown() {\n this._opts.filterPattern = '';\n this.open = !this.open;\n }\n\n protected _scrollActiveElementToTop() {\n this._optionListScrollPos = Math.floor(\n this._opts.relativeActiveIndex * OPT_HEIGHT\n );\n }\n\n private async _adjustOptionListScrollPos(\n direction: 'down' | 'up',\n optionIndex: number\n ) {\n let numOpts = this._opts.numOfVisibleOptions;\n const suggestedOptionVisible = this._isSuggestedOptionVisible;\n\n if (suggestedOptionVisible) {\n numOpts += 1;\n }\n\n if (numOpts <= VISIBLE_OPTS) {\n return;\n }\n\n this._isHoverForbidden = true;\n window.addEventListener('mousemove', this._onMouseMove);\n\n const ulScrollTop = this._optionListScrollPos;\n const liPosY = optionIndex * OPT_HEIGHT;\n\n const fullyVisible =\n liPosY >= ulScrollTop &&\n liPosY <= ulScrollTop + VISIBLE_OPTS * OPT_HEIGHT - OPT_HEIGHT;\n\n if (direction === 'down') {\n if (!fullyVisible) {\n this._optionListScrollPos =\n optionIndex * OPT_HEIGHT - (VISIBLE_OPTS - 1) * OPT_HEIGHT;\n }\n }\n\n if (direction === 'up') {\n if (!fullyVisible) {\n this._optionListScrollPos = Math.floor(\n this._opts.relativeActiveIndex * OPT_HEIGHT\n );\n }\n }\n }\n\n //#region event handlers\n protected _onFaceClick(): void {\n this.open = !this.open;\n }\n\n private _handleDropdownToggle(event: ToggleEvent) {\n this.open = event.newState === 'open';\n }\n\n private _onMouseMove = () => {\n this._isHoverForbidden = false;\n window.removeEventListener('mousemove', this._onMouseMove);\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 private _onOptionListScroll = (ev: CustomEvent<number>) => {\n this._optionListScrollPos = ev.detail;\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 if (el.matches('.placeholder')) {\n this._isPlaceholderOptionActive = true;\n this._opts.activeIndex = -1;\n } else {\n this._isPlaceholderOptionActive = false;\n this._opts.activeIndex = +el.dataset.index!;\n }\n }\n\n protected _onPlaceholderOptionMouseOut() {\n this._isPlaceholderOptionActive = false;\n }\n\n protected _onNoOptionsClick(ev: MouseEvent) {\n ev.stopPropagation();\n }\n\n protected _onEnterKeyDown(ev: KeyboardEvent): void {\n this._isBeingFiltered = false;\n const clickedOnAcceptButton = ev?.composedPath\n ? ev\n .composedPath()\n .find((el) =>\n (el as HTMLElement).matches\n ? (el as HTMLElement).matches('vscode-button.button-accept')\n : false\n )\n : false;\n\n if (clickedOnAcceptButton) {\n return;\n }\n }\n\n private _onSpaceKeyDown() {\n if (!this.open) {\n this.open = true;\n return;\n }\n }\n\n protected _onArrowUpKeyDown(): void {\n if (this.open) {\n if (this._opts.activeIndex <= 0 && !(this.combobox && this.creatable)) {\n return;\n }\n\n if (this._isPlaceholderOptionActive) {\n const optionIndex = this._opts.numOfVisibleOptions - 1;\n this._opts.activeIndex = optionIndex;\n this._isPlaceholderOptionActive = false;\n } else {\n const prevOp = this._opts.prev();\n\n if (prevOp !== null) {\n this._opts.activeIndex = prevOp?.index ?? -1;\n const prevSelectableIndex = prevOp?.filteredIndex ?? -1;\n\n if (prevSelectableIndex > -1) {\n this._adjustOptionListScrollPos('up', prevSelectableIndex);\n }\n }\n }\n } else {\n this.open = true;\n this._opts.activateDefault();\n }\n }\n\n protected _onArrowDownKeyDown(): void {\n let numOpts = this._opts.numOfVisibleOptions;\n const suggestedOptionVisible = this._isSuggestedOptionVisible;\n\n if (suggestedOptionVisible) {\n numOpts += 1;\n }\n\n if (this.open) {\n if (this._isPlaceholderOptionActive && this._opts.activeIndex === -1) {\n return;\n }\n\n const nextOp = this._opts.next();\n\n if (suggestedOptionVisible && nextOp === null) {\n this._isPlaceholderOptionActive = true;\n this._adjustOptionListScrollPos('down', numOpts - 1);\n this._opts.activeIndex = -1;\n } else if (nextOp !== null) {\n const nextSelectableIndex = nextOp?.filteredIndex ?? -1;\n this._opts.activeIndex = nextOp?.index ?? -1;\n\n if (nextSelectableIndex > -1) {\n this._adjustOptionListScrollPos('down', nextSelectableIndex);\n }\n }\n } else {\n this.open = true;\n this._opts.activateDefault();\n }\n }\n\n private _onEscapeKeyDown() {\n this.open = false;\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(event);\n }\n\n if (event.key === ' ') {\n this._onSpaceKeyDown();\n }\n\n if (event.key === 'Escape') {\n this._onEscapeKeyDown();\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 this._setStateFromSlottedElements();\n this.requestUpdate();\n }\n\n protected _onComboboxInputFocus(ev: FocusEvent): void {\n (ev.target as HTMLInputElement).select();\n this._isBeingFiltered = false;\n this._opts.filterPattern = '';\n }\n\n protected _onComboboxInputBlur() {\n this._isBeingFiltered = false;\n }\n\n protected _onComboboxInputInput(ev: InputEvent): void {\n this._isBeingFiltered = true;\n this._opts.filterPattern = (ev.target as HTMLInputElement).value;\n this._opts.activeIndex = -1;\n this.open = true;\n }\n\n protected _onComboboxInputClick(): void {\n this._isBeingFiltered = this._opts.filterPattern !== '';\n this.open = true;\n }\n\n protected _onComboboxInputSpaceKeyDown(ev: KeyboardEvent) {\n if (ev.key === ' ') {\n ev.stopPropagation();\n }\n }\n\n protected _onOptionClick(_ev: MouseEvent) {\n this._isBeingFiltered = false;\n return;\n }\n\n private _handleWindowScroll = () => {\n const {x, y} = this.getBoundingClientRect();\n\n if (x !== this._prevXPos || y !== this._prevYPos) {\n this.open = false;\n }\n };\n //#endregion\n\n //#region render functions\n private _renderCheckbox(\n checked: boolean,\n label: string | TemplateResult | TemplateResult[]\n ) {\n const checkboxClasses = {\n 'checkbox-icon': true,\n checked,\n };\n\n return html`<span class=${classMap(checkboxClasses)}>${checkIcon}</span\n ><span class=\"option-label\">${label}</span>`;\n }\n\n protected _renderOptions(): TemplateResult | TemplateResult[] {\n const list = this._opts.options;\n\n return html`\n <ul\n aria-label=${ifDefined(this.label ?? undefined)}\n aria-multiselectable=${ifDefined(\n this._opts.multiSelect ? 'true' : undefined\n )}\n class=\"options\"\n id=\"select-listbox\"\n role=\"listbox\"\n tabindex=\"-1\"\n @click=${this._onOptionClick}\n @mouseover=${this._onOptionMouseOver}\n >\n ${repeat(\n list,\n (op) => op.index,\n (op, index) => {\n if (!op.visible) {\n return nothing;\n }\n\n const active = op.index === this._opts.activeIndex && !op.disabled;\n const selected = this._opts.getIsIndexSelected(op.index);\n\n const optionClasses = {\n active,\n disabled: op.disabled,\n option: true,\n 'single-select': !this._opts.multiSelect,\n 'multi-select': this._opts.multiSelect,\n selected,\n };\n\n const labelText =\n (op.ranges?.length ?? 0 > 0)\n ? highlightRanges(op.label, op.ranges ?? [])\n : op.label;\n\n return html`\n <li\n aria-selected=${selected ? 'true' : 'false'}\n class=${classMap(optionClasses)}\n data-index=${op.index}\n data-filtered-index=${index}\n id=${`op-${op.index}`}\n role=\"option\"\n tabindex=\"-1\"\n >\n ${when(\n this._opts.multiSelect,\n () => this._renderCheckbox(selected, labelText),\n () => labelText\n )}\n </li>\n `;\n }\n )}\n ${this._renderPlaceholderOption(this._opts.numOfVisibleOptions < 1)}\n </ul>\n `;\n }\n\n protected _renderPlaceholderOption(isListEmpty: boolean) {\n if (!this.combobox) {\n return nothing;\n }\n\n const foundOption = this._opts.getOptionByLabel(this._opts.filterPattern);\n\n if (foundOption) {\n return nothing;\n }\n\n if (this.creatable && this._opts.filterPattern.length > 0) {\n return html`<li\n class=${classMap({\n option: true,\n placeholder: true,\n active: this._isPlaceholderOptionActive,\n })}\n @mouseout=${this._onPlaceholderOptionMouseOut}\n >\n Add \"${this._opts.filterPattern}\"\n </li>`;\n } else {\n return isListEmpty\n ? html`<li class=\"no-options\" @click=${this._onNoOptionsClick}>\n No options\n </li>`\n : nothing;\n }\n }\n\n private _renderDescription() {\n const op = this._opts.getActiveOption();\n\n if (!op) {\n return nothing;\n }\n\n const {description} = op;\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 protected _renderDropdown() {\n const classes = {\n dropdown: true,\n multiple: this._opts.multiSelect,\n open: this.open,\n };\n\n const visibleOptions =\n this._isSuggestedOptionVisible || this._opts.numOfVisibleOptions === 0\n ? this._opts.numOfVisibleOptions + 1\n : this._opts.numOfVisibleOptions;\n\n const scrollPaneHeight = Math.min(\n visibleOptions * OPT_HEIGHT,\n VISIBLE_OPTS * OPT_HEIGHT\n );\n\n const cr = this.getBoundingClientRect();\n\n const dropdownStyles: Partial<CSSStyleDeclaration> = {\n width: `${cr.width}px`,\n left: `${cr.left}px`,\n top: this.position === 'below' ? `${cr.top + cr.height}px` : 'unset',\n bottom:\n this.position === 'below'\n ? 'unset'\n : `${document.documentElement.clientHeight - cr.top}px`,\n };\n\n return html`\n <div\n class=${classMap(classes)}\n popover=\"auto\"\n @toggle=${this._handleDropdownToggle}\n .style=${stylePropertyMap(dropdownStyles)}\n >\n ${this.position === 'above' ? this._renderDescription() : nothing}\n <vscode-scrollable\n always-visible\n class=\"scrollable\"\n min-thumb-size=\"40\"\n tabindex=\"-1\"\n @vsc-scrollable-scroll=${this._onOptionListScroll}\n .scrollPos=${this._optionListScrollPos}\n .style=${stylePropertyMap({\n height: `${scrollPaneHeight}px`,\n })}\n >\n ${this._renderOptions()} ${this._renderDropdownControls()}\n </vscode-scrollable>\n ${this.position === 'below' ? this._renderDescription() : nothing}\n </div>\n `;\n }\n //#endregion\n}\n"]}
1
+ {"version":3,"file":"vscode-select-base.js","sourceRoot":"","sources":["../../../src/includes/vscode-select/vscode-select-base.ts"],"names":[],"mappings":"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","sourcesContent":["import {html, render, nothing, TemplateResult, PropertyValues} from 'lit';\nimport {property, query, queryAssignedElements, state} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport {ifDefined} from 'lit/directives/if-defined.js';\nimport {repeat} from 'lit/directives/repeat.js';\nimport {when} from 'lit/directives/when.js';\nimport '../../vscode-button/index.js';\nimport '../../vscode-option/index.js';\nimport {VscodeOption} from '../../vscode-option/index.js';\nimport {stylePropertyMap} from '../style-property-map.js';\nimport {VscElement} from '../VscElement.js';\nimport {filterOptionsByPattern, highlightRanges} from './helpers.js';\nimport type {InternalOption, Option, FilterMethod} from './types.js';\nimport {OptionListController} from './OptionListController.js';\nimport {checkIcon} from './template-elements.js';\nimport '../../vscode-scrollable/vscode-scrollable.js';\n\nexport const VISIBLE_OPTS = 10;\nexport const OPT_HEIGHT = 22;\n\nexport class VscodeSelectBase extends VscElement {\n @property({type: Boolean, reflect: true})\n creatable = false;\n\n /**\n * Options can be filtered by typing into a text input field.\n */\n @property({type: Boolean, reflect: true})\n set combobox(enabled: boolean) {\n this._opts.comboboxMode = enabled;\n }\n get combobox() {\n return this._opts.comboboxMode;\n }\n\n /**\n * Accessible label for screen readers. When a `<vscode-label>` is connected\n * to the component, it will be filled automatically.\n */\n @property({reflect: true})\n label = '';\n\n /**\n * The element cannot be used and is not focusable.\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: FilterMethod[] = [\n 'contains',\n 'fuzzy',\n 'startsWith',\n 'startsWithPerTerm',\n ];\n\n let fm: FilterMethod;\n\n if (validValues.includes(val as FilterMethod)) {\n fm = val;\n } else {\n this.warn(\n `Invalid filter: \"${val}\", fallback to default. Valid values are: \"contains\", \"fuzzy\", \"startsWith\", \"startsWithPerm\".`\n );\n fm = 'fuzzy';\n }\n\n this._opts.filterMethod = fm;\n }\n get filter(): 'contains' | 'fuzzy' | 'startsWith' | 'startsWithPerTerm' {\n return this._opts.filterMethod;\n }\n\n /**\n * Its value is true when element is focused.\n */\n @property({type: Boolean, reflect: true})\n focused = false;\n\n /**\n * Toggle the dropdown visibility.\n */\n @property({type: Boolean, reflect: true})\n open = false;\n\n /**\n * @attr [options=[]]\n * @type {Option[]}\n */\n @property({type: Array})\n set options(opts: Option[]) {\n this._opts.populate(opts);\n }\n get options(): Option[] {\n return this._opts.options.map(\n ({label, value, description, selected, disabled}) => ({\n label,\n value,\n description,\n selected,\n disabled,\n })\n );\n }\n\n /**\n * Position of the options list when visible.\n */\n @property({reflect: true})\n position: 'above' | 'below' = 'below';\n\n @queryAssignedElements({\n flatten: true,\n selector: 'vscode-option',\n })\n private _assignedOptions!: VscodeOption[];\n\n @query('.dropdown', true)\n private _dropdownEl!: HTMLDivElement;\n\n private _prevXPos = 0;\n private _prevYPos = 0;\n\n protected _opts = new OptionListController(this);\n\n //#region lifecycle callbacks\n\n constructor() {\n super();\n this.addEventListener('vsc-option-state-change', (ev) => {\n ev.stopPropagation();\n this._setStateFromSlottedElements();\n this.requestUpdate();\n });\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.addEventListener('keydown', this._onComponentKeyDown);\n this.addEventListener('focus', this._onComponentFocus);\n this.addEventListener('blur', this._onComponentBlur);\n this._setAutoFocus();\n }\n\n override 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 protected _firstUpdateCompleted = false;\n\n protected override firstUpdated(_changedProperties: PropertyValues): void {\n this._firstUpdateCompleted = true;\n }\n\n protected override willUpdate(changedProperties: PropertyValues): void {\n if (changedProperties.has('required') && this._firstUpdateCompleted) {\n this._manageRequired();\n }\n\n if (changedProperties.has('open') && this._firstUpdateCompleted) {\n if (this.open) {\n this._dropdownEl.showPopover();\n\n const {x, y} = this.getBoundingClientRect();\n this._prevXPos = x;\n this._prevYPos = y;\n\n window.addEventListener('scroll', this._handleWindowScroll, {\n capture: true,\n });\n\n this._opts.activateDefault();\n this._scrollActiveElementToTop();\n } else {\n this._dropdownEl.hidePopover();\n\n window.removeEventListener('scroll', this._handleWindowScroll);\n }\n }\n }\n\n //#endregion\n\n @state()\n protected _currentDescription = '';\n\n @state()\n protected _filter: FilterMethod = 'fuzzy';\n\n @state()\n protected get _filteredOptions(): InternalOption[] {\n if (!this.combobox || this._opts.filterPattern === '') {\n return this._options;\n }\n\n return filterOptionsByPattern(\n this._options,\n this._opts.filterPattern,\n this._filter\n );\n }\n\n @state()\n protected _selectedIndexes: number[] = [];\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 _isPlaceholderOptionActive = false;\n\n @state()\n protected _isBeingFiltered = false;\n\n @state()\n protected _optionListScrollPos = 0;\n\n private _isHoverForbidden = false;\n private _disabled = false;\n private _originalTabIndex: number | undefined = undefined;\n\n private _setAutoFocus() {\n if (this.hasAttribute('autofocus')) {\n if (this.tabIndex < 0) {\n this.tabIndex = 0;\n }\n\n if (this.combobox) {\n this.updateComplete.then(() => {\n this.shadowRoot\n ?.querySelector<HTMLInputElement>('.combobox-input')!\n .focus();\n });\n } else {\n this.updateComplete.then(() => {\n this.shadowRoot\n ?.querySelector<HTMLInputElement>('.select-face')!\n .focus();\n });\n }\n }\n }\n\n protected get _isSuggestedOptionVisible() {\n if (!(this.combobox && this.creatable)) {\n return false;\n }\n\n const filterPatternExistsAsOption =\n this._opts.getOptionByValue(this._opts.filterPattern) !== null;\n const filtered = this._opts.filterPattern.length > 0;\n return !filterPatternExistsAsOption && filtered;\n }\n\n protected _manageRequired() {}\n\n protected _setStateFromSlottedElements() {\n const optionElements = this._assignedOptions ?? [];\n this._opts.clear();\n\n optionElements.forEach((el) => {\n const {innerText, description, disabled} = el;\n const value = typeof el.value === 'string' ? el.value : innerText.trim();\n const selected = el.selected ?? false;\n const op: Option = {\n label: innerText.trim(),\n value,\n description,\n selected,\n disabled,\n };\n\n this._opts.add(op);\n });\n }\n\n protected _createSuggestedOption() {\n const nextSelectedIndex = this._opts.numOptions;\n const op = document.createElement('vscode-option');\n op.value = this._opts.filterPattern;\n render(this._opts.filterPattern, op);\n this.appendChild(op);\n\n return nextSelectedIndex;\n }\n\n protected _dispatchChangeEvent(): void {\n this.dispatchEvent(new Event('change'));\n this.dispatchEvent(new Event('input'));\n }\n\n protected async _createAndSelectSuggestedOption() {}\n\n protected _toggleComboboxDropdown() {\n this._opts.filterPattern = '';\n this.open = !this.open;\n }\n\n protected _scrollActiveElementToTop() {\n this._optionListScrollPos = Math.floor(\n this._opts.relativeActiveIndex * OPT_HEIGHT\n );\n }\n\n private async _adjustOptionListScrollPos(\n direction: 'down' | 'up',\n optionIndex: number\n ) {\n let numOpts = this._opts.numOfVisibleOptions;\n const suggestedOptionVisible = this._isSuggestedOptionVisible;\n\n if (suggestedOptionVisible) {\n numOpts += 1;\n }\n\n if (numOpts <= VISIBLE_OPTS) {\n return;\n }\n\n this._isHoverForbidden = true;\n window.addEventListener('mousemove', this._onMouseMove);\n\n const ulScrollTop = this._optionListScrollPos;\n const liPosY = optionIndex * OPT_HEIGHT;\n\n const fullyVisible =\n liPosY >= ulScrollTop &&\n liPosY <= ulScrollTop + VISIBLE_OPTS * OPT_HEIGHT - OPT_HEIGHT;\n\n if (direction === 'down') {\n if (!fullyVisible) {\n this._optionListScrollPos =\n optionIndex * OPT_HEIGHT - (VISIBLE_OPTS - 1) * OPT_HEIGHT;\n }\n }\n\n if (direction === 'up') {\n if (!fullyVisible) {\n this._optionListScrollPos = Math.floor(\n this._opts.relativeActiveIndex * OPT_HEIGHT\n );\n }\n }\n }\n\n //#region event handlers\n protected _onFaceClick(): void {\n this.open = !this.open;\n }\n\n private _handleDropdownToggle(event: ToggleEvent) {\n this.open = event.newState === 'open';\n }\n\n private _onMouseMove = () => {\n this._isHoverForbidden = false;\n window.removeEventListener('mousemove', this._onMouseMove);\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 private _onOptionListScroll = (ev: CustomEvent<number>) => {\n this._optionListScrollPos = ev.detail;\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 if (el.matches('.placeholder')) {\n this._isPlaceholderOptionActive = true;\n this._opts.activeIndex = -1;\n } else {\n this._isPlaceholderOptionActive = false;\n this._opts.activeIndex = +el.dataset.index!;\n }\n }\n\n protected _onPlaceholderOptionMouseOut() {\n this._isPlaceholderOptionActive = false;\n }\n\n protected _onNoOptionsClick(ev: MouseEvent) {\n ev.stopPropagation();\n }\n\n protected _onEnterKeyDown(ev: KeyboardEvent): void {\n this._isBeingFiltered = false;\n const clickedOnAcceptButton = ev?.composedPath\n ? ev\n .composedPath()\n .find((el) =>\n (el as HTMLElement).matches\n ? (el as HTMLElement).matches('vscode-button.button-accept')\n : false\n )\n : false;\n\n if (clickedOnAcceptButton) {\n return;\n }\n }\n\n private _onSpaceKeyDown() {\n if (!this.open) {\n this.open = true;\n return;\n }\n }\n\n protected _onArrowUpKeyDown(): void {\n if (this.open) {\n if (this._opts.activeIndex <= 0 && !(this.combobox && this.creatable)) {\n return;\n }\n\n if (this._isPlaceholderOptionActive) {\n const optionIndex = this._opts.numOfVisibleOptions - 1;\n this._opts.activeIndex = optionIndex;\n this._isPlaceholderOptionActive = false;\n } else {\n const prevOp = this._opts.prev();\n\n if (prevOp !== null) {\n this._opts.activeIndex = prevOp?.index ?? -1;\n const prevSelectableIndex = prevOp?.filteredIndex ?? -1;\n\n if (prevSelectableIndex > -1) {\n this._adjustOptionListScrollPos('up', prevSelectableIndex);\n }\n }\n }\n } else {\n this.open = true;\n this._opts.activateDefault();\n }\n }\n\n protected _onArrowDownKeyDown(): void {\n let numOpts = this._opts.numOfVisibleOptions;\n const suggestedOptionVisible = this._isSuggestedOptionVisible;\n\n if (suggestedOptionVisible) {\n numOpts += 1;\n }\n\n if (this.open) {\n if (this._isPlaceholderOptionActive && this._opts.activeIndex === -1) {\n return;\n }\n\n const nextOp = this._opts.next();\n\n if (suggestedOptionVisible && nextOp === null) {\n this._isPlaceholderOptionActive = true;\n this._adjustOptionListScrollPos('down', numOpts - 1);\n this._opts.activeIndex = -1;\n } else if (nextOp !== null) {\n const nextSelectableIndex = nextOp?.filteredIndex ?? -1;\n this._opts.activeIndex = nextOp?.index ?? -1;\n\n if (nextSelectableIndex > -1) {\n this._adjustOptionListScrollPos('down', nextSelectableIndex);\n }\n }\n } else {\n this.open = true;\n this._opts.activateDefault();\n }\n }\n\n private _onEscapeKeyDown() {\n this.open = false;\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(event);\n }\n\n if (event.key === ' ') {\n this._onSpaceKeyDown();\n }\n\n if (event.key === 'Escape') {\n this._onEscapeKeyDown();\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 this._setStateFromSlottedElements();\n this.requestUpdate();\n }\n\n protected _onComboboxInputFocus(ev: FocusEvent): void {\n (ev.target as HTMLInputElement).select();\n this._isBeingFiltered = false;\n this._opts.filterPattern = '';\n }\n\n protected _onComboboxInputBlur() {\n this._isBeingFiltered = false;\n }\n\n protected _onComboboxInputInput(ev: InputEvent): void {\n this._isBeingFiltered = true;\n this._opts.filterPattern = (ev.target as HTMLInputElement).value;\n this._opts.activeIndex = -1;\n this.open = true;\n }\n\n protected _onComboboxInputClick(): void {\n this._isBeingFiltered = this._opts.filterPattern !== '';\n this.open = true;\n }\n\n protected _onComboboxInputSpaceKeyDown(ev: KeyboardEvent) {\n if (ev.key === ' ') {\n ev.stopPropagation();\n }\n }\n\n protected _onOptionClick(_ev: MouseEvent) {\n this._isBeingFiltered = false;\n return;\n }\n\n private _handleWindowScroll = () => {\n const {x, y} = this.getBoundingClientRect();\n\n if (x !== this._prevXPos || y !== this._prevYPos) {\n this.open = false;\n }\n };\n //#endregion\n\n //#region render functions\n private _renderCheckbox(\n checked: boolean,\n label: string | TemplateResult | TemplateResult[]\n ) {\n const checkboxClasses = {\n 'checkbox-icon': true,\n checked,\n };\n\n return html`<span class=${classMap(checkboxClasses)}>${checkIcon}</span\n ><span class=\"option-label\">${label}</span>`;\n }\n\n protected _renderOptions(): TemplateResult | TemplateResult[] {\n const list = this._opts.options;\n\n return html`\n <ul\n aria-label=${ifDefined(this.label ?? undefined)}\n aria-multiselectable=${ifDefined(\n this._opts.multiSelect ? 'true' : undefined\n )}\n class=\"options\"\n id=\"select-listbox\"\n role=\"listbox\"\n tabindex=\"-1\"\n @click=${this._onOptionClick}\n @mouseover=${this._onOptionMouseOver}\n >\n ${repeat(\n list,\n (op) => op.index,\n (op, index) => {\n if (!op.visible) {\n return nothing;\n }\n\n const active = op.index === this._opts.activeIndex && !op.disabled;\n const selected = this._opts.getIsIndexSelected(op.index);\n\n const optionClasses = {\n active,\n disabled: op.disabled,\n option: true,\n 'single-select': !this._opts.multiSelect,\n 'multi-select': this._opts.multiSelect,\n selected,\n };\n\n const labelText =\n (op.ranges?.length ?? 0 > 0)\n ? highlightRanges(op.label, op.ranges ?? [])\n : op.label;\n\n return html`\n <li\n aria-selected=${selected ? 'true' : 'false'}\n class=${classMap(optionClasses)}\n data-index=${op.index}\n data-filtered-index=${index}\n id=${`op-${op.index}`}\n role=\"option\"\n tabindex=\"-1\"\n >\n ${when(\n this._opts.multiSelect,\n () => this._renderCheckbox(selected, labelText),\n () => labelText\n )}\n </li>\n `;\n }\n )}\n ${this._renderPlaceholderOption(this._opts.numOfVisibleOptions < 1)}\n </ul>\n `;\n }\n\n protected _renderPlaceholderOption(isListEmpty: boolean) {\n if (!this.combobox) {\n return nothing;\n }\n\n const foundOption = this._opts.getOptionByLabel(this._opts.filterPattern);\n\n if (foundOption) {\n return nothing;\n }\n\n if (this.creatable && this._opts.filterPattern.length > 0) {\n return html`<li\n class=${classMap({\n option: true,\n placeholder: true,\n active: this._isPlaceholderOptionActive,\n })}\n @mouseout=${this._onPlaceholderOptionMouseOut}\n >\n Add \"${this._opts.filterPattern}\"\n </li>`;\n } else {\n return isListEmpty\n ? html`<li class=\"no-options\" @click=${this._onNoOptionsClick}>\n No options\n </li>`\n : nothing;\n }\n }\n\n private _renderDescription() {\n const op = this._opts.getActiveOption();\n\n if (!op) {\n return nothing;\n }\n\n const {description} = op;\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 protected _renderDropdown() {\n const classes = {\n dropdown: true,\n multiple: this._opts.multiSelect,\n open: this.open,\n };\n\n const visibleOptions =\n this._isSuggestedOptionVisible || this._opts.numOfVisibleOptions === 0\n ? this._opts.numOfVisibleOptions + 1\n : this._opts.numOfVisibleOptions;\n\n const scrollPaneHeight = Math.min(\n visibleOptions * OPT_HEIGHT,\n VISIBLE_OPTS * OPT_HEIGHT\n );\n\n const cr = this.getBoundingClientRect();\n\n const dropdownStyles: Partial<CSSStyleDeclaration> = {\n width: `${cr.width}px`,\n left: `${cr.left}px`,\n top: this.position === 'below' ? `${cr.top + cr.height}px` : 'unset',\n bottom:\n this.position === 'below'\n ? 'unset'\n : `${document.documentElement.clientHeight - cr.top}px`,\n };\n\n return html`\n <div\n class=${classMap(classes)}\n popover=\"auto\"\n @toggle=${this._handleDropdownToggle}\n .style=${stylePropertyMap(dropdownStyles)}\n >\n ${this.position === 'above' ? this._renderDescription() : nothing}\n <vscode-scrollable\n always-visible\n class=\"scrollable\"\n min-thumb-size=\"40\"\n tabindex=\"-1\"\n @vsc-scrollable-scroll=${this._onOptionListScroll}\n .scrollPos=${this._optionListScrollPos}\n .style=${stylePropertyMap({\n height: `${scrollPaneHeight}px`,\n })}\n >\n ${this._renderOptions()} ${this._renderDropdownControls()}\n </vscode-scrollable>\n ${this.position === 'below' ? this._renderDescription() : nothing}\n </div>\n `;\n }\n //#endregion\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"vscode-icon.d.ts","sourceRoot":"","sources":["../../src/vscode-icon/vscode-icon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,cAAc,EAAC,MAAM,KAAK,CAAC;AAIzC,OAAO,EAAgB,UAAU,EAAC,MAAM,2BAA2B,CAAC;AAIpE;;;;;;;;;;;GAWG;AACH,qBACa,UAAW,SAAQ,UAAU;IACxC,OAAgB,MAAM,+BAAU;IAChC;;OAEG;IAEH,KAAK,SAAM;IAEX;;OAEG;IAEH,IAAI,SAAM;IAEV;;OAEG;IAEH,IAAI,SAAM;IAEV;;OAEG;IAEH,IAAI,UAAS;IAEb;;OAEG;IAEH,YAAY,SAAO;IAEnB;;OAEG;IAEH,UAAU,UAAS;IAEnB,OAAO,CAAC,MAAM,CAAC,cAAc,CAA0B;IAEvD,OAAO,CAAC,MAAM,CAAC,KAAK,CAA0B;IAErC,iBAAiB,IAAI,IAAI;IASlC;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAqB5B,OAAO,CAAC,cAAc,CAIpB;IAEO,MAAM,IAAI,cAAc;CAsClC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,aAAa,EAAE,UAAU,CAAC;KAC3B;CACF"}
1
+ {"version":3,"file":"vscode-icon.d.ts","sourceRoot":"","sources":["../../src/vscode-icon/vscode-icon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,cAAc,EAAC,MAAM,KAAK,CAAC;AAIzC,OAAO,EAAgB,UAAU,EAAC,MAAM,2BAA2B,CAAC;AAIpE;;;;;;;;;;;GAWG;AACH,qBACa,UAAW,SAAQ,UAAU;IACxC,OAAgB,MAAM,+BAAU;IAChC;;OAEG;IAEH,KAAK,SAAM;IAEX;;OAEG;IAEH,IAAI,SAAM;IAEV;;OAEG;IAEH,IAAI,SAAM;IAEV;;OAEG;IAEH,IAAI,UAAS;IAEb;;OAEG;IAEH,YAAY,SAAO;IAEnB;;OAEG;IAEH,UAAU,UAAS;IAEnB,OAAO,CAAC,MAAM,CAAC,cAAc,CAA0B;IAEvD,OAAO,CAAC,MAAM,CAAC,KAAK,CAA0B;IAErC,iBAAiB,IAAI,IAAI;IASlC;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAoB5B,OAAO,CAAC,cAAc,CAIpB;IAEO,MAAM,IAAI,cAAc;CAsClC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,aAAa,EAAE,UAAU,CAAC;KAC3B;CACF"}
@@ -72,11 +72,10 @@ let VscodeIcon = VscodeIcon_1 = class VscodeIcon extends VscElement {
72
72
  const href = linkElement?.getAttribute('href') || undefined;
73
73
  const nonce = linkElement?.nonce || undefined;
74
74
  if (!linkElement) {
75
- let msg = '[VSCode Elements] To use the Icon component, the codicons.css file must be included in the page with the id `vscode-codicon-stylesheet`! ';
75
+ let msg = 'To use the Icon component, the codicons.css file must be included in the page with the id "vscode-codicon-stylesheet"! ';
76
76
  msg +=
77
77
  'See https://vscode-elements.github.io/components/icon/ for more details.';
78
- // eslint-disable-next-line no-console
79
- console.warn(msg);
78
+ this.warn(msg);
80
79
  }
81
80
  return { nonce, href };
82
81
  }
@@ -1 +1 @@
1
- {"version":3,"file":"vscode-icon.js","sourceRoot":"","sources":["../../src/vscode-icon/vscode-icon.ts"],"names":[],"mappings":"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","sourcesContent":["import {html, TemplateResult} from 'lit';\nimport {property} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport {ifDefined} from 'lit/directives/if-defined.js';\nimport {customElement, VscElement} from '../includes/VscElement.js';\nimport {stylePropertyMap} from '../includes/style-property-map.js';\nimport styles from './vscode-icon.styles.js';\n\n/**\n * Display a [Codicon](https://microsoft.github.io/vscode-codicons/dist/codicon.html).\n * In \"action-icon\" mode it behaves like a button. In this case, it is\n * recommended that a meaningful label is specified with the `label` property.\n *\n * @tag vscode-icon\n *\n * @cssprop [--vscode-icon-foreground=#cccccc]\n * @cssprop [--vscode-toolbar-hoverBackground=rgba(90, 93, 94, 0.31)] - Hover state background color in `active-icon` mode\n * @cssprop [--vscode-toolbar-activeBackground=rgba(99, 102, 103, 0.31)] - Active state background color in `active-icon` mode\n * @cssprop [--vscode-focusBorder=#0078d4]\n */\n@customElement('vscode-icon')\nexport class VscodeIcon extends VscElement {\n static override styles = styles;\n /**\n * Set a meaningful label in `action-icon` mode for the screen readers\n */\n @property()\n label = '';\n\n /**\n * [Codicon](https://microsoft.github.io/vscode-codicons/dist/codicon.html) icon name.\n */\n @property({type: String})\n name = '';\n\n /**\n * Icon size in pixels\n */\n @property({type: Number})\n size = 16;\n\n /**\n * Enable rotation animation\n */\n @property({type: Boolean, reflect: true})\n spin = false;\n\n /**\n * Animation duration in seconds\n */\n @property({type: Number, attribute: 'spin-duration'})\n spinDuration = 1.5;\n\n /**\n * Behaves like a button\n */\n @property({type: Boolean, reflect: true, attribute: 'action-icon'})\n actionIcon = false;\n\n private static stylesheetHref: string | undefined = '';\n\n private static nonce: string | undefined = '';\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n const {href, nonce} = this._getStylesheetConfig();\n\n VscodeIcon.stylesheetHref = href;\n VscodeIcon.nonce = nonce;\n }\n\n /**\n * For using web fonts in web components, the font stylesheet must be included\n * twice: on the page and in the web component. This function looks for the\n * font stylesheet on the page and returns the stylesheet URL and the nonce\n * id.\n */\n private _getStylesheetConfig(): {\n href: string | undefined;\n nonce: string | undefined;\n } {\n const linkElement = document.getElementById('vscode-codicon-stylesheet');\n const href = linkElement?.getAttribute('href') || undefined;\n const nonce = linkElement?.nonce || undefined;\n\n if (!linkElement) {\n let msg =\n '[VSCode Elements] To use the Icon component, the codicons.css file must be included in the page with the id `vscode-codicon-stylesheet`! ';\n msg +=\n 'See https://vscode-elements.github.io/components/icon/ for more details.';\n\n // eslint-disable-next-line no-console\n console.warn(msg);\n }\n\n return {nonce, href};\n }\n\n private _onButtonClick = (ev: MouseEvent) => {\n this.dispatchEvent(\n new CustomEvent('vsc-click', {detail: {originalEvent: ev}})\n );\n };\n\n override render(): TemplateResult {\n const {stylesheetHref, nonce} = VscodeIcon;\n\n const content = html`<span\n class=${classMap({\n codicon: true,\n ['codicon-' + this.name]: true,\n spin: this.spin,\n })}\n .style=${stylePropertyMap({\n animationDuration: String(this.spinDuration) + 's',\n fontSize: this.size + 'px',\n height: this.size + 'px',\n width: this.size + 'px',\n })}\n ></span>`;\n\n const wrapped = this.actionIcon\n ? html` <button\n class=\"button\"\n @click=${this._onButtonClick}\n aria-label=${this.label}\n >\n ${content}\n </button>`\n : html` <span class=\"icon\" aria-hidden=\"true\" role=\"presentation\"\n >${content}</span\n >`;\n\n return html`\n <link\n rel=\"stylesheet\"\n href=${ifDefined(stylesheetHref)}\n nonce=${ifDefined(nonce)}\n >\n ${wrapped}\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'vscode-icon': VscodeIcon;\n }\n}\n"]}
1
+ {"version":3,"file":"vscode-icon.js","sourceRoot":"","sources":["../../src/vscode-icon/vscode-icon.ts"],"names":[],"mappings":"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","sourcesContent":["import {html, TemplateResult} from 'lit';\nimport {property} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport {ifDefined} from 'lit/directives/if-defined.js';\nimport {customElement, VscElement} from '../includes/VscElement.js';\nimport {stylePropertyMap} from '../includes/style-property-map.js';\nimport styles from './vscode-icon.styles.js';\n\n/**\n * Display a [Codicon](https://microsoft.github.io/vscode-codicons/dist/codicon.html).\n * In \"action-icon\" mode it behaves like a button. In this case, it is\n * recommended that a meaningful label is specified with the `label` property.\n *\n * @tag vscode-icon\n *\n * @cssprop [--vscode-icon-foreground=#cccccc]\n * @cssprop [--vscode-toolbar-hoverBackground=rgba(90, 93, 94, 0.31)] - Hover state background color in `active-icon` mode\n * @cssprop [--vscode-toolbar-activeBackground=rgba(99, 102, 103, 0.31)] - Active state background color in `active-icon` mode\n * @cssprop [--vscode-focusBorder=#0078d4]\n */\n@customElement('vscode-icon')\nexport class VscodeIcon extends VscElement {\n static override styles = styles;\n /**\n * Set a meaningful label in `action-icon` mode for the screen readers\n */\n @property()\n label = '';\n\n /**\n * [Codicon](https://microsoft.github.io/vscode-codicons/dist/codicon.html) icon name.\n */\n @property({type: String})\n name = '';\n\n /**\n * Icon size in pixels\n */\n @property({type: Number})\n size = 16;\n\n /**\n * Enable rotation animation\n */\n @property({type: Boolean, reflect: true})\n spin = false;\n\n /**\n * Animation duration in seconds\n */\n @property({type: Number, attribute: 'spin-duration'})\n spinDuration = 1.5;\n\n /**\n * Behaves like a button\n */\n @property({type: Boolean, reflect: true, attribute: 'action-icon'})\n actionIcon = false;\n\n private static stylesheetHref: string | undefined = '';\n\n private static nonce: string | undefined = '';\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n const {href, nonce} = this._getStylesheetConfig();\n\n VscodeIcon.stylesheetHref = href;\n VscodeIcon.nonce = nonce;\n }\n\n /**\n * For using web fonts in web components, the font stylesheet must be included\n * twice: on the page and in the web component. This function looks for the\n * font stylesheet on the page and returns the stylesheet URL and the nonce\n * id.\n */\n private _getStylesheetConfig(): {\n href: string | undefined;\n nonce: string | undefined;\n } {\n const linkElement = document.getElementById('vscode-codicon-stylesheet');\n const href = linkElement?.getAttribute('href') || undefined;\n const nonce = linkElement?.nonce || undefined;\n\n if (!linkElement) {\n let msg =\n 'To use the Icon component, the codicons.css file must be included in the page with the id \"vscode-codicon-stylesheet\"! ';\n msg +=\n 'See https://vscode-elements.github.io/components/icon/ for more details.';\n\n this.warn(msg);\n }\n\n return {nonce, href};\n }\n\n private _onButtonClick = (ev: MouseEvent) => {\n this.dispatchEvent(\n new CustomEvent('vsc-click', {detail: {originalEvent: ev}})\n );\n };\n\n override render(): TemplateResult {\n const {stylesheetHref, nonce} = VscodeIcon;\n\n const content = html`<span\n class=${classMap({\n codicon: true,\n ['codicon-' + this.name]: true,\n spin: this.spin,\n })}\n .style=${stylePropertyMap({\n animationDuration: String(this.spinDuration) + 's',\n fontSize: this.size + 'px',\n height: this.size + 'px',\n width: this.size + 'px',\n })}\n ></span>`;\n\n const wrapped = this.actionIcon\n ? html` <button\n class=\"button\"\n @click=${this._onButtonClick}\n aria-label=${this.label}\n >\n ${content}\n </button>`\n : html` <span class=\"icon\" aria-hidden=\"true\" role=\"presentation\"\n >${content}</span\n >`;\n\n return html`\n <link\n rel=\"stylesheet\"\n href=${ifDefined(stylesheetHref)}\n nonce=${ifDefined(nonce)}\n >\n ${wrapped}\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'vscode-icon': VscodeIcon;\n }\n}\n"]}
@@ -0,0 +1,37 @@
1
+ import { ReactiveController } from 'lit';
2
+ import { type VscodeTable } from './vscode-table.js';
3
+ import { Percent, Px } from './calculations.js';
4
+ type SplitterElement = HTMLDivElement & {
5
+ dataset: DOMStringMap & {
6
+ index: string;
7
+ };
8
+ };
9
+ export declare class ColumnResizeController implements ReactiveController {
10
+ private _host;
11
+ private _hostWidth;
12
+ private _hostX;
13
+ private _activeSplitter;
14
+ private _minColumnWidth;
15
+ private _columnWidths;
16
+ private _dragState;
17
+ private _cachedSplitterPositions;
18
+ constructor(host: VscodeTable);
19
+ hostConnected(): void;
20
+ get isDragging(): boolean;
21
+ get splitterPositions(): Percent[];
22
+ getActiveSplitterCalculatedPosition(): Px;
23
+ get columnWidths(): Percent[];
24
+ saveHostDimensions(): this;
25
+ setActiveSplitter(splitter: HTMLElement): this;
26
+ getActiveSplitter(): SplitterElement | null;
27
+ setMinColumnWidth(width: Percent): this;
28
+ setColumWidths(widths: Percent[]): this;
29
+ shouldDrag(event: PointerEvent): boolean;
30
+ startDrag(event: PointerEvent): void;
31
+ drag(event: PointerEvent): void;
32
+ stopDrag(event: PointerEvent): void;
33
+ private _toPercent;
34
+ private _toPx;
35
+ }
36
+ export {};
37
+ //# sourceMappingURL=ColumnResizeController.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ColumnResizeController.d.ts","sourceRoot":"","sources":["../../src/vscode-table/ColumnResizeController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAC,MAAM,KAAK,CAAC;AACvC,OAAO,EAAC,KAAK,WAAW,EAAC,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAEL,OAAO,EAEP,EAAE,EAIH,MAAM,mBAAmB,CAAC;AAE3B,KAAK,eAAe,GAAG,cAAc,GAAG;IACtC,OAAO,EAAE,YAAY,GAAG;QACtB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH,CAAC;AAEF,qBAAa,sBAAuB,YAAW,kBAAkB;IAC/D,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,eAAe,CAAc;IACrC,OAAO,CAAC,aAAa,CAAiB;IACtC,OAAO,CAAC,UAAU,CAKF;IAChB,OAAO,CAAC,wBAAwB,CAA0B;gBAE9C,IAAI,EAAE,WAAW;IAI7B,aAAa,IAAI,IAAI;IAIrB,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,IAAI,iBAAiB,IAAI,OAAO,EAAE,CAiBjC;IAED,mCAAmC;IAanC,IAAI,YAAY,cAEf;IAED,kBAAkB;IAQlB,iBAAiB,CAAC,QAAQ,EAAE,WAAW;IAKvC,iBAAiB;IAIjB,iBAAiB,CAAC,KAAK,EAAE,OAAO;IAKhC,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE;IAOhC,UAAU,CAAC,KAAK,EAAE,YAAY;IAO9B,SAAS,CAAC,KAAK,EAAE,YAAY;IAwB7B,IAAI,CAAC,KAAK,EAAE,YAAY;IAiDxB,QAAQ,CAAC,KAAK,EAAE,YAAY;IAoB5B,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,KAAK;CAGd"}
@@ -0,0 +1,141 @@
1
+ import { calculateColumnWidths, percent, px, toPercent, toPx, } from './calculations.js';
2
+ export class ColumnResizeController {
3
+ constructor(host) {
4
+ this._hostWidth = px(0);
5
+ this._hostX = px(0);
6
+ this._activeSplitter = null;
7
+ this._minColumnWidth = percent(0);
8
+ this._columnWidths = [];
9
+ this._dragState = null;
10
+ this._cachedSplitterPositions = null;
11
+ (this._host = host).addController(this);
12
+ }
13
+ hostConnected() {
14
+ this.saveHostDimensions();
15
+ }
16
+ get isDragging() {
17
+ return this._dragState !== null;
18
+ }
19
+ get splitterPositions() {
20
+ if (this._cachedSplitterPositions) {
21
+ return this._cachedSplitterPositions;
22
+ }
23
+ const result = [];
24
+ let acc = percent(0);
25
+ for (let i = 0; i < this._columnWidths.length - 1; i++) {
26
+ acc = percent(acc + this._columnWidths[i]);
27
+ result.push(acc);
28
+ }
29
+ this._cachedSplitterPositions = result;
30
+ return result;
31
+ }
32
+ getActiveSplitterCalculatedPosition() {
33
+ const splitterPositions = this.splitterPositions;
34
+ if (!this._dragState) {
35
+ return px(0);
36
+ }
37
+ const activeSplitterPos = splitterPositions[this._dragState.splitterIndex];
38
+ const activeSplitterPosPx = this._toPx(activeSplitterPos);
39
+ return activeSplitterPosPx;
40
+ }
41
+ get columnWidths() {
42
+ return this._columnWidths;
43
+ }
44
+ saveHostDimensions() {
45
+ const cr = this._host.getBoundingClientRect();
46
+ const { width, x } = cr;
47
+ this._hostWidth = px(width);
48
+ this._hostX = px(x);
49
+ return this;
50
+ }
51
+ setActiveSplitter(splitter) {
52
+ this._activeSplitter = splitter;
53
+ return this;
54
+ }
55
+ getActiveSplitter() {
56
+ return this._activeSplitter;
57
+ }
58
+ setMinColumnWidth(width) {
59
+ this._minColumnWidth = width;
60
+ return this;
61
+ }
62
+ setColumWidths(widths) {
63
+ this._columnWidths = widths;
64
+ this._cachedSplitterPositions = null;
65
+ this._host.requestUpdate();
66
+ return this;
67
+ }
68
+ shouldDrag(event) {
69
+ return (+event.currentTarget.dataset.index ===
70
+ this._dragState?.splitterIndex);
71
+ }
72
+ startDrag(event) {
73
+ event.stopPropagation();
74
+ if (this._dragState) {
75
+ return;
76
+ }
77
+ this._activeSplitter?.setPointerCapture(event.pointerId);
78
+ const mouseX = event.pageX;
79
+ const splitter = event.currentTarget;
80
+ const splitterX = splitter.getBoundingClientRect().x;
81
+ const xOffset = px(mouseX - splitterX);
82
+ this._dragState = {
83
+ dragOffset: px(xOffset),
84
+ pointerId: event.pointerId,
85
+ splitterIndex: +splitter.dataset.index,
86
+ prevX: px(mouseX - xOffset),
87
+ };
88
+ this._host.requestUpdate();
89
+ }
90
+ drag(event) {
91
+ event.stopPropagation();
92
+ if (!event?.currentTarget?.hasPointerCapture?.(event.pointerId)) {
93
+ return;
94
+ }
95
+ if (!this._dragState) {
96
+ return;
97
+ }
98
+ if (event.pointerId !== this._dragState.pointerId) {
99
+ return;
100
+ }
101
+ if (!this.shouldDrag(event)) {
102
+ return;
103
+ }
104
+ const mouseX = event.pageX;
105
+ const x = px(mouseX - this._dragState.dragOffset);
106
+ const deltaPx = px(x - this._dragState.prevX);
107
+ const delta = this._toPercent(deltaPx);
108
+ this._dragState.prevX = x;
109
+ const splitterPos = this.getActiveSplitterCalculatedPosition();
110
+ if ((deltaPx <= 0 && mouseX > splitterPos + this._hostX) ||
111
+ (deltaPx > 0 && mouseX < splitterPos + this._hostX)) {
112
+ return;
113
+ }
114
+ this._columnWidths = calculateColumnWidths(this._columnWidths, this._dragState.splitterIndex, delta, this._minColumnWidth);
115
+ this._cachedSplitterPositions = null;
116
+ this._host.requestUpdate();
117
+ }
118
+ stopDrag(event) {
119
+ event.stopPropagation();
120
+ if (!this._dragState) {
121
+ return;
122
+ }
123
+ const el = event.currentTarget;
124
+ try {
125
+ el.releasePointerCapture(this._dragState.pointerId);
126
+ }
127
+ catch (e) {
128
+ // ignore
129
+ }
130
+ this._dragState = null;
131
+ this._activeSplitter = null;
132
+ this._host.requestUpdate();
133
+ }
134
+ _toPercent(px) {
135
+ return toPercent(px, this._hostWidth);
136
+ }
137
+ _toPx(percent) {
138
+ return toPx(percent, this._hostWidth);
139
+ }
140
+ }
141
+ //# sourceMappingURL=ColumnResizeController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ColumnResizeController.js","sourceRoot":"","sources":["../../src/vscode-table/ColumnResizeController.ts"],"names":[],"mappings":"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","sourcesContent":["import {ReactiveController} from 'lit';\nimport {type VscodeTable} from './vscode-table.js';\nimport {\n calculateColumnWidths,\n Percent,\n percent,\n Px,\n px,\n toPercent,\n toPx,\n} from './calculations.js';\n\ntype SplitterElement = HTMLDivElement & {\n dataset: DOMStringMap & {\n index: string;\n };\n};\n\nexport class ColumnResizeController implements ReactiveController {\n private _host: VscodeTable;\n private _hostWidth = px(0);\n private _hostX = px(0);\n private _activeSplitter: SplitterElement | null = null;\n private _minColumnWidth = percent(0);\n private _columnWidths: Percent[] = [];\n private _dragState: {\n splitterIndex: number;\n pointerId: number;\n prevX: Px;\n dragOffset: Px;\n } | null = null;\n private _cachedSplitterPositions: Percent[] | null = null;\n\n constructor(host: VscodeTable) {\n (this._host = host).addController(this);\n }\n\n hostConnected(): void {\n this.saveHostDimensions();\n }\n\n get isDragging(): boolean {\n return this._dragState !== null;\n }\n\n get splitterPositions(): Percent[] {\n if (this._cachedSplitterPositions) {\n return this._cachedSplitterPositions;\n }\n\n const result: Percent[] = [];\n\n let acc = percent(0);\n\n for (let i = 0; i < this._columnWidths.length - 1; i++) {\n acc = percent(acc + this._columnWidths[i]);\n result.push(acc);\n }\n\n this._cachedSplitterPositions = result;\n\n return result;\n }\n\n getActiveSplitterCalculatedPosition() {\n const splitterPositions = this.splitterPositions;\n\n if (!this._dragState) {\n return px(0);\n }\n\n const activeSplitterPos = splitterPositions[this._dragState.splitterIndex];\n const activeSplitterPosPx = this._toPx(activeSplitterPos);\n\n return activeSplitterPosPx;\n }\n\n get columnWidths() {\n return this._columnWidths;\n }\n\n saveHostDimensions() {\n const cr = this._host.getBoundingClientRect();\n const {width, x} = cr;\n this._hostWidth = px(width);\n this._hostX = px(x);\n return this;\n }\n\n setActiveSplitter(splitter: HTMLElement) {\n this._activeSplitter = splitter as SplitterElement;\n return this;\n }\n\n getActiveSplitter() {\n return this._activeSplitter;\n }\n\n setMinColumnWidth(width: Percent) {\n this._minColumnWidth = width;\n return this;\n }\n\n setColumWidths(widths: Percent[]) {\n this._columnWidths = widths;\n this._cachedSplitterPositions = null;\n this._host.requestUpdate();\n return this;\n }\n\n shouldDrag(event: PointerEvent) {\n return (\n +(event.currentTarget as SplitterElement).dataset.index ===\n this._dragState?.splitterIndex\n );\n }\n\n startDrag(event: PointerEvent) {\n event.stopPropagation();\n\n if (this._dragState) {\n return;\n }\n\n this._activeSplitter?.setPointerCapture(event.pointerId);\n\n const mouseX = event.pageX;\n const splitter = event.currentTarget as SplitterElement;\n const splitterX = splitter!.getBoundingClientRect().x;\n const xOffset = px(mouseX - splitterX);\n\n this._dragState = {\n dragOffset: px(xOffset),\n pointerId: event.pointerId,\n splitterIndex: +splitter.dataset.index,\n prevX: px(mouseX - xOffset),\n };\n\n this._host.requestUpdate();\n }\n\n drag(event: PointerEvent) {\n event.stopPropagation();\n\n if (\n !(event?.currentTarget as SplitterElement)?.hasPointerCapture?.(\n event.pointerId\n )\n ) {\n return;\n }\n\n if (!this._dragState) {\n return;\n }\n\n if (event.pointerId !== this._dragState.pointerId) {\n return;\n }\n\n if (!this.shouldDrag(event)) {\n return;\n }\n\n const mouseX = event.pageX;\n const x = px(mouseX - this._dragState.dragOffset);\n const deltaPx = px(x - this._dragState.prevX);\n const delta = this._toPercent(deltaPx);\n this._dragState.prevX = x;\n\n const splitterPos = this.getActiveSplitterCalculatedPosition();\n\n if (\n (deltaPx <= 0 && mouseX > splitterPos + this._hostX) ||\n (deltaPx > 0 && mouseX < splitterPos + this._hostX)\n ) {\n return;\n }\n\n this._columnWidths = calculateColumnWidths(\n this._columnWidths,\n this._dragState.splitterIndex,\n delta,\n this._minColumnWidth\n );\n this._cachedSplitterPositions = null;\n\n this._host.requestUpdate();\n }\n\n stopDrag(event: PointerEvent) {\n event.stopPropagation();\n\n if (!this._dragState) {\n return;\n }\n\n const el = event.currentTarget as SplitterElement;\n\n try {\n el.releasePointerCapture(this._dragState.pointerId);\n } catch (e) {\n // ignore\n }\n\n this._dragState = null;\n this._activeSplitter = null;\n this._host.requestUpdate();\n }\n\n private _toPercent(px: Px) {\n return toPercent(px, this._hostWidth);\n }\n\n private _toPx(percent: Percent) {\n return toPx(percent, this._hostWidth);\n }\n}\n"]}