@platforma-sdk/ui-vue 1.58.8 → 1.58.9

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 (487) hide show
  1. package/.turbo/turbo-build.log +195 -181
  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 +8 -0
  6. package/dist/AgGridVue/createAgGridColDef.js +73 -43
  7. package/dist/AgGridVue/createAgGridColDef.js.map +1 -1
  8. package/dist/AgGridVue/selection.js +55 -47
  9. package/dist/AgGridVue/selection.js.map +1 -1
  10. package/dist/AgGridVue/useAgGridOptions.js +212 -229
  11. package/dist/AgGridVue/useAgGridOptions.js.map +1 -1
  12. package/dist/_virtual/_plugin-vue_export-helper.js +5 -9
  13. package/dist/_virtual/_rolldown/runtime.js +15 -0
  14. package/dist/aggrid.js +48 -46
  15. package/dist/aggrid.js.map +1 -1
  16. package/dist/assets/block.css +1 -1
  17. package/dist/assets/ui.css +1 -0
  18. package/dist/components/BlockLayout.js +7 -0
  19. package/dist/components/BlockLayout.js.map +1 -0
  20. package/dist/components/BlockLayout.style.js +4 -0
  21. package/dist/components/BlockLayout.style.js.map +1 -0
  22. package/dist/components/BlockLayout.vue.css +1 -0
  23. package/dist/components/BlockLayout.vue2.js +42 -54
  24. package/dist/components/BlockLayout.vue2.js.map +1 -1
  25. package/dist/components/BlockLoader.js +5 -0
  26. package/dist/components/BlockLoader.js.map +1 -0
  27. package/dist/components/BlockLoader.vue2.js +22 -5
  28. package/dist/components/BlockLoader.vue2.js.map +1 -1
  29. package/dist/components/LoaderPage.js +10 -0
  30. package/dist/components/LoaderPage.js.map +1 -0
  31. package/dist/components/NotFound.js +5 -0
  32. package/dist/components/NotFound.js.map +1 -0
  33. package/dist/components/NotFound.vue2.js +18 -5
  34. package/dist/components/NotFound.vue2.js.map +1 -1
  35. package/dist/components/PlAdvancedFilter/FilterEditor.js +7 -0
  36. package/dist/components/PlAdvancedFilter/FilterEditor.js.map +1 -0
  37. package/dist/components/PlAdvancedFilter/FilterEditor.style.js +18 -0
  38. package/dist/components/PlAdvancedFilter/FilterEditor.style.js.map +1 -0
  39. package/dist/components/PlAdvancedFilter/FilterEditor.vue.css +1 -0
  40. package/dist/components/PlAdvancedFilter/FilterEditor.vue2.js +291 -322
  41. package/dist/components/PlAdvancedFilter/FilterEditor.vue2.js.map +1 -1
  42. package/dist/components/PlAdvancedFilter/OperandButton.js +7 -0
  43. package/dist/components/PlAdvancedFilter/OperandButton.js.map +1 -0
  44. package/dist/components/PlAdvancedFilter/OperandButton.style.js +8 -0
  45. package/dist/components/PlAdvancedFilter/OperandButton.style.js.map +1 -0
  46. package/dist/components/PlAdvancedFilter/OperandButton.vue.css +1 -0
  47. package/dist/components/PlAdvancedFilter/OperandButton.vue2.js +19 -24
  48. package/dist/components/PlAdvancedFilter/OperandButton.vue2.js.map +1 -1
  49. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.js +7 -0
  50. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.js.map +1 -0
  51. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.style.js +12 -0
  52. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.style.js.map +1 -0
  53. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue.css +1 -0
  54. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue.d.ts +1 -3
  55. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue.d.ts.map +1 -1
  56. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue2.js +239 -238
  57. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue2.js.map +1 -1
  58. package/dist/components/PlAdvancedFilter/constants.js +115 -58
  59. package/dist/components/PlAdvancedFilter/constants.js.map +1 -1
  60. package/dist/components/PlAdvancedFilter/index.js +6 -6
  61. package/dist/components/PlAdvancedFilter/index.js.map +1 -1
  62. package/dist/components/PlAdvancedFilter/utils.js +49 -64
  63. package/dist/components/PlAdvancedFilter/utils.js.map +1 -1
  64. package/dist/components/PlAgCellFile/PlAgCellFile.js +5 -0
  65. package/dist/components/PlAgCellFile/PlAgCellFile.js.map +1 -0
  66. package/dist/components/PlAgCellFile/PlAgCellFile.vue2.js +36 -5
  67. package/dist/components/PlAgCellFile/PlAgCellFile.vue2.js.map +1 -1
  68. package/dist/components/PlAgCellProgress/PlAgCellProgress.js +5 -0
  69. package/dist/components/PlAgCellProgress/PlAgCellProgress.js.map +1 -0
  70. package/dist/components/PlAgCellProgress/PlAgCellProgress.vue2.js +13 -5
  71. package/dist/components/PlAgCellProgress/PlAgCellProgress.vue2.js.map +1 -1
  72. package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.js +6 -0
  73. package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.js.map +1 -0
  74. package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.vue2.js +12 -0
  75. package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.vue2.js.map +1 -0
  76. package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.js +6 -0
  77. package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.js.map +1 -0
  78. package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.style.css +1 -0
  79. package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.vue2.js +31 -0
  80. package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.vue2.js.map +1 -0
  81. package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.js +6 -0
  82. package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.js.map +1 -0
  83. package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.style.css +1 -0
  84. package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.vue2.js +19 -0
  85. package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.vue2.js.map +1 -0
  86. package/dist/components/PlAgColumnHeader/PlAgColumnHeader.js +5 -0
  87. package/dist/components/PlAgColumnHeader/PlAgColumnHeader.js.map +1 -0
  88. package/dist/components/PlAgColumnHeader/PlAgColumnHeader.vue2.js +68 -5
  89. package/dist/components/PlAgColumnHeader/PlAgColumnHeader.vue2.js.map +1 -1
  90. package/dist/components/PlAgColumnHeader/pl-ag-column-header.css +1 -1
  91. package/dist/components/PlAgCsvExporter/PlAgCsvExporter.js +5 -0
  92. package/dist/components/PlAgCsvExporter/PlAgCsvExporter.js.map +1 -0
  93. package/dist/components/PlAgCsvExporter/PlAgCsvExporter.vue2.js +26 -5
  94. package/dist/components/PlAgCsvExporter/PlAgCsvExporter.vue2.js.map +1 -1
  95. package/dist/components/PlAgCsvExporter/export-csv.js +36 -43
  96. package/dist/components/PlAgCsvExporter/export-csv.js.map +1 -1
  97. package/dist/components/PlAgDataTable/PlAgDataTableSheets.js +7 -0
  98. package/dist/components/PlAgDataTable/PlAgDataTableSheets.js.map +1 -0
  99. package/dist/components/PlAgDataTable/PlAgDataTableSheets.style.js +4 -0
  100. package/dist/components/PlAgDataTable/PlAgDataTableSheets.style.js.map +1 -0
  101. package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue.css +1 -0
  102. package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue2.js +68 -72
  103. package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue2.js.map +1 -1
  104. package/dist/components/PlAgDataTable/PlAgDataTableV2.js +7 -0
  105. package/dist/components/PlAgDataTable/PlAgDataTableV2.js.map +1 -0
  106. package/dist/components/PlAgDataTable/PlAgDataTableV2.style.js +7 -0
  107. package/dist/components/PlAgDataTable/PlAgDataTableV2.style.js.map +1 -0
  108. package/dist/components/PlAgDataTable/PlAgDataTableV2.vue.css +1 -0
  109. package/dist/components/PlAgDataTable/PlAgDataTableV2.vue2.js +307 -336
  110. package/dist/components/PlAgDataTable/PlAgDataTableV2.vue2.js.map +1 -1
  111. package/dist/components/PlAgDataTable/PlAgOverlayLoading.js +5 -0
  112. package/dist/components/PlAgDataTable/PlAgOverlayLoading.js.map +1 -0
  113. package/dist/components/PlAgDataTable/PlAgOverlayLoading.vue2.js +26 -5
  114. package/dist/components/PlAgDataTable/PlAgOverlayLoading.vue2.js.map +1 -1
  115. package/dist/components/PlAgDataTable/PlAgOverlayNoRows.js +6 -0
  116. package/dist/components/PlAgDataTable/PlAgOverlayNoRows.js.map +1 -0
  117. package/dist/components/PlAgDataTable/{PlAgOverlayNoRows.css → PlAgOverlayNoRows.style.css} +1 -1
  118. package/dist/components/PlAgDataTable/PlAgOverlayNoRows.vue2.js +14 -0
  119. package/dist/components/PlAgDataTable/PlAgOverlayNoRows.vue2.js.map +1 -0
  120. package/dist/components/PlAgDataTable/PlAgRowCount.js +5 -0
  121. package/dist/components/PlAgDataTable/PlAgRowCount.js.map +1 -0
  122. package/dist/components/PlAgDataTable/PlAgRowCount.vue2.js +23 -5
  123. package/dist/components/PlAgDataTable/PlAgRowCount.vue2.js.map +1 -1
  124. package/dist/components/PlAgDataTable/ag-override.js +4 -0
  125. package/dist/components/PlAgDataTable/ag-override.js.map +1 -0
  126. package/dist/components/PlAgDataTable/compositions/useFilterableColumns.js +25 -30
  127. package/dist/components/PlAgDataTable/compositions/useFilterableColumns.js.map +1 -1
  128. package/dist/components/PlAgDataTable/compositions/useGrid.js +102 -112
  129. package/dist/components/PlAgDataTable/compositions/useGrid.js.map +1 -1
  130. package/dist/components/PlAgDataTable/pl-ag-overlay-loading.css +1 -1
  131. package/dist/components/PlAgDataTable/pl-ag-overlay-loading.module.js +9 -0
  132. package/dist/components/PlAgDataTable/pl-ag-overlay-loading.module.js.map +1 -0
  133. package/dist/components/PlAgDataTable/sources/common.js +6 -8
  134. package/dist/components/PlAgDataTable/sources/common.js.map +1 -1
  135. package/dist/components/PlAgDataTable/sources/focus-row.js +36 -51
  136. package/dist/components/PlAgDataTable/sources/focus-row.js.map +1 -1
  137. package/dist/components/PlAgDataTable/sources/menu-items.js +10 -6
  138. package/dist/components/PlAgDataTable/sources/menu-items.js.map +1 -1
  139. package/dist/components/PlAgDataTable/sources/row-number.js +82 -94
  140. package/dist/components/PlAgDataTable/sources/row-number.js.map +1 -1
  141. package/dist/components/PlAgDataTable/sources/table-source-v2.js +178 -199
  142. package/dist/components/PlAgDataTable/sources/table-source-v2.js.map +1 -1
  143. package/dist/components/PlAgDataTable/sources/table-state-v2.js +155 -132
  144. package/dist/components/PlAgDataTable/sources/table-state-v2.js.map +1 -1
  145. package/dist/components/PlAgDataTable/sources/value-rendering.js +33 -38
  146. package/dist/components/PlAgDataTable/sources/value-rendering.js.map +1 -1
  147. package/dist/components/PlAgDataTable/types.js +54 -43
  148. package/dist/components/PlAgDataTable/types.js.map +1 -1
  149. package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.js +7 -0
  150. package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.js.map +1 -0
  151. package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.style.js +4 -0
  152. package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.style.js.map +1 -0
  153. package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue2.js +89 -100
  154. package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue2.js.map +1 -1
  155. package/dist/components/PlAgGridColumnManager/useFilteredItems.js +46 -33
  156. package/dist/components/PlAgGridColumnManager/useFilteredItems.js.map +1 -1
  157. package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.js +5 -0
  158. package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.js.map +1 -0
  159. package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue.d.ts.map +1 -1
  160. package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue2.js +37 -5
  161. package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue2.js.map +1 -1
  162. package/dist/components/PlAgRowNumCheckbox/pl-ag-row-num-checkbox.css +1 -1
  163. package/dist/components/PlAgRowNumCheckbox/pl-ag-row-num-checkbox.module.js +10 -0
  164. package/dist/components/PlAgRowNumCheckbox/pl-ag-row-num-checkbox.module.js.map +1 -0
  165. package/dist/components/PlAgRowNumHeader.js +5 -0
  166. package/dist/components/PlAgRowNumHeader.js.map +1 -0
  167. package/dist/components/PlAgRowNumHeader.vue2.js +38 -5
  168. package/dist/components/PlAgRowNumHeader.vue2.js.map +1 -1
  169. package/dist/components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.js +5 -0
  170. package/dist/components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.js.map +1 -0
  171. package/dist/components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.vue2.js +32 -5
  172. package/dist/components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.vue2.js.map +1 -1
  173. package/dist/components/PlAgTextAndButtonCell/pl-ag-text-and-button-cell.css +1 -1
  174. package/dist/components/PlAnnotations/components/AnnotationsSidebar.js +7 -0
  175. package/dist/components/PlAnnotations/components/AnnotationsSidebar.js.map +1 -0
  176. package/dist/components/PlAnnotations/components/AnnotationsSidebar.style.js +11 -0
  177. package/dist/components/PlAnnotations/components/AnnotationsSidebar.style.js.map +1 -0
  178. package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue.css +1 -0
  179. package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue2.js +102 -113
  180. package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue2.js.map +1 -1
  181. package/dist/components/PlAnnotations/components/FilterSidebar.js +7 -0
  182. package/dist/components/PlAnnotations/components/FilterSidebar.js.map +1 -0
  183. package/dist/components/PlAnnotations/components/FilterSidebar.style.js +7 -0
  184. package/dist/components/PlAnnotations/components/FilterSidebar.style.js.map +1 -0
  185. package/dist/components/PlAnnotations/components/FilterSidebar.vue.css +1 -0
  186. package/dist/components/PlAnnotations/components/FilterSidebar.vue2.js +121 -129
  187. package/dist/components/PlAnnotations/components/FilterSidebar.vue2.js.map +1 -1
  188. package/dist/components/PlAnnotations/components/PlAnnotations.js +7 -0
  189. package/dist/components/PlAnnotations/components/PlAnnotations.js.map +1 -0
  190. package/dist/components/PlAnnotations/components/PlAnnotations.style.js +4 -0
  191. package/dist/components/PlAnnotations/components/PlAnnotations.style.js.map +1 -0
  192. package/dist/components/PlAnnotations/components/PlAnnotations.vue2.js +73 -65
  193. package/dist/components/PlAnnotations/components/PlAnnotations.vue2.js.map +1 -1
  194. package/dist/components/PlAnnotations/components/PlAnnotationsModal.js +7 -0
  195. package/dist/components/PlAnnotations/components/PlAnnotationsModal.js.map +1 -0
  196. package/dist/components/PlAnnotations/components/PlAnnotationsModal.style.js +7 -0
  197. package/dist/components/PlAnnotations/components/PlAnnotationsModal.style.js.map +1 -0
  198. package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue2.js +58 -52
  199. package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue2.js.map +1 -1
  200. package/dist/components/PlAnnotations/components/style.css +1 -1
  201. package/dist/components/PlAnnotations/components/style.module.js +8 -0
  202. package/dist/components/PlAnnotations/components/style.module.js.map +1 -0
  203. package/dist/components/PlAnnotations/utils.js +6 -8
  204. package/dist/components/PlAnnotations/utils.js.map +1 -1
  205. package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.js +5 -0
  206. package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.js.map +1 -0
  207. package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue2.js +57 -5
  208. package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue2.js.map +1 -1
  209. package/dist/components/PlAppErrorNotificationAlert/pl-app-error-notification-alert.css +1 -1
  210. package/dist/components/PlBtnExportArchive/Item.js +7 -0
  211. package/dist/components/PlBtnExportArchive/Item.js.map +1 -0
  212. package/dist/components/PlBtnExportArchive/Item.style.js +9 -0
  213. package/dist/components/PlBtnExportArchive/Item.style.js.map +1 -0
  214. package/dist/components/PlBtnExportArchive/Item.vue.css +1 -0
  215. package/dist/components/PlBtnExportArchive/Item.vue2.js +28 -42
  216. package/dist/components/PlBtnExportArchive/Item.vue2.js.map +1 -1
  217. package/dist/components/PlBtnExportArchive/PlBtnExportArchive.js +7 -0
  218. package/dist/components/PlBtnExportArchive/PlBtnExportArchive.js.map +1 -0
  219. package/dist/components/PlBtnExportArchive/PlBtnExportArchive.style.js +8 -0
  220. package/dist/components/PlBtnExportArchive/PlBtnExportArchive.style.js.map +1 -0
  221. package/dist/components/PlBtnExportArchive/PlBtnExportArchive.vue.css +1 -0
  222. package/dist/components/PlBtnExportArchive/PlBtnExportArchive.vue2.js +161 -159
  223. package/dist/components/PlBtnExportArchive/PlBtnExportArchive.vue2.js.map +1 -1
  224. package/dist/components/PlBtnExportArchive/Summary.js +7 -0
  225. package/dist/components/PlBtnExportArchive/Summary.js.map +1 -0
  226. package/dist/components/PlBtnExportArchive/Summary.style.js +8 -0
  227. package/dist/components/PlBtnExportArchive/Summary.style.js.map +1 -0
  228. package/dist/components/PlBtnExportArchive/Summary.vue.css +1 -0
  229. package/dist/components/PlBtnExportArchive/Summary.vue2.js +26 -41
  230. package/dist/components/PlBtnExportArchive/Summary.vue2.js.map +1 -1
  231. package/dist/components/PlTableFastSearch/PlTableFastSearch.js +5 -0
  232. package/dist/components/PlTableFastSearch/PlTableFastSearch.js.map +1 -0
  233. package/dist/components/PlTableFastSearch/PlTableFastSearch.vue2.js +41 -5
  234. package/dist/components/PlTableFastSearch/PlTableFastSearch.vue2.js.map +1 -1
  235. package/dist/components/PlTableFilters/PlTableFiltersV2.js +7 -0
  236. package/dist/components/PlTableFilters/PlTableFiltersV2.js.map +1 -0
  237. package/dist/components/PlTableFilters/PlTableFiltersV2.style.js +4 -0
  238. package/dist/components/PlTableFilters/PlTableFiltersV2.style.js.map +1 -0
  239. package/dist/components/PlTableFilters/PlTableFiltersV2.vue.css +1 -0
  240. package/dist/components/PlTableFilters/PlTableFiltersV2.vue2.js +97 -106
  241. package/dist/components/PlTableFilters/PlTableFiltersV2.vue2.js.map +1 -1
  242. package/dist/composition/fileContent.js +169 -200
  243. package/dist/composition/fileContent.js.map +1 -1
  244. package/dist/computedResult.js +47 -18
  245. package/dist/computedResult.js.map +1 -1
  246. package/dist/createModel.js +44 -60
  247. package/dist/createModel.js.map +1 -1
  248. package/dist/defineApp.js +87 -113
  249. package/dist/defineApp.js.map +1 -1
  250. package/dist/defineStore.js +15 -16
  251. package/dist/defineStore.js.map +1 -1
  252. package/dist/index.js +39 -98
  253. package/dist/index.js.map +1 -1
  254. package/dist/internal/UpdateSerializer.js +50 -66
  255. package/dist/internal/UpdateSerializer.js.map +1 -1
  256. package/dist/internal/createAppModel.js +54 -68
  257. package/dist/internal/createAppModel.js.map +1 -1
  258. package/dist/internal/createAppV1.js +140 -193
  259. package/dist/internal/createAppV1.js.map +1 -1
  260. package/dist/internal/createAppV2.d.ts.map +1 -1
  261. package/dist/internal/createAppV2.js +149 -193
  262. package/dist/internal/createAppV2.js.map +1 -1
  263. package/dist/internal/createAppV3.d.ts.map +1 -1
  264. package/dist/internal/createAppV3.js +157 -202
  265. package/dist/internal/createAppV3.js.map +1 -1
  266. package/dist/internal/test-helpers/utils.d.ts.map +1 -1
  267. package/dist/lib/util/helpers/dist/error.js +1 -0
  268. package/dist/lib/util/helpers/dist/functions.js +8 -9
  269. package/dist/lib/util/helpers/dist/functions.js.map +1 -1
  270. package/dist/lib/util/helpers/dist/hash.js +5 -0
  271. package/dist/lib/util/helpers/dist/hash.js.map +1 -0
  272. package/dist/lib/util/helpers/dist/index.js +9 -0
  273. package/dist/lib/util/helpers/dist/objects.js +75 -42
  274. package/dist/lib/util/helpers/dist/objects.js.map +1 -1
  275. package/dist/lib/util/helpers/dist/prettyBytes.js +60 -26
  276. package/dist/lib/util/helpers/dist/prettyBytes.js.map +1 -1
  277. package/dist/lib/util/helpers/dist/random.js +6 -8
  278. package/dist/lib/util/helpers/dist/random.js.map +1 -1
  279. package/dist/lib/util/helpers/dist/strings.js +11 -14
  280. package/dist/lib/util/helpers/dist/strings.js.map +1 -1
  281. package/dist/lib/util/helpers/dist/uniqId.js +7 -0
  282. package/dist/lib/util/helpers/dist/uniqId.js.map +1 -0
  283. package/dist/lib/util/helpers/dist/utils.js +34 -50
  284. package/dist/lib/util/helpers/dist/utils.js.map +1 -1
  285. package/dist/lib.js +38 -0
  286. package/dist/objectHash.js +13 -10
  287. package/dist/objectHash.js.map +1 -1
  288. package/dist/plugins/Monetization/EndOfPeriod.js +7 -0
  289. package/dist/plugins/Monetization/EndOfPeriod.js.map +1 -0
  290. package/dist/plugins/Monetization/EndOfPeriod.style.js +4 -0
  291. package/dist/plugins/Monetization/EndOfPeriod.style.js.map +1 -0
  292. package/dist/plugins/Monetization/EndOfPeriod.vue.css +1 -0
  293. package/dist/plugins/Monetization/EndOfPeriod.vue2.js +15 -23
  294. package/dist/plugins/Monetization/EndOfPeriod.vue2.js.map +1 -1
  295. package/dist/plugins/Monetization/LimitCard.js +7 -0
  296. package/dist/plugins/Monetization/LimitCard.js.map +1 -0
  297. package/dist/plugins/Monetization/LimitCard.style.js +18 -0
  298. package/dist/plugins/Monetization/LimitCard.style.js.map +1 -0
  299. package/dist/plugins/Monetization/LimitCard.vue.css +1 -0
  300. package/dist/plugins/Monetization/LimitCard.vue2.js +47 -84
  301. package/dist/plugins/Monetization/LimitCard.vue2.js.map +1 -1
  302. package/dist/plugins/Monetization/MonetizationSidebar.js +5 -0
  303. package/dist/plugins/Monetization/MonetizationSidebar.js.map +1 -0
  304. package/dist/plugins/Monetization/MonetizationSidebar.vue2.js +106 -5
  305. package/dist/plugins/Monetization/MonetizationSidebar.vue2.js.map +1 -1
  306. package/dist/plugins/Monetization/RunStatus.js +7 -0
  307. package/dist/plugins/Monetization/RunStatus.js.map +1 -0
  308. package/dist/plugins/Monetization/RunStatus.style.js +13 -0
  309. package/dist/plugins/Monetization/RunStatus.style.js.map +1 -0
  310. package/dist/plugins/Monetization/RunStatus.vue.css +1 -0
  311. package/dist/plugins/Monetization/RunStatus.vue2.js +21 -40
  312. package/dist/plugins/Monetization/RunStatus.vue2.js.map +1 -1
  313. package/dist/plugins/Monetization/UserCabinetCard.js +7 -0
  314. package/dist/plugins/Monetization/UserCabinetCard.js.map +1 -0
  315. package/dist/plugins/Monetization/UserCabinetCard.style.js +12 -0
  316. package/dist/plugins/Monetization/UserCabinetCard.style.js.map +1 -0
  317. package/dist/plugins/Monetization/UserCabinetCard.vue.css +1 -0
  318. package/dist/plugins/Monetization/UserCabinetCard.vue2.js +50 -70
  319. package/dist/plugins/Monetization/UserCabinetCard.vue2.js.map +1 -1
  320. package/dist/plugins/Monetization/useButtonTarget.js +15 -16
  321. package/dist/plugins/Monetization/useButtonTarget.js.map +1 -1
  322. package/dist/plugins/Monetization/useInfo.js +36 -71
  323. package/dist/plugins/Monetization/useInfo.js.map +1 -1
  324. package/dist/plugins/Monetization/validation.js +34 -42
  325. package/dist/plugins/Monetization/validation.js.map +1 -1
  326. package/dist/urls.d.ts.map +1 -1
  327. package/dist/urls.js +4 -5
  328. package/dist/urls.js.map +1 -1
  329. package/dist/usePlugin.js +32 -12
  330. package/dist/usePlugin.js.map +1 -1
  331. package/dist/utils.d.ts.map +1 -1
  332. package/dist/utils.js +29 -54
  333. package/dist/utils.js.map +1 -1
  334. package/package.json +8 -8
  335. package/dist/_virtual/_plugin-vue_export-helper.js.map +0 -1
  336. package/dist/components/BlockLayout.css +0 -1
  337. package/dist/components/BlockLayout.vue.js +0 -10
  338. package/dist/components/BlockLayout.vue.js.map +0 -1
  339. package/dist/components/BlockLayout.vue3.js +0 -8
  340. package/dist/components/BlockLayout.vue3.js.map +0 -1
  341. package/dist/components/BlockLoader.vue.js +0 -26
  342. package/dist/components/BlockLoader.vue.js.map +0 -1
  343. package/dist/components/LoaderPage.vue.js +0 -15
  344. package/dist/components/LoaderPage.vue.js.map +0 -1
  345. package/dist/components/NotFound.vue.js +0 -26
  346. package/dist/components/NotFound.vue.js.map +0 -1
  347. package/dist/components/PlAdvancedFilter/FilterEditor.css +0 -1
  348. package/dist/components/PlAdvancedFilter/FilterEditor.vue.js +0 -10
  349. package/dist/components/PlAdvancedFilter/FilterEditor.vue.js.map +0 -1
  350. package/dist/components/PlAdvancedFilter/FilterEditor.vue3.js +0 -32
  351. package/dist/components/PlAdvancedFilter/FilterEditor.vue3.js.map +0 -1
  352. package/dist/components/PlAdvancedFilter/OperandButton.css +0 -1
  353. package/dist/components/PlAdvancedFilter/OperandButton.vue.js +0 -10
  354. package/dist/components/PlAdvancedFilter/OperandButton.vue.js.map +0 -1
  355. package/dist/components/PlAdvancedFilter/OperandButton.vue3.js +0 -12
  356. package/dist/components/PlAdvancedFilter/OperandButton.vue3.js.map +0 -1
  357. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.css +0 -1
  358. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue.js +0 -10
  359. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue.js.map +0 -1
  360. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue3.js +0 -20
  361. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue3.js.map +0 -1
  362. package/dist/components/PlAgCellFile/PlAgCellFile.vue.js +0 -32
  363. package/dist/components/PlAgCellFile/PlAgCellFile.vue.js.map +0 -1
  364. package/dist/components/PlAgCellProgress/PlAgCellProgress.vue.js +0 -16
  365. package/dist/components/PlAgCellProgress/PlAgCellProgress.vue.js.map +0 -1
  366. package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.vue.js +0 -22
  367. package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.vue.js.map +0 -1
  368. package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.vue3.js +0 -6
  369. package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.vue3.js.map +0 -1
  370. package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.css +0 -1
  371. package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.vue.js +0 -32
  372. package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.vue.js.map +0 -1
  373. package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.vue3.js +0 -6
  374. package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.vue3.js.map +0 -1
  375. package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.css +0 -1
  376. package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.vue.js +0 -24
  377. package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.vue.js.map +0 -1
  378. package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.vue3.js +0 -6
  379. package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.vue3.js.map +0 -1
  380. package/dist/components/PlAgColumnHeader/PlAgColumnHeader.vue.js +0 -97
  381. package/dist/components/PlAgColumnHeader/PlAgColumnHeader.vue.js.map +0 -1
  382. package/dist/components/PlAgCsvExporter/PlAgCsvExporter.vue.js +0 -33
  383. package/dist/components/PlAgCsvExporter/PlAgCsvExporter.vue.js.map +0 -1
  384. package/dist/components/PlAgDataTable/PlAgDataTableSheets.css +0 -1
  385. package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue.js +0 -10
  386. package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue.js.map +0 -1
  387. package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue3.js +0 -8
  388. package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue3.js.map +0 -1
  389. package/dist/components/PlAgDataTable/PlAgDataTableV2.css +0 -1
  390. package/dist/components/PlAgDataTable/PlAgDataTableV2.vue.js +0 -10
  391. package/dist/components/PlAgDataTable/PlAgDataTableV2.vue.js.map +0 -1
  392. package/dist/components/PlAgDataTable/PlAgDataTableV2.vue3.js +0 -10
  393. package/dist/components/PlAgDataTable/PlAgDataTableV2.vue3.js.map +0 -1
  394. package/dist/components/PlAgDataTable/PlAgOverlayLoading.vue.js +0 -48
  395. package/dist/components/PlAgDataTable/PlAgOverlayLoading.vue.js.map +0 -1
  396. package/dist/components/PlAgDataTable/PlAgOverlayNoRows.vue.js +0 -22
  397. package/dist/components/PlAgDataTable/PlAgOverlayNoRows.vue.js.map +0 -1
  398. package/dist/components/PlAgDataTable/PlAgOverlayNoRows.vue3.js +0 -6
  399. package/dist/components/PlAgDataTable/PlAgOverlayNoRows.vue3.js.map +0 -1
  400. package/dist/components/PlAgDataTable/PlAgRowCount.vue.js +0 -26
  401. package/dist/components/PlAgDataTable/PlAgRowCount.vue.js.map +0 -1
  402. package/dist/components/PlAgDataTable/ag-override.css.js +0 -31
  403. package/dist/components/PlAgDataTable/ag-override.css.js.map +0 -1
  404. package/dist/components/PlAgDataTable/pl-ag-overlay-loading.module.scss.js +0 -14
  405. package/dist/components/PlAgDataTable/pl-ag-overlay-loading.module.scss.js.map +0 -1
  406. package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue.js +0 -10
  407. package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue.js.map +0 -1
  408. package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue3.js +0 -8
  409. package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue3.js.map +0 -1
  410. package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue.js +0 -48
  411. package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue.js.map +0 -1
  412. package/dist/components/PlAgRowNumCheckbox/pl-ag-row-num-checkbox.module.scss.js +0 -15
  413. package/dist/components/PlAgRowNumCheckbox/pl-ag-row-num-checkbox.module.scss.js.map +0 -1
  414. package/dist/components/PlAgRowNumHeader.vue.js +0 -39
  415. package/dist/components/PlAgRowNumHeader.vue.js.map +0 -1
  416. package/dist/components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.vue.js +0 -45
  417. package/dist/components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.vue.js.map +0 -1
  418. package/dist/components/PlAnnotations/components/AnnotationsSidebar.css +0 -1
  419. package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue.js +0 -10
  420. package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue.js.map +0 -1
  421. package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue3.js +0 -18
  422. package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue3.js.map +0 -1
  423. package/dist/components/PlAnnotations/components/FilterSidebar.css +0 -1
  424. package/dist/components/PlAnnotations/components/FilterSidebar.vue.js +0 -10
  425. package/dist/components/PlAnnotations/components/FilterSidebar.vue.js.map +0 -1
  426. package/dist/components/PlAnnotations/components/FilterSidebar.vue3.js +0 -10
  427. package/dist/components/PlAnnotations/components/FilterSidebar.vue3.js.map +0 -1
  428. package/dist/components/PlAnnotations/components/PlAnnotations.vue.js +0 -10
  429. package/dist/components/PlAnnotations/components/PlAnnotations.vue.js.map +0 -1
  430. package/dist/components/PlAnnotations/components/PlAnnotations.vue3.js +0 -8
  431. package/dist/components/PlAnnotations/components/PlAnnotations.vue3.js.map +0 -1
  432. package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue.js +0 -10
  433. package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue.js.map +0 -1
  434. package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue3.js +0 -10
  435. package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue3.js.map +0 -1
  436. package/dist/components/PlAnnotations/components/style.module.css.js +0 -12
  437. package/dist/components/PlAnnotations/components/style.module.css.js.map +0 -1
  438. package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue.js +0 -79
  439. package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue.js.map +0 -1
  440. package/dist/components/PlBtnExportArchive/Item.css +0 -1
  441. package/dist/components/PlBtnExportArchive/Item.vue.js +0 -10
  442. package/dist/components/PlBtnExportArchive/Item.vue.js.map +0 -1
  443. package/dist/components/PlBtnExportArchive/Item.vue3.js +0 -14
  444. package/dist/components/PlBtnExportArchive/Item.vue3.js.map +0 -1
  445. package/dist/components/PlBtnExportArchive/PlBtnExportArchive.css +0 -1
  446. package/dist/components/PlBtnExportArchive/PlBtnExportArchive.vue.js +0 -10
  447. package/dist/components/PlBtnExportArchive/PlBtnExportArchive.vue.js.map +0 -1
  448. package/dist/components/PlBtnExportArchive/PlBtnExportArchive.vue3.js +0 -12
  449. package/dist/components/PlBtnExportArchive/PlBtnExportArchive.vue3.js.map +0 -1
  450. package/dist/components/PlBtnExportArchive/Summary.css +0 -1
  451. package/dist/components/PlBtnExportArchive/Summary.vue.js +0 -10
  452. package/dist/components/PlBtnExportArchive/Summary.vue.js.map +0 -1
  453. package/dist/components/PlBtnExportArchive/Summary.vue3.js +0 -12
  454. package/dist/components/PlBtnExportArchive/Summary.vue3.js.map +0 -1
  455. package/dist/components/PlTableFastSearch/PlTableFastSearch.vue.js +0 -54
  456. package/dist/components/PlTableFastSearch/PlTableFastSearch.vue.js.map +0 -1
  457. package/dist/components/PlTableFilters/PlTableFiltersV2.css +0 -1
  458. package/dist/components/PlTableFilters/PlTableFiltersV2.vue.js +0 -10
  459. package/dist/components/PlTableFilters/PlTableFiltersV2.vue.js.map +0 -1
  460. package/dist/components/PlTableFilters/PlTableFiltersV2.vue3.js +0 -8
  461. package/dist/components/PlTableFilters/PlTableFiltersV2.vue3.js.map +0 -1
  462. package/dist/plugins/Monetization/EndOfPeriod.css +0 -1
  463. package/dist/plugins/Monetization/EndOfPeriod.vue.js +0 -10
  464. package/dist/plugins/Monetization/EndOfPeriod.vue.js.map +0 -1
  465. package/dist/plugins/Monetization/EndOfPeriod.vue3.js +0 -8
  466. package/dist/plugins/Monetization/EndOfPeriod.vue3.js.map +0 -1
  467. package/dist/plugins/Monetization/LimitCard.css +0 -1
  468. package/dist/plugins/Monetization/LimitCard.vue.js +0 -10
  469. package/dist/plugins/Monetization/LimitCard.vue.js.map +0 -1
  470. package/dist/plugins/Monetization/LimitCard.vue3.js +0 -32
  471. package/dist/plugins/Monetization/LimitCard.vue3.js.map +0 -1
  472. package/dist/plugins/Monetization/MonetizationSidebar.vue.js +0 -138
  473. package/dist/plugins/Monetization/MonetizationSidebar.vue.js.map +0 -1
  474. package/dist/plugins/Monetization/RunStatus.css +0 -1
  475. package/dist/plugins/Monetization/RunStatus.vue.js +0 -10
  476. package/dist/plugins/Monetization/RunStatus.vue.js.map +0 -1
  477. package/dist/plugins/Monetization/RunStatus.vue3.js +0 -20
  478. package/dist/plugins/Monetization/RunStatus.vue3.js.map +0 -1
  479. package/dist/plugins/Monetization/UserCabinetCard.css +0 -1
  480. package/dist/plugins/Monetization/UserCabinetCard.vue.js +0 -10
  481. package/dist/plugins/Monetization/UserCabinetCard.vue.js.map +0 -1
  482. package/dist/plugins/Monetization/UserCabinetCard.vue3.js +0 -20
  483. package/dist/plugins/Monetization/UserCabinetCard.vue3.js.map +0 -1
  484. /package/dist/components/PlAgCellStatusTag/{PlAgCellStatusTag.css → PlAgCellStatusTag.style.css} +0 -0
  485. /package/dist/components/PlAgGridColumnManager/{PlAgGridColumnManager.css → PlAgGridColumnManager.vue.css} +0 -0
  486. /package/dist/components/PlAnnotations/components/{PlAnnotations.css → PlAnnotations.vue.css} +0 -0
  487. /package/dist/components/PlAnnotations/components/{PlAnnotationsModal.css → PlAnnotationsModal.vue.css} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"fileContent.js","sources":["../../src/composition/fileContent.ts"],"sourcesContent":["import type { BlobHandleAndSize } from \"@platforma-sdk/model\";\nimport { getRawPlatformaInstance } from \"@platforma-sdk/model\";\nimport { LRUCache } from \"lru-cache\";\nimport type { ComputedRef, ShallowRef, EffectScope } from \"vue\";\nimport { computed, shallowRef, getCurrentScope, onScopeDispose, effectScope } from \"vue\";\nimport type { ZodSchema, SafeParseReturnType } from \"zod\";\nimport { Fetcher } from \"@milaboratories/helpers\";\n\ntype FileHandle = BlobHandleAndSize[\"handle\"];\n\nexport type ReactiveFileContentOps = {\n /** Maximum size in bytes of file content to cache */\n cacheSize: number;\n lruCache?: LRUCache<FileHandle, FileContentData>;\n fetcher?: Fetcher<FileHandle, FileContentData>;\n};\n\nconst DefaultReactiveFileContentOps: ReactiveFileContentOps = {\n cacheSize: 15_000_000, // 15 Mb\n};\n\nclass FileContentData {\n private _str: string | undefined = undefined;\n private _rawJson: unknown | undefined = undefined;\n private _zodSchema: ZodSchema | undefined = undefined;\n private _validatedJson: SafeParseReturnType<unknown, unknown> | undefined = undefined;\n\n constructor(public readonly bytes: Uint8Array) {}\n\n public get str(): string {\n if (this._str === undefined) this._str = new TextDecoder().decode(this.bytes);\n return this._str;\n }\n\n public get rawJson(): unknown {\n if (this._rawJson === undefined) this._rawJson = JSON.parse(this.str);\n return this._rawJson;\n }\n\n public validatedJson<T>(schema: ZodSchema<T>): T | undefined {\n if (this._zodSchema !== schema) {\n this._validatedJson = schema.safeParse(this.rawJson);\n this._zodSchema = schema;\n }\n return this._validatedJson?.success ? (this._validatedJson.data as T) : undefined;\n }\n}\n\nconst scopes = new WeakMap<EffectScope, Map<FileHandle, ShallowRef<FileContentData | undefined>>>();\n\nfunction addScope(scope: EffectScope) {\n scopes.set(scope, new Map<FileHandle, ShallowRef<FileContentData | undefined>>());\n}\n\nconst globalCache = new LRUCache<FileHandle, FileContentData>({\n maxSize: DefaultReactiveFileContentOps.cacheSize,\n sizeCalculation: (value) => value.bytes.length,\n});\n\nconst globalFetcher = new Fetcher<FileHandle, FileContentData>();\n\nexport class ReactiveFileContent {\n private readonly fileDataCache: LRUCache<FileHandle, FileContentData>;\n private readonly fetcher: Fetcher<FileHandle, FileContentData>;\n private ns = new Map<string, Set<FileHandle>>();\n private currentKey: string | undefined;\n\n private constructor(\n private currentScope: EffectScope,\n _ops?: Partial<ReactiveFileContentOps>,\n ) {\n const ops: ReactiveFileContentOps = { ...DefaultReactiveFileContentOps, ..._ops };\n this.fileDataCache =\n ops.lruCache ??\n new LRUCache<FileHandle, FileContentData>({\n maxSize: ops.cacheSize,\n sizeCalculation: (value) => value.bytes.length,\n });\n this.fetcher = ops.fetcher ?? new Fetcher<FileHandle, FileContentData>();\n }\n\n /**\n * Experimental method to invalidate the refs map cache for a given key.\n */\n public withInvalidate<T>(key: string, cb: () => T) {\n const previous = this.ns.get(key);\n this.ns.set(key, new Set());\n this.currentKey = key;\n try {\n const res = cb();\n this.invalidate(key, previous);\n return res;\n } finally {\n this.currentKey = undefined;\n }\n }\n\n public stopScope() {\n scopes.delete(this.currentScope);\n this.currentScope.stop();\n }\n\n private async doFetch(handle: FileHandle) {\n if (!this.fileDataCache.has(handle)) {\n const fileContentData = await this.fetcher.fetch(\n handle,\n async () =>\n new FileContentData(await getRawPlatformaInstance().blobDriver.getContent(handle)),\n );\n this.fileDataCache.set(handle, fileContentData);\n }\n\n return this.fileDataCache.get(handle)!;\n }\n\n private getSize() {\n const refsMap = this.getRefsMap();\n return refsMap ? refsMap.size : 0;\n }\n\n private getRefsMap() {\n return scopes.get(this.currentScope);\n }\n\n private invalidate(key: string, previous: Set<FileHandle> | undefined) {\n if (!previous) {\n return;\n }\n\n const actual = this.ns.get(key)!;\n\n for (const handle of actual) {\n previous.delete(handle);\n }\n\n const map = this.getRefsMap();\n\n for (const handle of previous) {\n map?.delete(handle);\n }\n }\n\n private withHandle(handle: FileHandle) {\n if (this.currentKey) {\n this.ns.get(this.currentKey)?.add(handle);\n }\n }\n\n private getDataRef(handle: FileHandle): ShallowRef<FileContentData | undefined> {\n const refsMap = this.getRefsMap();\n\n if (!refsMap) {\n throw new Error(\"ReactiveFileContent must be used within a Vue component or effect scope.\");\n }\n\n this.withHandle(handle);\n\n const refFromMap = refsMap.get(handle);\n\n if (refFromMap !== undefined) {\n return refFromMap;\n }\n\n const newRef = shallowRef<FileContentData>();\n refsMap.set(handle, newRef);\n\n // Initiating actual fetch from the cache, that will in turn initiate upload\n (async () => {\n const maxRetries = 8;\n const retryDelay = 1000; // 1 second\n\n for (let attempt = 0; attempt < maxRetries; attempt++) {\n try {\n const data = await this.doFetch(handle);\n newRef.value = data;\n return;\n } catch (err: unknown) {\n console.error(`File download attempt ${attempt + 1}/${maxRetries} failed:`, err);\n\n if (attempt < maxRetries - 1) {\n await new Promise((resolve) => setTimeout(resolve, retryDelay));\n } else {\n console.error(`Failed to download file after ${maxRetries} attempts`);\n }\n }\n }\n })();\n\n return newRef;\n }\n\n public getContentBytes(handle: FileHandle): ComputedRef<Uint8Array | undefined>;\n public getContentBytes(\n handle: FileHandle | undefined,\n ): ComputedRef<Uint8Array | undefined> | undefined;\n public getContentBytes(\n handle: FileHandle | undefined,\n ): ComputedRef<Uint8Array | undefined> | undefined {\n if (handle === undefined) return undefined;\n const dataRef = this.getDataRef(handle);\n return computed(() => dataRef.value?.bytes);\n }\n\n public getContentString(handle: FileHandle): ComputedRef<string | undefined>;\n public getContentString(\n handle: FileHandle | undefined,\n ): ComputedRef<string | undefined> | undefined;\n public getContentString(\n handle: FileHandle | undefined,\n ): ComputedRef<string | undefined> | undefined {\n if (handle === undefined) return undefined;\n const dataRef = this.getDataRef(handle);\n return computed(() => dataRef.value?.str);\n }\n\n public getContentJson<T>(handle: FileHandle, schema: ZodSchema<T>): ComputedRef<T | undefined>;\n public getContentJson<T>(\n handle: FileHandle | undefined,\n schema: ZodSchema<T>,\n ): ComputedRef<T | undefined> | undefined;\n public getContentJson<T = unknown>(handle: FileHandle): ComputedRef<T | undefined>;\n public getContentJson<T = unknown>(\n handle: FileHandle | undefined,\n ): ComputedRef<T | undefined> | undefined;\n public getContentJson<T>(\n handle: FileHandle | undefined,\n schema?: ZodSchema<T>,\n ): ComputedRef<T | undefined> | undefined;\n public getContentJson<T>(\n handle: FileHandle | undefined,\n schema?: ZodSchema<T>,\n ): ComputedRef<T | undefined> | undefined {\n if (handle === undefined) return undefined;\n const dataRef = this.getDataRef(handle);\n return computed(\n () =>\n (schema === undefined ? dataRef.value?.rawJson : dataRef.value?.validatedJson(schema)) as T,\n );\n }\n\n private static initScope(_scope: EffectScope | undefined) {\n let scope = getCurrentScope() ?? _scope;\n\n if (!scope) {\n console.warn(\"Current scope not found, using new detached scope...\");\n scope = effectScope(true);\n }\n\n addScope(scope);\n\n onScopeDispose(() => {\n scopes.delete(scope);\n });\n\n return scope;\n }\n\n /**\n * Creates a ReactiveFileContent instance with isolated cache and fetcher.\n * Use this when you need component-specific caching.\n *\n * @example\n * ```ts\n * import { ReactiveFileContent } from '@platforma-sdk/ui-vue';\n * import { computed } from 'vue';\n *\n * const fileContent = ReactiveFileContent.use();\n *\n * const processedData = computed(() => {\n * const content = fileContent.getContentString(fileHandle).value;\n * return content?.split('\\n').length ?? 0;\n * });\n * ```\n */\n public static use(_ops?: Partial<ReactiveFileContentOps>, _scope?: EffectScope) {\n const scope = this.initScope(_scope);\n\n return new ReactiveFileContent(scope, { ..._ops });\n }\n\n /**\n * Creates a ReactiveFileContent instance with globally shared cache and fetcher.\n * Use this to share file content cache across multiple components.\n *\n * @example\n * ```ts\n * import { ReactiveFileContent } from '@platforma-sdk/ui-vue';\n * import { computed } from 'vue';\n *\n * const fileContent = ReactiveFileContent.useGlobal();\n *\n * const combinedData = computed(() => {\n * const data1 = fileContent.getContentJson(handle1).value;\n * const data2 = fileContent.getContentJson(handle2).value;\n * return { data1, data2 };\n * });\n * ```\n */\n public static useGlobal(_ops?: Partial<ReactiveFileContentOps>, _scope?: EffectScope) {\n const scope = this.initScope(_scope);\n\n return new ReactiveFileContent(scope, {\n ..._ops,\n lruCache: globalCache,\n fetcher: globalFetcher,\n });\n }\n}\n"],"names":["DefaultReactiveFileContentOps","FileContentData","bytes","__publicField","schema","_a","scopes","addScope","scope","globalCache","LRUCache","value","globalFetcher","Fetcher","ReactiveFileContent","currentScope","_ops","ops","key","cb","previous","res","handle","fileContentData","getRawPlatformaInstance","refsMap","actual","map","refFromMap","newRef","shallowRef","attempt","data","err","resolve","dataRef","computed","_b","_scope","getCurrentScope","effectScope","onScopeDispose"],"mappings":"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"}
