@apia/table2-controller 4.0.102 → 5.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/data/TableController.d.ts +174 -0
- package/dist/data/TableController.d.ts.map +1 -0
- package/dist/data/TableController.js +348 -0
- package/dist/data/TableController.js.map +1 -0
- package/dist/data/body/TableBody.d.ts +16 -0
- package/dist/data/body/TableBody.d.ts.map +1 -0
- package/dist/data/body/TableBody.js +35 -0
- package/dist/data/body/TableBody.js.map +1 -0
- package/dist/data/filter/ComboFilter.d.ts +18 -0
- package/dist/data/filter/ComboFilter.d.ts.map +1 -0
- package/dist/data/filter/ComboFilter.js +32 -0
- package/dist/data/filter/ComboFilter.js.map +1 -0
- package/dist/data/filter/DateFilter.d.ts +7 -0
- package/dist/data/filter/DateFilter.d.ts.map +1 -0
- package/dist/data/filter/DateFilter.js +7 -0
- package/dist/data/filter/DateFilter.js.map +1 -0
- package/dist/data/filter/DateRangeFilter.d.ts +52 -0
- package/dist/data/filter/DateRangeFilter.d.ts.map +1 -0
- package/dist/data/filter/DateRangeFilter.js +208 -0
- package/dist/data/filter/DateRangeFilter.js.map +1 -0
- package/dist/data/filter/DateTimeRangeFilter.d.ts +23 -0
- package/dist/data/filter/DateTimeRangeFilter.d.ts.map +1 -0
- package/dist/data/filter/DateTimeRangeFilter.js +87 -0
- package/dist/data/filter/DateTimeRangeFilter.js.map +1 -0
- package/dist/data/filter/Filter.d.ts +49 -0
- package/dist/data/filter/Filter.d.ts.map +1 -0
- package/dist/data/filter/Filter.js +63 -0
- package/dist/data/filter/Filter.js.map +1 -0
- package/dist/data/head/Column.d.ts +23 -0
- package/dist/data/head/Column.d.ts.map +1 -0
- package/dist/data/head/Column.js +26 -0
- package/dist/data/head/Column.js.map +1 -0
- package/dist/data/head/Columns.d.ts +16 -0
- package/dist/data/head/Columns.d.ts.map +1 -0
- package/dist/data/head/Columns.js +57 -0
- package/dist/data/head/Columns.js.map +1 -0
- package/dist/data/head/Filters.d.ts +20 -0
- package/dist/data/head/Filters.d.ts.map +1 -0
- package/dist/data/head/Filters.js +132 -0
- package/dist/data/head/Filters.js.map +1 -0
- package/dist/data/head/NullFilter.js +25 -0
- package/dist/data/head/NullFilter.js.map +1 -0
- package/dist/data/head/TableHead.d.ts +26 -0
- package/dist/data/head/TableHead.d.ts.map +1 -0
- package/dist/data/head/TableHead.js +59 -0
- package/dist/data/head/TableHead.js.map +1 -0
- package/dist/data/plugins/FocusControllerPlugin/index.d.ts +26 -0
- package/dist/data/plugins/FocusControllerPlugin/index.d.ts.map +1 -0
- package/dist/data/plugins/FocusControllerPlugin/index.js +130 -0
- package/dist/data/plugins/FocusControllerPlugin/index.js.map +1 -0
- package/dist/data/plugins/FocusControllerPlugin/useFocusByClick.js +80 -0
- package/dist/data/plugins/FocusControllerPlugin/useFocusByClick.js.map +1 -0
- package/dist/data/plugins/FocusControllerPlugin/useFocusByKey.js +156 -0
- package/dist/data/plugins/FocusControllerPlugin/useFocusByKey.js.map +1 -0
- package/dist/data/plugins/TablePlugin.d.ts +30 -0
- package/dist/data/plugins/TablePlugin.d.ts.map +1 -0
- package/dist/data/plugins/TablePlugin.js +10 -0
- package/dist/data/plugins/TablePlugin.js.map +1 -0
- package/dist/data/plugins/WaiAriaPlugin.d.ts +42 -0
- package/dist/data/plugins/WaiAriaPlugin.d.ts.map +1 -0
- package/dist/data/plugins/WaiAriaPlugin.js +29 -0
- package/dist/data/plugins/WaiAriaPlugin.js.map +1 -0
- package/dist/data/primitive/AdditionalCell.d.ts +11 -0
- package/dist/data/primitive/AdditionalCell.d.ts.map +1 -0
- package/dist/data/primitive/AdditionalCell.js +38 -0
- package/dist/data/primitive/AdditionalCell.js.map +1 -0
- package/dist/data/primitive/AdditionalRow.d.ts +12 -0
- package/dist/data/primitive/AdditionalRow.d.ts.map +1 -0
- package/dist/data/primitive/AdditionalRow.js +16 -0
- package/dist/data/primitive/AdditionalRow.js.map +1 -0
- package/dist/data/primitive/Cell.d.ts +39 -0
- package/dist/data/primitive/Cell.d.ts.map +1 -0
- package/dist/data/primitive/Cell.js +41 -0
- package/dist/data/primitive/Cell.js.map +1 -0
- package/dist/data/primitive/Element.d.ts +18 -0
- package/dist/data/primitive/Element.d.ts.map +1 -0
- package/dist/data/primitive/Element.js +40 -0
- package/dist/data/primitive/Element.js.map +1 -0
- package/dist/data/primitive/Row.d.ts +58 -0
- package/dist/data/primitive/Row.d.ts.map +1 -0
- package/dist/data/primitive/Row.js +193 -0
- package/dist/data/primitive/Row.js.map +1 -0
- package/dist/data/primitive/RowsGroup.d.ts +29 -0
- package/dist/data/primitive/RowsGroup.d.ts.map +1 -0
- package/dist/data/primitive/RowsGroup.js +86 -0
- package/dist/data/primitive/RowsGroup.js.map +1 -0
- package/dist/index.d.ts +20 -425
- package/dist/index.js +20 -1255
- package/dist/index.js.map +1 -1
- package/package.json +3 -4
- package/LICENSE.md +0 -6
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { makeObservable, action, observable } from 'mobx';
|
|
2
|
+
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
5
|
+
var __publicField = (obj, key, value) => {
|
|
6
|
+
__defNormalProp(obj, key + "" , value);
|
|
7
|
+
return value;
|
|
8
|
+
};
|
|
9
|
+
const voidTable = {};
|
|
10
|
+
class Element {
|
|
11
|
+
constructor(state) {
|
|
12
|
+
this.state = state;
|
|
13
|
+
__publicField(this, "table", voidTable);
|
|
14
|
+
makeObservable(this, {
|
|
15
|
+
state: observable,
|
|
16
|
+
setState: action
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
getTable() {
|
|
20
|
+
return this.table;
|
|
21
|
+
}
|
|
22
|
+
setTable(table) {
|
|
23
|
+
this.table = table || voidTable;
|
|
24
|
+
return this;
|
|
25
|
+
}
|
|
26
|
+
getState(prop) {
|
|
27
|
+
return this.state[prop];
|
|
28
|
+
}
|
|
29
|
+
setState(prop, value) {
|
|
30
|
+
if (typeof prop === "function") {
|
|
31
|
+
this.state = prop(this.state);
|
|
32
|
+
} else {
|
|
33
|
+
this.state[prop] = value;
|
|
34
|
+
}
|
|
35
|
+
return this;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export { Element };
|
|
40
|
+
//# sourceMappingURL=Element.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Element.js","sources":["../../../src/data/primitive/Element.ts"],"sourcesContent":["import { action, makeObservable, observable } from 'mobx';\r\nimport type { TableController } from '../TableController';\r\n\r\nconst voidTable = {} as TableController;\r\n\r\nexport type ElementBaseState = {\r\n properties?: Record<string, unknown>;\r\n};\r\n\r\nexport abstract class Element<T extends ElementBaseState> {\r\n protected table: TableController = voidTable;\r\n\r\n constructor(protected state: T) {\r\n makeObservable<Element<T>, 'state'>(this, {\r\n state: observable,\r\n setState: action,\r\n });\r\n }\r\n\r\n public getTable() {\r\n return this.table;\r\n }\r\n\r\n public setTable(table: null | TableController) {\r\n this.table = table || voidTable;\r\n return this;\r\n }\r\n\r\n public getState<K extends keyof T>(prop: K) {\r\n return this.state[prop];\r\n }\r\n\r\n public setState(cb: (s: T) => T): this;\r\n public setState<K extends keyof T>(prop: K, value: T[K]): this;\r\n public setState<K extends keyof T>(prop: K | ((s: T) => T), value?: T[K]) {\r\n if (typeof prop === 'function') {\r\n this.state = prop(this.state);\r\n } else {\r\n this.state[prop] = value!;\r\n }\r\n return this;\r\n }\r\n}\r\n"],"names":[],"mappings":";;;;;;;;AAGA,MAAM,YAAY,EAAC;AAMZ,MAAe,OAAA,CAAoC;AAAA,EAGxD,YAAsB,KAAA,EAAU;AAAV,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AAFtB,IAAA,aAAA,CAAA,IAAA,EAAU,OAAA,EAAyB,SAAA,CAAA;AAGjC,IAAA,cAAA,CAAoC,IAAA,EAAM;AAAA,MACxC,KAAA,EAAO,UAAA;AAAA,MACP,QAAA,EAAU;AAAA,KACX,CAAA;AAAA;AACH,EAEO,QAAA,GAAW;AAChB,IAAA,OAAO,IAAA,CAAK,KAAA;AAAA;AACd,EAEO,SAAS,KAAA,EAA+B;AAC7C,IAAA,IAAA,CAAK,QAAQ,KAAA,IAAS,SAAA;AACtB,IAAA,OAAO,IAAA;AAAA;AACT,EAEO,SAA4B,IAAA,EAAS;AAC1C,IAAA,OAAO,IAAA,CAAK,MAAM,IAAI,CAAA;AAAA;AACxB,EAIO,QAAA,CAA4B,MAAyB,KAAA,EAAc;AACxE,IAAA,IAAI,OAAO,SAAS,UAAA,EAAY;AAC9B,MAAA,IAAA,CAAK,KAAA,GAAQ,IAAA,CAAK,IAAA,CAAK,KAAK,CAAA;AAAA,KAC9B,MAAO;AACL,MAAA,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA,GAAI,KAAA;AAAA;AAErB,IAAA,OAAO,IAAA;AAAA;AAEX;;;;"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { Element } from './Element.js';
|
|
2
|
+
import { Cell, CellState } from './Cell.js';
|
|
3
|
+
import { TableController } from '../TableController.js';
|
|
4
|
+
import { RowsGroup, RowsGroupBaseState } from './RowsGroup.js';
|
|
5
|
+
import { HTMLAttributes } from 'react';
|
|
6
|
+
|
|
7
|
+
type RowProperties = {
|
|
8
|
+
id: string;
|
|
9
|
+
cells: Cell[];
|
|
10
|
+
isExpandible?: boolean;
|
|
11
|
+
isExpanded?: boolean;
|
|
12
|
+
isHidden?: boolean;
|
|
13
|
+
isSelectable?: boolean;
|
|
14
|
+
isSelected?: boolean;
|
|
15
|
+
isDisabled?: boolean;
|
|
16
|
+
domProperties?: HTMLAttributes<HTMLTableRowElement>;
|
|
17
|
+
properties?: Record<string, unknown>;
|
|
18
|
+
};
|
|
19
|
+
type TBuildRow = Omit<RowProperties, 'cells'> & {
|
|
20
|
+
cells: (Omit<CellState, 'colName'> & {
|
|
21
|
+
colName?: string;
|
|
22
|
+
})[];
|
|
23
|
+
};
|
|
24
|
+
type RowState = Omit<RowProperties, 'isSelected'>;
|
|
25
|
+
declare class Row extends Element<RowState> {
|
|
26
|
+
protected properties?: Omit<RowProperties, "id"> | undefined;
|
|
27
|
+
protected container: null | RowsGroup<RowsGroupBaseState>;
|
|
28
|
+
hiddenCells: Map<string, Cell>;
|
|
29
|
+
addCell(cell: Cell): this;
|
|
30
|
+
addCellAfter(anchor: Cell, newElement: Cell): void;
|
|
31
|
+
addCellBefore(anchor: Cell, newElement: Cell): void;
|
|
32
|
+
build(data: TBuildRow): void;
|
|
33
|
+
constructor(id: string, properties?: Omit<RowProperties, "id"> | undefined);
|
|
34
|
+
get cells(): Cell[];
|
|
35
|
+
get isSelected(): boolean;
|
|
36
|
+
getCellByColumnName(colName: string): Cell<CellState<any>> | undefined;
|
|
37
|
+
getCellByIndex(index: number): Cell<CellState<any>>;
|
|
38
|
+
getCellIndex(cell: Cell): number;
|
|
39
|
+
getContainer(): RowsGroup<RowsGroupBaseState> | null;
|
|
40
|
+
getFollowingRow(): Row;
|
|
41
|
+
getHiddenCell(colName: string): Cell<CellState<any>> | undefined;
|
|
42
|
+
getIndex(): number;
|
|
43
|
+
getPreviousRow(): Row;
|
|
44
|
+
insertAfter(row: Row): void;
|
|
45
|
+
insertBefore(row: Row): void;
|
|
46
|
+
remove(): void;
|
|
47
|
+
replaceCellOnIndex(index: number, newCell: Cell): void;
|
|
48
|
+
scrollIntoView(): void;
|
|
49
|
+
setContainer(container: null | RowsGroup<RowsGroupBaseState>): this;
|
|
50
|
+
setTable(table: null | TableController): this;
|
|
51
|
+
swap(withRow: Row): void;
|
|
52
|
+
toggleSelection(forceState?: boolean, fireEvent?: boolean): void;
|
|
53
|
+
protected attachCell(cell: Cell): void;
|
|
54
|
+
protected detachCell(cell: Cell): void;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export { Row, type RowProperties, type RowState, type TBuildRow };
|
|
58
|
+
//# sourceMappingURL=Row.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Row.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import { Element } from './Element.js';
|
|
2
|
+
import { Cell } from './Cell.js';
|
|
3
|
+
import { makeObservable, computed } from 'mobx';
|
|
4
|
+
import { AdditionalCell } from './AdditionalCell.js';
|
|
5
|
+
|
|
6
|
+
var __defProp = Object.defineProperty;
|
|
7
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
8
|
+
var __publicField = (obj, key, value) => {
|
|
9
|
+
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
10
|
+
return value;
|
|
11
|
+
};
|
|
12
|
+
class Row extends Element {
|
|
13
|
+
constructor(id, properties) {
|
|
14
|
+
const { cells, isSelected, ...state } = properties || {};
|
|
15
|
+
super({ id, ...state, cells: cells || [] });
|
|
16
|
+
this.properties = properties;
|
|
17
|
+
__publicField(this, "container", {});
|
|
18
|
+
__publicField(this, "hiddenCells", /* @__PURE__ */ new Map());
|
|
19
|
+
makeObservable(this, {
|
|
20
|
+
isSelected: computed
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
addCell(cell) {
|
|
24
|
+
this.state.cells.push(cell);
|
|
25
|
+
this.attachCell(cell);
|
|
26
|
+
return this;
|
|
27
|
+
}
|
|
28
|
+
addCellAfter(anchor, newElement) {
|
|
29
|
+
const index = this.state.cells.indexOf(anchor) + 1;
|
|
30
|
+
if (index !== -1) {
|
|
31
|
+
this.attachCell(newElement);
|
|
32
|
+
this.state.cells.splice(index, 0, newElement);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
addCellBefore(anchor, newElement) {
|
|
36
|
+
const index = this.state.cells.indexOf(anchor);
|
|
37
|
+
if (index !== -1) {
|
|
38
|
+
this.attachCell(newElement);
|
|
39
|
+
this.state.cells.splice(index, 0, newElement);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
build(data) {
|
|
43
|
+
this.hiddenCells.clear();
|
|
44
|
+
this.state.cells = [];
|
|
45
|
+
const {
|
|
46
|
+
id,
|
|
47
|
+
domProperties,
|
|
48
|
+
isExpanded,
|
|
49
|
+
isExpandible,
|
|
50
|
+
isHidden,
|
|
51
|
+
isSelectable,
|
|
52
|
+
isSelected,
|
|
53
|
+
isDisabled,
|
|
54
|
+
properties
|
|
55
|
+
} = data;
|
|
56
|
+
Object.assign(this.state, {
|
|
57
|
+
id,
|
|
58
|
+
domProperties,
|
|
59
|
+
isExpanded,
|
|
60
|
+
isExpandible,
|
|
61
|
+
isHidden,
|
|
62
|
+
isSelectable,
|
|
63
|
+
isSelected,
|
|
64
|
+
isDisabled,
|
|
65
|
+
properties
|
|
66
|
+
});
|
|
67
|
+
for (let i = 0; i < data.cells.length; i++) {
|
|
68
|
+
const cell = data.cells[i];
|
|
69
|
+
const col = cell.colName ? this.table.head.getHeaderRow().getColumn(cell.colName) : this.table.head.getHeaderRow().getColumns()[i];
|
|
70
|
+
const cellInstance = new Cell({
|
|
71
|
+
...cell,
|
|
72
|
+
colName: col?.getState("colName")
|
|
73
|
+
});
|
|
74
|
+
if (col?.isVisible) {
|
|
75
|
+
const currentCell = this.state.cells[i - this.hiddenCells.size];
|
|
76
|
+
if (!currentCell) {
|
|
77
|
+
this.addCell(cellInstance);
|
|
78
|
+
} else {
|
|
79
|
+
currentCell.updateState({
|
|
80
|
+
...cell,
|
|
81
|
+
colName: col?.getState("colName")
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
} else {
|
|
85
|
+
cellInstance.setTable(this.table);
|
|
86
|
+
this.hiddenCells.set(col?.getColumnName(), cellInstance);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
this.cells.splice(data.cells.length - this.hiddenCells.size);
|
|
90
|
+
}
|
|
91
|
+
get cells() {
|
|
92
|
+
const hasAdditionalColumn = !!this.table.getState("onRowExpand") || // [...(this.table.head.getColumns()?.columns.values() ?? [])].some(
|
|
93
|
+
// (c) => c.asAdditional,
|
|
94
|
+
// ) ||
|
|
95
|
+
(this.table.head.getFiltersRow()?.getFiltersInTable()?.length || 0) > 0;
|
|
96
|
+
let additionalCell = null;
|
|
97
|
+
if (hasAdditionalColumn) {
|
|
98
|
+
additionalCell = new AdditionalCell();
|
|
99
|
+
additionalCell.setRow(this);
|
|
100
|
+
additionalCell.setTable(this.table);
|
|
101
|
+
}
|
|
102
|
+
return [additionalCell, ...this.state.cells].filter(
|
|
103
|
+
(f) => Boolean(f)
|
|
104
|
+
);
|
|
105
|
+
}
|
|
106
|
+
get isSelected() {
|
|
107
|
+
return this.table.isSelected(this);
|
|
108
|
+
}
|
|
109
|
+
getCellByColumnName(colName) {
|
|
110
|
+
return this.cells.find((c) => c.getState("colName") === colName);
|
|
111
|
+
}
|
|
112
|
+
getCellByIndex(index) {
|
|
113
|
+
return this.cells[index];
|
|
114
|
+
}
|
|
115
|
+
getCellIndex(cell) {
|
|
116
|
+
return this.cells.indexOf(cell);
|
|
117
|
+
}
|
|
118
|
+
getContainer() {
|
|
119
|
+
return this.container;
|
|
120
|
+
}
|
|
121
|
+
getFollowingRow() {
|
|
122
|
+
const containerRows = [...this.container.getState("rows").values()];
|
|
123
|
+
const index = containerRows.findIndex(
|
|
124
|
+
(r) => r.getState("id") === this.state.id
|
|
125
|
+
);
|
|
126
|
+
return containerRows[index + 1] || null;
|
|
127
|
+
}
|
|
128
|
+
getHiddenCell(colName) {
|
|
129
|
+
return this.hiddenCells.get(colName);
|
|
130
|
+
}
|
|
131
|
+
getIndex() {
|
|
132
|
+
return this.getContainer().getRowIndex(this);
|
|
133
|
+
}
|
|
134
|
+
getPreviousRow() {
|
|
135
|
+
const containerRows = [...this.container.getState("rows").values()];
|
|
136
|
+
const index = containerRows.findIndex(
|
|
137
|
+
(r) => r.getState("id") === this.state.id
|
|
138
|
+
);
|
|
139
|
+
return containerRows[index - 1] || null;
|
|
140
|
+
}
|
|
141
|
+
insertAfter(row) {
|
|
142
|
+
this.getContainer()?.insertAfter(this, row);
|
|
143
|
+
}
|
|
144
|
+
insertBefore(row) {
|
|
145
|
+
this.getContainer()?.insertBefore(this, row);
|
|
146
|
+
}
|
|
147
|
+
remove() {
|
|
148
|
+
this.getContainer()?.removeRow(this);
|
|
149
|
+
}
|
|
150
|
+
replaceCellOnIndex(index, newCell) {
|
|
151
|
+
const current = this.cells[index];
|
|
152
|
+
if (!current) {
|
|
153
|
+
throw new Error("IndexOutOfBounds - The provided index is out of bounds");
|
|
154
|
+
}
|
|
155
|
+
this.cells[index] = newCell;
|
|
156
|
+
this.attachCell(newCell);
|
|
157
|
+
this.detachCell(current);
|
|
158
|
+
}
|
|
159
|
+
scrollIntoView() {
|
|
160
|
+
this.table.scrollRowIntoView(this);
|
|
161
|
+
}
|
|
162
|
+
setContainer(container) {
|
|
163
|
+
this.container = container;
|
|
164
|
+
return this;
|
|
165
|
+
}
|
|
166
|
+
setTable(table) {
|
|
167
|
+
super.setTable(table);
|
|
168
|
+
this.state.cells.forEach((c) => c.setTable(table));
|
|
169
|
+
if (table && this.properties?.isSelected) {
|
|
170
|
+
table.toggleRowSelection(this, true);
|
|
171
|
+
}
|
|
172
|
+
return this;
|
|
173
|
+
}
|
|
174
|
+
swap(withRow) {
|
|
175
|
+
this.getContainer()?.swapRows(this, withRow);
|
|
176
|
+
}
|
|
177
|
+
toggleSelection(forceState, fireEvent = true) {
|
|
178
|
+
if (this.state.isSelectable) {
|
|
179
|
+
this.table.toggleRowSelection(this, forceState, fireEvent);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
attachCell(cell) {
|
|
183
|
+
cell.setTable(this.table);
|
|
184
|
+
cell.setRow(this);
|
|
185
|
+
}
|
|
186
|
+
detachCell(cell) {
|
|
187
|
+
cell.setTable(null);
|
|
188
|
+
cell.setRow(null);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
export { Row };
|
|
193
|
+
//# sourceMappingURL=Row.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Row.js","sources":["../../../src/data/primitive/Row.ts"],"sourcesContent":["import { Element } from './Element';\r\nimport { Cell, type CellState } from './Cell';\r\nimport type { TableController } from '../TableController';\r\nimport { computed, makeObservable } from 'mobx';\r\nimport type { RowsGroup, RowsGroupBaseState } from './RowsGroup';\r\nimport type { HTMLAttributes } from 'react';\r\nimport { AdditionalCell } from './AdditionalCell';\r\n\r\nexport type RowProperties = {\r\n id: string;\r\n cells: Cell[];\r\n\r\n isExpandible?: boolean;\r\n isExpanded?: boolean;\r\n isHidden?: boolean;\r\n isSelectable?: boolean;\r\n isSelected?: boolean;\r\n isDisabled?: boolean;\r\n\r\n domProperties?: HTMLAttributes<HTMLTableRowElement>;\r\n properties?: Record<string, unknown>;\r\n};\r\n\r\nexport type TBuildRow = Omit<RowProperties, 'cells'> & {\r\n cells: (Omit<CellState, 'colName'> & { colName?: string })[];\r\n};\r\n\r\nexport type RowState = Omit<RowProperties, 'isSelected'>;\r\n\r\nexport class Row extends Element<RowState> {\r\n protected container: null | RowsGroup<RowsGroupBaseState> =\r\n {} as RowsGroup<RowsGroupBaseState>;\r\n\r\n hiddenCells: Map<string, Cell> = new Map();\r\n\r\n addCell(cell: Cell) {\r\n this.state.cells.push(cell);\r\n this.attachCell(cell);\r\n return this;\r\n }\r\n\r\n addCellAfter(anchor: Cell, newElement: Cell) {\r\n const index = this.state.cells.indexOf(anchor) + 1;\r\n\r\n if (index !== -1) {\r\n this.attachCell(newElement);\r\n this.state.cells.splice(index, 0, newElement);\r\n }\r\n }\r\n\r\n addCellBefore(anchor: Cell, newElement: Cell) {\r\n const index = this.state.cells.indexOf(anchor);\r\n\r\n if (index !== -1) {\r\n this.attachCell(newElement);\r\n this.state.cells.splice(index, 0, newElement);\r\n }\r\n }\r\n\r\n build(data: TBuildRow) {\r\n this.hiddenCells.clear();\r\n this.state.cells = [];\r\n const {\r\n id,\r\n domProperties,\r\n isExpanded,\r\n isExpandible,\r\n isHidden,\r\n isSelectable,\r\n isSelected,\r\n isDisabled,\r\n properties,\r\n } = data;\r\n Object.assign(this.state, {\r\n id,\r\n domProperties,\r\n isExpanded,\r\n isExpandible,\r\n isHidden,\r\n isSelectable,\r\n isSelected,\r\n isDisabled,\r\n properties,\r\n });\r\n\r\n for (let i = 0; i < data.cells.length; i++) {\r\n const cell = data.cells[i];\r\n\r\n const col = cell.colName\r\n ? this.table.head.getHeaderRow()!.getColumn(cell.colName)!\r\n : this.table.head.getHeaderRow()!.getColumns()[i]!;\r\n\r\n const cellInstance = new Cell({\r\n ...cell,\r\n colName: col?.getState('colName'),\r\n });\r\n\r\n if (col?.isVisible) {\r\n const currentCell = this.state.cells[i - this.hiddenCells.size];\r\n\r\n if (!currentCell) {\r\n this.addCell(cellInstance);\r\n } else {\r\n currentCell.updateState({\r\n ...cell,\r\n colName: col?.getState('colName'),\r\n });\r\n }\r\n } else {\r\n cellInstance.setTable(this.table);\r\n this.hiddenCells.set(col?.getColumnName(), cellInstance);\r\n }\r\n }\r\n this.cells.splice(data.cells.length - this.hiddenCells.size);\r\n }\r\n\r\n constructor(\r\n id: string,\r\n protected properties?: Omit<RowProperties, 'id'>,\r\n ) {\r\n const { cells, isSelected, ...state } = properties || {};\r\n super({ id, ...state, cells: cells || [] });\r\n makeObservable(this, {\r\n isSelected: computed,\r\n });\r\n }\r\n\r\n get cells(): Cell[] {\r\n const hasAdditionalColumn: boolean =\r\n !!this.table.getState('onRowExpand') ||\r\n // [...(this.table.head.getColumns()?.columns.values() ?? [])].some(\r\n // (c) => c.asAdditional,\r\n // ) ||\r\n (this.table.head.getFiltersRow()?.getFiltersInTable()?.length || 0) > 0;\r\n\r\n let additionalCell: Cell | null = null;\r\n if (hasAdditionalColumn) {\r\n additionalCell = new AdditionalCell();\r\n additionalCell.setRow(this);\r\n additionalCell.setTable(this.table);\r\n }\r\n\r\n return [additionalCell, ...this.state.cells].filter((f): f is Cell =>\r\n Boolean(f),\r\n );\r\n }\r\n\r\n get isSelected() {\r\n return this.table.isSelected(this);\r\n }\r\n\r\n getCellByColumnName(colName: string) {\r\n return this.cells.find((c) => c.getState('colName') === colName);\r\n }\r\n\r\n getCellByIndex(index: number) {\r\n return this.cells[index];\r\n }\r\n\r\n getCellIndex(cell: Cell) {\r\n return this.cells.indexOf(cell);\r\n }\r\n\r\n getContainer() {\r\n return this.container;\r\n }\r\n\r\n getFollowingRow() {\r\n const containerRows = [...this.container!.getState('rows').values()];\r\n const index = containerRows.findIndex(\r\n (r) => r.getState('id') === this.state.id,\r\n );\r\n return containerRows[index + 1] || null;\r\n }\r\n\r\n getHiddenCell(colName: string) {\r\n return this.hiddenCells.get(colName);\r\n }\r\n\r\n getIndex() {\r\n return this.getContainer()!.getRowIndex(this);\r\n }\r\n\r\n getPreviousRow() {\r\n const containerRows = [...this.container!.getState('rows').values()];\r\n const index = containerRows.findIndex(\r\n (r) => r.getState('id') === this.state.id,\r\n );\r\n return containerRows[index - 1] || null;\r\n }\r\n\r\n insertAfter(row: Row) {\r\n this.getContainer()?.insertAfter(this, row);\r\n }\r\n\r\n insertBefore(row: Row) {\r\n this.getContainer()?.insertBefore(this, row);\r\n }\r\n\r\n remove() {\r\n this.getContainer()?.removeRow(this);\r\n }\r\n\r\n replaceCellOnIndex(index: number, newCell: Cell) {\r\n const current = this.cells[index];\r\n if (!current) {\r\n throw new Error('IndexOutOfBounds - The provided index is out of bounds');\r\n }\r\n\r\n this.cells[index] = newCell;\r\n this.attachCell(newCell);\r\n\r\n this.detachCell(current);\r\n }\r\n\r\n public scrollIntoView() {\r\n this.table.scrollRowIntoView(this);\r\n }\r\n\r\n public setContainer(container: null | RowsGroup<RowsGroupBaseState>) {\r\n this.container = container;\r\n return this;\r\n }\r\n\r\n public setTable(table: null | TableController) {\r\n super.setTable(table);\r\n\r\n this.state.cells.forEach((c) => c.setTable(table));\r\n\r\n if (table && this.properties?.isSelected) {\r\n table.toggleRowSelection(this, true);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n public swap(withRow: Row) {\r\n this.getContainer()?.swapRows(this, withRow);\r\n }\r\n\r\n public toggleSelection(forceState?: boolean, fireEvent = true) {\r\n if (this.state.isSelectable) {\r\n this.table.toggleRowSelection(this, forceState, fireEvent);\r\n }\r\n }\r\n\r\n protected attachCell(cell: Cell) {\r\n cell.setTable(this.table);\r\n cell.setRow(this);\r\n }\r\n\r\n protected detachCell(cell: Cell) {\r\n cell.setTable(null);\r\n cell.setRow(null);\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Row } from './Row.js';
|
|
2
|
+
import { TableController } from '../TableController.js';
|
|
3
|
+
import { ElementBaseState, Element } from './Element.js';
|
|
4
|
+
import { HTMLAttributes } from 'react';
|
|
5
|
+
|
|
6
|
+
type RowsGroupBaseState = ElementBaseState & {
|
|
7
|
+
rows: Row[];
|
|
8
|
+
domProperties?: HTMLAttributes<HTMLTableSectionElement>;
|
|
9
|
+
properties?: Record<string, unknown>;
|
|
10
|
+
};
|
|
11
|
+
declare class RowsGroup<U extends RowsGroupBaseState> extends Element<U & RowsGroupBaseState> {
|
|
12
|
+
table: TableController;
|
|
13
|
+
constructor(table: TableController, state: U);
|
|
14
|
+
get rows(): Row[];
|
|
15
|
+
addRow(row: Row): this;
|
|
16
|
+
addRows(rows: Row[]): this;
|
|
17
|
+
clear(): Row[];
|
|
18
|
+
getRowById(id: string | number): Row | undefined;
|
|
19
|
+
getRowByIndex(index: number): Row;
|
|
20
|
+
getRowIndex(row: Row): number;
|
|
21
|
+
insertAfter(anchor: Row, newElement: Row): void;
|
|
22
|
+
insertBefore(anchor: Row, newElement: Row): void;
|
|
23
|
+
removeRow(row: Row): void;
|
|
24
|
+
swapRows(a: Row, b: Row): void;
|
|
25
|
+
protected runAddRowPlugin(newRow: Row): void;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export { RowsGroup, type RowsGroupBaseState };
|
|
29
|
+
//# sourceMappingURL=RowsGroup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RowsGroup.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { makeObservable, computed, action } from 'mobx';
|
|
2
|
+
import { Element } from './Element.js';
|
|
3
|
+
|
|
4
|
+
class RowsGroup extends Element {
|
|
5
|
+
constructor(table, state) {
|
|
6
|
+
super({ ...state, rows: [] });
|
|
7
|
+
this.table = table;
|
|
8
|
+
makeObservable(this, { swapRows: action, rows: computed });
|
|
9
|
+
}
|
|
10
|
+
get rows() {
|
|
11
|
+
return this.state.rows;
|
|
12
|
+
}
|
|
13
|
+
addRow(row) {
|
|
14
|
+
this.state.rows.push(row);
|
|
15
|
+
row.setTable(this.table);
|
|
16
|
+
row.setContainer(this);
|
|
17
|
+
this.runAddRowPlugin(row);
|
|
18
|
+
return this;
|
|
19
|
+
}
|
|
20
|
+
addRows(rows) {
|
|
21
|
+
rows.forEach(this.addRow.bind(this));
|
|
22
|
+
return this;
|
|
23
|
+
}
|
|
24
|
+
clear() {
|
|
25
|
+
this.state.rows.forEach((row) => {
|
|
26
|
+
row.setContainer(null);
|
|
27
|
+
row.setTable(null);
|
|
28
|
+
});
|
|
29
|
+
return this.rows.splice(0, this.rows.length);
|
|
30
|
+
}
|
|
31
|
+
getRowById(id) {
|
|
32
|
+
return this.state.rows.find((c) => c.getState("id") === id);
|
|
33
|
+
}
|
|
34
|
+
getRowByIndex(index) {
|
|
35
|
+
return this.state.rows[index];
|
|
36
|
+
}
|
|
37
|
+
getRowIndex(row) {
|
|
38
|
+
return this.state.rows.indexOf(row);
|
|
39
|
+
}
|
|
40
|
+
insertAfter(anchor, newElement) {
|
|
41
|
+
if (anchor.getContainer() === this) {
|
|
42
|
+
const index = this.state.rows.indexOf(anchor);
|
|
43
|
+
this.state.rows.splice(index + 1, 0, newElement);
|
|
44
|
+
newElement.setTable(this.table);
|
|
45
|
+
newElement.setContainer(this);
|
|
46
|
+
this.runAddRowPlugin(newElement);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
insertBefore(anchor, newElement) {
|
|
50
|
+
if (anchor.getContainer() === this) {
|
|
51
|
+
const index = this.state.rows.indexOf(anchor);
|
|
52
|
+
this.state.rows.splice(index, 0, newElement);
|
|
53
|
+
newElement.setTable(this.table);
|
|
54
|
+
newElement.setContainer(this);
|
|
55
|
+
this.runAddRowPlugin(newElement);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
removeRow(row) {
|
|
59
|
+
if (row.getContainer() === this) {
|
|
60
|
+
row.setContainer(null);
|
|
61
|
+
this.state.rows = this.state.rows.filter((r) => r !== row);
|
|
62
|
+
this.table.removeRow(row);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
swapRows(a, b) {
|
|
66
|
+
if (a?.getContainer() === this && b?.getContainer() === this) {
|
|
67
|
+
const aIndex = this.state.rows.findIndex(
|
|
68
|
+
(r) => r.getState?.("id") === a.getState?.("id")
|
|
69
|
+
);
|
|
70
|
+
const bIndex = this.state.rows.findIndex(
|
|
71
|
+
(r) => r.getState?.("id") === b.getState?.("id")
|
|
72
|
+
);
|
|
73
|
+
if (aIndex !== -1 && bIndex !== -1) {
|
|
74
|
+
this.state.rows[aIndex] = b;
|
|
75
|
+
this.state.rows[bIndex] = a;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
runAddRowPlugin(newRow) {
|
|
80
|
+
const plugins = this.getTable().getApplicablePlugins("onAddRow");
|
|
81
|
+
plugins.forEach((c) => c(this, newRow));
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
export { RowsGroup };
|
|
86
|
+
//# sourceMappingURL=RowsGroup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RowsGroup.js","sources":["../../../src/data/primitive/RowsGroup.ts"],"sourcesContent":["import { action, computed, makeObservable } from 'mobx';\r\nimport type { Row } from './Row';\r\nimport type { TableController } from '../TableController';\r\nimport { Element, type ElementBaseState } from './Element';\r\nimport type { HTMLAttributes } from 'react';\r\n\r\nexport type RowsGroupBaseState = ElementBaseState & {\r\n rows: Row[];\r\n domProperties?: HTMLAttributes<HTMLTableSectionElement>;\r\n properties?: Record<string, unknown>;\r\n};\r\n\r\nexport class RowsGroup<U extends RowsGroupBaseState> extends Element<\r\n U & RowsGroupBaseState\r\n> {\r\n constructor(\r\n public table: TableController,\r\n state: U,\r\n ) {\r\n super({ ...state, rows: [] });\r\n makeObservable(this, { swapRows: action, rows: computed });\r\n }\r\n\r\n get rows() {\r\n return this.state.rows;\r\n }\r\n\r\n addRow(row: Row) {\r\n this.state.rows.push(row);\r\n row.setTable(this.table);\r\n row.setContainer(this);\r\n\r\n this.runAddRowPlugin(row);\r\n\r\n return this;\r\n }\r\n\r\n addRows(rows: Row[]) {\r\n rows.forEach(this.addRow.bind(this));\r\n return this;\r\n }\r\n\r\n clear() {\r\n this.state.rows.forEach((row) => {\r\n row.setContainer(null);\r\n row.setTable(null);\r\n });\r\n return this.rows.splice(0, this.rows.length);\r\n }\r\n\r\n getRowById(id: string | number) {\r\n return this.state.rows.find((c) => c.getState('id') === id);\r\n }\r\n\r\n getRowByIndex(index: number) {\r\n return this.state.rows[index];\r\n }\r\n\r\n getRowIndex(row: Row) {\r\n return this.state.rows.indexOf(row);\r\n }\r\n\r\n insertAfter(anchor: Row, newElement: Row) {\r\n if (anchor.getContainer() === this) {\r\n const index = this.state.rows.indexOf(anchor);\r\n this.state.rows.splice(index + 1, 0, newElement);\r\n newElement.setTable(this.table);\r\n newElement.setContainer(this);\r\n this.runAddRowPlugin(newElement);\r\n }\r\n }\r\n\r\n insertBefore(anchor: Row, newElement: Row) {\r\n if (anchor.getContainer() === this) {\r\n const index = this.state.rows.indexOf(anchor);\r\n this.state.rows.splice(index, 0, newElement);\r\n newElement.setTable(this.table);\r\n newElement.setContainer(this);\r\n this.runAddRowPlugin(newElement);\r\n }\r\n }\r\n\r\n removeRow(row: Row) {\r\n if (row.getContainer() === this) {\r\n row.setContainer(null);\r\n this.state.rows = this.state.rows.filter((r) => r !== row);\r\n this.table.removeRow(row);\r\n }\r\n }\r\n\r\n swapRows(a: Row, b: Row) {\r\n if (a?.getContainer() === this && b?.getContainer() === this) {\r\n const aIndex = this.state.rows.findIndex(\r\n (r) => r.getState?.('id') === a.getState?.('id'),\r\n );\r\n const bIndex = this.state.rows.findIndex(\r\n (r) => r.getState?.('id') === b.getState?.('id'),\r\n );\r\n if (aIndex !== -1 && bIndex !== -1) {\r\n this.state.rows[aIndex] = b;\r\n this.state.rows[bIndex] = a;\r\n }\r\n }\r\n }\r\n\r\n protected runAddRowPlugin(newRow: Row) {\r\n const plugins = this.getTable().getApplicablePlugins('onAddRow');\r\n plugins.forEach((c) => c(this, newRow));\r\n }\r\n}\r\n"],"names":[],"mappings":";;;AAYO,MAAM,kBAAgD,OAAA,CAE3D;AAAA,EACA,WAAA,CACS,OACP,KAAA,EACA;AACA,IAAA,KAAA,CAAM,EAAE,GAAG,KAAA,EAAO,IAAA,EAAM,IAAI,CAAA;AAHrB,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AAIP,IAAA,cAAA,CAAe,MAAM,EAAE,QAAA,EAAU,MAAA,EAAQ,IAAA,EAAM,UAAU,CAAA;AAAA;AAC3D,EAEA,IAAI,IAAA,GAAO;AACT,IAAA,OAAO,KAAK,KAAA,CAAM,IAAA;AAAA;AACpB,EAEA,OAAO,GAAA,EAAU;AACf,IAAA,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,GAAG,CAAA;AACxB,IAAA,GAAA,CAAI,QAAA,CAAS,KAAK,KAAK,CAAA;AACvB,IAAA,GAAA,CAAI,aAAa,IAAI,CAAA;AAErB,IAAA,IAAA,CAAK,gBAAgB,GAAG,CAAA;AAExB,IAAA,OAAO,IAAA;AAAA;AACT,EAEA,QAAQ,IAAA,EAAa;AACnB,IAAA,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,IAAI,CAAC,CAAA;AACnC,IAAA,OAAO,IAAA;AAAA;AACT,EAEA,KAAA,GAAQ;AACN,IAAA,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,CAAC,GAAA,KAAQ;AAC/B,MAAA,GAAA,CAAI,aAAa,IAAI,CAAA;AACrB,MAAA,GAAA,CAAI,SAAS,IAAI,CAAA;AAAA,KAClB,CAAA;AACD,IAAA,OAAO,KAAK,IAAA,CAAK,MAAA,CAAO,CAAA,EAAG,IAAA,CAAK,KAAK,MAAM,CAAA;AAAA;AAC7C,EAEA,WAAW,EAAA,EAAqB;AAC9B,IAAA,OAAO,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,CAAC,MAAM,CAAA,CAAE,QAAA,CAAS,IAAI,CAAA,KAAM,EAAE,CAAA;AAAA;AAC5D,EAEA,cAAc,KAAA,EAAe;AAC3B,IAAA,OAAO,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,KAAK,CAAA;AAAA;AAC9B,EAEA,YAAY,GAAA,EAAU;AACpB,IAAA,OAAO,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAAA;AACpC,EAEA,WAAA,CAAY,QAAa,UAAA,EAAiB;AACxC,IAAA,IAAI,MAAA,CAAO,YAAA,EAAa,KAAM,IAAA,EAAM;AAClC,MAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,QAAQ,MAAM,CAAA;AAC5C,MAAA,IAAA,CAAK,MAAM,IAAA,CAAK,MAAA,CAAO,KAAA,GAAQ,CAAA,EAAG,GAAG,UAAU,CAAA;AAC/C,MAAA,UAAA,CAAW,QAAA,CAAS,KAAK,KAAK,CAAA;AAC9B,MAAA,UAAA,CAAW,aAAa,IAAI,CAAA;AAC5B,MAAA,IAAA,CAAK,gBAAgB,UAAU,CAAA;AAAA;AACjC;AACF,EAEA,YAAA,CAAa,QAAa,UAAA,EAAiB;AACzC,IAAA,IAAI,MAAA,CAAO,YAAA,EAAa,KAAM,IAAA,EAAM;AAClC,MAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,QAAQ,MAAM,CAAA;AAC5C,MAAA,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,MAAA,CAAO,KAAA,EAAO,GAAG,UAAU,CAAA;AAC3C,MAAA,UAAA,CAAW,QAAA,CAAS,KAAK,KAAK,CAAA;AAC9B,MAAA,UAAA,CAAW,aAAa,IAAI,CAAA;AAC5B,MAAA,IAAA,CAAK,gBAAgB,UAAU,CAAA;AAAA;AACjC;AACF,EAEA,UAAU,GAAA,EAAU;AAClB,IAAA,IAAI,GAAA,CAAI,YAAA,EAAa,KAAM,IAAA,EAAM;AAC/B,MAAA,GAAA,CAAI,aAAa,IAAI,CAAA;AACrB,MAAA,IAAA,CAAK,KAAA,CAAM,OAAO,IAAA,CAAK,KAAA,CAAM,KAAK,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,KAAM,GAAG,CAAA;AACzD,MAAA,IAAA,CAAK,KAAA,CAAM,UAAU,GAAG,CAAA;AAAA;AAC1B;AACF,EAEA,QAAA,CAAS,GAAQ,CAAA,EAAQ;AACvB,IAAA,IAAI,GAAG,YAAA,EAAa,KAAM,QAAQ,CAAA,EAAG,YAAA,OAAmB,IAAA,EAAM;AAC5D,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,SAAA;AAAA,QAC7B,CAAC,MAAM,CAAA,CAAE,QAAA,GAAW,IAAI,CAAA,KAAM,CAAA,CAAE,WAAW,IAAI;AAAA,OACjD;AACA,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,SAAA;AAAA,QAC7B,CAAC,MAAM,CAAA,CAAE,QAAA,GAAW,IAAI,CAAA,KAAM,CAAA,CAAE,WAAW,IAAI;AAAA,OACjD;AACA,MAAA,IAAI,MAAA,KAAW,EAAA,IAAM,MAAA,KAAW,EAAA,EAAI;AAClC,QAAA,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,MAAM,CAAA,GAAI,CAAA;AAC1B,QAAA,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,MAAM,CAAA,GAAI,CAAA;AAAA;AAC5B;AACF;AACF,EAEU,gBAAgB,MAAA,EAAa;AACrC,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,QAAA,EAAS,CAAE,qBAAqB,UAAU,CAAA;AAC/D,IAAA,OAAA,CAAQ,QAAQ,CAAC,CAAA,KAAM,CAAA,CAAE,IAAA,EAAM,MAAM,CAAC,CAAA;AAAA;AAE1C;;;;"}
|