@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
@@ -10,8 +10,8 @@
10
10
  var c = (r) => {
11
11
  throw TypeError(r);
12
12
  };
13
- var d = (r, e, t) => e.has(r) || c("Cannot " + t);
14
- var i = (r, e, t) => (d(r, e, "read from private field"), t ? t.call(r) : e.get(r)), g = (r, e, t) => e.has(r) ? c("Cannot add the same private member more than once") : e instanceof WeakSet ? e.add(r) : e.set(r, t), h = (r, e, t, a) => (d(r, e, "write to private field"), a ? a.call(r, t) : e.set(r, t), t);
13
+ var d = (r, t, e) => t.has(r) || c("Cannot " + e);
14
+ var i = (r, t, e) => (d(r, t, "read from private field"), e ? e.call(r) : t.get(r)), g = (r, t, e) => t.has(r) ? c("Cannot add the same private member more than once") : t instanceof WeakSet ? t.add(r) : t.set(r, e), h = (r, t, e, a) => (d(r, t, "write to private field"), a ? a.call(r, e) : t.set(r, e), e);
15
15
  import { shallowRef as C, computed as y, watch as f } from "vue";
16
16
  import { AgGridTheme as T } from "../aggrid.js";
17
17
  import "../sdk/model/dist/index.js";
@@ -25,6 +25,7 @@ import x from "../components/PlAgDataTable/PlAgOverlayNoRows.vue.js";
25
25
 
26
26
 
27
27
 
28
+ import "../node_modules/.pnpm/fast-json-patch@3.1.1/node_modules/fast-json-patch/index.js";
28
29
 
29
30
  import "../plugins/Monetization/validation.js";
30
31
  import { createAgGridColDef as D } from "./createAgGridColDef.js";
