@platforma-sdk/ui-vue 1.51.8 → 1.52.0

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.
@@ -1,13 +1,13 @@
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.51.8 build /home/runner/_work/platforma/platforma/sdk/ui-vue
3
+ > @platforma-sdk/ui-vue@1.52.0 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...
7
7
  ↳ vite.js build --config /configs/vite.browser-lib.config.js --mode production
8
8
  vite v6.3.5 building for production...
9
9
  transforming...
10
- ✓ 233 modules transformed.
10
+ ✓ 234 modules transformed.
11
11
  Export "default" of module "src/components/PlAgGridColumnManager/PlAgGridColumnManager.vue" was reexported through module "src/components/PlAgGridColumnManager/index.ts" while both modules are dependencies of each other and will end up in different chunks by current Rollup settings. This scenario is not well supported at the moment as it will produce a circular dependency between chunks and will likely lead to broken execution order.
12
12
  Either change the import in "src/components/PlAgDataTable/PlAgDataTableV2.vue?vue&type=script&setup=true&lang.ts" to point directly to the exporting module or do not use "output.preserveModules" to ensure these modules end up in the same chunk.
13
13
  rendering chunks...
@@ -20,8 +20,8 @@ computing gzip size...
20
20
  dist/components/PlAgCellFile/PlAgCellFile.vue2.js  0.11 kB │ gzip: 0.12 kB │ map: 0.10 kB
21
21
  dist/components/PlAgDataTable/PlAgRowCount.vue2.js  0.11 kB │ gzip: 0.12 kB │ map: 0.10 kB
22
22
  dist/components/PlAgCsvExporter/PlAgCsvExporter.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
23
- dist/components/PlAgCellProgress/PlAgCellProgress.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
24
23
  dist/components/PlAgColumnHeader/PlAgColumnHeader.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
24
+ dist/components/PlAgCellProgress/PlAgCellProgress.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
25
25
  dist/components/PlAgRowNumHeader.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
26
26
  dist/components/PlAgDataTable/PlAgOverlayLoading.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
27
27
  dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
@@ -95,8 +95,8 @@ computing gzip size...
95
95
  dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/to-comparators.js  0.30 kB │ gzip: 0.23 kB │ map: 0.78 kB
96
96
  dist/components/PlBtnExportArchive/PlBtnExportArchive.vue.js  0.31 kB │ gzip: 0.22 kB │ map: 0.11 kB
97
97
  dist/components/PlAnnotations/components/PlAnnotationsModal.vue.js  0.31 kB │ gzip: 0.22 kB │ map: 0.11 kB
98
- dist/components/PlAgDataTable/PlAgDataTableSheets.vue.js  0.31 kB │ gzip: 0.22 kB │ map: 0.11 kB
99
98
  dist/components/PlAnnotations/components/AnnotationsSidebar.vue.js  0.31 kB │ gzip: 0.22 kB │ map: 0.11 kB
99
+ dist/components/PlAgDataTable/PlAgDataTableSheets.vue.js  0.31 kB │ gzip: 0.22 kB │ map: 0.11 kB
100
100
  dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/ranges/valid.js  0.31 kB │ gzip: 0.22 kB │ map: 0.76 kB
101
101
  dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue.js  0.32 kB │ gzip: 0.23 kB │ map: 0.12 kB
102
102
  dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/satisfies.js  0.32 kB │ gzip: 0.23 kB │ map: 0.74 kB
@@ -166,8 +166,7 @@ computing gzip size...
166
166
  dist/internal/createAppModel.js  1.73 kB │ gzip: 0.77 kB │ map: 4.81 kB
167
167
  dist/internal/UpdateSerializer.js  1.86 kB │ gzip: 0.80 kB │ map: 4.63 kB
168
168
  dist/components/PlAnnotations/components/PlAnnotationsModal.vue2.js  1.99 kB │ gzip: 0.86 kB │ map: 2.62 kB
169
- dist/defineApp.js  2.15 kB │ gzip: 0.96 kB │ map: 9.65 kB
170
- dist/plugins/Monetization/useInfo.js  2.18 kB │ gzip: 0.80 kB │ map: 4.32 kB
169
+ dist/plugins/Monetization/useInfo.js  2.15 kB │ gzip: 0.82 kB │ map: 4.84 kB
171
170
  dist/components/PlAgDataTable/PlAgRowCount.vue.js  2.21 kB │ gzip: 0.80 kB │ map: 2.76 kB
172
171
  dist/components/BlockLayout.vue2.js  2.30 kB │ gzip: 1.00 kB │ map: 3.90 kB
173
172
  dist/plugins/Monetization/UserCabinetCard.vue2.js  2.36 kB │ gzip: 0.95 kB │ map: 4.61 kB
@@ -175,6 +174,7 @@ computing gzip size...
175
174
  dist/components/PlTableFilters/filters-state.js  2.60 kB │ gzip: 1.08 kB │ map: 7.95 kB
176
175
  dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue.js  2.61 kB │ gzip: 1.02 kB │ map: 3.03 kB
177
176
  dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/classes/comparator.js  2.65 kB │ gzip: 0.94 kB │ map: 6.36 kB
177
+ dist/defineApp.js  2.68 kB │ gzip: 1.00 kB │ map: 12.87 kB
178
178
  dist/components/PlAnnotations/components/PlAnnotations.vue2.js  2.68 kB │ gzip: 1.08 kB │ map: 4.03 kB
179
179
  dist/node_modules/.pnpm/fast-json-patch@3.1.1/node_modules/fast-json-patch/module/helpers.js  2.79 kB │ gzip: 1.21 kB │ map: 8.92 kB
180
180
  dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue.js  2.81 kB │ gzip: 1.16 kB │ map: 4.14 kB
@@ -192,6 +192,7 @@ computing gzip size...
192
192
  dist/components/PlAnnotations/components/AnnotationsSidebar.vue2.js  4.21 kB │ gzip: 1.60 kB │ map: 6.37 kB
193
193
  dist/components/PlAnnotations/components/FilterSidebar.vue2.js  4.30 kB │ gzip: 1.56 kB │ map: 7.41 kB
194
194
  dist/plugins/Monetization/MonetizationSidebar.vue.js  4.71 kB │ gzip: 1.75 kB │ map: 6.69 kB
195
+ dist/internal/createAppV3.js  5.21 kB │ gzip: 2.02 kB │ map: 14.73 kB
195
196
  dist/composition/fileContent.js  5.78 kB │ gzip: 1.95 kB │ map: 14.16 kB
196
197
  dist/internal/createAppV1.js  5.85 kB │ gzip: 1.89 kB │ map: 15.68 kB
197
198
  dist/components/PlBtnExportArchive/PlBtnExportArchive.vue2.js  5.93 kB │ gzip: 2.22 kB │ map: 11.97 kB
@@ -208,7 +209,7 @@ computing gzip size...
208
209
  dist/components/PlAdvancedFilter/FilterEditor.vue2.js  12.66 kB │ gzip: 3.26 kB │ map: 24.94 kB
209
210
  dist/components/PlAgDataTable/PlAgDataTableV2.vue2.js  15.29 kB │ gzip: 4.40 kB │ map: 34.62 kB
210
211
  dist/index.js 101.49 kB │ gzip: 64.77 kB │ map: 0.13 kB
211
- [vite:dts] Declaration files built in 4719ms.
212
+ [vite:dts] Declaration files built in 4938ms.
212
213
 
213
- ✓ built in 6.36s
214
+ ✓ built in 6.59s
214
215
  Build completed successfully
@@ -1,5 +1,5 @@
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.51.8 lint /home/runner/_work/platforma/platforma/sdk/ui-vue
3
+ > @platforma-sdk/ui-vue@1.52.0 lint /home/runner/_work/platforma/platforma/sdk/ui-vue
4
4
  > eslint .
5
5
 
@@ -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.51.8 type-check /home/runner/_work/platforma/platforma/sdk/ui-vue
3
+ > @platforma-sdk/ui-vue@1.52.0 type-check /home/runner/_work/platforma/platforma/sdk/ui-vue
4
4
  > ts-builder types --target browser-lib
5
5
 
6
6
  ↳ vue-tsc.js --noEmit --project ./tsconfig.json --customConditions ,
package/CHANGELOG.md CHANGED
@@ -1,5 +1,26 @@
1
1
  # @platforma-sdk/ui-vue
2
2
 
3
+ ## 1.52.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 1694d1a: Platforma API v3
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies [1694d1a]
12
+ - @platforma-sdk/model@1.52.0
13
+ - @milaboratories/uikit@2.10.5
14
+ - @milaboratories/ptabler-expression-js@1.1.10
15
+
16
+ ## 1.51.9
17
+
18
+ ### Patch Changes
19
+
20
+ - Updated dependencies [38534c5]
21
+ - @platforma-sdk/model@1.51.9
22
+ - @milaboratories/uikit@2.10.4
23
+
3
24
  ## 1.51.8
4
25
 
5
26
  ### Patch Changes
@@ -1,29 +1,49 @@
1
- import { PlatformaExtended, PlatformaV1, PlatformaV2, BlockOutputsBase } from '@platforma-sdk/model';
1
+ import { PlatformaV3, PlatformaV1, PlatformaV2, BlockOutputsBase, BlockModelInfo } from '@platforma-sdk/model';
2
2
  import { Component, Reactive } from 'vue';
3
3
  import { BaseAppV1 } from './internal/createAppV1';
4
4
  import { BaseAppV2 } from './internal/createAppV2';
5
+ import { BaseAppV3 } from './internal/createAppV3';
5
6
  import { AppSettings, ExtendSettings } from './types';
6
7
  export declare function useSdkPlugin(): SdkPlugin;
7
- export declare function defineApp<Args = unknown, Outputs extends BlockOutputsBase = BlockOutputsBase, UiState = unknown, Href extends `/${string}` = `/${string}`, Extend extends ExtendSettings<Href> = ExtendSettings<Href>>(platforma: PlatformaExtended<PlatformaV1<Args, Outputs, UiState, Href>>, extendApp: (app: BaseAppV1<Args, Outputs, UiState, Href>) => Extend, settings?: AppSettings): SdkPluginV1<Args, Outputs, UiState, Href, Extend>;
8
- export declare function defineApp<Args = unknown, Outputs extends BlockOutputsBase = BlockOutputsBase, UiState = unknown, Href extends `/${string}` = `/${string}`, Extend extends ExtendSettings<Href> = ExtendSettings<Href>>(platforma: PlatformaExtended<PlatformaV2<Args, Outputs, UiState, Href>>, extendApp: (app: BaseAppV2<Args, Outputs, UiState, Href>) => Extend, settings?: AppSettings): SdkPluginV2<Args, Outputs, UiState, Href, Extend>;
8
+ export declare function defineApp<Args = unknown, Outputs extends BlockOutputsBase = BlockOutputsBase, UiState = unknown, Href extends `/${string}` = `/${string}`, Extend extends ExtendSettings<Href> = ExtendSettings<Href>>(platforma: PlatformaV1<Args, Outputs, UiState, Href> & {
9
+ blockModelInfo: BlockModelInfo;
10
+ }, extendApp: (app: BaseAppV1<Args, Outputs, UiState, Href>) => Extend, settings?: AppSettings): SdkPluginV1<Args, Outputs, UiState, Href, Extend>;
11
+ export declare function defineApp<Args = unknown, Outputs extends BlockOutputsBase = BlockOutputsBase, UiState = unknown, Href extends `/${string}` = `/${string}`, Extend extends ExtendSettings<Href> = ExtendSettings<Href>>(platforma: PlatformaV2<Args, Outputs, UiState, Href> & {
12
+ blockModelInfo: BlockModelInfo;
13
+ }, extendApp: (app: BaseAppV2<Args, Outputs, UiState, Href>) => Extend, settings?: AppSettings): SdkPluginV2<Args, Outputs, UiState, Href, Extend>;
14
+ export declare function defineApp<Args = unknown, Outputs extends BlockOutputsBase = BlockOutputsBase, Data = unknown, Href extends `/${string}` = `/${string}`, Extend extends ExtendSettings<Href> = ExtendSettings<Href>>(platforma: PlatformaV3<Args, Outputs, Data, Href> & {
15
+ blockModelInfo: BlockModelInfo;
16
+ }, extendApp: (app: BaseAppV3<Args, Outputs, Data, Href>) => Extend, settings?: AppSettings): SdkPluginV3<Args, Outputs, Data, Href, Extend>;
9
17
  export type AppV1<Args = unknown, Outputs extends BlockOutputsBase = BlockOutputsBase, UiState = unknown, Href extends `/${string}` = `/${string}`, Local extends ExtendSettings<Href> = ExtendSettings<Href>> = (BaseAppV1<Args, Outputs, UiState, Href>) & Reactive<Omit<Local, 'routes'>> & {
10
18
  getRoute(href: Href): Component | undefined;
11
19
  };
