@omegagrid/grid 0.7.13 → 0.7.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/group.d.ts.map +1 -1
- package/dist/ui/group.js +6 -0
- package/dist/ui/group.js.map +1 -1
- package/dist/ui/table.d.ts.map +1 -1
- package/dist/ui/table.js +10 -3
- package/dist/ui/table.js.map +1 -1
- package/package.json +7 -7
package/dist/ui/group.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"group.d.ts","sourceRoot":"","sources":["../../src/ui/group.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAC3F,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACtF,OAAO,EAAE,SAAS,EAAe,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAE5C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAG9D,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAQ1C,MAAM,MAAM,YAAY,GAAG;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,IAAI,CAAC,EAAE,OAAO,CAAC;CACf,CAAA;AAOD,qBAAa,cAAe,SAAQ,KAAK;gBAC5B,IAAI,EAAE,MAAM;CAGxB;AAED,qBACa,SAAU,SAAQ,UAAW,YAAW,MAAM;IAE1D,MAAM,CAAC,MAAM,0BAYX;IAGF,OAAO,eAAmB;IAG1B,KAAK,EAAE,UAAU,CAAC;IAGlB,cAAc,EAAE,sBAAsB,CAAC;IAGvC,UAAU,UAAS;IAGnB,IAAI,SAAK;IAGT,WAAW,EAAE,gBAAgB,CAAS;IAGtC,MAAM,EAAE,GAAG,CAAC,MAAM,CAA+B;IAGjD,KAAK,oBAA2B;IAGhC,SAAS,EAAE,iBAAiB,CAAC;IAE7B,OAAO,CAAC,gBAAgB,CAA8B;IACtD,IAAI,aAAa,kBAAyC;IAE1D,OAAO,CAAC,WAAW,CAAO;IAC1B,IAAI,UAAU,SAA8B;IAE5C,OAAO,CAAC,SAAS,CAA2C;IAC5D,QAAQ,CAAC,OAAO,gBAAqB;IAErC,IAAI,QAAQ,aAA+F;IAE3G,OAAO,CAAC,gBAAgB,CAAc;IACtC,IAAI,eAAe,SAAmC;IACtD,IAAI,aAAa,YAA0C;IAE3D,SAAS,UAAS;IAGlB,6EAA6E;IAC7E,IAAI,UAAU,gBASb;IAED,gBAAgB,CAAC,IAAI,EAAE,IAAI;IAI3B,cAAc;IAMd,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,UAAO;IAW/C,WAAW,CAAC,IAAI,EAAE,MAAM;IAMxB,UAAU;IAMV,aAAa;IAMb,aAAa;IAMb,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAW5C,UAAU;IAaV,eAAe;IAIf,cAAc;;IAsBd,WAAW,CAAC,IAAI,EAAE,MAAM;IAMxB,cAAc,CAAC,IAAI,EAAE,MAAM;IAM3B,iBAAiB;IAKjB,MAAM;IAIN,aAAa,CAAC,UAAU,EAAE,gBAAgB;IAa1C,aAAa;IAMb,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC;IAM7C,OAAO,CAAC,IAAI,EAAE,MAAM;IAIpB,cAAc,CAAC,KAAK,EAAE,SAAS;IAI/B,aAAa,GAAI,GAAG,SAAS,UAK5B;IAED,UAAU,GAAI,IAAI,WAAW,mBAkB1B;IAEH,YAAY,GAAI,GAAG,QAAQ,UASzB;IAEF,SAAS,GAAI,GAAG,QAAQ,UAItB;IAEF,gBAAgB;IAKhB,eAAe,aAGd;IAED,gBAAgB,aAIf;IAED,MAAM,6CAqBJ;IAEF;;OAEG;IACH,SAAS;
|
|
1
|
+
{"version":3,"file":"group.d.ts","sourceRoot":"","sources":["../../src/ui/group.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAC3F,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACtF,OAAO,EAAE,SAAS,EAAe,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAE5C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAG9D,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAQ1C,MAAM,MAAM,YAAY,GAAG;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,IAAI,CAAC,EAAE,OAAO,CAAC;CACf,CAAA;AAOD,qBAAa,cAAe,SAAQ,KAAK;gBAC5B,IAAI,EAAE,MAAM;CAGxB;AAED,qBACa,SAAU,SAAQ,UAAW,YAAW,MAAM;IAE1D,MAAM,CAAC,MAAM,0BAYX;IAGF,OAAO,eAAmB;IAG1B,KAAK,EAAE,UAAU,CAAC;IAGlB,cAAc,EAAE,sBAAsB,CAAC;IAGvC,UAAU,UAAS;IAGnB,IAAI,SAAK;IAGT,WAAW,EAAE,gBAAgB,CAAS;IAGtC,MAAM,EAAE,GAAG,CAAC,MAAM,CAA+B;IAGjD,KAAK,oBAA2B;IAGhC,SAAS,EAAE,iBAAiB,CAAC;IAE7B,OAAO,CAAC,gBAAgB,CAA8B;IACtD,IAAI,aAAa,kBAAyC;IAE1D,OAAO,CAAC,WAAW,CAAO;IAC1B,IAAI,UAAU,SAA8B;IAE5C,OAAO,CAAC,SAAS,CAA2C;IAC5D,QAAQ,CAAC,OAAO,gBAAqB;IAErC,IAAI,QAAQ,aAA+F;IAE3G,OAAO,CAAC,gBAAgB,CAAc;IACtC,IAAI,eAAe,SAAmC;IACtD,IAAI,aAAa,YAA0C;IAE3D,SAAS,UAAS;IAGlB,6EAA6E;IAC7E,IAAI,UAAU,gBASb;IAED,gBAAgB,CAAC,IAAI,EAAE,IAAI;IAI3B,cAAc;IAMd,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,UAAO;IAW/C,WAAW,CAAC,IAAI,EAAE,MAAM;IAMxB,UAAU;IAMV,aAAa;IAMb,aAAa;IAMb,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAW5C,UAAU;IAaV,eAAe;IAIf,cAAc;;IAsBd,WAAW,CAAC,IAAI,EAAE,MAAM;IAMxB,cAAc,CAAC,IAAI,EAAE,MAAM;IAM3B,iBAAiB;IAKjB,MAAM;IAIN,aAAa,CAAC,UAAU,EAAE,gBAAgB;IAa1C,aAAa;IAMb,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC;IAM7C,OAAO,CAAC,IAAI,EAAE,MAAM;IAIpB,cAAc,CAAC,KAAK,EAAE,SAAS;IAI/B,aAAa,GAAI,GAAG,SAAS,UAK5B;IAED,UAAU,GAAI,IAAI,WAAW,mBAkB1B;IAEH,YAAY,GAAI,GAAG,QAAQ,UASzB;IAEF,SAAS,GAAI,GAAG,QAAQ,UAItB;IAEF,gBAAgB;IAKhB,eAAe,aAGd;IAED,gBAAgB,aAIf;IAED,MAAM,6CAqBJ;IAEF;;OAEG;IACH,SAAS;CAiBT"}
|
package/dist/ui/group.js
CHANGED
|
@@ -283,6 +283,12 @@ let GridGroup = class GridGroup extends LitElement {
|
|
|
283
283
|
defaultContainer = container;
|
|
284
284
|
modelNames.delete(item.id);
|
|
285
285
|
});
|
|
286
|
+
defaultContainer = defaultContainer || this.containerModel;
|
|
287
|
+
defaultContainer.items = defaultContainer.items || [];
|
|
288
|
+
if (!defaultContainer.items.length)
|
|
289
|
+
defaultContainer.items.push({});
|
|
290
|
+
if (!defaultContainer.items[0].tabs)
|
|
291
|
+
defaultContainer.items[0].tabs = [];
|
|
286
292
|
const containerItem = defaultContainer.items.find(item => item.container == null && item.tabs != null);
|
|
287
293
|
modelNames.forEach(name => containerItem.tabs.push({ id: name, title: name }));
|
|
288
294
|
}
|
package/dist/ui/group.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"group.js","sourceRoot":"","sources":["../../src/ui/group.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,GAAG,EAAuB,OAAO,EAAoB,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAC3F,OAAO,EAA+B,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACtF,OAAO,EAAE,SAAS,EAAwB,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGlD,OAAO,EAAE,QAAQ,EAAiB,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAGhE,MAAM,eAAe,GAAe;IACnC,OAAO,EAAE,EAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAC;CACjD,CAAC;AAEF,MAAM,gBAAgB,GAAG,GAAG,EAAE,CAAC,IAAI,SAAS,CAAC,eAAe,CAAC,CAAC;AAQ9D,MAAM,eAAe,GAAiB;IACrC,aAAa,EAAE,IAAI;IACnB,cAAc,EAAE,KAAK;CACrB,CAAA;AAED,MAAM,OAAO,cAAe,SAAQ,KAAK;IACxC,YAAY,IAAY;QACvB,KAAK,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC;IAC5B,CAAC;CACD;AAGM,IAAM,SAAS,GAAf,MAAM,SAAU,SAAQ,UAAU;IA4CxC,IAAI,aAAa,KAAK,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAA,CAAC,CAAC;IAG1D,IAAI,UAAU,KAAK,OAAO,IAAI,CAAC,WAAW,CAAA,CAAC,CAAC;IAK5C,IAAI,QAAQ,KAAK,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAA,CAAC,CAAC;IAG3G,IAAI,eAAe,KAAK,OAAO,IAAI,CAAC,gBAAgB,CAAA,CAAC,CAAC;IACtD,IAAI,aAAa,KAAK,OAAO,IAAI,CAAC,eAAe,IAAI,IAAI,CAAA,CAAC,CAAC;IAK3D,6EAA6E;IAC7E,IAAI,UAAU;QACb,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAC;QACtC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YAC9B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAY,CAAC,CAAC;YAC3C,IAAI,CAAC;gBAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QACH,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CACxC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CACrD,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC;IAED,gBAAgB,CAAC,IAAU;QAC1B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAC9B,CAAC;IAED,cAAc;QACb,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE,OAAO;QAChC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,YAAY,CAAC,IAAY,EAAE,aAAa,GAAG,IAAI;QAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACjC,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,IAAI,IAAI;YAAE,OAAO;QACjD,IAAI,IAAI,CAAC,UAAU,IAAI,aAAa;YAAE,IAAI,CAAC,aAAa,CAAC,IAAI,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC;QAC3F,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC9B,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,CAAC;QACpC,IAAI,aAAa;YAAE,IAAI,CAAC,aAAa,CAAC,IAAI,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;IACvE,CAAC;IAED,WAAW,CAAC,IAAY;QACvB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACzB,IAAI,IAAI,CAAC,WAAW;gBAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,UAAU;QACT,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACzB,IAAI,IAAI,CAAC,WAAW;gBAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAC7C,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,aAAa;QACZ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACzB,IAAI,IAAI,CAAC,WAAW;gBAAE,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;QACrD,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,aAAa;QACZ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACzB,IAAI,IAAI,CAAC,WAAW;gBAAE,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;QACrD,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,OAAe,EAAE,OAAe;QAC3C,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,UAAU,OAAO,kBAAkB,CAAC,CAAC;QAClF,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;YACjD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACpC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,EAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAC,CAAC,CAAC;QACvE,IAAI,CAAC,UAAU,EAAE,CAAC;IACnB,CAAC;IAED,UAAU;QACT,uBAAuB;QACvB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YAC9B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAY,CAAC,CAAC;YAC3C,IAAI,CAAC,CAAC;gBAAE,OAAO;YACf,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC;YAChB,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC;YACzB,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC;YAC3D,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;QAC/C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC;IAC9B,CAAC;IAED,eAAe;QACd,IAAI,CAAC,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,CAAC;IACjD,CAAC;IAED,cAAc;QACb,IAAI,IAAI,CAAC,aAAa;YAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IACrE,CAAC;IAED;QACC,KAAK,EAAE,CAAC;QAtIT,YAAO,GAAG,eAAe,CAAC;QAS1B,eAAU,GAAG,KAAK,CAAC;QAGnB,SAAI,GAAG,CAAC,CAAC;QAGT,gBAAW,GAAqB,KAAK,CAAC;QAGtC,WAAM,GAAe,IAAI,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;QAGjD,UAAK,GAAG,IAAI,GAAG,EAAgB,CAAC;QAKxB,qBAAgB,GAAG,SAAS,EAAiB,CAAC;QAM9C,cAAS,GAAG,IAAI,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;QACnD,YAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QAI7B,qBAAgB,GAAS,IAAI,CAAC;QAItC,cAAS,GAAG,KAAK,CAAC;QAoKlB,kBAAa,GAAG,CAAC,CAAY,EAAE,EAAE;YAChC,IAAI,CAAC,CAAC,CAAC,IAAI;gBAAE,OAAO;YACpB,IAAI,IAAI,CAAC,aAAa;gBAAE,OAAO;YAC/B,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC3C,IAAI,CAAC,cAAc,EAAE,CAAC;QACvB,CAAC,CAAA;QAED,eAAU,GAAG,CAAC,EAAe,EAAE,EAAE,CAAC,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE;YAC7D,MAAM,IAAI,GAAG,EAAY,CAAC;YAC1B,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,IAAI,EAAE,CAAC;gBACV,OAAO,CAAC,IAAI,CAAC,CAAC;gBACd,OAAO;YACR,CAAC;YAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC;YAC/F,KAAK,CAAC,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC;YACpC,IAAI,GAAG,GAAG,CAAC,aAAa,CAAO,SAAS,CAAC,CAAC;YAC1C,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;YAC3B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;YAC7B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACtB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACjC,OAAO,CAAC,IAAI,CAAC,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,iBAAY,GAAG,CAAC,CAAW,EAAE,EAAE;YAC9B,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAY,CAAC,CAAC;gBAChD,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,EAAE,CAAC;oBAC9B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;oBACzC,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,mDAAmD;oBACpG,IAAI,CAAC,cAAc,EAAE,CAAC;gBACvB,CAAC;YACF,CAAC;QACF,CAAC,CAAC;QAEF,cAAS,GAAG,CAAC,CAAW,EAAE,EAAE;YAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC;YACjD,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS;gBAAE,OAAO;YAC/B,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAC,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAC,CAAC,CAAC;QAC5D,CAAC,CAAC;QAOF,oBAAe,GAAG,GAAG,EAAE;YACtB,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC5C,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC;QACpC,CAAC,CAAA;QAED,qBAAgB,GAAG,GAAG,EAAE;YACvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,gCAAgC;YAChC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM;gBAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC9E,CAAC,CAAA;QAED,WAAM,GAAG,GAAG,EAAE,CAAC,IAAI,CAAA;;oBAEA,IAAI;iBACP,IAAI;gBACL,KAAK;mBACF,IAAI,CAAC,WAAW;kBACjB,IAAI,CAAC,YAAY;eACpB,IAAI,CAAC,SAAS;YACjB,IAAI,CAAC,gBAAgB;uBACV,IAAI,CAAC,UAAU;aACzB,IAAI,CAAC,cAAc;;;IAG5B,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAA;kBACnB,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC;;iBAE3B,IAAI,CAAC,QAAQ;eACf,IAAI;qBACE,IAAI,CAAC,eAAe;;GAEtC,CAAC,CAAC,CAAC,EAAE;EACN,CAAC;QAvJD,IAAI,CAAC,KAAK,GAAG,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,cAAc,GAAG,IAAI,sBAAsB,CAAC;YAChD,KAAK,EAAE,CAAC;oBACP,IAAI,EAAE,IAAI;oBACV,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;wBACpD,EAAE,EAAE,IAAI;wBACR,KAAK,EAAE,IAAI;qBACX,CAAC,CAAC;iBACH,CAAC;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAClE,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IACnE,CAAC;IAED,WAAW,CAAC,IAAY;QACvB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,eAAe,EAAE,CAAC;IACxB,CAAC;IAED,cAAc,CAAC,IAAY;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAC,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAC,EAAE,IAAI,CAAC,CAAC;QACtE,IAAI,CAAC,eAAe,EAAE,CAAC;IACxB,CAAC;IAED,iBAAiB;QAChB,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;IACnB,CAAC;IAED,MAAM;QACL,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;IAC1B,CAAC;IAED,aAAa,CAAC,UAA4B;QACzC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;QACxC,qFAAqF;QACrF,IAAI,CAAC,cAAc,GAAG,IAAI,sBAAsB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAEpE,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC7C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9D,CAAC;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;IAClB,CAAC;IAED,aAAa;QACZ,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,EAAsB,CAAC;QAC5D,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC;QAClD,OAAO,IAAI,CAAC;IACb,CAAC;IAED,UAAU,CAAC,KAAkC;QAC5C,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,IAAI,CAAC,UAAU,EAAE,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,GAAG,IAAI,UAAU,EAAE,CAAC;QAC/C,IAAI,CAAC,UAAU,EAAE,CAAC;IACnB,CAAC;IAED,OAAO,CAAC,IAAY;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,cAAc,CAAC,KAAgB;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IA8CD,gBAAgB;QACf,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,IAAI,CAAC,UAAU;YAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;IACvG,CAAC;IAoCD;;OAEG;IACH,SAAS;QACR,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7D,IAAI,gBAAgB,GAA2B,IAAI,CAAC;QACpD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE;YAC5C,IAAI,gBAAgB,IAAI,IAAI;gBAAE,gBAAgB,GAAG,SAAS,CAAC;YAC3D,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAY,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QACH,MAAM,aAAa,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;QACvG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC;IAC9E,CAAC;;AA5TM,gBAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;EAYlB,AAZY,CAYX;AAGF;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;0CACC;AAG1B;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;wCACP;AAGlB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;iDACc;AAGvC;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAC,CAAC;6CACP;AAGnB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;uCAChB;AAGT;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;8CACF;AAGtC;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;yCACwB;AAGjD;IADC,KAAK,EAAE;wCACwB;AAGhC;IADC,KAAK,CAAC,sBAAsB,CAAC;4CACD;AAzCjB,SAAS;IADrB,aAAa,CAAC,cAAc,CAAC;GACjB,SAAS,CAgUrB","sourcesContent":["import { dom, Layout, ComponentId, Plugins, VerticalPosition, log } from '@omegagrid/core';\nimport { TabSplitContainer, TabEvent, TabSplitContainerModel } from '@omegagrid/tabs';\nimport { GridModel, GridSource, Options } from '@omegagrid/grid-core';\nimport { LitElement, html, css } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { GroupModel } from '@omegagrid/grid-core';\nimport { Grid } from './grid';\nimport { GroupModelSource } from '../types';\nimport { Commands, CommandWindow } from '@omegagrid/commands';\nimport { createRef, ref } from 'lit-html/directives/ref.js';\nimport { createGroupCommands } from '../commands/groupCommands';\nimport { GridEvent } from './grid.events';\n\nconst emptyGridSource: GridSource = {\n\toptions: {rows: 100, columns: 20, editable: true}\n};\n\nconst createEmptyModel = () => new GridModel(emptyGridSource);\n\nexport type GroupOptions = {\n\tcommandWindow?: boolean;\n\tshowHiddenTabs?: boolean;\n\tgrid?: Options;\n}\n\nconst DEFAULT_OPTIONS: GroupOptions = {\n\tcommandWindow: true,\n\tshowHiddenTabs: false,\n}\n\nexport class GridGroupEvent extends Event {\n\tconstructor(type: string) {\n\t\tsuper(`gridgroup.${type}`);\n\t}\n}\n\n@customElement('og-gridgroup')\nexport class GridGroup extends LitElement implements Layout {\n\n\tstatic styles = css`\n\t\t* {\n\t\t\tbox-sizing: border-box;\n\t\t}\n\n\t\t:host {\n\t\t\tdisplay: block;\n\t\t}\n\n\t\tog-tabsplitcontainer {\n\t\t\theight: 100%;\n\t\t}\n\t`;\n\n\t@property({type: Object})\n\toptions = DEFAULT_OPTIONS;\n\n\t@property({type: Object})\n\tmodel: GroupModel;\n\n\t@property({type: Object})\n\tcontainerModel: TabSplitContainerModel;\n\n\t@property({type: Boolean})\n\tdesignMode = false;\n\n\t@property({type: Number})\n\tzoom = 1;\n\n\t@property({type: String, reflect: true})\n\ttabPosition: VerticalPosition = 'top';\n\n\t@property({type: Object})\n\tlogger: log.Logger = new log.Logger('ΩgridGroup')\n\n\t@state()\n\tgrids = new Map<string, Grid>();\n\t\n\t@query('og-tabsplitcontainer')\n\tcontainer: TabSplitContainer;\n\n\tprivate commandWindowRef = createRef<CommandWindow>();\n\tget commandWindow() { return this.commandWindowRef.value }\n\t\n\tprivate _activeGrid: Grid;\n\tget activeGrid() { return this._activeGrid }\n\t\n\tprivate _commands = new Commands(createGroupCommands(this));\n\treadonly plugins = new Plugins(this);\n\n\tget commands() { return this.activeGrid ? this._commands.merge(this.activeGrid.commands) : this._commands }\n\n\tprivate _formulaModeGrid: Grid = null;\n\tget formulaModeGrid() { return this._formulaModeGrid }\n\tget isFormulaMode() { return this.formulaModeGrid != null }\n\n\t_isLoaded = false;\n\n\n\t/** Returns grid data models in order they are displayed within the layout */\n\tget gridModels() {\n\t\tconst ord = new Map<string, number>();\n\t\tthis.containerModel.walk(tab => {\n\t\t\tconst m = this.model.get(tab.id as string);\n\t\t\tif (m) ord.set(m.name, ord.size);\n\t\t});\n\t\treturn Array.from(this.model.models).sort(\n\t\t\t(a, b) => (ord.get(a[0]) ?? 0) - (ord.get(b[0]) ?? 0)\n\t\t).map(([_, m]) => m);\n\t}\n\n\tstartFormulaMode(grid: Grid) {\n\t\tthis._formulaModeGrid = grid;\n\t}\n\n\tendFormulaMode() {\n\t\tif (!this.isFormulaMode) return;\n\t\tthis._formulaModeGrid = null;\n\t\tthis.grids.forEach(grid => grid.editing.endFormulaMode(false));\n\t}\n\n\tactivateGrid(name: string, dispatchEvent = true) {\n\t\tconst grid = this.grids.get(name)\n\t\tif (!grid) return;\n\t\tif (this.activeGrid?.model?.name == name) return;\n\t\tif (this.activeGrid && dispatchEvent) this.dispatchEvent(new GridGroupEvent('deactivate'));\n\t\tthis._activeGrid = grid;\n\t\tthis.container.activate(name);\n\t\tsetTimeout(() => grid.focus(), 100);\n\t\tif (dispatchEvent) this.dispatchEvent(new GridGroupEvent('activate'));\n\t}\n\n\tpreviewZoom(zoom: number) {\n\t\tthis.grids.forEach(grid => {\n\t\t\tif (grid.isConnected) grid.table.previewZoom(zoom);\n\t\t});\n\t}\n\n\tupdateZoom() {\n\t\tthis.grids.forEach(grid => {\n\t\t\tif (grid.isConnected) grid.zoom = this.zoom;\n\t\t});\n\t}\n\n\thideSelectors() {\n\t\tthis.grids.forEach(grid => {\n\t\t\tif (grid.isConnected) grid.selecting.hideSelector();\n\t\t});\n\t}\n\n\tshowSelectors() {\n\t\tthis.grids.forEach(grid => {\n\t\t\tif (grid.isConnected) grid.selecting.showSelector();\n\t\t});\n\t}\n\n\trenameSheet(oldName: string, newName: string) {\n\t\tif (this.model.has(newName)) throw new Error(`Sheet '${newName}' already exists`);\n\t\tif (this.grids.has(oldName)) {\n\t\t\tthis.grids.set(newName, this.grids.get(oldName));\n\t\t\tthis.grids.delete(oldName);\n\t\t}\n\t\tthis.model.rename(oldName, newName);\n\t\tthis.container.model.updateTab(oldName, {id: newName, title: newName});\n\t\tthis.updateTabs();\n\t}\n\n\tupdateTabs() {\n\t\t// sync tabs with model\n\t\tthis.containerModel.walk(tab => {\n\t\t\tconst m = this.model.get(tab.id as string);\n\t\t\tif (!m) return;\n\t\t\ttab.id = m.name;\n\t\t\ttab.color = m.tab?.color;\n\t\t\ttab.hidden = !this.options.showHiddenTabs && m.tab?.hidden;\n\t\t\ttab.icon = m.tab?.hidden ? 'eye-slash' : null;\n\t\t});\n\t\tthis.container?.updateTabs();\n\t}\n\n\tupdateContainer() {\n\t\tthis.container?.splitContainer?.requestUpdate();\n\t}\n\n\tupdateCommands() {\n\t\tif (this.commandWindow) this.commandWindow.commands = this.commands;\n\t}\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.model = new GroupModel();\n\t\tthis.model.add(createEmptyModel());\n\t\tthis.containerModel = new TabSplitContainerModel({\n\t\t\titems: [{\n\t\t\t\tsize: null,\n\t\t\t\ttabs: Array.from(this.model.models).map(([name]) => ({\n\t\t\t\t\tid: name,\n\t\t\t\t\ttitle: name\n\t\t\t\t}))\n\t\t\t}]\n\t\t});\n\n\t\tthis.addEventListener('grid.selector.select', this._onGridSelect);\n\t\tthis.addEventListener('grid.object.activate', this._onGridSelect);\n\t}\n\n\tdeleteModel(name: string) {\n\t\tthis.model.remove(name);\n\t\tthis.containerModel.removeTab(name);\n\t\tthis.updateContainer();\n\t}\n\n\tduplicateModel(name: string) {\n\t\tconst model = this.model.duplicate(name);\n\t\tthis.containerModel.addTab({id: model.name, title: model.name}, name);\n\t\tthis.updateContainer();\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback();\n\t\tthis.tabIndex = 0;\n\t}\n\n\tlayout() {\n\t\tthis.container?.layout();\n\t}\n\n\tsetSourceData(sourceData: GroupModelSource) {\n\t\tthis.grids.clear();\n\t\tthis.model = new GroupModel(sourceData);\n\t\t//sourceData.models.forEach(src => this.model.get(src.name).tabColor = src.tabColor);\n\t\tthis.containerModel = new TabSplitContainerModel(sourceData.layout);\n\n\t\tif (this.model.errors.length && this.logger) {\n\t\t\tthis.model.errors.forEach(e => this.logger.error(e.message));\n\t\t}\n\n\t\tthis.fixLayout();\n\t}\n\n\tgetSourceData() {\n\t\tconst data = this.model.getSourceData() as GroupModelSource;\n\t\tdata.layout = this.containerModel.getSourceData();\n\t\treturn data;\n\t}\n\n\twillUpdate(props: Map<PropertyKey, undefined>) {\n\t\tif (props.has('zoom')) this.updateZoom();\n\t\tif (!this.model) this.model = new GroupModel();\n\t\tthis.updateTabs();\n\t}\n\n\tgetGrid(name: string) {\n\t\treturn this.grids.get(name);\n\t}\n\n\tgetGridByModel(model: GridModel) {\n\t\treturn this.getGrid(model.name);\n\t}\n\n\t_onGridSelect = (e: GridEvent) => {\n\t\tif (!e.grid) return;\n\t\tif (this.isFormulaMode) return;\n\t\tthis.activateGrid(e.grid.model.name, true);\t\t\n\t\tthis.updateCommands();\n\t}\n\n\tcreateGrid = (id: ComponentId) => new Promise<Grid>(resolve => {\n\t\tconst name = id as string;\n\t\tlet grid = this.grids.get(name);\n\t\tif (grid) {\n\t\t\tresolve(grid);\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tconst model = this.model.has(name) ? this.model.get(name) : this.model.add(createEmptyModel());\n\t\tmodel.options.commandWindow = false;\n\t\tgrid = dom.createElement<Grid>('og-grid');\n\t\tgrid.style.height = '100%';\n\t\tgrid.model = model;\n\t\tgrid.options = model.options;\n\t\tgrid.group = this;\n\t\tgrid.zoom = this.zoom;\n\t\tthis.grids.set(model.name, grid);\n\t\tresolve(grid);\n\t});\n\n\t_onTabSelect = (e: TabEvent) => {\n\t\tif (e.tab && this._isLoaded) {\n\t\t\tconst grid = this.grids.get(e.tab.id as string);\n\t\t\tif (this._activeGrid != grid) {\n\t\t\t\tthis.activateGrid(grid.model.name, true);\n\t\t\t\tsetTimeout(() => this._activeGrid.focus(), 100); // TODO - figure out how to do this without timeout\n\t\t\t\tthis.updateCommands();\n\t\t\t}\n\t\t}\n\t};\n\n\t_onTabAdd = (e: TabEvent) => {\n\t\tconst model = this.model.add(createEmptyModel());\n\t\tif (!e.tabs?.container) return;\n\t\te.tabs.container.open({id: model.name, title: model.name});\n\t};\n\n\tregisterCommands() {\n\t\tthis.commands.removeSection('grid');\n\t\tif (this.activeGrid) this.activeGrid.commands.sections.forEach(c => this.commands.registerSection(c));\n\t}\n\n\t_onCommandsOpen = () => {\n\t\tthis.commandWindow.commands = this.commands;\n\t\tthis.commandWindow.requestUpdate();\n\t}\n\t\n\t_onContainerLoad = () => {\n\t\tthis._isLoaded = true;\n\t\t// wait for grid to be connected\n\t\tif (this.gridModels.length) this.activateGrid(this.gridModels[0].name, true);\n\t}\n\n\trender = () => html`\n\t\t<og-tabsplitcontainer\n\t\t\t?singleActive=\"${true}\"\n\t\t\t?addButton=\"${true}\"\n\t\t\t?closable=\"${false}\"\n\t\t\t.tabPosition=\"${this.tabPosition}\"\n\t\t\t@tab.select=\"${this._onTabSelect}\"\n\t\t\t@tab.add=\"${this._onTabAdd}\"\n\t\t\t@load=\"${this._onContainerLoad}\"\n\t\t\t.createComponent=\"${this.createGrid}\"\n\t\t\t.model=\"${this.containerModel}\">\n\t\t</og-tabsplitcontainer>\n\n\t\t${this.options.commandWindow ? html`\n\t\t\t<og-commands ${ref(this.commandWindowRef)}\n\t\t\t\tstyle=\"display: none\"\n\t\t\t\t.commands=\"${this.commands}\"\n\t\t\t\t.target=\"${this}\"\n\t\t\t\t@command.open=\"${this._onCommandsOpen}\">\n\t\t\t</og-commands>\n\t\t` : ''}\n\t`;\n\n\t/**\n\t * Adds tabs for grid models missing in layout definition.\n\t */\n\tfixLayout() {\n\t\tconst modelNames = new Set<string>();\n\t\tthis.model.models.forEach((_, name) => modelNames.add(name));\n\t\tlet defaultContainer: TabSplitContainerModel = null;\n\t\tthis.containerModel.walk((item, container) => {\n\t\t\tif (defaultContainer == null) defaultContainer = container;\n\t\t\tmodelNames.delete(item.id as string);\n\t\t});\n\t\tconst containerItem = defaultContainer.items.find(item => item.container == null && item.tabs != null);\n\t\tmodelNames.forEach(name => containerItem.tabs.push({id: name, title: name}));\n\t}\n\n}"]}
|
|
1
|
+
{"version":3,"file":"group.js","sourceRoot":"","sources":["../../src/ui/group.ts"],"names":[],"mappings":"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","sourcesContent":["import { dom, Layout, ComponentId, Plugins, VerticalPosition, log } from '@omegagrid/core';\nimport { TabSplitContainer, TabEvent, TabSplitContainerModel } from '@omegagrid/tabs';\nimport { GridModel, GridSource, Options } from '@omegagrid/grid-core';\nimport { LitElement, html, css } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { GroupModel } from '@omegagrid/grid-core';\nimport { Grid } from './grid';\nimport { GroupModelSource } from '../types';\nimport { Commands, CommandWindow } from '@omegagrid/commands';\nimport { createRef, ref } from 'lit-html/directives/ref.js';\nimport { createGroupCommands } from '../commands/groupCommands';\nimport { GridEvent } from './grid.events';\n\nconst emptyGridSource: GridSource = {\n\toptions: {rows: 100, columns: 20, editable: true}\n};\n\nconst createEmptyModel = () => new GridModel(emptyGridSource);\n\nexport type GroupOptions = {\n\tcommandWindow?: boolean;\n\tshowHiddenTabs?: boolean;\n\tgrid?: Options;\n}\n\nconst DEFAULT_OPTIONS: GroupOptions = {\n\tcommandWindow: true,\n\tshowHiddenTabs: false,\n}\n\nexport class GridGroupEvent extends Event {\n\tconstructor(type: string) {\n\t\tsuper(`gridgroup.${type}`);\n\t}\n}\n\n@customElement('og-gridgroup')\nexport class GridGroup extends LitElement implements Layout {\n\n\tstatic styles = css`\n\t\t* {\n\t\t\tbox-sizing: border-box;\n\t\t}\n\n\t\t:host {\n\t\t\tdisplay: block;\n\t\t}\n\n\t\tog-tabsplitcontainer {\n\t\t\theight: 100%;\n\t\t}\n\t`;\n\n\t@property({type: Object})\n\toptions = DEFAULT_OPTIONS;\n\n\t@property({type: Object})\n\tmodel: GroupModel;\n\n\t@property({type: Object})\n\tcontainerModel: TabSplitContainerModel;\n\n\t@property({type: Boolean})\n\tdesignMode = false;\n\n\t@property({type: Number})\n\tzoom = 1;\n\n\t@property({type: String, reflect: true})\n\ttabPosition: VerticalPosition = 'top';\n\n\t@property({type: Object})\n\tlogger: log.Logger = new log.Logger('ΩgridGroup')\n\n\t@state()\n\tgrids = new Map<string, Grid>();\n\t\n\t@query('og-tabsplitcontainer')\n\tcontainer: TabSplitContainer;\n\n\tprivate commandWindowRef = createRef<CommandWindow>();\n\tget commandWindow() { return this.commandWindowRef.value }\n\t\n\tprivate _activeGrid: Grid;\n\tget activeGrid() { return this._activeGrid }\n\t\n\tprivate _commands = new Commands(createGroupCommands(this));\n\treadonly plugins = new Plugins(this);\n\n\tget commands() { return this.activeGrid ? this._commands.merge(this.activeGrid.commands) : this._commands }\n\n\tprivate _formulaModeGrid: Grid = null;\n\tget formulaModeGrid() { return this._formulaModeGrid }\n\tget isFormulaMode() { return this.formulaModeGrid != null }\n\n\t_isLoaded = false;\n\n\n\t/** Returns grid data models in order they are displayed within the layout */\n\tget gridModels() {\n\t\tconst ord = new Map<string, number>();\n\t\tthis.containerModel.walk(tab => {\n\t\t\tconst m = this.model.get(tab.id as string);\n\t\t\tif (m) ord.set(m.name, ord.size);\n\t\t});\n\t\treturn Array.from(this.model.models).sort(\n\t\t\t(a, b) => (ord.get(a[0]) ?? 0) - (ord.get(b[0]) ?? 0)\n\t\t).map(([_, m]) => m);\n\t}\n\n\tstartFormulaMode(grid: Grid) {\n\t\tthis._formulaModeGrid = grid;\n\t}\n\n\tendFormulaMode() {\n\t\tif (!this.isFormulaMode) return;\n\t\tthis._formulaModeGrid = null;\n\t\tthis.grids.forEach(grid => grid.editing.endFormulaMode(false));\n\t}\n\n\tactivateGrid(name: string, dispatchEvent = true) {\n\t\tconst grid = this.grids.get(name)\n\t\tif (!grid) return;\n\t\tif (this.activeGrid?.model?.name == name) return;\n\t\tif (this.activeGrid && dispatchEvent) this.dispatchEvent(new GridGroupEvent('deactivate'));\n\t\tthis._activeGrid = grid;\n\t\tthis.container.activate(name);\n\t\tsetTimeout(() => grid.focus(), 100);\n\t\tif (dispatchEvent) this.dispatchEvent(new GridGroupEvent('activate'));\n\t}\n\n\tpreviewZoom(zoom: number) {\n\t\tthis.grids.forEach(grid => {\n\t\t\tif (grid.isConnected) grid.table.previewZoom(zoom);\n\t\t});\n\t}\n\n\tupdateZoom() {\n\t\tthis.grids.forEach(grid => {\n\t\t\tif (grid.isConnected) grid.zoom = this.zoom;\n\t\t});\n\t}\n\n\thideSelectors() {\n\t\tthis.grids.forEach(grid => {\n\t\t\tif (grid.isConnected) grid.selecting.hideSelector();\n\t\t});\n\t}\n\n\tshowSelectors() {\n\t\tthis.grids.forEach(grid => {\n\t\t\tif (grid.isConnected) grid.selecting.showSelector();\n\t\t});\n\t}\n\n\trenameSheet(oldName: string, newName: string) {\n\t\tif (this.model.has(newName)) throw new Error(`Sheet '${newName}' already exists`);\n\t\tif (this.grids.has(oldName)) {\n\t\t\tthis.grids.set(newName, this.grids.get(oldName));\n\t\t\tthis.grids.delete(oldName);\n\t\t}\n\t\tthis.model.rename(oldName, newName);\n\t\tthis.container.model.updateTab(oldName, {id: newName, title: newName});\n\t\tthis.updateTabs();\n\t}\n\n\tupdateTabs() {\n\t\t// sync tabs with model\n\t\tthis.containerModel.walk(tab => {\n\t\t\tconst m = this.model.get(tab.id as string);\n\t\t\tif (!m) return;\n\t\t\ttab.id = m.name;\n\t\t\ttab.color = m.tab?.color;\n\t\t\ttab.hidden = !this.options.showHiddenTabs && m.tab?.hidden;\n\t\t\ttab.icon = m.tab?.hidden ? 'eye-slash' : null;\n\t\t});\n\t\tthis.container?.updateTabs();\n\t}\n\n\tupdateContainer() {\n\t\tthis.container?.splitContainer?.requestUpdate();\n\t}\n\n\tupdateCommands() {\n\t\tif (this.commandWindow) this.commandWindow.commands = this.commands;\n\t}\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.model = new GroupModel();\n\t\tthis.model.add(createEmptyModel());\n\t\tthis.containerModel = new TabSplitContainerModel({\n\t\t\titems: [{\n\t\t\t\tsize: null,\n\t\t\t\ttabs: Array.from(this.model.models).map(([name]) => ({\n\t\t\t\t\tid: name,\n\t\t\t\t\ttitle: name\n\t\t\t\t}))\n\t\t\t}]\n\t\t});\n\n\t\tthis.addEventListener('grid.selector.select', this._onGridSelect);\n\t\tthis.addEventListener('grid.object.activate', this._onGridSelect);\n\t}\n\n\tdeleteModel(name: string) {\n\t\tthis.model.remove(name);\n\t\tthis.containerModel.removeTab(name);\n\t\tthis.updateContainer();\n\t}\n\n\tduplicateModel(name: string) {\n\t\tconst model = this.model.duplicate(name);\n\t\tthis.containerModel.addTab({id: model.name, title: model.name}, name);\n\t\tthis.updateContainer();\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback();\n\t\tthis.tabIndex = 0;\n\t}\n\n\tlayout() {\n\t\tthis.container?.layout();\n\t}\n\n\tsetSourceData(sourceData: GroupModelSource) {\n\t\tthis.grids.clear();\n\t\tthis.model = new GroupModel(sourceData);\n\t\t//sourceData.models.forEach(src => this.model.get(src.name).tabColor = src.tabColor);\n\t\tthis.containerModel = new TabSplitContainerModel(sourceData.layout);\n\n\t\tif (this.model.errors.length && this.logger) {\n\t\t\tthis.model.errors.forEach(e => this.logger.error(e.message));\n\t\t}\n\n\t\tthis.fixLayout();\n\t}\n\n\tgetSourceData() {\n\t\tconst data = this.model.getSourceData() as GroupModelSource;\n\t\tdata.layout = this.containerModel.getSourceData();\n\t\treturn data;\n\t}\n\n\twillUpdate(props: Map<PropertyKey, undefined>) {\n\t\tif (props.has('zoom')) this.updateZoom();\n\t\tif (!this.model) this.model = new GroupModel();\n\t\tthis.updateTabs();\n\t}\n\n\tgetGrid(name: string) {\n\t\treturn this.grids.get(name);\n\t}\n\n\tgetGridByModel(model: GridModel) {\n\t\treturn this.getGrid(model.name);\n\t}\n\n\t_onGridSelect = (e: GridEvent) => {\n\t\tif (!e.grid) return;\n\t\tif (this.isFormulaMode) return;\n\t\tthis.activateGrid(e.grid.model.name, true);\t\t\n\t\tthis.updateCommands();\n\t}\n\n\tcreateGrid = (id: ComponentId) => new Promise<Grid>(resolve => {\n\t\tconst name = id as string;\n\t\tlet grid = this.grids.get(name);\n\t\tif (grid) {\n\t\t\tresolve(grid);\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tconst model = this.model.has(name) ? this.model.get(name) : this.model.add(createEmptyModel());\n\t\tmodel.options.commandWindow = false;\n\t\tgrid = dom.createElement<Grid>('og-grid');\n\t\tgrid.style.height = '100%';\n\t\tgrid.model = model;\n\t\tgrid.options = model.options;\n\t\tgrid.group = this;\n\t\tgrid.zoom = this.zoom;\n\t\tthis.grids.set(model.name, grid);\n\t\tresolve(grid);\n\t});\n\n\t_onTabSelect = (e: TabEvent) => {\n\t\tif (e.tab && this._isLoaded) {\n\t\t\tconst grid = this.grids.get(e.tab.id as string);\n\t\t\tif (this._activeGrid != grid) {\n\t\t\t\tthis.activateGrid(grid.model.name, true);\n\t\t\t\tsetTimeout(() => this._activeGrid.focus(), 100); // TODO - figure out how to do this without timeout\n\t\t\t\tthis.updateCommands();\n\t\t\t}\n\t\t}\n\t};\n\n\t_onTabAdd = (e: TabEvent) => {\n\t\tconst model = this.model.add(createEmptyModel());\n\t\tif (!e.tabs?.container) return;\n\t\te.tabs.container.open({id: model.name, title: model.name});\n\t};\n\n\tregisterCommands() {\n\t\tthis.commands.removeSection('grid');\n\t\tif (this.activeGrid) this.activeGrid.commands.sections.forEach(c => this.commands.registerSection(c));\n\t}\n\n\t_onCommandsOpen = () => {\n\t\tthis.commandWindow.commands = this.commands;\n\t\tthis.commandWindow.requestUpdate();\n\t}\n\t\n\t_onContainerLoad = () => {\n\t\tthis._isLoaded = true;\n\t\t// wait for grid to be connected\n\t\tif (this.gridModels.length) this.activateGrid(this.gridModels[0].name, true);\n\t}\n\n\trender = () => html`\n\t\t<og-tabsplitcontainer\n\t\t\t?singleActive=\"${true}\"\n\t\t\t?addButton=\"${true}\"\n\t\t\t?closable=\"${false}\"\n\t\t\t.tabPosition=\"${this.tabPosition}\"\n\t\t\t@tab.select=\"${this._onTabSelect}\"\n\t\t\t@tab.add=\"${this._onTabAdd}\"\n\t\t\t@load=\"${this._onContainerLoad}\"\n\t\t\t.createComponent=\"${this.createGrid}\"\n\t\t\t.model=\"${this.containerModel}\">\n\t\t</og-tabsplitcontainer>\n\n\t\t${this.options.commandWindow ? html`\n\t\t\t<og-commands ${ref(this.commandWindowRef)}\n\t\t\t\tstyle=\"display: none\"\n\t\t\t\t.commands=\"${this.commands}\"\n\t\t\t\t.target=\"${this}\"\n\t\t\t\t@command.open=\"${this._onCommandsOpen}\">\n\t\t\t</og-commands>\n\t\t` : ''}\n\t`;\n\n\t/**\n\t * Adds tabs for grid models missing in layout definition.\n\t */\n\tfixLayout() {\n\t\tconst modelNames = new Set<string>();\n\t\tthis.model.models.forEach((_, name) => modelNames.add(name));\n\t\tlet defaultContainer: TabSplitContainerModel = null;\n\t\tthis.containerModel.walk((item, container) => {\n\t\t\tif (defaultContainer == null) defaultContainer = container;\n\t\t\tmodelNames.delete(item.id as string);\n\t\t});\n\t\tdefaultContainer = defaultContainer || this.containerModel;\n\t\tdefaultContainer.items = defaultContainer.items || [];\n\t\tif (!defaultContainer.items.length) defaultContainer.items.push({});\n\t\tif (!defaultContainer.items[0].tabs) defaultContainer.items[0].tabs = [];\n\n\t\tconst containerItem = defaultContainer.items.find(item => item.container == null && item.tabs != null);\n\t\tmodelNames.forEach(name => containerItem.tabs.push({id: name, title: name}));\n\t}\n\n}"]}
|
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":"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
|
|
1
|
+
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../src/ui/table.ts"],"names":[],"mappings":"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"}
|
package/dist/ui/table.js
CHANGED
|
@@ -790,6 +790,7 @@ let Table = class Table extends LitElement {
|
|
|
790
790
|
let colModel;
|
|
791
791
|
let cellModel;
|
|
792
792
|
let a1;
|
|
793
|
+
let mergeState;
|
|
793
794
|
const freezeLeft = this.freezeLeft || 0;
|
|
794
795
|
// const freezeTop = this.freezeTop || 0;
|
|
795
796
|
const offset = this.rowHeaderCount;
|
|
@@ -832,7 +833,8 @@ let Table = class Table extends LitElement {
|
|
|
832
833
|
cell.c = cIndex;
|
|
833
834
|
cellModel = rowModel.cell(cIndex);
|
|
834
835
|
a1 = cellModel.address;
|
|
835
|
-
|
|
836
|
+
mergeState = merges.getMergeState(a1);
|
|
837
|
+
if (mergeState == MergeCellState.HIDDEN) {
|
|
836
838
|
const merge = merges.hiddenCells.get(cellModel.address);
|
|
837
839
|
const inter = mainRange.intersect(new CellRange(merge.c, merge.r, merge.c + merge.cs - 1, merge.r + merge.rs - 1));
|
|
838
840
|
if (inter && cellModel.c == inter.c1 && cellModel.r == inter.r1) {
|
|
@@ -848,9 +850,14 @@ let Table = class Table extends LitElement {
|
|
|
848
850
|
continue;
|
|
849
851
|
}
|
|
850
852
|
}
|
|
853
|
+
else if (mergeState == MergeCellState.MERGED) {
|
|
854
|
+
const merge = cellModel.merge;
|
|
855
|
+
cell.colSpan = merge.cs;
|
|
856
|
+
cell.rowSpan = merge.rs;
|
|
857
|
+
}
|
|
851
858
|
else {
|
|
852
|
-
cell.colSpan =
|
|
853
|
-
cell.rowSpan =
|
|
859
|
+
cell.colSpan = 1;
|
|
860
|
+
cell.rowSpan = 1;
|
|
854
861
|
}
|
|
855
862
|
dom.showCell(cell);
|
|
856
863
|
this.renderBodyCell(cellModel, cell);
|
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\tpublic grid: Grid;\n\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\tconstructor() {\n\t\tsuper();\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\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\tif (merges.getMergeState(a1) == 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 {\n\t\t\t\t\t\t\tcell.colSpan = cellModel.colspan;\n\t\t\t\t\t\t\tcell.rowSpan = cellModel.rowspan;\n\t\t\t\t\t\t}\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 { 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\tpublic grid: Grid;\n\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\tconstructor() {\n\t\tsuper();\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}"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@omegagrid/grid",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.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.7.
|
|
39
|
-
"@omegagrid/core": "^0.7.
|
|
40
|
-
"@omegagrid/grid-core": "^0.7.
|
|
41
|
-
"@omegagrid/localize": "^0.7.
|
|
42
|
-
"@omegagrid/tabs": "^0.7.
|
|
43
|
-
"@omegagrid/tree": "^0.7.
|
|
38
|
+
"@omegagrid/commands": "^0.7.14",
|
|
39
|
+
"@omegagrid/core": "^0.7.14",
|
|
40
|
+
"@omegagrid/grid-core": "^0.7.14",
|
|
41
|
+
"@omegagrid/localize": "^0.7.14",
|
|
42
|
+
"@omegagrid/tabs": "^0.7.14",
|
|
43
|
+
"@omegagrid/tree": "^0.7.14",
|
|
44
44
|
"@stdlib/stats": "^0.0.13",
|
|
45
45
|
"date-fns": "^3.2.0",
|
|
46
46
|
"lit": "^3.1.1",
|