@@ -47,8 +48,8 @@ class R {
47
48
  constructor() {
48
49
  g(this, o, {});
49
50
  }
50
- options(e) {
51
- return h(this, o, Object.assign({}, i(this, o), e)), this;
51
+ options(t) {
52
+ return h(this, o, Object.assign({}, i(this, o), t)), this;
52
53
  }
53
54
  get columnDefs() {
54
55
  return i(this, o).columnDefs ?? [];
@@ -58,80 +59,80 @@ class R {
58
59
  * @param def - column definition
59
60
  * @returns this
60
61
  */
61
- setDefaultColDef(e) {
62
- return i(this, o).defaultColDef = e, this;
62
+ setDefaultColDef(t) {
63
+ return i(this, o).defaultColDef = t, this;
63
64
  }
64
65
  /**
65
66
  * Show loading overlay
66
67
  * @param loading
67
68
  * @returns this
68
69
  */
69
- setLoading(e) {
70
- return i(this, o).loading = e, this;
70
+ setLoading(t) {
71
+ return i(this, o).loading = t, this;
71
72
  }
72
73
  /**
73
74
  * Set loading overlay custom text (default is "Loading")
74
75
  * @param loadingText
75
76
  * @returns this
76
77
  */
77
- setLoadingText(e) {
78
- return i(this, o).loadingText = e, this;
78
+ setLoadingText(t) {
79
+ return i(this, o).loadingText = t, this;
79
80
  }
80
81
  /**
81
82
  * Show "not ready overlay
82
83
  * @param notReady
83
84
  * @returns this
84
85
  */
85
- setNotReady(e) {
86
- return i(this, o).notReady = e, this;
86
+ setNotReady(t) {
87
+ return i(this, o).notReady = t, this;
87
88
  }
88
89
  /**
89
90
  * Set loading overlay type
90
91
  * @param type
91
92
  * @returns this
92
93
  */
93
- setLoadingOverlayType(e) {
94
- return i(this, o).loadingOverlayType = e, this;
94
+ setLoadingOverlayType(t) {
95
+ return i(this, o).loadingOverlayType = t, this;
95
96
  }
96
97
  /**
97
98
  * Set "not ready" text
98
99
  * @param notReadyText
99
100
  * @returns this
100
101
  */
101
- setNotReadyText(e) {
102
- return i(this, o).notReadyText = e, this;
102
+ setNotReadyText(t) {
103
+ return i(this, o).notReadyText = t, this;
103
104
  }
104
105
  /**
105
106
  * Set "no rows" text when there are no rows (default is "Empty")
106
107
  * @param noRowsText
107
108
  * @returns this
108
109
  */
109
- setNoRowsText(e) {
110
- return i(this, o).noRowsText = e, this;
110
+ setNoRowsText(t) {
111
+ return i(this, o).noRowsText = t, this;
111
112
  }
112
113
  /**
113
114
  * Set row selection options
114
115
  * @param rowSelection
115
116
  * @returns this
116
117
  */
117
- setRowSelection(e) {
118
- return i(this, o).rowSelection = e, this;
118
+ setRowSelection(t) {
119
+ return i(this, o).rowSelection = t, this;
119
120
  }
120
121
  /**
121
122
  * Set row data
122
123
  * @param rowData
123
124
  * @returns this
124
125
  */
125
- setRowData(e) {
126
- return i(this, o).rowData = e, this;
126
+ setRowData(t) {
127
+ return i(this, o).rowData = t, this;
127
128
  }
128
129
  /**
129
130
  * Set components
130
131
  * @param components
131
132
  * @returns this
132
133
  */
133
- setComponents(e) {
134
- return i(this, o).components = e, this;
134
+ setComponents(t) {
135
+ return i(this, o).components = t, this;
135
136
  }
136
137
  /**
137
138
  * Set an option
@@ -139,24 +140,24 @@ class R {
139
140
  * @param value - option value
140
141
  * @returns this
141
142
  */
142
- setOption(e, t) {
143
- return i(this, o)[e] = t, this;
143
+ setOption(t, e) {
144
+ return i(this, o)[t] = e, this;
144
145
  }
145
146
  /**
146
147
  * Add an extended column definition
147
148
  * @param def - column definition
148
149
  * @returns this
149
150
  */
150
- column(e) {
151
- return i(this, o).columnDefs = [...this.columnDefs, e], this;
151
+ column(t) {
152
+ return i(this, o).columnDefs = [...this.columnDefs, t], this;
152
153
  }
153
154
  /**
154
155
  * Show row numbers column
155
156
  * @param show - show or hide row numbers column
156
157
  * @returns this
157
158
  */
158
- columnRowNumbers(e = !0) {
159
- return i(this, o).rowNumbersColumn = e, this;
159
+ columnRowNumbers(t = !0) {
160
+ return i(this, o).rowNumbersColumn = t, this;
160
161
  }
161
162
  /**
162
163
  * Add a file input column
@@ -164,45 +165,45 @@ class R {
164
165
  * @param cb - callback to set params for the file input cell renderer
165
166
  * @returns this
166
167
  */
167
- columnFileInput(e) {
168
+ columnFileInput(t) {
168
169
  return this.column(Object.assign({
169
170
  cellRenderer: "PlAgCellFile",
170
171
  headerComponentParams: { type: "File" },
171
172
  cellStyle: { padding: 0 },
172
- valueSetter: (t) => {
173
+ valueSetter: (e) => {
173
174
  var a;
174
- return (a = e.setImportFileHandle) == null || a.call(e, t), !0;
175
+ return (a = t.setImportFileHandle) == null || a.call(t, e), !0;
175
176
  },
176
- cellRendererSelector: (t) => {
177
+ cellRendererSelector: (e) => {
177
178
  var a;
178
179
  return {
179
180
  component: "PlAgCellFile",
180
181
  params: {
181
- extensions: e.extensions,
182
- value: (a = e.resolveImportFileHandle) == null ? void 0 : a.call(e, t),
182
+ extensions: t.extensions,
183
+ value: (a = t.resolveImportFileHandle) == null ? void 0 : a.call(t, e),
183
184
  resolveProgress: () => {
184
185
  var s;
185
- return (s = e.resolveImportProgress) == null ? void 0 : s.call(e, t);
186
+ return (s = t.resolveImportProgress) == null ? void 0 : s.call(t, e);
186
187
  }
187
188
  }
188
189
  };
189
190
  }
190
- }, e));
191
+ }, t));
191
192
  }
192
193
  build() {
193
194
  return i(this, o);
194
195
  }
195
196
  }
196
197
  o = new WeakMap();
197
- function le(r) {
198
- const e = C(), t = y(() => {
198
+ function mt(r) {
199
+ const t = C(), e = y(() => {
199
200
  var u;
200
201
  const s = {
201
202
  theme: T,
202
203
  loadingOverlayComponent: w,
203
204
  noRowsOverlayComponent: x,
204
205
  onGridReady: (m) => {
205
- e.value = m.api, v(m.api);
206
+ t.value = m.api, v(m.api);
206
207
  }
207
208
  }, p = (m) => m, l = r({ builder: new R(), column: p }), n = Object.assign({}, s, l instanceof R ? l.build() : l);
208
209
  return n.rowNumbersColumn && (n.columnDefs = [O(), ...n.columnDefs ?? []]), n.noRowsText && (n.noRowsOverlayComponentParams = {
@@ -214,7 +215,7 @@ function le(r) {
214
215
  PlAgCellStatusTag: A
215
216
  }), n;
216
217
  }), a = y(() => {
217
- const s = t.value;
218
+ const s = e.value;
218
219
  return {
219
220
  ...s,
220
221
  loadingOverlayComponentParams: {
@@ -224,30 +225,30 @@ function le(r) {
224
225
  }
225
226
  };
226
227
  });
227
- return N(() => t.value.rowNumbersColumn, () => {
228
- e.value && v(e.value);
228
+ return N(() => e.value.rowNumbersColumn, () => {
229
+ t.value && v(t.value);
229
230
  }), f([
230
- () => t.value.notReady,
231
- () => t.value.loading
231
+ () => e.value.notReady,
232
+ () => e.value.loading
232
233
  ], ([s, p]) => {
233
234
  var n, u;
234
235
  const l = {
235
236
  notReady: s,
236
237
  // we probably don't need to update the parameters below
237
- notReadyText: t.value.notReadyText,
238
- overlayType: t.value.loadingOverlayType,
239
- loadingText: t.value.loadingText
238
+ notReadyText: e.value.notReadyText,
239
+ overlayType: e.value.loadingOverlayType,
240
+ loadingText: e.value.loadingText
240
241
  };
241
- (n = e.value) == null || n.updateGridOptions({
242
+ (n = t.value) == null || n.updateGridOptions({
242
243
  loading: !p,
243
244
  loadingOverlayComponentParams: l
244
- }), (u = e.value) == null || u.updateGridOptions({
245
+ }), (u = t.value) == null || u.updateGridOptions({
245
246
  loading: p,
246
247
  loadingOverlayComponentParams: l
247
248
  });
248
- }, { deep: !0, immediate: !0 }), { gridOptions: a, gridApi: e };
249
+ }, { deep: !0, immediate: !0 }), { gridOptions: a, gridApi: t };
249
250
  }
250
251
  export {
251
- le as useAgGridOptions
252
+ mt as useAgGridOptions
252
253
  };
253
254
  //# sourceMappingURL=useAgGridOptions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useAgGridOptions.js","sources":["../../src/AgGridVue/useAgGridOptions.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { ColGroupDef, GridApi, GridOptions, GridReadyEvent, ICellRendererParams, RowSelectionOptions, ValueSetterParams } from 'ag-grid-enterprise';\nimport type { Component } from 'vue';\nimport { computed, shallowRef, watch } from 'vue';\nimport { AgGridTheme } from '../aggrid';\nimport { autoSizeRowNumberColumn, makeRowNumberColDef, PlAgOverlayLoading, type PlAgOverlayLoadingParams } from '../components/PlAgDataTable';\nimport { PlAgOverlayNoRows } from '../components/PlAgDataTable';\nimport { createAgGridColDef, type ColDefExtended } from './createAgGridColDef';\nimport { whenever } from '@vueuse/core';\nimport { PlAgCellFile } from '../components/PlAgCellFile';\nimport { PlAgChartStackedBarCell } from '../components/PlAgChartStackedBarCell';\nimport { PlAgChartHistogramCell } from '../components/PlAgChartHistogramCell';\nimport type { ImportFileHandle } from '@platforma-sdk/model';\nimport type { ImportProgress } from '@platforma-sdk/model';\nimport { PlAgCellStatusTag } from '../components/PlAgCellStatusTag';\ninterface GridOptionsExtended<TData = any> extends Omit<GridOptions<TData>, 'columnDefs' | 'loadingOverlayComponentParams'> {\n /**\n * Array of Column / Column Group definitions.\n */\n columnDefs?: (ColDefExtended<TData> | ColGroupDef<TData>)[] | null;\n /**\n * Show row numbers column\n */\n rowNumbersColumn?: boolean;\n /**\n * Loading overlay text\n */\n loadingText?: string;\n /**\n * Not ready overlay (No datasource). Takes priority over \"loading\"\n */\n notReady?: boolean;\n /**\n * \"No datasource\" by default\n */\n notReadyText?: string;\n /**\n * Use \"transparent\" to make table headers visible below the loading layer (experimental)\n */\n loadingOverlayType?: 'transparent' | undefined;\n /**\n * Override standard 'Empty' text for the \"no rows\" overlay\n */\n noRowsText?: string;\n /**\n * @deprecated Use loading, notReady, loadingText, loadingOverlayType instead\n */\n loadingOverlayComponentParams?: never;\n}\n\n// @TODO (super simple builder for now)\nclass Builder<TData> {\n #options: GridOptionsExtended<TData> = {};\n\n public options(options: GridOptionsExtended<TData>) {\n this.#options = Object.assign({}, this.#options, options);\n return this;\n }\n\n private get columnDefs() {\n return this.#options.columnDefs ?? [];\n }\n\n /**\n * Set default column definition\n * @param def - column definition\n * @returns this\n */\n public setDefaultColDef(def: ColDefExtended<TData>) {\n this.#options.defaultColDef = def;\n return this;\n }\n\n /**\n * Show loading overlay\n * @param loading\n * @returns this\n */\n public setLoading(loading?: boolean) {\n this.#options.loading = loading;\n return this;\n }\n\n /**\n * Set loading overlay custom text (default is \"Loading\")\n * @param loadingText\n * @returns this\n */\n public setLoadingText(loadingText?: string) {\n this.#options.loadingText = loadingText;\n return this;\n }\n\n /**\n * Show \"not ready overlay\n * @param notReady\n * @returns this\n */\n public setNotReady(notReady?: boolean) {\n this.#options.notReady = notReady;\n return this;\n }\n\n /**\n * Set loading overlay type\n * @param type\n * @returns this\n */\n public setLoadingOverlayType(type?: 'transparent') {\n this.#options.loadingOverlayType = type;\n return this;\n }\n\n /**\n * Set \"not ready\" text\n * @param notReadyText\n * @returns this\n */\n public setNotReadyText(notReadyText?: string) {\n this.#options.notReadyText = notReadyText;\n return this;\n }\n\n /**\n * Set \"no rows\" text when there are no rows (default is \"Empty\")\n * @param noRowsText\n * @returns this\n */\n public setNoRowsText(noRowsText?: string) {\n this.#options.noRowsText = noRowsText;\n return this;\n }\n\n /**\n * Set row selection options\n * @param rowSelection\n * @returns this\n */\n public setRowSelection(rowSelection?: RowSelectionOptions) {\n this.#options.rowSelection = rowSelection;\n return this;\n }\n\n /**\n * Set row data\n * @param rowData\n * @returns this\n */\n public setRowData(rowData?: TData[]) {\n this.#options.rowData = rowData;\n return this;\n }\n\n /**\n * Set components\n * @param components\n * @returns this\n */\n public setComponents(components?: Record<string, Component>) {\n this.#options.components = components;\n return this;\n }\n\n /**\n * Set an option\n * @param key - option key\n * @param value - option value\n * @returns this\n */\n public setOption<K extends keyof GridOptionsExtended<TData>>(key: K, value: GridOptionsExtended<TData>[K]) {\n this.#options[key] = value;\n return this;\n }\n\n /**\n * Add an extended column definition\n * @param def - column definition\n * @returns this\n */\n public column<TValue = any>(def: ColDefExtended<TData, TValue>) {\n this.#options.columnDefs = [...this.columnDefs, def];\n return this;\n }\n\n /**\n * Show row numbers column\n * @param show - show or hide row numbers column\n * @returns this\n */\n public columnRowNumbers(show: boolean = true) {\n this.#options.rowNumbersColumn = show;\n return this;\n }\n\n /**\n * Add a file input column\n * @param def - column definition\n * @param cb - callback to set params for the file input cell renderer\n * @returns this\n */\n public columnFileInput<TValue = any>(\n def: ColDefExtended<TData, TValue> & {\n /**\n * Allowed file extensions (like ['fastq.gz'])\n */\n extensions?: string[];\n /**\n * The resolveProgress function is an optional input parameter for the component\n * that allows tracking the file upload progress in real-time.\n * By passing resolveProgress, you can ensure that the component\n * displays accurate progress values for each file as they upload.\n * How to use it in AgGrid\n * cellRendererParams: {\n * resolveProgress: (cellData) => {\n * const progresses = app.progresses;\n * if (!cellData.value.importFileHandle) return undefined;\n * else return progresses[cellData.value.importFileHandle];\n * }\n * }\n */\n resolveImportProgress?: (cellData: ICellRendererParams<TData, TValue>) => ImportProgress | undefined;\n\n /**\n * The resolveFileHandle function is an optional input parameter for the component\n * that allows tracking the file upload progress in real-time.\n * By passing resolveFileHandle, you can ensure that the component\n * displays accurate progress values for each file as they upload.\n * How to use it in AgGrid\n * cellRendererParams: {\n * resolveFileHandle: (cellData) => {\n * return cellData.value.importFileHandle;\n * }\n * }\n */\n resolveImportFileHandle?: (cellData: ICellRendererParams<TData, TValue>) => ImportFileHandle | undefined;\n\n setImportFileHandle?: (d: ValueSetterParams<TData, ImportFileHandle | undefined>) => void;\n }) {\n return this.column(Object.assign({\n cellRenderer: 'PlAgCellFile',\n headerComponentParams: { type: 'File' },\n cellStyle: { padding: 0 },\n valueSetter: (d: ValueSetterParams<TData, ImportFileHandle | undefined>) => {\n def.setImportFileHandle?.(d);\n return true;\n },\n cellRendererSelector: (cellData: ICellRendererParams<TData, TValue>) => {\n return {\n component: 'PlAgCellFile',\n params: {\n extensions: def.extensions,\n value: def.resolveImportFileHandle?.(cellData),\n resolveProgress: () => {\n return def.resolveImportProgress?.(cellData);\n },\n },\n };\n },\n }, def));\n }\n\n public build() {\n return this.#options;\n }\n}\n\n// Simple helper to use like column<string> in grid options literal\ntype ColumnFunc<TData> = <TValue>(def: ColDefExtended<TData, TValue>) => ColDefExtended<TData, TValue>;\n\n/**\n * Returns a set of Ag Grid options along with a reference to the Ag Grid API.\n * (This is a fast prototype)\n *\n * @example\n * ```ts\n * const { gridOptions, gridApi } = useAgGridOptions(() => ({\n * // custom grid options here\n * }));\n *\n * // Usage in a template (v-bind is required!)\n * <template>\n * <AgGridVue :style=\"{ height: '100%' }\" v-bind=\"gridOptions\" />\n * </template>\n * ```\n */\nexport function useAgGridOptions<TData>(\n factory: (context: { builder: Builder<TData>; column: ColumnFunc<TData> }) => Builder<TData> | GridOptionsExtended<TData>,\n) {\n const gridApi = shallowRef<GridApi>();\n\n const extOptions = computed<GridOptionsExtended>(() => {\n const def: GridOptionsExtended<TData> = {\n theme: AgGridTheme,\n loadingOverlayComponent: PlAgOverlayLoading,\n noRowsOverlayComponent: PlAgOverlayNoRows,\n onGridReady: (e: GridReadyEvent) => {\n gridApi.value = e.api;\n autoSizeRowNumberColumn(e.api); // @TODO\n },\n };\n\n const column = <TValue>(def: ColDefExtended<TData, TValue>) => {\n return def;\n };\n\n const result = factory({ builder: new Builder(), column });\n\n const options = Object.assign({}, def, result instanceof Builder ? result.build() : result);\n\n if (options.rowNumbersColumn) {\n options.columnDefs = [makeRowNumberColDef(), ...(options.columnDefs ?? [])];\n }\n\n if (options.noRowsText) {\n options.noRowsOverlayComponentParams = {\n text: options.noRowsText,\n };\n }\n\n if ('loadingOverlayComponentParams' in options) {\n console.warn('useAgGridOptions: remove loadingOverlayComponentParams from options, use loading, notReady, loadingText, loadingOverlayType instead');\n }\n\n options.loading = options.notReady || options.loading;\n\n options.columnDefs = options.columnDefs?.map((it) => createAgGridColDef(it));\n\n // Register all special components\n options.components = Object.assign({}, options.components ?? {}, {\n PlAgCellFile,\n PlAgChartStackedBarCell,\n PlAgChartHistogramCell,\n PlAgCellStatusTag,\n });\n\n return options;\n });\n\n const gridOptions = computed<GridOptions>(() => {\n const options = extOptions.value;\n\n return {\n ...options,\n loadingOverlayComponentParams: {\n notReady: options.notReady,\n notReadyText: options.notReadyText,\n overlayType: options.loadingOverlayType,\n } satisfies PlAgOverlayLoadingParams,\n };\n });\n\n whenever(() => extOptions.value.rowNumbersColumn, () => {\n if (gridApi.value) {\n autoSizeRowNumberColumn(gridApi.value);\n }\n });\n\n watch([\n () => extOptions.value.notReady,\n () => extOptions.value.loading,\n ], ([notReady, loading]) => {\n const loadingOverlayComponentParams = {\n notReady,\n // we probably don't need to update the parameters below\n notReadyText: extOptions.value.notReadyText,\n overlayType: extOptions.value.loadingOverlayType,\n loadingText: extOptions.value.loadingText,\n } satisfies PlAgOverlayLoadingParams;\n\n // Hack to apply loadingOverlayComponentParams\n gridApi.value?.updateGridOptions({\n loading: !loading,\n loadingOverlayComponentParams,\n });\n\n gridApi.value?.updateGridOptions({\n loading,\n loadingOverlayComponentParams,\n });\n }, { deep: true, immediate: true });\n\n return { gridOptions, gridApi };\n};\n"],"names":["Builder","__privateAdd","_options","options","__privateSet","__privateGet","def","loading","loadingText","notReady","type","notReadyText","noRowsText","rowSelection","rowData","components","key","value","show","d","_a","cellData","useAgGridOptions","factory","gridApi","shallowRef","extOptions","computed","AgGridTheme","PlAgOverlayLoading","PlAgOverlayNoRows","e","autoSizeRowNumberColumn","column","result","makeRowNumberColDef","it","createAgGridColDef","PlAgCellFile","PlAgChartStackedBarCell","PlAgChartHistogramCell","PlAgCellStatusTag","gridOptions","whenever","watch","loadingOverlayComponentParams","_b"],"mappings":"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"}
1
+ {"version":3,"file":"useAgGridOptions.js","sources":["../../src/AgGridVue/useAgGridOptions.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { ColGroupDef, GridApi, GridOptions, GridReadyEvent, ICellRendererParams, RowSelectionOptions, ValueSetterParams } from 'ag-grid-enterprise';\nimport type { Component } from 'vue';\nimport { computed, shallowRef, watch } from 'vue';\nimport { AgGridTheme } from '../aggrid';\nimport { autoSizeRowNumberColumn, makeRowNumberColDef, PlAgOverlayLoading, type PlAgOverlayLoadingParams } from '../components/PlAgDataTable';\nimport { PlAgOverlayNoRows } from '../components/PlAgDataTable';\nimport { createAgGridColDef, type ColDefExtended } from './createAgGridColDef';\nimport { whenever } from '@vueuse/core';\nimport { PlAgCellFile } from '../components/PlAgCellFile';\nimport { PlAgChartStackedBarCell } from '../components/PlAgChartStackedBarCell';\nimport { PlAgChartHistogramCell } from '../components/PlAgChartHistogramCell';\nimport type { ImportFileHandle } from '@platforma-sdk/model';\nimport type { ImportProgress } from '@platforma-sdk/model';\nimport { PlAgCellStatusTag } from '../components/PlAgCellStatusTag';\ninterface GridOptionsExtended<TData = any> extends Omit<GridOptions<TData>, 'columnDefs' | 'loadingOverlayComponentParams'> {\n /**\n * Array of Column / Column Group definitions.\n */\n columnDefs?: (ColDefExtended<TData> | ColGroupDef<TData>)[] | null;\n /**\n * Show row numbers column\n */\n rowNumbersColumn?: boolean;\n /**\n * Loading overlay text\n */\n loadingText?: string;\n /**\n * Not ready overlay (No datasource). Takes priority over \"loading\"\n */\n notReady?: boolean;\n /**\n * \"No datasource\" by default\n */\n notReadyText?: string;\n /**\n * Use \"transparent\" to make table headers visible below the loading layer (experimental)\n */\n loadingOverlayType?: 'transparent' | undefined;\n /**\n * Override standard 'Empty' text for the \"no rows\" overlay\n */\n noRowsText?: string;\n /**\n * @deprecated Use loading, notReady, loadingText, loadingOverlayType instead\n */\n loadingOverlayComponentParams?: never;\n}\n\n// @TODO (super simple builder for now)\nclass Builder<TData> {\n #options: GridOptionsExtended<TData> = {};\n\n public options(options: GridOptionsExtended<TData>) {\n this.#options = Object.assign({}, this.#options, options);\n return this;\n }\n\n private get columnDefs() {\n return this.#options.columnDefs ?? [];\n }\n\n /**\n * Set default column definition\n * @param def - column definition\n * @returns this\n */\n public setDefaultColDef(def: ColDefExtended<TData>) {\n this.#options.defaultColDef = def;\n return this;\n }\n\n /**\n * Show loading overlay\n * @param loading\n * @returns this\n */\n public setLoading(loading?: boolean) {\n this.#options.loading = loading;\n return this;\n }\n\n /**\n * Set loading overlay custom text (default is \"Loading\")\n * @param loadingText\n * @returns this\n */\n public setLoadingText(loadingText?: string) {\n this.#options.loadingText = loadingText;\n return this;\n }\n\n /**\n * Show \"not ready overlay\n * @param notReady\n * @returns this\n */\n public setNotReady(notReady?: boolean) {\n this.#options.notReady = notReady;\n return this;\n }\n\n /**\n * Set loading overlay type\n * @param type\n * @returns this\n */\n public setLoadingOverlayType(type?: 'transparent') {\n this.#options.loadingOverlayType = type;\n return this;\n }\n\n /**\n * Set \"not ready\" text\n * @param notReadyText\n * @returns this\n */\n public setNotReadyText(notReadyText?: string) {\n this.#options.notReadyText = notReadyText;\n return this;\n }\n\n /**\n * Set \"no rows\" text when there are no rows (default is \"Empty\")\n * @param noRowsText\n * @returns this\n */\n public setNoRowsText(noRowsText?: string) {\n this.#options.noRowsText = noRowsText;\n return this;\n }\n\n /**\n * Set row selection options\n * @param rowSelection\n * @returns this\n */\n public setRowSelection(rowSelection?: RowSelectionOptions) {\n this.#options.rowSelection = rowSelection;\n return this;\n }\n\n /**\n * Set row data\n * @param rowData\n * @returns this\n */\n public setRowData(rowData?: TData[]) {\n this.#options.rowData = rowData;\n return this;\n }\n\n /**\n * Set components\n * @param components\n * @returns this\n */\n public setComponents(components?: Record<string, Component>) {\n this.#options.components = components;\n return this;\n }\n\n /**\n * Set an option\n * @param key - option key\n * @param value - option value\n * @returns this\n */\n public setOption<K extends keyof GridOptionsExtended<TData>>(key: K, value: GridOptionsExtended<TData>[K]) {\n this.#options[key] = value;\n return this;\n }\n\n /**\n * Add an extended column definition\n * @param def - column definition\n * @returns this\n */\n public column<TValue = any>(def: ColDefExtended<TData, TValue>) {\n this.#options.columnDefs = [...this.columnDefs, def];\n return this;\n }\n\n /**\n * Show row numbers column\n * @param show - show or hide row numbers column\n * @returns this\n */\n public columnRowNumbers(show: boolean = true) {\n this.#options.rowNumbersColumn = show;\n return this;\n }\n\n /**\n * Add a file input column\n * @param def - column definition\n * @param cb - callback to set params for the file input cell renderer\n * @returns this\n */\n public columnFileInput<TValue = any>(\n def: ColDefExtended<TData, TValue> & {\n /**\n * Allowed file extensions (like ['fastq.gz'])\n */\n extensions?: string[];\n /**\n * The resolveProgress function is an optional input parameter for the component\n * that allows tracking the file upload progress in real-time.\n * By passing resolveProgress, you can ensure that the component\n * displays accurate progress values for each file as they upload.\n * How to use it in AgGrid\n * cellRendererParams: {\n * resolveProgress: (cellData) => {\n * const progresses = app.progresses;\n * if (!cellData.value.importFileHandle) return undefined;\n * else return progresses[cellData.value.importFileHandle];\n * }\n * }\n */\n resolveImportProgress?: (cellData: ICellRendererParams<TData, TValue>) => ImportProgress | undefined;\n\n /**\n * The resolveFileHandle function is an optional input parameter for the component\n * that allows tracking the file upload progress in real-time.\n * By passing resolveFileHandle, you can ensure that the component\n * displays accurate progress values for each file as they upload.\n * How to use it in AgGrid\n * cellRendererParams: {\n * resolveFileHandle: (cellData) => {\n * return cellData.value.importFileHandle;\n * }\n * }\n */\n resolveImportFileHandle?: (cellData: ICellRendererParams<TData, TValue>) => ImportFileHandle | undefined;\n\n setImportFileHandle?: (d: ValueSetterParams<TData, ImportFileHandle | undefined>) => void;\n }) {\n return this.column(Object.assign({\n cellRenderer: 'PlAgCellFile',\n headerComponentParams: { type: 'File' },\n cellStyle: { padding: 0 },\n valueSetter: (d: ValueSetterParams<TData, ImportFileHandle | undefined>) => {\n def.setImportFileHandle?.(d);\n return true;\n },\n cellRendererSelector: (cellData: ICellRendererParams<TData, TValue>) => {\n return {\n component: 'PlAgCellFile',\n params: {\n extensions: def.extensions,\n value: def.resolveImportFileHandle?.(cellData),\n resolveProgress: () => {\n return def.resolveImportProgress?.(cellData);\n },\n },\n };\n },\n }, def));\n }\n\n public build() {\n return this.#options;\n }\n}\n\n// Simple helper to use like column<string> in grid options literal\ntype ColumnFunc<TData> = <TValue>(def: ColDefExtended<TData, TValue>) => ColDefExtended<TData, TValue>;\n\n/**\n * Returns a set of Ag Grid options along with a reference to the Ag Grid API.\n * (This is a fast prototype)\n *\n * @example\n * ```ts\n * const { gridOptions, gridApi } = useAgGridOptions(() => ({\n * // custom grid options here\n * }));\n *\n * // Usage in a template (v-bind is required!)\n * <template>\n * <AgGridVue :style=\"{ height: '100%' }\" v-bind=\"gridOptions\" />\n * </template>\n * ```\n */\nexport function useAgGridOptions<TData>(\n factory: (context: { builder: Builder<TData>; column: ColumnFunc<TData> }) => Builder<TData> | GridOptionsExtended<TData>,\n) {\n const gridApi = shallowRef<GridApi>();\n\n const extOptions = computed<GridOptionsExtended>(() => {\n const def: GridOptionsExtended<TData> = {\n theme: AgGridTheme,\n loadingOverlayComponent: PlAgOverlayLoading,\n noRowsOverlayComponent: PlAgOverlayNoRows,\n onGridReady: (e: GridReadyEvent) => {\n gridApi.value = e.api;\n autoSizeRowNumberColumn(e.api); // @TODO\n },\n };\n\n const column = <TValue>(def: ColDefExtended<TData, TValue>) => {\n return def;\n };\n\n const result = factory({ builder: new Builder(), column });\n\n const options = Object.assign({}, def, result instanceof Builder ? result.build() : result);\n\n if (options.rowNumbersColumn) {\n options.columnDefs = [makeRowNumberColDef(), ...(options.columnDefs ?? [])];\n }\n\n if (options.noRowsText) {\n options.noRowsOverlayComponentParams = {\n text: options.noRowsText,\n };\n }\n\n if ('loadingOverlayComponentParams' in options) {\n console.warn('useAgGridOptions: remove loadingOverlayComponentParams from options, use loading, notReady, loadingText, loadingOverlayType instead');\n }\n\n options.loading = options.notReady || options.loading;\n\n options.columnDefs = options.columnDefs?.map((it) => createAgGridColDef(it));\n\n // Register all special components\n options.components = Object.assign({}, options.components ?? {}, {\n PlAgCellFile,\n PlAgChartStackedBarCell,\n PlAgChartHistogramCell,\n PlAgCellStatusTag,\n });\n\n return options;\n });\n\n const gridOptions = computed<GridOptions>(() => {\n const options = extOptions.value;\n\n return {\n ...options,\n loadingOverlayComponentParams: {\n notReady: options.notReady,\n notReadyText: options.notReadyText,\n overlayType: options.loadingOverlayType,\n } satisfies PlAgOverlayLoadingParams,\n };\n });\n\n whenever(() => extOptions.value.rowNumbersColumn, () => {\n if (gridApi.value) {\n autoSizeRowNumberColumn(gridApi.value);\n }\n });\n\n watch([\n () => extOptions.value.notReady,\n () => extOptions.value.loading,\n ], ([notReady, loading]) => {\n const loadingOverlayComponentParams = {\n notReady,\n // we probably don't need to update the parameters below\n notReadyText: extOptions.value.notReadyText,\n overlayType: extOptions.value.loadingOverlayType,\n loadingText: extOptions.value.loadingText,\n } satisfies PlAgOverlayLoadingParams;\n\n // Hack to apply loadingOverlayComponentParams\n gridApi.value?.updateGridOptions({\n loading: !loading,\n loadingOverlayComponentParams,\n });\n\n gridApi.value?.updateGridOptions({\n loading,\n loadingOverlayComponentParams,\n });\n }, { deep: true, immediate: true });\n\n return { gridOptions, gridApi };\n};\n"],"names":["Builder","__privateAdd","_options","options","__privateSet","__privateGet","def","loading","loadingText","notReady","type","notReadyText","noRowsText","rowSelection","rowData","components","key","value","show","d","_a","cellData","useAgGridOptions","factory","gridApi","shallowRef","extOptions","computed","AgGridTheme","PlAgOverlayLoading","PlAgOverlayNoRows","e","autoSizeRowNumberColumn","column","result","makeRowNumberColDef","it","createAgGridColDef","PlAgCellFile","PlAgChartStackedBarCell","PlAgChartHistogramCell","PlAgCellStatusTag","gridOptions","whenever","watch","loadingOverlayComponentParams","_b"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"BlockLayout.vue.d.ts","sourceRoot":"","sources":["../../src/components/BlockLayout.vue"],"names":[],"mappings":"AAwDA,OAAO,sBAAsB,CAAC;;AAuJ9B,wBAKG"}
1
+ {"version":3,"file":"BlockLayout.vue.d.ts","sourceRoot":"","sources":["../../src/components/BlockLayout.vue"],"names":[],"mappings":"AAgEA,OAAO,sBAAsB,CAAC;;AA6J9B,wBAKG"}
@@ -1,53 +1,10 @@
1
- (function(){"use strict";try{if(typeof document<"u"){var o=document.createElement("style");o.appendChild(document.createTextNode('.block{flex:1;background-color:#fff;max-height:100%;max-width:100%;width:100%;height:100%;position:relative;display:flex;flex-direction:column;--thumb-color: var(--ic-02);overflow-y:auto;overflow-x:auto}.block::-webkit-scrollbar{width:var(--scrollbar-width, 6px);height:5px;background-color:transparent;display:block}.block::-webkit-scrollbar-thumb{background:var(--thumb-color);border-radius:5px}.block::-webkit-scrollbar-thumb:hover{--thumb-color: var(--border-color-focus)}.block__not-found,.block__loader-page{display:flex;flex-direction:column;flex:1;align-items:center;justify-content:center}.block__loader-page .loader-container{display:flex;transform:scale(8)}.block__loader-page .loader-icon{animation:spin 4s linear infinite;background-color:#ccc;margin:auto}.block__layout{padding:0}.block__loader{height:4px;background-color:transparent;position:absolute;z-index:1;top:0;right:0;left:0;overflow:hidden}.block__loader:before{content:"";position:absolute;left:-50%;height:4px;width:33%;background-color:var(--border-color-focus);animation:loader-animation 1.3s linear infinite}.block__progress{--progress-width: 0%;height:4px;background-color:transparent;position:absolute;top:0;right:0;left:0;overflow:hidden}.block__progress:before{content:"";position:absolute;left:0;height:4px;width:var(--progress-width);background-color:var(--border-color-focus);will-change:width;background-image:linear-gradient(90deg,#0000,#fffc,#0000);background-position:0 0;background-size:80px 100%;background-repeat:repeat-y;animation:shine-animation 1.2s linear infinite}@keyframes shine-animation{0%{background-position:-160px 0}to{background-position:calc(100% + 80px) 0}}.block__error{background:var(--txt-error);color:#fff;max-height:50vh;padding:16px 24px;-webkit-user-select:auto;user-select:auto;width:100%;overflow:auto;display:flex;flex-direction:column;--thumb-color: var(--ic-02);overflow-y:auto;overflow-x:auto}.block__error::-webkit-scrollbar{width:var(--scrollbar-width, 6px);height:5px;background-color:transparent;display:block}.block__error::-webkit-scrollbar-thumb{background:var(--thumb-color);border-radius:5px}.block__error::-webkit-scrollbar-thumb:hover{--thumb-color: var(--border-color-focus)}.block__error pre{white-space:pre-wrap;margin:0}.block .scroll-content{height:100%;display:flex;flex-direction:column}.block .scroll-content>div:last-child{flex:1;overflow:auto}@keyframes loader-animation{0%{left:-40%}50%{left:20%;width:38%}to{left:100%;width:50%}}')),document.head.appendChild(o)}}catch(r){console.error("vite-plugin-css-injected-by-js",r)}})();
2
- import { defineComponent as _, computed as a, createElementBlock as i, openBlock as t, Fragment as k, createElementVNode as h, createBlock as s, createCommentVNode as c, createVNode as y, unref as n, toDisplayString as g, withCtx as N, createTextVNode as w, resolveDynamicComponent as C } from "vue";
3
-
4
- import { useSdkPlugin as E } from "../defineApp.js";
5
- import V from "./NotFound.vue.js";
6
- import x from "./LoaderPage.vue.js";
7
- import B from "./PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue.js";
8
- import L from "./BlockLoader.vue.js";
9
- import $ from "../plugins/Monetization/MonetizationSidebar.vue.js";
10
- const A = { class: "block block__layout" }, P = { key: 0 }, q = /* @__PURE__ */ _({
11
- __name: "BlockLayout",
12
- setup(S) {
13
- const o = E(), m = (e) => {
14
- try {
15
- return new URL(e, "http://dummy").pathname;
16
- } catch {
17
- console.error("Invalid href", e);
18
- return;
19
- }
20
- }, p = a(() => o.loaded ? o.useApp().href : void 0), l = a(() => {
21
- if (o.loaded) {
22
- const e = o.useApp(), r = m(e.snapshot.navigationState.href);
23
- return r ? e.getRoute(r) : void 0;
24
- }
25
- }), u = a(() => o.loaded ? o.useApp() : void 0), d = a(() => u.value ? u.value.model.outputErrors : {}), v = a(() => {
26
- var e;
27
- return ((e = u.value) == null ? void 0 : e.showErrorsNotification) ?? !0;
28
- }), f = a(() => {
29
- var e, r;
30
- return (r = (e = u.value) == null ? void 0 : e.progress) == null ? void 0 : r.call(e);
31
- });
32
- return (e, r) => (t(), i(k, null, [
33
- h("div", A, [
34
- y(L, { value: f.value }, null, 8, ["value"]),
35
- n(o).error ? (t(), i("div", P, g(n(o).error), 1)) : n(o).loaded ? l.value ? (t(), s(C(l.value), { key: p.value })) : (t(), s(V, { key: 3 })) : (t(), s(x, { key: 1 }, {
36
- default: N(() => r[0] || (r[0] = [
37
- w("Loading...")
38
- ])),
39
- _: 1
40
- })),
41
- n(o).loaded && v.value ? (t(), s(n(B), {
42
- key: 4,
43
- errors: d.value
44
- }, null, 8, ["errors"])) : c("", !0)
45
- ]),
46
- l.value ? (t(), s(n($), { key: 0 })) : c("", !0)
47
- ], 64));
48
- }
49
- });
1
+ import o from "./BlockLayout.vue2.js";
2
+ import s from "./BlockLayout.vue3.js";
3
+ import t from "../_virtual/_plugin-vue_export-helper.js";
4
+ const r = {
5
+ $style: s
6
+ }, f = /* @__PURE__ */ t(o, [["__cssModules", r]]);
50
7
  export {
51
- q as default
8
+ f as default
52
9
  };
53
10
  //# sourceMappingURL=BlockLayout.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BlockLayout.vue.js","sources":["../../src/components/BlockLayout.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport '../assets/block.scss';\nimport { computed } from 'vue';\nimport { useSdkPlugin } from '../defineApp';\nimport NotFound from './NotFound.vue';\nimport LoaderPage from './LoaderPage.vue';\nimport { PlAppErrorNotificationAlert } from './PlAppErrorNotificationAlert';\nimport BlockLoader from './BlockLoader.vue';\nimport { MonetizationSidebar } from '../plugins/Monetization';\n\nconst sdk = useSdkPlugin();\n\nconst parsePathname = (href: `/${string}`) => {\n try {\n return new URL(href, 'http://dummy').pathname as `/${string}`;\n } catch (_cause) {\n console.error('Invalid href', href);\n return undefined;\n }\n};\n\nconst href = computed(() => (sdk.loaded ? sdk.useApp().href : undefined));\n\nconst CurrentView = computed(() => {\n if (sdk.loaded) {\n const app = sdk.useApp();\n const pathname = parsePathname(app.snapshot.navigationState.href);\n return pathname ? app.getRoute(pathname) : undefined;\n }\n\n return undefined;\n});\n\nconst app = computed(() => (sdk.loaded ? sdk.useApp() : undefined));\n\nconst errors = computed(() => (app.value ? app.value.model.outputErrors : {}));\n\nconst showErrorsNotification = computed(() => app.value?.showErrorsNotification ?? true);\n\nconst progress = computed(() => app.value?.progress?.());\n</script>\n\n<template>\n <div class=\"block block__layout\">\n <BlockLoader :value=\"progress\" />\n <div v-if=\"sdk.error\">{{ sdk.error }}</div>\n <LoaderPage v-else-if=\"!sdk.loaded\">Loading...</LoaderPage>\n <component :is=\"CurrentView\" v-else-if=\"CurrentView\" :key=\"href\" />\n <NotFound v-else />\n <PlAppErrorNotificationAlert v-if=\"sdk.loaded && showErrorsNotification\" :errors=\"errors\" />\n </div>\n <!-- Plugins -->\n <MonetizationSidebar v-if=\"CurrentView\" />\n</template>\n"],"names":["sdk","useSdkPlugin","parsePathname","href","computed","CurrentView","app","pathname","errors","showErrorsNotification","_a","progress","_b"],"mappings":";;;;;;;;;;;AAUA,UAAMA,IAAMC,EAAa,GAEnBC,IAAgB,CAACC,MAAuB;AACxC,UAAA;AACF,eAAO,IAAI,IAAIA,GAAM,cAAc,EAAE;AAAA,cACtB;AACP,gBAAA,MAAM,gBAAgBA,CAAI;AAC3B;AAAA,MAAA;AAAA,IAEX,GAEMA,IAAOC,EAAS,MAAOJ,EAAI,SAASA,EAAI,OAAA,EAAS,OAAO,MAAU,GAElEK,IAAcD,EAAS,MAAM;AACjC,UAAIJ,EAAI,QAAQ;AACRM,cAAAA,IAAMN,EAAI,OAAO,GACjBO,IAAWL,EAAcI,EAAI,SAAS,gBAAgB,IAAI;AAChE,eAAOC,IAAWD,EAAI,SAASC,CAAQ,IAAI;AAAA,MAAA;AAAA,IAGtC,CACR,GAEKD,IAAMF,EAAS,MAAOJ,EAAI,SAASA,EAAI,WAAW,MAAU,GAE5DQ,IAASJ,EAAS,MAAOE,EAAI,QAAQA,EAAI,MAAM,MAAM,eAAe,EAAG,GAEvEG,IAAyBL,EAAS,MAAA;;AAAM,eAAAM,IAAAJ,EAAI,UAAJ,gBAAAI,EAAW,2BAA0B;AAAA,KAAI,GAEjFC,IAAWP,EAAS,MAAA;;AAAM,cAAAQ,KAAAF,IAAAJ,EAAI,UAAJ,gBAAAI,EAAW,aAAX,gBAAAE,EAAA,KAAAF;AAAA,KAAuB;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"BlockLayout.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -1,5 +1,56 @@
1
- import f from "./BlockLayout.vue.js";
1
+ (function(){"use strict";try{if(typeof document<"u"){var o=document.createElement("style");o.appendChild(document.createTextNode('.block{flex:1;background-color:#fff;max-height:100%;max-width:100%;width:100%;height:100%;position:relative;display:flex;flex-direction:column;--thumb-color: var(--ic-02);overflow-y:auto;overflow-x:auto}.block::-webkit-scrollbar{width:var(--scrollbar-width, 6px);height:5px;background-color:transparent;display:block}.block::-webkit-scrollbar-thumb{background:var(--thumb-color);border-radius:5px}.block::-webkit-scrollbar-thumb:hover{--thumb-color: var(--border-color-focus)}.block__not-found,.block__loader-page{display:flex;flex-direction:column;flex:1;align-items:center;justify-content:center}.block__loader-page .loader-container{display:flex;transform:scale(8)}.block__loader-page .loader-icon{animation:spin 4s linear infinite;background-color:#ccc;margin:auto}.block__layout{padding:0}.block__loader{height:4px;background-color:transparent;position:absolute;z-index:1;top:0;right:0;left:0;overflow:hidden}.block__loader:before{content:"";position:absolute;left:-50%;height:4px;width:33%;background-color:var(--border-color-focus);animation:loader-animation 1.3s linear infinite}.block__progress{--progress-width: 0%;height:4px;background-color:transparent;position:absolute;top:0;right:0;left:0;overflow:hidden}.block__progress:before{content:"";position:absolute;left:0;height:4px;width:var(--progress-width);background-color:var(--border-color-focus);will-change:width;background-image:linear-gradient(90deg,#0000,#fffc,#0000);background-position:0 0;background-size:80px 100%;background-repeat:repeat-y;animation:shine-animation 1.2s linear infinite}@keyframes shine-animation{0%{background-position:-160px 0}to{background-position:calc(100% + 80px) 0}}.block__error{background:var(--txt-error);color:#fff;max-height:50vh;padding:16px 24px;-webkit-user-select:auto;user-select:auto;width:100%;overflow:auto;display:flex;flex-direction:column;--thumb-color: var(--ic-02);overflow-y:auto;overflow-x:auto}.block__error::-webkit-scrollbar{width:var(--scrollbar-width, 6px);height:5px;background-color:transparent;display:block}.block__error::-webkit-scrollbar-thumb{background:var(--thumb-color);border-radius:5px}.block__error::-webkit-scrollbar-thumb:hover{--thumb-color: var(--border-color-focus)}.block__error pre{white-space:pre-wrap;margin:0}.block .scroll-content{height:100%;display:flex;flex-direction:column}.block .scroll-content>div:last-child{flex:1;overflow:auto}@keyframes loader-animation{0%{left:-40%}50%{left:20%;width:38%}to{left:100%;width:50%}}')),document.head.appendChild(o)}}catch(r){console.error("vite-plugin-css-injected-by-js",r)}})();
2
+ import { defineComponent as _, computed as a, createElementBlock as i, openBlock as t, Fragment as k, createElementVNode as y, createBlock as s, createCommentVNode as c, createVNode as h, unref as n, normalizeClass as g, toDisplayString as C, withCtx as N, createTextVNode as w, resolveDynamicComponent as E } from "vue";
3
+
4
+ import { useSdkPlugin as V } from "../defineApp.js";
5
+ import $ from "./NotFound.vue.js";
6
+ import B from "./LoaderPage.vue.js";
7
+ import L from "./PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue.js";
8
+ import x from "./BlockLoader.vue.js";
9
+ import A from "../plugins/Monetization/MonetizationSidebar.vue.js";
10
+ const P = { class: "block block__layout" }, j = /* @__PURE__ */ _({
11
+ __name: "BlockLayout",
12
+ setup(S) {
13
+ const o = V(), m = (e) => {
14
+ try {
15
+ return new URL(e, "http://dummy").pathname;
16
+ } catch {
17
+ console.error("Invalid href", e);
18
+ return;
19
+ }
20
+ }, p = a(() => o.loaded ? o.useApp().href : void 0), u = a(() => {
21
+ if (o.loaded) {
22
+ const e = o.useApp(), r = m(e.snapshot.navigationState.href);
23
+ return r ? e.getRoute(r) : void 0;
24
+ }
25
+ }), l = a(() => o.loaded ? o.useApp() : void 0), d = a(() => l.value ? l.value.model.outputErrors : {}), v = a(() => {
26
+ var e;
27
+ return ((e = l.value) == null ? void 0 : e.showErrorsNotification) ?? !0;
28
+ }), f = a(() => {
29
+ var e, r;
30
+ return (r = (e = l.value) == null ? void 0 : e.progress) == null ? void 0 : r.call(e);
31
+ });
32
+ return (e, r) => (t(), i(k, null, [
33
+ y("div", P, [
34
+ h(x, { value: f.value }, null, 8, ["value"]),
35
+ n(o).error ? (t(), i("div", {
36
+ key: 0,
37
+ class: g(e.$style.error)
38
+ }, C(n(o).error), 3)) : n(o).loaded ? u.value ? (t(), s(E(u.value), { key: p.value })) : (t(), s($, { key: 3 })) : (t(), s(B, { key: 1 }, {
39
+ default: N(() => r[0] || (r[0] = [
40
+ w("Loading...")
41
+ ])),
42
+ _: 1
43
+ })),
44
+ n(o).loaded && v.value ? (t(), s(n(L), {
45
+ key: 4,
46
+ errors: d.value
47
+ }, null, 8, ["errors"])) : c("", !0)
48
+ ]),
49
+ u.value ? (t(), s(n(A), { key: 0 })) : c("", !0)
50
+ ], 64));
51
+ }
52
+ });
2
53
  export {
3
- f as default
54
+ j as default
4
55
  };
5
56
  //# sourceMappingURL=BlockLayout.vue2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BlockLayout.vue2.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"BlockLayout.vue2.js","sources":["../../src/components/BlockLayout.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport '../assets/block.scss';\nimport { computed } from 'vue';\nimport { useSdkPlugin } from '../defineApp';\nimport NotFound from './NotFound.vue';\nimport LoaderPage from './LoaderPage.vue';\nimport { PlAppErrorNotificationAlert } from './PlAppErrorNotificationAlert';\nimport BlockLoader from './BlockLoader.vue';\nimport { MonetizationSidebar } from '../plugins/Monetization';\n\nconst sdk = useSdkPlugin();\n\nconst parsePathname = (href: `/${string}`) => {\n try {\n return new URL(href, 'http://dummy').pathname as `/${string}`;\n } catch (_cause) {\n console.error('Invalid href', href);\n return undefined;\n }\n};\n\nconst href = computed(() => (sdk.loaded ? sdk.useApp().href : undefined));\n\nconst CurrentView = computed(() => {\n if (sdk.loaded) {\n const app = sdk.useApp();\n const pathname = parsePathname(app.snapshot.navigationState.href);\n return pathname ? app.getRoute(pathname) : undefined;\n }\n\n return undefined;\n});\n\nconst app = computed(() => (sdk.loaded ? sdk.useApp() : undefined));\n\nconst errors = computed(() => (app.value ? app.value.model.outputErrors : {}));\n\nconst showErrorsNotification = computed(() => app.value?.showErrorsNotification ?? true);\n\nconst progress = computed(() => app.value?.progress?.());\n</script>\n\n<template>\n <div class=\"block block__layout\">\n <BlockLoader :value=\"progress\" />\n <div v-if=\"sdk.error\" :class=\"$style.error\">{{ sdk.error }}</div>\n <LoaderPage v-else-if=\"!sdk.loaded\">Loading...</LoaderPage>\n <component :is=\"CurrentView\" v-else-if=\"CurrentView\" :key=\"href\" />\n <NotFound v-else />\n <PlAppErrorNotificationAlert v-if=\"sdk.loaded && showErrorsNotification\" :errors=\"errors\" />\n </div>\n <!-- Plugins -->\n <MonetizationSidebar v-if=\"CurrentView\" />\n</template>\n\n<style module>\n.error {\n color: red;\n font-weight: bold;\n padding: 24px;\n}\n</style>\n"],"names":["sdk","useSdkPlugin","parsePathname","href","computed","CurrentView","app","pathname","errors","showErrorsNotification","_a","progress","_b"],"mappings":";;;;;;;;;;;AAUA,UAAMA,IAAMC,EAAa,GAEnBC,IAAgB,CAACC,MAAuB;AACxC,UAAA;AACF,eAAO,IAAI,IAAIA,GAAM,cAAc,EAAE;AAAA,cACtB;AACP,gBAAA,MAAM,gBAAgBA,CAAI;AAC3B;AAAA,MAAA;AAAA,IAEX,GAEMA,IAAOC,EAAS,MAAOJ,EAAI,SAASA,EAAI,OAAA,EAAS,OAAO,MAAU,GAElEK,IAAcD,EAAS,MAAM;AACjC,UAAIJ,EAAI,QAAQ;AACRM,cAAAA,IAAMN,EAAI,OAAO,GACjBO,IAAWL,EAAcI,EAAI,SAAS,gBAAgB,IAAI;AAChE,eAAOC,IAAWD,EAAI,SAASC,CAAQ,IAAI;AAAA,MAAA;AAAA,IAGtC,CACR,GAEKD,IAAMF,EAAS,MAAOJ,EAAI,SAASA,EAAI,WAAW,MAAU,GAE5DQ,IAASJ,EAAS,MAAOE,EAAI,QAAQA,EAAI,MAAM,MAAM,eAAe,EAAG,GAEvEG,IAAyBL,EAAS,MAAA;;AAAM,eAAAM,IAAAJ,EAAI,UAAJ,gBAAAI,EAAW,2BAA0B;AAAA,KAAI,GAEjFC,IAAWP,EAAS,MAAA;;AAAM,cAAAQ,KAAAF,IAAAJ,EAAI,UAAJ,gBAAAI,EAAW,aAAX,gBAAAE,EAAA,KAAAF;AAAA,KAAuB;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,9 @@
1
+ (function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode("._error_rqtei_2{color:red;font-weight:700;padding:24px}")),document.head.appendChild(e)}}catch(t){console.error("vite-plugin-css-injected-by-js",t)}})();
2
+ const r = "_error_rqtei_2", e = {
3
+ error: r
4
+ };
5
+ export {
6
+ e as default,
7
+ r as error
8
+ };
9
+ //# sourceMappingURL=BlockLayout.vue3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlockLayout.vue3.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"NotFound.vue.d.ts","sourceRoot":"","sources":["../../src/components/NotFound.vue"],"names":[],"mappings":";AA8FA,wBAMG"}
1
+ {"version":3,"file":"NotFound.vue.d.ts","sourceRoot":"","sources":["../../src/components/NotFound.vue"],"names":[],"mappings":";AA0FA,wBAMG"}
@@ -1,21 +1,19 @@
1
- import { defineComponent as a, createElementBlock as i, openBlock as s, createElementVNode as p, createVNode as u, toDisplayString as d, unref as n, withModifiers as c, withCtx as f, createTextVNode as l } from "vue";
1
+ import { defineComponent as r, createElementBlock as i, openBlock as s, createElementVNode as a, createVNode as p, toDisplayString as u, unref as e, withModifiers as d, withCtx as c, createTextVNode as l } from "vue";
2
2
  import "../lib/ui/uikit/dist/index.js";
3
3
  import { useSdkPlugin as m } from "../defineApp.js";
4
- import _ from "../lib/ui/uikit/dist/components/PlBtnSecondary/PlBtnSecondary.vue.js";
5
- const k = { class: "block__not-found" }, C = /* @__PURE__ */ a({
4
+ import f from "../lib/ui/uikit/dist/components/PlBtnSecondary/PlBtnSecondary.vue.js";
5
+ const _ = { class: "block__not-found" }, S = /* @__PURE__ */ r({
6
6
  __name: "NotFound",
7
- setup(g) {
8
- const t = m().useApp(), r = () => {
9
- t.updateNavigationState((o) => {
10
- o.href = "/";
11
- });
7
+ setup(k) {
8
+ const t = m().useApp(), n = () => {
9
+ t.navigateTo("/");
12
10
  };
13
- return (o, e) => (s(), i("div", k, [
14
- p("h1", null, "Not found route: " + d(n(t).snapshot.navigationState.href), 1),
15
- u(n(_), {
16
- onClick: c(r, ["stop"])
11
+ return (h, o) => (s(), i("div", _, [
12
+ a("h1", null, "Not found route: " + u(e(t).snapshot.navigationState.href), 1),
13
+ p(e(f), {
14
+ onClick: d(n, ["stop"])
17
15
  }, {
18
- default: f(() => e[0] || (e[0] = [
16
+ default: c(() => o[0] || (o[0] = [
19
17
  l("Return to main page")
20
18
  ])),
21
19
  _: 1
@@ -24,6 +22,6 @@ const k = { class: "block__not-found" }, C = /* @__PURE__ */ a({
24
22
  }
25
23
  });
26
24
  export {
27
- C as default
25
+ S as default
28
26
  };
29
27
  //# sourceMappingURL=NotFound.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NotFound.vue.js","sources":["../../src/components/NotFound.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { PlBtnSecondary } from '@milaboratories/uikit';\nimport { useSdkPlugin } from '../defineApp';\n\nconst sdk = useSdkPlugin();\n\nconst app = sdk.useApp();\n\nconst goToMain = () => {\n app.updateNavigationState((state) => {\n state.href = '/';\n });\n};\n</script>\n\n<template>\n <div class=\"block__not-found\">\n <h1>Not found route: {{ app.snapshot.navigationState.href }}</h1>\n <PlBtnSecondary @click.stop=\"goToMain\">Return to main page</PlBtnSecondary>\n </div>\n</template>\n"],"names":["app","useSdkPlugin","goToMain","state"],"mappings":";;;;;;;AAMM,UAAAA,IAFMC,EAAa,EAET,OAAO,GAEjBC,IAAW,MAAM;AACjB,MAAAF,EAAA,sBAAsB,CAACG,MAAU;AACnC,QAAAA,EAAM,OAAO;AAAA,MAAA,CACd;AAAA,IACH;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"NotFound.vue.js","sources":["../../src/components/NotFound.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { PlBtnSecondary } from '@milaboratories/uikit';\nimport { useSdkPlugin } from '../defineApp';\n\nconst sdk = useSdkPlugin();\n\nconst app = sdk.useApp();\n\nconst goToMain = () => {\n app.navigateTo('/');\n};\n</script>\n\n<template>\n <div class=\"block__not-found\">\n <h1>Not found route: {{ app.snapshot.navigationState.href }}</h1>\n <PlBtnSecondary @click.stop=\"goToMain\">Return to main page</PlBtnSecondary>\n </div>\n</template>\n"],"names":["app","useSdkPlugin","goToMain"],"mappings":";;;;;;;AAMM,UAAAA,IAFMC,EAAa,EAET,OAAO,GAEjBC,IAAW,MAAM;AACrB,MAAAF,EAAI,WAAW,GAAG;AAAA,IACpB;;;;;;;;;;;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { AxisId, PlDataTableStateV2, PlSelectionModel, PTableKey } from '@platforma-sdk/model';
2
2
  import { CellRendererSelectorFunc } from 'ag-grid-enterprise';
3
- import { PlAgDataTableV2Row, PlDataTableSettingsV2, PlTableLabeledSelectionModel } from './types';
3
+ import { PlAgDataTableV2Row, PlDataTableSettingsV2 } from './types';
4
4
  type __VLS_Props = {
5
5
  /** Required component settings */
6
6
  settings: Readonly<PlDataTableSettingsV2>;
@@ -52,7 +52,6 @@ type __VLS_Props = {
52
52
  type __VLS_PublicProps = {
53
53
  modelValue: PlDataTableStateV2;
54
54
  'selection'?: PlSelectionModel;
55
- 'selectionLabeled'?: PlTableLabeledSelectionModel;
56
55
  } & __VLS_Props;
57
56
  declare function __VLS_template(): {
58
57
  attrs: Partial<{}>;
@@ -71,13 +70,11 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_PublicProps,
71
70
  rowDoubleClicked: (key?: PTableKey | undefined) => any;
72
71
  cellButtonClicked: (key?: PTableKey | undefined) => any;
73
72
  "update:selection": (value: PlSelectionModel) => any;
74
- "update:selectionLabeled": (value: PlTableLabeledSelectionModel) => any;
75
73
  }, string, import('vue').PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
76
74
  "onUpdate:modelValue"?: ((value: PlDataTableStateV2) => any) | undefined;
77
75
  onRowDoubleClicked?: ((key?: PTableKey | undefined) => any) | undefined;
78
76
  onCellButtonClicked?: ((key?: PTableKey | undefined) => any) | undefined;
79
77
  "onUpdate:selection"?: ((value: PlSelectionModel) => any) | undefined;
80
- "onUpdate:selectionLabeled"?: ((value: PlTableLabeledSelectionModel) => any) | undefined;
81
78
  }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
82
79
  declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
83
80
  export default _default;
@@ -1 +1 @@
1
- {"version":3,"file":"PlAgDataTableV2.vue.d.ts","sourceRoot":"","sources":["../../../src/components/PlAgDataTable/PlAgDataTableV2.vue"],"names":[],"mappings":"AA0kBA,OAAO,KAAK,EACV,MAAM,EAGN,kBAAkB,EAClB,gBAAgB,EAGhB,SAAS,EACV,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EACV,wBAAwB,EAQzB,MAAM,oBAAoB,CAAC;AAiB5B,OAAO,KAAK,EAEV,kBAAkB,EAGlB,qBAAqB,EAErB,4BAA4B,EAE7B,MAAM,SAAS,CAAC;AAQjB,KAAK,WAAW,GAAG;IACjB,kCAAkC;IAClC,QAAQ,EAAE,QAAQ,CAAC,qBAAqB,CAAC,CAAC;IAE1C;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;OAEG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;;;;;OAMG;IACH,iCAAiC,CAAC,EAAE,OAAO,CAAC;IAE5C,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,yDAAyD;IACzD,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,wBAAwB,CAAC,kBAAkB,CAAC,CAAC;CACrE,CAAC;AA6aF,KAAK,iBAAiB,GAAG;IACzB,UAAU,EAAE,kBAAkB,CAAC;IAC/B,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,kBAAkB,CAAC,EAAE,4BAA4B,CAAC;CACjD,GAAG,WAAW,CAAC;AAOhB,iBAAS,cAAc;WAuGT,OAAO,IAA6B;;iCAXZ,GAAG;gCACJ,GAAG;;;;EAevC;AAsBD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;;;;;;;;;;;;;6FASnB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAapG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
1
+ {"version":3,"file":"PlAgDataTableV2.vue.d.ts","sourceRoot":"","sources":["../../../src/components/PlAgDataTable/PlAgDataTableV2.vue"],"names":[],"mappings":"AAijBA,OAAO,KAAK,EACV,MAAM,EAGN,kBAAkB,EAClB,gBAAgB,EAGhB,SAAS,EACV,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EACV,wBAAwB,EAQzB,MAAM,oBAAoB,CAAC;AAiB5B,OAAO,KAAK,EAEV,kBAAkB,EAGlB,qBAAqB,EAGtB,MAAM,SAAS,CAAC;AAOjB,KAAK,WAAW,GAAG;IACjB,kCAAkC;IAClC,QAAQ,EAAE,QAAQ,CAAC,qBAAqB,CAAC,CAAC;IAE1C;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;OAEG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;;;;;OAMG;IACH,iCAAiC,CAAC,EAAE,OAAO,CAAC;IAE5C,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,yDAAyD;IACzD,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,wBAAwB,CAAC,kBAAkB,CAAC,CAAC;CACrE,CAAC;AAsZF,KAAK,iBAAiB,GAAG;IACzB,UAAU,EAAE,kBAAkB,CAAC;IAC/B,WAAW,CAAC,EAAE,gBAAgB,CAAC;CAC9B,GAAG,WAAW,CAAC;AAMhB,iBAAS,cAAc;WAuGT,OAAO,IAA6B;;iCAXZ,GAAG;gCACJ,GAAG;;;;EAevC;AAsBD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;;;;;;;;;;;6FASnB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAapG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}