@anzusystems/common-admin 2.0.0-rc.10 → 2.0.0-rc.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (465) hide show
  1. package/dist/domains/anzuUser/components/AAnzuUserDatatable.js.map +1 -1
  2. package/dist/domains/anzuUser/components/AAnzuUserDatatable.vue_vue_type_script_setup_true_lang.js.map +1 -1
  3. package/dist/domains/anzuUser/components/AAnzuUserFilter.js.map +1 -1
  4. package/dist/domains/anzuUser/components/AAnzuUserFilter.vue_vue_type_script_setup_true_lang.js.map +1 -1
  5. package/dist/domains/anzuUser/components/AAnzuUserForm.js.map +1 -1
  6. package/dist/domains/anzuUser/components/AAnzuUserForm.vue_vue_type_script_setup_true_lang.js.map +1 -1
  7. package/dist/domains/anzuUser/components/AAnzuUserRoleAutocomplete.js.map +1 -1
  8. package/dist/domains/anzuUser/components/AUserBulkActionDialog.js.map +1 -1
  9. package/dist/domains/anzuUser/components/AUserBulkActionDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  10. package/dist/domains/anzuUser/components/AUserCopyPermissionsDialog.js.map +1 -1
  11. package/dist/domains/anzuUser/components/AUserCopyPermissionsDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  12. package/dist/domains/anzuUser/components/AUserCreateInSystemButton.js.map +1 -1
  13. package/dist/domains/anzuUser/components/AUserCreateInSystemButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  14. package/dist/domains/anzuUser/components/AUserEnabledSwitch.js.map +1 -1
  15. package/dist/domains/anzuUser/components/AUserEnabledSwitch.vue_vue_type_script_setup_true_lang.js.map +1 -1
  16. package/dist/domains/anzuUser/components/AUserManageButton.js.map +1 -1
  17. package/dist/domains/anzuUser/components/AUserMetadataForm.js.map +1 -1
  18. package/dist/domains/anzuUser/components/AUserMetadataForm.vue_vue_type_script_setup_true_lang.js.map +1 -1
  19. package/dist/domains/anzuUser/components/AUserMetadataRepairDialog.js.map +1 -1
  20. package/dist/domains/anzuUser/components/AUserMetadataRepairDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  21. package/dist/domains/anzuUser/components/AUserOtherSystemsTable.js.map +1 -1
  22. package/dist/domains/anzuUser/components/AUserSystemOverview.js.map +1 -1
  23. package/dist/domains/anzuUser/components/AUserSystemOverview.vue_vue_type_script_setup_true_lang.js.map +1 -1
  24. package/dist/domains/anzuUser/components/AUserSystemPanel.js.map +1 -1
  25. package/dist/domains/anzuUser/components/AUserSystemPanel.vue_vue_type_script_setup_true_lang.js.map +1 -1
  26. package/dist/domains/anzuUser/components/AUserSystemStatusChip.js.map +1 -1
  27. package/dist/domains/anzuUser/components/AUserTabsShell.js.map +1 -1
  28. package/dist/domains/anzuUser/components/AUserTabsShell.vue_vue_type_script_setup_true_lang.js.map +1 -1
  29. package/dist/domains/auth/components/Acl.js.map +1 -1
  30. package/dist/domains/auth/components/Acl.vue_vue_type_script_setup_true_lang.js.map +1 -1
  31. package/dist/domains/cached/components/ACachedChip.js.map +1 -1
  32. package/dist/domains/cached/components/ACachedChip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  33. package/dist/domains/cached/components/ACachedUserChip.js.map +1 -1
  34. package/dist/domains/cached/components/ACachedUserChip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  35. package/dist/domains/collab/components/ACollabCountdown.js.map +1 -1
  36. package/dist/domains/collab/components/ACollabCountdown.vue_vue_type_script_setup_true_lang.js.map +1 -1
  37. package/dist/domains/collab/components/ACollabLockedByUser.js.map +1 -1
  38. package/dist/domains/collab/components/ACollabManagement.js.map +1 -1
  39. package/dist/domains/collab/components/ACollabManagement.vue_vue_type_script_setup_true_lang.js.map +1 -1
  40. package/dist/domains/customDataForm/components/ACustomDataForm.js.map +1 -1
  41. package/dist/domains/customDataForm/components/ACustomDataForm.vue_vue_type_script_setup_true_lang.js.map +1 -1
  42. package/dist/domains/customDataForm/components/ACustomDataFormElement.js.map +1 -1
  43. package/dist/domains/customDataForm/components/ACustomDataFormElement.vue_vue_type_script_setup_true_lang.js.map +1 -1
  44. package/dist/domains/customDataForm/components/ACustomDataFormHiddenPart.js.map +1 -1
  45. package/dist/domains/dam/assetDetail/components/AColorBox.js.map +1 -1
  46. package/dist/domains/dam/assetDetail/components/AssetCustomMetadataForm.js.map +1 -1
  47. package/dist/domains/dam/assetDetail/components/AssetCustomMetadataForm.vue_vue_type_script_setup_true_lang.js.map +1 -1
  48. package/dist/domains/dam/assetDetail/components/AssetDetailDialog.js.map +1 -1
  49. package/dist/domains/dam/assetDetail/components/AssetDetailDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  50. package/dist/domains/dam/assetDetail/components/AssetDetailDialogFrame.js.map +1 -1
  51. package/dist/domains/dam/assetDetail/components/AssetDetailDialogFrame.vue_vue_type_script_setup_true_lang.js.map +1 -1
  52. package/dist/domains/dam/assetDetail/components/AssetDetailDialogLoader.js.map +1 -1
  53. package/dist/domains/dam/assetDetail/components/AssetDetailDialogSidebar.js.map +1 -1
  54. package/dist/domains/dam/assetDetail/components/AssetDetailSidebarActionsTeleportTarget.js.map +1 -1
  55. package/dist/domains/dam/assetDetail/components/AssetDetailSidebarActionsWrapper.js.map +1 -1
  56. package/dist/domains/dam/assetDetail/components/AssetDetailSidebarActionsWrapper.vue_vue_type_script_setup_true_lang.js.map +1 -1
  57. package/dist/domains/dam/assetDetail/components/AssetDetailSidebarFrame.js.map +1 -1
  58. package/dist/domains/dam/assetDetail/components/AssetDetailSidebarFrame.vue_vue_type_script_setup_true_lang.js.map +1 -1
  59. package/dist/domains/dam/assetDetail/components/AssetDetailSidebarMetadata.js.map +1 -1
  60. package/dist/domains/dam/assetDetail/components/AssetDetailSidebarMetadata.vue_vue_type_script_setup_true_lang.js.map +1 -1
  61. package/dist/domains/dam/assetDetail/components/AssetDetailSidebarROI.js.map +1 -1
  62. package/dist/domains/dam/assetDetail/components/AssetDetailSidebarROI.vue_vue_type_script_setup_true_lang.js.map +1 -1
  63. package/dist/domains/dam/assetDetail/components/AssetFileFailReasonChip.js.map +1 -1
  64. package/dist/domains/dam/assetDetail/components/AssetFileFailReasonChip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  65. package/dist/domains/dam/assetDetail/components/AssetFileInfoPanel.js.map +1 -1
  66. package/dist/domains/dam/assetDetail/components/AssetFileInfoPanel.vue_vue_type_script_setup_true_lang.js.map +1 -1
  67. package/dist/domains/dam/assetDetail/components/AssetFileRotate.js.map +1 -1
  68. package/dist/domains/dam/assetDetail/components/AssetFileRotate.vue_vue_type_script_setup_true_lang.js.map +1 -1
  69. package/dist/domains/dam/assetDetail/components/AssetImage.js.map +1 -1
  70. package/dist/domains/dam/assetDetail/components/AssetImage.vue_vue_type_script_setup_true_lang.js.map +1 -1
  71. package/dist/domains/dam/assetDetail/components/AssetImageMetaIcons.js.map +1 -1
  72. package/dist/domains/dam/assetDetail/components/AssetImageMetaIcons.vue_vue_type_script_setup_true_lang.js.map +1 -1
  73. package/dist/domains/dam/assetDetail/components/AssetInfobox.js.map +1 -1
  74. package/dist/domains/dam/assetDetail/components/AssetInfobox.vue_vue_type_script_setup_true_lang.js.map +1 -1
  75. package/dist/domains/dam/assetDetail/components/AssetMetadata.js.map +1 -1
  76. package/dist/domains/dam/assetDetail/components/AssetMetadata.vue_vue_type_script_setup_true_lang.js.map +1 -1
  77. package/dist/domains/dam/assetDetail/components/AssetMetadataImageAttributes.js.map +1 -1
  78. package/dist/domains/dam/assetDetail/components/AssetMetadataImageAttributes.vue_vue_type_script_setup_true_lang.js.map +1 -1
  79. package/dist/domains/dam/assetSelect/components/AAssetListInner.js.map +1 -1
  80. package/dist/domains/dam/assetSelect/components/AAssetListInner.vue_vue_type_script_setup_true_lang.js.map +1 -1
  81. package/dist/domains/dam/assetSelect/components/AAssetSelect.js.map +1 -1
  82. package/dist/domains/dam/assetSelect/components/AAssetSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  83. package/dist/domains/dam/assetSelect/components/AAssetSelectMedia.js.map +1 -1
  84. package/dist/domains/dam/assetSelect/components/AAssetSelectMedia.vue_vue_type_script_setup_true_lang.js.map +1 -1
  85. package/dist/domains/dam/assetSelect/components/AssetDistributionServiceNameFilter.js.map +1 -1
  86. package/dist/domains/dam/assetSelect/components/AssetImagePreview.js.map +1 -1
  87. package/dist/domains/dam/assetSelect/components/AssetImagePreview.vue_vue_type_script_setup_true_lang.js.map +1 -1
  88. package/dist/domains/dam/assetSelect/components/AssetSelectFilter.js.map +1 -1
  89. package/dist/domains/dam/assetSelect/components/AssetSelectFilter.vue_vue_type_script_setup_true_lang.js.map +1 -1
  90. package/dist/domains/dam/assetSelect/components/AssetSelectFilterForm.js.map +1 -1
  91. package/dist/domains/dam/assetSelect/components/AssetSelectFilterForm.vue_vue_type_script_setup_true_lang.js.map +1 -1
  92. package/dist/domains/dam/assetSelect/components/AssetSelectListBar.js.map +1 -1
  93. package/dist/domains/dam/assetSelect/components/AssetSelectListBar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  94. package/dist/domains/dam/assetSelect/components/AssetSelectListTable.js.map +1 -1
  95. package/dist/domains/dam/assetSelect/components/AssetSelectListTable.vue_vue_type_script_setup_true_lang.js.map +1 -1
  96. package/dist/domains/dam/assetSelect/components/AssetSelectListTiles.js.map +1 -1
  97. package/dist/domains/dam/assetSelect/components/AssetSelectListTiles.vue_vue_type_script_setup_true_lang.js.map +1 -1
  98. package/dist/domains/dam/assetSelect/components/AssetSelectTableRowItem.js.map +1 -1
  99. package/dist/domains/dam/assetSelect/components/AssetSelectTilesItem.js.map +1 -1
  100. package/dist/domains/dam/assetSelect/components/AssetSelectTilesItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  101. package/dist/domains/dam/assetSelect/components/FilterPodcastRemoteAutocomplete.js.map +1 -1
  102. package/dist/domains/dam/author/components/AuthorCreateButton.js.map +1 -1
  103. package/dist/domains/dam/author/components/AuthorCreateButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  104. package/dist/domains/dam/author/components/AuthorRemoteAutocompleteCachedAuthorChip.js.map +1 -1
  105. package/dist/domains/dam/author/components/AuthorRemoteAutocompleteCachedAuthorChip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  106. package/dist/domains/dam/author/components/AuthorRemoteAutocompleteCachedAuthorChipConflicts.js.map +1 -1
  107. package/dist/domains/dam/author/components/AuthorRemoteAutocompleteCachedAuthorChipConflicts.vue_vue_type_script_setup_true_lang.js.map +1 -1
  108. package/dist/domains/dam/author/components/AuthorRemoteAutocompleteWithCached.js.map +1 -1
  109. package/dist/domains/dam/author/components/AuthorRemoteAutocompleteWithCached.vue_vue_type_script_setup_true_lang.js.map +1 -1
  110. package/dist/domains/dam/author/components/DamAuthorFilterRemoteAutocomplete.js.map +1 -1
  111. package/dist/domains/dam/author/components/DamAuthorFilterRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -1
  112. package/dist/domains/dam/components/DamAdminAssetLink.js.map +1 -1
  113. package/dist/domains/dam/cropper/components/ACropper.js.map +1 -1
  114. package/dist/domains/dam/cropper/components/ACropper.vue_vue_type_script_setup_true_lang.js.map +1 -1
  115. package/dist/domains/dam/cropper/components/DamAssetImageRoiSelect.js.map +1 -1
  116. package/dist/domains/dam/cropper/components/DamAssetImageRoiSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  117. package/dist/domains/dam/cropper/components/DamAssetImageRoiSelectLazy.js.map +1 -1
  118. package/dist/domains/dam/cropper/components/DamAssetImageRoiSelectLazy.vue_vue_type_script_setup_true_lang.js.map +1 -1
  119. package/dist/domains/dam/imageWidget/components/AImageMediaWidget.js.map +1 -1
  120. package/dist/domains/dam/imageWidget/components/AImageMediaWidget.vue_vue_type_script_setup_true_lang.js.map +1 -1
  121. package/dist/domains/dam/imageWidget/components/AImagePublicInput.js.map +1 -1
  122. package/dist/domains/dam/imageWidget/components/AImagePublicInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
  123. package/dist/domains/dam/imageWidget/components/AImageWidget.js.map +1 -1
  124. package/dist/domains/dam/imageWidget/components/AImageWidget.vue_vue_type_script_setup_true_lang.js.map +1 -1
  125. package/dist/domains/dam/imageWidget/components/AImageWidgetMultiple.js.map +1 -1
  126. package/dist/domains/dam/imageWidget/components/AImageWidgetMultiple.vue_vue_type_script_setup_true_lang.js.map +1 -1
  127. package/dist/domains/dam/imageWidget/components/AImageWidgetMultipleSimple.js.map +1 -1
  128. package/dist/domains/dam/imageWidget/components/AImageWidgetSimple.js.map +1 -1
  129. package/dist/domains/dam/imageWidget/components/AImageWidgetSimple.vue_vue_type_script_setup_true_lang.js.map +1 -1
  130. package/dist/domains/dam/imageWidget/components/AMediaWidgetSimple.js.map +1 -1
  131. package/dist/domains/dam/imageWidget/components/AMediaWidgetSimple.vue_vue_type_script_setup_true_lang.js.map +1 -1
  132. package/dist/domains/dam/imageWidget/components/ImageDetailDialogMetadata.js.map +1 -1
  133. package/dist/domains/dam/imageWidget/components/ImageDetailDialogMetadata.vue_vue_type_script_setup_true_lang.js.map +1 -1
  134. package/dist/domains/dam/imageWidget/components/ImageMassOperations.js.map +1 -1
  135. package/dist/domains/dam/imageWidget/components/ImageMassOperations.vue_vue_type_script_setup_true_lang.js.map +1 -1
  136. package/dist/domains/dam/imageWidget/components/ImageMediaWidgetInner.js.map +1 -1
  137. package/dist/domains/dam/imageWidget/components/ImageMediaWidgetInner.vue_vue_type_script_setup_true_lang.js.map +1 -1
  138. package/dist/domains/dam/imageWidget/components/ImageWidgetInner.js.map +1 -1
  139. package/dist/domains/dam/imageWidget/components/ImageWidgetInner.vue_vue_type_script_setup_true_lang.js.map +1 -1
  140. package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleInner.js.map +1 -1
  141. package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleInner.vue_vue_type_script_setup_true_lang.js.map +1 -1
  142. package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleItem.js.map +1 -1
  143. package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  144. package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleLimitDialog.js.map +1 -1
  145. package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleLimitDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  146. package/dist/domains/dam/imageWidget/components/MediaWidgetSimpleDialog.js.map +1 -1
  147. package/dist/domains/dam/imageWidget/components/MediaWidgetSimpleDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  148. package/dist/domains/dam/keyword/components/DamKeywordFilterRemoteAutocomplete.js.map +1 -1
  149. package/dist/domains/dam/keyword/components/KeywordRemoteAutocompleteCachedKeywordChip.js.map +1 -1
  150. package/dist/domains/dam/keyword/components/KeywordRemoteAutocompleteCachedKeywordChip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  151. package/dist/domains/dam/keyword/components/KeywordRemoteAutocompleteWithCached.js.map +1 -1
  152. package/dist/domains/dam/keyword/components/KeywordRemoteAutocompleteWithCached.vue_vue_type_script_setup_true_lang.js.map +1 -1
  153. package/dist/domains/dam/uploadQueue/components/AssetCustomMetadataFormMassOperations.js.map +1 -1
  154. package/dist/domains/dam/uploadQueue/components/AssetCustomMetadataFormMassOperations.vue_vue_type_script_setup_true_lang.js.map +1 -1
  155. package/dist/domains/dam/uploadQueue/components/AssetQueueSelectedSidebar.js.map +1 -1
  156. package/dist/domains/dam/uploadQueue/components/AssetQueueSelectedSidebar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  157. package/dist/domains/dam/uploadQueue/components/UploadQueueButtonStop.js.map +1 -1
  158. package/dist/domains/dam/uploadQueue/components/UploadQueueButtonStop.vue_vue_type_script_setup_true_lang.js.map +1 -1
  159. package/dist/domains/dam/uploadQueue/components/UploadQueueDialog.js.map +1 -1
  160. package/dist/domains/dam/uploadQueue/components/UploadQueueDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  161. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingle.js.map +1 -1
  162. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingle.vue_vue_type_script_setup_true_lang.js.map +1 -1
  163. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebar.js.map +1 -1
  164. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebarMetadata.js.map +1 -1
  165. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebarMetadata.vue_vue_type_script_setup_true_lang.js.map +1 -1
  166. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebarMetadataContent.js.map +1 -1
  167. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebarMetadataContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  168. package/dist/domains/dam/uploadQueue/components/UploadQueueEditable.js.map +1 -1
  169. package/dist/domains/dam/uploadQueue/components/UploadQueueEditable.vue_vue_type_script_setup_true_lang.js.map +1 -1
  170. package/dist/domains/dam/uploadQueue/components/UploadQueueItemEditable.js.map +1 -1
  171. package/dist/domains/dam/uploadQueue/components/UploadQueueItemEditable.vue_vue_type_script_setup_true_lang.js.map +1 -1
  172. package/dist/domains/dam/uploadQueue/components/UploadQueueItemErrorOverlay.js.map +1 -1
  173. package/dist/domains/dam/user/components/DamAssetLicenceGroupRemoteAutocomplete.js.map +1 -1
  174. package/dist/domains/dam/user/components/DamAssetLicenceRemoteAutocomplete.js.map +1 -1
  175. package/dist/domains/dam/user/components/DamDistributionServiceSelect.js.map +1 -1
  176. package/dist/domains/dam/user/components/DamExtSystemRemoteAutocomplete.js.map +1 -1
  177. package/dist/domains/dam/user/components/DamExternalProviderAssetSelect.js.map +1 -1
  178. package/dist/domains/dam/user/components/DamUserFilterRemoteAutocomplete.js.map +1 -1
  179. package/dist/domains/dam/user/components/DamUserRemoteAutocomplete.js.map +1 -1
  180. package/dist/domains/filters/bookmarks/components/AFilterBookmarkButton.js.map +1 -1
  181. package/dist/domains/filters/bookmarks/components/AFilterBookmarkButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  182. package/dist/domains/filters/bookmarks/components/FilterBookmarkDialog.js.map +1 -1
  183. package/dist/domains/filters/bookmarks/components/FilterBookmarkDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  184. package/dist/domains/filters/bookmarks/components/FilterBookmarks.js.map +1 -1
  185. package/dist/domains/filters/bookmarks/components/FilterBookmarks.vue_vue_type_script_setup_true_lang.js.map +1 -1
  186. package/dist/domains/filters/components/AFilterAdvancedButton.js.map +1 -1
  187. package/dist/domains/filters/components/AFilterBooleanSelect.js.map +1 -1
  188. package/dist/domains/filters/components/AFilterDatetimePicker.js.map +1 -1
  189. package/dist/domains/filters/components/AFilterEmpty.js.map +1 -1
  190. package/dist/domains/filters/components/AFilterInteger.js.map +1 -1
  191. package/dist/domains/filters/components/AFilterResetButton.js.map +1 -1
  192. package/dist/domains/filters/components/AFilterString.js.map +1 -1
  193. package/dist/domains/filters/components/AFilterString.vue.d.ts +3 -0
  194. package/dist/domains/filters/components/AFilterString.vue_vue_type_script_setup_true_lang.js +8 -2
  195. package/dist/domains/filters/components/AFilterString.vue_vue_type_script_setup_true_lang.js.map +1 -1
  196. package/dist/domains/filters/components/AFilterSubmitButton.js.map +1 -1
  197. package/dist/domains/filters/components/AFilterTimeInterval.js.map +1 -1
  198. package/dist/domains/filters/components/AFilterTimeInterval.vue_vue_type_script_setup_true_lang.js.map +1 -1
  199. package/dist/domains/filters/components/AFilterValueObjectOptionsSelect.js.map +1 -1
  200. package/dist/domains/filters/components/AFilterWrapper.js.map +1 -1
  201. package/dist/domains/filters/components/AFilterWrapper.vue_vue_type_script_setup_true_lang.js.map +1 -1
  202. package/dist/domains/filters/components/AFilterWrapperSidebar.js.map +1 -1
  203. package/dist/domains/filters/components/FilterDetailItem.js.map +1 -1
  204. package/dist/domains/filters/components/FiltersSelected.js.map +1 -1
  205. package/dist/domains/filters/datatable/components/ADatatableConfigButton.js.map +1 -1
  206. package/dist/domains/filters/datatable/components/ADatatableOrdering.js.map +1 -1
  207. package/dist/domains/filters/datatable/components/ADatatablePagination.js.map +1 -1
  208. package/dist/domains/filters/datatable/components/ADatatablePagination.vue_vue_type_script_setup_true_lang.js.map +1 -1
  209. package/dist/domains/form/components/AFormDatetimePicker.js.map +1 -1
  210. package/dist/domains/form/components/AFormDatetimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  211. package/dist/domains/form/components/AFormFlagDatetimePicker.js.map +1 -1
  212. package/dist/domains/form/components/AFormFlagDatetimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  213. package/dist/domains/form/components/AFormRemoteCheckbox.js.map +1 -1
  214. package/dist/domains/form/components/AFormRemoteCheckbox.vue_vue_type_script_setup_true_lang.js.map +1 -1
  215. package/dist/domains/form/components/AFormRemoteSwitch.js.map +1 -1
  216. package/dist/domains/form/components/AFormRemoteSwitch.vue_vue_type_script_setup_true_lang.js.map +1 -1
  217. package/dist/domains/form/components/AFormSwitch.js.map +1 -1
  218. package/dist/domains/form/components/AFormSwitch.vue_vue_type_script_setup_true_lang.js.map +1 -1
  219. package/dist/domains/form/components/AFormTextField.js.map +1 -1
  220. package/dist/domains/form/components/AFormTextField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  221. package/dist/domains/form/components/AFormTextarea.js.map +1 -1
  222. package/dist/domains/form/components/AFormTextarea.vue_vue_type_script_setup_true_lang.js.map +1 -1
  223. package/dist/domains/form/components/AFormValueObjectOptionsSelect.js.map +1 -1
  224. package/dist/domains/form/components/AFormValueObjectOptionsSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  225. package/dist/domains/form/components/ASystemEntityScope.js.map +1 -1
  226. package/dist/domains/job/components/AJobBaseCreateForm.js.map +1 -1
  227. package/dist/domains/job/components/AJobBaseCreateForm.vue_vue_type_script_setup_true_lang.js.map +1 -1
  228. package/dist/domains/job/components/AJobDetailCommon.js.map +1 -1
  229. package/dist/domains/job/components/AJobPriorityChip.js.map +1 -1
  230. package/dist/domains/job/components/AJobStatusChip.js.map +1 -1
  231. package/dist/domains/listEditor/components/AListEditor.js.map +1 -1
  232. package/dist/domains/listEditor/components/AListEditor.vue_vue_type_script_setup_true_lang.js.map +1 -1
  233. package/dist/domains/listEditor/components/ANestedSortableListEditor.js.map +1 -1
  234. package/dist/domains/listEditor/components/ANestedSortableListEditor.vue_vue_type_script_setup_true_lang.js.map +1 -1
  235. package/dist/domains/listEditor/components/ASortableListEditor.js.map +1 -1
  236. package/dist/domains/listEditor/components/ASortableListEditor.vue_vue_type_script_setup_true_lang.js.map +1 -1
  237. package/dist/domains/listEditor/components/internal/LeChangeParentDialog.js.map +1 -1
  238. package/dist/domains/listEditor/components/internal/LeChangeParentDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  239. package/dist/domains/listEditor/components/internal/LeDeleteDialog.js.map +1 -1
  240. package/dist/domains/listEditor/components/internal/LeDeleteDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  241. package/dist/domains/listEditor/components/internal/LeDragHandle.js.map +1 -1
  242. package/dist/domains/listEditor/components/internal/LeEmptyState.js.map +1 -1
  243. package/dist/domains/listEditor/components/internal/LeEmptyState.vue_vue_type_script_setup_true_lang.js.map +1 -1
  244. package/dist/domains/listEditor/components/internal/LeMoveToPositionDialog.js.map +1 -1
  245. package/dist/domains/listEditor/components/internal/LeMoveToPositionDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  246. package/dist/domains/listEditor/components/internal/LeNestedRow.js.map +1 -1
  247. package/dist/domains/listEditor/components/internal/LeNestedRow.vue_vue_type_script_setup_true_lang.js.map +1 -1
  248. package/dist/domains/listEditor/components/internal/LeStatus.js.map +1 -1
  249. package/dist/domains/listEditor/components/internal/LeStatus.vue_vue_type_script_setup_true_lang.js.map +1 -1
  250. package/dist/domains/listEditor/components/internal/LeUnsavedLabel.js.map +1 -1
  251. package/dist/domains/listEditor/components/internal/LeUnsavedLabel.vue_vue_type_script_setup_true_lang.js.map +1 -1
  252. package/dist/domains/log/components/ALogDatatable.js.map +1 -1
  253. package/dist/domains/log/components/ALogDatatable.vue_vue_type_script_setup_true_lang.js.map +1 -1
  254. package/dist/domains/log/components/ALogDetail.js.map +1 -1
  255. package/dist/domains/log/components/ALogDetailView.js.map +1 -1
  256. package/dist/domains/log/components/ALogDetailView.vue_vue_type_script_setup_true_lang.js.map +1 -1
  257. package/dist/domains/log/components/ALogFilter.js.map +1 -1
  258. package/dist/domains/log/components/ALogLevelChip.js.map +1 -1
  259. package/dist/domains/log/components/ALogLevelChip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  260. package/dist/domains/log/components/ALogListView.js.map +1 -1
  261. package/dist/domains/permission/components/APermissionEditor.js.map +1 -1
  262. package/dist/domains/permission/components/APermissionEditor.vue_vue_type_script_setup_true_lang.js.map +1 -1
  263. package/dist/domains/permission/components/APermissionGrantEditor.js.map +1 -1
  264. package/dist/domains/permission/components/APermissionValueChip.js.map +1 -1
  265. package/dist/domains/permission/components/APermissionValueChip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  266. package/dist/domains/permission/group/components/APermissionGroupDatatable.js.map +1 -1
  267. package/dist/domains/permission/group/components/APermissionGroupDatatable.vue_vue_type_script_setup_true_lang.js.map +1 -1
  268. package/dist/domains/permission/group/components/APermissionGroupDetail.js.map +1 -1
  269. package/dist/domains/permission/group/components/APermissionGroupFilter.js.map +1 -1
  270. package/dist/domains/permission/group/components/APermissionGroupManage.js.map +1 -1
  271. package/dist/domains/permission/group/components/APermissionGroupManage.vue_vue_type_script_setup_true_lang.js.map +1 -1
  272. package/dist/domains/permission/group/components/APermissionGroupRemoteAutocomplete.js.map +1 -1
  273. package/dist/domains/remoteAutocomplete/components/AFilterRemoteAutocomplete.js.map +1 -1
  274. package/dist/domains/remoteAutocomplete/components/AFilterRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -1
  275. package/dist/domains/remoteAutocomplete/components/AFilterRemoteAutocompleteWithMinimal.js.map +1 -1
  276. package/dist/domains/remoteAutocomplete/components/AFormRemoteAutocomplete.js.map +1 -1
  277. package/dist/domains/remoteAutocomplete/components/AFormRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -1
  278. package/dist/domains/remoteAutocomplete/components/AFormRemoteAutocompleteWithCached.js.map +1 -1
  279. package/dist/domains/remoteAutocomplete/components/AFormRemoteAutocompleteWithCached.vue_vue_type_script_setup_true_lang.js.map +1 -1
  280. package/dist/domains/subjectSelect/components/AFilterWrapperSubjectSelect.js.map +1 -1
  281. package/dist/domains/subjectSelect/components/AFilterWrapperSubjectSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  282. package/dist/domains/subjectSelect/components/ASubjectSelect.js.map +1 -1
  283. package/dist/domains/subjectSelect/components/ASubjectSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  284. package/dist/domains/system/appShell/components/AActionbar.js.map +1 -1
  285. package/dist/domains/system/appShell/components/AActionbar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  286. package/dist/domains/system/appShell/components/AActionbarTarget.js.map +1 -1
  287. package/dist/domains/system/appShell/components/ALayoutLoader.js.map +1 -1
  288. package/dist/domains/system/appShell/components/ALayoutSwitch.js.map +1 -1
  289. package/dist/domains/system/appShell/components/ALayoutSwitch.vue_vue_type_script_setup_true_lang.js.map +1 -1
  290. package/dist/domains/system/components/AAdminSwitcher.js.map +1 -1
  291. package/dist/domains/system/components/AAdminSwitcher.vue_vue_type_script_setup_true_lang.js.map +1 -1
  292. package/dist/domains/system/components/AAlerts.js.map +1 -1
  293. package/dist/domains/system/components/ALanguageSelect.js.map +1 -1
  294. package/dist/domains/system/components/AThemeSelect.js.map +1 -1
  295. package/dist/domains/system/components/AThemeSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  296. package/dist/domains/system/flags/components/FlagCountry.js.map +1 -1
  297. package/dist/domains/system/flags/components/FlagEn.js.map +1 -1
  298. package/dist/domains/system/flags/components/FlagSk.js.map +1 -1
  299. package/dist/domains/system/systemBar/components/ASystemBar.js.map +1 -1
  300. package/dist/domains/system/systemBar/components/ASystemBar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  301. package/dist/domains/system/systemBar/components/ASystemBarNewVersion.js.map +1 -1
  302. package/dist/domains/system/systemBar/components/ASystemBarNewVersion.vue_vue_type_script_setup_true_lang.js.map +1 -1
  303. package/dist/domains/ui/buttons/action/components/AActionCloseButtonHistory.js.map +1 -1
  304. package/dist/domains/ui/buttons/action/components/AActionCreateButton.js.map +1 -1
  305. package/dist/domains/ui/buttons/action/components/AActionCreateButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  306. package/dist/domains/ui/buttons/action/components/AActionDeleteButton.js.map +1 -1
  307. package/dist/domains/ui/buttons/action/components/AActionDeleteButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  308. package/dist/domains/ui/buttons/action/components/AActionEditButton.js.map +1 -1
  309. package/dist/domains/ui/buttons/action/components/AActionEditButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  310. package/dist/domains/ui/buttons/action/components/AActionSaveAndCloseButton.js.map +1 -1
  311. package/dist/domains/ui/buttons/action/components/AActionSaveAndCloseButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  312. package/dist/domains/ui/buttons/action/components/AActionSaveButton.js.map +1 -1
  313. package/dist/domains/ui/buttons/action/components/AActionSaveButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  314. package/dist/domains/ui/buttons/components/ABtnSplit.js.map +1 -1
  315. package/dist/domains/ui/buttons/components/ABtnSplit.vue_vue_type_script_setup_true_lang.js.map +1 -1
  316. package/dist/domains/ui/buttons/table/components/ATableCopyIdButton.js.map +1 -1
  317. package/dist/domains/ui/buttons/table/components/ATableCopyIdButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  318. package/dist/domains/ui/buttons/table/components/ATableDetailButton.js.map +1 -1
  319. package/dist/domains/ui/buttons/table/components/ATableDetailButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  320. package/dist/domains/ui/buttons/table/components/ATableEditButton.js.map +1 -1
  321. package/dist/domains/ui/buttons/table/components/ATableEditButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  322. package/dist/domains/ui/components/AAnzuUserAvatar.js.map +1 -1
  323. package/dist/domains/ui/components/AAnzuUserAvatar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  324. package/dist/domains/ui/components/AAvatarColorPicker.js.map +1 -1
  325. package/dist/domains/ui/components/AAvatarColorPicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  326. package/dist/domains/ui/components/ABooleanSelect.js.map +1 -1
  327. package/dist/domains/ui/components/ABooleanValue.js.map +1 -1
  328. package/dist/domains/ui/components/ACard.js.map +1 -1
  329. package/dist/domains/ui/components/ACardLoader.js.map +1 -1
  330. package/dist/domains/ui/components/AChipNoLink.js.map +1 -1
  331. package/dist/domains/ui/components/ACopyText.js.map +1 -1
  332. package/dist/domains/ui/components/ACopyText.vue_vue_type_script_setup_true_lang.js.map +1 -1
  333. package/dist/domains/ui/components/ACreateDialog.js.map +1 -1
  334. package/dist/domains/ui/components/ACreateDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  335. package/dist/domains/ui/components/ACurrentUserDropdown.js.map +1 -1
  336. package/dist/domains/ui/components/ACurrentUserDropdown.vue_vue_type_script_setup_true_lang.js.map +1 -1
  337. package/dist/domains/ui/components/ADialogToolbar.js.map +1 -1
  338. package/dist/domains/ui/components/AIconGroup.js.map +1 -1
  339. package/dist/domains/ui/components/AProgress.js.map +1 -1
  340. package/dist/domains/ui/components/ARow.js.map +1 -1
  341. package/dist/domains/ui/components/ARow.vue_vue_type_script_setup_true_lang.js.map +1 -1
  342. package/dist/domains/ui/components/ATimeTrackingFields.js.map +1 -1
  343. package/dist/domains/ui/components/ATimeTrackingFields.vue_vue_type_script_setup_true_lang.js.map +1 -1
  344. package/dist/domains/ui/components/AUserAndTimeTrackingFields.js.map +1 -1
  345. package/dist/domains/ui/components/AUserAndTimeTrackingFields.vue_vue_type_script_setup_true_lang.js.map +1 -1
  346. package/dist/domains/ui/datetime/components/ADatetime.js.map +1 -1
  347. package/dist/domains/ui/datetime/components/ADatetimePicker.js.map +1 -1
  348. package/dist/domains/ui/datetime/components/ADatetimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  349. package/dist/domains/ui/datetime/components/TimePicker.js.map +1 -1
  350. package/dist/domains/ui/file/components/AFileDropzone.js.map +1 -1
  351. package/dist/domains/ui/file/components/AFileInput.js.map +1 -1
  352. package/dist/domains/ui/file/components/AFileInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
  353. package/dist/domains/ui/file/components/AFileInputDialog.js.map +1 -1
  354. package/dist/domains/ui/file/components/AFileInputDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  355. package/dist/domains/ui/view/components/AGenericView.js.map +1 -1
  356. package/dist/domains/ui/view/components/AGenericView.vue_vue_type_script_setup_true_lang.js.map +1 -1
  357. package/dist/domains/ui/view/components/ALoginView.js.map +1 -1
  358. package/dist/domains/ui/view/components/ALoginView.vue_vue_type_script_setup_true_lang.js.map +1 -1
  359. package/dist/domains/ui/view/components/ALogoutView.js.map +1 -1
  360. package/dist/domains/ui/view/components/ANotFoundView.js.map +1 -1
  361. package/dist/domains/ui/view/components/AUnauthorizedView.js.map +1 -1
  362. package/dist/domains/ui/view/components/AUnauthorizedView.vue_vue_type_script_setup_true_lang.js.map +1 -1
  363. package/dist/domains/unsavedGuard/components/AUnsavedConfirmDialog.js.map +1 -1
  364. package/dist/locales/cs/common/alert.js.map +1 -1
  365. package/dist/locales/cs/common/anzuUser.js.map +1 -1
  366. package/dist/locales/cs/common/assetSelect.js.map +1 -1
  367. package/dist/locales/cs/common/button.js.map +1 -1
  368. package/dist/locales/cs/common/collab.js.map +1 -1
  369. package/dist/locales/cs/common/confirmDialog.js.map +1 -1
  370. package/dist/locales/cs/common/customForm.js.map +1 -1
  371. package/dist/locales/cs/common/customFormElement.js.map +1 -1
  372. package/dist/locales/cs/common/damImage.js.map +1 -1
  373. package/dist/locales/cs/common/dayOfWeek.js.map +1 -1
  374. package/dist/locales/cs/common/filter.js.map +1 -1
  375. package/dist/locales/cs/common/job.js.map +1 -1
  376. package/dist/locales/cs/common/linkDto.js.map +1 -1
  377. package/dist/locales/cs/common/listItemDto.js.map +1 -1
  378. package/dist/locales/cs/common/log.js.map +1 -1
  379. package/dist/locales/cs/common/model.js.map +1 -1
  380. package/dist/locales/cs/common/permission.js.map +1 -1
  381. package/dist/locales/cs/common/permissionEditor.js.map +1 -1
  382. package/dist/locales/cs/common/permissionGroup.js.map +1 -1
  383. package/dist/locales/cs/common/routeSettings.js.map +1 -1
  384. package/dist/locales/cs/common/sortable.js.map +1 -1
  385. package/dist/locales/cs/common/subjectSelect.js.map +1 -1
  386. package/dist/locales/cs/common/system.js.map +1 -1
  387. package/dist/locales/cs/common/time.js.map +1 -1
  388. package/dist/locales/cs/common/userSystem.js.map +1 -1
  389. package/dist/locales/cs/error/apiDependencyExists.js.map +1 -1
  390. package/dist/locales/cs/error/apiForbiddenOperation.js.map +1 -1
  391. package/dist/locales/cs/error/apiTimedOut.js.map +1 -1
  392. package/dist/locales/cs/error/apiValidation.js.map +1 -1
  393. package/dist/locales/cs/error/jsValidation.js.map +1 -1
  394. package/dist/locales/cs/vuetify.js.map +1 -1
  395. package/dist/locales/en/common/alert.js.map +1 -1
  396. package/dist/locales/en/common/anzuUser.js.map +1 -1
  397. package/dist/locales/en/common/assetSelect.js.map +1 -1
  398. package/dist/locales/en/common/button.js.map +1 -1
  399. package/dist/locales/en/common/collab.js.map +1 -1
  400. package/dist/locales/en/common/confirmDialog.js.map +1 -1
  401. package/dist/locales/en/common/customForm.js.map +1 -1
  402. package/dist/locales/en/common/customFormElement.js.map +1 -1
  403. package/dist/locales/en/common/damImage.js.map +1 -1
  404. package/dist/locales/en/common/dayOfWeek.js.map +1 -1
  405. package/dist/locales/en/common/filter.js.map +1 -1
  406. package/dist/locales/en/common/job.js.map +1 -1
  407. package/dist/locales/en/common/linkDto.js.map +1 -1
  408. package/dist/locales/en/common/listItemDto.js.map +1 -1
  409. package/dist/locales/en/common/log.js.map +1 -1
  410. package/dist/locales/en/common/model.js.map +1 -1
  411. package/dist/locales/en/common/permission.js.map +1 -1
  412. package/dist/locales/en/common/permissionEditor.js.map +1 -1
  413. package/dist/locales/en/common/permissionGroup.js.map +1 -1
  414. package/dist/locales/en/common/routeSettings.js.map +1 -1
  415. package/dist/locales/en/common/sortable.js.map +1 -1
  416. package/dist/locales/en/common/subjectSelect.js.map +1 -1
  417. package/dist/locales/en/common/system.js.map +1 -1
  418. package/dist/locales/en/common/time.js.map +1 -1
  419. package/dist/locales/en/common/userSystem.js.map +1 -1
  420. package/dist/locales/en/error/apiDependencyExists.js.map +1 -1
  421. package/dist/locales/en/error/apiForbiddenOperation.js.map +1 -1
  422. package/dist/locales/en/error/apiTimedOut.js.map +1 -1
  423. package/dist/locales/en/error/apiValidation.js.map +1 -1
  424. package/dist/locales/en/error/jsValidation.js.map +1 -1
  425. package/dist/locales/en/vuetify.js.map +1 -1
  426. package/dist/locales/sk/common/alert.js.map +1 -1
  427. package/dist/locales/sk/common/anzuUser.js.map +1 -1
  428. package/dist/locales/sk/common/assetSelect.js.map +1 -1
  429. package/dist/locales/sk/common/button.js.map +1 -1
  430. package/dist/locales/sk/common/collab.js.map +1 -1
  431. package/dist/locales/sk/common/confirmDialog.js.map +1 -1
  432. package/dist/locales/sk/common/customForm.js.map +1 -1
  433. package/dist/locales/sk/common/customFormElement.js.map +1 -1
  434. package/dist/locales/sk/common/damImage.js.map +1 -1
  435. package/dist/locales/sk/common/dayOfWeek.js.map +1 -1
  436. package/dist/locales/sk/common/filter.js.map +1 -1
  437. package/dist/locales/sk/common/job.js.map +1 -1
  438. package/dist/locales/sk/common/linkDto.js.map +1 -1
  439. package/dist/locales/sk/common/listItemDto.js.map +1 -1
  440. package/dist/locales/sk/common/log.js.map +1 -1
  441. package/dist/locales/sk/common/model.js.map +1 -1
  442. package/dist/locales/sk/common/permission.js.map +1 -1
  443. package/dist/locales/sk/common/permissionEditor.js.map +1 -1
  444. package/dist/locales/sk/common/permissionGroup.js.map +1 -1
  445. package/dist/locales/sk/common/routeSettings.js.map +1 -1
  446. package/dist/locales/sk/common/sortable.js.map +1 -1
  447. package/dist/locales/sk/common/subjectSelect.js.map +1 -1
  448. package/dist/locales/sk/common/system.js.map +1 -1
  449. package/dist/locales/sk/common/time.js.map +1 -1
  450. package/dist/locales/sk/common/userSystem.js.map +1 -1
  451. package/dist/locales/sk/error/apiDependencyExists.js.map +1 -1
  452. package/dist/locales/sk/error/apiForbiddenOperation.js.map +1 -1
  453. package/dist/locales/sk/error/apiTimedOut.js.map +1 -1
  454. package/dist/locales/sk/error/apiValidation.js.map +1 -1
  455. package/dist/locales/sk/error/jsValidation.js.map +1 -1
  456. package/dist/locales/sk/vuetify.js.map +1 -1
  457. package/package.json +15 -15
  458. package/src/e2e/env.d.mts +46 -0
  459. package/src/e2e/env.mjs +78 -0
  460. package/src/e2e/index.d.mts +3 -0
  461. package/src/e2e/index.mjs +2 -0
  462. package/src/e2e/routeWalk.mjs +2 -1
  463. package/src/e2e/routeWalkConfig.d.mts +16 -0
  464. package/src/e2e/routeWalkConfig.mjs +52 -0
  465. package/src/e2e/types.d.mts +5 -0