1
+ {"version":3,"file":"fileContent.js","names":[],"sources":["../../src/composition/fileContent.ts"],"sourcesContent":["import type { BlobHandleAndSize } from \"@platforma-sdk/model\";\nimport { getRawPlatformaInstance } from \"@platforma-sdk/model\";\nimport { LRUCache } from \"lru-cache\";\nimport type { ComputedRef, ShallowRef, EffectScope } from \"vue\";\nimport { computed, shallowRef, getCurrentScope, onScopeDispose, effectScope } from \"vue\";\nimport type { ZodSchema, SafeParseReturnType } from \"zod\";\nimport { Fetcher } from \"@milaboratories/helpers\";\n\ntype FileHandle = BlobHandleAndSize[\"handle\"];\n\nexport type ReactiveFileContentOps = {\n /** Maximum size in bytes of file content to cache */\n cacheSize: number;\n lruCache?: LRUCache<FileHandle, FileContentData>;\n fetcher?: Fetcher<FileHandle, FileContentData>;\n};\n\nconst DefaultReactiveFileContentOps: ReactiveFileContentOps = {\n cacheSize: 15_000_000, // 15 Mb\n};\n\nclass FileContentData {\n private _str: string | undefined = undefined;\n private _rawJson: unknown | undefined = undefined;\n private _zodSchema: ZodSchema | undefined = undefined;\n private _validatedJson: SafeParseReturnType<unknown, unknown> | undefined = undefined;\n\n constructor(public readonly bytes: Uint8Array) {}\n\n public get str(): string {\n if (this._str === undefined) this._str = new TextDecoder().decode(this.bytes);\n return this._str;\n }\n\n public get rawJson(): unknown {\n if (this._rawJson === undefined) this._rawJson = JSON.parse(this.str);\n return this._rawJson;\n }\n\n public validatedJson<T>(schema: ZodSchema<T>): T | undefined {\n if (this._zodSchema !== schema) {\n this._validatedJson = schema.safeParse(this.rawJson);\n this._zodSchema = schema;\n }\n return this._validatedJson?.success ? (this._validatedJson.data as T) : undefined;\n }\n}\n\nconst scopes = new WeakMap<EffectScope, Map<FileHandle, ShallowRef<FileContentData | undefined>>>();\n\nfunction addScope(scope: EffectScope) {\n scopes.set(scope, new Map<FileHandle, ShallowRef<FileContentData | undefined>>());\n}\n\nconst globalCache = new LRUCache<FileHandle, FileContentData>({\n maxSize: DefaultReactiveFileContentOps.cacheSize,\n sizeCalculation: (value) => value.bytes.length,\n});\n\nconst globalFetcher = new Fetcher<FileHandle, FileContentData>();\n\nexport class ReactiveFileContent {\n private readonly fileDataCache: LRUCache<FileHandle, FileContentData>;\n private readonly fetcher: Fetcher<FileHandle, FileContentData>;\n private ns = new Map<string, Set<FileHandle>>();\n private currentKey: string | undefined;\n\n private constructor(\n private currentScope: EffectScope,\n _ops?: Partial<ReactiveFileContentOps>,\n ) {\n const ops: ReactiveFileContentOps = { ...DefaultReactiveFileContentOps, ..._ops };\n this.fileDataCache =\n ops.lruCache ??\n new LRUCache<FileHandle, FileContentData>({\n maxSize: ops.cacheSize,\n sizeCalculation: (value) => value.bytes.length,\n });\n this.fetcher = ops.fetcher ?? new Fetcher<FileHandle, FileContentData>();\n }\n\n /**\n * Experimental method to invalidate the refs map cache for a given key.\n */\n public withInvalidate<T>(key: string, cb: () => T) {\n const previous = this.ns.get(key);\n this.ns.set(key, new Set());\n this.currentKey = key;\n try {\n const res = cb();\n this.invalidate(key, previous);\n return res;\n } finally {\n this.currentKey = undefined;\n }\n }\n\n public stopScope() {\n scopes.delete(this.currentScope);\n this.currentScope.stop();\n }\n\n private async doFetch(handle: FileHandle) {\n if (!this.fileDataCache.has(handle)) {\n const fileContentData = await this.fetcher.fetch(\n handle,\n async () =>\n new FileContentData(await getRawPlatformaInstance().blobDriver.getContent(handle)),\n );\n this.fileDataCache.set(handle, fileContentData);\n }\n\n return this.fileDataCache.get(handle)!;\n }\n\n private getSize() {\n const refsMap = this.getRefsMap();\n return refsMap ? refsMap.size : 0;\n }\n\n private getRefsMap() {\n return scopes.get(this.currentScope);\n }\n\n private invalidate(key: string, previous: Set<FileHandle> | undefined) {\n if (!previous) {\n return;\n }\n\n const actual = this.ns.get(key)!;\n\n for (const handle of actual) {\n previous.delete(handle);\n }\n\n const map = this.getRefsMap();\n\n for (const handle of previous) {\n map?.delete(handle);\n }\n }\n\n private withHandle(handle: FileHandle) {\n if (this.currentKey) {\n this.ns.get(this.currentKey)?.add(handle);\n }\n }\n\n private getDataRef(handle: FileHandle): ShallowRef<FileContentData | undefined> {\n const refsMap = this.getRefsMap();\n\n if (!refsMap) {\n throw new Error(\"ReactiveFileContent must be used within a Vue component or effect scope.\");\n }\n\n this.withHandle(handle);\n\n const refFromMap = refsMap.get(handle);\n\n if (refFromMap !== undefined) {\n return refFromMap;\n }\n\n const newRef = shallowRef<FileContentData>();\n refsMap.set(handle, newRef);\n\n // Initiating actual fetch from the cache, that will in turn initiate upload\n (async () => {\n const maxRetries = 8;\n const retryDelay = 1000; // 1 second\n\n for (let attempt = 0; attempt < maxRetries; attempt++) {\n try {\n const data = await this.doFetch(handle);\n newRef.value = data;\n return;\n } catch (err: unknown) {\n console.error(`File download attempt ${attempt + 1}/${maxRetries} failed:`, err);\n\n if (attempt < maxRetries - 1) {\n await new Promise((resolve) => setTimeout(resolve, retryDelay));\n } else {\n console.error(`Failed to download file after ${maxRetries} attempts`);\n }\n }\n }\n })();\n\n return newRef;\n }\n\n public getContentBytes(handle: FileHandle): ComputedRef<Uint8Array | undefined>;\n public getContentBytes(\n handle: FileHandle | undefined,\n ): ComputedRef<Uint8Array | undefined> | undefined;\n public getContentBytes(\n handle: FileHandle | undefined,\n ): ComputedRef<Uint8Array | undefined> | undefined {\n if (handle === undefined) return undefined;\n const dataRef = this.getDataRef(handle);\n return computed(() => dataRef.value?.bytes);\n }\n\n public getContentString(handle: FileHandle): ComputedRef<string | undefined>;\n public getContentString(\n handle: FileHandle | undefined,\n ): ComputedRef<string | undefined> | undefined;\n public getContentString(\n handle: FileHandle | undefined,\n ): ComputedRef<string | undefined> | undefined {\n if (handle === undefined) return undefined;\n const dataRef = this.getDataRef(handle);\n return computed(() => dataRef.value?.str);\n }\n\n public getContentJson<T>(handle: FileHandle, schema: ZodSchema<T>): ComputedRef<T | undefined>;\n public getContentJson<T>(\n handle: FileHandle | undefined,\n schema: ZodSchema<T>,\n ): ComputedRef<T | undefined> | undefined;\n public getContentJson<T = unknown>(handle: FileHandle): ComputedRef<T | undefined>;\n public getContentJson<T = unknown>(\n handle: FileHandle | undefined,\n ): ComputedRef<T | undefined> | undefined;\n public getContentJson<T>(\n handle: FileHandle | undefined,\n schema?: ZodSchema<T>,\n ): ComputedRef<T | undefined> | undefined;\n public getContentJson<T>(\n handle: FileHandle | undefined,\n schema?: ZodSchema<T>,\n ): ComputedRef<T | undefined> | undefined {\n if (handle === undefined) return undefined;\n const dataRef = this.getDataRef(handle);\n return computed(\n () =>\n (schema === undefined ? dataRef.value?.rawJson : dataRef.value?.validatedJson(schema)) as T,\n );\n }\n\n private static initScope(_scope: EffectScope | undefined) {\n let scope = getCurrentScope() ?? _scope;\n\n if (!scope) {\n console.warn(\"Current scope not found, using new detached scope...\");\n scope = effectScope(true);\n }\n\n addScope(scope);\n\n onScopeDispose(() => {\n scopes.delete(scope);\n });\n\n return scope;\n }\n\n /**\n * Creates a ReactiveFileContent instance with isolated cache and fetcher.\n * Use this when you need component-specific caching.\n *\n * @example\n * ```ts\n * import { ReactiveFileContent } from '@platforma-sdk/ui-vue';\n * import { computed } from 'vue';\n *\n * const fileContent = ReactiveFileContent.use();\n *\n * const processedData = computed(() => {\n * const content = fileContent.getContentString(fileHandle).value;\n * return content?.split('\\n').length ?? 0;\n * });\n * ```\n */\n public static use(_ops?: Partial<ReactiveFileContentOps>, _scope?: EffectScope) {\n const scope = this.initScope(_scope);\n\n return new ReactiveFileContent(scope, { ..._ops });\n }\n\n /**\n * Creates a ReactiveFileContent instance with globally shared cache and fetcher.\n * Use this to share file content cache across multiple components.\n *\n * @example\n * ```ts\n * import { ReactiveFileContent } from '@platforma-sdk/ui-vue';\n * import { computed } from 'vue';\n *\n * const fileContent = ReactiveFileContent.useGlobal();\n *\n * const combinedData = computed(() => {\n * const data1 = fileContent.getContentJson(handle1).value;\n * const data2 = fileContent.getContentJson(handle2).value;\n * return { data1, data2 };\n * });\n * ```\n */\n public static useGlobal(_ops?: Partial<ReactiveFileContentOps>, _scope?: EffectScope) {\n const scope = this.initScope(_scope);\n\n return new ReactiveFileContent(scope, {\n ..._ops,\n lruCache: globalCache,\n fetcher: globalFetcher,\n });\n }\n}\n"],"mappings":"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"}
@@ -1,19 +1,48 @@
1
- import { computed as e } from "vue";
2
- import { wrapOptionalResult as o } from "./utils.js";
3
- import { ensureErrorLike as u } from "@platforma-sdk/model";
4
- function n(r) {
5
- return e(() => {
6
- try {
7
- return o(r());
8
- } catch (t) {
9
- return {
10
- errors: [u(t)],
11
- value: void 0
12
- };
13
- }
14
- });
1
+ import { wrapOptionalResult as e } from "./utils.js";
2
+ import { computed as t } from "vue";
3
+ import { ensureErrorLike as n } from "@platforma-sdk/model";
4
+ /**
5
+ * Creates a computed reference that wraps the result of a getter function in an `OptionalResult` object.
6
+ * This wrapper provides error handling, ensuring that if an error occurs during the computation of the result,
7
+ * the error is captured and included in the `OptionalResult` instead of throwing the error.
8
+ *
9
+ * @template V - The type of the value returned by the getter function.
10
+ *
11
+ * @param {ComputedGetter<V>} getter - A function that returns a value of type `V`. This function is executed inside
12
+ * the computed reference and its result is wrapped in an `OptionalResult`.
13
+ *
14
+ * @returns {ComputedRef<OptionalResult<V>>} - A computed reference containing the result of the getter function
15
+ * wrapped in an `OptionalResult`. If the getter function executes successfully, the `value` property of the `OptionalResult`
16
+ * will contain the result. If an error occurs, the `errors` property will contain the error message, and `value` will be `undefined`.
17
+ *
18
+ * @example
19
+ * const myGetter = () => {
20
+ * if (someCondition) {
21
+ * throw new Error('An error occurred');
22
+ * }
23
+ * return 'Success';
24
+ * };
25
+ *
26
+ * const myComputedResult = computedResult(myGetter);
27
+ *
28
+ * // If someCondition is true:
29
+ * // myComputedResult.value will be { errors: ['An error occurred'], value: undefined }
30
+ *
31
+ * // If someCondition is false:
32
+ * // myComputedResult.value will be { errors: undefined, value: 'Success' }
33
+ */
34
+ function r(r) {
35
+ return t(() => {
36
+ try {
37
+ return e(r());
38
+ } catch (e) {
39
+ return {
40
+ errors: [n(e)],
41
+ value: void 0
42
+ };
43
+ }
44
+ });
15
45
  }
16
- export {
17
- n as computedResult
18
- };
19
- //# sourceMappingURL=computedResult.js.map
46
+ export { r as computedResult };
47
+
48
+ //# sourceMappingURL=computedResult.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"computedResult.js","sources":["../src/computedResult.ts"],"sourcesContent":["import type { ComputedRef } from \"vue\";\nimport { computed, type ComputedGetter } from \"vue\";\nimport type { OptionalResult } from \"./types\";\nimport { wrapOptionalResult } from \"./utils\";\nimport { ensureErrorLike } from \"@platforma-sdk/model\";\n\n/**\n * Creates a computed reference that wraps the result of a getter function in an `OptionalResult` object.\n * This wrapper provides error handling, ensuring that if an error occurs during the computation of the result,\n * the error is captured and included in the `OptionalResult` instead of throwing the error.\n *\n * @template V - The type of the value returned by the getter function.\n *\n * @param {ComputedGetter<V>} getter - A function that returns a value of type `V`. This function is executed inside\n * the computed reference and its result is wrapped in an `OptionalResult`.\n *\n * @returns {ComputedRef<OptionalResult<V>>} - A computed reference containing the result of the getter function\n * wrapped in an `OptionalResult`. If the getter function executes successfully, the `value` property of the `OptionalResult`\n * will contain the result. If an error occurs, the `errors` property will contain the error message, and `value` will be `undefined`.\n *\n * @example\n * const myGetter = () => {\n * if (someCondition) {\n * throw new Error('An error occurred');\n * }\n * return 'Success';\n * };\n *\n * const myComputedResult = computedResult(myGetter);\n *\n * // If someCondition is true:\n * // myComputedResult.value will be { errors: ['An error occurred'], value: undefined }\n *\n * // If someCondition is false:\n * // myComputedResult.value will be { errors: undefined, value: 'Success' }\n */\nexport function computedResult<V>(getter: ComputedGetter<V>): ComputedRef<OptionalResult<V>> {\n return computed(() => {\n try {\n return wrapOptionalResult(getter());\n } catch (err) {\n return {\n errors: [ensureErrorLike(err)],\n value: undefined,\n };\n }\n });\n}\n"],"names":["computedResult","getter","computed","wrapOptionalResult","err","ensureErrorLike"],"mappings":";;;AAoCO,SAASA,EAAkBC,GAA2D;AAC3F,SAAOC,EAAS,MAAM;AACpB,QAAI;AACF,aAAOC,EAAmBF,GAAQ;AAAA,IACpC,SAASG,GAAK;AACZ,aAAO;AAAA,QACL,QAAQ,CAACC,EAAgBD,CAAG,CAAC;AAAA,QAC7B,OAAO;AAAA,MAAA;AAAA,IAEX;AAAA,EACF,CAAC;AACH;"}
1
+ {"version":3,"file":"computedResult.js","names":[],"sources":["../src/computedResult.ts"],"sourcesContent":["import type { ComputedRef } from \"vue\";\nimport { computed, type ComputedGetter } from \"vue\";\nimport type { OptionalResult } from \"./types\";\nimport { wrapOptionalResult } from \"./utils\";\nimport { ensureErrorLike } from \"@platforma-sdk/model\";\n\n/**\n * Creates a computed reference that wraps the result of a getter function in an `OptionalResult` object.\n * This wrapper provides error handling, ensuring that if an error occurs during the computation of the result,\n * the error is captured and included in the `OptionalResult` instead of throwing the error.\n *\n * @template V - The type of the value returned by the getter function.\n *\n * @param {ComputedGetter<V>} getter - A function that returns a value of type `V`. This function is executed inside\n * the computed reference and its result is wrapped in an `OptionalResult`.\n *\n * @returns {ComputedRef<OptionalResult<V>>} - A computed reference containing the result of the getter function\n * wrapped in an `OptionalResult`. If the getter function executes successfully, the `value` property of the `OptionalResult`\n * will contain the result. If an error occurs, the `errors` property will contain the error message, and `value` will be `undefined`.\n *\n * @example\n * const myGetter = () => {\n * if (someCondition) {\n * throw new Error('An error occurred');\n * }\n * return 'Success';\n * };\n *\n * const myComputedResult = computedResult(myGetter);\n *\n * // If someCondition is true:\n * // myComputedResult.value will be { errors: ['An error occurred'], value: undefined }\n *\n * // If someCondition is false:\n * // myComputedResult.value will be { errors: undefined, value: 'Success' }\n */\nexport function computedResult<V>(getter: ComputedGetter<V>): ComputedRef<OptionalResult<V>> {\n return computed(() => {\n try {\n return wrapOptionalResult(getter());\n } catch (err) {\n return {\n errors: [ensureErrorLike(err)],\n value: undefined,\n };\n }\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCA,SAAgB,EAAkB,GAA2D;AAC3F,QAAO,QAAe;AACpB,MAAI;AACF,UAAO,EAAmB,GAAQ,CAAC;WAC5B,GAAK;AACZ,UAAO;IACL,QAAQ,CAAC,EAAgB,EAAI,CAAC;IAC9B,OAAO,KAAA;IACR;;GAEH"}
@@ -1,61 +1,45 @@
1
- import { ref as v, watch as i, computed as l, unref as y, reactive as C } from "vue";
2
- import { isJsonEqual as Z, deepClone as m } from "./lib/util/helpers/dist/objects.js";
3
- import { identity as q, isZodError as w, ensureError as x, formatZodError as J } from "./utils.js";
4
- function j(o) {
5
- const u = o.validate ?? q, { autoSave: f } = o, r = v(), a = v(), c = (e) => {
6
- a.value = {
7
- model: m(e)
8
- };
9
- };
10
- i(
11
- () => o.get(),
12
- (e) => c(e),
13
- { immediate: !0 }
14
- );
15
- const s = () => {
16
- var e;
17
- o.onSave(u(m((e = a.value) == null ? void 0 : e.model)));
18
- }, g = () => {
19
- c(o.get()), r.value = void 0;
20
- }, n = (e) => {
21
- const t = x(e);
22
- w(t) ? r.value = Error(J(t)) : r.value = t;
23
- }, d = (e) => {
24
- r.value = void 0;
25
- try {
26
- u(e), f && s();
27
- } catch (t) {
28
- n(t);
29
- }
30
- }, E = l({
31
- get: () => {
32
- var e;
33
- return (e = a.value) == null ? void 0 : e.model;
34
- },
35
- set(e) {
36
- c(e), d(e);
37
- }
38
- });
39
- i(
40
- a,
41
- (e, t) => {
42
- e && e === t && d(e.model);
43
- },
44
- { deep: !0 }
45
- );
46
- const S = l(() => !r.value), h = l(() => !Z(o.get(), y(a))), p = l(() => r.value ? r.value.message : "");
47
- return C({
48
- model: E,
49
- valid: S,
50
- isChanged: h,
51
- error: r,
52
- errorString: p,
53
- save: s,
54
- revert: g,
55
- setError: n
56
- });
1
+ import { deepClone as e, isJsonEqual as t } from "./lib/util/helpers/dist/objects.js";
2
+ import "./lib/util/helpers/dist/index.js";
3
+ import { ensureError as n, formatZodError as r, identity as i, isZodError as a } from "./utils.js";
4
+ import { computed as o, reactive as s, ref as c, unref as l, watch as u } from "vue";
5
+ function d(d) {
6
+ let f = d.validate ?? i, { autoSave: p } = d, m = c(), h = c(), g = (t) => {
7
+ h.value = { model: e(t) };
8
+ };
9
+ u(() => d.get(), (e) => g(e), { immediate: !0 });
10
+ let _ = () => {
11
+ d.onSave(f(e(h.value?.model)));
12
+ }, v = () => {
13
+ g(d.get()), m.value = void 0;
14
+ }, y = (e) => {
15
+ let t = n(e);
16
+ a(t) ? m.value = Error(r(t)) : m.value = t;
17
+ }, b = (e) => {
18
+ m.value = void 0;
19
+ try {
20
+ f(e), p && _();
21
+ } catch (e) {
22
+ y(e);
23
+ }
24
+ }, x = o({
25
+ get: () => h.value?.model,
26
+ set(e) {
27
+ g(e), b(e);
28
+ }
29
+ });
30
+ return u(h, (e, t) => {
31
+ e && e === t && b(e.model);
32
+ }, { deep: !0 }), s({
33
+ model: x,
34
+ valid: o(() => !m.value),
35
+ isChanged: o(() => !t(d.get(), l(h))),
36
+ error: m,
37
+ errorString: o(() => m.value ? m.value.message : ""),
38
+ save: _,
39
+ revert: v,
40
+ setError: y
41
+ });
57
42
  }
58
- export {
59
- j as createModel
60
- };
61
- //# sourceMappingURL=createModel.js.map
43
+ export { d as createModel };
44
+
45
+ //# sourceMappingURL=createModel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"createModel.js","sources":["../src/createModel.ts"],"sourcesContent":["import { reactive, computed, ref, watch, unref } from \"vue\";\nimport type { ModelOptions, Model } from \"./types\";\nimport { deepClone, isJsonEqual } from \"@milaboratories/helpers\";\nimport { identity, ensureError, isZodError, formatZodError } from \"./utils\";\n\nexport function createModel<M, V = unknown>(options: ModelOptions<M, V>): Model<M> {\n const validate = options.validate ?? identity;\n\n const { autoSave } = options;\n\n const error = ref<Error | undefined>();\n\n const local = ref<{ model: M }>();\n\n const setSource = (v: M) => {\n local.value = {\n model: deepClone(v),\n };\n };\n\n watch(\n () => options.get(),\n (v) => setSource(v),\n { immediate: true },\n );\n\n const save = () => {\n options.onSave(validate(deepClone(local.value?.model)));\n };\n\n const revert = () => {\n setSource(options.get());\n error.value = undefined;\n };\n\n const setError = (cause: unknown) => {\n const err = ensureError(cause);\n if (isZodError(err)) {\n error.value = Error(formatZodError(err)); // @todo temp\n } else {\n error.value = err;\n }\n };\n\n const setValue = (v: M) => {\n error.value = undefined;\n try {\n validate(v);\n if (autoSave) {\n save();\n }\n } catch (cause: unknown) {\n setError(cause);\n }\n };\n\n const model = computed<M>({\n get: () => {\n return local.value?.model as M;\n },\n set(v) {\n setSource(v);\n setValue(v);\n },\n });\n\n watch(\n local,\n (n, o) => {\n if (n && n === o) {\n setValue(n.model);\n }\n },\n { deep: true },\n );\n\n const valid = computed(() => !error.value);\n\n const isChanged = computed(() => {\n return !isJsonEqual(options.get(), unref(local));\n });\n\n const errorString = computed(() => (error.value ? error.value.message : \"\"));\n\n return reactive({\n model,\n valid,\n isChanged,\n error,\n errorString,\n save,\n revert,\n setError,\n });\n}\n"],"names":["createModel","options","validate","identity","autoSave","error","ref","local","setSource","v","deepClone","watch","save","_a","revert","setError","cause","err","ensureError","isZodError","formatZodError","setValue","model","computed","n","o","valid","isChanged","isJsonEqual","unref","errorString","reactive"],"mappings":";;;AAKO,SAASA,EAA4BC,GAAuC;AACjF,QAAMC,IAAWD,EAAQ,YAAYE,GAE/B,EAAE,UAAAC,MAAaH,GAEfI,IAAQC,EAAA,GAERC,IAAQD,EAAA,GAERE,IAAY,CAACC,MAAS;AAC1B,IAAAF,EAAM,QAAQ;AAAA,MACZ,OAAOG,EAAUD,CAAC;AAAA,IAAA;AAAA,EAEtB;AAEA,EAAAE;AAAA,IACE,MAAMV,EAAQ,IAAA;AAAA,IACd,CAACQ,MAAMD,EAAUC,CAAC;AAAA,IAClB,EAAE,WAAW,GAAA;AAAA,EAAK;AAGpB,QAAMG,IAAO,MAAM;;AACjB,IAAAX,EAAQ,OAAOC,EAASQ,GAAUG,IAAAN,EAAM,UAAN,gBAAAM,EAAa,KAAK,CAAC,CAAC;AAAA,EACxD,GAEMC,IAAS,MAAM;AACnB,IAAAN,EAAUP,EAAQ,KAAK,GACvBI,EAAM,QAAQ;AAAA,EAChB,GAEMU,IAAW,CAACC,MAAmB;AACnC,UAAMC,IAAMC,EAAYF,CAAK;AAC7B,IAAIG,EAAWF,CAAG,IAChBZ,EAAM,QAAQ,MAAMe,EAAeH,CAAG,CAAC,IAEvCZ,EAAM,QAAQY;AAAA,EAElB,GAEMI,IAAW,CAACZ,MAAS;AACzB,IAAAJ,EAAM,QAAQ;AACd,QAAI;AACF,MAAAH,EAASO,CAAC,GACNL,KACFQ,EAAA;AAAA,IAEJ,SAASI,GAAgB;AACvB,MAAAD,EAASC,CAAK;AAAA,IAChB;AAAA,EACF,GAEMM,IAAQC,EAAY;AAAA,IACxB,KAAK,MAAM;;AACT,cAAOV,IAAAN,EAAM,UAAN,gBAAAM,EAAa;AAAA,IACtB;AAAA,IACA,IAAIJ,GAAG;AACL,MAAAD,EAAUC,CAAC,GACXY,EAASZ,CAAC;AAAA,IACZ;AAAA,EAAA,CACD;AAED,EAAAE;AAAA,IACEJ;AAAA,IACA,CAACiB,GAAGC,MAAM;AACR,MAAID,KAAKA,MAAMC,KACbJ,EAASG,EAAE,KAAK;AAAA,IAEpB;AAAA,IACA,EAAE,MAAM,GAAA;AAAA,EAAK;AAGf,QAAME,IAAQH,EAAS,MAAM,CAAClB,EAAM,KAAK,GAEnCsB,IAAYJ,EAAS,MAClB,CAACK,EAAY3B,EAAQ,OAAO4B,EAAMtB,CAAK,CAAC,CAChD,GAEKuB,IAAcP,EAAS,MAAOlB,EAAM,QAAQA,EAAM,MAAM,UAAU,EAAG;AAE3E,SAAO0B,EAAS;AAAA,IACd,OAAAT;AAAA,IACA,OAAAI;AAAA,IACA,WAAAC;AAAA,IACA,OAAAtB;AAAA,IACA,aAAAyB;AAAA,IACA,MAAAlB;AAAA,IACA,QAAAE;AAAA,IACA,UAAAC;AAAA,EAAA,CACD;AACH;"}
1
+ {"version":3,"file":"createModel.js","names":[],"sources":["../src/createModel.ts"],"sourcesContent":["import { reactive, computed, ref, watch, unref } from \"vue\";\nimport type { ModelOptions, Model } from \"./types\";\nimport { deepClone, isJsonEqual } from \"@milaboratories/helpers\";\nimport { identity, ensureError, isZodError, formatZodError } from \"./utils\";\n\nexport function createModel<M, V = unknown>(options: ModelOptions<M, V>): Model<M> {\n const validate = options.validate ?? identity;\n\n const { autoSave } = options;\n\n const error = ref<Error | undefined>();\n\n const local = ref<{ model: M }>();\n\n const setSource = (v: M) => {\n local.value = {\n model: deepClone(v),\n };\n };\n\n watch(\n () => options.get(),\n (v) => setSource(v),\n { immediate: true },\n );\n\n const save = () => {\n options.onSave(validate(deepClone(local.value?.model)));\n };\n\n const revert = () => {\n setSource(options.get());\n error.value = undefined;\n };\n\n const setError = (cause: unknown) => {\n const err = ensureError(cause);\n if (isZodError(err)) {\n error.value = Error(formatZodError(err)); // @todo temp\n } else {\n error.value = err;\n }\n };\n\n const setValue = (v: M) => {\n error.value = undefined;\n try {\n validate(v);\n if (autoSave) {\n save();\n }\n } catch (cause: unknown) {\n setError(cause);\n }\n };\n\n const model = computed<M>({\n get: () => {\n return local.value?.model as M;\n },\n set(v) {\n setSource(v);\n setValue(v);\n },\n });\n\n watch(\n local,\n (n, o) => {\n if (n && n === o) {\n setValue(n.model);\n }\n },\n { deep: true },\n );\n\n const valid = computed(() => !error.value);\n\n const isChanged = computed(() => {\n return !isJsonEqual(options.get(), unref(local));\n });\n\n const errorString = computed(() => (error.value ? error.value.message : \"\"));\n\n return reactive({\n model,\n valid,\n isChanged,\n error,\n errorString,\n save,\n revert,\n setError,\n });\n}\n"],"mappings":";;;;AAKA,SAAgB,EAA4B,GAAuC;CACjF,IAAM,IAAW,EAAQ,YAAY,GAE/B,EAAE,gBAAa,GAEf,IAAQ,GAAwB,EAEhC,IAAQ,GAAmB,EAE3B,KAAa,MAAS;AAC1B,IAAM,QAAQ,EACZ,OAAO,EAAU,EAAE,EACpB;;AAGH,SACQ,EAAQ,KAAK,GAClB,MAAM,EAAU,EAAE,EACnB,EAAE,WAAW,IAAM,CACpB;CAED,IAAM,UAAa;AACjB,IAAQ,OAAO,EAAS,EAAU,EAAM,OAAO,MAAM,CAAC,CAAC;IAGnD,UAAe;AAEnB,EADA,EAAU,EAAQ,KAAK,CAAC,EACxB,EAAM,QAAQ,KAAA;IAGV,KAAY,MAAmB;EACnC,IAAM,IAAM,EAAY,EAAM;AAC9B,EAAI,EAAW,EAAI,GACjB,EAAM,QAAQ,MAAM,EAAe,EAAI,CAAC,GAExC,EAAM,QAAQ;IAIZ,KAAY,MAAS;AACzB,IAAM,QAAQ,KAAA;AACd,MAAI;AAEF,GADA,EAAS,EAAE,EACP,KACF,GAAM;WAED,GAAgB;AACvB,KAAS,EAAM;;IAIb,IAAQ,EAAY;EACxB,WACS,EAAM,OAAO;EAEtB,IAAI,GAAG;AAEL,GADA,EAAU,EAAE,EACZ,EAAS,EAAE;;EAEd,CAAC;AAoBF,QAlBA,EACE,IACC,GAAG,MAAM;AACR,EAAI,KAAK,MAAM,KACb,EAAS,EAAE,MAAM;IAGrB,EAAE,MAAM,IAAM,CACf,EAUM,EAAS;EACd;EACA,OAVY,QAAe,CAAC,EAAM,MAAM;EAWxC,WATgB,QACT,CAAC,EAAY,EAAQ,KAAK,EAAE,EAAM,EAAM,CAAC,CAChD;EAQA;EACA,aAPkB,QAAgB,EAAM,QAAQ,EAAM,MAAM,UAAU,GAAI;EAQ1E;EACA;EACA;EACD,CAAC"}
package/dist/defineApp.js CHANGED
@@ -1,118 +1,92 @@
1
- import { notEmpty as h } from "./lib/util/helpers/dist/utils.js";
2
- import { getPlatformaApiVersion as m, unwrapResult as k } from "@platforma-sdk/model";
3
- import { inject as y, reactive as j, markRaw as V } from "vue";
4
- import { createAppV1 as O } from "./internal/createAppV1.js";
5
- import { createAppV2 as S } from "./internal/createAppV2.js";
6
- import { createAppV3 as E } from "./internal/createAppV3.js";
7
- import { activateAgGrid as w } from "./aggrid.js";
8
- const g = Symbol("sdk-vue"), I = Symbol("plugin-data-access");
9
- function x() {
10
- return y(g);
1
+ import { notEmpty as e } from "./lib/util/helpers/dist/utils.js";
2
+ import "./lib/util/helpers/dist/index.js";
3
+ import { createAppV1 as t } from "./internal/createAppV1.js";
4
+ import { createAppV2 as n } from "./internal/createAppV2.js";
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");
11
+ function f() {
12
+ return a(u);
11
13
  }
12
- function z(e, A, f = {}) {
13
- let c;
14
- w();
15
- const p = e.apiVersion ?? 1, l = m(), b = async () => {
16
- if (l !== p)
17
- throw new Error(`Block requested API version ${l} but runtime API version is ${p}.
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}.
18
19
  Please update the desktop app to use the latest API version.`);
19
- e.apiVersion === void 0 || e.apiVersion === 1 ? await e.loadBlockState().then((i) => {
20
- u.loaded = !0;
21
- const t = O(i, e, f), o = A(t), s = Object.fromEntries(
22
- Object.entries(o.routes).map(([n, r]) => {
23
- const a = typeof r == "function" ? r() : r;
24
- return [n, V(a)];
25
- })
26
- );
27
- c = Object.assign(t, {
28
- ...o,
29
- getRoute(n) {
30
- return s[n];
31
- }
32
- });
33
- }) : e.apiVersion === 2 && await e.loadBlockState().then((i) => {
34
- const t = k(i);
35
- u.loaded = !0;
36
- const o = S(t, e, f), s = A(o), n = Object.fromEntries(
37
- Object.entries(s.routes).map(([r, a]) => {
38
- const d = typeof a == "function" ? a() : a;
39
- return [r, V(d)];
40
- })
41
- );
42
- c = Object.assign(o, {
43
- ...s,
44
- getRoute(r) {
45
- return n[r];
46
- }
47
- });
48
- });
49
- }, u = j({
50
- apiVersion: e.apiVersion ?? 1,
51
- loaded: !1,
52
- error: void 0,
53
- useApp() {
54
- return h(c, "App is not loaded");
55
- },
56
- install(i) {
57
- i.provide(g, this), b().catch((t) => {
58
- console.error("load initial state error", t), u.error = t;
59
- });
60
- }
61
- });
62
- return u;
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,
25
+ getRoute(e) {
26
+ return s[e];
27
+ }
28
+ });
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, {
34
+ ...s,
35
+ getRoute(e) {
36
+ return c[e];
37
+ }
38
+ });
39
+ });
40
+ }, g = s({
41
+ apiVersion: r.apiVersion ?? 1,
42
+ loaded: !1,
43
+ error: void 0,
44
+ useApp() {
45
+ return e(f, "App is not loaded");
46
+ },
47
+ install(e) {
48
+ e.provide(u, this), h().catch((e) => {
49
+ console.error("load initial state error", e), g.error = e;
50
+ });
51
+ }
52
+ });
53
+ return g;
63
54
  }
