@vscode-elements/elements 2.3.1 → 2.3.2-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 (50) hide show
  1. package/README.md +3 -1
  2. package/custom-elements.json +1087 -665
  3. package/dist/bundled.js +255 -73
  4. package/dist/includes/VscElement.js +1 -1
  5. package/dist/includes/VscElement.js.map +1 -1
  6. package/dist/includes/vscode-select/OptionListController.d.ts +1 -1
  7. package/dist/includes/vscode-select/OptionListController.d.ts.map +1 -1
  8. package/dist/includes/vscode-select/OptionListController.js +1 -1
  9. package/dist/includes/vscode-select/OptionListController.js.map +1 -1
  10. package/dist/includes/vscode-select/vscode-select-base.d.ts +2 -0
  11. package/dist/includes/vscode-select/vscode-select-base.d.ts.map +1 -1
  12. package/dist/includes/vscode-select/vscode-select-base.js +9 -1
  13. package/dist/includes/vscode-select/vscode-select-base.js.map +1 -1
  14. package/dist/vscode-button/vscode-button.d.ts +5 -0
  15. package/dist/vscode-button/vscode-button.d.ts.map +1 -1
  16. package/dist/vscode-button/vscode-button.js +8 -0
  17. package/dist/vscode-button/vscode-button.js.map +1 -1
  18. package/dist/vscode-button/vscode-button.styles.d.ts.map +1 -1
  19. package/dist/vscode-button/vscode-button.styles.js +11 -0
  20. package/dist/vscode-button/vscode-button.styles.js.map +1 -1
  21. package/dist/vscode-collapsible/vscode-collapsible.d.ts +1 -0
  22. package/dist/vscode-collapsible/vscode-collapsible.d.ts.map +1 -1
  23. package/dist/vscode-collapsible/vscode-collapsible.js +4 -1
  24. package/dist/vscode-collapsible/vscode-collapsible.js.map +1 -1
  25. package/dist/vscode-collapsible/vscode-collapsible.styles.d.ts.map +1 -1
  26. package/dist/vscode-collapsible/vscode-collapsible.styles.js +4 -0
  27. package/dist/vscode-collapsible/vscode-collapsible.styles.js.map +1 -1
  28. package/dist/vscode-split-layout/vscode-split-layout.d.ts +18 -0
  29. package/dist/vscode-split-layout/vscode-split-layout.d.ts.map +1 -1
  30. package/dist/vscode-split-layout/vscode-split-layout.js +87 -14
  31. package/dist/vscode-split-layout/vscode-split-layout.js.map +1 -1
  32. package/dist/vscode-tree/tree-context.d.ts +1 -0
  33. package/dist/vscode-tree/tree-context.d.ts.map +1 -1
  34. package/dist/vscode-tree/tree-context.js.map +1 -1
  35. package/dist/vscode-tree/vscode-tree.d.ts +1 -1
  36. package/dist/vscode-tree/vscode-tree.d.ts.map +1 -1
  37. package/dist/vscode-tree/vscode-tree.js +4 -3
  38. package/dist/vscode-tree/vscode-tree.js.map +1 -1
  39. package/dist/vscode-tree/vscode-tree.styles.js +1 -1
  40. package/dist/vscode-tree/vscode-tree.styles.js.map +1 -1
  41. package/dist/vscode-tree-item/vscode-tree-item.d.ts +28 -1
  42. package/dist/vscode-tree-item/vscode-tree-item.d.ts.map +1 -1
  43. package/dist/vscode-tree-item/vscode-tree-item.js +257 -22
  44. package/dist/vscode-tree-item/vscode-tree-item.js.map +1 -1
  45. package/dist/vscode-tree-item/vscode-tree-item.styles.d.ts.map +1 -1
  46. package/dist/vscode-tree-item/vscode-tree-item.styles.js +147 -6
  47. package/dist/vscode-tree-item/vscode-tree-item.styles.js.map +1 -1
  48. package/package.json +12 -8
  49. package/vscode.css-custom-data.json +9 -9
  50. package/vscode.html-custom-data.json +50 -35