12
20
  export type AppV2<Args = unknown, Outputs extends BlockOutputsBase = BlockOutputsBase, UiState = unknown, Href extends `/${string}` = `/${string}`, Local extends ExtendSettings<Href> = ExtendSettings<Href>> = (BaseAppV2<Args, Outputs, UiState, Href>) & Reactive<Omit<Local, 'routes'>> & {
13
21
  getRoute(href: Href): Component | undefined;
14
22
  };
15
- export type App<Args = unknown, Outputs extends BlockOutputsBase = BlockOutputsBase, UiState = unknown, Href extends `/${string}` = `/${string}`, Local extends ExtendSettings<Href> = ExtendSettings<Href>> = AppV1<Args, Outputs, UiState, Href, Local> | AppV2<Args, Outputs, UiState, Href, Local>;
23
+ export type AppV3<Args = unknown, Outputs extends BlockOutputsBase = BlockOutputsBase, Data = unknown, Href extends `/${string}` = `/${string}`, Local extends ExtendSettings<Href> = ExtendSettings<Href>> = (BaseAppV3<Args, Outputs, Data, Href>) & Reactive<Omit<Local, 'routes'>> & {
24
+ getRoute(href: Href): Component | undefined;
25
+ };
26
+ export type App<Args = unknown, Outputs extends BlockOutputsBase = BlockOutputsBase, UiState = unknown, Href extends `/${string}` = `/${string}`, Local extends ExtendSettings<Href> = ExtendSettings<Href>> = AppV1<Args, Outputs, UiState, Href, Local> | AppV2<Args, Outputs, UiState, Href, Local> | AppV3<Args, Outputs, UiState, Href, Local>;
16
27
  export type SdkPluginV1<Args = unknown, Outputs extends BlockOutputsBase = BlockOutputsBase, UiState = unknown, Href extends `/${string}` = `/${string}`, Local extends ExtendSettings<Href> = ExtendSettings<Href>> = {
28
+ apiVersion: 1;
17
29
  loaded: boolean;
18
30
  error: unknown;
19
31
  useApp<PageHref extends Href = Href>(): AppV1<Args, Outputs, UiState, PageHref, Local>;
20
32
  install(app: unknown): void;
21
33
  };
22
34
  export type SdkPluginV2<Args = unknown, Outputs extends BlockOutputsBase = BlockOutputsBase, UiState = unknown, Href extends `/${string}` = `/${string}`, Local extends ExtendSettings<Href> = ExtendSettings<Href>> = {
35
+ apiVersion: 2;
23
36
  loaded: boolean;
24
37
  error: unknown;
25
38
  useApp<PageHref extends Href = Href>(): AppV2<Args, Outputs, UiState, PageHref, Local>;
26
39
  install(app: unknown): void;
27
40
  };
28
- export type SdkPlugin<Args = unknown, Outputs extends BlockOutputsBase = BlockOutputsBase, UiState = unknown, Href extends `/${string}` = `/${string}`, Local extends ExtendSettings<Href> = ExtendSettings<Href>> = SdkPluginV1<Args, Outputs, UiState, Href, Local> | SdkPluginV2<Args, Outputs, UiState, Href, Local>;
41
+ export type SdkPluginV3<Args = unknown, Outputs extends BlockOutputsBase = BlockOutputsBase, Data = unknown, Href extends `/${string}` = `/${string}`, Local extends ExtendSettings<Href> = ExtendSettings<Href>> = {
42
+ apiVersion: 3;
43
+ loaded: boolean;
44
+ error: unknown;
45
+ useApp<PageHref extends Href = Href>(): AppV3<Args, Outputs, Data, PageHref, Local>;
46
+ install(app: unknown): void;
47
+ };
48
+ export type SdkPlugin<Args = unknown, Outputs extends BlockOutputsBase = BlockOutputsBase, UiState = unknown, Href extends `/${string}` = `/${string}`, Local extends ExtendSettings<Href> = ExtendSettings<Href>> = SdkPluginV1<Args, Outputs, UiState, Href, Local> | SdkPluginV2<Args, Outputs, UiState, Href, Local> | SdkPluginV3<Args, Outputs, UiState, Href, Local>;
29
49
  //# sourceMappingURL=defineApp.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"defineApp.d.ts","sourceRoot":"","sources":["../src/defineApp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"defineApp.d.ts","sourceRoot":"","sources":["../src/defineApp.ts"],"names":[],"mappings":"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"}