64
- function C(e, A, f = {}) {
65
- let c, p;
66
- w();
67
- const l = 3, b = m(), u = async () => {
68
- if (b !== l)
69
- throw new Error(`Block requested API version ${b} but runtime API version is ${l}.
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.
70
60
  Please update the desktop app to use the latest API version.`);
71
- await e.loadBlockState().then((t) => {
72
- const o = k(t);
73
- i.loaded = !0;
74
- const { app: s, pluginAccess: n } = E(
75
- o,
76
- e,
77
- f
78
- );
79
- if (!p)
80
- throw new Error(
81
- "Plugin data injection failed: Vue app instance not captured during install()"
82
- );
83
- p.provide(I, n);
84
- const r = A(s), a = Object.fromEntries(
85
- Object.entries(r.routes).map(([d, v]) => {
86
- const P = typeof v == "function" ? v() : v;
87
- return [d, V(P)];
88
- })
89
- );
90
- c = Object.assign(s, {
91
- ...r,
92
- getRoute(d) {
93
- return a[d];
94
- }
95
- });
96
- });
97
- }, i = j({
98
- apiVersion: 3,
99
- loaded: !1,
100
- error: void 0,
101
- useApp() {
102
- return h(c, "App is not loaded");
103
- },
104
- install(t) {
105
- p = t, t.provide(g, this), u().catch((o) => {
106
- console.error("load initial state error", o), i.error = o;
107
- });
108
- }
109
- });
110
- return i;
61
+ 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,
70
+ getRoute(e) {
71
+ return m[e];
72
+ }
73
+ });
74
+ });
75
+ }, g = s({
76
+ apiVersion: 3,
77
+ loaded: !1,
78
+ error: void 0,
79
+ useApp() {
80
+ return e(f, "App is not loaded");
81
+ },
82
+ install(e) {
83
+ p = e, e.provide(u, this), h().catch((e) => {
84
+ console.error("load initial state error", e), g.error = e;
85
+ });
86
+ }
87
+ });
88
+ return g;
111
89
  }