@@ -1 +1 @@
1
- {"version":3,"file":"UploadQueueDialog.js","names":["_sfc_main","UploadQueueDialog_vue_vue_type_script_setup_true_lang_default","UploadQueueDialog_default"],"sources":["../../../../../src/domains/dam/uploadQueue/components/UploadQueueDialog.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport {\n useUploadQueueDialog,\n useUploadQueueDialogDrawn,\n} from '@/domains/dam/uploadQueue/composables/useUploadQueueDialog'\nimport { useI18n } from 'vue-i18n'\nimport UploadQueueEditable from '@/domains/dam/uploadQueue/components/UploadQueueEditable.vue'\nimport { useUploadQueuesStore } from '@/domains/dam/uploadQueue/store/uploadQueuesStore'\nimport { computed, onBeforeUnmount, ref, toRaw, watch } from 'vue'\nimport { useDisplay } from 'vuetify'\nimport { useTheme } from '@/domains/system/composables/themeSettings'\nimport UploadQueueButtonStop from '@/domains/dam/uploadQueue/components/UploadQueueButtonStop.vue'\nimport useVuelidate from '@vuelidate/core'\nimport { useAlerts } from '@/domains/system/composables/alerts'\nimport {\n type AssetMetadataBulkItem,\n bulkUpdateAssetsMetadata,\n fetchAsset,\n hasMetadataToSave,\n showMetadataSaveError,\n} from '@/domains/dam/api/damAssetApi'\nimport { useCommonAdminCoreDamOptions } from '@/domains/dam/composables/commonAdminCoreDamOptions'\nimport AFileInput from '@/domains/ui/file/components/AFileInput.vue'\nimport AImageDropzone from '@/domains/ui/file/components/AFileDropzone.vue'\nimport type { ImageStoreItem } from '@/domains/dam/types/ImageAware'\nimport type { DocId, IntegerId } from '@/shared/types/common'\nimport { type UploadQueueItem, UploadQueueItemStatus } from '@/domains/dam/types/UploadQueue'\nimport { generateUUIDv1 } from '@/shared/utils/generator'\nimport { mapUploadMetadataToImages } from '@/domains/dam/imageWidget/utils/metadataToImageMap'\nimport { storeToRefs } from 'pinia'\nimport { useAssetDetailStore } from '@/domains/dam/assetDetail/store/assetDetailStore'\nimport { useDamConfigName } from '@/domains/dam/composables/damConfigName'\nimport { isNull } from '@/shared/utils/common'\n\nconst props = withDefaults(\n defineProps<{\n queueKey: string\n licenceId: IntegerId\n fileInputKey: number\n extSystem: IntegerId\n accept: string | undefined\n maxSizes: Record<string, number> | undefined\n configName?: string\n }>(),\n {\n configName: undefined,\n }\n)\n\nconst emit = defineEmits<{\n (e: 'drop', files: File[]): void\n (e: 'filesInput', files: File[]): void\n (e: 'apply', items: ImageStoreItem[]): void\n}>()\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst damConfigName = useDamConfigName(props.configName)\n\nconst { uploadQueueDialog, uploadQueueDialogSaving, uploadQueueSidebar, toggleUploadQueueSidebar } =\n useUploadQueueDialog()\n\nconst uploadQueuesStore = useUploadQueuesStore()\nconst queueTotalCount = computed(() => {\n return uploadQueuesStore.getQueueTotalCount(props.queueKey)\n})\n\nconst items = computed(() => {\n return uploadQueuesStore.getQueueItems(props.queueKey)\n})\n\nconst queueProcessedCount = computed(() => {\n return uploadQueuesStore.getQueueProcessedCount(props.queueKey)\n})\n\nconst isUploading = computed(() => {\n return queueTotalCount.value > queueProcessedCount.value\n})\n\nconst isFinished = computed(() => {\n return queueTotalCount.value === queueProcessedCount.value\n})\n\n// Failed uploads and items still waiting for metadata have nothing to\n// save. Without this check \"save\" would send nothing and report success.\nconst nothingToSave = computed(() => !items.value.some(hasMetadataToSave))\n// \"Save and apply\" hands over the items with status uploaded, saved or not. Duplicates and copies count as uploaded.\n// A failed item also has asset and file ids, but it is not an image to hand over.\nconst isUploaded = (item: UploadQueueItem) => item.status === UploadQueueItemStatus.Uploaded\nconst nothingToApply = computed(() => !items.value.some(isUploaded))\n// An uploaded row whose metadata did not arrive because its notification is late or lost. Its form is disabled.\nconst isUploadedWithoutForm = (item: UploadQueueItem): item is UploadQueueItem & { assetId: DocId } =>\n isUploaded(item) && !item.canEditMetadata && !isNull(item.assetId)\n\nconst { t } = useI18n()\nconst { toolbarColor } = useTheme()\nconst { mdAndDown } = useDisplay()\nconst v$ = useVuelidate({ $stopPropagation: true })\nconst { showRecordWas, showValidationError, showErrorsDefault, showWarningT } = useAlerts()\nconst { damClient, endPointAsset, endPointAuthor, customUploadMetadataToImageMap } =\n useCommonAdminCoreDamOptions(damConfigName)\n\nconst saveButtonLoading = ref(false)\nconst saveAndCloseButtonLoading = ref(false)\n\n// Exposed outside the dialog while either save runs, so the host\n// accepts no file for this queue through its own entry points.\n// The \"+\" and the dropzone here are disabled for the same reason.\n// Reset when the dialog closes, also mid-save, because that save may end after another dialog has started its own.\nwatch(\n () => saveButtonLoading.value || saveAndCloseButtonLoading.value,\n (saving) => {\n uploadQueueDialogSaving.value = saving ? props.queueKey : null\n },\n { flush: 'sync' }\n)\n// A save and apply that waits for row reads stops there once the dialog has unmounted.\nlet disposed = false\nonBeforeUnmount(() => {\n disposed = true\n if (uploadQueueDialogSaving.value === props.queueKey) uploadQueueDialogSaving.value = null\n})\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nuseUploadQueueDialogDrawn(props.queueKey)\n\nconst onStopConfirm = async () => {\n uploadQueuesStore.stopUpload(props.queueKey)\n uploadQueueDialog.value = null\n}\n\nconst onSave = async () => {\n // The loading button still reacts to Enter and Space. This prevents sending a running save again.\n if (saveButtonLoading.value || saveAndCloseButtonLoading.value) return\n const itemsRaw = toRaw(items.value)\n if (itemsRaw.length === 0) return\n saveButtonLoading.value = true\n v$.value.$touch()\n if (v$.value.$invalid) {\n showValidationError()\n saveButtonLoading.value = false\n return\n }\n try {\n await bulkUpdateAssetsMetadata(damClient, endPointAsset, itemsRaw)\n showRecordWas('updated')\n } catch (error) {\n showMetadataSaveError(error, props.extSystem, damConfigName)\n } finally {\n saveButtonLoading.value = false\n }\n}\n\nconst onSaveAndApply = async () => {\n if (saveButtonLoading.value || saveAndCloseButtonLoading.value) return\n const itemsRaw = toRaw(items.value)\n if (itemsRaw.length === 0) return\n saveAndCloseButtonLoading.value = true\n // The save skips a row without its form. Its image would be handed over without texts and its asset left unsaved.\n // Such rows are read once more, as their refresh does.\n // A form that arrives this way has not been seen by the user, so\n // nothing is saved or handed over until the button is pressed again.\n // If no form arrives, the save continues as before.\n const withoutForm = itemsRaw.filter(isUploadedWithoutForm)\n if (withoutForm.length > 0) {\n const shownFor = uploadQueueDialog.value\n await Promise.all(\n withoutForm.map((item) => uploadQueuesStore.refreshAsset(item.assetId, { queueKey: props.queueKey }))\n )\n // The dialog closed during the read and its queue was stopped and emptied. Nothing is saved or handed over.\n // Otherwise the save would go out for a queue the user has left.\n if (disposed || uploadQueueDialog.value !== shownFor) {\n saveAndCloseButtonLoading.value = false\n return\n }\n // A row given up meanwhile because its asset is gone (\"Asset už\n // neexistuje.\") is not handed over. The user is warned, as on refresh.\n // It may be given up by this read or by another one. A row\n // uploaded before the read could not have been given up earlier.\n if (withoutForm.some((item) => uploadQueuesStore.isGivenUpMissing(item))) {\n showWarningT('common.damImage.queueItem.assetGone')\n }\n if (withoutForm.some((item) => item.canEditMetadata)) {\n showWarningT('common.damImage.upload.metadataJustLoaded')\n saveAndCloseButtonLoading.value = false\n return\n }\n }\n v$.value.$touch()\n if (v$.value.$invalid) {\n showValidationError()\n saveAndCloseButtonLoading.value = false\n return\n }\n try {\n let res: AssetMetadataBulkItem[]\n try {\n res = await bulkUpdateAssetsMetadata(damClient, endPointAsset, itemsRaw)\n } catch (error) {\n showMetadataSaveError(error, props.extSystem, damConfigName)\n return\n }\n const uploaded = itemsRaw.filter(isUploaded)\n const mappedItems = customUploadMetadataToImageMap\n ? await customUploadMetadataToImageMap(uploaded, res, damClient, props.extSystem, props.licenceId)\n : await mapUploadMetadataToImages(uploaded, res, damClient, props.extSystem, props.licenceId, endPointAuthor)\n // The save skips a row whose metadata never came, but its image is still handed over, without authors.\n // Its DAM authors are unknown. They are offered only for assets the save answered\n // for, otherwise the widget's picked authors would replace the asset's own.\n const savedAssetIds = new Set(res.map((saved) => saved.id))\n // No position is set here. The receiving widget assigns each image a position\n // after its last one, overriding any position an application mapping set.\n const storeItems: ImageStoreItem[] = mappedItems.map((item) => ({\n key: generateUUIDv1(),\n ...item,\n damAuthors: item.authorIds ?? [],\n showDamAuthors: !!item.assetId && savedAssetIds.has(item.assetId) && (item.authorIds ?? []).length === 0,\n assetId: item.assetId ?? undefined,\n }))\n emit('apply', storeItems)\n } catch (error) {\n showErrorsDefault(error)\n } finally {\n saveAndCloseButtonLoading.value = false\n }\n}\n\nconst assetDetailStore = useAssetDetailStore()\nconst { updateUploadStore } = storeToRefs(assetDetailStore)\n\nconst showDetail = async (id: DocId) => {\n updateUploadStore.value = true\n try {\n await assetDetailStore.open(props.queueKey, () => fetchAsset(damClient, endPointAsset, id))\n } catch (e) {\n showErrorsDefault(e)\n }\n}\n</script>\n\n<template>\n <VDialog\n :model-value=\"true\"\n fullscreen\n scrollable\n class=\"overlay--sidebar\"\n >\n <VCard>\n <div class=\"asset-footer__upload asset-footer--full asset-footer__upload--full pa-0\">\n <div class=\"d-flex w-100 h-100 flex-column\">\n <VToolbar\n class=\"w-100 border-b pr-1\"\n :color=\"toolbarColor\"\n density=\"compact\"\n :height=\"64\"\n style=\"overflow-x: auto\"\n >\n <div class=\"d-flex align-center px-2\">\n <div>\n <div\n v-if=\"isUploading\"\n class=\"text-label-large d-flex align-center\"\n >\n {{ t('common.damImage.upload.title') }}\n </div>\n <div\n v-else\n class=\"text-label-large d-flex align-center text-green-darken-3 font-weight-bold\"\n >\n {{ t('common.damImage.upload.titleDone') }}\n </div>\n </div>\n </div>\n <VSpacer />\n <div\n v-if=\"isUploading\"\n class=\"text-body-small d-flex align-center\"\n >\n <VProgressCircular\n indeterminate\n color=\"primary\"\n size=\"16\"\n width=\"2\"\n class=\"mr-1\"\n />\n <div>{{ t('common.damImage.upload.uploading') }} {{ queueProcessedCount + 1 }}/{{ queueTotalCount }}</div>\n </div>\n <div class=\"d-flex align-center pr-3\">\n <VDivider\n v-show=\"isUploading\"\n vertical\n class=\"mx-4 my-2\"\n />\n <ABtnPrimary\n v-if=\"isFinished\"\n :height=\"36\"\n class=\"mr-2\"\n rounded=\"pill\"\n :loading=\"saveAndCloseButtonLoading\"\n :disabled=\"saveButtonLoading || nothingToApply\"\n @click.stop=\"onSaveAndApply\"\n >\n {{ mdAndDown ? t('common.damImage.upload.apply') : t('common.damImage.upload.saveAndApply') }}\n </ABtnPrimary>\n <VBtn\n :aria-label=\"t('common.damImage.upload.save')\"\n variant=\"text\"\n :height=\"36\"\n :width=\"36\"\n class=\"mr-2 text-medium-emphasis\"\n icon\n :loading=\"saveButtonLoading\"\n :disabled=\"saveAndCloseButtonLoading || nothingToSave\"\n @click.stop=\"onSave\"\n >\n <VIcon icon=\"mdi-content-save\" />\n <VTooltip\n activator=\"parent\"\n location=\"bottom\"\n >\n {{ t('common.damImage.upload.save') }}\n </VTooltip>\n </VBtn>\n <!--\n No file can be added while a save runs. \"Save and apply\" ends\n with the host closing the dialog and emptying its queue.\n A file added meanwhile would be dropped half uploaded, without notice.\n -->\n <AFileInput\n :file-input-key=\"fileInputKey\"\n :accept=\"accept\"\n :max-sizes=\"maxSizes\"\n multiple\n @files-input=\"emit('filesInput', $event)\"\n >\n <template #activator=\"{ props: fileInputProps }\">\n <VBtn\n :aria-label=\"t('common.damImage.upload.add')\"\n icon\n variant=\"text\"\n :height=\"34\"\n :width=\"34\"\n class=\"text-medium-emphasis\"\n :disabled=\"saveButtonLoading || saveAndCloseButtonLoading\"\n v-bind=\"fileInputProps\"\n >\n <VIcon icon=\"mdi-plus\" />\n <VTooltip\n activator=\"parent\"\n location=\"bottom\"\n >\n {{ t('common.damImage.upload.add') }}\n </VTooltip>\n </VBtn>\n </template>\n </AFileInput>\n <VDivider\n vertical\n class=\"mx-4 my-2\"\n />\n <VBtn\n :aria-label=\"t('common.damImage.asset.massOperations.title')\"\n :height=\"36\"\n :width=\"36\"\n :active=\"uploadQueueSidebar\"\n :variant=\"uploadQueueSidebar ? 'flat' : 'text'\"\n :color=\"uploadQueueSidebar ? 'secondary' : ''\"\n class=\"mr-2 text-medium-emphasis\"\n icon\n @click.stop=\"toggleUploadQueueSidebar\"\n >\n <VIcon icon=\"mdi-tag-text-outline\" />\n <VTooltip\n activator=\"parent\"\n location=\"bottom\"\n >\n {{ t('common.damImage.asset.massOperations.title') }}\n </VTooltip>\n </VBtn>\n <UploadQueueButtonStop\n data-cy=\"button-close\"\n :button-size=\"36\"\n :is-uploading=\"isUploading\"\n @confirm=\"onStopConfirm\"\n />\n </div>\n </VToolbar>\n <UploadQueueEditable\n :queue-key=\"queueKey\"\n :ext-system=\"extSystem\"\n :config-name=\"damConfigName\"\n :mass-operations=\"uploadQueueSidebar\"\n @show-detail=\"showDetail\"\n />\n </div>\n <AImageDropzone\n variant=\"fill\"\n transparent\n hover-only\n :accept=\"accept\"\n :max-sizes=\"maxSizes\"\n :disabled=\"saveButtonLoading || saveAndCloseButtonLoading\"\n @drop=\"emit('drop', $event)\"\n />\n </div>\n </VCard>\n </VDialog>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"UploadQueueDialog.js","names":["UploadQueueDialog_vue_vue_type_script_setup_true_lang_default","UploadQueueDialog_default"],"sources":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"UploadQueueDialog.vue_vue_type_script_setup_true_lang.js","names":["_resolveComponent","_openBlock","_createBlock","_component_VDialog","_withCtx","_createVNode","_component_VCard","_createElementVNode","_component_VToolbar","_unref","_createElementBlock","_toDisplayString","_component_VSpacer","_component_VProgressCircular","_createCommentVNode","_withDirectives","_component_VDivider","_vShow","_withModifiers","_createTextVNode","_component_VBtn","_component_VIcon","_component_VTooltip","AFileInput","_mergeProps","UploadQueueButtonStop","UploadQueueEditable","AImageDropzone","UploadQueueEditable_default","UploadQueueButtonStop_default","AFileInput_default","AFileDropzone_default","useVuelidate","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","UploadQueueDialog_vue_vue_type_script_setup_true_lang_default","__emit","props","__props","emit","damConfigName","useDamConfigName","useUploadQueueDialog","uploadQueuesStore","useUploadQueuesStore","queueTotalCount","computed","items","queueProcessedCount","isUploading","isFinished","nothingToSave","hasMetadataToSave","isUploaded","item","UploadQueueItemStatus","nothingToApply","isUploadedWithoutForm","isNull","useI18n","useTheme","useDisplay","v$","useAlerts","useCommonAdminCoreDamOptions","saveButtonLoading","ref","saveAndCloseButtonLoading","saving","disposed","onBeforeUnmount","uploadQueueDialogSaving","useUploadQueueDialogDrawn","onStopConfirm","onSave","itemsRaw","toRaw","showValidationError","bulkUpdateAssetsMetadata","damClient","endPointAsset","showRecordWas","error","onSaveAndApply","withoutForm","shownFor","uploadQueueDialog","showWarningT","res","uploaded","mappedItems","customUploadMetadataToImageMap","mapUploadMetadataToImages","endPointAuthor","savedAssetIds","saved","storeItems","generateUUIDv1","assetDetailStore","useAssetDetailStore","storeToRefs","showDetail","fetchAsset","id","_component_ABtnPrimary","resolveComponent","openBlock","createBlock","VDialog","withCtx","createVNode","VCard","createElementVNode","VToolbar","unref","toolbarColor","createElementBlock","toDisplayString","t","VSpacer","VProgressCircular","createCommentVNode","withDirectives","VDivider","vShow","withModifiers","createTextVNode","mdAndDown","VBtn","VIcon","VTooltip","_cache","$event","fileInputProps","mergeProps","uploadQueueSidebar","toggleUploadQueueSidebar"],"sources":["../../../../../src/domains/dam/uploadQueue/components/UploadQueueDialog.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport {\n useUploadQueueDialog,\n useUploadQueueDialogDrawn,\n} from '@/domains/dam/uploadQueue/composables/useUploadQueueDialog'\nimport { useI18n } from 'vue-i18n'\nimport UploadQueueEditable from '@/domains/dam/uploadQueue/components/UploadQueueEditable.vue'\nimport { useUploadQueuesStore } from '@/domains/dam/uploadQueue/store/uploadQueuesStore'\nimport { computed, onBeforeUnmount, ref, toRaw, watch } from 'vue'\nimport { useDisplay } from 'vuetify'\nimport { useTheme } from '@/domains/system/composables/themeSettings'\nimport UploadQueueButtonStop from '@/domains/dam/uploadQueue/components/UploadQueueButtonStop.vue'\nimport useVuelidate from '@vuelidate/core'\nimport { useAlerts } from '@/domains/system/composables/alerts'\nimport {\n type AssetMetadataBulkItem,\n bulkUpdateAssetsMetadata,\n fetchAsset,\n hasMetadataToSave,\n showMetadataSaveError,\n} from '@/domains/dam/api/damAssetApi'\nimport { useCommonAdminCoreDamOptions } from '@/domains/dam/composables/commonAdminCoreDamOptions'\nimport AFileInput from '@/domains/ui/file/components/AFileInput.vue'\nimport AImageDropzone from '@/domains/ui/file/components/AFileDropzone.vue'\nimport type { ImageStoreItem } from '@/domains/dam/types/ImageAware'\nimport type { DocId, IntegerId } from '@/shared/types/common'\nimport { type UploadQueueItem, UploadQueueItemStatus } from '@/domains/dam/types/UploadQueue'\nimport { generateUUIDv1 } from '@/shared/utils/generator'\nimport { mapUploadMetadataToImages } from '@/domains/dam/imageWidget/utils/metadataToImageMap'\nimport { storeToRefs } from 'pinia'\nimport { useAssetDetailStore } from '@/domains/dam/assetDetail/store/assetDetailStore'\nimport { useDamConfigName } from '@/domains/dam/composables/damConfigName'\nimport { isNull } from '@/shared/utils/common'\n\nconst props = withDefaults(\n defineProps<{\n queueKey: string\n licenceId: IntegerId\n fileInputKey: number\n extSystem: IntegerId\n accept: string | undefined\n maxSizes: Record<string, number> | undefined\n configName?: string\n }>(),\n {\n configName: undefined,\n }\n)\n\nconst emit = defineEmits<{\n (e: 'drop', files: File[]): void\n (e: 'filesInput', files: File[]): void\n (e: 'apply', items: ImageStoreItem[]): void\n}>()\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst damConfigName = useDamConfigName(props.configName)\n\nconst { uploadQueueDialog, uploadQueueDialogSaving, uploadQueueSidebar, toggleUploadQueueSidebar } =\n useUploadQueueDialog()\n\nconst uploadQueuesStore = useUploadQueuesStore()\nconst queueTotalCount = computed(() => {\n return uploadQueuesStore.getQueueTotalCount(props.queueKey)\n})\n\nconst items = computed(() => {\n return uploadQueuesStore.getQueueItems(props.queueKey)\n})\n\nconst queueProcessedCount = computed(() => {\n return uploadQueuesStore.getQueueProcessedCount(props.queueKey)\n})\n\nconst isUploading = computed(() => {\n return queueTotalCount.value > queueProcessedCount.value\n})\n\nconst isFinished = computed(() => {\n return queueTotalCount.value === queueProcessedCount.value\n})\n\n// Failed uploads and items still waiting for metadata have nothing to\n// save. Without this check \"save\" would send nothing and report success.\nconst nothingToSave = computed(() => !items.value.some(hasMetadataToSave))\n// \"Save and apply\" hands over the items with status uploaded, saved or not. Duplicates and copies count as uploaded.\n// A failed item also has asset and file ids, but it is not an image to hand over.\nconst isUploaded = (item: UploadQueueItem) => item.status === UploadQueueItemStatus.Uploaded\nconst nothingToApply = computed(() => !items.value.some(isUploaded))\n// An uploaded row whose metadata did not arrive because its notification is late or lost. Its form is disabled.\nconst isUploadedWithoutForm = (item: UploadQueueItem): item is UploadQueueItem & { assetId: DocId } =>\n isUploaded(item) && !item.canEditMetadata && !isNull(item.assetId)\n\nconst { t } = useI18n()\nconst { toolbarColor } = useTheme()\nconst { mdAndDown } = useDisplay()\nconst v$ = useVuelidate({ $stopPropagation: true })\nconst { showRecordWas, showValidationError, showErrorsDefault, showWarningT } = useAlerts()\nconst { damClient, endPointAsset, endPointAuthor, customUploadMetadataToImageMap } =\n useCommonAdminCoreDamOptions(damConfigName)\n\nconst saveButtonLoading = ref(false)\nconst saveAndCloseButtonLoading = ref(false)\n\n// Exposed outside the dialog while either save runs, so the host\n// accepts no file for this queue through its own entry points.\n// The \"+\" and the dropzone here are disabled for the same reason.\n// Reset when the dialog closes, also mid-save, because that save may end after another dialog has started its own.\nwatch(\n () => saveButtonLoading.value || saveAndCloseButtonLoading.value,\n (saving) => {\n uploadQueueDialogSaving.value = saving ? props.queueKey : null\n },\n { flush: 'sync' }\n)\n// A save and apply that waits for row reads stops there once the dialog has unmounted.\nlet disposed = false\nonBeforeUnmount(() => {\n disposed = true\n if (uploadQueueDialogSaving.value === props.queueKey) uploadQueueDialogSaving.value = null\n})\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nuseUploadQueueDialogDrawn(props.queueKey)\n\nconst onStopConfirm = async () => {\n uploadQueuesStore.stopUpload(props.queueKey)\n uploadQueueDialog.value = null\n}\n\nconst onSave = async () => {\n // The loading button still reacts to Enter and Space. This prevents sending a running save again.\n if (saveButtonLoading.value || saveAndCloseButtonLoading.value) return\n const itemsRaw = toRaw(items.value)\n if (itemsRaw.length === 0) return\n saveButtonLoading.value = true\n v$.value.$touch()\n if (v$.value.$invalid) {\n showValidationError()\n saveButtonLoading.value = false\n return\n }\n try {\n await bulkUpdateAssetsMetadata(damClient, endPointAsset, itemsRaw)\n showRecordWas('updated')\n } catch (error) {\n showMetadataSaveError(error, props.extSystem, damConfigName)\n } finally {\n saveButtonLoading.value = false\n }\n}\n\nconst onSaveAndApply = async () => {\n if (saveButtonLoading.value || saveAndCloseButtonLoading.value) return\n const itemsRaw = toRaw(items.value)\n if (itemsRaw.length === 0) return\n saveAndCloseButtonLoading.value = true\n // The save skips a row without its form. Its image would be handed over without texts and its asset left unsaved.\n // Such rows are read once more, as their refresh does.\n // A form that arrives this way has not been seen by the user, so\n // nothing is saved or handed over until the button is pressed again.\n // If no form arrives, the save continues as before.\n const withoutForm = itemsRaw.filter(isUploadedWithoutForm)\n if (withoutForm.length > 0) {\n const shownFor = uploadQueueDialog.value\n await Promise.all(\n withoutForm.map((item) => uploadQueuesStore.refreshAsset(item.assetId, { queueKey: props.queueKey }))\n )\n // The dialog closed during the read and its queue was stopped and emptied. Nothing is saved or handed over.\n // Otherwise the save would go out for a queue the user has left.\n if (disposed || uploadQueueDialog.value !== shownFor) {\n saveAndCloseButtonLoading.value = false\n return\n }\n // A row given up meanwhile because its asset is gone (\"Asset už\n // neexistuje.\") is not handed over. The user is warned, as on refresh.\n // It may be given up by this read or by another one. A row\n // uploaded before the read could not have been given up earlier.\n if (withoutForm.some((item) => uploadQueuesStore.isGivenUpMissing(item))) {\n showWarningT('common.damImage.queueItem.assetGone')\n }\n if (withoutForm.some((item) => item.canEditMetadata)) {\n showWarningT('common.damImage.upload.metadataJustLoaded')\n saveAndCloseButtonLoading.value = false\n return\n }\n }\n v$.value.$touch()\n if (v$.value.$invalid) {\n showValidationError()\n saveAndCloseButtonLoading.value = false\n return\n }\n try {\n let res: AssetMetadataBulkItem[]\n try {\n res = await bulkUpdateAssetsMetadata(damClient, endPointAsset, itemsRaw)\n } catch (error) {\n showMetadataSaveError(error, props.extSystem, damConfigName)\n return\n }\n const uploaded = itemsRaw.filter(isUploaded)\n const mappedItems = customUploadMetadataToImageMap\n ? await customUploadMetadataToImageMap(uploaded, res, damClient, props.extSystem, props.licenceId)\n : await mapUploadMetadataToImages(uploaded, res, damClient, props.extSystem, props.licenceId, endPointAuthor)\n // The save skips a row whose metadata never came, but its image is still handed over, without authors.\n // Its DAM authors are unknown. They are offered only for assets the save answered\n // for, otherwise the widget's picked authors would replace the asset's own.\n const savedAssetIds = new Set(res.map((saved) => saved.id))\n // No position is set here. The receiving widget assigns each image a position\n // after its last one, overriding any position an application mapping set.\n const storeItems: ImageStoreItem[] = mappedItems.map((item) => ({\n key: generateUUIDv1(),\n ...item,\n damAuthors: item.authorIds ?? [],\n showDamAuthors: !!item.assetId && savedAssetIds.has(item.assetId) && (item.authorIds ?? []).length === 0,\n assetId: item.assetId ?? undefined,\n }))\n emit('apply', storeItems)\n } catch (error) {\n showErrorsDefault(error)\n } finally {\n saveAndCloseButtonLoading.value = false\n }\n}\n\nconst assetDetailStore = useAssetDetailStore()\nconst { updateUploadStore } = storeToRefs(assetDetailStore)\n\nconst showDetail = async (id: DocId) => {\n updateUploadStore.value = true\n try {\n await assetDetailStore.open(props.queueKey, () => fetchAsset(damClient, endPointAsset, id))\n } catch (e) {\n showErrorsDefault(e)\n }\n}\n</script>\n\n<template>\n <VDialog\n :model-value=\"true\"\n fullscreen\n scrollable\n class=\"overlay--sidebar\"\n >\n <VCard>\n <div class=\"asset-footer__upload asset-footer--full asset-footer__upload--full pa-0\">\n <div class=\"d-flex w-100 h-100 flex-column\">\n <VToolbar\n class=\"w-100 border-b pr-1\"\n :color=\"toolbarColor\"\n density=\"compact\"\n :height=\"64\"\n style=\"overflow-x: auto\"\n >\n <div class=\"d-flex align-center px-2\">\n <div>\n <div\n v-if=\"isUploading\"\n class=\"text-label-large d-flex align-center\"\n >\n {{ t('common.damImage.upload.title') }}\n </div>\n <div\n v-else\n class=\"text-label-large d-flex align-center text-green-darken-3 font-weight-bold\"\n >\n {{ t('common.damImage.upload.titleDone') }}\n </div>\n </div>\n </div>\n <VSpacer />\n <div\n v-if=\"isUploading\"\n class=\"text-body-small d-flex align-center\"\n >\n <VProgressCircular\n indeterminate\n color=\"primary\"\n size=\"16\"\n width=\"2\"\n class=\"mr-1\"\n />\n <div>{{ t('common.damImage.upload.uploading') }} {{ queueProcessedCount + 1 }}/{{ queueTotalCount }}</div>\n </div>\n <div class=\"d-flex align-center pr-3\">\n <VDivider\n v-show=\"isUploading\"\n vertical\n class=\"mx-4 my-2\"\n />\n <ABtnPrimary\n v-if=\"isFinished\"\n :height=\"36\"\n class=\"mr-2\"\n rounded=\"pill\"\n :loading=\"saveAndCloseButtonLoading\"\n :disabled=\"saveButtonLoading || nothingToApply\"\n @click.stop=\"onSaveAndApply\"\n >\n {{ mdAndDown ? t('common.damImage.upload.apply') : t('common.damImage.upload.saveAndApply') }}\n </ABtnPrimary>\n <VBtn\n :aria-label=\"t('common.damImage.upload.save')\"\n variant=\"text\"\n :height=\"36\"\n :width=\"36\"\n class=\"mr-2 text-medium-emphasis\"\n icon\n :loading=\"saveButtonLoading\"\n :disabled=\"saveAndCloseButtonLoading || nothingToSave\"\n @click.stop=\"onSave\"\n >\n <VIcon icon=\"mdi-content-save\" />\n <VTooltip\n activator=\"parent\"\n location=\"bottom\"\n >\n {{ t('common.damImage.upload.save') }}\n </VTooltip>\n </VBtn>\n <!--\n No file can be added while a save runs. \"Save and apply\" ends\n with the host closing the dialog and emptying its queue.\n A file added meanwhile would be dropped half uploaded, without notice.\n -->\n <AFileInput\n :file-input-key=\"fileInputKey\"\n :accept=\"accept\"\n :max-sizes=\"maxSizes\"\n multiple\n @files-input=\"emit('filesInput', $event)\"\n >\n <template #activator=\"{ props: fileInputProps }\">\n <VBtn\n :aria-label=\"t('common.damImage.upload.add')\"\n icon\n variant=\"text\"\n :height=\"34\"\n :width=\"34\"\n class=\"text-medium-emphasis\"\n :disabled=\"saveButtonLoading || saveAndCloseButtonLoading\"\n v-bind=\"fileInputProps\"\n >\n <VIcon icon=\"mdi-plus\" />\n <VTooltip\n activator=\"parent\"\n location=\"bottom\"\n >\n {{ t('common.damImage.upload.add') }}\n </VTooltip>\n </VBtn>\n </template>\n </AFileInput>\n <VDivider\n vertical\n class=\"mx-4 my-2\"\n />\n <VBtn\n :aria-label=\"t('common.damImage.asset.massOperations.title')\"\n :height=\"36\"\n :width=\"36\"\n :active=\"uploadQueueSidebar\"\n :variant=\"uploadQueueSidebar ? 'flat' : 'text'\"\n :color=\"uploadQueueSidebar ? 'secondary' : ''\"\n class=\"mr-2 text-medium-emphasis\"\n icon\n @click.stop=\"toggleUploadQueueSidebar\"\n >\n <VIcon icon=\"mdi-tag-text-outline\" />\n <VTooltip\n activator=\"parent\"\n location=\"bottom\"\n >\n {{ t('common.damImage.asset.massOperations.title') }}\n </VTooltip>\n </VBtn>\n <UploadQueueButtonStop\n data-cy=\"button-close\"\n :button-size=\"36\"\n :is-uploading=\"isUploading\"\n @confirm=\"onStopConfirm\"\n />\n </div>\n </VToolbar>\n <UploadQueueEditable\n :queue-key=\"queueKey\"\n :ext-system=\"extSystem\"\n :config-name=\"damConfigName\"\n :mass-operations=\"uploadQueueSidebar\"\n @show-detail=\"showDetail\"\n />\n </div>\n <AImageDropzone\n variant=\"fill\"\n transparent\n hover-only\n :accept=\"accept\"\n :max-sizes=\"maxSizes\"\n :disabled=\"saveButtonLoading || saveAndCloseButtonLoading\"\n @drop=\"emit('drop', $event)\"\n />\n </div>\n </VCard>\n </VDialog>\n</template>\n"],"mappings":"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"}
1
+ {"version":3,"file":"UploadQueueDialog.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createBlock","_component_VDialog","_withCtx","_createVNode","_component_VCard","_createElementVNode","_component_VToolbar","_unref","_createElementBlock","_toDisplayString","_component_VSpacer","_component_VProgressCircular","_withDirectives","_component_VDivider","_vShow","_withModifiers","_createTextVNode","_component_VBtn","_component_VIcon","_component_VTooltip","AFileInput","_mergeProps","UploadQueueButtonStop","UploadQueueEditable","AImageDropzone","UploadQueueEditable_default","UploadQueueButtonStop_default","AFileInput_default","AFileDropzone_default","useVuelidate","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","UploadQueueDialog_vue_vue_type_script_setup_true_lang_default","__emit","props","__props","emit","damConfigName","useDamConfigName","useUploadQueueDialog","uploadQueuesStore","useUploadQueuesStore","queueTotalCount","computed","items","queueProcessedCount","isUploading","isFinished","nothingToSave","hasMetadataToSave","isUploaded","item","UploadQueueItemStatus","nothingToApply","isUploadedWithoutForm","isNull","useI18n","useTheme","useDisplay","v$","useAlerts","useCommonAdminCoreDamOptions","saveButtonLoading","ref","saveAndCloseButtonLoading","saving","disposed","onBeforeUnmount","uploadQueueDialogSaving","useUploadQueueDialogDrawn","onStopConfirm","onSave","itemsRaw","toRaw","showValidationError","bulkUpdateAssetsMetadata","damClient","endPointAsset","showRecordWas","error","onSaveAndApply","withoutForm","shownFor","uploadQueueDialog","showWarningT","res","uploaded","mappedItems","customUploadMetadataToImageMap","mapUploadMetadataToImages","endPointAuthor","savedAssetIds","saved","storeItems","generateUUIDv1","assetDetailStore","useAssetDetailStore","storeToRefs","showDetail","fetchAsset","id","_component_ABtnPrimary","resolveComponent","openBlock","createBlock","VDialog","withCtx","createVNode","VCard","createElementVNode","VToolbar","unref","toolbarColor","createElementBlock","toDisplayString","t","VSpacer","VProgressCircular","createCommentVNode","withDirectives","VDivider","vShow","withModifiers","createTextVNode","mdAndDown","VBtn","VIcon","VTooltip","_cache","$event","fileInputProps","mergeProps","uploadQueueSidebar","toggleUploadQueueSidebar"],"sources":["../../../../../src/domains/dam/uploadQueue/components/UploadQueueDialog.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport {\n useUploadQueueDialog,\n useUploadQueueDialogDrawn,\n} from '@/domains/dam/uploadQueue/composables/useUploadQueueDialog'\nimport { useI18n } from 'vue-i18n'\nimport UploadQueueEditable from '@/domains/dam/uploadQueue/components/UploadQueueEditable.vue'\nimport { useUploadQueuesStore } from '@/domains/dam/uploadQueue/store/uploadQueuesStore'\nimport { computed, onBeforeUnmount, ref, toRaw, watch } from 'vue'\nimport { useDisplay } from 'vuetify'\nimport { useTheme } from '@/domains/system/composables/themeSettings'\nimport UploadQueueButtonStop from '@/domains/dam/uploadQueue/components/UploadQueueButtonStop.vue'\nimport useVuelidate from '@vuelidate/core'\nimport { useAlerts } from '@/domains/system/composables/alerts'\nimport {\n type AssetMetadataBulkItem,\n bulkUpdateAssetsMetadata,\n fetchAsset,\n hasMetadataToSave,\n showMetadataSaveError,\n} from '@/domains/dam/api/damAssetApi'\nimport { useCommonAdminCoreDamOptions } from '@/domains/dam/composables/commonAdminCoreDamOptions'\nimport AFileInput from '@/domains/ui/file/components/AFileInput.vue'\nimport AImageDropzone from '@/domains/ui/file/components/AFileDropzone.vue'\nimport type { ImageStoreItem } from '@/domains/dam/types/ImageAware'\nimport type { DocId, IntegerId } from '@/shared/types/common'\nimport { type UploadQueueItem, UploadQueueItemStatus } from '@/domains/dam/types/UploadQueue'\nimport { generateUUIDv1 } from '@/shared/utils/generator'\nimport { mapUploadMetadataToImages } from '@/domains/dam/imageWidget/utils/metadataToImageMap'\nimport { storeToRefs } from 'pinia'\nimport { useAssetDetailStore } from '@/domains/dam/assetDetail/store/assetDetailStore'\nimport { useDamConfigName } from '@/domains/dam/composables/damConfigName'\nimport { isNull } from '@/shared/utils/common'\n\nconst props = withDefaults(\n defineProps<{\n queueKey: string\n licenceId: IntegerId\n fileInputKey: number\n extSystem: IntegerId\n accept: string | undefined\n maxSizes: Record<string, number> | undefined\n configName?: string\n }>(),\n {\n configName: undefined,\n }\n)\n\nconst emit = defineEmits<{\n (e: 'drop', files: File[]): void\n (e: 'filesInput', files: File[]): void\n (e: 'apply', items: ImageStoreItem[]): void\n}>()\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst damConfigName = useDamConfigName(props.configName)\n\nconst { uploadQueueDialog, uploadQueueDialogSaving, uploadQueueSidebar, toggleUploadQueueSidebar } =\n useUploadQueueDialog()\n\nconst uploadQueuesStore = useUploadQueuesStore()\nconst queueTotalCount = computed(() => {\n return uploadQueuesStore.getQueueTotalCount(props.queueKey)\n})\n\nconst items = computed(() => {\n return uploadQueuesStore.getQueueItems(props.queueKey)\n})\n\nconst queueProcessedCount = computed(() => {\n return uploadQueuesStore.getQueueProcessedCount(props.queueKey)\n})\n\nconst isUploading = computed(() => {\n return queueTotalCount.value > queueProcessedCount.value\n})\n\nconst isFinished = computed(() => {\n return queueTotalCount.value === queueProcessedCount.value\n})\n\n// Failed uploads and items still waiting for metadata have nothing to\n// save. Without this check \"save\" would send nothing and report success.\nconst nothingToSave = computed(() => !items.value.some(hasMetadataToSave))\n// \"Save and apply\" hands over the items with status uploaded, saved or not. Duplicates and copies count as uploaded.\n// A failed item also has asset and file ids, but it is not an image to hand over.\nconst isUploaded = (item: UploadQueueItem) => item.status === UploadQueueItemStatus.Uploaded\nconst nothingToApply = computed(() => !items.value.some(isUploaded))\n// An uploaded row whose metadata did not arrive because its notification is late or lost. Its form is disabled.\nconst isUploadedWithoutForm = (item: UploadQueueItem): item is UploadQueueItem & { assetId: DocId } =>\n isUploaded(item) && !item.canEditMetadata && !isNull(item.assetId)\n\nconst { t } = useI18n()\nconst { toolbarColor } = useTheme()\nconst { mdAndDown } = useDisplay()\nconst v$ = useVuelidate({ $stopPropagation: true })\nconst { showRecordWas, showValidationError, showErrorsDefault, showWarningT } = useAlerts()\nconst { damClient, endPointAsset, endPointAuthor, customUploadMetadataToImageMap } =\n useCommonAdminCoreDamOptions(damConfigName)\n\nconst saveButtonLoading = ref(false)\nconst saveAndCloseButtonLoading = ref(false)\n\n// Exposed outside the dialog while either save runs, so the host\n// accepts no file for this queue through its own entry points.\n// The \"+\" and the dropzone here are disabled for the same reason.\n// Reset when the dialog closes, also mid-save, because that save may end after another dialog has started its own.\nwatch(\n () => saveButtonLoading.value || saveAndCloseButtonLoading.value,\n (saving) => {\n uploadQueueDialogSaving.value = saving ? props.queueKey : null\n },\n { flush: 'sync' }\n)\n// A save and apply that waits for row reads stops there once the dialog has unmounted.\nlet disposed = false\nonBeforeUnmount(() => {\n disposed = true\n if (uploadQueueDialogSaving.value === props.queueKey) uploadQueueDialogSaving.value = null\n})\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nuseUploadQueueDialogDrawn(props.queueKey)\n\nconst onStopConfirm = async () => {\n uploadQueuesStore.stopUpload(props.queueKey)\n uploadQueueDialog.value = null\n}\n\nconst onSave = async () => {\n // The loading button still reacts to Enter and Space. This prevents sending a running save again.\n if (saveButtonLoading.value || saveAndCloseButtonLoading.value) return\n const itemsRaw = toRaw(items.value)\n if (itemsRaw.length === 0) return\n saveButtonLoading.value = true\n v$.value.$touch()\n if (v$.value.$invalid) {\n showValidationError()\n saveButtonLoading.value = false\n return\n }\n try {\n await bulkUpdateAssetsMetadata(damClient, endPointAsset, itemsRaw)\n showRecordWas('updated')\n } catch (error) {\n showMetadataSaveError(error, props.extSystem, damConfigName)\n } finally {\n saveButtonLoading.value = false\n }\n}\n\nconst onSaveAndApply = async () => {\n if (saveButtonLoading.value || saveAndCloseButtonLoading.value) return\n const itemsRaw = toRaw(items.value)\n if (itemsRaw.length === 0) return\n saveAndCloseButtonLoading.value = true\n // The save skips a row without its form. Its image would be handed over without texts and its asset left unsaved.\n // Such rows are read once more, as their refresh does.\n // A form that arrives this way has not been seen by the user, so\n // nothing is saved or handed over until the button is pressed again.\n // If no form arrives, the save continues as before.\n const withoutForm = itemsRaw.filter(isUploadedWithoutForm)\n if (withoutForm.length > 0) {\n const shownFor = uploadQueueDialog.value\n await Promise.all(\n withoutForm.map((item) => uploadQueuesStore.refreshAsset(item.assetId, { queueKey: props.queueKey }))\n )\n // The dialog closed during the read and its queue was stopped and emptied. Nothing is saved or handed over.\n // Otherwise the save would go out for a queue the user has left.\n if (disposed || uploadQueueDialog.value !== shownFor) {\n saveAndCloseButtonLoading.value = false\n return\n }\n // A row given up meanwhile because its asset is gone (\"Asset už\n // neexistuje.\") is not handed over. The user is warned, as on refresh.\n // It may be given up by this read or by another one. A row\n // uploaded before the read could not have been given up earlier.\n if (withoutForm.some((item) => uploadQueuesStore.isGivenUpMissing(item))) {\n showWarningT('common.damImage.queueItem.assetGone')\n }\n if (withoutForm.some((item) => item.canEditMetadata)) {\n showWarningT('common.damImage.upload.metadataJustLoaded')\n saveAndCloseButtonLoading.value = false\n return\n }\n }\n v$.value.$touch()\n if (v$.value.$invalid) {\n showValidationError()\n saveAndCloseButtonLoading.value = false\n return\n }\n try {\n let res: AssetMetadataBulkItem[]\n try {\n res = await bulkUpdateAssetsMetadata(damClient, endPointAsset, itemsRaw)\n } catch (error) {\n showMetadataSaveError(error, props.extSystem, damConfigName)\n return\n }\n const uploaded = itemsRaw.filter(isUploaded)\n const mappedItems = customUploadMetadataToImageMap\n ? await customUploadMetadataToImageMap(uploaded, res, damClient, props.extSystem, props.licenceId)\n : await mapUploadMetadataToImages(uploaded, res, damClient, props.extSystem, props.licenceId, endPointAuthor)\n // The save skips a row whose metadata never came, but its image is still handed over, without authors.\n // Its DAM authors are unknown. They are offered only for assets the save answered\n // for, otherwise the widget's picked authors would replace the asset's own.\n const savedAssetIds = new Set(res.map((saved) => saved.id))\n // No position is set here. The receiving widget assigns each image a position\n // after its last one, overriding any position an application mapping set.\n const storeItems: ImageStoreItem[] = mappedItems.map((item) => ({\n key: generateUUIDv1(),\n ...item,\n damAuthors: item.authorIds ?? [],\n showDamAuthors: !!item.assetId && savedAssetIds.has(item.assetId) && (item.authorIds ?? []).length === 0,\n assetId: item.assetId ?? undefined,\n }))\n emit('apply', storeItems)\n } catch (error) {\n showErrorsDefault(error)\n } finally {\n saveAndCloseButtonLoading.value = false\n }\n}\n\nconst assetDetailStore = useAssetDetailStore()\nconst { updateUploadStore } = storeToRefs(assetDetailStore)\n\nconst showDetail = async (id: DocId) => {\n updateUploadStore.value = true\n try {\n await assetDetailStore.open(props.queueKey, () => fetchAsset(damClient, endPointAsset, id))\n } catch (e) {\n showErrorsDefault(e)\n }\n}\n</script>\n\n<template>\n <VDialog\n :model-value=\"true\"\n fullscreen\n scrollable\n class=\"overlay--sidebar\"\n >\n <VCard>\n <div class=\"asset-footer__upload asset-footer--full asset-footer__upload--full pa-0\">\n <div class=\"d-flex w-100 h-100 flex-column\">\n <VToolbar\n class=\"w-100 border-b pr-1\"\n :color=\"toolbarColor\"\n density=\"compact\"\n :height=\"64\"\n style=\"overflow-x: auto\"\n >\n <div class=\"d-flex align-center px-2\">\n <div>\n <div\n v-if=\"isUploading\"\n class=\"text-label-large d-flex align-center\"\n >\n {{ t('common.damImage.upload.title') }}\n </div>\n <div\n v-else\n class=\"text-label-large d-flex align-center text-green-darken-3 font-weight-bold\"\n >\n {{ t('common.damImage.upload.titleDone') }}\n </div>\n </div>\n </div>\n <VSpacer />\n <div\n v-if=\"isUploading\"\n class=\"text-body-small d-flex align-center\"\n >\n <VProgressCircular\n indeterminate\n color=\"primary\"\n size=\"16\"\n width=\"2\"\n class=\"mr-1\"\n />\n <div>{{ t('common.damImage.upload.uploading') }} {{ queueProcessedCount + 1 }}/{{ queueTotalCount }}</div>\n </div>\n <div class=\"d-flex align-center pr-3\">\n <VDivider\n v-show=\"isUploading\"\n vertical\n class=\"mx-4 my-2\"\n />\n <ABtnPrimary\n v-if=\"isFinished\"\n :height=\"36\"\n class=\"mr-2\"\n rounded=\"pill\"\n :loading=\"saveAndCloseButtonLoading\"\n :disabled=\"saveButtonLoading || nothingToApply\"\n @click.stop=\"onSaveAndApply\"\n >\n {{ mdAndDown ? t('common.damImage.upload.apply') : t('common.damImage.upload.saveAndApply') }}\n </ABtnPrimary>\n <VBtn\n :aria-label=\"t('common.damImage.upload.save')\"\n variant=\"text\"\n :height=\"36\"\n :width=\"36\"\n class=\"mr-2 text-medium-emphasis\"\n icon\n :loading=\"saveButtonLoading\"\n :disabled=\"saveAndCloseButtonLoading || nothingToSave\"\n @click.stop=\"onSave\"\n >\n <VIcon icon=\"mdi-content-save\" />\n <VTooltip\n activator=\"parent\"\n location=\"bottom\"\n >\n {{ t('common.damImage.upload.save') }}\n </VTooltip>\n </VBtn>\n <!--\n No file can be added while a save runs. \"Save and apply\" ends\n with the host closing the dialog and emptying its queue.\n A file added meanwhile would be dropped half uploaded, without notice.\n -->\n <AFileInput\n :file-input-key=\"fileInputKey\"\n :accept=\"accept\"\n :max-sizes=\"maxSizes\"\n multiple\n @files-input=\"emit('filesInput', $event)\"\n >\n <template #activator=\"{ props: fileInputProps }\">\n <VBtn\n :aria-label=\"t('common.damImage.upload.add')\"\n icon\n variant=\"text\"\n :height=\"34\"\n :width=\"34\"\n class=\"text-medium-emphasis\"\n :disabled=\"saveButtonLoading || saveAndCloseButtonLoading\"\n v-bind=\"fileInputProps\"\n >\n <VIcon icon=\"mdi-plus\" />\n <VTooltip\n activator=\"parent\"\n location=\"bottom\"\n >\n {{ t('common.damImage.upload.add') }}\n </VTooltip>\n </VBtn>\n </template>\n </AFileInput>\n <VDivider\n vertical\n class=\"mx-4 my-2\"\n />\n <VBtn\n :aria-label=\"t('common.damImage.asset.massOperations.title')\"\n :height=\"36\"\n :width=\"36\"\n :active=\"uploadQueueSidebar\"\n :variant=\"uploadQueueSidebar ? 'flat' : 'text'\"\n :color=\"uploadQueueSidebar ? 'secondary' : ''\"\n class=\"mr-2 text-medium-emphasis\"\n icon\n @click.stop=\"toggleUploadQueueSidebar\"\n >\n <VIcon icon=\"mdi-tag-text-outline\" />\n <VTooltip\n activator=\"parent\"\n location=\"bottom\"\n >\n {{ t('common.damImage.asset.massOperations.title') }}\n </VTooltip>\n </VBtn>\n <UploadQueueButtonStop\n data-cy=\"button-close\"\n :button-size=\"36\"\n :is-uploading=\"isUploading\"\n @confirm=\"onStopConfirm\"\n />\n </div>\n </VToolbar>\n <UploadQueueEditable\n :queue-key=\"queueKey\"\n :ext-system=\"extSystem\"\n :config-name=\"damConfigName\"\n :mass-operations=\"uploadQueueSidebar\"\n @show-detail=\"showDetail\"\n />\n </div>\n <AImageDropzone\n variant=\"fill\"\n transparent\n hover-only\n :accept=\"accept\"\n :max-sizes=\"maxSizes\"\n :disabled=\"saveButtonLoading || saveAndCloseButtonLoading\"\n @drop=\"emit('drop', $event)\"\n />\n </div>\n </VCard>\n </VDialog>\n</template>\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"UploadQueueDialogSingle.js","names":["_sfc_main","UploadQueueDialogSingle_vue_vue_type_script_setup_true_lang_default","UploadQueueDialogSingle_default"],"sources":["../../../../../src/domains/dam/uploadQueue/components/UploadQueueDialogSingle.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, onMounted, ref, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useI18n } from 'vue-i18n'\nimport { AssetDetailTabImageWithRoi, useAssetDetailStore } from '@/domains/dam/assetDetail/store/assetDetailStore'\nimport { DamAssetType } from '@/domains/dam/types/Asset'\nimport AssetDetailDialogFrame from '@/domains/dam/assetDetail/components/AssetDetailDialogFrame.vue'\nimport { assetDetailViewOfUploadItem } from '@/domains/dam/assetDetail/composables/assetDetailView'\nimport type { ImageCreateUpdateAware } from '@/domains/dam/types/ImageAware'\nimport { useUploadQueuesStore } from '@/domains/dam/uploadQueue/store/uploadQueuesStore'\nimport {\n useUploadQueueDialog,\n useUploadQueueDialogDrawn,\n} from '@/domains/dam/uploadQueue/composables/useUploadQueueDialog'\nimport { type UploadQueueItem, UploadQueueItemStatus } from '@/domains/dam/types/UploadQueue'\nimport UploadQueueItemErrorOverlay from '@/domains/dam/uploadQueue/components/UploadQueueItemErrorOverlay.vue'\nimport { useAlerts } from '@/domains/system/composables/alerts'\nimport {\n type AssetMetadataBulkItem,\n bulkUpdateAssetsMetadata,\n fetchAsset,\n showMetadataSaveError,\n} from '@/domains/dam/api/damAssetApi'\nimport { useCommonAdminCoreDamOptions } from '@/domains/dam/composables/commonAdminCoreDamOptions'\nimport UploadQueueDialogSingleSidebar from '@/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebar.vue'\nimport UploadQueueButtonStop from '@/domains/dam/uploadQueue/components/UploadQueueButtonStop.vue'\nimport { isNull } from '@/shared/utils/common'\nimport { mapUploadMetadataToImages } from '@/domains/dam/imageWidget/utils/metadataToImageMap'\nimport type { IntegerId } from '@/shared/types/common'\nimport { useDamConfigName } from '@/domains/dam/composables/damConfigName'\n\nconst props = withDefaults(\n defineProps<{\n queueKey: string\n extSystem: IntegerId\n licenceId: IntegerId\n fileInputKey: number\n accept: string | undefined\n maxSizes: Record<string, number> | undefined\n configName?: string\n disableDoneAnimation?: boolean\n }>(),\n {\n configName: undefined,\n disableDoneAnimation: false,\n }\n)\n\nconst emit = defineEmits<{\n (e: 'apply', items: ImageCreateUpdateAware[]): void\n}>()\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst damConfigName = useDamConfigName(props.configName)\n\nconst { showErrorsDefault, showRecordWas } = useAlerts()\n\nconst { t } = useI18n()\n\nconst assetDetailStore = useAssetDetailStore()\nconst { activeTab, loading, asset: assetDetail } = storeToRefs(assetDetailStore)\nconst enableRoiTab = ref(false)\n\nconst uploadQueuesStore = useUploadQueuesStore()\nconst { uploadQueueDialog } = useUploadQueueDialog()\n\nconst items = computed(() => {\n return uploadQueuesStore.getQueueItems(props.queueKey)\n})\n\nconst item = computed<UploadQueueItem | null>(() => {\n return items.value[0] ?? null\n})\n\nconst isDone = computed(() => {\n return !isNull(item.value) && item.value.status === UploadQueueItemStatus.Uploaded\n})\n\n// The title stays \"done\", in the error colour for a refused or failed file.\nconst isFailed = computed(() => item.value?.status === UploadQueueItemStatus.Failed)\n\nconst { damClient, endPointAsset, endPointAuthor, customUploadMetadataToImageMap, simpleAssetSidebarEnabled } =\n useCommonAdminCoreDamOptions(damConfigName)\n\nconst view = computed(() =>\n assetDetailViewOfUploadItem(item.value, assetDetail.value, {\n enableRoiTab: enableRoiTab.value,\n disableDoneAnimation: props.disableDoneAnimation,\n simpleAssetSidebarEnabled,\n })\n)\n\nconst onStopConfirm = async () => {\n uploadQueuesStore.stopUpload(props.queueKey)\n assetDetailStore.setAsset(null)\n uploadQueueDialog.value = null\n}\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nuseUploadQueueDialogDrawn(props.queueKey)\n\nconst queueTotalCount = computed(() => {\n return uploadQueuesStore.getQueueTotalCount(props.queueKey)\n})\n\nconst queueProcessedCount = computed(() => {\n return uploadQueuesStore.getQueueProcessedCount(props.queueKey)\n})\n\nconst isUploading = computed(() => {\n return queueTotalCount.value > queueProcessedCount.value\n})\n\n// The item's own switch. The store loads it with the item's metadata,\n// then the user owns it. A duplicate takes the original's value.\n// Not the asset detail's value: that is reset from the server when the\n// item turns uploaded, overwriting the user's choice made during upload.\nconst mainFileSingleUse = computed(() => item.value?.mainFileSingleUse ?? false)\n\n// Whether the duplicate's original is single use, as found. The notice is about that\n// asset and does not follow the switch, which is the item's value from then on.\nconst originalIsSingleUse = ref(false)\nwatch(\n () => item.value?.isDuplicate,\n (isDuplicate) => {\n originalIsSingleUse.value = !!isDuplicate && item.value?.mainFileSingleUse === true\n },\n { immediate: true }\n)\n\n// Which button is saving. The other one waits, so no second request is sent.\nconst saving = ref<'save' | 'saveAndApply' | null>(null)\n\nconst onSave = async () => {\n if (items.value.length === 0 || !isNull(saving.value)) return\n saving.value = 'save'\n try {\n await bulkUpdateAssetsMetadata(damClient, endPointAsset, items.value, mainFileSingleUse.value)\n showRecordWas('updated')\n } catch (error) {\n showMetadataSaveError(error, props.extSystem, damConfigName)\n } finally {\n saving.value = null\n }\n}\n\nconst onSaveAndApply = async () => {\n if (items.value.length === 0 || !isNull(saving.value)) return\n saving.value = 'saveAndApply'\n try {\n let assetsMetadataRes: AssetMetadataBulkItem[]\n try {\n assetsMetadataRes = await bulkUpdateAssetsMetadata(damClient, endPointAsset, items.value, mainFileSingleUse.value)\n if (!assetsMetadataRes[0]) {\n throw new Error('Fatal error updating asset metadata')\n }\n } catch (error) {\n showMetadataSaveError(error, props.extSystem, damConfigName)\n return\n }\n showRecordWas('updated')\n const mappedItems = customUploadMetadataToImageMap\n ? await customUploadMetadataToImageMap(\n items.value,\n assetsMetadataRes,\n damClient,\n props.extSystem,\n props.licenceId\n )\n : await mapUploadMetadataToImages(\n items.value,\n assetsMetadataRes,\n damClient,\n props.extSystem,\n props.licenceId,\n endPointAuthor\n )\n emit(\n 'apply',\n mappedItems.map((item) => ({\n ...item,\n position: 1,\n }))\n )\n await onStopConfirm()\n } catch (error) {\n showErrorsDefault(error)\n } finally {\n saving.value = null\n }\n}\n\n// Read when the file is done and again when the row gets another asset.\n// A duplicate row becomes the original only after the original asset was read, so the first read showed no \"File info\".\nwatch(\n [isDone, () => item.value?.assetId],\n async ([done, assetId]) => {\n if (!done || !assetId) return\n // Capture the row being read. A dialog closed meanwhile empties its\n // queue, and the widget's next upload is a new row in the same queue.\n const row = item.value\n try {\n const res = await fetchAsset(damClient, endPointAsset, assetId)\n // If the dialog closed meanwhile, its queue is emptied. The detail store\n // is shared, so writing now would show this asset in the next dialog.\n // The same applies to a row that has another asset by now.\n if (item.value?.assetId !== assetId) return\n assetDetailStore.setAsset(res)\n enableRoiTab.value = true\n } catch (e) {\n // Skip the error if the dialog closed meanwhile. It would appear\n // over whatever the user moved on to, such as the next upload.\n // A row that became the original of a duplicate is the same row, so its failed read is reported normally.\n if (item.value !== row) return\n showErrorsDefault(e)\n }\n },\n { immediate: true }\n)\n\nonMounted(() => {\n activeTab.value = AssetDetailTabImageWithRoi.Info\n})\n</script>\n\n<template>\n <AssetDetailDialogFrame\n :loading=\"loading || !item\"\n :view=\"view\"\n :ext-system=\"extSystem\"\n :config-name=\"damConfigName\"\n @close=\"onStopConfirm\"\n >\n <template #title>\n <div\n v-if=\"isUploading\"\n class=\"text-label-large\"\n >\n {{ t('common.damImage.upload.title') }}\n </div>\n <div\n v-else\n class=\"text-label-large font-weight-bold\"\n :class=\"isFailed ? 'text-error' : 'text-green-darken-3'\"\n >\n {{ t('common.damImage.upload.titleDone') }}\n </div>\n </template>\n <template #toolbar-actions>\n <UploadQueueButtonStop\n data-cy=\"button-close\"\n :button-size=\"36\"\n :is-uploading=\"isUploading\"\n @confirm=\"onStopConfirm\"\n />\n </template>\n <template #image-overlay>\n <UploadQueueItemErrorOverlay\n v-if=\"item && item.error.hasError\"\n :error=\"item.error\"\n />\n </template>\n <template #sidebar=\"{ view: shown }\">\n <UploadQueueDialogSingleSidebar\n v-if=\"shown.id\"\n :key=\"shown.id\"\n :queue-key=\"queueKey\"\n :ext-system=\"extSystem\"\n :config-name=\"damConfigName\"\n :enable-roi-tab=\"enableRoiTab\"\n :show-file-info=\"enableRoiTab\"\n :asset-id=\"shown.id\"\n :is-video=\"shown.assetType === DamAssetType.Video\"\n :is-audio=\"shown.assetType === DamAssetType.Audio\"\n :is-image=\"shown.assetType === DamAssetType.Image\"\n :is-document=\"shown.assetType === DamAssetType.Document\"\n :asset-status=\"shown.assetStatus\"\n :asset-type=\"shown.assetType\"\n :asset-main-file-status=\"shown.mainFile ? shown.mainFile.fileAttributes.status : undefined\"\n :asset-main-file-fail-reason=\"shown.mainFile ? shown.mainFile.fileAttributes.failReason : undefined\"\n :saving=\"saving\"\n @save=\"onSave\"\n @save-and-apply=\"onSaveAndApply\"\n >\n <template #prepend-sidebar>\n <div\n v-if=\"item?.isDuplicate\"\n class=\"text-body-small text-warning px-3 py-2\"\n >\n {{ t('common.damImage.asset.detail.info.status.duplicate') }}\n </div>\n <div\n v-if=\"item?.isDuplicate && originalIsSingleUse\"\n class=\"text-body-small text-error px-3 py-2\"\n >\n {{ t('common.damImage.asset.model.mainFileSingleUse') }}\n </div>\n </template>\n </UploadQueueDialogSingleSidebar>\n </template>\n </AssetDetailDialogFrame>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"UploadQueueDialogSingle.js","names":["UploadQueueDialogSingle_vue_vue_type_script_setup_true_lang_default","UploadQueueDialogSingle_default"],"sources":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"UploadQueueDialogSingle.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createBlock","AssetDetailDialogFrame","_unref","_withCtx","_createElementBlock","_toDisplayString","_normalizeClass","_createVNode","UploadQueueButtonStop","UploadQueueItemErrorOverlay","_createCommentVNode","UploadQueueDialogSingleSidebar","AssetDetailDialogFrame_default","UploadQueueItemErrorOverlay_default","UploadQueueDialogSingleSidebar_default","UploadQueueButtonStop_default","_hoisted_1","_hoisted_2","_hoisted_3","UploadQueueDialogSingle_vue_vue_type_script_setup_true_lang_default","__emit","props","__props","emit","damConfigName","useDamConfigName","useAlerts","useI18n","assetDetailStore","useAssetDetailStore","assetDetail","storeToRefs","enableRoiTab","ref","uploadQueuesStore","useUploadQueuesStore","useUploadQueueDialog","items","computed","item","isDone","isNull","UploadQueueItemStatus","isFailed","useCommonAdminCoreDamOptions","view","assetDetailViewOfUploadItem","onStopConfirm","queueTotalCount","queueProcessedCount","isUploading","mainFileSingleUse","originalIsSingleUse","isDuplicate","saving","onSave","bulkUpdateAssetsMetadata","damClient","endPointAsset","showRecordWas","error","onSaveAndApply","assetsMetadataRes","mappedItems","customUploadMetadataToImageMap","mapUploadMetadataToImages","endPointAuthor","watch","done","assetId","row","res","fetchAsset","onMounted","AssetDetailTabImageWithRoi","openBlock","createBlock","unref","loading","withCtx","createElementBlock","toDisplayString","t","normalizeClass","createVNode","createCommentVNode","shown","DamAssetType"],"sources":["../../../../../src/domains/dam/uploadQueue/components/UploadQueueDialogSingle.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, onMounted, ref, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useI18n } from 'vue-i18n'\nimport { AssetDetailTabImageWithRoi, useAssetDetailStore } from '@/domains/dam/assetDetail/store/assetDetailStore'\nimport { DamAssetType } from '@/domains/dam/types/Asset'\nimport AssetDetailDialogFrame from '@/domains/dam/assetDetail/components/AssetDetailDialogFrame.vue'\nimport { assetDetailViewOfUploadItem } from '@/domains/dam/assetDetail/composables/assetDetailView'\nimport type { ImageCreateUpdateAware } from '@/domains/dam/types/ImageAware'\nimport { useUploadQueuesStore } from '@/domains/dam/uploadQueue/store/uploadQueuesStore'\nimport {\n useUploadQueueDialog,\n useUploadQueueDialogDrawn,\n} from '@/domains/dam/uploadQueue/composables/useUploadQueueDialog'\nimport { type UploadQueueItem, UploadQueueItemStatus } from '@/domains/dam/types/UploadQueue'\nimport UploadQueueItemErrorOverlay from '@/domains/dam/uploadQueue/components/UploadQueueItemErrorOverlay.vue'\nimport { useAlerts } from '@/domains/system/composables/alerts'\nimport {\n type AssetMetadataBulkItem,\n bulkUpdateAssetsMetadata,\n fetchAsset,\n showMetadataSaveError,\n} from '@/domains/dam/api/damAssetApi'\nimport { useCommonAdminCoreDamOptions } from '@/domains/dam/composables/commonAdminCoreDamOptions'\nimport UploadQueueDialogSingleSidebar from '@/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebar.vue'\nimport UploadQueueButtonStop from '@/domains/dam/uploadQueue/components/UploadQueueButtonStop.vue'\nimport { isNull } from '@/shared/utils/common'\nimport { mapUploadMetadataToImages } from '@/domains/dam/imageWidget/utils/metadataToImageMap'\nimport type { IntegerId } from '@/shared/types/common'\nimport { useDamConfigName } from '@/domains/dam/composables/damConfigName'\n\nconst props = withDefaults(\n defineProps<{\n queueKey: string\n extSystem: IntegerId\n licenceId: IntegerId\n fileInputKey: number\n accept: string | undefined\n maxSizes: Record<string, number> | undefined\n configName?: string\n disableDoneAnimation?: boolean\n }>(),\n {\n configName: undefined,\n disableDoneAnimation: false,\n }\n)\n\nconst emit = defineEmits<{\n (e: 'apply', items: ImageCreateUpdateAware[]): void\n}>()\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst damConfigName = useDamConfigName(props.configName)\n\nconst { showErrorsDefault, showRecordWas } = useAlerts()\n\nconst { t } = useI18n()\n\nconst assetDetailStore = useAssetDetailStore()\nconst { activeTab, loading, asset: assetDetail } = storeToRefs(assetDetailStore)\nconst enableRoiTab = ref(false)\n\nconst uploadQueuesStore = useUploadQueuesStore()\nconst { uploadQueueDialog } = useUploadQueueDialog()\n\nconst items = computed(() => {\n return uploadQueuesStore.getQueueItems(props.queueKey)\n})\n\nconst item = computed<UploadQueueItem | null>(() => {\n return items.value[0] ?? null\n})\n\nconst isDone = computed(() => {\n return !isNull(item.value) && item.value.status === UploadQueueItemStatus.Uploaded\n})\n\n// The title stays \"done\", in the error colour for a refused or failed file.\nconst isFailed = computed(() => item.value?.status === UploadQueueItemStatus.Failed)\n\nconst { damClient, endPointAsset, endPointAuthor, customUploadMetadataToImageMap, simpleAssetSidebarEnabled } =\n useCommonAdminCoreDamOptions(damConfigName)\n\nconst view = computed(() =>\n assetDetailViewOfUploadItem(item.value, assetDetail.value, {\n enableRoiTab: enableRoiTab.value,\n disableDoneAnimation: props.disableDoneAnimation,\n simpleAssetSidebarEnabled,\n })\n)\n\nconst onStopConfirm = async () => {\n uploadQueuesStore.stopUpload(props.queueKey)\n assetDetailStore.setAsset(null)\n uploadQueueDialog.value = null\n}\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nuseUploadQueueDialogDrawn(props.queueKey)\n\nconst queueTotalCount = computed(() => {\n return uploadQueuesStore.getQueueTotalCount(props.queueKey)\n})\n\nconst queueProcessedCount = computed(() => {\n return uploadQueuesStore.getQueueProcessedCount(props.queueKey)\n})\n\nconst isUploading = computed(() => {\n return queueTotalCount.value > queueProcessedCount.value\n})\n\n// The item's own switch. The store loads it with the item's metadata,\n// then the user owns it. A duplicate takes the original's value.\n// Not the asset detail's value: that is reset from the server when the\n// item turns uploaded, overwriting the user's choice made during upload.\nconst mainFileSingleUse = computed(() => item.value?.mainFileSingleUse ?? false)\n\n// Whether the duplicate's original is single use, as found. The notice is about that\n// asset and does not follow the switch, which is the item's value from then on.\nconst originalIsSingleUse = ref(false)\nwatch(\n () => item.value?.isDuplicate,\n (isDuplicate) => {\n originalIsSingleUse.value = !!isDuplicate && item.value?.mainFileSingleUse === true\n },\n { immediate: true }\n)\n\n// Which button is saving. The other one waits, so no second request is sent.\nconst saving = ref<'save' | 'saveAndApply' | null>(null)\n\nconst onSave = async () => {\n if (items.value.length === 0 || !isNull(saving.value)) return\n saving.value = 'save'\n try {\n await bulkUpdateAssetsMetadata(damClient, endPointAsset, items.value, mainFileSingleUse.value)\n showRecordWas('updated')\n } catch (error) {\n showMetadataSaveError(error, props.extSystem, damConfigName)\n } finally {\n saving.value = null\n }\n}\n\nconst onSaveAndApply = async () => {\n if (items.value.length === 0 || !isNull(saving.value)) return\n saving.value = 'saveAndApply'\n try {\n let assetsMetadataRes: AssetMetadataBulkItem[]\n try {\n assetsMetadataRes = await bulkUpdateAssetsMetadata(damClient, endPointAsset, items.value, mainFileSingleUse.value)\n if (!assetsMetadataRes[0]) {\n throw new Error('Fatal error updating asset metadata')\n }\n } catch (error) {\n showMetadataSaveError(error, props.extSystem, damConfigName)\n return\n }\n showRecordWas('updated')\n const mappedItems = customUploadMetadataToImageMap\n ? await customUploadMetadataToImageMap(\n items.value,\n assetsMetadataRes,\n damClient,\n props.extSystem,\n props.licenceId\n )\n : await mapUploadMetadataToImages(\n items.value,\n assetsMetadataRes,\n damClient,\n props.extSystem,\n props.licenceId,\n endPointAuthor\n )\n emit(\n 'apply',\n mappedItems.map((item) => ({\n ...item,\n position: 1,\n }))\n )\n await onStopConfirm()\n } catch (error) {\n showErrorsDefault(error)\n } finally {\n saving.value = null\n }\n}\n\n// Read when the file is done and again when the row gets another asset.\n// A duplicate row becomes the original only after the original asset was read, so the first read showed no \"File info\".\nwatch(\n [isDone, () => item.value?.assetId],\n async ([done, assetId]) => {\n if (!done || !assetId) return\n // Capture the row being read. A dialog closed meanwhile empties its\n // queue, and the widget's next upload is a new row in the same queue.\n const row = item.value\n try {\n const res = await fetchAsset(damClient, endPointAsset, assetId)\n // If the dialog closed meanwhile, its queue is emptied. The detail store\n // is shared, so writing now would show this asset in the next dialog.\n // The same applies to a row that has another asset by now.\n if (item.value?.assetId !== assetId) return\n assetDetailStore.setAsset(res)\n enableRoiTab.value = true\n } catch (e) {\n // Skip the error if the dialog closed meanwhile. It would appear\n // over whatever the user moved on to, such as the next upload.\n // A row that became the original of a duplicate is the same row, so its failed read is reported normally.\n if (item.value !== row) return\n showErrorsDefault(e)\n }\n },\n { immediate: true }\n)\n\nonMounted(() => {\n activeTab.value = AssetDetailTabImageWithRoi.Info\n})\n</script>\n\n<template>\n <AssetDetailDialogFrame\n :loading=\"loading || !item\"\n :view=\"view\"\n :ext-system=\"extSystem\"\n :config-name=\"damConfigName\"\n @close=\"onStopConfirm\"\n >\n <template #title>\n <div\n v-if=\"isUploading\"\n class=\"text-label-large\"\n >\n {{ t('common.damImage.upload.title') }}\n </div>\n <div\n v-else\n class=\"text-label-large font-weight-bold\"\n :class=\"isFailed ? 'text-error' : 'text-green-darken-3'\"\n >\n {{ t('common.damImage.upload.titleDone') }}\n </div>\n </template>\n <template #toolbar-actions>\n <UploadQueueButtonStop\n data-cy=\"button-close\"\n :button-size=\"36\"\n :is-uploading=\"isUploading\"\n @confirm=\"onStopConfirm\"\n />\n </template>\n <template #image-overlay>\n <UploadQueueItemErrorOverlay\n v-if=\"item && item.error.hasError\"\n :error=\"item.error\"\n />\n </template>\n <template #sidebar=\"{ view: shown }\">\n <UploadQueueDialogSingleSidebar\n v-if=\"shown.id\"\n :key=\"shown.id\"\n :queue-key=\"queueKey\"\n :ext-system=\"extSystem\"\n :config-name=\"damConfigName\"\n :enable-roi-tab=\"enableRoiTab\"\n :show-file-info=\"enableRoiTab\"\n :asset-id=\"shown.id\"\n :is-video=\"shown.assetType === DamAssetType.Video\"\n :is-audio=\"shown.assetType === DamAssetType.Audio\"\n :is-image=\"shown.assetType === DamAssetType.Image\"\n :is-document=\"shown.assetType === DamAssetType.Document\"\n :asset-status=\"shown.assetStatus\"\n :asset-type=\"shown.assetType\"\n :asset-main-file-status=\"shown.mainFile ? shown.mainFile.fileAttributes.status : undefined\"\n :asset-main-file-fail-reason=\"shown.mainFile ? shown.mainFile.fileAttributes.failReason : undefined\"\n :saving=\"saving\"\n @save=\"onSave\"\n @save-and-apply=\"onSaveAndApply\"\n >\n <template #prepend-sidebar>\n <div\n v-if=\"item?.isDuplicate\"\n class=\"text-body-small text-warning px-3 py-2\"\n >\n {{ t('common.damImage.asset.detail.info.status.duplicate') }}\n </div>\n <div\n v-if=\"item?.isDuplicate && originalIsSingleUse\"\n class=\"text-body-small text-error px-3 py-2\"\n >\n {{ t('common.damImage.asset.model.mainFileSingleUse') }}\n </div>\n </template>\n </UploadQueueDialogSingleSidebar>\n </template>\n </AssetDetailDialogFrame>\n</template>\n"],"mappings":"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"}
1
+ {"version":3,"file":"UploadQueueDialogSingle.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createBlock","AssetDetailDialogFrame","_unref","_withCtx","_createElementBlock","_toDisplayString","_normalizeClass","_createVNode","UploadQueueButtonStop","UploadQueueItemErrorOverlay","UploadQueueDialogSingleSidebar","AssetDetailDialogFrame_default","UploadQueueItemErrorOverlay_default","UploadQueueDialogSingleSidebar_default","UploadQueueButtonStop_default","_hoisted_1","_hoisted_2","_hoisted_3","UploadQueueDialogSingle_vue_vue_type_script_setup_true_lang_default","__emit","props","__props","emit","damConfigName","useDamConfigName","useAlerts","useI18n","assetDetailStore","useAssetDetailStore","assetDetail","storeToRefs","enableRoiTab","ref","uploadQueuesStore","useUploadQueuesStore","useUploadQueueDialog","items","computed","item","isDone","isNull","UploadQueueItemStatus","isFailed","useCommonAdminCoreDamOptions","view","assetDetailViewOfUploadItem","onStopConfirm","queueTotalCount","queueProcessedCount","isUploading","mainFileSingleUse","originalIsSingleUse","isDuplicate","saving","onSave","bulkUpdateAssetsMetadata","damClient","endPointAsset","showRecordWas","error","onSaveAndApply","assetsMetadataRes","mappedItems","customUploadMetadataToImageMap","mapUploadMetadataToImages","endPointAuthor","watch","done","assetId","row","res","fetchAsset","onMounted","AssetDetailTabImageWithRoi","openBlock","createBlock","unref","loading","withCtx","createElementBlock","toDisplayString","t","normalizeClass","createVNode","createCommentVNode","shown","DamAssetType"],"sources":["../../../../../src/domains/dam/uploadQueue/components/UploadQueueDialogSingle.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, onMounted, ref, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useI18n } from 'vue-i18n'\nimport { AssetDetailTabImageWithRoi, useAssetDetailStore } from '@/domains/dam/assetDetail/store/assetDetailStore'\nimport { DamAssetType } from '@/domains/dam/types/Asset'\nimport AssetDetailDialogFrame from '@/domains/dam/assetDetail/components/AssetDetailDialogFrame.vue'\nimport { assetDetailViewOfUploadItem } from '@/domains/dam/assetDetail/composables/assetDetailView'\nimport type { ImageCreateUpdateAware } from '@/domains/dam/types/ImageAware'\nimport { useUploadQueuesStore } from '@/domains/dam/uploadQueue/store/uploadQueuesStore'\nimport {\n useUploadQueueDialog,\n useUploadQueueDialogDrawn,\n} from '@/domains/dam/uploadQueue/composables/useUploadQueueDialog'\nimport { type UploadQueueItem, UploadQueueItemStatus } from '@/domains/dam/types/UploadQueue'\nimport UploadQueueItemErrorOverlay from '@/domains/dam/uploadQueue/components/UploadQueueItemErrorOverlay.vue'\nimport { useAlerts } from '@/domains/system/composables/alerts'\nimport {\n type AssetMetadataBulkItem,\n bulkUpdateAssetsMetadata,\n fetchAsset,\n showMetadataSaveError,\n} from '@/domains/dam/api/damAssetApi'\nimport { useCommonAdminCoreDamOptions } from '@/domains/dam/composables/commonAdminCoreDamOptions'\nimport UploadQueueDialogSingleSidebar from '@/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebar.vue'\nimport UploadQueueButtonStop from '@/domains/dam/uploadQueue/components/UploadQueueButtonStop.vue'\nimport { isNull } from '@/shared/utils/common'\nimport { mapUploadMetadataToImages } from '@/domains/dam/imageWidget/utils/metadataToImageMap'\nimport type { IntegerId } from '@/shared/types/common'\nimport { useDamConfigName } from '@/domains/dam/composables/damConfigName'\n\nconst props = withDefaults(\n defineProps<{\n queueKey: string\n extSystem: IntegerId\n licenceId: IntegerId\n fileInputKey: number\n accept: string | undefined\n maxSizes: Record<string, number> | undefined\n configName?: string\n disableDoneAnimation?: boolean\n }>(),\n {\n configName: undefined,\n disableDoneAnimation: false,\n }\n)\n\nconst emit = defineEmits<{\n (e: 'apply', items: ImageCreateUpdateAware[]): void\n}>()\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst damConfigName = useDamConfigName(props.configName)\n\nconst { showErrorsDefault, showRecordWas } = useAlerts()\n\nconst { t } = useI18n()\n\nconst assetDetailStore = useAssetDetailStore()\nconst { activeTab, loading, asset: assetDetail } = storeToRefs(assetDetailStore)\nconst enableRoiTab = ref(false)\n\nconst uploadQueuesStore = useUploadQueuesStore()\nconst { uploadQueueDialog } = useUploadQueueDialog()\n\nconst items = computed(() => {\n return uploadQueuesStore.getQueueItems(props.queueKey)\n})\n\nconst item = computed<UploadQueueItem | null>(() => {\n return items.value[0] ?? null\n})\n\nconst isDone = computed(() => {\n return !isNull(item.value) && item.value.status === UploadQueueItemStatus.Uploaded\n})\n\n// The title stays \"done\", in the error colour for a refused or failed file.\nconst isFailed = computed(() => item.value?.status === UploadQueueItemStatus.Failed)\n\nconst { damClient, endPointAsset, endPointAuthor, customUploadMetadataToImageMap, simpleAssetSidebarEnabled } =\n useCommonAdminCoreDamOptions(damConfigName)\n\nconst view = computed(() =>\n assetDetailViewOfUploadItem(item.value, assetDetail.value, {\n enableRoiTab: enableRoiTab.value,\n disableDoneAnimation: props.disableDoneAnimation,\n simpleAssetSidebarEnabled,\n })\n)\n\nconst onStopConfirm = async () => {\n uploadQueuesStore.stopUpload(props.queueKey)\n assetDetailStore.setAsset(null)\n uploadQueueDialog.value = null\n}\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nuseUploadQueueDialogDrawn(props.queueKey)\n\nconst queueTotalCount = computed(() => {\n return uploadQueuesStore.getQueueTotalCount(props.queueKey)\n})\n\nconst queueProcessedCount = computed(() => {\n return uploadQueuesStore.getQueueProcessedCount(props.queueKey)\n})\n\nconst isUploading = computed(() => {\n return queueTotalCount.value > queueProcessedCount.value\n})\n\n// The item's own switch. The store loads it with the item's metadata,\n// then the user owns it. A duplicate takes the original's value.\n// Not the asset detail's value: that is reset from the server when the\n// item turns uploaded, overwriting the user's choice made during upload.\nconst mainFileSingleUse = computed(() => item.value?.mainFileSingleUse ?? false)\n\n// Whether the duplicate's original is single use, as found. The notice is about that\n// asset and does not follow the switch, which is the item's value from then on.\nconst originalIsSingleUse = ref(false)\nwatch(\n () => item.value?.isDuplicate,\n (isDuplicate) => {\n originalIsSingleUse.value = !!isDuplicate && item.value?.mainFileSingleUse === true\n },\n { immediate: true }\n)\n\n// Which button is saving. The other one waits, so no second request is sent.\nconst saving = ref<'save' | 'saveAndApply' | null>(null)\n\nconst onSave = async () => {\n if (items.value.length === 0 || !isNull(saving.value)) return\n saving.value = 'save'\n try {\n await bulkUpdateAssetsMetadata(damClient, endPointAsset, items.value, mainFileSingleUse.value)\n showRecordWas('updated')\n } catch (error) {\n showMetadataSaveError(error, props.extSystem, damConfigName)\n } finally {\n saving.value = null\n }\n}\n\nconst onSaveAndApply = async () => {\n if (items.value.length === 0 || !isNull(saving.value)) return\n saving.value = 'saveAndApply'\n try {\n let assetsMetadataRes: AssetMetadataBulkItem[]\n try {\n assetsMetadataRes = await bulkUpdateAssetsMetadata(damClient, endPointAsset, items.value, mainFileSingleUse.value)\n if (!assetsMetadataRes[0]) {\n throw new Error('Fatal error updating asset metadata')\n }\n } catch (error) {\n showMetadataSaveError(error, props.extSystem, damConfigName)\n return\n }\n showRecordWas('updated')\n const mappedItems = customUploadMetadataToImageMap\n ? await customUploadMetadataToImageMap(\n items.value,\n assetsMetadataRes,\n damClient,\n props.extSystem,\n props.licenceId\n )\n : await mapUploadMetadataToImages(\n items.value,\n assetsMetadataRes,\n damClient,\n props.extSystem,\n props.licenceId,\n endPointAuthor\n )\n emit(\n 'apply',\n mappedItems.map((item) => ({\n ...item,\n position: 1,\n }))\n )\n await onStopConfirm()\n } catch (error) {\n showErrorsDefault(error)\n } finally {\n saving.value = null\n }\n}\n\n// Read when the file is done and again when the row gets another asset.\n// A duplicate row becomes the original only after the original asset was read, so the first read showed no \"File info\".\nwatch(\n [isDone, () => item.value?.assetId],\n async ([done, assetId]) => {\n if (!done || !assetId) return\n // Capture the row being read. A dialog closed meanwhile empties its\n // queue, and the widget's next upload is a new row in the same queue.\n const row = item.value\n try {\n const res = await fetchAsset(damClient, endPointAsset, assetId)\n // If the dialog closed meanwhile, its queue is emptied. The detail store\n // is shared, so writing now would show this asset in the next dialog.\n // The same applies to a row that has another asset by now.\n if (item.value?.assetId !== assetId) return\n assetDetailStore.setAsset(res)\n enableRoiTab.value = true\n } catch (e) {\n // Skip the error if the dialog closed meanwhile. It would appear\n // over whatever the user moved on to, such as the next upload.\n // A row that became the original of a duplicate is the same row, so its failed read is reported normally.\n if (item.value !== row) return\n showErrorsDefault(e)\n }\n },\n { immediate: true }\n)\n\nonMounted(() => {\n activeTab.value = AssetDetailTabImageWithRoi.Info\n})\n</script>\n\n<template>\n <AssetDetailDialogFrame\n :loading=\"loading || !item\"\n :view=\"view\"\n :ext-system=\"extSystem\"\n :config-name=\"damConfigName\"\n @close=\"onStopConfirm\"\n >\n <template #title>\n <div\n v-if=\"isUploading\"\n class=\"text-label-large\"\n >\n {{ t('common.damImage.upload.title') }}\n </div>\n <div\n v-else\n class=\"text-label-large font-weight-bold\"\n :class=\"isFailed ? 'text-error' : 'text-green-darken-3'\"\n >\n {{ t('common.damImage.upload.titleDone') }}\n </div>\n </template>\n <template #toolbar-actions>\n <UploadQueueButtonStop\n data-cy=\"button-close\"\n :button-size=\"36\"\n :is-uploading=\"isUploading\"\n @confirm=\"onStopConfirm\"\n />\n </template>\n <template #image-overlay>\n <UploadQueueItemErrorOverlay\n v-if=\"item && item.error.hasError\"\n :error=\"item.error\"\n />\n </template>\n <template #sidebar=\"{ view: shown }\">\n <UploadQueueDialogSingleSidebar\n v-if=\"shown.id\"\n :key=\"shown.id\"\n :queue-key=\"queueKey\"\n :ext-system=\"extSystem\"\n :config-name=\"damConfigName\"\n :enable-roi-tab=\"enableRoiTab\"\n :show-file-info=\"enableRoiTab\"\n :asset-id=\"shown.id\"\n :is-video=\"shown.assetType === DamAssetType.Video\"\n :is-audio=\"shown.assetType === DamAssetType.Audio\"\n :is-image=\"shown.assetType === DamAssetType.Image\"\n :is-document=\"shown.assetType === DamAssetType.Document\"\n :asset-status=\"shown.assetStatus\"\n :asset-type=\"shown.assetType\"\n :asset-main-file-status=\"shown.mainFile ? shown.mainFile.fileAttributes.status : undefined\"\n :asset-main-file-fail-reason=\"shown.mainFile ? shown.mainFile.fileAttributes.failReason : undefined\"\n :saving=\"saving\"\n @save=\"onSave\"\n @save-and-apply=\"onSaveAndApply\"\n >\n <template #prepend-sidebar>\n <div\n v-if=\"item?.isDuplicate\"\n class=\"text-body-small text-warning px-3 py-2\"\n >\n {{ t('common.damImage.asset.detail.info.status.duplicate') }}\n </div>\n <div\n v-if=\"item?.isDuplicate && originalIsSingleUse\"\n class=\"text-body-small text-error px-3 py-2\"\n >\n {{ t('common.damImage.asset.model.mainFileSingleUse') }}\n </div>\n </template>\n </UploadQueueDialogSingleSidebar>\n </template>\n </AssetDetailDialogFrame>\n</template>\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"UploadQueueDialogSingleSidebar.js","names":["_sfc_main","UploadQueueDialogSingleSidebar_vue_vue_type_script_setup_true_lang_default","UploadQueueDialogSingleSidebar_default"],"sources":["../../../../../src/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebar.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { DocId, IntegerId } from '@/shared/types/common'\nimport type { DamAssetStatusType, DamAssetTypeType } from '@/domains/dam/types/Asset'\nimport type { AssetFileFailReasonType, AssetFileProcessStatusType } from '@/domains/dam/types/AssetFile'\nimport { computed, onUnmounted, ref, watch } from 'vue'\nimport AssetDetailSidebarFrame from '@/domains/dam/assetDetail/components/AssetDetailSidebarFrame.vue'\nimport UploadQueueDialogSingleSidebarMetadata from '@/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebarMetadata.vue'\nimport { useCommonAdminCoreDamOptions } from '@/domains/dam/composables/commonAdminCoreDamOptions'\nimport { UploadQueueItemStatus } from '@/domains/dam/types/UploadQueue'\nimport {\n SHOW_REFRESH_AFTER_SECONDS,\n useUploadQueueItemRefresh,\n} from '@/domains/dam/uploadQueue/composables/uploadQueueItemRefresh'\nimport { useUploadQueuesStore } from '@/domains/dam/uploadQueue/store/uploadQueuesStore'\nimport { isNull } from '@/shared/utils/common'\nimport { useDamConfigName } from '@/domains/dam/composables/damConfigName'\n\nconst props = withDefaults(\n defineProps<{\n queueKey: string\n extSystem: IntegerId\n assetId: DocId\n isVideo: boolean\n isAudio: boolean\n isImage: boolean\n isDocument: boolean\n enableRoiTab: boolean\n showFileInfo: boolean\n dataCy?: string\n assetStatus: DamAssetStatusType\n assetType: DamAssetTypeType\n assetMainFileStatus?: AssetFileProcessStatusType | undefined\n assetMainFileFailReason?: AssetFileFailReasonType | undefined\n configName?: string\n /** Which of the two metadata save buttons is saving. */\n saving?: 'save' | 'saveAndApply' | null\n }>(),\n {\n assetMainFileStatus: undefined,\n assetMainFileFailReason: undefined,\n dataCy: undefined,\n configName: undefined,\n saving: null,\n }\n)\nconst emit = defineEmits<{\n (e: 'save'): void\n (e: 'saveAndApply'): void\n}>()\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst damConfigName = useDamConfigName(props.configName)\n\nconst { simpleAssetSidebarEnabled } = useCommonAdminCoreDamOptions(damConfigName)\nconst simpleMode = computed(() => simpleAssetSidebarEnabled && props.isImage && props.enableRoiTab)\n\n// What the item still waits for from the server: file processing, or\n// metadata once uploaded. Until then the form and both saves are disabled.\n// Each wait counts from its start, as in the queue row.\n// Kept here, not in the metadata tab, because the wait continues while the other tab is open.\nconst uploadQueuesStore = useUploadQueuesStore()\nconst item = computed(() => uploadQueuesStore.getQueueItems(props.queueKey)[0] ?? null)\nconst waitsFor = computed(() => {\n if (item.value?.status === UploadQueueItemStatus.Processing) return 'file'\n if (item.value?.status === UploadQueueItemStatus.Uploaded && !item.value.canEditMetadata) return 'metadata'\n return null\n})\nconst refreshDue = ref(false)\nlet refreshTimer: ReturnType<typeof setTimeout> | undefined\nwatch(\n waitsFor,\n (waits) => {\n clearTimeout(refreshTimer)\n refreshDue.value = false\n if (isNull(waits)) return\n refreshTimer = setTimeout(() => (refreshDue.value = true), SHOW_REFRESH_AFTER_SECONDS * 1000)\n },\n { immediate: true }\n)\nonUnmounted(() => clearTimeout(refreshTimer))\n// A failed item offers refresh, like the queue row, only while a refresh\n// can still change it: the store says so and the item has its asset.\nconst showRefresh = computed(() => {\n if (item.value?.status === UploadQueueItemStatus.Failed) {\n return uploadQueuesStore.refreshMayHelp(item.value) && !isNull(item.value.assetId)\n }\n return refreshDue.value\n})\n\nconst { refreshing, refreshItem } = useUploadQueueItemRefresh(damConfigName)\nconst refresh = () => {\n if (item.value?.assetId) refreshItem(item.value.assetId, item.value, props.queueKey)\n}\n</script>\n\n<template>\n <AssetDetailSidebarFrame\n :queue-key=\"queueKey\"\n :config-name=\"damConfigName\"\n :roi-tab=\"isImage && enableRoiTab\"\n :simple-mode=\"simpleMode\"\n >\n <template #prepend>\n <slot name=\"prepend-sidebar\" />\n </template>\n <template #info=\"{ isActive }\">\n <UploadQueueDialogSingleSidebarMetadata\n :queue-key=\"queueKey\"\n :ext-system=\"extSystem\"\n :config-name=\"damConfigName\"\n :is-active=\"isActive\"\n :asset-type=\"assetType\"\n :show-refresh=\"showRefresh\"\n :refresh-disabled=\"refreshing\"\n :saving=\"saving\"\n @refresh=\"refresh\"\n @save=\"emit('save')\"\n @save-and-apply=\"emit('saveAndApply')\"\n />\n </template>\n </AssetDetailSidebarFrame>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"UploadQueueDialogSingleSidebar.js","names":["UploadQueueDialogSingleSidebar_vue_vue_type_script_setup_true_lang_default","UploadQueueDialogSingleSidebar_default"],"sources":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"UploadQueueDialogSingleSidebarMetadata.js","names":["_sfc_main","UploadQueueDialogSingleSidebarMetadata_vue_vue_type_script_setup_true_lang_default","UploadQueueDialogSingleSidebarMetadata_default"],"sources":["../../../../../src/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebarMetadata.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport AssetDetailSidebarActionsWrapper from '@/domains/dam/assetDetail/components/AssetDetailSidebarActionsWrapper.vue'\nimport { useI18n } from 'vue-i18n'\nimport { computed } from 'vue'\nimport useVuelidate from '@vuelidate/core'\nimport type { DamAssetTypeType } from '@/domains/dam/types/Asset'\nimport UploadQueueDialogSingleSidebarMetadataContent from '@/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebarMetadataContent.vue'\nimport { ADamAssetMetadataValidationScopeSymbol } from '@/domains/dam/composables/uploadValidations'\nimport { useAlerts } from '@/domains/system/composables/alerts'\nimport { useUploadQueuesStore } from '@/domains/dam/uploadQueue/store/uploadQueuesStore'\nimport type { IntegerId } from '@/shared/types/common'\nimport { useDamConfigName } from '@/domains/dam/composables/damConfigName'\n\nconst props = withDefaults(\n defineProps<{\n queueKey: string\n extSystem: IntegerId\n isActive: boolean\n dataCy?: string\n assetType: DamAssetTypeType\n configName?: string\n showRefresh?: boolean\n refreshDisabled?: boolean\n /** Which of the two buttons is saving. */\n saving?: 'save' | 'saveAndApply' | null\n }>(),\n {\n dataCy: undefined,\n configName: undefined,\n showRefresh: false,\n refreshDisabled: false,\n saving: null,\n }\n)\nconst emit = defineEmits<{\n (e: 'save'): void\n (e: 'saveAndApply'): void\n (e: 'refresh'): void\n}>()\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst damConfigName = useDamConfigName(props.configName)\n\nconst { t } = useI18n()\n\nconst uploadQueuesStore = useUploadQueuesStore()\n\nconst canEditMetadata = computed(() => {\n const items = uploadQueuesStore.getQueueItems(props.queueKey)\n return items[0]?.canEditMetadata ?? false\n})\n\nconst v$ = useVuelidate({ $scope: ADamAssetMetadataValidationScopeSymbol })\n\nconst { showValidationError } = useAlerts()\n\nconst onSave = async () => {\n v$.value.$touch()\n if (v$.value.$invalid) {\n showValidationError()\n return\n }\n emit('save')\n}\n\nconst onSaveAndApply = async () => {\n v$.value.$touch()\n if (v$.value.$invalid) {\n showValidationError()\n return\n }\n emit('saveAndApply')\n}\n</script>\n\n<template>\n <AssetDetailSidebarActionsWrapper\n v-if=\"isActive\"\n :queue-key=\"queueKey\"\n >\n <ABtnTertiary\n v-if=\"showRefresh\"\n data-cy=\"button-refresh\"\n :disabled=\"refreshDisabled\"\n @click.stop=\"emit('refresh')\"\n >\n {{ t('common.button.refresh') }}\n </ABtnTertiary>\n <ABtnSecondary\n type=\"submit\"\n class=\"ml-2\"\n data-cy=\"button-save\"\n :loading=\"saving === 'save'\"\n :disabled=\"!canEditMetadata || saving === 'saveAndApply'\"\n @click.stop=\"onSave\"\n >\n {{ t('common.button.save') }}\n </ABtnSecondary>\n <ABtnPrimary\n type=\"submit\"\n class=\"mx-2\"\n data-cy=\"button-save-and-apply\"\n :loading=\"saving === 'saveAndApply'\"\n :disabled=\"!canEditMetadata || saving === 'save'\"\n @click.stop=\"onSaveAndApply\"\n >\n {{ t('common.damImage.upload.saveAndApply') }}\n </ABtnPrimary>\n </AssetDetailSidebarActionsWrapper>\n <UploadQueueDialogSingleSidebarMetadataContent\n :queue-key=\"queueKey\"\n :ext-system=\"extSystem\"\n :config-name=\"damConfigName\"\n />\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"UploadQueueDialogSingleSidebarMetadata.js","names":["UploadQueueDialogSingleSidebarMetadata_vue_vue_type_script_setup_true_lang_default","UploadQueueDialogSingleSidebarMetadata_default"],"sources":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"UploadQueueDialogSingleSidebarMetadata.vue_vue_type_script_setup_true_lang.js","names":["_resolveComponent","_openBlock","_createElementBlock","_Fragment","_createBlock","AssetDetailSidebarActionsWrapper","_withCtx","_withModifiers","_createTextVNode","_toDisplayString","_unref","_createCommentVNode","_createVNode","UploadQueueDialogSingleSidebarMetadataContent","AssetDetailSidebarActionsWrapper_default","UploadQueueDialogSingleSidebarMetadataContent_default","useVuelidate","UploadQueueDialogSingleSidebarMetadata_vue_vue_type_script_setup_true_lang_default","__emit","props","__props","emit","damConfigName","useDamConfigName","useI18n","uploadQueuesStore","useUploadQueuesStore","canEditMetadata","computed","v$","ADamAssetMetadataValidationScopeSymbol","useAlerts","onSave","showValidationError","onSaveAndApply","_component_ABtnTertiary","resolveComponent","_component_ABtnSecondary","_component_ABtnPrimary","openBlock","createElementBlock","Fragment","createBlock","withCtx","_cache","withModifiers","createTextVNode","toDisplayString","unref","t","createCommentVNode","createVNode"],"sources":["../../../../../src/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebarMetadata.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport AssetDetailSidebarActionsWrapper from '@/domains/dam/assetDetail/components/AssetDetailSidebarActionsWrapper.vue'\nimport { useI18n } from 'vue-i18n'\nimport { computed } from 'vue'\nimport useVuelidate from '@vuelidate/core'\nimport type { DamAssetTypeType } from '@/domains/dam/types/Asset'\nimport UploadQueueDialogSingleSidebarMetadataContent from '@/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebarMetadataContent.vue'\nimport { ADamAssetMetadataValidationScopeSymbol } from '@/domains/dam/composables/uploadValidations'\nimport { useAlerts } from '@/domains/system/composables/alerts'\nimport { useUploadQueuesStore } from '@/domains/dam/uploadQueue/store/uploadQueuesStore'\nimport type { IntegerId } from '@/shared/types/common'\nimport { useDamConfigName } from '@/domains/dam/composables/damConfigName'\n\nconst props = withDefaults(\n defineProps<{\n queueKey: string\n extSystem: IntegerId\n isActive: boolean\n dataCy?: string\n assetType: DamAssetTypeType\n configName?: string\n showRefresh?: boolean\n refreshDisabled?: boolean\n /** Which of the two buttons is saving. */\n saving?: 'save' | 'saveAndApply' | null\n }>(),\n {\n dataCy: undefined,\n configName: undefined,\n showRefresh: false,\n refreshDisabled: false,\n saving: null,\n }\n)\nconst emit = defineEmits<{\n (e: 'save'): void\n (e: 'saveAndApply'): void\n (e: 'refresh'): void\n}>()\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst damConfigName = useDamConfigName(props.configName)\n\nconst { t } = useI18n()\n\nconst uploadQueuesStore = useUploadQueuesStore()\n\nconst canEditMetadata = computed(() => {\n const items = uploadQueuesStore.getQueueItems(props.queueKey)\n return items[0]?.canEditMetadata ?? false\n})\n\nconst v$ = useVuelidate({ $scope: ADamAssetMetadataValidationScopeSymbol })\n\nconst { showValidationError } = useAlerts()\n\nconst onSave = async () => {\n v$.value.$touch()\n if (v$.value.$invalid) {\n showValidationError()\n return\n }\n emit('save')\n}\n\nconst onSaveAndApply = async () => {\n v$.value.$touch()\n if (v$.value.$invalid) {\n showValidationError()\n return\n }\n emit('saveAndApply')\n}\n</script>\n\n<template>\n <AssetDetailSidebarActionsWrapper\n v-if=\"isActive\"\n :queue-key=\"queueKey\"\n >\n <ABtnTertiary\n v-if=\"showRefresh\"\n data-cy=\"button-refresh\"\n :disabled=\"refreshDisabled\"\n @click.stop=\"emit('refresh')\"\n >\n {{ t('common.button.refresh') }}\n </ABtnTertiary>\n <ABtnSecondary\n type=\"submit\"\n class=\"ml-2\"\n data-cy=\"button-save\"\n :loading=\"saving === 'save'\"\n :disabled=\"!canEditMetadata || saving === 'saveAndApply'\"\n @click.stop=\"onSave\"\n >\n {{ t('common.button.save') }}\n </ABtnSecondary>\n <ABtnPrimary\n type=\"submit\"\n class=\"mx-2\"\n data-cy=\"button-save-and-apply\"\n :loading=\"saving === 'saveAndApply'\"\n :disabled=\"!canEditMetadata || saving === 'save'\"\n @click.stop=\"onSaveAndApply\"\n >\n {{ t('common.damImage.upload.saveAndApply') }}\n </ABtnPrimary>\n </AssetDetailSidebarActionsWrapper>\n <UploadQueueDialogSingleSidebarMetadataContent\n :queue-key=\"queueKey\"\n :ext-system=\"extSystem\"\n :config-name=\"damConfigName\"\n />\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAaA,IAAMmB,IAAQC,GAqBRC,IAAOH,GAMPI,IAAgBC,EAAiBJ,EAAM,UAAU,GAEjD,EAAE,SAAMK,EAAQ,GAEhBC,IAAoBC,EAAqB,GAEzCC,IAAkBC,QACRH,EAAkB,cAAcN,EAAM,QAC7C,CAAA,CAAM,EAAE,EAAE,mBAAmB,EACrC,GAEKU,IAAKb,EAAa,EAAE,QAAQc,EAAuC,CAAC,GAEpE,EAAE,2BAAwBC,EAAU,GAEpCC,IAAS,YAAY;GAEzB,AADAH,EAAG,MAAM,OAAO,GACZA,EAAG,MAAM,WACXI,EAAoB,IAGtBZ,EAAK,MAAM;EACb,GAEMa,IAAiB,YAAY;GAEjC,AADAL,EAAG,MAAM,OAAO,GACZA,EAAG,MAAM,WACXI,EAAoB,IAGtBZ,EAAK,cAAc;EACrB;;;G,wBAKUD,EAAA,YADRnB,EAAA,GAAAG,EAgCmCC,GAAA;;IA9BhC,aAAWe,EAAA;;IAEZ,SAAAd,QAOe;KANPc,EAAA,eADRnB,EAAA,GAAAG,EAOe+B,GAAA;;MALb,WAAQ;MACP,UAAUf,EAAA;MACV,SAAK,AAAAwB,EAAA,OAAArC,GAAA,MAAOc,EAAI,SAAA,GAAA,CAAA,MAAA,CAAA;;MAEjB,SAAAf,QAAgC,CAA7BE,EAAAC,EAAAC,EAAAuC,CAAA,CAAC,CAAA,uBAAA,CAAA,GAAA,CAAA,C;;;KAENrC,EASgByB,GAAA;MARd,MAAK;MACL,OAAM;MACN,WAAQ;MACP,SAASjB,EAAA,WAAM;MACf,UAAQ,CAAGO,EAAA,SAAmBP,EAAA,WAAM;MACpC,SAAKb,EAAOyB,GAAM,CAAA,MAAA,CAAA;;MAEnB,SAAA1B,QAA6B,CAA1BE,EAAAC,EAAAC,EAAAuC,CAAA,CAAC,CAAA,oBAAA,CAAA,GAAA,CAAA,C;;;KAENrC,EASc0B,GAAA;MARZ,MAAK;MACL,OAAM;MACN,WAAQ;MACP,SAASlB,EAAA,WAAM;MACf,UAAQ,CAAGO,EAAA,SAAmBP,EAAA,WAAM;MACpC,SAAKb,EAAO2B,GAAc,CAAA,MAAA,CAAA;;MAE3B,SAAA5B,QAA8C,CAA3CE,EAAAC,EAAAC,EAAAuC,CAAA,CAAC,CAAA,qCAAA,CAAA,GAAA,CAAA,C;;;;;G,mCAGRrC,EAIEC,GAAA;IAHC,aAAWO,EAAA;IACX,cAAYA,EAAA;IACZ,eAAaV,EAAAY,CAAA"}
1
+ {"version":3,"file":"UploadQueueDialogSingleSidebarMetadata.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createBlock","AssetDetailSidebarActionsWrapper","_withCtx","_withModifiers","_createTextVNode","_toDisplayString","_unref","_createVNode","UploadQueueDialogSingleSidebarMetadataContent","AssetDetailSidebarActionsWrapper_default","UploadQueueDialogSingleSidebarMetadataContent_default","useVuelidate","UploadQueueDialogSingleSidebarMetadata_vue_vue_type_script_setup_true_lang_default","__emit","props","__props","emit","damConfigName","useDamConfigName","useI18n","uploadQueuesStore","useUploadQueuesStore","canEditMetadata","computed","v$","ADamAssetMetadataValidationScopeSymbol","useAlerts","onSave","showValidationError","onSaveAndApply","_component_ABtnTertiary","resolveComponent","_component_ABtnSecondary","_component_ABtnPrimary","openBlock","createElementBlock","Fragment","createBlock","withCtx","_cache","withModifiers","createTextVNode","toDisplayString","unref","t","createCommentVNode","createVNode"],"sources":["../../../../../src/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebarMetadata.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport AssetDetailSidebarActionsWrapper from '@/domains/dam/assetDetail/components/AssetDetailSidebarActionsWrapper.vue'\nimport { useI18n } from 'vue-i18n'\nimport { computed } from 'vue'\nimport useVuelidate from '@vuelidate/core'\nimport type { DamAssetTypeType } from '@/domains/dam/types/Asset'\nimport UploadQueueDialogSingleSidebarMetadataContent from '@/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebarMetadataContent.vue'\nimport { ADamAssetMetadataValidationScopeSymbol } from '@/domains/dam/composables/uploadValidations'\nimport { useAlerts } from '@/domains/system/composables/alerts'\nimport { useUploadQueuesStore } from '@/domains/dam/uploadQueue/store/uploadQueuesStore'\nimport type { IntegerId } from '@/shared/types/common'\nimport { useDamConfigName } from '@/domains/dam/composables/damConfigName'\n\nconst props = withDefaults(\n defineProps<{\n queueKey: string\n extSystem: IntegerId\n isActive: boolean\n dataCy?: string\n assetType: DamAssetTypeType\n configName?: string\n showRefresh?: boolean\n refreshDisabled?: boolean\n /** Which of the two buttons is saving. */\n saving?: 'save' | 'saveAndApply' | null\n }>(),\n {\n dataCy: undefined,\n configName: undefined,\n showRefresh: false,\n refreshDisabled: false,\n saving: null,\n }\n)\nconst emit = defineEmits<{\n (e: 'save'): void\n (e: 'saveAndApply'): void\n (e: 'refresh'): void\n}>()\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst damConfigName = useDamConfigName(props.configName)\n\nconst { t } = useI18n()\n\nconst uploadQueuesStore = useUploadQueuesStore()\n\nconst canEditMetadata = computed(() => {\n const items = uploadQueuesStore.getQueueItems(props.queueKey)\n return items[0]?.canEditMetadata ?? false\n})\n\nconst v$ = useVuelidate({ $scope: ADamAssetMetadataValidationScopeSymbol })\n\nconst { showValidationError } = useAlerts()\n\nconst onSave = async () => {\n v$.value.$touch()\n if (v$.value.$invalid) {\n showValidationError()\n return\n }\n emit('save')\n}\n\nconst onSaveAndApply = async () => {\n v$.value.$touch()\n if (v$.value.$invalid) {\n showValidationError()\n return\n }\n emit('saveAndApply')\n}\n</script>\n\n<template>\n <AssetDetailSidebarActionsWrapper\n v-if=\"isActive\"\n :queue-key=\"queueKey\"\n >\n <ABtnTertiary\n v-if=\"showRefresh\"\n data-cy=\"button-refresh\"\n :disabled=\"refreshDisabled\"\n @click.stop=\"emit('refresh')\"\n >\n {{ t('common.button.refresh') }}\n </ABtnTertiary>\n <ABtnSecondary\n type=\"submit\"\n class=\"ml-2\"\n data-cy=\"button-save\"\n :loading=\"saving === 'save'\"\n :disabled=\"!canEditMetadata || saving === 'saveAndApply'\"\n @click.stop=\"onSave\"\n >\n {{ t('common.button.save') }}\n </ABtnSecondary>\n <ABtnPrimary\n type=\"submit\"\n class=\"mx-2\"\n data-cy=\"button-save-and-apply\"\n :loading=\"saving === 'saveAndApply'\"\n :disabled=\"!canEditMetadata || saving === 'save'\"\n @click.stop=\"onSaveAndApply\"\n >\n {{ t('common.damImage.upload.saveAndApply') }}\n </ABtnPrimary>\n </AssetDetailSidebarActionsWrapper>\n <UploadQueueDialogSingleSidebarMetadataContent\n :queue-key=\"queueKey\"\n :ext-system=\"extSystem\"\n :config-name=\"damConfigName\"\n />\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAaA,IAAMe,IAAQC,GAqBRC,IAAOH,GAMPI,IAAgBC,EAAiBJ,EAAM,UAAU,GAEjD,EAAE,SAAMK,EAAQ,GAEhBC,IAAoBC,EAAqB,GAEzCC,IAAkBC,QACRH,EAAkB,cAAcN,EAAM,QAC7C,CAAA,CAAM,EAAE,EAAE,mBAAmB,EACrC,GAEKU,IAAKb,EAAa,EAAE,QAAQc,EAAuC,CAAC,GAEpE,EAAE,2BAAwBC,EAAU,GAEpCC,IAAS,YAAY;GAEzB,AADAH,EAAG,MAAM,OAAO,GACZA,EAAG,MAAM,WACXI,EAAoB,IAGtBZ,EAAK,MAAM;EACb,GAEMa,IAAiB,YAAY;GAEjC,AADAL,EAAG,MAAM,OAAO,GACZA,EAAG,MAAM,WACXI,EAAoB,IAGtBZ,EAAK,cAAc;EACrB;;;G,wBAKUD,EAAA,YADRhB,EAAA,GAAAC,EAgCmCC,GAAA;;IA9BhC,aAAWc,EAAA;;IAEZ,SAAAb,QAOe;KANPa,EAAA,eADRhB,EAAA,GAAAC,EAOe8B,GAAA;;MALb,WAAQ;MACP,UAAUf,EAAA;MACV,SAAK,AAAAwB,EAAA,OAAApC,GAAA,MAAOa,EAAI,SAAA,GAAA,CAAA,MAAA,CAAA;;MAEjB,SAAAd,QAAgC,CAA7BE,EAAAC,EAAAC,EAAAsC,CAAA,CAAC,CAAA,uBAAA,CAAA,GAAA,CAAA,C;;;KAENrC,EASgByB,GAAA;MARd,MAAK;MACL,OAAM;MACN,WAAQ;MACP,SAASjB,EAAA,WAAM;MACf,UAAQ,CAAGO,EAAA,SAAmBP,EAAA,WAAM;MACpC,SAAKZ,EAAOwB,GAAM,CAAA,MAAA,CAAA;;MAEnB,SAAAzB,QAA6B,CAA1BE,EAAAC,EAAAC,EAAAsC,CAAA,CAAC,CAAA,oBAAA,CAAA,GAAA,CAAA,C;;;KAENrC,EASc0B,GAAA;MARZ,MAAK;MACL,OAAM;MACN,WAAQ;MACP,SAASlB,EAAA,WAAM;MACf,UAAQ,CAAGO,EAAA,SAAmBP,EAAA,WAAM;MACpC,SAAKZ,EAAO0B,GAAc,CAAA,MAAA,CAAA;;MAE3B,SAAA3B,QAA8C,CAA3CE,EAAAC,EAAAC,EAAAsC,CAAA,CAAC,CAAA,qCAAA,CAAA,GAAA,CAAA,C;;;;;G,mCAGRrC,EAIEC,GAAA;IAHC,aAAWO,EAAA;IACX,cAAYA,EAAA;IACZ,eAAaT,EAAAW,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"UploadQueueDialogSingleSidebarMetadataContent.js","names":["_sfc_main","UploadQueueDialogSingleSidebarMetadataContent_vue_vue_type_script_setup_true_lang_default","UploadQueueDialogSingleSidebarMetadataContent_default"],"sources":["../../../../../src/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebarMetadataContent.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useI18n } from 'vue-i18n'\nimport { computed, ref } from 'vue'\nimport { DamAssetType } from '@/domains/dam/types/Asset'\nimport { useAssetDetailStore } from '@/domains/dam/assetDetail/store/assetDetailStore'\nimport { storeToRefs } from 'pinia'\nimport AssetCustomMetadataForm from '@/domains/dam/assetDetail/components/AssetCustomMetadataForm.vue'\nimport AssetFileInfoPanel from '@/domains/dam/assetDetail/components/AssetFileInfoPanel.vue'\nimport { useUploadQueuesStore } from '@/domains/dam/uploadQueue/store/uploadQueuesStore'\nimport type { UploadQueueItem } from '@/domains/dam/types/UploadQueue'\nimport AuthorRemoteAutocompleteWithCached from '@/domains/dam/author/components/AuthorRemoteAutocompleteWithCached.vue'\nimport KeywordRemoteAutocompleteWithCached from '@/domains/dam/keyword/components/KeywordRemoteAutocompleteWithCached.vue'\nimport ASystemEntityScope from '@/domains/form/components/ASystemEntityScope.vue'\nimport { ADamAssetMetadataValidationScopeSymbol } from '@/domains/dam/composables/uploadValidations'\nimport { useDamKeywordAssetTypeConfig } from '@/domains/dam/keyword/composables/damKeywordConfig'\nimport { useDamAuthorAssetTypeConfig } from '@/domains/dam/author/composables/damAuthorConfig'\nimport type { IntegerId } from '@/shared/types/common'\nimport { useCommonAdminCoreDamOptions } from '@/domains/dam/composables/commonAdminCoreDamOptions'\nimport { useDamConfigName } from '@/domains/dam/composables/damConfigName'\n\nconst props = withDefaults(\n defineProps<{\n queueKey: string\n extSystem: IntegerId\n configName?: string\n }>(),\n {\n configName: undefined,\n }\n)\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst damConfigName = useDamConfigName(props.configName)\n\nconst { t } = useI18n()\n\nconst panels = ref(['metadata', 'file'])\n\nconst assetDetailStore = useAssetDetailStore()\nconst { asset, metadataAreTouched } = storeToRefs(assetDetailStore)\n\nconst uploadQueuesStore = useUploadQueuesStore()\n\nconst items = computed(() => {\n return uploadQueuesStore.getQueueItems(props.queueKey)\n})\n\nconst item = computed<UploadQueueItem | null>(() => {\n return items.value[0] ?? null\n})\n\nconst assetType = computed(() => {\n return DamAssetType.Image\n})\n\nconst onAnyMetadataChange = () => {\n metadataAreTouched.value = true\n}\n\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst { keywordRequired, keywordEnabled } = useDamKeywordAssetTypeConfig(\n // eslint-disable-next-line vue/no-ref-object-reactivity-loss\n assetType.value,\n props.extSystem,\n damConfigName\n)\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst { authorRequired, authorEnabled } = useDamAuthorAssetTypeConfig(\n // eslint-disable-next-line vue/no-ref-object-reactivity-loss\n assetType.value,\n props.extSystem,\n damConfigName\n)\nconst { mainFileSingleUseEnabled, showFileInfoEnabled } = useCommonAdminCoreDamOptions(damConfigName)\n</script>\n\n<template>\n <VExpansionPanels\n v-if=\"item\"\n v-model=\"panels\"\n multiple\n class=\"v-expansion-panels--compact\"\n >\n <VExpansionPanel\n elevation=\"0\"\n :title=\"t('common.damImage.asset.detail.info.metadata')\"\n value=\"metadata\"\n >\n <VExpansionPanelText>\n <VForm :disabled=\"!item.canEditMetadata\">\n <AssetCustomMetadataForm\n v-if=\"item\"\n v-model=\"item.customData\"\n :ext-system=\"extSystem\"\n :asset-type=\"assetType\"\n @any-change=\"onAnyMetadataChange\"\n >\n <template #after-pinned>\n <VRow\n v-if=\"keywordEnabled\"\n density=\"compact\"\n class=\"my-2\"\n >\n <VCol>\n <ASystemEntityScope\n subject=\"keyword\"\n system=\"dam\"\n >\n <KeywordRemoteAutocompleteWithCached\n v-model=\"item.keywords\"\n :label=\"t('common.damImage.asset.model.keywords')\"\n data-cy=\"custom-field-keywords\"\n :ext-system=\"extSystem\"\n clearable\n multiple\n :disabled=\"!item.canEditMetadata\"\n :required=\"keywordRequired\"\n :validation-scope=\"ADamAssetMetadataValidationScopeSymbol\"\n @update:model-value=\"onAnyMetadataChange\"\n />\n </ASystemEntityScope>\n </VCol>\n </VRow>\n <VRow\n v-if=\"authorEnabled\"\n density=\"compact\"\n class=\"my-2\"\n >\n <VCol>\n <ASystemEntityScope\n subject=\"author\"\n system=\"dam\"\n >\n <AuthorRemoteAutocompleteWithCached\n v-model=\"item.authors\"\n :label=\"t('common.damImage.asset.model.authors')\"\n :author-conflicts=\"item.authorConflicts\"\n data-cy=\"custom-field-authors\"\n :ext-system=\"extSystem\"\n clearable\n multiple\n :disabled=\"!item.canEditMetadata\"\n :required=\"authorRequired\"\n :validation-scope=\"ADamAssetMetadataValidationScopeSymbol\"\n @update:model-value=\"onAnyMetadataChange\"\n />\n </ASystemEntityScope>\n </VCol>\n </VRow>\n <VRow\n v-if=\"mainFileSingleUseEnabled\"\n density=\"compact\"\n class=\"my-2\"\n >\n <VCol>\n <VSwitch\n v-model=\"item.mainFileSingleUse\"\n :label=\"t('common.damImage.asset.model.mainFileSingleUse')\"\n />\n </VCol>\n </VRow>\n </template>\n </AssetCustomMetadataForm>\n </VForm>\n </VExpansionPanelText>\n </VExpansionPanel>\n <!--\n Only for this row's asset. The store is shared and holds the previous asset until the dialog has read its own.\n -->\n <AssetFileInfoPanel\n v-if=\"asset && asset.id === item.assetId && showFileInfoEnabled\"\n :asset=\"asset\"\n :show-users=\"false\"\n />\n </VExpansionPanels>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"UploadQueueDialogSingleSidebarMetadataContent.js","names":["UploadQueueDialogSingleSidebarMetadataContent_vue_vue_type_script_setup_true_lang_default","UploadQueueDialogSingleSidebarMetadataContent_default"],"sources":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"UploadQueueDialogSingleSidebarMetadataContent.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createBlock","_component_VExpansionPanels","_withCtx","_createVNode","_component_VExpansionPanel","_unref","_component_VExpansionPanelText","_component_VForm","AssetCustomMetadataForm","_component_VRow","_component_VCol","ASystemEntityScope","KeywordRemoteAutocompleteWithCached","_createCommentVNode","AuthorRemoteAutocompleteWithCached","_component_VSwitch","AssetFileInfoPanel","AssetCustomMetadataForm_default","AssetFileInfoPanel_default","AuthorRemoteAutocompleteWithCached_default","KeywordRemoteAutocompleteWithCached_default","ASystemEntityScope_default","UploadQueueDialogSingleSidebarMetadataContent_vue_vue_type_script_setup_true_lang_default","props","__props","damConfigName","useDamConfigName","useI18n","panels","ref","assetDetailStore","useAssetDetailStore","storeToRefs","uploadQueuesStore","useUploadQueuesStore","items","computed","item","assetType","DamAssetType","onAnyMetadataChange","useDamKeywordAssetTypeConfig","useDamAuthorAssetTypeConfig","useCommonAdminCoreDamOptions","openBlock","createBlock","VExpansionPanels","_cache","$event","withCtx","createVNode","VExpansionPanel","unref","t","VExpansionPanelText","VForm","keywordEnabled","VRow","VCol","keywordRequired","ADamAssetMetadataValidationScopeSymbol","createCommentVNode","authorEnabled","authorRequired","mainFileSingleUseEnabled","VSwitch","asset","showFileInfoEnabled"],"sources":["../../../../../src/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebarMetadataContent.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useI18n } from 'vue-i18n'\nimport { computed, ref } from 'vue'\nimport { DamAssetType } from '@/domains/dam/types/Asset'\nimport { useAssetDetailStore } from '@/domains/dam/assetDetail/store/assetDetailStore'\nimport { storeToRefs } from 'pinia'\nimport AssetCustomMetadataForm from '@/domains/dam/assetDetail/components/AssetCustomMetadataForm.vue'\nimport AssetFileInfoPanel from '@/domains/dam/assetDetail/components/AssetFileInfoPanel.vue'\nimport { useUploadQueuesStore } from '@/domains/dam/uploadQueue/store/uploadQueuesStore'\nimport type { UploadQueueItem } from '@/domains/dam/types/UploadQueue'\nimport AuthorRemoteAutocompleteWithCached from '@/domains/dam/author/components/AuthorRemoteAutocompleteWithCached.vue'\nimport KeywordRemoteAutocompleteWithCached from '@/domains/dam/keyword/components/KeywordRemoteAutocompleteWithCached.vue'\nimport ASystemEntityScope from '@/domains/form/components/ASystemEntityScope.vue'\nimport { ADamAssetMetadataValidationScopeSymbol } from '@/domains/dam/composables/uploadValidations'\nimport { useDamKeywordAssetTypeConfig } from '@/domains/dam/keyword/composables/damKeywordConfig'\nimport { useDamAuthorAssetTypeConfig } from '@/domains/dam/author/composables/damAuthorConfig'\nimport type { IntegerId } from '@/shared/types/common'\nimport { useCommonAdminCoreDamOptions } from '@/domains/dam/composables/commonAdminCoreDamOptions'\nimport { useDamConfigName } from '@/domains/dam/composables/damConfigName'\n\nconst props = withDefaults(\n defineProps<{\n queueKey: string\n extSystem: IntegerId\n configName?: string\n }>(),\n {\n configName: undefined,\n }\n)\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst damConfigName = useDamConfigName(props.configName)\n\nconst { t } = useI18n()\n\nconst panels = ref(['metadata', 'file'])\n\nconst assetDetailStore = useAssetDetailStore()\nconst { asset, metadataAreTouched } = storeToRefs(assetDetailStore)\n\nconst uploadQueuesStore = useUploadQueuesStore()\n\nconst items = computed(() => {\n return uploadQueuesStore.getQueueItems(props.queueKey)\n})\n\nconst item = computed<UploadQueueItem | null>(() => {\n return items.value[0] ?? null\n})\n\nconst assetType = computed(() => {\n return DamAssetType.Image\n})\n\nconst onAnyMetadataChange = () => {\n metadataAreTouched.value = true\n}\n\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst { keywordRequired, keywordEnabled } = useDamKeywordAssetTypeConfig(\n // eslint-disable-next-line vue/no-ref-object-reactivity-loss\n assetType.value,\n props.extSystem,\n damConfigName\n)\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst { authorRequired, authorEnabled } = useDamAuthorAssetTypeConfig(\n // eslint-disable-next-line vue/no-ref-object-reactivity-loss\n assetType.value,\n props.extSystem,\n damConfigName\n)\nconst { mainFileSingleUseEnabled, showFileInfoEnabled } = useCommonAdminCoreDamOptions(damConfigName)\n</script>\n\n<template>\n <VExpansionPanels\n v-if=\"item\"\n v-model=\"panels\"\n multiple\n class=\"v-expansion-panels--compact\"\n >\n <VExpansionPanel\n elevation=\"0\"\n :title=\"t('common.damImage.asset.detail.info.metadata')\"\n value=\"metadata\"\n >\n <VExpansionPanelText>\n <VForm :disabled=\"!item.canEditMetadata\">\n <AssetCustomMetadataForm\n v-if=\"item\"\n v-model=\"item.customData\"\n :ext-system=\"extSystem\"\n :asset-type=\"assetType\"\n @any-change=\"onAnyMetadataChange\"\n >\n <template #after-pinned>\n <VRow\n v-if=\"keywordEnabled\"\n density=\"compact\"\n class=\"my-2\"\n >\n <VCol>\n <ASystemEntityScope\n subject=\"keyword\"\n system=\"dam\"\n >\n <KeywordRemoteAutocompleteWithCached\n v-model=\"item.keywords\"\n :label=\"t('common.damImage.asset.model.keywords')\"\n data-cy=\"custom-field-keywords\"\n :ext-system=\"extSystem\"\n clearable\n multiple\n :disabled=\"!item.canEditMetadata\"\n :required=\"keywordRequired\"\n :validation-scope=\"ADamAssetMetadataValidationScopeSymbol\"\n @update:model-value=\"onAnyMetadataChange\"\n />\n </ASystemEntityScope>\n </VCol>\n </VRow>\n <VRow\n v-if=\"authorEnabled\"\n density=\"compact\"\n class=\"my-2\"\n >\n <VCol>\n <ASystemEntityScope\n subject=\"author\"\n system=\"dam\"\n >\n <AuthorRemoteAutocompleteWithCached\n v-model=\"item.authors\"\n :label=\"t('common.damImage.asset.model.authors')\"\n :author-conflicts=\"item.authorConflicts\"\n data-cy=\"custom-field-authors\"\n :ext-system=\"extSystem\"\n clearable\n multiple\n :disabled=\"!item.canEditMetadata\"\n :required=\"authorRequired\"\n :validation-scope=\"ADamAssetMetadataValidationScopeSymbol\"\n @update:model-value=\"onAnyMetadataChange\"\n />\n </ASystemEntityScope>\n </VCol>\n </VRow>\n <VRow\n v-if=\"mainFileSingleUseEnabled\"\n density=\"compact\"\n class=\"my-2\"\n >\n <VCol>\n <VSwitch\n v-model=\"item.mainFileSingleUse\"\n :label=\"t('common.damImage.asset.model.mainFileSingleUse')\"\n />\n </VCol>\n </VRow>\n </template>\n </AssetCustomMetadataForm>\n </VForm>\n </VExpansionPanelText>\n </VExpansionPanel>\n <!--\n Only for this row's asset. The store is shared and holds the previous asset until the dialog has read its own.\n -->\n <AssetFileInfoPanel\n v-if=\"asset && asset.id === item.assetId && showFileInfoEnabled\"\n :asset=\"asset\"\n :show-users=\"false\"\n />\n </VExpansionPanels>\n</template>\n"],"mappings":"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"}
1
+ {"version":3,"file":"UploadQueueDialogSingleSidebarMetadataContent.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createBlock","_component_VExpansionPanels","_withCtx","_createVNode","_component_VExpansionPanel","_unref","_component_VExpansionPanelText","_component_VForm","AssetCustomMetadataForm","_component_VRow","_component_VCol","ASystemEntityScope","KeywordRemoteAutocompleteWithCached","AuthorRemoteAutocompleteWithCached","_component_VSwitch","AssetFileInfoPanel","AssetCustomMetadataForm_default","AssetFileInfoPanel_default","AuthorRemoteAutocompleteWithCached_default","KeywordRemoteAutocompleteWithCached_default","ASystemEntityScope_default","UploadQueueDialogSingleSidebarMetadataContent_vue_vue_type_script_setup_true_lang_default","props","__props","damConfigName","useDamConfigName","useI18n","panels","ref","assetDetailStore","useAssetDetailStore","storeToRefs","uploadQueuesStore","useUploadQueuesStore","items","computed","item","assetType","DamAssetType","onAnyMetadataChange","useDamKeywordAssetTypeConfig","useDamAuthorAssetTypeConfig","useCommonAdminCoreDamOptions","openBlock","createBlock","VExpansionPanels","_cache","$event","withCtx","createVNode","VExpansionPanel","unref","t","VExpansionPanelText","VForm","keywordEnabled","VRow","VCol","keywordRequired","ADamAssetMetadataValidationScopeSymbol","createCommentVNode","authorEnabled","authorRequired","mainFileSingleUseEnabled","VSwitch","asset","showFileInfoEnabled"],"sources":["../../../../../src/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebarMetadataContent.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useI18n } from 'vue-i18n'\nimport { computed, ref } from 'vue'\nimport { DamAssetType } from '@/domains/dam/types/Asset'\nimport { useAssetDetailStore } from '@/domains/dam/assetDetail/store/assetDetailStore'\nimport { storeToRefs } from 'pinia'\nimport AssetCustomMetadataForm from '@/domains/dam/assetDetail/components/AssetCustomMetadataForm.vue'\nimport AssetFileInfoPanel from '@/domains/dam/assetDetail/components/AssetFileInfoPanel.vue'\nimport { useUploadQueuesStore } from '@/domains/dam/uploadQueue/store/uploadQueuesStore'\nimport type { UploadQueueItem } from '@/domains/dam/types/UploadQueue'\nimport AuthorRemoteAutocompleteWithCached from '@/domains/dam/author/components/AuthorRemoteAutocompleteWithCached.vue'\nimport KeywordRemoteAutocompleteWithCached from '@/domains/dam/keyword/components/KeywordRemoteAutocompleteWithCached.vue'\nimport ASystemEntityScope from '@/domains/form/components/ASystemEntityScope.vue'\nimport { ADamAssetMetadataValidationScopeSymbol } from '@/domains/dam/composables/uploadValidations'\nimport { useDamKeywordAssetTypeConfig } from '@/domains/dam/keyword/composables/damKeywordConfig'\nimport { useDamAuthorAssetTypeConfig } from '@/domains/dam/author/composables/damAuthorConfig'\nimport type { IntegerId } from '@/shared/types/common'\nimport { useCommonAdminCoreDamOptions } from '@/domains/dam/composables/commonAdminCoreDamOptions'\nimport { useDamConfigName } from '@/domains/dam/composables/damConfigName'\n\nconst props = withDefaults(\n defineProps<{\n queueKey: string\n extSystem: IntegerId\n configName?: string\n }>(),\n {\n configName: undefined,\n }\n)\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst damConfigName = useDamConfigName(props.configName)\n\nconst { t } = useI18n()\n\nconst panels = ref(['metadata', 'file'])\n\nconst assetDetailStore = useAssetDetailStore()\nconst { asset, metadataAreTouched } = storeToRefs(assetDetailStore)\n\nconst uploadQueuesStore = useUploadQueuesStore()\n\nconst items = computed(() => {\n return uploadQueuesStore.getQueueItems(props.queueKey)\n})\n\nconst item = computed<UploadQueueItem | null>(() => {\n return items.value[0] ?? null\n})\n\nconst assetType = computed(() => {\n return DamAssetType.Image\n})\n\nconst onAnyMetadataChange = () => {\n metadataAreTouched.value = true\n}\n\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst { keywordRequired, keywordEnabled } = useDamKeywordAssetTypeConfig(\n // eslint-disable-next-line vue/no-ref-object-reactivity-loss\n assetType.value,\n props.extSystem,\n damConfigName\n)\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst { authorRequired, authorEnabled } = useDamAuthorAssetTypeConfig(\n // eslint-disable-next-line vue/no-ref-object-reactivity-loss\n assetType.value,\n props.extSystem,\n damConfigName\n)\nconst { mainFileSingleUseEnabled, showFileInfoEnabled } = useCommonAdminCoreDamOptions(damConfigName)\n</script>\n\n<template>\n <VExpansionPanels\n v-if=\"item\"\n v-model=\"panels\"\n multiple\n class=\"v-expansion-panels--compact\"\n >\n <VExpansionPanel\n elevation=\"0\"\n :title=\"t('common.damImage.asset.detail.info.metadata')\"\n value=\"metadata\"\n >\n <VExpansionPanelText>\n <VForm :disabled=\"!item.canEditMetadata\">\n <AssetCustomMetadataForm\n v-if=\"item\"\n v-model=\"item.customData\"\n :ext-system=\"extSystem\"\n :asset-type=\"assetType\"\n @any-change=\"onAnyMetadataChange\"\n >\n <template #after-pinned>\n <VRow\n v-if=\"keywordEnabled\"\n density=\"compact\"\n class=\"my-2\"\n >\n <VCol>\n <ASystemEntityScope\n subject=\"keyword\"\n system=\"dam\"\n >\n <KeywordRemoteAutocompleteWithCached\n v-model=\"item.keywords\"\n :label=\"t('common.damImage.asset.model.keywords')\"\n data-cy=\"custom-field-keywords\"\n :ext-system=\"extSystem\"\n clearable\n multiple\n :disabled=\"!item.canEditMetadata\"\n :required=\"keywordRequired\"\n :validation-scope=\"ADamAssetMetadataValidationScopeSymbol\"\n @update:model-value=\"onAnyMetadataChange\"\n />\n </ASystemEntityScope>\n </VCol>\n </VRow>\n <VRow\n v-if=\"authorEnabled\"\n density=\"compact\"\n class=\"my-2\"\n >\n <VCol>\n <ASystemEntityScope\n subject=\"author\"\n system=\"dam\"\n >\n <AuthorRemoteAutocompleteWithCached\n v-model=\"item.authors\"\n :label=\"t('common.damImage.asset.model.authors')\"\n :author-conflicts=\"item.authorConflicts\"\n data-cy=\"custom-field-authors\"\n :ext-system=\"extSystem\"\n clearable\n multiple\n :disabled=\"!item.canEditMetadata\"\n :required=\"authorRequired\"\n :validation-scope=\"ADamAssetMetadataValidationScopeSymbol\"\n @update:model-value=\"onAnyMetadataChange\"\n />\n </ASystemEntityScope>\n </VCol>\n </VRow>\n <VRow\n v-if=\"mainFileSingleUseEnabled\"\n density=\"compact\"\n class=\"my-2\"\n >\n <VCol>\n <VSwitch\n v-model=\"item.mainFileSingleUse\"\n :label=\"t('common.damImage.asset.model.mainFileSingleUse')\"\n />\n </VCol>\n </VRow>\n </template>\n </AssetCustomMetadataForm>\n </VForm>\n </VExpansionPanelText>\n </VExpansionPanel>\n <!--\n Only for this row's asset. The store is shared and holds the previous asset until the dialog has read its own.\n -->\n <AssetFileInfoPanel\n v-if=\"asset && asset.id === item.assetId && showFileInfoEnabled\"\n :asset=\"asset\"\n :show-users=\"false\"\n />\n </VExpansionPanels>\n</template>\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"UploadQueueEditable.js","names":["_sfc_main","UploadQueueEditable_vue_vue_type_script_setup_true_lang_default","UploadQueueEditable_default"],"sources":["../../../../../src/domains/dam/uploadQueue/components/UploadQueueEditable.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, onMounted, ref, onBeforeUnmount } from 'vue'\nimport type { UploadQueueItem, UploadQueueKey } from '@/domains/dam/types/UploadQueue'\nimport UploadQueueItemEditable from '@/domains/dam/uploadQueue/components/UploadQueueItemEditable.vue'\nimport AssetQueueSelectedSidebar from '@/domains/dam/uploadQueue/components/AssetQueueSelectedSidebar.vue'\nimport type { DocId, IntegerId } from '@/shared/types/common'\nimport {\n type UploadQueueListBinding,\n useLibraryUploadQueueListBinding,\n} from '@/domains/dam/uploadQueue/components/uploadQueueBindings'\nimport { createUploadQueueItemRefresh } from '@/domains/dam/uploadQueue/composables/uploadQueueItemRefresh'\nimport { useEventListener } from '@vueuse/core'\nimport { useDamConfigName } from '@/domains/dam/composables/damConfigName'\n\nconst props = withDefaults(\n defineProps<{\n queueKey: UploadQueueKey\n extSystem: IntegerId\n massOperations: boolean\n configName?: string\n disableDoneAnimation?: boolean\n /** What the list needs from its host. Without it the library store, caches, alerts and options are used. */\n queue?: UploadQueueListBinding\n /** Minimum row count at which the mass operations are shown beside the list. */\n massOperationsFrom?: number\n /** Arrow keys, PageUp, PageDown, Home and End scroll the list. */\n keyboardScroll?: boolean\n }>(),\n {\n configName: undefined,\n disableDoneAnimation: false,\n queue: undefined,\n massOperationsFrom: 1,\n keyboardScroll: true,\n }\n)\n\nconst emit = defineEmits<{\n (e: 'showDetail', data: DocId): void\n}>()\n\ndefineSlots<{\n /** Default: the library row, with its v-models on the item. */\n item?(props: {\n item: UploadQueueItem\n index: number\n refreshDisabled: boolean\n refresh: () => void\n refreshMayHelp: boolean\n }): unknown\n /**\n * Default: the library mass operations of `queueKey`, using the library store even when `queue` is bound.\n * A host with its own store passes its sidebar here, as admin-dam does.\n */\n sidebar?(props: { queueKey: UploadQueueKey }): unknown\n}>()\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst damConfigName = useDamConfigName(props.configName)\n\n// Created only when the host binds none, so a list with its own binding touches nothing of the library.\nconst queue = props.queue ?? useLibraryUploadQueueListBinding(() => props.queueKey, damConfigName)\n\nconst { refreshing, refreshItem } = createUploadQueueItemRefresh(queue)\n\nconst list = computed(() => {\n return queue.items()\n})\n\nconst scrollableContainer = ref<HTMLElement | null>(null)\n\n// Inputs that ignore these keys, such as a switch. On them the keys still scroll the list.\nconst KEYLESS_INPUT_TYPES = ['checkbox', 'button', 'submit', 'reset', 'image', 'file']\n\n// A key typed into a row field moves its caret or value. It is left to the browser and the list does not scroll.\nconst isTypedIntoField = (target: EventTarget | null) =>\n (target instanceof HTMLInputElement && !KEYLESS_INPUT_TYPES.includes(target.type)) ||\n target instanceof HTMLTextAreaElement ||\n target instanceof HTMLSelectElement ||\n (target instanceof HTMLElement && target.isContentEditable)\n\n// The same for a key pressed in an open menu, such as a field's menu: it navigates that menu.\n// Other overlays, such as the containing dialog or a snackbar, leave the keys to the list.\nconst isInMenu = (target: EventTarget | null) => target instanceof Element && !!target.closest('.v-menu')\n\nconst handleKeyboardNavigation = (e: KeyboardEvent) => {\n if (!scrollableContainer.value || isTypedIntoField(e.target) || isInMenu(e.target)) return\n\n const container = scrollableContainer.value\n const scrollAmount = 100\n const pageScrollAmount = container.clientHeight - 50\n\n switch (e.key) {\n case 'ArrowDown':\n container.scrollTop += scrollAmount\n e.preventDefault()\n break\n case 'ArrowUp':\n container.scrollTop -= scrollAmount\n e.preventDefault()\n break\n case 'PageDown':\n container.scrollTop += pageScrollAmount\n e.preventDefault()\n break\n case 'PageUp':\n container.scrollTop -= pageScrollAmount\n e.preventDefault()\n break\n case 'Home':\n container.scrollTop = 0\n e.preventDefault()\n break\n case 'End':\n container.scrollTop = container.scrollHeight\n e.preventDefault()\n break\n }\n}\n\nlet cleanup: (() => void) | undefined\n\nonMounted(() => {\n queue.prime(list.value)\n\n if (props.keyboardScroll) cleanup = useEventListener(document, 'keydown', handleKeyboardNavigation)\n})\n\nonBeforeUnmount(() => {\n if (cleanup) {\n cleanup()\n }\n})\n</script>\n\n<template>\n <div\n class=\"asset-queue-editable\"\n :class=\"{ 'asset-queue-editable--sidebar-active': massOperations }\"\n >\n <div class=\"asset-queue-editable__left\">\n <div\n ref=\"scrollableContainer\"\n class=\"overflow-y-auto overflow-x-hidden h-100 mr-md-4\"\n style=\"outline: none\"\n >\n <VRow class=\"dam-upload-queue dam-upload-queue--editable pa-2 mb-5\">\n <template\n v-for=\"(item, index) in list\"\n :key=\"item.key\"\n >\n <slot\n name=\"item\"\n :item=\"item\"\n :index=\"index\"\n :refresh-disabled=\"refreshing\"\n :refresh=\"() => refreshItem(item)\"\n :refresh-may-help=\"queue.refreshMayHelp(item)\"\n >\n <UploadQueueItemEditable\n v-model:custom-data=\"item.customData\"\n v-model:keywords=\"item.keywords\"\n v-model:authors=\"item.authors\"\n v-model:main-file-single-use=\"item.mainFileSingleUse\"\n :main-file-single-use-enabled=\"queue.mainFileSingleUseEnabled\"\n :ext-system=\"extSystem\"\n :item=\"item\"\n :index=\"index\"\n :queue-key=\"queueKey\"\n :disable-done-animation=\"disableDoneAnimation\"\n :refresh-disabled=\"refreshing\"\n :refresh-may-help=\"queue.refreshMayHelp(item)\"\n @cancel-item=\"queue.cancel($event.item, $event.index, $event.queueKey)\"\n @remove-item=\"queue.remove($event)\"\n @refresh-item=\"refreshItem(item)\"\n @show-detail=\"emit('showDetail', $event)\"\n />\n </slot>\n </template>\n </VRow>\n </div>\n </div>\n <div\n v-if=\"list.length >= massOperationsFrom\"\n class=\"asset-queue-editable__sidebar border-s\"\n >\n <slot\n name=\"sidebar\"\n :queue-key=\"queueKey\"\n >\n <AssetQueueSelectedSidebar\n :queue-key=\"queueKey\"\n :ext-system=\"extSystem\"\n />\n </slot>\n </div>\n </div>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"UploadQueueEditable.js","names":["UploadQueueEditable_vue_vue_type_script_setup_true_lang_default","UploadQueueEditable_default"],"sources":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"UploadQueueEditable.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","_normalizeClass","_createElementVNode","_createVNode","_component_VRow","_withCtx","_Fragment","_renderList","_renderSlot","_unref","UploadQueueItemEditable","AssetQueueSelectedSidebar","_createCommentVNode","UploadQueueItemEditable_default","AssetQueueSelectedSidebar_default","_hoisted_1","_hoisted_2","UploadQueueEditable_vue_vue_type_script_setup_true_lang_default","__emit","props","__props","emit","damConfigName","useDamConfigName","queue","useLibraryUploadQueueListBinding","createUploadQueueItemRefresh","list","computed","scrollableContainer","ref","KEYLESS_INPUT_TYPES","isTypedIntoField","target","isInMenu","handleKeyboardNavigation","container","pageScrollAmount","cleanup","onMounted","useEventListener","onBeforeUnmount","openBlock","createElementBlock","normalizeClass","createElementVNode","\"outline\"","createVNode","VRow","withCtx","Fragment","renderList","renderSlot","_ctx","unref","refreshing","refreshItem","item","$event","_cache","createCommentVNode"],"sources":["../../../../../src/domains/dam/uploadQueue/components/UploadQueueEditable.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, onMounted, ref, onBeforeUnmount } from 'vue'\nimport type { UploadQueueItem, UploadQueueKey } from '@/domains/dam/types/UploadQueue'\nimport UploadQueueItemEditable from '@/domains/dam/uploadQueue/components/UploadQueueItemEditable.vue'\nimport AssetQueueSelectedSidebar from '@/domains/dam/uploadQueue/components/AssetQueueSelectedSidebar.vue'\nimport type { DocId, IntegerId } from '@/shared/types/common'\nimport {\n type UploadQueueListBinding,\n useLibraryUploadQueueListBinding,\n} from '@/domains/dam/uploadQueue/components/uploadQueueBindings'\nimport { createUploadQueueItemRefresh } from '@/domains/dam/uploadQueue/composables/uploadQueueItemRefresh'\nimport { useEventListener } from '@vueuse/core'\nimport { useDamConfigName } from '@/domains/dam/composables/damConfigName'\n\nconst props = withDefaults(\n defineProps<{\n queueKey: UploadQueueKey\n extSystem: IntegerId\n massOperations: boolean\n configName?: string\n disableDoneAnimation?: boolean\n /** What the list needs from its host. Without it the library store, caches, alerts and options are used. */\n queue?: UploadQueueListBinding\n /** Minimum row count at which the mass operations are shown beside the list. */\n massOperationsFrom?: number\n /** Arrow keys, PageUp, PageDown, Home and End scroll the list. */\n keyboardScroll?: boolean\n }>(),\n {\n configName: undefined,\n disableDoneAnimation: false,\n queue: undefined,\n massOperationsFrom: 1,\n keyboardScroll: true,\n }\n)\n\nconst emit = defineEmits<{\n (e: 'showDetail', data: DocId): void\n}>()\n\ndefineSlots<{\n /** Default: the library row, with its v-models on the item. */\n item?(props: {\n item: UploadQueueItem\n index: number\n refreshDisabled: boolean\n refresh: () => void\n refreshMayHelp: boolean\n }): unknown\n /**\n * Default: the library mass operations of `queueKey`, using the library store even when `queue` is bound.\n * A host with its own store passes its sidebar here, as admin-dam does.\n */\n sidebar?(props: { queueKey: UploadQueueKey }): unknown\n}>()\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst damConfigName = useDamConfigName(props.configName)\n\n// Created only when the host binds none, so a list with its own binding touches nothing of the library.\nconst queue = props.queue ?? useLibraryUploadQueueListBinding(() => props.queueKey, damConfigName)\n\nconst { refreshing, refreshItem } = createUploadQueueItemRefresh(queue)\n\nconst list = computed(() => {\n return queue.items()\n})\n\nconst scrollableContainer = ref<HTMLElement | null>(null)\n\n// Inputs that ignore these keys, such as a switch. On them the keys still scroll the list.\nconst KEYLESS_INPUT_TYPES = ['checkbox', 'button', 'submit', 'reset', 'image', 'file']\n\n// A key typed into a row field moves its caret or value. It is left to the browser and the list does not scroll.\nconst isTypedIntoField = (target: EventTarget | null) =>\n (target instanceof HTMLInputElement && !KEYLESS_INPUT_TYPES.includes(target.type)) ||\n target instanceof HTMLTextAreaElement ||\n target instanceof HTMLSelectElement ||\n (target instanceof HTMLElement && target.isContentEditable)\n\n// The same for a key pressed in an open menu, such as a field's menu: it navigates that menu.\n// Other overlays, such as the containing dialog or a snackbar, leave the keys to the list.\nconst isInMenu = (target: EventTarget | null) => target instanceof Element && !!target.closest('.v-menu')\n\nconst handleKeyboardNavigation = (e: KeyboardEvent) => {\n if (!scrollableContainer.value || isTypedIntoField(e.target) || isInMenu(e.target)) return\n\n const container = scrollableContainer.value\n const scrollAmount = 100\n const pageScrollAmount = container.clientHeight - 50\n\n switch (e.key) {\n case 'ArrowDown':\n container.scrollTop += scrollAmount\n e.preventDefault()\n break\n case 'ArrowUp':\n container.scrollTop -= scrollAmount\n e.preventDefault()\n break\n case 'PageDown':\n container.scrollTop += pageScrollAmount\n e.preventDefault()\n break\n case 'PageUp':\n container.scrollTop -= pageScrollAmount\n e.preventDefault()\n break\n case 'Home':\n container.scrollTop = 0\n e.preventDefault()\n break\n case 'End':\n container.scrollTop = container.scrollHeight\n e.preventDefault()\n break\n }\n}\n\nlet cleanup: (() => void) | undefined\n\nonMounted(() => {\n queue.prime(list.value)\n\n if (props.keyboardScroll) cleanup = useEventListener(document, 'keydown', handleKeyboardNavigation)\n})\n\nonBeforeUnmount(() => {\n if (cleanup) {\n cleanup()\n }\n})\n</script>\n\n<template>\n <div\n class=\"asset-queue-editable\"\n :class=\"{ 'asset-queue-editable--sidebar-active': massOperations }\"\n >\n <div class=\"asset-queue-editable__left\">\n <div\n ref=\"scrollableContainer\"\n class=\"overflow-y-auto overflow-x-hidden h-100 mr-md-4\"\n style=\"outline: none\"\n >\n <VRow class=\"dam-upload-queue dam-upload-queue--editable pa-2 mb-5\">\n <template\n v-for=\"(item, index) in list\"\n :key=\"item.key\"\n >\n <slot\n name=\"item\"\n :item=\"item\"\n :index=\"index\"\n :refresh-disabled=\"refreshing\"\n :refresh=\"() => refreshItem(item)\"\n :refresh-may-help=\"queue.refreshMayHelp(item)\"\n >\n <UploadQueueItemEditable\n v-model:custom-data=\"item.customData\"\n v-model:keywords=\"item.keywords\"\n v-model:authors=\"item.authors\"\n v-model:main-file-single-use=\"item.mainFileSingleUse\"\n :main-file-single-use-enabled=\"queue.mainFileSingleUseEnabled\"\n :ext-system=\"extSystem\"\n :item=\"item\"\n :index=\"index\"\n :queue-key=\"queueKey\"\n :disable-done-animation=\"disableDoneAnimation\"\n :refresh-disabled=\"refreshing\"\n :refresh-may-help=\"queue.refreshMayHelp(item)\"\n @cancel-item=\"queue.cancel($event.item, $event.index, $event.queueKey)\"\n @remove-item=\"queue.remove($event)\"\n @refresh-item=\"refreshItem(item)\"\n @show-detail=\"emit('showDetail', $event)\"\n />\n </slot>\n </template>\n </VRow>\n </div>\n </div>\n <div\n v-if=\"list.length >= massOperationsFrom\"\n class=\"asset-queue-editable__sidebar border-s\"\n >\n <slot\n name=\"sidebar\"\n :queue-key=\"queueKey\"\n >\n <AssetQueueSelectedSidebar\n :queue-key=\"queueKey\"\n :ext-system=\"extSystem\"\n />\n </slot>\n </div>\n </div>\n</template>\n"],"mappings":"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"}
1
+ {"version":3,"file":"UploadQueueEditable.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","_normalizeClass","_createElementVNode","_createVNode","_component_VRow","_withCtx","_Fragment","_renderList","_renderSlot","_unref","UploadQueueItemEditable","AssetQueueSelectedSidebar","UploadQueueItemEditable_default","AssetQueueSelectedSidebar_default","_hoisted_1","_hoisted_2","UploadQueueEditable_vue_vue_type_script_setup_true_lang_default","__emit","props","__props","emit","damConfigName","useDamConfigName","queue","useLibraryUploadQueueListBinding","createUploadQueueItemRefresh","list","computed","scrollableContainer","ref","KEYLESS_INPUT_TYPES","isTypedIntoField","target","isInMenu","handleKeyboardNavigation","container","pageScrollAmount","cleanup","onMounted","useEventListener","onBeforeUnmount","openBlock","createElementBlock","normalizeClass","createElementVNode","\"outline\"","createVNode","VRow","withCtx","Fragment","renderList","renderSlot","_ctx","unref","refreshing","refreshItem","item","$event","_cache","createCommentVNode"],"sources":["../../../../../src/domains/dam/uploadQueue/components/UploadQueueEditable.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, onMounted, ref, onBeforeUnmount } from 'vue'\nimport type { UploadQueueItem, UploadQueueKey } from '@/domains/dam/types/UploadQueue'\nimport UploadQueueItemEditable from '@/domains/dam/uploadQueue/components/UploadQueueItemEditable.vue'\nimport AssetQueueSelectedSidebar from '@/domains/dam/uploadQueue/components/AssetQueueSelectedSidebar.vue'\nimport type { DocId, IntegerId } from '@/shared/types/common'\nimport {\n type UploadQueueListBinding,\n useLibraryUploadQueueListBinding,\n} from '@/domains/dam/uploadQueue/components/uploadQueueBindings'\nimport { createUploadQueueItemRefresh } from '@/domains/dam/uploadQueue/composables/uploadQueueItemRefresh'\nimport { useEventListener } from '@vueuse/core'\nimport { useDamConfigName } from '@/domains/dam/composables/damConfigName'\n\nconst props = withDefaults(\n defineProps<{\n queueKey: UploadQueueKey\n extSystem: IntegerId\n massOperations: boolean\n configName?: string\n disableDoneAnimation?: boolean\n /** What the list needs from its host. Without it the library store, caches, alerts and options are used. */\n queue?: UploadQueueListBinding\n /** Minimum row count at which the mass operations are shown beside the list. */\n massOperationsFrom?: number\n /** Arrow keys, PageUp, PageDown, Home and End scroll the list. */\n keyboardScroll?: boolean\n }>(),\n {\n configName: undefined,\n disableDoneAnimation: false,\n queue: undefined,\n massOperationsFrom: 1,\n keyboardScroll: true,\n }\n)\n\nconst emit = defineEmits<{\n (e: 'showDetail', data: DocId): void\n}>()\n\ndefineSlots<{\n /** Default: the library row, with its v-models on the item. */\n item?(props: {\n item: UploadQueueItem\n index: number\n refreshDisabled: boolean\n refresh: () => void\n refreshMayHelp: boolean\n }): unknown\n /**\n * Default: the library mass operations of `queueKey`, using the library store even when `queue` is bound.\n * A host with its own store passes its sidebar here, as admin-dam does.\n */\n sidebar?(props: { queueKey: UploadQueueKey }): unknown\n}>()\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst damConfigName = useDamConfigName(props.configName)\n\n// Created only when the host binds none, so a list with its own binding touches nothing of the library.\nconst queue = props.queue ?? useLibraryUploadQueueListBinding(() => props.queueKey, damConfigName)\n\nconst { refreshing, refreshItem } = createUploadQueueItemRefresh(queue)\n\nconst list = computed(() => {\n return queue.items()\n})\n\nconst scrollableContainer = ref<HTMLElement | null>(null)\n\n// Inputs that ignore these keys, such as a switch. On them the keys still scroll the list.\nconst KEYLESS_INPUT_TYPES = ['checkbox', 'button', 'submit', 'reset', 'image', 'file']\n\n// A key typed into a row field moves its caret or value. It is left to the browser and the list does not scroll.\nconst isTypedIntoField = (target: EventTarget | null) =>\n (target instanceof HTMLInputElement && !KEYLESS_INPUT_TYPES.includes(target.type)) ||\n target instanceof HTMLTextAreaElement ||\n target instanceof HTMLSelectElement ||\n (target instanceof HTMLElement && target.isContentEditable)\n\n// The same for a key pressed in an open menu, such as a field's menu: it navigates that menu.\n// Other overlays, such as the containing dialog or a snackbar, leave the keys to the list.\nconst isInMenu = (target: EventTarget | null) => target instanceof Element && !!target.closest('.v-menu')\n\nconst handleKeyboardNavigation = (e: KeyboardEvent) => {\n if (!scrollableContainer.value || isTypedIntoField(e.target) || isInMenu(e.target)) return\n\n const container = scrollableContainer.value\n const scrollAmount = 100\n const pageScrollAmount = container.clientHeight - 50\n\n switch (e.key) {\n case 'ArrowDown':\n container.scrollTop += scrollAmount\n e.preventDefault()\n break\n case 'ArrowUp':\n container.scrollTop -= scrollAmount\n e.preventDefault()\n break\n case 'PageDown':\n container.scrollTop += pageScrollAmount\n e.preventDefault()\n break\n case 'PageUp':\n container.scrollTop -= pageScrollAmount\n e.preventDefault()\n break\n case 'Home':\n container.scrollTop = 0\n e.preventDefault()\n break\n case 'End':\n container.scrollTop = container.scrollHeight\n e.preventDefault()\n break\n }\n}\n\nlet cleanup: (() => void) | undefined\n\nonMounted(() => {\n queue.prime(list.value)\n\n if (props.keyboardScroll) cleanup = useEventListener(document, 'keydown', handleKeyboardNavigation)\n})\n\nonBeforeUnmount(() => {\n if (cleanup) {\n cleanup()\n }\n})\n</script>\n\n<template>\n <div\n class=\"asset-queue-editable\"\n :class=\"{ 'asset-queue-editable--sidebar-active': massOperations }\"\n >\n <div class=\"asset-queue-editable__left\">\n <div\n ref=\"scrollableContainer\"\n class=\"overflow-y-auto overflow-x-hidden h-100 mr-md-4\"\n style=\"outline: none\"\n >\n <VRow class=\"dam-upload-queue dam-upload-queue--editable pa-2 mb-5\">\n <template\n v-for=\"(item, index) in list\"\n :key=\"item.key\"\n >\n <slot\n name=\"item\"\n :item=\"item\"\n :index=\"index\"\n :refresh-disabled=\"refreshing\"\n :refresh=\"() => refreshItem(item)\"\n :refresh-may-help=\"queue.refreshMayHelp(item)\"\n >\n <UploadQueueItemEditable\n v-model:custom-data=\"item.customData\"\n v-model:keywords=\"item.keywords\"\n v-model:authors=\"item.authors\"\n v-model:main-file-single-use=\"item.mainFileSingleUse\"\n :main-file-single-use-enabled=\"queue.mainFileSingleUseEnabled\"\n :ext-system=\"extSystem\"\n :item=\"item\"\n :index=\"index\"\n :queue-key=\"queueKey\"\n :disable-done-animation=\"disableDoneAnimation\"\n :refresh-disabled=\"refreshing\"\n :refresh-may-help=\"queue.refreshMayHelp(item)\"\n @cancel-item=\"queue.cancel($event.item, $event.index, $event.queueKey)\"\n @remove-item=\"queue.remove($event)\"\n @refresh-item=\"refreshItem(item)\"\n @show-detail=\"emit('showDetail', $event)\"\n />\n </slot>\n </template>\n </VRow>\n </div>\n </div>\n <div\n v-if=\"list.length >= massOperationsFrom\"\n class=\"asset-queue-editable__sidebar border-s\"\n >\n <slot\n name=\"sidebar\"\n :queue-key=\"queueKey\"\n >\n <AssetQueueSelectedSidebar\n :queue-key=\"queueKey\"\n :ext-system=\"extSystem\"\n />\n </slot>\n </div>\n </div>\n</template>\n"],"mappings":"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"}