@platforma-sdk/ui-vue 1.58.19 → 1.58.22

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.
Files changed (55) hide show
  1. package/.turbo/turbo-build.log +22 -21
  2. package/.turbo/turbo-formatter$colon$check.log +2 -2
  3. package/.turbo/turbo-linter$colon$check.log +2 -2
  4. package/.turbo/turbo-types$colon$check.log +1 -1
  5. package/CHANGELOG.md +9 -0
  6. package/dist/AgGridVue/createAgGridColDef.d.ts.map +1 -1
  7. package/dist/AgGridVue/createAgGridColDef.js.map +1 -1
  8. package/dist/AgGridVue/useAgGridOptions.d.ts.map +1 -1
  9. package/dist/AgGridVue/useAgGridOptions.js +11 -11
  10. package/dist/AgGridVue/useAgGridOptions.js.map +1 -1
  11. package/dist/components/PlAgDataTable/PlAgDataTableV2.js.map +1 -1
  12. package/dist/components/PlAgDataTable/PlAgDataTableV2.style.js.map +1 -1
  13. package/dist/components/PlAgDataTable/PlAgDataTableV2.vue.d.ts.map +1 -1
  14. package/dist/components/PlAgDataTable/PlAgDataTableV2.vue2.js +25 -25
  15. package/dist/components/PlAgDataTable/PlAgDataTableV2.vue2.js.map +1 -1
  16. package/dist/{aggrid.d.ts → components/PlAgDataTable/compositions/useTheme.d.ts} +1 -2
  17. package/dist/components/PlAgDataTable/compositions/useTheme.d.ts.map +1 -0
  18. package/dist/{aggrid.js → components/PlAgDataTable/compositions/useTheme.js} +9 -16
  19. package/dist/components/PlAgDataTable/compositions/useTheme.js.map +1 -0
  20. package/dist/components/PlAgDataTable/index.d.ts.map +1 -1
  21. package/dist/components/PlAgDataTable/index.js +5 -0
  22. package/dist/components/PlAgDataTable/index.js.map +1 -0
  23. package/dist/components/PlTableFilters/PlTableFiltersV2.js.map +1 -1
  24. package/dist/components/PlTableFilters/PlTableFiltersV2.style.js.map +1 -1
  25. package/dist/components/PlTableFilters/PlTableFiltersV2.vue.d.ts.map +1 -1
  26. package/dist/components/PlTableFilters/PlTableFiltersV2.vue2.js.map +1 -1
  27. package/dist/composition/AgGrid/index.d.ts +2 -0
  28. package/dist/composition/AgGrid/index.d.ts.map +1 -0
  29. package/dist/composition/AgGrid/index.js +10 -0
  30. package/dist/composition/AgGrid/index.js.map +1 -0
  31. package/dist/defineApp.d.ts +5 -1
  32. package/dist/defineApp.d.ts.map +1 -1
  33. package/dist/defineApp.js +44 -44
  34. package/dist/defineApp.js.map +1 -1
  35. package/dist/index.js +31 -31
  36. package/dist/internal/createAppV1.d.ts.map +1 -1
  37. package/dist/internal/createAppV1.js.map +1 -1
  38. package/dist/lib.d.ts +1 -1
  39. package/dist/lib.d.ts.map +1 -1
  40. package/dist/lib.js +1 -1
  41. package/package.json +4 -4
  42. package/src/AgGridVue/createAgGridColDef.ts +0 -1
  43. package/src/AgGridVue/useAgGridOptions.ts +2 -2
  44. package/src/components/PlAgDataTable/PlAgDataTableV2.vue +1 -1
  45. package/src/{aggrid.ts → components/PlAgDataTable/compositions/useTheme.ts} +3 -24
  46. package/src/components/PlAgDataTable/index.ts +4 -0
  47. package/src/components/PlTableFilters/PlTableFiltersV2.vue +1 -0
  48. package/src/composition/AgGrid/index.ts +13 -0
  49. package/src/defineApp.ts +13 -7
  50. package/src/internal/createAppV1.ts +21 -26
  51. package/src/internal/createAppV2.test.ts +3 -0
  52. package/src/internal/createAppV3.test.ts +4 -0
  53. package/src/lib.ts +1 -1
  54. package/dist/aggrid.d.ts.map +0 -1
  55. package/dist/aggrid.js.map +0 -1
package/dist/defineApp.js CHANGED
@@ -3,90 +3,90 @@ import "./lib/util/helpers/dist/index.js";
3
3
  import { createAppV1 as t } from "./internal/createAppV1.js";
4
4
  import { createAppV2 as n } from "./internal/createAppV2.js";
5
5
  import { createAppV3 as r } from "./internal/createAppV3.js";
6
- import { activateAgGrid as i } from "./aggrid.js";
7
- import { inject as a, markRaw as o, reactive as s } from "vue";
8
- import { getPlatformaApiVersion as c, unwrapResult as l } from "@platforma-sdk/model";
9
- var u = Symbol("sdk-vue");
10
- const d = Symbol("plugin-data-access");
6
+ import { inject as i, markRaw as a, reactive as o } from "vue";
7
+ import { getPlatformaApiVersion as s, unwrapResult as c } from "@platforma-sdk/model";
8
+ var l = Symbol("sdk-vue");
9
+ const u = Symbol("plugin-data-access");
10
+ function d() {
11
+ return i(l);
12
+ }
11
13
  function f() {
12
- return a(u);
14
+ return d().featureFlags;
13
15
  }
