@platforma-sdk/ui-vue 1.58.2 → 1.58.4
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 +14 -0
- package/dist/components/PlAgDataTable/sources/table-state-v2.d.ts +1 -1
- package/dist/components/PlAgDataTable/sources/table-state-v2.d.ts.map +1 -1
- package/dist/components/PlAgDataTable/sources/table-state-v2.js +64 -66
- package/dist/components/PlAgDataTable/sources/table-state-v2.js.map +1 -1
- package/dist/lib/util/helpers/dist/functions.js +4 -13
- package/dist/lib/util/helpers/dist/functions.js.map +1 -1
- package/package.json +6 -6
- package/src/components/PlAgDataTable/sources/table-state-v2.ts +8 -8
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.58.
|
|
3
|
+
> @platforma-sdk/ui-vue@1.58.4 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...
|
|
@@ -72,6 +72,7 @@ computing gzip size...
|
|
|
72
72
|
[2mdist/[22m[36mcomponents/PlAgDataTable/PlAgOverlayNoRows.vue3.js [39m[1m[2m 0.19 kB[22m[1m[22m[2m │ gzip: 0.15 kB[22m[2m │ map: 0.47 kB[22m
|
|
73
73
|
[2mdist/[22m[36mcomponents/PlAgCellStatusTag/PlAgCellStatusTag.vue3.js [39m[1m[2m 0.19 kB[22m[1m[22m[2m │ gzip: 0.15 kB[22m[2m │ map: 0.47 kB[22m
|
|
74
74
|
[2mdist/[22m[36mcomponents/PlAgDataTable/sources/common.js [39m[1m[2m 0.21 kB[22m[1m[22m[2m │ gzip: 0.17 kB[22m[2m │ map: 0.66 kB[22m
|
|
75
|
+
[2mdist/[22m[36mlib/util/helpers/dist/functions.js [39m[1m[2m 0.21 kB[22m[1m[22m[2m │ gzip: 0.18 kB[22m[2m │ map: 5.34 kB[22m
|
|
75
76
|
[2mdist/[22m[36mcomponents/PlAgChartHistogramCell/PlAgChartHistogramCell.vue3.js [39m[1m[2m 0.21 kB[22m[1m[22m[2m │ gzip: 0.15 kB[22m[2m │ map: 0.50 kB[22m
|
|
76
77
|
[2mdist/[22m[36mcomponents/PlAnnotations/utils.js [39m[1m[2m 0.21 kB[22m[1m[22m[2m │ gzip: 0.21 kB[22m[2m │ map: 1.07 kB[22m
|
|
77
78
|
[2mdist/[22m[36mcomponents/PlAnnotations/components/FilterSidebar.vue3.js [39m[1m[2m 0.22 kB[22m[1m[22m[2m │ gzip: 0.17 kB[22m[2m │ map: 0.51 kB[22m
|
|
@@ -98,13 +99,12 @@ computing gzip size...
|
|
|
98
99
|
[2mdist/[22m[36mcomponents/PlAdvancedFilter/PlAdvancedFilter.vue.js [39m[1m[2m 0.30 kB[22m[1m[22m[2m │ gzip: 0.22 kB[22m[2m │ map: 0.11 kB[22m
|
|
99
100
|
[2mdist/[22m[36mcomponents/PlBtnExportArchive/PlBtnExportArchive.vue.js [39m[1m[2m 0.31 kB[22m[1m[22m[2m │ gzip: 0.22 kB[22m[2m │ map: 0.11 kB[22m
|
|
100
101
|
[2mdist/[22m[36mcomponents/PlAnnotations/components/PlAnnotationsModal.vue.js [39m[1m[2m 0.31 kB[22m[1m[22m[2m │ gzip: 0.22 kB[22m[2m │ map: 0.11 kB[22m
|
|
101
|
-
[2mdist/[22m[36mcomponents/PlAgDataTable/PlAgDataTableSheets.vue.js [39m[1m[2m 0.31 kB[22m[1m[22m[2m │ gzip: 0.22 kB[22m[2m │ map: 0.11 kB[22m
|
|
102
102
|
[2mdist/[22m[36mcomponents/PlAnnotations/components/AnnotationsSidebar.vue.js [39m[1m[2m 0.31 kB[22m[1m[22m[2m │ gzip: 0.22 kB[22m[2m │ map: 0.11 kB[22m
|
|
103
|
+
[2mdist/[22m[36mcomponents/PlAgDataTable/PlAgDataTableSheets.vue.js [39m[1m[2m 0.31 kB[22m[1m[22m[2m │ gzip: 0.22 kB[22m[2m │ map: 0.11 kB[22m
|
|
103
104
|
[2mdist/[22m[36mcomponents/PlBtnExportArchive/PlBtnExportArchive.vue3.js [39m[1m[2m 0.32 kB[22m[1m[22m[2m │ gzip: 0.21 kB[22m[2m │ map: 0.64 kB[22m
|
|
104
105
|
[2mdist/[22m[36mcomponents/PlAgGridColumnManager/PlAgGridColumnManager.vue.js [39m[1m[2m 0.32 kB[22m[1m[22m[2m │ gzip: 0.23 kB[22m[2m │ map: 0.12 kB[22m
|
|
105
106
|
[2mdist/[22m[36mlib/util/helpers/dist/strings.js [39m[1m[2m 0.35 kB[22m[1m[22m[2m │ gzip: 0.24 kB[22m[2m │ map: 4.22 kB[22m
|
|
106
107
|
[2mdist/[22m[36musePlugin.js [39m[1m[2m 0.39 kB[22m[1m[22m[2m │ gzip: 0.28 kB[22m[2m │ map: 2.69 kB[22m
|
|
107
|
-
[2mdist/[22m[36mlib/util/helpers/dist/functions.js [39m[1m[2m 0.39 kB[22m[1m[22m[2m │ gzip: 0.26 kB[22m[2m │ map: 5.59 kB[22m
|
|
108
108
|
[2mdist/[22m[36mcomponents/PlAgDataTable/pl-ag-overlay-loading.module.scss.js [39m[1m[2m 0.40 kB[22m[1m[22m[2m │ gzip: 0.24 kB[22m[2m │ map: 0.83 kB[22m
|
|
109
109
|
[2mdist/[22m[36mcomputedResult.js [39m[1m[2m 0.40 kB[22m[1m[22m[2m │ gzip: 0.26 kB[22m[2m │ map: 2.43 kB[22m
|
|
110
110
|
[2mdist/[22m[36mcomponents/PlAgRowNumCheckbox/pl-ag-row-num-checkbox.module.scss.js [39m[1m[2m 0.41 kB[22m[1m[22m[2m │ gzip: 0.25 kB[22m[2m │ map: 0.93 kB[22m
|
|
@@ -172,7 +172,7 @@ computing gzip size...
|
|
|
172
172
|
[2mdist/[22m[36mcomponents/PlTableFilters/PlTableFiltersV2.vue2.js [39m[1m[2m 3.76 kB[22m[1m[22m[2m │ gzip: 1.59 kB[22m[2m │ map: 7.35 kB[22m
|
|
173
173
|
[2mdist/[22m[36mplugins/Monetization/LimitCard.vue2.js [39m[1m[2m 3.84 kB[22m[1m[22m[2m │ gzip: 1.15 kB[22m[2m │ map: 9.62 kB[22m
|
|
174
174
|
[2mdist/[22m[36mcomponents/PlAgGridColumnManager/PlAgGridColumnManager.vue2.js [39m[1m[2m 3.85 kB[22m[1m[22m[2m │ gzip: 1.53 kB[22m[2m │ map: 6.85 kB[22m
|
|
175
|
-
[2mdist/[22m[36mcomponents/PlAgDataTable/sources/table-state-v2.js [39m[1m[2m 4.
|
|
175
|
+
[2mdist/[22m[36mcomponents/PlAgDataTable/sources/table-state-v2.js [39m[1m[2m 4.14 kB[22m[1m[22m[2m │ gzip: 1.48 kB[22m[2m │ map: 13.21 kB[22m
|
|
176
176
|
[2mdist/[22m[36mcomponents/PlAnnotations/components/AnnotationsSidebar.vue2.js [39m[1m[2m 4.26 kB[22m[1m[22m[2m │ gzip: 1.61 kB[22m[2m │ map: 6.42 kB[22m
|
|
177
177
|
[2mdist/[22m[36mcomponents/PlAnnotations/components/FilterSidebar.vue2.js [39m[1m[2m 4.44 kB[22m[1m[22m[2m │ gzip: 1.57 kB[22m[2m │ map: 7.52 kB[22m
|
|
178
178
|
[2mdist/[22m[36mplugins/Monetization/MonetizationSidebar.vue.js [39m[1m[2m 4.71 kB[22m[1m[22m[2m │ gzip: 1.75 kB[22m[2m │ map: 6.78 kB[22m
|
|
@@ -187,7 +187,7 @@ computing gzip size...
|
|
|
187
187
|
[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.95 kB[22m
|
|
188
188
|
[2mdist/[22m[36mcomponents/PlAdvancedFilter/FilterEditor.vue2.js [39m[1m[2m12.83 kB[22m[1m[22m[2m │ gzip: 3.28 kB[22m[2m │ map: 25.49 kB[22m
|
|
189
189
|
[2mdist/[22m[36mcomponents/PlAgDataTable/PlAgDataTableV2.vue2.js [39m[1m[2m12.92 kB[22m[1m[22m[2m │ gzip: 3.68 kB[22m[2m │ map: 29.49 kB[22m
|
|
190
|
-
[vite:dts] Declaration files built in
|
|
190
|
+
[vite:dts] Declaration files built in 4437ms.
|
|
191
191
|
|
|
192
|
-
[32m✓ built in
|
|
192
|
+
[32m✓ built in 5.73s[39m
|
|
193
193
|
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.58.
|
|
3
|
+
> @platforma-sdk/ui-vue@1.58.4 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 1355ms on 126 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.58.
|
|
3
|
+
> @platforma-sdk/ui-vue@1.58.4 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 27ms on 109 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.58.
|
|
3
|
+
> @platforma-sdk/ui-vue@1.58.4 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,19 @@
|
|
|
1
1
|
# @platforma-sdk/ui-vue
|
|
2
2
|
|
|
3
|
+
## 1.58.4
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- ea0c353: fix reactivity
|
|
8
|
+
|
|
9
|
+
## 1.58.3
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- Updated dependencies [327444c]
|
|
14
|
+
- @platforma-sdk/model@1.58.3
|
|
15
|
+
- @milaboratories/uikit@2.10.36
|
|
16
|
+
|
|
3
17
|
## 1.58.2
|
|
4
18
|
|
|
5
19
|
### Patch Changes
|
|
@@ -4,7 +4,7 @@ import { PlDataTableSettingsV2 } from '../types';
|
|
|
4
4
|
export declare function useTableState(tableStateDenormalized: Ref<PlDataTableStateV2>, settings: Ref<PlDataTableSettingsV2>, columns: Ref<PTableColumnSpec[]>): {
|
|
5
5
|
gridState: WritableComputedRef<PlDataTableGridStateCore>;
|
|
6
6
|
sheetsState: WritableComputedRef<PlDataTableSheetState[]>;
|
|
7
|
-
filtersState:
|
|
7
|
+
filtersState: Ref<PlDataTableFiltersWithMeta>;
|
|
8
8
|
searchString: WritableComputedRef<string>;
|
|
9
9
|
};
|
|
10
10
|
//# sourceMappingURL=table-state-v2.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-state-v2.d.ts","sourceRoot":"","sources":["../../../../src/components/PlAgDataTable/sources/table-state-v2.ts"],"names":[],"mappings":"AAAA,OAAO,EAQL,KAAK,gBAAgB,EACrB,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EAQvB,0BAA0B,EAG3B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,
|
|
1
|
+
{"version":3,"file":"table-state-v2.d.ts","sourceRoot":"","sources":["../../../../src/components/PlAgDataTable/sources/table-state-v2.ts"],"names":[],"mappings":"AAAA,OAAO,EAQL,KAAK,gBAAgB,EACrB,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EAQvB,0BAA0B,EAG3B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAwB,KAAK,GAAG,EAAE,KAAK,mBAAmB,EAAE,MAAM,KAAK,CAAC;AAC/E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAMtD,wBAAgB,aAAa,CAC3B,sBAAsB,EAAE,GAAG,CAAC,kBAAkB,CAAC,EAC/C,QAAQ,EAAE,GAAG,CAAC,qBAAqB,CAAC,EACpC,OAAO,EAAE,GAAG,CAAC,gBAAgB,EAAE,CAAC,GAC/B;IACD,SAAS,EAAE,mBAAmB,CAAC,wBAAwB,CAAC,CAAC;IACzD,WAAW,EAAE,mBAAmB,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC1D,YAAY,EAAE,GAAG,CAAC,0BAA0B,CAAC,CAAC;IAC9C,YAAY,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;CAC3C,CAqHA"}
|
|
@@ -1,88 +1,86 @@
|
|
|
1
|
-
import { upgradePlDataTableStateV2 as
|
|
2
|
-
import { computed as
|
|
3
|
-
import { isJsonEqual as
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
}), o = i({
|
|
1
|
+
import { upgradePlDataTableStateV2 as v, createDefaultPTableParams as h, distillFilterSpec as I, canonicalizeJson as S, getPTableColumnId as y, parseJson as m } from "@platforma-sdk/model";
|
|
2
|
+
import { computed as c, ref as b, watch as C } from "vue";
|
|
3
|
+
import { isJsonEqual as T } from "../../../lib/util/helpers/dist/objects.js";
|
|
4
|
+
import { randomInt as P } from "../../../lib/util/helpers/dist/random.js";
|
|
5
|
+
import { computedCached as N } from "@milaboratories/uikit";
|
|
6
|
+
import { isStringValueType as x, isNumericValueType as V } from "../../PlAdvancedFilter/utils.js";
|
|
7
|
+
import { debounce as A, isNil as q } from "es-toolkit";
|
|
8
|
+
function B(r, a, o) {
|
|
9
|
+
const n = N({
|
|
10
|
+
get: () => v(r.value),
|
|
11
|
+
set: A((e) => r.value = e, 300)
|
|
12
|
+
}), s = c({
|
|
14
13
|
get: () => {
|
|
15
|
-
const e =
|
|
14
|
+
const e = F(), t = a.value.sourceId;
|
|
16
15
|
if (!t) return e;
|
|
17
|
-
const
|
|
16
|
+
const i = n.value.stateCache.find(
|
|
18
17
|
(p) => p.sourceId === t
|
|
19
18
|
);
|
|
20
|
-
return
|
|
19
|
+
return i || { ...e, sourceId: t };
|
|
21
20
|
},
|
|
22
21
|
set: (e) => {
|
|
23
22
|
const t = {
|
|
24
23
|
...n.value,
|
|
25
|
-
pTableParams:
|
|
24
|
+
pTableParams: h()
|
|
26
25
|
};
|
|
27
26
|
if (e.sourceId) {
|
|
28
|
-
t.pTableParams =
|
|
29
|
-
const
|
|
27
|
+
t.pTableParams = k(e, o.value);
|
|
28
|
+
const i = t.stateCache.findIndex(
|
|
30
29
|
(p) => p.sourceId === e.sourceId
|
|
31
30
|
);
|
|
32
|
-
|
|
31
|
+
i !== -1 ? t.stateCache[i] = e : (t.stateCache.push(e), t.stateCache = t.stateCache.slice(-5));
|
|
33
32
|
}
|
|
34
|
-
|
|
33
|
+
T(n.value, t) || (n.value = t);
|
|
35
34
|
}
|
|
36
|
-
}), f =
|
|
37
|
-
get: () =>
|
|
35
|
+
}), f = c({
|
|
36
|
+
get: () => s.value.gridState,
|
|
38
37
|
set: (e) => {
|
|
39
|
-
const t =
|
|
40
|
-
t.sourceId && (
|
|
38
|
+
const t = s.value;
|
|
39
|
+
t.sourceId && (s.value = {
|
|
41
40
|
...t,
|
|
42
41
|
gridState: e
|
|
43
42
|
});
|
|
44
43
|
}
|
|
45
|
-
}),
|
|
46
|
-
get: () =>
|
|
44
|
+
}), d = c({
|
|
45
|
+
get: () => s.value.sheetsState,
|
|
47
46
|
set: (e) => {
|
|
48
|
-
const t =
|
|
49
|
-
t.sourceId && (
|
|
47
|
+
const t = s.value;
|
|
48
|
+
t.sourceId && (s.value = {
|
|
50
49
|
...t,
|
|
51
50
|
sheetsState: e
|
|
52
51
|
});
|
|
53
52
|
}
|
|
54
|
-
}), l =
|
|
53
|
+
}), l = c({
|
|
55
54
|
get: () => {
|
|
56
|
-
const e =
|
|
57
|
-
return e && (e.type === "and" || e.type === "or") && "filters" in e && Array.isArray(e.filters) ? e : { id:
|
|
55
|
+
const e = s.value.filtersState;
|
|
56
|
+
return e && (e.type === "and" || e.type === "or") && "filters" in e && Array.isArray(e.filters) ? e : { id: P(), type: "and", isExpanded: !0, filters: [] };
|
|
58
57
|
},
|
|
59
58
|
set: (e) => {
|
|
60
|
-
const t =
|
|
61
|
-
t.sourceId && (
|
|
59
|
+
const t = s.value;
|
|
60
|
+
t.sourceId && (s.value = {
|
|
62
61
|
...t,
|
|
63
62
|
filtersState: e
|
|
64
63
|
});
|
|
65
64
|
}
|
|
66
|
-
});
|
|
67
|
-
|
|
68
|
-
() =>
|
|
69
|
-
|
|
70
|
-
(e, t) => e === t && (l.value = e),
|
|
65
|
+
}), u = b(l);
|
|
66
|
+
C(
|
|
67
|
+
() => u.value,
|
|
68
|
+
(e) => l.value = e,
|
|
71
69
|
{ deep: !0 }
|
|
72
70
|
);
|
|
73
|
-
const
|
|
74
|
-
get: () =>
|
|
71
|
+
const g = c({
|
|
72
|
+
get: () => s.value.searchString ?? "",
|
|
75
73
|
set: (e) => {
|
|
76
|
-
const t =
|
|
77
|
-
t.sourceId && (
|
|
74
|
+
const t = s.value;
|
|
75
|
+
t.sourceId && (s.value = {
|
|
78
76
|
...t,
|
|
79
77
|
searchString: e
|
|
80
78
|
});
|
|
81
79
|
}
|
|
82
80
|
});
|
|
83
|
-
return { gridState: f, sheetsState:
|
|
81
|
+
return { gridState: f, sheetsState: d, filtersState: u, searchString: g };
|
|
84
82
|
}
|
|
85
|
-
function
|
|
83
|
+
function F() {
|
|
86
84
|
return {
|
|
87
85
|
sourceId: null,
|
|
88
86
|
gridState: {},
|
|
@@ -90,19 +88,19 @@ function V() {
|
|
|
90
88
|
filtersState: null
|
|
91
89
|
};
|
|
92
90
|
}
|
|
93
|
-
function
|
|
91
|
+
function E(r) {
|
|
94
92
|
var a;
|
|
95
|
-
return ((a = r == null ? void 0 : r.hiddenColIds) == null ? void 0 : a.map(
|
|
93
|
+
return ((a = r == null ? void 0 : r.hiddenColIds) == null ? void 0 : a.map(m).reduce((o, n) => (n.source.type === "column" && o.push(n.source.id), o), [])) ?? null;
|
|
96
94
|
}
|
|
97
|
-
function
|
|
95
|
+
function w(r) {
|
|
98
96
|
return r.map((a) => {
|
|
99
|
-
const
|
|
100
|
-
return typeof a.value == "number" ? { type: "equal", column:
|
|
97
|
+
const o = S({ type: "axis", id: a.axisId });
|
|
98
|
+
return typeof a.value == "number" ? { type: "equal", column: o, x: a.value } : { type: "patternEquals", column: o, value: a.value };
|
|
101
99
|
});
|
|
102
100
|
}
|
|
103
|
-
function
|
|
101
|
+
function D(r) {
|
|
104
102
|
return (r == null ? void 0 : r.sortModel.map((a) => {
|
|
105
|
-
const { spec:
|
|
103
|
+
const { spec: o, ...n } = m(a.colId).labeled;
|
|
106
104
|
return {
|
|
107
105
|
column: n,
|
|
108
106
|
ascending: a.sort === "asc",
|
|
@@ -111,28 +109,28 @@ function E(r) {
|
|
|
111
109
|
})) ?? [];
|
|
112
110
|
}
|
|
113
111
|
function J(r, a) {
|
|
114
|
-
const
|
|
115
|
-
if (
|
|
116
|
-
const n = [],
|
|
117
|
-
for (const
|
|
118
|
-
const l =
|
|
119
|
-
|
|
112
|
+
const o = a == null ? void 0 : a.trim();
|
|
113
|
+
if (q(o) || o.length === 0) return null;
|
|
114
|
+
const n = [], s = Number(o), f = o.length > 0 && !isNaN(s) && isFinite(s);
|
|
115
|
+
for (const d of r) {
|
|
116
|
+
const l = S(y(d)), u = d.spec;
|
|
117
|
+
x(u) && n.push({ type: "patternEquals", column: l, value: o }), V(u) && f && n.push({ type: "equal", column: l, x: s });
|
|
120
118
|
}
|
|
121
119
|
return n.length === 0 ? null : { type: "or", filters: n };
|
|
122
120
|
}
|
|
123
|
-
function
|
|
124
|
-
const
|
|
125
|
-
...
|
|
121
|
+
function k(r, a) {
|
|
122
|
+
const o = J(a, r.searchString), n = [
|
|
123
|
+
...w(r.sheetsState),
|
|
126
124
|
...r.filtersState ? [r.filtersState] : [],
|
|
127
|
-
...
|
|
128
|
-
],
|
|
125
|
+
...o ? [o] : []
|
|
126
|
+
], s = I(
|
|
129
127
|
n.length === 0 ? null : n.length === 1 ? n[0] : { type: "and", filters: n }
|
|
130
128
|
);
|
|
131
129
|
return {
|
|
132
130
|
sourceId: r.sourceId,
|
|
133
|
-
hiddenColIds:
|
|
134
|
-
filters:
|
|
135
|
-
sorting:
|
|
131
|
+
hiddenColIds: E(r.gridState.columnVisibility),
|
|
132
|
+
filters: s,
|
|
133
|
+
sorting: D(r.gridState.sort)
|
|
136
134
|
};
|
|
137
135
|
}
|
|
138
136
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-state-v2.js","sources":["../../../../src/components/PlAgDataTable/sources/table-state-v2.ts"],"sourcesContent":["import {\n createDefaultPTableParams,\n parseJson,\n canonicalizeJson,\n upgradePlDataTableStateV2,\n type FilterSpec,\n type FilterSpecLeaf,\n type PTableColumnId,\n type PTableColumnSpec,\n type PlDataTableGridStateCore,\n type PlDataTableSheetState,\n type PlDataTableStateV2,\n type PlDataTableStateV2CacheEntry,\n type PlDataTableStateV2Normalized,\n type PObjectId,\n type PTableParamsV2,\n type PTableSorting,\n type PlDataTableFilters,\n distillFilterSpec,\n PlDataTableFiltersWithMeta,\n getPTableColumnId,\n CanonicalizedJson,\n} from \"@platforma-sdk/model\";\nimport { computed, watch, type Ref, type WritableComputedRef } from \"vue\";\nimport type { PlDataTableSettingsV2 } from \"../types\";\nimport { debounce, isJsonEqual, randomInt } from \"@milaboratories/helpers\";\nimport { computedCached } from \"@milaboratories/uikit\";\nimport { isStringValueType, isNumericValueType } from \"../../PlAdvancedFilter/utils\";\nimport { isNil } from \"es-toolkit\";\n\nexport function useTableState(\n tableStateDenormalized: Ref<PlDataTableStateV2>,\n settings: Ref<PlDataTableSettingsV2>,\n columns: Ref<PTableColumnSpec[]>,\n): {\n gridState: WritableComputedRef<PlDataTableGridStateCore>;\n sheetsState: WritableComputedRef<PlDataTableSheetState[]>;\n filtersState: WritableComputedRef<PlDataTableFiltersWithMeta>;\n searchString: WritableComputedRef<string>;\n} {\n const tableStateNormalized = computedCached<PlDataTableStateV2Normalized>({\n get: () => upgradePlDataTableStateV2(tableStateDenormalized.value),\n set: debounce((newState) => (tableStateDenormalized.value = newState), 300),\n });\n\n const tableState = computed<PlDataTableStateV2CacheEntryNullable>({\n get: () => {\n const defaultState = makeDefaultState();\n\n const sourceId = settings.value.sourceId;\n if (!sourceId) return defaultState;\n\n const cachedState = tableStateNormalized.value.stateCache.find(\n (entry) => entry.sourceId === sourceId,\n );\n if (!cachedState) return { ...defaultState, sourceId };\n\n return cachedState;\n },\n set: (state) => {\n const newState: PlDataTableStateV2Normalized = {\n ...tableStateNormalized.value,\n pTableParams: createDefaultPTableParams(),\n };\n\n if (state.sourceId) {\n newState.pTableParams = createPTableParams(state, columns.value);\n\n const stateIdx = newState.stateCache.findIndex(\n (entry) => entry.sourceId === state.sourceId,\n );\n if (stateIdx !== -1) {\n newState.stateCache[stateIdx] = state;\n } else {\n const CacheDepth = 5;\n newState.stateCache.push(state);\n newState.stateCache = newState.stateCache.slice(-CacheDepth);\n }\n }\n\n if (!isJsonEqual(tableStateNormalized.value, newState)) {\n tableStateNormalized.value = newState;\n }\n },\n });\n\n const gridState = computed<PlDataTableGridStateCore>({\n get: () => tableState.value.gridState,\n set: (gridState) => {\n const oldState = tableState.value;\n if (oldState.sourceId) {\n tableState.value = {\n ...oldState,\n gridState,\n };\n }\n },\n });\n\n const sheetsState = computed<PlDataTableSheetState[]>({\n get: () => tableState.value.sheetsState,\n set: (sheetsState) => {\n const oldState = tableState.value;\n if (oldState.sourceId) {\n tableState.value = {\n ...oldState,\n sheetsState,\n };\n }\n },\n });\n\n const filtersState = computed<PlDataTableFiltersWithMeta>({\n get: () => {\n const raw = tableState.value.filtersState;\n const isCorrect =\n raw &&\n (raw.type === \"and\" || raw.type === \"or\") &&\n \"filters\" in raw &&\n Array.isArray(raw.filters);\n\n return isCorrect\n ? (raw satisfies PlDataTableFiltersWithMeta)\n : { id: randomInt(), type: \"and\" as const, isExpanded: true, filters: [] };\n },\n set: (filtersState: PlDataTableFiltersWithMeta) => {\n const oldState = tableState.value;\n if (oldState.sourceId) {\n tableState.value = {\n ...oldState,\n filtersState,\n };\n }\n },\n });\n watch(\n () => filtersState.value,\n // capture only mutations\n (newValue, oldValue) => newValue === oldValue && (filtersState.value = newValue),\n { deep: true },\n );\n\n const searchString = computed<string>({\n get: () => tableState.value.searchString ?? \"\",\n set: (searchString: string) => {\n const oldState = tableState.value;\n if (oldState.sourceId) {\n tableState.value = {\n ...oldState,\n searchString,\n };\n }\n },\n });\n\n return { gridState, sheetsState, filtersState, searchString };\n}\n\ntype PlDataTableStateV2CacheEntryNullable =\n | PlDataTableStateV2CacheEntry\n | {\n sourceId: null;\n gridState: Record<string, never>;\n sheetsState: [];\n filtersState: null;\n searchString?: string;\n };\n\nfunction makeDefaultState(): PlDataTableStateV2CacheEntryNullable {\n return {\n sourceId: null,\n gridState: {},\n sheetsState: [],\n filtersState: null,\n };\n}\n\nfunction getHiddenColIds(state: PlDataTableGridStateCore[\"columnVisibility\"]): PObjectId[] | null {\n return (\n state?.hiddenColIds?.map(parseJson).reduce((acc, c) => {\n if (c.source.type === \"column\") {\n acc.push(c.source.id);\n }\n return acc;\n }, [] as PObjectId[]) ?? null\n );\n}\n\nfunction convertPartitionFiltersToFilterSpec(\n sheetsState: PlDataTableSheetState[],\n): FilterSpec<FilterSpecLeaf<CanonicalizedJson<PTableColumnId>>>[] {\n return sheetsState.map((s) => {\n const column = canonicalizeJson<PTableColumnId>({ type: \"axis\", id: s.axisId });\n return typeof s.value === \"number\"\n ? { type: \"equal\" as const, column, x: s.value }\n : { type: \"patternEquals\" as const, column, value: s.value };\n });\n}\n\nfunction convertAgSortingToPTableSorting(state: PlDataTableGridStateCore[\"sort\"]): PTableSorting[] {\n return (\n state?.sortModel.map((item) => {\n const { spec: _, ...column } = parseJson(item.colId).labeled;\n return {\n column,\n ascending: item.sort === \"asc\",\n naAndAbsentAreLeastValues: item.sort === \"asc\",\n };\n }) ?? []\n );\n}\n\nfunction createSearchFilterNode(\n columns: PTableColumnSpec[],\n search: null | undefined | string,\n): null | FilterSpec<FilterSpecLeaf<CanonicalizedJson<PTableColumnId>>> {\n const trimmed = search?.trim();\n if (isNil(trimmed) || trimmed.length === 0) return null;\n\n const parts: FilterSpec<FilterSpecLeaf<CanonicalizedJson<PTableColumnId>>>[] = [];\n const numericValue = Number(trimmed);\n const isValidNumber = trimmed.length > 0 && !isNaN(numericValue) && isFinite(numericValue);\n\n for (const col of columns) {\n const column = canonicalizeJson<PTableColumnId>(getPTableColumnId(col));\n const spec = col.spec;\n\n if (isStringValueType(spec)) {\n parts.push({ type: \"patternEquals\", column, value: trimmed });\n }\n\n if (isNumericValueType(spec) && isValidNumber) {\n parts.push({ type: \"equal\", column, x: numericValue });\n }\n }\n\n if (parts.length === 0) return null;\n\n return { type: \"or\", filters: parts };\n}\n\nfunction createPTableParams(\n state: PlDataTableStateV2CacheEntry,\n filterableColumns: PTableColumnSpec[],\n): PTableParamsV2 {\n const searchNode = createSearchFilterNode(filterableColumns, state.searchString);\n const parts = [\n ...convertPartitionFiltersToFilterSpec(state.sheetsState),\n ...(state.filtersState ? [state.filtersState] : []),\n ...(searchNode ? [searchNode] : []),\n ];\n const filters: null | PlDataTableFilters = distillFilterSpec(\n parts.length === 0 ? null : parts.length === 1 ? parts[0] : { type: \"and\", filters: parts },\n );\n\n return {\n sourceId: state.sourceId,\n hiddenColIds: getHiddenColIds(state.gridState.columnVisibility),\n filters,\n sorting: convertAgSortingToPTableSorting(state.gridState.sort),\n };\n}\n"],"names":["useTableState","tableStateDenormalized","settings","columns","tableStateNormalized","computedCached","upgradePlDataTableStateV2","debounce","newState","tableState","computed","defaultState","makeDefaultState","sourceId","cachedState","entry","state","createDefaultPTableParams","createPTableParams","stateIdx","isJsonEqual","gridState","oldState","sheetsState","filtersState","raw","randomInt","watch","newValue","oldValue","searchString","getHiddenColIds","_a","parseJson","acc","c","convertPartitionFiltersToFilterSpec","s","column","canonicalizeJson","convertAgSortingToPTableSorting","item","_","createSearchFilterNode","search","trimmed","isNil","parts","numericValue","isValidNumber","col","getPTableColumnId","spec","isStringValueType","isNumericValueType","filterableColumns","searchNode","filters","distillFilterSpec"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"table-state-v2.js","sources":["../../../../src/components/PlAgDataTable/sources/table-state-v2.ts"],"sourcesContent":["import {\n createDefaultPTableParams,\n parseJson,\n canonicalizeJson,\n upgradePlDataTableStateV2,\n type FilterSpec,\n type FilterSpecLeaf,\n type PTableColumnId,\n type PTableColumnSpec,\n type PlDataTableGridStateCore,\n type PlDataTableSheetState,\n type PlDataTableStateV2,\n type PlDataTableStateV2CacheEntry,\n type PlDataTableStateV2Normalized,\n type PObjectId,\n type PTableParamsV2,\n type PTableSorting,\n type PlDataTableFilters,\n distillFilterSpec,\n PlDataTableFiltersWithMeta,\n getPTableColumnId,\n CanonicalizedJson,\n} from \"@platforma-sdk/model\";\nimport { computed, ref, watch, type Ref, type WritableComputedRef } from \"vue\";\nimport type { PlDataTableSettingsV2 } from \"../types\";\nimport { isJsonEqual, randomInt } from \"@milaboratories/helpers\";\nimport { computedCached } from \"@milaboratories/uikit\";\nimport { isStringValueType, isNumericValueType } from \"../../PlAdvancedFilter/utils\";\nimport { debounce, isNil } from \"es-toolkit\";\n\nexport function useTableState(\n tableStateDenormalized: Ref<PlDataTableStateV2>,\n settings: Ref<PlDataTableSettingsV2>,\n columns: Ref<PTableColumnSpec[]>,\n): {\n gridState: WritableComputedRef<PlDataTableGridStateCore>;\n sheetsState: WritableComputedRef<PlDataTableSheetState[]>;\n filtersState: Ref<PlDataTableFiltersWithMeta>;\n searchString: WritableComputedRef<string>;\n} {\n const tableStateNormalized = computedCached<PlDataTableStateV2Normalized>({\n get: () => upgradePlDataTableStateV2(tableStateDenormalized.value),\n set: debounce((newState) => (tableStateDenormalized.value = newState), 300),\n });\n\n const tableState = computed<PlDataTableStateV2CacheEntryNullable>({\n get: () => {\n const defaultState = makeDefaultState();\n\n const sourceId = settings.value.sourceId;\n if (!sourceId) return defaultState;\n\n const cachedState = tableStateNormalized.value.stateCache.find(\n (entry) => entry.sourceId === sourceId,\n );\n if (!cachedState) return { ...defaultState, sourceId };\n\n return cachedState;\n },\n set: (state) => {\n const newState: PlDataTableStateV2Normalized = {\n ...tableStateNormalized.value,\n pTableParams: createDefaultPTableParams(),\n };\n\n if (state.sourceId) {\n newState.pTableParams = createPTableParams(state, columns.value);\n\n const stateIdx = newState.stateCache.findIndex(\n (entry) => entry.sourceId === state.sourceId,\n );\n if (stateIdx !== -1) {\n newState.stateCache[stateIdx] = state;\n } else {\n const CacheDepth = 5;\n newState.stateCache.push(state);\n newState.stateCache = newState.stateCache.slice(-CacheDepth);\n }\n }\n\n if (!isJsonEqual(tableStateNormalized.value, newState)) {\n tableStateNormalized.value = newState;\n }\n },\n });\n\n const gridState = computed<PlDataTableGridStateCore>({\n get: () => tableState.value.gridState,\n set: (gridState) => {\n const oldState = tableState.value;\n if (oldState.sourceId) {\n tableState.value = {\n ...oldState,\n gridState,\n };\n }\n },\n });\n\n const sheetsState = computed<PlDataTableSheetState[]>({\n get: () => tableState.value.sheetsState,\n set: (sheetsState) => {\n const oldState = tableState.value;\n if (oldState.sourceId) {\n tableState.value = {\n ...oldState,\n sheetsState,\n };\n }\n },\n });\n\n const filtersState = computed<PlDataTableFiltersWithMeta>({\n get: () => {\n const raw = tableState.value.filtersState;\n const isCorrect =\n raw &&\n (raw.type === \"and\" || raw.type === \"or\") &&\n \"filters\" in raw &&\n Array.isArray(raw.filters);\n\n return isCorrect\n ? (raw satisfies PlDataTableFiltersWithMeta)\n : { id: randomInt(), type: \"and\" as const, isExpanded: true, filters: [] };\n },\n set: (filtersState: PlDataTableFiltersWithMeta) => {\n const oldState = tableState.value;\n if (oldState.sourceId) {\n tableState.value = {\n ...oldState,\n filtersState,\n };\n }\n },\n });\n const filtersStateDeepReactive = ref(filtersState);\n watch(\n () => filtersStateDeepReactive.value,\n (newValue) => (filtersState.value = newValue),\n { deep: true },\n );\n\n const searchString = computed<string>({\n get: () => tableState.value.searchString ?? \"\",\n set: (searchString: string) => {\n const oldState = tableState.value;\n if (oldState.sourceId) {\n tableState.value = {\n ...oldState,\n searchString,\n };\n }\n },\n });\n\n return { gridState, sheetsState, filtersState: filtersStateDeepReactive, searchString };\n}\n\ntype PlDataTableStateV2CacheEntryNullable =\n | PlDataTableStateV2CacheEntry\n | {\n sourceId: null;\n gridState: Record<string, never>;\n sheetsState: [];\n filtersState: null;\n searchString?: string;\n };\n\nfunction makeDefaultState(): PlDataTableStateV2CacheEntryNullable {\n return {\n sourceId: null,\n gridState: {},\n sheetsState: [],\n filtersState: null,\n };\n}\n\nfunction getHiddenColIds(state: PlDataTableGridStateCore[\"columnVisibility\"]): PObjectId[] | null {\n return (\n state?.hiddenColIds?.map(parseJson).reduce((acc, c) => {\n if (c.source.type === \"column\") {\n acc.push(c.source.id);\n }\n return acc;\n }, [] as PObjectId[]) ?? null\n );\n}\n\nfunction convertPartitionFiltersToFilterSpec(\n sheetsState: PlDataTableSheetState[],\n): FilterSpec<FilterSpecLeaf<CanonicalizedJson<PTableColumnId>>>[] {\n return sheetsState.map((s) => {\n const column = canonicalizeJson<PTableColumnId>({ type: \"axis\", id: s.axisId });\n return typeof s.value === \"number\"\n ? { type: \"equal\" as const, column, x: s.value }\n : { type: \"patternEquals\" as const, column, value: s.value };\n });\n}\n\nfunction convertAgSortingToPTableSorting(state: PlDataTableGridStateCore[\"sort\"]): PTableSorting[] {\n return (\n state?.sortModel.map((item) => {\n const { spec: _, ...column } = parseJson(item.colId).labeled;\n return {\n column,\n ascending: item.sort === \"asc\",\n naAndAbsentAreLeastValues: item.sort === \"asc\",\n };\n }) ?? []\n );\n}\n\nfunction createSearchFilterNode(\n columns: PTableColumnSpec[],\n search: null | undefined | string,\n): null | FilterSpec<FilterSpecLeaf<CanonicalizedJson<PTableColumnId>>> {\n const trimmed = search?.trim();\n if (isNil(trimmed) || trimmed.length === 0) return null;\n\n const parts: FilterSpec<FilterSpecLeaf<CanonicalizedJson<PTableColumnId>>>[] = [];\n const numericValue = Number(trimmed);\n const isValidNumber = trimmed.length > 0 && !isNaN(numericValue) && isFinite(numericValue);\n\n for (const col of columns) {\n const column = canonicalizeJson<PTableColumnId>(getPTableColumnId(col));\n const spec = col.spec;\n\n if (isStringValueType(spec)) {\n parts.push({ type: \"patternEquals\", column, value: trimmed });\n }\n\n if (isNumericValueType(spec) && isValidNumber) {\n parts.push({ type: \"equal\", column, x: numericValue });\n }\n }\n\n if (parts.length === 0) return null;\n\n return { type: \"or\", filters: parts };\n}\n\nfunction createPTableParams(\n state: PlDataTableStateV2CacheEntry,\n filterableColumns: PTableColumnSpec[],\n): PTableParamsV2 {\n const searchNode = createSearchFilterNode(filterableColumns, state.searchString);\n const parts = [\n ...convertPartitionFiltersToFilterSpec(state.sheetsState),\n ...(state.filtersState ? [state.filtersState] : []),\n ...(searchNode ? [searchNode] : []),\n ];\n const filters: null | PlDataTableFilters = distillFilterSpec(\n parts.length === 0 ? null : parts.length === 1 ? parts[0] : { type: \"and\", filters: parts },\n );\n\n return {\n sourceId: state.sourceId,\n hiddenColIds: getHiddenColIds(state.gridState.columnVisibility),\n filters,\n sorting: convertAgSortingToPTableSorting(state.gridState.sort),\n };\n}\n"],"names":["useTableState","tableStateDenormalized","settings","columns","tableStateNormalized","computedCached","upgradePlDataTableStateV2","debounce","newState","tableState","computed","defaultState","makeDefaultState","sourceId","cachedState","entry","state","createDefaultPTableParams","createPTableParams","stateIdx","isJsonEqual","gridState","oldState","sheetsState","filtersState","raw","randomInt","filtersStateDeepReactive","ref","watch","newValue","searchString","getHiddenColIds","_a","parseJson","acc","c","convertPartitionFiltersToFilterSpec","s","column","canonicalizeJson","convertAgSortingToPTableSorting","item","_","createSearchFilterNode","search","trimmed","isNil","parts","numericValue","isValidNumber","col","getPTableColumnId","spec","isStringValueType","isNumericValueType","filterableColumns","searchNode","filters","distillFilterSpec"],"mappings":"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"}
|
|
@@ -1,19 +1,10 @@
|
|
|
1
|
-
function
|
|
1
|
+
function t(r, e) {
|
|
2
2
|
return Promise.race([
|
|
3
|
-
|
|
4
|
-
new Promise((
|
|
3
|
+
r,
|
|
4
|
+
new Promise((i, o) => setTimeout(() => o(Error(`Timeout exceeded ${e}`)), e))
|
|
5
5
|
]);
|
|
6
6
|
}
|
|
7
|
-
function n(i, t, o) {
|
|
8
|
-
let e;
|
|
9
|
-
return function(...r) {
|
|
10
|
-
e && clearTimeout(e), e = setTimeout(() => {
|
|
11
|
-
e = void 0, i.apply(this, r);
|
|
12
|
-
}, t);
|
|
13
|
-
};
|
|
14
|
-
}
|
|
15
7
|
export {
|
|
16
|
-
|
|
17
|
-
u as promiseTimeout
|
|
8
|
+
t as promiseTimeout
|
|
18
9
|
};
|
|
19
10
|
//# sourceMappingURL=functions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"functions.js","sources":["../../../../../../../lib/util/helpers/src/functions.ts"],"sourcesContent":["import type { AnyFunction } from \"./types\";\n\nexport function isFunction(value: unknown): value is AnyFunction {\n return typeof value === \"function\";\n}\n\n/**\n * A utility class that ensures asynchronous locks, allowing only one task to proceed at a time.\n */\nexport class AwaitLock {\n private acquired = false;\n private resolvers: (() => void)[] = [];\n\n acquireAsync(): Promise<void> {\n if (!this.acquired) {\n this.acquired = true;\n return Promise.resolve();\n }\n\n return new Promise((resolve) => {\n this.resolvers.push(resolve);\n });\n }\n\n release(): void {\n if (!this.acquired) {\n throw new Error(\"Cannot release not acquired lock\");\n }\n\n if (this.resolvers.length) {\n this.resolvers.shift()?.();\n } else {\n this.acquired = false;\n }\n }\n}\n\n/**\n * A utility to add a timeout to a promise, rejecting the promise if the timeout is exceeded.\n */\nexport function promiseTimeout<T>(prom: PromiseLike<T>, ms: number): Promise<T> {\n return Promise.race<T>([\n prom,\n new Promise((_r, reject) => setTimeout(() => reject(Error(`Timeout exceeded ${ms}`)), ms)),\n ]);\n}\n\n/**\n * Debounce utility: delays the execution of a function until a certain time has passed since the last call.\n * @param callback\n * @param ms\n * @param immediate (if first call is required)\n * @returns\n */\nexport function debounce<F extends AnyFunction>(\n callback: F,\n ms: number,\n immediate?: boolean,\n): (...args: Parameters<F>) => void {\n let timeout: ReturnType<typeof setTimeout> | undefined;\n return function (this: unknown, ...args: Parameters<F>) {\n const i = immediate && !timeout;\n if (i) {\n callback.apply(this, args);\n }\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(() => {\n timeout = undefined;\n if (!i) {\n callback.apply(this, args);\n }\n }, ms);\n };\n}\n\n/**\n * Throttle utility: ensures a function is called at most once every `ms` milliseconds.\n * @param callback\n * @param ms milliseconds\n * @param trailing (ensure last call)\n * @returns\n */\nexport function throttle<F extends AnyFunction>(\n callback: F,\n ms: number,\n trailing = true,\n): (...args: Parameters<F>) => void {\n let t = 0,\n call: AnyFunction | null;\n return function (this: unknown, ...args: Parameters<F>) {\n call = () => {\n callback.apply(this, args);\n t = new Date().getTime() + ms;\n call = null;\n if (trailing) {\n setTimeout(() => {\n call?.();\n }, ms);\n }\n };\n if (new Date().getTime() > t) call();\n };\n}\n\n/**\n * Memoization utility: caches results of function calls based on their arguments to avoid redundant calculations.\n */\nexport const memoize = <F extends AnyFunction>(fn: F) => {\n const cache = new Map();\n return function (...args: Parameters<F>): ReturnType<F> {\n const key = JSON.stringify(args);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return cache.has(key)\n ? cache.get(key)\n : cache.set(key, fn.call(null, ...args)) && cache.get(key);\n };\n};\n\n/**\n * Function wrapper utility: executes a function before the main function is called.\n */\nexport const wrapFunction = <T extends unknown[], U>(fn: (...args: T) => U, before: () => void) => {\n return (...args: T): U => {\n before();\n return fn(...args);\n };\n};\n\n/**\n * Function piping utility: allows chaining of functions by passing the result of one as input to another\n */\nexport function pipe<A, B>(cb: (a: A) => B) {\n const fn = (a: A) => cb(a);\n\n fn.pipe = <C>(next: (b: B) => C) => pipe((a: A) => next(cb(a)));\n\n return fn;\n}\n\n/**\n * Ensures that only one request can be processed at a time.\n */\nexport function exclusiveRequest<A, R>(request: (...args: A[]) => Promise<R>) {\n let counter = 0n;\n let ongoingOperation: Promise<R> | undefined;\n\n return async function (...params: A[]): Promise<\n | {\n ok: false;\n }\n | {\n ok: true;\n value: R;\n }\n > {\n const myId = ++counter;\n\n try {\n await ongoingOperation;\n } catch {\n // ignoring the error here, original caller will receive any rejections\n }\n\n // checking that this update is still the most recent\n if (counter !== myId) {\n return {\n ok: false,\n };\n }\n\n const promise = request(...params);\n\n ongoingOperation = promise;\n\n const value = await promise;\n\n return {\n ok: true,\n value,\n };\n };\n}\n\nexport function tryDo<R1>(fn: () => R1): R1 | undefined;\nexport function tryDo<R1, R2>(fn: () => R1, fallback: (cause: unknown) => R2): R1 | R2;\nexport function tryDo(fn: () => unknown, fallback?: (cause: unknown) => unknown) {\n try {\n return fn();\n } catch (cause: unknown) {\n return fallback?.(cause);\n }\n}\n"],"names":["promiseTimeout","prom","ms","_r","reject"
|
|
1
|
+
{"version":3,"file":"functions.js","sources":["../../../../../../../lib/util/helpers/src/functions.ts"],"sourcesContent":["import type { AnyFunction } from \"./types\";\n\nexport function isFunction(value: unknown): value is AnyFunction {\n return typeof value === \"function\";\n}\n\n/**\n * A utility class that ensures asynchronous locks, allowing only one task to proceed at a time.\n */\nexport class AwaitLock {\n private acquired = false;\n private resolvers: (() => void)[] = [];\n\n acquireAsync(): Promise<void> {\n if (!this.acquired) {\n this.acquired = true;\n return Promise.resolve();\n }\n\n return new Promise((resolve) => {\n this.resolvers.push(resolve);\n });\n }\n\n release(): void {\n if (!this.acquired) {\n throw new Error(\"Cannot release not acquired lock\");\n }\n\n if (this.resolvers.length) {\n this.resolvers.shift()?.();\n } else {\n this.acquired = false;\n }\n }\n}\n\n/**\n * A utility to add a timeout to a promise, rejecting the promise if the timeout is exceeded.\n */\nexport function promiseTimeout<T>(prom: PromiseLike<T>, ms: number): Promise<T> {\n return Promise.race<T>([\n prom,\n new Promise((_r, reject) => setTimeout(() => reject(Error(`Timeout exceeded ${ms}`)), ms)),\n ]);\n}\n\n/**\n * Debounce utility: delays the execution of a function until a certain time has passed since the last call.\n * @param callback\n * @param ms\n * @param immediate (if first call is required)\n * @returns\n */\nexport function debounce<F extends AnyFunction>(\n callback: F,\n ms: number,\n immediate?: boolean,\n): (...args: Parameters<F>) => void {\n let timeout: ReturnType<typeof setTimeout> | undefined;\n return function (this: unknown, ...args: Parameters<F>) {\n const i = immediate && !timeout;\n if (i) {\n callback.apply(this, args);\n }\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(() => {\n timeout = undefined;\n if (!i) {\n callback.apply(this, args);\n }\n }, ms);\n };\n}\n\n/**\n * Throttle utility: ensures a function is called at most once every `ms` milliseconds.\n * @param callback\n * @param ms milliseconds\n * @param trailing (ensure last call)\n * @returns\n */\nexport function throttle<F extends AnyFunction>(\n callback: F,\n ms: number,\n trailing = true,\n): (...args: Parameters<F>) => void {\n let t = 0,\n call: AnyFunction | null;\n return function (this: unknown, ...args: Parameters<F>) {\n call = () => {\n callback.apply(this, args);\n t = new Date().getTime() + ms;\n call = null;\n if (trailing) {\n setTimeout(() => {\n call?.();\n }, ms);\n }\n };\n if (new Date().getTime() > t) call();\n };\n}\n\n/**\n * Memoization utility: caches results of function calls based on their arguments to avoid redundant calculations.\n */\nexport const memoize = <F extends AnyFunction>(fn: F) => {\n const cache = new Map();\n return function (...args: Parameters<F>): ReturnType<F> {\n const key = JSON.stringify(args);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return cache.has(key)\n ? cache.get(key)\n : cache.set(key, fn.call(null, ...args)) && cache.get(key);\n };\n};\n\n/**\n * Function wrapper utility: executes a function before the main function is called.\n */\nexport const wrapFunction = <T extends unknown[], U>(fn: (...args: T) => U, before: () => void) => {\n return (...args: T): U => {\n before();\n return fn(...args);\n };\n};\n\n/**\n * Function piping utility: allows chaining of functions by passing the result of one as input to another\n */\nexport function pipe<A, B>(cb: (a: A) => B) {\n const fn = (a: A) => cb(a);\n\n fn.pipe = <C>(next: (b: B) => C) => pipe((a: A) => next(cb(a)));\n\n return fn;\n}\n\n/**\n * Ensures that only one request can be processed at a time.\n */\nexport function exclusiveRequest<A, R>(request: (...args: A[]) => Promise<R>) {\n let counter = 0n;\n let ongoingOperation: Promise<R> | undefined;\n\n return async function (...params: A[]): Promise<\n | {\n ok: false;\n }\n | {\n ok: true;\n value: R;\n }\n > {\n const myId = ++counter;\n\n try {\n await ongoingOperation;\n } catch {\n // ignoring the error here, original caller will receive any rejections\n }\n\n // checking that this update is still the most recent\n if (counter !== myId) {\n return {\n ok: false,\n };\n }\n\n const promise = request(...params);\n\n ongoingOperation = promise;\n\n const value = await promise;\n\n return {\n ok: true,\n value,\n };\n };\n}\n\nexport function tryDo<R1>(fn: () => R1): R1 | undefined;\nexport function tryDo<R1, R2>(fn: () => R1, fallback: (cause: unknown) => R2): R1 | R2;\nexport function tryDo(fn: () => unknown, fallback?: (cause: unknown) => unknown) {\n try {\n return fn();\n } catch (cause: unknown) {\n return fallback?.(cause);\n }\n}\n"],"names":["promiseTimeout","prom","ms","_r","reject"],"mappings":"AAwCM,SAAUA,EAAkBC,GAAsBC,GAAU;AAChE,SAAO,QAAQ,KAAQ;AAAA,IACrBD;AAAA,IACA,IAAI,QAAQ,CAACE,GAAIC,MAAW,WAAW,MAAMA,EAAO,MAAM,oBAAoBF,CAAE,EAAE,CAAC,GAAGA,CAAE,CAAC;AAAA,EAC1F,CAAA;AACH;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@platforma-sdk/ui-vue",
|
|
3
|
-
"version": "1.58.
|
|
3
|
+
"version": "1.58.4",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"sideEffects": [
|
|
6
6
|
"**/*.css"
|
|
@@ -28,8 +28,8 @@
|
|
|
28
28
|
"lru-cache": "^11.2.2",
|
|
29
29
|
"vue": "^3.5.24",
|
|
30
30
|
"zod": "~3.23.8",
|
|
31
|
-
"@platforma-sdk/model": "1.58.
|
|
32
|
-
"@milaboratories/uikit": "2.10.
|
|
31
|
+
"@platforma-sdk/model": "1.58.3",
|
|
32
|
+
"@milaboratories/uikit": "2.10.36"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
35
|
"@faker-js/faker": "^9.2.0",
|
|
@@ -43,10 +43,10 @@
|
|
|
43
43
|
"typescript": "~5.6.3",
|
|
44
44
|
"vite": "^6.4.1",
|
|
45
45
|
"vitest": "^4.0.18",
|
|
46
|
-
"@milaboratories/
|
|
47
|
-
"@milaboratories/build-configs": "1.5.0",
|
|
46
|
+
"@milaboratories/ts-builder": "1.2.11",
|
|
48
47
|
"@milaboratories/ts-configs": "1.2.1",
|
|
49
|
-
"@milaboratories/
|
|
48
|
+
"@milaboratories/helpers": "1.13.5",
|
|
49
|
+
"@milaboratories/build-configs": "1.5.0"
|
|
50
50
|
},
|
|
51
51
|
"scripts": {
|
|
52
52
|
"dev": "ts-builder serve --target browser-lib",
|
|
@@ -21,12 +21,12 @@ import {
|
|
|
21
21
|
getPTableColumnId,
|
|
22
22
|
CanonicalizedJson,
|
|
23
23
|
} from "@platforma-sdk/model";
|
|
24
|
-
import { computed, watch, type Ref, type WritableComputedRef } from "vue";
|
|
24
|
+
import { computed, ref, watch, type Ref, type WritableComputedRef } from "vue";
|
|
25
25
|
import type { PlDataTableSettingsV2 } from "../types";
|
|
26
|
-
import {
|
|
26
|
+
import { isJsonEqual, randomInt } from "@milaboratories/helpers";
|
|
27
27
|
import { computedCached } from "@milaboratories/uikit";
|
|
28
28
|
import { isStringValueType, isNumericValueType } from "../../PlAdvancedFilter/utils";
|
|
29
|
-
import { isNil } from "es-toolkit";
|
|
29
|
+
import { debounce, isNil } from "es-toolkit";
|
|
30
30
|
|
|
31
31
|
export function useTableState(
|
|
32
32
|
tableStateDenormalized: Ref<PlDataTableStateV2>,
|
|
@@ -35,7 +35,7 @@ export function useTableState(
|
|
|
35
35
|
): {
|
|
36
36
|
gridState: WritableComputedRef<PlDataTableGridStateCore>;
|
|
37
37
|
sheetsState: WritableComputedRef<PlDataTableSheetState[]>;
|
|
38
|
-
filtersState:
|
|
38
|
+
filtersState: Ref<PlDataTableFiltersWithMeta>;
|
|
39
39
|
searchString: WritableComputedRef<string>;
|
|
40
40
|
} {
|
|
41
41
|
const tableStateNormalized = computedCached<PlDataTableStateV2Normalized>({
|
|
@@ -133,10 +133,10 @@ export function useTableState(
|
|
|
133
133
|
}
|
|
134
134
|
},
|
|
135
135
|
});
|
|
136
|
+
const filtersStateDeepReactive = ref(filtersState);
|
|
136
137
|
watch(
|
|
137
|
-
() =>
|
|
138
|
-
|
|
139
|
-
(newValue, oldValue) => newValue === oldValue && (filtersState.value = newValue),
|
|
138
|
+
() => filtersStateDeepReactive.value,
|
|
139
|
+
(newValue) => (filtersState.value = newValue),
|
|
140
140
|
{ deep: true },
|
|
141
141
|
);
|
|
142
142
|
|
|
@@ -153,7 +153,7 @@ export function useTableState(
|
|
|
153
153
|
},
|
|
154
154
|
});
|
|
155
155
|
|
|
156
|
-
return { gridState, sheetsState, filtersState, searchString };
|
|
156
|
+
return { gridState, sheetsState, filtersState: filtersStateDeepReactive, searchString };
|
|
157
157
|
}
|
|
158
158
|
|
|
159
159
|
type PlDataTableStateV2CacheEntryNullable =
|