112
- export {
113
- z as defineApp,
114
- C as defineAppV3,
115
- I as pluginDataKey,
116
- x as useSdkPlugin
117
- };
118
- //# sourceMappingURL=defineApp.js.map
90
+ export { p as defineApp, m as defineAppV3, d as pluginDataKey, f as useSdkPlugin };
91
+
92
+ //# sourceMappingURL=defineApp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"defineApp.js","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"],"names":["pluginKey","pluginDataKey","useSdkPlugin","inject","defineApp","platforma","extendApp","settings","app","activateAgGrid","runtimeApiVersion","blockRequestedApiVersion","getPlatformaApiVersion","loadApp","state","plugin","baseApp","createAppV1","localState","routes","href","component","c","markRaw","stateOrError","unwrapResult","createAppV2","reactive","notEmpty","err","defineAppV3","vueAppInstance","pluginAccess","createAppV3"],"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} 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,18 +1,17 @@
1
- import { getCurrentScope as s, effectScope as c, onScopeDispose as i, reactive as p } from "vue";
2
- const t = /* @__PURE__ */ new Map();
3
- function f(o, e) {
4
- const n = s() ?? c(), r = n.run(() => (i(() => {
5
- t.delete(o);
6
- }), p(e())));
7
- return r[Symbol.dispose] = () => {
8
- n.stop();
9
- }, r;
1
+ import { effectScope as e, getCurrentScope as t, onScopeDispose as n, reactive as r } from "vue";
2
+ var i = /* @__PURE__ */ new Map();
3
+ function a(a, o) {
4
+ let s = t() ?? e(), c = s.run(() => (n(() => {
5
+ i.delete(a);
6
+ }), r(o())));
7
+ return c[Symbol.dispose] = () => {
8
+ s.stop();
9
+ }, c;
10
10
  }
11
- function S(o) {
12
- const e = Symbol();
13
- return () => (t.has(e) || t.set(e, f(e, o)), t.get(e));
11
+ function o(e) {
12
+ let t = Symbol();
13
+ return () => (i.has(t) || i.set(t, a(t, e)), i.get(t));
14
14
  }
15
- export {
16
- S as defineStore
17
- };
18
- //# sourceMappingURL=defineStore.js.map
15
+ export { o as defineStore };
16
+
17
+ //# sourceMappingURL=defineStore.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"defineStore.js","sources":["../src/defineStore.ts"],"sourcesContent":["import { reactive, onScopeDispose, getCurrentScope, effectScope } from \"vue\";\n\nconst shelf = new Map<symbol, unknown>();\n\nfunction initStore<S extends object>(key: symbol, cb: () => S) {\n const scope = getCurrentScope() ?? effectScope();\n\n const store = scope.run(() => {\n onScopeDispose(() => {\n shelf.delete(key);\n });\n\n return reactive(cb());\n }) as S;\n\n (store as Disposable)[Symbol.dispose] = () => {\n scope.stop();\n };\n\n return store;\n}\n\nexport function defineStore<S extends object>(cb: () => S) {\n const key = Symbol();\n\n return () => {\n if (!shelf.has(key)) {\n shelf.set(key, initStore(key, cb));\n }\n return shelf.get(key) as S & Disposable;\n };\n}\n"],"names":["shelf","initStore","key","cb","scope","getCurrentScope","effectScope","store","onScopeDispose","reactive","defineStore"],"mappings":";AAEA,MAAMA,wBAAY,IAAA;AAElB,SAASC,EAA4BC,GAAaC,GAAa;AAC7D,QAAMC,IAAQC,EAAA,KAAqBC,EAAA,GAE7BC,IAAQH,EAAM,IAAI,OACtBI,EAAe,MAAM;AACnB,IAAAR,EAAM,OAAOE,CAAG;AAAA,EAClB,CAAC,GAEMO,EAASN,GAAI,EACrB;AAEA,SAAAI,EAAqB,OAAO,OAAO,IAAI,MAAM;AAC5C,IAAAH,EAAM,KAAA;AAAA,EACR,GAEOG;AACT;AAEO,SAASG,EAA8BP,GAAa;AACzD,QAAMD,IAAM,OAAA;AAEZ,SAAO,OACAF,EAAM,IAAIE,CAAG,KAChBF,EAAM,IAAIE,GAAKD,EAAUC,GAAKC,CAAE,CAAC,GAE5BH,EAAM,IAAIE,CAAG;AAExB;"}
1
+ {"version":3,"file":"defineStore.js","names":[],"sources":["../src/defineStore.ts"],"sourcesContent":["import { reactive, onScopeDispose, getCurrentScope, effectScope } from \"vue\";\n\nconst shelf = new Map<symbol, unknown>();\n\nfunction initStore<S extends object>(key: symbol, cb: () => S) {\n const scope = getCurrentScope() ?? effectScope();\n\n const store = scope.run(() => {\n onScopeDispose(() => {\n shelf.delete(key);\n });\n\n return reactive(cb());\n }) as S;\n\n (store as Disposable)[Symbol.dispose] = () => {\n scope.stop();\n };\n\n return store;\n}\n\nexport function defineStore<S extends object>(cb: () => S) {\n const key = Symbol();\n\n return () => {\n if (!shelf.has(key)) {\n shelf.set(key, initStore(key, cb));\n }\n return shelf.get(key) as S & Disposable;\n };\n}\n"],"mappings":";AAEA,IAAM,oBAAQ,IAAI,KAAsB;AAExC,SAAS,EAA4B,GAAa,GAAa;CAC7D,IAAM,IAAQ,GAAiB,IAAI,GAAa,EAE1C,IAAQ,EAAM,WAClB,QAAqB;AACnB,IAAM,OAAO,EAAI;GACjB,EAEK,EAAS,GAAI,CAAC,EACrB;AAMF,QAJC,EAAqB,OAAO,iBAAiB;AAC5C,IAAM,MAAM;IAGP;;AAGT,SAAgB,EAA8B,GAAa;CACzD,IAAM,IAAM,QAAQ;AAEpB,eACO,EAAM,IAAI,EAAI,IACjB,EAAM,IAAI,GAAK,EAAU,GAAK,EAAG,CAAC,EAE7B,EAAM,IAAI,EAAI"}