@omegagrid/grid 0.9.13 → 0.9.15

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":"grid.editing.d.ts","sourceRoot":"","sources":["../../src/ui/grid.editing.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAwB,aAAa,EAA2B,UAAU,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxI,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAI9B,MAAM,MAAM,aAAa,GAAG;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAA;CACrB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,aAAa,GAAG;IAC3C,KAAK,CAAC,EAAE,OAAO,CAAA;CACf,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,aAAa,GAAG;IAC3C,WAAW,EAAE,MAAM,CAAA;CACnB,CAAC;AAEF,qBAAa,WAAW;IAmBX,QAAQ,CAAC,IAAI,EAAE,IAAI;IAjB/B,OAAO,CAAC,SAAS,CAAiC;IAClD,OAAO,CAAC,MAAM,CAAa;IAE3B,YAAY,UAAS;IACrB,SAAS,UAAS;IAElB,IAAI,KAAK,6CAA6B;IACtC,IAAI,SAAS,kDAAiC;IAC9C,IAAI,QAAQ,kCAAgC;IAC5C,IAAI,MAAM,uCAA8B;IACxC,IAAI,KAAK,4BAA6B;IACtC,IAAI,SAAS,YAA2B;IACxC,IAAI,YAAY,eAAyB;IAEzC,OAAO,CAAC,YAAY,CAAS;IAC7B,IAAI,aAAa,YAAiE;gBAE7D,IAAI,EAAE,IAAI;IAE/B,OAAO,CAAC,IAAI,EAAE,SAAS;IAIvB,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,GAAG,UAAU,EAAE,aAAa,UAAO,EAAE,WAAW,UAAQ;IAIxG,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,aAAa,GAAG,UAAU,CAAC,EAAE,EAAE,aAAa,UAAO,EAAE,WAAW,UAAQ;IAyDjH,gBAAgB;IAKhB,cAAc,CAAC,KAAK,UAAO;IAQ3B,SAAS,CAAC,YAAY,GAAE,OAAc;IAuBtC,OAAO;IASP,UAAU;IAOV,UAAU,CAAC,OAAO,EAAE,aAAa;IAYjC,aAAa,CAAC,OAAO,EAAE,aAAa;IAYpC,UAAU,CAAC,OAAO,EAAE,aAAa;IAYjC,aAAa,CAAC,OAAO,EAAE,aAAa;IAYpC,QAAQ,CAAC,OAAO,EAAE,aAAa;IAY/B,WAAW,CAAC,OAAO,EAAE,aAAa;IAYlC,cAAc,CAAC,aAAa,UAAO;IAMnC,SAAS,CAAC,IAAI,EAAE,SAAS;IAUzB,gBAAgB;IAUhB,oBAAoB;IAMpB,aAAa;IA0Bb,OAAO,CAAC,WAAW;IAgFnB,OAAO,CAAC,SAAS;IAIX,KAAK;IAoBX,YAAY,CAAC,IAAI,EAAE,SAAS;IAM5B,IAAI;IA6BJ,IAAI;IA6BJ,iBAAiB,CAAC,EAAE,EAAE,MAAM;IAI5B,KAAK,CAAC,KAAK,CAAC,EAAE,WAAW;IASzB,OAAO,CAAC,KAAK,CAAC,EAAE,WAAW;CAW3B"}
1
+ {"version":3,"file":"grid.editing.d.ts","sourceRoot":"","sources":["../../src/ui/grid.editing.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAwB,aAAa,EAA2B,UAAU,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxI,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAI9B,MAAM,MAAM,aAAa,GAAG;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAA;CACrB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,aAAa,GAAG;IAC3C,KAAK,CAAC,EAAE,OAAO,CAAA;CACf,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,aAAa,GAAG;IAC3C,WAAW,EAAE,MAAM,CAAA;CACnB,CAAC;AAEF,qBAAa,WAAW;IAmBX,QAAQ,CAAC,IAAI,EAAE,IAAI;IAjB/B,OAAO,CAAC,SAAS,CAAiC;IAClD,OAAO,CAAC,MAAM,CAAa;IAE3B,YAAY,UAAS;IACrB,SAAS,UAAS;IAElB,IAAI,KAAK,6CAA6B;IACtC,IAAI,SAAS,kDAAiC;IAC9C,IAAI,QAAQ,kCAAgC;IAC5C,IAAI,MAAM,uCAA8B;IACxC,IAAI,KAAK,4BAA6B;IACtC,IAAI,SAAS,YAA2B;IACxC,IAAI,YAAY,eAAyB;IAEzC,OAAO,CAAC,YAAY,CAAS;IAC7B,IAAI,aAAa,YAAiE;gBAE7D,IAAI,EAAE,IAAI;IAE/B,OAAO,CAAC,IAAI,EAAE,SAAS;IAIvB,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,GAAG,UAAU,EAAE,aAAa,UAAO,EAAE,WAAW,UAAQ;IAIxG,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,aAAa,GAAG,UAAU,CAAC,EAAE,EAAE,aAAa,UAAO,EAAE,WAAW,UAAQ;IAyDjH,gBAAgB;IAKhB,cAAc,CAAC,KAAK,UAAO;IAQ3B,SAAS,CAAC,YAAY,GAAE,OAAc;IAuBtC,OAAO;IASP,UAAU;IAOV,UAAU,CAAC,OAAO,EAAE,aAAa;IAYjC,aAAa,CAAC,OAAO,EAAE,aAAa;IAYpC,UAAU,CAAC,OAAO,EAAE,aAAa;IAYjC,aAAa,CAAC,OAAO,EAAE,aAAa;IAYpC,QAAQ,CAAC,OAAO,EAAE,aAAa;IAY/B,WAAW,CAAC,OAAO,EAAE,aAAa;IAYlC,cAAc,CAAC,aAAa,UAAO;IAMnC,SAAS,CAAC,IAAI,EAAE,SAAS;IAUzB,gBAAgB;IAUhB,oBAAoB;IAMpB,aAAa;IA0Bb,OAAO,CAAC,WAAW;IA0FnB,OAAO,CAAC,SAAS;IAIX,KAAK;IAoBX,YAAY,CAAC,IAAI,EAAE,SAAS;IAM5B,IAAI;IA6BJ,IAAI;IA6BJ,iBAAiB,CAAC,EAAE,EAAE,MAAM;IAI5B,KAAK,CAAC,KAAK,CAAC,EAAE,WAAW;IASzB,OAAO,CAAC,KAAK,CAAC,EAAE,WAAW;CAW3B"}
@@ -284,12 +284,21 @@ export class GridEditing {
284
284
  // duplicate clipboard matrix over selection range if it fits
285
285
  const dataFitsSelection = height > 0 && width > 0 &&
286
286
  range.size.rows % height == 0 && range.size.columns % width == 0;
287
- const rMax = Math.min(dataFitsSelection ? range.r2 : range.r1 + height - 1, this.model.rows.length - 1);
287
+ let rMax = Math.min(dataFitsSelection ? range.r2 : range.r1 + height - 1, this.model.rows.length - 1);
288
288
  const cMax = Math.min(dataFitsSelection ? range.c2 : range.c1 + width - 1, this.model.columns.length - 1);
289
289
  for (let r = range.r1; r <= rMax; r++) {
290
290
  const i = (r - range.r1) % height;
291
+ const row = this.model.rows[r];
292
+ if (!row)
293
+ break;
294
+ if (this.model.options.clipboard?.skipHiddenRows) {
295
+ if (!row.visible) {
296
+ rMax++;
297
+ continue;
298
+ }
299
+ }
291
300
  for (let c = range.c1; c <= cMax; c++) {
292
- const cell = this.model.rows[r].cell(c);
301
+ const cell = row.cell(c);
293
302
  if (!cell.editable)
294
303
  continue;
295
304
  const j = (c - range.c1) % data[i].length;
@@ -1 +1 @@
1
- {"version":3,"file":"grid.editing.js","sourceRoot":"","sources":["../../src/ui/grid.editing.ts"],"names":[],"mappings":"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","sourcesContent":["import { csv, Matrix, utils } from \"@omegagrid/core\";\nimport { FormulaEditor, getEditorFactory } from \"../editors\";\nimport { BaseEditor } from \"../editors/baseEditor\";\nimport { CellModel, isFormula, CellRange, CellValueType, decodeColumn, decodeRow, CellSource, CellAddress } from \"@omegagrid/grid-core\";\nimport { Grid } from \"./grid\";\nimport { GridEditEvent, GridEvent } from \"./grid.events\";\nimport constants from \"../constants\";\n\nexport type DeleteOptions = {\n\tindex: number,\n\tcount: number,\n\tdispatchEvent?: boolean,\n\tfromHistory?: boolean\n};\n\nexport type InsertOptions = DeleteOptions & {\n\tafter?: boolean\n};\n\nexport type MovingOptions = DeleteOptions & {\n\ttargetIndex: number\n};\n\nexport class GridEditing {\n\n\tprivate editorMap = new Map<string, BaseEditor>();\n\tprivate editor: BaseEditor;\n\t\n\tcolumnMoving = false;\n\trowMoving = false;\n\n\tget model() { return this.grid.model }\n\tget selection() { return this.grid.selection }\n\tget selector() { return this.grid.selector }\n\tget events() { return this.grid.events }\n\tget table() { return this.grid.table }\n\tget isEditing() { return !!this.editor }\n\tget activeEditor() { return this.editor }\n\n\tprivate _formulaMode = false;\n\tget isFormulaMode() { return this._formulaMode || this.grid.group?.isFormulaMode }\n\n\tconstructor(readonly grid: Grid) { }\n\n\tcanEdit(cell: CellModel) {\n\t\treturn cell.editable || this.grid.designMode;\n\t}\n\n\tupdateCell(cell: CellModel, value: CellValueType | CellSource, dispatchEvent = true, fromHistory = false) {\n\t\tthis.updateCells([cell], [value], dispatchEvent, fromHistory);\n\t}\n\n\tupdateCells(cells: CellModel[], values: (CellValueType | CellSource)[], dispatchEvent = true, fromHistory = false) {\n\t\tlet oldValues: CellValueType[];\n\t\tlet oldPropsArr: CellValueType[];\n\t\tlet newValues: CellValueType[];\n\t\tlet newPropsArr: CellValueType[];\n\t\tlet editedCells: CellModel[];\n\t\tcells.forEach((cell, i) => {\n\t\t\tconst oldValue = cell.value;\n\t\t\tlet newValue: CellValueType;\n\t\t\tlet newProps: CellSource;\n\t\t\t\n\t\t\tif (utils.isObject(values[i])) {\n\t\t\t\tnewProps = values[i] as CellSource;\n\t\t\t\tnewValue = ('v' in newProps) ? newProps.v : undefined;\n\t\t\t} else {\n\t\t\t\tnewValue = values[i] as CellValueType;\n\t\t\t}\n\n\t\t\tlet oldProps: Partial<CellSource>;\n\t\t\tif (newProps) {\n\t\t\t\toldProps = cell.update(newProps);\n\t\t\t} else {\n\t\t\t\tcell.clearFormula();\n\t\t\t\tif (oldValue !== newValue) {\n\t\t\t\t\toldProps = {v: oldValue, dv: cell.displayValue};\n\t\t\t\t\tcell.value = newValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (dispatchEvent && oldProps) {\n\t\t\t\toldValues = oldValues || [];\n\t\t\t\toldPropsArr = oldPropsArr || [];\n\t\t\t\tnewValues = newValues || [];\n\t\t\t\tnewPropsArr = newPropsArr || [];\n\t\t\t\teditedCells = editedCells || [];\n\t\t\t\toldValues.push(oldValue);\n\t\t\t\toldPropsArr.push(oldProps);\n\t\t\t\tnewValues.push(newValue);\n\t\t\t\tnewPropsArr.push(newProps);\n\t\t\t\teditedCells.push(cell);\n\t\t\t}\n\t\t});\n\n\t\tif (dispatchEvent && editedCells?.length) {\n\t\t\tthis.grid.dispatchEvent(new GridEditEvent({\n\t\t\t\tgrid: this.grid,\n\t\t\t\tfromHistory: !!fromHistory,\n\t\t\t\tcells: editedCells,\n\t\t\t\teditType: 'value',\n\t\t\t\tnewValues: newValues,\n\t\t\t\tnewProps: newPropsArr,\n\t\t\t\toldValues: oldValues,\n\t\t\t\toldProps: oldPropsArr\n\t\t\t}));\n\t\t}\n\t}\n\n\tstartFormulaMode() {\n\t\tthis._formulaMode = true;\n\t\tif (this.grid.group) this.grid.group.startFormulaMode(this.grid);\n\t}\n\n\tendFormulaMode(group = true) {\n\t\tthis._formulaMode = false;\n\t\tif (group && this.grid.group) this.grid.group.endFormulaMode();\n\t\tthis.grid.selecting.hideFormulaSelector();\n\t\tthis.grid.selecting.removeFormulaHighlight();\n\t\tthis.grid.selecting.showSelector();\n\t}\n\n\tstartEdit(initialValue: unknown = null) {\n\t\tconst cell = this.grid.selecting.activeCell;\n\t\tif (cell && this.canEdit(cell)) {\n\t\t\tthis.grid.logger.info(`start edit ${(new CellRange(cell.c, cell.r)).A1}`);\n\t\t\tlet formula = true;\n\t\t\tif (isFormula(initialValue as string)) {\n\t\t\t\tthis.editor = this.getFormulaEditor().open(this.grid, initialValue);\n\t\t\t} else {\n\t\t\t\tif (initialValue == null && cell.hasOwnFormula) {\n\t\t\t\t\tthis.editor = this.getFormulaEditor().open(this.grid, initialValue);\t\t\t\n\t\t\t\t} else {\n\t\t\t\t\tformula = false;\n\t\t\t\t\tthis.editor = this.getEditor(cell).open(this.grid, initialValue);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.grid.dispatchEvent(new GridEvent('startEdit', {grid: this.grid}));\n\t\t\tif (formula) {\n\t\t\t\tthis.startFormulaMode();\n\t\t\t\tthis.grid.dispatchEvent(new GridEvent('startFormulaEdit', {grid: this.grid}));\n\t\t\t}\n\t\t}\n\t}\n\n\tendEdit() {\n\t\tif (!this.editor) return;\n\t\tthis.grid.logger.info('end edit');\n\t\tthis.grid.editing.endFormulaMode();\n\t\tthis.editor?.close();\n\t\tthis.editor = null;\n\t\tthis.grid.dispatchEvent(new GridEvent('endEdit', {grid: this.grid}));\n\t}\n\n\tcommitEdit() {\n\t\tif (this.editor) {\n\t\t\tthis.editor.commit();\n\t\t\tthis.endEdit();\n\t\t}\n\t}\n\n\tinsertRows(options: InsertOptions) {\n\t\tconst newRows = this.model.insertRows(options.index, options.count, options.after);\n\t\tthis.grid.rendering.renderAll(true);\n\t\tif (utils.ifNull(options.dispatchEvent, true)) this.grid.dispatchEvent(new GridEditEvent({\n\t\t\tgrid: this.grid,\n\t\t\tfromHistory: !!options.fromHistory,\n\t\t\teditType: 'insert_row',\n\t\t\tnewValues: newRows\n\t\t}));\n\t\treturn newRows;\n\t}\n\n\tinsertColumns(options: InsertOptions) {\n\t\tconst newColumns = this.model.insertColumns(options.index , options.count, options.after);\n\t\tthis.grid.rendering.renderAll(true);\n\t\tif (utils.ifNull(options.dispatchEvent, true)) this.grid.dispatchEvent(new GridEditEvent({\n\t\t\tgrid: this.grid,\n\t\t\tfromHistory: !!options.fromHistory,\n\t\t\teditType: 'insert_column',\n\t\t\tnewValues: newColumns\n\t\t}));\n\t\treturn newColumns;\n\t}\n\n\tdeleteRows(options: DeleteOptions) {\n\t\tconst deletedRows = this.model.deleteRows(options.index, options.count);\n\t\tthis.grid.rendering.renderAll(true);\n\t\tif (utils.ifNull(options.dispatchEvent, true)) this.grid.dispatchEvent(new GridEditEvent({\n\t\t\tgrid: this.grid,\n\t\t\tfromHistory: !!options.fromHistory,\n\t\t\teditType: 'delete_row',\n\t\t\toldValues: deletedRows\n\t\t}));\n\t\treturn deletedRows;\n\t}\n\n\tdeleteColumns(options: DeleteOptions) {\n\t\tconst deletedColumns = this.model.deleteColumns(options.index, options.count);\n\t\tthis.grid.rendering.renderAll(true);\n\t\tif (utils.ifNull(options.dispatchEvent, true)) this.grid.dispatchEvent(new GridEditEvent({\n\t\t\tgrid: this.grid,\n\t\t\tfromHistory: !!options.fromHistory,\n\t\t\teditType: 'delete_column',\n\t\t\toldValues: deletedColumns\n\t\t}));\n\t\treturn deletedColumns\n\t}\n\n\tmoveRows(options: MovingOptions) {\n\t\tthis.model.moveRows(options.index, options.count, options.targetIndex);\n\t\tthis.grid.rendering.renderAll(false);\n\t\tif (utils.ifNull(options.dispatchEvent, true)) this.grid.dispatchEvent(new GridEditEvent({\n\t\t\tgrid: this.grid,\n\t\t\tfromHistory: options.fromHistory,\n\t\t\teditType: 'move_row',\n\t\t\toldValues: [new CellRange(0, options.index, Infinity, options.index + options.count - 1)],\n\t\t\tnewValues: [new CellRange(0, options.targetIndex, Infinity, options.targetIndex + options.count - 1)],\n\t\t}));\n\t}\n\n\tmoveColumns(options: MovingOptions) {\n\t\tthis.model.moveColumns(options.index, options.count, options.targetIndex);\n\t\tthis.grid.rendering.renderAll(false);\n\t\tif (utils.ifNull(options.dispatchEvent, true)) this.grid.dispatchEvent(new GridEditEvent({\n\t\t\tgrid: this.grid,\n\t\t\tfromHistory: options.fromHistory,\n\t\t\teditType: 'move_column',\n\t\t\toldValues: [new CellRange(options.index, options.index + options.count - 1, Infinity)],\n\t\t\tnewValues: [new CellRange(options.targetIndex, 0, options.targetIndex + options.count - 1, Infinity)],\n\t\t}));\n\t}\n\n\tclearSelection(dispatchEvent = true) {\n\t\tconst cells = this.model.getCellArray(this.selection.range).filter(cell => this.canEdit(cell));\n\t\tthis.updateCells(cells, cells.map(() => null as CellModel), dispatchEvent);\n\t\tthis.grid.rendering.updateCells(cells, true);\n\t}\n\n\tgetEditor(cell: CellModel) {\n\t\tconst type = cell.type;\n\t\tif (!this.editorMap.has(type)) {\n\t\t\tconst editor = getEditorFactory(type).createComponent(this.model.options.editing);\n\t\t\tthis.grid.shadowRoot.appendChild(editor);\n\t\t\tthis.editorMap.set(type, editor);\n\t\t}\n\t\treturn this.editorMap.get(type);\n\t}\n\n\tgetFormulaEditor() {\n\t\tconst type = 'formula';\n\t\tif (!this.editorMap.has(type)) {\n\t\t\tconst editor = new FormulaEditor();\n\t\t\tthis.grid.shadowRoot.appendChild(editor);\n\t\t\tthis.editorMap.set(type, editor);\n\t\t}\n\t\treturn this.editorMap.get(type);\n\t}\n\n\tgetSelectionCellData() {\n\t\treturn this.model.getCellMatrix(this.selection.range).map(\n\t\t\trow => row.map(cell => cell.getSourceData({displayValue: true}))\n\t\t);\n\t}\n\n\tcopySelection() {\n\t\tconst customClipboardSupport = ClipboardItem.supports(constants.CUSTOM_CLIPBOARD_TYPE);\n\t\tconst values = this.model.getValuesInRange(this.selection.range, customClipboardSupport);\n\t\tthis.grid.selecting.hideSelector();\n\t\tthis.grid.selecting.showCopySelector();\n\n\t\tconst clipboardData: Record<string, string|Blob> = {'text/plain': new Blob([\n\t\t\tcsv.arrayToCsv(values, {decimalSeparator: this.model.options.systemDecimalSeparator})\n\t\t], {\n\t\t\ttype: \"text/plain\"\n\t\t})};\n\t\t\n\t\tif (customClipboardSupport) {\n\t\t\tclipboardData[constants.CUSTOM_CLIPBOARD_TYPE] = new Blob([JSON.stringify(this.getSelectionCellData())], {\n\t\t\t\ttype: \"application/json\"\n\t\t\t});\n\t\t} else {\n\t\t\tthis.grid.logger.warn(\"Browser does not support custom clipboard type\");\n\t\t}\n\t\t\n\t\tnavigator.clipboard.write([new ClipboardItem(clipboardData)]).then(\n\t\t\t() => this.grid.logger.info(\"selected content copied\"),\n\t\t\t() => this.grid.logger.error(\"copy rejected\")\n\t\t);\n\t}\n\n\tprivate pasteMatrix(data: Matrix<string | CellSource>) {\n\t\tconst range = this.selection.range;\n\t\tconst cells: CellModel[] = [];\n\t\tconst cellValues: CellValueType[] = [];\n\t\tconst rowPasteMode = this.model.options.clipboard?.rowPasteMode;\n\t\tconst columnPasteMode = this.model.options.clipboard?.columnPasteMode;\n\n\t\tconst pasteProps = (this.model.options.clipboard?.pasteProps ?? 'all') == 'all'\n\t\t\t? null : this.model.options.clipboard.pasteProps as (keyof CellSource)[];\n\n\t\tconst height = data.length;\n\t\tconst width = height > 0 ? data[0].length : 0;\n\n\t\t// insert rows if needed\n\t\tif (rowPasteMode == 'insert') {\n\t\t\tthis.insertRows({index: range.r1, count: height, after: false});\n\t\t} else if (rowPasteMode == 'rewrite_append' && range.r1 + height > this.model.rows.length - 1) {\n\t\t\tthis.insertRows({\n\t\t\t\tindex: this.model.rows.length - 1, \n\t\t\t\tcount: range.r1 + height - this.model.rows.length, \n\t\t\t\tafter: true\n\t\t\t});\n\t\t}\n\n\t\t// insert columns if needed\n\t\tif (columnPasteMode == 'insert') {\n\t\t\tthis.insertColumns({index: range.c1, count: width, after: false});\n\t\t} else if (columnPasteMode == 'rewrite_append' && range.c1 + width > this.model.columns.length - 1) {\n\t\t\tthis.insertColumns({\n\t\t\t\tindex: this.model.columns.length - 1, \n\t\t\t\tcount: range.c1 + width - this.model.columns.length, \n\t\t\t\tafter: true\n\t\t\t});\n\t\t}\n\n\t\t// duplicate clipboard matrix over selection range if it fits\n\t\tconst dataFitsSelection = height > 0 && width > 0 &&\n\t\t\trange.size.rows % height == 0 && range.size.columns % width == 0;\n\n\t\tconst rMax = Math.min(\n\t\t\tdataFitsSelection ? range.r2 : range.r1 + height - 1, \n\t\t\tthis.model.rows.length - 1\n\t\t);\n\n\t\tconst cMax = Math.min(\n\t\t\tdataFitsSelection ? range.c2 : range.c1 + width - 1, \n\t\t\tthis.model.columns.length - 1\n\t\t);\n\n\t\tfor (let r = range.r1; r <= rMax; r++) {\n\t\t\tconst i = (r - range.r1) % height;\n\t\t\tfor (let c = range.c1; c <= cMax; c++) {\n\t\t\t\tconst cell = this.model.rows[r].cell(c);\n\t\t\t\tif (!cell.editable) continue;\n\n\t\t\t\tconst j = (c - range.c1) % data[i].length;\n\t\t\t\t\n\t\t\t\tif (pasteProps && utils.isObject(data[i][j])) {\n\t\t\t\t\t// filter unwanted properties\n\t\t\t\t\tconst updateProps: Partial<CellSource> = {};\n\t\t\t\t\tpasteProps.forEach(<T extends keyof Partial<CellSource>>(key: T) => {\n\t\t\t\t\t\tupdateProps[key] = (data[i][j] as CellSource)[key];\n\t\t\t\t\t});\n\n\t\t\t\t\t// copiing properties of cell with display value into cell without display value\n\t\t\t\t\tif (!cell.prefersDisplayValue) updateProps.dv = undefined;\n\n\t\t\t\t\tcellValues.push(updateProps);\n\t\t\t\t} else {\n\t\t\t\t\tcellValues.push(data[i][j]);\n\t\t\t\t}\n\n\t\t\t\tcells.push(cell);\n\t\t\t}\n\t\t}\n\n\t\tthis.updateCells(cells, cellValues, true);\n\t\tthis.grid.rendering.updateCells(cells, true);\n\t}\n\n\tprivate pasteText(text: string) {\n\t\tthis.pasteMatrix(csv.csvToArray(text));\n\t}\n\n\tasync paste() {\n\t\tthis.grid.selecting.hideCopySelector();\n\n\t\ttry\t{\n\t\t\tconst clipboardItems = await navigator.clipboard.read();\n\t\t\tif (clipboardItems.length == 0) return;\n\t\t\tconst clipboardItem = clipboardItems[0];\n\t\t\tif (clipboardItem.types.includes(constants.CUSTOM_CLIPBOARD_TYPE)) {\n\t\t\t\tconst data = await clipboardItem.getType(constants.CUSTOM_CLIPBOARD_TYPE);\n\t\t\t\tthis.pasteMatrix(JSON.parse(await data.text()));\n\t\t\t} else if (clipboardItem.types.includes('text/plain')) {\n\t\t\t\tconst data = await clipboardItem.getType('text/plain');\n\t\t\t\tthis.pasteText(await data.text());\n\t\t\t}\n\t\t} catch (_e) {\n\t\t\tthis.grid.logger.error(\"paste rejected\");\n\t\t\treturn;\n\t\t}\n\t}\n\n\topenComments(cell: CellModel) {\n\t\tsetTimeout(() => {\n\t\t\tthis.grid.comment.attachTo(this.grid.table.getCellByCellModel(cell), cell, true);\n\t\t}, 100);\n\t}\n\n\tundo() {\n\t\tlet cells: CellModel[];\n\t\tconst [item] = this.grid.history.pop();\n\t\tif (!item) return;\n\t\tswitch (item.type) {\n\t\t\tcase 'value':\n\t\t\t\tcells = item.addresses.map(addr => this.model.getCellByA1(addr));\n\t\t\t\tthis.updateCells(cells, item.oldProps, true, true);\n\t\t\t\tthis.grid.rendering.updateCells(cells, true);\n\t\t\t\tbreak;\n\t\t\tcase 'insert_column':\n\t\t\t\titem.newValues.forEach((_, i) => this.grid.editing.deleteColumns({\n\t\t\t\t\tindex: decodeColumn(item.addresses[i]),\n\t\t\t\t\tcount: 1,\n\t\t\t\t\tdispatchEvent: true,\n\t\t\t\t\tfromHistory: true\n\t\t\t\t}));\n\t\t\t\tbreak;\n\t\t\tcase 'insert_row':\n\t\t\t\titem.newValues.forEach((_, i) => this.grid.editing.deleteRows({\n\t\t\t\t\tindex: decodeRow(item.addresses[i]),\n\t\t\t\t\tcount: 1,\n\t\t\t\t\tdispatchEvent: true,\n\t\t\t\t\tfromHistory: true\n\t\t\t\t}));\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tredo() {\n\t\tlet cells: CellModel[];\n\t\tconst [item] = this.grid.history.pop2();\n\t\tif (!item) return;\n\t\tswitch (item.type) {\n\t\t\tcase 'value':\n\t\t\t\tcells = item.addresses.map(addr => this.model.getCellByA1(addr))\n\t\t\t\tthis.updateCells(cells, item.newValues, true, true);\n\t\t\t\tthis.grid.rendering.updateCells(cells, true);\n\t\t\t\tbreak;\n\t\t\tcase 'insert_column':\n\t\t\t\titem.newValues.forEach((_, i) => this.grid.editing.insertColumns({\n\t\t\t\t\tindex: decodeColumn(item.addresses[i]),\n\t\t\t\t\tcount: 1,\n\t\t\t\t\tdispatchEvent: true,\n\t\t\t\t\tfromHistory: true\n\t\t\t\t}));\n\t\t\t\tbreak;\n\t\t\tcase 'insert_row':\n\t\t\t\titem.newValues.forEach((_, i) => this.grid.editing.insertRows({\n\t\t\t\t\tindex: decodeRow(item.addresses[i]),\n\t\t\t\t\tcount: 1,\n\t\t\t\t\tdispatchEvent: true,\n\t\t\t\t\tfromHistory: true\n\t\t\t\t}));\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tstartColumnMoving(_c: number) {\n\t\tthis.columnMoving = true;\n\t}\n\n\tmerge(range?: CellAddress) {\n\t\tconst r = range ? CellRange.fromA1(range) : this.selection.range;\n\t\tconst cell = this.model.rows[r.r1]?.cell(r.c1);\n\t\tif (!cell) return;\n\t\tthis.model.merges.add({r: r.r1, c: r.c1, rs: r.size.rows, cs: r.size.columns});\n\t\tthis.grid.rendering.renderCells({vertical: true, horizontal: true});\n\t\tthis.grid.selecting.select(r);\n\t}\n\n\tunmerge(range?: CellAddress) {\n\t\tconst r = range ? CellRange.fromA1(range) : this.selection.range;\n\t\tconst cell = this.model.rows[r.r1]?.cell(r.c1);\n\t\tif (!cell) return;\n\t\tconst merge = this.model.merges.mergedCells.get(cell.address);\n\t\tif (!merge) return;\n\t\tthis.model.merges.remove(cell.address);\n\t\tthis.grid.rendering.renderCells({vertical: true, horizontal: true});\n\t\tthis.grid.selecting.select(new CellRange(merge.c, merge.r, merge.c + merge.cs - 1, merge.r + merge.rs - 1));\n\t}\n\n}"]}
1
+ {"version":3,"file":"grid.editing.js","sourceRoot":"","sources":["../../src/ui/grid.editing.ts"],"names":[],"mappings":"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","sourcesContent":["import { csv, Matrix, utils } from \"@omegagrid/core\";\nimport { FormulaEditor, getEditorFactory } from \"../editors\";\nimport { BaseEditor } from \"../editors/baseEditor\";\nimport { CellModel, isFormula, CellRange, CellValueType, decodeColumn, decodeRow, CellSource, CellAddress } from \"@omegagrid/grid-core\";\nimport { Grid } from \"./grid\";\nimport { GridEditEvent, GridEvent } from \"./grid.events\";\nimport constants from \"../constants\";\n\nexport type DeleteOptions = {\n\tindex: number,\n\tcount: number,\n\tdispatchEvent?: boolean,\n\tfromHistory?: boolean\n};\n\nexport type InsertOptions = DeleteOptions & {\n\tafter?: boolean\n};\n\nexport type MovingOptions = DeleteOptions & {\n\ttargetIndex: number\n};\n\nexport class GridEditing {\n\n\tprivate editorMap = new Map<string, BaseEditor>();\n\tprivate editor: BaseEditor;\n\t\n\tcolumnMoving = false;\n\trowMoving = false;\n\n\tget model() { return this.grid.model }\n\tget selection() { return this.grid.selection }\n\tget selector() { return this.grid.selector }\n\tget events() { return this.grid.events }\n\tget table() { return this.grid.table }\n\tget isEditing() { return !!this.editor }\n\tget activeEditor() { return this.editor }\n\n\tprivate _formulaMode = false;\n\tget isFormulaMode() { return this._formulaMode || this.grid.group?.isFormulaMode }\n\n\tconstructor(readonly grid: Grid) { }\n\n\tcanEdit(cell: CellModel) {\n\t\treturn cell.editable || this.grid.designMode;\n\t}\n\n\tupdateCell(cell: CellModel, value: CellValueType | CellSource, dispatchEvent = true, fromHistory = false) {\n\t\tthis.updateCells([cell], [value], dispatchEvent, fromHistory);\n\t}\n\n\tupdateCells(cells: CellModel[], values: (CellValueType | CellSource)[], dispatchEvent = true, fromHistory = false) {\n\t\tlet oldValues: CellValueType[];\n\t\tlet oldPropsArr: CellValueType[];\n\t\tlet newValues: CellValueType[];\n\t\tlet newPropsArr: CellValueType[];\n\t\tlet editedCells: CellModel[];\n\t\tcells.forEach((cell, i) => {\n\t\t\tconst oldValue = cell.value;\n\t\t\tlet newValue: CellValueType;\n\t\t\tlet newProps: CellSource;\n\t\t\t\n\t\t\tif (utils.isObject(values[i])) {\n\t\t\t\tnewProps = values[i] as CellSource;\n\t\t\t\tnewValue = ('v' in newProps) ? newProps.v : undefined;\n\t\t\t} else {\n\t\t\t\tnewValue = values[i] as CellValueType;\n\t\t\t}\n\n\t\t\tlet oldProps: Partial<CellSource>;\n\t\t\tif (newProps) {\n\t\t\t\toldProps = cell.update(newProps);\n\t\t\t} else {\n\t\t\t\tcell.clearFormula();\n\t\t\t\tif (oldValue !== newValue) {\n\t\t\t\t\toldProps = {v: oldValue, dv: cell.displayValue};\n\t\t\t\t\tcell.value = newValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (dispatchEvent && oldProps) {\n\t\t\t\toldValues = oldValues || [];\n\t\t\t\toldPropsArr = oldPropsArr || [];\n\t\t\t\tnewValues = newValues || [];\n\t\t\t\tnewPropsArr = newPropsArr || [];\n\t\t\t\teditedCells = editedCells || [];\n\t\t\t\toldValues.push(oldValue);\n\t\t\t\toldPropsArr.push(oldProps);\n\t\t\t\tnewValues.push(newValue);\n\t\t\t\tnewPropsArr.push(newProps);\n\t\t\t\teditedCells.push(cell);\n\t\t\t}\n\t\t});\n\n\t\tif (dispatchEvent && editedCells?.length) {\n\t\t\tthis.grid.dispatchEvent(new GridEditEvent({\n\t\t\t\tgrid: this.grid,\n\t\t\t\tfromHistory: !!fromHistory,\n\t\t\t\tcells: editedCells,\n\t\t\t\teditType: 'value',\n\t\t\t\tnewValues: newValues,\n\t\t\t\tnewProps: newPropsArr,\n\t\t\t\toldValues: oldValues,\n\t\t\t\toldProps: oldPropsArr\n\t\t\t}));\n\t\t}\n\t}\n\n\tstartFormulaMode() {\n\t\tthis._formulaMode = true;\n\t\tif (this.grid.group) this.grid.group.startFormulaMode(this.grid);\n\t}\n\n\tendFormulaMode(group = true) {\n\t\tthis._formulaMode = false;\n\t\tif (group && this.grid.group) this.grid.group.endFormulaMode();\n\t\tthis.grid.selecting.hideFormulaSelector();\n\t\tthis.grid.selecting.removeFormulaHighlight();\n\t\tthis.grid.selecting.showSelector();\n\t}\n\n\tstartEdit(initialValue: unknown = null) {\n\t\tconst cell = this.grid.selecting.activeCell;\n\t\tif (cell && this.canEdit(cell)) {\n\t\t\tthis.grid.logger.info(`start edit ${(new CellRange(cell.c, cell.r)).A1}`);\n\t\t\tlet formula = true;\n\t\t\tif (isFormula(initialValue as string)) {\n\t\t\t\tthis.editor = this.getFormulaEditor().open(this.grid, initialValue);\n\t\t\t} else {\n\t\t\t\tif (initialValue == null && cell.hasOwnFormula) {\n\t\t\t\t\tthis.editor = this.getFormulaEditor().open(this.grid, initialValue);\t\t\t\n\t\t\t\t} else {\n\t\t\t\t\tformula = false;\n\t\t\t\t\tthis.editor = this.getEditor(cell).open(this.grid, initialValue);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.grid.dispatchEvent(new GridEvent('startEdit', {grid: this.grid}));\n\t\t\tif (formula) {\n\t\t\t\tthis.startFormulaMode();\n\t\t\t\tthis.grid.dispatchEvent(new GridEvent('startFormulaEdit', {grid: this.grid}));\n\t\t\t}\n\t\t}\n\t}\n\n\tendEdit() {\n\t\tif (!this.editor) return;\n\t\tthis.grid.logger.info('end edit');\n\t\tthis.grid.editing.endFormulaMode();\n\t\tthis.editor?.close();\n\t\tthis.editor = null;\n\t\tthis.grid.dispatchEvent(new GridEvent('endEdit', {grid: this.grid}));\n\t}\n\n\tcommitEdit() {\n\t\tif (this.editor) {\n\t\t\tthis.editor.commit();\n\t\t\tthis.endEdit();\n\t\t}\n\t}\n\n\tinsertRows(options: InsertOptions) {\n\t\tconst newRows = this.model.insertRows(options.index, options.count, options.after);\n\t\tthis.grid.rendering.renderAll(true);\n\t\tif (utils.ifNull(options.dispatchEvent, true)) this.grid.dispatchEvent(new GridEditEvent({\n\t\t\tgrid: this.grid,\n\t\t\tfromHistory: !!options.fromHistory,\n\t\t\teditType: 'insert_row',\n\t\t\tnewValues: newRows\n\t\t}));\n\t\treturn newRows;\n\t}\n\n\tinsertColumns(options: InsertOptions) {\n\t\tconst newColumns = this.model.insertColumns(options.index , options.count, options.after);\n\t\tthis.grid.rendering.renderAll(true);\n\t\tif (utils.ifNull(options.dispatchEvent, true)) this.grid.dispatchEvent(new GridEditEvent({\n\t\t\tgrid: this.grid,\n\t\t\tfromHistory: !!options.fromHistory,\n\t\t\teditType: 'insert_column',\n\t\t\tnewValues: newColumns\n\t\t}));\n\t\treturn newColumns;\n\t}\n\n\tdeleteRows(options: DeleteOptions) {\n\t\tconst deletedRows = this.model.deleteRows(options.index, options.count);\n\t\tthis.grid.rendering.renderAll(true);\n\t\tif (utils.ifNull(options.dispatchEvent, true)) this.grid.dispatchEvent(new GridEditEvent({\n\t\t\tgrid: this.grid,\n\t\t\tfromHistory: !!options.fromHistory,\n\t\t\teditType: 'delete_row',\n\t\t\toldValues: deletedRows\n\t\t}));\n\t\treturn deletedRows;\n\t}\n\n\tdeleteColumns(options: DeleteOptions) {\n\t\tconst deletedColumns = this.model.deleteColumns(options.index, options.count);\n\t\tthis.grid.rendering.renderAll(true);\n\t\tif (utils.ifNull(options.dispatchEvent, true)) this.grid.dispatchEvent(new GridEditEvent({\n\t\t\tgrid: this.grid,\n\t\t\tfromHistory: !!options.fromHistory,\n\t\t\teditType: 'delete_column',\n\t\t\toldValues: deletedColumns\n\t\t}));\n\t\treturn deletedColumns\n\t}\n\n\tmoveRows(options: MovingOptions) {\n\t\tthis.model.moveRows(options.index, options.count, options.targetIndex);\n\t\tthis.grid.rendering.renderAll(false);\n\t\tif (utils.ifNull(options.dispatchEvent, true)) this.grid.dispatchEvent(new GridEditEvent({\n\t\t\tgrid: this.grid,\n\t\t\tfromHistory: options.fromHistory,\n\t\t\teditType: 'move_row',\n\t\t\toldValues: [new CellRange(0, options.index, Infinity, options.index + options.count - 1)],\n\t\t\tnewValues: [new CellRange(0, options.targetIndex, Infinity, options.targetIndex + options.count - 1)],\n\t\t}));\n\t}\n\n\tmoveColumns(options: MovingOptions) {\n\t\tthis.model.moveColumns(options.index, options.count, options.targetIndex);\n\t\tthis.grid.rendering.renderAll(false);\n\t\tif (utils.ifNull(options.dispatchEvent, true)) this.grid.dispatchEvent(new GridEditEvent({\n\t\t\tgrid: this.grid,\n\t\t\tfromHistory: options.fromHistory,\n\t\t\teditType: 'move_column',\n\t\t\toldValues: [new CellRange(options.index, options.index + options.count - 1, Infinity)],\n\t\t\tnewValues: [new CellRange(options.targetIndex, 0, options.targetIndex + options.count - 1, Infinity)],\n\t\t}));\n\t}\n\n\tclearSelection(dispatchEvent = true) {\n\t\tconst cells = this.model.getCellArray(this.selection.range).filter(cell => this.canEdit(cell));\n\t\tthis.updateCells(cells, cells.map(() => null as CellModel), dispatchEvent);\n\t\tthis.grid.rendering.updateCells(cells, true);\n\t}\n\n\tgetEditor(cell: CellModel) {\n\t\tconst type = cell.type;\n\t\tif (!this.editorMap.has(type)) {\n\t\t\tconst editor = getEditorFactory(type).createComponent(this.model.options.editing);\n\t\t\tthis.grid.shadowRoot.appendChild(editor);\n\t\t\tthis.editorMap.set(type, editor);\n\t\t}\n\t\treturn this.editorMap.get(type);\n\t}\n\n\tgetFormulaEditor() {\n\t\tconst type = 'formula';\n\t\tif (!this.editorMap.has(type)) {\n\t\t\tconst editor = new FormulaEditor();\n\t\t\tthis.grid.shadowRoot.appendChild(editor);\n\t\t\tthis.editorMap.set(type, editor);\n\t\t}\n\t\treturn this.editorMap.get(type);\n\t}\n\n\tgetSelectionCellData() {\n\t\treturn this.model.getCellMatrix(this.selection.range).map(\n\t\t\trow => row.map(cell => cell.getSourceData({displayValue: true}))\n\t\t);\n\t}\n\n\tcopySelection() {\n\t\tconst customClipboardSupport = ClipboardItem.supports(constants.CUSTOM_CLIPBOARD_TYPE);\n\t\tconst values = this.model.getValuesInRange(this.selection.range, customClipboardSupport);\n\t\tthis.grid.selecting.hideSelector();\n\t\tthis.grid.selecting.showCopySelector();\n\n\t\tconst clipboardData: Record<string, string|Blob> = {'text/plain': new Blob([\n\t\t\tcsv.arrayToCsv(values, {decimalSeparator: this.model.options.systemDecimalSeparator})\n\t\t], {\n\t\t\ttype: \"text/plain\"\n\t\t})};\n\t\t\n\t\tif (customClipboardSupport) {\n\t\t\tclipboardData[constants.CUSTOM_CLIPBOARD_TYPE] = new Blob([JSON.stringify(this.getSelectionCellData())], {\n\t\t\t\ttype: \"application/json\"\n\t\t\t});\n\t\t} else {\n\t\t\tthis.grid.logger.warn(\"Browser does not support custom clipboard type\");\n\t\t}\n\t\t\n\t\tnavigator.clipboard.write([new ClipboardItem(clipboardData)]).then(\n\t\t\t() => this.grid.logger.info(\"selected content copied\"),\n\t\t\t() => this.grid.logger.error(\"copy rejected\")\n\t\t);\n\t}\n\n\tprivate pasteMatrix(data: Matrix<string | CellSource>) {\n\t\tconst range = this.selection.range;\n\t\tconst cells: CellModel[] = [];\n\t\tconst cellValues: CellValueType[] = [];\n\t\tconst rowPasteMode = this.model.options.clipboard?.rowPasteMode;\n\t\tconst columnPasteMode = this.model.options.clipboard?.columnPasteMode;\n\n\t\tconst pasteProps = (this.model.options.clipboard?.pasteProps ?? 'all') == 'all'\n\t\t\t? null : this.model.options.clipboard.pasteProps as (keyof CellSource)[];\n\n\t\tconst height = data.length;\n\t\tconst width = height > 0 ? data[0].length : 0;\n\n\t\t// insert rows if needed\n\t\tif (rowPasteMode == 'insert') {\n\t\t\tthis.insertRows({index: range.r1, count: height, after: false});\n\t\t} else if (rowPasteMode == 'rewrite_append' && range.r1 + height > this.model.rows.length - 1) {\n\t\t\tthis.insertRows({\n\t\t\t\tindex: this.model.rows.length - 1, \n\t\t\t\tcount: range.r1 + height - this.model.rows.length, \n\t\t\t\tafter: true\n\t\t\t});\n\t\t}\n\n\t\t// insert columns if needed\n\t\tif (columnPasteMode == 'insert') {\n\t\t\tthis.insertColumns({index: range.c1, count: width, after: false});\n\t\t} else if (columnPasteMode == 'rewrite_append' && range.c1 + width > this.model.columns.length - 1) {\n\t\t\tthis.insertColumns({\n\t\t\t\tindex: this.model.columns.length - 1, \n\t\t\t\tcount: range.c1 + width - this.model.columns.length, \n\t\t\t\tafter: true\n\t\t\t});\n\t\t}\n\n\t\t// duplicate clipboard matrix over selection range if it fits\n\t\tconst dataFitsSelection = height > 0 && width > 0 &&\n\t\t\trange.size.rows % height == 0 && range.size.columns % width == 0;\n\n\t\tlet rMax = Math.min(\n\t\t\tdataFitsSelection ? range.r2 : range.r1 + height - 1, \n\t\t\tthis.model.rows.length - 1\n\t\t);\n\n\t\tconst cMax = Math.min(\n\t\t\tdataFitsSelection ? range.c2 : range.c1 + width - 1, \n\t\t\tthis.model.columns.length - 1\n\t\t);\n\n\t\tfor (let r = range.r1; r <= rMax; r++) {\n\t\t\tconst i = (r - range.r1) % height;\n\t\t\tconst row = this.model.rows[r];\n\t\t\tif (!row) break;\n\n\t\t\tif (this.model.options.clipboard?.skipHiddenRows) {\n\t\t\t\tif (!row.visible) {\n\t\t\t\t\trMax++;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (let c = range.c1; c <= cMax; c++) {\n\t\t\t\tconst cell = row.cell(c);\n\t\t\t\tif (!cell.editable) continue;\n\n\t\t\t\tconst j = (c - range.c1) % data[i].length;\n\t\t\t\t\n\t\t\t\tif (pasteProps && utils.isObject(data[i][j])) {\n\t\t\t\t\t// filter unwanted properties\n\t\t\t\t\tconst updateProps: Partial<CellSource> = {};\n\t\t\t\t\tpasteProps.forEach(<T extends keyof Partial<CellSource>>(key: T) => {\n\t\t\t\t\t\tupdateProps[key] = (data[i][j] as CellSource)[key];\n\t\t\t\t\t});\n\n\t\t\t\t\t// copiing properties of cell with display value into cell without display value\n\t\t\t\t\tif (!cell.prefersDisplayValue) updateProps.dv = undefined;\n\n\t\t\t\t\tcellValues.push(updateProps);\n\t\t\t\t} else {\n\t\t\t\t\tcellValues.push(data[i][j]);\n\t\t\t\t}\n\n\t\t\t\tcells.push(cell);\n\t\t\t}\n\t\t}\n\n\t\tthis.updateCells(cells, cellValues, true);\n\t\tthis.grid.rendering.updateCells(cells, true);\n\t}\n\n\tprivate pasteText(text: string) {\n\t\tthis.pasteMatrix(csv.csvToArray(text));\n\t}\n\n\tasync paste() {\n\t\tthis.grid.selecting.hideCopySelector();\n\n\t\ttry\t{\n\t\t\tconst clipboardItems = await navigator.clipboard.read();\n\t\t\tif (clipboardItems.length == 0) return;\n\t\t\tconst clipboardItem = clipboardItems[0];\n\t\t\tif (clipboardItem.types.includes(constants.CUSTOM_CLIPBOARD_TYPE)) {\n\t\t\t\tconst data = await clipboardItem.getType(constants.CUSTOM_CLIPBOARD_TYPE);\n\t\t\t\tthis.pasteMatrix(JSON.parse(await data.text()));\n\t\t\t} else if (clipboardItem.types.includes('text/plain')) {\n\t\t\t\tconst data = await clipboardItem.getType('text/plain');\n\t\t\t\tthis.pasteText(await data.text());\n\t\t\t}\n\t\t} catch (_e) {\n\t\t\tthis.grid.logger.error(\"paste rejected\");\n\t\t\treturn;\n\t\t}\n\t}\n\n\topenComments(cell: CellModel) {\n\t\tsetTimeout(() => {\n\t\t\tthis.grid.comment.attachTo(this.grid.table.getCellByCellModel(cell), cell, true);\n\t\t}, 100);\n\t}\n\n\tundo() {\n\t\tlet cells: CellModel[];\n\t\tconst [item] = this.grid.history.pop();\n\t\tif (!item) return;\n\t\tswitch (item.type) {\n\t\t\tcase 'value':\n\t\t\t\tcells = item.addresses.map(addr => this.model.getCellByA1(addr));\n\t\t\t\tthis.updateCells(cells, item.oldProps, true, true);\n\t\t\t\tthis.grid.rendering.updateCells(cells, true);\n\t\t\t\tbreak;\n\t\t\tcase 'insert_column':\n\t\t\t\titem.newValues.forEach((_, i) => this.grid.editing.deleteColumns({\n\t\t\t\t\tindex: decodeColumn(item.addresses[i]),\n\t\t\t\t\tcount: 1,\n\t\t\t\t\tdispatchEvent: true,\n\t\t\t\t\tfromHistory: true\n\t\t\t\t}));\n\t\t\t\tbreak;\n\t\t\tcase 'insert_row':\n\t\t\t\titem.newValues.forEach((_, i) => this.grid.editing.deleteRows({\n\t\t\t\t\tindex: decodeRow(item.addresses[i]),\n\t\t\t\t\tcount: 1,\n\t\t\t\t\tdispatchEvent: true,\n\t\t\t\t\tfromHistory: true\n\t\t\t\t}));\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tredo() {\n\t\tlet cells: CellModel[];\n\t\tconst [item] = this.grid.history.pop2();\n\t\tif (!item) return;\n\t\tswitch (item.type) {\n\t\t\tcase 'value':\n\t\t\t\tcells = item.addresses.map(addr => this.model.getCellByA1(addr))\n\t\t\t\tthis.updateCells(cells, item.newValues, true, true);\n\t\t\t\tthis.grid.rendering.updateCells(cells, true);\n\t\t\t\tbreak;\n\t\t\tcase 'insert_column':\n\t\t\t\titem.newValues.forEach((_, i) => this.grid.editing.insertColumns({\n\t\t\t\t\tindex: decodeColumn(item.addresses[i]),\n\t\t\t\t\tcount: 1,\n\t\t\t\t\tdispatchEvent: true,\n\t\t\t\t\tfromHistory: true\n\t\t\t\t}));\n\t\t\t\tbreak;\n\t\t\tcase 'insert_row':\n\t\t\t\titem.newValues.forEach((_, i) => this.grid.editing.insertRows({\n\t\t\t\t\tindex: decodeRow(item.addresses[i]),\n\t\t\t\t\tcount: 1,\n\t\t\t\t\tdispatchEvent: true,\n\t\t\t\t\tfromHistory: true\n\t\t\t\t}));\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tstartColumnMoving(_c: number) {\n\t\tthis.columnMoving = true;\n\t}\n\n\tmerge(range?: CellAddress) {\n\t\tconst r = range ? CellRange.fromA1(range) : this.selection.range;\n\t\tconst cell = this.model.rows[r.r1]?.cell(r.c1);\n\t\tif (!cell) return;\n\t\tthis.model.merges.add({r: r.r1, c: r.c1, rs: r.size.rows, cs: r.size.columns});\n\t\tthis.grid.rendering.renderCells({vertical: true, horizontal: true});\n\t\tthis.grid.selecting.select(r);\n\t}\n\n\tunmerge(range?: CellAddress) {\n\t\tconst r = range ? CellRange.fromA1(range) : this.selection.range;\n\t\tconst cell = this.model.rows[r.r1]?.cell(r.c1);\n\t\tif (!cell) return;\n\t\tconst merge = this.model.merges.mergedCells.get(cell.address);\n\t\tif (!merge) return;\n\t\tthis.model.merges.remove(cell.address);\n\t\tthis.grid.rendering.renderCells({vertical: true, horizontal: true});\n\t\tthis.grid.selecting.select(new CellRange(merge.c, merge.r, merge.c + merge.cs - 1, merge.r + merge.rs - 1));\n\t}\n\n}"]}
@@ -38,14 +38,14 @@ export declare class Table extends LitElement {
38
38
  zoom: number;
39
39
  nogrid: boolean;
40
40
  renderAll: boolean;
41
- private tableRef;
42
- get table(): HTMLTableElement;
43
- private colgroupRef;
44
- get colgroup(): HTMLElement;
45
- private theadRef;
41
+ private _thead;
46
42
  get thead(): HTMLElement;
47
- private tbodyRef;
43
+ private _tbody;
48
44
  get tbody(): HTMLElement;
45
+ private _colgroup;
46
+ get colgroup(): HTMLElement;
47
+ private _table;
48
+ get table(): HTMLTableElement;
49
49
  get colMap(): Map<number, number>;
50
50
  get rowMap(): Map<number, number>;
51
51
  getColumnByModelIndex: (c: number) => HTMLTableColElement;
@@ -1 +1 @@
1
- {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../src/ui/table.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../src/ui/table.ts"],"names":[],"mappings":"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"}
package/dist/ui/table.js CHANGED
@@ -8,7 +8,6 @@ import constants from '../constants';
8
8
  import { dom, Expander, LevelExpander } from "@omegagrid/core";
9
9
  import { LitElement, html } from 'lit';
10
10
  import { customElement, property } from 'lit/decorators.js';
11
- import { createRef, ref } from 'lit/directives/ref.js';
12
11
  import { encodeRow, styleToCSStyle, CellRange, MergeCellState } from "@omegagrid/grid-core";
13
12
  import { ElementCache } from "./elementCache";
14
13
  import { tableStyles } from "./table.styles";
@@ -27,12 +26,6 @@ let Table = class Table extends LitElement {
27
26
  this.zoom = 1;
28
27
  this.nogrid = false;
29
28
  this.renderAll = false;
30
- //#endregion
31
- //#region element references
32
- this.tableRef = createRef();
33
- this.colgroupRef = createRef();
34
- this.theadRef = createRef();
35
- this.tbodyRef = createRef();
36
29
  this.getColumnByModelIndex = (c) => this.getColumnByGridIndex(this.colMap.get(c));
37
30
  this.getColumnByGridIndex = (c) => this.colgroup.children[c + this.rowHeaderCount];
38
31
  this.getRowByModelIndex = (r) => this.bRows[this.rowMap.get(r)];
@@ -54,13 +47,7 @@ let Table = class Table extends LitElement {
54
47
  }
55
48
  </style>
56
49
 
57
- <table ${ref(this.tableRef)}
58
- class="${this.model?.options.grid ? '' : 'nogrid'}"
59
- style="transform: scale(${this.zoom})">
60
- <colgroup ${ref(this.colgroupRef)}></colgroup>
61
- <thead ${ref(this.theadRef)}></thead>
62
- <tbody ${ref(this.tbodyRef)}></tbody>
63
- </table>
50
+ ${this.table}
64
51
  `;
65
52
  this.clearHeaderCache = () => {
66
53
  this.resetFreezeLeft();
@@ -75,10 +62,30 @@ let Table = class Table extends LitElement {
75
62
  this.cellRenderSchedules = new WeakMap();
76
63
  //#endregion
77
64
  }
78
- get table() { return this.tableRef.value; }
79
- get colgroup() { return this.colgroupRef.value; }
80
- get thead() { return this.theadRef.value; }
81
- get tbody() { return this.tbodyRef.value; }
65
+ get thead() {
66
+ if (this._thead)
67
+ return this._thead;
68
+ return (this._thead = dom.createElement('thead'));
69
+ }
70
+ get tbody() {
71
+ if (this._tbody)
72
+ return this._tbody;
73
+ return (this._tbody = dom.createElement('tbody'));
74
+ }
75
+ get colgroup() {
76
+ if (this._colgroup)
77
+ return this._colgroup;
78
+ return (this._colgroup = dom.createElement('colgroup'));
79
+ }
80
+ get table() {
81
+ if (this._table)
82
+ return this._table;
83
+ this._table = dom.createElement('table');
84
+ this._table.appendChild(this.colgroup);
85
+ this._table.appendChild(this.thead);
86
+ this._table.appendChild(this.tbody);
87
+ return this._table;
88
+ }
82
89
  //#endregion
83
90
  //#region calculated props
84
91
  get colMap() { return this._colMap; }
@@ -1 +1 @@
1
- {"version":3,"file":"table.js","sourceRoot":"","sources":["../../src/ui/table.ts"],"names":[],"mappings":"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","sourcesContent":["import constants from '../constants';\nimport { dom, Expander, LevelExpander, LevelExpandEvent } from \"@omegagrid/core\";\nimport { LitElement, html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { createRef, ref } from 'lit/directives/ref.js';\nimport {\n\tGridModel, Merge, Viewport, CellModel, RowModel, ColumnModel, ColumnHeaderModel, encodeRow, styleToCSStyle, CellRange, Style,\n\tCellAddress,\n\tMergeCellState\n} from \"@omegagrid/grid-core\";\nimport { ElementCache } from \"./elementCache\";\nimport { tableStyles } from \"./table.styles\";\nimport { SortingArrow } from \"./sortingArrow\";\nimport { FilterLabel } from \"./filterLabel\";\nimport { Grid } from './grid';\nimport { applyStyle, getCellRenderer } from '../renderers';\n\nexport type TableCell = HTMLTableCellElement & {\n\tc: number,\n\tr: number\n}\n\nexport type TableRow = HTMLTableRowElement & {\n\tr: number,\n\texpander: Expander\n}\n\nexport type TableHeaderCell = TableCell;\nexport type TableRenderOptions = {vertical?: boolean, horizontal?: boolean};\n\nexport class TableEvent extends Event { }\n\n@customElement('og-table')\nexport class Table extends LitElement {\n\n\tstatic styles = [tableStyles];\n\n\tprivate _viewport: Viewport;\n\tprivate _viewportSize: {w: number, h: number};\n\tprivate _freezeLeft: number;\n\tprivate _freezeTop: number;\n\tprivate bCache: ElementCache;\n\tprivate hCache: ElementCache;\n\tpublic hRows: TableRow[];\n\tpublic bRows: TableRow[];\n\tpublic cols: HTMLTableColElement[];\n\n\t// map of model indexes on element indexes\n\tprivate _rowMap = new Map<number, number>();\n\tprivate _colMap = new Map<number, number>();\n\tprivate cornerDiv: HTMLDivElement;\n\n\tgrid: Grid;\n\t\n\t//#region reactive props\n\t@property({type: Object})\n\tmodel: GridModel;\n\n\t@property({type: Number, hasChanged: () => false})\n\trowOffset = 0;\n\n\t@property({type: Number, hasChanged: () => false})\n\tcolOffset = 0;\n\n\t@property({type: Number, reflect: true})\n\tzoom = 1;\n\n\t@property({type: Boolean, reflect: true})\n\tnogrid = false;\n\n\t@property({type: Boolean, reflect: true})\n\trenderAll = false;\n\t//#endregion\n\n\n\t//#region element references\n\tprivate tableRef = createRef<HTMLTableElement>();\n\tget table() { return this.tableRef.value }\n\n\tprivate colgroupRef = createRef<HTMLElement>();\n\tget colgroup() { return this.colgroupRef.value }\n\n\tprivate theadRef = createRef<HTMLElement>();\n\tget thead() { return this.theadRef.value }\n\n\tprivate tbodyRef = createRef<HTMLElement>();\n\tget tbody() { return this.tbodyRef.value }\n\t//#endregion\n\n\n\t//#region calculated props\n\tget colMap() { return this._colMap }\n\tget rowMap() { return this._rowMap }\n\n\tgetColumnByModelIndex = (c: number) => this.getColumnByGridIndex(this.colMap.get(c));\n\tgetColumnByGridIndex = (c: number) => this.colgroup.children[c + this.rowHeaderCount] as HTMLTableColElement;\n\tgetRowByModelIndex = (r: number) => this.bRows[this.rowMap.get(r)];\n\tgetRowByGridIndex = (r: number) => this.bRows[r];\n\tgetCellByGridIndex = (c: number, r: number) => this.bRows[r].children[c + this.rowHeaderCount] as TableCell;\n\tgetCellByModelIndex = (c: number, r: number) => this.getRowByModelIndex(r)?.children[this.colMap.get(c) + this.rowHeaderCount] as TableCell;\n\tgetCellByCellModel = (m: CellModel) => this.getCellByModelIndex(m.c, m.r);\n\tresetFreezeLeft = () : void => this._freezeLeft = null;\n\n\tget freezeLeft() {\n\t\tif (this._freezeLeft == null) {\n\t\t\tif (this.offsetWidth > 0) {\n\t\t\t\tlet w = 0;\n\t\t\t\tfor (let c = 0; c < this.model.options.freezeLeft; c++) {\n\t\t\t\t\tw += this.model.columns[c].width;\n\t\t\t\t}\n\t\t\t\tthis._freezeLeft = w < this.offsetWidth / 2 ? this.model.options.freezeLeft : 0;\n\t\t\t} else {\n\t\t\t\tthis._freezeLeft = this.model.options.freezeLeft;\n\t\t\t}\n\t\t}\n\t\treturn this._freezeLeft;\n\t}\n\n\tget freezeTop() {\n\t\tif (this._freezeTop == null) {\n\t\t\tthis._freezeTop = this.model.options.freezeTop;\n\t\t}\n\t\treturn this._freezeTop;\n\t}\n\n\t_highlightedColHeaderCells: TableHeaderCell[] = [];\n\t_highlightedRowHeaderCells: TableHeaderCell[] = [];\n\n\tpreviewZoom(zoom: number) {\n\t\tdom.zoomElement(this.table, zoom);\n\t}\n\n\thighlightColHeaderCells(columns: number[]) {\n\t\tif (!this.model.options.colLetters) return;\n\t\tthis._highlightedColHeaderCells.forEach(cell => cell.className = 'hlabel');\n\t\tthis._highlightedColHeaderCells = [];\n\t\tconst offset = this.rowHeaderCount;\n\t\tcolumns.forEach(c => {\n\t\t\tconst cell = this.hRows[this.model.hasColumnTreeEnabled ? 1 : 0].children[this.colMap.get(c) + offset] as TableHeaderCell;\n\t\t\tif (cell) {\n\t\t\t\tthis._highlightedColHeaderCells.push(cell);\n\t\t\t\tcell.className = 'hlabel selected';\n\t\t\t}\n\t\t});\n\t}\n\n\thighlightRowHeaderCells(rows: number[]) {\n\t\tif (!this.model.options.rowNumbers) return;\n\t\tif (this.model.rows.length == 0) return;\n\t\tthis._highlightedRowHeaderCells.forEach(cell => cell.className = 'vlabel');\n\t\tthis._highlightedRowHeaderCells = [];\n\t\trows.forEach(r => {\n\t\t\tconst cell = this.getRowByModelIndex(r)?.children[this.model.hasRowTreeEnabled ? 1 : 0] as TableHeaderCell;\n\t\t\tif (cell) {\n\t\t\t\tthis._highlightedRowHeaderCells.push(cell);\n\t\t\t\tcell.className = 'vlabel selected';\n\t\t\t}\n\t\t});\n\t}\n\n\tget columnHeaderCount() : number {\n\t\treturn this.model.headerCount \n\t\t\t+ (this.model.hasColumnTreeEnabled ? 1 : 0) \n\t\t\t+ (this.model.hasFilter ? 1 : 0)\n\t\t\t+ (this.model.options.colLetters ? 1 : 0);\n\t}\n\n\tget rowHeaderCount() { return (this.model.hasRowTreeEnabled ? 1 : 0) + (this.model.options.rowNumbers ? 1 : 0) }\n\n\tget renderRowCount() { \n\t\treturn this.renderAll \n\t\t\t? this.model.visibleRows.length \n\t\t\t: Math.round(Math.min(this.clientHeight / constants.MIN_ROW_HEIGHT, this.model.rows.length));\n\t}\n\n\tget renderColCount() { \n\t\treturn this.renderAll \n\t\t\t? this.model.visibleColumns.length + this.rowHeaderCount\n\t\t\t: Math.round(Math.min((this.clientWidth / constants.MIN_COL_WIDTH) || 5, this.model.columns.length + this.rowHeaderCount));\n\t}\n\n\tget totalHeaderHeight() : number {\n\t\tlet h = 0, r = 0;\n\n\t\tif (this.model.hasColumnTreeEnabled) {\n\t\t\th += this.treeHeaderHeight;\n\t\t\t++r;\n\t\t}\n\n\t\tif (this.model.options.colLetters) {\n\t\t\th += (this.thead.children[r] as HTMLElement).offsetHeight || this.model.options.rowHeight\n\t\t\t++r;\n\t\t}\n\n\t\tfor (let i = 0; i < this.model.headerCount; i++) {\n\t\t\th += (this.thead.children[r + i] as HTMLElement).offsetHeight || this.model.options.rowHeight;\n\t\t}\n\n\t\tif (this.model.hasFilter) h += this.model.options.rowHeight;\n\t\treturn h;\n\t}\n\n\tget treeHeaderWidth() { return this.model.hasRowTreeEnabled ? this.model.maxRowLevel * 15 + 20 : 0 }\n\tget treeHeaderHeight() {\n\t\treturn this.model.hasColumnTree ? this.model.maxColumnLevel * 15 + 20 : 0\n\t}\n\n\tget totalHeaderWidth() : number {\n\t\tlet w = 0;\n\t\tif (this.model.options.rowNumbers) w += constants.ROW_HEADER_WIDTH;\n\t\tw += this.treeHeaderWidth;\n\t\treturn w;\n\t}\n\n\tget viewportSize() : {w: number, h: number} {\n\t\tif (!this._viewportSize) {\n\t\t\tthis._viewportSize = this.renderAll ? {w: Infinity, h: Infinity} : {\n\t\t\t\tw: (this.clientWidth - this.totalHeaderWidth - constants.SLIDER_SIZE) / this.zoom,\n\t\t\t\th: (this.clientHeight - this.totalHeaderHeight - constants.SLIDER_SIZE) / this.zoom\n\t\t\t};\n\t\t}\n\t\treturn this._viewportSize;\n\t}\n\n\tget viewport() : Viewport {\n\t\tif (!this._viewport) {\n\t\t\tthis._viewport = this.model.getViewport(\n\t\t\t\t{c: this.colOffset, r: this.rowOffset}, \n\t\t\t\tthis.viewportSize, {\n\t\t\t\t\tt: this.model.options.freezeTop, \n\t\t\t\t\tl: this.freezeLeft, \n\t\t\t\t\tb: this.model.options.freezeBottom, \n\t\t\t\t\tr: this.model.options.freezeRight\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t\treturn this._viewport;\n\t}\n\n\tget viewportRange() : CellRange {\n\t\tif (this.viewport.columns.length == 0 || this.viewport.rows.length == 0) return null;\n\t\treturn new CellRange(\n\t\t\tthis.viewport.columns[0].index, \n\t\t\tthis.viewport.rows[0].index, \n\t\t\tthis.viewport.columns[this.viewport.columns.length - 1].index, \n\t\t\tthis.viewport.rows[this.viewport.rows.length - 1].index\n\t\t);\n\t}\n\t//#endregion\n\n\tfindColumnIndexByOffset(offset: number) : number {\n\t\tlet w = 0;\n\t\tconst columns = this.colgroup.children;\n\t\tfor (let c = 0; c < columns.length; c++) {\n\t\t\tconst col = columns[c] as HTMLTableColElement;\n\t\t\tw += col.offsetWidth;\n\t\t\tif (w >= offset) return c;\n\t\t}\n\t\treturn -1;\n\t}\n\n\tfindRowByOffset(offset: number) : TableRow {\n\t\tconst rows = (offset > this.thead.offsetHeight ? this.tbody : this.thead).children;\n\t\tif (offset > this.thead.offsetHeight) offset -= this.thead.offsetHeight;\n\t\tlet h = 0;\n\t\tfor (let r = 0; r < rows.length; r++) {\n\t\t\tconst row = rows[r] as TableRow;\n\t\t\th += row.offsetHeight;\n\t\t\tif (h >= offset) return row;\n\t\t}\n\t\treturn null;\n\t}\n\n\tfindTableCellByOffset(x: number, y: number) : TableCell {\n\t\tx = x / this.zoom;\n\t\ty = y / this.zoom;\n\t\t\n\t\tconst row = this.findRowByOffset(y);\n\t\tconst column = this.findColumnIndexByOffset(x); // ?? this.colgroup.children.length - 1;\n\t\tconst cell = row && column > -1 ? row.children[column] as TableCell : null;\n\t\treturn cell && !dom.isHidden(cell) ? cell : null;\n\t}\n\n\t/**\n\t * Returns the nearest visible cell to the given offset and exact cell if availible\n\t * @param x \n\t * @param y \n\t * @returns \n\t */\n\tfindNearestTableCellByOffset(x: number, y: number) : [TableCell, TableCell?] {\n\t\tx = x / this.zoom;\n\t\ty = y / this.zoom;\n\t\tlet row: TableRow, c: number;\n\t\tconst exactRow = this.findRowByOffset(y);\n\t\tconst excactColumnIndex = this.findColumnIndexByOffset(x);\n\n\t\tif (y < 0) row = this.tbody.children[0] as TableRow;\n\t\telse if (y > this.tbody.offsetHeight + this.thead.offsetHeight)\n\t\t\trow = this.tbody.children[this.viewport.rows.length - 1] as TableRow;\n\t\telse row = exactRow;\n\t\t\n\t\tif (x < 0) c = this.rowHeaderCount;\n\t\telse if (x >= this.tbody.offsetWidth) c = this.viewport.columns.length + this.rowHeaderCount - 1;\n\t\telse c = excactColumnIndex\n\n\t\tlet cell = row && c > -1 ? row.children[c] as TableCell : null;\n\t\t// find nearest visible cell\n\t\twhile (cell && dom.isHidden(cell)) cell = cell.previousElementSibling as TableCell;\n\n\t\tconst exactCell = exactRow && excactColumnIndex > -1 ? exactRow.children[excactColumnIndex] as TableCell : null;\n\t\treturn [cell, exactCell && !dom.isHidden(exactCell) ? exactCell : null];\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback();\n\t\tthis.grid = dom.findParent(this, 'og-grid');\n\t}\n\t\n\trender = () => html`\n\t\t<style>\n\t\t\ttable {\n\t\t\t\tfont-size: ${this.model?.options.fontSize || 12}px;\n\t\t\t}\n\n\t\t\ttable tr {\n\t\t\t\tline-height: ${(this.model?.options.rowHeight || 22) - 1}px;\n\t\t\t}\n\t\t</style>\n\n\t\t<table ${ref(this.tableRef)}\n\t\t\tclass=\"${this.model?.options.grid ? '' : 'nogrid'}\"\n\t\t\tstyle=\"transform: scale(${this.zoom})\">\n\t\t\t<colgroup ${ref(this.colgroupRef)}></colgroup>\n\t\t\t<thead ${ref(this.theadRef)}></thead>\n\t\t\t<tbody ${ref(this.tbodyRef)}></tbody>\n\t\t</table>\n\t`;\n\n\twillUpdate() {\n\t\tthis._viewport = null;\n\t\tthis._viewportSize = null;\n\t\tif (this.model) {\n\t\t\tthis.clearHeaderCache();\n\t\t\tthis.clearBodyCache();\n\t\t}\n\t}\n\t\n\tupdated() {\n\t\tif (this.model) {\n\t\t\tthis.createColumns();\n\t\t\tthis.createHeaderRows();\n\t\t\tthis.createBodyRows();\n\t\t\tthis.renderCells();\n\t\t}\n\t}\n\t\n\tclearHeaderCache = () => {\n\t\tthis.resetFreezeLeft();\n\t\tthis.hCache = new ElementCache(this.model.columns.length, this.columnHeaderCount);\n\t\tthis.hCache.disabled = !this.model.options.cellCache;\n\t}\n\n\tclearBodyCache = () => {\n\t\tthis.bCache = new ElementCache(this.model.columns.length, this.model.rows.length);\n\t\tthis.bCache.disabled = !this.model.options.cellCache;\n\t}\n\n\trefresh() {\n\t\tthis.clearHeaderCache();\n\t\tthis.clearBodyCache();\n\t\tthis.requestUpdate();\n\t}\n\t\n\tcreateColumns() {\n\t\tthis._freezeLeft = null;\n\t\tconst colCount = this.renderColCount;\n\t\tif (!this.cols || this.cols.length != colCount) {\n\t\t\tthis.cols = new Array(colCount);\n\t\t\tfor (let c = 0; c < colCount; c++) {\n\t\t\t\tthis.cols[c] = dom.createElement('col');\n\t\t\t\tthis.cols.forEach(() => this.colgroup.appendChild(this.cols[c]));\n\t\t\t}\n\t\t}\n\t}\n\n\tcreateHeaderRows() {\n\t\tconst rowCount = this.columnHeaderCount\n\t\tconst colCount = this.renderColCount;\n\t\tdom.empty(this.thead);\n\n\t\tif (!this.hRows || this.hRows.length != rowCount || !this.hRows[0] || this.hRows[0].children.length != colCount) {\n\t\t\tthis.hRows = new Array(rowCount);\n\t\t\tfor (let r = 0; r < rowCount; r++) {\n\t\t\t\tthis.hRows[r] = dom.createElement('tr');\n\t\t\t\tfor (let c = 0; c < colCount; c++) {\n\t\t\t\t\tthis.hRows[r].appendChild(dom.createElement('th'));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdom.empty(this.thead);\n\t\tthis.hRows.forEach(row => this.thead.appendChild(row));\n\t}\n\n\tcreateBodyRows() {\n\t\tconst rowCount = this.renderRowCount;\n\t\tconst colCount = this.renderColCount;\n\t\tconst offset = this.rowHeaderCount;\n\t\t\n\t\tif (!this.bRows || this.bRows.length == 0 || this.bRows.length != rowCount || this.bRows[0].children.length != colCount) {\n\t\t\tif (rowCount == 0 && this.grid.options.emptyPlaceholder) {\n\t\t\t\tthis.bRows = [dom.createElement('tr')];\n\t\t\t\tthis.bRows[0].appendChild(dom.createElement('td'));\n\t\t\t} else {\n\t\t\t\tthis.bRows = new Array(rowCount);\n\t\t\t\tfor (let r = 0; r < rowCount; r++) {\n\t\t\t\t\tthis.bRows[r] = dom.createElement('tr');\n\t\t\t\t\t\n\t\t\t\t\tfor (let c = 0; c < offset; c++) {\n\t\t\t\t\t\tthis.bRows[r].appendChild(dom.createElement('th'));\n\t\t\t\t\t}\n\t\n\t\t\t\t\tfor (let c = offset; c < colCount; c++) {\n\t\t\t\t\t\tthis.bRows[r].appendChild(dom.createElement('td'));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tdom.empty(this.tbody);\n\t\tthis.bRows.forEach(row => this.tbody.appendChild(row));\n\t}\n\n\trenderCells(update: TableRenderOptions = {vertical: true, horizontal: true}) {\n\t\tif (this.table && (update.vertical || update.horizontal)) {\n\t\t\tthis._viewport = null;\n\t\t\t// this.tbody.remove();\n\t\t\t\n\t\t\tif (update.horizontal) this.renderHeader();\n\t\t\tif (this.model.rows.length > 0) {\n\t\t\t\tthis.renderBody();\n\t\t\t\tif (update.vertical) this.renderRowTree();\n\t\t\t\t// this.table.appendChild(this.tbody);\n\t\t\t} else if (this.model.options.emptyPlaceholder) {\n\t\t\t\tthis.renderEmptyBody();\n\t\t\t\tthis.table.appendChild(this.tbody);\n\t\t\t}\n\n\t\t\tthis.dispatchEvent(new TableEvent('rendercells'));\n\t\t}\n\t}\n\n\trenderEmptyBody() {\n\t\tconst cell = this.bRows[0].children[0] as TableCell;\n\t\tcell.innerHTML = 'no data';\n\t\tcell.className = 'empty-placeholder';\n\t\tcell.colSpan = this.viewport.columns.length + this.rowHeaderCount;\n\t}\n\n\t//#region render header rows\n\trenderHeader() {\n\t\tlet column: ColumnModel;\n\t\tthis.colMap.clear();\n\t\tconst offset = this.rowHeaderCount;\n\t\tconst viewport = this.viewport;\n\n\t\tif (this.model.hasRowTreeEnabled) {\n\t\t\tdom.setSize(this.colgroup.children[0] as HTMLElement, {w: this.treeHeaderWidth}, true);\n\t\t}\n\n\t\tif (this.model.options.rowNumbers) {\n\t\t\tdom.setSize(this.colgroup.children[offset - 1] as HTMLElement, {w: constants.ROW_HEADER_WIDTH}, true);\n\t\t}\n\n\t\tfor (let c = 0; c < viewport.columns.length; c++) {\n\t\t\tcolumn = viewport.columns[c];\n\n\t\t\tif (this.model.autofitColumns.has(column.index)) {\n\t\t\t\tthis.grid.rendering.autofitColumn(column.index, false, false);\n\t\t\t\tthis.model.autofitColumns.delete(column.index); // use autofit only once for performance reasons\n\t\t\t}\n\n\t\t\tthis.colMap.set(column.index, c);\n\t\t\tdom.setSize(this.colgroup.children[c + offset] as HTMLElement, {w: column.width});\n\t\t\tdom.setMinSize(this.colgroup.children[c + offset] as HTMLElement, {w: column.width});\n\t\t\tdom.setMaxSize(this.colgroup.children[c + offset] as HTMLElement, {w: column.width});\n\t\t}\n\t\t\n\t\tlet r = 0;\n\t\tif (this.model.hasColumnTreeEnabled) {\n\t\t\tthis.renderHeaderRowTree(this.hRows[r], r);\n\t\t\t++r;\n\t\t}\n\t\t\n\t\tif (this.model.options.colLetters) {\n\t\t\tdom.setSize(this.hRows[r], {h: this.model.options.rowHeight});\n\t\t\tthis.renderHeaderRowLetters(this.hRows[r], r);\n\t\t\t++r;\n\t\t}\n\t\t\n\t\tfor (let i = 0; i < this.model.headerCount; i++) {\n\t\t\tthis.renderHeaderRowLabels(this.hRows[r + i], r + i, i);\n\t\t}\n\n\t\tr += this.model.headerCount;\n\t\t\n\t\tif (this.model.hasFilter) {\n\t\t\tdom.setSize(this.hRows[r], {h: this.model.options.rowHeight});\n\t\t\tthis.renderHeaderRowFilters(this.hRows[r], r);\n\t\t}\n\t}\n\n\trenderHeaderRowLetters(tr: HTMLTableRowElement, index: number) {\n\t\tlet cell: TableHeaderCell;\n\t\tlet c2: number;\n\t\tconst viewport = this.viewport;\n\t\tconst r = index - this.columnHeaderCount;\n\t\tlet offset = 0; //this.rowHeaderCount;\n\n\t\tdom.setSize(tr, {h: this.model.options.rowHeight});\n\n\t\tif ((this.model.hasRowTree || this.model.options.rowNumbers) && !this.model.hasColumnTreeEnabled) {\n\t\t\tcell = tr.children[offset] as TableCell;\n\t\t\tcell.colSpan = this.rowHeaderCount;\n\t\t\tcell.rowSpan = this.columnHeaderCount;\n\n\t\t\tconst c = offset - this.rowHeaderCount;\n\t\t\tconst cornerCell = this.model.options.levelButtonCell;\n\t\t\tif (!cornerCell || (r == cornerCell.r && c == cornerCell.c)) {\n\t\t\t\tthis.renderHeaderRowCornerCell(cell);\n\t\t\t}\n\n\t\t\toffset++;\n\t\t}\n\n\t\tfor (let i = offset; i < this.rowHeaderCount; i++) {\n\t\t\tdom.hideCell(tr.children[i] as TableCell);\n\t\t\toffset++;\n\t\t}\n\t\t\n\t\tfor (let c = offset; c < tr.children.length; c++) {\n\t\t\tc2 = c - offset;\n\t\t\tcell = tr.children[c] as TableHeaderCell;\n\t\t\tcell.className = 'hlabel';\n\t\t\tif (viewport.columns.length > c2) {\n\t\t\t\tcell.innerHTML = viewport.columns[c2].address;\n\t\t\t\tcell.c = viewport.columns[c2].index;\n\t\t\t\tdom.showCell(cell);\n\t\t\t} else {\n\t\t\t\tdom.hideCell(cell);\n\t\t\t}\n\t\t}\n\t}\n\n\trenderHeaderRowTree(tr: HTMLTableRowElement, index: number) {\n\t\tif (!this.model.hasColumnTreeEnabled) return;\n\n\t\tlet cell: TableCell;\n\t\tlet offset = 0;\n\t\tlet c2: number;\n\t\tconst r = index - this.columnHeaderCount;\n\t\tconst viewport = this.viewport;\n\t\tconst rowNumbers = this.model.options.rowNumbers;\n\t\tconst rowTree = this.model.hasRowTreeEnabled;\n\n\t\tdom.setSize(tr, {h: this.treeHeaderHeight});\n\n\t\tcell = tr.children[offset] as TableCell;\n\t\tif (!cell) return;\n\t\tcell.rowSpan = rowNumbers || rowTree ? this.columnHeaderCount : 1;\n\t\tcell.colSpan = this.rowHeaderCount;\n\t\t\n\t\tconst c = offset - this.rowHeaderCount;\n\t\tconst cornerCell = this.model.options.levelButtonCell;\n\t\tlet cornerCellColumn = null;\n\t\tif ((!cornerCell && (rowNumbers || rowTree)) || (cornerCell && r == cornerCell.r && c == cornerCell.c)) {\n\t\t\tcornerCellColumn = c;\n\t\t\tthis.renderHeaderRowCornerCell(cell);\n\t\t}\n\n\t\tif (rowNumbers || rowTree) {\n\t\t\t++offset;\n\t\t\t// if (rowTree) {\n\t\t\t// \tcell = tr.children[offset] as TableCell;\n\t\t\t// \tcell.innerHTML = '';\n\t\t\t// \tdom.hideCell(cell);\n\t\t\t// \t++offset;\n\t\t\t// }\n\t\t}\n\n\t\tfor (let c = offset; c < tr.children.length; c++) {\n\t\t\tc2 = c - offset;\n\t\t\tcell = tr.children[c] as TableCell;\n\t\t\tif (viewport.columns.length > c2) {\n\t\t\t\tif (cornerCellColumn != c) {\n\t\t\t\t\tcell.innerHTML = '';\n\t\t\t\t\tcell.className = 'htree';\n\t\t\t\t\tthis.renderHeaderRowTreeCell(tr, index, viewport.columns[c2], cell);\n\t\t\t\t}\n\t\t\t\tdom.showCell(cell);\n\t\t\t} else {\n\t\t\t\tdom.hideCell(cell);\n\t\t\t}\n\t\t}\n\t}\n\n\trenderHeaderRowTreeCell(tr: HTMLTableRowElement, rIndex: number, column: ColumnModel, th: HTMLTableCellElement) {\n\t\tlet div = this.hCache.get(column.index, rIndex) as HTMLDivElement & {expander: Expander, expanderLine: HTMLDivElement};\n\t\tif (!div) {\n\t\t\tdiv = dom.createElement('div');\n\t\t\tthis.hCache.set(column.index, rIndex, div);\n\t\t\n\t\t\tconst colWidth = column.width + 1;\n\t\t\tconst treeRowHeight = this.treeHeaderHeight / this.model.maxColumnLevel;\n\n\t\t\tif (column.hasChildren) {\n\t\t\t\tconst expander = new Expander();\n\t\t\t\texpander.addEventListener('toggle', () => this.grid.rendering.toggleColumn(column.index));\n\n\t\t\t\tdiv.expander = expander;\n\t\t\t\tdiv.appendChild(expander);\n\t\t\t\t\n\t\t\t\tdom.setPosition(expander, {\n\t\t\t\t\tl: colWidth / 2 - constants.EXPANDER_SIZE / 2,\n\t\t\t\t\tt: column.level * treeRowHeight + treeRowHeight / 2 - constants.EXPANDER_SIZE / 2\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tdiv.expanderLine = this.createExpanderLine('h');\n\t\t\t\tdiv.appendChild(div.expanderLine);\n\n\t\t\t\tdom.setPosition(div.expanderLine, {\n\t\t\t\t\tl: this.model.options.columnTree.reversed ? 0 : (colWidth / 2),\n\t\t\t\t\tt: column.level * treeRowHeight + treeRowHeight / 2\n\t\t\t\t});\n\n\t\t\t\tdom.setSize(div.expanderLine, {\n\t\t\t\t\th: treeRowHeight / 2,\n\t\t\t\t\tw: colWidth / 2 + 1\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tif (column.hasParent) {\n\t\t\t\tlet parent = column as ColumnModel;\n\t\t\t\twhile (parent.hasParent) {\n\t\t\t\t\tparent = parent.parent as ColumnModel;\n\t\t\t\t\tconst line = this.createExpanderLine('h');\n\t\t\t\t\tdiv.appendChild(line);\n\n\t\t\t\t\tdom.setSize(line, {\n\t\t\t\t\t\th: treeRowHeight / 2,\n\t\t\t\t\t\tw: colWidth - 1\n\t\t\t\t\t});\n\n\t\t\t\t\tdom.setPosition(line, {\n\t\t\t\t\t\tl: 0,\n\t\t\t\t\t\tt: parent.level * treeRowHeight + treeRowHeight / 2\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (div.expander) div.expander.state = column.collapsed ? 'closed' : 'open';\n\t\tth.appendChild(div);\n\t}\n\n\tcreateExpanderLine(direction: string) {\n\t\tconst expanderLine = dom.createElement<HTMLDivElement>('div');\n\t\texpanderLine.className = `${direction}tree-line`;\n\t\treturn expanderLine;\n\t}\n\n\trenderHeaderRowLabels(tr: HTMLTableRowElement, rIndex: number, hIndex: number) {\n\t\tlet colModel: ColumnModel;\n\t\tlet cell: TableHeaderCell;\n\t\tlet header: ColumnHeaderModel;\n\t\tlet offset = 0;\n\t\tlet c2: number;\n\t\tconst viewport = this.viewport;\n\t\tconst r = rIndex - this.columnHeaderCount;\n\t\tconst cornerCell = this.model.options.levelButtonCell;\n\t\tlet rowHeight: number;\n\n\t\tif (this.model.hasRowTreeEnabled) {\n\t\t\tcell = tr.children[offset] as TableHeaderCell;\n\t\t\tcell.innerHTML = '';\n\t\t\tif (this.model.hasColumnTreeEnabled || this.model.options.colLetters || hIndex > 0) {\n\t\t\t\tdom.hideCell(cell);\n\t\t\t} else {\n\t\t\t\tcell.rowSpan = this.columnHeaderCount;\n\t\t\t\tcell.colSpan = this.rowHeaderCount;\n\t\t\t\t\n\t\t\t\tthis.renderHeaderRowCornerCell(cell);\n\t\t\t}\n\t\t\t++offset;\n\t\t}\n\n\t\tif (this.model.options.rowNumbers) {\n\t\t\tcell = tr.children[offset] as TableHeaderCell;\n\t\t\tcell.innerHTML = '';\n\t\t\tif (this.model.hasRowTreeEnabled || this.model.options.colLetters || this.model.hasColumnTreeEnabled || hIndex > 0) {\n\t\t\t\tdom.hideCell(cell);\n\t\t\t} else {\n\t\t\t\tcell.rowSpan = this.columnHeaderCount;\n\t\t\t\tcell.colSpan = this.rowHeaderCount;\n\t\t\t\tthis.renderHeaderRowCornerCell(cell);\n\t\t\t}\n\t\t\t++offset;\n\t\t}\n\n\t\tfor (let c = offset; c < tr.children.length; c++) {\n\t\t\tc2 = c - offset;\n\t\t\tcell = tr.children[c] as TableHeaderCell;\n\t\t\tcell.className = 'hlabel';\n\t\t\tcell.innerHTML = '';\n\t\t\t\n\t\t\tif (viewport.columns.length > c2) {\n\t\t\t\tcolModel = viewport.columns[c2];\n\t\t\t\theader = colModel.header[hIndex];\n\t\t\t\tif (header.height) rowHeight = Math.max(header.height, rowHeight || 0);\n\n\t\t\t\tcell.colSpan = 1;\n\t\t\t\tcell.rowSpan = 1;\n\t\t\t\tcell.c = colModel.index;\n\t\t\t\tcell.r = hIndex;\n\n\t\t\t\tif (header?.hidden) {\n\t\t\t\t\tif (c2 == this.freezeLeft) {\n\t\t\t\t\t\tlet prevModel = colModel.prevVisible;\n\t\t\t\t\t\tlet c3 = 0;\n\t\t\t\t\t\twhile (prevModel && prevModel.header[hIndex]?.hidden) {\n\t\t\t\t\t\t\tprevModel = prevModel.prevVisible;\n\t\t\t\t\t\t\t++c3;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (prevModel && prevModel.header[hIndex].cs) {\n\t\t\t\t\t\t\tdom.showCell(cell);\n\t\t\t\t\t\t\tcell.colSpan = prevModel.header[hIndex].cs - c3 - 1;\n\t\t\t\t\t\t\tcell.rowSpan = prevModel.header[hIndex].rs || 1;\n\t\t\t\t\t\t\tthis.renderHeaderRowLabelCell(cell, prevModel, rIndex, hIndex);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdom.hideCell(cell);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdom.hideCell(cell);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (colModel.header && colModel.header[hIndex]) {\n\t\t\t\t\t\tconst cs = colModel.header[hIndex].cs || 1;\n\t\t\t\t\t\tcell.colSpan = cs > 1 ? colModel.calculateRealColspan(cs) : 1;\n\t\t\t\t\t\tcell.rowSpan = colModel.header[hIndex].rs || 1;\n\t\t\t\t\t}\n\t\t\t\t\tdom.showCell(cell);\n\t\t\t\t\tthis.renderHeaderRowLabelCell(cell, colModel, rIndex, hIndex);\n\n\t\t\t\t\tif (cornerCell && cornerCell.r == r && cornerCell.c == colModel.index) {\n\t\t\t\t\t\tthis.renderHeaderRowCornerCell(cell);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdom.hideCell(cell);\n\t\t\t}\n\t\t}\n\n\t\tdom.setSize(tr, {h: rowHeight ?? this.model.options.rowHeight});\n\t}\n\n\trenderHeaderRowLabelCell(th: TableHeaderCell, column: ColumnModel, rIndex: number, hIndex: number) {\n\t\tlet div = this.hCache.get(column.index, rIndex) as HTMLDivElement & {\n\t\t\tsortingArrow?: SortingArrow,\n\t\t\texpander?: Expander,\n\t\t};\n\t\tconst h = column.header[hIndex];\n\t\tif (!div) {\n\t\t\tdiv = dom.createElement('div');\n\t\t\tif (!h) div.innerHTML = '';\n\t\t\telse if (h.html) div.innerHTML = h.label ?? \"\";\n\t\t\telse div.innerText = h.label ?? \"\";\n\n\t\t\tif (h && h._style != null) {\n\t\t\t\tapplyStyle(div, styleToCSStyle(this.model.styles.get(h._style)));\n\t\t\t}\n\n\t\t\tthis.hCache.set(column.index, rIndex, div);\n\t\t}\n\n\t\tif (\n\t\t\tthis.model.options.columnHeaderTreeButtons \n\t\t\t&& column.hasChildren \n\t\t\t&& hIndex == column.level\n\t\t) {\n\t\t\tlet expander = div.expander;\n\t\t\tif (!expander) {\n\t\t\t\texpander = new Expander();\n\t\t\t\texpander.addEventListener('toggle', () => this.grid.rendering.toggleColumn(column.index));\n\t\t\t\tdiv.expander = expander;\n\t\t\t\tdiv.prepend(expander);\n\t\t\t\tdom.setPosition(expander, {l: 4, t: 4});\n\t\t\t}\n\t\t\texpander.state = column.collapsed ? 'closed' : 'open';\n\t\t}\n\n\t\tif (column.sorting && hIndex == column.header.length - 1) {\n\t\t\tth.className += ' sort';\n\t\t\tif (!div.sortingArrow) {\n\t\t\t\tdiv.sortingArrow = new SortingArrow();\t\t\t\t\t\n\t\t\t\tdiv.appendChild(div.sortingArrow);\n\t\t\t\tdom.setPosition(div.sortingArrow, {t: 0, r: 5});\n\t\t\t}\n\t\t\tdiv.sortingArrow.sortSettings = this.model.sorting.get(column.index);\n\t\t}\n\n\t\tth.appendChild(div);\n\t}\n\n\trenderHeaderRowFilters(tr: HTMLTableRowElement, index: number) {\n\t\tlet cell: TableHeaderCell;\n\t\tlet offset = 0;\n\t\tlet c2: number;\n\t\tconst viewport = this.viewport;\n\n\t\tif (this.model.hasRowTreeEnabled) {\n\t\t\tcell = tr.children[offset] as TableHeaderCell;\n\t\t\tcell.innerHTML = '';\n\t\t\tif (this.model.columnHeaderCount > 1) {\n\t\t\t\tdom.hideCell(cell);\n\t\t\t} else {\n\t\t\t\tcell.colSpan = this.model.columnHeaderCount;\n\t\t\t}\n\t\t\t++offset;\n\t\t}\n\n\t\tif (this.model.options.rowNumbers) {\n\t\t\tcell = tr.children[offset] as TableHeaderCell;\n\t\t\tcell.innerHTML = '';\n\t\t\t\n\t\t\tif (\n\t\t\t\tthis.model.hasRowTreeEnabled || this.model.options.colLetters \n\t\t\t\t|| this.model.hasColumnTreeEnabled || this.model.headerCount > 0\n\t\t\t) {\n\t\t\t\tdom.hideCell(cell);\n\t\t\t} else {\n\t\t\t\tcell.rowSpan = this.columnHeaderCount;\n\t\t\t\tcell.colSpan = this.rowHeaderCount;\n\t\t\t\tthis.renderHeaderRowCornerCell(cell);\n\t\t\t}\n\t\t\t++offset;\n\t\t}\n\n\t\tfor (let c = offset; c < tr.children.length; c++) {\n\t\t\tc2 = c - offset;\n\t\t\tcell = tr.children[c] as TableCell;\n\t\t\tif (viewport.columns.length > c2) {\n\t\t\t\tdom.showCell(cell);\n\t\t\t\tconst column = viewport.columns[c2];\n\t\t\t\tif (column.hasFilter) this.renderHeaderRowFilterCell(tr, index, column, cell);\n\t\t\t\telse cell.innerHTML = '';\n\t\t\t} else {\n\t\t\t\tdom.hideCell(cell);\n\t\t\t}\n\t\t}\n\t}\n\n\trenderHeaderRowFilterCell(tr: HTMLTableRowElement, rIndex: number, column: ColumnModel, th: TableHeaderCell) {\n\t\tth.innerHTML = '';\n\t\tth.className = 'filter';\n\t\tth.c = column.index;\n\n\t\tlet div = this.hCache.get(column.index, rIndex) as HTMLDivElement & {filter: FilterLabel};\n\t\tif (!div) {\n\t\t\tdiv = dom.createElement('div');\n\t\t\tdiv.filter = dom.createElement<FilterLabel>('og-filter-label');\n\t\t\tdiv.appendChild(div.filter);\n\t\t\tthis.hCache.set(column.index, rIndex, div);\n\t\t}\n\t\t\n\t\tconst term = this.grid.filtering.filter.get(column.index)?.term;\n\t\tdiv.filter.value = Array.isArray(term) ? term.map(item => item.value ?? item.key).join(', ') : term;\n\t\tth.appendChild(div);\n\t}\n\n\trenderHeaderRowCornerCell(th: TableCell) {\n\t\tthis.cornerDiv = dom.createElement('div');\n\t\tconst treeColWidth = Math.max(\n\t\t\t(this.treeHeaderWidth || (constants.EXPANDER_SIZE + 2)) / (this.model.maxRowLevel + 1),\n\t\t\tconstants.EXPANDER_SIZE + 2\n\t\t);\n\t\t\n\t\tif (this.model.hasRowTree) {\n\t\t\tfor (let l = 0; l <= this.model.maxRowLevel; l++) {\n\t\t\t\tconst expander = new LevelExpander();\n\t\t\t\texpander.level = l;\n\t\t\t\tthis.cornerDiv.appendChild(expander);\n\t\t\t\tdom.setPosition(expander, {\n\t\t\t\t\tl: l * treeColWidth + treeColWidth / 2 - constants.EXPANDER_SIZE / 2,\n\t\t\t\t\tb: 3\n\t\t\t\t});\n\t\t\t\texpander.addEventListener('mousedown', e => e.stopPropagation());\n\t\t\t\texpander.addEventListener('toggle', (e: LevelExpandEvent) => {\n\t\t\t\t\tthis.model.columns.filter(col => col.levelButtons).forEach(col => this.bCache.deleteColumn(col.index));\n\t\t\t\t\tthis.grid.rendering.setRowExpandLevel(e.level);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (this.model.hasColumnTree) {\n\t\t\tconst treeRowHeight = (this.model.hasColumnTree ? this.treeHeaderHeight : th.clientHeight) / (this.model.maxColumnLevel + 1);\n\t\t\tconst vertical = (this.model.maxColumnLevel * 15 + 20) <= th.clientHeight;\n\t\t\tfor (let l = 0; l <= this.model.maxColumnLevel; l++) {\n\t\t\t\tconst expander = new LevelExpander();\n\t\t\t\texpander.level = l;\n\t\t\t\tthis.cornerDiv.appendChild(expander);\n\t\t\t\tdom.setPosition(expander, vertical ? {\n\t\t\t\t\tt: l * treeRowHeight + treeRowHeight / 2 - constants.EXPANDER_SIZE / 2,\n\t\t\t\t\tr: 3\n\t\t\t\t} : {\n\t\t\t\t\tr: l * treeColWidth + treeColWidth / 2 - constants.EXPANDER_SIZE / 2,\n\t\t\t\t\tb: 3\n\t\t\t\t});\n\t\t\t\texpander.addEventListener('mousedown', e => e.stopPropagation());\n\t\t\t\texpander.addEventListener('toggle', (e: LevelExpandEvent) => {\n\t\t\t\t\tthis.grid.rendering.setColumnExpandLevel(e.level);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\t\n\t\tdom.empty(th);\n\t\tth.appendChild(this.cornerDiv);\n\t}\n\t//#endregion\n\n\n\tcellRenderSchedules = new WeakMap<TableCell, number>();\n\n\n\t//#region render body rows\n\trenderBody() {\n\t\tlet row: HTMLTableRowElement;\n\t\tlet cell: TableCell;\n\t\tlet rowModel: RowModel;\n\t\tlet rIndex: number;\n\t\tlet cIndex: number;\n\t\tlet colModel: ColumnModel;\n\t\tlet cellModel: CellModel;\n\t\tlet a1: CellAddress;\n\t\tlet mergeState: MergeCellState;\n\t\t\n\t\tconst freezeLeft = this.freezeLeft || 0;\n\t\t// const freezeTop = this.freezeTop || 0;\n\t\tconst offset = this.rowHeaderCount;\n\t\tconst merges = this.model.merges;\n\t\tconst rowNumbers = this.model.options.rowNumbers;\n\t\tconst viewport = this.viewport;\n\t\tconst viewportRange = this.viewportRange;\n\n\t\tif (!viewportRange) return;\n\n\t\tconst mainRange = new CellRange(\n\t\t\tthis.colOffset + freezeLeft, \n\t\t\tthis.rowOffset, // + freezeTop, \n\t\t\tviewportRange.c2, \n\t\t\tviewportRange.r2\n\t\t);\n\n\t\tthis.rowMap.clear();\n\n\t\tfor (let r = 0; r < this.bRows.length; r++) {\n\t\t\trow = this.bRows[r];\n\t\t\tif (r < viewport.rows.length) {\n\t\t\t\trowModel = viewport.rows[r];\n\t\t\t\trIndex = rowModel.index;\n\n\t\t\t\tif (this.model.autofitRows.has(rIndex)) {\n\t\t\t\t\tthis.grid.rendering.autofitRow(rIndex, false, false);\n\t\t\t\t\tthis.model.autofitRows.delete(rIndex); // use autofit only once for performance reasons\n\t\t\t\t}\n\n\t\t\t\tdom.setSize(row, {h: rowModel.height});\n\t\t\t\t\n\t\t\t\tif (rowModel.height < this.model.options.rowHeight) {\n\t\t\t\t\tdom.setLineHeight(row, rowModel.height);\n\t\t\t\t}\n\n\t\t\t\tthis.rowMap.set(rIndex, r);\n\n\t\t\t\tif (rowNumbers) {\n\t\t\t\t\tcell = row.children[offset - 1] as TableCell;\n\t\t\t\t\tcell.className = 'vlabel';\n\t\t\t\t\tcell.r = rIndex;\n\t\t\t\t\tcell.c = -1;\n\t\t\t\t\tcell.innerHTML = `<div>${encodeRow(rIndex)}</div>`;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfor (let c = offset; c < row.children.length; c++) {\n\t\t\t\t\tcell = row.children[c] as TableCell;\n\t\t\t\t\tif (c - offset < viewport.columns.length) {\n\t\t\t\t\t\tcolModel = viewport.columns[c - offset];\n\t\t\t\t\t\tcIndex = colModel.index;\n\n\t\t\t\t\t\tcell.r = rIndex;\n\t\t\t\t\t\tcell.c = cIndex;\n\t\t\t\t\t\t\n\t\t\t\t\t\tcellModel = rowModel.cell(cIndex);\n\t\t\t\t\t\ta1 = cellModel.address;\n\t\t\t\t\t\tmergeState = merges.getMergeState(a1);\n\t\t\t\t\t\tif (mergeState == MergeCellState.HIDDEN) {\n\t\t\t\t\t\t\tconst merge = merges.hiddenCells.get(cellModel.address);\n\t\t\t\t\t\t\tconst inter = mainRange.intersect(new CellRange(merge.c, merge.r, merge.c + merge.cs - 1, merge.r + merge.rs - 1));\n\n\t\t\t\t\t\t\tif (inter && cellModel.c == inter.c1 && cellModel.r == inter.r1) {\n\t\t\t\t\t\t\t\t// top left cell of the merged range\n\t\t\t\t\t\t\t\tcellModel = this.model.rows[merge.r].cell(merge.c);\n\t\t\t\t\t\t\t\tcell.colSpan = inter.size.columns;\n\t\t\t\t\t\t\t\tcell.rowSpan = inter.size.rows;\n\t\t\t\t\t\t\t\tcell.c = cellModel.c;\n\t\t\t\t\t\t\t\tcell.r = cellModel.r;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdom.hideCell(cell);\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (mergeState == MergeCellState.MERGED) {\n\t\t\t\t\t\t\tconst merge = cellModel.merge;\n\t\t\t\t\t\t\tcell.colSpan = merge.cs;\n\t\t\t\t\t\t\tcell.rowSpan = merge.rs;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcell.colSpan = 1;\n\t\t\t\t\t\t\tcell.rowSpan = 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tdom.showCell(cell);\n\t\t\t\t\t\tthis.renderBodyCell(cellModel, cell);\n\t\t\t\t\t\t// this.scheduleRenderBodyCell(cellModel, cell);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdom.hideCell(cell);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\trow.style.display = 'table-row';\n\t\t\t\trow.className = rowModel.filterState > 1 ? `filtered` : '';\n\t\t\t} else {\n\t\t\t\trow.style.display = 'none';\n\t\t\t}\n\t\t}\n\t}\n\n\tscheduleRenderBodyCell(cellModel: CellModel, cell: TableCell) {\n\t\tif (this.cellRenderSchedules.has(cell)) {\n\t\t\twindow.clearTimeout(this.cellRenderSchedules.get(cell));\n\t\t\tthis.cellRenderSchedules.delete(cell);\n\t\t}\n\t\tthis.cellRenderSchedules.set(cell, window.setTimeout(() => this.renderBodyCell(cellModel, cell)));\n\t}\n\n\tfixCellBorders(cell: TableCell, style: Style) {\n\t\tif (style.bottom?.style == 'none') {\n\t\t\tcell.style.borderBottomColor = 'transparent';\n\t\t}\n\t\tif (style.top?.style == 'none') {\n\t\t\tcell.style.borderTop = 'transparent';\n\t\t}\n\n\t\tif (style.right?.style == 'none') {\n\t\t\tcell.style.borderRight = 'transparent';\n\t\t}\n\t\tif (style.left?.style == 'none') {\n\t\t\tcell.style.borderLeft = 'transparent';\n\t\t}\n\t}\n\n\trenderBodyCell(cellModel: CellModel, cell?: TableCell) {\n\t\tconst force = !cell;\n\t\tcell = cell || this.getCellByCellModel(cellModel);\n\t\tif (cell) {\n\t\t\tlet div = (force ? null : this.bCache.get(cellModel.c, cellModel.r)) as HTMLDivElement;\n\t\t\tif (!div) {\n\t\t\t\tdiv = dom.createElement('div');\n\t\t\t\tgetCellRenderer(cellModel).call(this, div, cellModel);\n\t\t\t\tthis.bCache.set(cellModel.c, cellModel.r, div);\n\t\t\t}\n\n\t\t\tif (this.renderAll) {\n\t\t\t\t// do this only when rendering all cells for performance reasons, good for exports to raw html\n\t\t\t\tconst s = cellModel.composedStyle;\n\t\t\t\tif (s) this.fixCellBorders(cell, s);\n\t\t\t}\n\n\t\t\tdom.empty(cell);\n\t\t\tcell.appendChild(div);\n\t\t} else {\n\t\t\tthis.bCache.delete(cellModel.c, cellModel.r);\n\t\t}\n\t}\n\n\tmergeBodyCells(mergedCells: Merge[]) {\n\t\tlet cell: TableCell;\n\t\tconst skipSet = new Set<TableCell>();\n\t\tfor (const m of mergedCells) {\n\t\t\tcell = this.bRows[m.r].cells[m.c] as TableCell;\n\t\t\tif (!cell || skipSet.has(cell)) continue;\n\t\t\tfor (let r = m.r; r < m.r + m.rs; r++) {\n\t\t\t\tfor (let c = m.c; c < m.c + m.cs; c++) {\n\t\t\t\t\tcell = this.bRows[r].cells[c] as TableCell;\n\t\t\t\t\tif (!cell) continue;\n\t\t\t\t\tif (r == m.r && c == m.c) {\n\t\t\t\t\t\tcell.colSpan = m.cs;\n\t\t\t\t\t\tcell.rowSpan = m.rs;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tskipSet.add(cell);\n\t\t\t\t\t\tdom.hideCell(cell);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\t\n\t\t}\n\t}\n\t\n\trenderRowTree() {\n\t\tif (!this.model.hasRowTreeEnabled) return;\n\t\tlet cell: TableCell;\n\t\tconst viewport = this.viewport;\n\t\tconst cIndex = -this.rowHeaderCount;\n\t\tfor (let r = 0; r < this.bRows.length; r++) {\n\t\t\tcell = this.bRows[r].children[0] as TableCell;\n\t\t\tcell.innerHTML = '';\n\t\t\tif (r < viewport.rows.length) {\n\t\t\t\tcell.className = 'vtree';\n\t\t\t\tthis.renderRowTreeCell(cIndex, viewport.rows[r], cell )\n\t\t\t}\n\t\t}\n\t}\n\n\trenderRowTreeCell(cIndex: number, row: RowModel, th: HTMLTableCellElement) {\n\t\tlet div = this.bCache.get(cIndex, row.index) as HTMLDivElement & {expander: Expander};\n\t\tif (!div) {\n\t\t\tdiv = dom.createElement('div');\n\t\t\tthis.bCache.set(cIndex, row.index, div);\n\t\t\n\t\t\tconst rowHeight = row.height + 1;\n\t\t\tconst treeColWidth = this.treeHeaderWidth / this.model.maxRowLevel;\n\n\t\t\tif (row.hasChildren) {\n\t\t\t\tconst expander = new Expander();\n\t\t\t\texpander.addEventListener('toggle', () => this.grid.rendering.toggleRow(row.index));\n\t\t\t\t(th.parentElement as TableRow).expander = expander;\n\t\t\t\tdiv.expander = expander;\n\t\t\t\tdiv.appendChild(expander);\n\t\t\t\t\n\t\t\t\tdom.setPosition(expander, {\n\t\t\t\t\tt: rowHeight / 2 - constants.EXPANDER_SIZE / 2,\n\t\t\t\t\tl: row.level * treeColWidth + treeColWidth / 2 - constants.EXPANDER_SIZE / 2\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tconst line = this.createExpanderLine('v');\n\t\t\t\tdiv.appendChild(line);\n\n\t\t\t\tdom.setPosition(line, {\n\t\t\t\t\tt: this.model.options.rowTree.reversed ? 0 : (rowHeight / 2),\n\t\t\t\t\tl: row.level * treeColWidth + treeColWidth / 2\n\t\t\t\t});\n\n\t\t\t\tdom.setSize(line, {\n\t\t\t\t\tw: treeColWidth / 2,\n\t\t\t\t\th: rowHeight / 2 + 1\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tif (row.hasParent) {\n\t\t\t\tlet parent = row as RowModel;\n\t\t\t\twhile (parent.hasParent) {\n\t\t\t\t\tparent = parent.parent as RowModel;\n\t\t\t\t\tconst line = this.createExpanderLine('v');\n\t\t\t\t\tdiv.appendChild(line);\n\n\t\t\t\t\tdom.setSize(line, {\n\t\t\t\t\t\tw: treeColWidth / 2,\n\t\t\t\t\t\th: rowHeight + 2\n\t\t\t\t\t});\n\n\t\t\t\t\tdom.setPosition(line, {\n\t\t\t\t\t\tt: -1,\n\t\t\t\t\t\tl: parent.level * treeColWidth + treeColWidth / 2\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (div.expander) div.expander.state = row.collapsed ? 'closed' : 'open';\n\t\tth.appendChild(div);\n\t}\n\t//#endregion\n\n}"]}
1
+ {"version":3,"file":"table.js","sourceRoot":"","sources":["../../src/ui/table.ts"],"names":[],"mappings":"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","sourcesContent":["import constants from '../constants';\nimport { dom, Expander, LevelExpander, LevelExpandEvent } from \"@omegagrid/core\";\nimport { LitElement, html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport {\n\tGridModel, Merge, Viewport, CellModel, RowModel, ColumnModel, ColumnHeaderModel, encodeRow, styleToCSStyle, CellRange, Style,\n\tCellAddress,\n\tMergeCellState\n} from \"@omegagrid/grid-core\";\nimport { ElementCache } from \"./elementCache\";\nimport { tableStyles } from \"./table.styles\";\nimport { SortingArrow } from \"./sortingArrow\";\nimport { FilterLabel } from \"./filterLabel\";\nimport { Grid } from './grid';\nimport { applyStyle, getCellRenderer } from '../renderers';\n\nexport type TableCell = HTMLTableCellElement & {\n\tc: number,\n\tr: number\n}\n\nexport type TableRow = HTMLTableRowElement & {\n\tr: number,\n\texpander: Expander\n}\n\nexport type TableHeaderCell = TableCell;\nexport type TableRenderOptions = {vertical?: boolean, horizontal?: boolean};\n\nexport class TableEvent extends Event { }\n\n@customElement('og-table')\nexport class Table extends LitElement {\n\n\tstatic styles = [tableStyles];\n\n\tprivate _viewport: Viewport;\n\tprivate _viewportSize: {w: number, h: number};\n\tprivate _freezeLeft: number;\n\tprivate _freezeTop: number;\n\tprivate bCache: ElementCache;\n\tprivate hCache: ElementCache;\n\tpublic hRows: TableRow[];\n\tpublic bRows: TableRow[];\n\tpublic cols: HTMLTableColElement[];\n\n\t// map of model indexes on element indexes\n\tprivate _rowMap = new Map<number, number>();\n\tprivate _colMap = new Map<number, number>();\n\tprivate cornerDiv: HTMLDivElement;\n\n\tgrid: Grid;\n\t\n\t//#region reactive props\n\t@property({type: Object})\n\tmodel: GridModel;\n\n\t@property({type: Number, hasChanged: () => false})\n\trowOffset = 0;\n\n\t@property({type: Number, hasChanged: () => false})\n\tcolOffset = 0;\n\n\t@property({type: Number, reflect: true})\n\tzoom = 1;\n\n\t@property({type: Boolean, reflect: true})\n\tnogrid = false;\n\n\t@property({type: Boolean, reflect: true})\n\trenderAll = false;\n\t//#endregion\n\n\n\t//#region table elements\n\tprivate _thead: HTMLElement;\n\tget thead() {\n\t\tif (this._thead) return this._thead;\n\t\treturn (this._thead = dom.createElement('thead'));\n\t}\n\n\tprivate _tbody: HTMLElement;\n\tget tbody() {\n\t\tif (this._tbody) return this._tbody;\n\t\treturn (this._tbody = dom.createElement('tbody'));\n\t}\n\n\tprivate _colgroup: HTMLElement;\n\tget colgroup() {\n\t\tif (this._colgroup) return this._colgroup;\n\t\treturn (this._colgroup = dom.createElement('colgroup'));\n\t}\n\n\tprivate _table: HTMLTableElement;\n\tget table() {\n\t\tif (this._table) return this._table;\n\t\tthis._table = dom.createElement('table');\n\t\tthis._table.appendChild(this.colgroup);\n\t\tthis._table.appendChild(this.thead);\n\t\tthis._table.appendChild(this.tbody);\n\t\treturn this._table;\n\t}\n\t\n\t//#endregion\n\n\n\t//#region calculated props\n\tget colMap() { return this._colMap }\n\tget rowMap() { return this._rowMap }\n\n\tgetColumnByModelIndex = (c: number) => this.getColumnByGridIndex(this.colMap.get(c));\n\tgetColumnByGridIndex = (c: number) => this.colgroup.children[c + this.rowHeaderCount] as HTMLTableColElement;\n\tgetRowByModelIndex = (r: number) => this.bRows[this.rowMap.get(r)];\n\tgetRowByGridIndex = (r: number) => this.bRows[r];\n\tgetCellByGridIndex = (c: number, r: number) => this.bRows[r].children[c + this.rowHeaderCount] as TableCell;\n\tgetCellByModelIndex = (c: number, r: number) => this.getRowByModelIndex(r)?.children[this.colMap.get(c) + this.rowHeaderCount] as TableCell;\n\tgetCellByCellModel = (m: CellModel) => this.getCellByModelIndex(m.c, m.r);\n\tresetFreezeLeft = () : void => this._freezeLeft = null;\n\n\tget freezeLeft() {\n\t\tif (this._freezeLeft == null) {\n\t\t\tif (this.offsetWidth > 0) {\n\t\t\t\tlet w = 0;\n\t\t\t\tfor (let c = 0; c < this.model.options.freezeLeft; c++) {\n\t\t\t\t\tw += this.model.columns[c].width;\n\t\t\t\t}\n\t\t\t\tthis._freezeLeft = w < this.offsetWidth / 2 ? this.model.options.freezeLeft : 0;\n\t\t\t} else {\n\t\t\t\tthis._freezeLeft = this.model.options.freezeLeft;\n\t\t\t}\n\t\t}\n\t\treturn this._freezeLeft;\n\t}\n\n\tget freezeTop() {\n\t\tif (this._freezeTop == null) {\n\t\t\tthis._freezeTop = this.model.options.freezeTop;\n\t\t}\n\t\treturn this._freezeTop;\n\t}\n\n\t_highlightedColHeaderCells: TableHeaderCell[] = [];\n\t_highlightedRowHeaderCells: TableHeaderCell[] = [];\n\n\tpreviewZoom(zoom: number) {\n\t\tdom.zoomElement(this.table, zoom);\n\t}\n\n\thighlightColHeaderCells(columns: number[]) {\n\t\tif (!this.model.options.colLetters) return;\n\t\tthis._highlightedColHeaderCells.forEach(cell => cell.className = 'hlabel');\n\t\tthis._highlightedColHeaderCells = [];\n\t\tconst offset = this.rowHeaderCount;\n\t\tcolumns.forEach(c => {\n\t\t\tconst cell = this.hRows[this.model.hasColumnTreeEnabled ? 1 : 0].children[this.colMap.get(c) + offset] as TableHeaderCell;\n\t\t\tif (cell) {\n\t\t\t\tthis._highlightedColHeaderCells.push(cell);\n\t\t\t\tcell.className = 'hlabel selected';\n\t\t\t}\n\t\t});\n\t}\n\n\thighlightRowHeaderCells(rows: number[]) {\n\t\tif (!this.model.options.rowNumbers) return;\n\t\tif (this.model.rows.length == 0) return;\n\t\tthis._highlightedRowHeaderCells.forEach(cell => cell.className = 'vlabel');\n\t\tthis._highlightedRowHeaderCells = [];\n\t\trows.forEach(r => {\n\t\t\tconst cell = this.getRowByModelIndex(r)?.children[this.model.hasRowTreeEnabled ? 1 : 0] as TableHeaderCell;\n\t\t\tif (cell) {\n\t\t\t\tthis._highlightedRowHeaderCells.push(cell);\n\t\t\t\tcell.className = 'vlabel selected';\n\t\t\t}\n\t\t});\n\t}\n\n\tget columnHeaderCount() : number {\n\t\treturn this.model.headerCount \n\t\t\t+ (this.model.hasColumnTreeEnabled ? 1 : 0) \n\t\t\t+ (this.model.hasFilter ? 1 : 0)\n\t\t\t+ (this.model.options.colLetters ? 1 : 0);\n\t}\n\n\tget rowHeaderCount() { return (this.model.hasRowTreeEnabled ? 1 : 0) + (this.model.options.rowNumbers ? 1 : 0) }\n\n\tget renderRowCount() { \n\t\treturn this.renderAll \n\t\t\t? this.model.visibleRows.length \n\t\t\t: Math.round(Math.min(this.clientHeight / constants.MIN_ROW_HEIGHT, this.model.rows.length));\n\t}\n\n\tget renderColCount() { \n\t\treturn this.renderAll \n\t\t\t? this.model.visibleColumns.length + this.rowHeaderCount\n\t\t\t: Math.round(Math.min((this.clientWidth / constants.MIN_COL_WIDTH) || 5, this.model.columns.length + this.rowHeaderCount));\n\t}\n\n\tget totalHeaderHeight() : number {\n\t\tlet h = 0, r = 0;\n\n\t\tif (this.model.hasColumnTreeEnabled) {\n\t\t\th += this.treeHeaderHeight;\n\t\t\t++r;\n\t\t}\n\n\t\tif (this.model.options.colLetters) {\n\t\t\th += (this.thead.children[r] as HTMLElement).offsetHeight || this.model.options.rowHeight\n\t\t\t++r;\n\t\t}\n\n\t\tfor (let i = 0; i < this.model.headerCount; i++) {\n\t\t\th += (this.thead.children[r + i] as HTMLElement).offsetHeight || this.model.options.rowHeight;\n\t\t}\n\n\t\tif (this.model.hasFilter) h += this.model.options.rowHeight;\n\t\treturn h;\n\t}\n\n\tget treeHeaderWidth() { return this.model.hasRowTreeEnabled ? this.model.maxRowLevel * 15 + 20 : 0 }\n\tget treeHeaderHeight() {\n\t\treturn this.model.hasColumnTree ? this.model.maxColumnLevel * 15 + 20 : 0\n\t}\n\n\tget totalHeaderWidth() : number {\n\t\tlet w = 0;\n\t\tif (this.model.options.rowNumbers) w += constants.ROW_HEADER_WIDTH;\n\t\tw += this.treeHeaderWidth;\n\t\treturn w;\n\t}\n\n\tget viewportSize() : {w: number, h: number} {\n\t\tif (!this._viewportSize) {\n\t\t\tthis._viewportSize = this.renderAll ? {w: Infinity, h: Infinity} : {\n\t\t\t\tw: (this.clientWidth - this.totalHeaderWidth - constants.SLIDER_SIZE) / this.zoom,\n\t\t\t\th: (this.clientHeight - this.totalHeaderHeight - constants.SLIDER_SIZE) / this.zoom\n\t\t\t};\n\t\t}\n\t\treturn this._viewportSize;\n\t}\n\n\tget viewport() : Viewport {\n\t\tif (!this._viewport) {\n\t\t\tthis._viewport = this.model.getViewport(\n\t\t\t\t{c: this.colOffset, r: this.rowOffset}, \n\t\t\t\tthis.viewportSize, {\n\t\t\t\t\tt: this.model.options.freezeTop, \n\t\t\t\t\tl: this.freezeLeft, \n\t\t\t\t\tb: this.model.options.freezeBottom, \n\t\t\t\t\tr: this.model.options.freezeRight\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t\treturn this._viewport;\n\t}\n\n\tget viewportRange() : CellRange {\n\t\tif (this.viewport.columns.length == 0 || this.viewport.rows.length == 0) return null;\n\t\treturn new CellRange(\n\t\t\tthis.viewport.columns[0].index, \n\t\t\tthis.viewport.rows[0].index, \n\t\t\tthis.viewport.columns[this.viewport.columns.length - 1].index, \n\t\t\tthis.viewport.rows[this.viewport.rows.length - 1].index\n\t\t);\n\t}\n\t//#endregion\n\n\tfindColumnIndexByOffset(offset: number) : number {\n\t\tlet w = 0;\n\t\tconst columns = this.colgroup.children;\n\t\tfor (let c = 0; c < columns.length; c++) {\n\t\t\tconst col = columns[c] as HTMLTableColElement;\n\t\t\tw += col.offsetWidth;\n\t\t\tif (w >= offset) return c;\n\t\t}\n\t\treturn -1;\n\t}\n\n\tfindRowByOffset(offset: number) : TableRow {\n\t\tconst rows = (offset > this.thead.offsetHeight ? this.tbody : this.thead).children;\n\t\tif (offset > this.thead.offsetHeight) offset -= this.thead.offsetHeight;\n\t\tlet h = 0;\n\t\tfor (let r = 0; r < rows.length; r++) {\n\t\t\tconst row = rows[r] as TableRow;\n\t\t\th += row.offsetHeight;\n\t\t\tif (h >= offset) return row;\n\t\t}\n\t\treturn null;\n\t}\n\n\tfindTableCellByOffset(x: number, y: number) : TableCell {\n\t\tx = x / this.zoom;\n\t\ty = y / this.zoom;\n\t\t\n\t\tconst row = this.findRowByOffset(y);\n\t\tconst column = this.findColumnIndexByOffset(x); // ?? this.colgroup.children.length - 1;\n\t\tconst cell = row && column > -1 ? row.children[column] as TableCell : null;\n\t\treturn cell && !dom.isHidden(cell) ? cell : null;\n\t}\n\n\t/**\n\t * Returns the nearest visible cell to the given offset and exact cell if availible\n\t * @param x \n\t * @param y \n\t * @returns \n\t */\n\tfindNearestTableCellByOffset(x: number, y: number) : [TableCell, TableCell?] {\n\t\tx = x / this.zoom;\n\t\ty = y / this.zoom;\n\t\tlet row: TableRow, c: number;\n\t\tconst exactRow = this.findRowByOffset(y);\n\t\tconst excactColumnIndex = this.findColumnIndexByOffset(x);\n\n\t\tif (y < 0) row = this.tbody.children[0] as TableRow;\n\t\telse if (y > this.tbody.offsetHeight + this.thead.offsetHeight)\n\t\t\trow = this.tbody.children[this.viewport.rows.length - 1] as TableRow;\n\t\telse row = exactRow;\n\t\t\n\t\tif (x < 0) c = this.rowHeaderCount;\n\t\telse if (x >= this.tbody.offsetWidth) c = this.viewport.columns.length + this.rowHeaderCount - 1;\n\t\telse c = excactColumnIndex\n\n\t\tlet cell = row && c > -1 ? row.children[c] as TableCell : null;\n\t\t// find nearest visible cell\n\t\twhile (cell && dom.isHidden(cell)) cell = cell.previousElementSibling as TableCell;\n\n\t\tconst exactCell = exactRow && excactColumnIndex > -1 ? exactRow.children[excactColumnIndex] as TableCell : null;\n\t\treturn [cell, exactCell && !dom.isHidden(exactCell) ? exactCell : null];\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback();\n\t\tthis.grid = dom.findParent(this, 'og-grid');\n\t}\n\n\trender = () => html`\n\t\t<style>\n\t\t\ttable {\n\t\t\t\tfont-size: ${this.model?.options.fontSize || 12}px;\n\t\t\t}\n\n\t\t\ttable tr {\n\t\t\t\tline-height: ${(this.model?.options.rowHeight || 22) - 1}px;\n\t\t\t}\n\t\t</style>\n\n\t\t${this.table}\n\t`;\n\n\twillUpdate() {\n\t\tthis._viewport = null;\n\t\tthis._viewportSize = null;\n\t\tif (this.model) {\n\t\t\tthis.clearHeaderCache();\n\t\t\tthis.clearBodyCache();\n\t\t}\n\t}\n\t\n\tupdated() {\n\t\tif (this.model) {\n\t\t\tthis.createColumns();\n\t\t\tthis.createHeaderRows();\n\t\t\tthis.createBodyRows();\n\t\t\tthis.renderCells();\n\t\t}\n\t}\n\t\n\tclearHeaderCache = () => {\n\t\tthis.resetFreezeLeft();\n\t\tthis.hCache = new ElementCache(this.model.columns.length, this.columnHeaderCount);\n\t\tthis.hCache.disabled = !this.model.options.cellCache;\n\t}\n\n\tclearBodyCache = () => {\n\t\tthis.bCache = new ElementCache(this.model.columns.length, this.model.rows.length);\n\t\tthis.bCache.disabled = !this.model.options.cellCache;\n\t}\n\n\trefresh() {\n\t\tthis.clearHeaderCache();\n\t\tthis.clearBodyCache();\n\t\tthis.requestUpdate();\n\t}\n\t\n\tcreateColumns() {\n\t\tthis._freezeLeft = null;\n\t\tconst colCount = this.renderColCount;\n\t\tif (!this.cols || this.cols.length != colCount) {\n\t\t\tthis.cols = new Array(colCount);\n\t\t\tfor (let c = 0; c < colCount; c++) {\n\t\t\t\tthis.cols[c] = dom.createElement('col');\n\t\t\t\tthis.cols.forEach(() => this.colgroup.appendChild(this.cols[c]));\n\t\t\t}\n\t\t}\n\t}\n\n\tcreateHeaderRows() {\n\t\tconst rowCount = this.columnHeaderCount\n\t\tconst colCount = this.renderColCount;\n\t\tdom.empty(this.thead);\n\n\t\tif (!this.hRows || this.hRows.length != rowCount || !this.hRows[0] || this.hRows[0].children.length != colCount) {\n\t\t\tthis.hRows = new Array(rowCount);\n\t\t\tfor (let r = 0; r < rowCount; r++) {\n\t\t\t\tthis.hRows[r] = dom.createElement('tr');\n\t\t\t\tfor (let c = 0; c < colCount; c++) {\n\t\t\t\t\tthis.hRows[r].appendChild(dom.createElement('th'));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdom.empty(this.thead);\n\t\tthis.hRows.forEach(row => this.thead.appendChild(row));\n\t}\n\n\tcreateBodyRows() {\n\t\tconst rowCount = this.renderRowCount;\n\t\tconst colCount = this.renderColCount;\n\t\tconst offset = this.rowHeaderCount;\n\t\t\n\t\tif (!this.bRows || this.bRows.length == 0 || this.bRows.length != rowCount || this.bRows[0].children.length != colCount) {\n\t\t\tif (rowCount == 0 && this.grid.options.emptyPlaceholder) {\n\t\t\t\tthis.bRows = [dom.createElement('tr')];\n\t\t\t\tthis.bRows[0].appendChild(dom.createElement('td'));\n\t\t\t} else {\n\t\t\t\tthis.bRows = new Array(rowCount);\n\t\t\t\tfor (let r = 0; r < rowCount; r++) {\n\t\t\t\t\tthis.bRows[r] = dom.createElement('tr');\n\t\t\t\t\t\n\t\t\t\t\tfor (let c = 0; c < offset; c++) {\n\t\t\t\t\t\tthis.bRows[r].appendChild(dom.createElement('th'));\n\t\t\t\t\t}\n\t\n\t\t\t\t\tfor (let c = offset; c < colCount; c++) {\n\t\t\t\t\t\tthis.bRows[r].appendChild(dom.createElement('td'));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tdom.empty(this.tbody);\n\t\tthis.bRows.forEach(row => this.tbody.appendChild(row));\n\t}\n\n\trenderCells(update: TableRenderOptions = {vertical: true, horizontal: true}) {\n\t\tif (this.table && (update.vertical || update.horizontal)) {\n\t\t\tthis._viewport = null;\n\t\t\t// this.tbody.remove();\n\t\t\t\n\t\t\tif (update.horizontal) this.renderHeader();\n\t\t\tif (this.model.rows.length > 0) {\n\t\t\t\tthis.renderBody();\n\t\t\t\tif (update.vertical) this.renderRowTree();\n\t\t\t\t// this.table.appendChild(this.tbody);\n\t\t\t} else if (this.model.options.emptyPlaceholder) {\n\t\t\t\tthis.renderEmptyBody();\n\t\t\t\tthis.table.appendChild(this.tbody);\n\t\t\t}\n\n\t\t\tthis.dispatchEvent(new TableEvent('rendercells'));\n\t\t}\n\t}\n\n\trenderEmptyBody() {\n\t\tconst cell = this.bRows[0].children[0] as TableCell;\n\t\tcell.innerHTML = 'no data';\n\t\tcell.className = 'empty-placeholder';\n\t\tcell.colSpan = this.viewport.columns.length + this.rowHeaderCount;\n\t}\n\n\t//#region render header rows\n\trenderHeader() {\n\t\tlet column: ColumnModel;\n\t\tthis.colMap.clear();\n\t\tconst offset = this.rowHeaderCount;\n\t\tconst viewport = this.viewport;\n\n\t\tif (this.model.hasRowTreeEnabled) {\n\t\t\tdom.setSize(this.colgroup.children[0] as HTMLElement, {w: this.treeHeaderWidth}, true);\n\t\t}\n\n\t\tif (this.model.options.rowNumbers) {\n\t\t\tdom.setSize(this.colgroup.children[offset - 1] as HTMLElement, {w: constants.ROW_HEADER_WIDTH}, true);\n\t\t}\n\n\t\tfor (let c = 0; c < viewport.columns.length; c++) {\n\t\t\tcolumn = viewport.columns[c];\n\n\t\t\tif (this.model.autofitColumns.has(column.index)) {\n\t\t\t\tthis.grid.rendering.autofitColumn(column.index, false, false);\n\t\t\t\tthis.model.autofitColumns.delete(column.index); // use autofit only once for performance reasons\n\t\t\t}\n\n\t\t\tthis.colMap.set(column.index, c);\n\t\t\tdom.setSize(this.colgroup.children[c + offset] as HTMLElement, {w: column.width});\n\t\t\tdom.setMinSize(this.colgroup.children[c + offset] as HTMLElement, {w: column.width});\n\t\t\tdom.setMaxSize(this.colgroup.children[c + offset] as HTMLElement, {w: column.width});\n\t\t}\n\t\t\n\t\tlet r = 0;\n\t\tif (this.model.hasColumnTreeEnabled) {\n\t\t\tthis.renderHeaderRowTree(this.hRows[r], r);\n\t\t\t++r;\n\t\t}\n\t\t\n\t\tif (this.model.options.colLetters) {\n\t\t\tdom.setSize(this.hRows[r], {h: this.model.options.rowHeight});\n\t\t\tthis.renderHeaderRowLetters(this.hRows[r], r);\n\t\t\t++r;\n\t\t}\n\t\t\n\t\tfor (let i = 0; i < this.model.headerCount; i++) {\n\t\t\tthis.renderHeaderRowLabels(this.hRows[r + i], r + i, i);\n\t\t}\n\n\t\tr += this.model.headerCount;\n\t\t\n\t\tif (this.model.hasFilter) {\n\t\t\tdom.setSize(this.hRows[r], {h: this.model.options.rowHeight});\n\t\t\tthis.renderHeaderRowFilters(this.hRows[r], r);\n\t\t}\n\t}\n\n\trenderHeaderRowLetters(tr: HTMLTableRowElement, index: number) {\n\t\tlet cell: TableHeaderCell;\n\t\tlet c2: number;\n\t\tconst viewport = this.viewport;\n\t\tconst r = index - this.columnHeaderCount;\n\t\tlet offset = 0; //this.rowHeaderCount;\n\n\t\tdom.setSize(tr, {h: this.model.options.rowHeight});\n\n\t\tif ((this.model.hasRowTree || this.model.options.rowNumbers) && !this.model.hasColumnTreeEnabled) {\n\t\t\tcell = tr.children[offset] as TableCell;\n\t\t\tcell.colSpan = this.rowHeaderCount;\n\t\t\tcell.rowSpan = this.columnHeaderCount;\n\n\t\t\tconst c = offset - this.rowHeaderCount;\n\t\t\tconst cornerCell = this.model.options.levelButtonCell;\n\t\t\tif (!cornerCell || (r == cornerCell.r && c == cornerCell.c)) {\n\t\t\t\tthis.renderHeaderRowCornerCell(cell);\n\t\t\t}\n\n\t\t\toffset++;\n\t\t}\n\n\t\tfor (let i = offset; i < this.rowHeaderCount; i++) {\n\t\t\tdom.hideCell(tr.children[i] as TableCell);\n\t\t\toffset++;\n\t\t}\n\t\t\n\t\tfor (let c = offset; c < tr.children.length; c++) {\n\t\t\tc2 = c - offset;\n\t\t\tcell = tr.children[c] as TableHeaderCell;\n\t\t\tcell.className = 'hlabel';\n\t\t\tif (viewport.columns.length > c2) {\n\t\t\t\tcell.innerHTML = viewport.columns[c2].address;\n\t\t\t\tcell.c = viewport.columns[c2].index;\n\t\t\t\tdom.showCell(cell);\n\t\t\t} else {\n\t\t\t\tdom.hideCell(cell);\n\t\t\t}\n\t\t}\n\t}\n\n\trenderHeaderRowTree(tr: HTMLTableRowElement, index: number) {\n\t\tif (!this.model.hasColumnTreeEnabled) return;\n\n\t\tlet cell: TableCell;\n\t\tlet offset = 0;\n\t\tlet c2: number;\n\t\tconst r = index - this.columnHeaderCount;\n\t\tconst viewport = this.viewport;\n\t\tconst rowNumbers = this.model.options.rowNumbers;\n\t\tconst rowTree = this.model.hasRowTreeEnabled;\n\n\t\tdom.setSize(tr, {h: this.treeHeaderHeight});\n\n\t\tcell = tr.children[offset] as TableCell;\n\t\tif (!cell) return;\n\t\tcell.rowSpan = rowNumbers || rowTree ? this.columnHeaderCount : 1;\n\t\tcell.colSpan = this.rowHeaderCount;\n\t\t\n\t\tconst c = offset - this.rowHeaderCount;\n\t\tconst cornerCell = this.model.options.levelButtonCell;\n\t\tlet cornerCellColumn = null;\n\t\tif ((!cornerCell && (rowNumbers || rowTree)) || (cornerCell && r == cornerCell.r && c == cornerCell.c)) {\n\t\t\tcornerCellColumn = c;\n\t\t\tthis.renderHeaderRowCornerCell(cell);\n\t\t}\n\n\t\tif (rowNumbers || rowTree) {\n\t\t\t++offset;\n\t\t\t// if (rowTree) {\n\t\t\t// \tcell = tr.children[offset] as TableCell;\n\t\t\t// \tcell.innerHTML = '';\n\t\t\t// \tdom.hideCell(cell);\n\t\t\t// \t++offset;\n\t\t\t// }\n\t\t}\n\n\t\tfor (let c = offset; c < tr.children.length; c++) {\n\t\t\tc2 = c - offset;\n\t\t\tcell = tr.children[c] as TableCell;\n\t\t\tif (viewport.columns.length > c2) {\n\t\t\t\tif (cornerCellColumn != c) {\n\t\t\t\t\tcell.innerHTML = '';\n\t\t\t\t\tcell.className = 'htree';\n\t\t\t\t\tthis.renderHeaderRowTreeCell(tr, index, viewport.columns[c2], cell);\n\t\t\t\t}\n\t\t\t\tdom.showCell(cell);\n\t\t\t} else {\n\t\t\t\tdom.hideCell(cell);\n\t\t\t}\n\t\t}\n\t}\n\n\trenderHeaderRowTreeCell(tr: HTMLTableRowElement, rIndex: number, column: ColumnModel, th: HTMLTableCellElement) {\n\t\tlet div = this.hCache.get(column.index, rIndex) as HTMLDivElement & {expander: Expander, expanderLine: HTMLDivElement};\n\t\tif (!div) {\n\t\t\tdiv = dom.createElement('div');\n\t\t\tthis.hCache.set(column.index, rIndex, div);\n\t\t\n\t\t\tconst colWidth = column.width + 1;\n\t\t\tconst treeRowHeight = this.treeHeaderHeight / this.model.maxColumnLevel;\n\n\t\t\tif (column.hasChildren) {\n\t\t\t\tconst expander = new Expander();\n\t\t\t\texpander.addEventListener('toggle', () => this.grid.rendering.toggleColumn(column.index));\n\n\t\t\t\tdiv.expander = expander;\n\t\t\t\tdiv.appendChild(expander);\n\t\t\t\t\n\t\t\t\tdom.setPosition(expander, {\n\t\t\t\t\tl: colWidth / 2 - constants.EXPANDER_SIZE / 2,\n\t\t\t\t\tt: column.level * treeRowHeight + treeRowHeight / 2 - constants.EXPANDER_SIZE / 2\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tdiv.expanderLine = this.createExpanderLine('h');\n\t\t\t\tdiv.appendChild(div.expanderLine);\n\n\t\t\t\tdom.setPosition(div.expanderLine, {\n\t\t\t\t\tl: this.model.options.columnTree.reversed ? 0 : (colWidth / 2),\n\t\t\t\t\tt: column.level * treeRowHeight + treeRowHeight / 2\n\t\t\t\t});\n\n\t\t\t\tdom.setSize(div.expanderLine, {\n\t\t\t\t\th: treeRowHeight / 2,\n\t\t\t\t\tw: colWidth / 2 + 1\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tif (column.hasParent) {\n\t\t\t\tlet parent = column as ColumnModel;\n\t\t\t\twhile (parent.hasParent) {\n\t\t\t\t\tparent = parent.parent as ColumnModel;\n\t\t\t\t\tconst line = this.createExpanderLine('h');\n\t\t\t\t\tdiv.appendChild(line);\n\n\t\t\t\t\tdom.setSize(line, {\n\t\t\t\t\t\th: treeRowHeight / 2,\n\t\t\t\t\t\tw: colWidth - 1\n\t\t\t\t\t});\n\n\t\t\t\t\tdom.setPosition(line, {\n\t\t\t\t\t\tl: 0,\n\t\t\t\t\t\tt: parent.level * treeRowHeight + treeRowHeight / 2\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (div.expander) div.expander.state = column.collapsed ? 'closed' : 'open';\n\t\tth.appendChild(div);\n\t}\n\n\tcreateExpanderLine(direction: string) {\n\t\tconst expanderLine = dom.createElement<HTMLDivElement>('div');\n\t\texpanderLine.className = `${direction}tree-line`;\n\t\treturn expanderLine;\n\t}\n\n\trenderHeaderRowLabels(tr: HTMLTableRowElement, rIndex: number, hIndex: number) {\n\t\tlet colModel: ColumnModel;\n\t\tlet cell: TableHeaderCell;\n\t\tlet header: ColumnHeaderModel;\n\t\tlet offset = 0;\n\t\tlet c2: number;\n\t\tconst viewport = this.viewport;\n\t\tconst r = rIndex - this.columnHeaderCount;\n\t\tconst cornerCell = this.model.options.levelButtonCell;\n\t\tlet rowHeight: number;\n\n\t\tif (this.model.hasRowTreeEnabled) {\n\t\t\tcell = tr.children[offset] as TableHeaderCell;\n\t\t\tcell.innerHTML = '';\n\t\t\tif (this.model.hasColumnTreeEnabled || this.model.options.colLetters || hIndex > 0) {\n\t\t\t\tdom.hideCell(cell);\n\t\t\t} else {\n\t\t\t\tcell.rowSpan = this.columnHeaderCount;\n\t\t\t\tcell.colSpan = this.rowHeaderCount;\n\t\t\t\t\n\t\t\t\tthis.renderHeaderRowCornerCell(cell);\n\t\t\t}\n\t\t\t++offset;\n\t\t}\n\n\t\tif (this.model.options.rowNumbers) {\n\t\t\tcell = tr.children[offset] as TableHeaderCell;\n\t\t\tcell.innerHTML = '';\n\t\t\tif (this.model.hasRowTreeEnabled || this.model.options.colLetters || this.model.hasColumnTreeEnabled || hIndex > 0) {\n\t\t\t\tdom.hideCell(cell);\n\t\t\t} else {\n\t\t\t\tcell.rowSpan = this.columnHeaderCount;\n\t\t\t\tcell.colSpan = this.rowHeaderCount;\n\t\t\t\tthis.renderHeaderRowCornerCell(cell);\n\t\t\t}\n\t\t\t++offset;\n\t\t}\n\n\t\tfor (let c = offset; c < tr.children.length; c++) {\n\t\t\tc2 = c - offset;\n\t\t\tcell = tr.children[c] as TableHeaderCell;\n\t\t\tcell.className = 'hlabel';\n\t\t\tcell.innerHTML = '';\n\t\t\t\n\t\t\tif (viewport.columns.length > c2) {\n\t\t\t\tcolModel = viewport.columns[c2];\n\t\t\t\theader = colModel.header[hIndex];\n\t\t\t\tif (header.height) rowHeight = Math.max(header.height, rowHeight || 0);\n\n\t\t\t\tcell.colSpan = 1;\n\t\t\t\tcell.rowSpan = 1;\n\t\t\t\tcell.c = colModel.index;\n\t\t\t\tcell.r = hIndex;\n\n\t\t\t\tif (header?.hidden) {\n\t\t\t\t\tif (c2 == this.freezeLeft) {\n\t\t\t\t\t\tlet prevModel = colModel.prevVisible;\n\t\t\t\t\t\tlet c3 = 0;\n\t\t\t\t\t\twhile (prevModel && prevModel.header[hIndex]?.hidden) {\n\t\t\t\t\t\t\tprevModel = prevModel.prevVisible;\n\t\t\t\t\t\t\t++c3;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (prevModel && prevModel.header[hIndex].cs) {\n\t\t\t\t\t\t\tdom.showCell(cell);\n\t\t\t\t\t\t\tcell.colSpan = prevModel.header[hIndex].cs - c3 - 1;\n\t\t\t\t\t\t\tcell.rowSpan = prevModel.header[hIndex].rs || 1;\n\t\t\t\t\t\t\tthis.renderHeaderRowLabelCell(cell, prevModel, rIndex, hIndex);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdom.hideCell(cell);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdom.hideCell(cell);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (colModel.header && colModel.header[hIndex]) {\n\t\t\t\t\t\tconst cs = colModel.header[hIndex].cs || 1;\n\t\t\t\t\t\tcell.colSpan = cs > 1 ? colModel.calculateRealColspan(cs) : 1;\n\t\t\t\t\t\tcell.rowSpan = colModel.header[hIndex].rs || 1;\n\t\t\t\t\t}\n\t\t\t\t\tdom.showCell(cell);\n\t\t\t\t\tthis.renderHeaderRowLabelCell(cell, colModel, rIndex, hIndex);\n\n\t\t\t\t\tif (cornerCell && cornerCell.r == r && cornerCell.c == colModel.index) {\n\t\t\t\t\t\tthis.renderHeaderRowCornerCell(cell);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdom.hideCell(cell);\n\t\t\t}\n\t\t}\n\n\t\tdom.setSize(tr, {h: rowHeight ?? this.model.options.rowHeight});\n\t}\n\n\trenderHeaderRowLabelCell(th: TableHeaderCell, column: ColumnModel, rIndex: number, hIndex: number) {\n\t\tlet div = this.hCache.get(column.index, rIndex) as HTMLDivElement & {\n\t\t\tsortingArrow?: SortingArrow,\n\t\t\texpander?: Expander,\n\t\t};\n\t\tconst h = column.header[hIndex];\n\t\tif (!div) {\n\t\t\tdiv = dom.createElement('div');\n\t\t\tif (!h) div.innerHTML = '';\n\t\t\telse if (h.html) div.innerHTML = h.label ?? \"\";\n\t\t\telse div.innerText = h.label ?? \"\";\n\n\t\t\tif (h && h._style != null) {\n\t\t\t\tapplyStyle(div, styleToCSStyle(this.model.styles.get(h._style)));\n\t\t\t}\n\n\t\t\tthis.hCache.set(column.index, rIndex, div);\n\t\t}\n\n\t\tif (\n\t\t\tthis.model.options.columnHeaderTreeButtons \n\t\t\t&& column.hasChildren \n\t\t\t&& hIndex == column.level\n\t\t) {\n\t\t\tlet expander = div.expander;\n\t\t\tif (!expander) {\n\t\t\t\texpander = new Expander();\n\t\t\t\texpander.addEventListener('toggle', () => this.grid.rendering.toggleColumn(column.index));\n\t\t\t\tdiv.expander = expander;\n\t\t\t\tdiv.prepend(expander);\n\t\t\t\tdom.setPosition(expander, {l: 4, t: 4});\n\t\t\t}\n\t\t\texpander.state = column.collapsed ? 'closed' : 'open';\n\t\t}\n\n\t\tif (column.sorting && hIndex == column.header.length - 1) {\n\t\t\tth.className += ' sort';\n\t\t\tif (!div.sortingArrow) {\n\t\t\t\tdiv.sortingArrow = new SortingArrow();\t\t\t\t\t\n\t\t\t\tdiv.appendChild(div.sortingArrow);\n\t\t\t\tdom.setPosition(div.sortingArrow, {t: 0, r: 5});\n\t\t\t}\n\t\t\tdiv.sortingArrow.sortSettings = this.model.sorting.get(column.index);\n\t\t}\n\n\t\tth.appendChild(div);\n\t}\n\n\trenderHeaderRowFilters(tr: HTMLTableRowElement, index: number) {\n\t\tlet cell: TableHeaderCell;\n\t\tlet offset = 0;\n\t\tlet c2: number;\n\t\tconst viewport = this.viewport;\n\n\t\tif (this.model.hasRowTreeEnabled) {\n\t\t\tcell = tr.children[offset] as TableHeaderCell;\n\t\t\tcell.innerHTML = '';\n\t\t\tif (this.model.columnHeaderCount > 1) {\n\t\t\t\tdom.hideCell(cell);\n\t\t\t} else {\n\t\t\t\tcell.colSpan = this.model.columnHeaderCount;\n\t\t\t}\n\t\t\t++offset;\n\t\t}\n\n\t\tif (this.model.options.rowNumbers) {\n\t\t\tcell = tr.children[offset] as TableHeaderCell;\n\t\t\tcell.innerHTML = '';\n\t\t\t\n\t\t\tif (\n\t\t\t\tthis.model.hasRowTreeEnabled || this.model.options.colLetters \n\t\t\t\t|| this.model.hasColumnTreeEnabled || this.model.headerCount > 0\n\t\t\t) {\n\t\t\t\tdom.hideCell(cell);\n\t\t\t} else {\n\t\t\t\tcell.rowSpan = this.columnHeaderCount;\n\t\t\t\tcell.colSpan = this.rowHeaderCount;\n\t\t\t\tthis.renderHeaderRowCornerCell(cell);\n\t\t\t}\n\t\t\t++offset;\n\t\t}\n\n\t\tfor (let c = offset; c < tr.children.length; c++) {\n\t\t\tc2 = c - offset;\n\t\t\tcell = tr.children[c] as TableCell;\n\t\t\tif (viewport.columns.length > c2) {\n\t\t\t\tdom.showCell(cell);\n\t\t\t\tconst column = viewport.columns[c2];\n\t\t\t\tif (column.hasFilter) this.renderHeaderRowFilterCell(tr, index, column, cell);\n\t\t\t\telse cell.innerHTML = '';\n\t\t\t} else {\n\t\t\t\tdom.hideCell(cell);\n\t\t\t}\n\t\t}\n\t}\n\n\trenderHeaderRowFilterCell(tr: HTMLTableRowElement, rIndex: number, column: ColumnModel, th: TableHeaderCell) {\n\t\tth.innerHTML = '';\n\t\tth.className = 'filter';\n\t\tth.c = column.index;\n\n\t\tlet div = this.hCache.get(column.index, rIndex) as HTMLDivElement & {filter: FilterLabel};\n\t\tif (!div) {\n\t\t\tdiv = dom.createElement('div');\n\t\t\tdiv.filter = dom.createElement<FilterLabel>('og-filter-label');\n\t\t\tdiv.appendChild(div.filter);\n\t\t\tthis.hCache.set(column.index, rIndex, div);\n\t\t}\n\t\t\n\t\tconst term = this.grid.filtering.filter.get(column.index)?.term;\n\t\tdiv.filter.value = Array.isArray(term) ? term.map(item => item.value ?? item.key).join(', ') : term;\n\t\tth.appendChild(div);\n\t}\n\n\trenderHeaderRowCornerCell(th: TableCell) {\n\t\tthis.cornerDiv = dom.createElement('div');\n\t\tconst treeColWidth = Math.max(\n\t\t\t(this.treeHeaderWidth || (constants.EXPANDER_SIZE + 2)) / (this.model.maxRowLevel + 1),\n\t\t\tconstants.EXPANDER_SIZE + 2\n\t\t);\n\t\t\n\t\tif (this.model.hasRowTree) {\n\t\t\tfor (let l = 0; l <= this.model.maxRowLevel; l++) {\n\t\t\t\tconst expander = new LevelExpander();\n\t\t\t\texpander.level = l;\n\t\t\t\tthis.cornerDiv.appendChild(expander);\n\t\t\t\tdom.setPosition(expander, {\n\t\t\t\t\tl: l * treeColWidth + treeColWidth / 2 - constants.EXPANDER_SIZE / 2,\n\t\t\t\t\tb: 3\n\t\t\t\t});\n\t\t\t\texpander.addEventListener('mousedown', e => e.stopPropagation());\n\t\t\t\texpander.addEventListener('toggle', (e: LevelExpandEvent) => {\n\t\t\t\t\tthis.model.columns.filter(col => col.levelButtons).forEach(col => this.bCache.deleteColumn(col.index));\n\t\t\t\t\tthis.grid.rendering.setRowExpandLevel(e.level);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (this.model.hasColumnTree) {\n\t\t\tconst treeRowHeight = (this.model.hasColumnTree ? this.treeHeaderHeight : th.clientHeight) / (this.model.maxColumnLevel + 1);\n\t\t\tconst vertical = (this.model.maxColumnLevel * 15 + 20) <= th.clientHeight;\n\t\t\tfor (let l = 0; l <= this.model.maxColumnLevel; l++) {\n\t\t\t\tconst expander = new LevelExpander();\n\t\t\t\texpander.level = l;\n\t\t\t\tthis.cornerDiv.appendChild(expander);\n\t\t\t\tdom.setPosition(expander, vertical ? {\n\t\t\t\t\tt: l * treeRowHeight + treeRowHeight / 2 - constants.EXPANDER_SIZE / 2,\n\t\t\t\t\tr: 3\n\t\t\t\t} : {\n\t\t\t\t\tr: l * treeColWidth + treeColWidth / 2 - constants.EXPANDER_SIZE / 2,\n\t\t\t\t\tb: 3\n\t\t\t\t});\n\t\t\t\texpander.addEventListener('mousedown', e => e.stopPropagation());\n\t\t\t\texpander.addEventListener('toggle', (e: LevelExpandEvent) => {\n\t\t\t\t\tthis.grid.rendering.setColumnExpandLevel(e.level);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\t\n\t\tdom.empty(th);\n\t\tth.appendChild(this.cornerDiv);\n\t}\n\t//#endregion\n\n\n\tcellRenderSchedules = new WeakMap<TableCell, number>();\n\n\n\t//#region render body rows\n\trenderBody() {\n\t\tlet row: HTMLTableRowElement;\n\t\tlet cell: TableCell;\n\t\tlet rowModel: RowModel;\n\t\tlet rIndex: number;\n\t\tlet cIndex: number;\n\t\tlet colModel: ColumnModel;\n\t\tlet cellModel: CellModel;\n\t\tlet a1: CellAddress;\n\t\tlet mergeState: MergeCellState;\n\t\t\n\t\tconst freezeLeft = this.freezeLeft || 0;\n\t\t// const freezeTop = this.freezeTop || 0;\n\t\tconst offset = this.rowHeaderCount;\n\t\tconst merges = this.model.merges;\n\t\tconst rowNumbers = this.model.options.rowNumbers;\n\t\tconst viewport = this.viewport;\n\t\tconst viewportRange = this.viewportRange;\n\n\t\tif (!viewportRange) return;\n\n\t\tconst mainRange = new CellRange(\n\t\t\tthis.colOffset + freezeLeft, \n\t\t\tthis.rowOffset, // + freezeTop, \n\t\t\tviewportRange.c2, \n\t\t\tviewportRange.r2\n\t\t);\n\n\t\tthis.rowMap.clear();\n\n\t\tfor (let r = 0; r < this.bRows.length; r++) {\n\t\t\trow = this.bRows[r];\n\t\t\tif (r < viewport.rows.length) {\n\t\t\t\trowModel = viewport.rows[r];\n\t\t\t\trIndex = rowModel.index;\n\n\t\t\t\tif (this.model.autofitRows.has(rIndex)) {\n\t\t\t\t\tthis.grid.rendering.autofitRow(rIndex, false, false);\n\t\t\t\t\tthis.model.autofitRows.delete(rIndex); // use autofit only once for performance reasons\n\t\t\t\t}\n\n\t\t\t\tdom.setSize(row, {h: rowModel.height});\n\t\t\t\t\n\t\t\t\tif (rowModel.height < this.model.options.rowHeight) {\n\t\t\t\t\tdom.setLineHeight(row, rowModel.height);\n\t\t\t\t}\n\n\t\t\t\tthis.rowMap.set(rIndex, r);\n\n\t\t\t\tif (rowNumbers) {\n\t\t\t\t\tcell = row.children[offset - 1] as TableCell;\n\t\t\t\t\tcell.className = 'vlabel';\n\t\t\t\t\tcell.r = rIndex;\n\t\t\t\t\tcell.c = -1;\n\t\t\t\t\tcell.innerHTML = `<div>${encodeRow(rIndex)}</div>`;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfor (let c = offset; c < row.children.length; c++) {\n\t\t\t\t\tcell = row.children[c] as TableCell;\n\t\t\t\t\tif (c - offset < viewport.columns.length) {\n\t\t\t\t\t\tcolModel = viewport.columns[c - offset];\n\t\t\t\t\t\tcIndex = colModel.index;\n\n\t\t\t\t\t\tcell.r = rIndex;\n\t\t\t\t\t\tcell.c = cIndex;\n\t\t\t\t\t\t\n\t\t\t\t\t\tcellModel = rowModel.cell(cIndex);\n\t\t\t\t\t\ta1 = cellModel.address;\n\t\t\t\t\t\tmergeState = merges.getMergeState(a1);\n\t\t\t\t\t\tif (mergeState == MergeCellState.HIDDEN) {\n\t\t\t\t\t\t\tconst merge = merges.hiddenCells.get(cellModel.address);\n\t\t\t\t\t\t\tconst inter = mainRange.intersect(new CellRange(merge.c, merge.r, merge.c + merge.cs - 1, merge.r + merge.rs - 1));\n\n\t\t\t\t\t\t\tif (inter && cellModel.c == inter.c1 && cellModel.r == inter.r1) {\n\t\t\t\t\t\t\t\t// top left cell of the merged range\n\t\t\t\t\t\t\t\tcellModel = this.model.rows[merge.r].cell(merge.c);\n\t\t\t\t\t\t\t\tcell.colSpan = inter.size.columns;\n\t\t\t\t\t\t\t\tcell.rowSpan = inter.size.rows;\n\t\t\t\t\t\t\t\tcell.c = cellModel.c;\n\t\t\t\t\t\t\t\tcell.r = cellModel.r;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdom.hideCell(cell);\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (mergeState == MergeCellState.MERGED) {\n\t\t\t\t\t\t\tconst merge = cellModel.merge;\n\t\t\t\t\t\t\tcell.colSpan = merge.cs;\n\t\t\t\t\t\t\tcell.rowSpan = merge.rs;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcell.colSpan = 1;\n\t\t\t\t\t\t\tcell.rowSpan = 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tdom.showCell(cell);\n\t\t\t\t\t\tthis.renderBodyCell(cellModel, cell);\n\t\t\t\t\t\t// this.scheduleRenderBodyCell(cellModel, cell);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdom.hideCell(cell);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\trow.style.display = 'table-row';\n\t\t\t\trow.className = rowModel.filterState > 1 ? `filtered` : '';\n\t\t\t} else {\n\t\t\t\trow.style.display = 'none';\n\t\t\t}\n\t\t}\n\t}\n\n\tscheduleRenderBodyCell(cellModel: CellModel, cell: TableCell) {\n\t\tif (this.cellRenderSchedules.has(cell)) {\n\t\t\twindow.clearTimeout(this.cellRenderSchedules.get(cell));\n\t\t\tthis.cellRenderSchedules.delete(cell);\n\t\t}\n\t\tthis.cellRenderSchedules.set(cell, window.setTimeout(() => this.renderBodyCell(cellModel, cell)));\n\t}\n\n\tfixCellBorders(cell: TableCell, style: Style) {\n\t\tif (style.bottom?.style == 'none') {\n\t\t\tcell.style.borderBottomColor = 'transparent';\n\t\t}\n\t\tif (style.top?.style == 'none') {\n\t\t\tcell.style.borderTop = 'transparent';\n\t\t}\n\n\t\tif (style.right?.style == 'none') {\n\t\t\tcell.style.borderRight = 'transparent';\n\t\t}\n\t\tif (style.left?.style == 'none') {\n\t\t\tcell.style.borderLeft = 'transparent';\n\t\t}\n\t}\n\n\trenderBodyCell(cellModel: CellModel, cell?: TableCell) {\n\t\tconst force = !cell;\n\t\tcell = cell || this.getCellByCellModel(cellModel);\n\t\tif (cell) {\n\t\t\tlet div = (force ? null : this.bCache.get(cellModel.c, cellModel.r)) as HTMLDivElement;\n\t\t\tif (!div) {\n\t\t\t\tdiv = dom.createElement('div');\n\t\t\t\tgetCellRenderer(cellModel).call(this, div, cellModel);\n\t\t\t\tthis.bCache.set(cellModel.c, cellModel.r, div);\n\t\t\t}\n\n\t\t\tif (this.renderAll) {\n\t\t\t\t// do this only when rendering all cells for performance reasons, good for exports to raw html\n\t\t\t\tconst s = cellModel.composedStyle;\n\t\t\t\tif (s) this.fixCellBorders(cell, s);\n\t\t\t}\n\n\t\t\tdom.empty(cell);\n\t\t\tcell.appendChild(div);\n\t\t} else {\n\t\t\tthis.bCache.delete(cellModel.c, cellModel.r);\n\t\t}\n\t}\n\n\tmergeBodyCells(mergedCells: Merge[]) {\n\t\tlet cell: TableCell;\n\t\tconst skipSet = new Set<TableCell>();\n\t\tfor (const m of mergedCells) {\n\t\t\tcell = this.bRows[m.r].cells[m.c] as TableCell;\n\t\t\tif (!cell || skipSet.has(cell)) continue;\n\t\t\tfor (let r = m.r; r < m.r + m.rs; r++) {\n\t\t\t\tfor (let c = m.c; c < m.c + m.cs; c++) {\n\t\t\t\t\tcell = this.bRows[r].cells[c] as TableCell;\n\t\t\t\t\tif (!cell) continue;\n\t\t\t\t\tif (r == m.r && c == m.c) {\n\t\t\t\t\t\tcell.colSpan = m.cs;\n\t\t\t\t\t\tcell.rowSpan = m.rs;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tskipSet.add(cell);\n\t\t\t\t\t\tdom.hideCell(cell);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\t\n\t\t}\n\t}\n\t\n\trenderRowTree() {\n\t\tif (!this.model.hasRowTreeEnabled) return;\n\t\tlet cell: TableCell;\n\t\tconst viewport = this.viewport;\n\t\tconst cIndex = -this.rowHeaderCount;\n\t\tfor (let r = 0; r < this.bRows.length; r++) {\n\t\t\tcell = this.bRows[r].children[0] as TableCell;\n\t\t\tcell.innerHTML = '';\n\t\t\tif (r < viewport.rows.length) {\n\t\t\t\tcell.className = 'vtree';\n\t\t\t\tthis.renderRowTreeCell(cIndex, viewport.rows[r], cell )\n\t\t\t}\n\t\t}\n\t}\n\n\trenderRowTreeCell(cIndex: number, row: RowModel, th: HTMLTableCellElement) {\n\t\tlet div = this.bCache.get(cIndex, row.index) as HTMLDivElement & {expander: Expander};\n\t\tif (!div) {\n\t\t\tdiv = dom.createElement('div');\n\t\t\tthis.bCache.set(cIndex, row.index, div);\n\t\t\n\t\t\tconst rowHeight = row.height + 1;\n\t\t\tconst treeColWidth = this.treeHeaderWidth / this.model.maxRowLevel;\n\n\t\t\tif (row.hasChildren) {\n\t\t\t\tconst expander = new Expander();\n\t\t\t\texpander.addEventListener('toggle', () => this.grid.rendering.toggleRow(row.index));\n\t\t\t\t(th.parentElement as TableRow).expander = expander;\n\t\t\t\tdiv.expander = expander;\n\t\t\t\tdiv.appendChild(expander);\n\t\t\t\t\n\t\t\t\tdom.setPosition(expander, {\n\t\t\t\t\tt: rowHeight / 2 - constants.EXPANDER_SIZE / 2,\n\t\t\t\t\tl: row.level * treeColWidth + treeColWidth / 2 - constants.EXPANDER_SIZE / 2\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tconst line = this.createExpanderLine('v');\n\t\t\t\tdiv.appendChild(line);\n\n\t\t\t\tdom.setPosition(line, {\n\t\t\t\t\tt: this.model.options.rowTree.reversed ? 0 : (rowHeight / 2),\n\t\t\t\t\tl: row.level * treeColWidth + treeColWidth / 2\n\t\t\t\t});\n\n\t\t\t\tdom.setSize(line, {\n\t\t\t\t\tw: treeColWidth / 2,\n\t\t\t\t\th: rowHeight / 2 + 1\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tif (row.hasParent) {\n\t\t\t\tlet parent = row as RowModel;\n\t\t\t\twhile (parent.hasParent) {\n\t\t\t\t\tparent = parent.parent as RowModel;\n\t\t\t\t\tconst line = this.createExpanderLine('v');\n\t\t\t\t\tdiv.appendChild(line);\n\n\t\t\t\t\tdom.setSize(line, {\n\t\t\t\t\t\tw: treeColWidth / 2,\n\t\t\t\t\t\th: rowHeight + 2\n\t\t\t\t\t});\n\n\t\t\t\t\tdom.setPosition(line, {\n\t\t\t\t\t\tt: -1,\n\t\t\t\t\t\tl: parent.level * treeColWidth + treeColWidth / 2\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (div.expander) div.expander.state = row.collapsed ? 'closed' : 'open';\n\t\tth.appendChild(div);\n\t}\n\t//#endregion\n\n}"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@omegagrid/grid",
3
- "version": "0.9.13",
3
+ "version": "0.9.15",
4
4
  "license": "UNLICENSED",
5
5
  "description": "Universal datagrid component",
6
6
  "main": "./dist/index.js",
@@ -35,12 +35,12 @@
35
35
  "_prepublish": "yarn test && yarn lint"
36
36
  },
37
37
  "dependencies": {
38
- "@omegagrid/commands": "^0.9.13",
39
- "@omegagrid/core": "^0.9.13",
40
- "@omegagrid/grid-core": "^0.9.13",
41
- "@omegagrid/localize": "^0.9.13",
42
- "@omegagrid/tabs": "^0.9.13",
43
- "@omegagrid/tree": "^0.9.13",
38
+ "@omegagrid/commands": "^0.9.15",
39
+ "@omegagrid/core": "^0.9.15",
40
+ "@omegagrid/grid-core": "^0.9.15",
41
+ "@omegagrid/localize": "^0.9.15",
42
+ "@omegagrid/tabs": "^0.9.15",
43
+ "@omegagrid/tree": "^0.9.15",
44
44
  "@stdlib/stats": "^0.0.13",
45
45
  "date-fns": "^3.2.0",
46
46
  "lit": "^3.1.1",