14
- function p(r, a, d = {}) {
15
- let f;
16
- i();
17
- let p = r.apiVersion ?? 1, m = c(), h = async () => {
18
- if (m !== p) throw Error(`Block requested API version ${m} but runtime API version is ${p}.
16
+ function p(r, i, u = {}) {
17
+ let d, f = r.apiVersion ?? 1, p = s(), m = async () => {
18
+ if (p !== f) throw Error(`Block requested API version ${p} but runtime API version is ${f}.
19
19
  Please update the desktop app to use the latest API version.`);
20
20
  r.apiVersion === void 0 || r.apiVersion === 1 ? await r.loadBlockState().then((e) => {
21
- g.loaded = !0;
22
- let n = t(e, r, d), i = a(n), s = Object.fromEntries(Object.entries(i.routes).map(([e, t]) => [e, o(typeof t == "function" ? t() : t)]));
23
- f = Object.assign(n, {
24
- ...i,
21
+ h.loaded = !0;
22
+ let n = t(e, r, u), o = i(n), s = Object.fromEntries(Object.entries(o.routes).map(([e, t]) => [e, a(typeof t == "function" ? t() : t)]));
23
+ d = Object.assign(n, {
24
+ ...o,
25
25
  getRoute(e) {
26
26
  return s[e];
27
27
  }
28
28
  });
29
29
  }) : r.apiVersion === 2 && await r.loadBlockState().then((e) => {
30
- let t = l(e);
31
- g.loaded = !0;
32
- let i = n(t, r, d), s = a(i), c = Object.fromEntries(Object.entries(s.routes).map(([e, t]) => [e, o(typeof t == "function" ? t() : t)]));
33
- f = Object.assign(i, {
30
+ let t = c(e);
31
+ h.loaded = !0;
32
+ let o = n(t, r, u), s = i(o), l = Object.fromEntries(Object.entries(s.routes).map(([e, t]) => [e, a(typeof t == "function" ? t() : t)]));
33
+ d = Object.assign(o, {
34
34
  ...s,
35
35
  getRoute(e) {
36
- return c[e];
36
+ return l[e];
37
37
  }
38
38
  });
39
39
  });
40
- }, g = s({
40
+ }, h = o({
41
41
  apiVersion: r.apiVersion ?? 1,
42
+ featureFlags: r.blockModelInfo.featureFlags,
42
43
  loaded: !1,
43
44
  error: void 0,
44
45
  useApp() {
45
- return e(f, "App is not loaded");
46
+ return e(d, "App is not loaded");
46
47
  },
47
48
  install(e) {
48
- e.provide(u, this), h().catch((e) => {
49
- console.error("load initial state error", e), g.error = e;
49
+ e.provide(l, this), m().catch((e) => {
50
+ console.error("load initial state error", e), h.error = e;
50
51
  });
51
52
  }
52
53
  });
53
- return g;
54
+ return h;
54
55
  }
55
- function m(t, n, a = {}) {
56
- let f, p;
57
- i();
58
- let m = c(), h = async () => {
59
- if (m !== 3) throw Error(`Block requested API version ${m} but runtime API version is 3.
56
+ function m(t, n, i = {}) {
57
+ let d, f, p = s(), m = async () => {
58
+ if (p !== 3) throw Error(`Block requested API version ${p} but runtime API version is 3.
60
59
  Please update the desktop app to use the latest API version.`);
61
60
  await t.loadBlockState().then((e) => {
62
- let i = l(e);
63
- g.loaded = !0;
64
- let { app: s, pluginAccess: c } = r(i, t, a);
65
- if (!p) throw Error("Plugin data injection failed: Vue app instance not captured during install()");
66
- p.provide(d, c);
67
- let u = n(s), m = Object.fromEntries(Object.entries(u.routes).map(([e, t]) => [e, o(typeof t == "function" ? t() : t)]));
68
- f = Object.assign(s, {
69
- ...u,
61
+ let o = c(e);
62
+ h.loaded = !0;
63
+ let { app: s, pluginAccess: l } = r(o, t, i);
64
+ if (!f) throw Error("Plugin data injection failed: Vue app instance not captured during install()");
65
+ f.provide(u, l);
66
+ let p = n(s), m = Object.fromEntries(Object.entries(p.routes).map(([e, t]) => [e, a(typeof t == "function" ? t() : t)]));
67
+ d = Object.assign(s, {
68
+ ...p,
70
69
  getRoute(e) {
71
70
  return m[e];
72
71
  }
73
72
  });
74
73
  });
75
- }, g = s({
74
+ }, h = o({
76
75
  apiVersion: 3,
76
+ featureFlags: t.blockModelInfo.featureFlags,
77
77
  loaded: !1,
78
78
  error: void 0,
79
79
  useApp() {
80
- return e(f, "App is not loaded");
80
+ return e(d, "App is not loaded");
81
81
  },
82
82
  install(e) {
83
- p = e, e.provide(u, this), h().catch((e) => {
84
- console.error("load initial state error", e), g.error = e;
83
+ f = e, e.provide(l, this), m().catch((e) => {
84
+ console.error("load initial state error", e), h.error = e;
85
85
  });
86
86
  }
87
87
  });
88
- return g;
88
+ return h;
89
89
  }
90
- export { p as defineApp, m as defineAppV3, d as pluginDataKey, f as useSdkPlugin };
90
+ export { p as defineApp, m as defineAppV3, u as pluginDataKey, f as useFeatureFlags, d as useSdkPlugin };
91
91
 
92
92
  //# sourceMappingURL=defineApp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"defineApp.js","names":[],"sources":["../src/defineApp.ts"],"sourcesContent":["import { notEmpty } from \"@milaboratories/helpers\";\nimport type {\n PlatformaExtended,\n PlatformaV3,\n PlatformaV1,\n PlatformaV2,\n} from \"@platforma-sdk/model\";\nimport {\n getPlatformaApiVersion,\n unwrapResult,\n type BlockOutputsBase,\n type BlockModelInfo,\n} from \"@platforma-sdk/model\";\nimport type { App as VueApp, 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\");\nexport const pluginDataKey = Symbol(\"plugin-data-access\");\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 UiState = unknown,\n Href extends `/${string}` = `/${string}`,\n Extend extends ExtendSettings<Href> = ExtendSettings<Href>,\n>(\n platforma: PlatformaExtended<\n PlatformaV1<Args, Outputs, UiState, Href> | PlatformaV2<Args, Outputs, UiState, Href>\n >,\n\n //\n extendApp: (app: any) => Extend,\n settings: AppSettings = {},\n):\n | SdkPluginV1<Args, Outputs, UiState, Href, Extend>\n | SdkPluginV2<Args, Outputs, UiState, Href, Extend> {\n let app:\n | AppV1<Args, Outputs, UiState, Href, Extend>\n | AppV2<Args, Outputs, UiState, Href, Extend>\n | undefined = undefined;\n\n activateAgGrid();\n\n const runtimeApiVersion = platforma.apiVersion ?? 1; // undefined means 1 (backward compatibility)\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.loadBlockState().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.loadBlockState().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 apiVersion: platforma.apiVersion ?? 1,\n loaded: false,\n error: undefined as unknown,\n useApp<PageHref extends Href = Href>() {\n return notEmpty(app, \"App is not loaded\") as\n | AppV1<Args, Outputs, UiState, PageHref, Extend>\n | AppV2<Args, Outputs, UiState, PageHref, Extend>;\n },\n install(app: VueApp) {\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\n | SdkPluginV1<Args, Outputs, UiState, Href, Extend>\n | SdkPluginV2<Args, Outputs, UiState, Href, Extend>;\n}\n\nexport function defineAppV3<\n Data = unknown,\n Args = unknown,\n Outputs extends BlockOutputsBase = BlockOutputsBase,\n Href extends `/${string}` = `/${string}`,\n Plugins extends Record<string, unknown> = Record<string, unknown>,\n Extend extends ExtendSettings<Href> = ExtendSettings<Href>,\n>(\n platforma: PlatformaV3<Data, Args, Outputs, Href, Plugins> & {\n blockModelInfo: BlockModelInfo;\n },\n extendApp: (app: BaseAppV3<Data, Args, Outputs, Href, Plugins>) => Extend,\n settings: AppSettings = {},\n): SdkPluginV3<Data, Args, Outputs, Href, Plugins, Extend> {\n let app: AppV3<Data, Args, Outputs, Href, Plugins, Extend> | undefined = undefined;\n\n // Captured during install() so V3 can provide plugin data access after async load\n let vueAppInstance: VueApp | undefined;\n\n activateAgGrid();\n\n const runtimeApiVersion = 3;\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 await platforma.loadBlockState().then((stateOrError) => {\n const state = unwrapResult(stateOrError);\n plugin.loaded = true;\n const { app: baseApp, pluginAccess } = createAppV3<Data, Args, Outputs, Href, Plugins>(\n state,\n platforma,\n settings,\n );\n\n if (!vueAppInstance) {\n throw new Error(\n \"Plugin data injection failed: Vue app instance not captured during install()\",\n );\n }\n vueAppInstance.provide(pluginDataKey, pluginAccess);\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<Data, Args, Outputs, Href, Plugins, Extend>);\n });\n };\n\n const plugin = reactive({\n apiVersion: 3,\n loaded: false,\n error: undefined as unknown,\n useApp<PageHref extends Href = Href>() {\n return notEmpty(app, \"App is not loaded\") as AppV3<\n Data,\n Args,\n Outputs,\n PageHref,\n Plugins,\n Extend\n >;\n },\n install(app: VueApp) {\n vueAppInstance = app;\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 SdkPluginV3<Data, Args, Outputs, Href, Plugins, 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> &\n 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> &\n Reactive<Omit<Local, \"routes\">> & { getRoute(href: Href): Component | undefined };\n\nexport type AppV3<\n Data = unknown,\n Args = unknown,\n Outputs extends BlockOutputsBase = NonNullable<unknown>,\n Href extends `/${string}` = `/${string}`,\n Plugins extends Record<string, unknown> = Record<string, unknown>,\n Local extends ExtendSettings<Href> = ExtendSettings<Href>,\n> = BaseAppV3<Data, Args, Outputs, Href, Plugins> &\n Reactive<Omit<Local, \"routes\">> & { getRoute(href: Href): Component | undefined };\n\n// ---------------------------------------------------------------------------\n// SdkPlugin types\n// ---------------------------------------------------------------------------\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: VueApp): 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: VueApp): void;\n};\n\nexport type SdkPluginV3<\n Data = unknown,\n Args = unknown,\n Outputs extends BlockOutputsBase = BlockOutputsBase,\n Href extends `/${string}` = `/${string}`,\n Plugins extends Record<string, unknown> = Record<string, unknown>,\n Local extends ExtendSettings<Href> = ExtendSettings<Href>,\n> = {\n apiVersion: 3;\n loaded: boolean;\n error: unknown;\n useApp<PageHref extends Href = Href>(): AppV3<Data, Args, Outputs, PageHref, Plugins, Local>;\n install(app: VueApp): void;\n};\n\nexport type SdkPlugin = SdkPluginV1 | SdkPluginV2 | SdkPluginV3;\n"],"mappings":"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"}
1
+ {"version":3,"file":"defineApp.js","names":[],"sources":["../src/defineApp.ts"],"sourcesContent":["import { notEmpty } from \"@milaboratories/helpers\";\nimport type {\n PlatformaExtended,\n PlatformaV3,\n PlatformaV1,\n PlatformaV2,\n BlockCodeKnownFeatureFlags,\n} from \"@platforma-sdk/model\";\nimport {\n getPlatformaApiVersion,\n unwrapResult,\n type BlockOutputsBase,\n type BlockModelInfo,\n} from \"@platforma-sdk/model\";\nimport type { App as VueApp, 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\";\n\nconst pluginKey = Symbol(\"sdk-vue\");\nexport const pluginDataKey = Symbol(\"plugin-data-access\");\n\nexport function useSdkPlugin(): SdkPlugin {\n return inject(pluginKey)!;\n}\n\nexport function useFeatureFlags() {\n const sdk = useSdkPlugin();\n return sdk.featureFlags;\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 UiState = unknown,\n Href extends `/${string}` = `/${string}`,\n Extend extends ExtendSettings<Href> = ExtendSettings<Href>,\n>(\n platforma: PlatformaExtended<\n PlatformaV1<Args, Outputs, UiState, Href> | PlatformaV2<Args, Outputs, UiState, Href>\n >,\n\n //\n extendApp: (app: any) => Extend,\n settings: AppSettings = {},\n):\n | SdkPluginV1<Args, Outputs, UiState, Href, Extend>\n | SdkPluginV2<Args, Outputs, UiState, Href, Extend> {\n let app:\n | AppV1<Args, Outputs, UiState, Href, Extend>\n | AppV2<Args, Outputs, UiState, Href, Extend>\n | undefined = undefined;\n\n const runtimeApiVersion = platforma.apiVersion ?? 1; // undefined means 1 (backward compatibility)\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.loadBlockState().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.loadBlockState().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 apiVersion: platforma.apiVersion ?? 1,\n featureFlags: platforma.blockModelInfo.featureFlags,\n loaded: false,\n error: undefined as unknown,\n useApp<PageHref extends Href = Href>() {\n return notEmpty(app, \"App is not loaded\") as\n | AppV1<Args, Outputs, UiState, PageHref, Extend>\n | AppV2<Args, Outputs, UiState, PageHref, Extend>;\n },\n install(app: VueApp) {\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\n | SdkPluginV1<Args, Outputs, UiState, Href, Extend>\n | SdkPluginV2<Args, Outputs, UiState, Href, Extend>;\n}\n\nexport function defineAppV3<\n Data = unknown,\n Args = unknown,\n Outputs extends BlockOutputsBase = BlockOutputsBase,\n Href extends `/${string}` = `/${string}`,\n Plugins extends Record<string, unknown> = Record<string, unknown>,\n Extend extends ExtendSettings<Href> = ExtendSettings<Href>,\n>(\n platforma: PlatformaV3<Data, Args, Outputs, Href, Plugins> & {\n blockModelInfo: BlockModelInfo;\n },\n extendApp: (app: BaseAppV3<Data, Args, Outputs, Href, Plugins>) => Extend,\n settings: AppSettings = {},\n): SdkPluginV3<Data, Args, Outputs, Href, Plugins, Extend> {\n let app: AppV3<Data, Args, Outputs, Href, Plugins, Extend> | undefined = undefined;\n\n // Captured during install() so V3 can provide plugin data access after async load\n let vueAppInstance: VueApp | undefined;\n\n const runtimeApiVersion = 3;\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 await platforma.loadBlockState().then((stateOrError) => {\n const state = unwrapResult(stateOrError);\n plugin.loaded = true;\n const { app: baseApp, pluginAccess } = createAppV3<Data, Args, Outputs, Href, Plugins>(\n state,\n platforma,\n settings,\n );\n\n if (!vueAppInstance) {\n throw new Error(\n \"Plugin data injection failed: Vue app instance not captured during install()\",\n );\n }\n vueAppInstance.provide(pluginDataKey, pluginAccess);\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 AppV3<Data, Args, Outputs, Href, Plugins, Extend>);\n });\n };\n\n const plugin = reactive({\n apiVersion: 3,\n featureFlags: platforma.blockModelInfo.featureFlags,\n loaded: false,\n error: undefined,\n useApp<PageHref extends Href = Href>() {\n return notEmpty(app, \"App is not loaded\") as AppV3<\n Data,\n Args,\n Outputs,\n PageHref,\n Plugins,\n Extend\n >;\n },\n install(app: VueApp) {\n vueAppInstance = app;\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 SdkPluginV3<Data, Args, Outputs, Href, Plugins, 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> &\n 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> &\n Reactive<Omit<Local, \"routes\">> & { getRoute(href: Href): Component | undefined };\n\nexport type AppV3<\n Data = unknown,\n Args = unknown,\n Outputs extends BlockOutputsBase = NonNullable<unknown>,\n Href extends `/${string}` = `/${string}`,\n Plugins extends Record<string, unknown> = Record<string, unknown>,\n Local extends ExtendSettings<Href> = ExtendSettings<Href>,\n> = BaseAppV3<Data, Args, Outputs, Href, Plugins> &\n Reactive<Omit<Local, \"routes\">> & { getRoute(href: Href): Component | undefined };\n\n// ---------------------------------------------------------------------------\n// SdkPlugin types\n// ---------------------------------------------------------------------------\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 featureFlags: BlockCodeKnownFeatureFlags;\n loaded: boolean;\n error: unknown;\n useApp<PageHref extends Href = Href>(): AppV1<Args, Outputs, UiState, PageHref, Local>;\n install(app: VueApp): 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 featureFlags: BlockCodeKnownFeatureFlags;\n loaded: boolean;\n error: unknown;\n useApp<PageHref extends Href = Href>(): AppV2<Args, Outputs, UiState, PageHref, Local>;\n install(app: VueApp): void;\n};\n\nexport type SdkPluginV3<\n Data = unknown,\n Args = unknown,\n Outputs extends BlockOutputsBase = BlockOutputsBase,\n Href extends `/${string}` = `/${string}`,\n Plugins extends Record<string, unknown> = Record<string, unknown>,\n Local extends ExtendSettings<Href> = ExtendSettings<Href>,\n> = {\n apiVersion: 3;\n featureFlags: BlockCodeKnownFeatureFlags;\n loaded: boolean;\n error: unknown;\n useApp<PageHref extends Href = Href>(): AppV3<Data, Args, Outputs, PageHref, Plugins, Local>;\n install(app: VueApp): void;\n};\n\nexport type SdkPlugin = SdkPluginV1 | SdkPluginV2 | SdkPluginV3;\n"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,41 +1,41 @@
1
1
  import "./_virtual/_rolldown/runtime.js";
2
2
  import { MultiError as e, UnresolvedError as t, ensureError as n, ensureOutputHasStableFlag as r, formatZodError as i, identity as a, isDefined as o, isZodError as s, unwrapOutput as c, wrapOptionalResult as l } from "./utils.js";
3
3
  import { createModel as u } from "./createModel.js";
4
- import { AgGridTheme as d, activateAgGrid as f } from "./aggrid.js";
5
- import { defineApp as p, defineAppV3 as m, pluginDataKey as h, useSdkPlugin as g } from "./defineApp.js";
6
- import _ from "./components/BlockLayout.js";
7
- import v from "./components/PlAgCsvExporter/PlAgCsvExporter.js";
8
- import { PlAgDataTableRowNumberColId as y, autoSizeRowNumberColumn as b, makeRowNumberColDef as x } from "./components/PlAgDataTable/sources/row-number.js";
9
- import S from "./components/PlAgGridColumnManager/PlAgGridColumnManager.js";
10
- import C from "./components/PlAdvancedFilter/PlAdvancedFilter.js";
11
- import { PlAdvancedFilterSupportedFilters as w } from "./components/PlAdvancedFilter/index.js";
12
- import T from "./components/PlTableFilters/PlTableFiltersV2.js";
13
- import { DeferredCircular as ee, ensureNodeVisible as E } from "./components/PlAgDataTable/sources/focus-row.js";
14
- import D from "./components/PlAgColumnHeader/PlAgColumnHeader.js";
15
- import O from "./components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.js";
16
- import { defaultMainMenuItems as k } from "./components/PlAgDataTable/sources/menu-items.js";
17
- import A from "./components/PlAgDataTable/PlAgOverlayLoading.js";
18
- import j from "./components/PlAgDataTable/PlAgOverlayNoRows.js";
19
- import M from "./components/PlAgDataTable/PlAgDataTableV2.js";
20
- import { usePlDataTableSettingsV2 as N } from "./components/PlAgDataTable/types.js";
21
- import P from "./components/PlAgCellProgress/PlAgCellProgress.js";
22
- import { createAgGridColDef as F } from "./AgGridVue/createAgGridColDef.js";
23
- import I from "./components/PlAgCellFile/PlAgCellFile.js";
24
- import L from "./components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.js";
25
- import R from "./components/PlAgChartHistogramCell/PlAgChartHistogramCell.js";
26
- import z from "./components/PlAgCellStatusTag/PlAgCellStatusTag.js";
27
- import { useAgGridOptions as B } from "./AgGridVue/useAgGridOptions.js";
28
- import { deselectAll as V, getSelectedRowsCount as H, getTotalRowsCount as U, isSelectionEnabled as W, selectAll as G } from "./AgGridVue/selection.js";
29
- import K from "./components/PlAnnotations/components/PlAnnotations.js";
30
- import q from "./components/PlAnnotations/components/PlAnnotationsModal.js";
31
- import J from "./components/PlBtnExportArchive/PlBtnExportArchive.js";
32
- import { usePlugin as Y } from "./usePlugin.js";
33
- import { defineStore as X } from "./defineStore.js";
4
+ import { defineApp as d, defineAppV3 as f, pluginDataKey as p, useFeatureFlags as m, useSdkPlugin as h } from "./defineApp.js";
5
+ import g from "./components/BlockLayout.js";
6
+ import _ from "./components/PlAgCsvExporter/PlAgCsvExporter.js";
7
+ import { PlAgDataTableRowNumberColId as v, autoSizeRowNumberColumn as y, makeRowNumberColDef as b } from "./components/PlAgDataTable/sources/row-number.js";
8
+ import x from "./components/PlAgGridColumnManager/PlAgGridColumnManager.js";
9
+ import S from "./components/PlAdvancedFilter/PlAdvancedFilter.js";
10
+ import { PlAdvancedFilterSupportedFilters as C } from "./components/PlAdvancedFilter/index.js";
11
+ import w from "./components/PlTableFilters/PlTableFiltersV2.js";
12
+ import { DeferredCircular as T, ensureNodeVisible as ee } from "./components/PlAgDataTable/sources/focus-row.js";
13
+ import E from "./components/PlAgColumnHeader/PlAgColumnHeader.js";
14
+ import D from "./components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.js";
15
+ import { defaultMainMenuItems as O } from "./components/PlAgDataTable/sources/menu-items.js";
16
+ import k from "./components/PlAgDataTable/PlAgOverlayLoading.js";
17
+ import A from "./components/PlAgDataTable/PlAgOverlayNoRows.js";
18
+ import j from "./components/PlAgDataTable/PlAgDataTableV2.js";
19
+ import { usePlDataTableSettingsV2 as M } from "./components/PlAgDataTable/types.js";
20
+ import N from "./components/PlAgCellProgress/PlAgCellProgress.js";
21
+ import { createAgGridColDef as P } from "./AgGridVue/createAgGridColDef.js";
22
+ import F from "./components/PlAgCellFile/PlAgCellFile.js";
23
+ import I from "./components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.js";
24
+ import L from "./components/PlAgChartHistogramCell/PlAgChartHistogramCell.js";
25
+ import R from "./components/PlAgCellStatusTag/PlAgCellStatusTag.js";
26
+ import { useAgGridOptions as z } from "./AgGridVue/useAgGridOptions.js";
27
+ import { deselectAll as B, getSelectedRowsCount as V, getTotalRowsCount as H, isSelectionEnabled as U, selectAll as W } from "./AgGridVue/selection.js";
28
+ import G from "./components/PlAnnotations/components/PlAnnotations.js";
29
+ import K from "./components/PlAnnotations/components/PlAnnotationsModal.js";
30
+ import q from "./components/PlBtnExportArchive/PlBtnExportArchive.js";
31
+ import { usePlugin as J } from "./usePlugin.js";
32
+ import { defineStore as Y } from "./defineStore.js";
33
+ import { activateAgGrid as X } from "./composition/AgGrid/index.js";
34
34
  import { objectHash as Z } from "./objectHash.js";
35
35
  import { computedResult as Q } from "./computedResult.js";
36
36
  import { ReactiveFileContent as $ } from "./composition/fileContent.js";
37
37
  import "./lib.js";
38
38
  export * from "@milaboratories/uikit";
39
- export { d as AgGridTheme, _ as BlockLayout, ee as DeferredCircular, e as MultiError, C as PlAdvancedFilterComponent, w as PlAdvancedFilterSupportedFilters, I as PlAgCellFile, P as PlAgCellProgress, z as PlAgCellStatusTag, R as PlAgChartHistogramCell, L as PlAgChartStackedBarCell, D as PlAgColumnHeader, v as PlAgCsvExporter, y as PlAgDataTableRowNumberColId, M as PlAgDataTableV2, S as PlAgGridColumnManager, A as PlAgOverlayLoading, j as PlAgOverlayNoRows, O as PlAgTextAndButtonCell, K as PlAnnotations, q as PlAnnotationsModal, J as PlBtnExportArchive, M as PlDataTableV2, T as PlTableFiltersV2, $ as ReactiveFileContent, t as UnresolvedError, f as activateAgGrid, b as autoSizeRowNumberColumn, Q as computedResult, F as createAgGridColDef, u as createModel, k as defaultMainMenuItems, p as defineApp, m as defineAppV3, X as defineStore, V as deselectAll, n as ensureError, E as ensureNodeVisible, r as ensureOutputHasStableFlag, i as formatZodError, H as getSelectedRowsCount, U as getTotalRowsCount, a as identity, o as isDefined, W as isSelectionEnabled, s as isZodError, x as makeRowNumberColDef, Z as objectHash, h as pluginDataKey, G as selectAll, c as unwrapOutput, B as useAgGridOptions, N as usePlDataTableSettingsV2, Y as usePlugin, g as useSdkPlugin, l as wrapOptionalResult };
39
+ export { g as BlockLayout, T as DeferredCircular, e as MultiError, S as PlAdvancedFilterComponent, C as PlAdvancedFilterSupportedFilters, F as PlAgCellFile, N as PlAgCellProgress, R as PlAgCellStatusTag, L as PlAgChartHistogramCell, I as PlAgChartStackedBarCell, E as PlAgColumnHeader, _ as PlAgCsvExporter, v as PlAgDataTableRowNumberColId, j as PlAgDataTableV2, x as PlAgGridColumnManager, k as PlAgOverlayLoading, A as PlAgOverlayNoRows, D as PlAgTextAndButtonCell, G as PlAnnotations, K as PlAnnotationsModal, q as PlBtnExportArchive, j as PlDataTableV2, w as PlTableFiltersV2, $ as ReactiveFileContent, t as UnresolvedError, X as activateAgGrid, y as autoSizeRowNumberColumn, Q as computedResult, P as createAgGridColDef, u as createModel, O as defaultMainMenuItems, d as defineApp, f as defineAppV3, Y as defineStore, B as deselectAll, n as ensureError, ee as ensureNodeVisible, r as ensureOutputHasStableFlag, i as formatZodError, V as getSelectedRowsCount, H as getTotalRowsCount, a as identity, o as isDefined, U as isSelectionEnabled, s as isZodError, b as makeRowNumberColDef, Z as objectHash, p as pluginDataKey, W as selectAll, c as unwrapOutput, z as useAgGridOptions, m as useFeatureFlags, M as usePlDataTableSettingsV2, J as usePlugin, h as useSdkPlugin, l as wrapOptionalResult };
40
40
 
41
41
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"createAppV1.d.ts","sourceRoot":"","sources":["../../src/internal/createAppV1.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,iBAAiB,EAClB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EACV,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,WAAW,EACZ,MAAM,UAAU,CAAC;AAMlB;;;;;;;;;;;;;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,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,EAC/C,SAAS,EAAE,iBAAiB,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,EACvE,QAAQ,EAAE,WAAW;;;;;;;;;;;;;;sBAqGH,CAAC,mBAAkB,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;oBAmB/C,CAAC,qBACJ,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC,8BACtB,MAAM,OAAO;iBAsBpB,CAAC,SAAS,MAAM,OAAO,WAAW,CAAC,EAAE,KAAG,cAAc,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;oBAkC9E,CAAC,SAAS,MAAM,OAAO,WAAW,CAAC,EAAE,KAAG,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC;qBAWhE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI;wBAYjB,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,KAAG,OAAO,CAAC,IAAI,CAAC;gCAUlC,CAAC,IAAI,EAAE,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI;uBAWvD,IAAI;;;;;;;;;;;;EAsDxB;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":"createAppV1.d.ts","sourceRoot":"","sources":["../../src/internal/createAppV1.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,iBAAiB,EAClB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EACV,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,WAAW,EACZ,MAAM,UAAU,CAAC;AAMlB;;;;;;;;;;;;;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,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,EAC/C,SAAS,EAAE,iBAAiB,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,EACvE,QAAQ,EAAE,WAAW;;;;;;;;;;;;;;sBAgGH,CAAC,mBAAkB,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;oBAmB/C,CAAC,qBACJ,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC,8BACtB,MAAM,OAAO;iBAsBpB,CAAC,SAAS,MAAM,OAAO,WAAW,CAAC,EAAE,KAAG,cAAc,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;oBAkC9E,CAAC,SAAS,MAAM,OAAO,WAAW,CAAC,EAAE,KAAG,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC;qBAWhE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI;wBAYjB,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,KAAG,OAAO,CAAC,IAAI,CAAC;gCAUlC,CAAC,IAAI,EAAE,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI;uBAWvD,IAAI;;;;;;;;;;;;EAsDxB;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":"createAppV1.js","names":[],"sources":["../../src/internal/createAppV1.ts"],"sourcesContent":["import { deepClone, isJsonEqual, tap } from \"@milaboratories/helpers\";\nimport type { Mutable } from \"@milaboratories/helpers\";\nimport type {\n NavigationState,\n BlockOutputsBase,\n BlockState,\n PlatformaV1,\n PlatformaExtended,\n} from \"@platforma-sdk/model\";\nimport { reactive, nextTick, computed, watch } from \"vue\";\nimport type {\n StateModelOptions,\n UnwrapOutputs,\n OptionalResult,\n OutputValues,\n OutputErrors,\n AppSettings,\n} from \"../types\";\nimport { createModel } from \"../createModel\";\nimport { createAppModel } from \"./createAppModel\";\nimport { parseQuery } from \"../urls\";\nimport { ensureOutputHasStableFlag, MultiError, unwrapOutput } from \"../utils\";\nimport { useDebounceFn } from \"@vueuse/core\";\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 createAppV1<\n Args = unknown,\n Outputs extends BlockOutputsBase = BlockOutputsBase,\n UiState = unknown,\n Href extends `/${string}` = `/${string}`,\n>(\n state: BlockState<Args, Outputs, UiState, Href>,\n platforma: PlatformaExtended<PlatformaV1<Args, Outputs, UiState, Href>>,\n settings: AppSettings,\n) {\n type AppModel = {\n args: Args;\n ui: UiState;\n };\n\n const log = (msg: string, ...rest: unknown[]) => {\n if (settings.debug) {\n console.log(`%c>>> %c${msg}`, \"color: orange; font-weight: bold\", \"color: orange\", ...rest);\n }\n };\n\n /**\n * Reactive snapshot of the application state, including args, outputs, UI state, and navigation state.\n */\n const snapshot = reactive({\n args: Object.freeze(state.args),\n outputs: Object.freeze(state.outputs),\n ui: Object.freeze(state.ui),\n navigationState: Object.freeze(state.navigationState) as NavigationState<Href>,\n }) as {\n args: Readonly<Args>;\n outputs: Partial<Readonly<Outputs>>;\n ui: Readonly<UiState>;\n navigationState: Readonly<NavigationState<Href>>;\n };\n\n const debounceSpan = settings.debounceSpan ?? 200;\n\n const maxWait = tap(settings.debounceMaxWait ?? 0, (v) =>\n v < 20_000 ? 20_000 : v < debounceSpan ? debounceSpan * 100 : v,\n );\n\n const setBlockArgs = useDebounceFn(\n (args: Args) => {\n if (!isJsonEqual(args, snapshot.args)) {\n platforma.setBlockArgs(args);\n }\n },\n debounceSpan,\n { maxWait },\n );\n\n const setBlockUiState = useDebounceFn(\n (ui: UiState) => {\n if (!isJsonEqual(ui, snapshot.ui)) {\n platforma.setBlockUiState(ui);\n }\n },\n debounceSpan,\n { maxWait },\n );\n\n const setBlockArgsAndUiState = useDebounceFn(\n (args: Args, ui: UiState) => {\n if (!isJsonEqual(args, snapshot.args) || !isJsonEqual(ui, snapshot.ui)) {\n platforma.setBlockArgsAndUiState(args, ui);\n }\n },\n debounceSpan,\n { maxWait },\n );\n\n (platforma as unknown as PlatformaV1<Args, Outputs, UiState, Href>).onStateUpdates(\n async (updates) => {\n updates.forEach((patch) => {\n if (patch.key === \"args\" && !isJsonEqual(snapshot.args, patch.value)) {\n snapshot.args = Object.freeze(patch.value);\n log(\"args patch\", snapshot.args);\n }\n\n if (patch.key === \"ui\" && !isJsonEqual(snapshot.ui, patch.value)) {\n snapshot.ui = Object.freeze(patch.value);\n log(\"ui patch\", snapshot.ui);\n }\n\n if (patch.key === \"outputs\" && !isJsonEqual(snapshot.outputs, patch.value)) {\n snapshot.outputs = Object.freeze(patch.value);\n log(\"outputs patch\", snapshot.outputs);\n }\n\n if (\n patch.key === \"navigationState\" &&\n !isJsonEqual(snapshot.navigationState, patch.value)\n ) {\n snapshot.navigationState = Object.freeze(patch.value);\n log(\"navigationState patch\", snapshot.navigationState);\n }\n });\n\n await nextTick();\n },\n );\n\n const cloneArgs = () => deepClone(snapshot.args) as Args;\n const cloneUiState = () => deepClone(snapshot.ui) as UiState;\n const cloneNavigationState = () =>\n deepClone(snapshot.navigationState) as Mutable<NavigationState<Href>>;\n\n const methods = {\n createArgsModel<T = Args>(options: StateModelOptions<Args, T> = {}) {\n return createModel<T, Args>({\n get() {\n if (options.transform) {\n return options.transform(snapshot.args);\n }\n\n return snapshot.args as T;\n },\n validate: options.validate,\n autoSave: true,\n onSave(newArgs) {\n setBlockArgs(newArgs);\n },\n });\n },\n /**\n * defaultUiState is temporarily here, remove it after implementing initialUiState\n */\n createUiModel<T = UiState>(\n options: StateModelOptions<UiState, T> = {},\n defaultUiState: () => UiState,\n ) {\n return createModel<T, UiState>({\n get() {\n if (options.transform) {\n return options.transform(snapshot.ui);\n }\n\n return (snapshot.ui ?? defaultUiState()) as T;\n },\n validate: options.validate,\n autoSave: true,\n onSave(newData) {\n setBlockUiState(newData);\n },\n });\n },\n /**\n * Note: Don't forget to list the output names, like: useOutputs('output1', 'output2', ...etc)\n * @param keys - List of output names\n * @returns {OptionalResult<UnwrapOutputs<Outputs, K>>}\n */\n useOutputs<K extends keyof Outputs>(...keys: K[]): OptionalResult<UnwrapOutputs<Outputs, K>> {\n const data = reactive({\n errors: undefined,\n value: undefined,\n });\n\n watch(\n () => snapshot.outputs,\n () => {\n try {\n Object.assign(data, {\n value: this.unwrapOutputs<K>(...keys),\n errors: undefined,\n });\n } catch (error) {\n Object.assign(data, {\n value: undefined,\n errors: [String(error)],\n });\n }\n },\n { immediate: true, deep: true },\n );\n\n return data as OptionalResult<UnwrapOutputs<Outputs, K>>;\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.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) {\n const newArgs = cloneArgs();\n cb(newArgs);\n return platforma.setBlockArgs(newArgs);\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<void> {\n const newUiState = cloneUiState();\n return platforma.setBlockUiState(cb(newUiState));\n },\n /**\n * Updates the navigation state by applying a callback.\n *\n * @param cb - Callback to modify the current navigation state.\n * @returns A promise resolving after the update is applied.\n */\n updateNavigationState(cb: (args: Mutable<NavigationState<Href>>) => void) {\n const newState = cloneNavigationState();\n cb(newState);\n return platforma.setNavigationState(newState);\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 platforma.setNavigationState(newState);\n },\n };\n\n const outputs = computed<OutputValues<Outputs>>(() => {\n const entries = Object.entries(snapshot.outputs).map(([k, outputWithStatus]) =>\n platforma.blockModelInfo.outputs[k].withStatus\n ? [k, ensureOutputHasStableFlag(outputWithStatus)]\n : [\n k,\n outputWithStatus.ok && outputWithStatus.value !== undefined\n ? outputWithStatus.value\n : undefined,\n ],\n );\n return Object.fromEntries(entries);\n });\n\n const outputErrors = computed<OutputErrors<Outputs>>(() => {\n const entries = Object.entries(snapshot.outputs).map(([k, vOrErr]) => [\n k,\n vOrErr && vOrErr.ok === false ? new MultiError(vOrErr.errors) : undefined,\n ]);\n return Object.fromEntries(entries);\n });\n\n const getters = {\n snapshot,\n queryParams: computed(() => parseQuery<Href>(snapshot.navigationState.href)),\n href: computed(() => snapshot.navigationState.href),\n hasErrors: computed(() => Object.values(snapshot.outputs).some((v) => !v?.ok)),\n };\n\n const model = createAppModel(\n {\n get() {\n return { args: snapshot.args, ui: snapshot.ui } as AppModel;\n },\n autoSave: true,\n onSave(newData: AppModel) {\n setBlockArgsAndUiState(newData.args, newData.ui);\n },\n },\n {\n outputs,\n outputErrors,\n },\n settings,\n );\n\n return reactive(Object.assign(model, methods, getters));\n}\n\nexport type BaseAppV1<\n Args = unknown,\n Outputs extends BlockOutputsBase = BlockOutputsBase,\n UiState = unknown,\n Href extends `/${string}` = `/${string}`,\n> = ReturnType<typeof createAppV1<Args, Outputs, UiState, Href>>;\n"],"mappings":"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"}
1
+ {"version":3,"file":"createAppV1.js","names":[],"sources":["../../src/internal/createAppV1.ts"],"sourcesContent":["import { deepClone, isJsonEqual, tap } from \"@milaboratories/helpers\";\nimport type { Mutable } from \"@milaboratories/helpers\";\nimport type {\n NavigationState,\n BlockOutputsBase,\n BlockState,\n PlatformaV1,\n PlatformaExtended,\n} from \"@platforma-sdk/model\";\nimport { reactive, nextTick, computed, watch } from \"vue\";\nimport type {\n StateModelOptions,\n UnwrapOutputs,\n OptionalResult,\n OutputValues,\n OutputErrors,\n AppSettings,\n} from \"../types\";\nimport { createModel } from \"../createModel\";\nimport { createAppModel } from \"./createAppModel\";\nimport { parseQuery } from \"../urls\";\nimport { ensureOutputHasStableFlag, MultiError, unwrapOutput } from \"../utils\";\nimport { useDebounceFn } from \"@vueuse/core\";\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 createAppV1<\n Args = unknown,\n Outputs extends BlockOutputsBase = BlockOutputsBase,\n UiState = unknown,\n Href extends `/${string}` = `/${string}`,\n>(\n state: BlockState<Args, Outputs, UiState, Href>,\n platforma: PlatformaExtended<PlatformaV1<Args, Outputs, UiState, Href>>,\n settings: AppSettings,\n) {\n type AppModel = {\n args: Args;\n ui: UiState;\n };\n\n const log = (msg: string, ...rest: unknown[]) => {\n if (settings.debug) {\n console.log(`%c>>> %c${msg}`, \"color: orange; font-weight: bold\", \"color: orange\", ...rest);\n }\n };\n\n /**\n * Reactive snapshot of the application state, including args, outputs, UI state, and navigation state.\n */\n const snapshot = reactive({\n args: Object.freeze(state.args),\n outputs: Object.freeze(state.outputs),\n ui: Object.freeze(state.ui),\n navigationState: Object.freeze(state.navigationState) as NavigationState<Href>,\n }) as {\n args: Readonly<Args>;\n outputs: Partial<Readonly<Outputs>>;\n ui: Readonly<UiState>;\n navigationState: Readonly<NavigationState<Href>>;\n };\n\n const debounceSpan = settings.debounceSpan ?? 200;\n\n const maxWait = tap(settings.debounceMaxWait ?? 0, (v) =>\n v < 20_000 ? 20_000 : v < debounceSpan ? debounceSpan * 100 : v,\n );\n\n const setBlockArgs = useDebounceFn(\n (args: Args) => {\n if (!isJsonEqual(args, snapshot.args)) {\n platforma.setBlockArgs(args);\n }\n },\n debounceSpan,\n { maxWait },\n );\n\n const setBlockUiState = useDebounceFn(\n (ui: UiState) => {\n if (!isJsonEqual(ui, snapshot.ui)) {\n platforma.setBlockUiState(ui);\n }\n },\n debounceSpan,\n { maxWait },\n );\n\n const setBlockArgsAndUiState = useDebounceFn(\n (args: Args, ui: UiState) => {\n if (!isJsonEqual(args, snapshot.args) || !isJsonEqual(ui, snapshot.ui)) {\n platforma.setBlockArgsAndUiState(args, ui);\n }\n },\n debounceSpan,\n { maxWait },\n );\n\n (platforma as PlatformaV1<Args, Outputs, UiState, Href>).onStateUpdates(async (updates) => {\n updates.forEach((patch) => {\n if (patch.key === \"args\" && !isJsonEqual(snapshot.args, patch.value)) {\n snapshot.args = Object.freeze(patch.value);\n log(\"args patch\", snapshot.args);\n }\n\n if (patch.key === \"ui\" && !isJsonEqual(snapshot.ui, patch.value)) {\n snapshot.ui = Object.freeze(patch.value);\n log(\"ui patch\", snapshot.ui);\n }\n\n if (patch.key === \"outputs\" && !isJsonEqual(snapshot.outputs, patch.value)) {\n snapshot.outputs = Object.freeze(patch.value);\n log(\"outputs patch\", snapshot.outputs);\n }\n\n if (patch.key === \"navigationState\" && !isJsonEqual(snapshot.navigationState, patch.value)) {\n snapshot.navigationState = Object.freeze(patch.value);\n log(\"navigationState patch\", snapshot.navigationState);\n }\n });\n\n await nextTick();\n });\n\n const cloneArgs = () => deepClone(snapshot.args) as Args;\n const cloneUiState = () => deepClone(snapshot.ui) as UiState;\n const cloneNavigationState = () =>\n deepClone(snapshot.navigationState) as Mutable<NavigationState<Href>>;\n\n const methods = {\n createArgsModel<T = Args>(options: StateModelOptions<Args, T> = {}) {\n return createModel<T, Args>({\n get() {\n if (options.transform) {\n return options.transform(snapshot.args);\n }\n\n return snapshot.args as T;\n },\n validate: options.validate,\n autoSave: true,\n onSave(newArgs) {\n setBlockArgs(newArgs);\n },\n });\n },\n /**\n * defaultUiState is temporarily here, remove it after implementing initialUiState\n */\n createUiModel<T = UiState>(\n options: StateModelOptions<UiState, T> = {},\n defaultUiState: () => UiState,\n ) {\n return createModel<T, UiState>({\n get() {\n if (options.transform) {\n return options.transform(snapshot.ui);\n }\n\n return (snapshot.ui ?? defaultUiState()) as T;\n },\n validate: options.validate,\n autoSave: true,\n onSave(newData) {\n setBlockUiState(newData);\n },\n });\n },\n /**\n * Note: Don't forget to list the output names, like: useOutputs('output1', 'output2', ...etc)\n * @param keys - List of output names\n * @returns {OptionalResult<UnwrapOutputs<Outputs, K>>}\n */\n useOutputs<K extends keyof Outputs>(...keys: K[]): OptionalResult<UnwrapOutputs<Outputs, K>> {\n const data = reactive({\n errors: undefined,\n value: undefined,\n });\n\n watch(\n () => snapshot.outputs,\n () => {\n try {\n Object.assign(data, {\n value: this.unwrapOutputs<K>(...keys),\n errors: undefined,\n });\n } catch (error) {\n Object.assign(data, {\n value: undefined,\n errors: [String(error)],\n });\n }\n },\n { immediate: true, deep: true },\n );\n\n return data as OptionalResult<UnwrapOutputs<Outputs, K>>;\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.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) {\n const newArgs = cloneArgs();\n cb(newArgs);\n return platforma.setBlockArgs(newArgs);\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<void> {\n const newUiState = cloneUiState();\n return platforma.setBlockUiState(cb(newUiState));\n },\n /**\n * Updates the navigation state by applying a callback.\n *\n * @param cb - Callback to modify the current navigation state.\n * @returns A promise resolving after the update is applied.\n */\n updateNavigationState(cb: (args: Mutable<NavigationState<Href>>) => void) {\n const newState = cloneNavigationState();\n cb(newState);\n return platforma.setNavigationState(newState);\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 platforma.setNavigationState(newState);\n },\n };\n\n const outputs = computed<OutputValues<Outputs>>(() => {\n const entries = Object.entries(snapshot.outputs).map(([k, outputWithStatus]) =>\n platforma.blockModelInfo.outputs[k].withStatus\n ? [k, ensureOutputHasStableFlag(outputWithStatus)]\n : [\n k,\n outputWithStatus.ok && outputWithStatus.value !== undefined\n ? outputWithStatus.value\n : undefined,\n ],\n );\n return Object.fromEntries(entries);\n });\n\n const outputErrors = computed<OutputErrors<Outputs>>(() => {\n const entries = Object.entries(snapshot.outputs).map(([k, vOrErr]) => [\n k,\n vOrErr && vOrErr.ok === false ? new MultiError(vOrErr.errors) : undefined,\n ]);\n return Object.fromEntries(entries);\n });\n\n const getters = {\n snapshot,\n queryParams: computed(() => parseQuery<Href>(snapshot.navigationState.href)),\n href: computed(() => snapshot.navigationState.href),\n hasErrors: computed(() => Object.values(snapshot.outputs).some((v) => !v?.ok)),\n };\n\n const model = createAppModel(\n {\n get() {\n return { args: snapshot.args, ui: snapshot.ui } as AppModel;\n },\n autoSave: true,\n onSave(newData: AppModel) {\n setBlockArgsAndUiState(newData.args, newData.ui);\n },\n },\n {\n outputs,\n outputErrors,\n },\n settings,\n );\n\n return reactive(Object.assign(model, methods, getters));\n}\n\nexport type BaseAppV1<\n Args = unknown,\n Outputs extends BlockOutputsBase = BlockOutputsBase,\n UiState = unknown,\n Href extends `/${string}` = `/${string}`,\n> = ReturnType<typeof createAppV1<Args, Outputs, UiState, Href>>;\n"],"mappings":"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"}
package/dist/lib.d.ts CHANGED
@@ -25,7 +25,7 @@ export type { PluginHandle, PluginFactoryLike, InferPluginHandle, InferFactoryDa
25
25
  export * from './createModel';
26
26
  export * from './types';
27
27
  export * from './defineStore';
28
- export * from './aggrid';
28
+ export * from './composition/AgGrid';
29
29
  export * from './utils';
30
30
  export * from './objectHash';
31
31
  export * from './computedResult';
package/dist/lib.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,gDAAgD,CAAC;AAC5F,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,mDAAmD,CAAC;AAClG,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,kDAAkD,CAAC;AAEhG,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,cAAc,aAAa,CAAC;AAE5B,cAAc,+BAA+B,CAAC;AAE9C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,qCAAqC,CAAC;AACpD,cAAc,sCAAsC,CAAC;AAErD,cAAc,4BAA4B,CAAC;AAE3C,cAAc,8BAA8B,CAAC;AAE7C,cAAc,oCAAoC,CAAC;AAEnD,cAAc,oCAAoC,CAAC;AAEnD,cAAc,6BAA6B,CAAC;AAE5C,cAAc,4BAA4B,CAAC;AAE3C,cAAc,iCAAiC,CAAC;AAEhD,cAAc,+BAA+B,CAAC;AAE9C,cAAc,aAAa,CAAC;AAE5B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,YAAY,EACV,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAE9B,cAAc,eAAe,CAAC;AAE9B,cAAc,SAAS,CAAC;AAExB,cAAc,eAAe,CAAC;AAE9B,cAAc,UAAU,CAAC;AAEzB,cAAc,SAAS,CAAC;AAExB,cAAc,cAAc,CAAC;AAE7B,cAAc,kBAAkB,CAAC;AAEjC,cAAc,2BAA2B,CAAC;AAE1C,cAAc,uBAAuB,CAAC;AAEtC,mBAAmB,uBAAuB,CAAC"}
1
+ {"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,gDAAgD,CAAC;AAC5F,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,mDAAmD,CAAC;AAClG,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,kDAAkD,CAAC;AAEhG,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,cAAc,aAAa,CAAC;AAE5B,cAAc,+BAA+B,CAAC;AAE9C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,qCAAqC,CAAC;AACpD,cAAc,sCAAsC,CAAC;AAErD,cAAc,4BAA4B,CAAC;AAE3C,cAAc,8BAA8B,CAAC;AAE7C,cAAc,oCAAoC,CAAC;AAEnD,cAAc,oCAAoC,CAAC;AAEnD,cAAc,6BAA6B,CAAC;AAE5C,cAAc,4BAA4B,CAAC;AAE3C,cAAc,iCAAiC,CAAC;AAEhD,cAAc,+BAA+B,CAAC;AAE9C,cAAc,aAAa,CAAC;AAE5B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,YAAY,EACV,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAE9B,cAAc,eAAe,CAAC;AAE9B,cAAc,SAAS,CAAC;AAExB,cAAc,eAAe,CAAC;AAE9B,cAAc,sBAAsB,CAAC;AAErC,cAAc,SAAS,CAAC;AAExB,cAAc,cAAc,CAAC;AAE7B,cAAc,kBAAkB,CAAC;AAEjC,cAAc,2BAA2B,CAAC;AAE1C,cAAc,uBAAuB,CAAC;AAEtC,mBAAmB,uBAAuB,CAAC"}
package/dist/lib.js CHANGED
@@ -2,7 +2,6 @@ import "./_virtual/_rolldown/runtime.js";
2
2
  import './assets/ui.css';/* empty css */
3
3
  import "./utils.js";
4
4
  import "./createModel.js";
5
- import "./aggrid.js";
6
5
  import "./defineApp.js";
7
6
  import "./components/BlockLayout.js";
8
7
  import "./components/PlAgCsvExporter/PlAgCsvExporter.js";
@@ -46,6 +45,7 @@ import "./components/PlBtnExportArchive/PlBtnExportArchive.js";
46
45
  import "./components/PlBtnExportArchive/index.js";
47
46
  import "./usePlugin.js";
48
47
  import "./defineStore.js";
48
+ import "./composition/AgGrid/index.js";
49
49
  import "./objectHash.js";
50
50
  import "./computedResult.js";
51
51
  import "./composition/fileContent.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@platforma-sdk/ui-vue",
3
- "version": "1.58.19",
3
+ "version": "1.58.22",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "exports": {
@@ -25,8 +25,8 @@
25
25
  "lru-cache": "^11.2.2",
26
26
  "vue": "^3.5.24",
27
27
  "zod": "~3.23.8",
28
- "@milaboratories/uikit": "2.10.42",
29
- "@platforma-sdk/model": "1.58.19"
28
+ "@platforma-sdk/model": "1.58.22",
29
+ "@milaboratories/uikit": "2.10.43"
30
30
  },
31
31
  "devDependencies": {
32
32
  "@faker-js/faker": "^9.2.0",
@@ -40,8 +40,8 @@
40
40
  "typescript": "~5.9.3",
41
41
  "vite": "8.0.0-beta.15",
42
42
  "vitest": "^4.0.18",
43
- "@milaboratories/build-configs": "1.5.2",
44
43
  "@milaboratories/helpers": "1.13.7",
44
+ "@milaboratories/build-configs": "1.5.2",
45
45
  "@milaboratories/ts-configs": "1.2.2",
46
46
  "@milaboratories/ts-builder": "1.3.0"
47
47
  },
@@ -1,4 +1,3 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
1
  import type { ColDef, ICellRendererParams } from "ag-grid-enterprise";
3
2
  import { PlAgCellProgress } from "../components/PlAgCellProgress";
4
3
  import type { MaskIconName16, PlProgressCellProps } from "@milaboratories/uikit";
@@ -1,4 +1,4 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
1
+ /**/
2
2
  import type {
3
3
  ColGroupDef,
4
4
  GridApi,
@@ -10,7 +10,6 @@ import type {
10
10
  } from "ag-grid-enterprise";
11
11
  import type { Component } from "vue";
12
12
  import { computed, shallowRef, watch } from "vue";
13
- import { AgGridTheme } from "../aggrid";
14
13
  import {
15
14
  autoSizeRowNumberColumn,
16
15
  makeRowNumberColDef,
@@ -26,6 +25,7 @@ import { PlAgChartHistogramCell } from "../components/PlAgChartHistogramCell";
26
25
  import type { ImportFileHandle } from "@platforma-sdk/model";
27
26
  import type { ImportProgress } from "@platforma-sdk/model";
28
27
  import { PlAgCellStatusTag } from "../components/PlAgCellStatusTag";
28
+ import { AgGridTheme } from "../components/PlAgDataTable/compositions/useTheme";
29
29
  interface GridOptionsExtended<TData = any> extends Omit<
30
30
  GridOptions<TData>,
31
31
  "columnDefs" | "loadingOverlayComponentParams"
@@ -21,7 +21,6 @@ import {
21
21
  import type { CellRendererSelectorFunc, GridApi, GridState } from "ag-grid-enterprise";
22
22
  import { AgGridVue } from "ag-grid-vue3";
23
23
  import { computed, effectScope, nextTick, ref, toRefs, watch, watchEffect } from "vue";
24
- import { AgGridTheme } from "../../aggrid";
25
24
  import PlAgCsvExporter from "../PlAgCsvExporter/PlAgCsvExporter.vue";
26
25
  import { PlAgGridColumnManager } from "../PlAgGridColumnManager";
27
26
  import PlTableFiltersV2 from "../PlTableFilters/PlTableFiltersV2.vue";
@@ -44,6 +43,7 @@ import type {
44
43
  } from "./types";
45
44
  import { useFilterableColumns } from "./compositions/useFilterableColumns";
46
45
  import { useGrid } from "./compositions/useGrid";
46
+ import { AgGridTheme } from "./compositions/useTheme";
47
47
 
48
48
  const tableState = defineModel<PlDataTableStateV2>({
49
49
  required: true,
@@ -1,26 +1,5 @@
1
- import {
2
- AllEnterpriseModule,
3
- createPart,
4
- LicenseManager,
5
- ModuleRegistry,
6
- type Theme,
7
- themeQuartz,
8
- } from "ag-grid-enterprise";
9
- import { getEnvironmentValue } from "@platforma-sdk/model";
10
- import OverrideCss from "./components/PlAgDataTable/ag-override.css?raw";
11
-
12
- export function activateAgGrid() {
13
- ModuleRegistry.registerModules([AllEnterpriseModule]);
14
- const agGridLicense = getEnvironmentValue("AGGRID_LICENSE");
15
- if (agGridLicense) {
16
- LicenseManager.setLicenseKey(agGridLicense);
17
- console.log("AG Grid Activated");
18
- } else {
19
- console.log("AG Grid License not found");
20
- }
21
- }
22
-
23
- const agGridOverrideStyles = createPart({ feature: "headerBottomBorder", css: OverrideCss });
1
+ import { type Theme, themeQuartz, createPart } from "ag-grid-enterprise";
2
+ import OverrideCss from "../ag-override.css?raw";
24
3
 
25
4
  export const AgGridTheme: Theme = themeQuartz
26
5
  .withParams({
@@ -57,4 +36,4 @@ export const AgGridTheme: Theme = themeQuartz
57
36
  tooltipTextColor: "#FFFFFF",
58
37
  wrapperBorderRadius: "6px",
59
38
  })
60
- .withPart(agGridOverrideStyles);
39
+ .withPart(createPart({ feature: "headerBottomBorder", css: OverrideCss }));
@@ -1,3 +1,7 @@
1
+ import { activateAgGrid } from "../../lib";
2
+
3
+ activateAgGrid();
4
+
1
5
  export { default as PlDataTableV2 } from "./PlAgDataTableV2.vue";
2
6
  export { default as PlAgOverlayLoading } from "./PlAgOverlayLoading.vue";
3
7
  export { default as PlAgOverlayNoRows } from "./PlAgOverlayNoRows.vue";
@@ -89,6 +89,7 @@ const supportedFilters = [
89
89
  "notEqual",
90
90
  ] as (typeof PlAdvancedFilterSupportedFilters)[number][];
91
91
 
92
+ // getSuggestOptions - provide discrete values from column annotations
92
93
  function handleSuggestOptions(params: {
93
94
  columnId: PlAdvancedFilterColumnId;
94
95
  axisIdx?: number;
@@ -0,0 +1,13 @@
1
+ import { AllEnterpriseModule, LicenseManager, ModuleRegistry } from "ag-grid-enterprise";
2
+ import { getEnvironmentValue } from "@platforma-sdk/model";
3
+
4
+ export function activateAgGrid() {
5
+ ModuleRegistry.registerModules([AllEnterpriseModule]);
6
+ const agGridLicense = getEnvironmentValue("AGGRID_LICENSE");
7
+ if (agGridLicense) {
8
+ LicenseManager.setLicenseKey(agGridLicense);
9
+ console.log("AG Grid Activated");
10
+ } else {
11
+ console.log("AG Grid License not found");
12
+ }
13
+ }