@platforma-sdk/ui-vue 1.40.5 → 1.41.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.
Files changed (113) hide show
  1. package/.turbo/turbo-build.log +52 -25
  2. package/.turbo/turbo-type-check.log +1 -1
  3. package/CHANGELOG.md +21 -0
  4. package/dist/AgGridVue/useAgGridOptions.js +54 -53
  5. package/dist/AgGridVue/useAgGridOptions.js.map +1 -1
  6. package/dist/components/BlockLayout.vue.d.ts.map +1 -1
  7. package/dist/components/BlockLayout.vue.js +7 -50
  8. package/dist/components/BlockLayout.vue.js.map +1 -1
  9. package/dist/components/BlockLayout.vue2.js +53 -2
  10. package/dist/components/BlockLayout.vue2.js.map +1 -1
  11. package/dist/components/BlockLayout.vue3.js +9 -0
  12. package/dist/components/BlockLayout.vue3.js.map +1 -0
  13. package/dist/components/NotFound.vue.d.ts.map +1 -1
  14. package/dist/components/NotFound.vue.js +12 -14
  15. package/dist/components/NotFound.vue.js.map +1 -1
  16. package/dist/components/PlAgDataTable/PlAgDataTableV2.vue.d.ts +1 -4
  17. package/dist/components/PlAgDataTable/PlAgDataTableV2.vue.d.ts.map +1 -1
  18. package/dist/components/PlAgDataTable/PlAgDataTableV2.vue2.js +155 -172
  19. package/dist/components/PlAgDataTable/PlAgDataTableV2.vue2.js.map +1 -1
  20. package/dist/components/PlAgDataTable/PlAgRowCount.vue.js +7 -6
  21. package/dist/components/PlAgDataTable/PlAgRowCount.vue.js.map +1 -1
  22. package/dist/components/PlAgDataTable/sources/table-source-v2.d.ts +2 -2
  23. package/dist/components/PlAgDataTable/sources/table-source-v2.d.ts.map +1 -1
  24. package/dist/components/PlAgDataTable/sources/table-source-v2.js +110 -105
  25. package/dist/components/PlAgDataTable/sources/table-source-v2.js.map +1 -1
  26. package/dist/components/PlAgDataTable/types.d.ts +27 -43
  27. package/dist/components/PlAgDataTable/types.d.ts.map +1 -1
  28. package/dist/components/PlAgDataTable/types.js +32 -43
  29. package/dist/components/PlAgDataTable/types.js.map +1 -1
  30. package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue.js +10 -9
  31. package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue.js.map +1 -1
  32. package/dist/components/PlAgRowNumHeader.vue.js +3 -2
  33. package/dist/components/PlAgRowNumHeader.vue.js.map +1 -1
  34. package/dist/components/PlAnnotations/components/DynamicForm.vue2.js +10 -10
  35. package/dist/components/PlAnnotations/components/PlAnnotationCreateDialog.vue.d.ts +1 -1
  36. package/dist/components/PlAnnotations/components/PlAnnotationCreateDialog.vue.d.ts.map +1 -1
  37. package/dist/components/PlMultiSequenceAlignment/data.js +51 -51
  38. package/dist/composition/fileContent.js +16 -16
  39. package/dist/defineApp.d.ts +19 -6
  40. package/dist/defineApp.d.ts.map +1 -1
  41. package/dist/defineApp.js +50 -30
  42. package/dist/defineApp.js.map +1 -1
  43. package/dist/internal/UpdateSerializer.d.ts +26 -0
  44. package/dist/internal/UpdateSerializer.d.ts.map +1 -0
  45. package/dist/internal/UpdateSerializer.js +65 -0
  46. package/dist/internal/UpdateSerializer.js.map +1 -0
  47. package/dist/internal/createAppModel.d.ts +1 -1
  48. package/dist/internal/createAppModel.d.ts.map +1 -1
  49. package/dist/internal/createAppModel.js +43 -51
  50. package/dist/internal/createAppModel.js.map +1 -1
  51. package/dist/internal/{createApp.d.ts → createAppV1.d.ts} +4 -4
  52. package/dist/internal/createAppV1.d.ts.map +1 -0
  53. package/dist/internal/{createApp.js → createAppV1.js} +17 -18
  54. package/dist/internal/createAppV1.js.map +1 -0
  55. package/dist/internal/createAppV2.d.ts +56 -0
  56. package/dist/internal/createAppV2.d.ts.map +1 -0
  57. package/dist/internal/createAppV2.js +158 -0
  58. package/dist/internal/createAppV2.js.map +1 -0
  59. package/dist/internal/test-helpers/BlockMock.d.ts +28 -0
  60. package/dist/internal/test-helpers/BlockMock.d.ts.map +1 -0
  61. package/dist/internal/test-helpers/createMockApi.d.ts +4 -0
  62. package/dist/internal/test-helpers/createMockApi.d.ts.map +1 -0
  63. package/dist/internal/test-helpers/utils.d.ts +4 -0
  64. package/dist/internal/test-helpers/utils.d.ts.map +1 -0
  65. package/dist/{types.static-test.d.ts → internal/v1.static-test.d.ts} +3 -3
  66. package/dist/internal/v1.static-test.d.ts.map +1 -0
  67. package/dist/internal/v2.static-test.d.ts +7 -0
  68. package/dist/internal/v2.static-test.d.ts.map +1 -0
  69. package/dist/lib/model/common/dist/index.js +214 -199
  70. package/dist/lib/model/common/dist/index.js.map +1 -1
  71. package/dist/lib/ui/uikit/dist/components/PlAccordion/{ExpandTransition.vue.js → ExpandTransition.vue2.js} +1 -1
  72. package/dist/lib/ui/uikit/dist/components/PlAccordion/ExpandTransition.vue2.js.map +1 -0
  73. package/dist/lib/ui/uikit/dist/components/PlAccordion/PlAccordionSection.vue2.js +1 -1
  74. package/dist/lib/ui/uikit/dist/components/PlDialogModal/PlDialogModal.vue.js.map +1 -1
  75. package/dist/lib/ui/uikit/dist/lib/model/common/dist/index.js +7 -7
  76. package/dist/lib/ui/uikit/dist/sdk/model/dist/index.js +77 -56
  77. package/dist/lib/ui/uikit/dist/sdk/model/dist/index.js.map +1 -1
  78. package/dist/lib/util/helpers/dist/index.js +67 -56
  79. package/dist/lib/util/helpers/dist/index.js.map +1 -1
  80. package/dist/node_modules/.pnpm/fast-json-patch@3.1.1/node_modules/fast-json-patch/index.js +29 -0
  81. package/dist/node_modules/.pnpm/fast-json-patch@3.1.1/node_modules/fast-json-patch/index.js.map +1 -0
  82. package/dist/node_modules/.pnpm/fast-json-patch@3.1.1/node_modules/fast-json-patch/module/core.js +208 -0
  83. package/dist/node_modules/.pnpm/fast-json-patch@3.1.1/node_modules/fast-json-patch/module/core.js.map +1 -0
  84. package/dist/node_modules/.pnpm/fast-json-patch@3.1.1/node_modules/fast-json-patch/module/duplex.js +95 -0
  85. package/dist/node_modules/.pnpm/fast-json-patch@3.1.1/node_modules/fast-json-patch/module/duplex.js.map +1 -0
  86. package/dist/node_modules/.pnpm/fast-json-patch@3.1.1/node_modules/fast-json-patch/module/helpers.js +112 -0
  87. package/dist/node_modules/.pnpm/fast-json-patch@3.1.1/node_modules/fast-json-patch/module/helpers.js.map +1 -0
  88. package/dist/sdk/model/dist/index.js +165 -140
  89. package/dist/sdk/model/dist/index.js.map +1 -1
  90. package/dist/types.d.ts +2 -2
  91. package/dist/types.d.ts.map +1 -1
  92. package/package.json +9 -6
  93. package/src/components/BlockLayout.vue +9 -1
  94. package/src/components/NotFound.vue +1 -3
  95. package/src/components/PlAgDataTable/PlAgDataTableV2.vue +6 -31
  96. package/src/components/PlAgDataTable/sources/table-source-v2.ts +29 -29
  97. package/src/components/PlAgDataTable/types.ts +42 -70
  98. package/src/defineApp.ts +134 -36
  99. package/src/internal/UpdateSerializer.ts +112 -0
  100. package/src/internal/createAppModel.ts +7 -20
  101. package/src/internal/{createApp.ts → createAppV1.ts} +10 -6
  102. package/src/internal/createAppV2.test.ts +158 -0
  103. package/src/internal/createAppV2.ts +309 -0
  104. package/src/internal/test-helpers/BlockMock.ts +144 -0
  105. package/src/internal/test-helpers/createMockApi.ts +92 -0
  106. package/src/internal/test-helpers/utils.ts +65 -0
  107. package/src/{types.static-test.ts → internal/v1.static-test.ts} +5 -9
  108. package/src/internal/v2.static-test.ts +98 -0
  109. package/src/types.ts +2 -2
  110. package/dist/internal/createApp.d.ts.map +0 -1
  111. package/dist/internal/createApp.js.map +0 -1
  112. package/dist/lib/ui/uikit/dist/components/PlAccordion/ExpandTransition.vue.js.map +0 -1
  113. package/dist/types.static-test.d.ts.map +0 -1
