@knime/product-features 0.2.3 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_plugin-vue_export-helper-pcqpp-6-.js +10 -0
- package/dist/_plugin-vue_export-helper-pcqpp-6-.js.map +1 -0
- package/dist/ai.css +197 -0
- package/dist/ai.js +196 -0
- package/dist/ai.js.map +1 -0
- package/dist/dataTransfer.css +161 -0
- package/dist/dataTransfer.js +1258 -0
- package/dist/dataTransfer.js.map +1 -0
- package/dist/format-ra_vlnN7.js +238 -0
- package/dist/format-ra_vlnN7.js.map +1 -0
- package/dist/nodes.css +0 -4564
- package/dist/nodes.js +4 -11252
- package/dist/nodes.js.map +1 -1
- package/dist/rfcErrors.css +18 -0
- package/dist/rfcErrors.js +223 -0
- package/dist/rfcErrors.js.map +1 -0
- package/dist/src/ai/KdsPromptInput/InlineStatusBanner.vue.d.ts +11 -0
- package/dist/src/ai/KdsPromptInput/InlineStatusBanner.vue.d.ts.map +1 -0
- package/dist/src/ai/KdsPromptInput/KdsPromptInput.vue.d.ts +22 -0
- package/dist/src/ai/KdsPromptInput/KdsPromptInput.vue.d.ts.map +1 -0
- package/dist/src/ai/KdsPromptInput/enums.d.ts +6 -0
- package/dist/src/ai/KdsPromptInput/enums.d.ts.map +1 -0
- package/dist/src/ai/KdsPromptInput/index.d.ts +4 -0
- package/dist/src/ai/KdsPromptInput/index.d.ts.map +1 -0
- package/dist/src/ai/KdsPromptInput/types.d.ts +59 -0
- package/dist/src/ai/KdsPromptInput/types.d.ts.map +1 -0
- package/dist/src/ai/index.d.ts +3 -0
- package/dist/src/ai/index.d.ts.map +1 -0
- package/dist/src/dataTransfer/download/index.d.ts +2 -0
- package/dist/src/dataTransfer/download/index.d.ts.map +1 -0
- package/dist/src/dataTransfer/download/ui/DownloadProgressPanel.vue.d.ts +26 -0
- package/dist/src/dataTransfer/download/ui/DownloadProgressPanel.vue.d.ts.map +1 -0
- package/dist/src/dataTransfer/download/ui/DownloadProgressPanelItem.vue.d.ts +15 -0
- package/dist/src/dataTransfer/download/ui/DownloadProgressPanelItem.vue.d.ts.map +1 -0
- package/dist/src/dataTransfer/download/ui/index.d.ts +3 -0
- package/dist/src/dataTransfer/download/ui/index.d.ts.map +1 -0
- package/dist/src/dataTransfer/download/ui/types.d.ts +8 -0
- package/dist/src/dataTransfer/download/ui/types.d.ts.map +1 -0
- package/dist/src/dataTransfer/download/useDownloadArtifact.d.ts +81 -0
- package/dist/src/dataTransfer/download/useDownloadArtifact.d.ts.map +1 -0
- package/dist/src/dataTransfer/index.d.ts +5 -0
- package/dist/src/dataTransfer/index.d.ts.map +1 -0
- package/dist/src/dataTransfer/shared/httpClient/constants.d.ts +2 -0
- package/dist/src/dataTransfer/shared/httpClient/constants.d.ts.map +1 -0
- package/dist/src/dataTransfer/shared/httpClient/createHttpClient.d.ts +5 -0
- package/dist/src/dataTransfer/shared/httpClient/createHttpClient.d.ts.map +1 -0
- package/dist/src/dataTransfer/shared/httpClient/index.d.ts +3 -0
- package/dist/src/dataTransfer/shared/httpClient/index.d.ts.map +1 -0
- package/dist/src/dataTransfer/shared/ui/CollapsiblePanel/CollapsiblePanel.vue.d.ts +29 -0
- package/dist/src/dataTransfer/shared/ui/CollapsiblePanel/CollapsiblePanel.vue.d.ts.map +1 -0
- package/dist/src/dataTransfer/shared/ui/CollapsiblePanel/index.d.ts +3 -0
- package/dist/src/dataTransfer/shared/ui/CollapsiblePanel/index.d.ts.map +1 -0
- package/dist/src/dataTransfer/shared/ui/CollapsiblePanel/types.d.ts +5 -0
- package/dist/src/dataTransfer/shared/ui/CollapsiblePanel/types.d.ts.map +1 -0
- package/dist/src/dataTransfer/shared/ui/CollapsiblePanel/useIconFlipper.d.ts +10 -0
- package/dist/src/dataTransfer/shared/ui/CollapsiblePanel/useIconFlipper.d.ts.map +1 -0
- package/dist/src/dataTransfer/shared/ui/ProgressItem/ProgressItem.vue.d.ts +4 -0
- package/dist/src/dataTransfer/shared/ui/ProgressItem/ProgressItem.vue.d.ts.map +1 -0
- package/dist/src/dataTransfer/shared/ui/ProgressItem/index.d.ts +3 -0
- package/dist/src/dataTransfer/shared/ui/ProgressItem/index.d.ts.map +1 -0
- package/dist/src/dataTransfer/shared/ui/ProgressItem/types.d.ts +22 -0
- package/dist/src/dataTransfer/shared/ui/ProgressItem/types.d.ts.map +1 -0
- package/dist/src/dataTransfer/shared/ui/ProgressList/ProgressList.vue.d.ts +18 -0
- package/dist/src/dataTransfer/shared/ui/ProgressList/ProgressList.vue.d.ts.map +1 -0
- package/dist/src/dataTransfer/shared/ui/ProgressList/index.d.ts +2 -0
- package/dist/src/dataTransfer/shared/ui/ProgressList/index.d.ts.map +1 -0
- package/dist/src/dataTransfer/shared/ui/index.d.ts +4 -0
- package/dist/src/dataTransfer/shared/ui/index.d.ts.map +1 -0
- package/dist/src/dataTransfer/upload/manager/index.d.ts +105 -0
- package/dist/src/dataTransfer/upload/manager/index.d.ts.map +1 -0
- package/dist/src/dataTransfer/upload/ui/UploadProgressPanel.vue.d.ts +18 -0
- package/dist/src/dataTransfer/upload/ui/UploadProgressPanel.vue.d.ts.map +1 -0
- package/dist/src/dataTransfer/upload/ui/UploadProgressPanelItem.vue.d.ts +15 -0
- package/dist/src/dataTransfer/upload/ui/UploadProgressPanelItem.vue.d.ts.map +1 -0
- package/dist/src/dataTransfer/upload/ui/index.d.ts +5 -0
- package/dist/src/dataTransfer/upload/ui/index.d.ts.map +1 -0
- package/dist/src/dataTransfer/upload/ui/types.d.ts +50 -0
- package/dist/src/dataTransfer/upload/ui/types.d.ts.map +1 -0
- package/dist/src/dataTransfer/upload/ui/useUploadManager.d.ts +36 -0
- package/dist/src/dataTransfer/upload/ui/useUploadManager.d.ts.map +1 -0
- package/dist/src/dataTransfer/upload/useFileUpload.d.ts +101 -0
- package/dist/src/dataTransfer/upload/useFileUpload.d.ts.map +1 -0
- package/dist/src/rfcErrors/RFCErrorToastTemplate.vue.d.ts +13 -0
- package/dist/src/rfcErrors/RFCErrorToastTemplate.vue.d.ts.map +1 -0
- package/dist/src/rfcErrors/index.d.ts +13 -0
- package/dist/src/rfcErrors/index.d.ts.map +1 -0
- package/dist/src/rfcErrors/serializeRFCErrorData.d.ts +3 -0
- package/dist/src/rfcErrors/serializeRFCErrorData.d.ts.map +1 -0
- package/dist/src/rfcErrors/types.d.ts +37 -0
- package/dist/src/rfcErrors/types.d.ts.map +1 -0
- package/dist/src/toasts/Toast/Toast.vue.d.ts +12 -0
- package/dist/src/toasts/Toast/Toast.vue.d.ts.map +1 -0
- package/dist/src/toasts/Toast/ToastButton.vue.d.ts +36 -0
- package/dist/src/toasts/Toast/ToastButton.vue.d.ts.map +1 -0
- package/dist/src/toasts/Toast/enums.d.ts +8 -0
- package/dist/src/toasts/Toast/enums.d.ts.map +1 -0
- package/dist/src/toasts/Toast/index.d.ts +3 -0
- package/dist/src/toasts/Toast/index.d.ts.map +1 -0
- package/dist/src/toasts/Toast/types.d.ts +83 -0
- package/dist/src/toasts/Toast/types.d.ts.map +1 -0
- package/dist/src/toasts/ToastStack/ToastStack.vue.d.ts +4 -0
- package/dist/src/toasts/ToastStack/ToastStack.vue.d.ts.map +1 -0
- package/dist/src/toasts/ToastStack/index.d.ts +3 -0
- package/dist/src/toasts/ToastStack/index.d.ts.map +1 -0
- package/dist/src/toasts/ToastStack/injectionKeys.d.ts +3 -0
- package/dist/src/toasts/ToastStack/injectionKeys.d.ts.map +1 -0
- package/dist/src/toasts/ToastStack/types.d.ts +5 -0
- package/dist/src/toasts/ToastStack/types.d.ts.map +1 -0
- package/dist/src/toasts/index.d.ts +7 -0
- package/dist/src/toasts/index.d.ts.map +1 -0
- package/dist/src/toasts/toastService/demo/someConfigFile.d.ts +5 -0
- package/dist/src/toasts/toastService/demo/someConfigFile.d.ts.map +1 -0
- package/dist/src/toasts/toastService/index.d.ts +4 -0
- package/dist/src/toasts/toastService/index.d.ts.map +1 -0
- package/dist/src/toasts/toastService/toastService.d.ts +78 -0
- package/dist/src/toasts/toastService/toastService.d.ts.map +1 -0
- package/dist/src/toasts/toastService/types.d.ts +46 -0
- package/dist/src/toasts/toastService/types.d.ts.map +1 -0
- package/dist/src/versions/CreateVersionForm/CreateVersionForm.vue.d.ts +16 -0
- package/dist/src/versions/CreateVersionForm/CreateVersionForm.vue.d.ts.map +1 -0
- package/dist/src/versions/CreateVersionForm/index.d.ts +3 -0
- package/dist/src/versions/CreateVersionForm/index.d.ts.map +1 -0
- package/dist/src/versions/CreateVersionForm/types.d.ts +4 -0
- package/dist/src/versions/CreateVersionForm/types.d.ts.map +1 -0
- package/dist/src/versions/VersionHistory/CurrentState.vue.d.ts +20 -0
- package/dist/src/versions/VersionHistory/CurrentState.vue.d.ts.map +1 -0
- package/dist/src/versions/VersionHistory/HistoryEvent.vue.d.ts +23 -0
- package/dist/src/versions/VersionHistory/HistoryEvent.vue.d.ts.map +1 -0
- package/dist/src/versions/VersionHistory/HistoryEventAuthor.vue.d.ts +7 -0
- package/dist/src/versions/VersionHistory/HistoryEventAuthor.vue.d.ts.map +1 -0
- package/dist/src/versions/VersionHistory/HistoryEventFooter.vue.d.ts +8 -0
- package/dist/src/versions/VersionHistory/HistoryEventFooter.vue.d.ts.map +1 -0
- package/dist/src/versions/VersionHistory/VersionHistory.vue.d.ts +20 -0
- package/dist/src/versions/VersionHistory/VersionHistory.vue.d.ts.map +1 -0
- package/dist/src/versions/VersionHistory/VersionItem.vue.d.ts +20 -0
- package/dist/src/versions/VersionHistory/VersionItem.vue.d.ts.map +1 -0
- package/dist/src/versions/VersionHistory/VersionLabel.vue.d.ts +144 -0
- package/dist/src/versions/VersionHistory/VersionLabel.vue.d.ts.map +1 -0
- package/dist/src/versions/VersionHistory/VersionLimitInfo.vue.d.ts +9 -0
- package/dist/src/versions/VersionHistory/VersionLimitInfo.vue.d.ts.map +1 -0
- package/dist/src/versions/VersionHistory/constants.d.ts +4 -0
- package/dist/src/versions/VersionHistory/constants.d.ts.map +1 -0
- package/dist/src/versions/VersionHistory/index.d.ts +4 -0
- package/dist/src/versions/VersionHistory/index.d.ts.map +1 -0
- package/dist/src/versions/VersionHistory/mock-data/index.d.ts +11 -0
- package/dist/src/versions/VersionHistory/mock-data/index.d.ts.map +1 -0
- package/dist/src/versions/VersionHistory/mock-data/savepoints.d.ts +5 -0
- package/dist/src/versions/VersionHistory/mock-data/savepoints.d.ts.map +1 -0
- package/dist/src/versions/VersionHistory/mock-data/versionHistory.d.ts +7 -0
- package/dist/src/versions/VersionHistory/mock-data/versionHistory.d.ts.map +1 -0
- package/dist/src/versions/VersionHistory/types.d.ts +63 -0
- package/dist/src/versions/VersionHistory/types.d.ts.map +1 -0
- package/dist/src/versions/index.d.ts +5 -0
- package/dist/src/versions/index.d.ts.map +1 -0
- package/dist/toasts.css +107 -0
- package/dist/toasts.js +492 -0
- package/dist/toasts.js.map +1 -0
- package/dist/versions.css +114 -0
- package/dist/versions.js +597 -0
- package/dist/versions.js.map +1 -0
- package/package.json +36 -8
- package/dist/add-user-BBT39sTb-BBT39sTb.js +0 -23
- package/dist/add-user-BBT39sTb-BBT39sTb.js.map +0 -1
- package/dist/ai-general-xv5Ym88e-xv5Ym88e.js +0 -23
- package/dist/ai-general-xv5Ym88e-xv5Ym88e.js.map +0 -1
- package/dist/annotation-mode-C0YL12XP-C0YL12XP.js +0 -23
- package/dist/annotation-mode-C0YL12XP-C0YL12XP.js.map +0 -1
- package/dist/arrow-down-D8Q9vZG_-D8Q9vZG_.js +0 -23
- package/dist/arrow-down-D8Q9vZG_-D8Q9vZG_.js.map +0 -1
- package/dist/arrow-up-DJlZjTYZ-DJlZjTYZ.js +0 -23
- package/dist/arrow-up-DJlZjTYZ-DJlZjTYZ.js.map +0 -1
- package/dist/arrows-expand-eXIczgyQ-eXIczgyQ.js +0 -23
- package/dist/arrows-expand-eXIczgyQ-eXIczgyQ.js.map +0 -1
- package/dist/arrows-move-CDiEl6Ry-CDiEl6Ry.js +0 -23
- package/dist/arrows-move-CDiEl6Ry-CDiEl6Ry.js.map +0 -1
- package/dist/arrows-order-DMoJXS-I-DMoJXS-I.js +0 -23
- package/dist/arrows-order-DMoJXS-I-DMoJXS-I.js.map +0 -1
- package/dist/audio-datatype-DyzJTMxb-DyzJTMxb.js +0 -23
- package/dist/audio-datatype-DyzJTMxb-DyzJTMxb.js.map +0 -1
- package/dist/auto-configure-BU7AIhL7-BU7AIhL7.js +0 -23
- package/dist/auto-configure-BU7AIhL7-BU7AIhL7.js.map +0 -1
- package/dist/back-D1kA9zuH-D1kA9zuH.js +0 -23
- package/dist/back-D1kA9zuH-D1kA9zuH.js.map +0 -1
- package/dist/binary-object-datatype-DHZPEEoV-DHZPEEoV.js +0 -23
- package/dist/binary-object-datatype-DHZPEEoV-DHZPEEoV.js.map +0 -1
- package/dist/bit-byte-vector-datatype-XJ0yjm_4-XJ0yjm_4.js +0 -23
- package/dist/bit-byte-vector-datatype-XJ0yjm_4-XJ0yjm_4.js.map +0 -1
- package/dist/bold-C8dRggXe-C8dRggXe.js +0 -23
- package/dist/bold-C8dRggXe-C8dRggXe.js.map +0 -1
- package/dist/boolean-datatype-B0SBV35e-B0SBV35e.js +0 -27
- package/dist/boolean-datatype-B0SBV35e-B0SBV35e.js.map +0 -1
- package/dist/calendar-B6v1nLjF-B6v1nLjF.js +0 -23
- package/dist/calendar-B6v1nLjF-B6v1nLjF.js.map +0 -1
- package/dist/case-sensitive-CHP-__99-CHP-__99.js +0 -22
- package/dist/case-sensitive-CHP-__99-CHP-__99.js.map +0 -1
- package/dist/cell-renderer-DGnkQWTq-DGnkQWTq.js +0 -23
- package/dist/cell-renderer-DGnkQWTq-DGnkQWTq.js.map +0 -1
- package/dist/center-aligned--zRFP8Lf--zRFP8Lf.js +0 -22
- package/dist/center-aligned--zRFP8Lf--zRFP8Lf.js.map +0 -1
- package/dist/checkmark-DOn23D5R-DOn23D5R.js +0 -23
- package/dist/checkmark-DOn23D5R-DOn23D5R.js.map +0 -1
- package/dist/chevron-down-BsSG_C_8-BsSG_C_8.js +0 -23
- package/dist/chevron-down-BsSG_C_8-BsSG_C_8.js.map +0 -1
- package/dist/chevron-left-BKFnSetN-BKFnSetN.js +0 -23
- package/dist/chevron-left-BKFnSetN-BKFnSetN.js.map +0 -1
- package/dist/chevron-left-double-D-EEhZoy-D-EEhZoy.js +0 -23
- package/dist/chevron-left-double-D-EEhZoy-D-EEhZoy.js.map +0 -1
- package/dist/chevron-right-CozOeJxa-CozOeJxa.js +0 -23
- package/dist/chevron-right-CozOeJxa-CozOeJxa.js.map +0 -1
- package/dist/chevron-right-double-BgfwXKBg-BgfwXKBg.js +0 -23
- package/dist/chevron-right-double-BgfwXKBg-BgfwXKBg.js.map +0 -1
- package/dist/chevron-up-FA-c_L5N-FA-c_L5N.js +0 -23
- package/dist/chevron-up-FA-c_L5N-FA-c_L5N.js.map +0 -1
- package/dist/circle-error-CwUp2gKh-CwUp2gKh.js +0 -23
- package/dist/circle-error-CwUp2gKh-CwUp2gKh.js.map +0 -1
- package/dist/circle-info-CcCjmOUH-CcCjmOUH.js +0 -24
- package/dist/circle-info-CcCjmOUH-CcCjmOUH.js.map +0 -1
- package/dist/circle-question-TFLpel6L-TFLpel6L.js +0 -23
- package/dist/circle-question-TFLpel6L-TFLpel6L.js.map +0 -1
- package/dist/circle-success-CGkhxpZE-CGkhxpZE.js +0 -23
- package/dist/circle-success-CGkhxpZE-CGkhxpZE.js.map +0 -1
- package/dist/circle-unchecked-DOoOn6iz-DOoOn6iz.js +0 -23
- package/dist/circle-unchecked-DOoOn6iz-DOoOn6iz.js.map +0 -1
- package/dist/cloud-download-CstHUDZv-CstHUDZv.js +0 -23
- package/dist/cloud-download-CstHUDZv-CstHUDZv.js.map +0 -1
- package/dist/cloud-knime-CpZfWe3J-CpZfWe3J.js +0 -23
- package/dist/cloud-knime-CpZfWe3J-CpZfWe3J.js.map +0 -1
- package/dist/cloud-pending-changes-CWBUkOnb-CWBUkOnb.js +0 -23
- package/dist/cloud-pending-changes-CWBUkOnb-CWBUkOnb.js.map +0 -1
- package/dist/cloud-synced-DlT_4y5Q-DlT_4y5Q.js +0 -23
- package/dist/cloud-synced-DlT_4y5Q-DlT_4y5Q.js.map +0 -1
- package/dist/cloud-upload-DQvu_3cc-DQvu_3cc.js +0 -23
- package/dist/cloud-upload-DQvu_3cc-DQvu_3cc.js.map +0 -1
- package/dist/cloud-workflow-Bo_4KHLP-Bo_4KHLP.js +0 -23
- package/dist/cloud-workflow-Bo_4KHLP-Bo_4KHLP.js.map +0 -1
- package/dist/code-block-DrOaCM3g-DrOaCM3g.js +0 -23
- package/dist/code-block-DrOaCM3g-DrOaCM3g.js.map +0 -1
- package/dist/collection-BBXRVj4b-BBXRVj4b.js +0 -23
- package/dist/collection-BBXRVj4b-BBXRVj4b.js.map +0 -1
- package/dist/collection-list-datatype-DDLoFog9-DDLoFog9.js +0 -23
- package/dist/collection-list-datatype-DDLoFog9-DDLoFog9.js.map +0 -1
- package/dist/collection-set-datatype-QGQHiErr-QGQHiErr.js +0 -22
- package/dist/collection-set-datatype-QGQHiErr-QGQHiErr.js.map +0 -1
- package/dist/color-picker-k6GkGnF5-k6GkGnF5.js +0 -23
- package/dist/color-picker-k6GkGnF5-k6GkGnF5.js.map +0 -1
- package/dist/column-width-Cjb-6nqI-Cjb-6nqI.js +0 -23
- package/dist/column-width-Cjb-6nqI-Cjb-6nqI.js.map +0 -1
- package/dist/comment-DL9ZR-vM-DL9ZR-vM.js +0 -23
- package/dist/comment-DL9ZR-vM-DL9ZR-vM.js.map +0 -1
- package/dist/component-BArrSsoi-BArrSsoi.js +0 -23
- package/dist/component-BArrSsoi-BArrSsoi.js.map +0 -1
- package/dist/connection-cIDhN_bU-cIDhN_bU.js +0 -23
- package/dist/connection-cIDhN_bU-cIDhN_bU.js.map +0 -1
- package/dist/copy-D43FaHi--D43FaHi-.js +0 -23
- package/dist/copy-D43FaHi--D43FaHi-.js.map +0 -1
- package/dist/cursor-DSIjd7yc-DSIjd7yc.js +0 -22
- package/dist/cursor-DSIjd7yc-DSIjd7yc.js.map +0 -1
- package/dist/data-app-BHCZS7qU-BHCZS7qU.js +0 -23
- package/dist/data-app-BHCZS7qU-BHCZS7qU.js.map +0 -1
- package/dist/data-value-view-DZAfZGqs-DZAfZGqs.js +0 -23
- package/dist/data-value-view-DZAfZGqs-DZAfZGqs.js.map +0 -1
- package/dist/date-datatype-DX2o-Qoi-DX2o-Qoi.js +0 -23
- package/dist/date-datatype-DX2o-Qoi-DX2o-Qoi.js.map +0 -1
- package/dist/date-time-C3cmSAQm-C3cmSAQm.js +0 -23
- package/dist/date-time-C3cmSAQm-C3cmSAQm.js.map +0 -1
- package/dist/date-time-local-datatype-BRveWl93-BRveWl93.js +0 -23
- package/dist/date-time-local-datatype-BRveWl93-BRveWl93.js.map +0 -1
- package/dist/date-time-zoned-datatype-CvUpjzJk-CvUpjzJk.js +0 -23
- package/dist/date-time-zoned-datatype-CvUpjzJk-CvUpjzJk.js.map +0 -1
- package/dist/db-browse-BJj19qUq-BJj19qUq.js +0 -23
- package/dist/db-browse-BJj19qUq-BJj19qUq.js.map +0 -1
- package/dist/db-database-CyCrPzu--CyCrPzu-.js +0 -23
- package/dist/db-database-CyCrPzu--CyCrPzu-.js.map +0 -1
- package/dist/db-fetch-CJMHzQp5-CJMHzQp5.js +0 -23
- package/dist/db-fetch-CJMHzQp5-CJMHzQp5.js.map +0 -1
- package/dist/db-schema-C4gtYXvd-C4gtYXvd.js +0 -23
- package/dist/db-schema-C4gtYXvd-C4gtYXvd.js.map +0 -1
- package/dist/db-table-DifKATf6-DifKATf6.js +0 -23
- package/dist/db-table-DifKATf6-DifKATf6.js.map +0 -1
- package/dist/db-table-view-CcF1plGQ-CcF1plGQ.js +0 -23
- package/dist/db-table-view-CcF1plGQ-CcF1plGQ.js.map +0 -1
- package/dist/default-extension-datatype-C7jbGM5d-C7jbGM5d.js +0 -23
- package/dist/default-extension-datatype-C7jbGM5d-C7jbGM5d.js.map +0 -1
- package/dist/deploy-Dr6jEhZU-Dr6jEhZU.js +0 -24
- package/dist/deploy-Dr6jEhZU-Dr6jEhZU.js.map +0 -1
- package/dist/detect-DkQik2ep-DkQik2ep.js +0 -23
- package/dist/detect-DkQik2ep-DkQik2ep.js.map +0 -1
- package/dist/divider-Bhqt1kvt-Bhqt1kvt.js +0 -22
- package/dist/divider-Bhqt1kvt-Bhqt1kvt.js.map +0 -1
- package/dist/document-datatype-CmWsp5e8-CmWsp5e8.js +0 -22
- package/dist/document-datatype-CmWsp5e8-CmWsp5e8.js.map +0 -1
- package/dist/duplicate-Mtq886XD-Mtq886XD.js +0 -23
- package/dist/duplicate-Mtq886XD-Mtq886XD.js.map +0 -1
- package/dist/duration-Dfp9ox2I-Dfp9ox2I.js +0 -23
- package/dist/duration-Dfp9ox2I-Dfp9ox2I.js.map +0 -1
- package/dist/duration-date-based-datatype-ZMMDq_rT-ZMMDq_rT.js +0 -23
- package/dist/duration-date-based-datatype-ZMMDq_rT-ZMMDq_rT.js.map +0 -1
- package/dist/duration-time-based-datatype-DWj4ALsB-DWj4ALsB.js +0 -23
- package/dist/duration-time-based-datatype-DWj4ALsB-DWj4ALsB.js.map +0 -1
- package/dist/edit-Bg040TR4-Bg040TR4.js +0 -22
- package/dist/edit-Bg040TR4-Bg040TR4.js.map +0 -1
- package/dist/education-CsB0t7AG-CsB0t7AG.js +0 -23
- package/dist/education-CsB0t7AG-CsB0t7AG.js.map +0 -1
- package/dist/error-panel-BCvYjM5m-BCvYjM5m.js +0 -23
- package/dist/error-panel-BCvYjM5m-BCvYjM5m.js.map +0 -1
- package/dist/execute-CDtz4PKy-CDtz4PKy.js +0 -23
- package/dist/execute-CDtz4PKy-CDtz4PKy.js.map +0 -1
- package/dist/execute-all-JZlJ6VtK-JZlJ6VtK.js +0 -23
- package/dist/execute-all-JZlJ6VtK-JZlJ6VtK.js.map +0 -1
- package/dist/expand-panel-C0-YqxWN-C0-YqxWN.js +0 -23
- package/dist/expand-panel-C0-YqxWN-C0-YqxWN.js.map +0 -1
- package/dist/extension-DV2OG2b--DV2OG2b-.js +0 -23
- package/dist/extension-DV2OG2b--DV2OG2b-.js.map +0 -1
- package/dist/extension-community-BL7uY2lh-BL7uY2lh.js +0 -23
- package/dist/extension-community-BL7uY2lh-BL7uY2lh.js.map +0 -1
- package/dist/external-link-D6c_uzZp-D6c_uzZp.js +0 -23
- package/dist/external-link-D6c_uzZp-D6c_uzZp.js.map +0 -1
- package/dist/eye-DIQBS75n-DIQBS75n.js +0 -26
- package/dist/eye-DIQBS75n-DIQBS75n.js.map +0 -1
- package/dist/file-D-fzxVWf-D-fzxVWf.js +0 -23
- package/dist/file-D-fzxVWf-D-fzxVWf.js.map +0 -1
- package/dist/file-export-Cm5xiHIP-Cm5xiHIP.js +0 -23
- package/dist/file-export-Cm5xiHIP-Cm5xiHIP.js.map +0 -1
- package/dist/file-text-DCIkmzWQ-DCIkmzWQ.js +0 -22
- package/dist/file-text-DCIkmzWQ-DCIkmzWQ.js.map +0 -1
- package/dist/filter-BCzsHR5o-BCzsHR5o.js +0 -22
- package/dist/filter-BCzsHR5o-BCzsHR5o.js.map +0 -1
- package/dist/flow-variable-default-D8YRzPWl-D8YRzPWl.js +0 -31
- package/dist/flow-variable-default-D8YRzPWl-D8YRzPWl.js.map +0 -1
- package/dist/flow-variable-in-BiO5ppkU-BiO5ppkU.js +0 -31
- package/dist/flow-variable-in-BiO5ppkU-BiO5ppkU.js.map +0 -1
- package/dist/flow-variable-in-out-v434yDUG-v434yDUG.js +0 -39
- package/dist/flow-variable-in-out-v434yDUG-v434yDUG.js.map +0 -1
- package/dist/flow-variable-out-BuATVHTL-BuATVHTL.js +0 -31
- package/dist/flow-variable-out-BuATVHTL-BuATVHTL.js.map +0 -1
- package/dist/folder-move-6L5NfoIs-6L5NfoIs.js +0 -23
- package/dist/folder-move-6L5NfoIs-6L5NfoIs.js.map +0 -1
- package/dist/folder-plus-0Z-aPAxX-0Z-aPAxX.js +0 -23
- package/dist/folder-plus-0Z-aPAxX-0Z-aPAxX.js.map +0 -1
- package/dist/folder-search-DDOYg0f6-DDOYg0f6.js +0 -23
- package/dist/folder-search-DDOYg0f6-DDOYg0f6.js.map +0 -1
- package/dist/folder-workflow-hjaE8p-i-hjaE8p-i.js +0 -23
- package/dist/folder-workflow-hjaE8p-i-hjaE8p-i.js.map +0 -1
- package/dist/folder-xz8Bw1k6-xz8Bw1k6.js +0 -23
- package/dist/folder-xz8Bw1k6-xz8Bw1k6.js.map +0 -1
- package/dist/forum-CunE8Bpo-CunE8Bpo.js +0 -22
- package/dist/forum-CunE8Bpo-CunE8Bpo.js.map +0 -1
- package/dist/function-catalog-CRXmv7AG-CRXmv7AG.js +0 -23
- package/dist/function-catalog-CRXmv7AG-CRXmv7AG.js.map +0 -1
- package/dist/geo-datatype-CTQgQTql-CTQgQTql.js +0 -27
- package/dist/geo-datatype-CTQgQTql-CTQgQTql.js.map +0 -1
- package/dist/helm-datatype-XIlHXQBP-XIlHXQBP.js +0 -23
- package/dist/helm-datatype-XIlHXQBP-XIlHXQBP.js.map +0 -1
- package/dist/hide-eye-BrIKmBWt-BrIKmBWt.js +0 -23
- package/dist/hide-eye-BrIKmBWt-BrIKmBWt.js.map +0 -1
- package/dist/home-CW06ROg3-CW06ROg3.js +0 -23
- package/dist/home-CW06ROg3-CW06ROg3.js.map +0 -1
- package/dist/image-png-datatype-CtnGTQlX-CtnGTQlX.js +0 -23
- package/dist/image-png-datatype-CtnGTQlX-CtnGTQlX.js.map +0 -1
- package/dist/image-svg-datatype-DgySAOGM-DgySAOGM.js +0 -23
- package/dist/image-svg-datatype-DgySAOGM-DgySAOGM.js.map +0 -1
- package/dist/import-Bjz9KZM--Bjz9KZM-.js +0 -23
- package/dist/import-Bjz9KZM--Bjz9KZM-.js.map +0 -1
- package/dist/import-table-BaqmTPnF-BaqmTPnF.js +0 -23
- package/dist/import-table-BaqmTPnF-BaqmTPnF.js.map +0 -1
- package/dist/info-C8GezBIf-C8GezBIf.js +0 -23
- package/dist/info-C8GezBIf-C8GezBIf.js.map +0 -1
- package/dist/interval-CzQaVMPH-CzQaVMPH.js +0 -23
- package/dist/interval-CzQaVMPH-CzQaVMPH.js.map +0 -1
- package/dist/italic-B6SY7x6N-B6SY7x6N.js +0 -23
- package/dist/italic-B6SY7x6N-B6SY7x6N.js.map +0 -1
- package/dist/json-datatype-DgHr_Q8U-DgHr_Q8U.js +0 -23
- package/dist/json-datatype-DgHr_Q8U-DgHr_Q8U.js.map +0 -1
- package/dist/key-9hybjORk-9hybjORk.js +0 -23
- package/dist/key-9hybjORk-9hybjORk.js.map +0 -1
- package/dist/labeling-datatype-CGG_DguN-CGG_DguN.js +0 -26
- package/dist/labeling-datatype-CGG_DguN-CGG_DguN.js.map +0 -1
- package/dist/layout-editor-At6vQ3aU-At6vQ3aU.js +0 -22
- package/dist/layout-editor-At6vQ3aU-At6vQ3aU.js.map +0 -1
- package/dist/left-aligned-C90MrNJd-C90MrNJd.js +0 -23
- package/dist/left-aligned-C90MrNJd-C90MrNJd.js.map +0 -1
- package/dist/like-BwC1fMTh-BwC1fMTh.js +0 -22
- package/dist/like-BwC1fMTh-BwC1fMTh.js.map +0 -1
- package/dist/limit-D84DMtQW-D84DMtQW.js +0 -23
- package/dist/limit-D84DMtQW-D84DMtQW.js.map +0 -1
- package/dist/linear-notation-molecule-CepA_vEp-CepA_vEp.js +0 -23
- package/dist/linear-notation-molecule-CepA_vEp-CepA_vEp.js.map +0 -1
- package/dist/link-DH0XmQMp-DH0XmQMp.js +0 -23
- package/dist/link-DH0XmQMp-DH0XmQMp.js.map +0 -1
- package/dist/linked-component-BOb5aj87-BOb5aj87.js +0 -23
- package/dist/linked-component-BOb5aj87-BOb5aj87.js.map +0 -1
- package/dist/linked-metanode-ojS3JQJp-ojS3JQJp.js +0 -23
- package/dist/linked-metanode-ojS3JQJp-ojS3JQJp.js.map +0 -1
- package/dist/list-CQmzxqnp-CQmzxqnp.js +0 -23
- package/dist/list-CQmzxqnp-CQmzxqnp.js.map +0 -1
- package/dist/list-bulletpoint-BLPnukaY-BLPnukaY.js +0 -23
- package/dist/list-bulletpoint-BLPnukaY-BLPnukaY.js.map +0 -1
- package/dist/list-number-C47JfmdB-C47JfmdB.js +0 -23
- package/dist/list-number-C47JfmdB-C47JfmdB.js.map +0 -1
- package/dist/list-thumbs-F5ICnK4Z-F5ICnK4Z.js +0 -23
- package/dist/list-thumbs-F5ICnK4Z-F5ICnK4Z.js.map +0 -1
- package/dist/local-filesystem-fyrwOsG5-fyrwOsG5.js +0 -23
- package/dist/local-filesystem-fyrwOsG5-fyrwOsG5.js.map +0 -1
- package/dist/lock-B9qCq8wW-B9qCq8wW.js +0 -23
- package/dist/lock-B9qCq8wW-B9qCq8wW.js.map +0 -1
- package/dist/login-DGaxAy8E-DGaxAy8E.js +0 -23
- package/dist/login-DGaxAy8E-DGaxAy8E.js.map +0 -1
- package/dist/menu-BSS_QnZi-BSS_QnZi.js +0 -23
- package/dist/menu-BSS_QnZi-BSS_QnZi.js.map +0 -1
- package/dist/message-datatype-Ds55YGMQ-Ds55YGMQ.js +0 -23
- package/dist/message-datatype-Ds55YGMQ-Ds55YGMQ.js.map +0 -1
- package/dist/metanode-BOoscDpe-BOoscDpe.js +0 -23
- package/dist/metanode-BOoscDpe-BOoscDpe.js.map +0 -1
- package/dist/microscope-CPwlykKH-CPwlykKH.js +0 -23
- package/dist/microscope-CPwlykKH-CPwlykKH.js.map +0 -1
- package/dist/mini-map-DKez_1T0-DKez_1T0.js +0 -21
- package/dist/mini-map-DKez_1T0-DKez_1T0.js.map +0 -1
- package/dist/minimize-dialog-CsKInFjQ-CsKInFjQ.js +0 -23
- package/dist/minimize-dialog-CsKInFjQ-CsKInFjQ.js.map +0 -1
- package/dist/minimize-side-panel-DOe27uOi-DOe27uOi.js +0 -23
- package/dist/minimize-side-panel-DOe27uOi-DOe27uOi.js.map +0 -1
- package/dist/minus-CUOnFK-_-CUOnFK-_.js +0 -22
- package/dist/minus-CUOnFK-_-CUOnFK-_.js.map +0 -1
- package/dist/model-pmml-datatype-kXlL8AWg-kXlL8AWg.js +0 -23
- package/dist/model-pmml-datatype-kXlL8AWg-kXlL8AWg.js.map +0 -1
- package/dist/molecule-CT71Yhf1-CT71Yhf1.js +0 -23
- package/dist/molecule-CT71Yhf1-CT71Yhf1.js.map +0 -1
- package/dist/more-actions-r1Ai1cv8-r1Ai1cv8.js +0 -22
- package/dist/more-actions-r1Ai1cv8-r1Ai1cv8.js.map +0 -1
- package/dist/node-stack-B2-NOdn1-B2-NOdn1.js +0 -23
- package/dist/node-stack-B2-NOdn1-B2-NOdn1.js.map +0 -1
- package/dist/nodes-align-horiz-BNN1SQyE-BNN1SQyE.js +0 -22
- package/dist/nodes-align-horiz-BNN1SQyE-BNN1SQyE.js.map +0 -1
- package/dist/nodes-align-vert-JG8gmWk5-JG8gmWk5.js +0 -22
- package/dist/nodes-align-vert-JG8gmWk5-JG8gmWk5.js.map +0 -1
- package/dist/number-double-datatype-B6nc4th6-B6nc4th6.js +0 -22
- package/dist/number-double-datatype-B6nc4th6-B6nc4th6.js.map +0 -1
- package/dist/number-double-vector-datatype-D3rzzxjM-D3rzzxjM.js +0 -23
- package/dist/number-double-vector-datatype-D3rzzxjM-D3rzzxjM.js.map +0 -1
- package/dist/number-integer-datatype-BWoQkZ03-BWoQkZ03.js +0 -23
- package/dist/number-integer-datatype-BWoQkZ03-BWoQkZ03.js.map +0 -1
- package/dist/open-in-new-window-BAU_-IMl-BAU_-IMl.js +0 -23
- package/dist/open-in-new-window-BAU_-IMl-BAU_-IMl.js.map +0 -1
- package/dist/pan-mode-CGVZU5HB-CGVZU5HB.js +0 -23
- package/dist/pan-mode-CGVZU5HB-CGVZU5HB.js.map +0 -1
- package/dist/parameter-D3NI1oyc-D3NI1oyc.js +0 -23
- package/dist/parameter-D3NI1oyc-D3NI1oyc.js.map +0 -1
- package/dist/path-datatype-BD3D-7dL-BD3D-7dL.js +0 -23
- package/dist/path-datatype-BD3D-7dL-BD3D-7dL.js.map +0 -1
- package/dist/path-separator-DRnUilGA-DRnUilGA.js +0 -23
- package/dist/path-separator-DRnUilGA-DRnUilGA.js.map +0 -1
- package/dist/pending-changes-BvFdyKn8-BvFdyKn8.js +0 -22
- package/dist/pending-changes-BvFdyKn8-BvFdyKn8.js.map +0 -1
- package/dist/pin-B6vKBZDp-B6vKBZDp.js +0 -23
- package/dist/pin-B6vKBZDp-B6vKBZDp.js.map +0 -1
- package/dist/placeholder-CIq-OFkj-CIq-OFkj.js +0 -22
- package/dist/placeholder-CIq-OFkj-CIq-OFkj.js.map +0 -1
- package/dist/plus-BGcbvgG4-BGcbvgG4.js +0 -22
- package/dist/plus-BGcbvgG4-BGcbvgG4.js.map +0 -1
- package/dist/python-Bn3ET_9Z-Bn3ET_9Z.js +0 -23
- package/dist/python-Bn3ET_9Z-Bn3ET_9Z.js.map +0 -1
- package/dist/quote-BhPMewQl-BhPMewQl.js +0 -23
- package/dist/quote-BhPMewQl-BhPMewQl.js.map +0 -1
- package/dist/random-seed-BmLMj_2x-BmLMj_2x.js +0 -23
- package/dist/random-seed-BmLMj_2x-BmLMj_2x.js.map +0 -1
- package/dist/re-execution-CPa8UUdU-CPa8UUdU.js +0 -23
- package/dist/re-execution-CPa8UUdU-CPa8UUdU.js.map +0 -1
- package/dist/redo-BjctXrq6-BjctXrq6.js +0 -23
- package/dist/redo-BjctXrq6-BjctXrq6.js.map +0 -1
- package/dist/regex-CErlWJQW-CErlWJQW.js +0 -23
- package/dist/regex-CErlWJQW-CErlWJQW.js.map +0 -1
- package/dist/reload-CDm_DDdP-CDm_DDdP.js +0 -23
- package/dist/reload-CDm_DDdP-CDm_DDdP.js.map +0 -1
- package/dist/rename-Cyk_xng4-Cyk_xng4.js +0 -22
- package/dist/rename-Cyk_xng4-Cyk_xng4.js.map +0 -1
- package/dist/replace-9aOLtKuD-9aOLtKuD.js +0 -23
- package/dist/replace-9aOLtKuD-9aOLtKuD.js.map +0 -1
- package/dist/reset-all-Buf5y-HV-Buf5y-HV.js +0 -23
- package/dist/reset-all-Buf5y-HV-Buf5y-HV.js.map +0 -1
- package/dist/resume-execution-CRqaKZqz-CRqaKZqz.js +0 -23
- package/dist/resume-execution-CRqaKZqz-CRqaKZqz.js.map +0 -1
- package/dist/right-aligned-2BkZ58o--2BkZ58o-.js +0 -23
- package/dist/right-aligned-2BkZ58o--2BkZ58o-.js.map +0 -1
- package/dist/rocket-Bs46VoUh-Bs46VoUh.js +0 -23
- package/dist/rocket-Bs46VoUh-Bs46VoUh.js.map +0 -1
- package/dist/save-B7DzWjxS-B7DzWjxS.js +0 -23
- package/dist/save-B7DzWjxS-B7DzWjxS.js.map +0 -1
- package/dist/save-as-CTnCvHfQ-CTnCvHfQ.js +0 -23
- package/dist/save-as-CTnCvHfQ-CTnCvHfQ.js.map +0 -1
- package/dist/schedule-DuSqromp-DuSqromp.js +0 -23
- package/dist/schedule-DuSqromp-DuSqromp.js.map +0 -1
- package/dist/search-gykfARpE-gykfARpE.js +0 -22
- package/dist/search-gykfARpE-gykfARpE.js.map +0 -1
- package/dist/secret-store-_ZlpQRjr-_ZlpQRjr.js +0 -23
- package/dist/secret-store-_ZlpQRjr-_ZlpQRjr.js.map +0 -1
- package/dist/selected-cancel-CS3Gep56-CS3Gep56.js +0 -23
- package/dist/selected-cancel-CS3Gep56-CS3Gep56.js.map +0 -1
- package/dist/selected-execution-BJxjtKXq-BJxjtKXq.js +0 -23
- package/dist/selected-execution-BJxjtKXq-BJxjtKXq.js.map +0 -1
- package/dist/selected-reset-SMx6XDk5-SMx6XDk5.js +0 -23
- package/dist/selected-reset-SMx6XDk5-SMx6XDk5.js.map +0 -1
- package/dist/send-G2BlBsxu-G2BlBsxu.js +0 -23
- package/dist/send-G2BlBsxu-G2BlBsxu.js.map +0 -1
- package/dist/server-rack-workflow-CBhKbyGY-CBhKbyGY.js +0 -23
- package/dist/server-rack-workflow-CBhKbyGY-CBhKbyGY.js.map +0 -1
- package/dist/service-9hAt2V0T-9hAt2V0T.js +0 -23
- package/dist/service-9hAt2V0T-9hAt2V0T.js.map +0 -1
- package/dist/settings-BLMTAq-1-BLMTAq-1.js +0 -26
- package/dist/settings-BLMTAq-1-BLMTAq-1.js.map +0 -1
- package/dist/share-BIrWLTtn-BIrWLTtn.js +0 -22
- package/dist/share-BIrWLTtn-BIrWLTtn.js.map +0 -1
- package/dist/shortcuts-fbNZWoSf-fbNZWoSf.js +0 -22
- package/dist/shortcuts-fbNZWoSf-fbNZWoSf.js.map +0 -1
- package/dist/sort-ascending-DNyV4Drg-DNyV4Drg.js +0 -23
- package/dist/sort-ascending-DNyV4Drg-DNyV4Drg.js.map +0 -1
- package/dist/sort-descending-BdIGPn-9-BdIGPn-9.js +0 -23
- package/dist/sort-descending-BdIGPn-9-BdIGPn-9.js.map +0 -1
- package/dist/space-fMpb-o4--fMpb-o4-.js +0 -23
- package/dist/space-fMpb-o4--fMpb-o4-.js.map +0 -1
- package/dist/space-local-D4kTqwrB-D4kTqwrB.js +0 -23
- package/dist/space-local-D4kTqwrB-D4kTqwrB.js.map +0 -1
- package/dist/space-private-D06CTwvE-D06CTwvE.js +0 -23
- package/dist/space-private-D06CTwvE-D06CTwvE.js.map +0 -1
- package/dist/stepwise-execution-C1mAO3z_-C1mAO3z_.js +0 -23
- package/dist/stepwise-execution-C1mAO3z_-C1mAO3z_.js.map +0 -1
- package/dist/stop-Cgmy2iPY-Cgmy2iPY.js +0 -22
- package/dist/stop-Cgmy2iPY-Cgmy2iPY.js.map +0 -1
- package/dist/strikethrough-DG4Ejxqk-DG4Ejxqk.js +0 -23
- package/dist/strikethrough-DG4Ejxqk-DG4Ejxqk.js.map +0 -1
- package/dist/string-datatype-CHI_qvxE-CHI_qvxE.js +0 -23
- package/dist/string-datatype-CHI_qvxE-CHI_qvxE.js.map +0 -1
- package/dist/string-vector-datatype-DhgtZI8f-DhgtZI8f.js +0 -23
- package/dist/string-vector-datatype-DhgtZI8f-DhgtZI8f.js.map +0 -1
- package/dist/subgraph-datatype-BHBSS1-Z-BHBSS1-Z.js +0 -23
- package/dist/subgraph-datatype-BHBSS1-Z-BHBSS1-Z.js.map +0 -1
- package/dist/table-Pffb9Oig-Pffb9Oig.js +0 -23
- package/dist/table-Pffb9Oig-Pffb9Oig.js.map +0 -1
- package/dist/table-statistics-y-P6EXGX-y-P6EXGX.js +0 -23
- package/dist/table-statistics-y-P6EXGX-y-P6EXGX.js.map +0 -1
- package/dist/tag-_fZiuJaC-_fZiuJaC.js +0 -27
- package/dist/tag-_fZiuJaC-_fZiuJaC.js.map +0 -1
- package/dist/team-CtZLwOou-CtZLwOou.js +0 -22
- package/dist/team-CtZLwOou-CtZLwOou.js.map +0 -1
- package/dist/template-gallery-BtXi4GHd-BtXi4GHd.js +0 -23
- package/dist/template-gallery-BtXi4GHd-BtXi4GHd.js.map +0 -1
- package/dist/term-datatype-CRrmVXQx-CRrmVXQx.js +0 -23
- package/dist/term-datatype-CRrmVXQx-CRrmVXQx.js.map +0 -1
- package/dist/test-tube-BsB8mbus-BsB8mbus.js +0 -23
- package/dist/test-tube-BsB8mbus-BsB8mbus.js.map +0 -1
- package/dist/text-DFu-L62Z-DFu-L62Z.js +0 -23
- package/dist/text-DFu-L62Z-DFu-L62Z.js.map +0 -1
- package/dist/textstyles-j0GQtKYE-j0GQtKYE.js +0 -22
- package/dist/textstyles-j0GQtKYE-j0GQtKYE.js.map +0 -1
- package/dist/thumbs-down-CiozrdIW-CiozrdIW.js +0 -22
- package/dist/thumbs-down-CiozrdIW-CiozrdIW.js.map +0 -1
- package/dist/thumbs-up-E4uRtjhi-E4uRtjhi.js +0 -22
- package/dist/thumbs-up-E4uRtjhi-E4uRtjhi.js.map +0 -1
- package/dist/time-DU80J5X8-DU80J5X8.js +0 -23
- package/dist/time-DU80J5X8-DU80J5X8.js.map +0 -1
- package/dist/time-datatype-CBnmuYLa-CBnmuYLa.js +0 -23
- package/dist/time-datatype-CBnmuYLa-CBnmuYLa.js.map +0 -1
- package/dist/to-bottom-B8wat1Dk-B8wat1Dk.js +0 -23
- package/dist/to-bottom-B8wat1Dk-B8wat1Dk.js.map +0 -1
- package/dist/to-top-CCAfU4xz-CCAfU4xz.js +0 -23
- package/dist/to-top-CCAfU4xz-CCAfU4xz.js.map +0 -1
- package/dist/tool-datatype-l6cMJHHd-l6cMJHHd.js +0 -23
- package/dist/tool-datatype-l6cMJHHd-l6cMJHHd.js.map +0 -1
- package/dist/trash-Dq5FHwNO-Dq5FHwNO.js +0 -23
- package/dist/trash-Dq5FHwNO-Dq5FHwNO.js.map +0 -1
- package/dist/trigger-Qns9VYQG-Qns9VYQG.js +0 -22
- package/dist/trigger-Qns9VYQG-Qns9VYQG.js.map +0 -1
- package/dist/underline-CDZcVZHB-CDZcVZHB.js +0 -23
- package/dist/underline-CDZcVZHB-CDZcVZHB.js.map +0 -1
- package/dist/undo-CnghWcXK-CnghWcXK.js +0 -23
- package/dist/undo-CnghWcXK-CnghWcXK.js.map +0 -1
- package/dist/unknown-datatype-BEY7muOy-BEY7muOy.js +0 -23
- package/dist/unknown-datatype-BEY7muOy-BEY7muOy.js.map +0 -1
- package/dist/unlink-CL0kTZX2-CL0kTZX2.js +0 -23
- package/dist/unlink-CL0kTZX2-CL0kTZX2.js.map +0 -1
- package/dist/update-file-5lTfm97G-5lTfm97G.js +0 -23
- package/dist/update-file-5lTfm97G-5lTfm97G.js.map +0 -1
- package/dist/uri-datatype-CJhmCZiq-CJhmCZiq.js +0 -23
- package/dist/uri-datatype-CJhmCZiq-CJhmCZiq.js.map +0 -1
- package/dist/usage-827uIQyn-827uIQyn.js +0 -23
- package/dist/usage-827uIQyn-827uIQyn.js.map +0 -1
- package/dist/user-DTq28OjK-DTq28OjK.js +0 -23
- package/dist/user-DTq28OjK-DTq28OjK.js.map +0 -1
- package/dist/validate-CD0_eO0m-CD0_eO0m.js +0 -23
- package/dist/validate-CD0_eO0m-CD0_eO0m.js.map +0 -1
- package/dist/variable-boolean-BzyG4BGV-BzyG4BGV.js +0 -31
- package/dist/variable-boolean-BzyG4BGV-BzyG4BGV.js.map +0 -1
- package/dist/variable-collection-boolean-nWAd6a7R-nWAd6a7R.js +0 -31
- package/dist/variable-collection-boolean-nWAd6a7R-nWAd6a7R.js.map +0 -1
- package/dist/variable-collection-double-h0sMrPKC-h0sMrPKC.js +0 -31
- package/dist/variable-collection-double-h0sMrPKC-h0sMrPKC.js.map +0 -1
- package/dist/variable-collection-integer-BZEs4wch-BZEs4wch.js +0 -31
- package/dist/variable-collection-integer-BZEs4wch-BZEs4wch.js.map +0 -1
- package/dist/variable-collection-string-BPIuxyHK-BPIuxyHK.js +0 -31
- package/dist/variable-collection-string-BPIuxyHK-BPIuxyHK.js.map +0 -1
- package/dist/variable-conda-environment-DZ5kqmc5-DZ5kqmc5.js +0 -31
- package/dist/variable-conda-environment-DZ5kqmc5-DZ5kqmc5.js.map +0 -1
- package/dist/variable-credential-D32ztDmY-D32ztDmY.js +0 -31
- package/dist/variable-credential-D32ztDmY-D32ztDmY.js.map +0 -1
- package/dist/variable-integer-CtoE3pq3-CtoE3pq3.js +0 -31
- package/dist/variable-integer-CtoE3pq3-CtoE3pq3.js.map +0 -1
- package/dist/variable-number-double-D5CGjCM8-D5CGjCM8.js +0 -31
- package/dist/variable-number-double-D5CGjCM8-D5CGjCM8.js.map +0 -1
- package/dist/variable-path-Dyuv7RmO-Dyuv7RmO.js +0 -31
- package/dist/variable-path-Dyuv7RmO-Dyuv7RmO.js.map +0 -1
- package/dist/variable-string-JWu8Gafe-JWu8Gafe.js +0 -31
- package/dist/variable-string-JWu8Gafe-JWu8Gafe.js.map +0 -1
- package/dist/variable-unknown-DYSdcnPs-DYSdcnPs.js +0 -31
- package/dist/variable-unknown-DYSdcnPs-DYSdcnPs.js.map +0 -1
- package/dist/version-CSTTEeam-CSTTEeam.js +0 -23
- package/dist/version-CSTTEeam-CSTTEeam.js.map +0 -1
- package/dist/view-cards-DS0Cpf95-DS0Cpf95.js +0 -22
- package/dist/view-cards-DS0Cpf95-DS0Cpf95.js.map +0 -1
- package/dist/warning-CJC1Oij--CJC1Oij-.js +0 -23
- package/dist/warning-CJC1Oij--CJC1Oij-.js.map +0 -1
- package/dist/workflow-n50o8jCH-n50o8jCH.js +0 -22
- package/dist/workflow-n50o8jCH-n50o8jCH.js.map +0 -1
- package/dist/x-close-D-oEO9N9-D-oEO9N9.js +0 -23
- package/dist/x-close-D-oEO9N9-D-oEO9N9.js.map +0 -1
- package/dist/xml-datatype-BlUTXDpw-BlUTXDpw.js +0 -23
- package/dist/xml-datatype-BlUTXDpw-BlUTXDpw.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataTransfer.js","sources":["../src/dataTransfer/shared/ui/CollapsiblePanel/useIconFlipper.ts","../src/dataTransfer/shared/ui/CollapsiblePanel/CollapsiblePanel.vue","../src/dataTransfer/shared/ui/ProgressItem/ProgressItem.vue","../src/dataTransfer/shared/ui/ProgressList/ProgressList.vue","../../../node_modules/.pnpm/@knime+utils@1.11.0_consola@3.4.2/node_modules/@knime/utils/src/promise/createAbortablePromise.ts","../../../node_modules/.pnpm/@knime+utils@1.11.0_consola@3.4.2/node_modules/@knime/utils/src/sleep.ts","../../../node_modules/.pnpm/@knime+utils@1.11.0_consola@3.4.2/node_modules/@knime/utils/src/promise/retryPromise.ts","../../../node_modules/.pnpm/@knime+utils@1.11.0_consola@3.4.2/node_modules/@knime/utils/src/fileExtensions.ts","../src/dataTransfer/upload/ui/UploadProgressPanelItem.vue","../src/dataTransfer/upload/ui/UploadProgressPanel.vue","../src/dataTransfer/download/ui/DownloadProgressPanelItem.vue","../src/dataTransfer/download/ui/DownloadProgressPanel.vue","../src/dataTransfer/shared/httpClient/constants.ts","../src/dataTransfer/shared/httpClient/createHttpClient.ts","../src/dataTransfer/upload/manager/index.ts","../src/dataTransfer/upload/ui/useUploadManager.ts","../src/dataTransfer/upload/useFileUpload.ts","../src/dataTransfer/download/useDownloadArtifact.ts"],"sourcesContent":["import { type CSSProperties, type ComputedRef, computed } from \"vue\";\n\ntype UseIconFlipperOptions = {\n active: ComputedRef<boolean>;\n initialRotation?: `${string}deg`;\n};\n\nexport const useIconFlipper = (options: UseIconFlipperOptions) => {\n const iconFlipStyles = computed<CSSProperties>(() => {\n const declaration: Partial<CSSProperties> = {\n transition: \"transform 0.2s linear\",\n transform: \"scaleY(1)\",\n };\n\n if (options.initialRotation) {\n declaration.rotate = `${options.initialRotation}`;\n }\n\n const transform = options.active.value ? \"scaleY(-1)\" : undefined;\n\n return { ...declaration, transform };\n });\n\n return { iconFlipStyles };\n};\n","<script setup lang=\"ts\">\nimport { computed, useId } from \"vue\";\n\nimport { KdsButton } from \"@knime/kds-components\";\n\nimport type { CollapsiblePanelProps } from \"./types\";\nimport { useIconFlipper } from \"./useIconFlipper\";\n\nconst { title, canBeDismissed = false } = defineProps<CollapsiblePanelProps>();\n\nconst emit = defineEmits<{\n close: [];\n}>();\n\nconst modelValue = defineModel<boolean>({ default: true });\n\nconst { iconFlipStyles } = useIconFlipper({\n active: computed(() => modelValue.value),\n initialRotation: \"180deg\",\n});\nconst panelContentId = useId();\n</script>\n\n<template>\n <div class=\"collapsible-panel\" :class=\"{ collapsed: !modelValue }\">\n <div class=\"title-bar\">\n {{ title }}\n <div class=\"actions\">\n <KdsButton\n size=\"small\"\n variant=\"transparent\"\n leading-icon=\"chevron-up\"\n :aria-expanded=\"modelValue\"\n :aria-controls=\"panelContentId\"\n :ariaLabel=\"modelValue ? 'Collapse' : 'Expand'\"\n :style=\"iconFlipStyles\"\n @click=\"modelValue = !modelValue\"\n />\n\n <KdsButton\n v-if=\"canBeDismissed\"\n size=\"small\"\n variant=\"transparent\"\n ariaLabel=\"Close\"\n leading-icon=\"x-close\"\n @click=\"emit('close')\"\n />\n </div>\n </div>\n\n <Transition name=\"expand\">\n <div v-show=\"modelValue\" :id=\"panelContentId\" class=\"panel-content\">\n <slot />\n </div>\n </Transition>\n </div>\n</template>\n\n<style scoped>\n.collapsible-panel {\n background: var(--kds-color-surface-default);\n border-radius: var(--kds-spacing-container-0-25x);\n box-shadow: var(--kds-elevation-level-3);\n\n & .title-bar {\n display: flex;\n align-items: center;\n height: var(--kds-dimension-component-height-2-5x);\n padding: var(--kds-spacing-container-0-5x)\n var(--kds-spacing-container-0-75x);\n font: var(--kds-font-base-title-small-strong);\n color: var(--kds-color-text-and-icon-neutral);\n\n & .actions {\n display: flex;\n gap: var(--kds-spacing-container-0-25x);\n align-items: center;\n margin-left: auto;\n }\n }\n\n &:not(.collapsed) {\n & .title-bar {\n border-bottom: var(--kds-border-base-subtle);\n }\n }\n}\n\n.panel-content {\n overflow: hidden;\n}\n\n.expand-enter-active,\n.expand-leave-active {\n display: grid;\n overflow: hidden;\n transition:\n grid-template-rows 0.2s ease-in-out,\n opacity 0.2s ease-in-out;\n}\n\n.expand-enter-from,\n.expand-leave-to {\n grid-template-rows: 0fr;\n opacity: 0;\n}\n\n.expand-enter-to,\n.expand-leave-from {\n grid-template-rows: 1fr;\n opacity: 1;\n}\n\n.panel-content > :deep(*) {\n min-height: 0;\n}\n</style>\n","<script lang=\"ts\" setup>\nimport {\n KdsBadge,\n KdsButton,\n KdsIcon,\n KdsProgressBar,\n} from \"@knime/kds-components\";\n\nimport { type ProgressItemProps } from \"./types\";\n\ndefineProps<ProgressItemProps>();\n</script>\n\n<template>\n <div class=\"progress-wrapper\">\n <div :class=\"['progress-item', { padded: progress === undefined }]\">\n <div class=\"item-info\">\n <KdsIcon :name=\"icon\" />\n\n <div class=\"item-name\">\n <div class=\"title\" :title=\"title\">\n {{ title }}\n </div>\n <span v-if=\"subtitle\" class=\"subtitle\">\n {{ subtitle }}\n </span>\n </div>\n </div>\n\n <div class=\"item-action\">\n <KdsBadge\n v-if=\"badge\"\n :variant=\"badge.variant\"\n :label=\"badge.text\"\n :leading-icon=\"badge.icon\"\n size=\"xxsmall\"\n />\n\n <template v-for=\"action in actions.slice(0, 2)\" :key=\"action.id\">\n <KdsButton\n :leading-icon=\"action.icon\"\n :ariaLabel=\"action.label\"\n variant=\"transparent\"\n @click=\"action.handler\"\n />\n </template>\n </div>\n </div>\n\n <div v-if=\"typeof progress === 'number'\" class=\"progress\">\n <KdsProgressBar :percentage=\"progress\" size=\"medium\" />\n </div>\n </div>\n</template>\n\n<style scoped>\n.progress-wrapper {\n --base-padding: var(--kds-spacing-container-1x);\n --progress-bar-height: var(--kds-dimension-component-height-0-25x);\n --progress-bar-distance: var(--kds-spacing-container-0-25x);\n\n display: flex;\n flex-direction: column;\n gap: var(--progress-bar-distance);\n height: var(--kds-dimension-component-height-4x);\n padding: var(--base-padding);\n}\n\n.progress-item {\n display: flex;\n align-items: center;\n width: 100%;\n height: 100%;\n\n /* add extra margin to prevent content jump when a progress bars appears/disappears */\n &.padded {\n margin-bottom: calc(\n var(--progress-bar-height) + var(--progress-bar-distance)\n );\n }\n}\n\n.progress {\n min-height: var(--progress-bar-height);\n}\n\n.item-info {\n display: flex;\n flex-grow: 1;\n gap: var(--kds-spacing-container-0-25x);\n overflow: hidden;\n\n & .item-name {\n display: flex;\n flex-grow: 1;\n flex-direction: column;\n gap: var(--kds-spacing-container-0-25x);\n justify-content: center;\n overflow: hidden;\n color: var(--kds-color-text-and-icon-neutral);\n\n & .title {\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n font: var(--kds-font-base-interactive-small);\n white-space: nowrap;\n }\n\n & .subtitle {\n font: var(--kds-font-base-subtext-small);\n }\n }\n}\n\n.item-action {\n display: flex;\n flex-shrink: 0;\n gap: var(--kds-spacing-container-0-25x);\n align-items: center;\n}\n</style>\n","<template>\n <div class=\"progress-list\">\n <slot />\n </div>\n</template>\n\n<style scoped>\n.progress-list {\n max-height: var(--kds-dimension-component-height-20x);\n overflow-y: auto;\n\n &:deep(.progress-wrapper):not(:first-child) {\n border-top: var(--kds-border-base-subtle);\n }\n}\n</style>\n","export class AbortError extends Error {}\n\n/**\n * Helper to create an abortable promise. Returns an AbortController and a Function\n * that you can pass your async handler to. Whenever the AbortController signal is\n * aborted then the async handler's promise will reject with an AbortError\n *\n * Example:\n * ```\n * import { abortUtils } from \"@knime/utils\"\n * const myFetchCall = async (params...) => {...};\n *\n * try {\n * const { runAbortablePromise, abortController } = createAbortablePromise(() =>\n * myFetchCall(params...),\n * );\n * } catch (e) {\n * if (e instanceof abortUtils.AbortError) {\n * console.info('ignore due to abort');\n * return;\n * }\n * }\n *\n * // somewhere else (while request is in-flight)\n * abortController.abort(new abortUtils.AbortError('reason here'))\n * ```\n */\nexport const createAbortablePromise = () => {\n const abortController: AbortController = new AbortController();\n\n const runAbortablePromise = <T = unknown>(request: () => Promise<T>) => {\n return new Promise<T>((resolve, reject) => {\n // abort logic\n const abortListener = ({ target }: Event) => {\n abortController.signal.removeEventListener(\"abort\", abortListener);\n const reason = (target as AbortSignal).reason;\n reject(reason instanceof AbortError ? reason : new AbortError(reason));\n };\n\n // the actual call\n request()\n .then(resolve)\n .catch((error) => {\n if (error instanceof AbortError) {\n return;\n }\n\n reject(error);\n });\n\n abortController.signal.addEventListener(\"abort\", abortListener);\n });\n };\n\n return { abortController, runAbortablePromise };\n};\n","/**\n * Returns promise that resolves after ms.\n */\nexport default function sleep(ms: number) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n","import sleep from \"../sleep\";\n\nexport const DEFAULT_RETRY_DELAY_MS = 0;\nexport const DEFAULT_RETRY_COUNT = 5;\n\n/**\n * Helper to add retry capability to an async function\n * @param fn async function\n * @param retryCount max number of retries. defaults to 5\n * @param retryDelayMS delay in-between retries in millisecs. defaults to 0\n * @param excludeError predicate fn to exclude specific errors from causing a retry\n */\nexport async function retryPromise<T>({\n fn,\n retryCount = DEFAULT_RETRY_COUNT,\n retryDelayMS = DEFAULT_RETRY_DELAY_MS,\n excludeError,\n}: {\n fn: () => Promise<T>;\n retryCount?: number;\n retryDelayMS?: number;\n excludeError?: (error: Error) => boolean;\n}) {\n try {\n return await fn();\n } catch (error) {\n if (excludeError?.(error as Error)) {\n throw error;\n }\n\n if (retryCount > 0) {\n await sleep(retryDelayMS);\n\n // eslint-disable-next-line no-return-await\n return await retryPromise({\n fn,\n retryCount: retryCount - 1,\n retryDelayMS,\n excludeError,\n });\n }\n\n throw error;\n }\n}\n","/**\n * Gets the file extension\n * @param nameOrPath can take a full file name (e.g \"file.txt\") or a path to a file\n * (e.g \"file://path/to/file.txt\" OR \"/path/to/file.txt\")\n * @returns just the file extension (e.g \"txt\")\n */\nexport const getFileExtension = (nameOrPath: string): string => {\n const basename = nameOrPath.split(/[\\\\/]/).pop() ?? \"\";\n\n const parts = basename.split(\".\");\n\n if (basename === \"\" || parts.length === 1) {\n return \"\";\n }\n\n return parts.at(-1) ?? \"\";\n};\n\n/**\n * Metadata for .knar files, which corresponds to exported KNIME Workflow Groups\n * or Components\n */\nconst KNAR = Object.freeze({\n extension: \"knar\",\n mimeType: \"application/vnd.knime.workflow-group+zip\",\n matches(file: File) {\n const extension = getFileExtension(file.name);\n return extension === this.extension;\n },\n});\n\n/**\n * Metadata for .knwf files, which corresponds to exported KNIME Workflows\n */\nconst KNWF = Object.freeze({\n extension: \"knwf\",\n mimeType: \"application/vnd.knime.workflow+zip\",\n matches(file: File) {\n const extension = getFileExtension(file.name);\n return extension === this.extension;\n },\n /**\n * Gets the name of a .knwf file without the extension. If the file is not\n * matched as a .knwf file then this function will return the default value,\n * which is empty string (\"\") if param is not provided\n */\n getNameOrDefault(file: File, defaultValue = \"\"): string {\n if (!this.matches(file)) {\n return defaultValue;\n }\n\n return file.name.replace(`.${this.extension}`, \"\");\n },\n});\n\nexport const knimeFileFormats = { KNAR, KNWF };\n\n/**\n * Gets the mime type from a given file. Defaults to `application/octet-stream`\n * if mimeType cannot be detected\n * @param file File\n * @returns mimeType\n */\nexport const getFileMimeType = (file: File): string => {\n const DEFAULT_MIMETYPE = \"application/octet-stream\";\n\n const extension = getFileExtension(file.name);\n\n if (!extension) {\n return DEFAULT_MIMETYPE;\n }\n\n if (KNWF.matches(file)) {\n return KNWF.mimeType;\n }\n\n if (KNAR.matches(file)) {\n return KNAR.mimeType;\n }\n\n // file has extension but unrecognizable mime type\n if (!file.type) {\n return DEFAULT_MIMETYPE;\n }\n\n return file.type;\n};\n","<script setup lang=\"ts\">\nimport { computed } from \"vue\";\n\nimport type { KdsBadgeVariant, KdsIconName } from \"@knime/kds-components\";\nimport {\n formatFileSize,\n getFileExtension,\n knimeFileFormats,\n} from \"@knime/utils\";\n\nimport {\n ProgressItem,\n type ProgressItemAction,\n type ProgressItemBadge,\n} from \"../../shared/ui\";\n\nimport type { UploadItem, UploadItemStatus, WithProgress } from \"./types\";\n\ntype Props = {\n item: UploadItem;\n allowCancel: boolean;\n allowRemove: boolean;\n};\n\nconst props = defineProps<Props>();\n\nconst emit = defineEmits<{\n remove: [];\n cancel: [];\n}>();\n\nconst hasProgress = (item: UploadItem): item is WithProgress => {\n return item.status === \"inprogress\" || item.status === \"complete\";\n};\n\nconst totalFormatted = computed(() => {\n return formatFileSize(props.item.size);\n});\n\nconst progressedFormatted = computed(() => {\n if (hasProgress(props.item)) {\n const sizePercentage = (props.item.size / 100) * (props.item.progress ?? 0);\n return formatFileSize(sizePercentage);\n }\n\n return 0;\n});\n\nconst subtitle = computed(() =>\n props.item.status === \"inprogress\"\n ? `${progressedFormatted.value} of ${totalFormatted.value}`\n : `${totalFormatted.value}`,\n);\n\nconst statusMapper = {\n inprogress: [\"Uploading\", \"info\", \"reload\"],\n failed: [\"Failed\", \"error\", \"circle-error\"],\n complete: [\"Uploaded\", \"success\", \"circle-success\"],\n cancelled: [\"Cancelled\", \"error\", \"circle-error\"],\n processing: [\"Processing\", \"info\", \"reload\"],\n} satisfies Record<UploadItemStatus, [string, KdsBadgeVariant, KdsIconName]>;\n\nconst itemIcon = computed<KdsIconName>(() => {\n const extension = getFileExtension(props.item.name);\n return extension === knimeFileFormats.KNWF.extension ? \"workflow\" : \"file\";\n});\n\nconst badge = computed<ProgressItemBadge | undefined>(() => {\n if (!props.item.status) {\n return undefined;\n }\n\n const [text, variant, icon] = statusMapper[props.item.status];\n\n return { text, variant, icon } satisfies ProgressItemBadge;\n});\n\nconst shouldShowCancelAction = computed(\n () => props.allowCancel && props.item.status === \"inprogress\",\n);\n\nconst shouldShowRemoveAction = computed(() => {\n const allowedRemoveStatuses: UploadItemStatus[] = [\n \"complete\",\n \"failed\",\n \"cancelled\",\n ];\n\n const showRemove =\n props.allowRemove &&\n props.item.status &&\n allowedRemoveStatuses.includes(props.item.status);\n\n return showRemove;\n});\n\nconst actions = computed<Array<ProgressItemAction>>(() => {\n const actions: ProgressItemAction[] = [];\n\n if (shouldShowCancelAction.value) {\n actions.push({\n id: \"cancel\",\n icon: \"x-close\",\n label: \"Cancel\",\n handler: () => emit(\"cancel\"),\n });\n }\n\n if (shouldShowRemoveAction.value) {\n actions.push({\n id: \"remove\",\n icon: \"trash\",\n label: \"Remove\",\n handler: () => emit(\"remove\"),\n });\n }\n\n return actions;\n});\n</script>\n\n<template>\n <ProgressItem\n :id=\"item.id\"\n :title=\"item.name\"\n :subtitle=\"subtitle\"\n :icon=\"itemIcon\"\n :progress=\"hasProgress(item) ? item.progress : undefined\"\n :badge=\"badge\"\n :actions=\"actions\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { computed, watch } from \"vue\";\n\nimport { KdsLoadingSkeleton } from \"@knime/kds-components\";\n\nimport { CollapsiblePanel, ProgressList } from \"../../shared/ui\";\n\nimport UploadProgressPanelItem from \"./UploadProgressPanelItem.vue\";\nimport type { UploadItem, UploadProgressPanelProps } from \"./types\";\n\nconst {\n items,\n allowRemove = true,\n allowCancel = true,\n placeholderItems = 0,\n} = defineProps<UploadProgressPanelProps>();\n\nconst emit = defineEmits<{\n remove: [item: UploadItem];\n cancel: [item: UploadItem];\n close: [];\n}>();\n\nconst expanded = defineModel<boolean>(\"expanded\", { default: true });\n\nconst totalItems = computed(() => items.length);\nconst uploadedItems = computed(\n () => items.filter(({ status }) => status === \"complete\").length,\n);\n\nconst title = computed(() => {\n const suffix = `file${totalItems.value > 1 ? \"s\" : \"\"}`;\n return `Uploaded ${uploadedItems.value} of ${totalItems.value} ${suffix}`;\n});\n\nconst hasSomeItemInProgress = computed(\n () =>\n items.some(\n ({ status }) => status === \"inprogress\" || status === \"processing\",\n ) || placeholderItems > 0,\n);\n\nwatch(\n () => items,\n (newItems, prevItems) => {\n // auto-close panel when the last item is removed\n if (prevItems?.length > 0 && newItems.length === 0) {\n emit(\"close\");\n }\n },\n);\n</script>\n\n<template>\n <CollapsiblePanel\n v-model=\"expanded\"\n :title=\"title\"\n class=\"upload-panel\"\n :can-be-dismissed=\"!hasSomeItemInProgress\"\n @close=\"emit('close')\"\n >\n <div class=\"upload-panel-content\">\n <ProgressList>\n <UploadProgressPanelItem\n v-for=\"item in items\"\n :key=\"item.id\"\n :item=\"item\"\n :allow-cancel=\"allowCancel\"\n :allow-remove=\"allowRemove\"\n @remove=\"emit('remove', item)\"\n @cancel=\"emit('cancel', item)\"\n />\n </ProgressList>\n\n <template v-if=\"placeholderItems > 0\">\n <div\n v-for=\"skeleton in placeholderItems\"\n :key=\"skeleton\"\n class=\"skeleton-container\"\n >\n <KdsLoadingSkeleton variant=\"icon-large\" />\n <div class=\"skeleton-text-content\">\n <KdsLoadingSkeleton variant=\"label\" />\n <KdsLoadingSkeleton variant=\"text\" />\n </div>\n </div>\n </template>\n </div>\n </CollapsiblePanel>\n</template>\n\n<style scoped>\n.upload-panel {\n width: var(--kds-dimension-component-width-20x);\n max-width: var(--kds-dimension-component-width-20x);\n}\n\n.upload-panel-content {\n max-height: var(--kds-dimension-component-height-20x);\n}\n\n.skeleton-container {\n display: grid;\n grid-template-columns: min-content 1fr;\n gap: var(--kds-spacing-container-0-25x);\n align-items: center;\n min-height: var(--kds-dimension-component-height-4x);\n padding: 0 var(--kds-spacing-container-1x);\n border-top: var(--kds-border-base-subtle);\n\n & .skeleton-text-content {\n display: flex;\n flex-direction: column;\n gap: var(--kds-spacing-container-0-25x);\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed } from \"vue\";\n\nimport type { KdsBadgeVariant, KdsIconName } from \"@knime/kds-components\";\n\nimport {\n ProgressItem,\n type ProgressItemAction,\n type ProgressItemBadge,\n} from \"../../shared/ui\";\n\nimport type { DownloadItem } from \"./types\";\n\ntype Props = {\n item: DownloadItem;\n};\n\nconst props = defineProps<Props>();\n\nconst emit = defineEmits<{\n remove: [];\n cancel: [];\n download: [];\n}>();\n\nconst statusMapper = {\n IN_PROGRESS: [\"Zipping\", \"info\", \"reload\"],\n READY: [\"Ready\", \"success\", \"circle-info\"],\n CANCELLED: [\"Cancelled\", \"error\", \"circle-error\"],\n FAILED: [\"Failed\", \"error\", \"circle-error\"],\n} satisfies Record<\n DownloadItem[\"status\"],\n [string, KdsBadgeVariant, KdsIconName]\n>;\n\nconst badge = computed<ProgressItemBadge>(() => {\n const [text, variant, icon] = statusMapper[props.item.status];\n\n return {\n text,\n variant,\n icon,\n } satisfies ProgressItemBadge;\n});\n\nconst isCancellable = computed(() => props.item.status === \"IN_PROGRESS\");\nconst isReady = computed(() => props.item.status === \"READY\");\nconst isRemovable = computed(\n () =>\n props.item.status === \"CANCELLED\" ||\n props.item.status === \"FAILED\" ||\n props.item.status === \"READY\",\n);\n\nconst actions = computed<Array<ProgressItemAction>>(() => {\n const actions: ProgressItemAction[] = [];\n\n if (isCancellable.value) {\n actions.push({\n id: \"cancel\",\n icon: \"x-close\",\n label: \"Cancel\",\n handler: () => emit(\"cancel\"),\n });\n }\n\n if (isReady.value) {\n actions.push({\n id: \"download\",\n icon: \"cloud-download\",\n label: \"Download again\",\n handler: () => emit(\"download\"),\n });\n }\n\n if (isRemovable.value) {\n actions.push({\n id: \"remove\",\n icon: \"trash\",\n label: \"Remove\",\n handler: () => emit(\"remove\"),\n });\n }\n\n return actions;\n});\n</script>\n\n<template>\n <ProgressItem\n :id=\"item.downloadId\"\n icon=\"file\"\n :title=\"item.name\"\n :badge=\"badge\"\n :actions=\"actions\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { computed, watch } from \"vue\";\n\nimport { CollapsiblePanel, ProgressList } from \"../../shared/ui\";\n\nimport DownloadProgressPanelItem from \"./DownloadProgressPanelItem.vue\";\nimport type { DownloadItem } from \"./types\";\n\ntype Props = {\n /**\n * List of current download items that should be displayed\n */\n items: DownloadItem[];\n};\nconst props = defineProps<Props>();\n\nconst emit = defineEmits<{\n remove: [item: DownloadItem];\n cancel: [item: DownloadItem];\n download: [item: DownloadItem];\n close: [];\n}>();\n\nconst expanded = defineModel<boolean>(\"expanded\", { default: true });\n\nconst totalItems = computed(() => props.items.length);\nconst totalDownloadedItems = computed(\n () => props.items.filter(({ status }) => status === \"READY\").length,\n);\n\nconst title = computed(() => {\n const suffix = `file${totalItems.value > 1 ? \"s\" : \"\"}`;\n return `Downloaded ${totalDownloadedItems.value} of ${totalItems.value} ${suffix}`;\n});\n\nconst hasItemsInProgress = computed(() =>\n props.items.some(({ status }) => status === \"IN_PROGRESS\"),\n);\n\nwatch(\n () => props.items?.length,\n (newValue, oldValue) => {\n if (oldValue > 0 && !newValue) {\n emit(\"close\");\n }\n },\n);\n</script>\n\n<template>\n <CollapsiblePanel\n v-model=\"expanded\"\n :title=\"title\"\n class=\"download-panel\"\n :can-be-dismissed=\"!hasItemsInProgress\"\n @close=\"emit('close')\"\n >\n <div class=\"download-panel-content\">\n <ProgressList>\n <DownloadProgressPanelItem\n v-for=\"item in items\"\n :key=\"item.downloadId\"\n :item=\"item\"\n @remove=\"emit('remove', item)\"\n @cancel=\"emit('cancel', item)\"\n @download=\"emit('download', item)\"\n />\n </ProgressList>\n </div>\n </CollapsiblePanel>\n</template>\n\n<style scoped>\n.download-panel {\n width: var(--kds-dimension-component-width-20x);\n max-width: var(--kds-dimension-component-width-20x);\n}\n\n.download-panel-content {\n max-height: var(--kds-dimension-component-height-20x);\n}\n</style>\n","export const API_BASE_URL = \"/_/api\";\n","import { type FetchOptions, ofetch } from \"ofetch\";\n\nimport { API_BASE_URL } from \"./constants\";\n\nconst defaultConfig: FetchOptions = {\n baseURL: API_BASE_URL,\n headers: {\n \"Content-Type\": \"application/json\",\n\n // see: https://knime-com.atlassian.net/wiki/spaces/SPECS/pages/4126769212/API+Errors#Client-Request-Headers\n Accept: \"application/json; application/problem+json\",\n },\n} as const;\n\nconst createHttpClient = () => {\n return ofetch.create(defaultConfig);\n};\n\nexport { type FetchOptions, defaultConfig, createHttpClient };\n","import { promise as promiseUtils } from \"@knime/utils\";\n\n// eslint-disable-next-line no-magic-numbers\nconst CHUNK_SIZE = 50 * 1024 * 1024; // 50 MB per chunk\n\nconst DEFAULT_RETRY_COUNT = 5;\nconst DEFAULT_RETRY_DELAY_MS = 50;\n\nexport const UploadStates = {\n IDLE: \"idle\",\n IN_PROGRESS: \"inprogress\",\n CANCELLED: \"cancelled\",\n FAILED: \"failed\",\n COMPLETE: \"complete\",\n} as const;\n\nexport type UploadStateName = (typeof UploadStates)[keyof typeof UploadStates];\n\nexport type PartUploadResponse = {\n partId: string;\n};\n\nconst uploadChunkWithProgress = (params: {\n method: string;\n url: string;\n chunk: Blob;\n chunkIndex: number;\n onProgress: (progress: number) => void;\n abortSignal: AbortSignal;\n}) => {\n const { method, url, chunk, chunkIndex, onProgress, abortSignal } = params;\n\n const OK = 200;\n const CREATED = 201;\n\n return new Promise<{ partId: string }>((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n\n xhr.open(method, url, true);\n\n abortSignal.addEventListener(\"abort\", () => xhr.abort());\n\n // Track the upload progress of the current chunk\n xhr.upload.onprogress = (event) => {\n if (event.lengthComputable) {\n onProgress(event.loaded);\n }\n };\n\n xhr.onload = () => {\n if (xhr.status === OK || xhr.status === CREATED) {\n const etag = xhr.getResponseHeader(\"ETag\");\n\n // 1. note that some backends don't return the etag header, then we just set an empty string\n // 2. remove possible doublequotes (\") around the etag and/or weak identifier (if either is present)\n // https://datatracker.ietf.org/doc/html/rfc7232#section-2.3\n resolve({ partId: etag?.replace(/^(?:W\\/)?\"|\"$/g, \"\") ?? \"\" });\n } else {\n consola.error(\"Failed or unexpected XHR response\", {\n xhrStatus: xhr.status,\n xhrResponse: xhr.response,\n chunkIndex,\n });\n reject(new Error(\"Failed to upload file\"));\n }\n };\n\n xhr.onerror = (event) => {\n consola.error(\"Failed to upload chunk\", {\n xhrErrorEvent: event,\n chunkIndex,\n });\n reject(new Error(\"Failed to upload file\"));\n };\n\n xhr.send(chunk);\n });\n};\n\nexport type UploaderManagerConfig = {\n /**\n * Function to resolve the metadata for a request to upload a file part\n * @param uploadId\n * @param partNumber\n * @returns\n */\n resolveFilePartUploadURL: (\n uploadId: string,\n partNumber: number,\n ) => Promise<{ method: string; url: string }>;\n\n /**\n * Callback that gets triggered when the whole file is uploaded.\n * @param\n * @returns\n */\n onFileUploadComplete?: (payload: {\n /**\n * Identifier of the upload for this file (must be unique)\n */\n uploadId: string;\n /**\n * Ids of all the uploaded file parts\n */\n filePartIds: Record<number, string>;\n }) => void;\n\n /**\n * Callback that gets triggered when an upload has failed.\n * @param uploadId\n * @param error the error that cause the failure if it exists\n * @returns\n */\n onFileUploadFailed?: (payload: { uploadId: string; error: Error }) => void;\n\n /**\n * Callback that gets triggered when the progress of a file part upload\n * for a specific upload id is updated\n * @param uploadId\n * @param progress\n * @returns\n */\n onProgress?: (uploadId: string, progress: number) => void;\n};\n\ntype UploadState = {\n uploadId: string;\n file: File;\n completedChunkCount: number;\n uploadedByteCount: number;\n state: UploadStateName;\n abortController: AbortController;\n};\n\n/**\n * Creates and returns an `uploadManager`, a comprehensive multi-file, multi-part upload handler.\n *\n * The `uploadManager` offers functionality for handling file uploads in parts and provides\n * several built-in mechanisms to ensure the process is reliable and adaptable.\n *\n * Key features include:\n *\n * - **Chunked File Uploads**: Splits provided files into manageable chunks and initiates the upload\n * for each part using the `resolveFilePartUploadURL` function provided in the configuration.\n *\n * - **Retry Mechanism**: Automatically retries failed upload attempts up to a maximum of 5 times\n * per failed request.\n *\n * - **Upload Cancellation**: Allows cancellation of ongoing uploads, giving users control over the process.\n *\n * - **Progress Tracking**: Monitors the progress of each file part upload and triggers the `onProgress`\n * callback to provide updates.\n *\n * - **Error Handling**: The returned `uploadFiles` function does not throw errors directly. Instead,\n * it manages retries and stops any failed uploads after the retry limit is reached, marking them as failed.\n * This ensures that the promise it returns completes gracefully without uncaught exceptions.\n *\n */\nexport const createUploadManager = (config: UploaderManagerConfig) => {\n const {\n resolveFilePartUploadURL: getUploadFilePartUrl,\n onFileUploadComplete,\n onFileUploadFailed,\n } = config;\n const uploadStateMap = new Map<string, UploadState>();\n\n const completedUploads = new Set<string>();\n const cancelledUploads = new Set<string>();\n const failedUploads = new Set<string>();\n\n const assertState = (uploadId: string, state: UploadStateName) =>\n uploadStateMap.has(uploadId) &&\n uploadStateMap.get(uploadId)!.state === state;\n\n const getUploadState = (uploadId: string) => uploadStateMap.get(uploadId);\n const setUploadState = (uploadId: string, state: Partial<UploadState>) => {\n uploadStateMap.set(uploadId, {\n ...uploadStateMap.get(uploadId)!,\n ...state,\n });\n };\n\n const isFailed = (uploadId: string) => assertState(uploadId, \"failed\");\n const isCancelled = (uploadId: string) => assertState(uploadId, \"cancelled\");\n\n const getTotalFileParts = (file: File) => Math.ceil(file.size / CHUNK_SIZE);\n\n const abortInFlightUpload = (uploadId: string, reason: string) => {\n const currentState = uploadStateMap.get(uploadId);\n\n if (!currentState) {\n return;\n }\n\n currentState.abortController.abort(\n new promiseUtils.AbortError(\n `Upload (${currentState.uploadId}) for file \"${currentState.file.name}\" aborted. Reason: \"${reason}\"`,\n ),\n );\n };\n\n const cancel = (uploadId: string) => {\n if (!uploadStateMap.has(uploadId)) {\n consola.error(\"cancel:: Invalid upload id\");\n return;\n }\n\n setUploadState(uploadId, { state: \"cancelled\" });\n\n abortInFlightUpload(uploadId, \"upload cancelled\");\n cancelledUploads.add(uploadId);\n };\n\n const setFailed = (uploadId: string, error: Error) => {\n if (!uploadStateMap.has(uploadId)) {\n consola.error(\"failed:: Invalid upload id\");\n return;\n }\n\n setUploadState(uploadId, { state: \"failed\" });\n onFileUploadFailed?.({ uploadId, error });\n failedUploads.add(uploadId);\n\n if (completedUploads.has(uploadId)) {\n completedUploads.delete(uploadId);\n }\n };\n\n const uploadFileFromChunkIndex = async (\n uploadId: string,\n file: File,\n initialChunkIndex = 0,\n ) => {\n const totalChunks = getTotalFileParts(file);\n const totalBytes = file.size;\n const completedPartIds: Record<number, string> = {};\n\n const { abortController, runAbortablePromise } =\n promiseUtils.createAbortablePromise();\n\n uploadStateMap.set(uploadId, {\n uploadId,\n file,\n state: \"inprogress\",\n uploadedByteCount: uploadStateMap.get(uploadId)?.uploadedByteCount ?? 0,\n completedChunkCount:\n uploadStateMap.get(uploadId)?.completedChunkCount ?? 0,\n abortController,\n });\n\n let chunkIndex = initialChunkIndex;\n let uploadedBytes = uploadStateMap.get(uploadId)?.uploadedByteCount;\n\n while (chunkIndex < totalChunks) {\n if (isCancelled(uploadId) || isFailed(uploadId)) {\n break;\n }\n\n const start = chunkIndex * CHUNK_SIZE;\n const end = Math.min(start + CHUNK_SIZE, file.size);\n\n const chunk = file.slice(start, end);\n\n try {\n const { method, url } = await promiseUtils.retryPromise({\n fn: () => getUploadFilePartUrl(uploadId, chunkIndex + 1),\n retryCount: DEFAULT_RETRY_COUNT,\n retryDelayMS: DEFAULT_RETRY_DELAY_MS,\n });\n\n consola.trace(\"File part upload url resolved\", { method, url });\n\n const onChunkUploadProgress = (uploadedChunkBytes: number) => {\n uploadedBytes = uploadedChunkBytes + start;\n setUploadState(uploadId, { uploadedByteCount: uploadedBytes });\n\n const progress = Math.round((uploadedBytes / totalBytes) * 100);\n\n config.onProgress?.(uploadId, progress);\n };\n\n const filePartResponse = await runAbortablePromise(() =>\n promiseUtils.retryPromise({\n fn: () =>\n uploadChunkWithProgress({\n method,\n url,\n chunk,\n chunkIndex,\n onProgress: onChunkUploadProgress,\n abortSignal: abortController.signal,\n }),\n retryCount: DEFAULT_RETRY_COUNT,\n retryDelayMS: DEFAULT_RETRY_DELAY_MS,\n }),\n );\n\n consola.trace(\n `${file.name}: Chunk ${chunkIndex + 1} of ${totalChunks} uploaded successfully`,\n );\n\n completedPartIds[chunkIndex + 1] = filePartResponse.partId;\n\n setUploadState(uploadId, {\n completedChunkCount:\n uploadStateMap.get(uploadId)!.completedChunkCount + 1,\n });\n } catch (error) {\n if (error instanceof promiseUtils.AbortError) {\n consola.info(\"Aborted::\", error);\n return;\n }\n\n setFailed(\n uploadId,\n error instanceof Error ? error : new Error(error as string),\n );\n return;\n }\n\n chunkIndex++;\n }\n\n if (isCancelled(uploadId) || isFailed(uploadId)) {\n return;\n }\n\n setUploadState(uploadId, {\n completedChunkCount: totalChunks,\n state: \"complete\",\n });\n completedUploads.add(uploadId);\n onFileUploadComplete?.({ uploadId, filePartIds: completedPartIds });\n };\n\n const uploadFiles = (files: Array<{ uploadId: string; file: File }>) => {\n const result: Array<Promise<unknown>> = [];\n\n for (const { uploadId, file } of files) {\n result.push(uploadFileFromChunkIndex(uploadId, file));\n }\n\n return Promise.allSettled(result).then(() => {\n // state cleanup\n const completed = [...completedUploads.values()];\n const cancelled = [...cancelledUploads.values()];\n const failed = [...failedUploads.values()];\n\n [...completed, ...cancelled, ...failed].forEach((uploadId) =>\n uploadStateMap.delete(uploadId),\n );\n\n completedUploads.clear();\n cancelledUploads.clear();\n failedUploads.clear();\n\n return {\n completed,\n cancelled,\n failed,\n };\n });\n };\n\n return {\n uploadFiles,\n\n getUploadState,\n isFailed,\n isCancelled,\n cancel,\n setFailed,\n };\n};\n","import { computed, ref } from \"vue\";\n\nimport { type UploaderManagerConfig, createUploadManager } from \"../manager\";\n\nimport type { UploadItem } from \"./types\";\n\ntype OnCompletePayload = Parameters<\n NonNullable<UploaderManagerConfig[\"onFileUploadComplete\"]>\n>[0] & { parentId: string; name: string };\n\ntype OnFailedPayload = Parameters<\n NonNullable<UploaderManagerConfig[\"onFileUploadFailed\"]>\n>[0] & { parentId: string };\n\ntype UseUploadManagerOptions = Omit<\n UploaderManagerConfig,\n \"onProgress\" | \"onFileUploadComplete\" | \"onFileUploadFailed\"\n> & {\n onFileUploadComplete?: (payload: OnCompletePayload) => void;\n onFileUploadFailed?: (payload: OnFailedPayload) => void;\n};\n\n/**\n * This composable wraps the `uploadManager` utility\n * in order to provide reactive state which will work tightly with the `UploadProgressPanel` component\n *\n * The reactive state returned (`uploadItems`) will update whenever the progress\n * or status of each item being uploaded changes\n */\nexport const useUploadManager = (options: UseUploadManagerOptions) => {\n const uploadState = ref<Record<string, UploadItem>>({});\n\n const { uploadFiles, cancel, setFailed } = createUploadManager({\n ...options,\n\n onFileUploadComplete: (params) => {\n const { parentId, name } = uploadState.value[params.uploadId];\n uploadState.value[params.uploadId].status = \"complete\";\n options.onFileUploadComplete?.({ ...params, parentId, name });\n },\n\n onFileUploadFailed: ({ uploadId, error }) => {\n const { parentId } = uploadState.value[uploadId];\n uploadState.value[uploadId] = {\n ...uploadState.value[uploadId],\n status: \"failed\",\n failureDetails: error.message,\n };\n options.onFileUploadFailed?.({ uploadId, error, parentId });\n },\n\n onProgress: (uploadId, progress) => {\n if (uploadState.value[uploadId].status === \"inprogress\") {\n uploadState.value[uploadId].progress = progress;\n }\n },\n });\n\n const start = async (\n parentId: string,\n uploadPayload: Array<{ uploadId: string; file: File }>,\n ) => {\n try {\n uploadPayload.forEach(({ uploadId, file }) => {\n uploadState.value[uploadId] = {\n id: uploadId,\n name: file.name,\n size: file.size,\n progress: 0,\n status: \"inprogress\",\n parentId,\n };\n });\n\n await uploadFiles(uploadPayload);\n } catch (error) {\n consola.error(\"Error uploading files\", error);\n }\n };\n\n const canCancel = (uploadId: string) =>\n uploadState.value[uploadId]?.status === \"inprogress\" ||\n uploadState.value[uploadId]?.status === \"failed\";\n\n const removeItem = (uploadId: string) => {\n if (canCancel(uploadId)) {\n cancel(uploadId);\n }\n\n delete uploadState.value[uploadId];\n };\n\n const resetState = () => {\n uploadState.value = {};\n };\n\n const uploadItems = computed(() => Object.values(uploadState.value));\n\n const hasPendingUploads = computed(() =>\n uploadItems.value.some(({ status }) => status === \"inprogress\"),\n );\n\n const totalPendingUploads = computed(\n () =>\n uploadItems.value.filter(({ status }) => status === \"inprogress\").length,\n );\n\n return {\n uploadState,\n hasPendingUploads,\n totalPendingUploads,\n start,\n cancel: (uploadId: string) => {\n cancel(uploadId);\n uploadState.value[uploadId].status = \"cancelled\";\n },\n canCancel,\n removeItem,\n resetState,\n setFailed: (uploadId: string, error: Error) => {\n uploadState.value[uploadId] = {\n ...uploadState.value[uploadId],\n status: \"failed\",\n failureDetails: error.message,\n };\n setFailed(uploadId, error);\n },\n };\n};\n","import { computed, reactive, readonly, ref } from \"vue\";\nimport type { FetchError } from \"ofetch\";\n\nimport {\n formatFileSize,\n getFileMimeType,\n knimeFileFormats,\n promise,\n} from \"@knime/utils\";\n\nimport { rfcErrors } from \"../../rfcErrors\";\nimport { createHttpClient } from \"../shared/httpClient\";\n\nimport type { UploadItem } from \"./ui\";\nimport { useUploadManager } from \"./ui/useUploadManager\";\n\nconst DEFAULT_MAX_UPLOAD_QUEUE_SIZE = 10;\n// eslint-disable-next-line no-magic-numbers\nconst DEFAULT_UPLOAD_SIZE_LIMIT_BYTES = 5 * 1024 * 1024 * 1024;\n\nconst DEFAULT_RETRY_DELAY_MS = 50;\n\n// Catalog & artifacts services currently have a limit for 5 GiB for\n// upload and copy/move operations but it is not communicated to clients.\n// Repeat the constant here to be able to still make a pre-check. See NXT-4510.\nconst getUploadSizeLimitBytes = () => DEFAULT_UPLOAD_SIZE_LIMIT_BYTES;\n\ntype UseFileUploadOptions = {\n /**\n * Max number of concurrent uploads allowed in the upload queue.\n * When an upload is started with a number of files that exceed the pending\n * uploads then only files up-to the max queue size will be processed and the rest\n * will be ignored. This will also call the `onUploadQueueSizeExceeded` callback\n */\n maxUploadQueueSize?: number;\n onFileUploadComplete?: (payload: {\n uploadId: string;\n filePartIds: Record<number, string>;\n parentId: string;\n name: string;\n }) => void;\n onFileUploadFailed?: (payload: {\n uploadId: string;\n error: Error;\n parentId: string;\n }) => void;\n onUploadQueueSizeExceeded?: (maxQueueSize: number) => void;\n};\n\n/**\n * This composable handles uploads of data to a hub repository item (space or workflow group).\n * It is a multi-step process which is described as follows:\n *\n * Step 1:\n * First we need to prepare an upload. The items will be uploaded to a `parent` container\n * identified by its id. Then, for each file we want to upload, we must provide paths relative\n * to the parent that identify each file. Example:\n * ```\n * {\n * \"items\": {\n * \"my-file.txt\": { itemContentType: \"text/plain\", itemContentSize: 5000 },\n * \"folder/my-file.zip\": { itemContentType: \"application/zip\", itemContentSize: 5000 },\n * }\n * }\n * ```\n * This describes 2 items, one placed in the parent's root and another inside a folder.\n * The response for this would look like:\n * ```\n * {\n * \"items\": {\n * \"my-file.txt\": { uploadId: \"id1\" },\n * \"folder/my-file.zip\": { uploadId: \"id2\" },\n * }\n * }\n * ```\n * Now, each corresponding `uploadId` uniquely identifies the upload process for\n * their respective files.\n *\n * Step 2:\n * Next, we need to start uploading the file parts. Technically, you _can_ just upload\n * each file as one big file \"part\", but practically that is not recommended because a hiccup\n * in the connection means you would have to start the upload from scratch; instead, we split\n * the files in smaller parts.\n * The upload manager helper will take care of splitting the file. However, the responsibility\n * of this composable is to supply a function to resolve the upload URL. This upload URL is obtained\n * by POSTing to an endpoint with the `uploadId` and the `partNumber` and this will return\n * the data required to make an upload to a presigned URL; this will be called for each file part.\n *\n * Step 3:\n * Completion:\n * Once the upload of a single file is complete, the upload manager will trigger the `onFileUploadComplete`\n * callback, which then will supply the ids of all the different parts that got uploaded for a given `uploadId`\n * Then we need to \"complete\" the upload by sending a request which provides the `uploadId` and a list of\n * the ids of all the parts. Note that some backends don't return the ids of the file parts after a successful\n * upload of a part, in this case empty strings or null can be used instead of the part id.\n *\n * Cancellation:\n * Alternative to completion, you can also cancel an upload. For this, the composable makes a DELETE request\n * providing the corresponding `uploadId` which will effectively cancel it.\n *\n *\n * For a usage example, refer to the Docs page in storybook.\n */\nexport const useFileUpload = (options: UseFileUploadOptions = {}) => {\n const $ofetch = createHttpClient();\n\n const prepareUpload = (\n parentId: string,\n files: Array<File>,\n ): Promise<Array<{ uploadId: string; file: File }>> => {\n const fileDictionary = Object.fromEntries(\n files.map((file) => {\n // strip extension for workflows\n const name = knimeFileFormats.KNWF.getNameOrDefault(file, file.name);\n\n return [name, file];\n }),\n );\n\n // map file dictionary to body payload of the prepare upload request\n const items: Record<\n string,\n { itemContentType: string; itemContentSize: number }\n > = Object.fromEntries(\n Object.entries(fileDictionary).map(([name, file]) => [\n name,\n {\n itemContentType: getFileMimeType(file),\n itemContentSize: file.size,\n },\n ]),\n );\n\n type PrepareUploadResponse = {\n items: Record<string, { uploadId: string }>;\n };\n\n return $ofetch<PrepareUploadResponse>(`/repository/${parentId}/manifest`, {\n method: \"POST\",\n body: { items },\n }).then(({ items }) => {\n return Object.keys(items).map((name) => {\n const { uploadId } = items[name];\n const file = fileDictionary[name];\n return { uploadId, file };\n });\n });\n };\n\n const resolveFilePartUploadURL = (uploadId: string, partNumber: number) => {\n type UploadURLResponse = {\n method: string;\n url: string;\n header: { Host: string };\n };\n\n return $ofetch<UploadURLResponse>(\n `/uploads/${uploadId}/parts/?partNumber=${partNumber}`,\n { method: \"POST\" },\n );\n };\n\n const completeUpload = (\n uploadId: string,\n partIds: Record<number, string>,\n ) => {\n return $ofetch(`/uploads/${uploadId}`, {\n method: \"POST\",\n body: partIds,\n });\n };\n\n const cancelUpload = (uploadId: string) => {\n return $ofetch(`/uploads/${uploadId}`, {\n method: \"DELETE\",\n });\n };\n\n // contains upload ids for files that have a processing step which was not finished yet\n const unprocessedUploads = reactive<Set<string>>(new Set());\n const isKNWFFile = (file: File) => knimeFileFormats.KNWF.matches(file);\n\n let useUploadManagerResult: ReturnType<typeof useUploadManager> | null = null;\n\n const setProcessingCompleted = ({ uploadId }: { uploadId: string }) => {\n unprocessedUploads.delete(uploadId);\n };\n\n const setProcessingFailed = ({\n uploadId,\n error,\n }: {\n uploadId: string;\n error?: Error;\n }) => {\n unprocessedUploads.delete(uploadId);\n useUploadManagerResult?.setFailed(\n uploadId,\n error ?? new Error(\"An error occurred when processing the file\"),\n );\n };\n\n useUploadManagerResult = useUploadManager({\n resolveFilePartUploadURL,\n\n onFileUploadComplete: ({ uploadId, filePartIds, parentId, name }) => {\n promise\n .retryPromise({ fn: () => completeUpload(uploadId, filePartIds) })\n .then(() => {\n options.onFileUploadComplete?.({\n uploadId,\n filePartIds,\n parentId,\n name,\n });\n })\n .catch((error) => {\n consola.error(\"Error attempting to complete upload\", { error });\n setProcessingFailed({ uploadId, error });\n });\n },\n\n onFileUploadFailed: ({ uploadId, error, parentId }) => {\n options?.onFileUploadFailed?.({ uploadId, error, parentId });\n },\n });\n\n const getEnqueueableFiles = (files: File[]): File[] => {\n const { totalPendingUploads } = useUploadManagerResult;\n\n const { maxUploadQueueSize = DEFAULT_MAX_UPLOAD_QUEUE_SIZE } = options;\n\n if (files.length + totalPendingUploads.value > maxUploadQueueSize) {\n options.onUploadQueueSizeExceeded?.(maxUploadQueueSize);\n }\n\n // only keep as many files as the queue allows\n const effectiveQueueSize = Math.max(\n 0,\n maxUploadQueueSize - totalPendingUploads.value,\n );\n return files.slice(0, effectiveQueueSize);\n };\n\n const { uploadState, ...uploadManagerResultRest } = useUploadManagerResult;\n\n const uploadQueue = computed<UploadItem[]>(() => {\n return Object.values(uploadState.value).map((uploadItem) => {\n if (\n uploadItem.status === \"complete\" &&\n unprocessedUploads.has(uploadItem.id)\n ) {\n return {\n id: uploadItem.id,\n name: uploadItem.name,\n parentId: uploadItem.parentId,\n size: uploadItem.size,\n status: \"processing\" as const,\n };\n }\n\n return uploadItem;\n });\n });\n\n const prepareQueueSize = ref(0);\n\n return {\n ...uploadManagerResultRest,\n uploadQueue,\n unprocessedUploads: readonly(unprocessedUploads),\n setProcessingCompleted,\n setProcessingFailed,\n\n isPreparingUpload: computed(() => prepareQueueSize.value > 0),\n totalFilesBeingPrepared: computed(() => prepareQueueSize.value),\n\n start: async (\n parentId: string,\n files: File[],\n options: { isFileWithProcessing?: typeof isKNWFFile } = {},\n ) => {\n const { isFileWithProcessing = isKNWFFile } = options;\n const enqueueableFiles = getEnqueueableFiles(files);\n const uploadSizeLimitBytes = getUploadSizeLimitBytes();\n const oversizedFiles = enqueueableFiles.filter(\n (file) => file.size > uploadSizeLimitBytes,\n );\n\n if (oversizedFiles.length > 0) {\n throw new rfcErrors.RFCError({\n title: \"Upload size limit exceeded\",\n status: 413,\n details: oversizedFiles.map(\n (file) =>\n `${file.name} (${formatFileSize(file.size)}) exceeds the upload limit of ${formatFileSize(uploadSizeLimitBytes)}.`,\n ),\n });\n }\n\n try {\n if (enqueueableFiles.length === 0) {\n return [];\n }\n\n prepareQueueSize.value += enqueueableFiles.length;\n\n const uploadPayload = await promise.retryPromise({\n fn: () => prepareUpload(parentId, enqueueableFiles),\n excludeError: (error: FetchError) =>\n // eslint-disable-next-line no-magic-numbers\n Boolean(error.statusCode && error.statusCode < 500),\n retryDelayMS: DEFAULT_RETRY_DELAY_MS,\n });\n\n uploadPayload.forEach(({ uploadId, file }) => {\n if (isFileWithProcessing(file)) {\n unprocessedUploads.add(uploadId);\n }\n });\n\n const uploadIds = uploadPayload.map((upload) => upload.uploadId);\n\n // accept floating promise, errors are handled inside the function\n\n useUploadManagerResult.start(parentId, uploadPayload);\n\n return uploadIds;\n } catch (error) {\n throw rfcErrors.tryParse(error) ?? error;\n } finally {\n // errors can only be thrown in the prepareUpload call, useUploadManagerResult.start does its own error handling\n prepareQueueSize.value -= enqueueableFiles.length;\n }\n },\n\n cancel: (uploadId: string) => {\n useUploadManagerResult.cancel(uploadId);\n cancelUpload(uploadId).catch((error: unknown) => {\n consola.error(\"There was a problem cancelling the upload\", { error });\n });\n },\n };\n};\n","import { computed, ref } from \"vue\";\nimport { FetchError } from \"ofetch\";\n\nimport { sleep } from \"@knime/utils\";\n\nimport { rfcErrors } from \"../../rfcErrors\";\nimport { createHttpClient } from \"../shared/httpClient\";\n\nimport type { DownloadItem as DownloadItemExternal } from \"./ui/types\";\n\nconst DEFAULT_MAX_RETRIES = null;\nconst DEFAULT_POLLING_INTERVAL = 2000;\n\ntype ArtifactStatusResponse = {\n downloadId?: string;\n status?: string;\n statusMessage?: string;\n lastUpdated?: string;\n downloadUrl?: string;\n};\n\n// Initial request can have either download url (if it can be downloaded immediately) or download id (to poll for the status)\ntype RequestDownloadResponse =\n | {\n downloadId: string;\n }\n | {\n downloadUrl: string;\n };\n\n// type guard\nconst hasDownloadUrl = (\n response: RequestDownloadResponse,\n): response is { downloadUrl: string } => {\n return \"downloadUrl\" in response;\n};\n\n/**\n * The version of the artifact to download.\n */\ntype ItemVersion = number | \"current-state\" | \"most-recent\";\n\n/**\n * Tracks the state of each concurrent download.\n */\ntype DownloadItem = DownloadItemExternal & {\n itemId: string;\n version?: ItemVersion;\n};\n\nexport type UseDownloadArtifactOptions = {\n /**\n * The maximum number of times to poll for the download URL. Default is `null` (no limit).\n */\n maxRetries?: number;\n /**\n * The interval in milliseconds between each poll. Default is `2000` ms.\n */\n pollingInterval?: number;\n};\n\nconst isAbortError = (error: unknown) =>\n error instanceof DOMException && error.name === \"AbortError\";\n\n/**\n * This composable supports multiple concurrent downloads. Each time you call ```start```, the following behavior applies:\n *\n * 1. **Immediate-ready artifact**: If the first status check for the artifact returns `READY`, then there's no polling and no need\n * to add it to `downloadItems`. The download URL is opened in the same tab immediately.\n *\n * 2. **Not-ready artifact**: If the artifact is not yet ready (e.g. needs zipping), then we add a record to `downloadItems` with status `IN_PROGRESS`\n * and repeatedly poll until it becomes `READY`, the polling times out, or the user aborts.\n *\n * **Usage**:\n * ```\n * const { start, cancel, downloadItems } = useDownloadArtifact({ ...options });\n *\n * // start a download\n * await start({ itemId: \"1234\", version: 1 });\n *\n * // if needed, cancel it:\n * cancel(\"1234\");\n *\n * // downloadItems (as a computed array) will reflect the current statuses.\n * ```\n */\nexport const useDownloadArtifact = (\n options: UseDownloadArtifactOptions = {},\n) => {\n const $ofetch = createHttpClient();\n\n const downloadItems = ref<Record<string, DownloadItem>>({});\n const abortControllers: Record<string, AbortController> = {};\n\n // Use fallback values if none are provided\n const maxRetries = options.maxRetries ?? DEFAULT_MAX_RETRIES;\n const pollingInterval = options.pollingInterval ?? DEFAULT_POLLING_INTERVAL;\n\n const cancel = (downloadId: string) => {\n const itemController = abortControllers[downloadId];\n if (itemController) {\n itemController.abort();\n delete abortControllers[downloadId];\n }\n };\n\n const removeItem = (downloadId: string) => {\n cancel(downloadId);\n delete downloadItems.value[downloadId];\n };\n\n const fetchDownloadStatus = ({\n downloadId,\n signal,\n }: {\n downloadId: string;\n signal?: AbortSignal;\n }) => {\n return $ofetch<ArtifactStatusResponse>(`/downloads/${downloadId}/status`, {\n method: \"GET\",\n signal,\n });\n };\n\n const openDownload = (downloadUrl: string) => {\n const a = document.createElement(\"a\");\n a.target = \"_blank\";\n a.href = downloadUrl;\n a.download = \"\";\n a.style.display = \"none\";\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n };\n\n /**\n * Makes a request to the download status endpoint for the given download item.\n * Returns a boolean that is true if a terminal state has been reached (download is ready,\n * download failed, or user aborted download)\n * @param downloadId the `downloadId`\n * @param signal the abort signal passed to the request to be able to abort it\n * @returns a boolean indicating whether a terminal state has been reached\n */\n const handlePollingResult = async ({\n downloadId,\n signal,\n }: {\n downloadId: string;\n signal: AbortSignal;\n }) => {\n try {\n const statusResponse = await fetchDownloadStatus({\n downloadId,\n signal,\n });\n\n if (statusResponse?.status === \"READY\" && statusResponse?.downloadUrl) {\n downloadItems.value[downloadId].status = \"READY\";\n downloadItems.value[downloadId].downloadUrl =\n statusResponse.downloadUrl;\n // open download in a new tab\n openDownload(statusResponse.downloadUrl);\n return true;\n } else if (statusResponse?.status === \"FAILED\") {\n let details = \"Download failed\";\n if (statusResponse?.statusMessage) {\n details += `: ${statusResponse.statusMessage}`;\n }\n throw new Error(details);\n }\n } catch (error: unknown) {\n consola.error(\"Error fetching status:\", error);\n // https://developer.mozilla.org/en-US/docs/Web/API/AbortController/abort\n const isAborted =\n isAbortError(error) ||\n (error instanceof FetchError && isAbortError(error.cause));\n\n if (!isAborted) {\n downloadItems.value[downloadId].status = \"FAILED\";\n downloadItems.value[downloadId].failureDetails =\n error instanceof Error ? error.message : (error as string);\n }\n return true;\n }\n return false;\n };\n\n const pollDownloadItem = async ({\n itemId,\n downloadId,\n version,\n name,\n }: {\n itemId: string;\n downloadId: string;\n version?: ItemVersion;\n name: string;\n }) => {\n const controller = new AbortController();\n abortControllers[downloadId] = controller;\n\n const signal = controller.signal;\n\n let itemName = `${name}`;\n if (version) {\n itemName += ` (${version})`;\n }\n\n downloadItems.value[downloadId] = {\n itemId,\n ...(version && { version }),\n downloadId,\n name: itemName,\n status: \"IN_PROGRESS\",\n };\n\n const abortListener = () => {\n controller.signal.removeEventListener(\"abort\", abortListener);\n if (!downloadItems.value[downloadId]) {\n return;\n }\n downloadItems.value[downloadId].status = \"CANCELLED\";\n downloadItems.value[downloadId].failureDetails =\n \"Download was cancelled manually\";\n };\n controller.signal.addEventListener(\"abort\", abortListener);\n\n let tries = 0;\n // eslint-disable-next-line no-unmodified-loop-condition\n while (maxRetries === null || tries < maxRetries) {\n tries++;\n await sleep(pollingInterval);\n\n const isTerminalState = await handlePollingResult({ downloadId, signal });\n\n if (isTerminalState) {\n break;\n }\n }\n\n delete abortControllers[downloadId];\n\n if (maxRetries !== null && tries >= maxRetries) {\n downloadItems.value[downloadId].status = \"FAILED\";\n downloadItems.value[downloadId].failureDetails = \"Download timed out\";\n }\n };\n\n const start = async ({\n itemId,\n version,\n name,\n }: {\n itemId: string;\n name: string;\n version?: ItemVersion;\n }) => {\n try {\n const response = await $ofetch<RequestDownloadResponse>(\n `/repository/${itemId}/artifact`,\n {\n method: \"GET\",\n query: { version },\n },\n );\n\n // if download is ready, open url immediately\n if (hasDownloadUrl(response)) {\n openDownload(response.downloadUrl);\n return;\n }\n\n // otherwise start polling download status\n await pollDownloadItem({\n itemId,\n version,\n downloadId: response.downloadId,\n name,\n });\n } catch (error: unknown) {\n // here only errors thrown by the initial requests are caught;\n // errors occurring while polling will be handled in pollDownloadItem\n throw rfcErrors.tryParse(error) ?? error;\n }\n };\n\n const totalItemsBeingZipped = computed(\n () =>\n Object.values(downloadItems.value).filter(\n ({ status }) => status === \"IN_PROGRESS\",\n ).length,\n );\n\n const resetState = () => {\n for (const [downloadId, controller] of Object.entries(abortControllers)) {\n controller?.abort();\n delete abortControllers[downloadId];\n }\n downloadItems.value = {};\n };\n\n const downloadItemsArray = computed(() => Object.values(downloadItems.value));\n\n return {\n /**\n * Initiates a download of the given itemId and version.\n */\n start,\n\n /**\n * Cancels the ongoing download for a given itemId (if any).\n * Sets the status in `downloadItems` to `CANCELLED`.\n */\n cancel,\n\n /**\n * Removes item from `downloadItems`.\n */\n removeItem,\n\n /**\n * A computed array of all current items that are being zipped and prepared for download.\n */\n downloadItems: downloadItemsArray,\n\n /**\n * The total number of zipping items in progress.\n */\n totalItemsBeingZipped,\n\n /**\n * Resets the state of the composable, clearing all downloads and controllers.\n */\n resetState,\n\n /**\n * Opens a download from the given url\n */\n openDownload,\n };\n};\n"],"names":["_useModel","_createElementBlock","_normalizeClass","_createElementVNode","_hoisted_1","_createTextVNode","_toDisplayString","_hoisted_2","_createVNode","_unref","_createBlock","_Transition","_renderSlot","_openBlock","_Fragment","_renderList","DEFAULT_RETRY_DELAY_MS","DEFAULT_RETRY_COUNT","actions","UploadProgressPanelItem","DownloadProgressPanelItem","promiseUtils.AbortError","promiseUtils.createAbortablePromise","promiseUtils.retryPromise","items","promise.retryPromise","options"],"mappings":"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","x_google_ignoreList":[4,5,6,7]}
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* filesize
|
|
3
|
+
*
|
|
4
|
+
* @copyright 2022 Jason Mulligan <jason.mulligan@avoidwork.com>
|
|
5
|
+
* @license BSD-3-Clause
|
|
6
|
+
* @version 10.0.6
|
|
7
|
+
*/
|
|
8
|
+
const ARRAY = "array";
|
|
9
|
+
const BIT = "bit";
|
|
10
|
+
const BITS = "bits";
|
|
11
|
+
const BYTE = "byte";
|
|
12
|
+
const BYTES = "bytes";
|
|
13
|
+
const EMPTY = "";
|
|
14
|
+
const EXPONENT = "exponent";
|
|
15
|
+
const FUNCTION = "function";
|
|
16
|
+
const IEC = "iec";
|
|
17
|
+
const INVALID_NUMBER = "Invalid number";
|
|
18
|
+
const INVALID_ROUND = "Invalid rounding method";
|
|
19
|
+
const JEDEC = "jedec";
|
|
20
|
+
const OBJECT = "object";
|
|
21
|
+
const PERIOD = ".";
|
|
22
|
+
const ROUND = "round";
|
|
23
|
+
const S = "s";
|
|
24
|
+
const SI_KBIT = "kbit";
|
|
25
|
+
const SI_KBYTE = "kB";
|
|
26
|
+
const SPACE = " ";
|
|
27
|
+
const STRING = "string";
|
|
28
|
+
const ZERO = "0";
|
|
29
|
+
const STRINGS = {
|
|
30
|
+
symbol: {
|
|
31
|
+
iec: {
|
|
32
|
+
bits: ["bit", "Kibit", "Mibit", "Gibit", "Tibit", "Pibit", "Eibit", "Zibit", "Yibit"],
|
|
33
|
+
bytes: ["B", "KiB", "MiB", "GiB", "TiB", "PiB", "EiB", "ZiB", "YiB"]
|
|
34
|
+
},
|
|
35
|
+
jedec: {
|
|
36
|
+
bits: ["bit", "Kbit", "Mbit", "Gbit", "Tbit", "Pbit", "Ebit", "Zbit", "Ybit"],
|
|
37
|
+
bytes: ["B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"]
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
fullform: {
|
|
41
|
+
iec: ["", "kibi", "mebi", "gibi", "tebi", "pebi", "exbi", "zebi", "yobi"],
|
|
42
|
+
jedec: ["", "kilo", "mega", "giga", "tera", "peta", "exa", "zetta", "yotta"]
|
|
43
|
+
}
|
|
44
|
+
};function filesize (arg, {
|
|
45
|
+
bits = false,
|
|
46
|
+
pad = false,
|
|
47
|
+
base = -1,
|
|
48
|
+
round = 2,
|
|
49
|
+
locale = EMPTY,
|
|
50
|
+
localeOptions = {},
|
|
51
|
+
separator = EMPTY,
|
|
52
|
+
spacer = SPACE,
|
|
53
|
+
symbols = {},
|
|
54
|
+
standard = EMPTY,
|
|
55
|
+
output = STRING,
|
|
56
|
+
fullform = false,
|
|
57
|
+
fullforms = [],
|
|
58
|
+
exponent = -1,
|
|
59
|
+
roundingMethod = ROUND,
|
|
60
|
+
precision = 0
|
|
61
|
+
} = {}) {
|
|
62
|
+
let e = exponent,
|
|
63
|
+
num = Number(arg),
|
|
64
|
+
result = [],
|
|
65
|
+
val = 0,
|
|
66
|
+
u = EMPTY;
|
|
67
|
+
|
|
68
|
+
// Sync base & standard
|
|
69
|
+
if (base === -1 && standard.length === 0) {
|
|
70
|
+
base = 10;
|
|
71
|
+
standard = JEDEC;
|
|
72
|
+
} else if (base === -1 && standard.length > 0) {
|
|
73
|
+
standard = standard === IEC ? IEC : JEDEC;
|
|
74
|
+
base = standard === IEC ? 2 : 10;
|
|
75
|
+
} else {
|
|
76
|
+
base = base === 2 ? 2 : 10;
|
|
77
|
+
standard = base === 10 ? JEDEC : standard === JEDEC ? JEDEC : IEC;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
const ceil = base === 10 ? 1000 : 1024,
|
|
81
|
+
full = fullform === true,
|
|
82
|
+
neg = num < 0,
|
|
83
|
+
roundingFunc = Math[roundingMethod];
|
|
84
|
+
|
|
85
|
+
if (typeof arg !== "bigint" && isNaN(arg)) {
|
|
86
|
+
throw new TypeError(INVALID_NUMBER);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
if (typeof roundingFunc !== FUNCTION) {
|
|
90
|
+
throw new TypeError(INVALID_ROUND);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// Flipping a negative number to determine the size
|
|
94
|
+
if (neg) {
|
|
95
|
+
num = -num;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// Determining the exponent
|
|
99
|
+
if (e === -1 || isNaN(e)) {
|
|
100
|
+
e = Math.floor(Math.log(num) / Math.log(ceil));
|
|
101
|
+
|
|
102
|
+
if (e < 0) {
|
|
103
|
+
e = 0;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// Exceeding supported length, time to reduce & multiply
|
|
108
|
+
if (e > 8) {
|
|
109
|
+
if (precision > 0) {
|
|
110
|
+
precision += 8 - e;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
e = 8;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
if (output === EXPONENT) {
|
|
117
|
+
return e;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// Zero is now a special case because bytes divide by 1
|
|
121
|
+
if (num === 0) {
|
|
122
|
+
result[0] = 0;
|
|
123
|
+
u = result[1] = STRINGS.symbol[standard][bits ? BITS : BYTES][e];
|
|
124
|
+
} else {
|
|
125
|
+
val = num / (base === 2 ? Math.pow(2, e * 10) : Math.pow(1000, e));
|
|
126
|
+
|
|
127
|
+
if (bits) {
|
|
128
|
+
val = val * 8;
|
|
129
|
+
|
|
130
|
+
if (val >= ceil && e < 8) {
|
|
131
|
+
val = val / ceil;
|
|
132
|
+
e++;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
const p = Math.pow(10, e > 0 ? round : 0);
|
|
137
|
+
result[0] = roundingFunc(val * p) / p;
|
|
138
|
+
|
|
139
|
+
if (result[0] === ceil && e < 8 && exponent === -1) {
|
|
140
|
+
result[0] = 1;
|
|
141
|
+
e++;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
u = result[1] = base === 10 && e === 1 ? bits ? SI_KBIT : SI_KBYTE : STRINGS.symbol[standard][bits ? BITS : BYTES][e];
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
// Decorating a 'diff'
|
|
148
|
+
if (neg) {
|
|
149
|
+
result[0] = -result[0];
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
// Setting optional precision
|
|
153
|
+
if (precision > 0) {
|
|
154
|
+
result[0] = result[0].toPrecision(precision);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
// Applying custom symbol
|
|
158
|
+
result[1] = symbols[result[1]] || result[1];
|
|
159
|
+
|
|
160
|
+
if (locale === true) {
|
|
161
|
+
result[0] = result[0].toLocaleString();
|
|
162
|
+
} else if (locale.length > 0) {
|
|
163
|
+
result[0] = result[0].toLocaleString(locale, localeOptions);
|
|
164
|
+
} else if (separator.length > 0) {
|
|
165
|
+
result[0] = result[0].toString().replace(PERIOD, separator);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
if (pad && Number.isInteger(result[0]) === false && round > 0) {
|
|
169
|
+
const x = separator || PERIOD,
|
|
170
|
+
tmp = result[0].toString().split(x),
|
|
171
|
+
s = tmp[1] || EMPTY,
|
|
172
|
+
l = s.length,
|
|
173
|
+
n = round - l;
|
|
174
|
+
|
|
175
|
+
result[0] = `${tmp[0]}${x}${s.padEnd(l + n, ZERO)}`;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
if (full) {
|
|
179
|
+
result[1] = fullforms[e] ? fullforms[e] : STRINGS.fullform[standard][e] + (bits ? BIT : BYTE) + (result[0] === 1 ? EMPTY : S);
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
// Returning Array, Object, or String (default)
|
|
183
|
+
return output === ARRAY ? result : output === OBJECT ? {
|
|
184
|
+
value: result[0],
|
|
185
|
+
symbol: result[1],
|
|
186
|
+
exponent: e,
|
|
187
|
+
unit: u
|
|
188
|
+
} : result.join(spacer);
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
const getLocalTimeZone = () => Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
192
|
+
|
|
193
|
+
const formatDateString = (dateString, useTimeZone = false) => {
|
|
194
|
+
const date = new Date(dateString);
|
|
195
|
+
if (isNaN(date)) {
|
|
196
|
+
throw Error("Invalid Date format");
|
|
197
|
+
}
|
|
198
|
+
const baseDateOptions = {
|
|
199
|
+
day: "numeric",
|
|
200
|
+
month: "short",
|
|
201
|
+
year: "numeric"
|
|
202
|
+
};
|
|
203
|
+
const dateOptions = useTimeZone ? { ...baseDateOptions, timeZone: getLocalTimeZone() } : baseDateOptions;
|
|
204
|
+
return date.toLocaleDateString("en-US", dateOptions);
|
|
205
|
+
};
|
|
206
|
+
const formatTimeString = (timeString, useTimeZone = false) => {
|
|
207
|
+
const time = new Date(timeString);
|
|
208
|
+
if (isNaN(time)) {
|
|
209
|
+
throw Error("Invalid Date format");
|
|
210
|
+
}
|
|
211
|
+
const baseTimeOptions = {
|
|
212
|
+
hour: "numeric",
|
|
213
|
+
minute: "2-digit"
|
|
214
|
+
};
|
|
215
|
+
const timeOptions = useTimeZone ? { ...baseTimeOptions, timeZone: getLocalTimeZone() } : baseTimeOptions;
|
|
216
|
+
return time.toLocaleTimeString("en-US", timeOptions);
|
|
217
|
+
};
|
|
218
|
+
const formatDateTimeString = (dateTimeString, useTimeZone = false) => {
|
|
219
|
+
return `${formatDateString(dateTimeString, useTimeZone)} ${formatTimeString(
|
|
220
|
+
dateTimeString,
|
|
221
|
+
useTimeZone
|
|
222
|
+
)}`;
|
|
223
|
+
};
|
|
224
|
+
const formatLocalDateTimeString = (date, showTime) => showTime ? formatDateTimeString(date, true) : formatDateString(date, true);
|
|
225
|
+
const formatFileSize = (bytes, decimals = 1) => {
|
|
226
|
+
const safeBytes = Number.isFinite(bytes) && bytes >= 0 ? bytes : 0;
|
|
227
|
+
const safeDecimals = Number.isFinite(decimals) && decimals >= 0 ? Math.floor(decimals) : 0;
|
|
228
|
+
return filesize(safeBytes, {
|
|
229
|
+
output: "string",
|
|
230
|
+
base: 2,
|
|
231
|
+
standard: "iec",
|
|
232
|
+
round: safeDecimals,
|
|
233
|
+
pad: true
|
|
234
|
+
});
|
|
235
|
+
};
|
|
236
|
+
|
|
237
|
+
export { formatDateTimeString as a, formatLocalDateTimeString as b, formatFileSize as f };
|
|
238
|
+
//# sourceMappingURL=format-ra_vlnN7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-ra_vlnN7.js","sources":["../../../node_modules/.pnpm/filesize@10.0.6/node_modules/filesize/dist/filesize.esm.js","../../../node_modules/.pnpm/@knime+utils@1.11.0_consola@3.4.2/node_modules/@knime/utils/src/localTimezone.ts","../../../node_modules/.pnpm/@knime+utils@1.11.0_consola@3.4.2/node_modules/@knime/utils/src/format.ts"],"sourcesContent":["/**\r\n * filesize\r\n *\r\n * @copyright 2022 Jason Mulligan <jason.mulligan@avoidwork.com>\r\n * @license BSD-3-Clause\r\n * @version 10.0.6\r\n */\r\nconst ARRAY = \"array\";\r\nconst BIT = \"bit\";\r\nconst BITS = \"bits\";\r\nconst BYTE = \"byte\";\r\nconst BYTES = \"bytes\";\r\nconst EMPTY = \"\";\r\nconst EXPONENT = \"exponent\";\r\nconst FUNCTION = \"function\";\r\nconst IEC = \"iec\";\r\nconst INVALID_NUMBER = \"Invalid number\";\r\nconst INVALID_ROUND = \"Invalid rounding method\";\r\nconst JEDEC = \"jedec\";\r\nconst OBJECT = \"object\";\r\nconst PERIOD = \".\";\r\nconst ROUND = \"round\";\r\nconst S = \"s\";\r\nconst SI_KBIT = \"kbit\";\r\nconst SI_KBYTE = \"kB\";\r\nconst SPACE = \" \";\r\nconst STRING = \"string\";\r\nconst ZERO = \"0\";\r\nconst STRINGS = {\r\n\tsymbol: {\r\n\t\tiec: {\r\n\t\t\tbits: [\"bit\", \"Kibit\", \"Mibit\", \"Gibit\", \"Tibit\", \"Pibit\", \"Eibit\", \"Zibit\", \"Yibit\"],\r\n\t\t\tbytes: [\"B\", \"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\", \"EiB\", \"ZiB\", \"YiB\"]\r\n\t\t},\r\n\t\tjedec: {\r\n\t\t\tbits: [\"bit\", \"Kbit\", \"Mbit\", \"Gbit\", \"Tbit\", \"Pbit\", \"Ebit\", \"Zbit\", \"Ybit\"],\r\n\t\t\tbytes: [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"]\r\n\t\t}\r\n\t},\r\n\tfullform: {\r\n\t\tiec: [\"\", \"kibi\", \"mebi\", \"gibi\", \"tebi\", \"pebi\", \"exbi\", \"zebi\", \"yobi\"],\r\n\t\tjedec: [\"\", \"kilo\", \"mega\", \"giga\", \"tera\", \"peta\", \"exa\", \"zetta\", \"yotta\"]\r\n\t}\r\n};function filesize (arg, {\r\n\tbits = false,\r\n\tpad = false,\r\n\tbase = -1,\r\n\tround = 2,\r\n\tlocale = EMPTY,\r\n\tlocaleOptions = {},\r\n\tseparator = EMPTY,\r\n\tspacer = SPACE,\r\n\tsymbols = {},\r\n\tstandard = EMPTY,\r\n\toutput = STRING,\r\n\tfullform = false,\r\n\tfullforms = [],\r\n\texponent = -1,\r\n\troundingMethod = ROUND,\r\n\tprecision = 0\r\n} = {}) {\r\n\tlet e = exponent,\r\n\t\tnum = Number(arg),\r\n\t\tresult = [],\r\n\t\tval = 0,\r\n\t\tu = EMPTY;\r\n\r\n\t// Sync base & standard\r\n\tif (base === -1 && standard.length === 0) {\r\n\t\tbase = 10;\r\n\t\tstandard = JEDEC;\r\n\t} else if (base === -1 && standard.length > 0) {\r\n\t\tstandard = standard === IEC ? IEC : JEDEC;\r\n\t\tbase = standard === IEC ? 2 : 10;\r\n\t} else {\r\n\t\tbase = base === 2 ? 2 : 10;\r\n\t\tstandard = base === 10 ? JEDEC : standard === JEDEC ? JEDEC : IEC;\r\n\t}\r\n\r\n\tconst ceil = base === 10 ? 1000 : 1024,\r\n\t\tfull = fullform === true,\r\n\t\tneg = num < 0,\r\n\t\troundingFunc = Math[roundingMethod];\r\n\r\n\tif (typeof arg !== \"bigint\" && isNaN(arg)) {\r\n\t\tthrow new TypeError(INVALID_NUMBER);\r\n\t}\r\n\r\n\tif (typeof roundingFunc !== FUNCTION) {\r\n\t\tthrow new TypeError(INVALID_ROUND);\r\n\t}\r\n\r\n\t// Flipping a negative number to determine the size\r\n\tif (neg) {\r\n\t\tnum = -num;\r\n\t}\r\n\r\n\t// Determining the exponent\r\n\tif (e === -1 || isNaN(e)) {\r\n\t\te = Math.floor(Math.log(num) / Math.log(ceil));\r\n\r\n\t\tif (e < 0) {\r\n\t\t\te = 0;\r\n\t\t}\r\n\t}\r\n\r\n\t// Exceeding supported length, time to reduce & multiply\r\n\tif (e > 8) {\r\n\t\tif (precision > 0) {\r\n\t\t\tprecision += 8 - e;\r\n\t\t}\r\n\r\n\t\te = 8;\r\n\t}\r\n\r\n\tif (output === EXPONENT) {\r\n\t\treturn e;\r\n\t}\r\n\r\n\t// Zero is now a special case because bytes divide by 1\r\n\tif (num === 0) {\r\n\t\tresult[0] = 0;\r\n\t\tu = result[1] = STRINGS.symbol[standard][bits ? BITS : BYTES][e];\r\n\t} else {\r\n\t\tval = num / (base === 2 ? Math.pow(2, e * 10) : Math.pow(1000, e));\r\n\r\n\t\tif (bits) {\r\n\t\t\tval = val * 8;\r\n\r\n\t\t\tif (val >= ceil && e < 8) {\r\n\t\t\t\tval = val / ceil;\r\n\t\t\t\te++;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst p = Math.pow(10, e > 0 ? round : 0);\r\n\t\tresult[0] = roundingFunc(val * p) / p;\r\n\r\n\t\tif (result[0] === ceil && e < 8 && exponent === -1) {\r\n\t\t\tresult[0] = 1;\r\n\t\t\te++;\r\n\t\t}\r\n\r\n\t\tu = result[1] = base === 10 && e === 1 ? bits ? SI_KBIT : SI_KBYTE : STRINGS.symbol[standard][bits ? BITS : BYTES][e];\r\n\t}\r\n\r\n\t// Decorating a 'diff'\r\n\tif (neg) {\r\n\t\tresult[0] = -result[0];\r\n\t}\r\n\r\n\t// Setting optional precision\r\n\tif (precision > 0) {\r\n\t\tresult[0] = result[0].toPrecision(precision);\r\n\t}\r\n\r\n\t// Applying custom symbol\r\n\tresult[1] = symbols[result[1]] || result[1];\r\n\r\n\tif (locale === true) {\r\n\t\tresult[0] = result[0].toLocaleString();\r\n\t} else if (locale.length > 0) {\r\n\t\tresult[0] = result[0].toLocaleString(locale, localeOptions);\r\n\t} else if (separator.length > 0) {\r\n\t\tresult[0] = result[0].toString().replace(PERIOD, separator);\r\n\t}\r\n\r\n\tif (pad && Number.isInteger(result[0]) === false && round > 0) {\r\n\t\tconst x = separator || PERIOD,\r\n\t\t\ttmp = result[0].toString().split(x),\r\n\t\t\ts = tmp[1] || EMPTY,\r\n\t\t\tl = s.length,\r\n\t\t\tn = round - l;\r\n\r\n\t\tresult[0] = `${tmp[0]}${x}${s.padEnd(l + n, ZERO)}`;\r\n\t}\r\n\r\n\tif (full) {\r\n\t\tresult[1] = fullforms[e] ? fullforms[e] : STRINGS.fullform[standard][e] + (bits ? BIT : BYTE) + (result[0] === 1 ? EMPTY : S);\r\n\t}\r\n\r\n\t// Returning Array, Object, or String (default)\r\n\treturn output === ARRAY ? result : output === OBJECT ? {\r\n\t\tvalue: result[0],\r\n\t\tsymbol: result[1],\r\n\t\texponent: e,\r\n\t\tunit: u\r\n\t} : result.join(spacer);\r\n}\r\n\r\n// Partial application for functional programming\r\nfunction partial ({\r\n\tbits = false,\r\n\tpad = false,\r\n\tbase = -1,\r\n\tround = 2,\r\n\tlocale = EMPTY,\r\n\tlocaleOptions = {},\r\n\tseparator = EMPTY,\r\n\tspacer = SPACE,\r\n\tsymbols = {},\r\n\tstandard = EMPTY,\r\n\toutput = STRING,\r\n\tfullform = false,\r\n\tfullforms = [],\r\n\texponent = -1,\r\n\troundingMethod = ROUND,\r\n\tprecision = 0\r\n} = {}) {\r\n\treturn arg => filesize(arg, {\r\n\t\tbits,\r\n\t\tpad,\r\n\t\tbase,\r\n\t\tround,\r\n\t\tlocale,\r\n\t\tlocaleOptions,\r\n\t\tseparator,\r\n\t\tspacer,\r\n\t\tsymbols,\r\n\t\tstandard,\r\n\t\toutput,\r\n\t\tfullform,\r\n\t\tfullforms,\r\n\t\texponent,\r\n\t\troundingMethod,\r\n\t\tprecision\r\n\t});\r\n}export{filesize,partial};","/**\n * Get the users local timezone.\n *\n * @returns current users timezone (browser based) tz db string (e. g. Europe/Berlin).\n */\n// eslint-disable-next-line new-cap\nexport default () => Intl.DateTimeFormat().resolvedOptions().timeZone;\n","import { filesize } from \"filesize\";\n\nimport getLocalTimeZone from \"./localTimezone\";\n/**\n * Converts the specified date String to human readable text containing the day, month, and year.\n * Example: '2018-07-31T09:44:31+00:00' => 'Jul 31, 2018'\n *\n * @param dateString String representation of the Date to format\n * @param useTimeZone to set the timeZone where the user is located, and display local date and time\n * @returns human readable date String\n */\nexport const formatDateString = (\n dateString: string | number,\n useTimeZone = false,\n) => {\n const date = new Date(dateString);\n\n // @ts-expect-error Argument of type 'Date' is not assignable to parameter of type 'number'\n if (isNaN(date)) {\n throw Error(\"Invalid Date format\");\n }\n\n const baseDateOptions: Intl.DateTimeFormatOptions = {\n day: \"numeric\",\n month: \"short\",\n year: \"numeric\",\n };\n\n // This only works for the default locale of en-US, as support of other locals in node js might not be available\n // See for example this issue https://github.com/nodejs/node/issues/8500\n const dateOptions: Intl.DateTimeFormatOptions = useTimeZone\n ? { ...baseDateOptions, timeZone: getLocalTimeZone() }\n : baseDateOptions;\n\n return date.toLocaleDateString(\"en-US\", dateOptions);\n};\n\n/**\n * Converts the specified time String to human readable text containing the hour (12-hour) and minute.\n * Example: '2018-07-31T09:44:31+00:00' => '9:44 AM'\n *\n * @param timeString String representation of the Date (including time) to format\n * @param useTimeZone to set the timeZone where the user is located, and display local date and time\n * @returns human readable time String\n */\nexport const formatTimeString = (\n timeString: string | number,\n useTimeZone = false,\n) => {\n const time = new Date(timeString);\n\n // @ts-expect-error Argument of type 'Date' is not assignable to parameter of type 'number'\n if (isNaN(time)) {\n throw Error(\"Invalid Date format\");\n }\n\n // This only works for the default locale of en-US, as support of other locals in node js might not be available\n // See for example this issue https://github.com/nodejs/node/issues/8500\n const baseTimeOptions: Intl.DateTimeFormatOptions = {\n hour: \"numeric\",\n minute: \"2-digit\",\n };\n\n const timeOptions: Intl.DateTimeFormatOptions = useTimeZone\n ? { ...baseTimeOptions, timeZone: getLocalTimeZone() }\n : baseTimeOptions;\n\n return time.toLocaleTimeString(\"en-US\", timeOptions);\n};\n\n/**\n * Converts the specified time String to human readable text containing the date (day, month, year) and time (hour,\n * minute; 12-hour).\n * Example: '2018-07-31T09:44:31+00:00' => 'Jul 31, 2018 9:44 AM'\n *\n * @param dateTimeString String representation of the Date (including time and date) to format\n * @param useTimeZone to set the timeZone where the user is located, and display local date and time\n * @returns human readable date/time String\n */\nexport const formatDateTimeString = (\n dateTimeString: string | number,\n useTimeZone = false,\n) => {\n return `${formatDateString(dateTimeString, useTimeZone)} ${formatTimeString(\n dateTimeString,\n useTimeZone,\n )}`;\n};\n\n/**\n * Converts the specified date and time to the user time zone with option to display (day, month, year) only or with time (hour,\n * minute; 12-hour).\n *\n * @param showTime String representation of the Date to convert and format\n * @param String | number} date String representation of the Date to convert and format\n * @returns human readable date/time String converted to user time zone\n */\nexport const formatLocalDateTimeString = (date: string, showTime: boolean) =>\n showTime ? formatDateTimeString(date, true) : formatDateString(date, true);\n\nexport const formatFileSize = (bytes: number, decimals = 1): string => {\n const safeBytes = Number.isFinite(bytes) && bytes >= 0 ? bytes : 0;\n const safeDecimals =\n Number.isFinite(decimals) && decimals >= 0 ? Math.floor(decimals) : 0;\n\n return filesize(safeBytes, {\n output: \"string\",\n base: 2,\n standard: \"iec\",\n round: safeDecimals,\n pad: true,\n }) as string;\n};\n"],"names":[],"mappings":"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","x_google_ignoreList":[0,1,2]}
|