@omegagrid/grid 0.10.23 → 0.10.25
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/filters/filterFactory.d.ts.map +1 -1
- package/dist/filters/filterFactory.js +4 -1
- package/dist/filters/filterFactory.js.map +1 -1
- package/dist/filters/index.d.ts +2 -0
- package/dist/filters/index.d.ts.map +1 -1
- package/dist/filters/index.js +2 -0
- package/dist/filters/index.js.map +1 -1
- package/dist/filters/rangeFilter.d.ts +15 -0
- package/dist/filters/rangeFilter.d.ts.map +1 -0
- package/dist/filters/rangeFilter.js +135 -0
- package/dist/filters/rangeFilter.js.map +1 -0
- package/dist/filters/rangeFilterPopup.d.ts +30 -0
- package/dist/filters/rangeFilterPopup.d.ts.map +1 -0
- package/dist/filters/rangeFilterPopup.js +138 -0
- package/dist/filters/rangeFilterPopup.js.map +1 -0
- package/dist/ui/comment.d.ts +1 -1
- package/dist/ui/filterLabel.d.ts +1 -0
- package/dist/ui/filterLabel.d.ts.map +1 -1
- package/dist/ui/filterLabel.js +38 -3
- package/dist/ui/filterLabel.js.map +1 -1
- package/dist/ui/grid.rendering.d.ts.map +1 -1
- package/dist/ui/grid.rendering.js +12 -0
- package/dist/ui/grid.rendering.js.map +1 -1
- package/dist/ui/sortingArrow.d.ts +1 -1
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filterFactory.d.ts","sourceRoot":"","sources":["../../src/filters/filterFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,WAAW,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"filterFactory.d.ts","sourceRoot":"","sources":["../../src/filters/filterFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,WAAW,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAyC1C,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,GAAG,UAAU,CAMrF"}
|
|
@@ -24,7 +24,10 @@ const createDropdownFilter = (column) => {
|
|
|
24
24
|
};
|
|
25
25
|
const filterMap = new Map([
|
|
26
26
|
['t', () => dom.createElement('og-filter-text')],
|
|
27
|
-
['n', () => dom.createElement('og-filter-
|
|
27
|
+
['n', () => dom.createElement('og-filter-range')],
|
|
28
|
+
['d', () => dom.createElement('og-filter-range')],
|
|
29
|
+
['dt', () => dom.createElement('og-filter-range')],
|
|
30
|
+
['tm', () => dom.createElement('og-filter-range')],
|
|
28
31
|
['b', () => dom.createElement('og-filter-checkbox')],
|
|
29
32
|
['s', (column) => createDropdownFilter(column)],
|
|
30
33
|
['m', (column) => createDropdownFilter(column)]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filterFactory.js","sourceRoot":"","sources":["../../src/filters/filterFactory.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAItC,SAAS,oBAAoB,CAAC,MAAmB;IAChD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAe,EAAE,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IACtF,CAAC;IAED,MAAM,KAAK,GAAe,EAAE,CAAC;IAC7B,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC;IAC7C,OAAO,KAAK,CAAC;AACd,CAAC;AAED,MAAM,oBAAoB,GAAG,CAAC,MAAmB,EAAE,EAAE;IACpD,MAAM,SAAS,GAAG,GAAG,CAAC,aAAa,CAAiB,oBAAoB,CAAC,CAAC;IAC1E,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,SAAS,CAAC,OAAO,GAAG,MAAM,CAAC,OAAsB,CAAC;IACnD,CAAC;SAAM,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;QACjC,SAAS,CAAC,KAAK,GAAG,MAAM,CAAC,aAA2B,CAAC;IACtD,CAAC;SAAM,CAAC;QACP,SAAS,CAAC,KAAK,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC,CAAA;AAED,MAAM,SAAS,GAAG,IAAI,GAAG,CAAgD;IACxE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;IAChD,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"filterFactory.js","sourceRoot":"","sources":["../../src/filters/filterFactory.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAItC,SAAS,oBAAoB,CAAC,MAAmB;IAChD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAe,EAAE,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IACtF,CAAC;IAED,MAAM,KAAK,GAAe,EAAE,CAAC;IAC7B,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC;IAC7C,OAAO,KAAK,CAAC;AACd,CAAC;AAED,MAAM,oBAAoB,GAAG,CAAC,MAAmB,EAAE,EAAE;IACpD,MAAM,SAAS,GAAG,GAAG,CAAC,aAAa,CAAiB,oBAAoB,CAAC,CAAC;IAC1E,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,SAAS,CAAC,OAAO,GAAG,MAAM,CAAC,OAAsB,CAAC;IACnD,CAAC;SAAM,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;QACjC,SAAS,CAAC,KAAK,GAAG,MAAM,CAAC,aAA2B,CAAC;IACtD,CAAC;SAAM,CAAC;QACP,SAAS,CAAC,KAAK,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC,CAAA;AAED,MAAM,SAAS,GAAG,IAAI,GAAG,CAAgD;IACxE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;IAChD,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;IACjD,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;IACjD,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAClD,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAClD,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC;IACpD,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;CAC/C,CAAC,CAAC;AAEH,MAAM,UAAU,YAAY,CAAC,MAAmB,EAAE,UAAuB;IACxE,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,SAAS,GAAe,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;IAC9F,SAAS,CAAC,WAAW,GAAG,MAAM,CAAC;IAC/B,SAAS,CAAC,WAAW,GAAG,UAAU,CAAC;IACnC,OAAO,SAAS,CAAC;AAClB,CAAC","sourcesContent":["import { CellType, ColumnModel, FilterModel } from \"@omegagrid/grid-core\";\nimport { BaseFilter } from \"./baseFilter\";\nimport { dom } from \"@omegagrid/core\";\nimport { DropdownFilter } from \"./dropdownFilter\";\nimport { TreeAdapter, TreeSource } from \"@omegagrid/tree\";\n\nfunction collectDropdownItems(column: ColumnModel) : TreeSource {\n\tconst values = new Map<string, string>();\n\t\n\tfor (let r = 0; r < column.model.rows.length; r++) {\n\t\tconst cell = column.cell(r);\n\t\tvalues.set(cell.value as string, (cell.displayValue ?? cell.value ?? \"\").toString());\n\t}\n\n\tconst items: TreeSource = [];\n\tvalues.forEach((v, k) => items.push({k, v}));\n\treturn items;\n}\n\nconst createDropdownFilter = (column: ColumnModel) => {\n\tconst component = dom.createElement<DropdownFilter>('og-filter-dropdown');\n\tif (column.adapter) {\n\t\tcomponent.adapter = column.adapter as TreeAdapter;\n\t} else if (column.editorContent) {\n\t\tcomponent.items = column.editorContent as TreeSource;\n\t} else {\n\t\tcomponent.items = collectDropdownItems(column);\n\t}\n\treturn component;\n}\n\nconst filterMap = new Map<CellType, (column: ColumnModel) => BaseFilter>([\n\t['t', () => dom.createElement('og-filter-text')],\n\t['n', () => dom.createElement('og-filter-range')],\n\t['d', () => dom.createElement('og-filter-range')],\n\t['dt', () => dom.createElement('og-filter-range')],\n\t['tm', () => dom.createElement('og-filter-range')],\n\t['b', () => dom.createElement('og-filter-checkbox')],\n\t['s', (column) => createDropdownFilter(column)],\n\t['m', (column) => createDropdownFilter(column)]\n]);\n\nexport function createFilter(column: ColumnModel, filteModel: FilterModel): BaseFilter {\n\tconst factory = filterMap.get(column.type);\n\tconst component: BaseFilter = factory ? factory(column) : dom.createElement('og-filter-text');\n\tcomponent.columnModel = column;\n\tcomponent.filterModel = filteModel;\n\treturn component;\n}\n"]}
|
package/dist/filters/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/filters/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/filters/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC"}
|
package/dist/filters/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/filters/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC","sourcesContent":["export * from \"./textFilter\";\nexport * from \"./checkboxFilter\";\nexport * from \"./dropdownFilter\";\nexport * from \"./filterFactory\";\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/filters/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC","sourcesContent":["export * from \"./textFilter\";\nexport * from \"./checkboxFilter\";\nexport * from \"./dropdownFilter\";\nexport * from \"./rangeFilter\";\nexport * from \"./rangeFilterPopup\";\nexport * from \"./filterFactory\";\n"]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { BaseFilter } from "./baseFilter";
|
|
2
|
+
export declare class RangeFilter extends BaseFilter {
|
|
3
|
+
static styles: import("lit").CSSResult[];
|
|
4
|
+
private dropdownEl;
|
|
5
|
+
private popupEl;
|
|
6
|
+
private get popupType();
|
|
7
|
+
private _currentRange;
|
|
8
|
+
private _formatLabel;
|
|
9
|
+
private _onApply;
|
|
10
|
+
private _onClear;
|
|
11
|
+
render: () => import("lit-html").TemplateResult<1>;
|
|
12
|
+
activate(): void;
|
|
13
|
+
deactivate(): void;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=rangeFilter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rangeFilter.d.ts","sourceRoot":"","sources":["../../src/filters/rangeFilter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAsB1C,qBACa,WAAY,SAAQ,UAAU;IAE1C,MAAM,CAAC,MAAM,4BAaV;IAGH,OAAO,CAAC,UAAU,CAAW;IAG7B,OAAO,CAAC,OAAO,CAAmB;IAElC,OAAO,KAAK,SAAS,GAGpB;IAED,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,QAAQ,CAQf;IAED,OAAO,CAAC,QAAQ,CAIf;IAED,MAAM,6CASJ;IAEF,QAAQ;IASR,UAAU;CAIV"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import constants from "../constants";
|
|
8
|
+
import { customElement, query } from 'lit/decorators.js';
|
|
9
|
+
import { BaseFilter } from "./baseFilter";
|
|
10
|
+
import { html, css } from 'lit';
|
|
11
|
+
const isRangeTerm = (v) => !!v && typeof v === 'object' && !Array.isArray(v) && v.kind === 'range';
|
|
12
|
+
const toDate = (v) => {
|
|
13
|
+
if (v == null || v === '')
|
|
14
|
+
return null;
|
|
15
|
+
if (v instanceof Date)
|
|
16
|
+
return v;
|
|
17
|
+
const d = new Date(v);
|
|
18
|
+
return Number.isNaN(d.getTime()) ? null : d;
|
|
19
|
+
};
|
|
20
|
+
const toNum = (v) => {
|
|
21
|
+
if (v == null || v === '')
|
|
22
|
+
return null;
|
|
23
|
+
const n = typeof v === 'number' ? v : Number(v);
|
|
24
|
+
return Number.isNaN(n) ? null : n;
|
|
25
|
+
};
|
|
26
|
+
let RangeFilter = class RangeFilter extends BaseFilter {
|
|
27
|
+
constructor() {
|
|
28
|
+
super(...arguments);
|
|
29
|
+
this._onApply = (e) => {
|
|
30
|
+
if (e.from == null && e.to == null) {
|
|
31
|
+
this.clearFilter();
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
this.filter({ kind: 'range', from: e.from, to: e.to });
|
|
35
|
+
}
|
|
36
|
+
this.dropdownEl?.close();
|
|
37
|
+
this.deactivate();
|
|
38
|
+
};
|
|
39
|
+
this._onClear = () => {
|
|
40
|
+
this.clearFilter();
|
|
41
|
+
this.dropdownEl?.close();
|
|
42
|
+
this.deactivate();
|
|
43
|
+
};
|
|
44
|
+
this.render = () => html `
|
|
45
|
+
<og-dropdown color="transparent" alignment="left">
|
|
46
|
+
<div slot="label">${this._formatLabel()}</div>
|
|
47
|
+
<og-filter-range-popup slot="content"
|
|
48
|
+
type="${this.popupType}"
|
|
49
|
+
@apply="${this._onApply}"
|
|
50
|
+
@clear="${this._onClear}">
|
|
51
|
+
</og-filter-range-popup>
|
|
52
|
+
</og-dropdown>
|
|
53
|
+
`;
|
|
54
|
+
}
|
|
55
|
+
get popupType() {
|
|
56
|
+
const t = this.columnModel?.type;
|
|
57
|
+
return (t === 'd' || t === 'dt' || t === 'tm') ? t : 'n';
|
|
58
|
+
}
|
|
59
|
+
_currentRange() {
|
|
60
|
+
const r = isRangeTerm(this.currentValue) ? this.currentValue : null;
|
|
61
|
+
if (!r)
|
|
62
|
+
return { from: null, to: null };
|
|
63
|
+
switch (this.popupType) {
|
|
64
|
+
case 'n': return { from: toNum(r.from), to: toNum(r.to) };
|
|
65
|
+
case 'd':
|
|
66
|
+
case 'dt': return { from: toDate(r.from), to: toDate(r.to) };
|
|
67
|
+
case 'tm': return {
|
|
68
|
+
from: r.from == null ? null : String(r.from),
|
|
69
|
+
to: r.to == null ? null : String(r.to),
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
_formatLabel() {
|
|
74
|
+
const r = isRangeTerm(this.currentValue) ? this.currentValue : null;
|
|
75
|
+
if (!r || (r.from == null && r.to == null))
|
|
76
|
+
return '';
|
|
77
|
+
const type = this.popupType;
|
|
78
|
+
const fmt = (v) => {
|
|
79
|
+
if (v == null)
|
|
80
|
+
return '';
|
|
81
|
+
if (v instanceof Date)
|
|
82
|
+
return v.toLocaleDateString();
|
|
83
|
+
if (type === 'd' || type === 'dt') {
|
|
84
|
+
const d = toDate(v);
|
|
85
|
+
if (d)
|
|
86
|
+
return d.toLocaleDateString();
|
|
87
|
+
}
|
|
88
|
+
return String(v);
|
|
89
|
+
};
|
|
90
|
+
const from = fmt(r.from);
|
|
91
|
+
const to = fmt(r.to);
|
|
92
|
+
if (from && to)
|
|
93
|
+
return `${from} – ${to}`;
|
|
94
|
+
if (from)
|
|
95
|
+
return `≥ ${from}`;
|
|
96
|
+
return `≤ ${to}`;
|
|
97
|
+
}
|
|
98
|
+
activate() {
|
|
99
|
+
super.activate();
|
|
100
|
+
const { from, to } = this._currentRange();
|
|
101
|
+
setTimeout(() => {
|
|
102
|
+
this.popupEl?.setValues(from, to);
|
|
103
|
+
this.dropdownEl?.open();
|
|
104
|
+
}, 50);
|
|
105
|
+
}
|
|
106
|
+
deactivate() {
|
|
107
|
+
this.dropdownEl?.close();
|
|
108
|
+
super.deactivate();
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
RangeFilter.styles = [...BaseFilter.styles, css `
|
|
112
|
+
:host {
|
|
113
|
+
display: block;
|
|
114
|
+
box-sizing: border-box;
|
|
115
|
+
height: 100%;
|
|
116
|
+
width: 100%;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
og-dropdown {
|
|
120
|
+
display: flex;
|
|
121
|
+
width: 100%;
|
|
122
|
+
height: 100%;
|
|
123
|
+
}
|
|
124
|
+
`];
|
|
125
|
+
__decorate([
|
|
126
|
+
query('og-dropdown')
|
|
127
|
+
], RangeFilter.prototype, "dropdownEl", void 0);
|
|
128
|
+
__decorate([
|
|
129
|
+
query(`${constants.PREFIX}-filter-range-popup`)
|
|
130
|
+
], RangeFilter.prototype, "popupEl", void 0);
|
|
131
|
+
RangeFilter = __decorate([
|
|
132
|
+
customElement(`${constants.PREFIX}-filter-range`)
|
|
133
|
+
], RangeFilter);
|
|
134
|
+
export { RangeFilter };
|
|
135
|
+
//# sourceMappingURL=rangeFilter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rangeFilter.js","sourceRoot":"","sources":["../../src/filters/rangeFilter.ts"],"names":[],"mappings":"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","sourcesContent":["import constants from \"../constants\";\nimport { customElement, query } from 'lit/decorators.js';\nimport { BaseFilter } from \"./baseFilter\";\nimport { html, css } from 'lit';\nimport { FilterRange } from \"@omegagrid/grid-core\";\nimport { Dropdown } from \"@omegagrid/core\";\nimport { RangeFilterApplyEvent, RangeFilterPopup, RangeFilterType, RangeValue } from \"./rangeFilterPopup\";\n\nconst isRangeTerm = (v: unknown): v is FilterRange =>\n\t!!v && typeof v === 'object' && !Array.isArray(v) && (v as FilterRange).kind === 'range';\n\nconst toDate = (v: unknown): Date | null => {\n\tif (v == null || v === '') return null;\n\tif (v instanceof Date) return v;\n\tconst d = new Date(v as string);\n\treturn Number.isNaN(d.getTime()) ? null : d;\n};\n\nconst toNum = (v: unknown): number | null => {\n\tif (v == null || v === '') return null;\n\tconst n = typeof v === 'number' ? v : Number(v);\n\treturn Number.isNaN(n) ? null : n;\n};\n\n@customElement(`${constants.PREFIX}-filter-range`)\nexport class RangeFilter extends BaseFilter {\n\n\tstatic styles = [...BaseFilter.styles, css`\n\t\t:host {\n\t\t\tdisplay: block;\n\t\t\tbox-sizing: border-box;\n\t\t\theight: 100%;\n\t\t\twidth: 100%;\n\t\t}\n\n\t\tog-dropdown {\n\t\t\tdisplay: flex;\n\t\t\twidth: 100%;\n\t\t\theight: 100%;\n\t\t}\n\t`];\n\n\t@query('og-dropdown')\n\tprivate dropdownEl: Dropdown;\n\n\t@query(`${constants.PREFIX}-filter-range-popup`)\n\tprivate popupEl: RangeFilterPopup;\n\n\tprivate get popupType(): RangeFilterType {\n\t\tconst t = this.columnModel?.type;\n\t\treturn (t === 'd' || t === 'dt' || t === 'tm') ? t : 'n';\n\t}\n\n\tprivate _currentRange(): { from: RangeValue, to: RangeValue } {\n\t\tconst r = isRangeTerm(this.currentValue) ? this.currentValue : null;\n\t\tif (!r) return { from: null, to: null };\n\t\tswitch (this.popupType) {\n\t\t\tcase 'n': return { from: toNum(r.from), to: toNum(r.to) };\n\t\t\tcase 'd':\n\t\t\tcase 'dt': return { from: toDate(r.from), to: toDate(r.to) };\n\t\t\tcase 'tm': return {\n\t\t\t\tfrom: r.from == null ? null : String(r.from),\n\t\t\t\tto: r.to == null ? null : String(r.to),\n\t\t\t};\n\t\t}\n\t}\n\n\tprivate _formatLabel(): string {\n\t\tconst r = isRangeTerm(this.currentValue) ? this.currentValue : null;\n\t\tif (!r || (r.from == null && r.to == null)) return '';\n\t\tconst type = this.popupType;\n\t\tconst fmt = (v: unknown) => {\n\t\t\tif (v == null) return '';\n\t\t\tif (v instanceof Date) return v.toLocaleDateString();\n\t\t\tif (type === 'd' || type === 'dt') {\n\t\t\t\tconst d = toDate(v);\n\t\t\t\tif (d) return d.toLocaleDateString();\n\t\t\t}\n\t\t\treturn String(v);\n\t\t};\n\t\tconst from = fmt(r.from);\n\t\tconst to = fmt(r.to);\n\t\tif (from && to) return `${from} – ${to}`;\n\t\tif (from) return `≥ ${from}`;\n\t\treturn `≤ ${to}`;\n\t}\n\n\tprivate _onApply = (e: RangeFilterApplyEvent) => {\n\t\tif (e.from == null && e.to == null) {\n\t\t\tthis.clearFilter();\n\t\t} else {\n\t\t\tthis.filter({ kind: 'range', from: e.from, to: e.to } as FilterRange);\n\t\t}\n\t\tthis.dropdownEl?.close();\n\t\tthis.deactivate();\n\t}\n\n\tprivate _onClear = () => {\n\t\tthis.clearFilter();\n\t\tthis.dropdownEl?.close();\n\t\tthis.deactivate();\n\t}\n\n\trender = () => html`\n\t\t<og-dropdown color=\"transparent\" alignment=\"left\">\n\t\t\t<div slot=\"label\">${this._formatLabel()}</div>\n\t\t\t<og-filter-range-popup slot=\"content\"\n\t\t\t\ttype=\"${this.popupType}\"\n\t\t\t\t@apply=\"${this._onApply}\"\n\t\t\t\t@clear=\"${this._onClear}\">\n\t\t\t</og-filter-range-popup>\n\t\t</og-dropdown>\n\t`;\n\n\tactivate() {\n\t\tsuper.activate();\n\t\tconst { from, to } = this._currentRange();\n\t\tsetTimeout(() => {\n\t\t\tthis.popupEl?.setValues(from, to);\n\t\t\tthis.dropdownEl?.open();\n\t\t}, 50);\n\t}\n\n\tdeactivate() {\n\t\tthis.dropdownEl?.close();\n\t\tsuper.deactivate();\n\t}\n}\n"]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { LitElement } from 'lit';
|
|
2
|
+
export type RangeFilterType = 'n' | 'd' | 'dt' | 'tm';
|
|
3
|
+
export type RangeValue = Date | number | string | null;
|
|
4
|
+
export declare class RangeFilterApplyEvent extends Event {
|
|
5
|
+
from: RangeValue;
|
|
6
|
+
to: RangeValue;
|
|
7
|
+
constructor(from: RangeValue, to: RangeValue);
|
|
8
|
+
}
|
|
9
|
+
export declare class RangeFilterClearEvent extends Event {
|
|
10
|
+
constructor();
|
|
11
|
+
}
|
|
12
|
+
export declare class RangeFilterPopup extends LitElement {
|
|
13
|
+
static styles: import("lit").CSSResult;
|
|
14
|
+
type: RangeFilterType;
|
|
15
|
+
private _from;
|
|
16
|
+
private _to;
|
|
17
|
+
setValues(from: RangeValue, to: RangeValue): void;
|
|
18
|
+
private _onFromDate;
|
|
19
|
+
private _onToDate;
|
|
20
|
+
private _onFromNum;
|
|
21
|
+
private _onToNum;
|
|
22
|
+
private _onFromText;
|
|
23
|
+
private _onToText;
|
|
24
|
+
private _apply;
|
|
25
|
+
private _clear;
|
|
26
|
+
private _onKeyDown;
|
|
27
|
+
private _renderRow;
|
|
28
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=rangeFilterPopup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rangeFilterPopup.d.ts","sourceRoot":"","sources":["../../src/filters/rangeFilterPopup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAM5C,MAAM,MAAM,eAAe,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;AACtD,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;AAEvD,qBAAa,qBAAsB,SAAQ,KAAK;IAC5B,IAAI,EAAE,UAAU;IAAS,EAAE,EAAE,UAAU;gBAAvC,IAAI,EAAE,UAAU,EAAS,EAAE,EAAE,UAAU;CAG1D;AAED,qBAAa,qBAAsB,SAAQ,KAAK;;CAI/C;AAED,qBACa,gBAAiB,SAAQ,UAAU;IAE/C,MAAM,CAAC,MAAM,0BAkCX;IAGF,IAAI,EAAE,eAAe,CAAO;IAEnB,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,GAAG,CAAoB;IAExC,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU;IAK1C,OAAO,CAAC,WAAW,CAAqE;IACxF,OAAO,CAAC,SAAS,CAAmE;IAEpF,OAAO,CAAC,UAAU,CAGjB;IACD,OAAO,CAAC,QAAQ,CAGf;IAED,OAAO,CAAC,WAAW,CAAuE;IAC1F,OAAO,CAAC,SAAS,CAAqE;IAEtF,OAAO,CAAC,MAAM,CAEb;IAED,OAAO,CAAC,MAAM,CAIb;IAED,OAAO,CAAC,UAAU,CAKjB;IAED,OAAO,CAAC,UAAU;IAgBlB,MAAM;CAYN"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { LitElement, html, css } from 'lit';
|
|
8
|
+
import { customElement, property, state } from 'lit/decorators.js';
|
|
9
|
+
import { msg } from '@omegagrid/localize';
|
|
10
|
+
import constants from '../constants';
|
|
11
|
+
export class RangeFilterApplyEvent extends Event {
|
|
12
|
+
constructor(from, to) {
|
|
13
|
+
super('apply', { bubbles: false, composed: true });
|
|
14
|
+
this.from = from;
|
|
15
|
+
this.to = to;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export class RangeFilterClearEvent extends Event {
|
|
19
|
+
constructor() {
|
|
20
|
+
super('clear', { bubbles: false, composed: true });
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
let RangeFilterPopup = class RangeFilterPopup extends LitElement {
|
|
24
|
+
constructor() {
|
|
25
|
+
super(...arguments);
|
|
26
|
+
this.type = 'n';
|
|
27
|
+
this._from = null;
|
|
28
|
+
this._to = null;
|
|
29
|
+
this._onFromDate = (e) => { this._from = e.value ?? null; };
|
|
30
|
+
this._onToDate = (e) => { this._to = e.value ?? null; };
|
|
31
|
+
this._onFromNum = (e) => {
|
|
32
|
+
const v = e.target.value;
|
|
33
|
+
this._from = v == null || Number.isNaN(v) ? null : v;
|
|
34
|
+
};
|
|
35
|
+
this._onToNum = (e) => {
|
|
36
|
+
const v = e.target.value;
|
|
37
|
+
this._to = v == null || Number.isNaN(v) ? null : v;
|
|
38
|
+
};
|
|
39
|
+
this._onFromText = (e) => { this._from = e.value || null; };
|
|
40
|
+
this._onToText = (e) => { this._to = e.value || null; };
|
|
41
|
+
this._apply = () => {
|
|
42
|
+
this.dispatchEvent(new RangeFilterApplyEvent(this._from, this._to));
|
|
43
|
+
};
|
|
44
|
+
this._clear = () => {
|
|
45
|
+
this._from = null;
|
|
46
|
+
this._to = null;
|
|
47
|
+
this.dispatchEvent(new RangeFilterClearEvent());
|
|
48
|
+
};
|
|
49
|
+
this._onKeyDown = (e) => {
|
|
50
|
+
if (e.key === 'Enter') {
|
|
51
|
+
e.stopPropagation();
|
|
52
|
+
this._apply();
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
setValues(from, to) {
|
|
57
|
+
this._from = from;
|
|
58
|
+
this._to = to;
|
|
59
|
+
}
|
|
60
|
+
_renderRow(label, value, which) {
|
|
61
|
+
let control;
|
|
62
|
+
if (this.type === 'd' || this.type === 'dt') {
|
|
63
|
+
const onChange = which === 'from' ? this._onFromDate : this._onToDate;
|
|
64
|
+
control = html `<og-calendar-dropdown cross buttonInput .value="${value}" @change="${onChange}"></og-calendar-dropdown>`;
|
|
65
|
+
}
|
|
66
|
+
else if (this.type === 'tm') {
|
|
67
|
+
// TODO: change to time picker when available
|
|
68
|
+
const onChange = which === 'from' ? this._onFromText : this._onToText;
|
|
69
|
+
control = html `<og-input .value="${(value ?? '')}" @change="${onChange}"></og-input>`;
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
const onChange = which === 'from' ? this._onFromNum : this._onToNum;
|
|
73
|
+
control = html `<og-numericinput buttons .value="${value}" @change="${onChange}"></og-numericinput>`;
|
|
74
|
+
}
|
|
75
|
+
return html `<div class="row"><label>${label}</label>${control}</div>`;
|
|
76
|
+
}
|
|
77
|
+
render() {
|
|
78
|
+
return html `
|
|
79
|
+
<div @keydown="${this._onKeyDown}" style="display: contents;">
|
|
80
|
+
${this._renderRow(msg('From'), this._from, 'from')}
|
|
81
|
+
${this._renderRow(msg('To'), this._to, 'to')}
|
|
82
|
+
<div class="actions">
|
|
83
|
+
<og-button icon="check" color="accent" text="${msg('Apply')}" @mousedown="${this._apply}"></og-button>
|
|
84
|
+
<og-button icon="xmark" color="red" title="${msg('Clear')}" @mousedown="${this._clear}"></og-button>
|
|
85
|
+
</div>
|
|
86
|
+
</div>
|
|
87
|
+
`;
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
RangeFilterPopup.styles = css `
|
|
91
|
+
:host {
|
|
92
|
+
display: flex;
|
|
93
|
+
flex-direction: column;
|
|
94
|
+
gap: 5px;
|
|
95
|
+
padding: 6px;
|
|
96
|
+
min-width: 200px;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.row {
|
|
100
|
+
display: flex;
|
|
101
|
+
flex-direction: row;
|
|
102
|
+
align-items: center;
|
|
103
|
+
gap: 6px;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.row > label {
|
|
107
|
+
flex: 0 0 28px;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.row > og-calendar-dropdown,
|
|
111
|
+
.row > og-numericinput,
|
|
112
|
+
.row > og-input {
|
|
113
|
+
flex: 1;
|
|
114
|
+
min-width: 0;
|
|
115
|
+
box-sizing: border-box;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.actions {
|
|
119
|
+
display: flex;
|
|
120
|
+
justify-content: flex-end;
|
|
121
|
+
gap: 4px;
|
|
122
|
+
margin-top: 4px;
|
|
123
|
+
}
|
|
124
|
+
`;
|
|
125
|
+
__decorate([
|
|
126
|
+
property({ type: String })
|
|
127
|
+
], RangeFilterPopup.prototype, "type", void 0);
|
|
128
|
+
__decorate([
|
|
129
|
+
state()
|
|
130
|
+
], RangeFilterPopup.prototype, "_from", void 0);
|
|
131
|
+
__decorate([
|
|
132
|
+
state()
|
|
133
|
+
], RangeFilterPopup.prototype, "_to", void 0);
|
|
134
|
+
RangeFilterPopup = __decorate([
|
|
135
|
+
customElement(`${constants.PREFIX}-filter-range-popup`)
|
|
136
|
+
], RangeFilterPopup);
|
|
137
|
+
export { RangeFilterPopup };
|
|
138
|
+
//# sourceMappingURL=rangeFilterPopup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rangeFilterPopup.js","sourceRoot":"","sources":["../../src/filters/rangeFilterPopup.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, html, css } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { events } from '@omegagrid/core';\nimport { msg } from '@omegagrid/localize';\nimport constants from '../constants';\n\nexport type RangeFilterType = 'n' | 'd' | 'dt' | 'tm';\nexport type RangeValue = Date | number | string | null;\n\nexport class RangeFilterApplyEvent extends Event {\n\tconstructor(public from: RangeValue, public to: RangeValue) {\n\t\tsuper('apply', { bubbles: false, composed: true });\n\t}\n}\n\nexport class RangeFilterClearEvent extends Event {\n\tconstructor() {\n\t\tsuper('clear', { bubbles: false, composed: true });\n\t}\n}\n\n@customElement(`${constants.PREFIX}-filter-range-popup`)\nexport class RangeFilterPopup extends LitElement {\n\n\tstatic styles = css`\n\t\t:host {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tgap: 5px;\n\t\t\tpadding: 6px;\n\t\t\tmin-width: 200px;\n\t\t}\n\n\t\t.row {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: row;\n\t\t\talign-items: center;\n\t\t\tgap: 6px;\n\t\t}\n\n\t\t.row > label {\n\t\t\tflex: 0 0 28px;\n\t\t}\n\n\t\t.row > og-calendar-dropdown,\n\t\t.row > og-numericinput,\n\t\t.row > og-input {\n\t\t\tflex: 1;\n\t\t\tmin-width: 0;\n\t\t\tbox-sizing: border-box;\n\t\t}\n\n\t\t.actions {\n\t\t\tdisplay: flex;\n\t\t\tjustify-content: flex-end;\n\t\t\tgap: 4px;\n\t\t\tmargin-top: 4px;\n\t\t}\n\t`;\n\n\t@property({ type: String })\n\ttype: RangeFilterType = 'n';\n\n\t@state() private _from: RangeValue = null;\n\t@state() private _to: RangeValue = null;\n\n\tsetValues(from: RangeValue, to: RangeValue) {\n\t\tthis._from = from;\n\t\tthis._to = to;\n\t}\n\n\tprivate _onFromDate = (e: events.ChangeEvent<Date>) => { this._from = e.value ?? null; }\n\tprivate _onToDate = (e: events.ChangeEvent<Date>) => { this._to = e.value ?? null; }\n\n\tprivate _onFromNum = (e: Event) => {\n\t\tconst v = (e.target as unknown as { value: number }).value;\n\t\tthis._from = v == null || Number.isNaN(v) ? null : v;\n\t}\n\tprivate _onToNum = (e: Event) => {\n\t\tconst v = (e.target as unknown as { value: number }).value;\n\t\tthis._to = v == null || Number.isNaN(v) ? null : v;\n\t}\n\n\tprivate _onFromText = (e: events.ChangeEvent<string>) => { this._from = e.value || null; }\n\tprivate _onToText = (e: events.ChangeEvent<string>) => { this._to = e.value || null; }\n\n\tprivate _apply = () => {\n\t\tthis.dispatchEvent(new RangeFilterApplyEvent(this._from, this._to));\n\t}\n\n\tprivate _clear = () => {\n\t\tthis._from = null;\n\t\tthis._to = null;\n\t\tthis.dispatchEvent(new RangeFilterClearEvent());\n\t}\n\n\tprivate _onKeyDown = (e: KeyboardEvent) => {\n\t\tif (e.key === 'Enter') {\n\t\t\te.stopPropagation();\n\t\t\tthis._apply();\n\t\t}\n\t}\n\n\tprivate _renderRow(label: string, value: RangeValue, which: 'from' | 'to') {\n\t\tlet control;\n\t\tif (this.type === 'd' || this.type === 'dt') {\n\t\t\tconst onChange = which === 'from' ? this._onFromDate : this._onToDate;\n\t\t\tcontrol = html`<og-calendar-dropdown cross buttonInput .value=\"${value as Date | null}\" @change=\"${onChange}\"></og-calendar-dropdown>`;\n\t\t} else if (this.type === 'tm') {\n\t\t\t// TODO: change to time picker when available\n\t\t\tconst onChange = which === 'from' ? this._onFromText : this._onToText;\n\t\t\tcontrol = html`<og-input .value=\"${(value ?? '') as string}\" @change=\"${onChange}\"></og-input>`;\n\t\t} else {\n\t\t\tconst onChange = which === 'from' ? this._onFromNum : this._onToNum;\n\t\t\tcontrol = html`<og-numericinput buttons .value=\"${value as number | null}\" @change=\"${onChange}\"></og-numericinput>`;\n\t\t}\n\t\treturn html`<div class=\"row\"><label>${label}</label>${control}</div>`;\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<div @keydown=\"${this._onKeyDown}\" style=\"display: contents;\">\n\t\t\t\t${this._renderRow(msg('From'), this._from, 'from')}\n\t\t\t\t${this._renderRow(msg('To'), this._to, 'to')}\n\t\t\t\t<div class=\"actions\">\n\t\t\t\t\t<og-button icon=\"check\" color=\"accent\" text=\"${msg('Apply')}\" @mousedown=\"${this._apply}\"></og-button>\n\t\t\t\t\t<og-button icon=\"xmark\" color=\"red\" title=\"${msg('Clear')}\" @mousedown=\"${this._clear}\"></og-button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\t}\n}\n"]}
|
package/dist/ui/comment.d.ts
CHANGED
|
@@ -47,7 +47,7 @@ export declare class Comment extends LitElement {
|
|
|
47
47
|
updated(): void;
|
|
48
48
|
canEdit(index: number): boolean;
|
|
49
49
|
get canAdd(): boolean;
|
|
50
|
-
renderItemHeader: (item: CommentItem, index: number) => import("lit-html").TemplateResult<1
|
|
50
|
+
renderItemHeader: (item: CommentItem, index: number) => "" | import("lit-html").TemplateResult<1>;
|
|
51
51
|
renderItem: (item: CommentItem, index: number) => import("lit-html").TemplateResult<1>;
|
|
52
52
|
render: () => import("lit-html").TemplateResult<1>;
|
|
53
53
|
deatach(timeout?: number): void;
|
package/dist/ui/filterLabel.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ export declare class FilterLabel extends LitElement {
|
|
|
5
5
|
value: FilterValue;
|
|
6
6
|
constructor();
|
|
7
7
|
connectedCallback(): void;
|
|
8
|
+
renderValue(): string | import("lit-html").TemplateResult<1>;
|
|
8
9
|
render: () => import("lit-html").TemplateResult<1>;
|
|
9
10
|
}
|
|
10
11
|
//# sourceMappingURL=filterLabel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filterLabel.d.ts","sourceRoot":"","sources":["../../src/ui/filterLabel.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"filterLabel.d.ts","sourceRoot":"","sources":["../../src/ui/filterLabel.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AA2B5C,qBACa,WAAY,SAAQ,UAAU;IAE1C,MAAM,CAAC,MAAM,0BA4CX;IAGF,KAAK,EAAE,WAAW,CAAC;;IAMnB,iBAAiB;IAIjB,WAAW;IAUX,MAAM,6CAGJ;CAEF"}
|
package/dist/ui/filterLabel.js
CHANGED
|
@@ -7,19 +7,54 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
import { utils } from '@omegagrid/core';
|
|
8
8
|
import { LitElement, html, css } from 'lit';
|
|
9
9
|
import { customElement, property } from 'lit/decorators.js';
|
|
10
|
+
const isRangeTerm = (v) => !!v && typeof v === 'object' && !Array.isArray(v) && v.kind === 'range';
|
|
11
|
+
const formatRangePart = (v) => {
|
|
12
|
+
if (v == null || v === '')
|
|
13
|
+
return '';
|
|
14
|
+
if (v instanceof Date)
|
|
15
|
+
return v.toLocaleDateString();
|
|
16
|
+
if (typeof v === 'string') {
|
|
17
|
+
const d = new Date(v);
|
|
18
|
+
if (!Number.isNaN(d.getTime()))
|
|
19
|
+
return d.toLocaleDateString();
|
|
20
|
+
return v;
|
|
21
|
+
}
|
|
22
|
+
return String(v);
|
|
23
|
+
};
|
|
24
|
+
const formatRange = (r) => {
|
|
25
|
+
const from = formatRangePart(r.from);
|
|
26
|
+
const to = formatRangePart(r.to);
|
|
27
|
+
if (from && to)
|
|
28
|
+
return `${from} – ${to}`;
|
|
29
|
+
if (from)
|
|
30
|
+
return `≥ ${from}`;
|
|
31
|
+
if (to)
|
|
32
|
+
return `≤ ${to}`;
|
|
33
|
+
return '';
|
|
34
|
+
};
|
|
10
35
|
let FilterLabel = class FilterLabel extends LitElement {
|
|
11
36
|
constructor() {
|
|
12
37
|
super();
|
|
13
38
|
this.render = () => html `
|
|
14
39
|
<og-icon id="filterIcon" .icon="${{ icon: "filter" }}"></og-icon>
|
|
15
|
-
<div class="text">${
|
|
16
|
-
<og-icon .icon="${this.value ? 'square-check' : 'square'}"></og-icon>
|
|
17
|
-
` : this.value}</div>
|
|
40
|
+
<div class="text">${this.renderValue()}</div>
|
|
18
41
|
`;
|
|
19
42
|
}
|
|
20
43
|
connectedCallback() {
|
|
21
44
|
super.connectedCallback();
|
|
22
45
|
}
|
|
46
|
+
renderValue() {
|
|
47
|
+
if (this.value == null)
|
|
48
|
+
return '';
|
|
49
|
+
if (utils.isBool(this.value)) {
|
|
50
|
+
return html `<og-icon .icon="${this.value ? 'square-check' : 'square'}"></og-icon>`;
|
|
51
|
+
}
|
|
52
|
+
if (isRangeTerm(this.value))
|
|
53
|
+
return formatRange(this.value);
|
|
54
|
+
if (typeof this.value === 'object')
|
|
55
|
+
return '';
|
|
56
|
+
return this.value;
|
|
57
|
+
}
|
|
23
58
|
};
|
|
24
59
|
FilterLabel.styles = css `
|
|
25
60
|
:host {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filterLabel.js","sourceRoot":"","sources":["../../src/ui/filterLabel.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"filterLabel.js","sourceRoot":"","sources":["../../src/ui/filterLabel.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE5D,MAAM,WAAW,GAAG,CAAC,CAAU,EAAoB,EAAE,CACpD,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAK,CAAiB,CAAC,IAAI,KAAK,OAAO,CAAC;AAE1F,MAAM,eAAe,GAAG,CAAC,CAAU,EAAU,EAAE;IAC9C,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,CAAC;IACrC,IAAI,CAAC,YAAY,IAAI;QAAE,OAAO,CAAC,CAAC,kBAAkB,EAAE,CAAC;IACrD,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YAAE,OAAO,CAAC,CAAC,kBAAkB,EAAE,CAAC;QAC9D,OAAO,CAAC,CAAC;IACV,CAAC;IACD,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,CAAc,EAAU,EAAE;IAC9C,MAAM,IAAI,GAAG,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,EAAE,GAAG,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACjC,IAAI,IAAI,IAAI,EAAE;QAAE,OAAO,GAAG,IAAI,MAAM,EAAE,EAAE,CAAC;IACzC,IAAI,IAAI;QAAE,OAAO,KAAK,IAAI,EAAE,CAAC;IAC7B,IAAI,EAAE;QAAE,OAAO,KAAK,EAAE,EAAE,CAAC;IACzB,OAAO,EAAE,CAAC;AACX,CAAC,CAAC;AAIK,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,UAAU;IAmD1C;QACC,KAAK,EAAE,CAAC;QAiBT,WAAM,GAAG,GAAG,EAAE,CAAA,IAAI,CAAA;oCACiB,EAAC,IAAI,EAAE,QAAQ,EAAC;sBAC9B,IAAI,CAAC,WAAW,EAAE;EACtC,CAAC;IAnBF,CAAC;IAED,iBAAiB;QAChB,KAAK,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAED,WAAW;QACV,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI;YAAE,OAAO,EAAE,CAAC;QAClC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAA,mBAAmB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,cAAc,CAAC;QACpF,CAAC;QACD,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5D,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;YAAE,OAAO,EAAE,CAAC;QAC9C,OAAO,IAAI,CAAC,KAAe,CAAC;IAC7B,CAAC;;AAjEM,kBAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4ClB,AA5CY,CA4CX;AAGF;IADC,QAAQ,EAAE;0CACQ;AAjDP,WAAW;IADvB,aAAa,CAAC,iBAAiB,CAAC;GACpB,WAAW,CA0EvB","sourcesContent":["import { utils } from '@omegagrid/core';\nimport { FilterRange, FilterValue } from '@omegagrid/grid-core';\nimport { LitElement, html, css } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\n\nconst isRangeTerm = (v: unknown): v is FilterRange =>\n\t!!v && typeof v === 'object' && !Array.isArray(v) && (v as FilterRange).kind === 'range';\n\nconst formatRangePart = (v: unknown): string => {\n\tif (v == null || v === '') return '';\n\tif (v instanceof Date) return v.toLocaleDateString();\n\tif (typeof v === 'string') {\n\t\tconst d = new Date(v);\n\t\tif (!Number.isNaN(d.getTime())) return d.toLocaleDateString();\n\t\treturn v;\n\t}\n\treturn String(v);\n};\n\nconst formatRange = (r: FilterRange): string => {\n\tconst from = formatRangePart(r.from);\n\tconst to = formatRangePart(r.to);\n\tif (from && to) return `${from} – ${to}`;\n\tif (from) return `≥ ${from}`;\n\tif (to) return `≤ ${to}`;\n\treturn '';\n};\n\n\n@customElement('og-filter-label')\nexport class FilterLabel extends LitElement {\n\n\tstatic styles = css`\n\t\t:host {\n\t\t\tpadding: 0;\n\t\t\tdisplay: block;\n\t\t\talign-items: center;\n\t\t\tcursor: pointer;\n\t\t\theight: 100%;\n\t\t\tline-height: 21px;\n\t\t}\n\n\t\t:host(:hover og-icon) {\n\t\t\tbackground-color: var(--og-accent-color-highlight);\n\t\t}\n\n\t\tinput {\n\t\t\tcolor: var(--og-text-color);\n\t\t}\n\n\t\tog-icon {\n\t\t\tcolor: var(--og-accent-color);\n\t\t\tflex: 0;\n\t\t\tmin-width: 20px;\n\t\t\tpadding-top: 1px;\n\t\t\tpadding-left: 0px;\n\t\t}\n\n\t\t#filterIcon {\n\t\t\tposition: absolute;\n\t\t\tleft: 0px;\n\t\t\ttop: 0px;\n\t\t}\n\n\t\t.text {\n\t\t\tflex: 1;\n\t\t\theight: 100%;\n\t\t\tfont-style: italic;\n\t\t\tfont-weight: normal;\n\t\t}\n\n\t\t.text:empty {\n\t\t\tbackground-image: repeating-linear-gradient(45deg, var(--og-accent-color-alpha) 0, var(--og-accent-color-alpha) 2px, transparent 0, transparent 50%);\n\t\t\tbackground-size: 10px 10px;\n\t\t\tbackground-color: transparent;\n\t\t}\n\t`;\n\n\t@property()\n\tvalue: FilterValue;\n\n\tconstructor() {\n\t\tsuper();\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback();\n\t}\n\n\trenderValue() {\n\t\tif (this.value == null) return '';\n\t\tif (utils.isBool(this.value)) {\n\t\t\treturn html`<og-icon .icon=\"${this.value ? 'square-check' : 'square'}\"></og-icon>`;\n\t\t}\n\t\tif (isRangeTerm(this.value)) return formatRange(this.value);\n\t\tif (typeof this.value === 'object') return '';\n\t\treturn this.value as string;\n\t}\n\n\trender = () =>html`\n\t\t<og-icon id=\"filterIcon\" .icon=\"${{icon: \"filter\"}}\"></og-icon>\n\t\t<div class=\"text\">${this.renderValue()}</div>\n\t`;\n\t\n}"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grid.rendering.d.ts","sourceRoot":"","sources":["../../src/ui/grid.rendering.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA+B,MAAM,iBAAiB,CAAC;AAEzE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAA8B,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC7H,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAY,MAAM,SAAS,CAAC;AAG9D,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGhD,MAAM,MAAM,cAAc,GAAG;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,aAAa,CAAC,EAAE,OAAO,CAAA;CACvB,CAAC;AAEF,qBAAa,aAAa;IAqBb,QAAQ,CAAC,IAAI,EAAE,IAAI;IAnB/B,qBAAqB,UAAQ;IAC7B,uBAAuB,UAAS;IAChC,WAAW,EAAE,KAAK,CAAC;IACnB,WAAW,EAAE,KAAK,CAAC;IACnB,QAAQ,UAAS;IACjB,oBAAoB,EAAE,WAAW,CAAC;IAClC,yBAAyB,EAAE,MAAM,CAAC;IAClC,iBAAiB,EAAE,QAAQ,CAAC;IAC5B,uBAAuB,EAAE,MAAM,CAAC;IAEhC,OAAO,CAAC,WAAW,CAAQ;IAC3B,IAAI,UAAU,YAA8B;IAC5C,OAAO,CAAC,WAAW,CAAQ;IAC3B,IAAI,UAAU,YAA8B;IAE5C,IAAI,KAAK,6CAA6B;IACtC,IAAI,SAAS,kDAAiC;IAC9C,IAAI,KAAK,UAA6B;gBAEjB,IAAI,EAAE,IAAI;IAE/B,QAAQ,CAAC,mBAAmB;;uBA1BzB,CAAC;MA0B8F;IAClG,QAAQ,CAAC,yBAAyB;;uBA3B/B,CAAC;MA2BuE;IAE3E,mBAAmB;IAMnB,WAAW,CAAC,MAAM,CAAC,EAAE,kBAAkB;IAUvC,SAAS,CAAC,aAAa,UAAQ;IAKzB,MAAM,CAAC,aAAa,UAAQ;IAclC,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,UAAQ;IAMjD,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,UAAQ;IAI/C,kBAAkB,CAAC,IAAI,EAAE,SAAS;IAalC,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,WAAW,UAAQ;IAuB3D,aAAa;IAOb,iBAAiB,CAAC,WAAW,UAAQ;IAKrC,aAAa;IAUb,0BAA0B;IAK1B,4BAA4B;IAK5B,sBAAsB;IAoBtB,WAAW;IAKX,sBAAsB,CAAC,MAAM,EAAE,MAAM;IA6BrC,wBAAwB,CAAC,MAAM,EAAE,MAAM;IA0BvC,wBAAwB;IAOxB,wBAAwB,IAAI,cAAc;IAQpC,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,UAAO;IA6BnD,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,UAAO;IAQhD,iBAAiB,CAAC,KAAK,EAAE,MAAM;IAQ/B,oBAAoB,CAAC,KAAK,EAAE,MAAM;IAQ5B,UAAU;IAkEhB,mBAAmB,EAAE,SAAS,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IAExB,cAAc;IAMd,eAAe;IAcf,UAAU,CAAC,cAAc,EAAE;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAC;IA6B3C,IAAI,CAAC,cAAc,CAAC,EAAE,cAAc;IAuBpC,YAAY,CAAC,WAAW,GAAE,MAAa,EAAE,SAAS,UAAQ;IAiBhE,IAAI,SAAS;;;MAGV;IAEH,OAAO,CAAC,UAAU,CAAiB;IAEnC,aAAa,CAAC,CAAC,EAAE,MAAM,GAAC,WAAW,EAAE,iBAAiB,UAAQ,EAAE,QAAQ,UAAO;
|
|
1
|
+
{"version":3,"file":"grid.rendering.d.ts","sourceRoot":"","sources":["../../src/ui/grid.rendering.ts"],"names":[],"mappings":"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"}
|
|
@@ -423,6 +423,18 @@ export class GridRendering {
|
|
|
423
423
|
cellDiv.style.width = 'auto';
|
|
424
424
|
maxWidth = Math.max(maxWidth, cellDiv.offsetWidth);
|
|
425
425
|
}
|
|
426
|
+
if (column.header) {
|
|
427
|
+
for (const h of column.header) {
|
|
428
|
+
if (!h)
|
|
429
|
+
continue;
|
|
430
|
+
if (h.html)
|
|
431
|
+
div.innerHTML = h.label ?? '';
|
|
432
|
+
else
|
|
433
|
+
div.innerText = h.label ?? '';
|
|
434
|
+
maxWidth = Math.max(maxWidth, div.offsetWidth);
|
|
435
|
+
}
|
|
436
|
+
div.innerHTML = '';
|
|
437
|
+
}
|
|
426
438
|
column.width = maxWidth + 10;
|
|
427
439
|
if (rerender)
|
|
428
440
|
this.table.renderCells({ horizontal: true });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grid.rendering.js","sourceRoot":"","sources":["../../src/ui/grid.rendering.ts"],"names":[],"mappings":"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","sourcesContent":["import { Direction, dom, getThemeManager, utils } from \"@omegagrid/core\";\nimport { debounce } from \"ts-debounce\";\nimport { CellModel, ColumnModel, RowModel, CellRange, gridConstants as constants, RangeAddress } from \"@omegagrid/grid-core\";\nimport { Grid } from \"./grid\";\nimport { Table, TableRenderOptions, TableRow } from \"./table\";\nimport { GridEvent } from \"./grid.events\";\nimport { getCellRenderer } from \"../renderers\";\nimport { RequestFilters } from \"../gridAdapter\";\nimport { createThemeVariablesCss } from \"@omegagrid/core\";\n\nexport type RefreshOptions = {\n\tvertical?: boolean,\n\thorizontal?: boolean\n\trerenderTable?: boolean\n};\n\nexport class GridRendering {\n\n\trequireVerticalUpdate = true;\n\trequireHorizontalUpdate = false;\n\ttouchStartX: Touch;\n\ttouchStartY: Touch;\n\tresizing = false;\n\tcurrentResizedColumn: ColumnModel;\n\tcurrentResizedColumnWidth: number;\n\tcurrentResizedRow: RowModel;\n\tcurrentResizedRowHeight: number;\n\n\tprivate _vScrolling = true;\n\tget vScrolling() { return this._vScrolling }\n\tprivate _hScrolling = true;\n\tget hScrolling() { return this._hScrolling }\n\n\tget model() { return this.grid.model }\n\tget selection() { return this.grid.selection }\n\tget table() { return this.grid.table }\n\n\tconstructor(readonly grid: Grid) { }\n\n\treadonly debounceRenderCells = debounce(this.renderCells, 50, {isImmediate: false, maxWait: 100});\n\treadonly debounceCalculateViewport = debounce(this.calculateViewport, 200);\n\n\tisLastRowInViewport() {\n\t\tconst viewportRows = this.grid.table.viewport.rows;\n\t\tconst visibleRows = this.model.visibleRows;\n\t\treturn viewportRows[viewportRows.length - 1] == visibleRows[visibleRows.length - 1];\n\t}\n\n\trenderCells(update?: TableRenderOptions) {\n\t\tupdate = update || {vertical: this.requireVerticalUpdate, horizontal: this.requireHorizontalUpdate};\n\t\tthis.grid.comment.deatach();\n\t\tthis.grid.table.renderCells(update);\n\t\tthis.requireHorizontalUpdate = false;\n\t\tthis.requireVerticalUpdate = false;\n\t\tthis.debounceCalculateViewport();\n\t\tthis.grid.objects.updatePostions();\n\t}\n\n\trenderAll(rerenderTable = false) {\n\t\tif (this.grid.group) this.grid.group.grids.forEach((g: Grid) => g.rendering.render(rerenderTable));\n\t\telse this.render(rerenderTable);\n\t}\n\n\tasync render(rerenderTable = false) {\n\t\tif (!this.grid.table || !this.model) return;\n\t\tthis.grid.table.clearHeaderCache();\n\t\tthis.grid.table.clearBodyCache();\n\t\tif (this.grid.table.isConnected) {\n\t\t\tif (rerenderTable) {\n\t\t\t\tthis.grid.table.requestUpdate();\n\t\t\t\tawait this.grid.table.updateComplete;\n\t\t\t}\n\t\t\tthis.grid.table.renderCells({horizontal: true, vertical: true});\n\t\t\tthis.calculateViewport();\n\t\t}\n\t}\n\n\tupdateRange(range: CellRange, recalculate = false) {\n\t\tfor (const cell of this.model.getRangeIterator(range)) {\n\t\t\tthis.updateCells([cell], recalculate);\n\t\t}\n\t}\n\n\tupdateCell(cell: CellModel, recalculate = false) {\n\t\tthis.updateCells([cell], recalculate);\n\t}\n\n\tupdateSpilledCells(cell: CellModel) {\n\t\tlet spillCells: Set<CellModel>;\n\t\tif (cell.prevSpillRange) {\n\t\t\tspillCells = new Set();\n\t\t\tthis.model.getRangeIterator(cell.prevSpillRange).forEach(cell => spillCells.add(cell));\n\t\t}\n\t\tif (cell.spillRange) {\n\t\t\tspillCells = spillCells || new Set();\n\t\t\tthis.model.getRangeIterator(cell.spillRange).forEach(cell => spillCells.add(cell));\n\t\t}\n\t\tif (spillCells?.size > 0) this.updateCells(spillCells);\n\t}\n\n\tupdateCells(cells: Iterable<CellModel>, recalculate = false) {\n\t\tif (recalculate) {\n\t\t\tfor (const cell of cells) {\n\t\t\t\tcell.invalidateStyle();\n\t\t\t\tcell.invalidateValue();\n\t\t\t\tthis.model.calculations.clearDependecies(cell).evaluate(cell);\n\t\t\t\tthis.updateSpilledCells(cell);\n\t\t\t}\n\t\t}\n\n\t\tconst table = this.grid.table;\n\t\tfor (const cell of cells) table.renderBodyCell(cell);\n\t\t\n\t\tif (recalculate) {\n\t\t\tthis.model.calculations.invalidateDependants(cells).forEach((sheet, cell) => {\n\t\t\t\tif (sheet) this.grid.group.getGrid(sheet)?.table.renderBodyCell(cell);\n\t\t\t\telse table.renderBodyCell(cell);\n\t\t\t\tthis.updateSpilledCells(cell);\n\t\t\t});\n\t\t\tthis.grid.dispatchGridEvent('calculate', { cells: Array.from(cells) });\n\t\t}\n\t}\n\n\tupdateHeaders() {\n\t\tthis.model.indexVisibleColumns();\n\t\tthis.table.clearHeaderCache();\n\t\tthis.table.createHeaderRows();\n\t\tthis.table.renderHeader();\n\t}\n\n\tcalculateViewport(recalculate = false) {\n\t\tthis.grid.logger.info('calculate viwport');\n\t\tthis.updateCells(this.model.calculateViewport(), recalculate);\n\t}\n\n\tupdateSliders() {\n\t\tconst ws = this.table.viewportSize;\n\t\tthis.grid.vSlider.maxValue = this.model.visibleRows.length;\n\t\tthis.grid.vSlider.pageSize = ws.h / this.model.options.rowHeight;\n\t\tthis.grid.vSlider.value = this.table.rowOffset;\n\t\tthis.grid.hSlider.maxValue = this.model.visibleColumns.length;\n\t\tthis.grid.hSlider.pageSize = ws.w / this.model.options.columnWidth;\n\t\tthis.grid.hSlider.value = this.table.colOffset;\n\t}\n\n\tisVerticalScrollingEnabled() {\n\t\treturn this.grid.options.scrolling.verticalOverscroll !== false \n\t\t\t|| this.table.viewport.rows.length < this.model.visibleRows.length;\n\t}\n\n\tisHorizontalScrollingEnabled() {\n\t\treturn this.grid.options.scrolling.horizontalOverscroll !== false \n\t\t\t|| this.table.viewport.columns.length < this.model.visibleColumns.length;\n\t}\n\n\tupdateSliderVisibility() {\n\t\tthis._vScrolling = this.isVerticalScrollingEnabled();\n\t\tif (this._vScrolling) {\n\t\t\tthis.grid.vSlider.show();\n\t\t\tdom.showElement(this.grid.vSlider);\n\t\t} else {\n\t\t\tthis.grid.vSlider.hide();\n\t\t\tdom.hideElement(this.grid.vSlider);\n\t\t}\n\t\t\n\t\tthis._hScrolling = this.isHorizontalScrollingEnabled();\n\t\tif (this._hScrolling) {\n\t\t\tthis.grid.hSlider.show();\n\t\t\tdom.showElement(this.grid.hSlider);\n\t\t} else {\n\t\t\tthis.grid.hSlider.hide();\n\t\t\tdom.hideElement(this.grid.hSlider);\n\t\t}\n\t}\n\n\thideSliders() {\n\t\tthis.grid.vSlider.hide();\n\t\tthis.grid.hSlider.hide();\n\t}\n\n\tscrollVerticalByPixels(pixels: number) {\n\t\tif (!this.vScrolling) return;\n\n\t\tlet topRow = this.table.rowOffset;\n\t\tlet top = 0, r = 0;\n\t\tlet row: RowModel;\n\n\t\tif (pixels > 0) {\n\t\t\twhile (top < pixels && topRow + r < this.model.visibleRows.length) {\n\t\t\t\ttop += this.model.visibleRows[topRow + (r++)].height + 2;\n\t\t\t}\n\t\t\ttopRow = topRow + r;\n\t\t} else if (pixels < 0) {\n\t\t\tpixels = Math.abs(pixels);\n\t\t\twhile (top < pixels && topRow + r >= 0) {\n\t\t\t\trow = this.model.visibleRows[Math.min(this.model.visibleRows.length - 1, topRow + (r--))];\n\t\t\t\ttop += (row ? row.height : 0) + 2;\n\t\t\t}\n\t\t\ttopRow = topRow + r;\n\t\t}\n\n\t\tif (topRow >= this.model.visibleRows.length) topRow = this.model.visibleRows.length - 1;\n\t\t\n\t\tthis.requireVerticalUpdate = true;\n\t\tthis.table.rowOffset = Math.max(0, topRow);\n\t\tthis.debounceRenderCells();\n\t\tthis.updateSliders();\n\t}\n\n\tscrollHorizontalByPixels(pixels: number) {\n\t\tif (!this.hScrolling) return;\n\t\t\n\t\tlet leftCol = this.table.colOffset;\n\t\tlet left = 0, c = 0;\n\t\tif (pixels > 0) {\n\t\t\twhile (left < pixels && leftCol + c < this.model.visibleColumns.length) {\n\t\t\t\tleft += this.model.visibleColumns[leftCol + (c++)].width + 2;\n\t\t\t}\n\t\t\tleftCol = leftCol + c;\n\t\t} else if (pixels < 0) {\n\t\t\tpixels = Math.abs(pixels);\n\t\t\twhile (left < pixels && leftCol + c >= 0) {\n\t\t\t\tleft += this.model.visibleColumns[Math.min(this.model.visibleColumns.length - 1, leftCol + (c--))].width + 2;\n\t\t\t}\n\t\t\tleftCol = leftCol + c;\n\t\t}\n\n\t\tif (leftCol >= this.model.visibleColumns.length) leftCol = this.model.visibleColumns.length - 1;\n\n\t\tthis.requireHorizontalUpdate = true;\n\t\tthis.table.colOffset = Math.max(0, leftCol);\n\t\tthis.debounceRenderCells();\n\t\tthis.updateSliders();\n\t}\n\n\tupdateCellSelectionRange() {\n\t\tconst table = this.table;\n\t\tfor (const cell of this.model.getRangeIterator(this.selection.range, false)) {\n\t\t\ttable.renderBodyCell(cell);\n\t\t}\n\t}\n\n\tgetAdapterRequestFilters(): RequestFilters {\n\t\treturn {\n\t\t\toffset: 0,\n\t\t\tfilter: this.grid.filtering?.filter ? Array.from(this.grid.filtering.filter.settings.values()) : null,\n\t\t\torder: this.grid.model?.sorting?.settings\n\t\t};\n\t}\n\n\tasync toggleRow(index: number, dispatchEvent = true) {\n\t\tconst row = this.model.rows[index];\n\t\tif (row.isLoaded || row.isPartialyLoaded) {\n\t\t\trow.toggleCollapse(false, this.model.options.unhideRowAfterExpand);\n\t\t\tthis.table.renderCells({vertical: true});\n\t\t} else if (this.grid.adapter) {\n\t\t\tconst tr = this.table.getRowByModelIndex(index) as TableRow;\n\t\t\tif (tr && tr.expander) tr.expander.state = 'waiting';\n\t\n\t\t\trow.collapsed = false;\n\n\t\t\tconst requestFilters = Object.assign(this.getAdapterRequestFilters(), {\n\t\t\t\tparent: {r: row.index, props: row.properties}\n\t\t\t})\n\n\t\t\tconst [newRowSources] = await Promise.all([this.grid.adapter.getRows(requestFilters)]);\n\t\t\tthis.model.insertRowData(row, 0, newRowSources);\n\t\t\t\n\t\t\trequestFilters.rows = newRowSources;\n\t\t\tconst [newCellSources] = await Promise.all([this.grid.adapter.getCells(requestFilters)]);\n\t\t\tnewCellSources?.map(cellSource => this.model.getCellByCoords(cellSource.r, cellSource.c)?.update(cellSource));\n\t\t\n\t\t\tthis.table.requestUpdate();\n\t\t}\n\n\t\tthis.updateSliders();\n\t\tif (dispatchEvent) this.grid.dispatchEvent(new GridEvent('row.toggle', {grid: this.grid, row}));\n\t}\n\t\n\ttoggleColumn(index: number, dispatchEvent = true) {\n\t\tconst column = this.model.columns[index];\n\t\tcolumn.toggleCollapse(false, this.model.options.unhideColumnAfterExpand);\n\t\tthis.table.renderCells({horizontal: true});\n\t\tthis.updateSliders();\n\t\tif (dispatchEvent) this.grid.dispatchEvent(new GridEvent('column.toggle', {grid: this.grid, column }));\n\t}\n\n\tsetRowExpandLevel(level: number) {\n\t\tthis.model.setRowExpandLevel(level);\n\t\tthis.table.rowOffset = 0;\n\t\tthis.table.renderCells({vertical: true});\n\t\tthis.updateSliders();\n\t\tthis.grid.dispatchEvent(new GridEvent('row.toggle', {grid: this.grid}));\n\t}\n\n\tsetColumnExpandLevel(level: number) {\n\t\tthis.model.setColumnExpandLevel(level);\n\t\tthis.table.colOffset = 0;\n\t\tthis.table.renderCells({horizontal: true});\n\t\tthis.updateSliders();\n\t\tthis.grid.dispatchEvent(new GridEvent('column.toggle', {grid: this.grid}));\n\t}\n\n\tasync exportHTML() {\n\t\tconst div = dom.createElement<HTMLDivElement>('div');\n\t\tdom.hideElement(div);\n\t\tdocument.body.appendChild(div);\n\t\tconst table = dom.createElement<Table>('og-table');\n\t\ttable.grid = this.grid;\n\t\ttable.model = this.model;\n\t\ttable.renderAll = true;\n\t\tdiv.appendChild(table);\n\t\tawait table.updateComplete;\n\n\t\tconst rowBreaks = this.model.options?.print?.rowBreaks;\n\t\tconst tableElm = table.table;\n\n\t\t// split table into multiple tables if page breaks are defined\n\t\tconst hasRowBreaks = rowBreaks && rowBreaks.length > 0;\n\t\tif (hasRowBreaks) {\n\t\t\tconst colgroup = tableElm.querySelector('colgroup');\n\t\t\tconst rows = [...tableElm.tBodies[0].rows];\n\n\t\t\tconst rowTitlesRange = this.model.options?.print?.rowTitles \n\t\t\t\t? CellRange.fromA1(this.model.options?.print?.rowTitles) : null;\n\n\t\t\tconst rowTitles = rowTitlesRange ? Array.from({\n\t\t\t\tlength: rowTitlesRange.r2 - rowTitlesRange.r1 + 1}, \n\t\t\t\t(_, i) => rows[table.rowMap.get(rowTitlesRange.r1 + i)]\n\t\t\t) : [];\n\n\t\t\tfor (let i = 0; i < rowBreaks.length; i++) {\n\t\t\t\tconst tableElm2 = dom.createElement<HTMLTableElement>('table');\n\t\t\t\ttableElm2.appendChild(colgroup.cloneNode(true));\n\t\t\t\tconst tbody = dom.createElement<HTMLTableSectionElement>('tbody');\n\t\t\t\ttableElm2.appendChild(tbody);\n\n\t\t\t\tconst rMin = table.rowMap.get(rowBreaks[i]);\n\t\t\t\tconst rMax = i < rowBreaks.length - 1 \n\t\t\t\t\t? table.rowMap.get(rowBreaks[i + 1]) \n\t\t\t\t\t: this.model.visibleRows.length - 1;\n\n\t\t\t\trowTitles.forEach(row => tbody.appendChild(row.cloneNode(true)));\n\n\t\t\t\tfor (let r = rMin; r <= rMax; r++) {\n\t\t\t\t\ttbody.appendChild(rows[r]);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\ttable.shadowRoot.appendChild(tableElm2);\n\t\t\t}\n\n\t\t\tcolgroup.cloneNode(true);\n\t\t}\n\n\t\tconst tableCss = `\n\t\t\t<style>\n\t\t\t\thtml {\n\t\t\t\t\t${createThemeVariablesCss(getThemeManager().themes.get('light')).cssText}\n\t\t\t\t}\n\t\t\t\t${hasRowBreaks ? 'table {break-after: page}' : ''}\n\t\t\t\t${Table.styles.map(style => style.cssText).join('\\n')}\n\t\t\t</style>\\n\n\t\t`;\n\n\t\tconst html = tableCss + table.shadowRoot.innerHTML.replace(/<!---->/g, '');\n\t\tdiv.remove();\n\t\treturn html;\n\t}\n\n\tautoscrollDirection: Direction;\n\tautoscrollTimer: number;\n\tautoscrollValue: number;\n\n\tstopAutoscroll() {\n\t\tif (this.autoscrollTimer) {\n\t\t\twindow.clearInterval(this.autoscrollTimer);\n\t\t}\n\t}\n\n\tstartAutoscroll() {\n\t\tthis.stopAutoscroll();\n\t\tthis.autoscrollTimer = window.setInterval(() => {\n\t\t\tif (this.autoscrollValue == 0) return this.stopAutoscroll();\n\t\t\tconst amount = Math.pow(this.autoscrollValue, constants.AUTOSCROLL_RATIO);\n\t\t\tswitch (this.autoscrollDirection) {\n\t\t\t\tcase 'down': this.scrollVerticalByPixels(amount); break;\n\t\t\t\tcase 'up': this.scrollVerticalByPixels(-amount); break;\n\t\t\t\tcase 'left': this.scrollHorizontalByPixels(-amount); break;\n\t\t\t\tcase 'right': this.scrollHorizontalByPixels(amount); break;\n\t\t\t}\n\t\t}, constants.AUTOSCROLL_INTERVAL);\n\t}\n\n\tautoscroll(moousePosition: {x: number, y: number}) {\n\t\tconst { x, y } = moousePosition;\n\t\tconst w = (this.table.clientWidth / this.table.zoom) - this.table.totalHeaderWidth;\n\t\tconst h = (this.table.clientHeight / this.table.zoom) - (this.table.totalHeaderHeight);\n\t\tlet direction: Direction;\n\t\tlet value = 0;\n\n\t\tif (x < constants.AUTOSCROLL_TRESHOLD && x < y && x < h - y) {\n\t\t\tdirection = 'left';\n\t\t\tvalue = constants.AUTOSCROLL_TRESHOLD - x;\n\t\t} else if (w - x < constants.AUTOSCROLL_TRESHOLD && w - x < y && w - x < h - y) {\n\t\t\tdirection = 'right';\n\t\t\tvalue = constants.AUTOSCROLL_TRESHOLD - w + x;\n\t\t} else if (y < constants.AUTOSCROLL_TRESHOLD) {\n\t\t\tdirection = 'up';\n\t\t\tvalue = constants.AUTOSCROLL_TRESHOLD - y;\n\t\t} else if (h - y < constants.AUTOSCROLL_TRESHOLD) {\n\t\t\tdirection = 'down';\n\t\t\tvalue = constants.AUTOSCROLL_TRESHOLD - h + y;\n\t\t}\n\n\t\tthis.autoscrollDirection = direction;\n\t\tthis.autoscrollValue = value;\n\t\tthis.stopAutoscroll();\n\t\tif (value > 0) {\n\t\t\tthis.startAutoscroll();\n\t\t}\n\t}\n\n\tasync load(requestFilters?: RequestFilters) {\n\t\trequestFilters = requestFilters || this.getAdapterRequestFilters();\n\t\tconst parentIndex = requestFilters.parent?.r ?? null;\n\t\tconst parentRow = parentIndex != null ? this.model.rows[parentIndex] : this.model.rowRoot;\n\t\t\n\t\tconst [newRowSources] = await Promise.all([this.grid.adapter.getRows(requestFilters)]);\n\t\tif (newRowSources.length > 0 && parentIndex === null) {\n\t\t\tthis.model.insertRowData(parentRow, requestFilters.offset, newRowSources);\n\t\t}\n\t\t\n\t\tconst [newCellSources] = await Promise.all([this.grid.adapter.getCells(requestFilters)]);\n\t\tnewCellSources?.map(cellSource => this.model.getCellByCoords(cellSource.r, cellSource.c)?.update(cellSource));\n\t\t\n\t\tthis.table.requestUpdate();\n\n\t\tif (newRowSources.length >= this.model.options.pageSize) parentRow.count = Infinity;\n\t\telse parentRow.count = parentRow.children.length;\n\n\t\tthis.grid.logger.info(`loaded ${newRowSources.length} rows`);\n\t\tthis.grid.loading = false;\n\t\tthis.grid.dispatchEvent(new GridEvent('afterLoad', {grid: this.grid}));\n\t}\n\n\tasync loadNextPage(parentIndex: number = null, forceLoad = false) {\n\t\tif (this.grid.loading) return;\n\t\tconst parentRow = parentIndex != null ? this.model.rows[parentIndex] : this.model.rowRoot;\n\t\tif (!forceLoad && parentRow.isLoaded) return;\n\n\t\tthis.grid.dispatchEvent(new GridEvent('beforeLoad', {grid: this.grid}));\n\t\tthis.grid.loading = true;\n\n\t\tconst offset = this.model.rows.length;\n\t\tthis.grid.logger.info(`loading rows offset = ${offset}`);\n\n\t\tawait this.load(Object.assign(this.getAdapterRequestFilters(), {\n\t\t\toffset: offset,\n\t\t\tparent: {r: parentIndex, props: null}\n\t\t}));\n\t}\n\n\tget totalSize() { return {\n\t\twidth: this.table.totalHeaderWidth + this.model.visibleColumns.reduce((acc, col) => acc + col.width, 0),\n\t\theight: this.table.thead.offsetHeight + this.model.visibleRows.reduce((acc, row) => acc + row.height, 0)\n\t} }\n\n\tprivate autofitDiv: HTMLDivElement;\n\n\tautofitColumn(c: number|ColumnModel, visibleValuesOnly = false, rerender = true) {\n\t\tconst column = typeof c === 'number' ? this.model.columns[c] : c;\n\t\tconst div = this.autofitDiv ?? (this.autofitDiv = dom.createElement<HTMLDivElement>('div'));\n\t\tdiv.style.position = 'absolute';\n\t\tdiv.style.zIndex = '100000';\n\t\tdom.setPosition(div, {l: -1000, t: -1000});\n\t\tthis.grid.shadowRoot.appendChild(div);\n\t\tlet maxWidth = 0;\n\t\tfor (const cell of this.model.getRangeIterator(CellRange.fromA1(column.address), !!visibleValuesOnly)) {\n\t\t\tconst cellDiv: HTMLDivElement = getCellRenderer(cell).call(this.table, div, cell) || div;\n\t\t\tcellDiv.style.width = 'auto';\n\t\t\tmaxWidth = Math.max(maxWidth, cellDiv.offsetWidth);\n\t\t}\n\t\tcolumn.width = maxWidth + 10;\n\t\tif (rerender) this.table.renderCells({horizontal: true});\n\t}\n\n\tautofitColumns(visibleValuesOnly = false) {\n\t\tthis.model.columns.forEach(col => this.autofitColumn(col, visibleValuesOnly, false));\n\t\tthis.table.renderCells({horizontal: true});\n\t}\n\n\tautofitRow(r: number|RowModel, visibleValuesOnly = false, rerender = true) {\n\t\tconst row = typeof r === 'number' ? this.model.rows[r] : r;\n\t\tconst div = this.autofitDiv ?? (this.autofitDiv = dom.createElement<HTMLDivElement>('div'));\n\t\tdiv.style.position = 'absolute';\n\t\tdiv.style.zIndex = '100000';\n\n\t\t// div.style.backgroundColor = 'red';\n\t\t// dom.setPosition(div, {l: 100, t: 100});\n\n\t\tdom.setPosition(div, {l: -1000, t: -1000});\n\t\tthis.grid.shadowRoot.appendChild(div);\n\t\tlet maxHeight = 0;\n\t\tfor (const cell of this.model.getRangeIterator(CellRange.fromA1(row.address), !!visibleValuesOnly)) {\n\t\t\tconst cellDiv: HTMLDivElement = getCellRenderer(cell).call(this.table, div, cell) || div;\n\t\t\tcellDiv.style.height = 'auto';\n\t\t\tmaxHeight = Math.max(maxHeight, cellDiv.offsetHeight);\n\t\t}\n\t\trow.height = maxHeight + 8;\n\t\tif (rerender) this.table.renderCells({vertical: true});\n\t}\n\n\tautofitRows(visibleValuesOnly = false) {\n\t\tthis.model.rows.forEach(row => this.autofitRow(row, visibleValuesOnly, false));\n\t\tthis.table.renderCells({vertical: true});\n\t}\n\n\tscrollTo(r: number|RangeAddress, c = 0) {\n\t\tlet range: CellRange;\n\t\tif (utils.isString(r)) range = CellRange.fromA1(r as RangeAddress);\n\t\telse range = new CellRange(c, r as number);\n\n\t\tthis.table.rowOffset = range.r1;\n\t\tthis.table.colOffset = range.c1;\n\t\tthis.requireVerticalUpdate = true;\n\t\tthis.requireHorizontalUpdate = true;\n\t\tthis.debounceRenderCells();\n\t\tthis.updateSliders();\n\t}\n\n}"]}
|
|
1
|
+
{"version":3,"file":"grid.rendering.js","sourceRoot":"","sources":["../../src/ui/grid.rendering.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAoC,SAAS,EAAE,aAAa,IAAI,SAAS,EAAgB,MAAM,sBAAsB,CAAC;AAE7H,OAAO,EAAE,KAAK,EAAgC,MAAM,SAAS,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAQ1D,MAAM,OAAO,aAAa;IAazB,IAAI,UAAU,KAAK,OAAO,IAAI,CAAC,WAAW,CAAA,CAAC,CAAC;IAE5C,IAAI,UAAU,KAAK,OAAO,IAAI,CAAC,WAAW,CAAA,CAAC,CAAC;IAE5C,IAAI,KAAK,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAA,CAAC,CAAC;IACtC,IAAI,SAAS,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAA,CAAC,CAAC;IAC9C,IAAI,KAAK,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAA,CAAC,CAAC;IAEtC,YAAqB,IAAU;QAAV,SAAI,GAAJ,IAAI,CAAM;QAnB/B,0BAAqB,GAAG,IAAI,CAAC;QAC7B,4BAAuB,GAAG,KAAK,CAAC;QAGhC,aAAQ,GAAG,KAAK,CAAC;QAMT,gBAAW,GAAG,IAAI,CAAC;QAEnB,gBAAW,GAAG,IAAI,CAAC;QASlB,wBAAmB,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE,EAAC,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAC,CAAC,CAAC;QACzF,8BAAyB,GAAG,QAAQ,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;IAHxC,CAAC;IAKpC,mBAAmB;QAClB,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;QACnD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;QAC3C,OAAO,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrF,CAAC;IAED,WAAW,CAAC,MAA2B;QACtC,MAAM,GAAG,MAAM,IAAI,EAAC,QAAQ,EAAE,IAAI,CAAC,qBAAqB,EAAE,UAAU,EAAE,IAAI,CAAC,uBAAuB,EAAC,CAAC;QACpG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;QACrC,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;QACnC,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;IACpC,CAAC;IAED,SAAS,CAAC,aAAa,GAAG,KAAK;QAC9B,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAO,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;;YAC9F,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,aAAa,GAAG,KAAK;QACjC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO;QAC5C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;QACjC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACjC,IAAI,aAAa,EAAE,CAAC;gBACnB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;gBAChC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC;YACtC,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;YAChE,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC1B,CAAC;IACF,CAAC;IAED,WAAW,CAAC,KAAgB,EAAE,WAAW,GAAG,KAAK;QAChD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;YACvD,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC;QACvC,CAAC;IACF,CAAC;IAED,UAAU,CAAC,IAAe,EAAE,WAAW,GAAG,KAAK;QAC9C,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC;IACvC,CAAC;IAED,kBAAkB,CAAC,IAAe;QACjC,IAAI,UAA0B,CAAC;QAC/B,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;YACvB,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QACxF,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,UAAU,GAAG,UAAU,IAAI,IAAI,GAAG,EAAE,CAAC;YACrC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QACpF,CAAC;QACD,IAAI,UAAU,EAAE,IAAI,GAAG,CAAC;YAAE,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IACxD,CAAC;IAED,WAAW,CAAC,KAA0B,EAAE,WAAW,GAAG,KAAK;QAC1D,IAAI,WAAW,EAAE,CAAC;YACjB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBAC1B,IAAI,CAAC,eAAe,EAAE,CAAC;gBACvB,IAAI,CAAC,eAAe,EAAE,CAAC;gBACvB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAC9D,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAC/B,CAAC;QACF,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QAC9B,KAAK,MAAM,IAAI,IAAI,KAAK;YAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAErD,IAAI,WAAW,EAAE,CAAC;YACjB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;gBAC3E,IAAI,KAAK;oBAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;;oBACjE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;gBAChC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAC/B,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACxE,CAAC;IACF,CAAC;IAED,aAAa;QACZ,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;IAC3B,CAAC;IAED,iBAAiB,CAAC,WAAW,GAAG,KAAK;QACpC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC3C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,WAAW,CAAC,CAAC;IAC/D,CAAC;IAED,aAAa;QACZ,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC;QAC3D,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;QACjE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;QAC/C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC;QAC9D,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;QACnE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;IAChD,CAAC;IAED,0BAA0B;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,kBAAkB,KAAK,KAAK;eAC3D,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC;IACrE,CAAC;IAED,4BAA4B;QAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,oBAAoB,KAAK,KAAK;eAC7D,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC;IAC3E,CAAC;IAED,sBAAsB;QACrB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,0BAA0B,EAAE,CAAC;QACrD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACzB,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACzB,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACvD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACzB,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACzB,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC;IACF,CAAC;IAED,WAAW;QACV,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IAC1B,CAAC;IAED,sBAAsB,CAAC,MAAc;QACpC,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO;QAE7B,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;QAClC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACnB,IAAI,GAAa,CAAC;QAElB,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;YAChB,OAAO,GAAG,GAAG,MAAM,IAAI,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;gBACnE,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YAC1D,CAAC;YACD,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;QACrB,CAAC;aAAM,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC1B,OAAO,GAAG,GAAG,MAAM,IAAI,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC1F,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACnC,CAAC;YACD,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;QACrB,CAAC;QAED,IAAI,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM;YAAE,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;QAExF,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;QAClC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAC3C,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,aAAa,EAAE,CAAC;IACtB,CAAC;IAED,wBAAwB,CAAC,MAAc;QACtC,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO;QAE7B,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;QACnC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACpB,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;YAChB,OAAO,IAAI,GAAG,MAAM,IAAI,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;gBACxE,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;YAC9D,CAAC;YACD,OAAO,GAAG,OAAO,GAAG,CAAC,CAAC;QACvB,CAAC;aAAM,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC1B,OAAO,IAAI,GAAG,MAAM,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1C,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;YAC9G,CAAC;YACD,OAAO,GAAG,OAAO,GAAG,CAAC,CAAC;QACvB,CAAC;QAED,IAAI,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM;YAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;QAEhG,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,aAAa,EAAE,CAAC;IACtB,CAAC;IAED,wBAAwB;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC;YAC7E,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;IACF,CAAC;IAED,wBAAwB;QACvB,OAAO;YACN,MAAM,EAAE,CAAC;YACT,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI;YACrG,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ;SACzC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAa,EAAE,aAAa,GAAG,IAAI;QAClD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,gBAAgB,EAAE,CAAC;YAC1C,GAAG,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;YACnE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;QAC1C,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAC9B,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,KAAK,CAAa,CAAC;YAC5D,IAAI,EAAE,IAAI,EAAE,CAAC,QAAQ;gBAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAC;YAErD,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC;YAEtB,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAE;gBACrE,MAAM,EAAE,EAAC,CAAC,EAAE,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,UAAU,EAAC;aAC7C,CAAC,CAAA;YAEF,MAAM,CAAC,aAAa,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YACvF,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC;YAEhD,cAAc,CAAC,IAAI,GAAG,aAAa,CAAC;YACpC,MAAM,CAAC,cAAc,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YACzF,cAAc,EAAE,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;YAE9G,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;QAC5B,CAAC;QAED,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,aAAa;YAAE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,SAAS,CAAC,YAAY,EAAE,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAC,CAAC,CAAC,CAAC;IACjG,CAAC;IAED,YAAY,CAAC,KAAa,EAAE,aAAa,GAAG,IAAI;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;QACzE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAC,UAAU,EAAE,IAAI,EAAC,CAAC,CAAC;QAC3C,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,aAAa;YAAE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,SAAS,CAAC,eAAe,EAAE,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACxG,CAAC;IAED,iBAAiB,CAAC,KAAa;QAC9B,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;QACzC,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,SAAS,CAAC,YAAY,EAAE,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAC,CAAC,CAAC,CAAC;IACzE,CAAC;IAED,oBAAoB,CAAC,KAAa;QACjC,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAC,UAAU,EAAE,IAAI,EAAC,CAAC,CAAC;QAC3C,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,SAAS,CAAC,eAAe,EAAE,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAC,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,KAAK,CAAC,UAAU;QACf,MAAM,GAAG,GAAG,GAAG,CAAC,aAAa,CAAiB,KAAK,CAAC,CAAC;QACrD,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACrB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAG,GAAG,CAAC,aAAa,CAAQ,UAAU,CAAC,CAAC;QACnD,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;QACvB,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACvB,MAAM,KAAK,CAAC,cAAc,CAAC;QAE3B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC;QACvD,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC;QAE7B,8DAA8D;QAC9D,MAAM,YAAY,GAAG,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;QACvD,IAAI,YAAY,EAAE,CAAC;YAClB,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YACpD,MAAM,IAAI,GAAG,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAE3C,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS;gBAC1D,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAEjE,MAAM,SAAS,GAAG,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;gBAC7C,MAAM,EAAE,cAAc,CAAC,EAAE,GAAG,cAAc,CAAC,EAAE,GAAG,CAAC;aAAC,EAClD,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CACvD,CAAC,CAAC,CAAC,EAAE,CAAC;YAEP,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3C,MAAM,SAAS,GAAG,GAAG,CAAC,aAAa,CAAmB,OAAO,CAAC,CAAC;gBAC/D,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gBAChD,MAAM,KAAK,GAAG,GAAG,CAAC,aAAa,CAA0B,OAAO,CAAC,CAAC;gBAClE,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBAE7B,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5C,MAAM,IAAI,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC;oBACpC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;oBACpC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;gBAErC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAEjE,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;oBACnC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5B,CAAC;gBAED,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YACzC,CAAC;YAED,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QAED,MAAM,QAAQ,GAAG;;;OAGZ,uBAAuB,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO;;MAEvE,YAAY,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,EAAE;MAC/C,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;GAEtD,CAAC;QAEF,MAAM,IAAI,GAAG,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAC3E,GAAG,CAAC,MAAM,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACb,CAAC;IAMD,cAAc;QACb,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1B,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC5C,CAAC;IACF,CAAC;IAED,eAAe;QACd,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE;YAC9C,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;YAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC;YAC1E,QAAQ,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAClC,KAAK,MAAM;oBAAE,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;oBAAC,MAAM;gBACxD,KAAK,IAAI;oBAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;oBAAC,MAAM;gBACvD,KAAK,MAAM;oBAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC;oBAAC,MAAM;gBAC3D,KAAK,OAAO;oBAAE,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;oBAAC,MAAM;YAC5D,CAAC;QACF,CAAC,EAAE,SAAS,CAAC,mBAAmB,CAAC,CAAC;IACnC,CAAC;IAED,UAAU,CAAC,cAAsC;QAChD,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,cAAc,CAAC;QAChC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC;QACnF,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACvF,IAAI,SAAoB,CAAC;QACzB,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,IAAI,CAAC,GAAG,SAAS,CAAC,mBAAmB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7D,SAAS,GAAG,MAAM,CAAC;YACnB,KAAK,GAAG,SAAS,CAAC,mBAAmB,GAAG,CAAC,CAAC;QAC3C,CAAC;aAAM,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,mBAAmB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAChF,SAAS,GAAG,OAAO,CAAC;YACpB,KAAK,GAAG,SAAS,CAAC,mBAAmB,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/C,CAAC;aAAM,IAAI,CAAC,GAAG,SAAS,CAAC,mBAAmB,EAAE,CAAC;YAC9C,SAAS,GAAG,IAAI,CAAC;YACjB,KAAK,GAAG,SAAS,CAAC,mBAAmB,GAAG,CAAC,CAAC;QAC3C,CAAC;aAAM,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,mBAAmB,EAAE,CAAC;YAClD,SAAS,GAAG,MAAM,CAAC;YACnB,KAAK,GAAG,SAAS,CAAC,mBAAmB,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/C,CAAC;QAED,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;QACrC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACf,IAAI,CAAC,eAAe,EAAE,CAAC;QACxB,CAAC;IACF,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,cAA+B;QACzC,cAAc,GAAG,cAAc,IAAI,IAAI,CAAC,wBAAwB,EAAE,CAAC;QACnE,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,IAAI,IAAI,CAAC;QACrD,MAAM,SAAS,GAAG,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;QAE1F,MAAM,CAAC,aAAa,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QACvF,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACtD,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,EAAE,cAAc,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAC3E,CAAC;QAED,MAAM,CAAC,cAAc,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QACzF,cAAc,EAAE,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;QAE9G,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;QAE3B,IAAI,aAAa,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ;YAAE,SAAS,CAAC,KAAK,GAAG,QAAQ,CAAC;;YAC/E,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;QAEjD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,aAAa,CAAC,MAAM,OAAO,CAAC,CAAC;QAC7D,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,SAAS,CAAC,WAAW,EAAE,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAC,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,cAAsB,IAAI,EAAE,SAAS,GAAG,KAAK;QAC/D,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC9B,MAAM,SAAS,GAAG,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;QAC1F,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,QAAQ;YAAE,OAAO;QAE7C,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,SAAS,CAAC,YAAY,EAAE,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAC,CAAC,CAAC,CAAC;QACxE,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAEzB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;QACtC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,MAAM,EAAE,CAAC,CAAC;QAEzD,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAE;YAC9D,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,EAAC,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAC;SACrC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,SAAS;QAAK,OAAO;YACxB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;YACvG,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;SACxG,CAAA;IAAC,CAAC;IAIH,aAAa,CAAC,CAAqB,EAAE,iBAAiB,GAAG,KAAK,EAAE,QAAQ,GAAG,IAAI;QAC9E,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,aAAa,CAAiB,KAAK,CAAC,CAAC,CAAC;QAC5F,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;QAChC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC;QAC5B,GAAG,CAAC,WAAW,CAAC,GAAG,EAAE,EAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,IAAI,EAAC,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACvG,MAAM,OAAO,GAAmB,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC;YACzF,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;YAC7B,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QACpD,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAC/B,IAAI,CAAC,CAAC;oBAAE,SAAS;gBACjB,IAAI,CAAC,CAAC,IAAI;oBAAE,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;;oBACrC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBACnC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;YAChD,CAAC;YACD,GAAG,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,CAAC;QACD,MAAM,CAAC,KAAK,GAAG,QAAQ,GAAG,EAAE,CAAC;QAC7B,IAAI,QAAQ;YAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAC,UAAU,EAAE,IAAI,EAAC,CAAC,CAAC;IAC1D,CAAC;IAED,cAAc,CAAC,iBAAiB,GAAG,KAAK;QACvC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAC,CAAC;QACrF,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAC,UAAU,EAAE,IAAI,EAAC,CAAC,CAAC;IAC5C,CAAC;IAED,UAAU,CAAC,CAAkB,EAAE,iBAAiB,GAAG,KAAK,EAAE,QAAQ,GAAG,IAAI;QACxE,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,aAAa,CAAiB,KAAK,CAAC,CAAC,CAAC;QAC5F,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;QAChC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC;QAE5B,qCAAqC;QACrC,0CAA0C;QAE1C,GAAG,CAAC,WAAW,CAAC,GAAG,EAAE,EAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,IAAI,EAAC,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACpG,MAAM,OAAO,GAAmB,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC;YACzF,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;YAC9B,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;QACvD,CAAC;QACD,GAAG,CAAC,MAAM,GAAG,SAAS,GAAG,CAAC,CAAC;QAC3B,IAAI,QAAQ;YAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;IACxD,CAAC;IAED,WAAW,CAAC,iBAAiB,GAAG,KAAK;QACpC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAC,CAAC;QAC/E,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;IAC1C,CAAC;IAED,QAAQ,CAAC,CAAsB,EAAE,CAAC,GAAG,CAAC;QACrC,IAAI,KAAgB,CAAC;QACrB,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAiB,CAAC,CAAC;;YAC9D,KAAK,GAAG,IAAI,SAAS,CAAC,CAAC,EAAE,CAAW,CAAC,CAAC;QAE3C,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,EAAE,CAAC;QAChC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,EAAE,CAAC;QAChC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;QAClC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;QACpC,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,aAAa,EAAE,CAAC;IACtB,CAAC;CAED","sourcesContent":["import { Direction, dom, getThemeManager, utils } from \"@omegagrid/core\";\nimport { debounce } from \"ts-debounce\";\nimport { CellModel, ColumnModel, RowModel, CellRange, gridConstants as constants, RangeAddress } from \"@omegagrid/grid-core\";\nimport { Grid } from \"./grid\";\nimport { Table, TableRenderOptions, TableRow } from \"./table\";\nimport { GridEvent } from \"./grid.events\";\nimport { getCellRenderer } from \"../renderers\";\nimport { RequestFilters } from \"../gridAdapter\";\nimport { createThemeVariablesCss } from \"@omegagrid/core\";\n\nexport type RefreshOptions = {\n\tvertical?: boolean,\n\thorizontal?: boolean\n\trerenderTable?: boolean\n};\n\nexport class GridRendering {\n\n\trequireVerticalUpdate = true;\n\trequireHorizontalUpdate = false;\n\ttouchStartX: Touch;\n\ttouchStartY: Touch;\n\tresizing = false;\n\tcurrentResizedColumn: ColumnModel;\n\tcurrentResizedColumnWidth: number;\n\tcurrentResizedRow: RowModel;\n\tcurrentResizedRowHeight: number;\n\n\tprivate _vScrolling = true;\n\tget vScrolling() { return this._vScrolling }\n\tprivate _hScrolling = true;\n\tget hScrolling() { return this._hScrolling }\n\n\tget model() { return this.grid.model }\n\tget selection() { return this.grid.selection }\n\tget table() { return this.grid.table }\n\n\tconstructor(readonly grid: Grid) { }\n\n\treadonly debounceRenderCells = debounce(this.renderCells, 50, {isImmediate: false, maxWait: 100});\n\treadonly debounceCalculateViewport = debounce(this.calculateViewport, 200);\n\n\tisLastRowInViewport() {\n\t\tconst viewportRows = this.grid.table.viewport.rows;\n\t\tconst visibleRows = this.model.visibleRows;\n\t\treturn viewportRows[viewportRows.length - 1] == visibleRows[visibleRows.length - 1];\n\t}\n\n\trenderCells(update?: TableRenderOptions) {\n\t\tupdate = update || {vertical: this.requireVerticalUpdate, horizontal: this.requireHorizontalUpdate};\n\t\tthis.grid.comment.deatach();\n\t\tthis.grid.table.renderCells(update);\n\t\tthis.requireHorizontalUpdate = false;\n\t\tthis.requireVerticalUpdate = false;\n\t\tthis.debounceCalculateViewport();\n\t\tthis.grid.objects.updatePostions();\n\t}\n\n\trenderAll(rerenderTable = false) {\n\t\tif (this.grid.group) this.grid.group.grids.forEach((g: Grid) => g.rendering.render(rerenderTable));\n\t\telse this.render(rerenderTable);\n\t}\n\n\tasync render(rerenderTable = false) {\n\t\tif (!this.grid.table || !this.model) return;\n\t\tthis.grid.table.clearHeaderCache();\n\t\tthis.grid.table.clearBodyCache();\n\t\tif (this.grid.table.isConnected) {\n\t\t\tif (rerenderTable) {\n\t\t\t\tthis.grid.table.requestUpdate();\n\t\t\t\tawait this.grid.table.updateComplete;\n\t\t\t}\n\t\t\tthis.grid.table.renderCells({horizontal: true, vertical: true});\n\t\t\tthis.calculateViewport();\n\t\t}\n\t}\n\n\tupdateRange(range: CellRange, recalculate = false) {\n\t\tfor (const cell of this.model.getRangeIterator(range)) {\n\t\t\tthis.updateCells([cell], recalculate);\n\t\t}\n\t}\n\n\tupdateCell(cell: CellModel, recalculate = false) {\n\t\tthis.updateCells([cell], recalculate);\n\t}\n\n\tupdateSpilledCells(cell: CellModel) {\n\t\tlet spillCells: Set<CellModel>;\n\t\tif (cell.prevSpillRange) {\n\t\t\tspillCells = new Set();\n\t\t\tthis.model.getRangeIterator(cell.prevSpillRange).forEach(cell => spillCells.add(cell));\n\t\t}\n\t\tif (cell.spillRange) {\n\t\t\tspillCells = spillCells || new Set();\n\t\t\tthis.model.getRangeIterator(cell.spillRange).forEach(cell => spillCells.add(cell));\n\t\t}\n\t\tif (spillCells?.size > 0) this.updateCells(spillCells);\n\t}\n\n\tupdateCells(cells: Iterable<CellModel>, recalculate = false) {\n\t\tif (recalculate) {\n\t\t\tfor (const cell of cells) {\n\t\t\t\tcell.invalidateStyle();\n\t\t\t\tcell.invalidateValue();\n\t\t\t\tthis.model.calculations.clearDependecies(cell).evaluate(cell);\n\t\t\t\tthis.updateSpilledCells(cell);\n\t\t\t}\n\t\t}\n\n\t\tconst table = this.grid.table;\n\t\tfor (const cell of cells) table.renderBodyCell(cell);\n\t\t\n\t\tif (recalculate) {\n\t\t\tthis.model.calculations.invalidateDependants(cells).forEach((sheet, cell) => {\n\t\t\t\tif (sheet) this.grid.group.getGrid(sheet)?.table.renderBodyCell(cell);\n\t\t\t\telse table.renderBodyCell(cell);\n\t\t\t\tthis.updateSpilledCells(cell);\n\t\t\t});\n\t\t\tthis.grid.dispatchGridEvent('calculate', { cells: Array.from(cells) });\n\t\t}\n\t}\n\n\tupdateHeaders() {\n\t\tthis.model.indexVisibleColumns();\n\t\tthis.table.clearHeaderCache();\n\t\tthis.table.createHeaderRows();\n\t\tthis.table.renderHeader();\n\t}\n\n\tcalculateViewport(recalculate = false) {\n\t\tthis.grid.logger.info('calculate viwport');\n\t\tthis.updateCells(this.model.calculateViewport(), recalculate);\n\t}\n\n\tupdateSliders() {\n\t\tconst ws = this.table.viewportSize;\n\t\tthis.grid.vSlider.maxValue = this.model.visibleRows.length;\n\t\tthis.grid.vSlider.pageSize = ws.h / this.model.options.rowHeight;\n\t\tthis.grid.vSlider.value = this.table.rowOffset;\n\t\tthis.grid.hSlider.maxValue = this.model.visibleColumns.length;\n\t\tthis.grid.hSlider.pageSize = ws.w / this.model.options.columnWidth;\n\t\tthis.grid.hSlider.value = this.table.colOffset;\n\t}\n\n\tisVerticalScrollingEnabled() {\n\t\treturn this.grid.options.scrolling.verticalOverscroll !== false \n\t\t\t|| this.table.viewport.rows.length < this.model.visibleRows.length;\n\t}\n\n\tisHorizontalScrollingEnabled() {\n\t\treturn this.grid.options.scrolling.horizontalOverscroll !== false \n\t\t\t|| this.table.viewport.columns.length < this.model.visibleColumns.length;\n\t}\n\n\tupdateSliderVisibility() {\n\t\tthis._vScrolling = this.isVerticalScrollingEnabled();\n\t\tif (this._vScrolling) {\n\t\t\tthis.grid.vSlider.show();\n\t\t\tdom.showElement(this.grid.vSlider);\n\t\t} else {\n\t\t\tthis.grid.vSlider.hide();\n\t\t\tdom.hideElement(this.grid.vSlider);\n\t\t}\n\t\t\n\t\tthis._hScrolling = this.isHorizontalScrollingEnabled();\n\t\tif (this._hScrolling) {\n\t\t\tthis.grid.hSlider.show();\n\t\t\tdom.showElement(this.grid.hSlider);\n\t\t} else {\n\t\t\tthis.grid.hSlider.hide();\n\t\t\tdom.hideElement(this.grid.hSlider);\n\t\t}\n\t}\n\n\thideSliders() {\n\t\tthis.grid.vSlider.hide();\n\t\tthis.grid.hSlider.hide();\n\t}\n\n\tscrollVerticalByPixels(pixels: number) {\n\t\tif (!this.vScrolling) return;\n\n\t\tlet topRow = this.table.rowOffset;\n\t\tlet top = 0, r = 0;\n\t\tlet row: RowModel;\n\n\t\tif (pixels > 0) {\n\t\t\twhile (top < pixels && topRow + r < this.model.visibleRows.length) {\n\t\t\t\ttop += this.model.visibleRows[topRow + (r++)].height + 2;\n\t\t\t}\n\t\t\ttopRow = topRow + r;\n\t\t} else if (pixels < 0) {\n\t\t\tpixels = Math.abs(pixels);\n\t\t\twhile (top < pixels && topRow + r >= 0) {\n\t\t\t\trow = this.model.visibleRows[Math.min(this.model.visibleRows.length - 1, topRow + (r--))];\n\t\t\t\ttop += (row ? row.height : 0) + 2;\n\t\t\t}\n\t\t\ttopRow = topRow + r;\n\t\t}\n\n\t\tif (topRow >= this.model.visibleRows.length) topRow = this.model.visibleRows.length - 1;\n\t\t\n\t\tthis.requireVerticalUpdate = true;\n\t\tthis.table.rowOffset = Math.max(0, topRow);\n\t\tthis.debounceRenderCells();\n\t\tthis.updateSliders();\n\t}\n\n\tscrollHorizontalByPixels(pixels: number) {\n\t\tif (!this.hScrolling) return;\n\t\t\n\t\tlet leftCol = this.table.colOffset;\n\t\tlet left = 0, c = 0;\n\t\tif (pixels > 0) {\n\t\t\twhile (left < pixels && leftCol + c < this.model.visibleColumns.length) {\n\t\t\t\tleft += this.model.visibleColumns[leftCol + (c++)].width + 2;\n\t\t\t}\n\t\t\tleftCol = leftCol + c;\n\t\t} else if (pixels < 0) {\n\t\t\tpixels = Math.abs(pixels);\n\t\t\twhile (left < pixels && leftCol + c >= 0) {\n\t\t\t\tleft += this.model.visibleColumns[Math.min(this.model.visibleColumns.length - 1, leftCol + (c--))].width + 2;\n\t\t\t}\n\t\t\tleftCol = leftCol + c;\n\t\t}\n\n\t\tif (leftCol >= this.model.visibleColumns.length) leftCol = this.model.visibleColumns.length - 1;\n\n\t\tthis.requireHorizontalUpdate = true;\n\t\tthis.table.colOffset = Math.max(0, leftCol);\n\t\tthis.debounceRenderCells();\n\t\tthis.updateSliders();\n\t}\n\n\tupdateCellSelectionRange() {\n\t\tconst table = this.table;\n\t\tfor (const cell of this.model.getRangeIterator(this.selection.range, false)) {\n\t\t\ttable.renderBodyCell(cell);\n\t\t}\n\t}\n\n\tgetAdapterRequestFilters(): RequestFilters {\n\t\treturn {\n\t\t\toffset: 0,\n\t\t\tfilter: this.grid.filtering?.filter ? Array.from(this.grid.filtering.filter.settings.values()) : null,\n\t\t\torder: this.grid.model?.sorting?.settings\n\t\t};\n\t}\n\n\tasync toggleRow(index: number, dispatchEvent = true) {\n\t\tconst row = this.model.rows[index];\n\t\tif (row.isLoaded || row.isPartialyLoaded) {\n\t\t\trow.toggleCollapse(false, this.model.options.unhideRowAfterExpand);\n\t\t\tthis.table.renderCells({vertical: true});\n\t\t} else if (this.grid.adapter) {\n\t\t\tconst tr = this.table.getRowByModelIndex(index) as TableRow;\n\t\t\tif (tr && tr.expander) tr.expander.state = 'waiting';\n\t\n\t\t\trow.collapsed = false;\n\n\t\t\tconst requestFilters = Object.assign(this.getAdapterRequestFilters(), {\n\t\t\t\tparent: {r: row.index, props: row.properties}\n\t\t\t})\n\n\t\t\tconst [newRowSources] = await Promise.all([this.grid.adapter.getRows(requestFilters)]);\n\t\t\tthis.model.insertRowData(row, 0, newRowSources);\n\t\t\t\n\t\t\trequestFilters.rows = newRowSources;\n\t\t\tconst [newCellSources] = await Promise.all([this.grid.adapter.getCells(requestFilters)]);\n\t\t\tnewCellSources?.map(cellSource => this.model.getCellByCoords(cellSource.r, cellSource.c)?.update(cellSource));\n\t\t\n\t\t\tthis.table.requestUpdate();\n\t\t}\n\n\t\tthis.updateSliders();\n\t\tif (dispatchEvent) this.grid.dispatchEvent(new GridEvent('row.toggle', {grid: this.grid, row}));\n\t}\n\t\n\ttoggleColumn(index: number, dispatchEvent = true) {\n\t\tconst column = this.model.columns[index];\n\t\tcolumn.toggleCollapse(false, this.model.options.unhideColumnAfterExpand);\n\t\tthis.table.renderCells({horizontal: true});\n\t\tthis.updateSliders();\n\t\tif (dispatchEvent) this.grid.dispatchEvent(new GridEvent('column.toggle', {grid: this.grid, column }));\n\t}\n\n\tsetRowExpandLevel(level: number) {\n\t\tthis.model.setRowExpandLevel(level);\n\t\tthis.table.rowOffset = 0;\n\t\tthis.table.renderCells({vertical: true});\n\t\tthis.updateSliders();\n\t\tthis.grid.dispatchEvent(new GridEvent('row.toggle', {grid: this.grid}));\n\t}\n\n\tsetColumnExpandLevel(level: number) {\n\t\tthis.model.setColumnExpandLevel(level);\n\t\tthis.table.colOffset = 0;\n\t\tthis.table.renderCells({horizontal: true});\n\t\tthis.updateSliders();\n\t\tthis.grid.dispatchEvent(new GridEvent('column.toggle', {grid: this.grid}));\n\t}\n\n\tasync exportHTML() {\n\t\tconst div = dom.createElement<HTMLDivElement>('div');\n\t\tdom.hideElement(div);\n\t\tdocument.body.appendChild(div);\n\t\tconst table = dom.createElement<Table>('og-table');\n\t\ttable.grid = this.grid;\n\t\ttable.model = this.model;\n\t\ttable.renderAll = true;\n\t\tdiv.appendChild(table);\n\t\tawait table.updateComplete;\n\n\t\tconst rowBreaks = this.model.options?.print?.rowBreaks;\n\t\tconst tableElm = table.table;\n\n\t\t// split table into multiple tables if page breaks are defined\n\t\tconst hasRowBreaks = rowBreaks && rowBreaks.length > 0;\n\t\tif (hasRowBreaks) {\n\t\t\tconst colgroup = tableElm.querySelector('colgroup');\n\t\t\tconst rows = [...tableElm.tBodies[0].rows];\n\n\t\t\tconst rowTitlesRange = this.model.options?.print?.rowTitles \n\t\t\t\t? CellRange.fromA1(this.model.options?.print?.rowTitles) : null;\n\n\t\t\tconst rowTitles = rowTitlesRange ? Array.from({\n\t\t\t\tlength: rowTitlesRange.r2 - rowTitlesRange.r1 + 1}, \n\t\t\t\t(_, i) => rows[table.rowMap.get(rowTitlesRange.r1 + i)]\n\t\t\t) : [];\n\n\t\t\tfor (let i = 0; i < rowBreaks.length; i++) {\n\t\t\t\tconst tableElm2 = dom.createElement<HTMLTableElement>('table');\n\t\t\t\ttableElm2.appendChild(colgroup.cloneNode(true));\n\t\t\t\tconst tbody = dom.createElement<HTMLTableSectionElement>('tbody');\n\t\t\t\ttableElm2.appendChild(tbody);\n\n\t\t\t\tconst rMin = table.rowMap.get(rowBreaks[i]);\n\t\t\t\tconst rMax = i < rowBreaks.length - 1 \n\t\t\t\t\t? table.rowMap.get(rowBreaks[i + 1]) \n\t\t\t\t\t: this.model.visibleRows.length - 1;\n\n\t\t\t\trowTitles.forEach(row => tbody.appendChild(row.cloneNode(true)));\n\n\t\t\t\tfor (let r = rMin; r <= rMax; r++) {\n\t\t\t\t\ttbody.appendChild(rows[r]);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\ttable.shadowRoot.appendChild(tableElm2);\n\t\t\t}\n\n\t\t\tcolgroup.cloneNode(true);\n\t\t}\n\n\t\tconst tableCss = `\n\t\t\t<style>\n\t\t\t\thtml {\n\t\t\t\t\t${createThemeVariablesCss(getThemeManager().themes.get('light')).cssText}\n\t\t\t\t}\n\t\t\t\t${hasRowBreaks ? 'table {break-after: page}' : ''}\n\t\t\t\t${Table.styles.map(style => style.cssText).join('\\n')}\n\t\t\t</style>\\n\n\t\t`;\n\n\t\tconst html = tableCss + table.shadowRoot.innerHTML.replace(/<!---->/g, '');\n\t\tdiv.remove();\n\t\treturn html;\n\t}\n\n\tautoscrollDirection: Direction;\n\tautoscrollTimer: number;\n\tautoscrollValue: number;\n\n\tstopAutoscroll() {\n\t\tif (this.autoscrollTimer) {\n\t\t\twindow.clearInterval(this.autoscrollTimer);\n\t\t}\n\t}\n\n\tstartAutoscroll() {\n\t\tthis.stopAutoscroll();\n\t\tthis.autoscrollTimer = window.setInterval(() => {\n\t\t\tif (this.autoscrollValue == 0) return this.stopAutoscroll();\n\t\t\tconst amount = Math.pow(this.autoscrollValue, constants.AUTOSCROLL_RATIO);\n\t\t\tswitch (this.autoscrollDirection) {\n\t\t\t\tcase 'down': this.scrollVerticalByPixels(amount); break;\n\t\t\t\tcase 'up': this.scrollVerticalByPixels(-amount); break;\n\t\t\t\tcase 'left': this.scrollHorizontalByPixels(-amount); break;\n\t\t\t\tcase 'right': this.scrollHorizontalByPixels(amount); break;\n\t\t\t}\n\t\t}, constants.AUTOSCROLL_INTERVAL);\n\t}\n\n\tautoscroll(moousePosition: {x: number, y: number}) {\n\t\tconst { x, y } = moousePosition;\n\t\tconst w = (this.table.clientWidth / this.table.zoom) - this.table.totalHeaderWidth;\n\t\tconst h = (this.table.clientHeight / this.table.zoom) - (this.table.totalHeaderHeight);\n\t\tlet direction: Direction;\n\t\tlet value = 0;\n\n\t\tif (x < constants.AUTOSCROLL_TRESHOLD && x < y && x < h - y) {\n\t\t\tdirection = 'left';\n\t\t\tvalue = constants.AUTOSCROLL_TRESHOLD - x;\n\t\t} else if (w - x < constants.AUTOSCROLL_TRESHOLD && w - x < y && w - x < h - y) {\n\t\t\tdirection = 'right';\n\t\t\tvalue = constants.AUTOSCROLL_TRESHOLD - w + x;\n\t\t} else if (y < constants.AUTOSCROLL_TRESHOLD) {\n\t\t\tdirection = 'up';\n\t\t\tvalue = constants.AUTOSCROLL_TRESHOLD - y;\n\t\t} else if (h - y < constants.AUTOSCROLL_TRESHOLD) {\n\t\t\tdirection = 'down';\n\t\t\tvalue = constants.AUTOSCROLL_TRESHOLD - h + y;\n\t\t}\n\n\t\tthis.autoscrollDirection = direction;\n\t\tthis.autoscrollValue = value;\n\t\tthis.stopAutoscroll();\n\t\tif (value > 0) {\n\t\t\tthis.startAutoscroll();\n\t\t}\n\t}\n\n\tasync load(requestFilters?: RequestFilters) {\n\t\trequestFilters = requestFilters || this.getAdapterRequestFilters();\n\t\tconst parentIndex = requestFilters.parent?.r ?? null;\n\t\tconst parentRow = parentIndex != null ? this.model.rows[parentIndex] : this.model.rowRoot;\n\t\t\n\t\tconst [newRowSources] = await Promise.all([this.grid.adapter.getRows(requestFilters)]);\n\t\tif (newRowSources.length > 0 && parentIndex === null) {\n\t\t\tthis.model.insertRowData(parentRow, requestFilters.offset, newRowSources);\n\t\t}\n\t\t\n\t\tconst [newCellSources] = await Promise.all([this.grid.adapter.getCells(requestFilters)]);\n\t\tnewCellSources?.map(cellSource => this.model.getCellByCoords(cellSource.r, cellSource.c)?.update(cellSource));\n\t\t\n\t\tthis.table.requestUpdate();\n\n\t\tif (newRowSources.length >= this.model.options.pageSize) parentRow.count = Infinity;\n\t\telse parentRow.count = parentRow.children.length;\n\n\t\tthis.grid.logger.info(`loaded ${newRowSources.length} rows`);\n\t\tthis.grid.loading = false;\n\t\tthis.grid.dispatchEvent(new GridEvent('afterLoad', {grid: this.grid}));\n\t}\n\n\tasync loadNextPage(parentIndex: number = null, forceLoad = false) {\n\t\tif (this.grid.loading) return;\n\t\tconst parentRow = parentIndex != null ? this.model.rows[parentIndex] : this.model.rowRoot;\n\t\tif (!forceLoad && parentRow.isLoaded) return;\n\n\t\tthis.grid.dispatchEvent(new GridEvent('beforeLoad', {grid: this.grid}));\n\t\tthis.grid.loading = true;\n\n\t\tconst offset = this.model.rows.length;\n\t\tthis.grid.logger.info(`loading rows offset = ${offset}`);\n\n\t\tawait this.load(Object.assign(this.getAdapterRequestFilters(), {\n\t\t\toffset: offset,\n\t\t\tparent: {r: parentIndex, props: null}\n\t\t}));\n\t}\n\n\tget totalSize() { return {\n\t\twidth: this.table.totalHeaderWidth + this.model.visibleColumns.reduce((acc, col) => acc + col.width, 0),\n\t\theight: this.table.thead.offsetHeight + this.model.visibleRows.reduce((acc, row) => acc + row.height, 0)\n\t} }\n\n\tprivate autofitDiv: HTMLDivElement;\n\n\tautofitColumn(c: number|ColumnModel, visibleValuesOnly = false, rerender = true) {\n\t\tconst column = typeof c === 'number' ? this.model.columns[c] : c;\n\t\tconst div = this.autofitDiv ?? (this.autofitDiv = dom.createElement<HTMLDivElement>('div'));\n\t\tdiv.style.position = 'absolute';\n\t\tdiv.style.zIndex = '100000';\n\t\tdom.setPosition(div, {l: -1000, t: -1000});\n\t\tthis.grid.shadowRoot.appendChild(div);\n\t\tlet maxWidth = 0;\n\t\tfor (const cell of this.model.getRangeIterator(CellRange.fromA1(column.address), !!visibleValuesOnly)) {\n\t\t\tconst cellDiv: HTMLDivElement = getCellRenderer(cell).call(this.table, div, cell) || div;\n\t\t\tcellDiv.style.width = 'auto';\n\t\t\tmaxWidth = Math.max(maxWidth, cellDiv.offsetWidth);\n\t\t}\n\t\tif (column.header) {\n\t\t\tfor (const h of column.header) {\n\t\t\t\tif (!h) continue;\n\t\t\t\tif (h.html) div.innerHTML = h.label ?? '';\n\t\t\t\telse div.innerText = h.label ?? '';\n\t\t\t\tmaxWidth = Math.max(maxWidth, div.offsetWidth);\n\t\t\t}\n\t\t\tdiv.innerHTML = '';\n\t\t}\n\t\tcolumn.width = maxWidth + 10;\n\t\tif (rerender) this.table.renderCells({horizontal: true});\n\t}\n\n\tautofitColumns(visibleValuesOnly = false) {\n\t\tthis.model.columns.forEach(col => this.autofitColumn(col, visibleValuesOnly, false));\n\t\tthis.table.renderCells({horizontal: true});\n\t}\n\n\tautofitRow(r: number|RowModel, visibleValuesOnly = false, rerender = true) {\n\t\tconst row = typeof r === 'number' ? this.model.rows[r] : r;\n\t\tconst div = this.autofitDiv ?? (this.autofitDiv = dom.createElement<HTMLDivElement>('div'));\n\t\tdiv.style.position = 'absolute';\n\t\tdiv.style.zIndex = '100000';\n\n\t\t// div.style.backgroundColor = 'red';\n\t\t// dom.setPosition(div, {l: 100, t: 100});\n\n\t\tdom.setPosition(div, {l: -1000, t: -1000});\n\t\tthis.grid.shadowRoot.appendChild(div);\n\t\tlet maxHeight = 0;\n\t\tfor (const cell of this.model.getRangeIterator(CellRange.fromA1(row.address), !!visibleValuesOnly)) {\n\t\t\tconst cellDiv: HTMLDivElement = getCellRenderer(cell).call(this.table, div, cell) || div;\n\t\t\tcellDiv.style.height = 'auto';\n\t\t\tmaxHeight = Math.max(maxHeight, cellDiv.offsetHeight);\n\t\t}\n\t\trow.height = maxHeight + 8;\n\t\tif (rerender) this.table.renderCells({vertical: true});\n\t}\n\n\tautofitRows(visibleValuesOnly = false) {\n\t\tthis.model.rows.forEach(row => this.autofitRow(row, visibleValuesOnly, false));\n\t\tthis.table.renderCells({vertical: true});\n\t}\n\n\tscrollTo(r: number|RangeAddress, c = 0) {\n\t\tlet range: CellRange;\n\t\tif (utils.isString(r)) range = CellRange.fromA1(r as RangeAddress);\n\t\telse range = new CellRange(c, r as number);\n\n\t\tthis.table.rowOffset = range.r1;\n\t\tthis.table.colOffset = range.c1;\n\t\tthis.requireVerticalUpdate = true;\n\t\tthis.requireHorizontalUpdate = true;\n\t\tthis.debounceRenderCells();\n\t\tthis.updateSliders();\n\t}\n\n}"]}
|
|
@@ -4,6 +4,6 @@ export declare class SortingArrow extends LitElement {
|
|
|
4
4
|
static styles: import("lit").CSSResult;
|
|
5
5
|
sortSettings: SortSettings;
|
|
6
6
|
updated(): void;
|
|
7
|
-
render(): import("lit-html").TemplateResult<1
|
|
7
|
+
render(): "" | import("lit-html").TemplateResult<1>;
|
|
8
8
|
}
|
|
9
9
|
//# sourceMappingURL=sortingArrow.d.ts.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@omegagrid/grid",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.25",
|
|
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.10.
|
|
39
|
-
"@omegagrid/core": "^0.10.
|
|
40
|
-
"@omegagrid/grid-core": "^0.10.
|
|
41
|
-
"@omegagrid/localize": "^0.10.
|
|
42
|
-
"@omegagrid/tabs": "^0.10.
|
|
43
|
-
"@omegagrid/tree": "^0.10.
|
|
38
|
+
"@omegagrid/commands": "^0.10.25",
|
|
39
|
+
"@omegagrid/core": "^0.10.25",
|
|
40
|
+
"@omegagrid/grid-core": "^0.10.25",
|
|
41
|
+
"@omegagrid/localize": "^0.10.25",
|
|
42
|
+
"@omegagrid/tabs": "^0.10.25",
|
|
43
|
+
"@omegagrid/tree": "^0.10.25",
|
|
44
44
|
"@stdlib/stats": "^0.0.13",
|
|
45
45
|
"date-fns": "^3.2.0",
|
|
46
46
|
"lit": "^3.1.1",
|