@platforma-sdk/ui-vue 1.58.5 → 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 (495) 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 +14 -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.d.ts +1 -1
  61. package/dist/components/PlAdvancedFilter/index.d.ts.map +1 -1
  62. package/dist/components/PlAdvancedFilter/index.js +6 -6
  63. package/dist/components/PlAdvancedFilter/index.js.map +1 -1
  64. package/dist/components/PlAdvancedFilter/utils.js +49 -64
  65. package/dist/components/PlAdvancedFilter/utils.js.map +1 -1
  66. package/dist/components/PlAgCellFile/PlAgCellFile.js +5 -0
  67. package/dist/components/PlAgCellFile/PlAgCellFile.js.map +1 -0
  68. package/dist/components/PlAgCellFile/PlAgCellFile.vue2.js +36 -5
  69. package/dist/components/PlAgCellFile/PlAgCellFile.vue2.js.map +1 -1
  70. package/dist/components/PlAgCellProgress/PlAgCellProgress.js +5 -0
  71. package/dist/components/PlAgCellProgress/PlAgCellProgress.js.map +1 -0
  72. package/dist/components/PlAgCellProgress/PlAgCellProgress.vue2.js +13 -5
  73. package/dist/components/PlAgCellProgress/PlAgCellProgress.vue2.js.map +1 -1
  74. package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.js +6 -0
  75. package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.js.map +1 -0
  76. package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.vue2.js +12 -0
  77. package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.vue2.js.map +1 -0
  78. package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.js +6 -0
  79. package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.js.map +1 -0
  80. package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.style.css +1 -0
  81. package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.vue2.js +31 -0
  82. package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.vue2.js.map +1 -0
  83. package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.js +6 -0
  84. package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.js.map +1 -0
  85. package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.style.css +1 -0
  86. package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.vue2.js +19 -0
  87. package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.vue2.js.map +1 -0
  88. package/dist/components/PlAgColumnHeader/PlAgColumnHeader.js +5 -0
  89. package/dist/components/PlAgColumnHeader/PlAgColumnHeader.js.map +1 -0
  90. package/dist/components/PlAgColumnHeader/PlAgColumnHeader.vue2.js +68 -5
  91. package/dist/components/PlAgColumnHeader/PlAgColumnHeader.vue2.js.map +1 -1
  92. package/dist/components/PlAgColumnHeader/pl-ag-column-header.css +1 -1
  93. package/dist/components/PlAgCsvExporter/PlAgCsvExporter.js +5 -0
  94. package/dist/components/PlAgCsvExporter/PlAgCsvExporter.js.map +1 -0
  95. package/dist/components/PlAgCsvExporter/PlAgCsvExporter.vue2.js +26 -5
  96. package/dist/components/PlAgCsvExporter/PlAgCsvExporter.vue2.js.map +1 -1
  97. package/dist/components/PlAgCsvExporter/export-csv.js +36 -43
  98. package/dist/components/PlAgCsvExporter/export-csv.js.map +1 -1
  99. package/dist/components/PlAgDataTable/PlAgDataTableSheets.js +7 -0
  100. package/dist/components/PlAgDataTable/PlAgDataTableSheets.js.map +1 -0
  101. package/dist/components/PlAgDataTable/PlAgDataTableSheets.style.js +4 -0
  102. package/dist/components/PlAgDataTable/PlAgDataTableSheets.style.js.map +1 -0
  103. package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue.css +1 -0
  104. package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue2.js +68 -72
  105. package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue2.js.map +1 -1
  106. package/dist/components/PlAgDataTable/PlAgDataTableV2.js +7 -0
  107. package/dist/components/PlAgDataTable/PlAgDataTableV2.js.map +1 -0
  108. package/dist/components/PlAgDataTable/PlAgDataTableV2.style.js +7 -0
  109. package/dist/components/PlAgDataTable/PlAgDataTableV2.style.js.map +1 -0
  110. package/dist/components/PlAgDataTable/PlAgDataTableV2.vue.css +1 -0
  111. package/dist/components/PlAgDataTable/PlAgDataTableV2.vue2.js +307 -336
  112. package/dist/components/PlAgDataTable/PlAgDataTableV2.vue2.js.map +1 -1
  113. package/dist/components/PlAgDataTable/PlAgOverlayLoading.js +5 -0
  114. package/dist/components/PlAgDataTable/PlAgOverlayLoading.js.map +1 -0
  115. package/dist/components/PlAgDataTable/PlAgOverlayLoading.vue2.js +26 -5
  116. package/dist/components/PlAgDataTable/PlAgOverlayLoading.vue2.js.map +1 -1
  117. package/dist/components/PlAgDataTable/PlAgOverlayNoRows.js +6 -0
  118. package/dist/components/PlAgDataTable/PlAgOverlayNoRows.js.map +1 -0
  119. package/dist/components/PlAgDataTable/{PlAgOverlayNoRows.css → PlAgOverlayNoRows.style.css} +1 -1
  120. package/dist/components/PlAgDataTable/PlAgOverlayNoRows.vue2.js +14 -0
  121. package/dist/components/PlAgDataTable/PlAgOverlayNoRows.vue2.js.map +1 -0
  122. package/dist/components/PlAgDataTable/PlAgRowCount.js +5 -0
  123. package/dist/components/PlAgDataTable/PlAgRowCount.js.map +1 -0
  124. package/dist/components/PlAgDataTable/PlAgRowCount.vue2.js +23 -5
  125. package/dist/components/PlAgDataTable/PlAgRowCount.vue2.js.map +1 -1
  126. package/dist/components/PlAgDataTable/ag-override.js +4 -0
  127. package/dist/components/PlAgDataTable/ag-override.js.map +1 -0
  128. package/dist/components/PlAgDataTable/compositions/useFilterableColumns.js +25 -30
  129. package/dist/components/PlAgDataTable/compositions/useFilterableColumns.js.map +1 -1
  130. package/dist/components/PlAgDataTable/compositions/useGrid.js +102 -112
  131. package/dist/components/PlAgDataTable/compositions/useGrid.js.map +1 -1
  132. package/dist/components/PlAgDataTable/pl-ag-overlay-loading.css +1 -1
  133. package/dist/components/PlAgDataTable/pl-ag-overlay-loading.module.js +9 -0
  134. package/dist/components/PlAgDataTable/pl-ag-overlay-loading.module.js.map +1 -0
  135. package/dist/components/PlAgDataTable/sources/common.js +6 -8
  136. package/dist/components/PlAgDataTable/sources/common.js.map +1 -1
  137. package/dist/components/PlAgDataTable/sources/focus-row.js +36 -51
  138. package/dist/components/PlAgDataTable/sources/focus-row.js.map +1 -1
  139. package/dist/components/PlAgDataTable/sources/menu-items.js +10 -6
  140. package/dist/components/PlAgDataTable/sources/menu-items.js.map +1 -1
  141. package/dist/components/PlAgDataTable/sources/row-number.js +82 -94
  142. package/dist/components/PlAgDataTable/sources/row-number.js.map +1 -1
  143. package/dist/components/PlAgDataTable/sources/table-source-v2.js +178 -199
  144. package/dist/components/PlAgDataTable/sources/table-source-v2.js.map +1 -1
  145. package/dist/components/PlAgDataTable/sources/table-state-v2.js +155 -132
  146. package/dist/components/PlAgDataTable/sources/table-state-v2.js.map +1 -1
  147. package/dist/components/PlAgDataTable/sources/value-rendering.js +33 -38
  148. package/dist/components/PlAgDataTable/sources/value-rendering.js.map +1 -1
  149. package/dist/components/PlAgDataTable/types.js +54 -43
  150. package/dist/components/PlAgDataTable/types.js.map +1 -1
  151. package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.js +7 -0
  152. package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.js.map +1 -0
  153. package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.style.js +4 -0
  154. package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.style.js.map +1 -0
  155. package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue2.js +89 -100
  156. package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue2.js.map +1 -1
  157. package/dist/components/PlAgGridColumnManager/useFilteredItems.js +46 -33
  158. package/dist/components/PlAgGridColumnManager/useFilteredItems.js.map +1 -1
  159. package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.js +5 -0
  160. package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.js.map +1 -0
  161. package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue.d.ts.map +1 -1
  162. package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue2.js +37 -5
  163. package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue2.js.map +1 -1
  164. package/dist/components/PlAgRowNumCheckbox/pl-ag-row-num-checkbox.css +1 -1
  165. package/dist/components/PlAgRowNumCheckbox/pl-ag-row-num-checkbox.module.js +10 -0
  166. package/dist/components/PlAgRowNumCheckbox/pl-ag-row-num-checkbox.module.js.map +1 -0
  167. package/dist/components/PlAgRowNumHeader.js +5 -0
  168. package/dist/components/PlAgRowNumHeader.js.map +1 -0
  169. package/dist/components/PlAgRowNumHeader.vue2.js +38 -5
  170. package/dist/components/PlAgRowNumHeader.vue2.js.map +1 -1
  171. package/dist/components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.js +5 -0
  172. package/dist/components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.js.map +1 -0
  173. package/dist/components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.vue2.js +32 -5
  174. package/dist/components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.vue2.js.map +1 -1
  175. package/dist/components/PlAgTextAndButtonCell/pl-ag-text-and-button-cell.css +1 -1
  176. package/dist/components/PlAnnotations/components/AnnotationsSidebar.js +7 -0
  177. package/dist/components/PlAnnotations/components/AnnotationsSidebar.js.map +1 -0
  178. package/dist/components/PlAnnotations/components/AnnotationsSidebar.style.js +11 -0
  179. package/dist/components/PlAnnotations/components/AnnotationsSidebar.style.js.map +1 -0
  180. package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue.css +1 -0
  181. package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue2.js +102 -113
  182. package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue2.js.map +1 -1
  183. package/dist/components/PlAnnotations/components/FilterSidebar.js +7 -0
  184. package/dist/components/PlAnnotations/components/FilterSidebar.js.map +1 -0
  185. package/dist/components/PlAnnotations/components/FilterSidebar.style.js +7 -0
  186. package/dist/components/PlAnnotations/components/FilterSidebar.style.js.map +1 -0
  187. package/dist/components/PlAnnotations/components/FilterSidebar.vue.css +1 -0
  188. package/dist/components/PlAnnotations/components/FilterSidebar.vue.d.ts +1 -2
  189. package/dist/components/PlAnnotations/components/FilterSidebar.vue.d.ts.map +1 -1
  190. package/dist/components/PlAnnotations/components/FilterSidebar.vue2.js +121 -131
  191. package/dist/components/PlAnnotations/components/FilterSidebar.vue2.js.map +1 -1
  192. package/dist/components/PlAnnotations/components/PlAnnotations.js +7 -0
  193. package/dist/components/PlAnnotations/components/PlAnnotations.js.map +1 -0
  194. package/dist/components/PlAnnotations/components/PlAnnotations.style.js +4 -0
  195. package/dist/components/PlAnnotations/components/PlAnnotations.style.js.map +1 -0
  196. package/dist/components/PlAnnotations/components/PlAnnotations.vue2.js +73 -65
  197. package/dist/components/PlAnnotations/components/PlAnnotations.vue2.js.map +1 -1
  198. package/dist/components/PlAnnotations/components/PlAnnotationsModal.js +7 -0
  199. package/dist/components/PlAnnotations/components/PlAnnotationsModal.js.map +1 -0
  200. package/dist/components/PlAnnotations/components/PlAnnotationsModal.style.js +7 -0
  201. package/dist/components/PlAnnotations/components/PlAnnotationsModal.style.js.map +1 -0
  202. package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue2.js +58 -52
  203. package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue2.js.map +1 -1
  204. package/dist/components/PlAnnotations/components/style.css +1 -1
  205. package/dist/components/PlAnnotations/components/style.module.js +8 -0
  206. package/dist/components/PlAnnotations/components/style.module.js.map +1 -0
  207. package/dist/components/PlAnnotations/utils.js +6 -8
  208. package/dist/components/PlAnnotations/utils.js.map +1 -1
  209. package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.js +5 -0
  210. package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.js.map +1 -0
  211. package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue2.js +57 -5
  212. package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue2.js.map +1 -1
  213. package/dist/components/PlAppErrorNotificationAlert/pl-app-error-notification-alert.css +1 -1
  214. package/dist/components/PlBtnExportArchive/Item.js +7 -0
  215. package/dist/components/PlBtnExportArchive/Item.js.map +1 -0
  216. package/dist/components/PlBtnExportArchive/Item.style.js +9 -0
  217. package/dist/components/PlBtnExportArchive/Item.style.js.map +1 -0
  218. package/dist/components/PlBtnExportArchive/Item.vue.css +1 -0
  219. package/dist/components/PlBtnExportArchive/Item.vue2.js +28 -42
  220. package/dist/components/PlBtnExportArchive/Item.vue2.js.map +1 -1
  221. package/dist/components/PlBtnExportArchive/PlBtnExportArchive.js +7 -0
  222. package/dist/components/PlBtnExportArchive/PlBtnExportArchive.js.map +1 -0
  223. package/dist/components/PlBtnExportArchive/PlBtnExportArchive.style.js +8 -0
  224. package/dist/components/PlBtnExportArchive/PlBtnExportArchive.style.js.map +1 -0
  225. package/dist/components/PlBtnExportArchive/PlBtnExportArchive.vue.css +1 -0
  226. package/dist/components/PlBtnExportArchive/PlBtnExportArchive.vue2.js +161 -159
  227. package/dist/components/PlBtnExportArchive/PlBtnExportArchive.vue2.js.map +1 -1
  228. package/dist/components/PlBtnExportArchive/Summary.js +7 -0
  229. package/dist/components/PlBtnExportArchive/Summary.js.map +1 -0
  230. package/dist/components/PlBtnExportArchive/Summary.style.js +8 -0
  231. package/dist/components/PlBtnExportArchive/Summary.style.js.map +1 -0
  232. package/dist/components/PlBtnExportArchive/Summary.vue.css +1 -0
  233. package/dist/components/PlBtnExportArchive/Summary.vue2.js +26 -41
  234. package/dist/components/PlBtnExportArchive/Summary.vue2.js.map +1 -1
  235. package/dist/components/PlTableFastSearch/PlTableFastSearch.js +5 -0
  236. package/dist/components/PlTableFastSearch/PlTableFastSearch.js.map +1 -0
  237. package/dist/components/PlTableFastSearch/PlTableFastSearch.vue2.js +41 -5
  238. package/dist/components/PlTableFastSearch/PlTableFastSearch.vue2.js.map +1 -1
  239. package/dist/components/PlTableFilters/PlTableFiltersV2.js +7 -0
  240. package/dist/components/PlTableFilters/PlTableFiltersV2.js.map +1 -0
  241. package/dist/components/PlTableFilters/PlTableFiltersV2.style.js +4 -0
  242. package/dist/components/PlTableFilters/PlTableFiltersV2.style.js.map +1 -0
  243. package/dist/components/PlTableFilters/PlTableFiltersV2.vue.css +1 -0
  244. package/dist/components/PlTableFilters/PlTableFiltersV2.vue.d.ts.map +1 -1
  245. package/dist/components/PlTableFilters/PlTableFiltersV2.vue2.js +97 -106
  246. package/dist/components/PlTableFilters/PlTableFiltersV2.vue2.js.map +1 -1
  247. package/dist/composition/fileContent.js +169 -200
  248. package/dist/composition/fileContent.js.map +1 -1
  249. package/dist/computedResult.js +47 -18
  250. package/dist/computedResult.js.map +1 -1
  251. package/dist/createModel.js +44 -60
  252. package/dist/createModel.js.map +1 -1
  253. package/dist/defineApp.js +87 -113
  254. package/dist/defineApp.js.map +1 -1
  255. package/dist/defineStore.js +15 -16
  256. package/dist/defineStore.js.map +1 -1
  257. package/dist/index.js +39 -98
  258. package/dist/index.js.map +1 -1
  259. package/dist/internal/UpdateSerializer.js +50 -66
  260. package/dist/internal/UpdateSerializer.js.map +1 -1
  261. package/dist/internal/createAppModel.js +54 -68
  262. package/dist/internal/createAppModel.js.map +1 -1
  263. package/dist/internal/createAppV1.js +140 -193
  264. package/dist/internal/createAppV1.js.map +1 -1
  265. package/dist/internal/createAppV2.d.ts.map +1 -1
  266. package/dist/internal/createAppV2.js +149 -193
  267. package/dist/internal/createAppV2.js.map +1 -1
  268. package/dist/internal/createAppV3.d.ts.map +1 -1
  269. package/dist/internal/createAppV3.js +157 -202
  270. package/dist/internal/createAppV3.js.map +1 -1
  271. package/dist/internal/test-helpers/utils.d.ts.map +1 -1
  272. package/dist/lib/util/helpers/dist/error.js +1 -0
  273. package/dist/lib/util/helpers/dist/functions.js +8 -9
  274. package/dist/lib/util/helpers/dist/functions.js.map +1 -1
  275. package/dist/lib/util/helpers/dist/hash.js +5 -0
  276. package/dist/lib/util/helpers/dist/hash.js.map +1 -0
  277. package/dist/lib/util/helpers/dist/index.js +9 -0
  278. package/dist/lib/util/helpers/dist/objects.js +75 -42
  279. package/dist/lib/util/helpers/dist/objects.js.map +1 -1
  280. package/dist/lib/util/helpers/dist/prettyBytes.js +60 -26
  281. package/dist/lib/util/helpers/dist/prettyBytes.js.map +1 -1
  282. package/dist/lib/util/helpers/dist/random.js +6 -8
  283. package/dist/lib/util/helpers/dist/random.js.map +1 -1
  284. package/dist/lib/util/helpers/dist/strings.js +11 -14
  285. package/dist/lib/util/helpers/dist/strings.js.map +1 -1
  286. package/dist/lib/util/helpers/dist/uniqId.js +7 -0
  287. package/dist/lib/util/helpers/dist/uniqId.js.map +1 -0
  288. package/dist/lib/util/helpers/dist/utils.js +34 -50
  289. package/dist/lib/util/helpers/dist/utils.js.map +1 -1
  290. package/dist/lib.js +38 -0
  291. package/dist/objectHash.js +13 -10
  292. package/dist/objectHash.js.map +1 -1
  293. package/dist/plugins/Monetization/EndOfPeriod.js +7 -0
  294. package/dist/plugins/Monetization/EndOfPeriod.js.map +1 -0
  295. package/dist/plugins/Monetization/EndOfPeriod.style.js +4 -0
  296. package/dist/plugins/Monetization/EndOfPeriod.style.js.map +1 -0
  297. package/dist/plugins/Monetization/EndOfPeriod.vue.css +1 -0
  298. package/dist/plugins/Monetization/EndOfPeriod.vue2.js +15 -23
  299. package/dist/plugins/Monetization/EndOfPeriod.vue2.js.map +1 -1
  300. package/dist/plugins/Monetization/LimitCard.js +7 -0
  301. package/dist/plugins/Monetization/LimitCard.js.map +1 -0
  302. package/dist/plugins/Monetization/LimitCard.style.js +18 -0
  303. package/dist/plugins/Monetization/LimitCard.style.js.map +1 -0
  304. package/dist/plugins/Monetization/LimitCard.vue.css +1 -0
  305. package/dist/plugins/Monetization/LimitCard.vue2.js +47 -84
  306. package/dist/plugins/Monetization/LimitCard.vue2.js.map +1 -1
  307. package/dist/plugins/Monetization/MonetizationSidebar.js +5 -0
  308. package/dist/plugins/Monetization/MonetizationSidebar.js.map +1 -0
  309. package/dist/plugins/Monetization/MonetizationSidebar.vue2.js +106 -5
  310. package/dist/plugins/Monetization/MonetizationSidebar.vue2.js.map +1 -1
  311. package/dist/plugins/Monetization/RunStatus.js +7 -0
  312. package/dist/plugins/Monetization/RunStatus.js.map +1 -0
  313. package/dist/plugins/Monetization/RunStatus.style.js +13 -0
  314. package/dist/plugins/Monetization/RunStatus.style.js.map +1 -0
  315. package/dist/plugins/Monetization/RunStatus.vue.css +1 -0
  316. package/dist/plugins/Monetization/RunStatus.vue2.js +21 -40
  317. package/dist/plugins/Monetization/RunStatus.vue2.js.map +1 -1
  318. package/dist/plugins/Monetization/UserCabinetCard.js +7 -0
  319. package/dist/plugins/Monetization/UserCabinetCard.js.map +1 -0
  320. package/dist/plugins/Monetization/UserCabinetCard.style.js +12 -0
  321. package/dist/plugins/Monetization/UserCabinetCard.style.js.map +1 -0
  322. package/dist/plugins/Monetization/UserCabinetCard.vue.css +1 -0
  323. package/dist/plugins/Monetization/UserCabinetCard.vue2.js +50 -70
  324. package/dist/plugins/Monetization/UserCabinetCard.vue2.js.map +1 -1
  325. package/dist/plugins/Monetization/useButtonTarget.js +15 -16
  326. package/dist/plugins/Monetization/useButtonTarget.js.map +1 -1
  327. package/dist/plugins/Monetization/useInfo.js +36 -71
  328. package/dist/plugins/Monetization/useInfo.js.map +1 -1
  329. package/dist/plugins/Monetization/validation.js +34 -42
  330. package/dist/plugins/Monetization/validation.js.map +1 -1
  331. package/dist/urls.d.ts.map +1 -1
  332. package/dist/urls.js +4 -5
  333. package/dist/urls.js.map +1 -1
  334. package/dist/usePlugin.js +32 -12
  335. package/dist/usePlugin.js.map +1 -1
  336. package/dist/utils.d.ts.map +1 -1
  337. package/dist/utils.js +29 -54
  338. package/dist/utils.js.map +1 -1
  339. package/package.json +8 -8
  340. package/src/components/PlAdvancedFilter/index.ts +1 -1
  341. package/src/components/PlAnnotations/components/FilterSidebar.vue +11 -6
  342. package/src/components/PlTableFilters/PlTableFiltersV2.vue +2 -1
  343. package/dist/_virtual/_plugin-vue_export-helper.js.map +0 -1
  344. package/dist/components/BlockLayout.css +0 -1
  345. package/dist/components/BlockLayout.vue.js +0 -10
  346. package/dist/components/BlockLayout.vue.js.map +0 -1
  347. package/dist/components/BlockLayout.vue3.js +0 -8
  348. package/dist/components/BlockLayout.vue3.js.map +0 -1
  349. package/dist/components/BlockLoader.vue.js +0 -26
  350. package/dist/components/BlockLoader.vue.js.map +0 -1
  351. package/dist/components/LoaderPage.vue.js +0 -15
  352. package/dist/components/LoaderPage.vue.js.map +0 -1
  353. package/dist/components/NotFound.vue.js +0 -26
  354. package/dist/components/NotFound.vue.js.map +0 -1
  355. package/dist/components/PlAdvancedFilter/FilterEditor.css +0 -1
  356. package/dist/components/PlAdvancedFilter/FilterEditor.vue.js +0 -10
  357. package/dist/components/PlAdvancedFilter/FilterEditor.vue.js.map +0 -1
  358. package/dist/components/PlAdvancedFilter/FilterEditor.vue3.js +0 -32
  359. package/dist/components/PlAdvancedFilter/FilterEditor.vue3.js.map +0 -1
  360. package/dist/components/PlAdvancedFilter/OperandButton.css +0 -1
  361. package/dist/components/PlAdvancedFilter/OperandButton.vue.js +0 -10
  362. package/dist/components/PlAdvancedFilter/OperandButton.vue.js.map +0 -1
  363. package/dist/components/PlAdvancedFilter/OperandButton.vue3.js +0 -12
  364. package/dist/components/PlAdvancedFilter/OperandButton.vue3.js.map +0 -1
  365. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.css +0 -1
  366. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue.js +0 -10
  367. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue.js.map +0 -1
  368. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue3.js +0 -20
  369. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue3.js.map +0 -1
  370. package/dist/components/PlAgCellFile/PlAgCellFile.vue.js +0 -32
  371. package/dist/components/PlAgCellFile/PlAgCellFile.vue.js.map +0 -1
  372. package/dist/components/PlAgCellProgress/PlAgCellProgress.vue.js +0 -16
  373. package/dist/components/PlAgCellProgress/PlAgCellProgress.vue.js.map +0 -1
  374. package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.vue.js +0 -22
  375. package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.vue.js.map +0 -1
  376. package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.vue3.js +0 -6
  377. package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.vue3.js.map +0 -1
  378. package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.css +0 -1
  379. package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.vue.js +0 -32
  380. package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.vue.js.map +0 -1
  381. package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.vue3.js +0 -6
  382. package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.vue3.js.map +0 -1
  383. package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.css +0 -1
  384. package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.vue.js +0 -24
  385. package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.vue.js.map +0 -1
  386. package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.vue3.js +0 -6
  387. package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.vue3.js.map +0 -1
  388. package/dist/components/PlAgColumnHeader/PlAgColumnHeader.vue.js +0 -97
  389. package/dist/components/PlAgColumnHeader/PlAgColumnHeader.vue.js.map +0 -1
  390. package/dist/components/PlAgCsvExporter/PlAgCsvExporter.vue.js +0 -33
  391. package/dist/components/PlAgCsvExporter/PlAgCsvExporter.vue.js.map +0 -1
  392. package/dist/components/PlAgDataTable/PlAgDataTableSheets.css +0 -1
  393. package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue.js +0 -10
  394. package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue.js.map +0 -1
  395. package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue3.js +0 -8
  396. package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue3.js.map +0 -1
  397. package/dist/components/PlAgDataTable/PlAgDataTableV2.css +0 -1
  398. package/dist/components/PlAgDataTable/PlAgDataTableV2.vue.js +0 -10
  399. package/dist/components/PlAgDataTable/PlAgDataTableV2.vue.js.map +0 -1
  400. package/dist/components/PlAgDataTable/PlAgDataTableV2.vue3.js +0 -10
  401. package/dist/components/PlAgDataTable/PlAgDataTableV2.vue3.js.map +0 -1
  402. package/dist/components/PlAgDataTable/PlAgOverlayLoading.vue.js +0 -48
  403. package/dist/components/PlAgDataTable/PlAgOverlayLoading.vue.js.map +0 -1
  404. package/dist/components/PlAgDataTable/PlAgOverlayNoRows.vue.js +0 -22
  405. package/dist/components/PlAgDataTable/PlAgOverlayNoRows.vue.js.map +0 -1
  406. package/dist/components/PlAgDataTable/PlAgOverlayNoRows.vue3.js +0 -6
  407. package/dist/components/PlAgDataTable/PlAgOverlayNoRows.vue3.js.map +0 -1
  408. package/dist/components/PlAgDataTable/PlAgRowCount.vue.js +0 -26
  409. package/dist/components/PlAgDataTable/PlAgRowCount.vue.js.map +0 -1
  410. package/dist/components/PlAgDataTable/ag-override.css.js +0 -31
  411. package/dist/components/PlAgDataTable/ag-override.css.js.map +0 -1
  412. package/dist/components/PlAgDataTable/pl-ag-overlay-loading.module.scss.js +0 -14
  413. package/dist/components/PlAgDataTable/pl-ag-overlay-loading.module.scss.js.map +0 -1
  414. package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue.js +0 -10
  415. package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue.js.map +0 -1
  416. package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue3.js +0 -8
  417. package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue3.js.map +0 -1
  418. package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue.js +0 -48
  419. package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue.js.map +0 -1
  420. package/dist/components/PlAgRowNumCheckbox/pl-ag-row-num-checkbox.module.scss.js +0 -15
  421. package/dist/components/PlAgRowNumCheckbox/pl-ag-row-num-checkbox.module.scss.js.map +0 -1
  422. package/dist/components/PlAgRowNumHeader.vue.js +0 -39
  423. package/dist/components/PlAgRowNumHeader.vue.js.map +0 -1
  424. package/dist/components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.vue.js +0 -45
  425. package/dist/components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.vue.js.map +0 -1
  426. package/dist/components/PlAnnotations/components/AnnotationsSidebar.css +0 -1
  427. package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue.js +0 -10
  428. package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue.js.map +0 -1
  429. package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue3.js +0 -18
  430. package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue3.js.map +0 -1
  431. package/dist/components/PlAnnotations/components/FilterSidebar.css +0 -1
  432. package/dist/components/PlAnnotations/components/FilterSidebar.vue.js +0 -10
  433. package/dist/components/PlAnnotations/components/FilterSidebar.vue.js.map +0 -1
  434. package/dist/components/PlAnnotations/components/FilterSidebar.vue3.js +0 -10
  435. package/dist/components/PlAnnotations/components/FilterSidebar.vue3.js.map +0 -1
  436. package/dist/components/PlAnnotations/components/PlAnnotations.vue.js +0 -10
  437. package/dist/components/PlAnnotations/components/PlAnnotations.vue.js.map +0 -1
  438. package/dist/components/PlAnnotations/components/PlAnnotations.vue3.js +0 -8
  439. package/dist/components/PlAnnotations/components/PlAnnotations.vue3.js.map +0 -1
  440. package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue.js +0 -10
  441. package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue.js.map +0 -1
  442. package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue3.js +0 -10
  443. package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue3.js.map +0 -1
  444. package/dist/components/PlAnnotations/components/style.module.css.js +0 -12
  445. package/dist/components/PlAnnotations/components/style.module.css.js.map +0 -1
  446. package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue.js +0 -79
  447. package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue.js.map +0 -1
  448. package/dist/components/PlBtnExportArchive/Item.css +0 -1
  449. package/dist/components/PlBtnExportArchive/Item.vue.js +0 -10
  450. package/dist/components/PlBtnExportArchive/Item.vue.js.map +0 -1
  451. package/dist/components/PlBtnExportArchive/Item.vue3.js +0 -14
  452. package/dist/components/PlBtnExportArchive/Item.vue3.js.map +0 -1
  453. package/dist/components/PlBtnExportArchive/PlBtnExportArchive.css +0 -1
  454. package/dist/components/PlBtnExportArchive/PlBtnExportArchive.vue.js +0 -10
  455. package/dist/components/PlBtnExportArchive/PlBtnExportArchive.vue.js.map +0 -1
  456. package/dist/components/PlBtnExportArchive/PlBtnExportArchive.vue3.js +0 -12
  457. package/dist/components/PlBtnExportArchive/PlBtnExportArchive.vue3.js.map +0 -1
  458. package/dist/components/PlBtnExportArchive/Summary.css +0 -1
  459. package/dist/components/PlBtnExportArchive/Summary.vue.js +0 -10
  460. package/dist/components/PlBtnExportArchive/Summary.vue.js.map +0 -1
  461. package/dist/components/PlBtnExportArchive/Summary.vue3.js +0 -12
  462. package/dist/components/PlBtnExportArchive/Summary.vue3.js.map +0 -1
  463. package/dist/components/PlTableFastSearch/PlTableFastSearch.vue.js +0 -54
  464. package/dist/components/PlTableFastSearch/PlTableFastSearch.vue.js.map +0 -1
  465. package/dist/components/PlTableFilters/PlTableFiltersV2.css +0 -1
  466. package/dist/components/PlTableFilters/PlTableFiltersV2.vue.js +0 -10
  467. package/dist/components/PlTableFilters/PlTableFiltersV2.vue.js.map +0 -1
  468. package/dist/components/PlTableFilters/PlTableFiltersV2.vue3.js +0 -8
  469. package/dist/components/PlTableFilters/PlTableFiltersV2.vue3.js.map +0 -1
  470. package/dist/plugins/Monetization/EndOfPeriod.css +0 -1
  471. package/dist/plugins/Monetization/EndOfPeriod.vue.js +0 -10
  472. package/dist/plugins/Monetization/EndOfPeriod.vue.js.map +0 -1
  473. package/dist/plugins/Monetization/EndOfPeriod.vue3.js +0 -8
  474. package/dist/plugins/Monetization/EndOfPeriod.vue3.js.map +0 -1
  475. package/dist/plugins/Monetization/LimitCard.css +0 -1
  476. package/dist/plugins/Monetization/LimitCard.vue.js +0 -10
  477. package/dist/plugins/Monetization/LimitCard.vue.js.map +0 -1
  478. package/dist/plugins/Monetization/LimitCard.vue3.js +0 -32
  479. package/dist/plugins/Monetization/LimitCard.vue3.js.map +0 -1
  480. package/dist/plugins/Monetization/MonetizationSidebar.vue.js +0 -138
  481. package/dist/plugins/Monetization/MonetizationSidebar.vue.js.map +0 -1
  482. package/dist/plugins/Monetization/RunStatus.css +0 -1
  483. package/dist/plugins/Monetization/RunStatus.vue.js +0 -10
  484. package/dist/plugins/Monetization/RunStatus.vue.js.map +0 -1
  485. package/dist/plugins/Monetization/RunStatus.vue3.js +0 -20
  486. package/dist/plugins/Monetization/RunStatus.vue3.js.map +0 -1
  487. package/dist/plugins/Monetization/UserCabinetCard.css +0 -1
  488. package/dist/plugins/Monetization/UserCabinetCard.vue.js +0 -10
  489. package/dist/plugins/Monetization/UserCabinetCard.vue.js.map +0 -1
  490. package/dist/plugins/Monetization/UserCabinetCard.vue3.js +0 -20
  491. package/dist/plugins/Monetization/UserCabinetCard.vue3.js.map +0 -1
  492. /package/dist/components/PlAgCellStatusTag/{PlAgCellStatusTag.css → PlAgCellStatusTag.style.css} +0 -0
  493. /package/dist/components/PlAgGridColumnManager/{PlAgGridColumnManager.css → PlAgGridColumnManager.vue.css} +0 -0
  494. /package/dist/components/PlAnnotations/components/{PlAnnotations.css → PlAnnotations.vue.css} +0 -0
  495. /package/dist/components/PlAnnotations/components/{PlAnnotationsModal.css → PlAnnotationsModal.vue.css} +0 -0