@@ -0,0 +1,98 @@
1
+ import type { Expect, Equal } from '@milaboratories/helpers';
2
+ import { z } from 'zod';
3
+ import type { ModelOptions, Model } from '../types';
4
+ import type { BlockOutputsBase, InferHrefType, InferOutputsType, Platforma, ValueOrErrors } from '@platforma-sdk/model';
5
+ import type { BaseAppV2, createAppV2 } from './createAppV2';
6
+ import { type App } from '../defineApp';
7
+ import { computed, type Component } from 'vue';
8
+
9
+ declare function __createModel<M, V = unknown>(options: ModelOptions<M, V>): Model<M>;
10
+
11
+ declare const __args: {
12
+ seed: number;
13
+ };
14
+
15
+ const validate = z.coerce.number().int().parse;
16
+
17
+ type _number = ReturnType<typeof validate>;
18
+
19
+ const __model1 = __createModel({
20
+ get() {
21
+ return String(__args.seed);
22
+ },
23
+ validate,
24
+ autoSave: true,
25
+ onSave(_seed) {
26
+ //
27
+ },
28
+ });
29
+
30
+ const __model2 = __createModel({
31
+ get() {
32
+ return __args.seed;
33
+ },
34
+ validate,
35
+ autoSave: true,
36
+ onSave(_seed) {
37
+ //
38
+ },
39
+ });
40
+
41
+ type InferArgs<Pl extends Platforma> = Pl extends Platforma<infer Args> ? Args : never;
42
+ type InferUiState<Pl extends Platforma> = Pl extends Platforma<unknown, BlockOutputsBase, infer UiState> ? UiState : never;
43
+
44
+ export type TestApp<P extends Platforma> = ReturnType<typeof createAppV2<InferArgs<P>, InferOutputsType<P>, InferUiState<P>, InferHrefType<P>>>;
45
+
46
+ type _Args = {
47
+ x: number;
48
+ y: string[];
49
+ };
50
+
51
+ type _Outputs = {
52
+ sum: ValueOrErrors<number>;
53
+ };
54
+
55
+ type _UiState = {
56
+ flag: boolean;
57
+ };
58
+
59
+ type _App1 = BaseAppV2<_Args, _Outputs, _UiState, '/'>;
60
+ type _App2 = TestApp<Platforma<_Args, _Outputs, _UiState, '/'>>;
61
+
62
+ const _local = () => {
63
+ const counter = computed(() => 1);
64
+ const label = computed(() => 'aaaa');
65
+
66
+ const method = () => 100;
67
+
68
+ return {
69
+ counter,
70
+ label,
71
+ method,
72
+ routes: {
73
+ '/': undefined as unknown as Component,
74
+ },
75
+ };
76
+ };
77
+
78
+ type ExtApp = App<1, BlockOutputsBase, unknown, '/', ReturnType<typeof _local>>;
79
+
80
+ type _UpdateArgsParams = Parameters<Parameters<_App1['updateArgs']>[0]>[0];
81
+
82
+ type __cases = [
83
+ Expect<Equal<Model<string>, typeof __model1>>,
84
+ Expect<Equal<Model<number>, typeof __model2>>,
85
+ Expect<Equal<Model<string>, typeof __model1>>,
86
+ Expect<Equal<Model<number>, typeof __model2>>,
87
+ Expect<Equal<_App1, _App2>>,
88
+ Expect<Equal<ExtApp['counter'], number>>,
89
+ Expect<Equal<ExtApp['label'], string>>,
90
+ Expect<Equal<ExtApp['method'], () => number>>,
91
+ Expect<Equal<_App1['snapshot']['args'], _Args>>,
92
+ Expect<Equal<_App1['model']['outputs']['sum'], number | undefined>>,
93
+ Expect<Equal<_App1['model']['outputErrors']['sum'], Error | undefined>>,
94
+ Expect<Equal<_App1['snapshot']['ui'], _UiState>>,
95
+ Expect<Equal<_App1['model']['args'], _Args>>,
96
+ Expect<Equal<_App1['model']['ui'], _UiState>>,
97
+ Expect<Equal<_UpdateArgsParams, _Args>>,
98
+ ];
package/src/types.ts CHANGED
@@ -53,9 +53,9 @@ export type RouteParams<Href extends `/${string}` = `/${string}`> = {
53
53
 
54
54
  export type AppSettings = {
55
55
  /**
56
- * Deep patch `model.` This parameter affects how you listen to model changes; a deep watcher is required if you use the `source` function.
56
+ * App ID (just for debugging)
57
57
  */
58
- deepPatchModel?: boolean;
58
+ appId?: string;
59
59
  /**
60
60
  * Enables some debug logs
61
61
  */
@@ -1 +0,0 @@
1
- {"version":3,"file":"createApp.d.ts","sourceRoot":"","sources":["../../src/internal/createApp.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAErG,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAM1H;;;;;;;;;;;;;GAaG;AACH,wBAAgB,SAAS,CACvB,IAAI,GAAG,OAAO,EACd,OAAO,SAAS,gBAAgB,GAAG,gBAAgB,EACnD,OAAO,GAAG,OAAO,EACjB,IAAI,SAAS,IAAI,MAAM,EAAE,GAAG,IAAI,MAAM,EAAE,EACxC,KAAK,EAAE,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,QAAQ,EAAE,WAAW;;;;;;;;;;;;;;sBAgFxG,CAAC,mBAAkB,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;oBAmB/C,CAAC,qBAAqB,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC,8BAAuB,MAAM,OAAO;iBAqB1F,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;;;;;;;;;;;;EA0CxB;AAED,MAAM,MAAM,OAAO,CACjB,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,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"createApp.js","sources":["../../src/internal/createApp.ts"],"sourcesContent":["import { deepClone, isJsonEqual, tap } from '@milaboratories/helpers';\nimport type { Mutable } from '@milaboratories/helpers';\nimport type { NavigationState, BlockOutputsBase, BlockState, Platforma } from '@platforma-sdk/model';\nimport { reactive, nextTick, computed, watch } from 'vue';\nimport type { StateModelOptions, UnwrapOutputs, OptionalResult, OutputValues, OutputErrors, AppSettings } from '../types';\nimport { createModel } from '../createModel';\nimport { createAppModel } from './createAppModel';\nimport { parseQuery } from '../urls';\nimport { MultiError, unwrapValueOrErrors } 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 createApp<\n Args = unknown,\n Outputs extends BlockOutputsBase = BlockOutputsBase,\n UiState = unknown,\n Href extends `/${string}` = `/${string}`,\n>(state: BlockState<Args, Outputs, UiState, Href>, platforma: Platforma<Args, Outputs, UiState, Href>, settings: AppSettings) {\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) => v < 20_000 ? 20_000 : v < debounceSpan ? debounceSpan * 100 : v);\n\n const setBlockArgs = useDebounceFn((args: Args) => {\n if (!isJsonEqual(args, snapshot.args)) {\n platforma.setBlockArgs(args);\n }\n }, debounceSpan, { maxWait });\n\n const setBlockUiState = useDebounceFn((ui: UiState) => {\n if (!isJsonEqual(ui, snapshot.ui)) {\n platforma.setBlockUiState(ui);\n }\n }, debounceSpan, { maxWait });\n\n const setBlockArgsAndUiState = useDebounceFn((args: Args, ui: UiState) => {\n if (!isJsonEqual(args, snapshot.args) || !isJsonEqual(ui, snapshot.ui)) {\n platforma.setBlockArgsAndUiState(args, ui);\n }\n }, debounceSpan, { maxWait });\n\n platforma.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 = () => 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>(options: StateModelOptions<UiState, T> = {}, defaultUiState: () => UiState) {\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, unwrapValueOrErrors(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, vOrErr]) => [k, vOrErr.ok && vOrErr.value !== undefined ? vOrErr.value : undefined]);\n return Object.fromEntries(entries);\n });\n\n const outputErrors = computed<OutputErrors<Outputs>>(() => {\n const entries = Object.entries(snapshot.outputs).map(([k, vOrErr]) => [k, vOrErr && !vOrErr.ok ? new MultiError(vOrErr.errors) : undefined]);\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 BaseApp<\n Args = unknown,\n Outputs extends BlockOutputsBase = BlockOutputsBase,\n UiState = unknown,\n Href extends `/${string}` = `/${string}`,\n> = ReturnType<typeof createApp<Args, Outputs, UiState, Href>>;\n"],"names":["createApp","state","platforma","settings","log","msg","rest","snapshot","reactive","debounceSpan","maxWait","tap","v","setBlockArgs","useDebounceFn","args","isJsonEqual","setBlockUiState","ui","setBlockArgsAndUiState","updates","patch","nextTick","cloneArgs","deepClone","cloneUiState","cloneNavigationState","methods","options","createModel","newArgs","defaultUiState","newData","keys","data","watch","error","outputs","entries","key","unwrapValueOrErrors","cb","newUiState","newState","href","computed","k","vOrErr","outputErrors","MultiError","getters","parseQuery","model","createAppModel"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ExpandTransition.vue.js","sources":["../../../../../../../../../lib/ui/uikit/src/components/PlAccordion/ExpandTransition.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nconst onStart = (el: Element) => {\n el.classList.add('expand-collapse-fix');\n (el as HTMLElement).style.setProperty('--component-height', el.scrollHeight + 'px');\n};\n\nconst onAfter = (el: Element) => {\n (el as HTMLElement).style.removeProperty('--component-height');\n el.classList.remove('expand-collapse-fix');\n};\n</script>\n\n<template>\n <Transition name=\"expand-collapse\" @enter=\"onStart\" @leave=\"onStart\" @after-enter=\"onAfter\" @after-leave=\"onAfter\">\n <slot/>\n </Transition>\n</template>\n\n<style>\n.expand-collapse-fix {\n overflow: hidden;\n}\n\n.expand-collapse-enter-active,\n.expand-collapse-leave-active {\n transition:\n height 0.2s ease-in-out,\n opacity 0.2s ease-in-out;\n height: var(--component-height);\n}\n\n.expand-collapse-enter-from,\n.expand-collapse-leave-to {\n opacity: 0.5;\n height: 0;\n}\n</style>\n"],"names":["onStart","el","onAfter"],"mappings":";;;;AACMA,UAAAA,IAAU,CAACC,MAAgB;AAC5BA,QAAA,UAAU,IAAI,qBAAqB,GACrCA,EAAmB,MAAM,YAAY,sBAAsBA,EAAG,eAAe,IAAI;AAAA,IAAA,GAG9EC,IAAU,CAACD,MAAgB;AAC9BA,QAAmB,MAAM,eAAe,oBAAoB,GAC1DA,EAAA,UAAU,OAAO,qBAAqB;AAAA,IAC3C;;;;;;;;;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.static-test.d.ts","sourceRoot":"","sources":["../src/types.static-test.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,gBAAgB,EAAE,SAAS,EAAiB,MAAM,sBAAsB,CAAC;AACxH,OAAO,KAAK,EAAW,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAwC/D,KAAK,SAAS,CAAC,EAAE,SAAS,SAAS,IAAI,EAAE,SAAS,SAAS,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;AACvF,KAAK,YAAY,CAAC,EAAE,SAAS,SAAS,IAAI,EAAE,SAAS,SAAS,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC,GAAG,OAAO,GAAG,KAAK,CAAC;AAE3H,MAAM,MAAM,OAAO,CAAC,CAAC,SAAS,SAAS,IAAI,UAAU,CAAC,OAAO,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC"}