@omegagrid/grid 0.9.12 → 0.9.14
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.
- package/dist/ui/grid.d.ts.map +1 -1
- package/dist/ui/grid.events.d.ts +4 -0
- package/dist/ui/grid.events.d.ts.map +1 -1
- package/dist/ui/grid.events.js +8 -0
- package/dist/ui/grid.events.js.map +1 -1
- package/dist/ui/grid.js +10 -3
- package/dist/ui/grid.js.map +1 -1
- package/dist/ui/table.d.ts +6 -6
- package/dist/ui/table.d.ts.map +1 -1
- package/dist/ui/table.js +25 -18
- package/dist/ui/table.js.map +1 -1
- package/package.json +7 -7
package/dist/ui/grid.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grid.d.ts","sourceRoot":"","sources":["../../src/ui/grid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,EAAU,MAAM,iBAAiB,CAAC;AACzG,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,OAAO,EAAe,OAAO,EAAa,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACnI,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAQ,MAAM,KAAK,CAAC;AAGvC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,WAAW,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,
|
|
1
|
+
{"version":3,"file":"grid.d.ts","sourceRoot":"","sources":["../../src/ui/grid.ts"],"names":[],"mappings":"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"}
|
package/dist/ui/grid.events.d.ts
CHANGED
|
@@ -3,6 +3,10 @@ import { CellModel, ColumnModel, CellRange, CellValueType, EditType, RowModel, C
|
|
|
3
3
|
import { Grid } from "./grid";
|
|
4
4
|
import { SelectorEvent, SelectorMoveEvent } from "./selector";
|
|
5
5
|
import { CommentEvent } from "./comment";
|
|
6
|
+
export declare class GridErrorEvent extends Event {
|
|
7
|
+
readonly error: Error;
|
|
8
|
+
constructor(error: Error);
|
|
9
|
+
}
|
|
6
10
|
export declare class GridEvent extends Event {
|
|
7
11
|
get selection(): import("@omegagrid/grid-core").SelectionModel;
|
|
8
12
|
get activeCell(): CellRange;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grid.events.d.ts","sourceRoot":"","sources":["../../src/ui/grid.events.ts"],"names":[],"mappings":"AACA,OAAO,EAAO,WAAW,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE/D,OAAO,EAAE,SAAS,EAAE,WAAW,EAAY,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAgB,QAAQ,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChJ,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAIzC,qBAAa,SAAU,SAAQ,KAAK;IAEnC,IAAI,SAAS,kDAA2C;IACxD,IAAI,UAAU,cAAuC;IAErD,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;IACpB,IAAI,EAAE,SAAS,CAAC;IAChB,GAAG,EAAE,QAAQ,CAAC;IACd,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,IAAI,CAAC;gBAEC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC;CAUnD;AAED,qBAAa,aAAc,SAAQ,SAAS;IAE3C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,SAAS,CAAC,EAAE,aAAa,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;IACjC,SAAS,CAAC,EAAE,aAAa,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;gBAErB,IAAI,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC;CAGzC;AAED,qBAAa,eAAgB,SAAQ,WAAW;IAC/C,SAAgB,IAAI,EAAE,IAAI,CAAC;gBACf,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC;CAIjE;AAED,qBAAa,qBAAsB,SAAQ,eAAe;IACzD,SAAgB,MAAM,EAAE,WAAW,CAAC;gBACxB,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC;CAItF;AAED,qBAAa,kBAAmB,SAAQ,eAAe;IACtD,SAAgB,GAAG,EAAE,QAAQ,CAAC;gBAClB,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC;CAIhF;AAED,qBAAa,UAAU;IAWV,QAAQ,CAAC,IAAI,EAAE,IAAI;IAT/B,IAAI,KAAK,6CAA6B;IACtC,IAAI,SAAS,kDAAiC;IAC9C,IAAI,KAAK,4BAA6B;IAEtC,aAAa,UAAS;IACtB,YAAY,UAAS;IACrB,OAAO,UAAS;IAChB,WAAW,EAAE;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAC,CAAgB;gBAE9B,IAAI,EAAE,IAAI;IAE/B,IAAI,SAAS,YAAoE;IAEjF,YAAY,gBAAmC;IAC/C,WAAW,GAAI,eAAa,UAO3B;IAED,UAAU,GAAI,GAAG,aAAa,UAqF7B;IAED,YAAY,GAAI,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"grid.events.d.ts","sourceRoot":"","sources":["../../src/ui/grid.events.ts"],"names":[],"mappings":"AACA,OAAO,EAAO,WAAW,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE/D,OAAO,EAAE,SAAS,EAAE,WAAW,EAAY,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAgB,QAAQ,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChJ,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAIzC,qBAAa,cAAe,SAAQ,KAAK;IAC5B,QAAQ,CAAC,KAAK,EAAE,KAAK;gBAAZ,KAAK,EAAE,KAAK;CAGjC;AAED,qBAAa,SAAU,SAAQ,KAAK;IAEnC,IAAI,SAAS,kDAA2C;IACxD,IAAI,UAAU,cAAuC;IAErD,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;IACpB,IAAI,EAAE,SAAS,CAAC;IAChB,GAAG,EAAE,QAAQ,CAAC;IACd,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,IAAI,CAAC;gBAEC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC;CAUnD;AAED,qBAAa,aAAc,SAAQ,SAAS;IAE3C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,SAAS,CAAC,EAAE,aAAa,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;IACjC,SAAS,CAAC,EAAE,aAAa,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;gBAErB,IAAI,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC;CAGzC;AAED,qBAAa,eAAgB,SAAQ,WAAW;IAC/C,SAAgB,IAAI,EAAE,IAAI,CAAC;gBACf,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC;CAIjE;AAED,qBAAa,qBAAsB,SAAQ,eAAe;IACzD,SAAgB,MAAM,EAAE,WAAW,CAAC;gBACxB,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC;CAItF;AAED,qBAAa,kBAAmB,SAAQ,eAAe;IACtD,SAAgB,GAAG,EAAE,QAAQ,CAAC;gBAClB,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC;CAIhF;AAED,qBAAa,UAAU;IAWV,QAAQ,CAAC,IAAI,EAAE,IAAI;IAT/B,IAAI,KAAK,6CAA6B;IACtC,IAAI,SAAS,kDAAiC;IAC9C,IAAI,KAAK,4BAA6B;IAEtC,aAAa,UAAS;IACtB,YAAY,UAAS;IACrB,OAAO,UAAS;IAChB,WAAW,EAAE;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAC,CAAgB;gBAE9B,IAAI,EAAE,IAAI;IAE/B,IAAI,SAAS,YAAoE;IAEjF,YAAY,gBAAmC;IAC/C,WAAW,GAAI,eAAa,UAO3B;IAED,UAAU,GAAI,GAAG,aAAa,UAqF7B;IAED,YAAY,GAAI,GAAG,YAAY,UAmF9B;IAED,YAAY,GAAI,GAAG,YAAY,UAyB9B;IAED,UAAU,GAAI,GAAG,YAAY,UAW5B;IAED,QAAQ,GAAI,GAAG,YAAY,UAU1B;IAED,cAAc,GAAI,GAAG,UAAU,UAe9B;IAED,gBAAgB,GAAI,GAAG,UAAU,UAKhC;IAED,kBAAkB,GAAI,GAAG,UAAU,UAKlC;IAED,aAAa,aAEZ;IAED,YAAY,aAEX;IAED,0BAA0B;;uBAlWZ,CAAC;MAkW6F;IAC5G,QAAQ,GAAI,GAAG,UAAU,UAMxB;IAED,aAAa,GAAI,GAAG,UAAU,UAG7B;IAED,WAAW,GAAI,GAAG,UAAU,UAG3B;IAED,YAAY,GAAI,GAAG,UAAU,UAiB5B;IAED,wBAAwB,aAGvB;IAED,uBAAuB,GAAI,GAAG,WAAW,UAQxC;IAED,mBAAmB,GAAI,GAAG,WAAW,UAOpC;IAED,sBAAsB,aAGrB;IAED,qBAAqB,GAAI,GAAG,WAAW,UAQtC;IAED,iBAAiB,GAAI,GAAG,WAAW,UAOlC;IAED,gBAAgB,GAAI,GAAG,YAAY,UAIlC;IAED,WAAW,GAAI,GAAG,aAAa,UAiB9B;IAED,OAAO,GAAI,GAAG,aAAa,UA0C1B;IAED,eAAe,GAAI,GAAG,iBAAiB,UAkBtC;IAED,aAAa,aAEZ;IAeD,mBAAmB;;uBAliBL,CAAC;MAkiBqF;IAEpG,SAAS,aAcR;IAED,0BAA0B,GAAI,GAAG,UAAU,UAO1C;IAED,wBAAwB,GAAI,GAAG,UAAU,UAOxC;IAED,WAAW,aAMV;IAEK,IAAI;CAmDV"}
|
package/dist/ui/grid.events.js
CHANGED
|
@@ -3,6 +3,12 @@ import { dom, ResizeEvent } from "@omegagrid/core";
|
|
|
3
3
|
import { debounce } from "ts-debounce";
|
|
4
4
|
import { autofill, CellRange } from "@omegagrid/grid-core";
|
|
5
5
|
const IGNORED_KEYS = ['F5', 'F12'];
|
|
6
|
+
export class GridErrorEvent extends Event {
|
|
7
|
+
constructor(error) {
|
|
8
|
+
super(`grid.error`, { bubbles: true, composed: true });
|
|
9
|
+
this.error = error;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
6
12
|
export class GridEvent extends Event {
|
|
7
13
|
get selection() { return this.grid.selecting.selection; }
|
|
8
14
|
get activeCell() { return this.selection.activeCell; }
|
|
@@ -146,6 +152,8 @@ export class GridEvents {
|
|
|
146
152
|
}
|
|
147
153
|
};
|
|
148
154
|
this._onMouseMove = (e) => {
|
|
155
|
+
if (!this.model)
|
|
156
|
+
return;
|
|
149
157
|
let hidePopups = true;
|
|
150
158
|
const hSizer = this.grid.hSizer;
|
|
151
159
|
const vSizer = this.grid.vSizer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grid.events.js","sourceRoot":"","sources":["../../src/ui/grid.events.ts"],"names":[],"mappings":"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","sourcesContent":["import constants from \"../constants\";\nimport { dom, ResizeEvent, SlideEvent } from \"@omegagrid/core\";\nimport { debounce } from \"ts-debounce\";\nimport { CellModel, ColumnModel, autofill, CellRange, CellValueType, EditType, ElementModel, RowModel, CellSource } from \"@omegagrid/grid-core\";\nimport { Grid } from \"./grid\";\nimport { TableCell, TableHeaderCell } from \"./table\";\nimport { SelectorEvent, SelectorMoveEvent } from \"./selector\";\nimport { CommentEvent } from \"./comment\";\n\nconst IGNORED_KEYS = ['F5', 'F12'];\n\nexport class GridEvent extends Event {\n\n\tget selection() { return this.grid.selecting.selection }\n\tget activeCell() { return this.selection.activeCell }\n\t\n\tcells?: CellModel[];\n\tcell: CellModel;\n\trow: RowModel;\n\tcolumn: ColumnModel;\n\taction: string;\n\tgrid: Grid;\n\n\tconstructor(type: string, args?: Partial<GridEvent>) {\n\t\tsuper(`grid.${type}`, {bubbles: true, composed: true});\n\t\tObject.assign(this, args);\n\n\t\tif (this.cell) {\n\t\t\tthis.row = this.cell.row;\n\t\t\tthis.column = this.cell.column;\n\t\t}\n\t}\n\n}\n\nexport class GridEditEvent extends GridEvent {\n\n\tfromHistory?: boolean;\n\teditType?: EditType;\n\toldValues?: CellValueType[];\n\toldProps?: Partial<CellSource>[];\n\tnewValues?: CellValueType[];\n\tnewProps?: Partial<CellSource>[];\n\n\tconstructor(args?: Partial<GridEditEvent>) {\n\t\tsuper('edit', args);\n\t}\n}\n\nexport class GridResizeEvent extends ResizeEvent {\n\tpublic readonly grid: Grid;\n\tconstructor(type: string, grid: Grid, args?: Partial<ResizeEvent>) {\n\t\tsuper(`grid.${type}`, args);\n\t\tthis.grid = grid;\n\t}\n}\n\nexport class GridColumnResizeEvent extends GridResizeEvent {\n\tpublic readonly column: ColumnModel;\n\tconstructor(type: string, grid: Grid, column: ColumnModel, args?: Partial<ResizeEvent>) {\n\t\tsuper(type, grid, args);\n\t\tthis.column = column;\n\t}\n}\n\nexport class GridRowResizeEvent extends GridResizeEvent {\n\tpublic readonly row: RowModel;\n\tconstructor(type: string, grid: Grid, row: RowModel, args?: Partial<ResizeEvent>) {\n\t\tsuper(type, grid, args);\n\t\tthis.row = row;\n\t}\n}\n\nexport class GridEvents {\n\n\tget model() { return this.grid.model }\n\tget selection() { return this.grid.selection }\n\tget table() { return this.grid.table }\n\t\n\tclickDisabled = false;\n\teditDisabled = false;\n\tclicked = false;\n\tstartOffset: {x: number, y: number} = {x: 0, y: 0};\n\n\tconstructor(readonly grid: Grid) { }\n\n\tget isSliding() { return this.grid.hSlider.sliding || this.grid.vSlider.sliding }\n\n\tsuspendClick = () => this.clickDisabled = true;\n\tresumeClick = (delay = false) => { \n\t\tif (this.isSliding) return;\n\t\tif (delay) {\n\t\t\tsetTimeout(() => this.clickDisabled = false, 100)\n\t\t} else {\n\t\t\tthis.clickDisabled = false;\n\t\t}\n\t}\n\t\n\t_onKeyDown = (e: KeyboardEvent) => {\n\t\tif (!IGNORED_KEYS.includes(e.key)) e.preventDefault();\n\t\t\n\t\tswitch (e.key) {\n\t\t\tcase 'Tab':\n\t\t\t\te.preventDefault();\n\t\t\t\tthis.grid.selecting.shiftActiveCell(e.shiftKey ? -1 : 1, true);\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowRight':\n\t\t\t\tthis.grid.selecting.debounceMoveSelector(1, 0);\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowLeft':\n\t\t\t\tthis.grid.selecting.debounceMoveSelector(-1, 0);\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowDown':\n\t\t\t\tthis.grid.selecting.debounceMoveSelector(0, 1);\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowUp':\n\t\t\t\tthis.grid.selecting.debounceMoveSelector(0, -1);\n\t\t\t\tbreak;\n\t\t\tcase 'PageUp':\n\t\t\t\tthis.grid.selecting.debounceMoveSelector(0, -this.table.viewport.rows.length);\n\t\t\t\tbreak;\n\t\t\tcase 'PageDown':\n\t\t\t\tthis.grid.selecting.debounceMoveSelector(0, this.table.viewport.rows.length);\n\t\t\t\tbreak;\n\t\t\tcase 'Home':\n\t\t\t\tthis.grid.selecting.debounceMoveSelector(\n\t\t\t\t\t-this.selection.range.c1, \n\t\t\t\t\te.ctrlKey ? -this.selection.range.r1 : 0\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase 'End':\n\t\t\t\tthis.grid.selecting.debounceMoveSelector(\n\t\t\t\t\tthis.model.gridRange.c2 - this.selection.range.c1,\n\t\t\t\t\te.ctrlKey ? this.model.gridRange.r2 - this.selection.range.r1 : 0\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase 'Enter':\n\t\t\t\tthis.grid.selecting.enter();\n\t\t\t\tbreak;\n\t\t\tcase 'Escape':\n\t\t\t\tthis.grid.selecting.hideCopySelector();\n\t\t\t\tbreak;\n\t\t\tcase 'c':\n\t\t\tcase 'C':\n\t\t\t\tif (e.ctrlKey) this.grid.editing.copySelection();\n\t\t\t\tbreak;\n\t\t\tcase 'v':\n\t\t\tcase 'V':\n\t\t\t\tif (e.ctrlKey) this.grid.editing.paste();\n\t\t\t\tbreak;\n\t\t\tcase 'z':\n\t\t\tcase 'Z':\n\t\t\t\tif (!this.grid.options.undoRedo) return;\n\t\t\t\tif (e.ctrlKey) this.grid.editing.undo();\n\t\t\t\tbreak;\n\t\t\tcase 'y':\n\t\t\tcase 'Y':\n\t\t\t\tif (!this.grid.options.undoRedo) return;\n\t\t\t\tif (e.ctrlKey) this.grid.editing.redo();\n\t\t\t\tbreak;\n\t\t\tcase 'F2':\n\t\t\t\te.preventDefault();\n\t\t\t\tthis.grid.editing.startEdit();\n\t\t\t\tbreak;\n\t\t\tcase 'Delete':\n\t\t\t\te.preventDefault();\n\t\t\t\tthis.grid.objects.delete();\n\t\t\t\tthis.grid.editing.clearSelection();\n\t\t\t\tbreak;\n\t\t\tcase 'Backspace':\n\t\t\t\te.preventDefault();\n\t\t\t\tthis.grid.editing.clearSelection();\n\t\t\t\tbreak;\n\t\t\tcase 'F1':\n\t\t\t\tif (!this.grid.options.commandWindow) return;\n\t\t\t\te.preventDefault();\n\t\t\t\tthis.grid.openCommands();\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif (e.key.length == 1 && !e.ctrlKey) {\n\t\t\tthis.grid.editing.startEdit(e.key);\n\t\t}\n\t}\n\n\t_onMouseMove = (e: PointerEvent) => {\n\t\tlet hidePopups = true;\n\t\tconst hSizer = this.grid.hSizer;\n\t\tconst vSizer = this.grid.vSizer;\n\n\t\tconst { offsetX, offsetY} = e;\n\t\tlet scrollbarVisibilityTreshold = this.model.options.scrolling.scrollbarVisibilityTreshold;\n\t\tif (scrollbarVisibilityTreshold <= 0) scrollbarVisibilityTreshold = Math.max(this.grid.clientWidth, this.grid.clientHeight);\n\n\t\tif (offsetX > this.grid.clientWidth - scrollbarVisibilityTreshold) {\n\t\t\tthis.grid.vSlider.show();\n\t\t} else {\n\t\t\tthis.grid.vSlider.hide();\n\t\t}\n\n\t\tif (offsetY > this.grid.clientHeight - scrollbarVisibilityTreshold) {\n\t\t\tthis.grid.hSlider.show();\n\t\t} else {\n\t\t\tthis.grid.hSlider.hide();\n\t\t}\n\n\t\tconst [cell, exactCell] = this.table.findNearestTableCellByOffset(offsetX, offsetY);\n\t\t\n\t\tif (exactCell && exactCell.tagName == 'TH') {\n\t\t\tif (this.model.options.columnResize && !hSizer.resizing && exactCell.classList.contains('hlabel')) {\n\t\t\t\tif (exactCell.offsetWidth - e.offsetX + exactCell.offsetLeft < constants.RESIZE_TRESHOLD) {\n\t\t\t\t\thSizer.snap(exactCell, this.grid);\n\t\t\t\t\tthis.grid.rendering.currentResizedColumn = this.model.columns[exactCell.c];\n\t\t\t\t} else {\n\t\t\t\t\tdom.hideElement(hSizer);\n\t\t\t\t}\n\t\t\t} else if (this.model.options.rowResize && !vSizer.resizing && exactCell.classList.contains('vlabel')) {\n\t\t\t\tif (exactCell.offsetHeight - e.offsetY + exactCell.offsetTop < constants.RESIZE_TRESHOLD) {\n\t\t\t\t\tvSizer.snap(exactCell, this.grid);\n\t\t\t\t\tthis.grid.rendering.currentResizedRow = this.model.rows[exactCell.r];\n\t\t\t\t} else {\n\t\t\t\t\tdom.hideElement(vSizer);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (cell && cell.tagName == 'TH') {\n\t\t\tif (this.grid.selecting.isSelecting) {\n\t\t\t\tthis.suspendClick();\n\t\t\t\tthis.grid.selecting.updateSelecting(cell.c, cell.r);\n\t\t\t}\n\t\t\treturn;\n\t\t} else if (cell && cell.tagName == 'TD') {\n\t\t\tif (this.grid.selecting.isSelectorOperationActive || this.grid.selecting.isFormulaSelectorOperationActive) {\n\t\t\t\tconst { top, left } = dom.getElementOffset(cell, this.grid);\n\t\t\t\tthis.grid.rendering.autoscroll({\n\t\t\t\t\tx: left - this.table.totalHeaderWidth + e.offsetX - cell.offsetLeft,\n\t\t\t\t\ty: top - this.table.thead.clientHeight + e.offsetY - cell.offsetTop\n\t\t\t\t});\n\t\t\t\tif (this.grid.selecting.isSelecting) {\n\t\t\t\t\tthis.suspendClick();\n\t\t\t\t}\n\t\t\t\tthis.grid.selecting.updateSelecting(cell.c, cell.r);\n\t\t\t} else {\n\t\t\t\tconst cellModel = this.model.rows[cell.r]?.cell(cell.c);\n\t\t\t\tif (cellModel && cellModel.hasTooltip) {\n\t\t\t\t\thidePopups = false;\n\t\t\t\t\tthis.grid.tooltip.attachToCell(cell, cellModel);\n\t\t\t\t}\n\n\t\t\t\tif (cellModel && cellModel.hasComment) {\n\t\t\t\t\thidePopups = false;\n\t\t\t\t\tif (this.grid.comment.attachedTo !== cell) {\n\t\t\t\t\t\tthis.grid.comment.attachTo(cell, cellModel);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (hidePopups) {\n\t\t\tthis.grid.tooltip.deatach();\n\t\t\tthis.grid.comment.deatach(this.model.options.comments.hideTimeout);\n\t\t}\n\n\t\tdom.hideElement(hSizer);\n\t\tdom.hideElement(vSizer);\n\t}\n\n\t_onMouseDown = (e: PointerEvent) => {\n\t\tif ((e.buttons & 1) == 0) return;\n\t\t\n\t\tthis.grid.setPointerCapture(e.pointerId);\n\t\tthis.startOffset = {x: e.offsetX, y: e.offsetY};\n\n\t\tfor (const elm of e.composedPath() as HTMLElement[]) {\n\t\t\tif (elm.tagName == 'TD') {\n\t\t\t\tconst td = elm as TableCell;\n\t\t\t\tthis.grid.selecting.startCellSelecting(new CellRange(td.c, td.r));\n\t\t\t\tbreak;\n\t\t\t} else if (elm.tagName == 'TH') {\n\t\t\t\tconst th = elm as TableHeaderCell;\n\t\t\t\tif (elm.matches('.sort')) {\n\t\t\t\t\tthis.grid.sorting.sort(th.c);\n\t\t\t\t} else if (th.classList.contains('filter')) {\n\t\t\t\t\tthis.grid.filtering.openFilter(this.model.columns[th.c], th);\n\t\t\t\t} else if (th.classList.contains('hlabel')) {\n\t\t\t\t\tthis.grid.selecting.startColumnSelecting(th.c);\n\t\t\t\t} else if (th.classList.contains('vlabel')) {\n\t\t\t\t\tthis.grid.selecting.startRowSelecting(th.r);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t_onMouseUp = (e: PointerEvent) => {\n\t\tif (e.buttons != 0) return;\n\n\t\tconst x = Math.abs(this.startOffset.x - e.offsetX);\n\t\tconst y = Math.abs(this.startOffset.y - e.offsetY);\n\t\tif (Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)) < this.model.options.events.click.mouseMoveTreshold) {\n\t\t\tthis.resumeClick();\n\t\t}\n\n\t\tthis.grid.releasePointerCapture(e.pointerId);\n\t\tthis.grid.selecting.stopSelectOperations();\n\t}\n\n\t_onClick = (e: PointerEvent) => {\n\t\tif (this.clickDisabled) return;\n\n\t\t// TODO: find better way to prevent clicks on scrollbars\n\t\tif (this.grid.clientHeight - e.offsetY < this.grid.hSlider.offsetHeight) return;\n\t\tif (this.grid.clientWidth - e.offsetX < this.grid.vSlider.offsetWidth) return;\n\n\t\tconst cell = this.table.findTableCellByOffset(e.offsetX, e.offsetY);\n\t\tconst cellModel = cell?.tagName == 'TD' ? this.model.rows[cell.r]?.cell(cell.c) : null;\n\t\tthis.grid.dispatchEvent(new GridEvent('click', {grid: this.grid, cell: cellModel}));\n\t}\n\n\t_onContextMenu = (e: MouseEvent) => {\n\t\te.preventDefault();\n\t\tfor (const elm of e.composedPath() as HTMLElement[]) {\n\t\t\tif (elm.tagName == 'TD') {\n\t\t\t\tconst td = elm as TableCell;\n\t\t\t\tthis.grid.menus.openCellMenu(this.model.rows[td.r].cell(td.c), {x: e.pageX, y: e.pageY});\n\t\t\t} else if (elm.tagName == 'TH') {\n\t\t\t\tconst th = elm as TableHeaderCell;\n\t\t\t\tif (th.classList.contains('hlabel')) {\n\t\t\t\t\tthis.grid.menus.openColumnMenu(this.model.columns[th.c], {x: e.pageX, y: e.pageY});\n\t\t\t\t} else if (th.classList.contains('vlabel')) {\n\t\t\t\t\tthis.grid.menus.openRowMenu(this.model.rows[th.r], {x: e.pageX, y: e.pageY});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t_onVerticalSlide = (e: SlideEvent) => {\n\t\tthis.table.rowOffset = Math.min(e.value, this.model.visibleRows.length - 1);\n\t\tthis.grid.rendering.requireVerticalUpdate = true;\n\t\t// this.grid.logger.info(`v-slide: ${e.value}`);\n\t\tthis.grid.rendering.renderCells();\n\t}\n\t\n\t_onHorizontalSlide = (e: SlideEvent) => {\n\t\tthis.table.colOffset = Math.min(e.value, this.model.visibleColumns.length - 1);\n\t\tthis.grid.rendering.requireHorizontalUpdate = true;\n\t\t// this.grid.logger.info(`h-slide: ${e.value}`);\n\t\tthis.grid.rendering.renderCells();\n\t}\n\n\t_onSlideStart = () => {\n\t\tthis.suspendClick();\n\t}\n\n\t_onSlideStop = () => {\n\t\tthis.resumeClick(true);\n\t}\n\n\t_denbounceHorizontalScroll = debounce((dx: number) => this.grid.rendering.scrollHorizontalByPixels(dx), 50);\n\t_onWheel = (e: WheelEvent) => {\n\t\tif (e.ctrlKey) return;\n\t\tif (e.deltaY != 0) this.grid.rendering.scrollVerticalByPixels(e.deltaY);\n\t\tif (e.deltaX != 0) {\n\t\t\tthis._denbounceHorizontalScroll(Math.sign(e.deltaX) * Math.min(100, Math.abs(e.deltaX)));\n\t\t}\n\t}\n\n\t_onTouchStart = (e: TouchEvent) => {\n\t\tthis.grid.rendering.touchStartX = e.touches[0];\n\t\tthis.grid.rendering.touchStartY = e.touches[0];\n\t}\n\n\t_onTouchEnd = (e: TouchEvent) => {\n\t\tthis.grid.rendering.touchStartX = e.touches[0];\n\t\tthis.grid.rendering.touchStartY = e.touches[0];\n\t}\n\n\t_onTouchMove = (e: TouchEvent) => {\n\t\tconst rendering = this.grid.rendering;\n\t\tif (rendering.touchStartY) {\n\t\t\tconst deltaY = rendering.touchStartY.clientY - e.touches[0].clientY;\n\t\t\tif (Math.abs(deltaY) > this.model.options.rowHeight && this.table.viewport.rows.length > 0) {\n\t\t\t\trendering.scrollVerticalByPixels(deltaY);\n\t\t\t\trendering.touchStartY = e.touches[0];\n\t\t\t}\n\t\t}\n\n\t\tif (rendering.touchStartX) {\n\t\t\tconst deltaX = rendering.touchStartX.clientX - e.touches[0].clientX;\n\t\t\tif (Math.abs(deltaX) > this.model.options.columnWidth && this.table.viewport.columns.length > 0) {\n\t\t\t\trendering.scrollHorizontalByPixels(deltaX);\n\t\t\t\trendering.touchStartX = e.touches[0];\n\t\t\t}\n\t\t}\n\t}\n\n\t_onHorizontalResizeStart = () => {\n\t\tthis.grid.rendering.resizing = true;\n\t\tthis.grid.rendering.currentResizedColumnWidth = this.grid.rendering.currentResizedColumn.width;\n\t}\n\n\t_onHorizontalResizeStop = (e: ResizeEvent) => {\n\t\tthis.suspendClick();\n\t\tthis.grid.rendering.resizing = false;\n\t\tthis.table.clearHeaderCache();\n\t\tthis.table.renderCells({horizontal: true});\n\t\tthis.grid.dispatchEvent(\n\t\t\tnew GridColumnResizeEvent('column.resize', this.grid, this.grid.rendering.currentResizedColumn, e)\n\t\t);\n\t}\n\n\t_onHorizontalResize = (e: ResizeEvent) => {\n\t\tconst rendering = this.grid.rendering;\n\t\t// if (this.resizing) e.stopPropagation();\n\t\trendering.currentResizedColumn.width = rendering.currentResizedColumnWidth + e.deltaX;\n\t\t// this.showMouseTooltip(`${columnModel.width.toString()}px`, {t: e.mouseY, l: e.mouseX});\n\t\tdom.setSize(this.table.getColumnByModelIndex(rendering.currentResizedColumn.index), {w: rendering.currentResizedColumn.width}, true);\n\t\tthis.grid.selecting.updateSelector();\n\t}\n\n\t_onVerticalResizeStart = () => {\n\t\tthis.grid.rendering.resizing = true;\n\t\tthis.grid.rendering.currentResizedRowHeight = this.grid.rendering.currentResizedRow.height;\n\t}\n\n\t_onVerticalResizeStop = (e: ResizeEvent) => {\n\t\tthis.suspendClick();\n\t\tthis.grid.rendering.resizing = false;\n\t\tthis.table.clearBodyCache();\n\t\tthis.table.renderCells({vertical: true});\n\t\tthis.grid.dispatchEvent(\n\t\t\tnew GridRowResizeEvent('row.resize', this.grid, this.grid.rendering.currentResizedRow, e)\n\t\t);\n\t}\n\n\t_onVerticalResize = (e: ResizeEvent) => {\n\t\tconst rendering = this.grid.rendering;\n\t\t// if (this.resizing) e.stopPropagation();\n\t\trendering.currentResizedRow.height = rendering.currentResizedRowHeight + e.deltaY;\n\t\t// this.showMouseTooltip(`${columnModel.width.toString()}px`, {t: e.mouseY, l: e.mouseX});\n\t\tdom.setSize(this.table.getRowByModelIndex(rendering.currentResizedRow.index), {h: rendering.currentResizedRow.height}, false);\n\t\tthis.grid.selecting.updateSelector();\n\t}\n\n\t_onCommentCommit = (e: CommentEvent) => {\n\t\tthis.grid.model.comments.set(e.cell.address, e.items);\n\t\te.cell.invalidateStyle();\n\t\tthis.grid.rendering.updateCells([e.cell]);\n\t}\n\n\t_onAutofill = (e: SelectorEvent) => {\n\t\tthis.suspendClick();\n\t\tif (this.grid.selection.range.equals(e.selector.autofillRange)) return;\n\t\tconst {\n\t\t\tcells, oldValues\n\t\t} = autofill(this.model, this.grid.selection.range, e.selector.autofillRange, e.selector.autofillDirection);\n\t\tthis.grid.rendering.updateCells(cells, true);\n\t\tthis.grid.selection.setRange(this.grid.selection.range.unite(e.selector.autofillRange));\n\t\tthis.grid.selecting.updateSelector();\n\n\t\tthis.grid.dispatchEvent(new GridEditEvent({\n\t\t\tgrid: this.grid,\n\t\t\teditType: 'autofill',\n\t\t\tcells: cells,\n\t\t\toldValues: oldValues, \n\t\t\tnewValues: cells.map(cell => cell.value2 as CellValueType)\n\t\t}));\n\t}\n\n\t_onEdit = (e: GridEditEvent) => {\n\t\tif (e.fromHistory) return;\n\t\tconst addresses: string[] = [];\n\t\tconst names: string[] = [];\n\t\tconst nameRangeMap = this.model.names.rangeMap;\n\t\tlet newValues: CellValueType[] = [];\n\t\tlet newProps: Partial<CellSource>[] = [];\n\t\tlet oldValues: CellValueType[] = [];\n\t\tlet oldProps: Partial<CellSource>[] = [];\n\n\t\tswitch (e.editType) {\n\t\t\tcase 'value':\n\t\t\t\tnewValues = e.newValues;\n\t\t\t\tnewProps = e.newProps;\n\t\t\t\toldValues = e.oldValues;\n\t\t\t\toldProps = e.oldProps;\n\t\t\t\te.cells.forEach(cell => {\n\t\t\t\t\tconst a = cell.address;\n\t\t\t\t\taddresses.push(a);\n\t\t\t\t\tnames.push(nameRangeMap.get(a));\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase 'insert_column':\n\t\t\tcase 'insert_row':\n\t\t\t\t(e.newValues as ElementModel[]).forEach(row => {\n\t\t\t\t\tconst a = row.address;\n\t\t\t\t\taddresses.push(a);\n\t\t\t\t\tnames.push(nameRangeMap.get(a));\n\t\t\t\t\tnewValues.push(row.getSourceData());\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t}\n\n\t\tthis.grid.history.push({\n\t\t\ttype: e.editType,\n\t\t\taddresses,\n\t\t\tnames,\n\t\t\toldValues,\n\t\t\toldProps,\n\t\t\tnewValues,\n\t\t\tnewProps\n\t\t});\n\t}\n\n\t_onSelectorMove = (e: SelectorMoveEvent) => {\n\t\tthis.suspendClick();\n\t\tthis.selection.setRange(e.toRange);\n\t\tif (e.fromRange.isRow) {\n\t\t\tthis.grid.editing.moveRows({\n\t\t\t\tindex: e.fromRange.r1,\n\t\t\t\tcount: e.fromRange.size.rows,\n\t\t\t\ttargetIndex: e.toRange.r1\n\t\t\t});\n\t\t} else if (e.fromRange.isColumn) {\n\t\t\tthis.grid.editing.moveColumns({\n\t\t\t\tindex: e.fromRange.c1,\n\t\t\t\tcount: e.fromRange.size.columns,\n\t\t\t\ttargetIndex: e.toRange.c1\n\t\t\t});\n\t\t} else {\n\t\t\tconsole.log(e);\n\t\t}\n\t}\n\n\t_onMouseLeave = () => {\n\t\tthis.grid.rendering.hideSliders();\n\t}\n\n\t// _debounceMouseMove: ReturnType<typeof debounce>;\n\t// registerMouseMove() {\n\t// \tif (this._debounceMouseMove) return;\n\t// \tthis._debounceMouseMove = debounce(this._onMouseMove, 20, {maxWait: 50, isImmediate: true});\n\t// \tthis.grid.addEventListener('pointermove', this._debounceMouseMove);\n\t// }\n\n\t// unregisterMouseMove() {\n\t// \tif (!this._debounceMouseMove) return;\n\t// \tthis.grid.removeEventListener('pointermove', this._debounceMouseMove);\n\t// \tthis._debounceMouseMove = null;\n\t// }\n\n\tdebounceHideSliders = debounce(() => this.grid.rendering.hideSliders(), 1000, {isImmediate: false});\t\n\n\t_onRender = () => {\n\t\tconst grid = this.grid;\n\t\tgrid.selecting.updateSelectors();\n\n\t\tgrid.dispatchEvent(new GridEvent('render', {grid: this.grid}));\n\n\t\tif (grid.adapter && grid.options.pageSize && grid.rendering.isLastRowInViewport()) {\n\t\t\tgrid.rendering.loadNextPage();\n\t\t}\n\n\t\tgrid.rendering.updateSliderVisibility();\n\t\tif (this.model.options.scrolling.scrollbarVisibilityTreshold > 0) {\n\t\t\tthis.debounceHideSliders();\n\t\t}\n\t}\n\n\t_onHorizontalSizerDblClick = (e: MouseEvent) => {\n\t\te.stopPropagation();\n\t\tthis.editDisabled = true;\n\t\tthis.grid.rendering.autofitColumn(this.grid.rendering.currentResizedColumn.index);\n\t\tthis.grid.dispatchEvent(\n\t\t\tnew GridColumnResizeEvent('column.resize', this.grid, this.grid.rendering.currentResizedColumn, e)\n\t\t);\n\t}\n\n\t_onVerticalSizerDblClick = (e: MouseEvent) => {\n\t\te.stopPropagation();\n\t\tthis.editDisabled = true;\n\t\tthis.grid.rendering.autofitRow(this.grid.rendering.currentResizedRow.index);\n\t\tthis.grid.dispatchEvent(\n\t\t\tnew GridRowResizeEvent('row.resize', this.grid, this.grid.rendering.currentResizedRow, e)\n\t\t);\n\t}\n\n\t_onDblClick = () => {\n\t\tif (this.editDisabled) {\n\t\t\tthis.editDisabled = false;\n\t\t\treturn;\n\t\t}\n\t\tthis.grid.editing.startEdit();\n\t}\n\n\tasync init() {\n\t\tawait this.grid.updateComplete;\n\t\tawait this.table.updateComplete;\n\t\tconst grid = this.grid;\n\t\t\n\t\t// wheel scroling\n\t\tgrid.addEventListener('wheel', this._onWheel, {passive: true});\n\n\t\t// touch scrolling\n\t\tgrid.addEventListener('touchstart', this._onTouchStart, {passive: true});\n\t\tgrid.addEventListener('touchend', this._onTouchEnd, {passive: true});\n\t\tgrid.addEventListener('touchmove', this._onTouchMove, {passive: true});\n\n\t\t// col/row resize\n\t\tgrid.hSizer.addEventListener('resizestart', this._onHorizontalResizeStart);\n\t\tgrid.hSizer.addEventListener('resizestop', this._onHorizontalResizeStop);\n\t\tgrid.hSizer.addEventListener('resize', this._onHorizontalResize);\n\t\tgrid.hSizer.addEventListener('dblclick', this._onHorizontalSizerDblClick);\n\t\tgrid.vSizer.addEventListener('resizestart', this._onVerticalResizeStart);\n\t\tgrid.vSizer.addEventListener('resizestop', this._onVerticalResizeStop);\n\t\tgrid.vSizer.addEventListener('resize', this._onVerticalResize);\n\t\tgrid.vSizer.addEventListener('dblclick', this._onVerticalSizerDblClick);\n\t\t\n\t\t// comments\n\t\tgrid.comment.addEventListener('comment.commit', this._onCommentCommit);\n\n\t\tgrid.addEventListener('keydown', this._onKeyDown);\n\t\tgrid.addEventListener('click', this._onClick);\n\t\tgrid.addEventListener('contextmenu', this._onContextMenu);\n\t\tgrid.addEventListener('toggle', () => grid.rendering.debounceCalculateViewport());\n\t\t\n\t\tgrid.addEventListener('pointerup', this._onMouseUp);\n\t\tgrid.addEventListener('pointerdown', this._onMouseDown);\n\t\t// grid.addEventListener('pointermove', this._onMouseMove);\n\t\tconst debounceMouseMove = debounce(this._onMouseMove, 20, {maxWait: 50, isImmediate: true});\n\t\tgrid.addEventListener('pointermove', debounceMouseMove);\n\n\t\tgrid.addEventListener('mouseleave', this._onMouseLeave);\n\n\t\t// table event handlers\n\t\tgrid.table.addEventListener('rendercells', this._onRender);\n\t\t\n\t\t// selector event handlers\n\t\tgrid.selector.addEventListener('grid.selector.autofill', this._onAutofill);\n\t\tgrid.selector.addEventListener('grid.selector.move', this._onSelectorMove);\n\n\t\t// editing event handlers\n\t\tgrid.addEventListener('dblclick', this._onDblClick);\n\t\tgrid.addEventListener('grid.edit', this._onEdit);\n\t}\n\n}"]}
|
|
1
|
+
{"version":3,"file":"grid.events.js","sourceRoot":"","sources":["../../src/ui/grid.events.ts"],"names":[],"mappings":"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","sourcesContent":["import constants from \"../constants\";\nimport { dom, ResizeEvent, SlideEvent } from \"@omegagrid/core\";\nimport { debounce } from \"ts-debounce\";\nimport { CellModel, ColumnModel, autofill, CellRange, CellValueType, EditType, ElementModel, RowModel, CellSource } from \"@omegagrid/grid-core\";\nimport { Grid } from \"./grid\";\nimport { TableCell, TableHeaderCell } from \"./table\";\nimport { SelectorEvent, SelectorMoveEvent } from \"./selector\";\nimport { CommentEvent } from \"./comment\";\n\nconst IGNORED_KEYS = ['F5', 'F12'];\n\nexport class GridErrorEvent extends Event {\n\tconstructor(readonly error: Error) {\n\t\tsuper(`grid.error`, {bubbles: true, composed: true});\n\t}\n}\n\nexport class GridEvent extends Event {\n\n\tget selection() { return this.grid.selecting.selection }\n\tget activeCell() { return this.selection.activeCell }\n\t\n\tcells?: CellModel[];\n\tcell: CellModel;\n\trow: RowModel;\n\tcolumn: ColumnModel;\n\taction: string;\n\tgrid: Grid;\n\n\tconstructor(type: string, args?: Partial<GridEvent>) {\n\t\tsuper(`grid.${type}`, {bubbles: true, composed: true});\n\t\tObject.assign(this, args);\n\n\t\tif (this.cell) {\n\t\t\tthis.row = this.cell.row;\n\t\t\tthis.column = this.cell.column;\n\t\t}\n\t}\n\n}\n\nexport class GridEditEvent extends GridEvent {\n\n\tfromHistory?: boolean;\n\teditType?: EditType;\n\toldValues?: CellValueType[];\n\toldProps?: Partial<CellSource>[];\n\tnewValues?: CellValueType[];\n\tnewProps?: Partial<CellSource>[];\n\n\tconstructor(args?: Partial<GridEditEvent>) {\n\t\tsuper('edit', args);\n\t}\n}\n\nexport class GridResizeEvent extends ResizeEvent {\n\tpublic readonly grid: Grid;\n\tconstructor(type: string, grid: Grid, args?: Partial<ResizeEvent>) {\n\t\tsuper(`grid.${type}`, args);\n\t\tthis.grid = grid;\n\t}\n}\n\nexport class GridColumnResizeEvent extends GridResizeEvent {\n\tpublic readonly column: ColumnModel;\n\tconstructor(type: string, grid: Grid, column: ColumnModel, args?: Partial<ResizeEvent>) {\n\t\tsuper(type, grid, args);\n\t\tthis.column = column;\n\t}\n}\n\nexport class GridRowResizeEvent extends GridResizeEvent {\n\tpublic readonly row: RowModel;\n\tconstructor(type: string, grid: Grid, row: RowModel, args?: Partial<ResizeEvent>) {\n\t\tsuper(type, grid, args);\n\t\tthis.row = row;\n\t}\n}\n\nexport class GridEvents {\n\n\tget model() { return this.grid.model }\n\tget selection() { return this.grid.selection }\n\tget table() { return this.grid.table }\n\t\n\tclickDisabled = false;\n\teditDisabled = false;\n\tclicked = false;\n\tstartOffset: {x: number, y: number} = {x: 0, y: 0};\n\n\tconstructor(readonly grid: Grid) { }\n\n\tget isSliding() { return this.grid.hSlider.sliding || this.grid.vSlider.sliding }\n\n\tsuspendClick = () => this.clickDisabled = true;\n\tresumeClick = (delay = false) => { \n\t\tif (this.isSliding) return;\n\t\tif (delay) {\n\t\t\tsetTimeout(() => this.clickDisabled = false, 100)\n\t\t} else {\n\t\t\tthis.clickDisabled = false;\n\t\t}\n\t}\n\t\n\t_onKeyDown = (e: KeyboardEvent) => {\n\t\tif (!IGNORED_KEYS.includes(e.key)) e.preventDefault();\n\t\t\n\t\tswitch (e.key) {\n\t\t\tcase 'Tab':\n\t\t\t\te.preventDefault();\n\t\t\t\tthis.grid.selecting.shiftActiveCell(e.shiftKey ? -1 : 1, true);\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowRight':\n\t\t\t\tthis.grid.selecting.debounceMoveSelector(1, 0);\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowLeft':\n\t\t\t\tthis.grid.selecting.debounceMoveSelector(-1, 0);\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowDown':\n\t\t\t\tthis.grid.selecting.debounceMoveSelector(0, 1);\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowUp':\n\t\t\t\tthis.grid.selecting.debounceMoveSelector(0, -1);\n\t\t\t\tbreak;\n\t\t\tcase 'PageUp':\n\t\t\t\tthis.grid.selecting.debounceMoveSelector(0, -this.table.viewport.rows.length);\n\t\t\t\tbreak;\n\t\t\tcase 'PageDown':\n\t\t\t\tthis.grid.selecting.debounceMoveSelector(0, this.table.viewport.rows.length);\n\t\t\t\tbreak;\n\t\t\tcase 'Home':\n\t\t\t\tthis.grid.selecting.debounceMoveSelector(\n\t\t\t\t\t-this.selection.range.c1, \n\t\t\t\t\te.ctrlKey ? -this.selection.range.r1 : 0\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase 'End':\n\t\t\t\tthis.grid.selecting.debounceMoveSelector(\n\t\t\t\t\tthis.model.gridRange.c2 - this.selection.range.c1,\n\t\t\t\t\te.ctrlKey ? this.model.gridRange.r2 - this.selection.range.r1 : 0\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase 'Enter':\n\t\t\t\tthis.grid.selecting.enter();\n\t\t\t\tbreak;\n\t\t\tcase 'Escape':\n\t\t\t\tthis.grid.selecting.hideCopySelector();\n\t\t\t\tbreak;\n\t\t\tcase 'c':\n\t\t\tcase 'C':\n\t\t\t\tif (e.ctrlKey) this.grid.editing.copySelection();\n\t\t\t\tbreak;\n\t\t\tcase 'v':\n\t\t\tcase 'V':\n\t\t\t\tif (e.ctrlKey) this.grid.editing.paste();\n\t\t\t\tbreak;\n\t\t\tcase 'z':\n\t\t\tcase 'Z':\n\t\t\t\tif (!this.grid.options.undoRedo) return;\n\t\t\t\tif (e.ctrlKey) this.grid.editing.undo();\n\t\t\t\tbreak;\n\t\t\tcase 'y':\n\t\t\tcase 'Y':\n\t\t\t\tif (!this.grid.options.undoRedo) return;\n\t\t\t\tif (e.ctrlKey) this.grid.editing.redo();\n\t\t\t\tbreak;\n\t\t\tcase 'F2':\n\t\t\t\te.preventDefault();\n\t\t\t\tthis.grid.editing.startEdit();\n\t\t\t\tbreak;\n\t\t\tcase 'Delete':\n\t\t\t\te.preventDefault();\n\t\t\t\tthis.grid.objects.delete();\n\t\t\t\tthis.grid.editing.clearSelection();\n\t\t\t\tbreak;\n\t\t\tcase 'Backspace':\n\t\t\t\te.preventDefault();\n\t\t\t\tthis.grid.editing.clearSelection();\n\t\t\t\tbreak;\n\t\t\tcase 'F1':\n\t\t\t\tif (!this.grid.options.commandWindow) return;\n\t\t\t\te.preventDefault();\n\t\t\t\tthis.grid.openCommands();\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif (e.key.length == 1 && !e.ctrlKey) {\n\t\t\tthis.grid.editing.startEdit(e.key);\n\t\t}\n\t}\n\n\t_onMouseMove = (e: PointerEvent) => {\n\t\tif (!this.model) return;\n\n\t\tlet hidePopups = true;\n\t\tconst hSizer = this.grid.hSizer;\n\t\tconst vSizer = this.grid.vSizer;\n\n\t\tconst { offsetX, offsetY} = e;\n\t\tlet scrollbarVisibilityTreshold = this.model.options.scrolling.scrollbarVisibilityTreshold;\n\t\tif (scrollbarVisibilityTreshold <= 0) scrollbarVisibilityTreshold = Math.max(this.grid.clientWidth, this.grid.clientHeight);\n\n\t\tif (offsetX > this.grid.clientWidth - scrollbarVisibilityTreshold) {\n\t\t\tthis.grid.vSlider.show();\n\t\t} else {\n\t\t\tthis.grid.vSlider.hide();\n\t\t}\n\n\t\tif (offsetY > this.grid.clientHeight - scrollbarVisibilityTreshold) {\n\t\t\tthis.grid.hSlider.show();\n\t\t} else {\n\t\t\tthis.grid.hSlider.hide();\n\t\t}\n\n\t\tconst [cell, exactCell] = this.table.findNearestTableCellByOffset(offsetX, offsetY);\n\t\t\n\t\tif (exactCell && exactCell.tagName == 'TH') {\n\t\t\tif (this.model.options.columnResize && !hSizer.resizing && exactCell.classList.contains('hlabel')) {\n\t\t\t\tif (exactCell.offsetWidth - e.offsetX + exactCell.offsetLeft < constants.RESIZE_TRESHOLD) {\n\t\t\t\t\thSizer.snap(exactCell, this.grid);\n\t\t\t\t\tthis.grid.rendering.currentResizedColumn = this.model.columns[exactCell.c];\n\t\t\t\t} else {\n\t\t\t\t\tdom.hideElement(hSizer);\n\t\t\t\t}\n\t\t\t} else if (this.model.options.rowResize && !vSizer.resizing && exactCell.classList.contains('vlabel')) {\n\t\t\t\tif (exactCell.offsetHeight - e.offsetY + exactCell.offsetTop < constants.RESIZE_TRESHOLD) {\n\t\t\t\t\tvSizer.snap(exactCell, this.grid);\n\t\t\t\t\tthis.grid.rendering.currentResizedRow = this.model.rows[exactCell.r];\n\t\t\t\t} else {\n\t\t\t\t\tdom.hideElement(vSizer);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (cell && cell.tagName == 'TH') {\n\t\t\tif (this.grid.selecting.isSelecting) {\n\t\t\t\tthis.suspendClick();\n\t\t\t\tthis.grid.selecting.updateSelecting(cell.c, cell.r);\n\t\t\t}\n\t\t\treturn;\n\t\t} else if (cell && cell.tagName == 'TD') {\n\t\t\tif (this.grid.selecting.isSelectorOperationActive || this.grid.selecting.isFormulaSelectorOperationActive) {\n\t\t\t\tconst { top, left } = dom.getElementOffset(cell, this.grid);\n\t\t\t\tthis.grid.rendering.autoscroll({\n\t\t\t\t\tx: left - this.table.totalHeaderWidth + e.offsetX - cell.offsetLeft,\n\t\t\t\t\ty: top - this.table.thead.clientHeight + e.offsetY - cell.offsetTop\n\t\t\t\t});\n\t\t\t\tif (this.grid.selecting.isSelecting) {\n\t\t\t\t\tthis.suspendClick();\n\t\t\t\t}\n\t\t\t\tthis.grid.selecting.updateSelecting(cell.c, cell.r);\n\t\t\t} else {\n\t\t\t\tconst cellModel = this.model.rows[cell.r]?.cell(cell.c);\n\t\t\t\tif (cellModel && cellModel.hasTooltip) {\n\t\t\t\t\thidePopups = false;\n\t\t\t\t\tthis.grid.tooltip.attachToCell(cell, cellModel);\n\t\t\t\t}\n\n\t\t\t\tif (cellModel && cellModel.hasComment) {\n\t\t\t\t\thidePopups = false;\n\t\t\t\t\tif (this.grid.comment.attachedTo !== cell) {\n\t\t\t\t\t\tthis.grid.comment.attachTo(cell, cellModel);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (hidePopups) {\n\t\t\tthis.grid.tooltip.deatach();\n\t\t\tthis.grid.comment.deatach(this.model.options.comments.hideTimeout);\n\t\t}\n\n\t\tdom.hideElement(hSizer);\n\t\tdom.hideElement(vSizer);\n\t}\n\n\t_onMouseDown = (e: PointerEvent) => {\n\t\tif ((e.buttons & 1) == 0) return;\n\t\t\n\t\tthis.grid.setPointerCapture(e.pointerId);\n\t\tthis.startOffset = {x: e.offsetX, y: e.offsetY};\n\n\t\tfor (const elm of e.composedPath() as HTMLElement[]) {\n\t\t\tif (elm.tagName == 'TD') {\n\t\t\t\tconst td = elm as TableCell;\n\t\t\t\tthis.grid.selecting.startCellSelecting(new CellRange(td.c, td.r));\n\t\t\t\tbreak;\n\t\t\t} else if (elm.tagName == 'TH') {\n\t\t\t\tconst th = elm as TableHeaderCell;\n\t\t\t\tif (elm.matches('.sort')) {\n\t\t\t\t\tthis.grid.sorting.sort(th.c);\n\t\t\t\t} else if (th.classList.contains('filter')) {\n\t\t\t\t\tthis.grid.filtering.openFilter(this.model.columns[th.c], th);\n\t\t\t\t} else if (th.classList.contains('hlabel')) {\n\t\t\t\t\tthis.grid.selecting.startColumnSelecting(th.c);\n\t\t\t\t} else if (th.classList.contains('vlabel')) {\n\t\t\t\t\tthis.grid.selecting.startRowSelecting(th.r);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t_onMouseUp = (e: PointerEvent) => {\n\t\tif (e.buttons != 0) return;\n\n\t\tconst x = Math.abs(this.startOffset.x - e.offsetX);\n\t\tconst y = Math.abs(this.startOffset.y - e.offsetY);\n\t\tif (Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)) < this.model.options.events.click.mouseMoveTreshold) {\n\t\t\tthis.resumeClick();\n\t\t}\n\n\t\tthis.grid.releasePointerCapture(e.pointerId);\n\t\tthis.grid.selecting.stopSelectOperations();\n\t}\n\n\t_onClick = (e: PointerEvent) => {\n\t\tif (this.clickDisabled) return;\n\n\t\t// TODO: find better way to prevent clicks on scrollbars\n\t\tif (this.grid.clientHeight - e.offsetY < this.grid.hSlider.offsetHeight) return;\n\t\tif (this.grid.clientWidth - e.offsetX < this.grid.vSlider.offsetWidth) return;\n\n\t\tconst cell = this.table.findTableCellByOffset(e.offsetX, e.offsetY);\n\t\tconst cellModel = cell?.tagName == 'TD' ? this.model.rows[cell.r]?.cell(cell.c) : null;\n\t\tthis.grid.dispatchEvent(new GridEvent('click', {grid: this.grid, cell: cellModel}));\n\t}\n\n\t_onContextMenu = (e: MouseEvent) => {\n\t\te.preventDefault();\n\t\tfor (const elm of e.composedPath() as HTMLElement[]) {\n\t\t\tif (elm.tagName == 'TD') {\n\t\t\t\tconst td = elm as TableCell;\n\t\t\t\tthis.grid.menus.openCellMenu(this.model.rows[td.r].cell(td.c), {x: e.pageX, y: e.pageY});\n\t\t\t} else if (elm.tagName == 'TH') {\n\t\t\t\tconst th = elm as TableHeaderCell;\n\t\t\t\tif (th.classList.contains('hlabel')) {\n\t\t\t\t\tthis.grid.menus.openColumnMenu(this.model.columns[th.c], {x: e.pageX, y: e.pageY});\n\t\t\t\t} else if (th.classList.contains('vlabel')) {\n\t\t\t\t\tthis.grid.menus.openRowMenu(this.model.rows[th.r], {x: e.pageX, y: e.pageY});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t_onVerticalSlide = (e: SlideEvent) => {\n\t\tthis.table.rowOffset = Math.min(e.value, this.model.visibleRows.length - 1);\n\t\tthis.grid.rendering.requireVerticalUpdate = true;\n\t\t// this.grid.logger.info(`v-slide: ${e.value}`);\n\t\tthis.grid.rendering.renderCells();\n\t}\n\t\n\t_onHorizontalSlide = (e: SlideEvent) => {\n\t\tthis.table.colOffset = Math.min(e.value, this.model.visibleColumns.length - 1);\n\t\tthis.grid.rendering.requireHorizontalUpdate = true;\n\t\t// this.grid.logger.info(`h-slide: ${e.value}`);\n\t\tthis.grid.rendering.renderCells();\n\t}\n\n\t_onSlideStart = () => {\n\t\tthis.suspendClick();\n\t}\n\n\t_onSlideStop = () => {\n\t\tthis.resumeClick(true);\n\t}\n\n\t_denbounceHorizontalScroll = debounce((dx: number) => this.grid.rendering.scrollHorizontalByPixels(dx), 50);\n\t_onWheel = (e: WheelEvent) => {\n\t\tif (e.ctrlKey) return;\n\t\tif (e.deltaY != 0) this.grid.rendering.scrollVerticalByPixels(e.deltaY);\n\t\tif (e.deltaX != 0) {\n\t\t\tthis._denbounceHorizontalScroll(Math.sign(e.deltaX) * Math.min(100, Math.abs(e.deltaX)));\n\t\t}\n\t}\n\n\t_onTouchStart = (e: TouchEvent) => {\n\t\tthis.grid.rendering.touchStartX = e.touches[0];\n\t\tthis.grid.rendering.touchStartY = e.touches[0];\n\t}\n\n\t_onTouchEnd = (e: TouchEvent) => {\n\t\tthis.grid.rendering.touchStartX = e.touches[0];\n\t\tthis.grid.rendering.touchStartY = e.touches[0];\n\t}\n\n\t_onTouchMove = (e: TouchEvent) => {\n\t\tconst rendering = this.grid.rendering;\n\t\tif (rendering.touchStartY) {\n\t\t\tconst deltaY = rendering.touchStartY.clientY - e.touches[0].clientY;\n\t\t\tif (Math.abs(deltaY) > this.model.options.rowHeight && this.table.viewport.rows.length > 0) {\n\t\t\t\trendering.scrollVerticalByPixels(deltaY);\n\t\t\t\trendering.touchStartY = e.touches[0];\n\t\t\t}\n\t\t}\n\n\t\tif (rendering.touchStartX) {\n\t\t\tconst deltaX = rendering.touchStartX.clientX - e.touches[0].clientX;\n\t\t\tif (Math.abs(deltaX) > this.model.options.columnWidth && this.table.viewport.columns.length > 0) {\n\t\t\t\trendering.scrollHorizontalByPixels(deltaX);\n\t\t\t\trendering.touchStartX = e.touches[0];\n\t\t\t}\n\t\t}\n\t}\n\n\t_onHorizontalResizeStart = () => {\n\t\tthis.grid.rendering.resizing = true;\n\t\tthis.grid.rendering.currentResizedColumnWidth = this.grid.rendering.currentResizedColumn.width;\n\t}\n\n\t_onHorizontalResizeStop = (e: ResizeEvent) => {\n\t\tthis.suspendClick();\n\t\tthis.grid.rendering.resizing = false;\n\t\tthis.table.clearHeaderCache();\n\t\tthis.table.renderCells({horizontal: true});\n\t\tthis.grid.dispatchEvent(\n\t\t\tnew GridColumnResizeEvent('column.resize', this.grid, this.grid.rendering.currentResizedColumn, e)\n\t\t);\n\t}\n\n\t_onHorizontalResize = (e: ResizeEvent) => {\n\t\tconst rendering = this.grid.rendering;\n\t\t// if (this.resizing) e.stopPropagation();\n\t\trendering.currentResizedColumn.width = rendering.currentResizedColumnWidth + e.deltaX;\n\t\t// this.showMouseTooltip(`${columnModel.width.toString()}px`, {t: e.mouseY, l: e.mouseX});\n\t\tdom.setSize(this.table.getColumnByModelIndex(rendering.currentResizedColumn.index), {w: rendering.currentResizedColumn.width}, true);\n\t\tthis.grid.selecting.updateSelector();\n\t}\n\n\t_onVerticalResizeStart = () => {\n\t\tthis.grid.rendering.resizing = true;\n\t\tthis.grid.rendering.currentResizedRowHeight = this.grid.rendering.currentResizedRow.height;\n\t}\n\n\t_onVerticalResizeStop = (e: ResizeEvent) => {\n\t\tthis.suspendClick();\n\t\tthis.grid.rendering.resizing = false;\n\t\tthis.table.clearBodyCache();\n\t\tthis.table.renderCells({vertical: true});\n\t\tthis.grid.dispatchEvent(\n\t\t\tnew GridRowResizeEvent('row.resize', this.grid, this.grid.rendering.currentResizedRow, e)\n\t\t);\n\t}\n\n\t_onVerticalResize = (e: ResizeEvent) => {\n\t\tconst rendering = this.grid.rendering;\n\t\t// if (this.resizing) e.stopPropagation();\n\t\trendering.currentResizedRow.height = rendering.currentResizedRowHeight + e.deltaY;\n\t\t// this.showMouseTooltip(`${columnModel.width.toString()}px`, {t: e.mouseY, l: e.mouseX});\n\t\tdom.setSize(this.table.getRowByModelIndex(rendering.currentResizedRow.index), {h: rendering.currentResizedRow.height}, false);\n\t\tthis.grid.selecting.updateSelector();\n\t}\n\n\t_onCommentCommit = (e: CommentEvent) => {\n\t\tthis.grid.model.comments.set(e.cell.address, e.items);\n\t\te.cell.invalidateStyle();\n\t\tthis.grid.rendering.updateCells([e.cell]);\n\t}\n\n\t_onAutofill = (e: SelectorEvent) => {\n\t\tthis.suspendClick();\n\t\tif (this.grid.selection.range.equals(e.selector.autofillRange)) return;\n\t\tconst {\n\t\t\tcells, oldValues\n\t\t} = autofill(this.model, this.grid.selection.range, e.selector.autofillRange, e.selector.autofillDirection);\n\t\tthis.grid.rendering.updateCells(cells, true);\n\t\tthis.grid.selection.setRange(this.grid.selection.range.unite(e.selector.autofillRange));\n\t\tthis.grid.selecting.updateSelector();\n\n\t\tthis.grid.dispatchEvent(new GridEditEvent({\n\t\t\tgrid: this.grid,\n\t\t\teditType: 'autofill',\n\t\t\tcells: cells,\n\t\t\toldValues: oldValues, \n\t\t\tnewValues: cells.map(cell => cell.value2 as CellValueType)\n\t\t}));\n\t}\n\n\t_onEdit = (e: GridEditEvent) => {\n\t\tif (e.fromHistory) return;\n\t\tconst addresses: string[] = [];\n\t\tconst names: string[] = [];\n\t\tconst nameRangeMap = this.model.names.rangeMap;\n\t\tlet newValues: CellValueType[] = [];\n\t\tlet newProps: Partial<CellSource>[] = [];\n\t\tlet oldValues: CellValueType[] = [];\n\t\tlet oldProps: Partial<CellSource>[] = [];\n\n\t\tswitch (e.editType) {\n\t\t\tcase 'value':\n\t\t\t\tnewValues = e.newValues;\n\t\t\t\tnewProps = e.newProps;\n\t\t\t\toldValues = e.oldValues;\n\t\t\t\toldProps = e.oldProps;\n\t\t\t\te.cells.forEach(cell => {\n\t\t\t\t\tconst a = cell.address;\n\t\t\t\t\taddresses.push(a);\n\t\t\t\t\tnames.push(nameRangeMap.get(a));\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase 'insert_column':\n\t\t\tcase 'insert_row':\n\t\t\t\t(e.newValues as ElementModel[]).forEach(row => {\n\t\t\t\t\tconst a = row.address;\n\t\t\t\t\taddresses.push(a);\n\t\t\t\t\tnames.push(nameRangeMap.get(a));\n\t\t\t\t\tnewValues.push(row.getSourceData());\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t}\n\n\t\tthis.grid.history.push({\n\t\t\ttype: e.editType,\n\t\t\taddresses,\n\t\t\tnames,\n\t\t\toldValues,\n\t\t\toldProps,\n\t\t\tnewValues,\n\t\t\tnewProps\n\t\t});\n\t}\n\n\t_onSelectorMove = (e: SelectorMoveEvent) => {\n\t\tthis.suspendClick();\n\t\tthis.selection.setRange(e.toRange);\n\t\tif (e.fromRange.isRow) {\n\t\t\tthis.grid.editing.moveRows({\n\t\t\t\tindex: e.fromRange.r1,\n\t\t\t\tcount: e.fromRange.size.rows,\n\t\t\t\ttargetIndex: e.toRange.r1\n\t\t\t});\n\t\t} else if (e.fromRange.isColumn) {\n\t\t\tthis.grid.editing.moveColumns({\n\t\t\t\tindex: e.fromRange.c1,\n\t\t\t\tcount: e.fromRange.size.columns,\n\t\t\t\ttargetIndex: e.toRange.c1\n\t\t\t});\n\t\t} else {\n\t\t\tconsole.log(e);\n\t\t}\n\t}\n\n\t_onMouseLeave = () => {\n\t\tthis.grid.rendering.hideSliders();\n\t}\n\n\t// _debounceMouseMove: ReturnType<typeof debounce>;\n\t// registerMouseMove() {\n\t// \tif (this._debounceMouseMove) return;\n\t// \tthis._debounceMouseMove = debounce(this._onMouseMove, 20, {maxWait: 50, isImmediate: true});\n\t// \tthis.grid.addEventListener('pointermove', this._debounceMouseMove);\n\t// }\n\n\t// unregisterMouseMove() {\n\t// \tif (!this._debounceMouseMove) return;\n\t// \tthis.grid.removeEventListener('pointermove', this._debounceMouseMove);\n\t// \tthis._debounceMouseMove = null;\n\t// }\n\n\tdebounceHideSliders = debounce(() => this.grid.rendering.hideSliders(), 1000, {isImmediate: false});\t\n\n\t_onRender = () => {\n\t\tconst grid = this.grid;\n\t\tgrid.selecting.updateSelectors();\n\n\t\tgrid.dispatchEvent(new GridEvent('render', {grid: this.grid}));\n\n\t\tif (grid.adapter && grid.options.pageSize && grid.rendering.isLastRowInViewport()) {\n\t\t\tgrid.rendering.loadNextPage();\n\t\t}\n\n\t\tgrid.rendering.updateSliderVisibility();\n\t\tif (this.model.options.scrolling.scrollbarVisibilityTreshold > 0) {\n\t\t\tthis.debounceHideSliders();\n\t\t}\n\t}\n\n\t_onHorizontalSizerDblClick = (e: MouseEvent) => {\n\t\te.stopPropagation();\n\t\tthis.editDisabled = true;\n\t\tthis.grid.rendering.autofitColumn(this.grid.rendering.currentResizedColumn.index);\n\t\tthis.grid.dispatchEvent(\n\t\t\tnew GridColumnResizeEvent('column.resize', this.grid, this.grid.rendering.currentResizedColumn, e)\n\t\t);\n\t}\n\n\t_onVerticalSizerDblClick = (e: MouseEvent) => {\n\t\te.stopPropagation();\n\t\tthis.editDisabled = true;\n\t\tthis.grid.rendering.autofitRow(this.grid.rendering.currentResizedRow.index);\n\t\tthis.grid.dispatchEvent(\n\t\t\tnew GridRowResizeEvent('row.resize', this.grid, this.grid.rendering.currentResizedRow, e)\n\t\t);\n\t}\n\n\t_onDblClick = () => {\n\t\tif (this.editDisabled) {\n\t\t\tthis.editDisabled = false;\n\t\t\treturn;\n\t\t}\n\t\tthis.grid.editing.startEdit();\n\t}\n\n\tasync init() {\n\t\tawait this.grid.updateComplete;\n\t\tawait this.table.updateComplete;\n\t\tconst grid = this.grid;\n\t\t\n\t\t// wheel scroling\n\t\tgrid.addEventListener('wheel', this._onWheel, {passive: true});\n\n\t\t// touch scrolling\n\t\tgrid.addEventListener('touchstart', this._onTouchStart, {passive: true});\n\t\tgrid.addEventListener('touchend', this._onTouchEnd, {passive: true});\n\t\tgrid.addEventListener('touchmove', this._onTouchMove, {passive: true});\n\n\t\t// col/row resize\n\t\tgrid.hSizer.addEventListener('resizestart', this._onHorizontalResizeStart);\n\t\tgrid.hSizer.addEventListener('resizestop', this._onHorizontalResizeStop);\n\t\tgrid.hSizer.addEventListener('resize', this._onHorizontalResize);\n\t\tgrid.hSizer.addEventListener('dblclick', this._onHorizontalSizerDblClick);\n\t\tgrid.vSizer.addEventListener('resizestart', this._onVerticalResizeStart);\n\t\tgrid.vSizer.addEventListener('resizestop', this._onVerticalResizeStop);\n\t\tgrid.vSizer.addEventListener('resize', this._onVerticalResize);\n\t\tgrid.vSizer.addEventListener('dblclick', this._onVerticalSizerDblClick);\n\t\t\n\t\t// comments\n\t\tgrid.comment.addEventListener('comment.commit', this._onCommentCommit);\n\n\t\tgrid.addEventListener('keydown', this._onKeyDown);\n\t\tgrid.addEventListener('click', this._onClick);\n\t\tgrid.addEventListener('contextmenu', this._onContextMenu);\n\t\tgrid.addEventListener('toggle', () => grid.rendering.debounceCalculateViewport());\n\t\t\n\t\tgrid.addEventListener('pointerup', this._onMouseUp);\n\t\tgrid.addEventListener('pointerdown', this._onMouseDown);\n\t\t// grid.addEventListener('pointermove', this._onMouseMove);\n\t\tconst debounceMouseMove = debounce(this._onMouseMove, 20, {maxWait: 50, isImmediate: true});\n\t\tgrid.addEventListener('pointermove', debounceMouseMove);\n\n\t\tgrid.addEventListener('mouseleave', this._onMouseLeave);\n\n\t\t// table event handlers\n\t\tgrid.table.addEventListener('rendercells', this._onRender);\n\t\t\n\t\t// selector event handlers\n\t\tgrid.selector.addEventListener('grid.selector.autofill', this._onAutofill);\n\t\tgrid.selector.addEventListener('grid.selector.move', this._onSelectorMove);\n\n\t\t// editing event handlers\n\t\tgrid.addEventListener('dblclick', this._onDblClick);\n\t\tgrid.addEventListener('grid.edit', this._onEdit);\n\t}\n\n}"]}
|
package/dist/ui/grid.js
CHANGED
|
@@ -13,7 +13,7 @@ import { createRef, ref } from 'lit/directives/ref.js';
|
|
|
13
13
|
import { styles } from './grid.style';
|
|
14
14
|
import { GridRendering } from './grid.rendering';
|
|
15
15
|
import { GridSelecting } from './grid.selecting';
|
|
16
|
-
import { GridEvent, GridEvents } from './grid.events';
|
|
16
|
+
import { GridErrorEvent, GridEvent, GridEvents } from './grid.events';
|
|
17
17
|
import { GridEditing } from './grid.editing';
|
|
18
18
|
import { GridFiltering } from './grid.filtering';
|
|
19
19
|
import { GridObjects } from './grid.objects';
|
|
@@ -176,8 +176,15 @@ let Grid = class Grid extends LitElement {
|
|
|
176
176
|
}
|
|
177
177
|
async updated(changedProps) {
|
|
178
178
|
dom.setSize(this.table, { w: this.clientWidth, h: this.clientHeight });
|
|
179
|
-
if (changedProps.has('adapter'))
|
|
180
|
-
|
|
179
|
+
if (changedProps.has('adapter')) {
|
|
180
|
+
try {
|
|
181
|
+
await this.initAdapter();
|
|
182
|
+
}
|
|
183
|
+
catch (error) {
|
|
184
|
+
this.logger.error('Error initializing adapter:', error);
|
|
185
|
+
this.dispatchEvent(new GridErrorEvent(error));
|
|
186
|
+
}
|
|
187
|
+
}
|
|
181
188
|
if (this.model) {
|
|
182
189
|
if (this.options)
|
|
183
190
|
this.model.options = this.options;
|
package/dist/ui/grid.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grid.js","sourceRoot":"","sources":["../../src/ui/grid.ts"],"names":[],"mappings":"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","sourcesContent":["import { dom, log, Slider, Sizer, Layout, Menu, Plugins, AnyConstructor, events } from '@omegagrid/core';\nimport { GridModel, GridSource, SelectionModel, Options, initOptions, History, CellRange, TableTheme } from '@omegagrid/grid-core';\nimport { Selector } from './selector';\nimport { CommandManager } from '@omegagrid/commands';\nimport { LitElement, html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { createRef, ref } from 'lit/directives/ref.js';\nimport { Table } from './table';\nimport { GridTooltip as Tooltip } from './tooltip';\nimport { styles } from './grid.style';\nimport { GridRendering } from './grid.rendering';\nimport { GridSelecting } from './grid.selecting';\nimport { GridEvent, GridEvents } from './grid.events';\nimport { GridEditing } from './grid.editing';\nimport { GridFiltering } from './grid.filtering';\nimport { GridObjects } from './grid.objects';\nimport { GridSorting } from './grid.sorting';\nimport { GridMenus } from './grid.menu';\nimport { GridGroup } from './group';\nimport { Comment } from './comment';\nimport { GridAdapter } from '../gridAdapter';\nimport { initGridCommands } from '../commands';\nimport { debounce } from 'ts-debounce';\n\n@customElement('og-grid')\nexport class Grid extends LitElement implements Layout {\n\n\tstatic styles = [styles];\n\n\tprivate tableRef = createRef<Table>();\n\tget table() : Table { return this.tableRef.value }\n\n\tprivate hSliderRef = createRef<Slider>();\n\tget hSlider() { return this.hSliderRef.value }\n\n\tprivate vSliderRef = createRef<Slider>();\n\tget vSlider() { return this.vSliderRef.value }\n\n\tprivate hSizerRef = createRef<Sizer>();\n\tget hSizer() { return this.hSizerRef.value }\n\n\tprivate vSizerRef = createRef<Sizer>();\n\tget vSizer() { return this.vSizerRef.value }\n\n\tprivate selectorRef = createRef<Selector>();\n\tget selector() { return this.selectorRef.value }\n\n\tprivate copySelectorRef = createRef<Selector>();\n\tget copySelector() { return this.copySelectorRef.value }\n\n\tprivate formulaSelectorRef = createRef<Selector>();\n\tget formulaSelector() { return this.formulaSelectorRef.value }\n\n\tprivate contextMenuRef = createRef<Menu>();\n\tget contextMenu() { return this.contextMenuRef.value }\n\n\tprivate tooltipRef = createRef<Tooltip>();\n\tget tooltip() { return this.tooltipRef.value }\n\n\tprivate commentRef = createRef<Comment>();\n\tget comment() { return this.commentRef.value }\n\n\tget designMode() { return this.group ? this.group.designMode : false }\n\n\t@property({type: Object})\n\tmodel: GridModel;\n\n\t@property({type: Object})\n\tadapter: GridAdapter;\n\n\t@property({type: Object})\n\tselection: SelectionModel = new SelectionModel(0, 0);\n\n\t@property({type: Object})\n\toptions: Options = initOptions();\n\n\t@property({type: Object})\n\tlogger: log.Logger = new log.Logger('Ωgrid')\n\n\t@property({type: Number})\n\tzoom = 1;\n\t\n\tgroup: GridGroup;\n\thistory: History;\n\trendering = new GridRendering(this);\n\tselecting = new GridSelecting(this);\n\tevents = new GridEvents(this);\n\tediting = new GridEditing(this);\n\tfiltering = new GridFiltering(this);\n\tsorting = new GridSorting(this);\n\tmenus = new GridMenus(this);\n\tobjects = new GridObjects(this);\n\tcommands = new CommandManager(this);\n\tplugins = new Plugins<Grid>(this);\n\tloading = false;\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback();\n\t\tthis.logger.info('connected');\n\t\tthis.layout();\n\t}\n\n\tdisconnectedCallback() {\n\t\tthis.destroy();\n\t}\n\n\tdestroy() {\n\t\t//dom.remove(this.mouseTooltip);\n\t\tif (this.contextMenu) dom.remove(this.contextMenu);\n\t\tif (this.comment) dom.remove(this.comment);\n\t}\n\n\tasync initAdapter() {\n\t\tthis.adapter.attach(this);\n\t\tif (this.table) this.table.rowOffset = 0;\n\t\tthis.dispatchEvent(new GridEvent('beforeLoad', {grid: this}));\n\t\tconst columns = await this.adapter.getColumns();\n\t\tconst requestFilters = this.rendering.getAdapterRequestFilters();\n\t\tconst rows = await this.adapter.getRows(requestFilters);\n\t\trequestFilters.rows = rows;\n\t\tconst cells = await this.adapter.getCells(requestFilters);\n\t\tconst options = initOptions(await this.adapter.getOptions(), this.options);\n\t\tconst sparklines = await this.adapter.getSparklines();\n\t\tconst comments = await this.adapter.getComments();\n\t\tconst rules = await this.adapter.getRules();\n\t\tconst styles = await this.adapter.getStyles();\n\t\tthis.setSourceData({\n\t\t\tcolumns,\n\t\t\trows,\n\t\t\tcells,\n\t\t\toptions,\n\t\t\tsparklines,\n\t\t\tcomments,\n\t\t\trules,\n\t\t\tstyles\n\t\t});\n\t\tthis.dispatchEvent(new GridEvent('afterLoad', {grid: this}));\n\t}\n\n\tupdateOptions(options: Partial<Options>) {\n\t\tthis.options = initOptions(options, this.options);\n\t\tthis.requestUpdate();\n\t}\n\n\tprivate _debounceVerticalSlide = debounce(this.events._onVerticalSlide, Slider.SLIDE_DELAY, {isImmediate: true, maxWait: 50});\n\tprivate _debounceHorizontalSlide = debounce(this.events._onHorizontalSlide, Slider.SLIDE_DELAY, {isImmediate: true, maxWait: 50});\n\n\trender = () => html`\n\t\t<og-table ${ref(this.tableRef)} .zoom=\"${this.zoom}\"></og-table>\n\t\t\n\t\t<og-slider ${ref(this.vSliderRef)}\n\t\t\t?hidden=\"${true}\"\n\t\t\tdirection=\"vertical\"\n\t\t\t@slide=\"${this._debounceVerticalSlide}\"\n\t\t\t@slideStart=\"${this.events._onSlideStart}\"\n\t\t\t@slideEnd=\"${this.events._onSlideStop}\">\n\t\t</og-slider>\n\t\t\n\t\t<og-slider ${ref(this.hSliderRef)}\n\t\t\t?hidden=\"${true}\"\n\t\t\tdirection=\"horizontal\"\n\t\t\t@slide=\"${this._debounceHorizontalSlide}\"\n\t\t\t@slideStart=\"${this.events._onSlideStart}\"\n\t\t\t@slideEnd=\"${this.events._onSlideStop}\">\n\t\t</og-slider>\n\t\t\n\t\t<og-sizer ${ref(this.vSizerRef)} orientation=\"vertical\"></og-sizer>\n\t\t\n\t\t<og-sizer ${ref(this.hSizerRef)} orientation=\"horizontal\"></og-sizer>\n\t\t\n\t\t<og-selector ${ref(this.selectorRef)}\n\t\t\t?autofill=\"${this.options.autofill}\"\n\t\t\t?movable=\"${true}\"\n\t\t\t?subselector=\"${true}\">\n\t\t</og-selector>\n\t\t\n\t\t<og-selector ${ref(this.copySelectorRef)}\n\t\t\t?autofill=\"${false}\"\n\t\t\t?movable=\"${false}\"\n\t\t\t?animated=\"${true}\">\n\t\t</og-selector>\n\t\t\n\t\t<og-selector ${ref(this.formulaSelectorRef)}\n\t\t\t?autofill=\"${false}\"\n\t\t\t?movable=\"${false}\"\n\t\t\t?animated=\"${true}\"\n\t\t\tstyle=\"z-index: 110\">\n\t\t</og-selector>\n\t\t\n\t\t<og-menu ${ref(this.contextMenuRef)} style=\"display: none; z-index: 1000\"></og-menu>\n\t\t\n\t\t<og-grid-tooltip ${ref(this.tooltipRef)} style=\"display: none\"></og-grid-tooltip>\n\t\t\n\t\t<og-grid-comment ${ref(this.commentRef)} style=\"display: none\"></og-grid-comment>\n\t`;\n\n\topenCommands() {\n\t\tthis.commands.open();\n\t}\n\n\tcloseCommands() {\n\t\tthis.commands.close();\n\t}\n\n\tasync firstUpdated() {\n\t\tthis.tabIndex = 0;\n\t\tthis.events.init();\n\t\tthis.menus.init();\n\n\t\tawait this.table.updateComplete;\n\t\tthis.logger.info('init');\n\t\tthis.dispatchEvent(new GridEvent('init', {grid: this}));\n\t}\n\n\tasync updated(changedProps: Map<PropertyKey, unknown>) {\n\t\tdom.setSize(this.table, {w: this.clientWidth, h: this.clientHeight});\n\t\tif (changedProps.has('adapter')) this.initAdapter();\n\n\t\tif (this.model) {\n\t\t\tif (this.options) this.model.options = this.options;\n\t\t\tthis.rendering.requireVerticalUpdate = true;\n\t\t\tthis.rendering.requireHorizontalUpdate = true;\n\t\t\tthis.table.model = this.model;\n\t\t\tif (changedProps.has('model')) {\n\t\t\t\tthis.sorting.init();\n\t\t\t\t\n\t\t\t\tif (this.model.options.firstCell) { // TODO: move somewhere else\n\t\t\t\t\tconst cell = CellRange.fromA1(this.model.options.firstCell);\n\t\t\t\t\tthis.table.colOffset = cell.c1;\n\t\t\t\t\tthis.table.rowOffset = cell.r1;\n\t\t\t\t}\n\t\t\t}\n\t\t\tawait this.table.updateComplete;\n\t\t\tthis.rendering.updateSliders();\n\t\t\tthis.rendering.debounceRenderCells();\n\t\t\tinitGridCommands(this);\n\t\t\tthis.dispatchEvent(new GridEvent('loadmodel', {grid: this}));\n\t\t}\n\n\t\tif (changedProps.has('zoom') && (changedProps.get('zoom') || 1) !== (this.zoom || 1)) {\n\t\t\tthis.options.zoom = this.zoom;\n\t\t\tthis.rendering.render(true);\n\t\t}\n\t}\n\n\tinnerLayout() {\n\t\tdom.setSize(this.table, {w: this.clientWidth, h: this.clientHeight});\n\t\tthis.table.requestUpdate();\n\t}\n\n\tdebounceInnerLayout = debounce(this.innerLayout, 100);\n\t\n\tlayout() {\n\t\tif (this.table) this.debounceInnerLayout();\n\t}\n\n\tsetSourceData(data: GridSource) {\n\t\tif (data.options) this.options = initOptions(data.options, this.options);\n\t\tthis.model = new GridModel(data, this.options, this.logger);\n\t}\n\n\twillUpdate(changedProps: Map<PropertyKey, unknown>) {\n\t\tif (changedProps.has('model')) {\n\t\t\tthis.options = initOptions(this.model.options, this.options);\n\t\t\tthis.model.options = this.options;\n\t\t\tthis.history = new History(this.model);\n\t\t\tthis.filtering.init();\n\t\t\tthis.zoom = this.options.zoom || 1;\n\t\t}\n\t}\n\n\tfocus(options?: FocusOptions): void {\n\t\tsuper.focus(options);\n\t\tthis.editing.activeEditor?.focus();\n\t}\n\n\tasync refresh() {\n\t\tif (this.adapter) {\n\t\t\tthis.table.clearHeaderCache();\n\t\t\tthis.table.clearBodyCache();\n\t\t\tawait this.initAdapter();\n\t\t} else {\n\t\t\tawait this.rendering.render(true);\n\t\t}\n\t}\n\n\tcreateEvent<TEvent extends GridEvent>(type: string, args?: Partial<TEvent>, event?: AnyConstructor<TEvent>) {\n\t\tconst EventConstructor = (event ?? GridEvent) as AnyConstructor<TEvent>;\n\t\treturn new EventConstructor(type, {grid: this, ...args});\n\t}\n\n\tdispatchGridEvent<TEvent extends GridEvent>(type: string, args?: Partial<TEvent>, event?: AnyConstructor<TEvent>) {\n\t\tthis.dispatchEvent(this.createEvent(type, args, event));\n\t}\n\n\tgetConnectedGrid(name: string) {\n\t\treturn this.group?.getGrid(name);\n\t}\n\n\tgetSourceData() {\n\t\tconst data = this.model?.getSourceData() ?? {};\n\t\tconst event = new events.SerialzieEvent<GridSource>(data);\n\t\tthis.dispatchEvent(event);\n\t\treturn event.data;\n\t}\n\n\tsetTheme(theme: TableTheme) {\n\t\tthis.model.theme = theme;\n\t\tthis.model.applyTheme(theme, true);\n\t\tthis.refresh();\n\t}\n\n}"]}
|
|
1
|
+
{"version":3,"file":"grid.js","sourceRoot":"","sources":["../../src/ui/grid.ts"],"names":[],"mappings":"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","sourcesContent":["import { dom, log, Slider, Sizer, Layout, Menu, Plugins, AnyConstructor, events } from '@omegagrid/core';\nimport { GridModel, GridSource, SelectionModel, Options, initOptions, History, CellRange, TableTheme } from '@omegagrid/grid-core';\nimport { Selector } from './selector';\nimport { CommandManager } from '@omegagrid/commands';\nimport { LitElement, html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { createRef, ref } from 'lit/directives/ref.js';\nimport { Table } from './table';\nimport { GridTooltip as Tooltip } from './tooltip';\nimport { styles } from './grid.style';\nimport { GridRendering } from './grid.rendering';\nimport { GridSelecting } from './grid.selecting';\nimport { GridErrorEvent, GridEvent, GridEvents } from './grid.events';\nimport { GridEditing } from './grid.editing';\nimport { GridFiltering } from './grid.filtering';\nimport { GridObjects } from './grid.objects';\nimport { GridSorting } from './grid.sorting';\nimport { GridMenus } from './grid.menu';\nimport { GridGroup } from './group';\nimport { Comment } from './comment';\nimport { GridAdapter } from '../gridAdapter';\nimport { initGridCommands } from '../commands';\nimport { debounce } from 'ts-debounce';\n\n@customElement('og-grid')\nexport class Grid extends LitElement implements Layout {\n\n\tstatic styles = [styles];\n\n\tprivate tableRef = createRef<Table>();\n\tget table() : Table { return this.tableRef.value }\n\n\tprivate hSliderRef = createRef<Slider>();\n\tget hSlider() { return this.hSliderRef.value }\n\n\tprivate vSliderRef = createRef<Slider>();\n\tget vSlider() { return this.vSliderRef.value }\n\n\tprivate hSizerRef = createRef<Sizer>();\n\tget hSizer() { return this.hSizerRef.value }\n\n\tprivate vSizerRef = createRef<Sizer>();\n\tget vSizer() { return this.vSizerRef.value }\n\n\tprivate selectorRef = createRef<Selector>();\n\tget selector() { return this.selectorRef.value }\n\n\tprivate copySelectorRef = createRef<Selector>();\n\tget copySelector() { return this.copySelectorRef.value }\n\n\tprivate formulaSelectorRef = createRef<Selector>();\n\tget formulaSelector() { return this.formulaSelectorRef.value }\n\n\tprivate contextMenuRef = createRef<Menu>();\n\tget contextMenu() { return this.contextMenuRef.value }\n\n\tprivate tooltipRef = createRef<Tooltip>();\n\tget tooltip() { return this.tooltipRef.value }\n\n\tprivate commentRef = createRef<Comment>();\n\tget comment() { return this.commentRef.value }\n\n\tget designMode() { return this.group ? this.group.designMode : false }\n\n\t@property({type: Object})\n\tmodel: GridModel;\n\n\t@property({type: Object})\n\tadapter: GridAdapter;\n\n\t@property({type: Object})\n\tselection: SelectionModel = new SelectionModel(0, 0);\n\n\t@property({type: Object})\n\toptions: Options = initOptions();\n\n\t@property({type: Object})\n\tlogger: log.Logger = new log.Logger('Ωgrid')\n\n\t@property({type: Number})\n\tzoom = 1;\n\t\n\tgroup: GridGroup;\n\thistory: History;\n\trendering = new GridRendering(this);\n\tselecting = new GridSelecting(this);\n\tevents = new GridEvents(this);\n\tediting = new GridEditing(this);\n\tfiltering = new GridFiltering(this);\n\tsorting = new GridSorting(this);\n\tmenus = new GridMenus(this);\n\tobjects = new GridObjects(this);\n\tcommands = new CommandManager(this);\n\tplugins = new Plugins<Grid>(this);\n\tloading = false;\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback();\n\t\tthis.logger.info('connected');\n\t\tthis.layout();\n\t}\n\n\tdisconnectedCallback() {\n\t\tthis.destroy();\n\t}\n\n\tdestroy() {\n\t\t//dom.remove(this.mouseTooltip);\n\t\tif (this.contextMenu) dom.remove(this.contextMenu);\n\t\tif (this.comment) dom.remove(this.comment);\n\t}\n\n\tasync initAdapter() {\n\t\tthis.adapter.attach(this);\n\t\tif (this.table) this.table.rowOffset = 0;\n\t\tthis.dispatchEvent(new GridEvent('beforeLoad', {grid: this}));\n\t\tconst columns = await this.adapter.getColumns();\n\t\tconst requestFilters = this.rendering.getAdapterRequestFilters();\n\t\tconst rows = await this.adapter.getRows(requestFilters);\n\t\trequestFilters.rows = rows;\n\t\tconst cells = await this.adapter.getCells(requestFilters);\n\t\tconst options = initOptions(await this.adapter.getOptions(), this.options);\n\t\tconst sparklines = await this.adapter.getSparklines();\n\t\tconst comments = await this.adapter.getComments();\n\t\tconst rules = await this.adapter.getRules();\n\t\tconst styles = await this.adapter.getStyles();\n\t\tthis.setSourceData({\n\t\t\tcolumns,\n\t\t\trows,\n\t\t\tcells,\n\t\t\toptions,\n\t\t\tsparklines,\n\t\t\tcomments,\n\t\t\trules,\n\t\t\tstyles\n\t\t});\n\t\tthis.dispatchEvent(new GridEvent('afterLoad', {grid: this}));\n\t}\n\n\tupdateOptions(options: Partial<Options>) {\n\t\tthis.options = initOptions(options, this.options);\n\t\tthis.requestUpdate();\n\t}\n\n\tprivate _debounceVerticalSlide = debounce(this.events._onVerticalSlide, Slider.SLIDE_DELAY, {isImmediate: true, maxWait: 50});\n\tprivate _debounceHorizontalSlide = debounce(this.events._onHorizontalSlide, Slider.SLIDE_DELAY, {isImmediate: true, maxWait: 50});\n\n\trender = () => html`\n\t\t<og-table ${ref(this.tableRef)} .zoom=\"${this.zoom}\"></og-table>\n\t\t\n\t\t<og-slider ${ref(this.vSliderRef)}\n\t\t\t?hidden=\"${true}\"\n\t\t\tdirection=\"vertical\"\n\t\t\t@slide=\"${this._debounceVerticalSlide}\"\n\t\t\t@slideStart=\"${this.events._onSlideStart}\"\n\t\t\t@slideEnd=\"${this.events._onSlideStop}\">\n\t\t</og-slider>\n\t\t\n\t\t<og-slider ${ref(this.hSliderRef)}\n\t\t\t?hidden=\"${true}\"\n\t\t\tdirection=\"horizontal\"\n\t\t\t@slide=\"${this._debounceHorizontalSlide}\"\n\t\t\t@slideStart=\"${this.events._onSlideStart}\"\n\t\t\t@slideEnd=\"${this.events._onSlideStop}\">\n\t\t</og-slider>\n\t\t\n\t\t<og-sizer ${ref(this.vSizerRef)} orientation=\"vertical\"></og-sizer>\n\t\t\n\t\t<og-sizer ${ref(this.hSizerRef)} orientation=\"horizontal\"></og-sizer>\n\t\t\n\t\t<og-selector ${ref(this.selectorRef)}\n\t\t\t?autofill=\"${this.options.autofill}\"\n\t\t\t?movable=\"${true}\"\n\t\t\t?subselector=\"${true}\">\n\t\t</og-selector>\n\t\t\n\t\t<og-selector ${ref(this.copySelectorRef)}\n\t\t\t?autofill=\"${false}\"\n\t\t\t?movable=\"${false}\"\n\t\t\t?animated=\"${true}\">\n\t\t</og-selector>\n\t\t\n\t\t<og-selector ${ref(this.formulaSelectorRef)}\n\t\t\t?autofill=\"${false}\"\n\t\t\t?movable=\"${false}\"\n\t\t\t?animated=\"${true}\"\n\t\t\tstyle=\"z-index: 110\">\n\t\t</og-selector>\n\t\t\n\t\t<og-menu ${ref(this.contextMenuRef)} style=\"display: none; z-index: 1000\"></og-menu>\n\t\t\n\t\t<og-grid-tooltip ${ref(this.tooltipRef)} style=\"display: none\"></og-grid-tooltip>\n\t\t\n\t\t<og-grid-comment ${ref(this.commentRef)} style=\"display: none\"></og-grid-comment>\n\t`;\n\n\topenCommands() {\n\t\tthis.commands.open();\n\t}\n\n\tcloseCommands() {\n\t\tthis.commands.close();\n\t}\n\n\tasync firstUpdated() {\n\t\tthis.tabIndex = 0;\n\t\tthis.events.init();\n\t\tthis.menus.init();\n\n\t\tawait this.table.updateComplete;\n\t\tthis.logger.info('init');\n\t\tthis.dispatchEvent(new GridEvent('init', {grid: this}));\n\t}\n\n\tasync updated(changedProps: Map<PropertyKey, unknown>) {\n\t\tdom.setSize(this.table, {w: this.clientWidth, h: this.clientHeight});\n\t\tif (changedProps.has('adapter')) {\n\t\t\ttry {\n\t\t\t\tawait this.initAdapter();\n\t\t\t} catch (error) {\n\t\t\t\tthis.logger.error('Error initializing adapter:', error);\n\t\t\t\tthis.dispatchEvent(new GridErrorEvent(error as Error));\n\t\t\t}\n\t\t}\n\n\t\tif (this.model) {\n\t\t\tif (this.options) this.model.options = this.options;\n\t\t\tthis.rendering.requireVerticalUpdate = true;\n\t\t\tthis.rendering.requireHorizontalUpdate = true;\n\t\t\tthis.table.model = this.model;\n\t\t\tif (changedProps.has('model')) {\n\t\t\t\tthis.sorting.init();\n\t\t\t\t\n\t\t\t\tif (this.model.options.firstCell) { // TODO: move somewhere else\n\t\t\t\t\tconst cell = CellRange.fromA1(this.model.options.firstCell);\n\t\t\t\t\tthis.table.colOffset = cell.c1;\n\t\t\t\t\tthis.table.rowOffset = cell.r1;\n\t\t\t\t}\n\t\t\t}\n\t\t\tawait this.table.updateComplete;\n\t\t\tthis.rendering.updateSliders();\n\t\t\tthis.rendering.debounceRenderCells();\n\t\t\tinitGridCommands(this);\n\t\t\tthis.dispatchEvent(new GridEvent('loadmodel', {grid: this}));\n\t\t}\n\n\t\tif (changedProps.has('zoom') && (changedProps.get('zoom') || 1) !== (this.zoom || 1)) {\n\t\t\tthis.options.zoom = this.zoom;\n\t\t\tthis.rendering.render(true);\n\t\t}\n\t}\n\n\tinnerLayout() {\n\t\tdom.setSize(this.table, {w: this.clientWidth, h: this.clientHeight});\n\t\tthis.table.requestUpdate();\n\t}\n\n\tdebounceInnerLayout = debounce(this.innerLayout, 100);\n\t\n\tlayout() {\n\t\tif (this.table) this.debounceInnerLayout();\n\t}\n\n\tsetSourceData(data: GridSource) {\n\t\tif (data.options) this.options = initOptions(data.options, this.options);\n\t\tthis.model = new GridModel(data, this.options, this.logger);\n\t}\n\n\twillUpdate(changedProps: Map<PropertyKey, unknown>) {\n\t\tif (changedProps.has('model')) {\n\t\t\tthis.options = initOptions(this.model.options, this.options);\n\t\t\tthis.model.options = this.options;\n\t\t\tthis.history = new History(this.model);\n\t\t\tthis.filtering.init();\n\t\t\tthis.zoom = this.options.zoom || 1;\n\t\t}\n\t}\n\n\tfocus(options?: FocusOptions): void {\n\t\tsuper.focus(options);\n\t\tthis.editing.activeEditor?.focus();\n\t}\n\n\tasync refresh() {\n\t\tif (this.adapter) {\n\t\t\tthis.table.clearHeaderCache();\n\t\t\tthis.table.clearBodyCache();\n\t\t\tawait this.initAdapter();\n\t\t} else {\n\t\t\tawait this.rendering.render(true);\n\t\t}\n\t}\n\n\tcreateEvent<TEvent extends GridEvent>(type: string, args?: Partial<TEvent>, event?: AnyConstructor<TEvent>) {\n\t\tconst EventConstructor = (event ?? GridEvent) as AnyConstructor<TEvent>;\n\t\treturn new EventConstructor(type, {grid: this, ...args});\n\t}\n\n\tdispatchGridEvent<TEvent extends GridEvent>(type: string, args?: Partial<TEvent>, event?: AnyConstructor<TEvent>) {\n\t\tthis.dispatchEvent(this.createEvent(type, args, event));\n\t}\n\n\tgetConnectedGrid(name: string) {\n\t\treturn this.group?.getGrid(name);\n\t}\n\n\tgetSourceData() {\n\t\tconst data = this.model?.getSourceData() ?? {};\n\t\tconst event = new events.SerialzieEvent<GridSource>(data);\n\t\tthis.dispatchEvent(event);\n\t\treturn event.data;\n\t}\n\n\tsetTheme(theme: TableTheme) {\n\t\tthis.model.theme = theme;\n\t\tthis.model.applyTheme(theme, true);\n\t\tthis.refresh();\n\t}\n\n}"]}
|
package/dist/ui/table.d.ts
CHANGED
|
@@ -38,14 +38,14 @@ export declare class Table extends LitElement {
|
|
|
38
38
|
zoom: number;
|
|
39
39
|
nogrid: boolean;
|
|
40
40
|
renderAll: boolean;
|
|
41
|
-
private
|
|
42
|
-
get table(): HTMLTableElement;
|
|
43
|
-
private colgroupRef;
|
|
44
|
-
get colgroup(): HTMLElement;
|
|
45
|
-
private theadRef;
|
|
41
|
+
private _thead;
|
|
46
42
|
get thead(): HTMLElement;
|
|
47
|
-
private
|
|
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;
|
package/dist/ui/table.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../src/ui/table.ts"],"names":[],"mappings":"AACA,OAAO,EAAO,QAAQ,EAAmC,MAAM,iBAAiB,CAAC;AACjF,OAAO,EAAE,UAAU,EAAQ,MAAM,KAAK,CAAC;
|
|
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
|
-
|
|
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
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
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; }
|
package/dist/ui/table.js.map
CHANGED
|
@@ -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.
|
|
3
|
+
"version": "0.9.14",
|
|
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.
|
|
39
|
-
"@omegagrid/core": "^0.9.
|
|
40
|
-
"@omegagrid/grid-core": "^0.9.
|
|
41
|
-
"@omegagrid/localize": "^0.9.
|
|
42
|
-
"@omegagrid/tabs": "^0.9.
|
|
43
|
-
"@omegagrid/tree": "^0.9.
|
|
38
|
+
"@omegagrid/commands": "^0.9.14",
|
|
39
|
+
"@omegagrid/core": "^0.9.14",
|
|
40
|
+
"@omegagrid/grid-core": "^0.9.14",
|
|
41
|
+
"@omegagrid/localize": "^0.9.14",
|
|
42
|
+
"@omegagrid/tabs": "^0.9.14",
|
|
43
|
+
"@omegagrid/tree": "^0.9.14",
|
|
44
44
|
"@stdlib/stats": "^0.0.13",
|
|
45
45
|
"date-fns": "^3.2.0",
|
|
46
46
|
"lit": "^3.1.1",
|