@@ -1,53 +1,59 @@
1
- import { defineComponent as m, mergeModels as r, useModel as d, shallowRef as p, effect as f, createBlock as g, openBlock as S, unref as v, normalizeClass as i, withCtx as h, createVNode as C } from "vue";
2
- import { PlPureSlideModal as y } from "@milaboratories/uikit";
3
- import V from "./PlAnnotations.vue.js";
4
- const B = /* @__PURE__ */ m({
5
- __name: "PlAnnotationsModal",
6
- props: /* @__PURE__ */ r({
7
- columns: {},
8
- getSuggestOptions: { type: Function },
9
- hasSelectedColumns: { type: Boolean },
10
- getValuesForSelectedColumns: { type: Function },
11
- onDeleteSchema: { type: Function }
12
- }, {
13
- annotation: { required: !0 },
14
- annotationModifiers: {},
15
- opened: { type: Boolean, required: !0 },
16
- openedModifiers: {}
17
- }),
18
- emits: ["update:annotation", "update:opened"],
19
- setup(l) {
20
- const o = d(l, "annotation"), a = d(l, "opened"), e = l, u = p(void 0);
21
- f(function() {
22
- u.value === void 0 && o.value.steps.length > 0 && (u.value = o.value.steps[0].id);
23
- });
24
- async function c() {
25
- var t;
26
- a.value = !1, (t = e.onDeleteSchema) == null || t.call(e);
27
- }
28
- return (t, n) => (S(), g(v(y), {
29
- modelValue: a.value,
30
- "onUpdate:modelValue": n[1] || (n[1] = (s) => a.value = s),
31
- class: i(t.$style.modal),
32
- width: "768px"
33
- }, {
34
- default: h(() => [
35
- C(V, {
36
- annotation: o.value,
37
- "onUpdate:annotation": n[0] || (n[0] = (s) => o.value = s),
38
- class: i(t.$style.content),
39
- columns: e.columns,
40
- "get-suggest-options": e.getSuggestOptions,
41
- "has-selected-columns": e.hasSelectedColumns,
42
- getValuesForSelectedColumns: e.getValuesForSelectedColumns,
43
- onDeleteSchema: c
44
- }, null, 8, ["annotation", "class", "columns", "get-suggest-options", "has-selected-columns", "getValuesForSelectedColumns"])
45
- ]),
46
- _: 1
47
- }, 8, ["modelValue", "class"]));
48
- }
1
+ import e from "./PlAnnotations.js";
2
+ import { createBlock as t, createVNode as n, defineComponent as r, effect as i, mergeModels as a, normalizeClass as o, openBlock as s, shallowRef as c, unref as l, useModel as u, withCtx as d } from "vue";
3
+ import { PlPureSlideModal as f } from "@milaboratories/uikit";
4
+ var p = /* @__PURE__ */ r({
5
+ __name: "PlAnnotationsModal",
6
+ props: /* @__PURE__ */ a({
7
+ columns: {},
8
+ getSuggestOptions: { type: Function },
9
+ hasSelectedColumns: { type: Boolean },
10
+ getValuesForSelectedColumns: { type: Function },
11
+ onDeleteSchema: { type: Function }
12
+ }, {
13
+ annotation: { required: !0 },
14
+ annotationModifiers: {},
15
+ opened: {
16
+ type: Boolean,
17
+ required: !0
18
+ },
19
+ openedModifiers: {}
20
+ }),
21
+ emits: ["update:annotation", "update:opened"],
22
+ setup(r) {
23
+ let a = u(r, "annotation"), p = u(r, "opened"), m = r, h = c(void 0);
24
+ i(function() {
25
+ h.value === void 0 && a.value.steps.length > 0 && (h.value = a.value.steps[0].id);
26
+ });
27
+ async function g() {
28
+ p.value = !1, m.onDeleteSchema?.();
29
+ }
30
+ return (r, i) => (s(), t(l(f), {
31
+ modelValue: p.value,
32
+ "onUpdate:modelValue": i[1] ||= (e) => p.value = e,
33
+ class: o(r.$style.modal),
34
+ width: "768px"
35
+ }, {
36
+ default: d(() => [n(e, {
37
+ annotation: a.value,
38
+ "onUpdate:annotation": i[0] ||= (e) => a.value = e,
39
+ class: o(r.$style.content),
40
+ columns: m.columns,
41
+ "get-suggest-options": m.getSuggestOptions,
42
+ "has-selected-columns": m.hasSelectedColumns,
43
+ getValuesForSelectedColumns: m.getValuesForSelectedColumns,
44
+ onDeleteSchema: g
45
+ }, null, 8, [
46
+ "annotation",
47
+ "class",
48
+ "columns",
49
+ "get-suggest-options",
50
+ "has-selected-columns",
51
+ "getValuesForSelectedColumns"
52
+ ])]),
53
+ _: 1
54
+ }, 8, ["modelValue", "class"]));
55
+ }
49
56
  });
50
- export {
51
- B as default
52
- };
53
- //# sourceMappingURL=PlAnnotationsModal.vue2.js.map
57
+ export { p as default };
58
+
59
+ //# sourceMappingURL=PlAnnotationsModal.vue2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlAnnotationsModal.vue2.js","sources":["../../../../src/components/PlAnnotations/components/PlAnnotationsModal.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { PlPureSlideModal } from \"@milaboratories/uikit\";\nimport { effect, shallowRef } from \"vue\";\n\nimport type { Annotation } from \"../types\";\nimport type { Props } from \"./PlAnnotations.vue\";\nimport PlAnnotations from \"./PlAnnotations.vue\";\n\n// Models\nconst annotation = defineModel<Annotation>(\"annotation\", { required: true });\nconst opened = defineModel<boolean>(\"opened\", { required: true });\n// Props\nconst props = defineProps<Props>();\n// State\nconst selectedStepId = shallowRef<number | undefined>(undefined);\n// Watchers\neffect(function setDefaultStepId() {\n if (selectedStepId.value === undefined && annotation.value.steps.length > 0) {\n selectedStepId.value = annotation.value.steps[0].id;\n }\n});\n// Actions\nasync function handleDeleteSchema() {\n opened.value = false;\n props.onDeleteSchema?.();\n}\n</script>\n\n<template>\n <PlPureSlideModal v-model=\"opened\" :class=\"$style.modal\" width=\"768px\">\n <PlAnnotations\n v-model:annotation=\"annotation\"\n :class=\"$style.content\"\n :columns=\"props.columns\"\n :get-suggest-options=\"props.getSuggestOptions\"\n :has-selected-columns=\"props.hasSelectedColumns\"\n :getValuesForSelectedColumns=\"props.getValuesForSelectedColumns\"\n @delete-schema=\"handleDeleteSchema\"\n />\n </PlPureSlideModal>\n</template>\n\n<style module>\n.modal {\n display: flex;\n}\n\n.content {\n width: 100%;\n height: 100%;\n}\n</style>\n"],"names":["annotation","_useModel","opened","__props","props","selectedStepId","shallowRef","effect","handleDeleteSchema","_a","_createBlock","_unref","PlPureSlideModal","$event","_normalizeClass","$style","_createVNode","PlAnnotations"],"mappings":";;;;;;;;;;;;;;;;;;;AASA,UAAMA,IAAaC,KAAwB,YAAgC,GACrEC,IAASD,EAAoBE,GAAC,QAA4B,GAE1DC,IAAQD,GAERE,IAAiBC,EAA+B,MAAS;AAE/D,IAAAC,EAAO,WAA4B;AACjC,MAAIF,EAAe,UAAU,UAAaL,EAAW,MAAM,MAAM,SAAS,MACxEK,EAAe,QAAQL,EAAW,MAAM,MAAM,CAAC,EAAE;AAAA,IAErD,CAAC;AAED,mBAAeQ,IAAqB;;AAClC,MAAAN,EAAO,QAAQ,KACfO,IAAAL,EAAM,mBAAN,QAAAK,EAAA,KAAAL;AAAA,IACF;2BAIEM,EAUmBC,EAAAC,CAAA,GAAA;AAAA,kBAVQV,EAAA;AAAA,oDAAAA,EAAM,QAAAW;AAAA,MAAG,OAAKC,EAAEC,EAAAA,OAAO,KAAK;AAAA,MAAE,OAAM;AAAA,IAAA;iBAC7D,MAQE;AAAA,QARFC,EAQEC,GAAA;AAAA,UAPQ,YAAYjB,EAAA;AAAA,wDAAAA,EAAU,QAAAa;AAAA,UAC7B,OAAKC,EAAEC,EAAAA,OAAO,OAAO;AAAA,UACrB,SAASX,EAAM;AAAA,UACf,uBAAqBA,EAAM;AAAA,UAC3B,wBAAsBA,EAAM;AAAA,UAC5B,6BAA6BA,EAAM;AAAA,UACnC,gBAAeI;AAAA,QAAA;;;;;;"}
1
+ {"version":3,"file":"PlAnnotationsModal.vue_vue_type_script_setup_true_lang.js","names":["$style"],"sources":["../../../../src/components/PlAnnotations/components/PlAnnotationsModal.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { PlPureSlideModal } from \"@milaboratories/uikit\";\nimport { effect, shallowRef } from \"vue\";\n\nimport type { Annotation } from \"../types\";\nimport type { Props } from \"./PlAnnotations.vue\";\nimport PlAnnotations from \"./PlAnnotations.vue\";\n\n// Models\nconst annotation = defineModel<Annotation>(\"annotation\", { required: true });\nconst opened = defineModel<boolean>(\"opened\", { required: true });\n// Props\nconst props = defineProps<Props>();\n// State\nconst selectedStepId = shallowRef<number | undefined>(undefined);\n// Watchers\neffect(function setDefaultStepId() {\n if (selectedStepId.value === undefined && annotation.value.steps.length > 0) {\n selectedStepId.value = annotation.value.steps[0].id;\n }\n});\n// Actions\nasync function handleDeleteSchema() {\n opened.value = false;\n props.onDeleteSchema?.();\n}\n</script>\n\n<template>\n <PlPureSlideModal v-model=\"opened\" :class=\"$style.modal\" width=\"768px\">\n <PlAnnotations\n v-model:annotation=\"annotation\"\n :class=\"$style.content\"\n :columns=\"props.columns\"\n :get-suggest-options=\"props.getSuggestOptions\"\n :has-selected-columns=\"props.hasSelectedColumns\"\n :getValuesForSelectedColumns=\"props.getValuesForSelectedColumns\"\n @delete-schema=\"handleDeleteSchema\"\n />\n </PlPureSlideModal>\n</template>\n\n<style module>\n.modal {\n display: flex;\n}\n\n.content {\n width: 100%;\n height: 100%;\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;EASA,IAAM,IAAa,EAAuB,GAAC,aAAiC,EACtE,IAAS,EAAoB,GAAC,SAA6B,EAE3D,IAAQ,GAER,IAAiB,EAA+B,KAAA,EAAU;AAEhE,IAAO,WAA4B;AACjC,GAAI,EAAe,UAAU,KAAA,KAAa,EAAW,MAAM,MAAM,SAAS,MACxE,EAAe,QAAQ,EAAW,MAAM,MAAM,GAAG;IAEnD;EAEF,eAAe,IAAqB;AAElC,GADA,EAAO,QAAQ,IACf,EAAM,kBAAkB;;yBAKxB,EAUmB,EAAA,EAAA,EAAA;eAVQ,EAAA;4CAAM,QAAA;GAAG,OAAK,EAAEA,EAAAA,OAAO,MAAK;GAAE,OAAM;;oBAS3D,CARF,EAQE,GAAA;IAPQ,YAAY,EAAA;6CAAU,QAAA;IAC7B,OAAK,EAAEA,EAAAA,OAAO,QAAO;IACrB,SAAS,EAAM;IACf,uBAAqB,EAAM;IAC3B,wBAAsB,EAAM;IAC5B,6BAA6B,EAAM;IACnC,gBAAe"}
@@ -1 +1 @@
1
- ._flashing_1daus_1{animation:_flash_1daus_1 1s ease-in-out infinite alternate}@keyframes _flash_1daus_1{0%{box-shadow:0 0 6px 4px var(--border-color-focus)}to{box-shadow:0 0 2px 2px var(--border-color-focus)}}._disabled_1daus_13{pointer-events:none;opacity:.5}
1
+ ._flashing_1daus_1{animation:1s ease-in-out infinite alternate _flash_1daus_1}@keyframes _flash_1daus_1{0%{box-shadow:0 0 6px 4px var(--border-color-focus)}to{box-shadow:0 0 2px 2px var(--border-color-focus)}}._disabled_1daus_13{pointer-events:none;opacity:.5}
@@ -0,0 +1,8 @@
1
+ import './style.css';var e = {
2
+ flashing: "_flashing_1daus_1",
3
+ flash: "_flash_1daus_1",
4
+ disabled: "_disabled_1daus_13"
5
+ };
6
+ export { e as default };
7
+
8
+ //# sourceMappingURL=style.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style.module.js","names":[],"sources":["../../../../src/components/PlAnnotations/components/style.module.css"],"sourcesContent":[".flashing {\n animation: flash 1s ease-in-out infinite alternate;\n}\n@keyframes flash {\n 0% {\n box-shadow: 0 0 6px 4px var(--border-color-focus);\n }\n 100% {\n box-shadow: 0 0 2px 2px var(--border-color-focus);\n }\n}\n\n.disabled {\n pointer-events: none;\n opacity: 0.5;\n}\n"],"mappings":""}
@@ -1,9 +1,7 @@
1
- const o = /^[a-zA-Z0-9\s!@#$%^*()_+\-=[\]{}|;:'",.?]*$/;
2
- function e(t) {
3
- if (!o.test(t))
4
- throw Error("Title contains forbidden symbols");
1
+ var e = /^[a-zA-Z0-9\s!@#$%^*()_+\-=[\]{}|;:'",.?]*$/;
2
+ function t(t) {
3
+ if (!e.test(t)) throw Error("Title contains forbidden symbols");
5
4
  }
6
- export {
7
- e as validateTitle
8
- };
9
- //# sourceMappingURL=utils.js.map
5
+ export { t as validateTitle };
6
+
7
+ //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../src/components/PlAnnotations/utils.ts"],"sourcesContent":["import type { FilterSpecTypeFieldRecord } from \"@milaboratories/uikit\";\nimport type { FilterSpecLeaf } from \"@platforma-sdk/model\";\n\nexport function createDefaultFilterMetadata<\n T extends FilterSpecLeaf,\n>(): FilterSpecTypeFieldRecord<T> {\n return {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => undefined,\n },\n } as FilterSpecTypeFieldRecord<T>;\n}\n\nconst allowedSymbolsPattern = /^[a-zA-Z0-9\\s!@#$%^*()_+\\-=[\\]{}|;:'\",.?]*$/;\nexport function validateTitle(v: string) {\n if (!allowedSymbolsPattern.test(v)) {\n throw Error(`Title contains forbidden symbols`);\n }\n}\n"],"names":["allowedSymbolsPattern","validateTitle","v"],"mappings":"AAoBA,MAAMA,IAAwB;AACvB,SAASC,EAAcC,GAAW;AACvC,MAAI,CAACF,EAAsB,KAAKE,CAAC;AAC/B,UAAM,MAAM,kCAAkC;AAElD;"}
1
+ {"version":3,"file":"utils.js","names":[],"sources":["../../../src/components/PlAnnotations/utils.ts"],"sourcesContent":["import type { FilterSpecTypeFieldRecord } from \"@milaboratories/uikit\";\nimport type { FilterSpecLeaf } from \"@platforma-sdk/model\";\n\nexport function createDefaultFilterMetadata<\n T extends FilterSpecLeaf,\n>(): FilterSpecTypeFieldRecord<T> {\n return {\n column: {\n label: \"Column\",\n fieldType: \"SUniversalPColumnId\",\n defaultValue: () => undefined,\n },\n type: {\n label: \"Predicate\",\n fieldType: \"FilterType\",\n defaultValue: () => undefined,\n },\n } as FilterSpecTypeFieldRecord<T>;\n}\n\nconst allowedSymbolsPattern = /^[a-zA-Z0-9\\s!@#$%^*()_+\\-=[\\]{}|;:'\",.?]*$/;\nexport function validateTitle(v: string) {\n if (!allowedSymbolsPattern.test(v)) {\n throw Error(`Title contains forbidden symbols`);\n }\n}\n"],"mappings":"AAoBA,IAAM,IAAwB;AAC9B,SAAgB,EAAc,GAAW;AACvC,KAAI,CAAC,EAAsB,KAAK,EAAE,CAChC,OAAM,MAAM,mCAAmC"}
@@ -0,0 +1,5 @@
1
+ import e from "./PlAppErrorNotificationAlert.vue2.js";
2
+ var t = e;
3
+ export { t as default };
4
+
5
+ //# sourceMappingURL=PlAppErrorNotificationAlert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlAppErrorNotificationAlert.js","names":[],"sources":["../../../src/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { BlockOutputsBase } from \"@platforma-sdk/model\";\nimport type { OutputErrors } from \"../../types\";\n// @TODO module\nimport \"./pl-app-error-notification-alert.scss\";\nimport {\n PlBtnPrimary,\n PlDialogModal,\n PlNotificationAlert,\n PlSpacer,\n PlLogView,\n} from \"@milaboratories/uikit\";\nimport { computed, ref, watch } from \"vue\";\n\nexport type FullMessage = { fullMessage: string };\n\nconst props = defineProps<{ errors: OutputErrors<BlockOutputsBase> }>();\n\nconst isModalOpen = ref(false);\n\nconst isAlertOpen = ref(true);\n\nconst existingErrors = computed(() => Object.entries(props.errors).filter((item) => !!item[1]));\n\nfunction showErrors() {\n isModalOpen.value = true;\n}\n\n// @TODO (temp)\nwatch(\n () => props.errors,\n (errors) => {\n isAlertOpen.value = Object.values(errors).some((v) => !!v);\n },\n { immediate: true, deep: true },\n);\n</script>\n<template>\n <div class=\"pl-app-notification-alert\">\n <PlDialogModal v-model=\"isModalOpen\" width=\"720px\" style=\"max-height: 100vh\">\n <template #title> Errors </template>\n <div class=\"pl-app-notification-alert__content\">\n <template v-for=\"item in existingErrors\" :key=\"item[0]\">\n <div class=\"pl-app-notification-alert__item\">\n <div class=\"pl-app-notification-alert__title\">Block output: {{ item[0] }}</div>\n <PlLogView\n :value=\"item[1]?.message\"\n :valueToCopy=\"\n 'fullMessage' in (item[1] ?? {})\n ? (item[1] as unknown as FullMessage).fullMessage\n : item[1]?.message\n \"\n :download-filename=\"`output-${item[0]}-error.txt`\"\n />\n </div>\n </template>\n </div>\n </PlDialogModal>\n\n <PlNotificationAlert v-model=\"isAlertOpen\" type=\"error\" closable>\n Some outputs have errors.\n <template #actions>\n <PlBtnPrimary icon=\"arrow-right\" @click=\"showErrors\">See errors</PlBtnPrimary>\n <PlSpacer />\n </template>\n </PlNotificationAlert>\n </div>\n</template>\n"],"mappings":""}
@@ -1,5 +1,57 @@
1
- import f from "./PlAppErrorNotificationAlert.vue.js";
2
- export {
3
- f as default
4
- };
5
- //# sourceMappingURL=PlAppErrorNotificationAlert.vue2.js.map
1
+ import './pl-app-error-notification-alert.css';/* empty css */
2
+ import { Fragment as e, computed as t, createElementBlock as n, createElementVNode as r, createTextVNode as i, createVNode as a, defineComponent as o, openBlock as s, ref as c, renderList as l, toDisplayString as u, unref as d, watch as f, withCtx as p } from "vue";
3
+ import { PlBtnPrimary as m, PlDialogModal as h, PlLogView as g, PlNotificationAlert as _, PlSpacer as v } from "@milaboratories/uikit";
4
+ var y = { class: "pl-app-notification-alert" }, b = { class: "pl-app-notification-alert__content" }, x = { class: "pl-app-notification-alert__title" }, S = /* @__PURE__ */ o({
5
+ __name: "PlAppErrorNotificationAlert",
6
+ props: { errors: {} },
7
+ setup(o) {
8
+ let S = o, C = c(!1), w = c(!0), T = t(() => Object.entries(S.errors).filter((e) => !!e[1]));
9
+ function E() {
10
+ C.value = !0;
11
+ }
12
+ return f(() => S.errors, (e) => {
13
+ w.value = Object.values(e).some((e) => !!e);
14
+ }, {
15
+ immediate: !0,
16
+ deep: !0
17
+ }), (t, o) => (s(), n("div", y, [a(d(h), {
18
+ modelValue: C.value,
19
+ "onUpdate:modelValue": o[0] ||= (e) => C.value = e,
20
+ width: "720px",
21
+ style: { "max-height": "100vh" }
22
+ }, {
23
+ title: p(() => [...o[2] ||= [i(" Errors ", -1)]]),
24
+ default: p(() => [r("div", b, [(s(!0), n(e, null, l(T.value, (e) => (s(), n("div", {
25
+ key: e[0],
26
+ class: "pl-app-notification-alert__item"
27
+ }, [r("div", x, "Block output: " + u(e[0]), 1), a(d(g), {
28
+ value: e[1]?.message,
29
+ valueToCopy: "fullMessage" in (e[1] ?? {}) ? e[1].fullMessage : e[1]?.message,
30
+ "download-filename": `output-${e[0]}-error.txt`
31
+ }, null, 8, [
32
+ "value",
33
+ "valueToCopy",
34
+ "download-filename"
35
+ ])]))), 128))])]),
36
+ _: 1
37
+ }, 8, ["modelValue"]), a(d(_), {
38
+ modelValue: w.value,
39
+ "onUpdate:modelValue": o[1] ||= (e) => w.value = e,
40
+ type: "error",
41
+ closable: ""
42
+ }, {
43
+ actions: p(() => [a(d(m), {
44
+ icon: "arrow-right",
45
+ onClick: E
46
+ }, {
47
+ default: p(() => [...o[3] ||= [i("See errors", -1)]]),
48
+ _: 1
49
+ }), a(d(v))]),
50
+ default: p(() => [o[4] ||= i(" Some outputs have errors. ", -1)]),
51
+ _: 1
52
+ }, 8, ["modelValue"])]));
53
+ }
54
+ });
55
+ export { S as default };
56
+
57
+ //# sourceMappingURL=PlAppErrorNotificationAlert.vue2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlAppErrorNotificationAlert.vue2.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"PlAppErrorNotificationAlert.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { BlockOutputsBase } from \"@platforma-sdk/model\";\nimport type { OutputErrors } from \"../../types\";\n// @TODO module\nimport \"./pl-app-error-notification-alert.scss\";\nimport {\n PlBtnPrimary,\n PlDialogModal,\n PlNotificationAlert,\n PlSpacer,\n PlLogView,\n} from \"@milaboratories/uikit\";\nimport { computed, ref, watch } from \"vue\";\n\nexport type FullMessage = { fullMessage: string };\n\nconst props = defineProps<{ errors: OutputErrors<BlockOutputsBase> }>();\n\nconst isModalOpen = ref(false);\n\nconst isAlertOpen = ref(true);\n\nconst existingErrors = computed(() => Object.entries(props.errors).filter((item) => !!item[1]));\n\nfunction showErrors() {\n isModalOpen.value = true;\n}\n\n// @TODO (temp)\nwatch(\n () => props.errors,\n (errors) => {\n isAlertOpen.value = Object.values(errors).some((v) => !!v);\n },\n { immediate: true, deep: true },\n);\n</script>\n<template>\n <div class=\"pl-app-notification-alert\">\n <PlDialogModal v-model=\"isModalOpen\" width=\"720px\" style=\"max-height: 100vh\">\n <template #title> Errors </template>\n <div class=\"pl-app-notification-alert__content\">\n <template v-for=\"item in existingErrors\" :key=\"item[0]\">\n <div class=\"pl-app-notification-alert__item\">\n <div class=\"pl-app-notification-alert__title\">Block output: {{ item[0] }}</div>\n <PlLogView\n :value=\"item[1]?.message\"\n :valueToCopy=\"\n 'fullMessage' in (item[1] ?? {})\n ? (item[1] as unknown as FullMessage).fullMessage\n : item[1]?.message\n \"\n :download-filename=\"`output-${item[0]}-error.txt`\"\n />\n </div>\n </template>\n </div>\n </PlDialogModal>\n\n <PlNotificationAlert v-model=\"isAlertOpen\" type=\"error\" closable>\n Some outputs have errors.\n <template #actions>\n <PlBtnPrimary icon=\"arrow-right\" @click=\"showErrors\">See errors</PlBtnPrimary>\n <PlSpacer />\n </template>\n </PlNotificationAlert>\n </div>\n</template>\n"],"mappings":";;;;;;;EAgBA,IAAM,IAAQ,GAER,IAAc,EAAI,GAAM,EAExB,IAAc,EAAI,GAAK,EAEvB,IAAiB,QAAe,OAAO,QAAQ,EAAM,OAAO,CAAC,QAAQ,MAAS,CAAC,CAAC,EAAK,GAAG,CAAC;EAE/F,SAAS,IAAa;AACpB,KAAY,QAAQ;;SAItB,QACQ,EAAM,SACX,MAAW;AACV,KAAY,QAAQ,OAAO,OAAO,EAAO,CAAC,MAAM,MAAM,CAAC,CAAC,EAAE;KAE5D;GAAE,WAAW;GAAM,MAAM;GAAM,CAChC,kBAGC,EA4BM,OA5BN,GA4BM,CA3BJ,EAkBgB,EAAA,EAAA,EAAA;eAlBQ,EAAA;4CAAW,QAAA;GAAE,OAAM;GAAQ,OAAA,EAAA,cAAA,SAAyB;;GAC/D,OAAK,QAAS,CAAA,GAAA,AAAA,EAAA,OAAA,CAAA,EAAR,YAAQ,GAAA,CAAA,CAAA,CAAA;oBAgBnB,CAfN,EAeM,OAfN,GAeM,EAAA,EAAA,GAAA,EAdJ,EAaW,GAAA,MAAA,EAbc,EAAA,QAAR,YACf,EAWM,OAAA;SAZuC,EAAI;IAC5C,OAAM;OACT,EAA+E,OAA/E,GAA8C,mBAAc,EAAG,EAAI,GAAA,EAAA,EAAA,EACnE,EAQE,EAAA,EAAA,EAAA;IAPC,OAAO,EAAI,IAAK;IAChB,aAAA,kBAAgD,EAAI,MAAA,EAAA,IAAgC,EAAI,GAA+B,cAAgC,EAAI,IAAK;IAKhK,qBAAiB,UAAY,EAAI,GAAA;;;;;;;yBAO5C,EAMsB,EAAA,EAAA,EAAA;eANQ,EAAA;4CAAW,QAAA;GAAE,MAAK;GAAQ,UAAA;;GAE3C,SAAO,QAC8D,CAA9E,EAA8E,EAAA,EAAA,EAAA;IAAhE,MAAK;IAAe,SAAO;;qBAAsB,CAAA,GAAA,AAAA,EAAA,OAAA,CAAA,EAAV,cAAU,GAAA,CAAA,CAAA,CAAA;;OAC/D,EAAY,EAAA,EAAA,CAAA,CAAA,CAAA;oBAFd,CAAA,AAAA,EAAA,OAAA,EAF+D,+BAE/D,GAAA,CAAA,CAAA"}
@@ -1 +1 @@
1
- .pl-app-notification-alert{position:fixed;bottom:12px;right:12px;width:256px;height:auto;z-index:87}.pl-app-notification-alert__content{display:flex;flex-direction:column;gap:12px;max-height:100%}.pl-app-notification-alert__item{position:relative}.pl-app-notification-alert__title{color:var(--txt-01);font-size:14px;font-style:normal;font-weight:600;line-height:20px;margin-bottom:6px}
1
+ .pl-app-notification-alert{z-index:87;width:256px;height:auto;position:fixed;bottom:12px;right:12px}.pl-app-notification-alert__content{flex-direction:column;gap:12px;max-height:100%;display:flex}.pl-app-notification-alert__item{position:relative}.pl-app-notification-alert__title{color:var(--txt-01);margin-bottom:6px;font-size:14px;font-style:normal;font-weight:600;line-height:20px}
@@ -0,0 +1,7 @@
1
+ import e from "../../_virtual/_plugin-vue_export-helper.js";
2
+ import t from "./Item.vue2.js";
3
+ import n from "./Item.style.js";
4
+ var r = /* @__PURE__ */ e(t, [["__cssModules", { $style: n }]]);
5
+ export { r as default };
6
+
7
+ //# sourceMappingURL=Item.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Item.js","names":[],"sources":["../../../src/components/PlBtnExportArchive/Item.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ExportItem } from \"./types\";\nimport { prettyBytes } from \"@milaboratories/helpers\";\n\ndefineProps<{\n item: ExportItem;\n}>();\n</script>\n\n<template>\n <div :class=\"$style.item\">\n <div :class=\"$style.name\">{{ item.fileName }}</div>\n <div v-if=\"item.status === 'in-progress'\" :class=\"$style.details\">\n <span>{{ prettyBytes(item.current, {}) }}</span>\n <span>/</span>\n <span>{{ prettyBytes(item.size, {}) }}</span>\n </div>\n <div v-else-if=\"item.status === 'completed'\" :class=\"$style.details\">\n Done <span>{{ prettyBytes(item.size, {}) }}</span>\n </div>\n <div v-else-if=\"item.status === 'error'\" :class=\"$style.error\">\n <span>{{ item.error }}</span>\n </div>\n <div v-else :class=\"$style.details\">Pending</div>\n </div>\n</template>\n\n<style module>\n.item {\n display: flex;\n flex-direction: column;\n margin-bottom: 8px;\n overflow: hidden;\n --name-font-size: 12px;\n --details-font-size: 10px;\n}\n.name {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: var(--name-font-size);\n font-weight: 600;\n}\n\n.details {\n font-size: var(--details-font-size);\n font-weight: 400;\n color: rgba(255, 255, 255, 0.6);\n}\n\n.error {\n font-size: var(--details-font-size);\n font-weight: 400;\n color: var(--txt-error);\n span {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 100%;\n }\n}\n</style>\n"],"mappings":""}
@@ -0,0 +1,9 @@
1
+ import './Item.vue.css';var e = {
2
+ item: "_item_1m4gx_2",
3
+ name: "_name_1m4gx_10",
4
+ details: "_details_1m4gx_18",
5
+ error: "_error_1m4gx_24"
6
+ };
7
+ export { e as default };
8
+
9
+ //# sourceMappingURL=Item.style.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Item.vue_vue_type_style_index_0_lang.module.js","names":[],"sources":["../../../src/components/PlBtnExportArchive/Item.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ExportItem } from \"./types\";\nimport { prettyBytes } from \"@milaboratories/helpers\";\n\ndefineProps<{\n item: ExportItem;\n}>();\n</script>\n\n<template>\n <div :class=\"$style.item\">\n <div :class=\"$style.name\">{{ item.fileName }}</div>\n <div v-if=\"item.status === 'in-progress'\" :class=\"$style.details\">\n <span>{{ prettyBytes(item.current, {}) }}</span>\n <span>/</span>\n <span>{{ prettyBytes(item.size, {}) }}</span>\n </div>\n <div v-else-if=\"item.status === 'completed'\" :class=\"$style.details\">\n Done <span>{{ prettyBytes(item.size, {}) }}</span>\n </div>\n <div v-else-if=\"item.status === 'error'\" :class=\"$style.error\">\n <span>{{ item.error }}</span>\n </div>\n <div v-else :class=\"$style.details\">Pending</div>\n </div>\n</template>\n\n<style module>\n.item {\n display: flex;\n flex-direction: column;\n margin-bottom: 8px;\n overflow: hidden;\n --name-font-size: 12px;\n --details-font-size: 10px;\n}\n.name {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: var(--name-font-size);\n font-weight: 600;\n}\n\n.details {\n font-size: var(--details-font-size);\n font-weight: 400;\n color: rgba(255, 255, 255, 0.6);\n}\n\n.error {\n font-size: var(--details-font-size);\n font-weight: 400;\n color: var(--txt-error);\n span {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 100%;\n }\n}\n</style>\n"],"mappings":""}
@@ -0,0 +1 @@
1
+ ._item_1m4gx_2{--name-font-size:12px;--details-font-size:10px;flex-direction:column;margin-bottom:8px;display:flex;overflow:hidden}._name_1m4gx_10{white-space:nowrap;text-overflow:ellipsis;font-size:var(--name-font-size);font-weight:600;overflow:hidden}._details_1m4gx_18{font-size:var(--details-font-size);color:#fff9;font-weight:400}._error_1m4gx_24{font-size:var(--details-font-size);color:var(--txt-error);font-weight:400}._error_1m4gx_24 span{white-space:nowrap;text-overflow:ellipsis;max-width:100%;overflow:hidden}
@@ -1,43 +1,29 @@
1
- import { defineComponent as o, createElementBlock as i, openBlock as n, normalizeClass as s, createElementVNode as l, toDisplayString as a, unref as r, createTextVNode as u } from "vue";
2
- import { prettyBytes as d } from "../../lib/util/helpers/dist/prettyBytes.js";
3
- const k = /* @__PURE__ */ o({
4
- __name: "Item",
5
- props: {
6
- item: {}
7
- },
8
- setup(e) {
9
- return (t, m) => (n(), i("div", {
10
- class: s(t.$style.item)
11
- }, [
12
- l("div", {
13
- class: s(t.$style.name)
14
- }, a(e.item.fileName), 3),
15
- e.item.status === "in-progress" ? (n(), i("div", {
16
- key: 0,
17
- class: s(t.$style.details)
18
- }, [
19
- l("span", null, a(r(d)(e.item.current, {})), 1),
20
- m[0] || (m[0] = l("span", null, "/", -1)),
21
- l("span", null, a(r(d)(e.item.size, {})), 1)
22
- ], 2)) : e.item.status === "completed" ? (n(), i("div", {
23
- key: 1,
24
- class: s(t.$style.details)
25
- }, [
26
- m[1] || (m[1] = u(" Done ", -1)),
27
- l("span", null, a(r(d)(e.item.size, {})), 1)
28
- ], 2)) : e.item.status === "error" ? (n(), i("div", {
29
- key: 2,
30
- class: s(t.$style.error)
31
- }, [
32
- l("span", null, a(e.item.error), 1)
33
- ], 2)) : (n(), i("div", {
34
- key: 3,
35
- class: s(t.$style.details)
36
- }, "Pending", 2))
37
- ], 2));
38
- }
1
+ import { prettyBytes as e } from "../../lib/util/helpers/dist/prettyBytes.js";
2
+ import "../../lib/util/helpers/dist/index.js";
3
+ import { createElementBlock as t, createElementVNode as n, createTextVNode as r, defineComponent as i, normalizeClass as a, openBlock as o, toDisplayString as s, unref as c } from "vue";
4
+ var l = /* @__PURE__ */ i({
5
+ __name: "Item",
6
+ props: { item: {} },
7
+ setup(i) {
8
+ return (l, u) => (o(), t("div", { class: a(l.$style.item) }, [n("div", { class: a(l.$style.name) }, s(i.item.fileName), 3), i.item.status === "in-progress" ? (o(), t("div", {
9
+ key: 0,
10
+ class: a(l.$style.details)
11
+ }, [
12
+ n("span", null, s(c(e)(i.item.current, {})), 1),
13
+ u[0] ||= n("span", null, "/", -1),
14
+ n("span", null, s(c(e)(i.item.size, {})), 1)
15
+ ], 2)) : i.item.status === "completed" ? (o(), t("div", {
16
+ key: 1,
17
+ class: a(l.$style.details)
18
+ }, [u[1] ||= r(" Done ", -1), n("span", null, s(c(e)(i.item.size, {})), 1)], 2)) : i.item.status === "error" ? (o(), t("div", {
19
+ key: 2,
20
+ class: a(l.$style.error)
21
+ }, [n("span", null, s(i.item.error), 1)], 2)) : (o(), t("div", {
22
+ key: 3,
23
+ class: a(l.$style.details)
24
+ }, "Pending", 2))], 2));
25
+ }
39
26
  });
40
- export {
41
- k as default
42
- };
43
- //# sourceMappingURL=Item.vue2.js.map
27
+ export { l as default };
28
+
29
+ //# sourceMappingURL=Item.vue2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Item.vue2.js","sources":["../../../src/components/PlBtnExportArchive/Item.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ExportItem } from \"./types\";\nimport { prettyBytes } from \"@milaboratories/helpers\";\n\ndefineProps<{\n item: ExportItem;\n}>();\n</script>\n\n<template>\n <div :class=\"$style.item\">\n <div :class=\"$style.name\">{{ item.fileName }}</div>\n <div v-if=\"item.status === 'in-progress'\" :class=\"$style.details\">\n <span>{{ prettyBytes(item.current, {}) }}</span>\n <span>/</span>\n <span>{{ prettyBytes(item.size, {}) }}</span>\n </div>\n <div v-else-if=\"item.status === 'completed'\" :class=\"$style.details\">\n Done <span>{{ prettyBytes(item.size, {}) }}</span>\n </div>\n <div v-else-if=\"item.status === 'error'\" :class=\"$style.error\">\n <span>{{ item.error }}</span>\n </div>\n <div v-else :class=\"$style.details\">Pending</div>\n </div>\n</template>\n\n<style module>\n.item {\n display: flex;\n flex-direction: column;\n margin-bottom: 8px;\n overflow: hidden;\n --name-font-size: 12px;\n --details-font-size: 10px;\n}\n.name {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: var(--name-font-size);\n font-weight: 600;\n}\n\n.details {\n font-size: var(--details-font-size);\n font-weight: 400;\n color: rgba(255, 255, 255, 0.6);\n}\n\n.error {\n font-size: var(--details-font-size);\n font-weight: 400;\n color: var(--txt-error);\n span {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 100%;\n }\n}\n</style>\n"],"names":["_createElementBlock","_normalizeClass","$style","_createElementVNode","_toDisplayString","__props","_unref","prettyBytes","_cache"],"mappings":";;;;;;;;2BAUEA,EAcM,OAAA;AAAA,MAdA,OAAKC,EAAEC,EAAAA,OAAO,IAAI;AAAA,IAAA;MACtBC,EAAmD,OAAA;AAAA,QAA7C,OAAKF,EAAEC,EAAAA,OAAO,IAAI;AAAA,MAAA,GAAKE,EAAAC,EAAA,KAAK,QAAQ,GAAA,CAAA;AAAA,MAC/BA,EAAA,KAAK,WAAM,sBAAtBL,EAIM,OAAA;AAAA;QAJqC,OAAKC,EAAEC,EAAAA,OAAO,OAAO;AAAA,MAAA;QAC9DC,EAAgD,QAAA,MAAAC,EAAvCE,EAAAC,CAAA,EAAYF,EAAA,KAAK,SAAO,EAAA,CAAA,GAAA,CAAA;AAAA,QACjCG,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAAL,EAAc,cAAR,KAAC,EAAA;AAAA,QACPA,EAA6C,QAAA,MAAAC,EAApCE,EAAAC,CAAA,EAAYF,EAAA,KAAK,MAAI,CAAA,CAAA,CAAA,GAAA,CAAA;AAAA,MAAA,SAEhBA,EAAA,KAAK,WAAM,oBAA3BL,EAEM,OAAA;AAAA;QAFwC,OAAKC,EAAEC,EAAAA,OAAO,OAAO;AAAA,MAAA;0BAAE,UAC9D,EAAA;AAAA,QAAAC,EAA6C,QAAA,MAAAC,EAApCE,EAAAC,CAAA,EAAYF,EAAA,KAAK,MAAI,CAAA,CAAA,CAAA,GAAA,CAAA;AAAA,MAAA,SAErBA,EAAA,KAAK,WAAM,gBAA3BL,EAEM,OAAA;AAAA;QAFoC,OAAKC,EAAEC,EAAAA,OAAO,KAAK;AAAA,MAAA;QAC3DC,EAA6B,QAAA,MAAAC,EAApBC,EAAA,KAAK,KAAK,GAAA,CAAA;AAAA,MAAA,eAErBL,EAAiD,OAAA;AAAA;QAApC,OAAKC,EAAEC,EAAAA,OAAO,OAAO;AAAA,MAAA,GAAE,WAAO,CAAA;AAAA,IAAA;;;"}
1
+ {"version":3,"file":"Item.vue_vue_type_script_setup_true_lang.js","names":["$style"],"sources":["../../../src/components/PlBtnExportArchive/Item.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ExportItem } from \"./types\";\nimport { prettyBytes } from \"@milaboratories/helpers\";\n\ndefineProps<{\n item: ExportItem;\n}>();\n</script>\n\n<template>\n <div :class=\"$style.item\">\n <div :class=\"$style.name\">{{ item.fileName }}</div>\n <div v-if=\"item.status === 'in-progress'\" :class=\"$style.details\">\n <span>{{ prettyBytes(item.current, {}) }}</span>\n <span>/</span>\n <span>{{ prettyBytes(item.size, {}) }}</span>\n </div>\n <div v-else-if=\"item.status === 'completed'\" :class=\"$style.details\">\n Done <span>{{ prettyBytes(item.size, {}) }}</span>\n </div>\n <div v-else-if=\"item.status === 'error'\" :class=\"$style.error\">\n <span>{{ item.error }}</span>\n </div>\n <div v-else :class=\"$style.details\">Pending</div>\n </div>\n</template>\n\n<style module>\n.item {\n display: flex;\n flex-direction: column;\n margin-bottom: 8px;\n overflow: hidden;\n --name-font-size: 12px;\n --details-font-size: 10px;\n}\n.name {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: var(--name-font-size);\n font-weight: 600;\n}\n\n.details {\n font-size: var(--details-font-size);\n font-weight: 400;\n color: rgba(255, 255, 255, 0.6);\n}\n\n.error {\n font-size: var(--details-font-size);\n font-weight: 400;\n color: var(--txt-error);\n span {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 100%;\n }\n}\n</style>\n"],"mappings":";;;;;;;yBAUE,EAcM,OAAA,EAdA,OAAK,EAAEA,EAAAA,OAAO,KAAI,EAAA,EAAA,CACtB,EAAmD,OAAA,EAA7C,OAAK,EAAEA,EAAAA,OAAO,KAAI,EAAA,EAAA,EAAK,EAAA,KAAK,SAAQ,EAAA,EAAA,EAC/B,EAAA,KAAK,WAAM,iBAAA,GAAA,EAAtB,EAIM,OAAA;;GAJqC,OAAK,EAAEA,EAAAA,OAAO,QAAO;;GAC9D,EAAgD,QAAA,MAAA,EAAvC,EAAA,EAAW,CAAC,EAAA,KAAK,SAAO,EAAA,CAAA,CAAA,EAAA,EAAA;YACjC,EAAc,QAAA,MAAR,KAAC,GAAA;GACP,EAA6C,QAAA,MAAA,EAApC,EAAA,EAAW,CAAC,EAAA,KAAK,MAAI,EAAA,CAAA,CAAA,EAAA,EAAA;WAEhB,EAAA,KAAK,WAAM,eAAA,GAAA,EAA3B,EAEM,OAAA;;GAFwC,OAAK,EAAEA,EAAAA,OAAO,QAAO;iBAAE,UAC9D,GAAA,EAAA,EAA6C,QAAA,MAAA,EAApC,EAAA,EAAW,CAAC,EAAA,KAAK,MAAI,EAAA,CAAA,CAAA,EAAA,EAAA,CAAA,EAAA,EAAA,IAErB,EAAA,KAAK,WAAM,WAAA,GAAA,EAA3B,EAEM,OAAA;;GAFoC,OAAK,EAAEA,EAAAA,OAAO,MAAK;MAC3D,EAA6B,QAAA,MAAA,EAApB,EAAA,KAAK,MAAK,EAAA,EAAA,CAAA,EAAA,EAAA,KAAA,GAAA,EAErB,EAAiD,OAAA;;GAApC,OAAK,EAAEA,EAAAA,OAAO,QAAO;KAAE,WAAO,EAAA,EAAA,EAAA,EAAA"}
@@ -0,0 +1,7 @@
1
+ import e from "../../_virtual/_plugin-vue_export-helper.js";
2
+ import t from "./PlBtnExportArchive.vue2.js";
3
+ import n from "./PlBtnExportArchive.style.js";
4
+ var r = /* @__PURE__ */ e(t, [["__cssModules", { $style: n }]]);
5
+ export { r as default };
6
+
7
+ //# sourceMappingURL=PlBtnExportArchive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlBtnExportArchive.js","names":[],"sources":["../../../src/components/PlBtnExportArchive/PlBtnExportArchive.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { PlBtnGhost, PlIcon16, PlIcon24, useClickOutside } from \"@milaboratories/uikit\";\nimport { ZipWriter } from \"@zip.js/zip.js\";\nimport { reactive, computed, ref } from \"vue\";\nimport type { ExportItem, ExportsMap, FileExportEntry } from \"./types\";\nimport Item from \"./Item.vue\";\nimport { getFileNameFromHandle, ChunkedStreamReader } from \"@platforma-sdk/model\";\nimport { getRawPlatformaInstance } from \"@platforma-sdk/model\";\nimport { uniqueId } from \"@milaboratories/helpers\";\nimport Summary from \"./Summary.vue\";\n\ntype FilePickerAcceptType = {\n description?: string;\n accept?: Record<string, string[]>;\n};\n\nconst props = defineProps<{\n fileExports?: FileExportEntry[];\n suggestedFileName?: string;\n disabled?: boolean;\n filePickerTypes?: FilePickerAcceptType[];\n strategy?: \"parallel\"; // default is sequential\n debugFn?: (fileName: string) => Promise<void>;\n}>();\n\nconst defaultData = () => ({\n loading: false,\n name: \"\",\n exports: undefined as ExportsMap | undefined,\n showExports: false,\n});\n\nconst data = reactive(defaultData());\n\nconst updateExportsItem = (id: string, partial: Partial<ExportItem>) => {\n const it = data.exports?.get(id);\n if (it) {\n data.exports?.set(id, { ...it, ...partial });\n }\n};\n\nconst isReadyToExport = computed(() => {\n return props.fileExports !== undefined && !props.disabled;\n});\n\nconst items = computed(() => {\n return Array.from(data.exports?.values() ?? []);\n});\n\nconst archive = computed<ExportItem>(() => {\n return {\n fileName: data.name,\n current: items.value.reduce((acc, item) => acc + item.current, 0),\n size: items.value.reduce((acc, item) => acc + item.size, 0),\n status: items.value.some((item) => item.status === \"in-progress\")\n ? \"in-progress\"\n : items.value.every((item) => item.status === \"completed\")\n ? \"completed\"\n : \"pending\",\n hasErrors: items.value.some((item) => item.status === \"error\"),\n };\n});\n\ntype ZipRequest = {\n id: string;\n fileName: string;\n size: number;\n stream: ReadableStream<Uint8Array>;\n};\n\nconst exportRawTsvs = async () => {\n if (data.loading) {\n data.showExports = true;\n return;\n }\n\n if (!isReadyToExport.value || !props.fileExports) {\n return;\n }\n\n const defaultFileName = `${new Date().toISOString().split(\"T\")[0]}_Export.zip`;\n const defaultTypes = [\n {\n description: \"ZIP files\",\n accept: {\n \"application/zip\": [\".zip\"],\n },\n },\n ];\n\n // @ts-expect-error - type definition issue TODO: fix this\n const newHandle = await window.showSaveFilePicker({\n types: props.filePickerTypes || defaultTypes,\n suggestedName: props.suggestedFileName || defaultFileName,\n });\n\n data.loading = true;\n data.name = newHandle.name;\n data.showExports = true;\n data.exports = new Map();\n\n try {\n const writableStream = await newHandle.createWritable();\n const zip = new ZipWriter(writableStream, {\n keepOrder: true,\n zip64: true,\n bufferedWrite: false,\n });\n try {\n const requests = [] as ZipRequest[];\n\n for (const entry of props.fileExports) {\n const { importHandle, blobHandle, fileName: customFileName } = entry;\n const fileName = customFileName ?? getFileNameFromHandle(importHandle);\n const { handle, size } = blobHandle;\n\n const id = uniqueId();\n\n data.exports?.set(id, { fileName, current: 0, size, status: \"pending\" });\n\n const stream = ChunkedStreamReader.create({\n fetchChunk: async ({ from, to }) => {\n if (props.debugFn) {\n await props.debugFn(fileName);\n }\n\n return await getRawPlatformaInstance().blobDriver.getContent(handle, { from, to });\n },\n totalSize: size,\n onError: async (error) => {\n updateExportsItem(id, { status: \"error\", error });\n await new Promise((resolve) => setTimeout(resolve, 1000)); // primitive for now\n return \"continue\";\n },\n });\n\n // Create a chunked stream reader for efficient streaming\n requests.push({ id, fileName, size, stream });\n }\n\n const processRequest = async (request: ZipRequest) => {\n const { id, fileName, size, stream } = request;\n const update = (partial: Partial<ExportItem>) => {\n const it = data.exports?.get(id);\n if (it) {\n data.exports?.set(id, { ...it, ...partial });\n }\n };\n await zip.add(fileName, stream, {\n bufferedWrite: true,\n onstart: () => {\n update({ status: \"in-progress\" });\n return undefined;\n },\n onprogress: (current: number) => {\n update({ current, status: \"in-progress\" });\n return undefined;\n },\n onend() {\n update({ current: size, status: \"completed\" });\n return undefined;\n },\n });\n };\n\n if (props.strategy === \"parallel\") {\n await Promise.all(requests.map(processRequest));\n } else {\n for (const request of requests) {\n await processRequest(request);\n }\n }\n } finally {\n await zip.close().catch((error) => {\n console.error(\"Error closing zip\", error);\n });\n }\n } finally {\n data.loading = false;\n }\n};\n\nconst progressesRef = ref();\n\nuseClickOutside([progressesRef], () => {\n data.showExports = false;\n});\n</script>\n\n<template>\n <PlBtnGhost\n :disabled=\"!isReadyToExport\"\n :loading=\"data.loading\"\n :class=\"{ [$style['has-exports']]: data.exports }\"\n @click.stop=\"exportRawTsvs\"\n >\n <slot />\n <template #append>\n <PlIcon24 :class=\"$style.icon\" name=\"download\" />\n </template>\n </PlBtnGhost>\n <Teleport to=\"body\">\n <div v-if=\"data.exports && data.showExports\" ref=\"progressesRef\" :class=\"$style.progresses\">\n <PlIcon16 :class=\"$style.close\" name=\"close\" @click.stop=\"data.showExports = false\" />\n <Summary :item=\"archive\" />\n <div :class=\"$style.itemsContainer\" class=\"pl-scrollable-y\">\n <Item v-for=\"item in data.exports?.values()\" :key=\"item.fileName\" :item=\"item\" />\n </div>\n </div>\n </Teleport>\n</template>\n\n<style module>\n.progresses {\n position: fixed;\n top: 8px;\n right: 8px;\n width: 350px;\n height: auto;\n max-height: 400px;\n overflow: auto;\n background: rgba(0, 0, 0, 0.85);\n border-radius: 8px;\n padding: 20px 8px 8px 20px;\n color: white;\n font-size: 12px;\n font-weight: 600;\n z-index: 1000;\n\n .itemsContainer {\n max-height: 300px;\n }\n\n .close {\n position: absolute;\n top: 8px;\n right: 8px;\n cursor: pointer;\n --icon-color: white;\n }\n}\n</style>\n"],"mappings":""}
@@ -0,0 +1,8 @@
1
+ import './PlBtnExportArchive.vue.css';var e = {
2
+ progresses: "_progresses_h5njb_2",
3
+ itemsContainer: "_itemsContainer_h5njb_18",
4
+ close: "_close_h5njb_22"
5
+ };
6
+ export { e as default };
7
+
8
+ //# sourceMappingURL=PlBtnExportArchive.style.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlBtnExportArchive.vue_vue_type_style_index_0_lang.module.js","names":[],"sources":["../../../src/components/PlBtnExportArchive/PlBtnExportArchive.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { PlBtnGhost, PlIcon16, PlIcon24, useClickOutside } from \"@milaboratories/uikit\";\nimport { ZipWriter } from \"@zip.js/zip.js\";\nimport { reactive, computed, ref } from \"vue\";\nimport type { ExportItem, ExportsMap, FileExportEntry } from \"./types\";\nimport Item from \"./Item.vue\";\nimport { getFileNameFromHandle, ChunkedStreamReader } from \"@platforma-sdk/model\";\nimport { getRawPlatformaInstance } from \"@platforma-sdk/model\";\nimport { uniqueId } from \"@milaboratories/helpers\";\nimport Summary from \"./Summary.vue\";\n\ntype FilePickerAcceptType = {\n description?: string;\n accept?: Record<string, string[]>;\n};\n\nconst props = defineProps<{\n fileExports?: FileExportEntry[];\n suggestedFileName?: string;\n disabled?: boolean;\n filePickerTypes?: FilePickerAcceptType[];\n strategy?: \"parallel\"; // default is sequential\n debugFn?: (fileName: string) => Promise<void>;\n}>();\n\nconst defaultData = () => ({\n loading: false,\n name: \"\",\n exports: undefined as ExportsMap | undefined,\n showExports: false,\n});\n\nconst data = reactive(defaultData());\n\nconst updateExportsItem = (id: string, partial: Partial<ExportItem>) => {\n const it = data.exports?.get(id);\n if (it) {\n data.exports?.set(id, { ...it, ...partial });\n }\n};\n\nconst isReadyToExport = computed(() => {\n return props.fileExports !== undefined && !props.disabled;\n});\n\nconst items = computed(() => {\n return Array.from(data.exports?.values() ?? []);\n});\n\nconst archive = computed<ExportItem>(() => {\n return {\n fileName: data.name,\n current: items.value.reduce((acc, item) => acc + item.current, 0),\n size: items.value.reduce((acc, item) => acc + item.size, 0),\n status: items.value.some((item) => item.status === \"in-progress\")\n ? \"in-progress\"\n : items.value.every((item) => item.status === \"completed\")\n ? \"completed\"\n : \"pending\",\n hasErrors: items.value.some((item) => item.status === \"error\"),\n };\n});\n\ntype ZipRequest = {\n id: string;\n fileName: string;\n size: number;\n stream: ReadableStream<Uint8Array>;\n};\n\nconst exportRawTsvs = async () => {\n if (data.loading) {\n data.showExports = true;\n return;\n }\n\n if (!isReadyToExport.value || !props.fileExports) {\n return;\n }\n\n const defaultFileName = `${new Date().toISOString().split(\"T\")[0]}_Export.zip`;\n const defaultTypes = [\n {\n description: \"ZIP files\",\n accept: {\n \"application/zip\": [\".zip\"],\n },\n },\n ];\n\n // @ts-expect-error - type definition issue TODO: fix this\n const newHandle = await window.showSaveFilePicker({\n types: props.filePickerTypes || defaultTypes,\n suggestedName: props.suggestedFileName || defaultFileName,\n });\n\n data.loading = true;\n data.name = newHandle.name;\n data.showExports = true;\n data.exports = new Map();\n\n try {\n const writableStream = await newHandle.createWritable();\n const zip = new ZipWriter(writableStream, {\n keepOrder: true,\n zip64: true,\n bufferedWrite: false,\n });\n try {\n const requests = [] as ZipRequest[];\n\n for (const entry of props.fileExports) {\n const { importHandle, blobHandle, fileName: customFileName } = entry;\n const fileName = customFileName ?? getFileNameFromHandle(importHandle);\n const { handle, size } = blobHandle;\n\n const id = uniqueId();\n\n data.exports?.set(id, { fileName, current: 0, size, status: \"pending\" });\n\n const stream = ChunkedStreamReader.create({\n fetchChunk: async ({ from, to }) => {\n if (props.debugFn) {\n await props.debugFn(fileName);\n }\n\n return await getRawPlatformaInstance().blobDriver.getContent(handle, { from, to });\n },\n totalSize: size,\n onError: async (error) => {\n updateExportsItem(id, { status: \"error\", error });\n await new Promise((resolve) => setTimeout(resolve, 1000)); // primitive for now\n return \"continue\";\n },\n });\n\n // Create a chunked stream reader for efficient streaming\n requests.push({ id, fileName, size, stream });\n }\n\n const processRequest = async (request: ZipRequest) => {\n const { id, fileName, size, stream } = request;\n const update = (partial: Partial<ExportItem>) => {\n const it = data.exports?.get(id);\n if (it) {\n data.exports?.set(id, { ...it, ...partial });\n }\n };\n await zip.add(fileName, stream, {\n bufferedWrite: true,\n onstart: () => {\n update({ status: \"in-progress\" });\n return undefined;\n },\n onprogress: (current: number) => {\n update({ current, status: \"in-progress\" });\n return undefined;\n },\n onend() {\n update({ current: size, status: \"completed\" });\n return undefined;\n },\n });\n };\n\n if (props.strategy === \"parallel\") {\n await Promise.all(requests.map(processRequest));\n } else {\n for (const request of requests) {\n await processRequest(request);\n }\n }\n } finally {\n await zip.close().catch((error) => {\n console.error(\"Error closing zip\", error);\n });\n }\n } finally {\n data.loading = false;\n }\n};\n\nconst progressesRef = ref();\n\nuseClickOutside([progressesRef], () => {\n data.showExports = false;\n});\n</script>\n\n<template>\n <PlBtnGhost\n :disabled=\"!isReadyToExport\"\n :loading=\"data.loading\"\n :class=\"{ [$style['has-exports']]: data.exports }\"\n @click.stop=\"exportRawTsvs\"\n >\n <slot />\n <template #append>\n <PlIcon24 :class=\"$style.icon\" name=\"download\" />\n </template>\n </PlBtnGhost>\n <Teleport to=\"body\">\n <div v-if=\"data.exports && data.showExports\" ref=\"progressesRef\" :class=\"$style.progresses\">\n <PlIcon16 :class=\"$style.close\" name=\"close\" @click.stop=\"data.showExports = false\" />\n <Summary :item=\"archive\" />\n <div :class=\"$style.itemsContainer\" class=\"pl-scrollable-y\">\n <Item v-for=\"item in data.exports?.values()\" :key=\"item.fileName\" :item=\"item\" />\n </div>\n </div>\n </Teleport>\n</template>\n\n<style module>\n.progresses {\n position: fixed;\n top: 8px;\n right: 8px;\n width: 350px;\n height: auto;\n max-height: 400px;\n overflow: auto;\n background: rgba(0, 0, 0, 0.85);\n border-radius: 8px;\n padding: 20px 8px 8px 20px;\n color: white;\n font-size: 12px;\n font-weight: 600;\n z-index: 1000;\n\n .itemsContainer {\n max-height: 300px;\n }\n\n .close {\n position: absolute;\n top: 8px;\n right: 8px;\n cursor: pointer;\n --icon-color: white;\n }\n}\n</style>\n"],"mappings":""}
@@ -0,0 +1 @@
1
+ ._progresses_h5njb_2{color:#fff;z-index:1000;background:#000000d9;border-radius:8px;width:350px;height:auto;max-height:400px;padding:20px 8px 8px 20px;font-size:12px;font-weight:600;position:fixed;top:8px;right:8px;overflow:auto}._progresses_h5njb_2 ._itemsContainer_h5njb_18{max-height:300px}._progresses_h5njb_2 ._close_h5njb_22{cursor:pointer;--icon-color:white;position:absolute;top:8px;right:8px}