@vscode-elements/elements 2.4.1-pre.0 → 2.4.1-pre.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"calculations.js","sourceRoot":"","sources":["../../src/vscode-table/calculations.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAa,EAAM,EAAE,CAAC,KAAW,CAAC;AACrD,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,KAAa,EAAW,EAAE,CAAC,KAAgB,CAAC;AAEpE,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,EAAM,EAAE,SAAa,EAAW,EAAE,CAC1D,OAAO,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC;AAElC,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,CAAU,EAAE,SAAa,EAAM,EAAE,CACpD,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC;AAE5B,MAAM,UAAU,qBAAqB,CACnC,MAAiB,EACjB,aAAqB,EACrB,KAAc,EACd,QAAiB;IAEjB,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;IAE3B,oDAAoD;IACpD,IAAI,KAAK,KAAK,CAAC,IAAI,aAAa,GAAG,CAAC,IAAI,aAAa,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3E,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,SAAS,GAAY,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE3C,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,MAAM,YAAY,GAAa,EAAE,CAAC;IAElC,iEAAiE;IACjE,KAAK,IAAI,CAAC,GAAG,aAAa,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC;IAED,sDAAsD;IACtD,KAAK,IAAI,CAAC,GAAG,aAAa,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvD,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IAED,gEAAgE;IAChE,MAAM,aAAa,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC;IAC7D,MAAM,WAAW,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC;IAE3D,uDAAuD;IACvD,IAAI,cAAc,GAAY,OAAO,CAAC,CAAC,CAAC,CAAC;IAEzC,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;QACpD,cAAc,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC;IACvD,CAAC;IAED,yDAAyD;IACzD,IAAI,cAAc,GAAG,SAAS,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,gEAAgE;IAChE,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;QAC9B,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;YACpB,MAAM;QACR,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;QACpD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAE5C,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACtC,SAAS,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,qDAAqD;IACrD,IAAI,KAAK,GAAY,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEvC,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;QAC5B,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChB,MAAM;QACR,CAAC;QAED,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;QACvC,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,8CAA8C;IACpE,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAOD,MAAM,OAAO,GAAa;IACxB;QACE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;QACvC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;KACrC;IACD;QACE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;QACxC,KAAK,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG;KAC1D;IACD;QACE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;QACtC,KAAK,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG;KAC7C;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,GAAoB,EACpB,IAAY,EACG,EAAE;IACjB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1D,CAAC;IAED,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACzB,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAElD,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACnD,CAAC,CAAC","sourcesContent":["export type Px = number & {readonly __unit: 'px'};\nexport type Percent = number & {readonly __unit: '%'};\n\nexport const px = (value: number): Px => value as Px;\nexport const percent = (value: number): Percent => value as Percent;\n\nexport const toPercent = (px: Px, container: Px): Percent =>\n percent((px / container) * 100);\n\nexport const toPx = (p: Percent, container: Px): Px =>\n px((p / 100) * container);\n\nexport function calculateColumnWidths(\n widths: Percent[],\n splitterIndex: number,\n delta: Percent,\n minWidth: Percent\n): Percent[] {\n const result = [...widths];\n\n // No-op for invalid splitter position or zero delta\n if (delta === 0 || splitterIndex < 0 || splitterIndex >= widths.length - 1) {\n return result;\n }\n\n const absDelta = Math.abs(delta);\n let remaining: Percent = percent(absDelta);\n\n const leftIndices: number[] = [];\n const rightIndices: number[] = [];\n\n // Collect column indices to the left of the splitter (inclusive)\n for (let i = splitterIndex; i >= 0; i--) {\n leftIndices.push(i);\n }\n\n // Collect column indices to the right of the splitter\n for (let i = splitterIndex + 1; i < widths.length; i++) {\n rightIndices.push(i);\n }\n\n // One side shrinks, the other grows depending on drag direction\n const shrinkingSide = delta > 0 ? rightIndices : leftIndices;\n const growingSide = delta > 0 ? leftIndices : rightIndices;\n\n // Calculate total shrinkable space respecting minWidth\n let totalAvailable: Percent = percent(0);\n\n for (const i of shrinkingSide) {\n const available = Math.max(0, result[i] - minWidth);\n totalAvailable = percent(totalAvailable + available);\n }\n\n // Abort if the requested delta cannot be fully satisfied\n if (totalAvailable < remaining) {\n return result;\n }\n\n // Shrink columns sequentially until the delta is fully consumed\n for (const i of shrinkingSide) {\n if (remaining === 0) {\n break;\n }\n\n const available = Math.max(0, result[i] - minWidth);\n const take = Math.min(available, remaining);\n\n result[i] = percent(result[i] - take);\n remaining = percent(remaining - take);\n }\n\n // Apply the exact opposite delta to the growing side\n let toAdd: Percent = percent(absDelta);\n\n for (const i of growingSide) {\n if (toAdd === 0) {\n break;\n }\n\n result[i] = percent(result[i] + toAdd);\n toAdd = percent(0); // all growth is applied to the nearest column\n }\n\n return result;\n}\n\ntype Parser = {\n test: (value: string) => boolean;\n parse: (value: string, base: number) => number;\n};\n\nconst parsers: Parser[] = [\n {\n test: (v) => /^-?\\d+(\\.\\d+)?%$/.test(v),\n parse: (v) => Number(v.slice(0, -1)),\n },\n {\n test: (v) => /^-?\\d+(\\.\\d+)?px$/.test(v),\n parse: (v, base) => (Number(v.slice(0, -2)) / base) * 100,\n },\n {\n test: (v) => /^-?\\d+(\\.\\d+)?$/.test(v),\n parse: (v, base) => (Number(v) / base) * 100,\n },\n];\n\nexport const parseSizeAttributeToPercent = (\n raw: string | number,\n base: number\n): number | null => {\n if (!Number.isFinite(base) || base === 0) {\n return null;\n }\n\n if (typeof raw === 'number') {\n return Number.isFinite(raw) ? (raw / base) * 100 : null;\n }\n\n const value = raw.trim();\n const parser = parsers.find((p) => p.test(value));\n\n return parser ? parser.parse(value, base) : null;\n};\n"]}
1
+ {"version":3,"file":"calculations.js","sourceRoot":"","sources":["../../src/vscode-table/calculations.ts"],"names":[],"mappings":"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","sourcesContent":["import {Percent, percent} from '../includes/sizes.js';\n\nexport function calculateColumnWidths(\n widths: Percent[],\n splitterIndex: number,\n delta: Percent,\n minWidths: Map<number, Percent>\n): Percent[] {\n const result = [...widths];\n\n // No-op for invalid splitter position or zero delta\n if (delta === 0 || splitterIndex < 0 || splitterIndex >= widths.length - 1) {\n return result;\n }\n\n const absDelta = Math.abs(delta);\n let remaining: Percent = percent(absDelta);\n\n const leftIndices: number[] = [];\n const rightIndices: number[] = [];\n\n // Collect column indices to the left of the splitter (inclusive)\n for (let i = splitterIndex; i >= 0; i--) {\n leftIndices.push(i);\n }\n\n // Collect column indices to the right of the splitter\n for (let i = splitterIndex + 1; i < widths.length; i++) {\n rightIndices.push(i);\n }\n\n // One side shrinks, the other grows depending on drag direction\n const shrinkingSide = delta > 0 ? rightIndices : leftIndices;\n const growingSide = delta > 0 ? leftIndices : rightIndices;\n\n // Calculate total shrinkable space respecting minWidth\n let totalAvailable: Percent = percent(0);\n\n for (const i of shrinkingSide) {\n const available = Math.max(0, result[i] - (minWidths.get(i) ?? 0));\n totalAvailable = percent(totalAvailable + available);\n }\n\n // Abort if the requested delta cannot be fully satisfied\n if (totalAvailable < remaining) {\n return result;\n }\n\n // Shrink columns sequentially until the delta is fully consumed\n for (const i of shrinkingSide) {\n if (remaining === 0) {\n break;\n }\n\n const available = Math.max(0, result[i] - (minWidths.get(i) ?? 0));\n const take = Math.min(available, remaining);\n\n result[i] = percent(result[i] - take);\n remaining = percent(remaining - take);\n }\n\n // Apply the exact opposite delta to the growing side\n let toAdd: Percent = percent(absDelta);\n\n for (const i of growingSide) {\n if (toAdd === 0) {\n break;\n }\n\n result[i] = percent(result[i] + toAdd);\n toAdd = percent(0); // all growth is applied to the nearest column\n }\n\n return result;\n}\n"]}
@@ -97,6 +97,7 @@ export declare class VscodeTable extends VscElement {
97
97
  private _prevHeaderHeight;
98
98
  private _prevComponentHeight;
99
99
  private _columnResizeController;
100
+ constructor();
100
101
  connectedCallback(): void;
101
102
  disconnectedCallback(): void;
102
103
  protected willUpdate(changedProperties: PropertyValues): void;
@@ -136,6 +137,7 @@ export declare class VscodeTable extends VscElement {
136
137
  private _handleSplitterPointerMove;
137
138
  private _handleSplitterPointerUp;
138
139
  private _handleSplitterPointerCancel;
140
+ private _handleMinColumnWidthChange;
139
141
  render(): TemplateResult;
140
142
  }
141
143
  declare global {
@@ -1 +1 @@
1
- {"version":3,"file":"vscode-table.d.ts","sourceRoot":"","sources":["../../src/vscode-table/vscode-table.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vscode-table.d.ts","sourceRoot":"","sources":["../../src/vscode-table/vscode-table.ts"],"names":[],"mappings":"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"}
@@ -10,10 +10,9 @@ import { classMap } from 'lit/directives/class-map.js';
10
10
  import { customElement, VscElement } from '../includes/VscElement.js';
11
11
  import { stylePropertyMap } from '../includes/style-property-map.js';
12
12
  import '../vscode-scrollable/index.js';
13
- import { parseSizeAttributeToPercent } from './calculations.js';
13
+ import { parseSizeAttributeToPercent, percent, } from '../includes/sizes.js';
14
14
  import styles from './vscode-table.styles.js';
15
15
  import { ColumnResizeController } from './ColumnResizeController.js';
16
- import { percent } from './calculations.js';
17
16
  /**
18
17
  * @tag vscode-table
19
18
  *
@@ -22,8 +21,32 @@ import { percent } from './calculations.js';
22
21
  * @cssprop [--vscode-sash-hoverBorder=#0078d4]
23
22
  */
24
23
  let VscodeTable = class VscodeTable extends VscElement {
24
+ /**
25
+ * Initial column sizes in a JSON-encoded array.
26
+ * Accepted values are:
27
+ * - number
28
+ * - string-type number (ex.: "100")
29
+ * - px value (ex.: "100px")
30
+ * - percentage value (ex.: "50%")
31
+ * - percentage value (ex.: "50%")
32
+ * - "auto" keyword
33
+ */
34
+ set columns(val) {
35
+ if (!Array.isArray(val)) {
36
+ this.warn('Invalid value for "columns": expected an array.');
37
+ this._columns = [];
38
+ return;
39
+ }
40
+ this._columns = val;
41
+ if (this.isConnected) {
42
+ this._initDefaultColumnSizes();
43
+ }
44
+ }
45
+ get columns() {
46
+ return this._columns;
47
+ }
25
48
  constructor() {
26
- super(...arguments);
49
+ super();
27
50
  /** @internal */
28
51
  this.role = 'table';
29
52
  this.resizable = false;
@@ -122,30 +145,14 @@ let VscodeTable = class VscodeTable extends VscElement {
122
145
  this._handleSplitterPointerCancel = (event) => {
123
146
  this._stopDrag(event);
124
147
  };
125
- }
126
- /**
127
- * Initial column sizes in a JSON-encoded array.
128
- * Accepted values are:
129
- * - number
130
- * - string-type number (ex.: "100")
131
- * - px value (ex.: "100px")
132
- * - percentage value (ex.: "50%")
133
- * - percentage value (ex.: "50%")
134
- * - "auto" keyword
135
- */
136
- set columns(val) {
137
- if (!Array.isArray(val)) {
138
- this.warn('Invalid value for "columns": expected an array.');
139
- this._columns = [];
140
- return;
141
- }
142
- this._columns = val;
143
- if (this.isConnected) {
144
- this._initDefaultColumnSizes();
145
- }
146
- }
147
- get columns() {
148
- return this._columns;
148
+ this._handleMinColumnWidthChange = (event) => {
149
+ const { columnIndex, propertyValue } = event.detail;
150
+ const value = parseSizeAttributeToPercent(propertyValue, this._componentW);
151
+ if (value) {
152
+ this._columnResizeController.setColumnMinWidthAt(columnIndex, value);
153
+ }
154
+ };
155
+ this.addEventListener('vsc-table-change-min-column-width', this._handleMinColumnWidthChange);
149
156
  }
150
157
  connectedCallback() {
151
158
  super.connectedCallback();
@@ -159,9 +166,19 @@ let VscodeTable = class VscodeTable extends VscElement {
159
166
  this._bodyResizeObserver?.disconnect();
160
167
  }
161
168
  willUpdate(changedProperties) {
169
+ // `minColumnWidth` has been deprecated. Until it is completely removed from
170
+ // the API, it is used as a fallback value when no min-width is specified on
171
+ // a column header cell.
162
172
  if (changedProperties.has('minColumnWidth')) {
163
173
  const value = percent(parseSizeAttributeToPercent(this.minColumnWidth, this._componentW) ?? 0);
164
- this._columnResizeController.setMinColumnWidth(value);
174
+ const prevMap = this._columnResizeController.columnMinWidths;
175
+ const widths = this._columnResizeController.columnWidths;
176
+ for (let i = 0; i < widths.length; i++) {
177
+ // Don't override the value comes form table header cell:
178
+ if (!prevMap.has(i)) {
179
+ this._columnResizeController.setColumnMinWidthAt(i, value);
180
+ }
181
+ }
165
182
  }
166
183
  }
167
184
  _memoizeComponentDimensions() {
@@ -350,6 +367,16 @@ let VscodeTable = class VscodeTable extends VscElement {
350
367
  }
351
368
  _onHeaderSlotChange() {
352
369
  this._headerCells = this._queryHeaderCells();
370
+ const minWidths = [];
371
+ minWidths.fill(percent(0), 0, this._headerCells.length - 1);
372
+ this._headerCells.forEach((c, i) => {
373
+ c.index = i;
374
+ if (c.minWidth) {
375
+ const minWidth = parseSizeAttributeToPercent(c.minWidth, this._componentW) ??
376
+ percent(0);
377
+ this._columnResizeController.setColumnMinWidthAt(i, minWidth);
378
+ }
379
+ });
353
380
  }
354
381
  _onBodySlotChange() {
355
382
  this._initDefaultColumnSizes();
@@ -1 +1 @@
1
- {"version":3,"file":"vscode-table.js","sourceRoot":"","sources":["../../src/vscode-table/vscode-table.ts"],"names":[],"mappings":"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","sourcesContent":["import {html, PropertyValues, TemplateResult} from 'lit';\nimport {\n property,\n query,\n queryAll,\n queryAssignedElements,\n state,\n} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport {customElement, VscElement} from '../includes/VscElement.js';\nimport {stylePropertyMap} from '../includes/style-property-map.js';\nimport '../vscode-scrollable/index.js';\nimport {VscodeScrollable} from '../vscode-scrollable/index.js';\nimport {VscodeTableBody} from '../vscode-table-body/index.js';\nimport {VscodeTableCell} from '../vscode-table-cell/index.js';\nimport {VscodeTableHeader} from '../vscode-table-header/index.js';\nimport {VscodeTableHeaderCell} from '../vscode-table-header-cell/index.js';\nimport {parseSizeAttributeToPercent} from './calculations.js';\nimport styles from './vscode-table.styles.js';\nimport {ColumnResizeController} from './ColumnResizeController.js';\nimport {percent} from './calculations.js';\n\n/**\n * @tag vscode-table\n *\n * @cssprop [--vscode-editorGroup-border=rgba(255, 255, 255, 0.09)]\n * @cssprop [--vscode-keybindingTable-rowsBackground=rgba(204, 204, 204, 0.04)]\n * @cssprop [--vscode-sash-hoverBorder=#0078d4]\n */\n@customElement('vscode-table')\nexport class VscodeTable extends VscElement {\n static override styles = styles;\n\n /** @internal */\n @property({reflect: true})\n override role = 'table';\n\n @property({type: Boolean, reflect: true})\n resizable = false;\n\n @property({type: Boolean, reflect: true})\n responsive = false;\n\n /**\n * Both rows and columns are separated by borders.\n */\n @property({type: Boolean, reflect: true})\n bordered = false;\n\n /**\n * Columns are separated by borders.\n */\n @property({type: Boolean, reflect: true, attribute: 'bordered-columns'})\n borderedColumns = false;\n\n /**\n * Rows are separated by borders.\n */\n @property({type: Boolean, reflect: true, attribute: 'bordered-rows'})\n borderedRows = false;\n\n @property({type: Number})\n breakpoint = 300;\n\n /**\n * Initial column sizes in a JSON-encoded array.\n * Accepted values are:\n * - number\n * - string-type number (ex.: \"100\")\n * - px value (ex.: \"100px\")\n * - percentage value (ex.: \"50%\")\n * - percentage value (ex.: \"50%\")\n * - \"auto\" keyword\n */\n @property({type: Array})\n set columns(val: string[]) {\n if (!Array.isArray(val)) {\n this.warn('Invalid value for \"columns\": expected an array.');\n this._columns = [];\n\n return;\n }\n\n this._columns = val;\n\n if (this.isConnected) {\n this._initDefaultColumnSizes();\n }\n }\n get columns(): string[] {\n return this._columns;\n }\n\n /**\n * Minimum column width. Valid values are:\n * - number\n * - string-type number (ex.: \"100\")\n * - px value (ex.: \"100px\")\n * - percentage value (ex.: \"50%\")\n * - percentage value (ex.: \"50%\")\n * - \"auto\" keyword\n */\n @property({attribute: 'min-column-width'})\n minColumnWidth = '50px';\n\n @property({type: Boolean, reflect: true, attribute: 'delayed-resizing'})\n delayedResizing = false;\n\n /**\n * @internal\n */\n @property({type: Boolean, reflect: true})\n compact = false;\n\n /**\n * Zebra stripes, even rows are tinted.\n */\n @property({type: Boolean, reflect: true})\n zebra = false;\n\n /**\n * Zebra stripes, odd rows are tinted.\n */\n @property({type: Boolean, reflect: true, attribute: 'zebra-odd'})\n zebraOdd = false;\n\n @query('.header')\n private _headerElement!: HTMLDivElement;\n\n @query('.scrollable')\n private _scrollableElement!: VscodeScrollable;\n\n @queryAll('.sash-visible')\n private _sashVisibleElements!: HTMLDivElement[];\n\n @queryAssignedElements({\n flatten: true,\n selector: 'vscode-table-header, vscode-table-body',\n })\n private _assignedElements!: NodeListOf<HTMLElement>;\n\n @queryAssignedElements({\n slot: 'header',\n flatten: true,\n selector: 'vscode-table-header',\n })\n private _assignedHeaderElements!: NodeListOf<VscodeTableHeader>;\n\n @queryAssignedElements({\n slot: 'body',\n flatten: true,\n selector: 'vscode-table-body',\n })\n private _assignedBodyElements!: NodeListOf<VscodeTableBody>;\n\n /**\n * Sash positions in percentage\n */\n @state()\n private _sashPositions: number[] = [];\n\n @state()\n private _isDragging = false;\n\n /**\n * Sash hover state flags, used in the render.\n */\n private _sashHovers: boolean[] = [];\n private _columns: string[] = [];\n private _componentResizeObserver?: ResizeObserver;\n private _headerResizeObserver?: ResizeObserver;\n private _bodyResizeObserver?: ResizeObserver;\n private _activeSashElementIndex = -1;\n private _componentH = 0;\n private _componentW = 0;\n /**\n * Cached querySelectorAll result. Updated when the header slot changes.\n * It shouldn't be used directly, check the \"_getHeaderCells\" function.\n */\n private _headerCells: VscodeTableHeaderCell[] = [];\n /**\n * Cached querySelectorAll result. Updated when the body slot changes.\n * It shouldn't be used directly, check the \"_getCellsOfFirstRow\" function.\n */\n private _cellsOfFirstRow: VscodeTableCell[] = [];\n private _prevHeaderHeight = 0;\n private _prevComponentHeight = 0;\n\n private _columnResizeController = new ColumnResizeController(this);\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n this._memoizeComponentDimensions();\n this._initDefaultColumnSizes();\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this._componentResizeObserver?.unobserve(this);\n this._componentResizeObserver?.disconnect();\n this._bodyResizeObserver?.disconnect();\n }\n\n protected override willUpdate(changedProperties: PropertyValues): void {\n if (changedProperties.has('minColumnWidth')) {\n const value = percent(\n parseSizeAttributeToPercent(this.minColumnWidth, this._componentW) ?? 0\n );\n this._columnResizeController.setMinColumnWidth(value);\n }\n }\n\n private _memoizeComponentDimensions() {\n const cr = this.getBoundingClientRect();\n\n this._componentH = cr.height;\n this._componentW = cr.width;\n }\n\n private _queryHeaderCells() {\n const headers = this._assignedHeaderElements;\n\n if (!(headers && headers[0])) {\n return [];\n }\n\n return Array.from(\n headers[0].querySelectorAll<VscodeTableHeaderCell>(\n 'vscode-table-header-cell'\n )\n );\n }\n\n /**\n * Get cached header cells\n */\n private _getHeaderCells() {\n if (!this._headerCells.length) {\n this._headerCells = this._queryHeaderCells();\n }\n\n return this._headerCells;\n }\n\n private _queryCellsOfFirstRow() {\n const assignedBodyElements = this._assignedBodyElements;\n\n if (!(assignedBodyElements && assignedBodyElements[0])) {\n return [];\n }\n\n return Array.from(\n assignedBodyElements[0].querySelectorAll<VscodeTableCell>(\n 'vscode-table-row:first-child vscode-table-cell'\n )\n );\n }\n\n /**\n * Get cached cells of first row\n */\n private _getCellsOfFirstRow() {\n if (!this._cellsOfFirstRow.length) {\n this._cellsOfFirstRow = this._queryCellsOfFirstRow();\n }\n\n return this._cellsOfFirstRow;\n }\n\n private _resizeTableBody() {\n let headerHeight = 0;\n let tbodyHeight = 0;\n const tableHeight = this.getBoundingClientRect().height;\n\n if (this._assignedHeaderElements && this._assignedHeaderElements.length) {\n headerHeight =\n this._assignedHeaderElements[0].getBoundingClientRect().height;\n }\n\n if (this._assignedBodyElements && this._assignedBodyElements.length) {\n tbodyHeight =\n this._assignedBodyElements[0].getBoundingClientRect().height;\n }\n\n const overflownContentHeight = tbodyHeight - headerHeight - tableHeight;\n\n this._scrollableElement.style.height =\n overflownContentHeight > 0 ? `${tableHeight - headerHeight}px` : 'auto';\n }\n\n private _initResizeObserver() {\n this._componentResizeObserver = new ResizeObserver(\n this._componentResizeObserverCallback\n );\n this._componentResizeObserver.observe(this);\n\n this._headerResizeObserver = new ResizeObserver(\n this._headerResizeObserverCallback\n );\n this._headerResizeObserver.observe(this._headerElement);\n }\n\n private _componentResizeObserverCallback = () => {\n this._memoizeComponentDimensions();\n this._updateResizeHandlersSize();\n\n if (this.responsive) {\n this._toggleCompactView();\n }\n\n this._resizeTableBody();\n };\n\n private _headerResizeObserverCallback = () => {\n this._updateResizeHandlersSize();\n };\n\n private _bodyResizeObserverCallback = () => {\n this._resizeTableBody();\n };\n\n private _calculateInitialColumnWidths(): number[] {\n const numCols = this._getHeaderCells().length;\n let cols: (string | number)[] = this.columns.slice(0, numCols);\n const numAutoCols =\n cols.filter((c) => c === 'auto').length + numCols - cols.length;\n let availablePercent = 100;\n\n cols = cols.map((col) => {\n const percentage = parseSizeAttributeToPercent(col, this._componentW);\n\n if (percentage === null) {\n return 'auto';\n }\n\n availablePercent -= percentage;\n\n return percentage;\n });\n\n if (cols.length < numCols) {\n for (let i = cols.length; i < numCols; i++) {\n cols.push('auto');\n }\n }\n\n cols = cols.map((col) => {\n if (col === 'auto') {\n return availablePercent / numAutoCols;\n }\n\n return col as number;\n });\n\n return cols as number[];\n }\n\n private _initHeaderCellSizes(colWidths: number[]) {\n this._getHeaderCells().forEach((cell, index) => {\n cell.style.width = `${colWidths[index]}%`;\n });\n }\n\n private _initBodyColumnSizes(colWidths: number[]) {\n this._getCellsOfFirstRow().forEach((cell, index) => {\n cell.style.width = `${colWidths[index]}%`;\n });\n }\n\n private _initSashes(colWidths: number[]) {\n const l = colWidths.length;\n let prevHandlerPos = 0;\n this._sashPositions = [];\n\n colWidths.forEach((collW, index) => {\n if (index < l - 1) {\n const pos = prevHandlerPos + collW;\n\n this._sashPositions.push(pos);\n prevHandlerPos = pos;\n }\n });\n }\n\n private _initDefaultColumnSizes() {\n const colWidths = this._calculateInitialColumnWidths();\n this._columnResizeController.setColumWidths(\n colWidths.map((c) => percent(c))\n );\n\n this._initHeaderCellSizes(colWidths);\n this._initBodyColumnSizes(colWidths);\n this._initSashes(colWidths);\n }\n\n private _updateResizeHandlersSize() {\n const headerCr = this._headerElement.getBoundingClientRect();\n\n if (\n headerCr.height === this._prevHeaderHeight &&\n this._componentH === this._prevComponentHeight\n ) {\n return;\n }\n\n this._prevHeaderHeight = headerCr.height;\n this._prevComponentHeight = this._componentH;\n\n const bodyHeight = this._componentH - headerCr.height;\n\n this._sashVisibleElements.forEach((el) => {\n el.style.height = `${bodyHeight}px`;\n el.style.top = `${headerCr.height}px`;\n });\n }\n\n private _applyCompactViewColumnLabels() {\n const headerCells = this._getHeaderCells();\n const labels = headerCells.map((c) => c.innerText);\n const rows = this.querySelectorAll('vscode-table-row');\n\n rows.forEach((r) => {\n const cells = r.querySelectorAll('vscode-table-cell');\n\n cells.forEach((c, i) => {\n c.columnLabel = labels[i];\n c.compact = true;\n });\n });\n }\n\n private _clearCompactViewColumnLabels() {\n this.querySelectorAll('vscode-table-cell').forEach((c) => {\n c.columnLabel = '';\n c.compact = false;\n });\n }\n\n private _toggleCompactView() {\n const cr = this.getBoundingClientRect();\n const nextCompactView = cr.width < this.breakpoint;\n\n if (this.compact !== nextCompactView) {\n this.compact = nextCompactView;\n\n if (nextCompactView) {\n this._applyCompactViewColumnLabels();\n } else {\n this._clearCompactViewColumnLabels();\n }\n }\n }\n\n private _stopDrag(event: PointerEvent) {\n const activeSplitter = this._columnResizeController.getActiveSplitter();\n\n if (activeSplitter) {\n activeSplitter.removeEventListener(\n 'pointermove',\n this._handleSplitterPointerMove\n );\n activeSplitter.removeEventListener(\n 'pointerup',\n this._handleSplitterPointerUp\n );\n activeSplitter.removeEventListener(\n 'pointercancel',\n this._handleSplitterPointerCancel\n );\n }\n\n this._columnResizeController.stopDrag(event);\n this._resizeColumns(true);\n\n this._sashHovers[this._activeSashElementIndex] = false;\n this._isDragging = false;\n this._activeSashElementIndex = -1;\n }\n\n private _onDefaultSlotChange() {\n this._assignedElements.forEach((el) => {\n if (el.tagName.toLowerCase() === 'vscode-table-header') {\n el.slot = 'header';\n return;\n }\n\n if (el.tagName.toLowerCase() === 'vscode-table-body') {\n el.slot = 'body';\n return;\n }\n });\n }\n\n private _onHeaderSlotChange() {\n this._headerCells = this._queryHeaderCells();\n }\n\n private _onBodySlotChange() {\n this._initDefaultColumnSizes();\n this._initResizeObserver();\n this._updateResizeHandlersSize();\n\n if (!this._bodyResizeObserver) {\n const tbody = this._assignedBodyElements[0] ?? null;\n\n if (tbody) {\n this._bodyResizeObserver = new ResizeObserver(\n this._bodyResizeObserverCallback\n );\n this._bodyResizeObserver.observe(tbody);\n }\n }\n }\n\n private _onSashMouseOver(event: MouseEvent) {\n if (this._isDragging) {\n return;\n }\n\n const target = event.currentTarget as HTMLDivElement;\n const index = Number(target.dataset.index);\n this._sashHovers[index] = true;\n this.requestUpdate();\n }\n\n private _onSashMouseOut(event: MouseEvent) {\n event.stopPropagation();\n\n if (this._isDragging) {\n return;\n }\n\n const target = event.currentTarget as HTMLDivElement;\n const index = Number(target.dataset.index);\n this._sashHovers[index] = false;\n this.requestUpdate();\n }\n\n private _resizeColumns(resizeBodyCells = true) {\n const widths = this._columnResizeController.columnWidths;\n\n const headerCells = this._getHeaderCells();\n headerCells.forEach((h, i) => (h.style.width = `${widths[i]}%`));\n\n if (resizeBodyCells) {\n const firstRowCells = this._getCellsOfFirstRow();\n firstRowCells.forEach((c, i) => (c.style.width = `${widths[i]}%`));\n }\n }\n\n private _handleSplitterPointerDown(event: PointerEvent) {\n event.stopPropagation();\n\n const activeSplitter = event.currentTarget as HTMLElement;\n\n this._columnResizeController\n .saveHostDimensions()\n .setActiveSplitter(activeSplitter)\n .startDrag(event);\n\n activeSplitter.addEventListener(\n 'pointermove',\n this._handleSplitterPointerMove\n );\n activeSplitter.addEventListener('pointerup', this._handleSplitterPointerUp);\n activeSplitter.addEventListener(\n 'pointercancel',\n this._handleSplitterPointerCancel\n );\n }\n\n private _handleSplitterPointerMove = (event: PointerEvent) => {\n if (!this._columnResizeController.shouldDrag(event)) {\n return;\n }\n\n this._columnResizeController.drag(event);\n if (!this.delayedResizing) {\n this._resizeColumns(true);\n } else {\n this._resizeColumns(false);\n }\n };\n\n private _handleSplitterPointerUp = (event: PointerEvent) => {\n this._stopDrag(event);\n };\n\n private _handleSplitterPointerCancel = (event: PointerEvent) => {\n this._stopDrag(event);\n };\n\n override render(): TemplateResult {\n const splitterPositions = this._columnResizeController.splitterPositions;\n\n const sashes = splitterPositions.map((val, index) => {\n const classes = classMap({\n sash: true,\n hover: this._sashHovers[index],\n resizable: this.resizable,\n });\n\n const left = `${val}%`;\n\n return this.resizable\n ? html`\n <div\n class=${classes}\n data-index=${index}\n .style=${stylePropertyMap({left})}\n @pointerdown=${this._handleSplitterPointerDown}\n @mouseover=${this._onSashMouseOver}\n @mouseout=${this._onSashMouseOut}\n >\n <div class=\"sash-visible\"></div>\n <div class=\"sash-clickable\"></div>\n </div>\n `\n : html`<div\n class=${classes}\n data-index=${index}\n .style=${stylePropertyMap({left})}\n >\n <div class=\"sash-visible\"></div>\n </div>`;\n });\n\n const wrapperClasses = classMap({\n wrapper: true,\n 'select-disabled': this._columnResizeController.isDragging,\n 'resize-cursor': this._columnResizeController.isDragging,\n 'compact-view': this.compact,\n });\n\n return html`\n <div class=${wrapperClasses}>\n <div class=\"header\">\n <slot name=\"caption\"></slot>\n <div class=\"header-slot-wrapper\">\n <slot name=\"header\" @slotchange=${this._onHeaderSlotChange}></slot>\n </div>\n </div>\n <vscode-scrollable class=\"scrollable\">\n <div>\n <slot name=\"body\" @slotchange=${this._onBodySlotChange}></slot>\n </div>\n </vscode-scrollable>\n ${sashes}\n <slot @slotchange=${this._onDefaultSlotChange}></slot>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'vscode-table': VscodeTable;\n }\n}\n"]}
1
+ {"version":3,"file":"vscode-table.js","sourceRoot":"","sources":["../../src/vscode-table/vscode-table.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAC,IAAI,EAAiC,MAAM,KAAK,CAAC;AACzD,OAAO,EACL,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,qBAAqB,EACrB,KAAK,GACN,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAC,QAAQ,EAAC,MAAM,6BAA6B,CAAC;AACrD,OAAO,EAAC,aAAa,EAAE,UAAU,EAAC,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAC,gBAAgB,EAAC,MAAM,mCAAmC,CAAC;AACnE,OAAO,+BAA+B,CAAC;AAMvC,OAAO,EACL,2BAA2B,EAE3B,OAAO,GACR,MAAM,sBAAsB,CAAC;AAC9B,OAAO,MAAM,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAC,sBAAsB,EAAC,MAAM,6BAA6B,CAAC;AAGnE;;;;;;GAMG;AAEI,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,UAAU;IAkCzC;;;;;;;;;OASG;IAEH,IAAI,OAAO,CAAC,GAAa;QACvB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;YAC7D,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;YAEnB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;QAEpB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,uBAAuB,EAAE,CAAC;QACjC,CAAC;IACH,CAAC;IACD,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAmGD;QACE,KAAK,EAAE,CAAC;QA9JV,gBAAgB;QAEP,SAAI,GAAG,OAAO,CAAC;QAGxB,cAAS,GAAG,KAAK,CAAC;QAGlB,eAAU,GAAG,KAAK,CAAC;QAEnB;;WAEG;QAEH,aAAQ,GAAG,KAAK,CAAC;QAEjB;;WAEG;QAEH,oBAAe,GAAG,KAAK,CAAC;QAExB;;WAEG;QAEH,iBAAY,GAAG,KAAK,CAAC;QAGrB,eAAU,GAAG,GAAG,CAAC;QA+BjB;;;;;;;;WAQG;QAEH,mBAAc,GAAG,MAAM,CAAC;QAGxB,oBAAe,GAAG,KAAK,CAAC;QAExB;;WAEG;QAEH,YAAO,GAAG,KAAK,CAAC;QAEhB;;WAEG;QAEH,UAAK,GAAG,KAAK,CAAC;QAEd;;WAEG;QAEH,aAAQ,GAAG,KAAK,CAAC;QA+BjB;;WAEG;QAEK,mBAAc,GAAa,EAAE,CAAC;QAG9B,gBAAW,GAAG,KAAK,CAAC;QAE5B;;WAEG;QACK,gBAAW,GAAc,EAAE,CAAC;QAC5B,aAAQ,GAAa,EAAE,CAAC;QAIxB,4BAAuB,GAAG,CAAC,CAAC,CAAC;QAC7B,gBAAW,GAAG,CAAC,CAAC;QAChB,gBAAW,GAAG,CAAC,CAAC;QACxB;;;WAGG;QACK,iBAAY,GAA4B,EAAE,CAAC;QACnD;;;WAGG;QACK,qBAAgB,GAAsB,EAAE,CAAC;QACzC,sBAAiB,GAAG,CAAC,CAAC;QACtB,yBAAoB,GAAG,CAAC,CAAC;QAEzB,4BAAuB,GAAG,IAAI,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAuI3D,qCAAgC,GAAG,GAAG,EAAE;YAC9C,IAAI,CAAC,2BAA2B,EAAE,CAAC;YACnC,IAAI,CAAC,yBAAyB,EAAE,CAAC;YAEjC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC5B,CAAC;YAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1B,CAAC,CAAC;QAEM,kCAA6B,GAAG,GAAG,EAAE;YAC3C,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACnC,CAAC,CAAC;QAEM,gCAA2B,GAAG,GAAG,EAAE;YACzC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1B,CAAC,CAAC;QAyQM,+BAA0B,GAAG,CAAC,KAAmB,EAAE,EAAE;YAC3D,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpD,OAAO;YACT,CAAC;YAED,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC1B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC,CAAC;QAEM,6BAAwB,GAAG,CAAC,KAAmB,EAAE,EAAE;YACzD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC,CAAC;QAEM,iCAA4B,GAAG,CAAC,KAAmB,EAAE,EAAE;YAC7D,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC,CAAC;QAEM,gCAA2B,GAAG,CACpC,KAAwC,EACxC,EAAE;YACF,MAAM,EAAC,WAAW,EAAE,aAAa,EAAC,GAAG,KAAK,CAAC,MAAM,CAAC;YAClD,MAAM,KAAK,GAAG,2BAA2B,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YAE3E,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YACvE,CAAC;QACH,CAAC,CAAC;QA1bA,IAAI,CAAC,gBAAgB,CACnB,mCAAmC,EACnC,IAAI,CAAC,2BAA2B,CACjC,CAAC;IACJ,CAAC;IAEQ,iBAAiB;QACxB,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAE1B,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,uBAAuB,EAAE,CAAC;IACjC,CAAC;IAEQ,oBAAoB;QAC3B,KAAK,CAAC,oBAAoB,EAAE,CAAC;QAC7B,IAAI,CAAC,wBAAwB,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,wBAAwB,EAAE,UAAU,EAAE,CAAC;QAC5C,IAAI,CAAC,mBAAmB,EAAE,UAAU,EAAE,CAAC;IACzC,CAAC;IAEkB,UAAU,CAAC,iBAAiC;QAC7D,4EAA4E;QAC5E,4EAA4E;QAC5E,wBAAwB;QACxB,IAAI,iBAAiB,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC5C,MAAM,KAAK,GAAG,OAAO,CACnB,2BAA2B,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CACxE,CAAC;YACF,MAAM,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC,eAAe,CAAC;YAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC;YAEzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACvC,yDAAyD;gBACzD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;oBACpB,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBAC7D,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAEO,2BAA2B;QACjC,MAAM,EAAE,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAExC,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,KAAK,CAAC;IAC9B,CAAC;IAEO,iBAAiB;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC;QAE7C,IAAI,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CACf,OAAO,CAAC,CAAC,CAAC,CAAC,gBAAgB,CACzB,0BAA0B,CAC3B,CACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,eAAe;QACrB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;YAC9B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC/C,CAAC;QAED,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAEO,qBAAqB;QAC3B,MAAM,oBAAoB,GAAG,IAAI,CAAC,qBAAqB,CAAC;QAExD,IAAI,CAAC,CAAC,oBAAoB,IAAI,oBAAoB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACvD,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CACf,oBAAoB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CACtC,gDAAgD,CACjD,CACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,mBAAmB;QACzB,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;YAClC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACvD,CAAC;QAED,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAEO,gBAAgB;QACtB,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;QAExD,IAAI,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,CAAC;YACxE,YAAY;gBACV,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;QACnE,CAAC;QAED,IAAI,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,CAAC;YACpE,WAAW;gBACT,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;QACjE,CAAC;QAED,MAAM,sBAAsB,GAAG,WAAW,GAAG,YAAY,GAAG,WAAW,CAAC;QAExE,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,MAAM;YAClC,sBAAsB,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,GAAG,YAAY,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;IAC5E,CAAC;IAEO,mBAAmB;QACzB,IAAI,CAAC,wBAAwB,GAAG,IAAI,cAAc,CAChD,IAAI,CAAC,gCAAgC,CACtC,CAAC;QACF,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAE5C,IAAI,CAAC,qBAAqB,GAAG,IAAI,cAAc,CAC7C,IAAI,CAAC,6BAA6B,CACnC,CAAC;QACF,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC1D,CAAC;IAqBO,6BAA6B;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC;QAC9C,IAAI,IAAI,GAAwB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAC/D,MAAM,WAAW,GACf,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;QAClE,IAAI,gBAAgB,GAAG,GAAG,CAAC;QAE3B,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACtB,MAAM,UAAU,GAAG,2BAA2B,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YAEtE,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;gBACxB,OAAO,MAAM,CAAC;YAChB,CAAC;YAED,gBAAgB,IAAI,UAAU,CAAC;YAE/B,OAAO,UAAU,CAAC;QACpB,CAAC,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,MAAM,GAAG,OAAO,EAAE,CAAC;YAC1B,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;QAED,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACtB,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;gBACnB,OAAO,gBAAgB,GAAG,WAAW,CAAC;YACxC,CAAC;YAED,OAAO,GAAa,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,OAAO,IAAgB,CAAC;IAC1B,CAAC;IAEO,oBAAoB,CAAC,SAAmB;QAC9C,IAAI,CAAC,eAAe,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YAC7C,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,oBAAoB,CAAC,SAAmB;QAC9C,IAAI,CAAC,mBAAmB,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACjD,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,WAAW,CAAC,SAAmB;QACrC,MAAM,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC;QAC3B,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QAEzB,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACjC,IAAI,KAAK,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAClB,MAAM,GAAG,GAAG,cAAc,GAAG,KAAK,CAAC;gBAEnC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC9B,cAAc,GAAG,GAAG,CAAC;YACvB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,uBAAuB;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,6BAA6B,EAAE,CAAC;QACvD,IAAI,CAAC,uBAAuB,CAAC,cAAc,CACzC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CACjC,CAAC;QAEF,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;QACrC,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;QACrC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAC9B,CAAC;IAEO,yBAAyB;QAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,qBAAqB,EAAE,CAAC;QAE7D,IACE,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,iBAAiB;YAC1C,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,oBAAoB,EAC9C,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,MAAM,CAAC;QACzC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,WAAW,CAAC;QAE7C,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC;QAEtD,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YACvC,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,UAAU,IAAI,CAAC;YACpC,EAAE,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,6BAA6B;QACnC,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACnD,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;QAEvD,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACjB,MAAM,KAAK,GAAG,CAAC,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;YAEtD,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACrB,CAAC,CAAC,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC1B,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;YACnB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,6BAA6B;QACnC,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACvD,CAAC,CAAC,WAAW,GAAG,EAAE,CAAC;YACnB,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC;QACpB,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,kBAAkB;QACxB,MAAM,EAAE,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACxC,MAAM,eAAe,GAAG,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;QAEnD,IAAI,IAAI,CAAC,OAAO,KAAK,eAAe,EAAE,CAAC;YACrC,IAAI,CAAC,OAAO,GAAG,eAAe,CAAC;YAE/B,IAAI,eAAe,EAAE,CAAC;gBACpB,IAAI,CAAC,6BAA6B,EAAE,CAAC;YACvC,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,6BAA6B,EAAE,CAAC;YACvC,CAAC;QACH,CAAC;IACH,CAAC;IAEO,SAAS,CAAC,KAAmB;QACnC,MAAM,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAAC,iBAAiB,EAAE,CAAC;QAExE,IAAI,cAAc,EAAE,CAAC;YACnB,cAAc,CAAC,mBAAmB,CAChC,aAAa,EACb,IAAI,CAAC,0BAA0B,CAChC,CAAC;YACF,cAAc,CAAC,mBAAmB,CAChC,WAAW,EACX,IAAI,CAAC,wBAAwB,CAC9B,CAAC;YACF,cAAc,CAAC,mBAAmB,CAChC,eAAe,EACf,IAAI,CAAC,4BAA4B,CAClC,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAE1B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,KAAK,CAAC;QACvD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC,CAAC;IACpC,CAAC;IAEO,oBAAoB;QAC1B,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YACpC,IAAI,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,qBAAqB,EAAE,CAAC;gBACvD,EAAE,CAAC,IAAI,GAAG,QAAQ,CAAC;gBACnB,OAAO;YACT,CAAC;YAED,IAAI,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,mBAAmB,EAAE,CAAC;gBACrD,EAAE,CAAC,IAAI,GAAG,MAAM,CAAC;gBACjB,OAAO;YACT,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,mBAAmB;QACzB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC7C,MAAM,SAAS,GAAc,EAAE,CAAC;QAChC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAE5D,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACjC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;YAEZ,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACf,MAAM,QAAQ,GACZ,2BAA2B,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC;oBACzD,OAAO,CAAC,CAAC,CAAC,CAAC;gBACb,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;YAChE,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,iBAAiB;QACvB,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,yBAAyB,EAAE,CAAC;QAEjC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;YAEpD,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,CAAC,mBAAmB,GAAG,IAAI,cAAc,CAC3C,IAAI,CAAC,2BAA2B,CACjC,CAAC;gBACF,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;IACH,CAAC;IAEO,gBAAgB,CAAC,KAAiB;QACxC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,KAAK,CAAC,aAA+B,CAAC;QACrD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAEO,eAAe,CAAC,KAAiB;QACvC,KAAK,CAAC,eAAe,EAAE,CAAC;QAExB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,KAAK,CAAC,aAA+B,CAAC;QACrD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;QAChC,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAEO,cAAc,CAAC,eAAe,GAAG,IAAI;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC;QAEzD,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC3C,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAEjE,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACjD,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAEO,0BAA0B,CAAC,KAAmB;QACpD,KAAK,CAAC,eAAe,EAAE,CAAC;QAExB,MAAM,cAAc,GAAG,KAAK,CAAC,aAA4B,CAAC;QAE1D,IAAI,CAAC,uBAAuB;aACzB,kBAAkB,EAAE;aACpB,iBAAiB,CAAC,cAAc,CAAC;aACjC,SAAS,CAAC,KAAK,CAAC,CAAC;QAEpB,cAAc,CAAC,gBAAgB,CAC7B,aAAa,EACb,IAAI,CAAC,0BAA0B,CAChC,CAAC;QACF,cAAc,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAC5E,cAAc,CAAC,gBAAgB,CAC7B,eAAe,EACf,IAAI,CAAC,4BAA4B,CAClC,CAAC;IACJ,CAAC;IAkCQ,MAAM;QACb,MAAM,iBAAiB,GAAG,IAAI,CAAC,uBAAuB,CAAC,iBAAiB,CAAC;QAEzE,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YAClD,MAAM,OAAO,GAAG,QAAQ,CAAC;gBACvB,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;gBAC9B,SAAS,EAAE,IAAI,CAAC,SAAS;aAC1B,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC;YAEvB,OAAO,IAAI,CAAC,SAAS;gBACnB,CAAC,CAAC,IAAI,CAAA;;sBAEQ,OAAO;2BACF,KAAK;uBACT,gBAAgB,CAAC,EAAC,IAAI,EAAC,CAAC;6BAClB,IAAI,CAAC,0BAA0B;2BACjC,IAAI,CAAC,gBAAgB;0BACtB,IAAI,CAAC,eAAe;;;;;WAKnC;gBACH,CAAC,CAAC,IAAI,CAAA;oBACM,OAAO;yBACF,KAAK;qBACT,gBAAgB,CAAC,EAAC,IAAI,EAAC,CAAC;;;iBAG5B,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,MAAM,cAAc,GAAG,QAAQ,CAAC;YAC9B,OAAO,EAAE,IAAI;YACb,iBAAiB,EAAE,IAAI,CAAC,uBAAuB,CAAC,UAAU;YAC1D,eAAe,EAAE,IAAI,CAAC,uBAAuB,CAAC,UAAU;YACxD,cAAc,EAAE,IAAI,CAAC,OAAO;SAC7B,CAAC,CAAC;QAEH,OAAO,IAAI,CAAA;mBACI,cAAc;;;;8CAIa,IAAI,CAAC,mBAAmB;;;;;4CAK1B,IAAI,CAAC,iBAAiB;;;UAGxD,MAAM;4BACY,IAAI,CAAC,oBAAoB;;KAEhD,CAAC;IACJ,CAAC;;AAzpBe,kBAAM,GAAG,MAAM,AAAT,CAAU;AAIvB;IADR,QAAQ,CAAC,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC;yCACF;AAGxB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;8CACvB;AAGlB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;+CACtB;AAMnB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;6CACxB;AAMjB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,kBAAkB,EAAC,CAAC;oDAChD;AAMxB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,EAAC,CAAC;iDAChD;AAGrB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;+CACR;AAajB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,KAAK,EAAC,CAAC;0CAcvB;AAeD;IADC,QAAQ,CAAC,EAAC,SAAS,EAAE,kBAAkB,EAAC,CAAC;mDAClB;AAGxB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,kBAAkB,EAAC,CAAC;oDAChD;AAMxB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;4CACzB;AAMhB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;0CAC3B;AAMd;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAC,CAAC;6CAChD;AAGT;IADP,KAAK,CAAC,SAAS,CAAC;mDACuB;AAGhC;IADP,KAAK,CAAC,aAAa,CAAC;uDACyB;AAGtC;IADP,QAAQ,CAAC,eAAe,CAAC;yDACsB;AAMxC;IAJP,qBAAqB,CAAC;QACrB,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,wCAAwC;KACnD,CAAC;sDACkD;AAO5C;IALP,qBAAqB,CAAC;QACrB,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,qBAAqB;KAChC,CAAC;4DAC8D;AAOxD;IALP,qBAAqB,CAAC;QACrB,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,mBAAmB;KAC9B,CAAC;0DAC0D;AAMpD;IADP,KAAK,EAAE;mDAC8B;AAG9B;IADP,KAAK,EAAE;gDACoB;AApIjB,WAAW;IADvB,aAAa,CAAC,cAAc,CAAC;GACjB,WAAW,CA2pBvB","sourcesContent":["import {html, PropertyValues, TemplateResult} from 'lit';\nimport {\n property,\n query,\n queryAll,\n queryAssignedElements,\n state,\n} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport {customElement, VscElement} from '../includes/VscElement.js';\nimport {stylePropertyMap} from '../includes/style-property-map.js';\nimport '../vscode-scrollable/index.js';\nimport {VscodeScrollable} from '../vscode-scrollable/index.js';\nimport {VscodeTableBody} from '../vscode-table-body/index.js';\nimport {VscodeTableCell} from '../vscode-table-cell/index.js';\nimport {VscodeTableHeader} from '../vscode-table-header/index.js';\nimport {VscodeTableHeaderCell} from '../vscode-table-header-cell/index.js';\nimport {\n parseSizeAttributeToPercent,\n Percent,\n percent,\n} from '../includes/sizes.js';\nimport styles from './vscode-table.styles.js';\nimport {ColumnResizeController} from './ColumnResizeController.js';\nimport {VscTableChangeMinColumnWidthEvent} from '../vscode-table-header-cell/vscode-table-header-cell.js';\n\n/**\n * @tag vscode-table\n *\n * @cssprop [--vscode-editorGroup-border=rgba(255, 255, 255, 0.09)]\n * @cssprop [--vscode-keybindingTable-rowsBackground=rgba(204, 204, 204, 0.04)]\n * @cssprop [--vscode-sash-hoverBorder=#0078d4]\n */\n@customElement('vscode-table')\nexport class VscodeTable extends VscElement {\n static override styles = styles;\n\n /** @internal */\n @property({reflect: true})\n override role = 'table';\n\n @property({type: Boolean, reflect: true})\n resizable = false;\n\n @property({type: Boolean, reflect: true})\n responsive = false;\n\n /**\n * Both rows and columns are separated by borders.\n */\n @property({type: Boolean, reflect: true})\n bordered = false;\n\n /**\n * Columns are separated by borders.\n */\n @property({type: Boolean, reflect: true, attribute: 'bordered-columns'})\n borderedColumns = false;\n\n /**\n * Rows are separated by borders.\n */\n @property({type: Boolean, reflect: true, attribute: 'bordered-rows'})\n borderedRows = false;\n\n @property({type: Number})\n breakpoint = 300;\n\n /**\n * Initial column sizes in a JSON-encoded array.\n * Accepted values are:\n * - number\n * - string-type number (ex.: \"100\")\n * - px value (ex.: \"100px\")\n * - percentage value (ex.: \"50%\")\n * - percentage value (ex.: \"50%\")\n * - \"auto\" keyword\n */\n @property({type: Array})\n set columns(val: string[]) {\n if (!Array.isArray(val)) {\n this.warn('Invalid value for \"columns\": expected an array.');\n this._columns = [];\n\n return;\n }\n\n this._columns = val;\n\n if (this.isConnected) {\n this._initDefaultColumnSizes();\n }\n }\n get columns(): string[] {\n return this._columns;\n }\n\n /**\n * Minimum column width. Valid values are:\n * - number\n * - string-type number (ex.: \"100\")\n * - px value (ex.: \"100px\")\n * - percentage value (ex.: \"50%\")\n * - percentage value (ex.: \"50%\")\n * - \"auto\" keyword\n */\n @property({attribute: 'min-column-width'})\n minColumnWidth = '50px';\n\n @property({type: Boolean, reflect: true, attribute: 'delayed-resizing'})\n delayedResizing = false;\n\n /**\n * @internal\n */\n @property({type: Boolean, reflect: true})\n compact = false;\n\n /**\n * Zebra stripes, even rows are tinted.\n */\n @property({type: Boolean, reflect: true})\n zebra = false;\n\n /**\n * Zebra stripes, odd rows are tinted.\n */\n @property({type: Boolean, reflect: true, attribute: 'zebra-odd'})\n zebraOdd = false;\n\n @query('.header')\n private _headerElement!: HTMLDivElement;\n\n @query('.scrollable')\n private _scrollableElement!: VscodeScrollable;\n\n @queryAll('.sash-visible')\n private _sashVisibleElements!: HTMLDivElement[];\n\n @queryAssignedElements({\n flatten: true,\n selector: 'vscode-table-header, vscode-table-body',\n })\n private _assignedElements!: NodeListOf<HTMLElement>;\n\n @queryAssignedElements({\n slot: 'header',\n flatten: true,\n selector: 'vscode-table-header',\n })\n private _assignedHeaderElements!: NodeListOf<VscodeTableHeader>;\n\n @queryAssignedElements({\n slot: 'body',\n flatten: true,\n selector: 'vscode-table-body',\n })\n private _assignedBodyElements!: NodeListOf<VscodeTableBody>;\n\n /**\n * Sash positions in percentage\n */\n @state()\n private _sashPositions: number[] = [];\n\n @state()\n private _isDragging = false;\n\n /**\n * Sash hover state flags, used in the render.\n */\n private _sashHovers: boolean[] = [];\n private _columns: string[] = [];\n private _componentResizeObserver?: ResizeObserver;\n private _headerResizeObserver?: ResizeObserver;\n private _bodyResizeObserver?: ResizeObserver;\n private _activeSashElementIndex = -1;\n private _componentH = 0;\n private _componentW = 0;\n /**\n * Cached querySelectorAll result. Updated when the header slot changes.\n * It shouldn't be used directly, check the \"_getHeaderCells\" function.\n */\n private _headerCells: VscodeTableHeaderCell[] = [];\n /**\n * Cached querySelectorAll result. Updated when the body slot changes.\n * It shouldn't be used directly, check the \"_getCellsOfFirstRow\" function.\n */\n private _cellsOfFirstRow: VscodeTableCell[] = [];\n private _prevHeaderHeight = 0;\n private _prevComponentHeight = 0;\n\n private _columnResizeController = new ColumnResizeController(this);\n\n constructor() {\n super();\n\n this.addEventListener(\n 'vsc-table-change-min-column-width',\n this._handleMinColumnWidthChange\n );\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n this._memoizeComponentDimensions();\n this._initDefaultColumnSizes();\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this._componentResizeObserver?.unobserve(this);\n this._componentResizeObserver?.disconnect();\n this._bodyResizeObserver?.disconnect();\n }\n\n protected override willUpdate(changedProperties: PropertyValues): void {\n // `minColumnWidth` has been deprecated. Until it is completely removed from\n // the API, it is used as a fallback value when no min-width is specified on\n // a column header cell.\n if (changedProperties.has('minColumnWidth')) {\n const value = percent(\n parseSizeAttributeToPercent(this.minColumnWidth, this._componentW) ?? 0\n );\n const prevMap = this._columnResizeController.columnMinWidths;\n const widths = this._columnResizeController.columnWidths;\n\n for (let i = 0; i < widths.length; i++) {\n // Don't override the value comes form table header cell:\n if (!prevMap.has(i)) {\n this._columnResizeController.setColumnMinWidthAt(i, value);\n }\n }\n }\n }\n\n private _memoizeComponentDimensions() {\n const cr = this.getBoundingClientRect();\n\n this._componentH = cr.height;\n this._componentW = cr.width;\n }\n\n private _queryHeaderCells() {\n const headers = this._assignedHeaderElements;\n\n if (!(headers && headers[0])) {\n return [];\n }\n\n return Array.from(\n headers[0].querySelectorAll<VscodeTableHeaderCell>(\n 'vscode-table-header-cell'\n )\n );\n }\n\n /**\n * Get cached header cells\n */\n private _getHeaderCells() {\n if (!this._headerCells.length) {\n this._headerCells = this._queryHeaderCells();\n }\n\n return this._headerCells;\n }\n\n private _queryCellsOfFirstRow() {\n const assignedBodyElements = this._assignedBodyElements;\n\n if (!(assignedBodyElements && assignedBodyElements[0])) {\n return [];\n }\n\n return Array.from(\n assignedBodyElements[0].querySelectorAll<VscodeTableCell>(\n 'vscode-table-row:first-child vscode-table-cell'\n )\n );\n }\n\n /**\n * Get cached cells of first row\n */\n private _getCellsOfFirstRow() {\n if (!this._cellsOfFirstRow.length) {\n this._cellsOfFirstRow = this._queryCellsOfFirstRow();\n }\n\n return this._cellsOfFirstRow;\n }\n\n private _resizeTableBody() {\n let headerHeight = 0;\n let tbodyHeight = 0;\n const tableHeight = this.getBoundingClientRect().height;\n\n if (this._assignedHeaderElements && this._assignedHeaderElements.length) {\n headerHeight =\n this._assignedHeaderElements[0].getBoundingClientRect().height;\n }\n\n if (this._assignedBodyElements && this._assignedBodyElements.length) {\n tbodyHeight =\n this._assignedBodyElements[0].getBoundingClientRect().height;\n }\n\n const overflownContentHeight = tbodyHeight - headerHeight - tableHeight;\n\n this._scrollableElement.style.height =\n overflownContentHeight > 0 ? `${tableHeight - headerHeight}px` : 'auto';\n }\n\n private _initResizeObserver() {\n this._componentResizeObserver = new ResizeObserver(\n this._componentResizeObserverCallback\n );\n this._componentResizeObserver.observe(this);\n\n this._headerResizeObserver = new ResizeObserver(\n this._headerResizeObserverCallback\n );\n this._headerResizeObserver.observe(this._headerElement);\n }\n\n private _componentResizeObserverCallback = () => {\n this._memoizeComponentDimensions();\n this._updateResizeHandlersSize();\n\n if (this.responsive) {\n this._toggleCompactView();\n }\n\n this._resizeTableBody();\n };\n\n private _headerResizeObserverCallback = () => {\n this._updateResizeHandlersSize();\n };\n\n private _bodyResizeObserverCallback = () => {\n this._resizeTableBody();\n };\n\n private _calculateInitialColumnWidths(): number[] {\n const numCols = this._getHeaderCells().length;\n let cols: (string | number)[] = this.columns.slice(0, numCols);\n const numAutoCols =\n cols.filter((c) => c === 'auto').length + numCols - cols.length;\n let availablePercent = 100;\n\n cols = cols.map((col) => {\n const percentage = parseSizeAttributeToPercent(col, this._componentW);\n\n if (percentage === null) {\n return 'auto';\n }\n\n availablePercent -= percentage;\n\n return percentage;\n });\n\n if (cols.length < numCols) {\n for (let i = cols.length; i < numCols; i++) {\n cols.push('auto');\n }\n }\n\n cols = cols.map((col) => {\n if (col === 'auto') {\n return availablePercent / numAutoCols;\n }\n\n return col as number;\n });\n\n return cols as number[];\n }\n\n private _initHeaderCellSizes(colWidths: number[]) {\n this._getHeaderCells().forEach((cell, index) => {\n cell.style.width = `${colWidths[index]}%`;\n });\n }\n\n private _initBodyColumnSizes(colWidths: number[]) {\n this._getCellsOfFirstRow().forEach((cell, index) => {\n cell.style.width = `${colWidths[index]}%`;\n });\n }\n\n private _initSashes(colWidths: number[]) {\n const l = colWidths.length;\n let prevHandlerPos = 0;\n this._sashPositions = [];\n\n colWidths.forEach((collW, index) => {\n if (index < l - 1) {\n const pos = prevHandlerPos + collW;\n\n this._sashPositions.push(pos);\n prevHandlerPos = pos;\n }\n });\n }\n\n private _initDefaultColumnSizes() {\n const colWidths = this._calculateInitialColumnWidths();\n this._columnResizeController.setColumWidths(\n colWidths.map((c) => percent(c))\n );\n\n this._initHeaderCellSizes(colWidths);\n this._initBodyColumnSizes(colWidths);\n this._initSashes(colWidths);\n }\n\n private _updateResizeHandlersSize() {\n const headerCr = this._headerElement.getBoundingClientRect();\n\n if (\n headerCr.height === this._prevHeaderHeight &&\n this._componentH === this._prevComponentHeight\n ) {\n return;\n }\n\n this._prevHeaderHeight = headerCr.height;\n this._prevComponentHeight = this._componentH;\n\n const bodyHeight = this._componentH - headerCr.height;\n\n this._sashVisibleElements.forEach((el) => {\n el.style.height = `${bodyHeight}px`;\n el.style.top = `${headerCr.height}px`;\n });\n }\n\n private _applyCompactViewColumnLabels() {\n const headerCells = this._getHeaderCells();\n const labels = headerCells.map((c) => c.innerText);\n const rows = this.querySelectorAll('vscode-table-row');\n\n rows.forEach((r) => {\n const cells = r.querySelectorAll('vscode-table-cell');\n\n cells.forEach((c, i) => {\n c.columnLabel = labels[i];\n c.compact = true;\n });\n });\n }\n\n private _clearCompactViewColumnLabels() {\n this.querySelectorAll('vscode-table-cell').forEach((c) => {\n c.columnLabel = '';\n c.compact = false;\n });\n }\n\n private _toggleCompactView() {\n const cr = this.getBoundingClientRect();\n const nextCompactView = cr.width < this.breakpoint;\n\n if (this.compact !== nextCompactView) {\n this.compact = nextCompactView;\n\n if (nextCompactView) {\n this._applyCompactViewColumnLabels();\n } else {\n this._clearCompactViewColumnLabels();\n }\n }\n }\n\n private _stopDrag(event: PointerEvent) {\n const activeSplitter = this._columnResizeController.getActiveSplitter();\n\n if (activeSplitter) {\n activeSplitter.removeEventListener(\n 'pointermove',\n this._handleSplitterPointerMove\n );\n activeSplitter.removeEventListener(\n 'pointerup',\n this._handleSplitterPointerUp\n );\n activeSplitter.removeEventListener(\n 'pointercancel',\n this._handleSplitterPointerCancel\n );\n }\n\n this._columnResizeController.stopDrag(event);\n this._resizeColumns(true);\n\n this._sashHovers[this._activeSashElementIndex] = false;\n this._isDragging = false;\n this._activeSashElementIndex = -1;\n }\n\n private _onDefaultSlotChange() {\n this._assignedElements.forEach((el) => {\n if (el.tagName.toLowerCase() === 'vscode-table-header') {\n el.slot = 'header';\n return;\n }\n\n if (el.tagName.toLowerCase() === 'vscode-table-body') {\n el.slot = 'body';\n return;\n }\n });\n }\n\n private _onHeaderSlotChange() {\n this._headerCells = this._queryHeaderCells();\n const minWidths: Percent[] = [];\n minWidths.fill(percent(0), 0, this._headerCells.length - 1);\n\n this._headerCells.forEach((c, i) => {\n c.index = i;\n\n if (c.minWidth) {\n const minWidth =\n parseSizeAttributeToPercent(c.minWidth, this._componentW) ??\n percent(0);\n this._columnResizeController.setColumnMinWidthAt(i, minWidth);\n }\n });\n }\n\n private _onBodySlotChange() {\n this._initDefaultColumnSizes();\n this._initResizeObserver();\n this._updateResizeHandlersSize();\n\n if (!this._bodyResizeObserver) {\n const tbody = this._assignedBodyElements[0] ?? null;\n\n if (tbody) {\n this._bodyResizeObserver = new ResizeObserver(\n this._bodyResizeObserverCallback\n );\n this._bodyResizeObserver.observe(tbody);\n }\n }\n }\n\n private _onSashMouseOver(event: MouseEvent) {\n if (this._isDragging) {\n return;\n }\n\n const target = event.currentTarget as HTMLDivElement;\n const index = Number(target.dataset.index);\n this._sashHovers[index] = true;\n this.requestUpdate();\n }\n\n private _onSashMouseOut(event: MouseEvent) {\n event.stopPropagation();\n\n if (this._isDragging) {\n return;\n }\n\n const target = event.currentTarget as HTMLDivElement;\n const index = Number(target.dataset.index);\n this._sashHovers[index] = false;\n this.requestUpdate();\n }\n\n private _resizeColumns(resizeBodyCells = true) {\n const widths = this._columnResizeController.columnWidths;\n\n const headerCells = this._getHeaderCells();\n headerCells.forEach((h, i) => (h.style.width = `${widths[i]}%`));\n\n if (resizeBodyCells) {\n const firstRowCells = this._getCellsOfFirstRow();\n firstRowCells.forEach((c, i) => (c.style.width = `${widths[i]}%`));\n }\n }\n\n private _handleSplitterPointerDown(event: PointerEvent) {\n event.stopPropagation();\n\n const activeSplitter = event.currentTarget as HTMLElement;\n\n this._columnResizeController\n .saveHostDimensions()\n .setActiveSplitter(activeSplitter)\n .startDrag(event);\n\n activeSplitter.addEventListener(\n 'pointermove',\n this._handleSplitterPointerMove\n );\n activeSplitter.addEventListener('pointerup', this._handleSplitterPointerUp);\n activeSplitter.addEventListener(\n 'pointercancel',\n this._handleSplitterPointerCancel\n );\n }\n\n private _handleSplitterPointerMove = (event: PointerEvent) => {\n if (!this._columnResizeController.shouldDrag(event)) {\n return;\n }\n\n this._columnResizeController.drag(event);\n if (!this.delayedResizing) {\n this._resizeColumns(true);\n } else {\n this._resizeColumns(false);\n }\n };\n\n private _handleSplitterPointerUp = (event: PointerEvent) => {\n this._stopDrag(event);\n };\n\n private _handleSplitterPointerCancel = (event: PointerEvent) => {\n this._stopDrag(event);\n };\n\n private _handleMinColumnWidthChange = (\n event: VscTableChangeMinColumnWidthEvent\n ) => {\n const {columnIndex, propertyValue} = event.detail;\n const value = parseSizeAttributeToPercent(propertyValue, this._componentW);\n\n if (value) {\n this._columnResizeController.setColumnMinWidthAt(columnIndex, value);\n }\n };\n\n override render(): TemplateResult {\n const splitterPositions = this._columnResizeController.splitterPositions;\n\n const sashes = splitterPositions.map((val, index) => {\n const classes = classMap({\n sash: true,\n hover: this._sashHovers[index],\n resizable: this.resizable,\n });\n\n const left = `${val}%`;\n\n return this.resizable\n ? html`\n <div\n class=${classes}\n data-index=${index}\n .style=${stylePropertyMap({left})}\n @pointerdown=${this._handleSplitterPointerDown}\n @mouseover=${this._onSashMouseOver}\n @mouseout=${this._onSashMouseOut}\n >\n <div class=\"sash-visible\"></div>\n <div class=\"sash-clickable\"></div>\n </div>\n `\n : html`<div\n class=${classes}\n data-index=${index}\n .style=${stylePropertyMap({left})}\n >\n <div class=\"sash-visible\"></div>\n </div>`;\n });\n\n const wrapperClasses = classMap({\n wrapper: true,\n 'select-disabled': this._columnResizeController.isDragging,\n 'resize-cursor': this._columnResizeController.isDragging,\n 'compact-view': this.compact,\n });\n\n return html`\n <div class=${wrapperClasses}>\n <div class=\"header\">\n <slot name=\"caption\"></slot>\n <div class=\"header-slot-wrapper\">\n <slot name=\"header\" @slotchange=${this._onHeaderSlotChange}></slot>\n </div>\n </div>\n <vscode-scrollable class=\"scrollable\">\n <div>\n <slot name=\"body\" @slotchange=${this._onBodySlotChange}></slot>\n </div>\n </vscode-scrollable>\n ${sashes}\n <slot @slotchange=${this._onDefaultSlotChange}></slot>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'vscode-table': VscodeTable;\n }\n}\n"]}
@@ -1,5 +1,9 @@
1
- import { TemplateResult } from 'lit';
1
+ import { PropertyValues, TemplateResult } from 'lit';
2
2
  import { VscElement } from '../includes/VscElement.js';
3
+ export type VscTableChangeMinColumnWidthEvent = CustomEvent<{
4
+ columnIndex: number;
5
+ propertyValue: string;
6
+ }>;
3
7
  /**
4
8
  * @tag vscode-table-header-cell
5
9
  *
@@ -9,13 +13,20 @@ import { VscElement } from '../includes/VscElement.js';
9
13
  */
10
14
  export declare class VscodeTableHeaderCell extends VscElement {
11
15
  static styles: import("lit").CSSResultGroup;
16
+ minWidth: string;
17
+ /** @internal */
18
+ index: number;
12
19
  /** @internal */
13
20
  role: string;
21
+ protected willUpdate(changedProperties: PropertyValues): void;
14
22
  render(): TemplateResult;
15
23
  }
16
24
  declare global {
17
25
  interface HTMLElementTagNameMap {
18
26
  'vscode-table-header-cell': VscodeTableHeaderCell;
19
27
  }
28
+ interface GlobalEventHandlersEventMap {
29
+ 'vsc-table-change-min-column-width': VscTableChangeMinColumnWidthEvent;
30
+ }
20
31
  }
21
32
  //# sourceMappingURL=vscode-table-header-cell.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"vscode-table-header-cell.d.ts","sourceRoot":"","sources":["../../src/vscode-table-header-cell/vscode-table-header-cell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,cAAc,EAAC,MAAM,KAAK,CAAC;AAEzC,OAAO,EAAgB,UAAU,EAAC,MAAM,2BAA2B,CAAC;AAGpE;;;;;;GAMG;AACH,qBACa,qBAAsB,SAAQ,UAAU;IACnD,OAAgB,MAAM,+BAAU;IAEhC,gBAAgB;IAEP,IAAI,SAAkB;IAEtB,MAAM,IAAI,cAAc;CAOlC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,0BAA0B,EAAE,qBAAqB,CAAC;KACnD;CACF"}
1
+ {"version":3,"file":"vscode-table-header-cell.d.ts","sourceRoot":"","sources":["../../src/vscode-table-header-cell/vscode-table-header-cell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,cAAc,EAAE,cAAc,EAAC,MAAM,KAAK,CAAC;AAEzD,OAAO,EAAgB,UAAU,EAAC,MAAM,2BAA2B,CAAC;AAGpE,MAAM,MAAM,iCAAiC,GAAG,WAAW,CAAC;IAC1D,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,qBACa,qBAAsB,SAAQ,UAAU;IACnD,OAAgB,MAAM,+BAAU;IAGhC,QAAQ,SAAO;IAEf,gBAAgB;IAEhB,KAAK,SAAM;IAEX,gBAAgB;IAEP,IAAI,SAAkB;cAEZ,UAAU,CAAC,iBAAiB,EAAE,cAAc,GAAG,IAAI;IAY7D,MAAM,IAAI,cAAc;CAOlC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,0BAA0B,EAAE,qBAAqB,CAAC;KACnD;IAED,UAAU,2BAA2B;QACnC,mCAAmC,EAAE,iCAAiC,CAAC;KACxE;CACF"}
@@ -18,9 +18,21 @@ import styles from './vscode-table-header-cell.styles.js';
18
18
  let VscodeTableHeaderCell = class VscodeTableHeaderCell extends VscElement {
19
19
  constructor() {
20
20
  super(...arguments);
21
+ this.minWidth = '0';
22
+ /** @internal */
23
+ this.index = -1;
21
24
  /** @internal */
22
25
  this.role = 'columnheader';
23
26
  }
27
+ willUpdate(changedProperties) {
28
+ if (changedProperties.has('minWidth') && this.index > -1) {
29
+ /** @internal */
30
+ this.dispatchEvent(new CustomEvent('vsc-table-change-min-column-width', {
31
+ detail: { columnIndex: this.index, propertyValue: this.minWidth },
32
+ bubbles: true,
33
+ }));
34
+ }
35
+ }
24
36
  render() {
25
37
  return html `
26
38
  <div class="wrapper">
@@ -30,6 +42,12 @@ let VscodeTableHeaderCell = class VscodeTableHeaderCell extends VscElement {
30
42
  }
31
43
  };
32
44
  VscodeTableHeaderCell.styles = styles;
45
+ __decorate([
46
+ property({ attribute: 'min-width' })
47
+ ], VscodeTableHeaderCell.prototype, "minWidth", void 0);
48
+ __decorate([
49
+ property({ type: Number })
50
+ ], VscodeTableHeaderCell.prototype, "index", void 0);
33
51
  __decorate([
34
52
  property({ reflect: true })
35
53
  ], VscodeTableHeaderCell.prototype, "role", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"vscode-table-header-cell.js","sourceRoot":"","sources":["../../src/vscode-table-header-cell/vscode-table-header-cell.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAC,IAAI,EAAiB,MAAM,KAAK,CAAC;AACzC,OAAO,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAC,aAAa,EAAE,UAAU,EAAC,MAAM,2BAA2B,CAAC;AACpE,OAAO,MAAM,MAAM,sCAAsC,CAAC;AAE1D;;;;;;GAMG;AAEI,IAAM,qBAAqB,GAA3B,MAAM,qBAAsB,SAAQ,UAAU;IAA9C;;QAGL,gBAAgB;QAEP,SAAI,GAAG,cAAc,CAAC;IASjC,CAAC;IAPU,MAAM;QACb,OAAO,IAAI,CAAA;;;;KAIV,CAAC;IACJ,CAAC;;AAZe,4BAAM,GAAG,MAAM,AAAT,CAAU;AAIvB;IADR,QAAQ,CAAC,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC;mDACK;AALpB,qBAAqB;IADjC,aAAa,CAAC,0BAA0B,CAAC;GAC7B,qBAAqB,CAcjC","sourcesContent":["import {html, TemplateResult} from 'lit';\nimport {property} from 'lit/decorators.js';\nimport {customElement, VscElement} from '../includes/VscElement.js';\nimport styles from './vscode-table-header-cell.styles.js';\n\n/**\n * @tag vscode-table-header-cell\n *\n * @cssprop [--vscode-foreground=#cccccc]\n * @cssprop [--vscode-font-family=sans-serif]\n * @cssprop [--vscode-font-size=13px]\n */\n@customElement('vscode-table-header-cell')\nexport class VscodeTableHeaderCell extends VscElement {\n static override styles = styles;\n\n /** @internal */\n @property({reflect: true})\n override role = 'columnheader';\n\n override render(): TemplateResult {\n return html`\n <div class=\"wrapper\">\n <slot></slot>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'vscode-table-header-cell': VscodeTableHeaderCell;\n }\n}\n"]}
1
+ {"version":3,"file":"vscode-table-header-cell.js","sourceRoot":"","sources":["../../src/vscode-table-header-cell/vscode-table-header-cell.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAC,IAAI,EAAiC,MAAM,KAAK,CAAC;AACzD,OAAO,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAC,aAAa,EAAE,UAAU,EAAC,MAAM,2BAA2B,CAAC;AACpE,OAAO,MAAM,MAAM,sCAAsC,CAAC;AAO1D;;;;;;GAMG;AAEI,IAAM,qBAAqB,GAA3B,MAAM,qBAAsB,SAAQ,UAAU;IAA9C;;QAIL,aAAQ,GAAG,GAAG,CAAC;QAEf,gBAAgB;QAEhB,UAAK,GAAG,CAAC,CAAC,CAAC;QAEX,gBAAgB;QAEP,SAAI,GAAG,cAAc,CAAC;IAqBjC,CAAC;IAnBoB,UAAU,CAAC,iBAAiC;QAC7D,IAAI,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;YACzD,gBAAgB;YAChB,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAC,mCAAmC,EAAE;gBACnD,MAAM,EAAE,EAAC,WAAW,EAAE,IAAI,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,QAAQ,EAAC;gBAC/D,OAAO,EAAE,IAAI;aACd,CAAsC,CACxC,CAAC;QACJ,CAAC;IACH,CAAC;IAEQ,MAAM;QACb,OAAO,IAAI,CAAA;;;;KAIV,CAAC;IACJ,CAAC;;AA/Be,4BAAM,GAAG,MAAM,AAAT,CAAU;AAGhC;IADC,QAAQ,CAAC,EAAC,SAAS,EAAE,WAAW,EAAC,CAAC;uDACpB;AAIf;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;oDACd;AAIF;IADR,QAAQ,CAAC,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC;mDACK;AAZpB,qBAAqB;IADjC,aAAa,CAAC,0BAA0B,CAAC;GAC7B,qBAAqB,CAiCjC","sourcesContent":["import {html, PropertyValues, TemplateResult} from 'lit';\nimport {property} from 'lit/decorators.js';\nimport {customElement, VscElement} from '../includes/VscElement.js';\nimport styles from './vscode-table-header-cell.styles.js';\n\nexport type VscTableChangeMinColumnWidthEvent = CustomEvent<{\n columnIndex: number;\n propertyValue: string;\n}>;\n\n/**\n * @tag vscode-table-header-cell\n *\n * @cssprop [--vscode-foreground=#cccccc]\n * @cssprop [--vscode-font-family=sans-serif]\n * @cssprop [--vscode-font-size=13px]\n */\n@customElement('vscode-table-header-cell')\nexport class VscodeTableHeaderCell extends VscElement {\n static override styles = styles;\n\n @property({attribute: 'min-width'})\n minWidth = '0';\n\n /** @internal */\n @property({type: Number})\n index = -1;\n\n /** @internal */\n @property({reflect: true})\n override role = 'columnheader';\n\n protected override willUpdate(changedProperties: PropertyValues): void {\n if (changedProperties.has('minWidth') && this.index > -1) {\n /** @internal */\n this.dispatchEvent(\n new CustomEvent('vsc-table-change-min-column-width', {\n detail: {columnIndex: this.index, propertyValue: this.minWidth},\n bubbles: true,\n }) as VscTableChangeMinColumnWidthEvent\n );\n }\n }\n\n override render(): TemplateResult {\n return html`\n <div class=\"wrapper\">\n <slot></slot>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'vscode-table-header-cell': VscodeTableHeaderCell;\n }\n\n interface GlobalEventHandlersEventMap {\n 'vsc-table-change-min-column-width': VscTableChangeMinColumnWidthEvent;\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vscode-elements/elements",
3
- "version": "2.4.1-pre.0",
3
+ "version": "2.4.1-pre.1",
4
4
  "description": "Web components for creating Visual Studio Code extensions",
5
5
  "main": "dist/main.js",
6
6
  "module": "dist/main.js",
@@ -2,21 +2,6 @@
2
2
  "$schema": "https://raw.githubusercontent.com/microsoft/vscode-css-languageservice/main/docs/customData.schema.json",
3
3
  "version": 1.1,
4
4
  "properties": [
5
- { "name": "--vscode-button-background", "values": [] },
6
- { "name": "--vscode-button-foreground", "values": [] },
7
- { "name": "--vscode-button-border", "values": [] },
8
- { "name": "--vscode-button-hoverBackground", "values": [] },
9
- {
10
- "name": "--vscode-font-family",
11
- "description": "A sans-serif font type depends on the host OS.",
12
- "values": []
13
- },
14
- { "name": "--vscode-font-size", "values": [] },
15
- { "name": "--vscode-font-weight", "values": [] },
16
- { "name": "--vscode-button-secondaryForeground", "values": [] },
17
- { "name": "--vscode-button-secondaryBackground", "values": [] },
18
- { "name": "--vscode-button-secondaryHoverBackground", "values": [] },
19
- { "name": "--vscode-focusBorder", "values": [] },
20
5
  {
21
6
  "name": "--vscode-font-family",
22
7
  "description": "A sans-serif font type depends on the host OS.",
@@ -58,6 +43,21 @@
58
43
  { "name": "--vscode-button-secondaryBackground", "values": [] },
59
44
  { "name": "--vscode-button-secondaryHoverBackground", "values": [] },
60
45
  { "name": "--vscode-focusBorder", "values": [] },
46
+ { "name": "--vscode-button-background", "values": [] },
47
+ { "name": "--vscode-button-foreground", "values": [] },
48
+ { "name": "--vscode-button-border", "values": [] },
49
+ { "name": "--vscode-button-hoverBackground", "values": [] },
50
+ {
51
+ "name": "--vscode-font-family",
52
+ "description": "A sans-serif font type depends on the host OS.",
53
+ "values": []
54
+ },
55
+ { "name": "--vscode-font-size", "values": [] },
56
+ { "name": "--vscode-font-weight", "values": [] },
57
+ { "name": "--vscode-button-secondaryForeground", "values": [] },
58
+ { "name": "--vscode-button-secondaryBackground", "values": [] },
59
+ { "name": "--vscode-button-secondaryHoverBackground", "values": [] },
60
+ { "name": "--vscode-focusBorder", "values": [] },
61
61
  { "name": "--vscode-font-family", "values": [] },
62
62
  { "name": "--vscode-font-size", "values": [] },
63
63
  { "name": "--vscode-font-weight", "values": [] },
@@ -2,6 +2,23 @@
2
2
  "$schema": "https://raw.githubusercontent.com/microsoft/vscode-html-languageservice/main/docs/customData.schema.json",
3
3
  "version": 1.1,
4
4
  "tags": [
5
+ {
6
+ "name": "vscode-badge",
7
+ "description": "Show counts or status information. Badges can also be used within [Textfield](https://vscode-elements.github.io/components/textfield) and [TabHeader](https://vscode-elements.github.io/components/tabs) components.\n---\n\n\n### **CSS Properties:**\n - **--vscode-font-family** - A sans-serif font type depends on the host OS. _(default: sans-serif)_\n- **--vscode-contrastBorder** - undefined _(default: transparent)_\n- **--vscode-badge-background** - default and counter variant background color _(default: #616161)_\n- **--vscode-badge-foreground** - default and counter variant foreground color _(default: #f8f8f8)_\n- **--vscode-activityBarBadge-background** - activity bar variant background color _(default: #0078d4)_\n- **--vscode-activityBarBadge-foreground** - activity bar variant foreground color _(default: #ffffff)_",
8
+ "attributes": [
9
+ {
10
+ "name": "variant",
11
+ "values": [
12
+ { "name": "" },
13
+ { "name": "default" },
14
+ { "name": "counter" },
15
+ { "name": "activity-bar-counter" },
16
+ { "name": "tab-header-counter" }
17
+ ]
18
+ }
19
+ ],
20
+ "references": []
21
+ },
5
22
  {
6
23
  "name": "vscode-button",
7
24
  "description": "Clickable element that are used to trigger actions.\n---\n\n\n### **Slots:**\n - **content-before** - Slot before the main content.\n- **content-after** - Slot after the main content.\n\n### **CSS Properties:**\n - **--vscode-button-background** - undefined _(default: #0078d4)_\n- **--vscode-button-foreground** - undefined _(default: #ffffff)_\n- **--vscode-button-border** - undefined _(default: var(--vscode-button-background, rgba(255, 255, 255, 0.07)))_\n- **--vscode-button-hoverBackground** - undefined _(default: #026ec1)_\n- **--vscode-font-family** - A sans-serif font type depends on the host OS. _(default: sans-serif)_\n- **--vscode-font-size** - undefined _(default: 13px)_\n- **--vscode-font-weight** - undefined _(default: normal)_\n- **--vscode-button-secondaryForeground** - undefined _(default: #cccccc)_\n- **--vscode-button-secondaryBackground** - undefined _(default: #313131)_\n- **--vscode-button-secondaryHoverBackground** - undefined _(default: #3c3c3c)_\n- **--vscode-focusBorder** - undefined _(default: #0078d4)_\n\n### **CSS Parts:**\n - **base** - The main content area of the component.",
@@ -63,23 +80,6 @@
63
80
  ],
64
81
  "references": []
65
82
  },
66
- {
67
- "name": "vscode-badge",
68
- "description": "Show counts or status information. Badges can also be used within [Textfield](https://vscode-elements.github.io/components/textfield) and [TabHeader](https://vscode-elements.github.io/components/tabs) components.\n---\n\n\n### **CSS Properties:**\n - **--vscode-font-family** - A sans-serif font type depends on the host OS. _(default: sans-serif)_\n- **--vscode-contrastBorder** - undefined _(default: transparent)_\n- **--vscode-badge-background** - default and counter variant background color _(default: #616161)_\n- **--vscode-badge-foreground** - default and counter variant foreground color _(default: #f8f8f8)_\n- **--vscode-activityBarBadge-background** - activity bar variant background color _(default: #0078d4)_\n- **--vscode-activityBarBadge-foreground** - activity bar variant foreground color _(default: #ffffff)_",
69
- "attributes": [
70
- {
71
- "name": "variant",
72
- "values": [
73
- { "name": "" },
74
- { "name": "default" },
75
- { "name": "counter" },
76
- { "name": "activity-bar-counter" },
77
- { "name": "tab-header-counter" }
78
- ]
79
- }
80
- ],
81
- "references": []
82
- },
83
83
  {
84
84
  "name": "vscode-button-group",
85
85
  "description": "Shows a split button, including several components in a single button. Commonly used to show a button with a dropdown to the right.\n---\n\n\n### **CSS Properties:**\n - **--vscode-button-background** - undefined _(default: #0078d4)_\n- **--vscode-button-foreground** - undefined _(default: #ffffff)_\n- **--vscode-button-border** - undefined _(default: var(--vscode-button-background, rgba(255, 255, 255, 0.07)))_\n- **--vscode-button-hoverBackground** - undefined _(default: #026ec1)_\n- **--vscode-font-family** - A sans-serif font type depends on the host OS. _(default: sans-serif)_\n- **--vscode-font-size** - undefined _(default: 13px)_\n- **--vscode-font-weight** - undefined _(default: normal)_\n- **--vscode-button-secondaryForeground** - undefined _(default: #cccccc)_\n- **--vscode-button-secondaryBackground** - undefined _(default: #313131)_\n- **--vscode-button-secondaryHoverBackground** - undefined _(default: #3c3c3c)_\n- **--vscode-focusBorder** - undefined _(default: #0078d4)_",
@@ -660,7 +660,7 @@
660
660
  {
661
661
  "name": "vscode-table-header-cell",
662
662
  "description": "\n---\n\n\n### **CSS Properties:**\n - **--vscode-foreground** - undefined _(default: #cccccc)_\n- **--vscode-font-family** - undefined _(default: sans-serif)_\n- **--vscode-font-size** - undefined _(default: 13px)_",
663
- "attributes": [],
663
+ "attributes": [{ "name": "min-width", "values": [] }],
664
664
  "references": []
665
665
  },
666
666
  {