@@ -1 +1 @@
1
- {"version":3,"file":"vscode-button.styles.js","sourceRoot":"","sources":["../../src/vscode-button/vscode-button.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAkB,SAAS,EAAC,MAAM,KAAK,CAAC;AACnD,OAAO,aAAa,MAAM,+BAA+B,CAAC;AAC1D,OAAO,EAAC,mBAAmB,EAAC,MAAM,wBAAwB,CAAC;AAE3D,MAAM,gBAAgB,GAAG,SAAS,CAAC,mBAAmB,EAAE,CAAC,CAAC;AAE1D,MAAM,MAAM,GAAmB;IAC7B,aAAa;IACb,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;+CAuB0C,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsJ5D;CACF,CAAC;AAEF,eAAe,MAAM,CAAC","sourcesContent":["import {css, CSSResultGroup, unsafeCSS} from 'lit';\nimport defaultStyles from '../includes/default.styles.js';\nimport {getDefaultFontStack} from '../includes/helpers.js';\n\nconst defaultFontStack = unsafeCSS(getDefaultFontStack());\n\nconst styles: CSSResultGroup = [\n defaultStyles,\n css`\n :host {\n cursor: pointer;\n display: inline-block;\n width: auto;\n }\n\n .base {\n align-items: center;\n background-color: var(--vscode-button-background, #0078d4);\n border-bottom-left-radius: var(--vsc-border-left-radius, 2px);\n border-bottom-right-radius: var(--vsc-border-right-radius, 2px);\n border-bottom-width: 1px;\n border-color: var(--vscode-button-border, transparent);\n border-left-width: var(--vsc-border-left-width, 1px);\n border-right-width: var(--vsc-border-right-width, 1px);\n border-style: solid;\n border-top-left-radius: var(--vsc-border-left-radius, 2px);\n border-top-right-radius: var(--vsc-border-right-radius, 2px);\n border-top-width: 1px;\n box-sizing: border-box;\n color: var(--vscode-button-foreground, #ffffff);\n display: flex;\n font-family: var(--vscode-font-family, ${defaultFontStack});\n font-size: var(--vscode-font-size, 13px);\n font-weight: var(--vscode-font-weight, normal);\n height: 100%;\n justify-content: center;\n line-height: 22px;\n overflow: hidden;\n padding: 1px calc(13px + var(--vsc-base-additional-right-padding, 0px))\n 1px 13px;\n position: relative;\n user-select: none;\n white-space: nowrap;\n width: 100%;\n }\n\n .base:after {\n background-color: var(\n --vscode-button-separator,\n rgba(255, 255, 255, 0.4)\n );\n content: var(--vsc-base-after-content);\n display: var(--vsc-divider-display, none);\n position: absolute;\n right: 0;\n top: 4px;\n bottom: 4px;\n width: 1px;\n }\n\n :host([secondary]) .base:after {\n background-color: var(--vscode-button-secondaryForeground, #cccccc);\n opacity: 0.4;\n }\n\n :host([secondary]) .base {\n color: var(--vscode-button-secondaryForeground, #cccccc);\n background-color: var(--vscode-button-secondaryBackground, #313131);\n border-color: var(\n --vscode-button-border,\n var(--vscode-button-secondaryBackground, rgba(255, 255, 255, 0.07))\n );\n }\n\n :host([disabled]) {\n cursor: default;\n opacity: 0.4;\n pointer-events: none;\n }\n\n :host(:hover) .base {\n background-color: var(--vscode-button-hoverBackground, #026ec1);\n }\n\n :host([disabled]:hover) .base {\n background-color: var(--vscode-button-background, #0078d4);\n }\n\n :host([secondary]:hover) .base {\n background-color: var(--vscode-button-secondaryHoverBackground, #3c3c3c);\n }\n\n :host([secondary][disabled]:hover) .base {\n background-color: var(--vscode-button-secondaryBackground, #313131);\n }\n\n :host(:focus),\n :host(:active) {\n outline: none;\n }\n\n :host(:focus) .base {\n background-color: var(--vscode-button-hoverBackground, #026ec1);\n outline: 1px solid var(--vscode-focusBorder, #0078d4);\n outline-offset: 2px;\n }\n\n :host([disabled]:focus) .base {\n background-color: var(--vscode-button-background, #0078d4);\n outline: 0;\n }\n\n :host([secondary]:focus) .base {\n background-color: var(--vscode-button-secondaryHoverBackground, #3c3c3c);\n }\n\n :host([secondary][disabled]:focus) .base {\n background-color: var(--vscode-button-secondaryBackground, #313131);\n }\n\n ::slotted(*) {\n display: inline-block;\n margin-left: 4px;\n margin-right: 4px;\n }\n\n ::slotted(*:first-child) {\n margin-left: 0;\n }\n\n ::slotted(*:last-child) {\n margin-right: 0;\n }\n\n ::slotted(vscode-icon) {\n color: inherit;\n }\n\n .content {\n display: flex;\n position: relative;\n width: 100%;\n height: 100%;\n padding: 1px 13px;\n }\n\n :host(:empty) .base,\n .base.icon-only {\n min-height: 24px;\n min-width: 26px;\n padding: 1px 4px;\n }\n\n slot {\n align-items: center;\n display: flex;\n height: 100%;\n }\n\n .has-content-before slot[name='content-before'] {\n margin-right: 4px;\n }\n\n .has-content-after slot[name='content-after'] {\n margin-left: 4px;\n }\n\n .icon,\n .icon-after {\n color: inherit;\n display: block;\n }\n\n :host(:not(:empty)) .icon {\n margin-right: 3px;\n }\n\n :host(:not(:empty)) .icon-after,\n :host([icon]) .icon-after {\n margin-left: 3px;\n }\n `,\n];\n\nexport default styles;\n"]}
1
+ {"version":3,"file":"vscode-button.styles.js","sourceRoot":"","sources":["../../src/vscode-button/vscode-button.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAkB,SAAS,EAAC,MAAM,KAAK,CAAC;AACnD,OAAO,aAAa,MAAM,+BAA+B,CAAC;AAC1D,OAAO,EAAC,mBAAmB,EAAC,MAAM,wBAAwB,CAAC;AAE3D,MAAM,gBAAgB,GAAG,SAAS,CAAC,mBAAmB,EAAE,CAAC,CAAC;AAE1D,MAAM,MAAM,GAAmB;IAC7B,aAAa;IACb,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;+CA4B0C,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4J5D;CACF,CAAC;AAEF,eAAe,MAAM,CAAC","sourcesContent":["import {css, CSSResultGroup, unsafeCSS} from 'lit';\nimport defaultStyles from '../includes/default.styles.js';\nimport {getDefaultFontStack} from '../includes/helpers.js';\n\nconst defaultFontStack = unsafeCSS(getDefaultFontStack());\n\nconst styles: CSSResultGroup = [\n defaultStyles,\n css`\n :host {\n cursor: pointer;\n display: inline-block;\n width: auto;\n }\n\n :host([block]) {\n display: block;\n width: 100%;\n }\n\n .base {\n align-items: center;\n background-color: var(--vscode-button-background, #0078d4);\n border-bottom-left-radius: var(--vsc-border-left-radius, 2px);\n border-bottom-right-radius: var(--vsc-border-right-radius, 2px);\n border-bottom-width: 1px;\n border-color: var(--vscode-button-border, transparent);\n border-left-width: var(--vsc-border-left-width, 1px);\n border-right-width: var(--vsc-border-right-width, 1px);\n border-style: solid;\n border-top-left-radius: var(--vsc-border-left-radius, 2px);\n border-top-right-radius: var(--vsc-border-right-radius, 2px);\n border-top-width: 1px;\n box-sizing: border-box;\n color: var(--vscode-button-foreground, #ffffff);\n display: flex;\n font-family: var(--vscode-font-family, ${defaultFontStack});\n font-size: var(--vscode-font-size, 13px);\n font-weight: var(--vscode-font-weight, normal);\n height: 100%;\n justify-content: center;\n line-height: 22px;\n overflow: hidden;\n padding: 1px calc(13px + var(--vsc-base-additional-right-padding, 0px))\n 1px 13px;\n position: relative;\n user-select: none;\n white-space: nowrap;\n width: 100%;\n }\n\n :host([block]) .base {\n min-height: 28px;\n text-align: center;\n width: 100%;\n }\n\n .base:after {\n background-color: var(\n --vscode-button-separator,\n rgba(255, 255, 255, 0.4)\n );\n content: var(--vsc-base-after-content);\n display: var(--vsc-divider-display, none);\n position: absolute;\n right: 0;\n top: 4px;\n bottom: 4px;\n width: 1px;\n }\n\n :host([secondary]) .base:after {\n background-color: var(--vscode-button-secondaryForeground, #cccccc);\n opacity: 0.4;\n }\n\n :host([secondary]) .base {\n color: var(--vscode-button-secondaryForeground, #cccccc);\n background-color: var(--vscode-button-secondaryBackground, #313131);\n border-color: var(\n --vscode-button-border,\n var(--vscode-button-secondaryBackground, rgba(255, 255, 255, 0.07))\n );\n }\n\n :host([disabled]) {\n cursor: default;\n opacity: 0.4;\n pointer-events: none;\n }\n\n :host(:hover) .base {\n background-color: var(--vscode-button-hoverBackground, #026ec1);\n }\n\n :host([disabled]:hover) .base {\n background-color: var(--vscode-button-background, #0078d4);\n }\n\n :host([secondary]:hover) .base {\n background-color: var(--vscode-button-secondaryHoverBackground, #3c3c3c);\n }\n\n :host([secondary][disabled]:hover) .base {\n background-color: var(--vscode-button-secondaryBackground, #313131);\n }\n\n :host(:focus),\n :host(:active) {\n outline: none;\n }\n\n :host(:focus) .base {\n background-color: var(--vscode-button-hoverBackground, #026ec1);\n outline: 1px solid var(--vscode-focusBorder, #0078d4);\n outline-offset: 2px;\n }\n\n :host([disabled]:focus) .base {\n background-color: var(--vscode-button-background, #0078d4);\n outline: 0;\n }\n\n :host([secondary]:focus) .base {\n background-color: var(--vscode-button-secondaryHoverBackground, #3c3c3c);\n }\n\n :host([secondary][disabled]:focus) .base {\n background-color: var(--vscode-button-secondaryBackground, #313131);\n }\n\n ::slotted(*) {\n display: inline-block;\n margin-left: 4px;\n margin-right: 4px;\n }\n\n ::slotted(*:first-child) {\n margin-left: 0;\n }\n\n ::slotted(*:last-child) {\n margin-right: 0;\n }\n\n ::slotted(vscode-icon) {\n color: inherit;\n }\n\n .content {\n display: flex;\n position: relative;\n width: 100%;\n height: 100%;\n padding: 1px 13px;\n }\n\n :host(:empty) .base,\n .base.icon-only {\n min-height: 24px;\n min-width: 26px;\n padding: 1px 4px;\n }\n\n slot {\n align-items: center;\n display: flex;\n height: 100%;\n }\n\n .has-content-before slot[name='content-before'] {\n margin-right: 4px;\n }\n\n .has-content-after slot[name='content-after'] {\n margin-left: 4px;\n }\n\n .icon,\n .icon-after {\n color: inherit;\n display: block;\n }\n\n :host(:not(:empty)) .icon {\n margin-right: 3px;\n }\n\n :host(:not(:empty)) .icon-after,\n :host([icon]) .icon-after {\n margin-left: 3px;\n }\n `,\n];\n\nexport default styles;\n"]}
@@ -48,6 +48,7 @@ export declare class VscodeCollapsible extends VscElement {
48
48
  private _emitToggleEvent;
49
49
  private _onHeaderClick;
50
50
  private _onHeaderKeyDown;
51
+ private _onActionClick;
51
52
  render(): TemplateResult;
52
53
  }
53
54
  declare global {
@@ -1 +1 @@
1
- {"version":3,"file":"vscode-collapsible.d.ts","sourceRoot":"","sources":["../../src/vscode-collapsible/vscode-collapsible.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,cAAc,EAAC,MAAM,KAAK,CAAC;AAGlD,OAAO,EAAgB,UAAU,EAAC,MAAM,2BAA2B,CAAC;AAGpE,MAAM,MAAM,yBAAyB,GAAG,WAAW,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAC,CAAC,CAAC;AAErE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBACa,iBAAkB,SAAQ,UAAU;IAC/C,OAAgB,MAAM,+BAAU;IAEhC;;;;OAIG;IAMH,uBAAuB,UAAS;IAEhC;;;;;OAKG;IAEM,KAAK,EAAE,MAAM,CAAM;IAE5B;;OAEG;IAEH,OAAO,SAAM;IAEb,yCAAyC;IAEzC,WAAW,SAAM;IAGjB,IAAI,UAAS;IAEb,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,gBAAgB;IAOf,MAAM,IAAI,cAAc;CAkDlC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,oBAAoB,EAAE,iBAAiB,CAAC;KACzC;IAED,UAAU,2BAA2B;QACnC,wBAAwB,EAAE,yBAAyB,CAAC;KACrD;CACF"}
1
+ {"version":3,"file":"vscode-collapsible.d.ts","sourceRoot":"","sources":["../../src/vscode-collapsible/vscode-collapsible.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,cAAc,EAAC,MAAM,KAAK,CAAC;AAGlD,OAAO,EAAgB,UAAU,EAAC,MAAM,2BAA2B,CAAC;AAGpE,MAAM,MAAM,yBAAyB,GAAG,WAAW,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAC,CAAC,CAAC;AAErE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBACa,iBAAkB,SAAQ,UAAU;IAC/C,OAAgB,MAAM,+BAAU;IAEhC;;;;OAIG;IAMH,uBAAuB,UAAS;IAEhC;;;;;OAKG;IAEM,KAAK,EAAE,MAAM,CAAM;IAE5B;;OAEG;IAEH,OAAO,SAAM;IAEb,yCAAyC;IAEzC,WAAW,SAAM;IAGjB,IAAI,UAAS;IAEb,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,cAAc;IAIb,MAAM,IAAI,cAAc;CAkDlC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,oBAAoB,EAAE,iBAAiB,CAAC;KACzC;IAED,UAAU,2BAA2B;QACnC,wBAAwB,EAAE,yBAAyB,CAAC;KACrD;CACF"}
@@ -68,6 +68,9 @@ let VscodeCollapsible = class VscodeCollapsible extends VscElement {
68
68
  this._emitToggleEvent();
69
69
  }
70
70
  }
71
+ _onActionClick(event) {
72
+ event.stopPropagation();
73
+ }
71
74
  render() {
72
75
  const classes = { collapsible: true, open: this.open };
73
76
  const actionsClasses = {
@@ -104,7 +107,7 @@ let VscodeCollapsible = class VscodeCollapsible extends VscElement {
104
107
  <h3 class="title">${heading}${descriptionMarkup}</h3>
105
108
  <div class="header-slots">
106
109
  <div class=${classMap(actionsClasses)}>
107
- <slot name="actions"></slot>
110
+ <slot name="actions" @click=${this._onActionClick}></slot>
108
111
  </div>
109
112
  <div class="decorations"><slot name="decorations"></slot></div>
110
113
  </div>
@@ -1 +1 @@
1
- {"version":3,"file":"vscode-collapsible.js","sourceRoot":"","sources":["../../src/vscode-collapsible/vscode-collapsible.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAC,IAAI,EAAE,OAAO,EAAiB,MAAM,KAAK,CAAC;AAClD,OAAO,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAC,QAAQ,EAAC,MAAM,6BAA6B,CAAC;AACrD,OAAO,EAAC,aAAa,EAAE,UAAU,EAAC,MAAM,2BAA2B,CAAC;AACpE,OAAO,MAAM,MAAM,gCAAgC,CAAC;AAIpD;;;;;;;;;;;;;;;;;;;GAmBG;AAEI,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,UAAU;IAA1C;;QAGL;;;;WAIG;QAMH,4BAAuB,GAAG,KAAK,CAAC;QAEhC;;;;;WAKG;QAEM,UAAK,GAAW,EAAE,CAAC;QAE5B;;WAEG;QAEH,YAAO,GAAG,EAAE,CAAC;QAEb,yCAAyC;QAEzC,gBAAW,GAAG,EAAE,CAAC;QAGjB,SAAI,GAAG,KAAK,CAAC;IAwEf,CAAC;IAtES,gBAAgB;QACtB,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAC,wBAAwB,EAAE;YACxC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAC;SAC1B,CAA8B,CAChC,CAAC;IACJ,CAAC;IAEO,cAAc;QACpB,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAEO,gBAAgB,CAAC,KAAoB;QAC3C,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;YAC1B,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YACvB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC;IAEQ,MAAM;QACb,MAAM,OAAO,GAAG,EAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAC,CAAC;QACrD,MAAM,cAAc,GAAG;YACrB,OAAO,EAAE,IAAI;YACb,gBAAgB,EAAE,IAAI,CAAC,uBAAuB;SAC/C,CAAC;QACF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QAEzD,MAAM,IAAI,GAAG,IAAI,CAAA;;;;;;;;;;;;;WAaV,CAAC;QAER,MAAM,iBAAiB,GAAG,IAAI,CAAC,WAAW;YACxC,CAAC,CAAC,IAAI,CAAA,6BAA6B,IAAI,CAAC,WAAW,SAAS;YAC5D,CAAC,CAAC,OAAO,CAAC;QAEZ,OAAO,IAAI,CAAA;mBACI,QAAQ,CAAC,OAAO,CAAC;;;;mBAIjB,IAAI,CAAC,cAAc;qBACjB,IAAI,CAAC,gBAAgB;;YAE9B,IAAI;8BACc,OAAO,GAAG,iBAAiB;;yBAEhC,QAAQ,CAAC,cAAc,CAAC;;;;;;;;;;KAU5C,CAAC;IACJ,CAAC;;AAzGe,wBAAM,GAAG,MAAM,AAAT,CAAU;AAYhC;IALC,QAAQ,CAAC;QACR,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,4BAA4B;KACxC,CAAC;kEAC8B;AASvB;IADR,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;gDACG;AAM5B;IADC,QAAQ,EAAE;kDACE;AAIb;IADC,QAAQ,EAAE;sDACM;AAGjB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;+CAC5B;AAnCF,iBAAiB;IAD7B,aAAa,CAAC,oBAAoB,CAAC;GACvB,iBAAiB,CA2G7B","sourcesContent":["import {html, nothing, TemplateResult} from 'lit';\nimport {property} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport {customElement, VscElement} from '../includes/VscElement.js';\nimport styles from './vscode-collapsible.styles.js';\n\nexport type VscCollapsibleToggleEvent = CustomEvent<{open: boolean}>;\n\n/**\n * Allows users to reveal or hide related content on a page.\n *\n * @tag vscode-collapsible\n *\n * @slot - Main content.\n * @slot actions - You can place any action icon in this slot in the header, but it's also possible to use any HTML element in it. It's only visible when the component is open.\n * @slot decorations - The elements placed in the decorations slot are always visible.\n *\n * @fires {VscCollapsibleToggleEvent} vsc-collapsible-toggle - Dispatched when the content visibility is changed.\n *\n * @cssprop [--vscode-sideBar-background=#181818] - Background color\n * @cssprop [--vscode-focusBorder=#0078d4] - Focus border color\n * @cssprop [--vscode-font-family=sans-serif] - Header font family\n * @cssprop [--vscode-sideBarSectionHeader-background=#181818] - Header background\n * @cssprop [--vscode-icon-foreground=#cccccc] - Arrow icon color\n * @cssprop [--vscode-sideBarTitle-foreground=#cccccc] - Header font color\n *\n * @csspart body - Container for the toggleable content of the component. The container's overflow content is hidden by default. This CSS part can serve as an escape hatch to modify this behavior.\n */\n@customElement('vscode-collapsible')\nexport class VscodeCollapsible extends VscElement {\n static override styles = styles;\n\n /**\n * When enabled, header actions are always visible; otherwise, they appear only when the cursor\n * hovers over the component. Actions are shown only when the Collapsible component is open. This\n * property is designed to use the `workbench.view.alwaysShowHeaderActions` setting.\n */\n @property({\n type: Boolean,\n reflect: true,\n attribute: 'always-show-header-actions',\n })\n alwaysShowHeaderActions = false;\n\n /**\n * Component heading text\n *\n * @deprecated The `title` is a global HTML attribute and will unintentionally trigger a native\n * tooltip on the component. Use the `heading` property instead.\n */\n @property({type: String})\n override title: string = '';\n\n /**\n * Heading text.\n */\n @property()\n heading = '';\n\n /** Less prominent text in the header. */\n @property()\n description = '';\n\n @property({type: Boolean, reflect: true})\n open = false;\n\n private _emitToggleEvent() {\n this.dispatchEvent(\n new CustomEvent('vsc-collapsible-toggle', {\n detail: {open: this.open},\n }) as VscCollapsibleToggleEvent\n );\n }\n\n private _onHeaderClick() {\n this.open = !this.open;\n this._emitToggleEvent();\n }\n\n private _onHeaderKeyDown(event: KeyboardEvent) {\n if (event.key === 'Enter') {\n this.open = !this.open;\n this._emitToggleEvent();\n }\n }\n\n override render(): TemplateResult {\n const classes = {collapsible: true, open: this.open};\n const actionsClasses = {\n actions: true,\n 'always-visible': this.alwaysShowHeaderActions,\n };\n const heading = this.heading ? this.heading : this.title;\n\n const icon = html`<svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"currentColor\"\n class=\"header-icon\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M10.072 8.024L5.715 3.667l.618-.62L11 7.716v.618L6.333 13l-.618-.619 4.357-4.357z\"\n />\n </svg>`;\n\n const descriptionMarkup = this.description\n ? html`<span class=\"description\">${this.description}</span>`\n : nothing;\n\n return html`\n <div class=${classMap(classes)}>\n <div\n class=\"collapsible-header\"\n tabindex=\"0\"\n @click=${this._onHeaderClick}\n @keydown=${this._onHeaderKeyDown}\n >\n ${icon}\n <h3 class=\"title\">${heading}${descriptionMarkup}</h3>\n <div class=\"header-slots\">\n <div class=${classMap(actionsClasses)}>\n <slot name=\"actions\"></slot>\n </div>\n <div class=\"decorations\"><slot name=\"decorations\"></slot></div>\n </div>\n </div>\n <div class=\"collapsible-body\" part=\"body\">\n <slot></slot>\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'vscode-collapsible': VscodeCollapsible;\n }\n\n interface GlobalEventHandlersEventMap {\n 'vsc-collapsible-toggle': VscCollapsibleToggleEvent;\n }\n}\n"]}
1
+ {"version":3,"file":"vscode-collapsible.js","sourceRoot":"","sources":["../../src/vscode-collapsible/vscode-collapsible.ts"],"names":[],"mappings":"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","sourcesContent":["import {html, nothing, TemplateResult} from 'lit';\nimport {property} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport {customElement, VscElement} from '../includes/VscElement.js';\nimport styles from './vscode-collapsible.styles.js';\n\nexport type VscCollapsibleToggleEvent = CustomEvent<{open: boolean}>;\n\n/**\n * Allows users to reveal or hide related content on a page.\n *\n * @tag vscode-collapsible\n *\n * @slot - Main content.\n * @slot actions - You can place any action icon in this slot in the header, but it's also possible to use any HTML element in it. It's only visible when the component is open.\n * @slot decorations - The elements placed in the decorations slot are always visible.\n *\n * @fires {VscCollapsibleToggleEvent} vsc-collapsible-toggle - Dispatched when the content visibility is changed.\n *\n * @cssprop [--vscode-sideBar-background=#181818] - Background color\n * @cssprop [--vscode-focusBorder=#0078d4] - Focus border color\n * @cssprop [--vscode-font-family=sans-serif] - Header font family\n * @cssprop [--vscode-sideBarSectionHeader-background=#181818] - Header background\n * @cssprop [--vscode-icon-foreground=#cccccc] - Arrow icon color\n * @cssprop [--vscode-sideBarTitle-foreground=#cccccc] - Header font color\n *\n * @csspart body - Container for the toggleable content of the component. The container's overflow content is hidden by default. This CSS part can serve as an escape hatch to modify this behavior.\n */\n@customElement('vscode-collapsible')\nexport class VscodeCollapsible extends VscElement {\n static override styles = styles;\n\n /**\n * When enabled, header actions are always visible; otherwise, they appear only when the cursor\n * hovers over the component. Actions are shown only when the Collapsible component is open. This\n * property is designed to use the `workbench.view.alwaysShowHeaderActions` setting.\n */\n @property({\n type: Boolean,\n reflect: true,\n attribute: 'always-show-header-actions',\n })\n alwaysShowHeaderActions = false;\n\n /**\n * Component heading text\n *\n * @deprecated The `title` is a global HTML attribute and will unintentionally trigger a native\n * tooltip on the component. Use the `heading` property instead.\n */\n @property({type: String})\n override title: string = '';\n\n /**\n * Heading text.\n */\n @property()\n heading = '';\n\n /** Less prominent text in the header. */\n @property()\n description = '';\n\n @property({type: Boolean, reflect: true})\n open = false;\n\n private _emitToggleEvent() {\n this.dispatchEvent(\n new CustomEvent('vsc-collapsible-toggle', {\n detail: {open: this.open},\n }) as VscCollapsibleToggleEvent\n );\n }\n\n private _onHeaderClick() {\n this.open = !this.open;\n this._emitToggleEvent();\n }\n\n private _onHeaderKeyDown(event: KeyboardEvent) {\n if (event.key === 'Enter') {\n this.open = !this.open;\n this._emitToggleEvent();\n }\n }\n\n private _onActionClick(event: PointerEvent) {\n event.stopPropagation();\n }\n\n override render(): TemplateResult {\n const classes = {collapsible: true, open: this.open};\n const actionsClasses = {\n actions: true,\n 'always-visible': this.alwaysShowHeaderActions,\n };\n const heading = this.heading ? this.heading : this.title;\n\n const icon = html`<svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"currentColor\"\n class=\"header-icon\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M10.072 8.024L5.715 3.667l.618-.62L11 7.716v.618L6.333 13l-.618-.619 4.357-4.357z\"\n />\n </svg>`;\n\n const descriptionMarkup = this.description\n ? html`<span class=\"description\">${this.description}</span>`\n : nothing;\n\n return html`\n <div class=${classMap(classes)}>\n <div\n class=\"collapsible-header\"\n tabindex=\"0\"\n @click=${this._onHeaderClick}\n @keydown=${this._onHeaderKeyDown}\n >\n ${icon}\n <h3 class=\"title\">${heading}${descriptionMarkup}</h3>\n <div class=\"header-slots\">\n <div class=${classMap(actionsClasses)}>\n <slot name=\"actions\" @click=${this._onActionClick}></slot>\n </div>\n <div class=\"decorations\"><slot name=\"decorations\"></slot></div>\n </div>\n </div>\n <div class=\"collapsible-body\" part=\"body\">\n <slot></slot>\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'vscode-collapsible': VscodeCollapsible;\n }\n\n interface GlobalEventHandlersEventMap {\n 'vsc-collapsible-toggle': VscCollapsibleToggleEvent;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"vscode-collapsible.styles.d.ts","sourceRoot":"","sources":["../../src/vscode-collapsible/vscode-collapsible.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,cAAc,EAAC,MAAM,KAAK,CAAC;AAGxC,QAAA,MAAM,MAAM,EAAE,cA6Fb,CAAC;AAEF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"vscode-collapsible.styles.d.ts","sourceRoot":"","sources":["../../src/vscode-collapsible/vscode-collapsible.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,cAAc,EAAC,MAAM,KAAK,CAAC;AAGxC,QAAA,MAAM,MAAM,EAAE,cAiGb,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -3,6 +3,10 @@ import defaultStyles from '../includes/default.styles.js';
3
3
  const styles = [
4
4
  defaultStyles,
5
5
  css `
6
+ :host {
7
+ display: block;
8
+ }
9
+
6
10
  .collapsible {
7
11
  background-color: var(--vscode-sideBar-background, #181818);
8
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"vscode-collapsible.styles.js","sourceRoot":"","sources":["../../src/vscode-collapsible/vscode-collapsible.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAiB,MAAM,KAAK,CAAC;AACxC,OAAO,aAAa,MAAM,+BAA+B,CAAC;AAE1D,MAAM,MAAM,GAAmB;IAC7B,aAAa;IACb,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0FF;CACF,CAAC;AAEF,eAAe,MAAM,CAAC","sourcesContent":["import {css, CSSResultGroup} from 'lit';\nimport defaultStyles from '../includes/default.styles.js';\n\nconst styles: CSSResultGroup = [\n defaultStyles,\n css`\n .collapsible {\n background-color: var(--vscode-sideBar-background, #181818);\n }\n\n .collapsible-header {\n align-items: center;\n background-color: var(--vscode-sideBarSectionHeader-background, #181818);\n cursor: pointer;\n display: flex;\n height: 22px;\n line-height: 22px;\n user-select: none;\n }\n\n .collapsible-header:focus {\n opacity: 1;\n outline-offset: -1px;\n outline-style: solid;\n outline-width: 1px;\n outline-color: var(--vscode-focusBorder, #0078d4);\n }\n\n .title {\n color: var(--vscode-sideBarTitle-foreground, #cccccc);\n display: block;\n font-family: var(--vscode-font-family, sans-serif);\n font-size: 11px;\n font-weight: 700;\n margin: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n text-transform: uppercase;\n white-space: nowrap;\n }\n\n .title .description {\n font-weight: 400;\n margin-left: 10px;\n text-transform: none;\n opacity: 0.6;\n }\n\n .header-icon {\n color: var(--vscode-icon-foreground, #cccccc);\n display: block;\n flex-shrink: 0;\n margin: 0 3px;\n }\n\n .collapsible.open .header-icon {\n transform: rotate(90deg);\n }\n\n .header-slots {\n align-items: center;\n display: flex;\n height: 22px;\n margin-left: auto;\n margin-right: 4px;\n }\n\n .actions {\n display: none;\n }\n\n .collapsible.open .actions.always-visible,\n .collapsible.open:hover .actions {\n display: block;\n }\n\n .header-slots slot {\n display: flex;\n max-height: 22px;\n overflow: hidden;\n }\n\n .header-slots slot::slotted(div) {\n align-items: center;\n display: flex;\n }\n\n .collapsible-body {\n display: none;\n overflow: hidden;\n }\n\n .collapsible.open .collapsible-body {\n display: block;\n }\n `,\n];\n\nexport default styles;\n"]}
1
+ {"version":3,"file":"vscode-collapsible.styles.js","sourceRoot":"","sources":["../../src/vscode-collapsible/vscode-collapsible.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAiB,MAAM,KAAK,CAAC;AACxC,OAAO,aAAa,MAAM,+BAA+B,CAAC;AAE1D,MAAM,MAAM,GAAmB;IAC7B,aAAa;IACb,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8FF;CACF,CAAC;AAEF,eAAe,MAAM,CAAC","sourcesContent":["import {css, CSSResultGroup} from 'lit';\nimport defaultStyles from '../includes/default.styles.js';\n\nconst styles: CSSResultGroup = [\n defaultStyles,\n css`\n :host {\n display: block;\n }\n\n .collapsible {\n background-color: var(--vscode-sideBar-background, #181818);\n }\n\n .collapsible-header {\n align-items: center;\n background-color: var(--vscode-sideBarSectionHeader-background, #181818);\n cursor: pointer;\n display: flex;\n height: 22px;\n line-height: 22px;\n user-select: none;\n }\n\n .collapsible-header:focus {\n opacity: 1;\n outline-offset: -1px;\n outline-style: solid;\n outline-width: 1px;\n outline-color: var(--vscode-focusBorder, #0078d4);\n }\n\n .title {\n color: var(--vscode-sideBarTitle-foreground, #cccccc);\n display: block;\n font-family: var(--vscode-font-family, sans-serif);\n font-size: 11px;\n font-weight: 700;\n margin: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n text-transform: uppercase;\n white-space: nowrap;\n }\n\n .title .description {\n font-weight: 400;\n margin-left: 10px;\n text-transform: none;\n opacity: 0.6;\n }\n\n .header-icon {\n color: var(--vscode-icon-foreground, #cccccc);\n display: block;\n flex-shrink: 0;\n margin: 0 3px;\n }\n\n .collapsible.open .header-icon {\n transform: rotate(90deg);\n }\n\n .header-slots {\n align-items: center;\n display: flex;\n height: 22px;\n margin-left: auto;\n margin-right: 4px;\n }\n\n .actions {\n display: none;\n }\n\n .collapsible.open .actions.always-visible,\n .collapsible.open:hover .actions {\n display: block;\n }\n\n .header-slots slot {\n display: flex;\n max-height: 22px;\n overflow: hidden;\n }\n\n .header-slots slot::slotted(div) {\n align-items: center;\n display: flex;\n }\n\n .collapsible-body {\n display: none;\n overflow: hidden;\n }\n\n .collapsible.open .collapsible-body {\n display: block;\n }\n `,\n];\n\nexport default styles;\n"]}
@@ -17,6 +17,8 @@ export type VscSplitLayoutChangeEvent = CustomEvent<{
17
17
  * @tag vscode-split-layout
18
18
  *
19
19
  * @prop {'start' | 'end' | 'none'} fixedPane
20
+ * @prop {string} minStart - Minimum size of the start pane expressed in `px` or `%`.
21
+ * @prop {string} minEnd - Minimum size of the end pane expressed in `px` or `%`.
20
22
  *
21
23
  * @cssprop [--separator-border=#454545]
22
24
  * @cssprop [--vscode-editorWidget-border=#454545]
@@ -59,6 +61,18 @@ export declare class VscodeSplitLayout extends VscElement {
59
61
  set fixedPane(newVal: FixedPaneType);
60
62
  get fixedPane(): FixedPaneType;
61
63
  private _fixedPane;
64
+ /**
65
+ * Sets the minimum size of the start pane. Accepts pixel or percentage values.
66
+ */
67
+ set minStart(newVal: string | null | undefined);
68
+ get minStart(): string | undefined;
69
+ private _minStart?;
70
+ /**
71
+ * Sets the minimum size of the end pane. Accepts pixel or percentage values.
72
+ */
73
+ set minEnd(newVal: string | null | undefined);
74
+ get minEnd(): string | undefined;
75
+ private _minEnd?;
62
76
  private _handlePosition;
63
77
  private _isDragActive;
64
78
  private _hover;
@@ -82,6 +96,10 @@ export declare class VscodeSplitLayout extends VscElement {
82
96
  private _handlePositionPropChanged;
83
97
  private _fixedPanePropChanged;
84
98
  private _initFixedPane;
99
+ private _applyMinSizeConstraints;
100
+ private _resolveMinSizePx;
101
+ private _clampHandlePosition;
102
+ private _updateFixedPaneSize;
85
103
  private _handleResize;
86
104
  private _setPosition;
87
105
  private _handleMouseOver;
@@ -1 +1 @@
1
- {"version":3,"file":"vscode-split-layout.d.ts","sourceRoot":"","sources":["../../src/vscode-split-layout/vscode-split-layout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,cAAc,EAAE,cAAc,EAAC,MAAM,KAAK,CAAC;AAGzD,OAAO,EAAgB,UAAU,EAAC,MAAM,2BAA2B,CAAC;AAOpE,KAAK,YAAY,GAAG,OAAO,GAAG,SAAS,CAAC;AACxC,KAAK,WAAW,GAAG,YAAY,GAAG,UAAU,CAAC;AAC7C,KAAK,aAAa,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;AAE9C,eAAO,MAAM,UAAU,GACrB,KAAK,MAAM,KACV;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,YAAY,CAAA;CAsBpC,CAAC;AAGF,eAAO,MAAM,WAAW,GAAI,SAAS,MAAM,EAAE,KAAK,MAAM,WAEvD,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,SAAS,MAAM,EAAE,KAAK,MAAM,WAEvD,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,WAAW,CAAC;IAClD,QAAQ,EAAE,MAAM,CAAC;IACjB,oBAAoB,EAAE,MAAM,CAAC;CAC9B,CAAC,CAAC;AAEH;;;;;;;;GAQG;AACH,qBACa,iBAAkB,SAAQ,UAAU;IAC/C,OAAgB,MAAM,+BAAU;IAEhC;;OAEG;IACH,IACI,KAAK,CAAC,MAAM,EAAE,WAAW,EAM5B;IACD,IAAI,KAAK,IAAI,WAAW,CAEvB;IACD,OAAO,CAAC,MAAM,CAA2B;IAEzC;;;OAGG;IAEH,eAAe,UAAS;IAExB;;;OAGG;IAEH,UAAU,SAAK;IAEf;;;OAGG;IAEH,qBAAqB,EAAE,MAAM,CAA4B;IAEzD;;;;OAIG;IACH,IACI,cAAc,CAAC,MAAM,EAAE,MAAM,EAGhC;IACD,IAAI,cAAc,IAAI,MAAM,GAAG,SAAS,CAEvC;IACD,OAAO,CAAC,kBAAkB,CAAC,CAAS;IAEpC;;OAEG;IACH,IACI,SAAS,CAAC,MAAM,EAAE,aAAa,EAGlC;IACD,IAAI,SAAS,IAAI,aAAa,CAE7B;IACD,OAAO,CAAC,UAAU,CAAyB;IAG3C,OAAO,CAAC,eAAe,CAAK;IAG5B,OAAO,CAAC,aAAa,CAAS;IAG9B,OAAO,CAAC,MAAM,CAAS;IAGvB,OAAO,CAAC,KAAK,CAAS;IAGtB,OAAO,CAAC,UAAU,CAAkB;IAGpC,OAAO,CAAC,SAAS,CAAkB;IAGnC,OAAO,CAAC,qBAAqB,CAAiB;IAG9C,OAAO,CAAC,mBAAmB,CAAiB;IAE5C,OAAO,CAAC,UAAU,CAA0B;IAC5C,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,eAAe,CAAiB;IACxC,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,OAAO,CAAC,cAAc,CAAa;;IAQnC;;OAEG;IACH,mBAAmB;IAmBV,iBAAiB,IAAI,IAAI;cAIf,YAAY,CAAC,kBAAkB,EAAE,cAAc,GAAG,IAAI;IAgBzE,OAAO,CAAC,0BAA0B;IAQlC,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,cAAc;IAsBtB,OAAO,CAAC,aAAa,CAanB;IAEF,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,gBAAgB;IA0BxB,OAAO,CAAC,cAAc,CAwBpB;IAEF,OAAO,CAAC,gBAAgB,CAmBtB;IAEF,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,iBAAiB;IAahB,MAAM,IAAI,cAAc;CAiFlC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,qBAAqB,EAAE,iBAAiB,CAAC;KAC1C;IAED,UAAU,2BAA2B;QACnC,yBAAyB,EAAE,yBAAyB,CAAC;KACtD;CACF"}
1
+ {"version":3,"file":"vscode-split-layout.d.ts","sourceRoot":"","sources":["../../src/vscode-split-layout/vscode-split-layout.ts"],"names":[],"mappings":"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"}
@@ -45,6 +45,8 @@ export const percentToPx = (current, max) => {
45
45
  * @tag vscode-split-layout
46
46
  *
47
47
  * @prop {'start' | 'end' | 'none'} fixedPane
48
+ * @prop {string} minStart - Minimum size of the start pane expressed in `px` or `%`.
49
+ * @prop {string} minEnd - Minimum size of the end pane expressed in `px` or `%`.
48
50
  *
49
51
  * @cssprop [--separator-border=#454545]
50
52
  * @cssprop [--vscode-editorWidget-border=#454545]
@@ -86,6 +88,34 @@ let VscodeSplitLayout = VscodeSplitLayout_1 = class VscodeSplitLayout extends Vs
86
88
  get fixedPane() {
87
89
  return this._fixedPane;
88
90
  }
91
+ /**
92
+ * Sets the minimum size of the start pane. Accepts pixel or percentage values.
93
+ */
94
+ set minStart(newVal) {
95
+ const normalized = newVal ?? undefined;
96
+ if (this._minStart === normalized) {
97
+ return;
98
+ }
99
+ this._minStart = normalized;
100
+ this._applyMinSizeConstraints();
101
+ }
102
+ get minStart() {
103
+ return this._minStart;
104
+ }
105
+ /**
106
+ * Sets the minimum size of the end pane. Accepts pixel or percentage values.
107
+ */
108
+ set minEnd(newVal) {
109
+ const normalized = newVal ?? undefined;
110
+ if (this._minEnd === normalized) {
111
+ return;
112
+ }
113
+ this._minEnd = normalized;
114
+ this._applyMinSizeConstraints();
115
+ }
116
+ get minEnd() {
117
+ return this._minEnd;
118
+ }
89
119
  constructor() {
90
120
  super();
91
121
  this._split = 'vertical';
@@ -124,6 +154,8 @@ let VscodeSplitLayout = VscodeSplitLayout_1 = class VscodeSplitLayout extends Vs
124
154
  if (this.fixedPane === 'end') {
125
155
  this._handlePosition = max - this._fixedPaneSize;
126
156
  }
157
+ this._handlePosition = this._clampHandlePosition(this._handlePosition, max);
158
+ this._updateFixedPaneSize(max);
127
159
  };
128
160
  this._handleMouseUp = (ev) => {
129
161
  this._isDragActive = false;
@@ -150,13 +182,9 @@ let VscodeSplitLayout = VscodeSplitLayout_1 = class VscodeSplitLayout extends Vs
150
182
  const vert = this.split === 'vertical';
151
183
  const maxPos = vert ? width : height;
152
184
  const mousePos = vert ? clientX - left : clientY - top;
153
- this._handlePosition = Math.max(0, Math.min(mousePos - this._handleOffset + this.handleSize / 2, maxPos));
154
- if (this.fixedPane === 'start') {
155
- this._fixedPaneSize = this._handlePosition;
156
- }
157
- if (this.fixedPane === 'end') {
158
- this._fixedPaneSize = maxPos - this._handlePosition;
159
- }
185
+ const rawPosition = mousePos - this._handleOffset + this.handleSize / 2;
186
+ this._handlePosition = this._clampHandlePosition(rawPosition, maxPos);
187
+ this._updateFixedPaneSize(maxPos);
160
188
  };
161
189
  this._resizeObserver = new ResizeObserver(this._handleResize);
162
190
  }
@@ -171,12 +199,9 @@ let VscodeSplitLayout = VscodeSplitLayout_1 = class VscodeSplitLayout extends Vs
171
199
  const { width, height } = this._wrapperEl.getBoundingClientRect();
172
200
  const max = this.split === 'vertical' ? width : height;
173
201
  const { value, unit } = parseValue(this.initialHandlePosition ?? DEFAULT_INITIAL_POSITION);
174
- if (unit === 'percent') {
175
- this._handlePosition = percentToPx(value, max);
176
- }
177
- else {
178
- this._handlePosition = value;
179
- }
202
+ const nextValue = unit === 'percent' ? percentToPx(value, max) : value;
203
+ this._handlePosition = this._clampHandlePosition(nextValue, max);
204
+ this._updateFixedPaneSize(max);
180
205
  }
181
206
  connectedCallback() {
182
207
  super.connectedCallback();
@@ -226,10 +251,52 @@ let VscodeSplitLayout = VscodeSplitLayout_1 = class VscodeSplitLayout extends Vs
226
251
  }
227
252
  }
228
253
  }
254
+ _applyMinSizeConstraints() {
255
+ if (!this._wrapperEl) {
256
+ return;
257
+ }
258
+ this._boundRect = this._wrapperEl.getBoundingClientRect();
259
+ const { width, height } = this._boundRect;
260
+ const max = this.split === 'vertical' ? width : height;
261
+ this._handlePosition = this._clampHandlePosition(this._handlePosition, max);
262
+ this._updateFixedPaneSize(max);
263
+ }
264
+ _resolveMinSizePx(value, max) {
265
+ if (!value) {
266
+ return 0;
267
+ }
268
+ const { unit, value: parsedValue } = parseValue(value);
269
+ const resolved = unit === 'percent' ? percentToPx(parsedValue, max) : parsedValue;
270
+ if (!isFinite(resolved)) {
271
+ return 0;
272
+ }
273
+ return Math.max(0, Math.min(resolved, max));
274
+ }
275
+ _clampHandlePosition(value, max) {
276
+ if (!isFinite(max) || max <= 0) {
277
+ return 0;
278
+ }
279
+ const minStartPx = this._resolveMinSizePx(this._minStart, max);
280
+ const minEndPx = this._resolveMinSizePx(this._minEnd, max);
281
+ const lowerBound = Math.min(minStartPx, max);
282
+ const upperBound = Math.max(lowerBound, max - minEndPx);
283
+ const boundedValue = Math.max(lowerBound, Math.min(value, upperBound));
284
+ return Math.max(0, Math.min(boundedValue, max));
285
+ }
286
+ _updateFixedPaneSize(max) {
287
+ if (this.fixedPane === 'start') {
288
+ this._fixedPaneSize = this._handlePosition;
289
+ }
290
+ else if (this.fixedPane === 'end') {
291
+ this._fixedPaneSize = max - this._handlePosition;
292
+ }
293
+ }
229
294
  _setPosition(value, unit) {
230
295
  const { width, height } = this._boundRect;
231
296
  const max = this.split === 'vertical' ? width : height;
232
- this._handlePosition = unit === 'percent' ? percentToPx(value, max) : value;
297
+ const nextValue = unit === 'percent' ? percentToPx(value, max) : value;
298
+ this._handlePosition = this._clampHandlePosition(nextValue, max);
299
+ this._updateFixedPaneSize(max);
233
300
  }
234
301
  _handleMouseOver() {
235
302
  this._hover = true;
@@ -366,6 +433,12 @@ __decorate([
366
433
  __decorate([
367
434
  property({ attribute: 'fixed-pane' })
368
435
  ], VscodeSplitLayout.prototype, "fixedPane", null);
436
+ __decorate([
437
+ property({ attribute: 'min-start' })
438
+ ], VscodeSplitLayout.prototype, "minStart", null);
439
+ __decorate([
440
+ property({ attribute: 'min-end' })
441
+ ], VscodeSplitLayout.prototype, "minEnd", null);
369
442
  __decorate([
370
443
  state()
371
444
  ], VscodeSplitLayout.prototype, "_handlePosition", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"vscode-split-layout.js","sourceRoot":"","sources":["../../src/vscode-split-layout/vscode-split-layout.ts"],"names":[],"mappings":"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","sourcesContent":["import {html, PropertyValues, TemplateResult} from 'lit';\nimport {property, query, queryAssignedElements, state} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport {customElement, VscElement} from '../includes/VscElement.js';\nimport styles from './vscode-split-layout.styles.js';\nimport {stylePropertyMap} from '../includes/style-property-map.js';\n\nconst DEFAULT_INITIAL_POSITION = '50%';\nconst DEFAULT_HANDLE_SIZE = 4;\n\ntype PositionUnit = 'pixel' | 'percent';\ntype Orientation = 'horizontal' | 'vertical';\ntype FixedPaneType = 'start' | 'end' | 'none';\n\nexport const parseValue = (\n raw: string\n): {value: number; unit: PositionUnit} => {\n if (!raw) {\n return {value: 0, unit: 'pixel'};\n }\n\n let unit: PositionUnit;\n let rawVal: number;\n\n if (raw.endsWith('%')) {\n unit = 'percent';\n rawVal = +raw.substring(0, raw.length - 1);\n } else if (raw.endsWith('px')) {\n unit = 'pixel';\n rawVal = +raw.substring(0, raw.length - 2);\n } else {\n unit = 'pixel';\n rawVal = +raw;\n }\n\n const value = isNaN(rawVal) ? 0 : rawVal;\n\n return {unit, value};\n};\n\n// Returns a percentage between 0 and 100\nexport const pxToPercent = (current: number, max: number) => {\n return max === 0 ? 0 : Math.min(100, (current / max) * 100);\n};\n\nexport const percentToPx = (current: number, max: number) => {\n return max * (current / 100);\n};\n\nexport type VscSplitLayoutChangeEvent = CustomEvent<{\n position: number;\n positionInPercentage: number;\n}>;\n\n/**\n * @tag vscode-split-layout\n *\n * @prop {'start' | 'end' | 'none'} fixedPane\n *\n * @cssprop [--separator-border=#454545]\n * @cssprop [--vscode-editorWidget-border=#454545]\n * @cssprop [--vscode-sash-hoverBorder=#0078d4]\n */\n@customElement('vscode-split-layout')\nexport class VscodeSplitLayout extends VscElement {\n static override styles = styles;\n\n /**\n * Direction of the divider.\n */\n @property({reflect: true})\n set split(newVal: Orientation) {\n if (this._split === newVal) {\n return;\n }\n this._split = newVal;\n this.resetHandlePosition();\n }\n get split(): Orientation {\n return this._split;\n }\n private _split: Orientation = 'vertical';\n\n /**\n * Controls whether the handle position should reset to the value set in the\n * `initialHandlePosition` when it is double-clicked.\n */\n @property({type: Boolean, reflect: true, attribute: 'reset-on-dbl-click'})\n resetOnDblClick = false;\n\n /**\n * Controls the draggable area size in pixels. it is intended to use the value\n * of `workbench.sash.size`.\n */\n @property({type: Number, reflect: true, attribute: 'handle-size'})\n handleSize = 4;\n\n /**\n * The handler position will reset to this position when it is double-clicked,\n * or the `resetHandlePosition()` is called.\n */\n @property({reflect: true, attribute: 'initial-handle-position'})\n initialHandlePosition: string = DEFAULT_INITIAL_POSITION;\n\n /**\n * Set the handle position programmatically. The value must include a unit,\n * either `%` or `px`. If no unit is specified, the value is interpreted as\n * `px`.\n */\n @property({attribute: 'handle-position'})\n set handlePosition(newVal: string) {\n this._rawHandlePosition = newVal;\n this._handlePositionPropChanged();\n }\n get handlePosition(): string | undefined {\n return this._rawHandlePosition;\n }\n private _rawHandlePosition?: string;\n\n /**\n * The size of the fixed pane will not change when the component is resized.\n */\n @property({attribute: 'fixed-pane'})\n set fixedPane(newVal: FixedPaneType) {\n this._fixedPane = newVal;\n this._fixedPanePropChanged();\n }\n get fixedPane(): FixedPaneType {\n return this._fixedPane;\n }\n private _fixedPane: FixedPaneType = 'none';\n\n @state()\n private _handlePosition = 0;\n\n @state()\n private _isDragActive = false;\n\n @state()\n private _hover = false;\n\n @state()\n private _hide = false;\n\n @query('.wrapper')\n private _wrapperEl!: HTMLDivElement;\n\n @query('.handle')\n private _handleEl!: HTMLDivElement;\n\n @queryAssignedElements({slot: 'start', selector: 'vscode-split-layout'})\n private _nestedLayoutsAtStart!: HTMLElement[];\n\n @queryAssignedElements({slot: 'end', selector: 'vscode-split-layout'})\n private _nestedLayoutsAtEnd!: HTMLElement[];\n\n private _boundRect: DOMRect = new DOMRect();\n private _handleOffset = 0;\n private _resizeObserver: ResizeObserver;\n private _wrapperObserved: boolean = false;\n private _fixedPaneSize: number = 0;\n\n constructor() {\n super();\n\n this._resizeObserver = new ResizeObserver(this._handleResize);\n }\n\n /**\n * Sets the handle position to the value specified in the `initialHandlePosition` property.\n */\n resetHandlePosition() {\n if (!this._wrapperEl) {\n this._handlePosition = 0;\n return;\n }\n\n const {width, height} = this._wrapperEl.getBoundingClientRect();\n const max = this.split === 'vertical' ? width : height;\n const {value, unit} = parseValue(\n this.initialHandlePosition ?? DEFAULT_INITIAL_POSITION\n );\n\n if (unit === 'percent') {\n this._handlePosition = percentToPx(value, max);\n } else {\n this._handlePosition = value;\n }\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n }\n\n protected override firstUpdated(_changedProperties: PropertyValues): void {\n if (this.fixedPane !== 'none') {\n this._resizeObserver.observe(this._wrapperEl);\n this._wrapperObserved = true;\n }\n\n this._boundRect = this._wrapperEl.getBoundingClientRect();\n\n const {value, unit} = this.handlePosition\n ? parseValue(this.handlePosition)\n : parseValue(this.initialHandlePosition);\n\n this._setPosition(value, unit);\n this._initFixedPane();\n }\n\n private _handlePositionPropChanged() {\n if (this.handlePosition && this._wrapperEl) {\n this._boundRect = this._wrapperEl.getBoundingClientRect();\n const {value, unit} = parseValue(this.handlePosition);\n this._setPosition(value, unit);\n }\n }\n\n private _fixedPanePropChanged() {\n if (!this._wrapperEl) {\n return;\n }\n\n this._initFixedPane();\n }\n\n private _initFixedPane() {\n if (this.fixedPane === 'none') {\n if (this._wrapperObserved) {\n this._resizeObserver.unobserve(this._wrapperEl);\n this._wrapperObserved = false;\n }\n } else {\n const {width, height} = this._boundRect;\n const max = this.split === 'vertical' ? width : height;\n\n this._fixedPaneSize =\n this.fixedPane === 'start'\n ? this._handlePosition\n : max - this._handlePosition;\n\n if (!this._wrapperObserved) {\n this._resizeObserver.observe(this._wrapperEl);\n this._wrapperObserved = true;\n }\n }\n }\n\n private _handleResize = (entries: ResizeObserverEntry[]) => {\n const rect = entries[0].contentRect;\n const {width, height} = rect;\n this._boundRect = rect;\n const max = this.split === 'vertical' ? width : height;\n\n if (this.fixedPane === 'start') {\n this._handlePosition = this._fixedPaneSize;\n }\n\n if (this.fixedPane === 'end') {\n this._handlePosition = max - this._fixedPaneSize;\n }\n };\n\n private _setPosition(value: number, unit: PositionUnit) {\n const {width, height} = this._boundRect;\n const max = this.split === 'vertical' ? width : height;\n\n this._handlePosition = unit === 'percent' ? percentToPx(value, max) : value;\n }\n\n private _handleMouseOver() {\n this._hover = true;\n this._hide = false;\n }\n\n private _handleMouseOut(event: MouseEvent) {\n if (event.buttons !== 1) {\n this._hover = false;\n this._hide = true;\n }\n }\n\n private _handleMouseDown(event: MouseEvent) {\n event.stopPropagation();\n event.preventDefault();\n\n this._boundRect = this._wrapperEl.getBoundingClientRect();\n const {left, top} = this._boundRect;\n const {left: handleLeft, top: handleTop} =\n this._handleEl.getBoundingClientRect();\n\n const mouseXLocal = event.clientX - left;\n const mouseYLocal = event.clientY - top;\n\n if (this.split === 'vertical') {\n this._handleOffset = mouseXLocal - (handleLeft - left);\n }\n\n if (this.split === 'horizontal') {\n this._handleOffset = mouseYLocal - (handleTop - top);\n }\n\n this._isDragActive = true;\n\n window.addEventListener('mouseup', this._handleMouseUp);\n window.addEventListener('mousemove', this._handleMouseMove);\n }\n\n private _handleMouseUp = (ev: MouseEvent) => {\n this._isDragActive = false;\n\n if (ev.target !== this) {\n this._hover = false;\n this._hide = true;\n }\n\n window.removeEventListener('mouseup', this._handleMouseUp);\n window.removeEventListener('mousemove', this._handleMouseMove);\n\n const {width, height} = this._boundRect;\n const max = this.split === 'vertical' ? width : height;\n const positionInPercentage = pxToPercent(this._handlePosition, max);\n\n this.dispatchEvent(\n new CustomEvent('vsc-split-layout-change', {\n detail: {\n position: this._handlePosition,\n positionInPercentage,\n },\n composed: true,\n }) as VscSplitLayoutChangeEvent\n );\n };\n\n private _handleMouseMove = (event: MouseEvent) => {\n const {clientX, clientY} = event;\n const {left, top, height, width} = this._boundRect;\n const vert = this.split === 'vertical';\n const maxPos = vert ? width : height;\n const mousePos = vert ? clientX - left : clientY - top;\n\n this._handlePosition = Math.max(\n 0,\n Math.min(mousePos - this._handleOffset + this.handleSize / 2, maxPos)\n );\n\n if (this.fixedPane === 'start') {\n this._fixedPaneSize = this._handlePosition;\n }\n\n if (this.fixedPane === 'end') {\n this._fixedPaneSize = maxPos - this._handlePosition;\n }\n };\n\n private _handleDblClick() {\n if (!this.resetOnDblClick) {\n return;\n }\n\n this.resetHandlePosition();\n }\n\n private _handleSlotChange() {\n const nestedLayouts = [\n ...this._nestedLayoutsAtStart,\n ...this._nestedLayoutsAtEnd,\n ];\n\n nestedLayouts.forEach((e) => {\n if (e instanceof VscodeSplitLayout) {\n e.resetHandlePosition();\n }\n });\n }\n\n override render(): TemplateResult {\n const {width, height} = this._boundRect;\n const maxPos = this.split === 'vertical' ? width : height;\n const handlePosCss =\n this.fixedPane !== 'none'\n ? `${this._handlePosition}px`\n : `${pxToPercent(this._handlePosition, maxPos)}%`;\n\n let startPaneSize = '';\n\n if (this.fixedPane === 'start') {\n startPaneSize = `0 0 ${this._fixedPaneSize}px`;\n } else {\n startPaneSize = `1 1 ${pxToPercent(this._handlePosition, maxPos)}%`;\n }\n\n let endPaneSize = '';\n\n if (this.fixedPane === 'end') {\n endPaneSize = `0 0 ${this._fixedPaneSize}px`;\n } else {\n endPaneSize = `1 1 ${pxToPercent(maxPos - this._handlePosition, maxPos)}%`;\n }\n\n const handleStylesPropObj: {[prop: string]: string} = {\n left: this.split === 'vertical' ? handlePosCss : '0',\n top: this.split === 'vertical' ? '0' : handlePosCss,\n };\n\n const handleSize = this.handleSize ?? DEFAULT_HANDLE_SIZE;\n\n if (this.split === 'vertical') {\n handleStylesPropObj.marginLeft = `${0 - handleSize / 2}px`;\n handleStylesPropObj.width = `${handleSize}px`;\n }\n\n if (this.split === 'horizontal') {\n handleStylesPropObj.height = `${handleSize}px`;\n handleStylesPropObj.marginTop = `${0 - handleSize / 2}px`;\n }\n\n const handleOverlayClasses = classMap({\n 'handle-overlay': true,\n active: this._isDragActive,\n 'split-vertical': this.split === 'vertical',\n 'split-horizontal': this.split === 'horizontal',\n });\n\n const handleClasses = classMap({\n handle: true,\n hover: this._hover,\n hide: this._hide,\n 'split-vertical': this.split === 'vertical',\n 'split-horizontal': this.split === 'horizontal',\n });\n\n const wrapperClasses = {\n wrapper: true,\n horizontal: this.split === 'horizontal',\n };\n\n return html`\n <div class=${classMap(wrapperClasses)}>\n <div class=\"start\" .style=${stylePropertyMap({flex: startPaneSize})}>\n <slot name=\"start\" @slotchange=${this._handleSlotChange}></slot>\n </div>\n <div class=\"end\" .style=${stylePropertyMap({flex: endPaneSize})}>\n <slot name=\"end\" @slotchange=${this._handleSlotChange}></slot>\n </div>\n <div class=${handleOverlayClasses}></div>\n <div\n class=${handleClasses}\n .style=${stylePropertyMap(handleStylesPropObj)}\n @mouseover=${this._handleMouseOver}\n @mouseout=${this._handleMouseOut}\n @mousedown=${this._handleMouseDown}\n @dblclick=${this._handleDblClick}\n ></div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'vscode-split-layout': VscodeSplitLayout;\n }\n\n interface GlobalEventHandlersEventMap {\n 'vsc-split-layout-change': VscSplitLayoutChangeEvent;\n }\n}\n"]}
1
+ {"version":3,"file":"vscode-split-layout.js","sourceRoot":"","sources":["../../src/vscode-split-layout/vscode-split-layout.ts"],"names":[],"mappings":"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","sourcesContent":["import {html, PropertyValues, TemplateResult} from 'lit';\nimport {property, query, queryAssignedElements, state} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport {customElement, VscElement} from '../includes/VscElement.js';\nimport styles from './vscode-split-layout.styles.js';\nimport {stylePropertyMap} from '../includes/style-property-map.js';\n\nconst DEFAULT_INITIAL_POSITION = '50%';\nconst DEFAULT_HANDLE_SIZE = 4;\n\ntype PositionUnit = 'pixel' | 'percent';\ntype Orientation = 'horizontal' | 'vertical';\ntype FixedPaneType = 'start' | 'end' | 'none';\n\nexport const parseValue = (\n raw: string\n): {value: number; unit: PositionUnit} => {\n if (!raw) {\n return {value: 0, unit: 'pixel'};\n }\n\n let unit: PositionUnit;\n let rawVal: number;\n\n if (raw.endsWith('%')) {\n unit = 'percent';\n rawVal = +raw.substring(0, raw.length - 1);\n } else if (raw.endsWith('px')) {\n unit = 'pixel';\n rawVal = +raw.substring(0, raw.length - 2);\n } else {\n unit = 'pixel';\n rawVal = +raw;\n }\n\n const value = isNaN(rawVal) ? 0 : rawVal;\n\n return {unit, value};\n};\n\n// Returns a percentage between 0 and 100\nexport const pxToPercent = (current: number, max: number) => {\n return max === 0 ? 0 : Math.min(100, (current / max) * 100);\n};\n\nexport const percentToPx = (current: number, max: number) => {\n return max * (current / 100);\n};\n\nexport type VscSplitLayoutChangeEvent = CustomEvent<{\n position: number;\n positionInPercentage: number;\n}>;\n\n/**\n * @tag vscode-split-layout\n *\n * @prop {'start' | 'end' | 'none'} fixedPane\n * @prop {string} minStart - Minimum size of the start pane expressed in `px` or `%`.\n * @prop {string} minEnd - Minimum size of the end pane expressed in `px` or `%`.\n *\n * @cssprop [--separator-border=#454545]\n * @cssprop [--vscode-editorWidget-border=#454545]\n * @cssprop [--vscode-sash-hoverBorder=#0078d4]\n */\n@customElement('vscode-split-layout')\nexport class VscodeSplitLayout extends VscElement {\n static override styles = styles;\n\n /**\n * Direction of the divider.\n */\n @property({reflect: true})\n set split(newVal: Orientation) {\n if (this._split === newVal) {\n return;\n }\n this._split = newVal;\n this.resetHandlePosition();\n }\n get split(): Orientation {\n return this._split;\n }\n private _split: Orientation = 'vertical';\n\n /**\n * Controls whether the handle position should reset to the value set in the\n * `initialHandlePosition` when it is double-clicked.\n */\n @property({type: Boolean, reflect: true, attribute: 'reset-on-dbl-click'})\n resetOnDblClick = false;\n\n /**\n * Controls the draggable area size in pixels. it is intended to use the value\n * of `workbench.sash.size`.\n */\n @property({type: Number, reflect: true, attribute: 'handle-size'})\n handleSize = 4;\n\n /**\n * The handler position will reset to this position when it is double-clicked,\n * or the `resetHandlePosition()` is called.\n */\n @property({reflect: true, attribute: 'initial-handle-position'})\n initialHandlePosition: string = DEFAULT_INITIAL_POSITION;\n\n /**\n * Set the handle position programmatically. The value must include a unit,\n * either `%` or `px`. If no unit is specified, the value is interpreted as\n * `px`.\n */\n @property({attribute: 'handle-position'})\n set handlePosition(newVal: string) {\n this._rawHandlePosition = newVal;\n this._handlePositionPropChanged();\n }\n get handlePosition(): string | undefined {\n return this._rawHandlePosition;\n }\n private _rawHandlePosition?: string;\n\n /**\n * The size of the fixed pane will not change when the component is resized.\n */\n @property({attribute: 'fixed-pane'})\n set fixedPane(newVal: FixedPaneType) {\n this._fixedPane = newVal;\n this._fixedPanePropChanged();\n }\n get fixedPane(): FixedPaneType {\n return this._fixedPane;\n }\n private _fixedPane: FixedPaneType = 'none';\n\n /**\n * Sets the minimum size of the start pane. Accepts pixel or percentage values.\n */\n @property({attribute: 'min-start'})\n set minStart(newVal: string | null | undefined) {\n const normalized = newVal ?? undefined;\n\n if (this._minStart === normalized) {\n return;\n }\n\n this._minStart = normalized;\n this._applyMinSizeConstraints();\n }\n get minStart(): string | undefined {\n return this._minStart;\n }\n private _minStart?: string;\n\n /**\n * Sets the minimum size of the end pane. Accepts pixel or percentage values.\n */\n @property({attribute: 'min-end'})\n set minEnd(newVal: string | null | undefined) {\n const normalized = newVal ?? undefined;\n\n if (this._minEnd === normalized) {\n return;\n }\n\n this._minEnd = normalized;\n this._applyMinSizeConstraints();\n }\n get minEnd(): string | undefined {\n return this._minEnd;\n }\n private _minEnd?: string;\n\n @state()\n private _handlePosition = 0;\n\n @state()\n private _isDragActive = false;\n\n @state()\n private _hover = false;\n\n @state()\n private _hide = false;\n\n @query('.wrapper')\n private _wrapperEl!: HTMLDivElement;\n\n @query('.handle')\n private _handleEl!: HTMLDivElement;\n\n @queryAssignedElements({slot: 'start', selector: 'vscode-split-layout'})\n private _nestedLayoutsAtStart!: HTMLElement[];\n\n @queryAssignedElements({slot: 'end', selector: 'vscode-split-layout'})\n private _nestedLayoutsAtEnd!: HTMLElement[];\n\n private _boundRect: DOMRect = new DOMRect();\n private _handleOffset = 0;\n private _resizeObserver: ResizeObserver;\n private _wrapperObserved: boolean = false;\n private _fixedPaneSize: number = 0;\n\n constructor() {\n super();\n\n this._resizeObserver = new ResizeObserver(this._handleResize);\n }\n\n /**\n * Sets the handle position to the value specified in the `initialHandlePosition` property.\n */\n resetHandlePosition() {\n if (!this._wrapperEl) {\n this._handlePosition = 0;\n return;\n }\n\n const {width, height} = this._wrapperEl.getBoundingClientRect();\n const max = this.split === 'vertical' ? width : height;\n const {value, unit} = parseValue(\n this.initialHandlePosition ?? DEFAULT_INITIAL_POSITION\n );\n\n const nextValue = unit === 'percent' ? percentToPx(value, max) : value;\n this._handlePosition = this._clampHandlePosition(nextValue, max);\n this._updateFixedPaneSize(max);\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n }\n\n protected override firstUpdated(_changedProperties: PropertyValues): void {\n if (this.fixedPane !== 'none') {\n this._resizeObserver.observe(this._wrapperEl);\n this._wrapperObserved = true;\n }\n\n this._boundRect = this._wrapperEl.getBoundingClientRect();\n\n const {value, unit} = this.handlePosition\n ? parseValue(this.handlePosition)\n : parseValue(this.initialHandlePosition);\n\n this._setPosition(value, unit);\n this._initFixedPane();\n }\n\n private _handlePositionPropChanged() {\n if (this.handlePosition && this._wrapperEl) {\n this._boundRect = this._wrapperEl.getBoundingClientRect();\n const {value, unit} = parseValue(this.handlePosition);\n this._setPosition(value, unit);\n }\n }\n\n private _fixedPanePropChanged() {\n if (!this._wrapperEl) {\n return;\n }\n\n this._initFixedPane();\n }\n\n private _initFixedPane() {\n if (this.fixedPane === 'none') {\n if (this._wrapperObserved) {\n this._resizeObserver.unobserve(this._wrapperEl);\n this._wrapperObserved = false;\n }\n } else {\n const {width, height} = this._boundRect;\n const max = this.split === 'vertical' ? width : height;\n\n this._fixedPaneSize =\n this.fixedPane === 'start'\n ? this._handlePosition\n : max - this._handlePosition;\n\n if (!this._wrapperObserved) {\n this._resizeObserver.observe(this._wrapperEl);\n this._wrapperObserved = true;\n }\n }\n }\n\n private _applyMinSizeConstraints() {\n if (!this._wrapperEl) {\n return;\n }\n\n this._boundRect = this._wrapperEl.getBoundingClientRect();\n const {width, height} = this._boundRect;\n const max = this.split === 'vertical' ? width : height;\n\n this._handlePosition = this._clampHandlePosition(this._handlePosition, max);\n this._updateFixedPaneSize(max);\n }\n\n private _resolveMinSizePx(value: string | undefined, max: number): number {\n if (!value) {\n return 0;\n }\n\n const {unit, value: parsedValue} = parseValue(value);\n const resolved =\n unit === 'percent' ? percentToPx(parsedValue, max) : parsedValue;\n\n if (!isFinite(resolved)) {\n return 0;\n }\n\n return Math.max(0, Math.min(resolved, max));\n }\n\n private _clampHandlePosition(value: number, max: number): number {\n if (!isFinite(max) || max <= 0) {\n return 0;\n }\n\n const minStartPx = this._resolveMinSizePx(this._minStart, max);\n const minEndPx = this._resolveMinSizePx(this._minEnd, max);\n\n const lowerBound = Math.min(minStartPx, max);\n const upperBound = Math.max(lowerBound, max - minEndPx);\n\n const boundedValue = Math.max(lowerBound, Math.min(value, upperBound));\n\n return Math.max(0, Math.min(boundedValue, max));\n }\n\n private _updateFixedPaneSize(max: number) {\n if (this.fixedPane === 'start') {\n this._fixedPaneSize = this._handlePosition;\n } else if (this.fixedPane === 'end') {\n this._fixedPaneSize = max - this._handlePosition;\n }\n }\n\n private _handleResize = (entries: ResizeObserverEntry[]) => {\n const rect = entries[0].contentRect;\n const {width, height} = rect;\n this._boundRect = rect;\n const max = this.split === 'vertical' ? width : height;\n\n if (this.fixedPane === 'start') {\n this._handlePosition = this._fixedPaneSize;\n }\n\n if (this.fixedPane === 'end') {\n this._handlePosition = max - this._fixedPaneSize;\n }\n\n this._handlePosition = this._clampHandlePosition(this._handlePosition, max);\n this._updateFixedPaneSize(max);\n };\n\n private _setPosition(value: number, unit: PositionUnit) {\n const {width, height} = this._boundRect;\n const max = this.split === 'vertical' ? width : height;\n\n const nextValue = unit === 'percent' ? percentToPx(value, max) : value;\n\n this._handlePosition = this._clampHandlePosition(nextValue, max);\n this._updateFixedPaneSize(max);\n }\n\n private _handleMouseOver() {\n this._hover = true;\n this._hide = false;\n }\n\n private _handleMouseOut(event: MouseEvent) {\n if (event.buttons !== 1) {\n this._hover = false;\n this._hide = true;\n }\n }\n\n private _handleMouseDown(event: MouseEvent) {\n event.stopPropagation();\n event.preventDefault();\n\n this._boundRect = this._wrapperEl.getBoundingClientRect();\n const {left, top} = this._boundRect;\n const {left: handleLeft, top: handleTop} =\n this._handleEl.getBoundingClientRect();\n\n const mouseXLocal = event.clientX - left;\n const mouseYLocal = event.clientY - top;\n\n if (this.split === 'vertical') {\n this._handleOffset = mouseXLocal - (handleLeft - left);\n }\n\n if (this.split === 'horizontal') {\n this._handleOffset = mouseYLocal - (handleTop - top);\n }\n\n this._isDragActive = true;\n\n window.addEventListener('mouseup', this._handleMouseUp);\n window.addEventListener('mousemove', this._handleMouseMove);\n }\n\n private _handleMouseUp = (ev: MouseEvent) => {\n this._isDragActive = false;\n\n if (ev.target !== this) {\n this._hover = false;\n this._hide = true;\n }\n\n window.removeEventListener('mouseup', this._handleMouseUp);\n window.removeEventListener('mousemove', this._handleMouseMove);\n\n const {width, height} = this._boundRect;\n const max = this.split === 'vertical' ? width : height;\n const positionInPercentage = pxToPercent(this._handlePosition, max);\n\n this.dispatchEvent(\n new CustomEvent('vsc-split-layout-change', {\n detail: {\n position: this._handlePosition,\n positionInPercentage,\n },\n composed: true,\n }) as VscSplitLayoutChangeEvent\n );\n };\n\n private _handleMouseMove = (event: MouseEvent) => {\n const {clientX, clientY} = event;\n const {left, top, height, width} = this._boundRect;\n const vert = this.split === 'vertical';\n const maxPos = vert ? width : height;\n const mousePos = vert ? clientX - left : clientY - top;\n\n const rawPosition = mousePos - this._handleOffset + this.handleSize / 2;\n\n this._handlePosition = this._clampHandlePosition(rawPosition, maxPos);\n this._updateFixedPaneSize(maxPos);\n };\n\n private _handleDblClick() {\n if (!this.resetOnDblClick) {\n return;\n }\n\n this.resetHandlePosition();\n }\n\n private _handleSlotChange() {\n const nestedLayouts = [\n ...this._nestedLayoutsAtStart,\n ...this._nestedLayoutsAtEnd,\n ];\n\n nestedLayouts.forEach((e) => {\n if (e instanceof VscodeSplitLayout) {\n e.resetHandlePosition();\n }\n });\n }\n\n override render(): TemplateResult {\n const {width, height} = this._boundRect;\n const maxPos = this.split === 'vertical' ? width : height;\n const handlePosCss =\n this.fixedPane !== 'none'\n ? `${this._handlePosition}px`\n : `${pxToPercent(this._handlePosition, maxPos)}%`;\n\n let startPaneSize = '';\n\n if (this.fixedPane === 'start') {\n startPaneSize = `0 0 ${this._fixedPaneSize}px`;\n } else {\n startPaneSize = `1 1 ${pxToPercent(this._handlePosition, maxPos)}%`;\n }\n\n let endPaneSize = '';\n\n if (this.fixedPane === 'end') {\n endPaneSize = `0 0 ${this._fixedPaneSize}px`;\n } else {\n endPaneSize = `1 1 ${pxToPercent(maxPos - this._handlePosition, maxPos)}%`;\n }\n\n const handleStylesPropObj: {[prop: string]: string} = {\n left: this.split === 'vertical' ? handlePosCss : '0',\n top: this.split === 'vertical' ? '0' : handlePosCss,\n };\n\n const handleSize = this.handleSize ?? DEFAULT_HANDLE_SIZE;\n\n if (this.split === 'vertical') {\n handleStylesPropObj.marginLeft = `${0 - handleSize / 2}px`;\n handleStylesPropObj.width = `${handleSize}px`;\n }\n\n if (this.split === 'horizontal') {\n handleStylesPropObj.height = `${handleSize}px`;\n handleStylesPropObj.marginTop = `${0 - handleSize / 2}px`;\n }\n\n const handleOverlayClasses = classMap({\n 'handle-overlay': true,\n active: this._isDragActive,\n 'split-vertical': this.split === 'vertical',\n 'split-horizontal': this.split === 'horizontal',\n });\n\n const handleClasses = classMap({\n handle: true,\n hover: this._hover,\n hide: this._hide,\n 'split-vertical': this.split === 'vertical',\n 'split-horizontal': this.split === 'horizontal',\n });\n\n const wrapperClasses = {\n wrapper: true,\n horizontal: this.split === 'horizontal',\n };\n\n return html`\n <div class=${classMap(wrapperClasses)}>\n <div class=\"start\" .style=${stylePropertyMap({flex: startPaneSize})}>\n <slot name=\"start\" @slotchange=${this._handleSlotChange}></slot>\n </div>\n <div class=\"end\" .style=${stylePropertyMap({flex: endPaneSize})}>\n <slot name=\"end\" @slotchange=${this._handleSlotChange}></slot>\n </div>\n <div class=${handleOverlayClasses}></div>\n <div\n class=${handleClasses}\n .style=${stylePropertyMap(handleStylesPropObj)}\n @mouseover=${this._handleMouseOver}\n @mouseout=${this._handleMouseOut}\n @mousedown=${this._handleMouseDown}\n @dblclick=${this._handleDblClick}\n ></div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'vscode-split-layout': VscodeSplitLayout;\n }\n\n interface GlobalEventHandlersEventMap {\n 'vsc-split-layout-change': VscSplitLayoutChangeEvent;\n }\n}\n"]}
@@ -16,6 +16,7 @@ export interface TreeContext {
16
16
  highlightedItems?: Set<VscodeTreeItem>;
17
17
  highlightIndentGuides?: () => void;
18
18
  emitSelectEvent?: () => void;
19
+ hoveredItem?: VscodeTreeItem | null;
19
20
  }
20
21
  export declare const treeContext: {
21
22
  __context__: TreeContext;
@@ -1 +1 @@
1
- {"version":3,"file":"tree-context.d.ts","sourceRoot":"","sources":["../../src/vscode-tree/tree-context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAC,UAAU,EAAE,kBAAkB,EAAE,UAAU,EAAC,MAAM,eAAe,CAAC;AAE9E,MAAM,WAAW,WAAW;IAC1B,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;IACnC,QAAQ,EAAE,UAAU,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;IAC5C,gBAAgB,EAAE,OAAO,CAAC;IAC1B,WAAW,EAAE,cAAc,GAAG,IAAI,CAAC;IACnC,eAAe,EAAE,cAAc,GAAG,IAAI,CAAC;IACvC;;OAEG;IACH,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,UAAU,GAAG,IAAI,CAAC;IAC/B,UAAU,EAAE,cAAc,GAAG,IAAI,CAAC;IAClC,gBAAgB,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;IACvC,qBAAqB,CAAC,EAAE,MAAM,IAAI,CAAC;IACnC,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED,eAAO,MAAM,WAAW;;CAA4C,CAAC;AAErE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,kBAAkB,CAAC;IAC1C,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;CAC/B;AAED,eAAO,MAAM,aAAa;;CAEzB,CAAC"}
1
+ {"version":3,"file":"tree-context.d.ts","sourceRoot":"","sources":["../../src/vscode-tree/tree-context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAC,UAAU,EAAE,kBAAkB,EAAE,UAAU,EAAC,MAAM,eAAe,CAAC;AAE9E,MAAM,WAAW,WAAW;IAC1B,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;IACnC,QAAQ,EAAE,UAAU,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;IAC5C,gBAAgB,EAAE,OAAO,CAAC;IAC1B,WAAW,EAAE,cAAc,GAAG,IAAI,CAAC;IACnC,eAAe,EAAE,cAAc,GAAG,IAAI,CAAC;IACvC;;OAEG;IACH,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,UAAU,GAAG,IAAI,CAAC;IAC/B,UAAU,EAAE,cAAc,GAAG,IAAI,CAAC;IAClC,gBAAgB,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;IACvC,qBAAqB,CAAC,EAAE,MAAM,IAAI,CAAC;IACnC,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B,WAAW,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;CACrC;AAED,eAAO,MAAM,WAAW;;CAA4C,CAAC;AAErE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,kBAAkB,CAAC;IAC1C,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;CAC/B;AAED,eAAO,MAAM,aAAa;;CAEzB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"tree-context.js","sourceRoot":"","sources":["../../src/vscode-tree/tree-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,cAAc,CAAC;AAsB3C,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAc,aAAa,CAAC,CAAC;AAUrE,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CACxC,MAAM,CAAC,eAAe,CAAC,CACxB,CAAC","sourcesContent":["import {createContext} from '@lit/context';\nimport type {VscodeTreeItem} from '../vscode-tree-item';\nimport type {ExpandMode, IndentGuideDisplay, VscodeTree} from './vscode-tree';\n\nexport interface TreeContext {\n isShiftPressed: boolean;\n selectedItems: Set<VscodeTreeItem>;\n allItems: NodeListOf<VscodeTreeItem> | null;\n itemListUpToDate: boolean;\n focusedItem: VscodeTreeItem | null;\n prevFocusedItem: VscodeTreeItem | null;\n /** If arrows are visible and `List` component has not any branch item, the\n * extra padding should be removed in the leaf elements before the content\n */\n hasBranchItem: boolean;\n rootElement: VscodeTree | null;\n activeItem: VscodeTreeItem | null;\n highlightedItems?: Set<VscodeTreeItem>;\n highlightIndentGuides?: () => void;\n emitSelectEvent?: () => void;\n}\n\nexport const treeContext = createContext<TreeContext>('vscode-list');\n\nexport interface ConfigContext {\n readonly hideArrows: boolean;\n readonly expandMode: ExpandMode;\n readonly indent: number;\n readonly indentGuides: IndentGuideDisplay;\n readonly multiSelect: boolean;\n}\n\nexport const configContext = createContext<ConfigContext>(\n Symbol('configContext')\n);\n"]}
1
+ {"version":3,"file":"tree-context.js","sourceRoot":"","sources":["../../src/vscode-tree/tree-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,cAAc,CAAC;AAuB3C,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAc,aAAa,CAAC,CAAC;AAUrE,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CACxC,MAAM,CAAC,eAAe,CAAC,CACxB,CAAC","sourcesContent":["import {createContext} from '@lit/context';\nimport type {VscodeTreeItem} from '../vscode-tree-item';\nimport type {ExpandMode, IndentGuideDisplay, VscodeTree} from './vscode-tree';\n\nexport interface TreeContext {\n isShiftPressed: boolean;\n selectedItems: Set<VscodeTreeItem>;\n allItems: NodeListOf<VscodeTreeItem> | null;\n itemListUpToDate: boolean;\n focusedItem: VscodeTreeItem | null;\n prevFocusedItem: VscodeTreeItem | null;\n /** If arrows are visible and `List` component has not any branch item, the\n * extra padding should be removed in the leaf elements before the content\n */\n hasBranchItem: boolean;\n rootElement: VscodeTree | null;\n activeItem: VscodeTreeItem | null;\n highlightedItems?: Set<VscodeTreeItem>;\n highlightIndentGuides?: () => void;\n emitSelectEvent?: () => void;\n hoveredItem?: VscodeTreeItem | null;\n}\n\nexport const treeContext = createContext<TreeContext>('vscode-list');\n\nexport interface ConfigContext {\n readonly hideArrows: boolean;\n readonly expandMode: ExpandMode;\n readonly indent: number;\n readonly indentGuides: IndentGuideDisplay;\n readonly multiSelect: boolean;\n}\n\nexport const configContext = createContext<ConfigContext>(\n Symbol('configContext')\n);\n"]}
@@ -1,5 +1,5 @@
1
1
  import { PropertyValues, TemplateResult } from 'lit';
2
- import { VscElement } from '../includes/VscElement';
2
+ import { VscElement } from '../includes/VscElement.js';
3
3
  import type { VscodeTreeItem } from '../vscode-tree-item';
4
4
  export type VscTreeSelectEvent = CustomEvent<{
5
5
  selectedItems: VscodeTreeItem[];
@@ -1 +1 @@
1
- {"version":3,"file":"vscode-tree.d.ts","sourceRoot":"","sources":["../../src/vscode-tree/vscode-tree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAE,cAAc,EAAO,MAAM,KAAK,CAAC;AAGzD,OAAO,EAAgB,UAAU,EAAC,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,qBAAqB,CAAC;AAexD,MAAM,MAAM,kBAAkB,GAAG,WAAW,CAAC;IAAC,aAAa,EAAE,cAAc,EAAE,CAAA;CAAC,CAAC,CAAC;AAEhF,eAAO,MAAM,UAAU;;;CAGb,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,OAAO,UAAU,CAAC,CAAC;AAEtE,eAAO,MAAM,YAAY;;;;CAIf,CAAC;AAEX,MAAM,MAAM,kBAAkB,GAC5B,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC;AAuBnD;;;;;;;;;;;;;;GAcG;AACH,qBACa,UAAW,SAAQ,UAAU;IACxC,OAAgB,MAAM,+BAAU;IAIhC;;;;;;;;;;;;;OAaG;IAEH,UAAU,EAAE,UAAU,CAAiB;IAEvC;;;;OAIG;IAEH,UAAU,EAAE,OAAO,CAAS;IAE5B;;;OAGG;IAEH,MAAM,EAAE,MAAM,CAAK;IAEnB;;;;;;;;;;;;;OAaG;IAOH,YAAY,EAAE,kBAAkB,CAAa;IAE7C;;OAEG;IAEH,WAAW,EAAE,OAAO,CAAS;IAO7B,OAAO,CAAC,iBAAiB,CAiBvB;IAGF,OAAO,CAAC,cAAc,CAMpB;IAGF,OAAO,CAAC,kBAAkB,CAAoB;;IAarC,iBAAiB,IAAI,IAAI;cAMf,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAY5E;;OAEG;IACH,SAAS;IAUT;;OAEG;IACH,WAAW;IAUX;;;;OAIG;IACH,uBAAuB;IASvB,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,2BAA2B;IAcnC,OAAO,CAAC,sBAAsB;IAmB9B,OAAO,CAAC,oBAAoB;IAwB5B,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,cAAc;IAmBtB,OAAO,CAAC,sBAAsB;IAgB9B,OAAO,CAAC,qBAAqB;IA4B7B,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,iBAAiB;IAmBzB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,uBAAuB,CA8B7B;IAEF,OAAO,CAAC,qBAAqB,CAI3B;IAEF,OAAO,CAAC,iBAAiB,CAevB;IAIO,MAAM,IAAI,cAAc;CAKlC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,aAAa,EAAE,UAAU,CAAC;KAC3B;IAED,UAAU,2BAA2B;QACnC,iBAAiB,EAAE,kBAAkB,CAAC;KACvC;CACF"}
1
+ {"version":3,"file":"vscode-tree.d.ts","sourceRoot":"","sources":["../../src/vscode-tree/vscode-tree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAE,cAAc,EAAO,MAAM,KAAK,CAAC;AAGzD,OAAO,EAAgB,UAAU,EAAC,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,qBAAqB,CAAC;AAexD,MAAM,MAAM,kBAAkB,GAAG,WAAW,CAAC;IAAC,aAAa,EAAE,cAAc,EAAE,CAAA;CAAC,CAAC,CAAC;AAEhF,eAAO,MAAM,UAAU;;;CAGb,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,OAAO,UAAU,CAAC,CAAC;AAEtE,eAAO,MAAM,YAAY;;;;CAIf,CAAC;AAEX,MAAM,MAAM,kBAAkB,GAC5B,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC;AAuBnD;;;;;;;;;;;;;;GAcG;AACH,qBACa,UAAW,SAAQ,UAAU;IACxC,OAAgB,MAAM,+BAAU;IAIhC;;;;;;;;;;;;;OAaG;IAEH,UAAU,EAAE,UAAU,CAAiB;IAEvC;;;;OAIG;IAEH,UAAU,EAAE,OAAO,CAAS;IAE5B;;;OAGG;IAEH,MAAM,EAAE,MAAM,CAAK;IAEnB;;;;;;;;;;;;;OAaG;IAOH,YAAY,EAAE,kBAAkB,CAAa;IAE7C;;OAEG;IAEH,WAAW,EAAE,OAAO,CAAS;IAO7B,OAAO,CAAC,iBAAiB,CAkBvB;IAGF,OAAO,CAAC,cAAc,CAMpB;IAGF,OAAO,CAAC,kBAAkB,CAAoB;;IAarC,iBAAiB,IAAI,IAAI;cAMf,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAY5E;;OAEG;IACH,SAAS;IAUT;;OAEG;IACH,WAAW;IAUX;;;;OAIG;IACH,uBAAuB;IASvB,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,2BAA2B;IAcnC,OAAO,CAAC,sBAAsB;IAmB9B,OAAO,CAAC,oBAAoB;IAwB5B,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,cAAc;IAmBtB,OAAO,CAAC,sBAAsB;IAgB9B,OAAO,CAAC,qBAAqB;IA4B7B,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,iBAAiB;IAmBzB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,uBAAuB,CA8B7B;IAEF,OAAO,CAAC,qBAAqB,CAI3B;IAEF,OAAO,CAAC,iBAAiB,CAevB;IAIO,MAAM,IAAI,cAAc;CAKlC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,aAAa,EAAE,UAAU,CAAC;KAC3B;IAED,UAAU,2BAA2B;QACnC,iBAAiB,EAAE,kBAAkB,CAAC;KACvC;CACF"}
@@ -7,9 +7,9 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  import { html } from 'lit';
8
8
  import { provide } from '@lit/context';
9
9
  import { property, queryAssignedElements } from 'lit/decorators.js';
10
- import { customElement, VscElement } from '../includes/VscElement';
11
- import styles from './vscode-tree.styles';
12
- import { configContext, treeContext, } from './tree-context';
10
+ import { customElement, VscElement } from '../includes/VscElement.js';
11
+ import styles from './vscode-tree.styles.js';
12
+ import { configContext, treeContext, } from './tree-context.js';
13
13
  import { findNextItem, findPrevItem, findParentItem, initPathTrackerProps, } from './helpers.js';
14
14
  export const ExpandMode = {
15
15
  singleClick: 'singleClick',
@@ -102,6 +102,7 @@ let VscodeTree = class VscodeTree extends VscElement {
102
102
  isShiftPressed: false,
103
103
  activeItem: null,
104
104
  selectedItems: new Set(),
105
+ hoveredItem: null,
105
106
  allItems: null,
106
107
  itemListUpToDate: false,
107
108
  focusedItem: null,