package/dist/defineApp.js CHANGED
@@ -1,69 +1,86 @@
1
- import { notEmpty as V } from "./lib/util/helpers/dist/utils.js";
2
- import { getPlatformaApiVersion as g, unwrapResult as k } from "@platforma-sdk/model";
3
- import { inject as h, reactive as j, markRaw as f } from "vue";
4
- import { createAppV1 as w } from "./internal/createAppV1.js";
5
- import { createAppV2 as y } from "./internal/createAppV2.js";
6
- import { activateAgGrid as O } from "./aggrid.js";
7
- const b = Symbol("sdk-vue");
8
- function q() {
9
- return h(b);
1
+ import { notEmpty as g } from "./lib/util/helpers/dist/utils.js";
2
+ import { getPlatformaApiVersion as k, unwrapResult as V } from "@platforma-sdk/model";
3
+ import { inject as m, reactive as O, markRaw as b } from "vue";
4
+ import { createAppV1 as h } from "./internal/createAppV1.js";
5
+ import { createAppV2 as S } from "./internal/createAppV2.js";
6
+ import { createAppV3 as w } from "./internal/createAppV3.js";
7
+ import { activateAgGrid as y } from "./aggrid.js";
8
+ const j = Symbol("sdk-vue");
9
+ function G() {
10
+ return m(j);
10
11
  }
11
- function $(e, p, l = {}) {
12
+ function K(e, p, l = {}) {
12
13
  let u;
13
- O();
14
- const d = e.apiVersion ?? 1, A = g(), m = async () => {
15
- if (A !== d)
16
- throw new Error(`Block requested API version ${A} but runtime API version is ${d}.
14
+ y();
15
+ const A = e.apiVersion ?? 1, f = k(), v = async () => {
16
+ if (f !== A)
17
+ throw new Error(`Block requested API version ${f} but runtime API version is ${A}.
17
18
  Please update the desktop app to use the latest API version.`);
18
- e.apiVersion === void 0 || e.apiVersion === 1 ? await e.loadBlockState().then((r) => {
19
- c.loaded = !0;
20
- const t = w(r, e, l), i = p(t), a = Object.fromEntries(
21
- Object.entries(i.routes).map(([s, o]) => {
22
- const n = typeof o == "function" ? o() : o;
23
- return [s, f(n)];
19
+ e.apiVersion === void 0 || e.apiVersion === 1 ? await e.loadBlockState().then((i) => {
20
+ a.loaded = !0;
21
+ const o = h(i, e, l), s = p(o), n = Object.fromEntries(
22
+ Object.entries(s.routes).map(([c, t]) => {
23
+ const r = typeof t == "function" ? t() : t;
24
+ return [c, b(r)];
24
25
  })
25
26
  );
26
- u = Object.assign(t, {
27
- ...i,
28
- getRoute(s) {
29
- return a[s];
27
+ u = Object.assign(o, {
28
+ ...s,
29
+ getRoute(c) {
30
+ return n[c];
30
31
  }
31
32
  });
32
- }) : e.apiVersion === 2 && await e.loadBlockState().then((r) => {
33
- const t = k(r);
34
- c.loaded = !0;
35
- const i = y(t, e, l), a = p(i), s = Object.fromEntries(
36
- Object.entries(a.routes).map(([o, n]) => {
37
- const v = typeof n == "function" ? n() : n;
38
- return [o, f(v)];
33
+ }) : e.apiVersion === 2 ? await e.loadBlockState().then((i) => {
34
+ const o = V(i);
35
+ a.loaded = !0;
36
+ const s = S(o, e, l), n = p(s), c = Object.fromEntries(
37
+ Object.entries(n.routes).map(([t, r]) => {
38
+ const d = typeof r == "function" ? r() : r;
39
+ return [t, b(d)];
39
40
  })
40
41
  );
41
- u = Object.assign(i, {
42
- ...a,
43
- getRoute(o) {
44
- return s[o];
42
+ u = Object.assign(s, {
43
+ ...n,
44
+ getRoute(t) {
45
+ return c[t];
46
+ }
47
+ });
48
+ }) : e.apiVersion === 3 && await e.loadBlockState().then((i) => {
49
+ const o = V(i);
50
+ a.loaded = !0;
51
+ const s = w(o, e, l), n = p(s), c = Object.fromEntries(
52
+ Object.entries(n.routes).map(([t, r]) => {
53
+ const d = typeof r == "function" ? r() : r;
54
+ return [t, b(d)];
55
+ })
56
+ );
57
+ u = Object.assign(s, {
58
+ ...n,
59
+ getRoute(t) {
60
+ return c[t];
45
61
  }
46
62
  });
47
63
  });
48
- }, c = j({
64
+ }, a = O({
65
+ apiVersion: e.apiVersion ?? 1,
49
66
  loaded: !1,
50
67
  error: void 0,
51
68
  // Href to get typed query parameters for a specific route
52
69
  useApp() {
53
- return V(u, "App is not loaded");
70
+ return g(u, "App is not loaded");
54
71
  },
55
72
  // @todo type portability issue with Vue
56
73
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
57
- install(r) {
58
- r.provide(b, this), m().catch((t) => {
59
- console.error("load initial state error", t), c.error = t;
74
+ install(i) {
75
+ i.provide(j, this), v().catch((o) => {
76
+ console.error("load initial state error", o), a.error = o;
60
77
  });
61
78
  }
62
79
  });
63
- return c;
80
+ return a;
64
81
  }
65
82
  export {
66
- $ as defineApp,
67
- q as useSdkPlugin
83
+ K as defineApp,
84
+ G as useSdkPlugin
68
85
  };
69
86
  //# sourceMappingURL=defineApp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"defineApp.js","sources":["../src/defineApp.ts"],"sourcesContent":["import { notEmpty } from '@milaboratories/helpers';\nimport type { PlatformaExtended, PlatformaV1, PlatformaV2 } from '@platforma-sdk/model';\nimport { getPlatformaApiVersion, unwrapResult, type BlockOutputsBase, type Platforma } from '@platforma-sdk/model';\nimport type { Component, Reactive } from 'vue';\nimport { inject, markRaw, reactive } from 'vue';\nimport { createAppV1, type BaseAppV1 } from './internal/createAppV1';\nimport { createAppV2, type BaseAppV2 } from './internal/createAppV2';\nimport type { AppSettings, ExtendSettings, Routes } from './types';\nimport { activateAgGrid } from './aggrid';\n\nconst pluginKey = Symbol('sdk-vue');\n\nexport function useSdkPlugin(): SdkPlugin {\n return inject(pluginKey)!;\n}\n\nexport function defineApp<\n Args = unknown,\n Outputs extends BlockOutputsBase = BlockOutputsBase,\n UiState = unknown,\n Href extends `/${string}` = `/${string}`,\n Extend extends ExtendSettings<Href> = ExtendSettings<Href>,\n>(\n platforma: PlatformaExtended<PlatformaV1<Args, Outputs, UiState, Href>>,\n extendApp: (app: BaseAppV1<Args, Outputs, UiState, Href>) => Extend,\n settings?: AppSettings,\n): SdkPluginV1<Args, Outputs, UiState, Href, Extend>;\n\nexport function defineApp<\n Args = unknown,\n Outputs extends BlockOutputsBase = BlockOutputsBase,\n UiState = unknown,\n Href extends `/${string}` = `/${string}`,\n Extend extends ExtendSettings<Href> = ExtendSettings<Href>,\n>(\n platforma: PlatformaExtended<PlatformaV2<Args, Outputs, UiState, Href>>,\n extendApp: (app: BaseAppV2<Args, Outputs, UiState, Href>) => Extend,\n settings?: AppSettings,\n): SdkPluginV2<Args, Outputs, UiState, Href, Extend>;\n\nexport function defineApp<\n Args = unknown,\n Outputs extends BlockOutputsBase = BlockOutputsBase,\n UiState = unknown,\n Href extends `/${string}` = `/${string}`,\n Extend extends ExtendSettings<Href> = ExtendSettings<Href>,\n>(\n platforma: PlatformaExtended<Platforma<Args, Outputs, UiState, Href>>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n extendApp: (app: any) => Extend,\n settings: AppSettings = {},\n): SdkPlugin<Args, Outputs, UiState, Href, Extend> {\n let app: undefined | AppV1<Args, Outputs, UiState, Href, Extend> | AppV2<Args, Outputs, UiState, Href, Extend> = undefined;\n\n activateAgGrid();\n\n const runtimeApiVersion = platforma.apiVersion ?? 1; // undefined means 1 (backward compatibility)\n\n const blockRequestedApiVersion = getPlatformaApiVersion();\n\n const loadApp = async () => {\n if (blockRequestedApiVersion !== runtimeApiVersion) {\n throw new Error(`Block requested API version ${blockRequestedApiVersion} but runtime API version is ${runtimeApiVersion}.\n Please update the desktop app to use the latest API version.`);\n }\n\n if (platforma.apiVersion === undefined || platforma.apiVersion === 1) {\n await platforma\n .loadBlockState()\n .then((state) => {\n plugin.loaded = true;\n const baseApp = createAppV1<Args, Outputs, UiState, Href>(state, platforma, settings);\n\n const localState = extendApp(baseApp);\n\n const routes = Object.fromEntries(\n Object.entries(localState.routes as Routes<Href>).map(([href, component]) => {\n const c = typeof component === 'function' ? component() : component;\n return [href, markRaw(c as Component)];\n }),\n );\n\n app = Object.assign(baseApp, {\n ...localState,\n getRoute(href: Href): Component | undefined {\n return routes[href];\n },\n } as unknown as AppV1<Args, Outputs, UiState, Href, Extend>);\n });\n } else if (platforma.apiVersion === 2) {\n await platforma\n .loadBlockState()\n .then((stateOrError) => {\n const state = unwrapResult(stateOrError);\n plugin.loaded = true;\n const baseApp = createAppV2<Args, Outputs, UiState, Href>(state, platforma, settings);\n\n const localState = extendApp(baseApp);\n\n const routes = Object.fromEntries(\n Object.entries(localState.routes as Routes<Href>).map(([href, component]) => {\n const c = typeof component === 'function' ? component() : component;\n return [href, markRaw(c as Component)];\n }),\n );\n\n app = Object.assign(baseApp, {\n ...localState,\n getRoute(href: Href): Component | undefined {\n return routes[href];\n },\n } as unknown as AppV2<Args, Outputs, UiState, Href, Extend>);\n });\n }\n };\n\n const plugin = reactive({\n loaded: false,\n error: undefined as unknown,\n // Href to get typed query parameters for a specific route\n useApp<PageHref extends Href = Href>() {\n return notEmpty(app, 'App is not loaded') as App<Args, Outputs, UiState, PageHref, Extend>;\n },\n // @todo type portability issue with Vue\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n install(app: any) {\n app.provide(pluginKey, this);\n loadApp().catch((err) => {\n console.error('load initial state error', err);\n plugin.error = err;\n });\n },\n });\n\n return plugin as SdkPlugin<Args, Outputs, UiState, Href, Extend>;\n}\n\nexport type AppV1<\n Args = unknown,\n Outputs extends BlockOutputsBase = BlockOutputsBase,\n UiState = unknown,\n Href extends `/${string}` = `/${string}`,\n Local extends ExtendSettings<Href> = ExtendSettings<Href>,\n> = (BaseAppV1<Args, Outputs, UiState, Href>) & Reactive<Omit<Local, 'routes'>> & { getRoute(href: Href): Component | undefined };\n\nexport type AppV2<\n Args = unknown,\n Outputs extends BlockOutputsBase = BlockOutputsBase,\n UiState = unknown,\n Href extends `/${string}` = `/${string}`,\n Local extends ExtendSettings<Href> = ExtendSettings<Href>,\n> = (BaseAppV2<Args, Outputs, UiState, Href>) & Reactive<Omit<Local, 'routes'>> & { getRoute(href: Href): Component | undefined };\n\nexport type App<\n Args = unknown,\n Outputs extends BlockOutputsBase = BlockOutputsBase,\n UiState = unknown,\n Href extends `/${string}` = `/${string}`,\n Local extends ExtendSettings<Href> = ExtendSettings<Href>,\n> = AppV1<Args, Outputs, UiState, Href, Local> | AppV2<Args, Outputs, UiState, Href, Local>;\n\nexport type SdkPluginV1<\n Args = unknown,\n Outputs extends BlockOutputsBase = BlockOutputsBase,\n UiState = unknown,\n Href extends `/${string}` = `/${string}`,\n Local extends ExtendSettings<Href> = ExtendSettings<Href>,\n> = {\n loaded: boolean;\n error: unknown;\n useApp<PageHref extends Href = Href>(): AppV1<Args, Outputs, UiState, PageHref, Local>;\n install(app: unknown): void;\n};\n\nexport type SdkPluginV2<\n Args = unknown,\n Outputs extends BlockOutputsBase = BlockOutputsBase,\n UiState = unknown,\n Href extends `/${string}` = `/${string}`,\n Local extends ExtendSettings<Href> = ExtendSettings<Href>,\n> = {\n loaded: boolean;\n error: unknown;\n useApp<PageHref extends Href = Href>(): AppV2<Args, Outputs, UiState, PageHref, Local>;\n install(app: unknown): void;\n};\n\nexport type SdkPlugin<\n Args = unknown,\n Outputs extends BlockOutputsBase = BlockOutputsBase,\n UiState = unknown,\n Href extends `/${string}` = `/${string}`,\n Local extends ExtendSettings<Href> = ExtendSettings<Href>,\n> = SdkPluginV1<Args, Outputs, UiState, Href, Local> | SdkPluginV2<Args, Outputs, UiState, Href, Local>;\n"],"names":["pluginKey","useSdkPlugin","inject","defineApp","platforma","extendApp","settings","app","activateAgGrid","runtimeApiVersion","blockRequestedApiVersion","getPlatformaApiVersion","loadApp","state","plugin","baseApp","createAppV1","localState","routes","href","component","c","markRaw","stateOrError","unwrapResult","createAppV2","reactive","notEmpty","err"],"mappings":";;;;;;AAUA,MAAMA,IAAY,OAAO,SAAS;AAE3B,SAASC,IAA0B;AACxC,SAAOC,EAAOF,CAAS;AACzB;AA0BO,SAASG,EAOdC,GAEAC,GACAC,IAAwB,CAAA,GACyB;AACjD,MAAIC;AAEJ,EAAAC,EAAA;AAEA,QAAMC,IAAoBL,EAAU,cAAc,GAE5CM,IAA2BC,EAAA,GAE3BC,IAAU,YAAY;AAC1B,QAAIF,MAA6BD;AAC/B,YAAM,IAAI,MAAM,+BAA+BC,CAAwB,+BAA+BD,CAAiB;AAAA,mEAC1D;AAG/D,IAAIL,EAAU,eAAe,UAAaA,EAAU,eAAe,IACjE,MAAMA,EACH,eAAA,EACA,KAAK,CAACS,MAAU;AACf,MAAAC,EAAO,SAAS;AAChB,YAAMC,IAAUC,EAA0CH,GAAOT,GAAWE,CAAQ,GAE9EW,IAAaZ,EAAUU,CAAO,GAE9BG,IAAS,OAAO;AAAA,QACpB,OAAO,QAAQD,EAAW,MAAsB,EAAE,IAAI,CAAC,CAACE,GAAMC,CAAS,MAAM;AAC3E,gBAAMC,IAAI,OAAOD,KAAc,aAAaA,MAAcA;AAC1D,iBAAO,CAACD,GAAMG,EAAQD,CAAc,CAAC;AAAA,QACvC,CAAC;AAAA,MAAA;AAGH,MAAAd,IAAM,OAAO,OAAOQ,GAAS;AAAA,QAC3B,GAAGE;AAAA,QACH,SAASE,GAAmC;AAC1C,iBAAOD,EAAOC,CAAI;AAAA,QACpB;AAAA,MAAA,CACyD;AAAA,IAC7D,CAAC,IACMf,EAAU,eAAe,KAClC,MAAMA,EACH,eAAA,EACA,KAAK,CAACmB,MAAiB;AACtB,YAAMV,IAAQW,EAAaD,CAAY;AACvC,MAAAT,EAAO,SAAS;AAChB,YAAMC,IAAUU,EAA0CZ,GAAOT,GAAWE,CAAQ,GAE9EW,IAAaZ,EAAUU,CAAO,GAE9BG,IAAS,OAAO;AAAA,QACpB,OAAO,QAAQD,EAAW,MAAsB,EAAE,IAAI,CAAC,CAACE,GAAMC,CAAS,MAAM;AAC3E,gBAAMC,IAAI,OAAOD,KAAc,aAAaA,MAAcA;AAC1D,iBAAO,CAACD,GAAMG,EAAQD,CAAc,CAAC;AAAA,QACvC,CAAC;AAAA,MAAA;AAGH,MAAAd,IAAM,OAAO,OAAOQ,GAAS;AAAA,QAC3B,GAAGE;AAAA,QACH,SAASE,GAAmC;AAC1C,iBAAOD,EAAOC,CAAI;AAAA,QACpB;AAAA,MAAA,CACyD;AAAA,IAC7D,CAAC;AAAA,EAEP,GAEML,IAASY,EAAS;AAAA,IACtB,QAAQ;AAAA,IACR,OAAO;AAAA;AAAA,IAEP,SAAuC;AACrC,aAAOC,EAASpB,GAAK,mBAAmB;AAAA,IAC1C;AAAA;AAAA;AAAA,IAGA,QAAQA,GAAU;AAChBA,MAAAA,EAAI,QAAQP,GAAW,IAAI,GAC3BY,EAAA,EAAU,MAAM,CAACgB,MAAQ;AACvB,gBAAQ,MAAM,4BAA4BA,CAAG,GAC7Cd,EAAO,QAAQc;AAAA,MACjB,CAAC;AAAA,IACH;AAAA,EAAA,CACD;AAED,SAAOd;AACT;"}
1
+ {"version":3,"file":"defineApp.js","sources":["../src/defineApp.ts"],"sourcesContent":["import { notEmpty } from '@milaboratories/helpers';\nimport type { PlatformaExtended, PlatformaV3, PlatformaV1, PlatformaV2 } from '@platforma-sdk/model';\nimport { getPlatformaApiVersion, unwrapResult, type BlockOutputsBase, type Platforma, type BlockModelInfo } from '@platforma-sdk/model';\nimport type { Component, Reactive } from 'vue';\nimport { inject, markRaw, reactive } from 'vue';\nimport { createAppV1, type BaseAppV1 } from './internal/createAppV1';\nimport { createAppV2, type BaseAppV2 } from './internal/createAppV2';\nimport { createAppV3, type BaseAppV3 } from './internal/createAppV3';\nimport type { AppSettings, ExtendSettings, Routes } from './types';\nimport { activateAgGrid } from './aggrid';\n\nconst pluginKey = Symbol('sdk-vue');\n\nexport function useSdkPlugin(): SdkPlugin {\n return inject(pluginKey)!;\n}\n\nexport function defineApp<\n Args = unknown,\n Outputs extends BlockOutputsBase = BlockOutputsBase,\n UiState = unknown,\n Href extends `/${string}` = `/${string}`,\n Extend extends ExtendSettings<Href> = ExtendSettings<Href>,\n>(\n platforma: PlatformaV1<Args, Outputs, UiState, Href> & {\n blockModelInfo: BlockModelInfo;\n },\n extendApp: (app: BaseAppV1<Args, Outputs, UiState, Href>) => Extend,\n settings?: AppSettings,\n): SdkPluginV1<Args, Outputs, UiState, Href, Extend>;\n\nexport function defineApp<\n Args = unknown,\n Outputs extends BlockOutputsBase = BlockOutputsBase,\n UiState = unknown,\n Href extends `/${string}` = `/${string}`,\n Extend extends ExtendSettings<Href> = ExtendSettings<Href>,\n>(\n platforma: PlatformaV2<Args, Outputs, UiState, Href> & {\n blockModelInfo: BlockModelInfo;\n },\n extendApp: (app: BaseAppV2<Args, Outputs, UiState, Href>) => Extend,\n settings?: AppSettings,\n): SdkPluginV2<Args, Outputs, UiState, Href, Extend>;\n\nexport function defineApp<\n Args = unknown,\n Outputs extends BlockOutputsBase = BlockOutputsBase,\n Data = unknown,\n Href extends `/${string}` = `/${string}`,\n Extend extends ExtendSettings<Href> = ExtendSettings<Href>,\n>(\n platforma: PlatformaV3<Args, Outputs, Data, Href> & {\n blockModelInfo: BlockModelInfo;\n },\n extendApp: (app: BaseAppV3<Args, Outputs, Data, Href>) => Extend,\n settings?: AppSettings,\n): SdkPluginV3<Args, Outputs, Data, Href, Extend>;\n\nexport function defineApp<\n Args = unknown,\n Outputs extends BlockOutputsBase = BlockOutputsBase,\n UiStateOrData = unknown,\n Href extends `/${string}` = `/${string}`,\n Extend extends ExtendSettings<Href> = ExtendSettings<Href>,\n>(\n platforma: PlatformaExtended<Platforma<Args, Outputs, UiStateOrData, Href>>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n extendApp: (app: any) => Extend,\n settings: AppSettings = {},\n): SdkPlugin<Args, Outputs, UiStateOrData, Href, Extend> {\n let app: undefined | AppV1<Args, Outputs, UiStateOrData, Href, Extend> | AppV2<Args, Outputs, UiStateOrData, Href, Extend> | AppV3<Args, Outputs, UiStateOrData, Href, Extend> = undefined;\n\n activateAgGrid();\n\n const runtimeApiVersion = platforma.apiVersion ?? 1; // undefined means 1 (backward compatibility)\n\n const blockRequestedApiVersion = getPlatformaApiVersion();\n\n const loadApp = async () => {\n if (blockRequestedApiVersion !== runtimeApiVersion) {\n throw new Error(`Block requested API version ${blockRequestedApiVersion} but runtime API version is ${runtimeApiVersion}.\n Please update the desktop app to use the latest API version.`);\n }\n\n if (platforma.apiVersion === undefined || platforma.apiVersion === 1) {\n await platforma\n .loadBlockState()\n .then((state) => {\n plugin.loaded = true;\n const baseApp = createAppV1<Args, Outputs, UiStateOrData, Href>(state, platforma, settings);\n\n const localState = extendApp(baseApp);\n\n const routes = Object.fromEntries(\n Object.entries(localState.routes as Routes<Href>).map(([href, component]) => {\n const c = typeof component === 'function' ? component() : component;\n return [href, markRaw(c as Component)];\n }),\n );\n\n app = Object.assign(baseApp, {\n ...localState,\n getRoute(href: Href): Component | undefined {\n return routes[href];\n },\n } as unknown as AppV1<Args, Outputs, UiStateOrData, Href, Extend>);\n });\n } else if (platforma.apiVersion === 2) {\n await platforma\n .loadBlockState()\n .then((stateOrError) => {\n const state = unwrapResult(stateOrError);\n plugin.loaded = true;\n const baseApp = createAppV2<Args, Outputs, UiStateOrData, Href>(state, platforma, settings);\n\n const localState = extendApp(baseApp);\n\n const routes = Object.fromEntries(\n Object.entries(localState.routes as Routes<Href>).map(([href, component]) => {\n const c = typeof component === 'function' ? component() : component;\n return [href, markRaw(c as Component)];\n }),\n );\n\n app = Object.assign(baseApp, {\n ...localState,\n getRoute(href: Href): Component | undefined {\n return routes[href];\n },\n } as unknown as AppV2<Args, Outputs, UiStateOrData, Href, Extend>);\n });\n } else if (platforma.apiVersion === 3) {\n await platforma\n .loadBlockState()\n .then((stateOrError) => {\n const state = unwrapResult(stateOrError);\n plugin.loaded = true;\n const baseApp = createAppV3<Args, Outputs, UiStateOrData, Href>(state, platforma, settings);\n\n const localState = extendApp(baseApp);\n\n const routes = Object.fromEntries(\n Object.entries(localState.routes as Routes<Href>).map(([href, component]) => {\n const c = typeof component === 'function' ? component() : component;\n return [href, markRaw(c as Component)];\n }),\n );\n\n app = Object.assign(baseApp, {\n ...localState,\n getRoute(href: Href): Component | undefined {\n return routes[href];\n },\n } as unknown as AppV3<Args, Outputs, UiStateOrData, Href, Extend>);\n });\n }\n };\n\n const plugin = reactive({\n apiVersion: platforma.apiVersion ?? 1,\n loaded: false,\n error: undefined as unknown,\n // Href to get typed query parameters for a specific route\n useApp<PageHref extends Href = Href>() {\n return notEmpty(app, 'App is not loaded') as App<Args, Outputs, UiStateOrData, PageHref, Extend>;\n },\n // @todo type portability issue with Vue\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n install(app: any) {\n app.provide(pluginKey, this);\n loadApp().catch((err) => {\n console.error('load initial state error', err);\n plugin.error = err;\n });\n },\n });\n\n return plugin as SdkPlugin<Args, Outputs, UiStateOrData, Href, Extend>;\n}\n\nexport type AppV1<\n Args = unknown,\n Outputs extends BlockOutputsBase = BlockOutputsBase,\n UiState = unknown,\n Href extends `/${string}` = `/${string}`,\n Local extends ExtendSettings<Href> = ExtendSettings<Href>,\n> = (BaseAppV1<Args, Outputs, UiState, Href>) & Reactive<Omit<Local, 'routes'>> & { getRoute(href: Href): Component | undefined };\n\nexport type AppV2<\n Args = unknown,\n Outputs extends BlockOutputsBase = BlockOutputsBase,\n UiState = unknown,\n Href extends `/${string}` = `/${string}`,\n Local extends ExtendSettings<Href> = ExtendSettings<Href>,\n> = (BaseAppV2<Args, Outputs, UiState, Href>) & Reactive<Omit<Local, 'routes'>> & { getRoute(href: Href): Component | undefined };\n\nexport type AppV3<\n Args = unknown,\n Outputs extends BlockOutputsBase = BlockOutputsBase,\n Data = unknown,\n Href extends `/${string}` = `/${string}`,\n Local extends ExtendSettings<Href> = ExtendSettings<Href>,\n> = (BaseAppV3<Args, Outputs, Data, Href>) & Reactive<Omit<Local, 'routes'>> & { getRoute(href: Href): Component | undefined };\n\nexport type App<\n Args = unknown,\n Outputs extends BlockOutputsBase = BlockOutputsBase,\n UiState = unknown,\n Href extends `/${string}` = `/${string}`,\n Local extends ExtendSettings<Href> = ExtendSettings<Href>,\n> = AppV1<Args, Outputs, UiState, Href, Local> | AppV2<Args, Outputs, UiState, Href, Local> | AppV3<Args, Outputs, UiState, Href, Local>;\n\nexport type SdkPluginV1<\n Args = unknown,\n Outputs extends BlockOutputsBase = BlockOutputsBase,\n UiState = unknown,\n Href extends `/${string}` = `/${string}`,\n Local extends ExtendSettings<Href> = ExtendSettings<Href>,\n> = {\n apiVersion: 1;\n loaded: boolean;\n error: unknown;\n useApp<PageHref extends Href = Href>(): AppV1<Args, Outputs, UiState, PageHref, Local>;\n install(app: unknown): void;\n};\n\nexport type SdkPluginV2<\n Args = unknown,\n Outputs extends BlockOutputsBase = BlockOutputsBase,\n UiState = unknown,\n Href extends `/${string}` = `/${string}`,\n Local extends ExtendSettings<Href> = ExtendSettings<Href>,\n> = {\n apiVersion: 2;\n loaded: boolean;\n error: unknown;\n useApp<PageHref extends Href = Href>(): AppV2<Args, Outputs, UiState, PageHref, Local>;\n install(app: unknown): void;\n};\n\nexport type SdkPluginV3<\n Args = unknown,\n Outputs extends BlockOutputsBase = BlockOutputsBase,\n Data = unknown,\n Href extends `/${string}` = `/${string}`,\n Local extends ExtendSettings<Href> = ExtendSettings<Href>,\n> = {\n apiVersion: 3;\n loaded: boolean;\n error: unknown;\n useApp<PageHref extends Href = Href>(): AppV3<Args, Outputs, Data, PageHref, Local>;\n install(app: unknown): void;\n};\n\nexport type SdkPlugin<\n Args = unknown,\n Outputs extends BlockOutputsBase = BlockOutputsBase,\n UiState = unknown,\n Href extends `/${string}` = `/${string}`,\n Local extends ExtendSettings<Href> = ExtendSettings<Href>,\n> = SdkPluginV1<Args, Outputs, UiState, Href, Local> | SdkPluginV2<Args, Outputs, UiState, Href, Local> | SdkPluginV3<Args, Outputs, UiState, Href, Local>;\n"],"names":["pluginKey","useSdkPlugin","inject","defineApp","platforma","extendApp","settings","app","activateAgGrid","runtimeApiVersion","blockRequestedApiVersion","getPlatformaApiVersion","loadApp","state","plugin","baseApp","createAppV1","localState","routes","href","component","c","markRaw","stateOrError","unwrapResult","createAppV2","createAppV3","reactive","notEmpty","err"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"createAppV2.d.ts","sourceRoot":"","sources":["../../src/internal/createAppV2.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAIvJ,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAQ1G,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAErC,eAAO,MAAM,sBAAsB,WAAY,YAAY,GAAG,SAAS,KAAG,YAGxE,CAAC;AAUH;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CACzB,IAAI,GAAG,OAAO,EACd,OAAO,SAAS,gBAAgB,GAAG,gBAAgB,EACnD,OAAO,GAAG,OAAO,EACjB,IAAI,SAAS,IAAI,MAAM,EAAE,GAAG,IAAI,MAAM,EAAE,EAExC,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,EAC9D,SAAS,EAAE,iBAAiB,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,EACvE,QAAQ,EAAE,WAAW;WA0FZ,MAAM;;;;;;;qBAoF2C,IAAI;wBACH,OAAO;gCACc,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;sBAM5F,CAAC,SAAS,IAAI,mBAAkB,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;oBAmB5D,CAAC,SAAS,OAAO,qBAAqB,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC,8BAAuB,MAAM,OAAO;oBAwBvG,CAAC,SAAS,MAAM,OAAO,WAAW,CAAC,EAAE,KAAG,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC;qBAWhE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,KAAG,OAAO,CAAC,OAAO,CAAC;wBAcpC,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,KAAG,OAAO,CAAC,OAAO,CAAC;uBAY9C,IAAI;;;;cAzNf,IAAI;iBACD,OAAO,CAAC,OAAO,CAAC;YACrB,OAAO;yBACM,eAAe,CAAC,IAAI,CAAC;;;;;EAiPzC;AAED,MAAM,MAAM,SAAS,CACnB,IAAI,GAAG,OAAO,EACd,OAAO,SAAS,gBAAgB,GAAG,gBAAgB,EACnD,OAAO,GAAG,OAAO,EACjB,IAAI,SAAS,IAAI,MAAM,EAAE,GAAG,IAAI,MAAM,EAAE,IACtC,UAAU,CAAC,OAAO,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"createAppV2.d.ts","sourceRoot":"","sources":["../../src/internal/createAppV2.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAIvJ,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAQ1G,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAErC,eAAO,MAAM,sBAAsB,WAAY,YAAY,GAAG,SAAS,KAAG,YAGxE,CAAC;AAUH;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CACzB,IAAI,GAAG,OAAO,EACd,OAAO,SAAS,gBAAgB,GAAG,gBAAgB,EACnD,OAAO,GAAG,OAAO,EACjB,IAAI,SAAS,IAAI,MAAM,EAAE,GAAG,IAAI,MAAM,EAAE,EAExC,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,EAC9D,SAAS,EAAE,iBAAiB,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,EACvE,QAAQ,EAAE,WAAW;WA2FZ,MAAM;;;;;;;qBAoF2C,IAAI;wBACH,OAAO;gCACc,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;sBAM5F,CAAC,SAAS,IAAI,mBAAkB,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;oBAmB5D,CAAC,SAAS,OAAO,qBAAqB,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC,8BAAuB,MAAM,OAAO;oBAwBvG,CAAC,SAAS,MAAM,OAAO,WAAW,CAAC,EAAE,KAAG,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC;qBAWhE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,KAAG,OAAO,CAAC,OAAO,CAAC;wBAcpC,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,KAAG,OAAO,CAAC,OAAO,CAAC;uBAY9C,IAAI;;;;cAzNf,IAAI;iBACD,OAAO,CAAC,OAAO,CAAC;YACrB,OAAO;yBACM,eAAe,CAAC,IAAI,CAAC;;;;;EAiPzC;AAED,MAAM,MAAM,SAAS,CACnB,IAAI,GAAG,OAAO,EACd,OAAO,SAAS,gBAAgB,GAAG,gBAAgB,EACnD,OAAO,GAAG,OAAO,EACjB,IAAI,SAAS,IAAI,MAAM,EAAE,GAAG,IAAI,MAAM,EAAE,IACtC,UAAU,CAAC,OAAO,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"createAppV2.js","sources":["../../src/internal/createAppV2.ts"],"sourcesContent":["import { deepClone, delay, uniqueId } from '@milaboratories/helpers';\nimport type { Mutable } from '@milaboratories/helpers';\nimport type { NavigationState, BlockOutputsBase, BlockState, PlatformaV2, ValueWithUTag, AuthorMarker, PlatformaExtended } from '@platforma-sdk/model';\nimport { hasAbortError, unwrapResult } from '@platforma-sdk/model';\nimport type { Ref } from 'vue';\nimport { reactive, computed, ref } from 'vue';\nimport type { StateModelOptions, UnwrapOutputs, OutputValues, OutputErrors, AppSettings } from '../types';\nimport { createModel } from '../createModel';\nimport { parseQuery } from '../urls';\nimport { ensureOutputHasStableFlag, MultiError, unwrapOutput } from '../utils';\nimport { applyPatch } from 'fast-json-patch';\nimport { UpdateSerializer } from './UpdateSerializer';\nimport { watchIgnorable } from '@vueuse/core';\n\nexport const patchPoolingDelay = 150;\n\nexport const createNextAuthorMarker = (marker: AuthorMarker | undefined): AuthorMarker => ({\n authorId: marker?.authorId ?? uniqueId(),\n localVersion: (marker?.localVersion ?? 0) + 1,\n});\n\nconst stringifyForDebug = (v: unknown) => {\n try {\n return JSON.stringify(v, null, 2);\n } catch (err) {\n return err instanceof Error ? err.message : String(err);\n }\n};\n\n/**\n * Creates an application instance with reactive state management, outputs, and methods for state updates and navigation.\n *\n * @template Args - The type of arguments used in the application.\n * @template Outputs - The type of block outputs extending `BlockOutputsBase`.\n * @template UiState - The type of the UI state.\n * @template Href - The type of navigation href, defaulting to a string starting with `/`.\n *\n * @param state - Initial state of the application, including args, outputs, UI state, and navigation state.\n * @param platforma - A platform interface for interacting with block states.\n * @param settings - Application settings, such as debug flags.\n *\n * @returns A reactive application object with methods, getters, and state.\n */\nexport function createAppV2<\n Args = unknown,\n Outputs extends BlockOutputsBase = BlockOutputsBase,\n UiState = unknown,\n Href extends `/${string}` = `/${string}`,\n>(\n state: ValueWithUTag<BlockState<Args, Outputs, UiState, Href>>,\n platforma: PlatformaExtended<PlatformaV2<Args, Outputs, UiState, Href>>,\n settings: AppSettings,\n) {\n const debug = (msg: string, ...rest: unknown[]) => {\n if (settings.debug) {\n console.log(`%c>>> %c${msg}`, 'color: orange; font-weight: bold', 'color: orange', ...rest.map((r) => stringifyForDebug(r)));\n }\n };\n\n const error = (msg: string, ...rest: unknown[]) => {\n console.error(`%c>>> %c${msg}`, 'color: red; font-weight: bold', 'color: red', ...rest.map((r) => stringifyForDebug(r)));\n };\n\n const data = {\n isExternalSnapshot: false,\n author: {\n authorId: uniqueId(),\n localVersion: 0,\n },\n };\n\n const nextAuthorMarker = () => {\n data.author = createNextAuthorMarker(data.author);\n debug('nextAuthorMarker', data.author);\n return data.author;\n };\n\n const closedRef = ref(false);\n\n const uTagRef = ref(state.uTag);\n\n const debounceSpan = settings.debounceSpan ?? 200;\n\n const setArgsQueue = new UpdateSerializer({ debounceSpan });\n const setUiStateQueue = new UpdateSerializer({ debounceSpan });\n const setArgsAndUiStateQueue = new UpdateSerializer({ debounceSpan });\n const setNavigationStateQueue = new UpdateSerializer({ debounceSpan });\n /**\n * Reactive snapshot of the application state, including args, outputs, UI state, and navigation state.\n */\n const snapshot = ref<{\n args: Args;\n outputs: Partial<Outputs>;\n ui: UiState;\n navigationState: NavigationState<Href>;\n }>(state.value) as Ref<{\n args: Args;\n outputs: Partial<Outputs>;\n ui: UiState;\n navigationState: NavigationState<Href>;\n }>;\n\n const setBlockArgs = async (args: Args) => {\n return platforma.setBlockArgs(args, nextAuthorMarker());\n };\n\n const setBlockUiState = async (ui: UiState) => {\n return platforma.setBlockUiState(ui, nextAuthorMarker());\n };\n\n const setBlockArgsAndUiState = async (args: Args, ui: UiState) => {\n return platforma.setBlockArgsAndUiState(args, ui, nextAuthorMarker());\n };\n\n const setNavigationState = async (state: NavigationState<Href>) => {\n return platforma.setNavigationState(state);\n };\n\n const outputs = computed<OutputValues<Outputs>>(() => {\n const entries = Object.entries(snapshot.value.outputs as Partial<Readonly<Outputs>>)\n .map(([k, outputWithStatus]) => platforma.blockModelInfo.outputs[k].withStatus\n ? [k, ensureOutputHasStableFlag(outputWithStatus)]\n : [k, outputWithStatus.ok && outputWithStatus.value !== undefined ? outputWithStatus.value : undefined],\n );\n return Object.fromEntries(entries);\n });\n\n const outputErrors = computed<OutputErrors<Outputs>>(() => {\n const entries = Object.entries(snapshot.value.outputs as Partial<Readonly<Outputs>>).map(([k, vOrErr]) => [k, vOrErr && vOrErr.ok === false ? new MultiError(vOrErr.errors) : undefined]);\n return Object.fromEntries(entries);\n });\n\n const appModel = reactive({\n error: '',\n model: {\n args: deepClone(snapshot.value.args) as Args,\n ui: deepClone(snapshot.value.ui) as UiState,\n outputs,\n outputErrors,\n },\n }) as {\n error: string;\n model: {\n args: Args;\n ui: UiState;\n outputs: OutputValues<Outputs>;\n outputErrors: OutputErrors<Outputs>;\n };\n };\n\n const { ignoreUpdates } = watchIgnorable(\n () => appModel.model,\n (_newData) => {\n const newData = deepClone(_newData);\n debug('setArgsAndUiStateQueue appModel.model, args', newData.args, 'ui', newData.ui);\n setArgsAndUiStateQueue.run(() => setBlockArgsAndUiState(newData.args, newData.ui).then(unwrapResult));\n },\n { deep: true },\n );\n\n const updateAppModel = (newData: {\n args: Args;\n ui: UiState;\n }) => {\n debug('updateAppModel', newData);\n appModel.model.args = deepClone(newData.args) as Args;\n appModel.model.ui = deepClone(newData.ui) as UiState;\n };\n\n (async () => {\n window.addEventListener('beforeunload', () => {\n closedRef.value = true;\n platforma.dispose().then(unwrapResult).catch((err) => {\n error('error in dispose', err);\n });\n });\n\n while (!closedRef.value) {\n try {\n const patches = await platforma.getPatches(uTagRef.value).then(unwrapResult);\n\n debug('patches.length', patches.value.length);\n debug('uTagRef.value', uTagRef.value);\n debug('patches.uTag', patches.uTag);\n debug('patches.author', patches.author);\n debug('data.author', data.author);\n\n uTagRef.value = patches.uTag;\n\n if (patches.value.length === 0) {\n await new Promise((resolve) => setTimeout(resolve, patchPoolingDelay));\n continue;\n }\n\n const isAuthorChanged = data.author?.authorId !== patches.author?.authorId;\n\n // Immutable behavior, apply external changes to the snapshot\n if (isAuthorChanged || data.isExternalSnapshot) {\n debug('got external changes, applying them to the snapshot', patches.value);\n ignoreUpdates(() => {\n snapshot.value = applyPatch(snapshot.value, patches.value, false, false).newDocument;\n updateAppModel({ args: snapshot.value.args, ui: snapshot.value.ui });\n data.isExternalSnapshot = isAuthorChanged;\n });\n } else {\n // Mutable behavior\n debug('outputs changed', patches.value);\n ignoreUpdates(() => {\n snapshot.value = applyPatch(snapshot.value, patches.value).newDocument;\n });\n }\n\n await new Promise((resolve) => setTimeout(resolve, patchPoolingDelay));\n } catch (err) {\n if (hasAbortError(err)) {\n debug('patches loop aborted');\n closedRef.value = true;\n } else {\n error('error in patches loop', err);\n await new Promise((resolve) => setTimeout(resolve, 1000));\n }\n }\n }\n })();\n\n const cloneArgs = () => deepClone(appModel.model.args) as Args;\n const cloneUiState = () => deepClone(appModel.model.ui) as UiState;\n const cloneNavigationState = () => deepClone(snapshot.value.navigationState) as Mutable<NavigationState<Href>>;\n\n const methods = {\n cloneArgs,\n cloneUiState,\n cloneNavigationState,\n createArgsModel<T extends Args = Args>(options: StateModelOptions<Args, T> = {}) {\n return createModel<T, Args>({\n get() {\n if (options.transform) {\n return options.transform(snapshot.value.args as Args);\n }\n\n return snapshot.value.args as T;\n },\n validate: options.validate,\n autoSave: true,\n onSave(newArgs) {\n setArgsQueue.run(() => setBlockArgs(newArgs).then(unwrapResult));\n },\n });\n },\n /**\n * defaultUiState is temporarily here, remove it after implementing initialUiState\n */\n createUiModel<T extends UiState = UiState>(options: StateModelOptions<UiState, T> = {}, defaultUiState: () => UiState) {\n return createModel<T, UiState>({\n get() {\n if (options.transform) {\n return options.transform(snapshot.value.ui as UiState);\n }\n\n return (snapshot.value.ui ?? defaultUiState()) as T;\n },\n validate: options.validate,\n autoSave: true,\n onSave(newData) {\n setUiStateQueue.run(() => setBlockUiState(newData).then(unwrapResult));\n },\n });\n },\n /**\n * Retrieves the unwrapped values of outputs for the given keys.\n *\n * @template K - Keys of the outputs to unwrap.\n * @param keys - List of output names.\n * @throws Error if the outputs contain errors.\n * @returns An object with unwrapped output values.\n */\n unwrapOutputs<K extends keyof Outputs>(...keys: K[]): UnwrapOutputs<Outputs, K> {\n const outputs = snapshot.value.outputs as Partial<Readonly<Outputs>>;\n const entries = keys.map((key) => [key, unwrapOutput(outputs[key])]);\n return Object.fromEntries(entries);\n },\n /**\n * Updates the arguments state by applying a callback.\n *\n * @param cb - Callback to modify the current arguments.\n * @returns A promise resolving after the update is applied.\n */\n updateArgs(cb: (args: Args) => void): Promise<boolean> {\n const newArgs = cloneArgs();\n cb(newArgs);\n debug('updateArgs', newArgs);\n appModel.model.args = newArgs;\n return setArgsQueue.run(() => setBlockArgs(newArgs).then(unwrapResult));\n },\n /**\n * Updates the UI state by applying a callback.\n *\n * @param cb - Callback to modify the current UI state.\n * @returns A promise resolving after the update is applied.\n * @todo Make it mutable since there is already an initial one\n */\n updateUiState(cb: (args: UiState) => UiState): Promise<boolean> {\n const newUiState = cb(cloneUiState());\n debug('updateUiState', newUiState);\n appModel.model.ui = newUiState;\n return setUiStateQueue.run(() => setBlockUiState(newUiState).then(unwrapResult));\n },\n /**\n * Navigates to a specific href by updating the navigation state.\n *\n * @param href - The target href to navigate to.\n * @returns A promise resolving after the navigation state is updated.\n */\n navigateTo(href: Href) {\n const newState = cloneNavigationState();\n newState.href = href;\n return setNavigationStateQueue.run(() => setNavigationState(newState).then(unwrapResult));\n },\n async allSettled() {\n await delay(0);\n return setArgsAndUiStateQueue.allSettled();\n },\n };\n\n const getters = {\n closedRef,\n snapshot,\n queryParams: computed(() => parseQuery<Href>(snapshot.value.navigationState.href as Href)),\n href: computed(() => snapshot.value.navigationState.href),\n hasErrors: computed(() => Object.values(snapshot.value.outputs as Partial<Readonly<Outputs>>).some((v) => !v?.ok)),\n };\n\n const app = reactive(Object.assign(appModel, methods, getters));\n\n if (settings.debug) {\n // @ts-expect-error (to inspect in console in debug mode)\n globalThis.__block_app__ = app;\n }\n\n return app;\n}\n\nexport type BaseAppV2<\n Args = unknown,\n Outputs extends BlockOutputsBase = BlockOutputsBase,\n UiState = unknown,\n Href extends `/${string}` = `/${string}`,\n> = ReturnType<typeof createAppV2<Args, Outputs, UiState, Href>>;\n"],"names":["patchPoolingDelay","createNextAuthorMarker","marker","uniqueId","stringifyForDebug","v","err","createAppV2","state","platforma","settings","debug","msg","rest","r","error","data","nextAuthorMarker","closedRef","ref","uTagRef","debounceSpan","setArgsQueue","UpdateSerializer","setUiStateQueue","setArgsAndUiStateQueue","setNavigationStateQueue","snapshot","setBlockArgs","args","setBlockUiState","ui","setBlockArgsAndUiState","setNavigationState","outputs","computed","entries","k","outputWithStatus","ensureOutputHasStableFlag","outputErrors","vOrErr","MultiError","appModel","reactive","deepClone","ignoreUpdates","watchIgnorable","_newData","newData","unwrapResult","updateAppModel","patches","resolve","isAuthorChanged","_a","_b","applyPatch","hasAbortError","cloneArgs","cloneUiState","cloneNavigationState","methods","options","createModel","newArgs","defaultUiState","keys","key","unwrapOutput","cb","newUiState","href","newState","delay","getters","parseQuery","app"],"mappings":"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"}
1
+ {"version":3,"file":"createAppV2.js","sources":["../../src/internal/createAppV2.ts"],"sourcesContent":["import { deepClone, delay, uniqueId } from '@milaboratories/helpers';\nimport type { Mutable } from '@milaboratories/helpers';\nimport type { NavigationState, BlockOutputsBase, BlockState, PlatformaV2, ValueWithUTag, AuthorMarker, PlatformaExtended } from '@platforma-sdk/model';\nimport { hasAbortError, unwrapResult } from '@platforma-sdk/model';\nimport type { Ref } from 'vue';\nimport { reactive, computed, ref } from 'vue';\nimport type { StateModelOptions, UnwrapOutputs, OutputValues, OutputErrors, AppSettings } from '../types';\nimport { createModel } from '../createModel';\nimport { parseQuery } from '../urls';\nimport { ensureOutputHasStableFlag, MultiError, unwrapOutput } from '../utils';\nimport { applyPatch } from 'fast-json-patch';\nimport { UpdateSerializer } from './UpdateSerializer';\nimport { watchIgnorable } from '@vueuse/core';\n\nexport const patchPoolingDelay = 150;\n\nexport const createNextAuthorMarker = (marker: AuthorMarker | undefined): AuthorMarker => ({\n authorId: marker?.authorId ?? uniqueId(),\n localVersion: (marker?.localVersion ?? 0) + 1,\n});\n\nconst stringifyForDebug = (v: unknown) => {\n try {\n return JSON.stringify(v, null, 2);\n } catch (err) {\n return err instanceof Error ? err.message : String(err);\n }\n};\n\n/**\n * Creates an application instance with reactive state management, outputs, and methods for state updates and navigation.\n *\n * @template Args - The type of arguments used in the application.\n * @template Outputs - The type of block outputs extending `BlockOutputsBase`.\n * @template UiState - The type of the UI state.\n * @template Href - The type of navigation href, defaulting to a string starting with `/`.\n *\n * @param state - Initial state of the application, including args, outputs, UI state, and navigation state.\n * @param platforma - A platform interface for interacting with block states.\n * @param settings - Application settings, such as debug flags.\n *\n * @returns A reactive application object with methods, getters, and state.\n */\nexport function createAppV2<\n Args = unknown,\n Outputs extends BlockOutputsBase = BlockOutputsBase,\n UiState = unknown,\n Href extends `/${string}` = `/${string}`,\n>(\n state: ValueWithUTag<BlockState<Args, Outputs, UiState, Href>>,\n platforma: PlatformaExtended<PlatformaV2<Args, Outputs, UiState, Href>>,\n settings: AppSettings,\n) {\n const debug = (msg: string, ...rest: unknown[]) => {\n if (settings.debug) {\n console.log(`%c>>> %c${msg}`, 'color: orange; font-weight: bold', 'color: orange', ...rest.map((r) => stringifyForDebug(r)));\n }\n };\n\n const error = (msg: string, ...rest: unknown[]) => {\n console.error(`%c>>> %c${msg}`, 'color: red; font-weight: bold', 'color: red', ...rest.map((r) => stringifyForDebug(r)));\n };\n\n const data = {\n isExternalSnapshot: false,\n author: {\n authorId: uniqueId(),\n localVersion: 0,\n },\n };\n\n const nextAuthorMarker = () => {\n data.author = createNextAuthorMarker(data.author);\n debug('nextAuthorMarker', data.author);\n return data.author;\n };\n\n const closedRef = ref(false);\n\n const uTagRef = ref(state.uTag);\n\n const debounceSpan = settings.debounceSpan ?? 200;\n\n const setArgsQueue = new UpdateSerializer({ debounceSpan });\n const setUiStateQueue = new UpdateSerializer({ debounceSpan });\n const setArgsAndUiStateQueue = new UpdateSerializer({ debounceSpan });\n const setNavigationStateQueue = new UpdateSerializer({ debounceSpan });\n\n /**\n * Reactive snapshot of the application state, including args, outputs, UI state, and navigation state.\n */\n const snapshot = ref<{\n args: Args;\n outputs: Partial<Outputs>;\n ui: UiState;\n navigationState: NavigationState<Href>;\n }>(state.value) as Ref<{\n args: Args;\n outputs: Partial<Outputs>;\n ui: UiState;\n navigationState: NavigationState<Href>;\n }>;\n\n const setBlockArgs = async (args: Args) => {\n return platforma.setBlockArgs(args, nextAuthorMarker());\n };\n\n const setBlockUiState = async (ui: UiState) => {\n return platforma.setBlockUiState(ui, nextAuthorMarker());\n };\n\n const setBlockArgsAndUiState = async (args: Args, ui: UiState) => {\n return platforma.setBlockArgsAndUiState(args, ui, nextAuthorMarker());\n };\n\n const setNavigationState = async (state: NavigationState<Href>) => {\n return platforma.setNavigationState(state);\n };\n\n const outputs = computed<OutputValues<Outputs>>(() => {\n const entries = Object.entries(snapshot.value.outputs as Partial<Readonly<Outputs>>)\n .map(([k, outputWithStatus]) => platforma.blockModelInfo.outputs[k].withStatus\n ? [k, ensureOutputHasStableFlag(outputWithStatus)]\n : [k, outputWithStatus.ok && outputWithStatus.value !== undefined ? outputWithStatus.value : undefined],\n );\n return Object.fromEntries(entries);\n });\n\n const outputErrors = computed<OutputErrors<Outputs>>(() => {\n const entries = Object.entries(snapshot.value.outputs as Partial<Readonly<Outputs>>).map(([k, vOrErr]) => [k, vOrErr && vOrErr.ok === false ? new MultiError(vOrErr.errors) : undefined]);\n return Object.fromEntries(entries);\n });\n\n const appModel = reactive({\n error: '',\n model: {\n args: deepClone(snapshot.value.args) as Args,\n ui: deepClone(snapshot.value.ui) as UiState,\n outputs,\n outputErrors,\n },\n }) as {\n error: string;\n model: {\n args: Args;\n ui: UiState;\n outputs: OutputValues<Outputs>;\n outputErrors: OutputErrors<Outputs>;\n };\n };\n\n const { ignoreUpdates } = watchIgnorable(\n () => appModel.model,\n (_newData) => {\n const newData = deepClone(_newData);\n debug('setArgsAndUiStateQueue appModel.model, args', newData.args, 'ui', newData.ui);\n setArgsAndUiStateQueue.run(() => setBlockArgsAndUiState(newData.args, newData.ui).then(unwrapResult));\n },\n { deep: true },\n );\n\n const updateAppModel = (newData: {\n args: Args;\n ui: UiState;\n }) => {\n debug('updateAppModel', newData);\n appModel.model.args = deepClone(newData.args) as Args;\n appModel.model.ui = deepClone(newData.ui) as UiState;\n };\n\n (async () => {\n window.addEventListener('beforeunload', () => {\n closedRef.value = true;\n platforma.dispose().then(unwrapResult).catch((err) => {\n error('error in dispose', err);\n });\n });\n\n while (!closedRef.value) {\n try {\n const patches = await platforma.getPatches(uTagRef.value).then(unwrapResult);\n\n debug('patches.length', patches.value.length);\n debug('uTagRef.value', uTagRef.value);\n debug('patches.uTag', patches.uTag);\n debug('patches.author', patches.author);\n debug('data.author', data.author);\n\n uTagRef.value = patches.uTag;\n\n if (patches.value.length === 0) {\n await new Promise((resolve) => setTimeout(resolve, patchPoolingDelay));\n continue;\n }\n\n const isAuthorChanged = data.author?.authorId !== patches.author?.authorId;\n\n // Immutable behavior, apply external changes to the snapshot\n if (isAuthorChanged || data.isExternalSnapshot) {\n debug('got external changes, applying them to the snapshot', patches.value);\n ignoreUpdates(() => {\n snapshot.value = applyPatch(snapshot.value, patches.value, false, false).newDocument;\n updateAppModel({ args: snapshot.value.args, ui: snapshot.value.ui });\n data.isExternalSnapshot = isAuthorChanged;\n });\n } else {\n // Mutable behavior\n debug('outputs changed', patches.value);\n ignoreUpdates(() => {\n snapshot.value = applyPatch(snapshot.value, patches.value).newDocument;\n });\n }\n\n await new Promise((resolve) => setTimeout(resolve, patchPoolingDelay));\n } catch (err) {\n if (hasAbortError(err)) {\n debug('patches loop aborted');\n closedRef.value = true;\n } else {\n error('error in patches loop', err);\n await new Promise((resolve) => setTimeout(resolve, 1000));\n }\n }\n }\n })();\n\n const cloneArgs = () => deepClone(appModel.model.args) as Args;\n const cloneUiState = () => deepClone(appModel.model.ui) as UiState;\n const cloneNavigationState = () => deepClone(snapshot.value.navigationState) as Mutable<NavigationState<Href>>;\n\n const methods = {\n cloneArgs,\n cloneUiState,\n cloneNavigationState,\n createArgsModel<T extends Args = Args>(options: StateModelOptions<Args, T> = {}) {\n return createModel<T, Args>({\n get() {\n if (options.transform) {\n return options.transform(snapshot.value.args as Args);\n }\n\n return snapshot.value.args as T;\n },\n validate: options.validate,\n autoSave: true,\n onSave(newArgs) {\n setArgsQueue.run(() => setBlockArgs(newArgs).then(unwrapResult));\n },\n });\n },\n /**\n * defaultUiState is temporarily here, remove it after implementing initialUiState\n */\n createUiModel<T extends UiState = UiState>(options: StateModelOptions<UiState, T> = {}, defaultUiState: () => UiState) {\n return createModel<T, UiState>({\n get() {\n if (options.transform) {\n return options.transform(snapshot.value.ui as UiState);\n }\n\n return (snapshot.value.ui ?? defaultUiState()) as T;\n },\n validate: options.validate,\n autoSave: true,\n onSave(newData) {\n setUiStateQueue.run(() => setBlockUiState(newData).then(unwrapResult));\n },\n });\n },\n /**\n * Retrieves the unwrapped values of outputs for the given keys.\n *\n * @template K - Keys of the outputs to unwrap.\n * @param keys - List of output names.\n * @throws Error if the outputs contain errors.\n * @returns An object with unwrapped output values.\n */\n unwrapOutputs<K extends keyof Outputs>(...keys: K[]): UnwrapOutputs<Outputs, K> {\n const outputs = snapshot.value.outputs as Partial<Readonly<Outputs>>;\n const entries = keys.map((key) => [key, unwrapOutput(outputs[key])]);\n return Object.fromEntries(entries);\n },\n /**\n * Updates the arguments state by applying a callback.\n *\n * @param cb - Callback to modify the current arguments.\n * @returns A promise resolving after the update is applied.\n */\n updateArgs(cb: (args: Args) => void): Promise<boolean> {\n const newArgs = cloneArgs();\n cb(newArgs);\n debug('updateArgs', newArgs);\n appModel.model.args = newArgs;\n return setArgsQueue.run(() => setBlockArgs(newArgs).then(unwrapResult));\n },\n /**\n * Updates the UI state by applying a callback.\n *\n * @param cb - Callback to modify the current UI state.\n * @returns A promise resolving after the update is applied.\n * @todo Make it mutable since there is already an initial one\n */\n updateUiState(cb: (args: UiState) => UiState): Promise<boolean> {\n const newUiState = cb(cloneUiState());\n debug('updateUiState', newUiState);\n appModel.model.ui = newUiState;\n return setUiStateQueue.run(() => setBlockUiState(newUiState).then(unwrapResult));\n },\n /**\n * Navigates to a specific href by updating the navigation state.\n *\n * @param href - The target href to navigate to.\n * @returns A promise resolving after the navigation state is updated.\n */\n navigateTo(href: Href) {\n const newState = cloneNavigationState();\n newState.href = href;\n return setNavigationStateQueue.run(() => setNavigationState(newState).then(unwrapResult));\n },\n async allSettled() {\n await delay(0);\n return setArgsAndUiStateQueue.allSettled();\n },\n };\n\n const getters = {\n closedRef,\n snapshot,\n queryParams: computed(() => parseQuery<Href>(snapshot.value.navigationState.href as Href)),\n href: computed(() => snapshot.value.navigationState.href),\n hasErrors: computed(() => Object.values(snapshot.value.outputs as Partial<Readonly<Outputs>>).some((v) => !v?.ok)),\n };\n\n const app = reactive(Object.assign(appModel, methods, getters));\n\n if (settings.debug) {\n // @ts-expect-error (to inspect in console in debug mode)\n globalThis.__block_app__ = app;\n }\n\n return app;\n}\n\nexport type BaseAppV2<\n Args = unknown,\n Outputs extends BlockOutputsBase = BlockOutputsBase,\n UiState = unknown,\n Href extends `/${string}` = `/${string}`,\n> = ReturnType<typeof createAppV2<Args, Outputs, UiState, Href>>;\n"],"names":["patchPoolingDelay","createNextAuthorMarker","marker","uniqueId","stringifyForDebug","v","err","createAppV2","state","platforma","settings","debug","msg","rest","r","error","data","nextAuthorMarker","closedRef","ref","uTagRef","debounceSpan","setArgsQueue","UpdateSerializer","setUiStateQueue","setArgsAndUiStateQueue","setNavigationStateQueue","snapshot","setBlockArgs","args","setBlockUiState","ui","setBlockArgsAndUiState","setNavigationState","outputs","computed","entries","k","outputWithStatus","ensureOutputHasStableFlag","outputErrors","vOrErr","MultiError","appModel","reactive","deepClone","ignoreUpdates","watchIgnorable","_newData","newData","unwrapResult","updateAppModel","patches","resolve","isAuthorChanged","_a","_b","applyPatch","hasAbortError","cloneArgs","cloneUiState","cloneNavigationState","methods","options","createModel","newArgs","defaultUiState","keys","key","unwrapOutput","cb","newUiState","href","newState","delay","getters","parseQuery","app"],"mappings":";;;;;;;;;;;;AAcO,MAAMA,IAAoB,KAEpBC,IAAyB,CAACC,OAAoD;AAAA,EACzF,WAAUA,KAAA,gBAAAA,EAAQ,aAAYC,EAAA;AAAA,EAC9B,gBAAeD,KAAA,gBAAAA,EAAQ,iBAAgB,KAAK;AAC9C,IAEME,IAAoB,CAACC,MAAe;AACxC,MAAI;AACF,WAAO,KAAK,UAAUA,GAAG,MAAM,CAAC;AAAA,EAClC,SAASC,GAAK;AACZ,WAAOA,aAAe,QAAQA,EAAI,UAAU,OAAOA,CAAG;AAAA,EACxD;AACF;AAgBO,SAASC,GAMdC,GACAC,GACAC,GACA;AACA,QAAMC,IAAQ,CAACC,MAAgBC,MAAoB;AACjD,IAAIH,EAAS,SACX,QAAQ,IAAI,WAAWE,CAAG,IAAI,oCAAoC,iBAAiB,GAAGC,EAAK,IAAI,CAACC,MAAMV,EAAkBU,CAAC,CAAC,CAAC;AAAA,EAE/H,GAEMC,IAAQ,CAACH,MAAgBC,MAAoB;AACjD,YAAQ,MAAM,WAAWD,CAAG,IAAI,iCAAiC,cAAc,GAAGC,EAAK,IAAI,CAACC,MAAMV,EAAkBU,CAAC,CAAC,CAAC;AAAA,EACzH,GAEME,IAAO;AAAA,IACX,oBAAoB;AAAA,IACpB,QAAQ;AAAA,MACN,UAAUb,EAAA;AAAA,MACV,cAAc;AAAA,IAAA;AAAA,EAChB,GAGIc,IAAmB,OACvBD,EAAK,SAASf,EAAuBe,EAAK,MAAM,GAChDL,EAAM,oBAAoBK,EAAK,MAAM,GAC9BA,EAAK,SAGRE,IAAYC,EAAI,EAAK,GAErBC,IAAUD,EAAIX,EAAM,IAAI,GAExBa,IAAeX,EAAS,gBAAgB,KAExCY,IAAe,IAAIC,EAAiB,EAAE,cAAAF,GAAc,GACpDG,IAAkB,IAAID,EAAiB,EAAE,cAAAF,GAAc,GACvDI,IAAyB,IAAIF,EAAiB,EAAE,cAAAF,GAAc,GAC9DK,IAA0B,IAAIH,EAAiB,EAAE,cAAAF,GAAc,GAK/DM,IAAWR,EAKdX,EAAM,KAAK,GAORoB,IAAe,OAAOC,MACnBpB,EAAU,aAAaoB,GAAMZ,EAAA,CAAkB,GAGlDa,IAAkB,OAAOC,MACtBtB,EAAU,gBAAgBsB,GAAId,EAAA,CAAkB,GAGnDe,IAAyB,OAAOH,GAAYE,MACzCtB,EAAU,uBAAuBoB,GAAME,GAAId,GAAkB,GAGhEgB,IAAqB,OAAOzB,MACzBC,EAAU,mBAAmBD,CAAK,GAGrC0B,IAAUC,EAAgC,MAAM;AACpD,UAAMC,IAAU,OAAO,QAAQT,EAAS,MAAM,OAAqC,EAChF;AAAA,MAAI,CAAC,CAACU,GAAGC,CAAgB,MAAM7B,EAAU,eAAe,QAAQ4B,CAAC,EAAE,aAChE,CAACA,GAAGE,EAA0BD,CAAgB,CAAC,IAC/C,CAACD,GAAGC,EAAiB,MAAMA,EAAiB,UAAU,SAAYA,EAAiB,QAAQ,MAAS;AAAA,IAAA;AAE1G,WAAO,OAAO,YAAYF,CAAO;AAAA,EACnC,CAAC,GAEKI,IAAeL,EAAgC,MAAM;AACzD,UAAMC,IAAU,OAAO,QAAQT,EAAS,MAAM,OAAqC,EAAE,IAAI,CAAC,CAACU,GAAGI,CAAM,MAAM,CAACJ,GAAGI,KAAUA,EAAO,OAAO,KAAQ,IAAIC,EAAWD,EAAO,MAAM,IAAI,MAAS,CAAC;AACxL,WAAO,OAAO,YAAYL,CAAO;AAAA,EACnC,CAAC,GAEKO,IAAWC,EAAS;AAAA,IACxB,OAAO;AAAA,IACP,OAAO;AAAA,MACL,MAAMC,EAAUlB,EAAS,MAAM,IAAI;AAAA,MACnC,IAAIkB,EAAUlB,EAAS,MAAM,EAAE;AAAA,MAC/B,SAAAO;AAAA,MACA,cAAAM;AAAA,IAAA;AAAA,EACF,CACD,GAUK,EAAE,eAAAM,MAAkBC;AAAA,IACxB,MAAMJ,EAAS;AAAA,IACf,CAACK,MAAa;AACZ,YAAMC,IAAUJ,EAAUG,CAAQ;AAClC,MAAArC,EAAM,+CAA+CsC,EAAQ,MAAM,MAAMA,EAAQ,EAAE,GACnFxB,EAAuB,IAAI,MAAMO,EAAuBiB,EAAQ,MAAMA,EAAQ,EAAE,EAAE,KAAKC,CAAY,CAAC;AAAA,IACtG;AAAA,IACA,EAAE,MAAM,GAAA;AAAA,EAAK,GAGTC,IAAiB,CAACF,MAGlB;AACJ,IAAAtC,EAAM,kBAAkBsC,CAAO,GAC/BN,EAAS,MAAM,OAAOE,EAAUI,EAAQ,IAAI,GAC5CN,EAAS,MAAM,KAAKE,EAAUI,EAAQ,EAAE;AAAA,EAC1C;AAEA,GAAC,YAAY;;AAQX,SAPA,OAAO,iBAAiB,gBAAgB,MAAM;AAC5C,MAAA/B,EAAU,QAAQ,IAClBT,EAAU,UAAU,KAAKyC,CAAY,EAAE,MAAM,CAAC5C,MAAQ;AACpD,QAAAS,EAAM,oBAAoBT,CAAG;AAAA,MAC/B,CAAC;AAAA,IACH,CAAC,GAEM,CAACY,EAAU;AAChB,UAAI;AACF,cAAMkC,IAAU,MAAM3C,EAAU,WAAWW,EAAQ,KAAK,EAAE,KAAK8B,CAAY;AAU3E,YARAvC,EAAM,kBAAkByC,EAAQ,MAAM,MAAM,GAC5CzC,EAAM,iBAAiBS,EAAQ,KAAK,GACpCT,EAAM,gBAAgByC,EAAQ,IAAI,GAClCzC,EAAM,kBAAkByC,EAAQ,MAAM,GACtCzC,EAAM,eAAeK,EAAK,MAAM,GAEhCI,EAAQ,QAAQgC,EAAQ,MAEpBA,EAAQ,MAAM,WAAW,GAAG;AAC9B,gBAAM,IAAI,QAAQ,CAACC,MAAY,WAAWA,GAASrD,CAAiB,CAAC;AACrE;AAAA,QACF;AAEA,cAAMsD,MAAkBC,IAAAvC,EAAK,WAAL,gBAAAuC,EAAa,gBAAaC,IAAAJ,EAAQ,WAAR,gBAAAI,EAAgB;AAGlE,QAAIF,KAAmBtC,EAAK,sBAC1BL,EAAM,uDAAuDyC,EAAQ,KAAK,GAC1EN,EAAc,MAAM;AAClB,UAAAnB,EAAS,QAAQ8B,EAAW9B,EAAS,OAAOyB,EAAQ,OAAO,IAAO,EAAK,EAAE,aACzED,EAAe,EAAE,MAAMxB,EAAS,MAAM,MAAM,IAAIA,EAAS,MAAM,IAAI,GACnEX,EAAK,qBAAqBsC;AAAA,QAC5B,CAAC,MAGD3C,EAAM,mBAAmByC,EAAQ,KAAK,GACtCN,EAAc,MAAM;AAClB,UAAAnB,EAAS,QAAQ8B,EAAW9B,EAAS,OAAOyB,EAAQ,KAAK,EAAE;AAAA,QAC7D,CAAC,IAGH,MAAM,IAAI,QAAQ,CAACC,MAAY,WAAWA,GAASrD,CAAiB,CAAC;AAAA,MACvE,SAASM,GAAK;AACZ,QAAIoD,EAAcpD,CAAG,KACnBK,EAAM,sBAAsB,GAC5BO,EAAU,QAAQ,OAElBH,EAAM,yBAAyBT,CAAG,GAClC,MAAM,IAAI,QAAQ,CAAC+C,MAAY,WAAWA,GAAS,GAAI,CAAC;AAAA,MAE5D;AAAA,EAEJ,GAAA;AAEA,QAAMM,IAAY,MAAMd,EAAUF,EAAS,MAAM,IAAI,GAC/CiB,IAAe,MAAMf,EAAUF,EAAS,MAAM,EAAE,GAChDkB,IAAuB,MAAMhB,EAAUlB,EAAS,MAAM,eAAe,GAErEmC,IAAU;AAAA,IACd,WAAAH;AAAA,IACA,cAAAC;AAAA,IACA,sBAAAC;AAAA,IACA,gBAAuCE,IAAsC,IAAI;AAC/E,aAAOC,EAAqB;AAAA,QAC1B,MAAM;AACJ,iBAAID,EAAQ,YACHA,EAAQ,UAAUpC,EAAS,MAAM,IAAY,IAG/CA,EAAS,MAAM;AAAA,QACxB;AAAA,QACA,UAAUoC,EAAQ;AAAA,QAClB,UAAU;AAAA,QACV,OAAOE,GAAS;AACd,UAAA3C,EAAa,IAAI,MAAMM,EAAaqC,CAAO,EAAE,KAAKf,CAAY,CAAC;AAAA,QACjE;AAAA,MAAA,CACD;AAAA,IACH;AAAA;AAAA;AAAA;AAAA,IAIA,cAA2Ca,IAAyC,CAAA,GAAIG,GAA+B;AACrH,aAAOF,EAAwB;AAAA,QAC7B,MAAM;AACJ,iBAAID,EAAQ,YACHA,EAAQ,UAAUpC,EAAS,MAAM,EAAa,IAG/CA,EAAS,MAAM,MAAMuC,EAAA;AAAA,QAC/B;AAAA,QACA,UAAUH,EAAQ;AAAA,QAClB,UAAU;AAAA,QACV,OAAOd,GAAS;AACd,UAAAzB,EAAgB,IAAI,MAAMM,EAAgBmB,CAAO,EAAE,KAAKC,CAAY,CAAC;AAAA,QACvE;AAAA,MAAA,CACD;AAAA,IACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASA,iBAA0CiB,GAAsC;AAC9E,YAAMjC,IAAUP,EAAS,MAAM,SACzBS,IAAU+B,EAAK,IAAI,CAACC,MAAQ,CAACA,GAAKC,EAAanC,EAAQkC,CAAG,CAAC,CAAC,CAAC;AACnE,aAAO,OAAO,YAAYhC,CAAO;AAAA,IACnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,WAAWkC,GAA4C;AACrD,YAAML,IAAUN,EAAA;AAChB,aAAAW,EAAGL,CAAO,GACVtD,EAAM,cAAcsD,CAAO,GAC3BtB,EAAS,MAAM,OAAOsB,GACf3C,EAAa,IAAI,MAAMM,EAAaqC,CAAO,EAAE,KAAKf,CAAY,CAAC;AAAA,IACxE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,cAAcoB,GAAkD;AAC9D,YAAMC,IAAaD,EAAGV,GAAc;AACpC,aAAAjD,EAAM,iBAAiB4D,CAAU,GACjC5B,EAAS,MAAM,KAAK4B,GACb/C,EAAgB,IAAI,MAAMM,EAAgByC,CAAU,EAAE,KAAKrB,CAAY,CAAC;AAAA,IACjF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,WAAWsB,GAAY;AACrB,YAAMC,IAAWZ,EAAA;AACjB,aAAAY,EAAS,OAAOD,GACT9C,EAAwB,IAAI,MAAMO,EAAmBwC,CAAQ,EAAE,KAAKvB,CAAY,CAAC;AAAA,IAC1F;AAAA,IACA,MAAM,aAAa;AACjB,mBAAMwB,EAAM,CAAC,GACNjD,EAAuB,WAAA;AAAA,IAChC;AAAA,EAAA,GAGIkD,IAAU;AAAA,IACd,WAAAzD;AAAA,IACA,UAAAS;AAAA,IACA,aAAaQ,EAAS,MAAMyC,EAAiBjD,EAAS,MAAM,gBAAgB,IAAY,CAAC;AAAA,IACzF,MAAMQ,EAAS,MAAMR,EAAS,MAAM,gBAAgB,IAAI;AAAA,IACxD,WAAWQ,EAAS,MAAM,OAAO,OAAOR,EAAS,MAAM,OAAqC,EAAE,KAAK,CAACtB,MAAM,EAACA,KAAA,QAAAA,EAAG,GAAE,CAAC;AAAA,EAAA,GAG7GwE,IAAMjC,EAAS,OAAO,OAAOD,GAAUmB,GAASa,CAAO,CAAC;AAE9D,SAAIjE,EAAS,UAEX,WAAW,gBAAgBmE,IAGtBA;AACT;"}
@@ -0,0 +1,43 @@
1
+ import { Mutable } from '@milaboratories/helpers';
2
+ import { NavigationState, BlockOutputsBase, BlockStateV3, PlatformaV3, ValueWithUTag, AuthorMarker } from '@platforma-sdk/model';
3
+ import { OutputValues, OutputErrors, AppSettings } from '../types';
4
+ export declare const patchPoolingDelay = 150;
5
+ export declare const createNextAuthorMarker: (marker: AuthorMarker | undefined) => AuthorMarker;
6
+ /**
7
+ * Creates an application instance with reactive state management, outputs, and methods for state updates and navigation.
8
+ *
9
+ * @template Args - The type of arguments used in the application.
10
+ * @template Outputs - The type of block outputs extending `BlockOutputsBase`.
11
+ * @template Data - The type of the block data.
12
+ * @template Href - The type of navigation href, defaulting to a string starting with `/`.
13
+ *
14
+ * @param state - Initial state of the application, including args, outputs, UI state, and navigation state.
15
+ * @param platforma - A platform interface for interacting with block states.
16
+ * @param settings - Application settings, such as debug flags.
17
+ *
18
+ * @returns A reactive application object with methods, getters, and state.
19
+ */
20
+ export declare function createAppV3<Args = unknown, Outputs extends BlockOutputsBase = BlockOutputsBase, Data = unknown, Href extends `/${string}` = `/${string}`>(state: ValueWithUTag<BlockStateV3<Outputs, Data, Href>>, platforma: PlatformaV3<Args, Outputs, Data, Href>, settings: AppSettings): {
21
+ error: string;
22
+ model: {
23
+ data: import('vue').UnwrapRef<Data>;
24
+ outputs: import('vue').UnwrapRef<OutputValues<Outputs>>;
25
+ outputErrors: import('vue').UnwrapRef<OutputErrors<Outputs>>;
26
+ };
27
+ cloneData: () => Data;
28
+ cloneNavigationState: () => Mutable<NavigationState<Href>>;
29
+ updateData: (cb: (data: Data) => Data) => Promise<boolean>;
30
+ navigateTo: (href: Href) => Promise<boolean>;
31
+ allSettled: () => Promise<void>;
32
+ closedRef: boolean;
33
+ snapshot: {
34
+ outputs: Partial<Outputs>;
35
+ blockStorage: unknown;
36
+ navigationState: NavigationState<Href>;
37
+ };
38
+ queryParams: import('../types').ParseQuery<Href>;
39
+ href: Href;
40
+ hasErrors: boolean;
41
+ };
42
+ export type BaseAppV3<Args = unknown, Outputs extends BlockOutputsBase = BlockOutputsBase, Data = unknown, Href extends `/${string}` = `/${string}`> = ReturnType<typeof createAppV3<Args, Outputs, Data, Href>>;
43
+ //# sourceMappingURL=createAppV3.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createAppV3.d.ts","sourceRoot":"","sources":["../../src/internal/createAppV3.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,aAAa,EACb,YAAY,EACb,MAAM,sBAAsB,CAAC;AAI9B,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAOxE,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAErC,eAAO,MAAM,sBAAsB,WAAY,YAAY,GAAG,SAAS,KAAG,YAGxE,CAAC;AAUH;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CACzB,IAAI,GAAG,OAAO,EACd,OAAO,SAAS,gBAAgB,GAAG,gBAAgB,EACnD,IAAI,GAAG,OAAO,EACd,IAAI,SAAS,IAAI,MAAM,EAAE,GAAG,IAAI,MAAM,EAAE,EAExC,KAAK,EAAE,aAAa,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EACvD,SAAS,EAAE,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EACjD,QAAQ,EAAE,WAAW;WA0EZ,MAAM;;;;;;qBAiF2C,IAAI;gCACkB,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;qBAY7F,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,KAAG,OAAO,CAAC,OAAO,CAAC;uBAYrC,IAAI;;;;iBA1IZ,OAAO,CAAC,OAAO,CAAC;sBACX,OAAO;yBACJ,eAAe,CAAC,IAAI,CAAC;;;;;EAmKzC;AAED,MAAM,MAAM,SAAS,CACnB,IAAI,GAAG,OAAO,EACd,OAAO,SAAS,gBAAgB,GAAG,gBAAgB,EACnD,IAAI,GAAG,OAAO,EACd,IAAI,SAAS,IAAI,MAAM,EAAE,GAAG,IAAI,MAAM,EAAE,IACtC,UAAU,CAAC,OAAO,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC"}