@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.
- package/.turbo/turbo-build.log +195 -181
- package/.turbo/turbo-formatter$colon$check.log +2 -2
- package/.turbo/turbo-linter$colon$check.log +2 -2
- package/.turbo/turbo-types$colon$check.log +1 -1
- package/CHANGELOG.md +14 -0
- package/dist/AgGridVue/createAgGridColDef.js +73 -43
- package/dist/AgGridVue/createAgGridColDef.js.map +1 -1
- package/dist/AgGridVue/selection.js +55 -47
- package/dist/AgGridVue/selection.js.map +1 -1
- package/dist/AgGridVue/useAgGridOptions.js +212 -229
- package/dist/AgGridVue/useAgGridOptions.js.map +1 -1
- package/dist/_virtual/_plugin-vue_export-helper.js +5 -9
- package/dist/_virtual/_rolldown/runtime.js +15 -0
- package/dist/aggrid.js +48 -46
- package/dist/aggrid.js.map +1 -1
- package/dist/assets/block.css +1 -1
- package/dist/assets/ui.css +1 -0
- package/dist/components/BlockLayout.js +7 -0
- package/dist/components/BlockLayout.js.map +1 -0
- package/dist/components/BlockLayout.style.js +4 -0
- package/dist/components/BlockLayout.style.js.map +1 -0
- package/dist/components/BlockLayout.vue.css +1 -0
- package/dist/components/BlockLayout.vue2.js +42 -54
- package/dist/components/BlockLayout.vue2.js.map +1 -1
- package/dist/components/BlockLoader.js +5 -0
- package/dist/components/BlockLoader.js.map +1 -0
- package/dist/components/BlockLoader.vue2.js +22 -5
- package/dist/components/BlockLoader.vue2.js.map +1 -1
- package/dist/components/LoaderPage.js +10 -0
- package/dist/components/LoaderPage.js.map +1 -0
- package/dist/components/NotFound.js +5 -0
- package/dist/components/NotFound.js.map +1 -0
- package/dist/components/NotFound.vue2.js +18 -5
- package/dist/components/NotFound.vue2.js.map +1 -1
- package/dist/components/PlAdvancedFilter/FilterEditor.js +7 -0
- package/dist/components/PlAdvancedFilter/FilterEditor.js.map +1 -0
- package/dist/components/PlAdvancedFilter/FilterEditor.style.js +18 -0
- package/dist/components/PlAdvancedFilter/FilterEditor.style.js.map +1 -0
- package/dist/components/PlAdvancedFilter/FilterEditor.vue.css +1 -0
- package/dist/components/PlAdvancedFilter/FilterEditor.vue2.js +291 -322
- package/dist/components/PlAdvancedFilter/FilterEditor.vue2.js.map +1 -1
- package/dist/components/PlAdvancedFilter/OperandButton.js +7 -0
- package/dist/components/PlAdvancedFilter/OperandButton.js.map +1 -0
- package/dist/components/PlAdvancedFilter/OperandButton.style.js +8 -0
- package/dist/components/PlAdvancedFilter/OperandButton.style.js.map +1 -0
- package/dist/components/PlAdvancedFilter/OperandButton.vue.css +1 -0
- package/dist/components/PlAdvancedFilter/OperandButton.vue2.js +19 -24
- package/dist/components/PlAdvancedFilter/OperandButton.vue2.js.map +1 -1
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.js +7 -0
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.js.map +1 -0
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.style.js +12 -0
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.style.js.map +1 -0
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue.css +1 -0
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue.d.ts +1 -3
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue.d.ts.map +1 -1
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue2.js +239 -238
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue2.js.map +1 -1
- package/dist/components/PlAdvancedFilter/constants.js +115 -58
- package/dist/components/PlAdvancedFilter/constants.js.map +1 -1
- package/dist/components/PlAdvancedFilter/index.d.ts +1 -1
- package/dist/components/PlAdvancedFilter/index.d.ts.map +1 -1
- package/dist/components/PlAdvancedFilter/index.js +6 -6
- package/dist/components/PlAdvancedFilter/index.js.map +1 -1
- package/dist/components/PlAdvancedFilter/utils.js +49 -64
- package/dist/components/PlAdvancedFilter/utils.js.map +1 -1
- package/dist/components/PlAgCellFile/PlAgCellFile.js +5 -0
- package/dist/components/PlAgCellFile/PlAgCellFile.js.map +1 -0
- package/dist/components/PlAgCellFile/PlAgCellFile.vue2.js +36 -5
- package/dist/components/PlAgCellFile/PlAgCellFile.vue2.js.map +1 -1
- package/dist/components/PlAgCellProgress/PlAgCellProgress.js +5 -0
- package/dist/components/PlAgCellProgress/PlAgCellProgress.js.map +1 -0
- package/dist/components/PlAgCellProgress/PlAgCellProgress.vue2.js +13 -5
- package/dist/components/PlAgCellProgress/PlAgCellProgress.vue2.js.map +1 -1
- package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.js +6 -0
- package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.js.map +1 -0
- package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.vue2.js +12 -0
- package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.vue2.js.map +1 -0
- package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.js +6 -0
- package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.js.map +1 -0
- package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.style.css +1 -0
- package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.vue2.js +31 -0
- package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.vue2.js.map +1 -0
- package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.js +6 -0
- package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.js.map +1 -0
- package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.style.css +1 -0
- package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.vue2.js +19 -0
- package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.vue2.js.map +1 -0
- package/dist/components/PlAgColumnHeader/PlAgColumnHeader.js +5 -0
- package/dist/components/PlAgColumnHeader/PlAgColumnHeader.js.map +1 -0
- package/dist/components/PlAgColumnHeader/PlAgColumnHeader.vue2.js +68 -5
- package/dist/components/PlAgColumnHeader/PlAgColumnHeader.vue2.js.map +1 -1
- package/dist/components/PlAgColumnHeader/pl-ag-column-header.css +1 -1
- package/dist/components/PlAgCsvExporter/PlAgCsvExporter.js +5 -0
- package/dist/components/PlAgCsvExporter/PlAgCsvExporter.js.map +1 -0
- package/dist/components/PlAgCsvExporter/PlAgCsvExporter.vue2.js +26 -5
- package/dist/components/PlAgCsvExporter/PlAgCsvExporter.vue2.js.map +1 -1
- package/dist/components/PlAgCsvExporter/export-csv.js +36 -43
- package/dist/components/PlAgCsvExporter/export-csv.js.map +1 -1
- package/dist/components/PlAgDataTable/PlAgDataTableSheets.js +7 -0
- package/dist/components/PlAgDataTable/PlAgDataTableSheets.js.map +1 -0
- package/dist/components/PlAgDataTable/PlAgDataTableSheets.style.js +4 -0
- package/dist/components/PlAgDataTable/PlAgDataTableSheets.style.js.map +1 -0
- package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue.css +1 -0
- package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue2.js +68 -72
- package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue2.js.map +1 -1
- package/dist/components/PlAgDataTable/PlAgDataTableV2.js +7 -0
- package/dist/components/PlAgDataTable/PlAgDataTableV2.js.map +1 -0
- package/dist/components/PlAgDataTable/PlAgDataTableV2.style.js +7 -0
- package/dist/components/PlAgDataTable/PlAgDataTableV2.style.js.map +1 -0
- package/dist/components/PlAgDataTable/PlAgDataTableV2.vue.css +1 -0
- package/dist/components/PlAgDataTable/PlAgDataTableV2.vue2.js +307 -336
- package/dist/components/PlAgDataTable/PlAgDataTableV2.vue2.js.map +1 -1
- package/dist/components/PlAgDataTable/PlAgOverlayLoading.js +5 -0
- package/dist/components/PlAgDataTable/PlAgOverlayLoading.js.map +1 -0
- package/dist/components/PlAgDataTable/PlAgOverlayLoading.vue2.js +26 -5
- package/dist/components/PlAgDataTable/PlAgOverlayLoading.vue2.js.map +1 -1
- package/dist/components/PlAgDataTable/PlAgOverlayNoRows.js +6 -0
- package/dist/components/PlAgDataTable/PlAgOverlayNoRows.js.map +1 -0
- package/dist/components/PlAgDataTable/{PlAgOverlayNoRows.css → PlAgOverlayNoRows.style.css} +1 -1
- package/dist/components/PlAgDataTable/PlAgOverlayNoRows.vue2.js +14 -0
- package/dist/components/PlAgDataTable/PlAgOverlayNoRows.vue2.js.map +1 -0
- package/dist/components/PlAgDataTable/PlAgRowCount.js +5 -0
- package/dist/components/PlAgDataTable/PlAgRowCount.js.map +1 -0
- package/dist/components/PlAgDataTable/PlAgRowCount.vue2.js +23 -5
- package/dist/components/PlAgDataTable/PlAgRowCount.vue2.js.map +1 -1
- package/dist/components/PlAgDataTable/ag-override.js +4 -0
- package/dist/components/PlAgDataTable/ag-override.js.map +1 -0
- package/dist/components/PlAgDataTable/compositions/useFilterableColumns.js +25 -30
- package/dist/components/PlAgDataTable/compositions/useFilterableColumns.js.map +1 -1
- package/dist/components/PlAgDataTable/compositions/useGrid.js +102 -112
- package/dist/components/PlAgDataTable/compositions/useGrid.js.map +1 -1
- package/dist/components/PlAgDataTable/pl-ag-overlay-loading.css +1 -1
- package/dist/components/PlAgDataTable/pl-ag-overlay-loading.module.js +9 -0
- package/dist/components/PlAgDataTable/pl-ag-overlay-loading.module.js.map +1 -0
- package/dist/components/PlAgDataTable/sources/common.js +6 -8
- package/dist/components/PlAgDataTable/sources/common.js.map +1 -1
- package/dist/components/PlAgDataTable/sources/focus-row.js +36 -51
- package/dist/components/PlAgDataTable/sources/focus-row.js.map +1 -1
- package/dist/components/PlAgDataTable/sources/menu-items.js +10 -6
- package/dist/components/PlAgDataTable/sources/menu-items.js.map +1 -1
- package/dist/components/PlAgDataTable/sources/row-number.js +82 -94
- package/dist/components/PlAgDataTable/sources/row-number.js.map +1 -1
- package/dist/components/PlAgDataTable/sources/table-source-v2.js +178 -199
- package/dist/components/PlAgDataTable/sources/table-source-v2.js.map +1 -1
- package/dist/components/PlAgDataTable/sources/table-state-v2.js +155 -132
- package/dist/components/PlAgDataTable/sources/table-state-v2.js.map +1 -1
- package/dist/components/PlAgDataTable/sources/value-rendering.js +33 -38
- package/dist/components/PlAgDataTable/sources/value-rendering.js.map +1 -1
- package/dist/components/PlAgDataTable/types.js +54 -43
- package/dist/components/PlAgDataTable/types.js.map +1 -1
- package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.js +7 -0
- package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.js.map +1 -0
- package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.style.js +4 -0
- package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.style.js.map +1 -0
- package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue2.js +89 -100
- package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue2.js.map +1 -1
- package/dist/components/PlAgGridColumnManager/useFilteredItems.js +46 -33
- package/dist/components/PlAgGridColumnManager/useFilteredItems.js.map +1 -1
- package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.js +5 -0
- package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.js.map +1 -0
- package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue.d.ts.map +1 -1
- package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue2.js +37 -5
- package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue2.js.map +1 -1
- package/dist/components/PlAgRowNumCheckbox/pl-ag-row-num-checkbox.css +1 -1
- package/dist/components/PlAgRowNumCheckbox/pl-ag-row-num-checkbox.module.js +10 -0
- package/dist/components/PlAgRowNumCheckbox/pl-ag-row-num-checkbox.module.js.map +1 -0
- package/dist/components/PlAgRowNumHeader.js +5 -0
- package/dist/components/PlAgRowNumHeader.js.map +1 -0
- package/dist/components/PlAgRowNumHeader.vue2.js +38 -5
- package/dist/components/PlAgRowNumHeader.vue2.js.map +1 -1
- package/dist/components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.js +5 -0
- package/dist/components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.js.map +1 -0
- package/dist/components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.vue2.js +32 -5
- package/dist/components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.vue2.js.map +1 -1
- package/dist/components/PlAgTextAndButtonCell/pl-ag-text-and-button-cell.css +1 -1
- package/dist/components/PlAnnotations/components/AnnotationsSidebar.js +7 -0
- package/dist/components/PlAnnotations/components/AnnotationsSidebar.js.map +1 -0
- package/dist/components/PlAnnotations/components/AnnotationsSidebar.style.js +11 -0
- package/dist/components/PlAnnotations/components/AnnotationsSidebar.style.js.map +1 -0
- package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue.css +1 -0
- package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue2.js +102 -113
- package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue2.js.map +1 -1
- package/dist/components/PlAnnotations/components/FilterSidebar.js +7 -0
- package/dist/components/PlAnnotations/components/FilterSidebar.js.map +1 -0
- package/dist/components/PlAnnotations/components/FilterSidebar.style.js +7 -0
- package/dist/components/PlAnnotations/components/FilterSidebar.style.js.map +1 -0
- package/dist/components/PlAnnotations/components/FilterSidebar.vue.css +1 -0
- package/dist/components/PlAnnotations/components/FilterSidebar.vue.d.ts +1 -2
- package/dist/components/PlAnnotations/components/FilterSidebar.vue.d.ts.map +1 -1
- package/dist/components/PlAnnotations/components/FilterSidebar.vue2.js +121 -131
- package/dist/components/PlAnnotations/components/FilterSidebar.vue2.js.map +1 -1
- package/dist/components/PlAnnotations/components/PlAnnotations.js +7 -0
- package/dist/components/PlAnnotations/components/PlAnnotations.js.map +1 -0
- package/dist/components/PlAnnotations/components/PlAnnotations.style.js +4 -0
- package/dist/components/PlAnnotations/components/PlAnnotations.style.js.map +1 -0
- package/dist/components/PlAnnotations/components/PlAnnotations.vue2.js +73 -65
- package/dist/components/PlAnnotations/components/PlAnnotations.vue2.js.map +1 -1
- package/dist/components/PlAnnotations/components/PlAnnotationsModal.js +7 -0
- package/dist/components/PlAnnotations/components/PlAnnotationsModal.js.map +1 -0
- package/dist/components/PlAnnotations/components/PlAnnotationsModal.style.js +7 -0
- package/dist/components/PlAnnotations/components/PlAnnotationsModal.style.js.map +1 -0
- package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue2.js +58 -52
- package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue2.js.map +1 -1
- package/dist/components/PlAnnotations/components/style.css +1 -1
- package/dist/components/PlAnnotations/components/style.module.js +8 -0
- package/dist/components/PlAnnotations/components/style.module.js.map +1 -0
- package/dist/components/PlAnnotations/utils.js +6 -8
- package/dist/components/PlAnnotations/utils.js.map +1 -1
- package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.js +5 -0
- package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.js.map +1 -0
- package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue2.js +57 -5
- package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue2.js.map +1 -1
- package/dist/components/PlAppErrorNotificationAlert/pl-app-error-notification-alert.css +1 -1
- package/dist/components/PlBtnExportArchive/Item.js +7 -0
- package/dist/components/PlBtnExportArchive/Item.js.map +1 -0
- package/dist/components/PlBtnExportArchive/Item.style.js +9 -0
- package/dist/components/PlBtnExportArchive/Item.style.js.map +1 -0
- package/dist/components/PlBtnExportArchive/Item.vue.css +1 -0
- package/dist/components/PlBtnExportArchive/Item.vue2.js +28 -42
- package/dist/components/PlBtnExportArchive/Item.vue2.js.map +1 -1
- package/dist/components/PlBtnExportArchive/PlBtnExportArchive.js +7 -0
- package/dist/components/PlBtnExportArchive/PlBtnExportArchive.js.map +1 -0
- package/dist/components/PlBtnExportArchive/PlBtnExportArchive.style.js +8 -0
- package/dist/components/PlBtnExportArchive/PlBtnExportArchive.style.js.map +1 -0
- package/dist/components/PlBtnExportArchive/PlBtnExportArchive.vue.css +1 -0
- package/dist/components/PlBtnExportArchive/PlBtnExportArchive.vue2.js +161 -159
- package/dist/components/PlBtnExportArchive/PlBtnExportArchive.vue2.js.map +1 -1
- package/dist/components/PlBtnExportArchive/Summary.js +7 -0
- package/dist/components/PlBtnExportArchive/Summary.js.map +1 -0
- package/dist/components/PlBtnExportArchive/Summary.style.js +8 -0
- package/dist/components/PlBtnExportArchive/Summary.style.js.map +1 -0
- package/dist/components/PlBtnExportArchive/Summary.vue.css +1 -0
- package/dist/components/PlBtnExportArchive/Summary.vue2.js +26 -41
- package/dist/components/PlBtnExportArchive/Summary.vue2.js.map +1 -1
- package/dist/components/PlTableFastSearch/PlTableFastSearch.js +5 -0
- package/dist/components/PlTableFastSearch/PlTableFastSearch.js.map +1 -0
- package/dist/components/PlTableFastSearch/PlTableFastSearch.vue2.js +41 -5
- package/dist/components/PlTableFastSearch/PlTableFastSearch.vue2.js.map +1 -1
- package/dist/components/PlTableFilters/PlTableFiltersV2.js +7 -0
- package/dist/components/PlTableFilters/PlTableFiltersV2.js.map +1 -0
- package/dist/components/PlTableFilters/PlTableFiltersV2.style.js +4 -0
- package/dist/components/PlTableFilters/PlTableFiltersV2.style.js.map +1 -0
- package/dist/components/PlTableFilters/PlTableFiltersV2.vue.css +1 -0
- package/dist/components/PlTableFilters/PlTableFiltersV2.vue.d.ts.map +1 -1
- package/dist/components/PlTableFilters/PlTableFiltersV2.vue2.js +97 -106
- package/dist/components/PlTableFilters/PlTableFiltersV2.vue2.js.map +1 -1
- package/dist/composition/fileContent.js +169 -200
- package/dist/composition/fileContent.js.map +1 -1
- package/dist/computedResult.js +47 -18
- package/dist/computedResult.js.map +1 -1
- package/dist/createModel.js +44 -60
- package/dist/createModel.js.map +1 -1
- package/dist/defineApp.js +87 -113
- package/dist/defineApp.js.map +1 -1
- package/dist/defineStore.js +15 -16
- package/dist/defineStore.js.map +1 -1
- package/dist/index.js +39 -98
- package/dist/index.js.map +1 -1
- package/dist/internal/UpdateSerializer.js +50 -66
- package/dist/internal/UpdateSerializer.js.map +1 -1
- package/dist/internal/createAppModel.js +54 -68
- package/dist/internal/createAppModel.js.map +1 -1
- package/dist/internal/createAppV1.js +140 -193
- package/dist/internal/createAppV1.js.map +1 -1
- package/dist/internal/createAppV2.d.ts.map +1 -1
- package/dist/internal/createAppV2.js +149 -193
- package/dist/internal/createAppV2.js.map +1 -1
- package/dist/internal/createAppV3.d.ts.map +1 -1
- package/dist/internal/createAppV3.js +157 -202
- package/dist/internal/createAppV3.js.map +1 -1
- package/dist/internal/test-helpers/utils.d.ts.map +1 -1
- package/dist/lib/util/helpers/dist/error.js +1 -0
- package/dist/lib/util/helpers/dist/functions.js +8 -9
- package/dist/lib/util/helpers/dist/functions.js.map +1 -1
- package/dist/lib/util/helpers/dist/hash.js +5 -0
- package/dist/lib/util/helpers/dist/hash.js.map +1 -0
- package/dist/lib/util/helpers/dist/index.js +9 -0
- package/dist/lib/util/helpers/dist/objects.js +75 -42
- package/dist/lib/util/helpers/dist/objects.js.map +1 -1
- package/dist/lib/util/helpers/dist/prettyBytes.js +60 -26
- package/dist/lib/util/helpers/dist/prettyBytes.js.map +1 -1
- package/dist/lib/util/helpers/dist/random.js +6 -8
- package/dist/lib/util/helpers/dist/random.js.map +1 -1
- package/dist/lib/util/helpers/dist/strings.js +11 -14
- package/dist/lib/util/helpers/dist/strings.js.map +1 -1
- package/dist/lib/util/helpers/dist/uniqId.js +7 -0
- package/dist/lib/util/helpers/dist/uniqId.js.map +1 -0
- package/dist/lib/util/helpers/dist/utils.js +34 -50
- package/dist/lib/util/helpers/dist/utils.js.map +1 -1
- package/dist/lib.js +38 -0
- package/dist/objectHash.js +13 -10
- package/dist/objectHash.js.map +1 -1
- package/dist/plugins/Monetization/EndOfPeriod.js +7 -0
- package/dist/plugins/Monetization/EndOfPeriod.js.map +1 -0
- package/dist/plugins/Monetization/EndOfPeriod.style.js +4 -0
- package/dist/plugins/Monetization/EndOfPeriod.style.js.map +1 -0
- package/dist/plugins/Monetization/EndOfPeriod.vue.css +1 -0
- package/dist/plugins/Monetization/EndOfPeriod.vue2.js +15 -23
- package/dist/plugins/Monetization/EndOfPeriod.vue2.js.map +1 -1
- package/dist/plugins/Monetization/LimitCard.js +7 -0
- package/dist/plugins/Monetization/LimitCard.js.map +1 -0
- package/dist/plugins/Monetization/LimitCard.style.js +18 -0
- package/dist/plugins/Monetization/LimitCard.style.js.map +1 -0
- package/dist/plugins/Monetization/LimitCard.vue.css +1 -0
- package/dist/plugins/Monetization/LimitCard.vue2.js +47 -84
- package/dist/plugins/Monetization/LimitCard.vue2.js.map +1 -1
- package/dist/plugins/Monetization/MonetizationSidebar.js +5 -0
- package/dist/plugins/Monetization/MonetizationSidebar.js.map +1 -0
- package/dist/plugins/Monetization/MonetizationSidebar.vue2.js +106 -5
- package/dist/plugins/Monetization/MonetizationSidebar.vue2.js.map +1 -1
- package/dist/plugins/Monetization/RunStatus.js +7 -0
- package/dist/plugins/Monetization/RunStatus.js.map +1 -0
- package/dist/plugins/Monetization/RunStatus.style.js +13 -0
- package/dist/plugins/Monetization/RunStatus.style.js.map +1 -0
- package/dist/plugins/Monetization/RunStatus.vue.css +1 -0
- package/dist/plugins/Monetization/RunStatus.vue2.js +21 -40
- package/dist/plugins/Monetization/RunStatus.vue2.js.map +1 -1
- package/dist/plugins/Monetization/UserCabinetCard.js +7 -0
- package/dist/plugins/Monetization/UserCabinetCard.js.map +1 -0
- package/dist/plugins/Monetization/UserCabinetCard.style.js +12 -0
- package/dist/plugins/Monetization/UserCabinetCard.style.js.map +1 -0
- package/dist/plugins/Monetization/UserCabinetCard.vue.css +1 -0
- package/dist/plugins/Monetization/UserCabinetCard.vue2.js +50 -70
- package/dist/plugins/Monetization/UserCabinetCard.vue2.js.map +1 -1
- package/dist/plugins/Monetization/useButtonTarget.js +15 -16
- package/dist/plugins/Monetization/useButtonTarget.js.map +1 -1
- package/dist/plugins/Monetization/useInfo.js +36 -71
- package/dist/plugins/Monetization/useInfo.js.map +1 -1
- package/dist/plugins/Monetization/validation.js +34 -42
- package/dist/plugins/Monetization/validation.js.map +1 -1
- package/dist/urls.d.ts.map +1 -1
- package/dist/urls.js +4 -5
- package/dist/urls.js.map +1 -1
- package/dist/usePlugin.js +32 -12
- package/dist/usePlugin.js.map +1 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +29 -54
- package/dist/utils.js.map +1 -1
- package/package.json +8 -8
- package/src/components/PlAdvancedFilter/index.ts +1 -1
- package/src/components/PlAnnotations/components/FilterSidebar.vue +11 -6
- package/src/components/PlTableFilters/PlTableFiltersV2.vue +2 -1
- package/dist/_virtual/_plugin-vue_export-helper.js.map +0 -1
- package/dist/components/BlockLayout.css +0 -1
- package/dist/components/BlockLayout.vue.js +0 -10
- package/dist/components/BlockLayout.vue.js.map +0 -1
- package/dist/components/BlockLayout.vue3.js +0 -8
- package/dist/components/BlockLayout.vue3.js.map +0 -1
- package/dist/components/BlockLoader.vue.js +0 -26
- package/dist/components/BlockLoader.vue.js.map +0 -1
- package/dist/components/LoaderPage.vue.js +0 -15
- package/dist/components/LoaderPage.vue.js.map +0 -1
- package/dist/components/NotFound.vue.js +0 -26
- package/dist/components/NotFound.vue.js.map +0 -1
- package/dist/components/PlAdvancedFilter/FilterEditor.css +0 -1
- package/dist/components/PlAdvancedFilter/FilterEditor.vue.js +0 -10
- package/dist/components/PlAdvancedFilter/FilterEditor.vue.js.map +0 -1
- package/dist/components/PlAdvancedFilter/FilterEditor.vue3.js +0 -32
- package/dist/components/PlAdvancedFilter/FilterEditor.vue3.js.map +0 -1
- package/dist/components/PlAdvancedFilter/OperandButton.css +0 -1
- package/dist/components/PlAdvancedFilter/OperandButton.vue.js +0 -10
- package/dist/components/PlAdvancedFilter/OperandButton.vue.js.map +0 -1
- package/dist/components/PlAdvancedFilter/OperandButton.vue3.js +0 -12
- package/dist/components/PlAdvancedFilter/OperandButton.vue3.js.map +0 -1
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.css +0 -1
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue.js +0 -10
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue.js.map +0 -1
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue3.js +0 -20
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue3.js.map +0 -1
- package/dist/components/PlAgCellFile/PlAgCellFile.vue.js +0 -32
- package/dist/components/PlAgCellFile/PlAgCellFile.vue.js.map +0 -1
- package/dist/components/PlAgCellProgress/PlAgCellProgress.vue.js +0 -16
- package/dist/components/PlAgCellProgress/PlAgCellProgress.vue.js.map +0 -1
- package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.vue.js +0 -22
- package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.vue.js.map +0 -1
- package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.vue3.js +0 -6
- package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.vue3.js.map +0 -1
- package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.css +0 -1
- package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.vue.js +0 -32
- package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.vue.js.map +0 -1
- package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.vue3.js +0 -6
- package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.vue3.js.map +0 -1
- package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.css +0 -1
- package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.vue.js +0 -24
- package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.vue.js.map +0 -1
- package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.vue3.js +0 -6
- package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.vue3.js.map +0 -1
- package/dist/components/PlAgColumnHeader/PlAgColumnHeader.vue.js +0 -97
- package/dist/components/PlAgColumnHeader/PlAgColumnHeader.vue.js.map +0 -1
- package/dist/components/PlAgCsvExporter/PlAgCsvExporter.vue.js +0 -33
- package/dist/components/PlAgCsvExporter/PlAgCsvExporter.vue.js.map +0 -1
- package/dist/components/PlAgDataTable/PlAgDataTableSheets.css +0 -1
- package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue.js +0 -10
- package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue.js.map +0 -1
- package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue3.js +0 -8
- package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue3.js.map +0 -1
- package/dist/components/PlAgDataTable/PlAgDataTableV2.css +0 -1
- package/dist/components/PlAgDataTable/PlAgDataTableV2.vue.js +0 -10
- package/dist/components/PlAgDataTable/PlAgDataTableV2.vue.js.map +0 -1
- package/dist/components/PlAgDataTable/PlAgDataTableV2.vue3.js +0 -10
- package/dist/components/PlAgDataTable/PlAgDataTableV2.vue3.js.map +0 -1
- package/dist/components/PlAgDataTable/PlAgOverlayLoading.vue.js +0 -48
- package/dist/components/PlAgDataTable/PlAgOverlayLoading.vue.js.map +0 -1
- package/dist/components/PlAgDataTable/PlAgOverlayNoRows.vue.js +0 -22
- package/dist/components/PlAgDataTable/PlAgOverlayNoRows.vue.js.map +0 -1
- package/dist/components/PlAgDataTable/PlAgOverlayNoRows.vue3.js +0 -6
- package/dist/components/PlAgDataTable/PlAgOverlayNoRows.vue3.js.map +0 -1
- package/dist/components/PlAgDataTable/PlAgRowCount.vue.js +0 -26
- package/dist/components/PlAgDataTable/PlAgRowCount.vue.js.map +0 -1
- package/dist/components/PlAgDataTable/ag-override.css.js +0 -31
- package/dist/components/PlAgDataTable/ag-override.css.js.map +0 -1
- package/dist/components/PlAgDataTable/pl-ag-overlay-loading.module.scss.js +0 -14
- package/dist/components/PlAgDataTable/pl-ag-overlay-loading.module.scss.js.map +0 -1
- package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue.js +0 -10
- package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue.js.map +0 -1
- package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue3.js +0 -8
- package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue3.js.map +0 -1
- package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue.js +0 -48
- package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue.js.map +0 -1
- package/dist/components/PlAgRowNumCheckbox/pl-ag-row-num-checkbox.module.scss.js +0 -15
- package/dist/components/PlAgRowNumCheckbox/pl-ag-row-num-checkbox.module.scss.js.map +0 -1
- package/dist/components/PlAgRowNumHeader.vue.js +0 -39
- package/dist/components/PlAgRowNumHeader.vue.js.map +0 -1
- package/dist/components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.vue.js +0 -45
- package/dist/components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.vue.js.map +0 -1
- package/dist/components/PlAnnotations/components/AnnotationsSidebar.css +0 -1
- package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue.js +0 -10
- package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue.js.map +0 -1
- package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue3.js +0 -18
- package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue3.js.map +0 -1
- package/dist/components/PlAnnotations/components/FilterSidebar.css +0 -1
- package/dist/components/PlAnnotations/components/FilterSidebar.vue.js +0 -10
- package/dist/components/PlAnnotations/components/FilterSidebar.vue.js.map +0 -1
- package/dist/components/PlAnnotations/components/FilterSidebar.vue3.js +0 -10
- package/dist/components/PlAnnotations/components/FilterSidebar.vue3.js.map +0 -1
- package/dist/components/PlAnnotations/components/PlAnnotations.vue.js +0 -10
- package/dist/components/PlAnnotations/components/PlAnnotations.vue.js.map +0 -1
- package/dist/components/PlAnnotations/components/PlAnnotations.vue3.js +0 -8
- package/dist/components/PlAnnotations/components/PlAnnotations.vue3.js.map +0 -1
- package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue.js +0 -10
- package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue.js.map +0 -1
- package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue3.js +0 -10
- package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue3.js.map +0 -1
- package/dist/components/PlAnnotations/components/style.module.css.js +0 -12
- package/dist/components/PlAnnotations/components/style.module.css.js.map +0 -1
- package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue.js +0 -79
- package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue.js.map +0 -1
- package/dist/components/PlBtnExportArchive/Item.css +0 -1
- package/dist/components/PlBtnExportArchive/Item.vue.js +0 -10
- package/dist/components/PlBtnExportArchive/Item.vue.js.map +0 -1
- package/dist/components/PlBtnExportArchive/Item.vue3.js +0 -14
- package/dist/components/PlBtnExportArchive/Item.vue3.js.map +0 -1
- package/dist/components/PlBtnExportArchive/PlBtnExportArchive.css +0 -1
- package/dist/components/PlBtnExportArchive/PlBtnExportArchive.vue.js +0 -10
- package/dist/components/PlBtnExportArchive/PlBtnExportArchive.vue.js.map +0 -1
- package/dist/components/PlBtnExportArchive/PlBtnExportArchive.vue3.js +0 -12
- package/dist/components/PlBtnExportArchive/PlBtnExportArchive.vue3.js.map +0 -1
- package/dist/components/PlBtnExportArchive/Summary.css +0 -1
- package/dist/components/PlBtnExportArchive/Summary.vue.js +0 -10
- package/dist/components/PlBtnExportArchive/Summary.vue.js.map +0 -1
- package/dist/components/PlBtnExportArchive/Summary.vue3.js +0 -12
- package/dist/components/PlBtnExportArchive/Summary.vue3.js.map +0 -1
- package/dist/components/PlTableFastSearch/PlTableFastSearch.vue.js +0 -54
- package/dist/components/PlTableFastSearch/PlTableFastSearch.vue.js.map +0 -1
- package/dist/components/PlTableFilters/PlTableFiltersV2.css +0 -1
- package/dist/components/PlTableFilters/PlTableFiltersV2.vue.js +0 -10
- package/dist/components/PlTableFilters/PlTableFiltersV2.vue.js.map +0 -1
- package/dist/components/PlTableFilters/PlTableFiltersV2.vue3.js +0 -8
- package/dist/components/PlTableFilters/PlTableFiltersV2.vue3.js.map +0 -1
- package/dist/plugins/Monetization/EndOfPeriod.css +0 -1
- package/dist/plugins/Monetization/EndOfPeriod.vue.js +0 -10
- package/dist/plugins/Monetization/EndOfPeriod.vue.js.map +0 -1
- package/dist/plugins/Monetization/EndOfPeriod.vue3.js +0 -8
- package/dist/plugins/Monetization/EndOfPeriod.vue3.js.map +0 -1
- package/dist/plugins/Monetization/LimitCard.css +0 -1
- package/dist/plugins/Monetization/LimitCard.vue.js +0 -10
- package/dist/plugins/Monetization/LimitCard.vue.js.map +0 -1
- package/dist/plugins/Monetization/LimitCard.vue3.js +0 -32
- package/dist/plugins/Monetization/LimitCard.vue3.js.map +0 -1
- package/dist/plugins/Monetization/MonetizationSidebar.vue.js +0 -138
- package/dist/plugins/Monetization/MonetizationSidebar.vue.js.map +0 -1
- package/dist/plugins/Monetization/RunStatus.css +0 -1
- package/dist/plugins/Monetization/RunStatus.vue.js +0 -10
- package/dist/plugins/Monetization/RunStatus.vue.js.map +0 -1
- package/dist/plugins/Monetization/RunStatus.vue3.js +0 -20
- package/dist/plugins/Monetization/RunStatus.vue3.js.map +0 -1
- package/dist/plugins/Monetization/UserCabinetCard.css +0 -1
- package/dist/plugins/Monetization/UserCabinetCard.vue.js +0 -10
- package/dist/plugins/Monetization/UserCabinetCard.vue.js.map +0 -1
- package/dist/plugins/Monetization/UserCabinetCard.vue3.js +0 -20
- package/dist/plugins/Monetization/UserCabinetCard.vue3.js.map +0 -1
- /package/dist/components/PlAgCellStatusTag/{PlAgCellStatusTag.css → PlAgCellStatusTag.style.css} +0 -0
- /package/dist/components/PlAgGridColumnManager/{PlAgGridColumnManager.css → PlAgGridColumnManager.vue.css} +0 -0
- /package/dist/components/PlAnnotations/components/{PlAnnotations.css → PlAnnotations.vue.css} +0 -0
- /package/dist/components/PlAnnotations/components/{PlAnnotationsModal.css → PlAnnotationsModal.vue.css} +0 -0
|
@@ -1,160 +1,162 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
1
|
+
import { uniqueId as e } from "../../lib/util/helpers/dist/strings.js";
|
|
2
|
+
import "../../lib/util/helpers/dist/index.js";
|
|
3
|
+
import t from "./Item.js";
|
|
4
|
+
import n from "./Summary.js";
|
|
5
|
+
import { Fragment as r, Teleport as i, computed as a, createBlock as o, createCommentVNode as s, createElementBlock as c, createElementVNode as l, createVNode as u, defineComponent as d, normalizeClass as f, openBlock as p, reactive as m, ref as h, renderList as g, renderSlot as _, unref as v, withCtx as y, withModifiers as b } from "vue";
|
|
6
|
+
import { ChunkedStreamReader as x, getFileNameFromHandle as S, getRawPlatformaInstance as C } from "@platforma-sdk/model";
|
|
7
|
+
import { PlBtnGhost as w, PlIcon16 as T, PlIcon24 as E, useClickOutside as D } from "@milaboratories/uikit";
|
|
8
|
+
import { ZipWriter as O } from "@zip.js/zip.js";
|
|
9
|
+
var k = /* @__PURE__ */ d({
|
|
10
|
+
__name: "PlBtnExportArchive",
|
|
11
|
+
props: {
|
|
12
|
+
fileExports: {},
|
|
13
|
+
suggestedFileName: {},
|
|
14
|
+
disabled: { type: Boolean },
|
|
15
|
+
filePickerTypes: {},
|
|
16
|
+
strategy: {},
|
|
17
|
+
debugFn: { type: Function }
|
|
18
|
+
},
|
|
19
|
+
setup(d) {
|
|
20
|
+
let k = d, A = m({
|
|
21
|
+
loading: !1,
|
|
22
|
+
name: "",
|
|
23
|
+
exports: void 0,
|
|
24
|
+
showExports: !1
|
|
25
|
+
}), j = (e, t) => {
|
|
26
|
+
let n = A.exports?.get(e);
|
|
27
|
+
n && A.exports?.set(e, {
|
|
28
|
+
...n,
|
|
29
|
+
...t
|
|
30
|
+
});
|
|
31
|
+
}, M = a(() => k.fileExports !== void 0 && !k.disabled), N = a(() => Array.from(A.exports?.values() ?? [])), P = a(() => ({
|
|
32
|
+
fileName: A.name,
|
|
33
|
+
current: N.value.reduce((e, t) => e + t.current, 0),
|
|
34
|
+
size: N.value.reduce((e, t) => e + t.size, 0),
|
|
35
|
+
status: N.value.some((e) => e.status === "in-progress") ? "in-progress" : N.value.every((e) => e.status === "completed") ? "completed" : "pending",
|
|
36
|
+
hasErrors: N.value.some((e) => e.status === "error")
|
|
37
|
+
})), F = async () => {
|
|
38
|
+
if (A.loading) {
|
|
39
|
+
A.showExports = !0;
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
if (!M.value || !k.fileExports) return;
|
|
43
|
+
let t = `${(/* @__PURE__ */ new Date()).toISOString().split("T")[0]}_Export.zip`, n = await window.showSaveFilePicker({
|
|
44
|
+
types: k.filePickerTypes || [{
|
|
45
|
+
description: "ZIP files",
|
|
46
|
+
accept: { "application/zip": [".zip"] }
|
|
47
|
+
}],
|
|
48
|
+
suggestedName: k.suggestedFileName || t
|
|
49
|
+
});
|
|
50
|
+
A.loading = !0, A.name = n.name, A.showExports = !0, A.exports = /* @__PURE__ */ new Map();
|
|
51
|
+
try {
|
|
52
|
+
let t = new O(await n.createWritable(), {
|
|
53
|
+
keepOrder: !0,
|
|
54
|
+
zip64: !0,
|
|
55
|
+
bufferedWrite: !1
|
|
56
|
+
});
|
|
57
|
+
try {
|
|
58
|
+
let n = [];
|
|
59
|
+
for (let t of k.fileExports) {
|
|
60
|
+
let { importHandle: r, blobHandle: i, fileName: a } = t, o = a ?? S(r), { handle: s, size: c } = i, l = e();
|
|
61
|
+
A.exports?.set(l, {
|
|
62
|
+
fileName: o,
|
|
63
|
+
current: 0,
|
|
64
|
+
size: c,
|
|
65
|
+
status: "pending"
|
|
66
|
+
});
|
|
67
|
+
let u = x.create({
|
|
68
|
+
fetchChunk: async ({ from: e, to: t }) => (k.debugFn && await k.debugFn(o), await C().blobDriver.getContent(s, {
|
|
69
|
+
from: e,
|
|
70
|
+
to: t
|
|
71
|
+
})),
|
|
72
|
+
totalSize: c,
|
|
73
|
+
onError: async (e) => (j(l, {
|
|
74
|
+
status: "error",
|
|
75
|
+
error: e
|
|
76
|
+
}), await new Promise((e) => setTimeout(e, 1e3)), "continue")
|
|
77
|
+
});
|
|
78
|
+
n.push({
|
|
79
|
+
id: l,
|
|
80
|
+
fileName: o,
|
|
81
|
+
size: c,
|
|
82
|
+
stream: u
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
let r = async (e) => {
|
|
86
|
+
let { id: n, fileName: r, size: i, stream: a } = e, o = (e) => {
|
|
87
|
+
let t = A.exports?.get(n);
|
|
88
|
+
t && A.exports?.set(n, {
|
|
89
|
+
...t,
|
|
90
|
+
...e
|
|
91
|
+
});
|
|
92
|
+
};
|
|
93
|
+
await t.add(r, a, {
|
|
94
|
+
bufferedWrite: !0,
|
|
95
|
+
onstart: () => {
|
|
96
|
+
o({ status: "in-progress" });
|
|
97
|
+
},
|
|
98
|
+
onprogress: (e) => {
|
|
99
|
+
o({
|
|
100
|
+
current: e,
|
|
101
|
+
status: "in-progress"
|
|
102
|
+
});
|
|
103
|
+
},
|
|
104
|
+
onend() {
|
|
105
|
+
o({
|
|
106
|
+
current: i,
|
|
107
|
+
status: "completed"
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
};
|
|
112
|
+
if (k.strategy === "parallel") await Promise.all(n.map(r));
|
|
113
|
+
else for (let e of n) await r(e);
|
|
114
|
+
} finally {
|
|
115
|
+
await t.close().catch((e) => {
|
|
116
|
+
console.error("Error closing zip", e);
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
} finally {
|
|
120
|
+
A.loading = !1;
|
|
121
|
+
}
|
|
122
|
+
}, I = h();
|
|
123
|
+
return D([I], () => {
|
|
124
|
+
A.showExports = !1;
|
|
125
|
+
}), (e, a) => (p(), c(r, null, [u(v(w), {
|
|
126
|
+
disabled: !M.value,
|
|
127
|
+
loading: A.loading,
|
|
128
|
+
class: f({ [e.$style["has-exports"]]: A.exports }),
|
|
129
|
+
onClick: b(F, ["stop"])
|
|
130
|
+
}, {
|
|
131
|
+
append: y(() => [u(v(E), {
|
|
132
|
+
class: f(e.$style.icon),
|
|
133
|
+
name: "download"
|
|
134
|
+
}, null, 8, ["class"])]),
|
|
135
|
+
default: y(() => [_(e.$slots, "default")]),
|
|
136
|
+
_: 3
|
|
137
|
+
}, 8, [
|
|
138
|
+
"disabled",
|
|
139
|
+
"loading",
|
|
140
|
+
"class"
|
|
141
|
+
]), (p(), o(i, { to: "body" }, [A.exports && A.showExports ? (p(), c("div", {
|
|
142
|
+
key: 0,
|
|
143
|
+
ref_key: "progressesRef",
|
|
144
|
+
ref: I,
|
|
145
|
+
class: f(e.$style.progresses)
|
|
146
|
+
}, [
|
|
147
|
+
u(v(T), {
|
|
148
|
+
class: f(e.$style.close),
|
|
149
|
+
name: "close",
|
|
150
|
+
onClick: a[0] ||= b((e) => A.showExports = !1, ["stop"])
|
|
151
|
+
}, null, 8, ["class"]),
|
|
152
|
+
u(n, { item: P.value }, null, 8, ["item"]),
|
|
153
|
+
l("div", { class: f([e.$style.itemsContainer, "pl-scrollable-y"]) }, [(p(!0), c(r, null, g(A.exports?.values(), (e) => (p(), o(t, {
|
|
154
|
+
key: e.fileName,
|
|
155
|
+
item: e
|
|
156
|
+
}, null, 8, ["item"]))), 128))], 2)
|
|
157
|
+
], 2)) : s("", !0)]))], 64));
|
|
158
|
+
}
|
|
156
159
|
});
|
|
157
|
-
export {
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
//# sourceMappingURL=PlBtnExportArchive.vue2.js.map
|
|
160
|
+
export { k as default };
|
|
161
|
+
|
|
162
|
+
//# sourceMappingURL=PlBtnExportArchive.vue2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlBtnExportArchive.vue2.js","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"],"names":["props","__props","data","reactive","updateExportsItem","id","partial","it","_a","_b","isReadyToExport","computed","items","archive","acc","item","exportRawTsvs","defaultFileName","defaultTypes","newHandle","writableStream","zip","ZipWriter","requests","entry","importHandle","blobHandle","customFileName","fileName","getFileNameFromHandle","handle","size","uniqueId","stream","ChunkedStreamReader","from","to","getRawPlatformaInstance","error","resolve","processRequest","request","update","current","progressesRef","ref","useClickOutside","_createVNode","_unref","PlBtnGhost","_normalizeClass","$style","PlIcon24","_renderSlot","_ctx","_createBlock","_Teleport","_createElementBlock","PlIcon16","_cache","_withModifiers","$event","Summary","_createElementVNode","_openBlock","_Fragment","Item"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PlBtnExportArchive.vue_vue_type_script_setup_true_lang.js","names":["$style"],"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":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import e from "../../_virtual/_plugin-vue_export-helper.js";
|
|
2
|
+
import t from "./Summary.vue2.js";
|
|
3
|
+
import n from "./Summary.style.js";
|
|
4
|
+
var r = /* @__PURE__ */ e(t, [["__cssModules", { $style: n }]]);
|
|
5
|
+
export { r as default };
|
|
6
|
+
|
|
7
|
+
//# sourceMappingURL=Summary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Summary.js","names":[],"sources":["../../../src/components/PlBtnExportArchive/Summary.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ExportItem } from \"./types\";\nimport { prettyBytes } from \"@milaboratories/helpers\";\n\ndefineProps<{\n item: ExportItem;\n}>();\n\nconst emit = defineEmits<{\n (e: \"cancel\"): void;\n}>();\n</script>\n\n<template>\n <div :class=\"$style.summary\">\n <div :class=\"$style.name\">\n {{ item.fileName }}<span v-if=\"false\" @click.stop=\"emit('cancel')\">[TODO: Cancel]</span>\n </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 :class=\"$style.details\">Pending</div>\n </div>\n</template>\n\n<style module>\n.summary {\n display: flex;\n flex-direction: column;\n margin-bottom: 8px;\n border-bottom: 1px solid rgba(255, 255, 255, 0.1);\n padding-bottom: 8px;\n --name-font-size: 14px;\n --details-font-size: 12px;\n}\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.details {\n font-size: var(--details-font-size);\n font-weight: 400;\n color: rgba(255, 255, 255, 0.6);\n}\n</style>\n"],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Summary.vue_vue_type_style_index_0_lang.module.js","names":[],"sources":["../../../src/components/PlBtnExportArchive/Summary.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ExportItem } from \"./types\";\nimport { prettyBytes } from \"@milaboratories/helpers\";\n\ndefineProps<{\n item: ExportItem;\n}>();\n\nconst emit = defineEmits<{\n (e: \"cancel\"): void;\n}>();\n</script>\n\n<template>\n <div :class=\"$style.summary\">\n <div :class=\"$style.name\">\n {{ item.fileName }}<span v-if=\"false\" @click.stop=\"emit('cancel')\">[TODO: Cancel]</span>\n </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 :class=\"$style.details\">Pending</div>\n </div>\n</template>\n\n<style module>\n.summary {\n display: flex;\n flex-direction: column;\n margin-bottom: 8px;\n border-bottom: 1px solid rgba(255, 255, 255, 0.1);\n padding-bottom: 8px;\n --name-font-size: 14px;\n --details-font-size: 12px;\n}\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.details {\n font-size: var(--details-font-size);\n font-weight: 400;\n color: rgba(255, 255, 255, 0.6);\n}\n</style>\n"],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._summary_s5gm9_2{--name-font-size:14px;--details-font-size:12px;border-bottom:1px solid #ffffff1a;flex-direction:column;margin-bottom:8px;padding-bottom:8px;display:flex}._name_s5gm9_12{white-space:nowrap;text-overflow:ellipsis;font-size:var(--name-font-size);font-weight:600;overflow:hidden}._details_s5gm9_19{font-size:var(--details-font-size);color:#fff9;font-weight:400}
|
|
@@ -1,42 +1,27 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
i[1] || (i[1] = l("span", null, "/", -1)),
|
|
25
|
-
l("span", null, a(r(o)(e.item.size, {})), 1)
|
|
26
|
-
], 2)) : e.item.status === "completed" ? (m(), n("div", {
|
|
27
|
-
key: 1,
|
|
28
|
-
class: s(t.$style.details)
|
|
29
|
-
}, [
|
|
30
|
-
i[2] || (i[2] = d(" Done ", -1)),
|
|
31
|
-
l("span", null, a(r(o)(e.item.size, {})), 1)
|
|
32
|
-
], 2)) : (m(), n("div", {
|
|
33
|
-
key: 2,
|
|
34
|
-
class: s(t.$style.details)
|
|
35
|
-
}, "Pending", 2))
|
|
36
|
-
], 2));
|
|
37
|
-
}
|
|
1
|
+
import { prettyBytes as e } from "../../lib/util/helpers/dist/prettyBytes.js";
|
|
2
|
+
import "../../lib/util/helpers/dist/index.js";
|
|
3
|
+
import { createCommentVNode as t, createElementBlock as n, createElementVNode as r, createTextVNode as i, defineComponent as a, normalizeClass as o, openBlock as s, toDisplayString as c, unref as l } from "vue";
|
|
4
|
+
var u = /* @__PURE__ */ a({
|
|
5
|
+
__name: "Summary",
|
|
6
|
+
props: { item: {} },
|
|
7
|
+
emits: ["cancel"],
|
|
8
|
+
setup(a, { emit: u }) {
|
|
9
|
+
return (u, d) => (s(), n("div", { class: o(u.$style.summary) }, [r("div", { class: o(u.$style.name) }, [i(c(a.item.fileName), 1), t("", !0)], 2), a.item.status === "in-progress" ? (s(), n("div", {
|
|
10
|
+
key: 0,
|
|
11
|
+
class: o(u.$style.details)
|
|
12
|
+
}, [
|
|
13
|
+
r("span", null, c(l(e)(a.item.current, {})), 1),
|
|
14
|
+
d[1] ||= r("span", null, "/", -1),
|
|
15
|
+
r("span", null, c(l(e)(a.item.size, {})), 1)
|
|
16
|
+
], 2)) : a.item.status === "completed" ? (s(), n("div", {
|
|
17
|
+
key: 1,
|
|
18
|
+
class: o(u.$style.details)
|
|
19
|
+
}, [d[2] ||= i(" Done ", -1), r("span", null, c(l(e)(a.item.size, {})), 1)], 2)) : (s(), n("div", {
|
|
20
|
+
key: 2,
|
|
21
|
+
class: o(u.$style.details)
|
|
22
|
+
}, "Pending", 2))], 2));
|
|
23
|
+
}
|
|
38
24
|
});
|
|
39
|
-
export {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
//# sourceMappingURL=Summary.vue2.js.map
|
|
25
|
+
export { u as default };
|
|
26
|
+
|
|
27
|
+
//# sourceMappingURL=Summary.vue2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Summary.
|
|
1
|
+
{"version":3,"file":"Summary.vue_vue_type_script_setup_true_lang.js","names":["$style"],"sources":["../../../src/components/PlBtnExportArchive/Summary.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ExportItem } from \"./types\";\nimport { prettyBytes } from \"@milaboratories/helpers\";\n\ndefineProps<{\n item: ExportItem;\n}>();\n\nconst emit = defineEmits<{\n (e: \"cancel\"): void;\n}>();\n</script>\n\n<template>\n <div :class=\"$style.summary\">\n <div :class=\"$style.name\">\n {{ item.fileName }}<span v-if=\"false\" @click.stop=\"emit('cancel')\">[TODO: Cancel]</span>\n </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 :class=\"$style.details\">Pending</div>\n </div>\n</template>\n\n<style module>\n.summary {\n display: flex;\n flex-direction: column;\n margin-bottom: 8px;\n border-bottom: 1px solid rgba(255, 255, 255, 0.1);\n padding-bottom: 8px;\n --name-font-size: 14px;\n --details-font-size: 12px;\n}\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.details {\n font-size: var(--details-font-size);\n font-weight: 400;\n color: rgba(255, 255, 255, 0.6);\n}\n</style>\n"],"mappings":";;;;;;;;yBAcE,EAaM,OAAA,EAbA,OAAK,EAAEA,EAAAA,OAAO,QAAO,EAAA,EAAA,CACzB,EAEM,OAAA,EAFA,OAAK,EAAEA,EAAAA,OAAO,KAAI,EAAA,EAAA,CAAA,EAAA,EACnB,EAAA,KAAK,SAAQ,EAAA,EAAA,EAAA,EAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAEP,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,KAAA,GAAA,EAErC,EAAiD,OAAA;;GAApC,OAAK,EAAEA,EAAAA,OAAO,QAAO;KAAE,WAAO,EAAA,EAAA,EAAA,EAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlTableFastSearch.js","names":[],"sources":["../../../src/components/PlTableFastSearch/PlTableFastSearch.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { PlSearchField } from \"@milaboratories/uikit\";\n\nconst model = defineModel<string>({ required: true });\n</script>\n\n<template>\n <PlSearchField v-model=\"model\" clearable placeholder=\"Search...\">\n <template #helper>\n <b>How table search works:</b>\n <br />\n <ul>\n <li>\n <b>Exact match only.</b><br />\n No partials, wildcards, ranges, or regex.\n </li>\n <li>\n <b>Scope:</b> Searches all visible columns. To include a column, make it visible in\n Columns.\n </li>\n <li>\n <b>Text columns:</b> Exact string equality. Characters must match exactly (including case,\n spaces, and punctuation).\n </li>\n <li>\n <b>Number columns:</b> Exact numeric equality. 71 matches 71 and 71.0; it does not match\n 715 or 0.71/0.85.\n </li>\n </ul>\n <b>Examples:</b>\n <br />\n <ul>\n <li>CASSLDRGTEAFF → shows rows where any visible column equals that full string.</li>\n <li>85 → matches 85 / 85.0, not 0.85 or 850.</li>\n </ul>\n </template>\n </PlSearchField>\n</template>\n"],"mappings":""}
|
|
@@ -1,5 +1,41 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { createBlock as e, createElementVNode as t, createTextVNode as n, defineComponent as r, openBlock as i, unref as a, useModel as o, withCtx as s } from "vue";
|
|
2
|
+
import { PlSearchField as c } from "@milaboratories/uikit";
|
|
3
|
+
var l = /* @__PURE__ */ r({
|
|
4
|
+
__name: "PlTableFastSearch",
|
|
5
|
+
props: {
|
|
6
|
+
modelValue: { required: !0 },
|
|
7
|
+
modelModifiers: {}
|
|
8
|
+
},
|
|
9
|
+
emits: ["update:modelValue"],
|
|
10
|
+
setup(r) {
|
|
11
|
+
let l = o(r, "modelValue");
|
|
12
|
+
return (r, o) => (i(), e(a(c), {
|
|
13
|
+
modelValue: l.value,
|
|
14
|
+
"onUpdate:modelValue": o[0] ||= (e) => l.value = e,
|
|
15
|
+
clearable: "",
|
|
16
|
+
placeholder: "Search..."
|
|
17
|
+
}, {
|
|
18
|
+
helper: s(() => [...o[1] ||= [
|
|
19
|
+
t("b", null, "How table search works:", -1),
|
|
20
|
+
t("br", null, null, -1),
|
|
21
|
+
t("ul", null, [
|
|
22
|
+
t("li", null, [
|
|
23
|
+
t("b", null, "Exact match only."),
|
|
24
|
+
t("br"),
|
|
25
|
+
n(" No partials, wildcards, ranges, or regex. ")
|
|
26
|
+
]),
|
|
27
|
+
t("li", null, [t("b", null, "Scope:"), n(" Searches all visible columns. To include a column, make it visible in Columns. ")]),
|
|
28
|
+
t("li", null, [t("b", null, "Text columns:"), n(" Exact string equality. Characters must match exactly (including case, spaces, and punctuation). ")]),
|
|
29
|
+
t("li", null, [t("b", null, "Number columns:"), n(" Exact numeric equality. 71 matches 71 and 71.0; it does not match 715 or 0.71/0.85. ")])
|
|
30
|
+
], -1),
|
|
31
|
+
t("b", null, "Examples:", -1),
|
|
32
|
+
t("br", null, null, -1),
|
|
33
|
+
t("ul", null, [t("li", null, "CASSLDRGTEAFF → shows rows where any visible column equals that full string."), t("li", null, "85 → matches 85 / 85.0, not 0.85 or 850.")], -1)
|
|
34
|
+
]]),
|
|
35
|
+
_: 1
|
|
36
|
+
}, 8, ["modelValue"]));
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
export { l as default };
|
|
40
|
+
|
|
41
|
+
//# sourceMappingURL=PlTableFastSearch.vue2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlTableFastSearch.
|
|
1
|
+
{"version":3,"file":"PlTableFastSearch.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/PlTableFastSearch/PlTableFastSearch.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { PlSearchField } from \"@milaboratories/uikit\";\n\nconst model = defineModel<string>({ required: true });\n</script>\n\n<template>\n <PlSearchField v-model=\"model\" clearable placeholder=\"Search...\">\n <template #helper>\n <b>How table search works:</b>\n <br />\n <ul>\n <li>\n <b>Exact match only.</b><br />\n No partials, wildcards, ranges, or regex.\n </li>\n <li>\n <b>Scope:</b> Searches all visible columns. To include a column, make it visible in\n Columns.\n </li>\n <li>\n <b>Text columns:</b> Exact string equality. Characters must match exactly (including case,\n spaces, and punctuation).\n </li>\n <li>\n <b>Number columns:</b> Exact numeric equality. 71 matches 71 and 71.0; it does not match\n 715 or 0.71/0.85.\n </li>\n </ul>\n <b>Examples:</b>\n <br />\n <ul>\n <li>CASSLDRGTEAFF → shows rows where any visible column equals that full string.</li>\n <li>85 → matches 85 / 85.0, not 0.85 or 850.</li>\n </ul>\n </template>\n </PlSearchField>\n</template>\n"],"mappings":";;;;;;;;;;EAGA,IAAM,IAAQ,EAAmB,GAAA,aAAoB;yBAInD,EA6BgB,EAAA,EAAA,EAAA;eA7BQ,EAAA;4CAAK,QAAA;GAAE,WAAA;GAAU,aAAY;;GACxC,QAAM,QACe,CAAA,GAAA,AAAA,EAAA,OAAA;IAA9B,EAA8B,KAAA,MAA3B,2BAAuB,GAAA;IAC1B,EAAM,MAAA,MAAA,MAAA,GAAA;IACN,EAiBK,MAAA,MAAA;KAhBH,EAGK,MAAA,MAAA;MAFH,EAAwB,KAAA,MAArB,oBAAiB;MAAI,EAAM,KAAA;QAAA,8CAEhC;;KACA,EAGK,MAAA,MAAA,CAFH,EAAa,KAAA,MAAV,SAAM,EAAA,EAAI,mFAEf,CAAA,CAAA;KACA,EAGK,MAAA,MAAA,CAFH,EAAoB,KAAA,MAAjB,gBAAa,EAAA,EAAI,oGAEtB,CAAA,CAAA;KACA,EAGK,MAAA,MAAA,CAFH,EAAsB,KAAA,MAAnB,kBAAe,EAAA,EAAI,wFAExB,CAAA,CAAA;;IAEF,EAAgB,KAAA,MAAb,aAAS,GAAA;IACZ,EAAM,MAAA,MAAA,MAAA,GAAA;IACN,EAGK,MAAA,MAAA,CAFH,EAAqF,MAAA,MAAjF,+EAA4E,EAChF,EAAiD,MAAA,MAA7C,2CAAwC,CAAA,EAAA,GAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import e from "../../_virtual/_plugin-vue_export-helper.js";
|
|
2
|
+
import t from "./PlTableFiltersV2.vue2.js";
|
|
3
|
+
import n from "./PlTableFiltersV2.style.js";
|
|
4
|
+
var r = /* @__PURE__ */ e(t, [["__cssModules", { $style: n }]]);
|
|
5
|
+
export { r as default };
|
|
6
|
+
|
|
7
|
+
//# sourceMappingURL=PlTableFiltersV2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlTableFiltersV2.js","names":[],"sources":["../../../src/components/PlTableFilters/PlTableFiltersV2.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type {\n PTableColumnSpec,\n PTableColumnId,\n ListOptionBase,\n PlDataTableFiltersWithMeta,\n} from \"@platforma-sdk/model\";\nimport {\n canonicalizeJson,\n Annotation,\n Domain,\n readAnnotation,\n readDomain,\n parseJson,\n getAxisId,\n} from \"@platforma-sdk/model\";\nimport { computed, onMounted, ref } from \"vue\";\nimport { PlBtnGhost, PlSlideModal, usePlBlockPageTitleTeleportTarget } from \"@milaboratories/uikit\";\nimport {\n PlAdvancedFilter,\n PlAdvancedFilterComponent,\n PlAdvancedFilterSupportedFilters,\n type PlAdvancedFilterItem,\n} from \"../PlAdvancedFilter\";\nimport type { PlAdvancedFilterColumnId } from \"../PlAdvancedFilter/types\";\n\nconst model = defineModel<PlDataTableFiltersWithMeta>({ required: true });\nconst props = defineProps<{\n columns: PTableColumnSpec[];\n}>();\n\n// Teleport for \"Filters\" button\nconst mounted = ref(false);\nonMounted(() => {\n mounted.value = true;\n});\nconst teleportTarget = usePlBlockPageTitleTeleportTarget(\"PlTableFiltersV2\");\nconst showManager = ref(false);\n\n// Check if any filters are active\nconst filtersOn = computed(() => {\n return model.value.filters.length > 0;\n});\n\n// Convert PTableColumnSpec to PlAdvancedFilterColumnId\nfunction makeFilterColumnId(spec: PTableColumnSpec): PlAdvancedFilterColumnId {\n const id: PTableColumnId =\n spec.type === \"axis\"\n ? { type: \"axis\", id: getAxisId(spec.spec) }\n : { type: \"column\", id: spec.id };\n return canonicalizeJson<PTableColumnId>(id) as unknown as PlAdvancedFilterColumnId;\n}\n\n// Convert PTableColumnSpec[] to PlAdvancedFilterItem[]\nconst items = computed<PlAdvancedFilterItem[]>(() => {\n return props.columns.map((col, idx) => {\n const id = makeFilterColumnId(col);\n const label =\n readAnnotation(col.spec, Annotation.Label)?.trim() ?? `Unlabeled ${col.type} ${idx}`;\n const alphabet =\n readDomain(col.spec, Domain.Alphabet) ?? readAnnotation(col.spec, Annotation.Alphabet);\n return {\n id,\n label,\n spec: col.spec,\n alphabet: alphabet ?? undefined,\n };\n });\n});\n\n// Supported filters (same set as FilterSidebar)\nconst supportedFilters = [\n \"isNA\",\n \"isNotNA\",\n \"greaterThan\",\n \"greaterThanOrEqual\",\n \"lessThan\",\n \"lessThanOrEqual\",\n \"patternEquals\",\n \"patternNotEquals\",\n \"patternContainSubsequence\",\n \"patternNotContainSubsequence\",\n \"patternMatchesRegularExpression\",\n \"patternFuzzyContainSubsequence\",\n \"equal\",\n \"notEqual\",\n] as (typeof PlAdvancedFilterSupportedFilters)[number][];\n\n// getSuggestOptions - provide discrete values from column annotations\nfunction getSuggestOptions(params: {\n columnId: PlAdvancedFilterColumnId;\n axisIdx?: number;\n searchStr: string;\n searchType: \"value\" | \"label\";\n}): ListOptionBase<string | number>[] {\n const item = items.value.find((i) => i.id === params.columnId);\n if (!item) return [];\n\n const discreteValuesStr = readAnnotation(item.spec, Annotation.DiscreteValues);\n if (!discreteValuesStr) return [];\n\n try {\n const values = parseJson<(string | number)[]>(discreteValuesStr);\n return values\n .filter((v) => {\n if (!params.searchStr) return true;\n const str = String(v).toLowerCase();\n return str.includes(params.searchStr.toLowerCase());\n })\n .map((v) => ({ value: v, label: String(v) }));\n } catch {\n return [];\n }\n}\n</script>\n\n<template>\n <Teleport v-if=\"mounted && teleportTarget\" :to=\"teleportTarget\">\n <PlBtnGhost :icon=\"filtersOn ? 'filter-on' : 'filter'\" @click.stop=\"showManager = true\">\n Filters\n </PlBtnGhost>\n </Teleport>\n\n <PlSlideModal v-model=\"showManager\" :close-on-outside-click=\"false\">\n <template #title>Manage Filters</template>\n\n <div v-if=\"items.length > 0\" :class=\"$style.root\">\n <PlAdvancedFilterComponent\n v-model:filters=\"model as PlAdvancedFilter\"\n :items=\"items\"\n :supported-filters=\"supportedFilters\"\n :get-suggest-options=\"getSuggestOptions\"\n :enable-dnd=\"false\"\n :enable-add-group-button=\"true\"\n />\n </div>\n <div v-else>No filters applicable</div>\n </PlSlideModal>\n</template>\n\n<style module>\n.root {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n</style>\n"],"mappings":""}
|