@platforma-sdk/ui-vue 1.53.15 → 1.54.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/.turbo/turbo-build.log +6 -6
- package/.turbo/turbo-formatter$colon$check.log +2 -2
- package/.turbo/turbo-linter$colon$check.log +2 -2
- package/.turbo/turbo-types$colon$check.log +1 -1
- package/CHANGELOG.md +13 -0
- package/dist/components/PlAgDataTable/PlAgDataTableV2.vue.d.ts.map +1 -1
- package/dist/components/PlAgDataTable/PlAgDataTableV2.vue2.js +38 -37
- package/dist/components/PlAgDataTable/PlAgDataTableV2.vue2.js.map +1 -1
- package/dist/components/PlAnnotations/components/PlAnnotations.vue2.js.map +1 -1
- package/dist/lib/util/helpers/dist/prettyBytes.js.map +1 -1
- package/package.json +5 -5
- package/src/components/PlAgDataTable/PlAgDataTableV2.vue +2 -1
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
WARN Issue while reading "/home/runner/_work/platforma/platforma/.npmrc". Failed to replace env in config: ${NPMJS_TOKEN}
|
|
2
2
|
|
|
3
|
-
> @platforma-sdk/ui-vue@1.
|
|
3
|
+
> @platforma-sdk/ui-vue@1.54.1 build /home/runner/_work/platforma/platforma/sdk/ui-vue
|
|
4
4
|
> ts-builder build --target browser-lib
|
|
5
5
|
|
|
6
6
|
Building browser-lib project...
|
|
@@ -20,8 +20,8 @@ computing gzip size...
|
|
|
20
20
|
[2mdist/[22m[36mcomponents/PlAgCellFile/PlAgCellFile.vue2.js [39m[1m[2m 0.11 kB[22m[1m[22m[2m │ gzip: 0.12 kB[22m[2m │ map: 0.10 kB[22m
|
|
21
21
|
[2mdist/[22m[36mcomponents/PlAgDataTable/PlAgRowCount.vue2.js [39m[1m[2m 0.11 kB[22m[1m[22m[2m │ gzip: 0.12 kB[22m[2m │ map: 0.10 kB[22m
|
|
22
22
|
[2mdist/[22m[36mcomponents/PlAgCsvExporter/PlAgCsvExporter.vue2.js [39m[1m[2m 0.12 kB[22m[1m[22m[2m │ gzip: 0.12 kB[22m[2m │ map: 0.11 kB[22m
|
|
23
|
-
[2mdist/[22m[36mcomponents/PlAgCellProgress/PlAgCellProgress.vue2.js [39m[1m[2m 0.12 kB[22m[1m[22m[2m │ gzip: 0.12 kB[22m[2m │ map: 0.11 kB[22m
|
|
24
23
|
[2mdist/[22m[36mcomponents/PlAgColumnHeader/PlAgColumnHeader.vue2.js [39m[1m[2m 0.12 kB[22m[1m[22m[2m │ gzip: 0.12 kB[22m[2m │ map: 0.11 kB[22m
|
|
24
|
+
[2mdist/[22m[36mcomponents/PlAgCellProgress/PlAgCellProgress.vue2.js [39m[1m[2m 0.12 kB[22m[1m[22m[2m │ gzip: 0.12 kB[22m[2m │ map: 0.11 kB[22m
|
|
25
25
|
[2mdist/[22m[36mcomponents/PlAgRowNumHeader.vue2.js [39m[1m[2m 0.12 kB[22m[1m[22m[2m │ gzip: 0.12 kB[22m[2m │ map: 0.11 kB[22m
|
|
26
26
|
[2mdist/[22m[36mcomponents/PlAgDataTable/PlAgOverlayLoading.vue2.js [39m[1m[2m 0.12 kB[22m[1m[22m[2m │ gzip: 0.12 kB[22m[2m │ map: 0.11 kB[22m
|
|
27
27
|
[2mdist/[22m[36mcomponents/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue2.js [39m[1m[2m 0.12 kB[22m[1m[22m[2m │ gzip: 0.12 kB[22m[2m │ map: 0.11 kB[22m
|
|
@@ -146,7 +146,7 @@ computing gzip size...
|
|
|
146
146
|
[2mdist/[22m[36mnode_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/coerce.js [39m[1m[2m 1.18 kB[22m[1m[22m[2m │ gzip: 0.58 kB[22m[2m │ map: 3.54 kB[22m
|
|
147
147
|
[2mdist/[22m[36mplugins/Monetization/validation.js [39m[1m[2m 1.19 kB[22m[1m[22m[2m │ gzip: 0.57 kB[22m[2m │ map: 2.92 kB[22m
|
|
148
148
|
[2mdist/[22m[36mnode_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/min-version.js [39m[1m[2m 1.20 kB[22m[1m[22m[2m │ gzip: 0.57 kB[22m[2m │ map: 2.88 kB[22m
|
|
149
|
-
[2mdist/[22m[36mlib/util/helpers/dist/prettyBytes.js [39m[1m[2m 1.26 kB[22m[1m[22m[2m │ gzip: 0.65 kB[22m[2m │ map: 4.
|
|
149
|
+
[2mdist/[22m[36mlib/util/helpers/dist/prettyBytes.js [39m[1m[2m 1.26 kB[22m[1m[22m[2m │ gzip: 0.65 kB[22m[2m │ map: 4.14 kB[22m
|
|
150
150
|
[2mdist/[22m[36mplugins/Monetization/RunStatus.vue2.js [39m[1m[2m 1.27 kB[22m[1m[22m[2m │ gzip: 0.59 kB[22m[2m │ map: 3.14 kB[22m
|
|
151
151
|
[2mdist/[22m[36mcomponents/PlAdvancedFilter/utils.js [39m[1m[2m 1.31 kB[22m[1m[22m[2m │ gzip: 0.61 kB[22m[2m │ map: 5.45 kB[22m
|
|
152
152
|
[2mdist/[22m[36mcomponents/PlBtnExportArchive/Summary.vue2.js [39m[1m[2m 1.32 kB[22m[1m[22m[2m │ gzip: 0.58 kB[22m[2m │ map: 2.53 kB[22m
|
|
@@ -203,9 +203,9 @@ computing gzip size...
|
|
|
203
203
|
[2mdist/[22m[36mcomponents/PlAdvancedFilter/PlAdvancedFilter.vue2.js [39m[1m[2m 8.35 kB[22m[1m[22m[2m │ gzip: 2.42 kB[22m[2m │ map: 16.93 kB[22m
|
|
204
204
|
[2mdist/[22m[36mcomponents/PlTableFilters/filters_logic.js [39m[1m[2m 9.25 kB[22m[1m[22m[2m │ gzip: 2.19 kB[22m[2m │ map: 20.75 kB[22m
|
|
205
205
|
[2mdist/[22m[36mcomponents/PlAdvancedFilter/FilterEditor.vue2.js [39m[1m[2m 12.83 kB[22m[1m[22m[2m │ gzip: 3.28 kB[22m[2m │ map: 25.49 kB[22m
|
|
206
|
-
[2mdist/[22m[36mcomponents/PlAgDataTable/PlAgDataTableV2.vue2.js [39m[1m[2m 15.
|
|
206
|
+
[2mdist/[22m[36mcomponents/PlAgDataTable/PlAgDataTableV2.vue2.js [39m[1m[2m 15.31 kB[22m[1m[22m[2m │ gzip: 4.41 kB[22m[2m │ map: 34.88 kB[22m
|
|
207
207
|
[2mdist/[22m[36mindex.js [39m[1m[2m101.49 kB[22m[1m[22m[2m │ gzip: 64.76 kB[22m[2m │ map: 0.13 kB[22m
|
|
208
|
-
[vite:dts] Declaration files built in
|
|
208
|
+
[vite:dts] Declaration files built in 6166ms.
|
|
209
209
|
|
|
210
|
-
[32m✓ built in
|
|
210
|
+
[32m✓ built in 7.95s[39m
|
|
211
211
|
Build completed successfully
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
WARN Issue while reading "/home/runner/_work/platforma/platforma/.npmrc". Failed to replace env in config: ${NPMJS_TOKEN}
|
|
2
2
|
|
|
3
|
-
> @platforma-sdk/ui-vue@1.
|
|
3
|
+
> @platforma-sdk/ui-vue@1.54.1 formatter:check /home/runner/_work/platforma/platforma/sdk/ui-vue
|
|
4
4
|
> ts-builder formatter --check
|
|
5
5
|
|
|
6
6
|
Checking formatting...
|
|
@@ -8,5 +8,5 @@ Checking formatting...
|
|
|
8
8
|
Checking formatting...
|
|
9
9
|
|
|
10
10
|
All matched files use the correct format.
|
|
11
|
-
Finished in
|
|
11
|
+
Finished in 2901ms on 125 files using 8 threads.
|
|
12
12
|
Format check completed successfully
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
WARN Issue while reading "/home/runner/_work/platforma/platforma/.npmrc". Failed to replace env in config: ${NPMJS_TOKEN}
|
|
2
2
|
|
|
3
|
-
> @platforma-sdk/ui-vue@1.
|
|
3
|
+
> @platforma-sdk/ui-vue@1.54.1 linter:check /home/runner/_work/platforma/platforma/sdk/ui-vue
|
|
4
4
|
> ts-builder linter --check
|
|
5
5
|
|
|
6
6
|
Linting project...
|
|
7
7
|
↳ oxlint --config /home/runner/_work/platforma/platforma/sdk/ui-vue/.oxlintrc.json --deny-warnings
|
|
8
8
|
Found 0 warnings and 0 errors.
|
|
9
|
-
Finished in
|
|
9
|
+
Finished in 32ms on 108 files with 98 rules using 8 threads.
|
|
10
10
|
Linting completed successfully
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
WARN Issue while reading "/home/runner/_work/platforma/platforma/.npmrc". Failed to replace env in config: ${NPMJS_TOKEN}
|
|
2
2
|
|
|
3
|
-
> @platforma-sdk/ui-vue@1.
|
|
3
|
+
> @platforma-sdk/ui-vue@1.54.1 types:check /home/runner/_work/platforma/platforma/sdk/ui-vue
|
|
4
4
|
> ts-builder type-check --target browser-lib
|
|
5
5
|
|
|
6
6
|
↳ vue-tsc.js --noEmit --project ./tsconfig.json --customConditions ,
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# @platforma-sdk/ui-vue
|
|
2
2
|
|
|
3
|
+
## 1.54.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- @milaboratories/uikit@2.10.19
|
|
8
|
+
- @platforma-sdk/model@1.53.15
|
|
9
|
+
|
|
10
|
+
## 1.54.0
|
|
11
|
+
|
|
12
|
+
### Minor Changes
|
|
13
|
+
|
|
14
|
+
- ddc83fb: Make PlAgDataTableV2 export TSV by default instead of CSV
|
|
15
|
+
|
|
3
16
|
## 1.53.15
|
|
4
17
|
|
|
5
18
|
### Patch Changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlAgDataTableV2.vue.d.ts","sourceRoot":"","sources":["../../../src/components/PlAgDataTable/PlAgDataTableV2.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PlAgDataTableV2.vue.d.ts","sourceRoot":"","sources":["../../../src/components/PlAgDataTable/PlAgDataTableV2.vue"],"names":[],"mappings":"AAooBA,OAAO,KAAK,EACV,MAAM,EAEN,kBAAkB,EAClB,gBAAgB,EAGhB,SAAS,EAEV,MAAM,sBAAsB,CAAC;AAU9B,OAAO,KAAK,EACV,wBAAwB,EAQzB,MAAM,oBAAoB,CAAC;AAiB5B,OAAO,KAAK,EAEV,kBAAkB,EAGlB,qBAAqB,EAItB,MAAM,SAAS,CAAC;AASjB,KAAK,WAAW,GAAG;IACjB,kCAAkC;IAClC,QAAQ,EAAE,QAAQ,CAAC,qBAAqB,CAAC,CAAC;IAE1C;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;OAEG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;;;;;OAMG;IACH,iCAAiC,CAAC,EAAE,OAAO,CAAC;IAE5C,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,yDAAyD;IACzD,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,wBAAwB,CAAC,kBAAkB,CAAC,CAAC;CACrE,CAAC;AAoeF,KAAK,iBAAiB,GAAG;IACzB,UAAU,EAAE,kBAAkB,CAAC;IAC/B,WAAW,CAAC,EAAE,gBAAgB,CAAC;CAC9B,GAAG,WAAW,CAAC;AAMhB,iBAAS,cAAc;WA2GT,OAAO,IAA6B;;iCAXZ,GAAG;gCACJ,GAAG;;;;EAevC;AAsBD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;6FASnB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAapG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
|
|
@@ -40,8 +40,8 @@ const Ze = /* @__PURE__ */ ie({
|
|
|
40
40
|
selectionModifiers: {}
|
|
41
41
|
}),
|
|
42
42
|
emits: /* @__PURE__ */ J(["rowDoubleClicked", "cellButtonClicked", "newDataRendered"], ["update:modelValue", "update:selection"]),
|
|
43
|
-
setup(y, { expose: te, emit:
|
|
44
|
-
const
|
|
43
|
+
setup(y, { expose: te, emit: oe }) {
|
|
44
|
+
const le = U(y, "modelValue"), l = U(y, "selection"), i = y, { settings: x } = ue(i), B = oe, { gridState: R, sheetsState: P, filtersState: T } = Be(le, x), ae = K(() => {
|
|
45
45
|
const e = { ...x.value };
|
|
46
46
|
return e.sourceId !== null ? {
|
|
47
47
|
sheets: e.sheets ?? [],
|
|
@@ -64,10 +64,10 @@ const Ze = /* @__PURE__ */ ie({
|
|
|
64
64
|
}), u = q(null), D = new Ie(), r = q({
|
|
65
65
|
animateRows: !1,
|
|
66
66
|
suppressColumnMoveAnimation: !0,
|
|
67
|
-
cellSelection: !
|
|
67
|
+
cellSelection: !l.value,
|
|
68
68
|
initialState: R.value,
|
|
69
69
|
autoSizeStrategy: { type: "fitCellContents" },
|
|
70
|
-
rowSelection:
|
|
70
|
+
rowSelection: l.value ? {
|
|
71
71
|
mode: "multiRow",
|
|
72
72
|
selectAll: "all",
|
|
73
73
|
groupSelects: "self",
|
|
@@ -77,9 +77,9 @@ const Ze = /* @__PURE__ */ ie({
|
|
|
77
77
|
} : void 0,
|
|
78
78
|
onSelectionChanged: (e) => {
|
|
79
79
|
var t;
|
|
80
|
-
if (
|
|
81
|
-
const
|
|
82
|
-
d(
|
|
80
|
+
if (l.value) {
|
|
81
|
+
const o = e.api.getServerSideSelectionState(), a = ((t = o == null ? void 0 : o.toggledNodes) == null ? void 0 : t.map((n) => X(n))) ?? [];
|
|
82
|
+
d(l.value.selectedKeys, a) || (l.value = { ...l.value, selectedKeys: a });
|
|
83
83
|
}
|
|
84
84
|
},
|
|
85
85
|
onRowDoubleClicked: (e) => {
|
|
@@ -118,12 +118,13 @@ const Ze = /* @__PURE__ */ ie({
|
|
|
118
118
|
defaultCsvExportParams: {
|
|
119
119
|
allColumns: !0,
|
|
120
120
|
suppressQuotes: !0,
|
|
121
|
-
|
|
121
|
+
columnSeparator: " ",
|
|
122
|
+
fileName: "table.tsv"
|
|
122
123
|
},
|
|
123
124
|
onGridReady: (e) => {
|
|
124
125
|
const t = e.api;
|
|
125
126
|
Te(t);
|
|
126
|
-
const
|
|
127
|
+
const o = (n, c) => {
|
|
127
128
|
const s = { ...r.value };
|
|
128
129
|
s[n] = c, r.value = s, t.setGridOption(n, c);
|
|
129
130
|
}, a = (n) => {
|
|
@@ -136,7 +137,7 @@ const Ze = /* @__PURE__ */ ie({
|
|
|
136
137
|
get(n, c, s) {
|
|
137
138
|
switch (c) {
|
|
138
139
|
case "setGridOption":
|
|
139
|
-
return
|
|
140
|
+
return o;
|
|
140
141
|
case "updateGridOptions":
|
|
141
142
|
return a;
|
|
142
143
|
default:
|
|
@@ -166,8 +167,8 @@ const Ze = /* @__PURE__ */ ie({
|
|
|
166
167
|
() => [u.value, R.value],
|
|
167
168
|
([e, t]) => {
|
|
168
169
|
if (!e || e.isDestroyed()) return;
|
|
169
|
-
const
|
|
170
|
-
!d(t, {}) && !d(t,
|
|
170
|
+
const o = V(e.getState());
|
|
171
|
+
!d(t, {}) && !d(t, o) && (r.value.initialState = t, ++F.value);
|
|
171
172
|
}
|
|
172
173
|
);
|
|
173
174
|
const se = K(() => i.cellRendererSelector ?? null);
|
|
@@ -182,16 +183,16 @@ const Ze = /* @__PURE__ */ ie({
|
|
|
182
183
|
), te({
|
|
183
184
|
focusRow: async (e) => {
|
|
184
185
|
const t = await D.promise;
|
|
185
|
-
return t.isDestroyed() ? !1 : Pe(t, (
|
|
186
|
+
return t.isDestroyed() ? !1 : Pe(t, (o) => {
|
|
186
187
|
var a;
|
|
187
|
-
return d((a =
|
|
188
|
+
return d((a = o.data) == null ? void 0 : a.axesKey, e);
|
|
188
189
|
});
|
|
189
190
|
},
|
|
190
191
|
updateSelection: async ({ axesSpec: e, selectedKeys: t }) => {
|
|
191
192
|
var h, g;
|
|
192
|
-
const
|
|
193
|
-
if (
|
|
194
|
-
const a = (h =
|
|
193
|
+
const o = await D.promise;
|
|
194
|
+
if (o.isDestroyed()) return !1;
|
|
195
|
+
const a = (h = l.value) == null ? void 0 : h.axesSpec;
|
|
195
196
|
if (!a || a.length !== e.length) return !1;
|
|
196
197
|
const n = e.map((p) => {
|
|
197
198
|
const S = Y(p);
|
|
@@ -200,14 +201,14 @@ const Ze = /* @__PURE__ */ ie({
|
|
|
200
201
|
if (c.has(-1) || c.size !== e.length) return !1;
|
|
201
202
|
const s = t.map(
|
|
202
203
|
(p) => _(n.map((S) => p[S]))
|
|
203
|
-
), m = ((g =
|
|
204
|
+
), m = ((g = o.getServerSideSelectionState()) == null ? void 0 : g.toggledNodes) ?? [];
|
|
204
205
|
if (!d(m, s)) {
|
|
205
|
-
|
|
206
|
+
o.setServerSideSelectionState({
|
|
206
207
|
selectAll: !1,
|
|
207
208
|
toggledNodes: s
|
|
208
209
|
});
|
|
209
210
|
const p = de(), { resolve: S, promise: w } = Promise.withResolvers();
|
|
210
|
-
p.run(() => O(
|
|
211
|
+
p.run(() => O(l, S, { once: !0 }));
|
|
211
212
|
try {
|
|
212
213
|
await pe(w, 500);
|
|
213
214
|
} catch {
|
|
@@ -220,8 +221,8 @@ const Ze = /* @__PURE__ */ ie({
|
|
|
220
221
|
}
|
|
221
222
|
});
|
|
222
223
|
function re(e) {
|
|
223
|
-
const t = (
|
|
224
|
-
return e ? e.filter(t).filter((
|
|
224
|
+
const t = (o) => !("children" in o);
|
|
225
|
+
return e ? e.filter(t).filter((o) => o.colId && o.colId !== ee) : [];
|
|
225
226
|
}
|
|
226
227
|
Ge(
|
|
227
228
|
() => r.value.columnDefs,
|
|
@@ -229,8 +230,8 @@ const Ze = /* @__PURE__ */ ie({
|
|
|
229
230
|
if (x.value.sourceId === null)
|
|
230
231
|
G.value = [];
|
|
231
232
|
else {
|
|
232
|
-
const
|
|
233
|
-
G.value =
|
|
233
|
+
const o = re(e);
|
|
234
|
+
G.value = o.map(
|
|
234
235
|
(a) => X(a.colId).labeled
|
|
235
236
|
);
|
|
236
237
|
}
|
|
@@ -243,7 +244,7 @@ const Ze = /* @__PURE__ */ ie({
|
|
|
243
244
|
return O(
|
|
244
245
|
() => [u.value, x.value],
|
|
245
246
|
([e, t]) => {
|
|
246
|
-
var
|
|
247
|
+
var o, a;
|
|
247
248
|
if (!(!e || e.isDestroyed()) && !d(t, v)) {
|
|
248
249
|
++C.value;
|
|
249
250
|
try {
|
|
@@ -256,7 +257,7 @@ const Ze = /* @__PURE__ */ ie({
|
|
|
256
257
|
},
|
|
257
258
|
columnDefs: void 0,
|
|
258
259
|
serverSideDatasource: void 0
|
|
259
|
-
}),
|
|
260
|
+
}), l.value && (l.value && !d(l.value, E) && (l.value = z()), e.setServerSideSelectionState({
|
|
260
261
|
selectAll: !1,
|
|
261
262
|
toggledNodes: []
|
|
262
263
|
}));
|
|
@@ -268,11 +269,11 @@ const Ze = /* @__PURE__ */ ie({
|
|
|
268
269
|
...r.value.loadingOverlayComponentParams,
|
|
269
270
|
variant: "loading"
|
|
270
271
|
}
|
|
271
|
-
}),
|
|
272
|
+
}), l.value && (v != null && v.sourceId) && (l.value && !d(l.value, E) && (l.value = z()), e.setServerSideSelectionState({
|
|
272
273
|
selectAll: !1,
|
|
273
274
|
toggledNodes: []
|
|
274
275
|
})));
|
|
275
|
-
const n = ((
|
|
276
|
+
const n = ((o = t.model) == null ? void 0 : o.sourceId) && t.model.sourceId !== t.sourceId;
|
|
276
277
|
if (!t.model || n) {
|
|
277
278
|
const s = e.getServerSideGroupLevelState(), m = !n && s.length > 0 ? s[0].rowCount : 1;
|
|
278
279
|
return e.updateGridOptions({
|
|
@@ -301,12 +302,12 @@ const Ze = /* @__PURE__ */ ie({
|
|
|
301
302
|
const { axesSpec: m, ...h } = s;
|
|
302
303
|
if (e.updateGridOptions({
|
|
303
304
|
...h
|
|
304
|
-
}),
|
|
305
|
-
const { axesSpec: g, selectedKeys: p } =
|
|
305
|
+
}), l.value) {
|
|
306
|
+
const { axesSpec: g, selectedKeys: p } = l.value;
|
|
306
307
|
if (!d(g, m)) {
|
|
307
308
|
if (!g || m.length !== g.length) {
|
|
308
309
|
const f = { axesSpec: m, selectedKeys: [] };
|
|
309
|
-
return d(
|
|
310
|
+
return d(l.value, f) || (l.value = f), e.setServerSideSelectionState({
|
|
310
311
|
selectAll: !1,
|
|
311
312
|
toggledNodes: []
|
|
312
313
|
});
|
|
@@ -314,7 +315,7 @@ const Ze = /* @__PURE__ */ ie({
|
|
|
314
315
|
const S = g.map(Y).map((f) => m.findIndex((N) => Z(N, f))), w = new Set(S);
|
|
315
316
|
if (w.has(-1) || w.size !== m.length) {
|
|
316
317
|
const f = { axesSpec: m, selectedKeys: [] };
|
|
317
|
-
return d(
|
|
318
|
+
return d(l.value, f) || (l.value = f), e.setServerSideSelectionState({
|
|
318
319
|
selectAll: !1,
|
|
319
320
|
toggledNodes: []
|
|
320
321
|
});
|
|
@@ -322,7 +323,7 @@ const Ze = /* @__PURE__ */ ie({
|
|
|
322
323
|
const A = p.map(
|
|
323
324
|
(f) => S.map((N) => f[N])
|
|
324
325
|
), L = { axesSpec: m, selectedKeys: A };
|
|
325
|
-
return d(
|
|
326
|
+
return d(l.value, L) || (l.value = L), e.setServerSideSelectionState({
|
|
326
327
|
selectAll: !1,
|
|
327
328
|
toggledNodes: A.map((f) => _(f))
|
|
328
329
|
});
|
|
@@ -350,12 +351,12 @@ const Ze = /* @__PURE__ */ ie({
|
|
|
350
351
|
notReadyText: i.notReadyText,
|
|
351
352
|
noRowsText: i.noRowsText
|
|
352
353
|
}),
|
|
353
|
-
({ gridApi: e, loadingText: t, runningText:
|
|
354
|
+
({ gridApi: e, loadingText: t, runningText: o, notReadyText: a, noRowsText: n }) => {
|
|
354
355
|
!e || e.isDestroyed() || e.updateGridOptions({
|
|
355
356
|
loadingOverlayComponentParams: {
|
|
356
357
|
...r.value.loadingOverlayComponentParams,
|
|
357
358
|
loadingText: t,
|
|
358
|
-
runningText:
|
|
359
|
+
runningText: o,
|
|
359
360
|
notReadyText: a
|
|
360
361
|
},
|
|
361
362
|
noRowsOverlayComponentParams: {
|
|
@@ -381,7 +382,7 @@ const Ze = /* @__PURE__ */ ie({
|
|
|
381
382
|
y.disableFiltersPanel ? $("", !0) : (b(), k(xe, {
|
|
382
383
|
key: 1,
|
|
383
384
|
modelValue: I(T),
|
|
384
|
-
"onUpdate:modelValue": t[0] || (t[0] = (
|
|
385
|
+
"onUpdate:modelValue": t[0] || (t[0] = (o) => Q(T) ? T.value = o : null),
|
|
385
386
|
settings: ne.value
|
|
386
387
|
}, null, 8, ["modelValue", "settings"])),
|
|
387
388
|
u.value && y.showExportButton ? (b(), k(he, {
|
|
@@ -390,7 +391,7 @@ const Ze = /* @__PURE__ */ ie({
|
|
|
390
391
|
}, null, 8, ["api"])) : $("", !0),
|
|
391
392
|
fe(Re, {
|
|
392
393
|
modelValue: I(P),
|
|
393
|
-
"onUpdate:modelValue": t[1] || (t[1] = (
|
|
394
|
+
"onUpdate:modelValue": t[1] || (t[1] = (o) => Q(P) ? P.value = o : null),
|
|
394
395
|
settings: ae.value
|
|
395
396
|
}, ve({ _: 2 }, [
|
|
396
397
|
e.$slots["before-sheets"] ? {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlAgDataTableV2.vue2.js","sources":["../../../src/components/PlAgDataTable/PlAgDataTableV2.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { promiseTimeout, isJsonEqual } from \"@milaboratories/helpers\";\nimport type {\n AxisId,\n PlDataTableGridStateCore,\n PlDataTableStateV2,\n PlSelectionModel,\n PlTableColumnIdJson,\n PTableColumnSpec,\n PTableKey,\n PTableValue,\n} from \"@platforma-sdk/model\";\nimport {\n getRawPlatformaInstance,\n parseJson,\n createPlSelectionModel,\n matchAxisId,\n getAxisId,\n canonicalizeJson,\n isAbortError,\n} from \"@platforma-sdk/model\";\nimport type {\n CellRendererSelectorFunc,\n ColDef,\n ColGroupDef,\n GridApi,\n GridOptions,\n GridState,\n ManagedGridOptionKey,\n ManagedGridOptions,\n} from \"ag-grid-enterprise\";\nimport { AgGridVue } from \"ag-grid-vue3\";\nimport { computed, effectScope, ref, shallowRef, toRefs, watch, watchEffect } from \"vue\";\nimport { AgGridTheme } from \"../../aggrid\";\nimport PlAgCsvExporter from \"../PlAgCsvExporter/PlAgCsvExporter.vue\";\nimport { PlAgGridColumnManager } from \"../PlAgGridColumnManager\";\nimport type { PlDataTableFiltersSettings } from \"../PlTableFilters\";\nimport PlTableFiltersV2 from \"../PlTableFilters/PlTableFiltersV2.vue\";\nimport PlAgDataTableSheets from \"./PlAgDataTableSheets.vue\";\nimport PlOverlayLoading from \"./PlAgOverlayLoading.vue\";\nimport PlOverlayNoRows from \"./PlAgOverlayNoRows.vue\";\nimport PlAgRowCount from \"./PlAgRowCount.vue\";\nimport { DeferredCircular, ensureNodeVisible } from \"./sources/focus-row\";\nimport { autoSizeRowNumberColumn, PlAgDataTableRowNumberColId } from \"./sources/row-number\";\nimport type { PlAgCellButtonAxisParams } from \"./sources/table-source-v2\";\nimport { calculateGridOptions } from \"./sources/table-source-v2\";\nimport { useTableState } from \"./sources/table-state-v2\";\nimport type {\n PlAgDataTableV2Controller,\n PlAgDataTableV2Row,\n PlAgOverlayLoadingParams,\n PlAgOverlayNoRowsParams,\n PlDataTableSettingsV2,\n PlDataTableSheetsSettings,\n PlTableRowId,\n PlTableRowIdJson,\n} from \"./types\";\nimport { watchCached } from \"@milaboratories/uikit\";\nimport { type PTableHidden } from \"./sources/common\";\n\nconst tableState = defineModel<PlDataTableStateV2>({\n required: true,\n});\n/** Warning: selection model value updates are ignored, use updateSelection instead */\nconst selection = defineModel<PlSelectionModel>(\"selection\");\nconst props = defineProps<{\n /** Required component settings */\n settings: Readonly<PlDataTableSettingsV2>;\n\n /**\n * The disableColumnsPanel prop controls the display of a button that activates\n * the columns management panel in the table. To make the button functional\n * and visible, you must also include the PlAgDataTableToolsPanel component in your layout.\n * This component serves as the target for teleporting the button.\n */\n disableColumnsPanel?: boolean;\n\n /**\n * The disableFiltersPanel prop controls the display of a button that activates\n * the filters management panel in the table. To make the button functional\n * and visible, you must also include the PlAgDataTableToolsPanel component in your layout.\n * This component serves as the target for teleporting the button.\n */\n disableFiltersPanel?: boolean;\n\n /**\n * The showExportButton prop controls the display of a button that allows\n * to export table data in CSV format. To make the button functional\n * and visible, you must also include the PlAgDataTableToolsPanel component in your layout.\n * This component serves as the target for teleporting the button.\n */\n showExportButton?: boolean;\n\n /**\n * The AxisId property is used to configure and display the PlAgTextAndButtonCell component\n */\n showCellButtonForAxisId?: AxisId;\n\n /**\n * If cellButtonInvokeRowsOnDoubleClick = true, clicking a button inside the row\n * triggers the doubleClick event for the entire row.\n *\n * If cellButtonInvokeRowsOnDoubleClick = false, the doubleClick event for the row\n * is not triggered, but will triggered cellButtonClicked event with (key: PTableRowKey) argument.\n */\n cellButtonInvokeRowsOnDoubleClick?: boolean;\n\n /** @see {@link PlAgOverlayLoadingParams.loadingText} */\n loadingText?: string;\n\n /** @see {@link PlAgOverlayLoadingParams.runningText} */\n runningText?: string;\n\n /** @see {@link PlAgOverlayLoadingParams.notReadyText} */\n notReadyText?: string;\n\n /** @see {@link PlAgOverlayNoRowsParams.text} */\n noRowsText?: string;\n\n /**\n * Callback to override the default renderer for a given cell.\n * @see https://www.ag-grid.com/vue-data-grid/component-cell-renderer/#dynamic-component-selection\n */\n cellRendererSelector?: CellRendererSelectorFunc<PlAgDataTableV2Row>;\n}>();\nconst { settings } = toRefs(props);\nconst emit = defineEmits<{\n rowDoubleClicked: [key?: PTableKey];\n cellButtonClicked: [key?: PTableKey];\n newDataRendered: [];\n}>();\n\nconst { gridState, sheetsState, filtersState } = useTableState(tableState, settings);\n\nconst sheetsSettings = computed<PlDataTableSheetsSettings>(() => {\n const settingsCopy = { ...settings.value };\n return settingsCopy.sourceId !== null\n ? {\n sheets: settingsCopy.sheets ?? [],\n cachedState: [...sheetsState.value],\n }\n : {\n sheets: [],\n cachedState: [],\n };\n});\n\nconst filterableColumns = ref<PTableColumnSpec[]>([]);\nconst filtersSettings = computed<PlDataTableFiltersSettings>(() => {\n const settingsCopy = { ...settings.value };\n const columns = filterableColumns.value;\n const result =\n settingsCopy.sourceId !== null && columns.length > 0\n ? {\n columns,\n config: (column: PTableColumnSpec) =>\n settingsCopy.filtersConfig({ sourceId: settingsCopy.sourceId, column }),\n cachedState: [...filtersState.value],\n }\n : {\n columns: [],\n config: () => ({}),\n cachedState: [],\n };\n return result;\n});\n\nconst gridApi = shallowRef<GridApi<PlAgDataTableV2Row> | null>(null);\nconst dataRenderedTracker = new DeferredCircular<GridApi<PlAgDataTableV2Row>>();\nconst gridOptions = shallowRef<GridOptions<PlAgDataTableV2Row>>({\n animateRows: false,\n suppressColumnMoveAnimation: true,\n cellSelection: !selection.value,\n initialState: gridState.value,\n autoSizeStrategy: { type: \"fitCellContents\" },\n rowSelection: selection.value\n ? {\n mode: \"multiRow\",\n selectAll: \"all\",\n groupSelects: \"self\",\n checkboxes: false,\n headerCheckbox: false,\n enableClickSelection: false,\n }\n : undefined,\n onSelectionChanged: (event) => {\n if (selection.value) {\n const state = event.api.getServerSideSelectionState();\n const selectedKeys =\n state?.toggledNodes?.map((nodeId) => parseJson(nodeId as PlTableRowIdJson)) ?? [];\n if (!isJsonEqual(selection.value.selectedKeys, selectedKeys)) {\n selection.value = { ...selection.value, selectedKeys };\n }\n }\n },\n onRowDoubleClicked: (event) => {\n if (event.data && event.data.axesKey) emit(\"rowDoubleClicked\", event.data.axesKey);\n },\n defaultColDef: {\n suppressHeaderMenuButton: true,\n sortingOrder: [\"desc\", \"asc\", null],\n cellRendererSelector: props.cellRendererSelector,\n },\n maintainColumnOrder: true,\n localeText: {\n loadingError: \"...\",\n },\n rowModelType: \"serverSide\",\n // cacheBlockSize should be the same as PlMultiSequenceAlignment limit\n // so that selectAll will add all rows to selection\n cacheBlockSize: 1000,\n maxBlocksInCache: 100,\n blockLoadDebounceMillis: 500,\n serverSideSortAllLevels: true,\n suppressServerSideFullWidthLoadingRow: true,\n getRowId: (params) => params.data.id,\n loading: true,\n loadingOverlayComponentParams: {\n variant: \"not-ready\",\n loadingText: props.loadingText,\n runningText: props.runningText,\n notReadyText: props.notReadyText,\n } satisfies PlAgOverlayLoadingParams,\n loadingOverlayComponent: PlOverlayLoading,\n noRowsOverlayComponent: PlOverlayNoRows,\n noRowsOverlayComponentParams: {\n text: props.noRowsText,\n } satisfies PlAgOverlayNoRowsParams,\n defaultCsvExportParams: {\n allColumns: true,\n suppressQuotes: true,\n fileName: \"table.csv\",\n },\n onGridReady: (event) => {\n const api = event.api;\n autoSizeRowNumberColumn(api);\n const setGridOption = (key: ManagedGridOptionKey, value: GridOptions[ManagedGridOptionKey]) => {\n const options = { ...gridOptions.value };\n options[key] = value;\n gridOptions.value = options;\n api.setGridOption(key, value);\n };\n const updateGridOptions = (options: ManagedGridOptions) => {\n gridOptions.value = {\n ...gridOptions.value,\n ...options,\n };\n api.updateGridOptions(options);\n };\n gridApi.value = new Proxy(api, {\n get(target, prop, receiver) {\n switch (prop) {\n case \"setGridOption\":\n return setGridOption;\n case \"updateGridOptions\":\n return updateGridOptions;\n default:\n return Reflect.get(target, prop, receiver);\n }\n },\n });\n },\n onStateUpdated: (event) => {\n gridOptions.value.initialState = gridState.value = makePartialState(event.state);\n if (!isJsonEqual(event.sources, [\"columnSizing\"])) {\n event.api.autoSizeColumns(\n event.api\n .getAllDisplayedColumns()\n .filter((column) => column.getColId() !== PlAgDataTableRowNumberColId),\n );\n }\n },\n onGridPreDestroyed: (event) => {\n gridOptions.value.initialState = gridState.value = makePartialState(event.api.getState());\n gridApi.value = null;\n },\n});\n\n// Restore proper types erased by AgGrid\nfunction makePartialState(state: GridState): PlDataTableGridStateCore {\n return {\n columnOrder: state.columnOrder as\n | {\n orderedColIds: PlTableColumnIdJson[];\n }\n | undefined,\n sort: state.sort as\n | {\n sortModel: {\n colId: PlTableColumnIdJson;\n sort: \"asc\" | \"desc\";\n }[];\n }\n | undefined,\n columnVisibility: state.columnVisibility as\n | {\n hiddenColIds: PlTableColumnIdJson[];\n }\n | undefined,\n };\n}\n\n// Reload AgGrid when new state arrives from server\nconst reloadKey = ref(0);\nwatch(\n () => [gridApi.value, gridState.value] as const,\n ([gridApi, gridState]) => {\n if (!gridApi || gridApi.isDestroyed()) return;\n const selfState = makePartialState(gridApi.getState());\n if (!isJsonEqual(gridState, {}) && !isJsonEqual(gridState, selfState)) {\n gridOptions.value.initialState = gridState;\n ++reloadKey.value;\n }\n },\n);\n\n// Make cellRendererSelector reactive\nconst cellRendererSelector = computed(() => props.cellRendererSelector ?? null);\nwatch(\n () => [gridApi.value, cellRendererSelector.value] as const,\n ([gridApi, cellRendererSelector]) => {\n if (!gridApi || gridApi.isDestroyed()) return;\n gridApi.setGridOption(\"defaultColDef\", {\n ...gridOptions.value.defaultColDef,\n cellRendererSelector: cellRendererSelector ?? undefined,\n });\n },\n);\n\ndefineExpose<PlAgDataTableV2Controller>({\n focusRow: async (rowKey) => {\n const gridApi = await dataRenderedTracker.promise;\n if (gridApi.isDestroyed()) return false;\n\n return ensureNodeVisible(gridApi, (row) => isJsonEqual(row.data?.axesKey, rowKey));\n },\n updateSelection: async ({ axesSpec, selectedKeys }) => {\n const gridApi = await dataRenderedTracker.promise;\n if (gridApi.isDestroyed()) return false;\n\n const axes = selection.value?.axesSpec;\n if (!axes || axes.length !== axesSpec.length) return false;\n\n const mapping = axesSpec.map((spec) => {\n const id = getAxisId(spec);\n return axes.findIndex((axis) => matchAxisId(axis, id));\n });\n const mappingSet = new Set(mapping);\n if (mappingSet.has(-1) || mappingSet.size !== axesSpec.length) return false;\n\n const selectedNodes = selectedKeys.map((key) =>\n canonicalizeJson<PlTableRowId>(mapping.map((index) => key[index])),\n );\n const oldSelectedKeys = gridApi.getServerSideSelectionState()?.toggledNodes ?? [];\n if (!isJsonEqual(oldSelectedKeys, selectedNodes)) {\n gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: selectedNodes,\n });\n\n // wait for `onSelectionChanged` to update `selection` model\n const scope = effectScope();\n const { resolve, promise } = Promise.withResolvers();\n scope.run(() => watch(selection, resolve, { once: true }));\n try {\n await promiseTimeout(promise, 500);\n } catch {\n return false;\n } finally {\n scope.stop();\n }\n }\n return true;\n },\n});\n\nfunction getDataColDefs(\n columnDefs: ColDef<PlAgDataTableV2Row, PTableValue | PTableHidden>[] | null | undefined,\n): ColDef<PlAgDataTableV2Row, PTableValue | PTableHidden>[] {\n const isColDef = <TData, TValue>(\n def: ColDef<TData, TValue> | ColGroupDef<TData>,\n ): def is ColDef<TData, TValue> => !(\"children\" in def);\n if (!columnDefs) return [];\n return columnDefs\n .filter(isColDef)\n .filter((def) => def.colId && def.colId !== PlAgDataTableRowNumberColId);\n}\n\n// Propagate columns for filter component\nwatchCached(\n () => gridOptions.value.columnDefs,\n (columnDefs) => {\n const sourceId = settings.value.sourceId;\n if (sourceId === null) {\n filterableColumns.value = [];\n } else {\n const dataColumns = getDataColDefs(columnDefs);\n filterableColumns.value = dataColumns.map(\n (def) => parseJson(def.colId! satisfies string as PlTableColumnIdJson).labeled,\n );\n }\n },\n { immediate: true },\n);\n\n// Update AgGrid when settings change\nconst defaultSelection = createPlSelectionModel();\nlet oldSettings: PlDataTableSettingsV2 | null = null;\nconst generation = ref(0);\nwatch(\n () => [gridApi.value, settings.value] as const,\n ([gridApi, settings]) => {\n // Wait for AgGrid reinitialization, gridApi will eventually become initialized\n if (!gridApi || gridApi.isDestroyed()) return;\n // Verify that this is not a false watch trigger\n if (isJsonEqual(settings, oldSettings)) return;\n ++generation.value;\n try {\n // Hide no rows overlay if it is shown, or else loading overlay will not be shown\n gridApi.hideOverlay();\n dataRenderedTracker.reset();\n\n // No data source selected -> reset state to default\n if (settings.sourceId === null) {\n gridApi.updateGridOptions({\n loading: true,\n loadingOverlayComponentParams: {\n ...gridOptions.value.loadingOverlayComponentParams,\n variant: settings.pending ? \"running\" : \"not-ready\",\n } satisfies PlAgOverlayLoadingParams,\n columnDefs: undefined,\n serverSideDatasource: undefined,\n });\n if (selection.value) {\n if (selection.value && !isJsonEqual(selection.value, defaultSelection)) {\n selection.value = createPlSelectionModel();\n }\n gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: [],\n });\n }\n return;\n }\n\n // Data source changed -> show full page loader, clear selection\n if (settings.sourceId !== oldSettings?.sourceId) {\n gridApi.updateGridOptions({\n loading: true,\n loadingOverlayComponentParams: {\n ...gridOptions.value.loadingOverlayComponentParams,\n variant: \"loading\",\n } satisfies PlAgOverlayLoadingParams,\n });\n if (selection.value && oldSettings?.sourceId) {\n if (selection.value && !isJsonEqual(selection.value, defaultSelection)) {\n selection.value = createPlSelectionModel();\n }\n gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: [],\n });\n }\n }\n\n // Model updated -> show skeletons instead of data\n const sourceChanged =\n settings.model?.sourceId && settings.model.sourceId !== settings.sourceId;\n if (!settings.model || sourceChanged) {\n const state = gridApi.getServerSideGroupLevelState();\n const rowCount = !sourceChanged && state.length > 0 ? state[0].rowCount : 1;\n return gridApi.updateGridOptions({\n serverSideDatasource: {\n getRows: (params) => {\n params.success({ rowData: [], rowCount });\n },\n },\n });\n }\n\n // Model ready -> calculate new state\n const stateGeneration = generation.value;\n calculateGridOptions({\n generation,\n pfDriver: getRawPlatformaInstance().pFrameDriver,\n model: settings.model,\n sheets: settings.sheets ?? [],\n dataRenderedTracker,\n hiddenColIds: gridState.value.columnVisibility?.hiddenColIds,\n cellButtonAxisParams: {\n showCellButtonForAxisId: props.showCellButtonForAxisId,\n cellButtonInvokeRowsOnDoubleClick: props.cellButtonInvokeRowsOnDoubleClick,\n trigger: (key?: PTableKey) => emit(\"cellButtonClicked\", key),\n } satisfies PlAgCellButtonAxisParams,\n })\n .then((result) => {\n if (gridApi.isDestroyed() || stateGeneration !== generation.value) return;\n const { axesSpec, ...options } = result;\n gridApi.updateGridOptions({\n ...options,\n });\n if (selection.value) {\n // Update selection if axesSpec changed, as order of axes may have changed and so we need to remap selected keys\n const { axesSpec: oldAxesSpec, selectedKeys: oldSelectedKeys } = selection.value;\n if (!isJsonEqual(oldAxesSpec, axesSpec)) {\n if (!oldAxesSpec || axesSpec.length !== oldAxesSpec.length) {\n const newSelection: PlSelectionModel = { axesSpec, selectedKeys: [] };\n if (!isJsonEqual(selection.value, newSelection)) {\n selection.value = newSelection;\n }\n return gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: [],\n });\n }\n\n const mapping = oldAxesSpec\n .map(getAxisId)\n .map((id) => axesSpec.findIndex((axis) => matchAxisId(axis, id)));\n const mappingSet = new Set(mapping);\n if (mappingSet.has(-1) || mappingSet.size !== axesSpec.length) {\n const newSelection: PlSelectionModel = { axesSpec, selectedKeys: [] };\n if (!isJsonEqual(selection.value, newSelection)) {\n selection.value = newSelection;\n }\n return gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: [],\n });\n }\n\n const selectedNodes = oldSelectedKeys.map((key) =>\n mapping.map((index) => key[index]),\n );\n const newSelection: PlSelectionModel = { axesSpec, selectedKeys: selectedNodes };\n if (!isJsonEqual(selection.value, newSelection)) {\n selection.value = newSelection;\n }\n return gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: selectedNodes.map((key) => canonicalizeJson<PlTableRowId>(key)),\n });\n }\n }\n })\n .catch((error: unknown) => {\n if (gridApi.isDestroyed() || stateGeneration !== generation.value) return;\n if (isAbortError(error)) return;\n console.trace(error);\n })\n .finally(() => {\n if (gridApi.isDestroyed() || stateGeneration !== generation.value) return;\n gridApi.updateGridOptions({\n loading: false,\n });\n });\n dataRenderedTracker.promise.then(() => emit(\"newDataRendered\"));\n } catch (error: unknown) {\n console.trace(error);\n } finally {\n oldSettings = settings;\n }\n },\n);\n\nwatch(\n () => ({\n gridApi: gridApi.value,\n loadingText: props.loadingText,\n runningText: props.runningText,\n notReadyText: props.notReadyText,\n noRowsText: props.noRowsText,\n }),\n ({ gridApi, loadingText, runningText, notReadyText, noRowsText }) => {\n if (!gridApi || gridApi.isDestroyed()) return;\n gridApi.updateGridOptions({\n loadingOverlayComponentParams: {\n ...gridOptions.value.loadingOverlayComponentParams,\n loadingText,\n runningText,\n notReadyText,\n },\n noRowsOverlayComponentParams: {\n ...gridOptions.value.noRowsOverlayComponentParams,\n text: noRowsText,\n },\n });\n },\n);\n\nwatchEffect(() => {\n if (!gridApi.value || gridApi.value?.isDestroyed()) return;\n gridApi.value.updateGridOptions({\n statusBar: gridOptions.value.loading\n ? undefined\n : {\n statusPanels: [{ statusPanel: PlAgRowCount, align: \"left\" }],\n },\n });\n});\n</script>\n\n<template>\n <div :class=\"$style.container\">\n <PlAgGridColumnManager v-if=\"gridApi && !disableColumnsPanel\" :api=\"gridApi\" />\n <PlTableFiltersV2\n v-if=\"!disableFiltersPanel\"\n v-model=\"filtersState\"\n :settings=\"filtersSettings\"\n />\n <PlAgCsvExporter v-if=\"gridApi && showExportButton\" :api=\"gridApi\" />\n <PlAgDataTableSheets v-model=\"sheetsState\" :settings=\"sheetsSettings\">\n <template v-if=\"$slots['before-sheets']\" #before>\n <slot name=\"before-sheets\" />\n </template>\n <template v-if=\"$slots['after-sheets']\" #after>\n <slot name=\"after-sheets\" />\n </template>\n </PlAgDataTableSheets>\n <AgGridVue\n :key=\"reloadKey\"\n :theme=\"AgGridTheme\"\n :class=\"$style.grid\"\n :grid-options=\"gridOptions\"\n />\n </div>\n</template>\n\n<style lang=\"css\" module>\n.container {\n display: flex;\n flex-direction: column;\n height: 100%;\n gap: 12px;\n}\n\n.grid {\n flex: 1;\n}\n</style>\n"],"names":["tableState","_useModel","selection","__props","props","settings","toRefs","emit","__emit","gridState","sheetsState","filtersState","useTableState","sheetsSettings","computed","settingsCopy","filterableColumns","ref","filtersSettings","columns","column","gridApi","shallowRef","dataRenderedTracker","DeferredCircular","gridOptions","event","state","selectedKeys","_a","nodeId","parseJson","isJsonEqual","params","PlOverlayLoading","PlOverlayNoRows","api","autoSizeRowNumberColumn","setGridOption","key","value","options","updateGridOptions","target","prop","receiver","makePartialState","PlAgDataTableRowNumberColId","reloadKey","watch","selfState","cellRendererSelector","__expose","rowKey","ensureNodeVisible","row","axesSpec","axes","mapping","spec","id","getAxisId","axis","matchAxisId","mappingSet","selectedNodes","canonicalizeJson","index","oldSelectedKeys","scope","effectScope","resolve","promise","promiseTimeout","getDataColDefs","columnDefs","isColDef","def","watchCached","dataColumns","defaultSelection","createPlSelectionModel","oldSettings","generation","sourceChanged","rowCount","stateGeneration","calculateGridOptions","getRawPlatformaInstance","_b","result","oldAxesSpec","newSelection","error","isAbortError","loadingText","runningText","notReadyText","noRowsText","watchEffect","PlAgRowCount","_createElementBlock","_normalizeClass","$style","_createBlock","_unref","PlAgGridColumnManager","PlTableFiltersV2","$event","PlAgCsvExporter","_createVNode","PlAgDataTableSheets","$slots","_renderSlot","_ctx","AgGridVue","AgGridTheme"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PlAgDataTableV2.vue2.js","sources":["../../../src/components/PlAgDataTable/PlAgDataTableV2.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { promiseTimeout, isJsonEqual } from \"@milaboratories/helpers\";\nimport type {\n AxisId,\n PlDataTableGridStateCore,\n PlDataTableStateV2,\n PlSelectionModel,\n PlTableColumnIdJson,\n PTableColumnSpec,\n PTableKey,\n PTableValue,\n} from \"@platforma-sdk/model\";\nimport {\n getRawPlatformaInstance,\n parseJson,\n createPlSelectionModel,\n matchAxisId,\n getAxisId,\n canonicalizeJson,\n isAbortError,\n} from \"@platforma-sdk/model\";\nimport type {\n CellRendererSelectorFunc,\n ColDef,\n ColGroupDef,\n GridApi,\n GridOptions,\n GridState,\n ManagedGridOptionKey,\n ManagedGridOptions,\n} from \"ag-grid-enterprise\";\nimport { AgGridVue } from \"ag-grid-vue3\";\nimport { computed, effectScope, ref, shallowRef, toRefs, watch, watchEffect } from \"vue\";\nimport { AgGridTheme } from \"../../aggrid\";\nimport PlAgCsvExporter from \"../PlAgCsvExporter/PlAgCsvExporter.vue\";\nimport { PlAgGridColumnManager } from \"../PlAgGridColumnManager\";\nimport type { PlDataTableFiltersSettings } from \"../PlTableFilters\";\nimport PlTableFiltersV2 from \"../PlTableFilters/PlTableFiltersV2.vue\";\nimport PlAgDataTableSheets from \"./PlAgDataTableSheets.vue\";\nimport PlOverlayLoading from \"./PlAgOverlayLoading.vue\";\nimport PlOverlayNoRows from \"./PlAgOverlayNoRows.vue\";\nimport PlAgRowCount from \"./PlAgRowCount.vue\";\nimport { DeferredCircular, ensureNodeVisible } from \"./sources/focus-row\";\nimport { autoSizeRowNumberColumn, PlAgDataTableRowNumberColId } from \"./sources/row-number\";\nimport type { PlAgCellButtonAxisParams } from \"./sources/table-source-v2\";\nimport { calculateGridOptions } from \"./sources/table-source-v2\";\nimport { useTableState } from \"./sources/table-state-v2\";\nimport type {\n PlAgDataTableV2Controller,\n PlAgDataTableV2Row,\n PlAgOverlayLoadingParams,\n PlAgOverlayNoRowsParams,\n PlDataTableSettingsV2,\n PlDataTableSheetsSettings,\n PlTableRowId,\n PlTableRowIdJson,\n} from \"./types\";\nimport { watchCached } from \"@milaboratories/uikit\";\nimport { type PTableHidden } from \"./sources/common\";\n\nconst tableState = defineModel<PlDataTableStateV2>({\n required: true,\n});\n/** Warning: selection model value updates are ignored, use updateSelection instead */\nconst selection = defineModel<PlSelectionModel>(\"selection\");\nconst props = defineProps<{\n /** Required component settings */\n settings: Readonly<PlDataTableSettingsV2>;\n\n /**\n * The disableColumnsPanel prop controls the display of a button that activates\n * the columns management panel in the table. To make the button functional\n * and visible, you must also include the PlAgDataTableToolsPanel component in your layout.\n * This component serves as the target for teleporting the button.\n */\n disableColumnsPanel?: boolean;\n\n /**\n * The disableFiltersPanel prop controls the display of a button that activates\n * the filters management panel in the table. To make the button functional\n * and visible, you must also include the PlAgDataTableToolsPanel component in your layout.\n * This component serves as the target for teleporting the button.\n */\n disableFiltersPanel?: boolean;\n\n /**\n * The showExportButton prop controls the display of a button that allows\n * to export table data in CSV format. To make the button functional\n * and visible, you must also include the PlAgDataTableToolsPanel component in your layout.\n * This component serves as the target for teleporting the button.\n */\n showExportButton?: boolean;\n\n /**\n * The AxisId property is used to configure and display the PlAgTextAndButtonCell component\n */\n showCellButtonForAxisId?: AxisId;\n\n /**\n * If cellButtonInvokeRowsOnDoubleClick = true, clicking a button inside the row\n * triggers the doubleClick event for the entire row.\n *\n * If cellButtonInvokeRowsOnDoubleClick = false, the doubleClick event for the row\n * is not triggered, but will triggered cellButtonClicked event with (key: PTableRowKey) argument.\n */\n cellButtonInvokeRowsOnDoubleClick?: boolean;\n\n /** @see {@link PlAgOverlayLoadingParams.loadingText} */\n loadingText?: string;\n\n /** @see {@link PlAgOverlayLoadingParams.runningText} */\n runningText?: string;\n\n /** @see {@link PlAgOverlayLoadingParams.notReadyText} */\n notReadyText?: string;\n\n /** @see {@link PlAgOverlayNoRowsParams.text} */\n noRowsText?: string;\n\n /**\n * Callback to override the default renderer for a given cell.\n * @see https://www.ag-grid.com/vue-data-grid/component-cell-renderer/#dynamic-component-selection\n */\n cellRendererSelector?: CellRendererSelectorFunc<PlAgDataTableV2Row>;\n}>();\nconst { settings } = toRefs(props);\nconst emit = defineEmits<{\n rowDoubleClicked: [key?: PTableKey];\n cellButtonClicked: [key?: PTableKey];\n newDataRendered: [];\n}>();\n\nconst { gridState, sheetsState, filtersState } = useTableState(tableState, settings);\n\nconst sheetsSettings = computed<PlDataTableSheetsSettings>(() => {\n const settingsCopy = { ...settings.value };\n return settingsCopy.sourceId !== null\n ? {\n sheets: settingsCopy.sheets ?? [],\n cachedState: [...sheetsState.value],\n }\n : {\n sheets: [],\n cachedState: [],\n };\n});\n\nconst filterableColumns = ref<PTableColumnSpec[]>([]);\nconst filtersSettings = computed<PlDataTableFiltersSettings>(() => {\n const settingsCopy = { ...settings.value };\n const columns = filterableColumns.value;\n const result =\n settingsCopy.sourceId !== null && columns.length > 0\n ? {\n columns,\n config: (column: PTableColumnSpec) =>\n settingsCopy.filtersConfig({ sourceId: settingsCopy.sourceId, column }),\n cachedState: [...filtersState.value],\n }\n : {\n columns: [],\n config: () => ({}),\n cachedState: [],\n };\n return result;\n});\n\nconst gridApi = shallowRef<GridApi<PlAgDataTableV2Row> | null>(null);\nconst dataRenderedTracker = new DeferredCircular<GridApi<PlAgDataTableV2Row>>();\nconst gridOptions = shallowRef<GridOptions<PlAgDataTableV2Row>>({\n animateRows: false,\n suppressColumnMoveAnimation: true,\n cellSelection: !selection.value,\n initialState: gridState.value,\n autoSizeStrategy: { type: \"fitCellContents\" },\n rowSelection: selection.value\n ? {\n mode: \"multiRow\",\n selectAll: \"all\",\n groupSelects: \"self\",\n checkboxes: false,\n headerCheckbox: false,\n enableClickSelection: false,\n }\n : undefined,\n onSelectionChanged: (event) => {\n if (selection.value) {\n const state = event.api.getServerSideSelectionState();\n const selectedKeys =\n state?.toggledNodes?.map((nodeId) => parseJson(nodeId as PlTableRowIdJson)) ?? [];\n if (!isJsonEqual(selection.value.selectedKeys, selectedKeys)) {\n selection.value = { ...selection.value, selectedKeys };\n }\n }\n },\n onRowDoubleClicked: (event) => {\n if (event.data && event.data.axesKey) emit(\"rowDoubleClicked\", event.data.axesKey);\n },\n defaultColDef: {\n suppressHeaderMenuButton: true,\n sortingOrder: [\"desc\", \"asc\", null],\n cellRendererSelector: props.cellRendererSelector,\n },\n maintainColumnOrder: true,\n localeText: {\n loadingError: \"...\",\n },\n rowModelType: \"serverSide\",\n // cacheBlockSize should be the same as PlMultiSequenceAlignment limit\n // so that selectAll will add all rows to selection\n cacheBlockSize: 1000,\n maxBlocksInCache: 100,\n blockLoadDebounceMillis: 500,\n serverSideSortAllLevels: true,\n suppressServerSideFullWidthLoadingRow: true,\n getRowId: (params) => params.data.id,\n loading: true,\n loadingOverlayComponentParams: {\n variant: \"not-ready\",\n loadingText: props.loadingText,\n runningText: props.runningText,\n notReadyText: props.notReadyText,\n } satisfies PlAgOverlayLoadingParams,\n loadingOverlayComponent: PlOverlayLoading,\n noRowsOverlayComponent: PlOverlayNoRows,\n noRowsOverlayComponentParams: {\n text: props.noRowsText,\n } satisfies PlAgOverlayNoRowsParams,\n defaultCsvExportParams: {\n allColumns: true,\n suppressQuotes: true,\n columnSeparator: \"\\t\",\n fileName: \"table.tsv\",\n },\n onGridReady: (event) => {\n const api = event.api;\n autoSizeRowNumberColumn(api);\n const setGridOption = (key: ManagedGridOptionKey, value: GridOptions[ManagedGridOptionKey]) => {\n const options = { ...gridOptions.value };\n options[key] = value;\n gridOptions.value = options;\n api.setGridOption(key, value);\n };\n const updateGridOptions = (options: ManagedGridOptions) => {\n gridOptions.value = {\n ...gridOptions.value,\n ...options,\n };\n api.updateGridOptions(options);\n };\n gridApi.value = new Proxy(api, {\n get(target, prop, receiver) {\n switch (prop) {\n case \"setGridOption\":\n return setGridOption;\n case \"updateGridOptions\":\n return updateGridOptions;\n default:\n return Reflect.get(target, prop, receiver);\n }\n },\n });\n },\n onStateUpdated: (event) => {\n gridOptions.value.initialState = gridState.value = makePartialState(event.state);\n if (!isJsonEqual(event.sources, [\"columnSizing\"])) {\n event.api.autoSizeColumns(\n event.api\n .getAllDisplayedColumns()\n .filter((column) => column.getColId() !== PlAgDataTableRowNumberColId),\n );\n }\n },\n onGridPreDestroyed: (event) => {\n gridOptions.value.initialState = gridState.value = makePartialState(event.api.getState());\n gridApi.value = null;\n },\n});\n\n// Restore proper types erased by AgGrid\nfunction makePartialState(state: GridState): PlDataTableGridStateCore {\n return {\n columnOrder: state.columnOrder as\n | {\n orderedColIds: PlTableColumnIdJson[];\n }\n | undefined,\n sort: state.sort as\n | {\n sortModel: {\n colId: PlTableColumnIdJson;\n sort: \"asc\" | \"desc\";\n }[];\n }\n | undefined,\n columnVisibility: state.columnVisibility as\n | {\n hiddenColIds: PlTableColumnIdJson[];\n }\n | undefined,\n };\n}\n\n// Reload AgGrid when new state arrives from server\nconst reloadKey = ref(0);\nwatch(\n () => [gridApi.value, gridState.value] as const,\n ([gridApi, gridState]) => {\n if (!gridApi || gridApi.isDestroyed()) return;\n const selfState = makePartialState(gridApi.getState());\n if (!isJsonEqual(gridState, {}) && !isJsonEqual(gridState, selfState)) {\n gridOptions.value.initialState = gridState;\n ++reloadKey.value;\n }\n },\n);\n\n// Make cellRendererSelector reactive\nconst cellRendererSelector = computed(() => props.cellRendererSelector ?? null);\nwatch(\n () => [gridApi.value, cellRendererSelector.value] as const,\n ([gridApi, cellRendererSelector]) => {\n if (!gridApi || gridApi.isDestroyed()) return;\n gridApi.setGridOption(\"defaultColDef\", {\n ...gridOptions.value.defaultColDef,\n cellRendererSelector: cellRendererSelector ?? undefined,\n });\n },\n);\n\ndefineExpose<PlAgDataTableV2Controller>({\n focusRow: async (rowKey) => {\n const gridApi = await dataRenderedTracker.promise;\n if (gridApi.isDestroyed()) return false;\n\n return ensureNodeVisible(gridApi, (row) => isJsonEqual(row.data?.axesKey, rowKey));\n },\n updateSelection: async ({ axesSpec, selectedKeys }) => {\n const gridApi = await dataRenderedTracker.promise;\n if (gridApi.isDestroyed()) return false;\n\n const axes = selection.value?.axesSpec;\n if (!axes || axes.length !== axesSpec.length) return false;\n\n const mapping = axesSpec.map((spec) => {\n const id = getAxisId(spec);\n return axes.findIndex((axis) => matchAxisId(axis, id));\n });\n const mappingSet = new Set(mapping);\n if (mappingSet.has(-1) || mappingSet.size !== axesSpec.length) return false;\n\n const selectedNodes = selectedKeys.map((key) =>\n canonicalizeJson<PlTableRowId>(mapping.map((index) => key[index])),\n );\n const oldSelectedKeys = gridApi.getServerSideSelectionState()?.toggledNodes ?? [];\n if (!isJsonEqual(oldSelectedKeys, selectedNodes)) {\n gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: selectedNodes,\n });\n\n // wait for `onSelectionChanged` to update `selection` model\n const scope = effectScope();\n const { resolve, promise } = Promise.withResolvers();\n scope.run(() => watch(selection, resolve, { once: true }));\n try {\n await promiseTimeout(promise, 500);\n } catch {\n return false;\n } finally {\n scope.stop();\n }\n }\n return true;\n },\n});\n\nfunction getDataColDefs(\n columnDefs: ColDef<PlAgDataTableV2Row, PTableValue | PTableHidden>[] | null | undefined,\n): ColDef<PlAgDataTableV2Row, PTableValue | PTableHidden>[] {\n const isColDef = <TData, TValue>(\n def: ColDef<TData, TValue> | ColGroupDef<TData>,\n ): def is ColDef<TData, TValue> => !(\"children\" in def);\n if (!columnDefs) return [];\n return columnDefs\n .filter(isColDef)\n .filter((def) => def.colId && def.colId !== PlAgDataTableRowNumberColId);\n}\n\n// Propagate columns for filter component\nwatchCached(\n () => gridOptions.value.columnDefs,\n (columnDefs) => {\n const sourceId = settings.value.sourceId;\n if (sourceId === null) {\n filterableColumns.value = [];\n } else {\n const dataColumns = getDataColDefs(columnDefs);\n filterableColumns.value = dataColumns.map(\n (def) => parseJson(def.colId! satisfies string as PlTableColumnIdJson).labeled,\n );\n }\n },\n { immediate: true },\n);\n\n// Update AgGrid when settings change\nconst defaultSelection = createPlSelectionModel();\nlet oldSettings: PlDataTableSettingsV2 | null = null;\nconst generation = ref(0);\nwatch(\n () => [gridApi.value, settings.value] as const,\n ([gridApi, settings]) => {\n // Wait for AgGrid reinitialization, gridApi will eventually become initialized\n if (!gridApi || gridApi.isDestroyed()) return;\n // Verify that this is not a false watch trigger\n if (isJsonEqual(settings, oldSettings)) return;\n ++generation.value;\n try {\n // Hide no rows overlay if it is shown, or else loading overlay will not be shown\n gridApi.hideOverlay();\n dataRenderedTracker.reset();\n\n // No data source selected -> reset state to default\n if (settings.sourceId === null) {\n gridApi.updateGridOptions({\n loading: true,\n loadingOverlayComponentParams: {\n ...gridOptions.value.loadingOverlayComponentParams,\n variant: settings.pending ? \"running\" : \"not-ready\",\n } satisfies PlAgOverlayLoadingParams,\n columnDefs: undefined,\n serverSideDatasource: undefined,\n });\n if (selection.value) {\n if (selection.value && !isJsonEqual(selection.value, defaultSelection)) {\n selection.value = createPlSelectionModel();\n }\n gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: [],\n });\n }\n return;\n }\n\n // Data source changed -> show full page loader, clear selection\n if (settings.sourceId !== oldSettings?.sourceId) {\n gridApi.updateGridOptions({\n loading: true,\n loadingOverlayComponentParams: {\n ...gridOptions.value.loadingOverlayComponentParams,\n variant: \"loading\",\n } satisfies PlAgOverlayLoadingParams,\n });\n if (selection.value && oldSettings?.sourceId) {\n if (selection.value && !isJsonEqual(selection.value, defaultSelection)) {\n selection.value = createPlSelectionModel();\n }\n gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: [],\n });\n }\n }\n\n // Model updated -> show skeletons instead of data\n const sourceChanged =\n settings.model?.sourceId && settings.model.sourceId !== settings.sourceId;\n if (!settings.model || sourceChanged) {\n const state = gridApi.getServerSideGroupLevelState();\n const rowCount = !sourceChanged && state.length > 0 ? state[0].rowCount : 1;\n return gridApi.updateGridOptions({\n serverSideDatasource: {\n getRows: (params) => {\n params.success({ rowData: [], rowCount });\n },\n },\n });\n }\n\n // Model ready -> calculate new state\n const stateGeneration = generation.value;\n calculateGridOptions({\n generation,\n pfDriver: getRawPlatformaInstance().pFrameDriver,\n model: settings.model,\n sheets: settings.sheets ?? [],\n dataRenderedTracker,\n hiddenColIds: gridState.value.columnVisibility?.hiddenColIds,\n cellButtonAxisParams: {\n showCellButtonForAxisId: props.showCellButtonForAxisId,\n cellButtonInvokeRowsOnDoubleClick: props.cellButtonInvokeRowsOnDoubleClick,\n trigger: (key?: PTableKey) => emit(\"cellButtonClicked\", key),\n } satisfies PlAgCellButtonAxisParams,\n })\n .then((result) => {\n if (gridApi.isDestroyed() || stateGeneration !== generation.value) return;\n const { axesSpec, ...options } = result;\n gridApi.updateGridOptions({\n ...options,\n });\n if (selection.value) {\n // Update selection if axesSpec changed, as order of axes may have changed and so we need to remap selected keys\n const { axesSpec: oldAxesSpec, selectedKeys: oldSelectedKeys } = selection.value;\n if (!isJsonEqual(oldAxesSpec, axesSpec)) {\n if (!oldAxesSpec || axesSpec.length !== oldAxesSpec.length) {\n const newSelection: PlSelectionModel = { axesSpec, selectedKeys: [] };\n if (!isJsonEqual(selection.value, newSelection)) {\n selection.value = newSelection;\n }\n return gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: [],\n });\n }\n\n const mapping = oldAxesSpec\n .map(getAxisId)\n .map((id) => axesSpec.findIndex((axis) => matchAxisId(axis, id)));\n const mappingSet = new Set(mapping);\n if (mappingSet.has(-1) || mappingSet.size !== axesSpec.length) {\n const newSelection: PlSelectionModel = { axesSpec, selectedKeys: [] };\n if (!isJsonEqual(selection.value, newSelection)) {\n selection.value = newSelection;\n }\n return gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: [],\n });\n }\n\n const selectedNodes = oldSelectedKeys.map((key) =>\n mapping.map((index) => key[index]),\n );\n const newSelection: PlSelectionModel = { axesSpec, selectedKeys: selectedNodes };\n if (!isJsonEqual(selection.value, newSelection)) {\n selection.value = newSelection;\n }\n return gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: selectedNodes.map((key) => canonicalizeJson<PlTableRowId>(key)),\n });\n }\n }\n })\n .catch((error: unknown) => {\n if (gridApi.isDestroyed() || stateGeneration !== generation.value) return;\n if (isAbortError(error)) return;\n console.trace(error);\n })\n .finally(() => {\n if (gridApi.isDestroyed() || stateGeneration !== generation.value) return;\n gridApi.updateGridOptions({\n loading: false,\n });\n });\n dataRenderedTracker.promise.then(() => emit(\"newDataRendered\"));\n } catch (error: unknown) {\n console.trace(error);\n } finally {\n oldSettings = settings;\n }\n },\n);\n\nwatch(\n () => ({\n gridApi: gridApi.value,\n loadingText: props.loadingText,\n runningText: props.runningText,\n notReadyText: props.notReadyText,\n noRowsText: props.noRowsText,\n }),\n ({ gridApi, loadingText, runningText, notReadyText, noRowsText }) => {\n if (!gridApi || gridApi.isDestroyed()) return;\n gridApi.updateGridOptions({\n loadingOverlayComponentParams: {\n ...gridOptions.value.loadingOverlayComponentParams,\n loadingText,\n runningText,\n notReadyText,\n },\n noRowsOverlayComponentParams: {\n ...gridOptions.value.noRowsOverlayComponentParams,\n text: noRowsText,\n },\n });\n },\n);\n\nwatchEffect(() => {\n if (!gridApi.value || gridApi.value?.isDestroyed()) return;\n gridApi.value.updateGridOptions({\n statusBar: gridOptions.value.loading\n ? undefined\n : {\n statusPanels: [{ statusPanel: PlAgRowCount, align: \"left\" }],\n },\n });\n});\n</script>\n\n<template>\n <div :class=\"$style.container\">\n <PlAgGridColumnManager v-if=\"gridApi && !disableColumnsPanel\" :api=\"gridApi\" />\n <PlTableFiltersV2\n v-if=\"!disableFiltersPanel\"\n v-model=\"filtersState\"\n :settings=\"filtersSettings\"\n />\n <PlAgCsvExporter v-if=\"gridApi && showExportButton\" :api=\"gridApi\" />\n <PlAgDataTableSheets v-model=\"sheetsState\" :settings=\"sheetsSettings\">\n <template v-if=\"$slots['before-sheets']\" #before>\n <slot name=\"before-sheets\" />\n </template>\n <template v-if=\"$slots['after-sheets']\" #after>\n <slot name=\"after-sheets\" />\n </template>\n </PlAgDataTableSheets>\n <AgGridVue\n :key=\"reloadKey\"\n :theme=\"AgGridTheme\"\n :class=\"$style.grid\"\n :grid-options=\"gridOptions\"\n />\n </div>\n</template>\n\n<style lang=\"css\" module>\n.container {\n display: flex;\n flex-direction: column;\n height: 100%;\n gap: 12px;\n}\n\n.grid {\n flex: 1;\n}\n</style>\n"],"names":["tableState","_useModel","selection","__props","props","settings","toRefs","emit","__emit","gridState","sheetsState","filtersState","useTableState","sheetsSettings","computed","settingsCopy","filterableColumns","ref","filtersSettings","columns","column","gridApi","shallowRef","dataRenderedTracker","DeferredCircular","gridOptions","event","state","selectedKeys","_a","nodeId","parseJson","isJsonEqual","params","PlOverlayLoading","PlOverlayNoRows","api","autoSizeRowNumberColumn","setGridOption","key","value","options","updateGridOptions","target","prop","receiver","makePartialState","PlAgDataTableRowNumberColId","reloadKey","watch","selfState","cellRendererSelector","__expose","rowKey","ensureNodeVisible","row","axesSpec","axes","mapping","spec","id","getAxisId","axis","matchAxisId","mappingSet","selectedNodes","canonicalizeJson","index","oldSelectedKeys","scope","effectScope","resolve","promise","promiseTimeout","getDataColDefs","columnDefs","isColDef","def","watchCached","dataColumns","defaultSelection","createPlSelectionModel","oldSettings","generation","sourceChanged","rowCount","stateGeneration","calculateGridOptions","getRawPlatformaInstance","_b","result","oldAxesSpec","newSelection","error","isAbortError","loadingText","runningText","notReadyText","noRowsText","watchEffect","PlAgRowCount","_createElementBlock","_normalizeClass","$style","_createBlock","_unref","PlAgGridColumnManager","PlTableFiltersV2","$event","PlAgCsvExporter","_createVNode","PlAgDataTableSheets","$slots","_renderSlot","_ctx","AgGridVue","AgGridTheme"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4DA,UAAMA,KAAaC,iBAElB,GAEKC,IAAYD,EAA6BE,GAAC,WAAW,GACrDC,IAAQD,GA4DR,EAAE,UAAAE,EAAA,IAAaC,GAAOF,CAAK,GAC3BG,IAAOC,IAMP,EAAE,WAAAC,GAAW,aAAAC,GAAa,cAAAC,MAAiBC,GAAcZ,IAAYK,CAAQ,GAE7EQ,KAAiBC,EAAoC,MAAM;AAC/D,YAAMC,IAAe,EAAE,GAAGV,EAAS,MAAA;AACnC,aAAOU,EAAa,aAAa,OAC7B;AAAA,QACE,QAAQA,EAAa,UAAU,CAAA;AAAA,QAC/B,aAAa,CAAC,GAAGL,EAAY,KAAK;AAAA,MAAA,IAEpC;AAAA,QACE,QAAQ,CAAA;AAAA,QACR,aAAa,CAAA;AAAA,MAAC;AAAA,IAEtB,CAAC,GAEKM,IAAoBC,EAAwB,EAAE,GAC9CC,KAAkBJ,EAAqC,MAAM;AACjE,YAAMC,IAAe,EAAE,GAAGV,EAAS,MAAA,GAC7Bc,IAAUH,EAAkB;AAclC,aAZED,EAAa,aAAa,QAAQI,EAAQ,SAAS,IAC/C;AAAA,QACE,SAAAA;AAAA,QACA,QAAQ,CAACC,MACPL,EAAa,cAAc,EAAE,UAAUA,EAAa,UAAU,QAAAK,GAAQ;AAAA,QACxE,aAAa,CAAC,GAAGT,EAAa,KAAK;AAAA,MAAA,IAErC;AAAA,QACE,SAAS,CAAA;AAAA,QACT,QAAQ,OAAO,CAAA;AAAA,QACf,aAAa,CAAA;AAAA,MAAC;AAAA,IAGxB,CAAC,GAEKU,IAAUC,EAA+C,IAAI,GAC7DC,IAAsB,IAAIC,GAAA,GAC1BC,IAAcH,EAA4C;AAAA,MAC9D,aAAa;AAAA,MACb,6BAA6B;AAAA,MAC7B,eAAe,CAACpB,EAAU;AAAA,MAC1B,cAAcO,EAAU;AAAA,MACxB,kBAAkB,EAAE,MAAM,kBAAA;AAAA,MAC1B,cAAcP,EAAU,QACpB;AAAA,QACE,MAAM;AAAA,QACN,WAAW;AAAA,QACX,cAAc;AAAA,QACd,YAAY;AAAA,QACZ,gBAAgB;AAAA,QAChB,sBAAsB;AAAA,MAAA,IAExB;AAAA,MACJ,oBAAoB,CAACwB,MAAU;;AAC7B,YAAIxB,EAAU,OAAO;AACnB,gBAAMyB,IAAQD,EAAM,IAAI,4BAAA,GAClBE,MACJC,IAAAF,KAAA,gBAAAA,EAAO,iBAAP,gBAAAE,EAAqB,IAAI,CAACC,MAAWC,EAAUD,CAA0B,OAAM,CAAA;AACjF,UAAKE,EAAY9B,EAAU,MAAM,cAAc0B,CAAY,MACzD1B,EAAU,QAAQ,EAAE,GAAGA,EAAU,OAAO,cAAA0B,EAAA;AAAA,QAE5C;AAAA,MACF;AAAA,MACA,oBAAoB,CAACF,MAAU;AAC7B,QAAIA,EAAM,QAAQA,EAAM,KAAK,WAASnB,EAAK,oBAAoBmB,EAAM,KAAK,OAAO;AAAA,MACnF;AAAA,MACA,eAAe;AAAA,QACb,0BAA0B;AAAA,QAC1B,cAAc,CAAC,QAAQ,OAAO,IAAI;AAAA,QAClC,sBAAsBtB,EAAM;AAAA,MAAA;AAAA,MAE9B,qBAAqB;AAAA,MACrB,YAAY;AAAA,QACV,cAAc;AAAA,MAAA;AAAA,MAEhB,cAAc;AAAA;AAAA;AAAA,MAGd,gBAAgB;AAAA,MAChB,kBAAkB;AAAA,MAClB,yBAAyB;AAAA,MACzB,yBAAyB;AAAA,MACzB,uCAAuC;AAAA,MACvC,UAAU,CAAC6B,MAAWA,EAAO,KAAK;AAAA,MAClC,SAAS;AAAA,MACT,+BAA+B;AAAA,QAC7B,SAAS;AAAA,QACT,aAAa7B,EAAM;AAAA,QACnB,aAAaA,EAAM;AAAA,QACnB,cAAcA,EAAM;AAAA,MAAA;AAAA,MAEtB,yBAAyB8B;AAAAA,MACzB,wBAAwBC;AAAAA,MACxB,8BAA8B;AAAA,QAC5B,MAAM/B,EAAM;AAAA,MAAA;AAAA,MAEd,wBAAwB;AAAA,QACtB,YAAY;AAAA,QACZ,gBAAgB;AAAA,QAChB,iBAAiB;AAAA,QACjB,UAAU;AAAA,MAAA;AAAA,MAEZ,aAAa,CAACsB,MAAU;AACtB,cAAMU,IAAMV,EAAM;AAClB,QAAAW,GAAwBD,CAAG;AAC3B,cAAME,IAAgB,CAACC,GAA2BC,MAA6C;AAC7F,gBAAMC,IAAU,EAAE,GAAGhB,EAAY,MAAA;AACjC,UAAAgB,EAAQF,CAAG,IAAIC,GACff,EAAY,QAAQgB,GACpBL,EAAI,cAAcG,GAAKC,CAAK;AAAA,QAC9B,GACME,IAAoB,CAACD,MAAgC;AACzD,UAAAhB,EAAY,QAAQ;AAAA,YAClB,GAAGA,EAAY;AAAA,YACf,GAAGgB;AAAA,UAAA,GAELL,EAAI,kBAAkBK,CAAO;AAAA,QAC/B;AACA,QAAApB,EAAQ,QAAQ,IAAI,MAAMe,GAAK;AAAA,UAC7B,IAAIO,GAAQC,GAAMC,GAAU;AAC1B,oBAAQD,GAAA;AAAA,cACN,KAAK;AACH,uBAAON;AAAA,cACT,KAAK;AACH,uBAAOI;AAAA,cACT;AACE,uBAAO,QAAQ,IAAIC,GAAQC,GAAMC,CAAQ;AAAA,YAAA;AAAA,UAE/C;AAAA,QAAA,CACD;AAAA,MACH;AAAA,MACA,gBAAgB,CAACnB,MAAU;AACzB,QAAAD,EAAY,MAAM,eAAehB,EAAU,QAAQqC,EAAiBpB,EAAM,KAAK,GAC1EM,EAAYN,EAAM,SAAS,CAAC,cAAc,CAAC,KAC9CA,EAAM,IAAI;AAAA,UACRA,EAAM,IACH,yBACA,OAAO,CAACN,MAAWA,EAAO,SAAA,MAAe2B,EAA2B;AAAA,QAAA;AAAA,MAG7E;AAAA,MACA,oBAAoB,CAACrB,MAAU;AAC7B,QAAAD,EAAY,MAAM,eAAehB,EAAU,QAAQqC,EAAiBpB,EAAM,IAAI,UAAU,GACxFL,EAAQ,QAAQ;AAAA,MAClB;AAAA,IAAA,CACD;AAGD,aAASyB,EAAiBnB,GAA4C;AACpE,aAAO;AAAA,QACL,aAAaA,EAAM;AAAA,QAKnB,MAAMA,EAAM;AAAA,QAQZ,kBAAkBA,EAAM;AAAA,MAAA;AAAA,IAM5B;AAGA,UAAMqB,IAAY/B,EAAI,CAAC;AACvB,IAAAgC;AAAA,MACE,MAAM,CAAC5B,EAAQ,OAAOZ,EAAU,KAAK;AAAA,MACrC,CAAC,CAACY,GAASZ,CAAS,MAAM;AACxB,YAAI,CAACY,KAAWA,EAAQ,cAAe;AACvC,cAAM6B,IAAYJ,EAAiBzB,EAAQ,SAAA,CAAU;AACrD,QAAI,CAACW,EAAYvB,GAAW,CAAA,CAAE,KAAK,CAACuB,EAAYvB,GAAWyC,CAAS,MAClEzB,EAAY,MAAM,eAAehB,GACjC,EAAEuC,EAAU;AAAA,MAEhB;AAAA,IAAA;AAIF,UAAMG,KAAuBrC,EAAS,MAAMV,EAAM,wBAAwB,IAAI;AAC9E,IAAA6C;AAAA,MACE,MAAM,CAAC5B,EAAQ,OAAO8B,GAAqB,KAAK;AAAA,MAChD,CAAC,CAAC9B,GAAS8B,CAAoB,MAAM;AACnC,QAAI,CAAC9B,KAAWA,EAAQ,iBACxBA,EAAQ,cAAc,iBAAiB;AAAA,UACrC,GAAGI,EAAY,MAAM;AAAA,UACrB,sBAAsB0B,KAAwB;AAAA,QAAA,CAC/C;AAAA,MACH;AAAA,IAAA,GAGFC,GAAwC;AAAA,MACtC,UAAU,OAAOC,MAAW;AAC1B,cAAMhC,IAAU,MAAME,EAAoB;AAC1C,eAAIF,EAAQ,YAAA,IAAsB,KAE3BiC,GAAkBjC,GAAS,CAACkC,MAAA;;AAAQ,iBAAAvB,GAAYH,IAAA0B,EAAI,SAAJ,gBAAA1B,EAAU,SAASwB,CAAM;AAAA,SAAC;AAAA,MACnF;AAAA,MACA,iBAAiB,OAAO,EAAE,UAAAG,GAAU,cAAA5B,QAAmB;;AACrD,cAAMP,IAAU,MAAME,EAAoB;AAC1C,YAAIF,EAAQ,YAAA,EAAe,QAAO;AAElC,cAAMoC,KAAO5B,IAAA3B,EAAU,UAAV,gBAAA2B,EAAiB;AAC9B,YAAI,CAAC4B,KAAQA,EAAK,WAAWD,EAAS,OAAQ,QAAO;AAErD,cAAME,IAAUF,EAAS,IAAI,CAACG,MAAS;AACrC,gBAAMC,IAAKC,EAAUF,CAAI;AACzB,iBAAOF,EAAK,UAAU,CAACK,MAASC,EAAYD,GAAMF,CAAE,CAAC;AAAA,QACvD,CAAC,GACKI,IAAa,IAAI,IAAIN,CAAO;AAClC,YAAIM,EAAW,IAAI,EAAE,KAAKA,EAAW,SAASR,EAAS,OAAQ,QAAO;AAEtE,cAAMS,IAAgBrC,EAAa;AAAA,UAAI,CAACW,MACtC2B,EAA+BR,EAAQ,IAAI,CAACS,MAAU5B,EAAI4B,CAAK,CAAC,CAAC;AAAA,QAAA,GAE7DC,MAAkB/C,IAAAA,EAAQ,4BAAA,MAARA,gBAAAA,EAAuC,iBAAgB,CAAA;AAC/E,YAAI,CAACW,EAAYoC,GAAiBH,CAAa,GAAG;AAChD5C,UAAAA,EAAQ,4BAA4B;AAAA,YAClC,WAAW;AAAA,YACX,cAAc4C;AAAA,UAAA,CACf;AAGD,gBAAMI,IAAQC,GAAA,GACR,EAAE,SAAAC,GAAS,SAAAC,MAAY,QAAQ,cAAA;AACrC,UAAAH,EAAM,IAAI,MAAMpB,EAAM/C,GAAWqE,GAAS,EAAE,MAAM,GAAA,CAAM,CAAC;AACzD,cAAI;AACF,kBAAME,GAAeD,GAAS,GAAG;AAAA,UACnC,QAAQ;AACN,mBAAO;AAAA,UACT,UAAA;AACE,YAAAH,EAAM,KAAA;AAAA,UACR;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAAA,IAAA,CACD;AAED,aAASK,GACPC,GAC0D;AAC1D,YAAMC,IAAW,CACfC,MACiC,EAAE,cAAcA;AACnD,aAAKF,IACEA,EACJ,OAAOC,CAAQ,EACf,OAAO,CAACC,MAAQA,EAAI,SAASA,EAAI,UAAU9B,EAA2B,IAHjD,CAAA;AAAA,IAI1B;AAGA,IAAA+B;AAAA,MACE,MAAMrD,EAAY,MAAM;AAAA,MACxB,CAACkD,MAAe;AAEd,YADiBtE,EAAS,MAAM,aACf;AACf,UAAAW,EAAkB,QAAQ,CAAA;AAAA,aACrB;AACL,gBAAM+D,IAAcL,GAAeC,CAAU;AAC7C,UAAA3D,EAAkB,QAAQ+D,EAAY;AAAA,YACpC,CAACF,MAAQ9C,EAAU8C,EAAI,KAA8C,EAAE;AAAA,UAAA;AAAA,QAE3E;AAAA,MACF;AAAA,MACA,EAAE,WAAW,GAAA;AAAA,IAAK;AAIpB,UAAMG,IAAmBC,EAAA;AACzB,QAAIC,IAA4C;AAChD,UAAMC,IAAalE,EAAI,CAAC;AACxB,WAAAgC;AAAA,MACE,MAAM,CAAC5B,EAAQ,OAAOhB,EAAS,KAAK;AAAA,MACpC,CAAC,CAACgB,GAAShB,CAAQ,MAAM;;AAEvB,YAAI,GAACgB,KAAWA,EAAQ,kBAEpB,CAAAW,EAAY3B,GAAU6E,CAAW,GACrC;AAAA,YAAEC,EAAW;AACb,cAAI;AAMF,gBAJA9D,EAAQ,YAAA,GACRE,EAAoB,MAAA,GAGhBlB,EAAS,aAAa,MAAM;AAC9BgB,cAAAA,EAAQ,kBAAkB;AAAA,gBACxB,SAAS;AAAA,gBACT,+BAA+B;AAAA,kBAC7B,GAAGI,EAAY,MAAM;AAAA,kBACrB,SAASpB,EAAS,UAAU,YAAY;AAAA,gBAAA;AAAA,gBAE1C,YAAY;AAAA,gBACZ,sBAAsB;AAAA,cAAA,CACvB,GACGH,EAAU,UACRA,EAAU,SAAS,CAAC8B,EAAY9B,EAAU,OAAO8E,CAAgB,MACnE9E,EAAU,QAAQ+E,EAAA,IAEpB5D,EAAQ,4BAA4B;AAAA,gBAClC,WAAW;AAAA,gBACX,cAAc,CAAA;AAAA,cAAC,CAChB;AAEH;AAAA,YACF;AAGA,YAAIhB,EAAS,cAAa6E,KAAA,gBAAAA,EAAa,cACrC7D,EAAQ,kBAAkB;AAAA,cACxB,SAAS;AAAA,cACT,+BAA+B;AAAA,gBAC7B,GAAGI,EAAY,MAAM;AAAA,gBACrB,SAAS;AAAA,cAAA;AAAA,YACX,CACD,GACGvB,EAAU,UAASgF,KAAA,QAAAA,EAAa,cAC9BhF,EAAU,SAAS,CAAC8B,EAAY9B,EAAU,OAAO8E,CAAgB,MACnE9E,EAAU,QAAQ+E,EAAA,IAEpB5D,EAAQ,4BAA4B;AAAA,cAClC,WAAW;AAAA,cACX,cAAc,CAAA;AAAA,YAAC,CAChB;AAKL,kBAAM+D,MACJ/E,IAAAA,EAAS,UAATA,gBAAAA,EAAgB,aAAYA,EAAS,MAAM,aAAaA,EAAS;AACnE,gBAAI,CAACA,EAAS,SAAS+E,GAAe;AACpC,oBAAMzD,IAAQN,EAAQ,6BAAA,GAChBgE,IAAW,CAACD,KAAiBzD,EAAM,SAAS,IAAIA,EAAM,CAAC,EAAE,WAAW;AAC1E,qBAAON,EAAQ,kBAAkB;AAAA,gBAC/B,sBAAsB;AAAA,kBACpB,SAAS,CAACY,MAAW;AACnB,oBAAAA,EAAO,QAAQ,EAAE,SAAS,CAAA,GAAI,UAAAoD,GAAU;AAAA,kBAC1C;AAAA,gBAAA;AAAA,cACF,CACD;AAAA,YACH;AAGA,kBAAMC,IAAkBH,EAAW;AACnC,YAAAI,GAAqB;AAAA,cACnB,YAAAJ;AAAA,cACA,UAAUK,KAA0B;AAAA,cACpC,OAAOnF,EAAS;AAAA,cAChB,QAAQA,EAAS,UAAU,CAAA;AAAA,cAC3B,qBAAAkB;AAAA,cACA,eAAckE,IAAAhF,EAAU,MAAM,qBAAhB,gBAAAgF,EAAkC;AAAA,cAChD,sBAAsB;AAAA,gBACpB,yBAAyBrF,EAAM;AAAA,gBAC/B,mCAAmCA,EAAM;AAAA,gBACzC,SAAS,CAACmC,MAAoBhC,EAAK,qBAAqBgC,CAAG;AAAA,cAAA;AAAA,YAC7D,CACD,EACE,KAAK,CAACmD,MAAW;AAChB,kBAAIrE,EAAQ,YAAA,KAAiBiE,MAAoBH,EAAW,MAAO;AACnE,oBAAM,EAAE,UAAA3B,GAAU,GAAGf,EAAA,IAAYiD;AAIjC,kBAHArE,EAAQ,kBAAkB;AAAA,gBACxB,GAAGoB;AAAA,cAAA,CACJ,GACGvC,EAAU,OAAO;AAEnB,sBAAM,EAAE,UAAUyF,GAAa,cAAcvB,EAAA,IAAoBlE,EAAU;AAC3E,oBAAI,CAAC8B,EAAY2D,GAAanC,CAAQ,GAAG;AACvC,sBAAI,CAACmC,KAAenC,EAAS,WAAWmC,EAAY,QAAQ;AAC1D,0BAAMC,IAAiC,EAAE,UAAApC,GAAU,cAAc,CAAA,EAAC;AAClE,2BAAKxB,EAAY9B,EAAU,OAAO0F,CAAY,MAC5C1F,EAAU,QAAQ0F,IAEbvE,EAAQ,4BAA4B;AAAA,sBACzC,WAAW;AAAA,sBACX,cAAc,CAAA;AAAA,oBAAC,CAChB;AAAA,kBACH;AAEA,wBAAMqC,IAAUiC,EACb,IAAI9B,CAAS,EACb,IAAI,CAACD,MAAOJ,EAAS,UAAU,CAACM,MAASC,EAAYD,GAAMF,CAAE,CAAC,CAAC,GAC5DI,IAAa,IAAI,IAAIN,CAAO;AAClC,sBAAIM,EAAW,IAAI,EAAE,KAAKA,EAAW,SAASR,EAAS,QAAQ;AAC7D,0BAAMoC,IAAiC,EAAE,UAAApC,GAAU,cAAc,CAAA,EAAC;AAClE,2BAAKxB,EAAY9B,EAAU,OAAO0F,CAAY,MAC5C1F,EAAU,QAAQ0F,IAEbvE,EAAQ,4BAA4B;AAAA,sBACzC,WAAW;AAAA,sBACX,cAAc,CAAA;AAAA,oBAAC,CAChB;AAAA,kBACH;AAEA,wBAAM4C,IAAgBG,EAAgB;AAAA,oBAAI,CAAC7B,MACzCmB,EAAQ,IAAI,CAACS,MAAU5B,EAAI4B,CAAK,CAAC;AAAA,kBAAA,GAE7ByB,IAAiC,EAAE,UAAApC,GAAU,cAAcS,EAAA;AACjE,yBAAKjC,EAAY9B,EAAU,OAAO0F,CAAY,MAC5C1F,EAAU,QAAQ0F,IAEbvE,EAAQ,4BAA4B;AAAA,oBACzC,WAAW;AAAA,oBACX,cAAc4C,EAAc,IAAI,CAAC1B,MAAQ2B,EAA+B3B,CAAG,CAAC;AAAA,kBAAA,CAC7E;AAAA,gBACH;AAAA,cACF;AAAA,YACF,CAAC,EACA,MAAM,CAACsD,MAAmB;AACzB,cAAIxE,EAAQ,YAAA,KAAiBiE,MAAoBH,EAAW,SACxDW,GAAaD,CAAK,KACtB,QAAQ,MAAMA,CAAK;AAAA,YACrB,CAAC,EACA,QAAQ,MAAM;AACb,cAAIxE,EAAQ,YAAA,KAAiBiE,MAAoBH,EAAW,SAC5D9D,EAAQ,kBAAkB;AAAA,gBACxB,SAAS;AAAA,cAAA,CACV;AAAA,YACH,CAAC,GACHE,EAAoB,QAAQ,KAAK,MAAMhB,EAAK,iBAAiB,CAAC;AAAA,UAChE,SAASsF,GAAgB;AACvB,oBAAQ,MAAMA,CAAK;AAAA,UACrB,UAAA;AACE,YAAAX,IAAc7E;AAAAA,UAChB;AAAA;AAAA,MACF;AAAA,IAAA,GAGF4C;AAAA,MACE,OAAO;AAAA,QACL,SAAS5B,EAAQ;AAAA,QACjB,aAAajB,EAAM;AAAA,QACnB,aAAaA,EAAM;AAAA,QACnB,cAAcA,EAAM;AAAA,QACpB,YAAYA,EAAM;AAAA,MAAA;AAAA,MAEpB,CAAC,EAAE,SAAAiB,GAAS,aAAA0E,GAAa,aAAAC,GAAa,cAAAC,GAAc,YAAAC,QAAiB;AACnE,QAAI,CAAC7E,KAAWA,EAAQ,iBACxBA,EAAQ,kBAAkB;AAAA,UACxB,+BAA+B;AAAA,YAC7B,GAAGI,EAAY,MAAM;AAAA,YACrB,aAAAsE;AAAA,YACA,aAAAC;AAAA,YACA,cAAAC;AAAA,UAAA;AAAA,UAEF,8BAA8B;AAAA,YAC5B,GAAGxE,EAAY,MAAM;AAAA,YACrB,MAAMyE;AAAA,UAAA;AAAA,QACR,CACD;AAAA,MACH;AAAA,IAAA,GAGFC,GAAY,MAAM;;AAChB,MAAI,CAAC9E,EAAQ,UAASQ,IAAAR,EAAQ,UAAR,QAAAQ,EAAe,iBACrCR,EAAQ,MAAM,kBAAkB;AAAA,QAC9B,WAAWI,EAAY,MAAM,UACzB,SACA;AAAA,UACE,cAAc,CAAC,EAAE,aAAa2E,IAAc,OAAO,QAAQ;AAAA,QAAA;AAAA,MAC7D,CACL;AAAA,IACH,CAAC,mBAICC,GAsBM,OAAA;AAAA,MAtBA,OAAKC,EAAEC,EAAAA,OAAO,SAAS;AAAA,IAAA;MACElF,EAAA,UAAYlB,EAAA,4BAAzCqG,EAA+EC,EAAAC,EAAA,GAAA;AAAA;QAAhB,KAAKrF,EAAA;AAAA,MAAA;MAE3DlB,EAAA,wCADTqG,EAIEG,IAAA;AAAA;oBAFSF,EAAA9F,CAAA;AAAA,6DAAAA,EAAY,QAAAiG,IAAA;AAAA,QACpB,UAAU1F,GAAA;AAAA,MAAA;MAEUG,EAAA,SAAWlB,EAAA,yBAAlCqG,EAAqEK,IAAA;AAAA;QAAhB,KAAKxF,EAAA;AAAA,MAAA;MAC1DyF,GAOsBC,IAAA;AAAA,oBAPQN,EAAA/F,CAAA;AAAA,6DAAAA,EAAW,QAAAkG,IAAA;AAAA,QAAG,UAAU/F,GAAA;AAAA,MAAA;QACpCmG,EAAAA,OAAM,eAAA;gBAAoB;AAAA,gBACxC,MAA6B;AAAA,YAA7BC,EAA6BC,EAAA,QAAA,eAAA;AAAA,UAAA;;;QAEfF,EAAAA,OAAM,cAAA;gBAAmB;AAAA,gBACvC,MAA4B;AAAA,YAA5BC,EAA4BC,EAAA,QAAA,cAAA;AAAA,UAAA;;;;YAGhCV,EAKEC,EAAAU,EAAA,GAAA;AAAA,QAJC,KAAKnE,EAAA;AAAA,QACL,OAAOyD,EAAAW,EAAA;AAAA,QACP,OAAKd,EAAEC,EAAAA,OAAO,IAAI;AAAA,QAClB,gBAAc9E,EAAA;AAAA,MAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlAnnotations.vue2.js","sources":["../../../../src/components/PlAnnotations/components/PlAnnotations.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Props as BaseProps } from \"./FilterSidebar.vue\";\nexport type Props = BaseProps & {\n onDeleteSchema?: () => void;\n};\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, effect, shallowRef } from \"vue\";\n\nimport { isNil } from \"@milaboratories/helpers\";\nimport { PlSidebarGroup, useConfirm } from \"@milaboratories/uikit\";\n\nimport type { Annotation } from \"../types\";\nimport AnnotationsSidebar from \"./AnnotationsSidebar.vue\";\nimport FilterSidebar from \"./FilterSidebar.vue\";\n\n// Models\nconst annotation = defineModel<Annotation>(\"annotation\", { required: true });\n// Props\nconst props = defineProps<Props>();\n// State\nconst selectedStepId = shallowRef<number | undefined>(undefined);\nconst selectedStep = computed(() => {\n return isNil(selectedStepId.value) || isNil(annotation.value)\n ? undefined\n : annotation.value.steps.find((step) => step.id === selectedStepId.value);\n});\n\n// Watchers\neffect(function setDefaultStepId() {\n if (selectedStepId.value === undefined && annotation.value.steps.length > 0) {\n selectedStepId.value = annotation.value.steps[0].id;\n }\n});\n// Hooks\nconst confirmResetSchema = useConfirm({\n title: \"Reset Schema\",\n message: \"Are you sure you want to reset the schema? This action cannot be undone.\",\n confirmLabel: \"Yes, reset\",\n cancelLabel: \"No, cancel\",\n});\n// Actions\nasync function handleDeleteSchema() {\n if (await confirmResetSchema()) {\n selectedStepId.value = undefined;\n props.onDeleteSchema?.();\n }\n}\n</script>\n\n<template>\n <PlSidebarGroup>\n <template #item-0>\n <AnnotationsSidebar\n v-model:annotation=\"annotation\"\n v-model:selectedStepId=\"selectedStepId\"\n :class=\"$style.sidebarItem\"\n :columns=\"props.columns\"\n @delete-schema=\"handleDeleteSchema\"\n />\n </template>\n <template #item-1>\n <FilterSidebar\n v-if=\"selectedStep\"\n v-model:step=\"selectedStep\"\n :class=\"$style.sidebarItem\"\n :columns=\"props.columns\"\n :get-suggest-options=\"props.getSuggestOptions\"\n :selectedStepId=\"selectedStepId\"\n :hasSelectedColumns=\"props.hasSelectedColumns\"\n :getValuesForSelectedColumns=\"props.getValuesForSelectedColumns\"\n />\n </template>\n </PlSidebarGroup>\n</template>\n\n<style module>\n.sidebarItem {\n width: 100%;\n height: 100%;\n}\n</style>\n"],"names":["annotation","_useModel","props","__props","selectedStepId","shallowRef","selectedStep","computed","isNil","step","effect","confirmResetSchema","useConfirm","handleDeleteSchema","_a","_createBlock","_unref","PlSidebarGroup","_createVNode","AnnotationsSidebar","$event","_normalizeClass","$style","FilterSidebar"],"mappings":";;;;;;;;;;;;;;;;;;;AAkBA,UAAMA,IAAaC,KAAwB,YAAgC,GAErEC,IAAQC,GAERC,IAAiBC,EAA+B,MAAS,GACzDC,IAAeC,EAAS,MACrBC,EAAMJ,EAAe,KAAK,KAAKI,EAAMR,EAAW,KAAK,IACxD,SACAA,EAAW,MAAM,MAAM,KAAK,CAACS,MAASA,EAAK,OAAOL,EAAe,KAAK,CAC3E;AAGD,IAAAM,EAAO,WAA4B;AACjC,MAAIN,EAAe,UAAU,UAAaJ,EAAW,MAAM,MAAM,SAAS,MACxEI,EAAe,QAAQJ,EAAW,MAAM,MAAM,CAAC,EAAE;AAAA,IAErD,CAAC;AAED,UAAMW,IAAqBC,EAAW;AAAA,MACpC,OAAO;AAAA,MACP,SAAS;AAAA,MACT,cAAc;AAAA,MACd,aAAa;AAAA,IAAA,CACd;AAED,mBAAeC,IAAqB;;AAClC,MAAI,MAAMF,QACRP,EAAe,QAAQ,SACvBU,IAAAZ,EAAM,mBAAN,QAAAY,EAAA,KAAAZ;AAAA,IAEJ;2BAIEa,EAsBiBC,EAAAC,CAAA,GAAA,MAAA;AAAA,MArBJ,YACT,MAME;AAAA,QANFC,EAMEC,GAAA;AAAA,UALQ,YAAYnB,EAAA;AAAA,wDAAAA,EAAU,QAAAoB;AAAA,UACtB,gBAAgBhB,EAAA;AAAA,4DAAAA,EAAc,QAAAgB;AAAA,UACrC,OAAKC,EAAEC,EAAAA,OAAO,WAAW;AAAA,UACzB,SAASpB,EAAM;AAAA,UACf,gBAAeW;AAAA,QAAA;;MAGT,
|
|
1
|
+
{"version":3,"file":"PlAnnotations.vue2.js","sources":["../../../../src/components/PlAnnotations/components/PlAnnotations.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Props as BaseProps } from \"./FilterSidebar.vue\";\nexport type Props = BaseProps & {\n onDeleteSchema?: () => void;\n};\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, effect, shallowRef } from \"vue\";\n\nimport { isNil } from \"@milaboratories/helpers\";\nimport { PlSidebarGroup, useConfirm } from \"@milaboratories/uikit\";\n\nimport type { Annotation } from \"../types\";\nimport AnnotationsSidebar from \"./AnnotationsSidebar.vue\";\nimport FilterSidebar from \"./FilterSidebar.vue\";\n\n// Models\nconst annotation = defineModel<Annotation>(\"annotation\", { required: true });\n// Props\nconst props = defineProps<Props>();\n// State\nconst selectedStepId = shallowRef<number | undefined>(undefined);\nconst selectedStep = computed(() => {\n return isNil(selectedStepId.value) || isNil(annotation.value)\n ? undefined\n : annotation.value.steps.find((step) => step.id === selectedStepId.value);\n});\n\n// Watchers\neffect(function setDefaultStepId() {\n if (selectedStepId.value === undefined && annotation.value.steps.length > 0) {\n selectedStepId.value = annotation.value.steps[0].id;\n }\n});\n// Hooks\nconst confirmResetSchema = useConfirm({\n title: \"Reset Schema\",\n message: \"Are you sure you want to reset the schema? This action cannot be undone.\",\n confirmLabel: \"Yes, reset\",\n cancelLabel: \"No, cancel\",\n});\n// Actions\nasync function handleDeleteSchema() {\n if (await confirmResetSchema()) {\n selectedStepId.value = undefined;\n props.onDeleteSchema?.();\n }\n}\n</script>\n\n<template>\n <PlSidebarGroup>\n <template #item-0>\n <AnnotationsSidebar\n v-model:annotation=\"annotation\"\n v-model:selectedStepId=\"selectedStepId\"\n :class=\"$style.sidebarItem\"\n :columns=\"props.columns\"\n @delete-schema=\"handleDeleteSchema\"\n />\n </template>\n <template #item-1>\n <FilterSidebar\n v-if=\"selectedStep\"\n v-model:step=\"selectedStep\"\n :class=\"$style.sidebarItem\"\n :columns=\"props.columns\"\n :get-suggest-options=\"props.getSuggestOptions\"\n :selectedStepId=\"selectedStepId\"\n :hasSelectedColumns=\"props.hasSelectedColumns\"\n :getValuesForSelectedColumns=\"props.getValuesForSelectedColumns\"\n />\n </template>\n </PlSidebarGroup>\n</template>\n\n<style module>\n.sidebarItem {\n width: 100%;\n height: 100%;\n}\n</style>\n"],"names":["annotation","_useModel","props","__props","selectedStepId","shallowRef","selectedStep","computed","isNil","step","effect","confirmResetSchema","useConfirm","handleDeleteSchema","_a","_createBlock","_unref","PlSidebarGroup","_createVNode","AnnotationsSidebar","$event","_normalizeClass","$style","FilterSidebar"],"mappings":";;;;;;;;;;;;;;;;;;;AAkBA,UAAMA,IAAaC,KAAwB,YAAgC,GAErEC,IAAQC,GAERC,IAAiBC,EAA+B,MAAS,GACzDC,IAAeC,EAAS,MACrBC,EAAMJ,EAAe,KAAK,KAAKI,EAAMR,EAAW,KAAK,IACxD,SACAA,EAAW,MAAM,MAAM,KAAK,CAACS,MAASA,EAAK,OAAOL,EAAe,KAAK,CAC3E;AAGD,IAAAM,EAAO,WAA4B;AACjC,MAAIN,EAAe,UAAU,UAAaJ,EAAW,MAAM,MAAM,SAAS,MACxEI,EAAe,QAAQJ,EAAW,MAAM,MAAM,CAAC,EAAE;AAAA,IAErD,CAAC;AAED,UAAMW,IAAqBC,EAAW;AAAA,MACpC,OAAO;AAAA,MACP,SAAS;AAAA,MACT,cAAc;AAAA,MACd,aAAa;AAAA,IAAA,CACd;AAED,mBAAeC,IAAqB;;AAClC,MAAI,MAAMF,QACRP,EAAe,QAAQ,SACvBU,IAAAZ,EAAM,mBAAN,QAAAY,EAAA,KAAAZ;AAAA,IAEJ;2BAIEa,EAsBiBC,EAAAC,CAAA,GAAA,MAAA;AAAA,MArBJ,YACT,MAME;AAAA,QANFC,EAMEC,GAAA;AAAA,UALQ,YAAYnB,EAAA;AAAA,wDAAAA,EAAU,QAAAoB;AAAA,UACtB,gBAAgBhB,EAAA;AAAA,4DAAAA,EAAc,QAAAgB;AAAA,UACrC,OAAKC,EAAEC,EAAAA,OAAO,WAAW;AAAA,UACzB,SAASpB,EAAM;AAAA,UACf,gBAAeW;AAAA,QAAA;;MAGT,YAJqD,MAYrD;AAAA,QANDP,EAAA,cADRS,EASEQ,GAAA;AAAA;UAPQ,MAAMjB,EAAA;AAAA,kDAAAA,EAAY,QAAAc;AAAA,UACzB,OAAKC,EAAEC,EAAAA,OAAO,WAAW;AAAA,UACzB,SAASpB,EAAM;AAAA,UACf,uBAAqBA,EAAM;AAAA,UAC3B,gBAAgBE,EAAA;AAAA,UAChB,oBAAoBF,EAAM;AAAA,UAC1B,6BAA6BA,EAAM;AAAA,QAAA;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prettyBytes.js","sources":["../../../../../../../lib/util/helpers/src/prettyBytes.ts"],"sourcesContent":["const BYTE_UNITS = [\"B\", \"kB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"];\n\nconst BIBYTE_UNITS = [\"B\", \"kiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\", \"EiB\", \"ZiB\", \"YiB\"];\n\nconst BIT_UNITS = [\"b\", \"kbit\", \"Mbit\", \"Gbit\", \"Tbit\", \"Pbit\", \"Ebit\", \"Zbit\", \"Ybit\"];\n\nconst BIBIT_UNITS = [\"b\", \"kibit\", \"Mibit\", \"Gibit\", \"Tibit\", \"Pibit\", \"Eibit\", \"Zibit\", \"Yibit\"];\n\ntype Options = {\n bits?: boolean;\n binary?: boolean;\n signed?: boolean;\n locale?: string;\n};\n\n/*\nFormats the given number using `Number#toLocaleString`.\n- If locale is a string, the value is expected to be a locale-key (for example: `de`).\n- If locale is true, the system default locale is used for translation.\n- If no value for locale is specified, the number is returned unmodified.\n*/\nconst toLocaleString = (number: number, locale: string | undefined) => {\n let result = String(number);\n if (typeof locale === \"string\" || Array.isArray(locale)) {\n result = number.toLocaleString(locale);\n } else if (locale === true) {\n result = number.toLocaleString(undefined);\n }\n\n return result;\n};\n\nexport function prettyBytes(number: number | bigint, options: Options) {\n number = typeof number === \"bigint\" ? Number(number) : number;\n\n if (!Number.isFinite(number)) {\n throw new TypeError(`Expected a finite number, got ${typeof number}: ${number}`);\n }\n\n Object.assign(\n {\n bits: false,\n binary: false,\n },\n options,\n );\n\n const UNITS = options.bits\n ? options.binary\n ? BIBIT_UNITS\n : BIT_UNITS\n : options.binary\n ? BIBYTE_UNITS\n : BYTE_UNITS;\n\n if (options.signed && number === 0) {\n return ` 0 ${UNITS[0]}`;\n }\n\n const isNegative = number < 0;\n const prefix = isNegative ? \"-\" : options.signed ? \"+\" : \"\";\n\n if (isNegative) {\n number = -number;\n }\n\n
|
|
1
|
+
{"version":3,"file":"prettyBytes.js","sources":["../../../../../../../lib/util/helpers/src/prettyBytes.ts"],"sourcesContent":["const BYTE_UNITS = [\"B\", \"kB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"];\n\nconst BIBYTE_UNITS = [\"B\", \"kiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\", \"EiB\", \"ZiB\", \"YiB\"];\n\nconst BIT_UNITS = [\"b\", \"kbit\", \"Mbit\", \"Gbit\", \"Tbit\", \"Pbit\", \"Ebit\", \"Zbit\", \"Ybit\"];\n\nconst BIBIT_UNITS = [\"b\", \"kibit\", \"Mibit\", \"Gibit\", \"Tibit\", \"Pibit\", \"Eibit\", \"Zibit\", \"Yibit\"];\n\ntype Options = {\n bits?: boolean;\n binary?: boolean;\n signed?: boolean;\n locale?: string;\n};\n\n/*\nFormats the given number using `Number#toLocaleString`.\n- If locale is a string, the value is expected to be a locale-key (for example: `de`).\n- If locale is true, the system default locale is used for translation.\n- If no value for locale is specified, the number is returned unmodified.\n*/\nconst toLocaleString = (number: number, locale: string | undefined) => {\n let result = String(number);\n if (typeof locale === \"string\" || Array.isArray(locale)) {\n result = number.toLocaleString(locale);\n } else if (locale === true) {\n result = number.toLocaleString(undefined);\n }\n\n return result;\n};\n\nexport function prettyBytes(number: number | bigint, options: Options) {\n number = typeof number === \"bigint\" ? Number(number) : number;\n\n if (!Number.isFinite(number)) {\n throw new TypeError(`Expected a finite number, got ${typeof number}: ${number}`);\n }\n\n Object.assign(\n {\n bits: false,\n binary: false,\n },\n options,\n );\n\n const UNITS = options.bits\n ? options.binary\n ? BIBIT_UNITS\n : BIT_UNITS\n : options.binary\n ? BIBYTE_UNITS\n : BYTE_UNITS;\n\n if (options.signed && number === 0) {\n return ` 0 ${UNITS[0]}`;\n }\n\n const isNegative = number < 0;\n const prefix = isNegative ? \"-\" : options.signed ? \"+\" : \"\";\n\n if (isNegative) {\n number = -number;\n }\n\n if (number < 1) {\n const numberString = toLocaleString(number, options.locale);\n return prefix + numberString + \" \" + UNITS[0];\n }\n\n const exponent = Math.min(\n Math.floor(options.binary ? Math.log(number) / Math.log(1024) : Math.log10(number) / 3),\n UNITS.length - 1,\n );\n number /= (options.binary ? 1024 : 1000) ** exponent;\n\n number = Number(number.toPrecision(3));\n\n const numberString = toLocaleString(Number(number), options.locale);\n\n const unit = UNITS[exponent];\n\n return prefix + numberString + \" \" + unit;\n}\n"],"names":["BYTE_UNITS","BIBYTE_UNITS","BIT_UNITS","BIBIT_UNITS","toLocaleString","number","locale","result","prettyBytes","options","UNITS","isNegative","prefix","numberString","exponent","unit"],"mappings":"AAAA,MAAMA,IAAa,CAAC,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,GAEjEC,IAAe,CAAC,KAAK,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK,GAE3EC,IAAY,CAAC,KAAK,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,MAAM,GAEhFC,IAAc,CAAC,KAAK,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,OAAO,GAe1FC,IAAiB,CAACC,GAAgBC,MAA8B;AACpE,MAAIC,IAAS,OAAOF,CAAM;AAC1B,SAAI,OAAOC,KAAW,YAAY,MAAM,QAAQA,CAAM,IACpDC,IAASF,EAAO,eAAeC,CAAM,IAC5BA,MAAW,OACpBC,IAASF,EAAO,eAAe,MAAS,IAGnCE;AACT;AAEM,SAAUC,EAAYH,GAAyBI,GAAgB;AAGnE,MAFAJ,IAAS,OAAOA,KAAW,WAAW,OAAOA,CAAM,IAAIA,GAEnD,CAAC,OAAO,SAASA,CAAM;AACzB,UAAM,IAAI,UAAU,iCAAiC,OAAOA,CAAM,KAAKA,CAAM,EAAE;AAGjF,SAAO,OACL;AAAA,IACE,MAAM;AAAA,IACN,QAAQ;AAAA,EACT,GACDI,CAAO;AAGT,QAAMC,IAAQD,EAAQ,OAClBA,EAAQ,SACNN,IACAD,IACFO,EAAQ,SACNR,IACAD;AAEN,MAAIS,EAAQ,UAAUJ,MAAW;AAC/B,WAAO,MAAMK,EAAM,CAAC,CAAC;AAGvB,QAAMC,IAAaN,IAAS,GACtBO,IAASD,IAAa,MAAMF,EAAQ,SAAS,MAAM;AAMzD,MAJIE,MACFN,IAAS,CAACA,IAGRA,IAAS,GAAG;AACd,UAAMQ,IAAeT,EAAeC,GAAQI,EAAQ,MAAM;AAC1D,WAAOG,IAASC,IAAe,MAAMH,EAAM,CAAC;AAAA,EAC9C;AAEA,QAAMI,IAAW,KAAK,IACpB,KAAK,MAAML,EAAQ,SAAS,KAAK,IAAIJ,CAAM,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,MAAMA,CAAM,IAAI,CAAC,GACtFK,EAAM,SAAS,CAAC;AAElB,EAAAL,MAAWI,EAAQ,SAAS,OAAO,QAASK,GAE5CT,IAAS,OAAOA,EAAO,YAAY,CAAC,CAAC;AAErC,QAAMQ,IAAeT,EAAe,OAAOC,CAAM,GAAGI,EAAQ,MAAM,GAE5DM,IAAOL,EAAMI,CAAQ;AAE3B,SAAOF,IAASC,IAAe,MAAME;AACvC;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@platforma-sdk/ui-vue",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.54.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"exports": {
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"vue": "^3.5.24",
|
|
28
28
|
"zod": "~3.23.8",
|
|
29
29
|
"@platforma-sdk/model": "1.53.15",
|
|
30
|
-
"@milaboratories/uikit": "2.10.
|
|
30
|
+
"@milaboratories/uikit": "2.10.19"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
33
|
"@faker-js/faker": "^9.2.0",
|
|
@@ -42,10 +42,10 @@
|
|
|
42
42
|
"typescript": "~5.6.3",
|
|
43
43
|
"vite": "^6.4.1",
|
|
44
44
|
"vitest": "^4.0.16",
|
|
45
|
+
"@milaboratories/ts-configs": "1.2.1",
|
|
46
|
+
"@milaboratories/helpers": "1.13.3",
|
|
45
47
|
"@milaboratories/build-configs": "1.4.3",
|
|
46
|
-
"@milaboratories/ts-builder": "1.2.
|
|
47
|
-
"@milaboratories/helpers": "1.13.2",
|
|
48
|
-
"@milaboratories/ts-configs": "1.2.1"
|
|
48
|
+
"@milaboratories/ts-builder": "1.2.8"
|
|
49
49
|
},
|
|
50
50
|
"styles": "dist/index.js",
|
|
51
51
|
"scripts": {
|
|
@@ -229,7 +229,8 @@ const gridOptions = shallowRef<GridOptions<PlAgDataTableV2Row>>({
|
|
|
229
229
|
defaultCsvExportParams: {
|
|
230
230
|
allColumns: true,
|
|
231
231
|
suppressQuotes: true,
|
|
232
|
-
|
|
232
|
+
columnSeparator: "\t",
|
|
233
|
+
fileName: "table.tsv",
|
|
233
234
|
},
|
|
234
235
|
onGridReady: (event) => {
|
|
235
236
|
const api = event.api;
|