@anzusystems/common-admin 2.0.0-rc.5 → 2.0.0-rc.7

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 (690) hide show
  1. package/README.md +4 -0
  2. package/dist/AnzuSystemsCommonAdmin.d.ts +42 -32
  3. package/dist/AnzuSystemsCommonAdmin.js.map +1 -1
  4. package/dist/common-admin.css +1 -1
  5. package/dist/common-admin.js +282 -282
  6. package/dist/domains/anzuUser/api/anzuUserApi.d.ts +9 -12
  7. package/dist/domains/anzuUser/api/anzuUserApi.js.map +1 -1
  8. package/dist/domains/anzuUser/components/AAnzuUserDatatable.js.map +1 -1
  9. package/dist/domains/anzuUser/components/AAnzuUserDatatable.vue.d.ts +38 -44
  10. package/dist/domains/anzuUser/components/AAnzuUserDatatable.vue_vue_type_script_setup_true_lang.js.map +1 -1
  11. package/dist/domains/anzuUser/components/AAnzuUserFilter.js.map +1 -1
  12. package/dist/domains/anzuUser/components/AAnzuUserFilter.vue.d.ts +12 -13
  13. package/dist/domains/anzuUser/components/AAnzuUserFilter.vue_vue_type_script_setup_true_lang.js.map +1 -1
  14. package/dist/domains/anzuUser/components/AAnzuUserForm.js.map +1 -1
  15. package/dist/domains/anzuUser/components/AAnzuUserForm.vue.d.ts +18 -20
  16. package/dist/domains/anzuUser/components/AAnzuUserForm.vue_vue_type_script_setup_true_lang.js.map +1 -1
  17. package/dist/domains/anzuUser/components/AAnzuUserRoleAutocomplete.js.map +1 -1
  18. package/dist/domains/anzuUser/components/AAnzuUserRoleAutocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -1
  19. package/dist/domains/anzuUser/components/AUserBulkActionDialog.js.map +1 -1
  20. package/dist/domains/anzuUser/components/AUserBulkActionDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  21. package/dist/domains/anzuUser/components/AUserCopyPermissionsDialog.js.map +1 -1
  22. package/dist/domains/anzuUser/components/AUserCopyPermissionsDialog.vue.d.ts +2 -3
  23. package/dist/domains/anzuUser/components/AUserCopyPermissionsDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  24. package/dist/domains/anzuUser/components/AUserCreateInSystemButton.js.map +1 -1
  25. package/dist/domains/anzuUser/components/AUserCreateInSystemButton.vue.d.ts +9 -15
  26. package/dist/domains/anzuUser/components/AUserCreateInSystemButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  27. package/dist/domains/anzuUser/components/AUserEnabledSwitch.js.map +1 -1
  28. package/dist/domains/anzuUser/components/AUserEnabledSwitch.vue.d.ts +8 -7
  29. package/dist/domains/anzuUser/components/AUserEnabledSwitch.vue_vue_type_script_setup_true_lang.js.map +1 -1
  30. package/dist/domains/anzuUser/components/AUserManageButton.js.map +1 -1
  31. package/dist/domains/anzuUser/components/AUserManageButton.vue.d.ts +0 -1
  32. package/dist/domains/anzuUser/components/AUserManageButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  33. package/dist/domains/anzuUser/components/AUserMetadataForm.js.map +1 -1
  34. package/dist/domains/anzuUser/components/AUserMetadataForm.vue.d.ts +8 -9
  35. package/dist/domains/anzuUser/components/AUserMetadataForm.vue_vue_type_script_setup_true_lang.js.map +1 -1
  36. package/dist/domains/anzuUser/components/AUserMetadataRepairDialog.js.map +1 -1
  37. package/dist/domains/anzuUser/components/AUserMetadataRepairDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  38. package/dist/domains/anzuUser/components/AUserOtherSystemsTable.js.map +1 -1
  39. package/dist/domains/anzuUser/components/AUserOtherSystemsTable.vue.d.ts +1 -2
  40. package/dist/domains/anzuUser/components/AUserOtherSystemsTable.vue_vue_type_script_setup_true_lang.js.map +1 -1
  41. package/dist/domains/anzuUser/components/AUserSystemOverview.js.map +1 -1
  42. package/dist/domains/anzuUser/components/AUserSystemOverview.vue_vue_type_script_setup_true_lang.js.map +1 -1
  43. package/dist/domains/anzuUser/components/AUserSystemPanel.js.map +1 -1
  44. package/dist/domains/anzuUser/components/AUserSystemPanel.vue.d.ts +2 -2
  45. package/dist/domains/anzuUser/components/AUserSystemPanel.vue_vue_type_script_setup_true_lang.js.map +1 -1
  46. package/dist/domains/anzuUser/components/AUserSystemStatusChip.js.map +1 -1
  47. package/dist/domains/anzuUser/components/AUserSystemStatusChip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  48. package/dist/domains/anzuUser/components/AUserTabsShell.js.map +1 -1
  49. package/dist/domains/anzuUser/components/AUserTabsShell.vue.d.ts +17 -22
  50. package/dist/domains/anzuUser/components/AUserTabsShell.vue_vue_type_script_setup_true_lang.js.map +1 -1
  51. package/dist/domains/anzuUser/composables/anzuUserActions.d.ts +5 -9
  52. package/dist/domains/anzuUser/composables/anzuUserActions.js.map +1 -1
  53. package/dist/domains/anzuUser/composables/anzuUserValidations.d.ts +4 -6
  54. package/dist/domains/anzuUser/composables/anzuUserValidations.js.map +1 -1
  55. package/dist/domains/anzuUser/composables/cachedAnzuUsers.d.ts +3 -3
  56. package/dist/domains/anzuUser/composables/cachedAnzuUsers.js.map +1 -1
  57. package/dist/domains/anzuUser/composables/userCrossSystemSearch.d.ts +2 -4
  58. package/dist/domains/anzuUser/composables/userCrossSystemSearch.js.map +1 -1
  59. package/dist/domains/anzuUser/composables/userCrossSystemWrites.d.ts +5 -11
  60. package/dist/domains/anzuUser/composables/userCrossSystemWrites.js.map +1 -1
  61. package/dist/domains/anzuUser/composables/userSystemDescriptor.d.ts +33 -57
  62. package/dist/domains/anzuUser/composables/userSystemDescriptor.js.map +1 -1
  63. package/dist/domains/anzuUser/composables/userSystemProbe.d.ts +7 -27
  64. package/dist/domains/anzuUser/composables/userSystemProbe.js.map +1 -1
  65. package/dist/domains/anzuUser/filter/anzuUserFilter.d.ts +6 -16
  66. package/dist/domains/anzuUser/filter/anzuUserFilter.js.map +1 -1
  67. package/dist/domains/anzuUser/store/anzuUserStore.d.ts +1 -5
  68. package/dist/domains/anzuUser/store/anzuUserStore.js.map +1 -1
  69. package/dist/domains/anzuUser/store/userCrossSystemStore.d.ts +3 -14
  70. package/dist/domains/anzuUser/store/userCrossSystemStore.js.map +1 -1
  71. package/dist/domains/anzuUser/utils/userMetadataDiff.d.ts +7 -19
  72. package/dist/domains/anzuUser/utils/userMetadataDiff.js.map +1 -1
  73. package/dist/domains/anzuUser/utils/userSystemState.d.ts +12 -30
  74. package/dist/domains/anzuUser/utils/userSystemState.js.map +1 -1
  75. package/dist/domains/anzuUser/utils/userTabs.d.ts +1 -3
  76. package/dist/domains/anzuUser/utils/userTabs.js.map +1 -1
  77. package/dist/domains/api/composables/defineApiClient.d.ts +4 -8
  78. package/dist/domains/api/composables/defineApiClient.js.map +1 -1
  79. package/dist/domains/api/composables/request.d.ts +18 -48
  80. package/dist/domains/api/composables/request.js.map +1 -1
  81. package/dist/domains/api/composables/useApiFetchByIds.d.ts +7 -21
  82. package/dist/domains/api/composables/useApiFetchByIds.js.map +1 -1
  83. package/dist/domains/api/composables/useApiFetchItems.d.ts +18 -57
  84. package/dist/domains/api/composables/useApiFetchItems.js.map +1 -1
  85. package/dist/domains/api/composables/useApiFetchList.d.ts +7 -23
  86. package/dist/domains/api/composables/useApiFetchList.js.map +1 -1
  87. package/dist/domains/api/composables/useApiFetchListBatch.d.ts +5 -22
  88. package/dist/domains/api/composables/useApiFetchListBatch.js.map +1 -1
  89. package/dist/domains/api/composables/useApiQueryBuilder.js.map +1 -1
  90. package/dist/domains/api/composables/useApiRequest.d.ts +16 -39
  91. package/dist/domains/api/composables/useApiRequest.js.map +1 -1
  92. package/dist/domains/api/utils/apiErrors.d.ts +28 -55
  93. package/dist/domains/api/utils/apiErrors.js.map +1 -1
  94. package/dist/domains/api/utils/listBody.d.ts +22 -43
  95. package/dist/domains/api/utils/listBody.js.map +1 -1
  96. package/dist/domains/auth/components/Acl.js.map +1 -1
  97. package/dist/domains/auth/components/Acl.vue_vue_type_script_setup_true_lang.js.map +1 -1
  98. package/dist/domains/auth/composables/aclAllowed.d.ts +2 -3
  99. package/dist/domains/auth/composables/aclAllowed.js.map +1 -1
  100. package/dist/domains/auth/composables/defineAuth.js.map +1 -1
  101. package/dist/domains/auth/composables/refreshSession.d.ts +10 -13
  102. package/dist/domains/auth/composables/refreshSession.js.map +1 -1
  103. package/dist/domains/cached/components/ACachedChip.js.map +1 -1
  104. package/dist/domains/cached/components/ACachedChip.vue.d.ts +13 -11
  105. package/dist/domains/cached/components/ACachedChip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  106. package/dist/domains/cached/components/ACachedUserChip.js +1 -1
  107. package/dist/domains/cached/components/ACachedUserChip.js.map +1 -1
  108. package/dist/domains/cached/components/ACachedUserChip.vue.d.ts +3 -3
  109. package/dist/domains/cached/components/ACachedUserChip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  110. package/dist/domains/cached/composables/createUserAndTimeTrackingFields.d.ts +9 -9
  111. package/dist/domains/cached/composables/createUserAndTimeTrackingFields.js.map +1 -1
  112. package/dist/domains/cached/composables/defineCached.d.ts +13 -11
  113. package/dist/domains/cached/composables/defineCached.js.map +1 -1
  114. package/dist/domains/cached/composables/useCachedItem.d.ts +7 -8
  115. package/dist/domains/cached/composables/useCachedItem.js.map +1 -1
  116. package/dist/domains/collab/components/ACollabLockedByUser.js.map +1 -1
  117. package/dist/domains/collab/components/ACollabLockedByUser.vue_vue_type_script_setup_true_lang.js.map +1 -1
  118. package/dist/domains/collab/composables/collabAnyDataChange.js.map +1 -1
  119. package/dist/domains/collab/composables/collabField.d.ts +5 -3
  120. package/dist/domains/collab/composables/collabField.js.map +1 -1
  121. package/dist/domains/collab/composables/collabInit.js +58 -54
  122. package/dist/domains/collab/composables/collabInit.js.map +1 -1
  123. package/dist/domains/collab/composables/collabRecovery.d.ts +49 -0
  124. package/dist/domains/collab/composables/collabRecovery.js +99 -0
  125. package/dist/domains/collab/composables/collabRecovery.js.map +1 -0
  126. package/dist/domains/collab/composables/collabRoom.js +106 -106
  127. package/dist/domains/collab/composables/collabRoom.js.map +1 -1
  128. package/dist/domains/collab/composables/collabState.d.ts +11 -4
  129. package/dist/domains/collab/composables/collabState.js +34 -25
  130. package/dist/domains/collab/composables/collabState.js.map +1 -1
  131. package/dist/domains/collab/composables/commonAdminCollabOptions.d.ts +4 -2
  132. package/dist/domains/collab/types/Collab.d.ts +31 -5
  133. package/dist/domains/collab/types/Collab.js +23 -11
  134. package/dist/domains/collab/types/Collab.js.map +1 -1
  135. package/dist/domains/customDataForm/components/ACustomDataForm.js.map +1 -1
  136. package/dist/domains/customDataForm/components/ACustomDataForm.vue.d.ts +7 -5
  137. package/dist/domains/customDataForm/components/ACustomDataForm.vue_vue_type_script_setup_true_lang.js.map +1 -1
  138. package/dist/domains/customDataForm/components/ACustomDataFormElement.js.map +1 -1
  139. package/dist/domains/customDataForm/components/ACustomDataFormElement.vue_vue_type_script_setup_true_lang.js.map +1 -1
  140. package/dist/domains/customDataForm/components/ACustomDataFormHiddenPart.js.map +1 -1
  141. package/dist/domains/customDataForm/components/ACustomDataFormHiddenPart.vue.d.ts +5 -3
  142. package/dist/domains/customDataForm/components/ACustomDataFormHiddenPart.vue_vue_type_script_setup_true_lang.js.map +1 -1
  143. package/dist/domains/customDataForm/composables/useCustomDataForm.js.map +1 -1
  144. package/dist/domains/customDataForm/types/CustomDataForm.d.ts +4 -1
  145. package/dist/domains/dam/api/damAssetApi.d.ts +7 -7
  146. package/dist/domains/dam/api/damAssetApi.js.map +1 -1
  147. package/dist/domains/dam/api/damAssetLicenceApi.d.ts +1 -1
  148. package/dist/domains/dam/api/damAssetLicenceApi.js.map +1 -1
  149. package/dist/domains/dam/api/damConstants.js.map +1 -1
  150. package/dist/domains/dam/api/damEndPoints.js.map +1 -1
  151. package/dist/domains/dam/api/damImageApi.js.map +1 -1
  152. package/dist/domains/dam/api/uploadApi.js.map +1 -1
  153. package/dist/domains/dam/assetDetail/components/AssetCustomMetadataForm.js.map +1 -1
  154. package/dist/domains/dam/assetDetail/components/AssetCustomMetadataForm.vue.d.ts +7 -5
  155. package/dist/domains/dam/assetDetail/components/AssetCustomMetadataForm.vue_vue_type_script_setup_true_lang.js.map +1 -1
  156. package/dist/domains/dam/assetDetail/components/AssetDetailDialog.js.map +1 -1
  157. package/dist/domains/dam/assetDetail/components/AssetDetailDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  158. package/dist/domains/dam/assetDetail/components/AssetDetailDialogFrame.js.map +1 -1
  159. package/dist/domains/dam/assetDetail/components/AssetDetailDialogFrame.vue.d.ts +1 -1
  160. package/dist/domains/dam/assetDetail/components/AssetDetailDialogFrame.vue_vue_type_script_setup_true_lang.js.map +1 -1
  161. package/dist/domains/dam/assetDetail/components/AssetDetailSidebarActionsWrapper.vue.d.ts +5 -3
  162. package/dist/domains/dam/assetDetail/components/AssetDetailSidebarFrame.js.map +1 -1
  163. package/dist/domains/dam/assetDetail/components/AssetDetailSidebarFrame.vue_vue_type_script_setup_true_lang.js.map +1 -1
  164. package/dist/domains/dam/assetDetail/components/AssetDetailSidebarMetadata.js.map +1 -1
  165. package/dist/domains/dam/assetDetail/components/AssetDetailSidebarMetadata.vue_vue_type_script_setup_true_lang.js.map +1 -1
  166. package/dist/domains/dam/assetDetail/components/AssetDetailSidebarROI.js.map +1 -1
  167. package/dist/domains/dam/assetDetail/components/AssetDetailSidebarROI.vue_vue_type_script_setup_true_lang.js.map +1 -1
  168. package/dist/domains/dam/assetDetail/components/AssetFileInfoPanel.js.map +1 -1
  169. package/dist/domains/dam/assetDetail/components/AssetFileInfoPanel.vue.d.ts +1 -1
  170. package/dist/domains/dam/assetDetail/components/AssetFileInfoPanel.vue_vue_type_script_setup_true_lang.js.map +1 -1
  171. package/dist/domains/dam/assetDetail/components/AssetImage.js.map +1 -1
  172. package/dist/domains/dam/assetDetail/components/AssetImage.vue.d.ts +1 -1
  173. package/dist/domains/dam/assetDetail/components/AssetImage.vue_vue_type_script_setup_true_lang.js.map +1 -1
  174. package/dist/domains/dam/assetDetail/components/AssetImageMetaIcons.js.map +1 -1
  175. package/dist/domains/dam/assetDetail/components/AssetImageMetaIcons.vue.d.ts +2 -2
  176. package/dist/domains/dam/assetDetail/components/AssetImageMetaIcons.vue_vue_type_script_setup_true_lang.js.map +1 -1
  177. package/dist/domains/dam/assetDetail/components/AssetInfobox.js.map +1 -1
  178. package/dist/domains/dam/assetDetail/components/AssetInfobox.vue_vue_type_script_setup_true_lang.js.map +1 -1
  179. package/dist/domains/dam/assetDetail/components/AssetMetadata.js.map +1 -1
  180. package/dist/domains/dam/assetDetail/components/AssetMetadata.vue_vue_type_script_setup_true_lang.js.map +1 -1
  181. package/dist/domains/dam/assetDetail/composables/assetDetailExtSystem.d.ts +5 -6
  182. package/dist/domains/dam/assetDetail/composables/assetDetailExtSystem.js.map +1 -1
  183. package/dist/domains/dam/assetDetail/composables/assetDetailView.d.ts +10 -10
  184. package/dist/domains/dam/assetDetail/composables/assetDetailView.js.map +1 -1
  185. package/dist/domains/dam/assetDetail/store/assetDetailStore.js.map +1 -1
  186. package/dist/domains/dam/assetDetail/utils/assetMetadataMayStillChange.d.ts +4 -3
  187. package/dist/domains/dam/assetDetail/utils/assetMetadataMayStillChange.js.map +1 -1
  188. package/dist/domains/dam/assetSelect/api/damPodcastApi.js.map +1 -1
  189. package/dist/domains/dam/assetSelect/components/AAssetListInner.js.map +1 -1
  190. package/dist/domains/dam/assetSelect/components/AAssetListInner.vue.d.ts +789 -787
  191. package/dist/domains/dam/assetSelect/components/AAssetListInner.vue_vue_type_script_setup_true_lang.js.map +1 -1
  192. package/dist/domains/dam/assetSelect/components/AAssetSelect.js.map +1 -1
  193. package/dist/domains/dam/assetSelect/components/AAssetSelect.vue.d.ts +395 -393
  194. package/dist/domains/dam/assetSelect/components/AAssetSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  195. package/dist/domains/dam/assetSelect/components/AAssetSelectMedia.js.map +1 -1
  196. package/dist/domains/dam/assetSelect/components/AAssetSelectMedia.vue.d.ts +14 -12
  197. package/dist/domains/dam/assetSelect/components/AAssetSelectMedia.vue_vue_type_script_setup_true_lang.js.map +1 -1
  198. package/dist/domains/dam/assetSelect/components/AssetDistributionServiceNameFilter.js.map +1 -1
  199. package/dist/domains/dam/assetSelect/components/AssetDistributionServiceNameFilter.vue_vue_type_script_setup_true_lang.js.map +1 -1
  200. package/dist/domains/dam/assetSelect/components/AssetSelectListBar.js.map +1 -1
  201. package/dist/domains/dam/assetSelect/components/AssetSelectListBar.vue.d.ts +9 -7
  202. package/dist/domains/dam/assetSelect/components/AssetSelectListBar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  203. package/dist/domains/dam/assetSelect/components/AssetSelectTableRowItem.js.map +1 -1
  204. package/dist/domains/dam/assetSelect/components/AssetSelectTableRowItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  205. package/dist/domains/dam/assetSelect/composables/assetSelectListActions.js.map +1 -1
  206. package/dist/domains/dam/assetSelect/store/assetSelectStore.js.map +1 -1
  207. package/dist/domains/dam/author/api/authorApi.js.map +1 -1
  208. package/dist/domains/dam/author/components/AuthorCreateButton.js.map +1 -1
  209. package/dist/domains/dam/author/components/AuthorCreateButton.vue.d.ts +1 -1
  210. package/dist/domains/dam/author/components/AuthorCreateButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  211. package/dist/domains/dam/author/components/AuthorRemoteAutocompleteCachedAuthorChip.js.map +1 -1
  212. package/dist/domains/dam/author/components/AuthorRemoteAutocompleteCachedAuthorChip.vue.d.ts +9 -6
  213. package/dist/domains/dam/author/components/AuthorRemoteAutocompleteCachedAuthorChip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  214. package/dist/domains/dam/author/components/AuthorRemoteAutocompleteCachedAuthorChipConflicts.js.map +1 -1
  215. package/dist/domains/dam/author/components/AuthorRemoteAutocompleteCachedAuthorChipConflicts.vue_vue_type_script_setup_true_lang.js.map +1 -1
  216. package/dist/domains/dam/author/components/AuthorRemoteAutocompleteWithCached.js +1 -1
  217. package/dist/domains/dam/author/components/AuthorRemoteAutocompleteWithCached.js.map +1 -1
  218. package/dist/domains/dam/author/components/AuthorRemoteAutocompleteWithCached.vue.d.ts +2 -2
  219. package/dist/domains/dam/author/components/AuthorRemoteAutocompleteWithCached.vue_vue_type_script_setup_true_lang.js.map +1 -1
  220. package/dist/domains/dam/author/components/DamAuthorFilterRemoteAutocomplete.js.map +1 -1
  221. package/dist/domains/dam/author/components/DamAuthorFilterRemoteAutocomplete.vue.d.ts +1 -1
  222. package/dist/domains/dam/author/components/DamAuthorFilterRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -1
  223. package/dist/domains/dam/author/composables/cachedAuthors.d.ts +5 -4
  224. package/dist/domains/dam/author/composables/cachedAuthors.js.map +1 -1
  225. package/dist/domains/dam/author/composables/cachedUsers.d.ts +5 -4
  226. package/dist/domains/dam/author/composables/cachedUsers.js.map +1 -1
  227. package/dist/domains/dam/author/composables/damAuthorConfig.d.ts +2 -2
  228. package/dist/domains/dam/author/composables/damAuthorConfig.js.map +1 -1
  229. package/dist/domains/dam/components/DamAdminAssetLink.js.map +1 -1
  230. package/dist/domains/dam/components/DamAdminAssetLink.vue_vue_type_script_setup_true_lang.js.map +1 -1
  231. package/dist/domains/dam/composables/commonAdminCoreDamOptions.d.ts +10 -8
  232. package/dist/domains/dam/composables/commonAdminCoreDamOptions.js.map +1 -1
  233. package/dist/domains/dam/composables/damConfigName.d.ts +8 -9
  234. package/dist/domains/dam/composables/damConfigName.js.map +1 -1
  235. package/dist/domains/dam/composables/damNotifications.d.ts +9 -9
  236. package/dist/domains/dam/composables/damNotifications.js.map +1 -1
  237. package/dist/domains/dam/composables/damNotificationsConnection.d.ts +4 -4
  238. package/dist/domains/dam/composables/damNotificationsConnection.js.map +1 -1
  239. package/dist/domains/dam/composables/damNotificationsEventBus.d.ts +2 -2
  240. package/dist/domains/dam/composables/damNotificationsEventBus.js.map +1 -1
  241. package/dist/domains/dam/composables/extSystemIdForCached.d.ts +5 -4
  242. package/dist/domains/dam/composables/extSystemIdForCached.js.map +1 -1
  243. package/dist/domains/dam/config/api/damAssetCustomFormApi.js.map +1 -1
  244. package/dist/domains/dam/config/api/damConfigApi.js.map +1 -1
  245. package/dist/domains/dam/config/composables/damConfigState.d.ts +5 -5
  246. package/dist/domains/dam/config/composables/damConfigState.js.map +1 -1
  247. package/dist/domains/dam/config/store/damConfigStore.d.ts +5 -4
  248. package/dist/domains/dam/config/store/damConfigStore.js.map +1 -1
  249. package/dist/domains/dam/config/utils/damFilterUserAllowedUploadConfigs.d.ts +3 -1
  250. package/dist/domains/dam/config/utils/damFilterUserAllowedUploadConfigs.js.map +1 -1
  251. package/dist/domains/dam/cropper/components/ACropper.js.map +1 -1
  252. package/dist/domains/dam/cropper/components/ACropper.vue.d.ts +8 -16
  253. package/dist/domains/dam/cropper/components/ACropper.vue_vue_type_script_setup_true_lang.js.map +1 -1
  254. package/dist/domains/dam/cropper/components/DamAssetImageRoiSelect.js.map +1 -1
  255. package/dist/domains/dam/cropper/components/DamAssetImageRoiSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  256. package/dist/domains/dam/cropper/store/imageRoiStore.d.ts +9 -12
  257. package/dist/domains/dam/cropper/store/imageRoiStore.js.map +1 -1
  258. package/dist/domains/dam/cropper/utils/cropperGeometry.d.ts +24 -38
  259. package/dist/domains/dam/cropper/utils/cropperGeometry.js.map +1 -1
  260. package/dist/domains/dam/cropper/utils/cropperJsService.d.ts +3 -7
  261. package/dist/domains/dam/cropper/utils/cropperJsService.js +10 -3
  262. package/dist/domains/dam/cropper/utils/cropperJsService.js.map +1 -1
  263. package/dist/domains/dam/cropper/utils/cropperTypes.d.ts +3 -6
  264. package/dist/domains/dam/cropper/utils/damAssetImageRoiSelectLoader.d.ts +5 -5
  265. package/dist/domains/dam/cropper/utils/damAssetImageRoiSelectLoader.js.map +1 -1
  266. package/dist/domains/dam/imageWidget/components/AImageMediaWidget.js.map +1 -1
  267. package/dist/domains/dam/imageWidget/components/AImageMediaWidget.vue_vue_type_script_setup_true_lang.js.map +1 -1
  268. package/dist/domains/dam/imageWidget/components/AImagePublicInput.js.map +1 -1
  269. package/dist/domains/dam/imageWidget/components/AImagePublicInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
  270. package/dist/domains/dam/imageWidget/components/AImageWidget.js.map +1 -1
  271. package/dist/domains/dam/imageWidget/components/AImageWidget.vue_vue_type_script_setup_true_lang.js.map +1 -1
  272. package/dist/domains/dam/imageWidget/components/AImageWidgetMultiple.js.map +1 -1
  273. package/dist/domains/dam/imageWidget/components/AImageWidgetMultiple.vue_vue_type_script_setup_true_lang.js.map +1 -1
  274. package/dist/domains/dam/imageWidget/components/AImageWidgetSimple.vue.d.ts +43 -41
  275. package/dist/domains/dam/imageWidget/components/AMediaWidgetSimple.vue.d.ts +31 -29
  276. package/dist/domains/dam/imageWidget/components/ImageDetailDialogMetadata.js.map +1 -1
  277. package/dist/domains/dam/imageWidget/components/ImageDetailDialogMetadata.vue.d.ts +29 -27
  278. package/dist/domains/dam/imageWidget/components/ImageDetailDialogMetadata.vue_vue_type_script_setup_true_lang.js.map +1 -1
  279. package/dist/domains/dam/imageWidget/components/ImageMassOperations.js.map +1 -1
  280. package/dist/domains/dam/imageWidget/components/ImageMassOperations.vue.d.ts +1 -1
  281. package/dist/domains/dam/imageWidget/components/ImageMassOperations.vue_vue_type_script_setup_true_lang.js.map +1 -1
  282. package/dist/domains/dam/imageWidget/components/ImageMediaWidgetInner.js.map +1 -1
  283. package/dist/domains/dam/imageWidget/components/ImageMediaWidgetInner.vue.d.ts +68 -66
  284. package/dist/domains/dam/imageWidget/components/ImageMediaWidgetInner.vue_vue_type_script_setup_true_lang.js.map +1 -1
  285. package/dist/domains/dam/imageWidget/components/ImageWidgetInner.js.map +1 -1
  286. package/dist/domains/dam/imageWidget/components/ImageWidgetInner.vue.d.ts +402 -400
  287. package/dist/domains/dam/imageWidget/components/ImageWidgetInner.vue_vue_type_script_setup_true_lang.js.map +1 -1
  288. package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleInner.js.map +1 -1
  289. package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleInner.vue.d.ts +384 -382
  290. package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleInner.vue_vue_type_script_setup_true_lang.js.map +1 -1
  291. package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleItem.js.map +1 -1
  292. package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  293. package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleLimitDialog.js.map +1 -1
  294. package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleLimitDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  295. package/dist/domains/dam/imageWidget/components/MediaWidgetSimpleDialog.vue.d.ts +7 -5
  296. package/dist/domains/dam/imageWidget/composables/commonAdminImageOptions.js.map +1 -1
  297. package/dist/domains/dam/imageWidget/composables/imageApiCms.js.map +1 -1
  298. package/dist/domains/dam/imageWidget/composables/imageDialogDamAuthors.d.ts +11 -13
  299. package/dist/domains/dam/imageWidget/composables/imageDialogDamAuthors.js.map +1 -1
  300. package/dist/domains/dam/imageWidget/composables/useImageMassOperations.js.map +1 -1
  301. package/dist/domains/dam/imageWidget/store/imageMediaWidgetStore.js.map +1 -1
  302. package/dist/domains/dam/imageWidget/store/imageStore.js.map +1 -1
  303. package/dist/domains/dam/imageWidget/utils/damImage.d.ts +5 -6
  304. package/dist/domains/dam/imageWidget/utils/damImage.js.map +1 -1
  305. package/dist/domains/dam/imageWidget/utils/fieldLockTurns.d.ts +1 -2
  306. package/dist/domains/dam/imageWidget/utils/fieldLockTurns.js.map +1 -1
  307. package/dist/domains/dam/imageWidget/utils/imageSaves.d.ts +10 -14
  308. package/dist/domains/dam/imageWidget/utils/imageSaves.js.map +1 -1
  309. package/dist/domains/dam/imageWidget/utils/metadataToImageMap.js.map +1 -1
  310. package/dist/domains/dam/imageWidget/utils/waitLimit.d.ts +4 -6
  311. package/dist/domains/dam/imageWidget/utils/waitLimit.js.map +1 -1
  312. package/dist/domains/dam/keyword/api/keywordApi.js.map +1 -1
  313. package/dist/domains/dam/keyword/components/DamKeywordFilterRemoteAutocomplete.js.map +1 -1
  314. package/dist/domains/dam/keyword/components/DamKeywordFilterRemoteAutocomplete.vue.d.ts +1 -1
  315. package/dist/domains/dam/keyword/components/DamKeywordFilterRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -1
  316. package/dist/domains/dam/keyword/components/KeywordRemoteAutocompleteCachedKeywordChip.js.map +1 -1
  317. package/dist/domains/dam/keyword/components/KeywordRemoteAutocompleteCachedKeywordChip.vue.d.ts +8 -5
  318. package/dist/domains/dam/keyword/components/KeywordRemoteAutocompleteCachedKeywordChip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  319. package/dist/domains/dam/keyword/components/KeywordRemoteAutocompleteWithCached.js +1 -1
  320. package/dist/domains/dam/keyword/components/KeywordRemoteAutocompleteWithCached.js.map +1 -1
  321. package/dist/domains/dam/keyword/components/KeywordRemoteAutocompleteWithCached.vue.d.ts +2 -2
  322. package/dist/domains/dam/keyword/components/KeywordRemoteAutocompleteWithCached.vue_vue_type_script_setup_true_lang.js.map +1 -1
  323. package/dist/domains/dam/keyword/composables/cachedKeywords.d.ts +5 -4
  324. package/dist/domains/dam/keyword/composables/cachedKeywords.js.map +1 -1
  325. package/dist/domains/dam/keyword/composables/damKeywordConfig.d.ts +2 -2
  326. package/dist/domains/dam/keyword/composables/damKeywordConfig.js.map +1 -1
  327. package/dist/domains/dam/types/Asset.d.ts +1 -1
  328. package/dist/domains/dam/types/Asset.js.map +1 -1
  329. package/dist/domains/dam/types/UploadQueue.d.ts +5 -4
  330. package/dist/domains/dam/types/UploadQueue.js.map +1 -1
  331. package/dist/domains/dam/uploadQueue/components/AssetCustomMetadataFormMassOperations.js.map +1 -1
  332. package/dist/domains/dam/uploadQueue/components/AssetCustomMetadataFormMassOperations.vue_vue_type_script_setup_true_lang.js.map +1 -1
  333. package/dist/domains/dam/uploadQueue/components/AssetQueueSelectedSidebar.js.map +1 -1
  334. package/dist/domains/dam/uploadQueue/components/AssetQueueSelectedSidebar.vue.d.ts +2 -2
  335. package/dist/domains/dam/uploadQueue/components/AssetQueueSelectedSidebar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  336. package/dist/domains/dam/uploadQueue/components/UploadQueueDialog.js.map +1 -1
  337. package/dist/domains/dam/uploadQueue/components/UploadQueueDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  338. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingle.js.map +1 -1
  339. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingle.vue_vue_type_script_setup_true_lang.js.map +1 -1
  340. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebar.js.map +1 -1
  341. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebar.vue.d.ts +6 -4
  342. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  343. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebarMetadata.js.map +1 -1
  344. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebarMetadata.vue.d.ts +1 -1
  345. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebarMetadata.vue_vue_type_script_setup_true_lang.js.map +1 -1
  346. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebarMetadataContent.js.map +1 -1
  347. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebarMetadataContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  348. package/dist/domains/dam/uploadQueue/components/UploadQueueEditable.js.map +1 -1
  349. package/dist/domains/dam/uploadQueue/components/UploadQueueEditable.vue.d.ts +6 -6
  350. package/dist/domains/dam/uploadQueue/components/UploadQueueEditable.vue_vue_type_script_setup_true_lang.js.map +1 -1
  351. package/dist/domains/dam/uploadQueue/components/UploadQueueItemEditable.js.map +1 -1
  352. package/dist/domains/dam/uploadQueue/components/UploadQueueItemEditable.vue.d.ts +13 -13
  353. package/dist/domains/dam/uploadQueue/components/UploadQueueItemEditable.vue_vue_type_script_setup_true_lang.js.map +1 -1
  354. package/dist/domains/dam/uploadQueue/components/uploadQueueBindings.d.ts +13 -13
  355. package/dist/domains/dam/uploadQueue/components/uploadQueueBindings.js.map +1 -1
  356. package/dist/domains/dam/uploadQueue/composables/damUploadChunkSize.d.ts +2 -2
  357. package/dist/domains/dam/uploadQueue/composables/damUploadChunkSize.js.map +1 -1
  358. package/dist/domains/dam/uploadQueue/composables/uploadMeter.d.ts +12 -12
  359. package/dist/domains/dam/uploadQueue/composables/uploadMeter.js.map +1 -1
  360. package/dist/domains/dam/uploadQueue/composables/uploadQueueItemRefresh.d.ts +5 -5
  361. package/dist/domains/dam/uploadQueue/composables/uploadQueueItemRefresh.js.map +1 -1
  362. package/dist/domains/dam/uploadQueue/composables/uploadService.d.ts +2 -3
  363. package/dist/domains/dam/uploadQueue/composables/uploadService.js.map +1 -1
  364. package/dist/domains/dam/uploadQueue/composables/useUploadQueueDialog.d.ts +5 -4
  365. package/dist/domains/dam/uploadQueue/composables/useUploadQueueDialog.js.map +1 -1
  366. package/dist/domains/dam/uploadQueue/core/uploadQueueCore.d.ts +3 -2
  367. package/dist/domains/dam/uploadQueue/core/uploadQueueCore.js.map +1 -1
  368. package/dist/domains/dam/uploadQueue/core/uploadQueueCoreTypes.d.ts +8 -5
  369. package/dist/domains/dam/uploadQueue/core/uploadQueueCoreTypes.js.map +1 -1
  370. package/dist/domains/dam/uploadQueue/core/uploadQueueFill.d.ts +3 -3
  371. package/dist/domains/dam/uploadQueue/core/uploadQueueFill.js.map +1 -1
  372. package/dist/domains/dam/uploadQueue/presets/queuePresets.d.ts +8 -5
  373. package/dist/domains/dam/uploadQueue/presets/queuePresets.js.map +1 -1
  374. package/dist/domains/dam/uploadQueue/presets/uploadPresets.d.ts +15 -13
  375. package/dist/domains/dam/uploadQueue/presets/uploadPresets.js.map +1 -1
  376. package/dist/domains/dam/uploadQueue/settlement/uploadPollSchedule.d.ts +7 -7
  377. package/dist/domains/dam/uploadQueue/settlement/uploadPollSchedule.js.map +1 -1
  378. package/dist/domains/dam/uploadQueue/settlement/uploadPoller.d.ts +4 -4
  379. package/dist/domains/dam/uploadQueue/settlement/uploadPoller.js.map +1 -1
  380. package/dist/domains/dam/uploadQueue/settlement/uploadSettle.d.ts +28 -30
  381. package/dist/domains/dam/uploadQueue/settlement/uploadSettle.js.map +1 -1
  382. package/dist/domains/dam/uploadQueue/settlement/uploadSettlement.d.ts +2 -2
  383. package/dist/domains/dam/uploadQueue/settlement/uploadSettlement.js.map +1 -1
  384. package/dist/domains/dam/uploadQueue/settlement/uploadSettlementRuntime.d.ts +2 -2
  385. package/dist/domains/dam/uploadQueue/settlement/uploadSettlementRuntime.js.map +1 -1
  386. package/dist/domains/dam/uploadQueue/settlement/uploadSettlementTypes.d.ts +63 -73
  387. package/dist/domains/dam/uploadQueue/settlement/uploadSettlementTypes.js.map +1 -1
  388. package/dist/domains/dam/uploadQueue/store/uploadQueuesStore.d.ts +8 -9
  389. package/dist/domains/dam/uploadQueue/store/uploadQueuesStore.js.map +1 -1
  390. package/dist/domains/dam/user/api/userApi.d.ts +2 -2
  391. package/dist/domains/dam/user/api/userApi.js.map +1 -1
  392. package/dist/domains/dam/user/components/DamDistributionServiceSelect.js.map +1 -1
  393. package/dist/domains/dam/user/components/DamDistributionServiceSelect.vue.d.ts +1 -1
  394. package/dist/domains/dam/user/components/DamDistributionServiceSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  395. package/dist/domains/dam/user/components/DamExternalProviderAssetSelect.js.map +1 -1
  396. package/dist/domains/dam/user/components/DamExternalProviderAssetSelect.vue.d.ts +1 -1
  397. package/dist/domains/dam/user/components/DamExternalProviderAssetSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  398. package/dist/domains/dam/user/components/DamUserRemoteAutocomplete.js.map +1 -1
  399. package/dist/domains/dam/user/components/DamUserRemoteAutocomplete.vue.d.ts +1 -1
  400. package/dist/domains/dam/user/components/DamUserRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -1
  401. package/dist/domains/dam/user/composables/damUserSelectActions.d.ts +1 -1
  402. package/dist/domains/dam/user/composables/damUserSelectActions.js.map +1 -1
  403. package/dist/domains/dam/user/types/DamDistributionServiceType.d.ts +2 -2
  404. package/dist/domains/dam/user/types/DamDistributionServiceType.js.map +1 -1
  405. package/dist/domains/dam/user/types/DamExternalProviderAssetType.d.ts +1 -1
  406. package/dist/domains/dam/user/types/DamExternalProviderAssetType.js.map +1 -1
  407. package/dist/domains/filters/bookmarks/components/FilterBookmarkDialog.js.map +1 -1
  408. package/dist/domains/filters/bookmarks/components/FilterBookmarkDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  409. package/dist/domains/filters/bookmarks/store/bookmarksStore.d.ts +3 -3
  410. package/dist/domains/filters/bookmarks/store/bookmarksStore.js.map +1 -1
  411. package/dist/domains/filters/components/AFilterDatetimePicker.js.map +1 -1
  412. package/dist/domains/filters/components/AFilterDatetimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  413. package/dist/domains/filters/components/AFilterInteger.js.map +1 -1
  414. package/dist/domains/filters/components/AFilterInteger.vue_vue_type_script_setup_true_lang.js.map +1 -1
  415. package/dist/domains/filters/components/AFilterString.js.map +1 -1
  416. package/dist/domains/filters/components/AFilterString.vue_vue_type_script_setup_true_lang.js.map +1 -1
  417. package/dist/domains/filters/components/AFilterTimeInterval.js +1 -1
  418. package/dist/domains/filters/components/AFilterTimeInterval.js.map +1 -1
  419. package/dist/domains/filters/components/AFilterTimeInterval.vue.d.ts +5 -3
  420. package/dist/domains/filters/components/AFilterTimeInterval.vue_vue_type_script_setup_true_lang.js.map +1 -1
  421. package/dist/domains/filters/components/AFilterValueObjectOptionsSelect.js.map +1 -1
  422. package/dist/domains/filters/components/AFilterValueObjectOptionsSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  423. package/dist/domains/filters/components/AFilterWrapper.js.map +1 -1
  424. package/dist/domains/filters/components/AFilterWrapper.vue.d.ts +17 -15
  425. package/dist/domains/filters/components/AFilterWrapper.vue_vue_type_script_setup_true_lang.js +63 -62
  426. package/dist/domains/filters/components/AFilterWrapper.vue_vue_type_script_setup_true_lang.js.map +1 -1
  427. package/dist/domains/filters/components/AFilterWrapperSidebar.vue.d.ts +5 -3
  428. package/dist/domains/filters/components/FiltersSelected.js.map +1 -1
  429. package/dist/domains/filters/components/FiltersSelected.vue_vue_type_script_setup_true_lang.js.map +1 -1
  430. package/dist/domains/filters/composables/filterFactory.d.ts +16 -26
  431. package/dist/domains/filters/composables/filterFactory.js +38 -31
  432. package/dist/domains/filters/composables/filterFactory.js.map +1 -1
  433. package/dist/domains/filters/datatable/components/ADatatableOrdering.js.map +1 -1
  434. package/dist/domains/filters/datatable/components/ADatatableOrdering.vue_vue_type_script_setup_true_lang.js +3 -1
  435. package/dist/domains/filters/datatable/components/ADatatableOrdering.vue_vue_type_script_setup_true_lang.js.map +1 -1
  436. package/dist/domains/filters/datatable/components/ADatatablePagination.js.map +1 -1
  437. package/dist/domains/filters/datatable/components/ADatatablePagination.vue_vue_type_script_setup_true_lang.js +2 -4
  438. package/dist/domains/filters/datatable/components/ADatatablePagination.vue_vue_type_script_setup_true_lang.js.map +1 -1
  439. package/dist/domains/filters/utils/filterInjectionKeys.js.map +1 -1
  440. package/dist/domains/form/components/AFormDatetimePicker.js.map +1 -1
  441. package/dist/domains/form/components/AFormDatetimePicker.vue.d.ts +7 -5
  442. package/dist/domains/form/components/AFormDatetimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  443. package/dist/domains/form/components/AFormFlagDatetimePicker.js.map +1 -1
  444. package/dist/domains/form/components/AFormFlagDatetimePicker.vue.d.ts +7 -5
  445. package/dist/domains/form/components/AFormFlagDatetimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  446. package/dist/domains/form/components/AFormSwitch.vue.d.ts +7 -5
  447. package/dist/domains/form/components/AFormTextField.js.map +1 -1
  448. package/dist/domains/form/components/AFormTextField.vue.d.ts +9 -7
  449. package/dist/domains/form/components/AFormTextField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  450. package/dist/domains/form/components/AFormTextarea.vue.d.ts +13 -11
  451. package/dist/domains/form/components/AFormValueObjectOptionsSelect.vue.d.ts +7 -5
  452. package/dist/domains/form/components/ASystemEntityScope.vue.d.ts +5 -3
  453. package/dist/domains/job/api/jobApi.js.map +1 -1
  454. package/dist/domains/job/components/AJobDetailCommon.vue.d.ts +5 -3
  455. package/dist/domains/listEditor/components/AListEditor.js.map +1 -1
  456. package/dist/domains/listEditor/components/AListEditor.vue_vue_type_script_setup_true_lang.js.map +1 -1
  457. package/dist/domains/listEditor/components/ANestedSortableListEditor.js.map +1 -1
  458. package/dist/domains/listEditor/components/ANestedSortableListEditor.vue.d.ts +2 -3
  459. package/dist/domains/listEditor/components/ANestedSortableListEditor.vue_vue_type_script_setup_true_lang.js.map +1 -1
  460. package/dist/domains/listEditor/components/ASortableListEditor.js.map +1 -1
  461. package/dist/domains/listEditor/components/ASortableListEditor.vue.d.ts +2 -3
  462. package/dist/domains/listEditor/components/ASortableListEditor.vue_vue_type_script_setup_true_lang.js.map +1 -1
  463. package/dist/domains/listEditor/composables/useListEditorController.d.ts +4 -5
  464. package/dist/domains/listEditor/composables/useListEditorController.js.map +1 -1
  465. package/dist/domains/listEditor/composables/useNestedListEditor.d.ts +3 -4
  466. package/dist/domains/listEditor/composables/useNestedListEditor.js.map +1 -1
  467. package/dist/domains/listEditor/composables/useNestedListEditorController.d.ts +5 -4
  468. package/dist/domains/listEditor/composables/useNestedListEditorController.js.map +1 -1
  469. package/dist/domains/listEditor/composables/useReorderMode.js.map +1 -1
  470. package/dist/domains/listEditor/types/listEditorTypes.d.ts +2 -2
  471. package/dist/domains/listEditor/utils/listEditorLoader.d.ts +5 -5
  472. package/dist/domains/listEditor/utils/listEditorLoader.js.map +1 -1
  473. package/dist/domains/listEditor/utils/resolveCompactText.js.map +1 -1
  474. package/dist/domains/log/api/logApi.d.ts +2 -3
  475. package/dist/domains/log/api/logApi.js.map +1 -1
  476. package/dist/domains/log/components/ALogDatatable.js.map +1 -1
  477. package/dist/domains/log/components/ALogDatatable.vue_vue_type_script_setup_true_lang.js.map +1 -1
  478. package/dist/domains/log/components/ALogDetailView.js.map +1 -1
  479. package/dist/domains/log/components/ALogDetailView.vue.d.ts +1 -1
  480. package/dist/domains/log/components/ALogDetailView.vue_vue_type_script_setup_true_lang.js.map +1 -1
  481. package/dist/domains/log/components/ALogFilter.js.map +1 -1
  482. package/dist/domains/log/components/ALogFilter.vue_vue_type_script_setup_true_lang.js.map +1 -1
  483. package/dist/domains/log/components/ALogListView.js.map +1 -1
  484. package/dist/domains/log/components/ALogListView.vue.d.ts +1 -1
  485. package/dist/domains/log/components/ALogListView.vue_vue_type_script_setup_true_lang.js.map +1 -1
  486. package/dist/domains/log/composables/logActions.d.ts +4 -5
  487. package/dist/domains/log/composables/logActions.js.map +1 -1
  488. package/dist/domains/log/composables/logType.d.ts +6 -7
  489. package/dist/domains/log/composables/logType.js.map +1 -1
  490. package/dist/domains/log/filter/logFilter.d.ts +8 -11
  491. package/dist/domains/log/filter/logFilter.js.map +1 -1
  492. package/dist/domains/permission/components/APermissionEditor.js.map +1 -1
  493. package/dist/domains/permission/components/APermissionEditor.vue.d.ts +4 -4
  494. package/dist/domains/permission/components/APermissionEditor.vue_vue_type_script_setup_true_lang.js.map +1 -1
  495. package/dist/domains/permission/composables/permissionActions.d.ts +3 -6
  496. package/dist/domains/permission/composables/permissionActions.js.map +1 -1
  497. package/dist/domains/permission/config/api/permissionConfigApi.d.ts +2 -2
  498. package/dist/domains/permission/config/api/permissionConfigApi.js.map +1 -1
  499. package/dist/domains/permission/config/composables/permissionConfigActions.d.ts +3 -7
  500. package/dist/domains/permission/config/composables/permissionConfigActions.js.map +1 -1
  501. package/dist/domains/permission/config/store/permissionConfigStore.d.ts +2 -4
  502. package/dist/domains/permission/config/store/permissionConfigStore.js.map +1 -1
  503. package/dist/domains/permission/group/api/permissionGroupApi.d.ts +8 -10
  504. package/dist/domains/permission/group/api/permissionGroupApi.js.map +1 -1
  505. package/dist/domains/permission/group/components/APermissionGroupDatatable.js.map +1 -1
  506. package/dist/domains/permission/group/components/APermissionGroupDatatable.vue.d.ts +12 -10
  507. package/dist/domains/permission/group/components/APermissionGroupDatatable.vue_vue_type_script_setup_true_lang.js.map +1 -1
  508. package/dist/domains/permission/group/components/APermissionGroupDetail.js.map +1 -1
  509. package/dist/domains/permission/group/components/APermissionGroupDetail.vue.d.ts +21 -22
  510. package/dist/domains/permission/group/components/APermissionGroupDetail.vue_vue_type_script_setup_true_lang.js.map +1 -1
  511. package/dist/domains/permission/group/components/APermissionGroupManage.js.map +1 -1
  512. package/dist/domains/permission/group/components/APermissionGroupManage.vue.d.ts +21 -22
  513. package/dist/domains/permission/group/components/APermissionGroupManage.vue_vue_type_script_setup_true_lang.js.map +1 -1
  514. package/dist/domains/permission/group/composables/cachedPermissionGroups.js.map +1 -1
  515. package/dist/domains/permission/group/composables/permissionGroupActions.d.ts +6 -8
  516. package/dist/domains/permission/group/composables/permissionGroupActions.js.map +1 -1
  517. package/dist/domains/permission/group/composables/permissionGroupValidations.d.ts +2 -3
  518. package/dist/domains/permission/group/composables/permissionGroupValidations.js.map +1 -1
  519. package/dist/domains/permission/group/filter/permissionGroupFilter.d.ts +2 -3
  520. package/dist/domains/permission/group/filter/permissionGroupFilter.js.map +1 -1
  521. package/dist/domains/permission/group/store/permissionGroupStore.d.ts +3 -6
  522. package/dist/domains/permission/group/store/permissionGroupStore.js.map +1 -1
  523. package/dist/domains/remoteAutocomplete/components/AFilterRemoteAutocomplete.js.map +1 -1
  524. package/dist/domains/remoteAutocomplete/components/AFilterRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -1
  525. package/dist/domains/remoteAutocomplete/components/AFilterRemoteAutocompleteWithMinimal.js.map +1 -1
  526. package/dist/domains/remoteAutocomplete/components/AFilterRemoteAutocompleteWithMinimal.vue_vue_type_script_setup_true_lang.js.map +1 -1
  527. package/dist/domains/remoteAutocomplete/components/AFormRemoteAutocomplete.js.map +1 -1
  528. package/dist/domains/remoteAutocomplete/components/AFormRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -1
  529. package/dist/domains/remoteAutocomplete/components/AFormRemoteAutocompleteWithCached.vue.d.ts +5 -3
  530. package/dist/domains/remoteAutocomplete/composables/createRemoteAutocomplete.d.ts +11 -13
  531. package/dist/domains/remoteAutocomplete/composables/createRemoteAutocomplete.js.map +1 -1
  532. package/dist/domains/subjectSelect/components/AFilterWrapperSubjectSelect.vue.d.ts +13 -11
  533. package/dist/domains/subjectSelect/components/ASubjectSelect.js.map +1 -1
  534. package/dist/domains/subjectSelect/components/ASubjectSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  535. package/dist/domains/subjectSelect/composables/useSubjectSelect.js +53 -51
  536. package/dist/domains/subjectSelect/composables/useSubjectSelect.js.map +1 -1
  537. package/dist/domains/system/appShell/components/AActionbar.vue.d.ts +7 -5
  538. package/dist/domains/system/appShell/components/ALayoutSwitch.js.map +1 -1
  539. package/dist/domains/system/appShell/components/ALayoutSwitch.vue.d.ts +7 -5
  540. package/dist/domains/system/appShell/components/ALayoutSwitch.vue_vue_type_script_setup_true_lang.js.map +1 -1
  541. package/dist/domains/system/appShell/composables/teleportSlot.d.ts +0 -1
  542. package/dist/domains/system/appShell/composables/teleportSlot.js.map +1 -1
  543. package/dist/domains/system/components/AAlerts.js.map +1 -1
  544. package/dist/domains/system/components/AAlerts.vue_vue_type_script_setup_true_lang.js.map +1 -1
  545. package/dist/domains/system/composables/alerts.js.map +1 -1
  546. package/dist/domains/system/composables/breadcrumbs.d.ts +3 -3
  547. package/dist/domains/system/composables/breadcrumbs.js.map +1 -1
  548. package/dist/domains/system/composables/languageSettings.js.map +1 -1
  549. package/dist/domains/system/composables/loginStatus.js.map +1 -1
  550. package/dist/domains/system/composables/navigationError.d.ts +6 -8
  551. package/dist/domains/system/composables/navigationError.js.map +1 -1
  552. package/dist/domains/system/composables/pageNavigation.d.ts +9 -10
  553. package/dist/domains/system/composables/pageNavigation.js.map +1 -1
  554. package/dist/domains/system/composables/recordActions.d.ts +14 -22
  555. package/dist/domains/system/composables/recordActions.js.map +1 -1
  556. package/dist/domains/system/composables/recordPage.d.ts +23 -38
  557. package/dist/domains/system/composables/recordPage.js.map +1 -1
  558. package/dist/domains/system/composables/routeHistory.d.ts +4 -5
  559. package/dist/domains/system/composables/routeHistory.js.map +1 -1
  560. package/dist/domains/system/composables/sentry.js.map +1 -1
  561. package/dist/domains/system/composables/useDebugFeatures.d.ts +3 -6
  562. package/dist/domains/system/composables/useDebugFeatures.js.map +1 -1
  563. package/dist/domains/system/store/datatablePageStore.d.ts +8 -1
  564. package/dist/domains/system/store/datatablePageStore.js +10 -3
  565. package/dist/domains/system/store/datatablePageStore.js.map +1 -1
  566. package/dist/domains/system/systemBar/components/ASystemBar.js.map +1 -1
  567. package/dist/domains/system/systemBar/components/ASystemBar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  568. package/dist/domains/system/systemBar/utils/appReload.d.ts +5 -5
  569. package/dist/domains/system/systemBar/utils/appReload.js.map +1 -1
  570. package/dist/domains/ui/buttons/action/components/AActionCloseButtonHistory.js.map +1 -1
  571. package/dist/domains/ui/buttons/action/components/AActionCloseButtonHistory.vue.d.ts +2 -3
  572. package/dist/domains/ui/buttons/action/components/AActionCloseButtonHistory.vue_vue_type_script_setup_true_lang.js.map +1 -1
  573. package/dist/domains/ui/buttons/action/components/AActionDeleteButton.js.map +1 -1
  574. package/dist/domains/ui/buttons/action/components/AActionDeleteButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  575. package/dist/domains/ui/buttons/components/ABtnSplit.vue.d.ts +9 -7
  576. package/dist/domains/ui/components/AAvatarColorPicker.js.map +1 -1
  577. package/dist/domains/ui/components/AAvatarColorPicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  578. package/dist/domains/ui/components/ACard.js.map +1 -1
  579. package/dist/domains/ui/components/ACard.vue.d.ts +7 -3
  580. package/dist/domains/ui/components/ACard.vue_vue_type_script_setup_true_lang.js +6 -2
  581. package/dist/domains/ui/components/ACard.vue_vue_type_script_setup_true_lang.js.map +1 -1
  582. package/dist/domains/ui/components/ACardLoader.js.map +1 -1
  583. package/dist/domains/ui/components/ACardLoader.vue.d.ts +1 -0
  584. package/dist/domains/ui/components/ACardLoader.vue_vue_type_script_setup_true_lang.js +13 -7
  585. package/dist/domains/ui/components/ACardLoader.vue_vue_type_script_setup_true_lang.js.map +1 -1
  586. package/dist/domains/ui/components/AChipNoLink.vue.d.ts +5 -3
  587. package/dist/domains/ui/components/ACopyText.vue.d.ts +9 -7
  588. package/dist/domains/ui/components/ACreateDialog.js.map +1 -1
  589. package/dist/domains/ui/components/ACreateDialog.vue.d.ts +11 -9
  590. package/dist/domains/ui/components/ACreateDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  591. package/dist/domains/ui/components/ADialogToolbar.vue.d.ts +5 -3
  592. package/dist/domains/ui/components/ARow.vue.d.ts +5 -3
  593. package/dist/domains/ui/components/ATimeTrackingFields.js.map +1 -1
  594. package/dist/domains/ui/components/ATimeTrackingFields.vue_vue_type_script_setup_true_lang.js.map +1 -1
  595. package/dist/domains/ui/components/AUserAndTimeTrackingFields.js.map +1 -1
  596. package/dist/domains/ui/components/AUserAndTimeTrackingFields.vue.d.ts +3 -5
  597. package/dist/domains/ui/components/AUserAndTimeTrackingFields.vue_vue_type_script_setup_true_lang.js.map +1 -1
  598. package/dist/domains/ui/datetime/components/ADatetimePicker.js +1 -1
  599. package/dist/domains/ui/datetime/components/ADatetimePicker.js.map +1 -1
  600. package/dist/domains/ui/datetime/components/ADatetimePicker.vue.d.ts +5 -3
  601. package/dist/domains/ui/datetime/components/ADatetimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  602. package/dist/domains/ui/file/components/AFileDropzone.js.map +1 -1
  603. package/dist/domains/ui/file/components/AFileDropzone.vue.d.ts +1 -1
  604. package/dist/domains/ui/file/components/AFileDropzone.vue_vue_type_script_setup_true_lang.js.map +1 -1
  605. package/dist/domains/ui/file/components/AFileInput.js.map +1 -1
  606. package/dist/domains/ui/file/components/AFileInput.vue.d.ts +9 -7
  607. package/dist/domains/ui/file/components/AFileInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
  608. package/dist/domains/ui/file/components/AFileInputDialog.js.map +1 -1
  609. package/dist/domains/ui/file/components/AFileInputDialog.vue.d.ts +9 -7
  610. package/dist/domains/ui/file/components/AFileInputDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  611. package/dist/domains/ui/file/composables/dropzone.js.map +1 -1
  612. package/dist/domains/ui/file/composables/formatAndSizeCheck.js.map +1 -1
  613. package/dist/domains/ui/view/components/AGenericView.vue.d.ts +7 -5
  614. package/dist/domains/ui/view/components/ALoginView.js +1 -1
  615. package/dist/domains/ui/view/components/ALoginView.js.map +1 -1
  616. package/dist/domains/ui/view/components/ALoginView.vue.d.ts +5 -3
  617. package/dist/domains/ui/view/components/ALoginView.vue_vue_type_script_setup_true_lang.js.map +1 -1
  618. package/dist/domains/ui/view/components/ALogoutView.js.map +1 -1
  619. package/dist/domains/ui/view/components/ALogoutView.vue_vue_type_script_setup_true_lang.js.map +1 -1
  620. package/dist/domains/ui/view/components/ANotFoundView.js.map +1 -1
  621. package/dist/domains/ui/view/components/ANotFoundView.vue_vue_type_script_setup_true_lang.js.map +1 -1
  622. package/dist/domains/unsavedGuard/composables/useUnsavedChangesGuard.d.ts +6 -7
  623. package/dist/domains/unsavedGuard/composables/useUnsavedChangesGuard.js.map +1 -1
  624. package/dist/lib.d.ts +2 -2
  625. package/dist/plugins/commonVuetifyConfig.d.ts +3 -3
  626. package/dist/plugins/commonVuetifyConfig.js.map +1 -1
  627. package/dist/plugins/i18n.d.ts +4 -5
  628. package/dist/plugins/i18n.js.map +1 -1
  629. package/dist/plugins/pluginOptions.d.ts +4 -2
  630. package/dist/plugins/pluginOptions.js.map +1 -1
  631. package/dist/plugins/webfontloader.js.map +1 -1
  632. package/dist/shared/error/AnzuApiCancelledError.d.ts +5 -8
  633. package/dist/shared/error/AnzuApiCancelledError.js.map +1 -1
  634. package/dist/shared/error/AnzuError.d.ts +3 -5
  635. package/dist/shared/error/AnzuError.js.map +1 -1
  636. package/dist/shared/error/AuthUnavailableError.d.ts +3 -3
  637. package/dist/shared/error/AuthUnavailableError.js.map +1 -1
  638. package/dist/shared/error/isInCauseChain.d.ts +2 -2
  639. package/dist/shared/error/isInCauseChain.js.map +1 -1
  640. package/dist/shared/types/UserAndTimeTracking.d.ts +5 -5
  641. package/dist/shared/types/Validation.d.ts +4 -5
  642. package/dist/shared/types/common.d.ts +1 -3
  643. package/dist/shared/types/globalComponents.d.ts +5 -6
  644. package/dist/shared/utils/common.js.map +1 -1
  645. package/dist/shared/utils/datetime.d.ts +0 -1
  646. package/dist/shared/utils/datetime.js.map +1 -1
  647. package/dist/shared/utils/datetimePickerValue.d.ts +4 -7
  648. package/dist/shared/utils/datetimePickerValue.js.map +1 -1
  649. package/dist/shared/utils/development.d.ts +3 -3
  650. package/dist/shared/utils/development.js.map +1 -1
  651. package/dist/shared/utils/envConfig.d.ts +4 -4
  652. package/dist/shared/utils/envConfig.js.map +1 -1
  653. package/dist/shared/utils/json.d.ts +1 -1
  654. package/dist/shared/utils/json.js.map +1 -1
  655. package/dist/shared/utils/userAndTimeTracking.d.ts +5 -7
  656. package/dist/shared/utils/userAndTimeTracking.js.map +1 -1
  657. package/dist/shared/validators/vuelidate/common/useValidateHexColor.d.ts +3 -5
  658. package/dist/shared/validators/vuelidate/common/useValidateHexColor.js.map +1 -1
  659. package/dist/testing/appShell.d.ts +11 -11
  660. package/dist/testing/appShell.js.map +1 -1
  661. package/dist/testing/closeButtons.d.ts +9 -11
  662. package/dist/testing/closeButtons.js.map +1 -1
  663. package/dist/testing/declaredDependencies.d.ts +7 -7
  664. package/dist/testing/declaredDependencies.js.map +1 -1
  665. package/dist/testing/generatedRoutes.d.ts +6 -11
  666. package/dist/testing/generatedRoutes.js.map +1 -1
  667. package/dist/testing/routeHistory.d.ts +5 -12
  668. package/dist/testing/routeHistory.js.map +1 -1
  669. package/dist/testing/sortableLists.d.ts +16 -21
  670. package/dist/testing/sortableLists.js.map +1 -1
  671. package/dist/testing/typedRouter.d.ts +0 -1
  672. package/dist/testing/typedRouter.js.map +1 -1
  673. package/package.json +39 -29
  674. package/src/e2e/conventions.d.mts +4 -0
  675. package/src/e2e/conventions.mjs +15 -0
  676. package/src/e2e/index.d.mts +8 -0
  677. package/src/e2e/index.mjs +1 -0
  678. package/src/e2e/routeWalk.d.mts +43 -0
  679. package/src/e2e/routeWalk.mjs +606 -0
  680. package/src/e2e/types.d.mts +161 -0
  681. package/src/eslint/adminConfig.mjs +19 -27
  682. package/src/eslint/globalComponentNames.mjs +3 -4
  683. package/src/eslint/oxlint.mjs +7 -20
  684. package/src/eslint/plugin.d.mts +2 -4
  685. package/src/eslint/plugin.mjs +18 -34
  686. package/src/eslint/validRouteName.mjs +6 -7
  687. package/src/vite/devWatch.mjs +30 -43
  688. package/src/vite/index.d.mts +5 -5
  689. package/src/vite/sentry.mjs +7 -12
  690. package/src/vite/sourcemaps.mjs +4 -8
@@ -1 +1 @@
1
- {"version":3,"file":"damAssetLicenceApi.js","names":["fetchDamAssetLicence","DAM_END_POINT_ASSET_LICENCE","useApiRequest","endPoint","execute"],"sources":["../../../../src/domains/dam/api/damAssetLicenceApi.ts"],"sourcesContent":["import type { DamAssetLicence } from '@/domains/dam/types/AssetLicence'\nimport type { AxiosInstance } from 'axios'\nimport type { IntegerId } from '@/shared/types/common'\nimport { useApiRequest } from '@/domains/api/composables/useApiRequest'\nimport { DAM_END_POINT_ASSET_LICENCE } from '@/domains/dam/api/damEndPoints'\n\n/** `endPoint`: the address of the licences the caller goes by; the default one where it gives none. */\nexport const fetchDamAssetLicence = (\n client: () => AxiosInstance,\n id: IntegerId,\n endPoint: string = DAM_END_POINT_ASSET_LICENCE\n) => {\n const { execute } = useApiRequest<DamAssetLicence, null>({\n client,\n method: 'GET',\n system: 'coreDam',\n entity: 'assetLicence',\n urlTemplate: endPoint + '/:id',\n })\n\n return execute({ urlParams: { id } })\n}\n"],"mappings":";;;AAOA,IAAaA,KACX,GACA,GACA,IAAmBC,MAChB;CACH,IAAM,EAAE,eAAYC,EAAqC;EACvD;EACA,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,aAAaC,IAAW;CAC1B,CAAC;CAED,OAAOC,EAAQ,EAAE,WAAW,EAAE,MAAG,EAAE,CAAC;AACtC"}
1
+ {"version":3,"file":"damAssetLicenceApi.js","names":["fetchDamAssetLicence","DAM_END_POINT_ASSET_LICENCE","useApiRequest","endPoint","execute"],"sources":["../../../../src/domains/dam/api/damAssetLicenceApi.ts"],"sourcesContent":["import type { DamAssetLicence } from '@/domains/dam/types/AssetLicence'\nimport type { AxiosInstance } from 'axios'\nimport type { IntegerId } from '@/shared/types/common'\nimport { useApiRequest } from '@/domains/api/composables/useApiRequest'\nimport { DAM_END_POINT_ASSET_LICENCE } from '@/domains/dam/api/damEndPoints'\n\n/** `endPoint`: the caller's licence endpoint. The default one is used when not given. */\nexport const fetchDamAssetLicence = (\n client: () => AxiosInstance,\n id: IntegerId,\n endPoint: string = DAM_END_POINT_ASSET_LICENCE\n) => {\n const { execute } = useApiRequest<DamAssetLicence, null>({\n client,\n method: 'GET',\n system: 'coreDam',\n entity: 'assetLicence',\n urlTemplate: endPoint + '/:id',\n })\n\n return execute({ urlParams: { id } })\n}\n"],"mappings":";;;AAOA,IAAaA,KACX,GACA,GACA,IAAmBC,MAChB;CACH,IAAM,EAAE,eAAYC,EAAqC;EACvD;EACA,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,aAAaC,IAAW;CAC1B,CAAC;CAED,OAAOC,EAAQ,EAAE,WAAW,EAAE,MAAG,EAAE,CAAC;AACtC"}
@@ -1 +1 @@
1
- {"version":3,"file":"damConstants.js","names":["SYSTEM_CORE_DAM"],"sources":["../../../../src/domains/dam/api/damConstants.ts"],"sourcesContent":["// Apart from the api modules on purpose: nearly every DAM module needs these, and importing them from\n// damAssetApi closed an import cycle through the DAM config.\nexport const SYSTEM_CORE_DAM = 'coreDam'\nexport const SYSTEM_DAM = 'dam'\n"],"mappings":";AAEA,IAAaA,IAAkB"}
1
+ {"version":3,"file":"damConstants.js","names":["SYSTEM_CORE_DAM"],"sources":["../../../../src/domains/dam/api/damConstants.ts"],"sourcesContent":["// Kept apart from the api modules on purpose. Nearly every DAM module needs these.\n// Importing them from damAssetApi created an import cycle through the DAM config.\nexport const SYSTEM_CORE_DAM = 'coreDam'\nexport const SYSTEM_DAM = 'dam'\n"],"mappings":";AAEA,IAAaA,IAAkB"}
@@ -1 +1 @@
1
- {"version":3,"file":"damEndPoints.js","names":["DAM_END_POINT_CONFIGURATION","DAM_END_POINT_PUB_CONFIGURATION","DAM_END_POINT_ASSET_LICENCE","DAM_END_POINT_ASSET_CUSTOM_FORM","DAM_END_POINT_USER","DAM_END_POINT_PODCAST","DAM_END_POINT_CMS_ASSET"],"sources":["../../../../src/domains/dam/api/damEndPoints.ts"],"sourcesContent":["// The addresses a DAM configuration may set beside its five (`CommonAdminCoreDamConfig`), as they are where it does\n// not. A module of their own: the API modules and the options read them, and neither loads the other for them.\n\nexport const DAM_END_POINT_CONFIGURATION = '/adm/v1/configuration'\nexport const DAM_END_POINT_PUB_CONFIGURATION = '/pub/v1/configuration'\nexport const DAM_END_POINT_ASSET_LICENCE = '/adm/v1/asset-licence'\nexport const DAM_END_POINT_ASSET_CUSTOM_FORM = '/adm/v1/asset-custom-form'\nexport const DAM_END_POINT_USER = '/adm/v1/user'\nexport const DAM_END_POINT_PODCAST = '/adm/v1/podcast'\nexport const DAM_END_POINT_CMS_ASSET = '/adm/v1/cms/asset'\n"],"mappings":";AAGA,IAAaA,IAA8B,yBAC9BC,IAAkC,yBAClCC,IAA8B,yBAC9BC,IAAkC,6BAClCC,IAAqB,gBACrBC,IAAwB,mBACxBC,IAA0B"}
1
+ {"version":3,"file":"damEndPoints.js","names":["DAM_END_POINT_CONFIGURATION","DAM_END_POINT_PUB_CONFIGURATION","DAM_END_POINT_ASSET_LICENCE","DAM_END_POINT_ASSET_CUSTOM_FORM","DAM_END_POINT_USER","DAM_END_POINT_PODCAST","DAM_END_POINT_CMS_ASSET"],"sources":["../../../../src/domains/dam/api/damEndPoints.ts"],"sourcesContent":["// Default addresses a DAM configuration may override besides its five (`CommonAdminCoreDamConfig`).\n// A separate module, so the API modules and the options can both read them without loading each other.\n\nexport const DAM_END_POINT_CONFIGURATION = '/adm/v1/configuration'\nexport const DAM_END_POINT_PUB_CONFIGURATION = '/pub/v1/configuration'\nexport const DAM_END_POINT_ASSET_LICENCE = '/adm/v1/asset-licence'\nexport const DAM_END_POINT_ASSET_CUSTOM_FORM = '/adm/v1/asset-custom-form'\nexport const DAM_END_POINT_USER = '/adm/v1/user'\nexport const DAM_END_POINT_PODCAST = '/adm/v1/podcast'\nexport const DAM_END_POINT_CMS_ASSET = '/adm/v1/cms/asset'\n"],"mappings":";AAGA,IAAaA,IAA8B,yBAC9BC,IAAkC,yBAClCC,IAA8B,yBAC9BC,IAAkC,6BAClCC,IAAqB,gBACrBC,IAAwB,mBACxBC,IAA0B"}
@@ -1 +1 @@
1
- {"version":3,"file":"damImageApi.js","names":["axios","CHUNK_UPLOAD_TIMEOUT","fetchImageFile","useApiRequest","SYSTEM_CORE_DAM","endPoint","execute","imageUploadStart","url","item","UploadQueueItemType","client","damFileTypeFix","res","resolve","reject","err","imageUploadChunk","useSentry","buffer","logMessage","size","offset","formData","imageId","chunkData","error","logError","onUploadProgressCallback","imageUploadFinish","sha","rotateImage","angle","COPY_TO_LICENCE_MAX_LIMIT","COPY_TO_LICENCE_API_LIMIT","copyToLicence","items","itemChunks","arr","chunkSize","i","chunk","AnzuApiResponseCodeError","context","requestedUrl","report","mapApiError"],"sources":["../../../../src/domains/dam/api/damImageApi.ts"],"sourcesContent":["import type { AxiosInstance } from 'axios'\nimport axios from 'axios'\nimport { type UploadQueueItem, UploadQueueItemType } from '@/domains/dam/types/UploadQueue'\nimport type { DocId } from '@/shared/types/common'\nimport { HTTP_STATUS_CREATED, HTTP_STATUS_OK } from '@/shared/statusCodes'\nimport { AnzuApiResponseCodeError } from '@/shared/error/AnzuApiResponseCodeError'\nimport { damFileTypeFix } from '@/domains/ui/file/utils/fileType'\nimport type { AssetFileImage } from '@/domains/dam/types/AssetFile'\nimport { SYSTEM_CORE_DAM } from '@/domains/dam/api/damConstants'\nimport type { DamImageCopyToLicenceRequest, DamImageCopyToLicenceResponse } from '@/domains/dam/types/Asset'\nimport { useSentry } from '@/domains/system/composables/sentry'\nimport { useApiRequest } from '@/domains/api/composables/useApiRequest'\nimport { requestedUrl } from '@/domains/api/composables/request'\nimport { mapApiError, report } from '@/domains/api/utils/apiErrors'\n\nconst CHUNK_UPLOAD_TIMEOUT = 420\n\n// `optionalBody` for the same reason as `fetchImage`: the callers here read the result as \"no file\"\n// rather than as a failure, and normalising to `null` keeps their `isNull` guards honest.\nexport const fetchImageFile = async (client: () => AxiosInstance, endPoint: string, id: DocId) => {\n const { execute } = useApiRequest<AssetFileImage, null>({\n client,\n method: 'GET',\n system: SYSTEM_CORE_DAM,\n entity: 'asset',\n urlTemplate: endPoint + '/:id',\n optionalBody: true,\n })\n\n return (await execute({ urlParams: { id } })) ?? null\n}\n\nexport const imageUploadStart = (client: () => AxiosInstance, endPoint: string, item: UploadQueueItem) => {\n return new Promise((resolve, reject) => {\n let url = endPoint + '/licence/' + item.licenceId\n if (item.type === UploadQueueItemType.SlotFile && item.slotName && item.assetId) {\n url = endPoint + '/asset/' + item.assetId + '/slot-name/' + item.slotName\n }\n client()\n .post(\n url,\n JSON.stringify({\n mimeType: damFileTypeFix(item.file),\n size: item.file?.size,\n })\n )\n .then((res) => {\n if (res.status === HTTP_STATUS_CREATED) {\n resolve(res.data)\n } else {\n //\n reject()\n }\n })\n .catch((err) => {\n //\n reject(err)\n })\n })\n}\n\nexport const imageUploadChunk = (\n client: () => AxiosInstance,\n endPoint: string,\n item: UploadQueueItem,\n imageId: DocId,\n buffer: Blob | File,\n size: number,\n offset: number,\n onUploadProgressCallback: ((progressEvent: any) => void) | undefined = undefined\n) => {\n return new Promise((resolve, reject) => {\n const { logMessage, logError } = useSentry()\n\n // Validate buffer\n if (!(buffer instanceof Blob) || buffer.size === 0) {\n logMessage('dam_upload_chunk_validation', 'error', {\n tags: {\n error_type: 'dam_upload_chunk_validation_buffer',\n },\n extra: {\n type: item.assetType,\n chunkSize: item.chunkSize,\n chunkTotalCount: item.chunkTotalCount,\n imageId,\n offset,\n size,\n bufferType: typeof buffer,\n bufferInstanceOfBlob: buffer instanceof Blob,\n bufferInstanceOfFile: buffer instanceof File,\n bufferSize: buffer instanceof Blob ? buffer.size : 'N/A',\n },\n })\n reject(new Error('Invalid buffer: must be a non-empty Blob or File'))\n return\n }\n\n // Validate size\n if (typeof size !== 'number' || !Number.isInteger(size) || size <= 0) {\n logMessage('dam_upload_chunk_validation', 'error', {\n tags: {\n error_type: 'dam_upload_chunk_validation_size',\n },\n extra: {\n type: item.assetType,\n chunkSize: item.chunkSize,\n chunkTotalCount: item.chunkTotalCount,\n imageId,\n offset,\n size,\n sizeType: typeof size,\n isInteger: Number.isInteger(size),\n },\n })\n reject(new Error('Invalid size: must be a positive integer'))\n return\n }\n\n // Validate offset\n if (typeof offset !== 'number' || !Number.isInteger(offset) || offset < 0) {\n logMessage('dam_upload_chunk_validation', 'error', {\n tags: {\n error_type: 'dam_upload_chunk_validation_offset',\n },\n extra: {\n type: item.assetType,\n chunkSize: item.chunkSize,\n chunkTotalCount: item.chunkTotalCount,\n imageId,\n offset,\n size,\n offsetType: typeof offset,\n isInteger: Number.isInteger(offset),\n },\n })\n reject(new Error('Invalid offset: must be a non-negative integer'))\n return\n }\n\n const formData = new FormData()\n const url = endPoint + '/' + imageId + '/chunk'\n formData.append('file', buffer)\n let chunkData = ''\n try {\n chunkData = JSON.stringify({\n offset: offset,\n size: size,\n })\n } catch (error) {\n logError(error as any, {\n tags: {\n error_type: 'dam_upload_chunk_stringify',\n },\n extra: {\n type: item.assetType,\n chunkSize: item.chunkSize,\n chunkTotalCount: item.chunkTotalCount,\n imageId,\n offset,\n size,\n offsetType: typeof offset,\n offsetIsInteger: Number.isInteger(offset),\n sizeType: typeof size,\n sizeIsInteger: Number.isInteger(size),\n },\n })\n reject(error)\n return\n }\n\n formData.append('chunk', chunkData)\n\n client()\n .post(url, formData, {\n headers: {\n 'Content-Type': undefined, // Let Axios automatically set multipart/form-data with boundary\n },\n timeout: CHUNK_UPLOAD_TIMEOUT * 1000,\n signal: item.latestChunkAbortController?.signal,\n onUploadProgress: onUploadProgressCallback,\n })\n .then((res) => {\n if (res.status === HTTP_STATUS_CREATED) {\n resolve(res.data)\n } else {\n //\n reject()\n }\n })\n .catch((err) => {\n // Check for 400 Bad Request error\n if (axios.isAxiosError(err) && err.response?.status === 400) {\n logError(err, {\n tags: {\n error_type: 'dam_upload_chunk_400',\n },\n extra: {\n type: item.assetType,\n chunkSize: item.chunkSize,\n chunkTotalCount: item.chunkTotalCount,\n imageId,\n offset,\n size,\n responseData: err.response.data,\n responseStatus: err.response.status,\n responseStatusText: err.response.statusText,\n chunkData,\n },\n })\n }\n reject(err)\n })\n })\n}\n\nexport const imageUploadFinish = (\n client: () => AxiosInstance,\n endPoint: string,\n item: UploadQueueItem,\n sha: string\n) => {\n return new Promise((resolve, reject) => {\n const url = endPoint + '/' + item.fileId + '/uploaded'\n client()\n .patch(\n url,\n JSON.stringify({\n checksum: sha,\n })\n )\n .then((res) => {\n if (res.status === HTTP_STATUS_OK) {\n resolve(res.data)\n } else {\n //\n reject()\n }\n })\n .catch((err) => {\n //\n reject(err)\n })\n })\n}\n\nexport const rotateImage = (client: () => AxiosInstance, endPoint: string, imageId: DocId, angle: 90 | 270) => {\n return new Promise((resolve, reject) => {\n const url = endPoint + '/' + imageId + '/rotate/' + angle\n client()\n .patch(url)\n .then((res) => {\n if (res.status === HTTP_STATUS_OK) {\n resolve(res.data)\n } else {\n //\n reject()\n }\n })\n .catch((err) => {\n //\n reject(err)\n })\n })\n}\n\nconst COPY_TO_LICENCE_MAX_LIMIT = 50\nconst COPY_TO_LICENCE_API_LIMIT = 20\n\nexport const copyToLicence = async (\n client: () => AxiosInstance,\n endPoint: string,\n items: DamImageCopyToLicenceRequest\n): Promise<DamImageCopyToLicenceResponse> => {\n if (items.length > COPY_TO_LICENCE_MAX_LIMIT) {\n return Promise.reject('Exceeded max limit')\n }\n\n const url = endPoint + '/copy-to-licence'\n\n const chunkArray = <T>(arr: T[], chunkSize: number): T[][] => {\n return Array.from({ length: Math.ceil(arr.length / chunkSize) }, (_, i) =>\n arr.slice(i * chunkSize, i * chunkSize + chunkSize)\n )\n }\n\n const itemChunks = chunkArray(items, COPY_TO_LICENCE_API_LIMIT)\n\n try {\n const responses = await Promise.all(\n itemChunks.map((chunk) =>\n client()\n .patch(url, JSON.stringify(chunk))\n .then((res) => {\n // A success that is not \"ok\" carries no list of what was copied: a request that failed, not an\n // empty answer whose assets would be left out without a word.\n if (res.status !== HTTP_STATUS_OK) throw new AnzuApiResponseCodeError(res.status)\n return res.data\n })\n )\n )\n\n return responses.flat()\n } catch (error) {\n // The class the widgets' error alert knows, where the bare error of axios passed it by without a word; a\n // request that was stopped becomes the one it keeps quiet about. Handed to the api error logger as every\n // other request of the family is.\n const context = { system: SYSTEM_CORE_DAM, entity: 'asset', url: requestedUrl(client, url, {}, error) }\n return Promise.reject(report(mapApiError(error, context), context))\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"damImageApi.js","names":["axios","CHUNK_UPLOAD_TIMEOUT","fetchImageFile","useApiRequest","SYSTEM_CORE_DAM","endPoint","execute","imageUploadStart","url","item","UploadQueueItemType","client","damFileTypeFix","res","resolve","reject","err","imageUploadChunk","useSentry","buffer","logMessage","size","offset","formData","imageId","chunkData","error","logError","onUploadProgressCallback","imageUploadFinish","sha","rotateImage","angle","COPY_TO_LICENCE_MAX_LIMIT","COPY_TO_LICENCE_API_LIMIT","copyToLicence","items","itemChunks","arr","chunkSize","i","chunk","AnzuApiResponseCodeError","context","requestedUrl","report","mapApiError"],"sources":["../../../../src/domains/dam/api/damImageApi.ts"],"sourcesContent":["import type { AxiosInstance } from 'axios'\nimport axios from 'axios'\nimport { type UploadQueueItem, UploadQueueItemType } from '@/domains/dam/types/UploadQueue'\nimport type { DocId } from '@/shared/types/common'\nimport { HTTP_STATUS_CREATED, HTTP_STATUS_OK } from '@/shared/statusCodes'\nimport { AnzuApiResponseCodeError } from '@/shared/error/AnzuApiResponseCodeError'\nimport { damFileTypeFix } from '@/domains/ui/file/utils/fileType'\nimport type { AssetFileImage } from '@/domains/dam/types/AssetFile'\nimport { SYSTEM_CORE_DAM } from '@/domains/dam/api/damConstants'\nimport type { DamImageCopyToLicenceRequest, DamImageCopyToLicenceResponse } from '@/domains/dam/types/Asset'\nimport { useSentry } from '@/domains/system/composables/sentry'\nimport { useApiRequest } from '@/domains/api/composables/useApiRequest'\nimport { requestedUrl } from '@/domains/api/composables/request'\nimport { mapApiError, report } from '@/domains/api/utils/apiErrors'\n\nconst CHUNK_UPLOAD_TIMEOUT = 420\n\n// `optionalBody` for the same reason as `fetchImage`: callers treat the result as \"no file\", not a failure.\n// Normalising to `null` keeps their `isNull` guards correct.\nexport const fetchImageFile = async (client: () => AxiosInstance, endPoint: string, id: DocId) => {\n const { execute } = useApiRequest<AssetFileImage, null>({\n client,\n method: 'GET',\n system: SYSTEM_CORE_DAM,\n entity: 'asset',\n urlTemplate: endPoint + '/:id',\n optionalBody: true,\n })\n\n return (await execute({ urlParams: { id } })) ?? null\n}\n\nexport const imageUploadStart = (client: () => AxiosInstance, endPoint: string, item: UploadQueueItem) => {\n return new Promise((resolve, reject) => {\n let url = endPoint + '/licence/' + item.licenceId\n if (item.type === UploadQueueItemType.SlotFile && item.slotName && item.assetId) {\n url = endPoint + '/asset/' + item.assetId + '/slot-name/' + item.slotName\n }\n client()\n .post(\n url,\n JSON.stringify({\n mimeType: damFileTypeFix(item.file),\n size: item.file?.size,\n })\n )\n .then((res) => {\n if (res.status === HTTP_STATUS_CREATED) {\n resolve(res.data)\n } else {\n //\n reject()\n }\n })\n .catch((err) => {\n //\n reject(err)\n })\n })\n}\n\nexport const imageUploadChunk = (\n client: () => AxiosInstance,\n endPoint: string,\n item: UploadQueueItem,\n imageId: DocId,\n buffer: Blob | File,\n size: number,\n offset: number,\n onUploadProgressCallback: ((progressEvent: any) => void) | undefined = undefined\n) => {\n return new Promise((resolve, reject) => {\n const { logMessage, logError } = useSentry()\n\n // Validate buffer\n if (!(buffer instanceof Blob) || buffer.size === 0) {\n logMessage('dam_upload_chunk_validation', 'error', {\n tags: {\n error_type: 'dam_upload_chunk_validation_buffer',\n },\n extra: {\n type: item.assetType,\n chunkSize: item.chunkSize,\n chunkTotalCount: item.chunkTotalCount,\n imageId,\n offset,\n size,\n bufferType: typeof buffer,\n bufferInstanceOfBlob: buffer instanceof Blob,\n bufferInstanceOfFile: buffer instanceof File,\n bufferSize: buffer instanceof Blob ? buffer.size : 'N/A',\n },\n })\n reject(new Error('Invalid buffer: must be a non-empty Blob or File'))\n return\n }\n\n // Validate size\n if (typeof size !== 'number' || !Number.isInteger(size) || size <= 0) {\n logMessage('dam_upload_chunk_validation', 'error', {\n tags: {\n error_type: 'dam_upload_chunk_validation_size',\n },\n extra: {\n type: item.assetType,\n chunkSize: item.chunkSize,\n chunkTotalCount: item.chunkTotalCount,\n imageId,\n offset,\n size,\n sizeType: typeof size,\n isInteger: Number.isInteger(size),\n },\n })\n reject(new Error('Invalid size: must be a positive integer'))\n return\n }\n\n // Validate offset\n if (typeof offset !== 'number' || !Number.isInteger(offset) || offset < 0) {\n logMessage('dam_upload_chunk_validation', 'error', {\n tags: {\n error_type: 'dam_upload_chunk_validation_offset',\n },\n extra: {\n type: item.assetType,\n chunkSize: item.chunkSize,\n chunkTotalCount: item.chunkTotalCount,\n imageId,\n offset,\n size,\n offsetType: typeof offset,\n isInteger: Number.isInteger(offset),\n },\n })\n reject(new Error('Invalid offset: must be a non-negative integer'))\n return\n }\n\n const formData = new FormData()\n const url = endPoint + '/' + imageId + '/chunk'\n formData.append('file', buffer)\n let chunkData = ''\n try {\n chunkData = JSON.stringify({\n offset: offset,\n size: size,\n })\n } catch (error) {\n logError(error as any, {\n tags: {\n error_type: 'dam_upload_chunk_stringify',\n },\n extra: {\n type: item.assetType,\n chunkSize: item.chunkSize,\n chunkTotalCount: item.chunkTotalCount,\n imageId,\n offset,\n size,\n offsetType: typeof offset,\n offsetIsInteger: Number.isInteger(offset),\n sizeType: typeof size,\n sizeIsInteger: Number.isInteger(size),\n },\n })\n reject(error)\n return\n }\n\n formData.append('chunk', chunkData)\n\n client()\n .post(url, formData, {\n headers: {\n 'Content-Type': undefined, // Let Axios automatically set multipart/form-data with boundary\n },\n timeout: CHUNK_UPLOAD_TIMEOUT * 1000,\n signal: item.latestChunkAbortController?.signal,\n onUploadProgress: onUploadProgressCallback,\n })\n .then((res) => {\n if (res.status === HTTP_STATUS_CREATED) {\n resolve(res.data)\n } else {\n //\n reject()\n }\n })\n .catch((err) => {\n // Check for 400 Bad Request error\n if (axios.isAxiosError(err) && err.response?.status === 400) {\n logError(err, {\n tags: {\n error_type: 'dam_upload_chunk_400',\n },\n extra: {\n type: item.assetType,\n chunkSize: item.chunkSize,\n chunkTotalCount: item.chunkTotalCount,\n imageId,\n offset,\n size,\n responseData: err.response.data,\n responseStatus: err.response.status,\n responseStatusText: err.response.statusText,\n chunkData,\n },\n })\n }\n reject(err)\n })\n })\n}\n\nexport const imageUploadFinish = (\n client: () => AxiosInstance,\n endPoint: string,\n item: UploadQueueItem,\n sha: string\n) => {\n return new Promise((resolve, reject) => {\n const url = endPoint + '/' + item.fileId + '/uploaded'\n client()\n .patch(\n url,\n JSON.stringify({\n checksum: sha,\n })\n )\n .then((res) => {\n if (res.status === HTTP_STATUS_OK) {\n resolve(res.data)\n } else {\n //\n reject()\n }\n })\n .catch((err) => {\n //\n reject(err)\n })\n })\n}\n\nexport const rotateImage = (client: () => AxiosInstance, endPoint: string, imageId: DocId, angle: 90 | 270) => {\n return new Promise((resolve, reject) => {\n const url = endPoint + '/' + imageId + '/rotate/' + angle\n client()\n .patch(url)\n .then((res) => {\n if (res.status === HTTP_STATUS_OK) {\n resolve(res.data)\n } else {\n //\n reject()\n }\n })\n .catch((err) => {\n //\n reject(err)\n })\n })\n}\n\nconst COPY_TO_LICENCE_MAX_LIMIT = 50\nconst COPY_TO_LICENCE_API_LIMIT = 20\n\nexport const copyToLicence = async (\n client: () => AxiosInstance,\n endPoint: string,\n items: DamImageCopyToLicenceRequest\n): Promise<DamImageCopyToLicenceResponse> => {\n if (items.length > COPY_TO_LICENCE_MAX_LIMIT) {\n return Promise.reject('Exceeded max limit')\n }\n\n const url = endPoint + '/copy-to-licence'\n\n const chunkArray = <T>(arr: T[], chunkSize: number): T[][] => {\n return Array.from({ length: Math.ceil(arr.length / chunkSize) }, (_, i) =>\n arr.slice(i * chunkSize, i * chunkSize + chunkSize)\n )\n }\n\n const itemChunks = chunkArray(items, COPY_TO_LICENCE_API_LIMIT)\n\n try {\n const responses = await Promise.all(\n itemChunks.map((chunk) =>\n client()\n .patch(url, JSON.stringify(chunk))\n .then((res) => {\n // A non-200 success carries no list of copied assets. Treat it\n // as a failure, not an empty answer that silently drops assets.\n if (res.status !== HTTP_STATUS_OK) throw new AnzuApiResponseCodeError(res.status)\n return res.data\n })\n )\n )\n\n return responses.flat()\n } catch (error) {\n // Map to the error class the widgets' error alert understands; it ignored the raw axios error.\n // An aborted request maps to the class the alert stays quiet about.\n // Reported to the api error logger like every other request of this family.\n const context = { system: SYSTEM_CORE_DAM, entity: 'asset', url: requestedUrl(client, url, {}, error) }\n return Promise.reject(report(mapApiError(error, context), context))\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"uploadApi.js","names":["damUploadStart","item","DamAssetType","imageUploadStart","client","endPoint","res","reject","err","damUploadChunk","imageUploadChunk","imageId","buffer","size","offset","onUploadProgressCallback","damUploadFinish","imageUploadFinish","endPointImage","sha","UploadQueueItemStatus","resolve"],"sources":["../../../../src/domains/dam/api/uploadApi.ts"],"sourcesContent":["import { DamAssetType } from '@/domains/dam/types/Asset'\nimport {\n type DamUploadStartResponse,\n type UploadQueueItem,\n UploadQueueItemStatus,\n} from '@/domains/dam/types/UploadQueue'\nimport { imageUploadChunk, imageUploadFinish, imageUploadStart } from '@/domains/dam/api/damImageApi'\nimport type { AxiosInstance } from 'axios'\nimport type { DocId } from '@/shared/types/common'\n\nexport const damUploadStart: (\n client: () => AxiosInstance,\n endPoint: string,\n item: UploadQueueItem\n) => Promise<DamUploadStartResponse> = (client: () => AxiosInstance, endPoint: string, item: UploadQueueItem) => {\n return new Promise((resolve, reject) => {\n if (item.assetType !== DamAssetType.Image) {\n reject()\n return\n }\n imageUploadStart(client, endPoint, item)\n .then((res) => {\n resolve(res as DamUploadStartResponse)\n return\n })\n .catch((err) => reject(err))\n })\n}\n\nexport const damUploadChunk = (\n client: () => AxiosInstance,\n endPoint: string,\n item: UploadQueueItem,\n imageId: DocId,\n buffer: Blob | File,\n size: number,\n offset: number,\n onUploadProgressCallback: any\n) => {\n return new Promise((resolve, reject) => {\n if (item.assetType !== DamAssetType.Image) {\n reject()\n return\n }\n imageUploadChunk(client, endPoint, item, imageId, buffer, size, offset, onUploadProgressCallback)\n .then((res) => {\n resolve(res)\n })\n .catch((err) => {\n reject(err)\n })\n })\n}\n\nexport const damUploadFinish = (\n client: () => AxiosInstance,\n endPointImage: string,\n item: UploadQueueItem,\n sha: string\n) => {\n return new Promise((resolve, reject) => {\n if (item.assetType !== DamAssetType.Image) {\n reject()\n return\n }\n imageUploadFinish(client, endPointImage, item, sha)\n .then((res) => {\n // Only an item still sending. One stopped while the finish request ran, which has nothing to cancel, stays\n // stopped; one its notification has settled meanwhile stays settled.\n if (item.status === UploadQueueItemStatus.Uploading) item.status = UploadQueueItemStatus.Processing\n resolve(res)\n })\n .catch((err) => reject(err))\n })\n}\n"],"mappings":";;;;AAUA,IAAaA,KAI2B,GAA6B,GAAkB,MAC9E,IAAI,SAAS,GAAS,MAAW;CACtC,AAAIC,EAAK,cAAcC,EAAa,QAIpCC,EAAiBC,GAAQC,GAAUJ,CAAI,CAAC,CACrC,MAAM,MAAQ;EACb,EAAQK,CAA6B;CAEvC,CAAC,CAAC,CACD,OAAO,MAAQC,EAAOC,CAAG,CAAC,IAR3BD,EAAO;AASX,CAAC,GAGUE,KACX,GACA,GACA,GACA,GACA,GACA,GACA,GACA,MAEO,IAAI,SAAS,GAAS,MAAW;CACtC,AAAIR,EAAK,cAAcC,EAAa,QAIpCQ,EAAiBN,GAAQC,GAAUJ,GAAMU,GAASC,GAAQC,GAAMC,GAAQC,CAAwB,CAAC,CAC9F,MAAM,MAAQ;EACb,EAAQT,CAAG;CACb,CAAC,CAAC,CACD,OAAO,MAAQ;EACd,EAAOE,CAAG;CACZ,CAAC,IATDD,EAAO;AAUX,CAAC,GAGUS,KACX,GACA,GACA,GACA,MAEO,IAAI,SAAS,GAAS,MAAW;CACtC,AAAIf,EAAK,cAAcC,EAAa,QAIpCe,EAAkBb,GAAQc,GAAejB,GAAMkB,CAAG,CAAC,CAChD,MAAM,MAAQ;EAIb,AADIlB,EAAK,WAAWmB,EAAsB,cAAW,EAAK,SAASA,EAAsB,aACzFC,EAAQf,CAAG;CACb,CAAC,CAAC,CACD,OAAO,MAAQC,EAAOC,CAAG,CAAC,IAV3BD,EAAO;AAWX,CAAC"}
1
+ {"version":3,"file":"uploadApi.js","names":["damUploadStart","item","DamAssetType","imageUploadStart","client","endPoint","res","reject","err","damUploadChunk","imageUploadChunk","imageId","buffer","size","offset","onUploadProgressCallback","damUploadFinish","imageUploadFinish","endPointImage","sha","UploadQueueItemStatus","resolve"],"sources":["../../../../src/domains/dam/api/uploadApi.ts"],"sourcesContent":["import { DamAssetType } from '@/domains/dam/types/Asset'\nimport {\n type DamUploadStartResponse,\n type UploadQueueItem,\n UploadQueueItemStatus,\n} from '@/domains/dam/types/UploadQueue'\nimport { imageUploadChunk, imageUploadFinish, imageUploadStart } from '@/domains/dam/api/damImageApi'\nimport type { AxiosInstance } from 'axios'\nimport type { DocId } from '@/shared/types/common'\n\nexport const damUploadStart: (\n client: () => AxiosInstance,\n endPoint: string,\n item: UploadQueueItem\n) => Promise<DamUploadStartResponse> = (client: () => AxiosInstance, endPoint: string, item: UploadQueueItem) => {\n return new Promise((resolve, reject) => {\n if (item.assetType !== DamAssetType.Image) {\n reject()\n return\n }\n imageUploadStart(client, endPoint, item)\n .then((res) => {\n resolve(res as DamUploadStartResponse)\n return\n })\n .catch((err) => reject(err))\n })\n}\n\nexport const damUploadChunk = (\n client: () => AxiosInstance,\n endPoint: string,\n item: UploadQueueItem,\n imageId: DocId,\n buffer: Blob | File,\n size: number,\n offset: number,\n onUploadProgressCallback: any\n) => {\n return new Promise((resolve, reject) => {\n if (item.assetType !== DamAssetType.Image) {\n reject()\n return\n }\n imageUploadChunk(client, endPoint, item, imageId, buffer, size, offset, onUploadProgressCallback)\n .then((res) => {\n resolve(res)\n })\n .catch((err) => {\n reject(err)\n })\n })\n}\n\nexport const damUploadFinish = (\n client: () => AxiosInstance,\n endPointImage: string,\n item: UploadQueueItem,\n sha: string\n) => {\n return new Promise((resolve, reject) => {\n if (item.assetType !== DamAssetType.Image) {\n reject()\n return\n }\n imageUploadFinish(client, endPointImage, item, sha)\n .then((res) => {\n // Only an item still uploading. One stopped while the finish request ran stays stopped.\n // One whose notification settled it meanwhile stays settled.\n if (item.status === UploadQueueItemStatus.Uploading) item.status = UploadQueueItemStatus.Processing\n resolve(res)\n })\n .catch((err) => reject(err))\n })\n}\n"],"mappings":";;;;AAUA,IAAaA,KAI2B,GAA6B,GAAkB,MAC9E,IAAI,SAAS,GAAS,MAAW;CACtC,AAAIC,EAAK,cAAcC,EAAa,QAIpCC,EAAiBC,GAAQC,GAAUJ,CAAI,CAAC,CACrC,MAAM,MAAQ;EACb,EAAQK,CAA6B;CAEvC,CAAC,CAAC,CACD,OAAO,MAAQC,EAAOC,CAAG,CAAC,IAR3BD,EAAO;AASX,CAAC,GAGUE,KACX,GACA,GACA,GACA,GACA,GACA,GACA,GACA,MAEO,IAAI,SAAS,GAAS,MAAW;CACtC,AAAIR,EAAK,cAAcC,EAAa,QAIpCQ,EAAiBN,GAAQC,GAAUJ,GAAMU,GAASC,GAAQC,GAAMC,GAAQC,CAAwB,CAAC,CAC9F,MAAM,MAAQ;EACb,EAAQT,CAAG;CACb,CAAC,CAAC,CACD,OAAO,MAAQ;EACd,EAAOE,CAAG;CACZ,CAAC,IATDD,EAAO;AAUX,CAAC,GAGUS,KACX,GACA,GACA,GACA,MAEO,IAAI,SAAS,GAAS,MAAW;CACtC,AAAIf,EAAK,cAAcC,EAAa,QAIpCe,EAAkBb,GAAQc,GAAejB,GAAMkB,CAAG,CAAC,CAChD,MAAM,MAAQ;EAIb,AADIlB,EAAK,WAAWmB,EAAsB,cAAW,EAAK,SAASA,EAAsB,aACzFC,EAAQf,CAAG;CACb,CAAC,CAAC,CACD,OAAO,MAAQC,EAAOC,CAAG,CAAC,IAV3BD,EAAO;AAWX,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"AssetCustomMetadataForm.js","names":["_sfc_main","AssetCustomMetadataForm_vue_vue_type_script_setup_true_lang_default","AssetCustomMetadataForm_default"],"sources":["../../../../../src/domains/dam/assetDetail/components/AssetCustomMetadataForm.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport type { DamAssetTypeType } from '@/domains/dam/types/Asset'\nimport { useDamConfigState } from '@/domains/dam/config/composables/damConfigState'\nimport ACustomDataForm from '@/domains/customDataForm/components/ACustomDataForm.vue'\nimport { ADamAssetMetadataValidationScopeSymbol } from '@/domains/dam/composables/uploadValidations'\nimport type { IntegerId } from '@/shared/types/common'\nimport type { ValidationScope } from '@/shared/types/Validation'\nimport { isUndefined } from '@/shared/utils/common'\nimport { useDamConfigName } from '@/domains/dam/composables/damConfigName'\n\nconst props = withDefaults(\n defineProps<{\n assetType: DamAssetTypeType\n extSystem: IntegerId\n modelValue: { [key: string]: any }\n dataCy?: string\n readonly?: boolean\n validationScope?: ValidationScope\n /** The DAM configuration whose forms it shows; inherited when not given. */\n configName?: string\n }>(),\n {\n dataCy: undefined,\n readonly: false,\n validationScope: ADamAssetMetadataValidationScopeSymbol,\n configName: undefined,\n }\n)\nconst emit = defineEmits<{\n (e: 'update:modelValue', data: any): void\n (e: 'anyChange'): void\n}>()\n\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst damConfigName = useDamConfigName(props.configName)\nconst { getDamConfigAssetCustomFormElements, getDamConfigExtSystem } = useDamConfigState(undefined, damConfigName)\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst configAssetCustomFormElements = getDamConfigAssetCustomFormElements(props.extSystem)\nif (isUndefined(configAssetCustomFormElements)) {\n throw new Error('Custom form elements must be initialised.')\n}\n// A type whose read failed beside reads that answered is not loaded: the form says so in place of its fields and draws\n// the rest, its slots too. Thrown, it took the inputs its host puts into the slots with it.\nconst typeNotLoaded = computed(() => isUndefined(getDamConfigAssetCustomFormElements(props.extSystem, props.assetType)))\n\nconst { t } = useI18n()\n\nconst elements = computed(() => {\n return configAssetCustomFormElements[props.assetType]\n})\n\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst configExtSystem = getDamConfigExtSystem(props.extSystem)\n\nif (isUndefined(configExtSystem)) {\n throw new Error('AssetCustomMetadataForm: Ext system must be initialised.')\n}\n\n// The number the DAM is configured with, 0 too: no field is pinned then.\nconst pinnedCount = computed(() => {\n return configExtSystem[props.assetType]?.customMetadataPinnedAmount ?? 2\n})\n</script>\n\n<template>\n <ACustomDataForm\n :model-value=\"modelValue\"\n :pinned-count=\"pinnedCount\"\n :elements=\"elements\"\n :readonly=\"readonly\"\n :validation-scope=\"validationScope\"\n @any-change=\"emit('anyChange')\"\n @update:model-value=\"emit('update:modelValue', $event)\"\n >\n <template #after-pinned>\n <slot name=\"after-pinned\" />\n </template>\n <template #before-pinned>\n <slot name=\"before-pinned\" />\n <div\n v-if=\"typeNotLoaded\"\n class=\"text-error my-2\"\n >\n {{ t('common.damImage.error.loadingConfig') }}\n </div>\n </template>\n </ACustomDataForm>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"AssetCustomMetadataForm.js","names":["_sfc_main","AssetCustomMetadataForm_vue_vue_type_script_setup_true_lang_default","AssetCustomMetadataForm_default"],"sources":["../../../../../src/domains/dam/assetDetail/components/AssetCustomMetadataForm.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport type { DamAssetTypeType } from '@/domains/dam/types/Asset'\nimport { useDamConfigState } from '@/domains/dam/config/composables/damConfigState'\nimport ACustomDataForm from '@/domains/customDataForm/components/ACustomDataForm.vue'\nimport { ADamAssetMetadataValidationScopeSymbol } from '@/domains/dam/composables/uploadValidations'\nimport type { IntegerId } from '@/shared/types/common'\nimport type { ValidationScope } from '@/shared/types/Validation'\nimport { isUndefined } from '@/shared/utils/common'\nimport { useDamConfigName } from '@/domains/dam/composables/damConfigName'\n\nconst props = withDefaults(\n defineProps<{\n assetType: DamAssetTypeType\n extSystem: IntegerId\n modelValue: { [key: string]: any }\n dataCy?: string\n readonly?: boolean\n validationScope?: ValidationScope\n /** The DAM configuration whose forms it shows; inherited when not given. */\n configName?: string\n }>(),\n {\n dataCy: undefined,\n readonly: false,\n validationScope: ADamAssetMetadataValidationScopeSymbol,\n configName: undefined,\n }\n)\nconst emit = defineEmits<{\n (e: 'update:modelValue', data: any): void\n (e: 'anyChange'): void\n}>()\n\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst damConfigName = useDamConfigName(props.configName)\nconst { getDamConfigAssetCustomFormElements, getDamConfigExtSystem } = useDamConfigState(undefined, damConfigName)\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst configAssetCustomFormElements = getDamConfigAssetCustomFormElements(props.extSystem)\nif (isUndefined(configAssetCustomFormElements)) {\n throw new Error('Custom form elements must be initialised.')\n}\n// When the read of this type failed but other reads succeeded, the type is not loaded.\n// The form shows a notice in place of its fields and still renders the rest, including its slots.\n// Throwing here would also drop the inputs the host puts into the slots.\nconst typeNotLoaded = computed(() => isUndefined(getDamConfigAssetCustomFormElements(props.extSystem, props.assetType)))\n\nconst { t } = useI18n()\n\nconst elements = computed(() => {\n return configAssetCustomFormElements[props.assetType]\n})\n\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst configExtSystem = getDamConfigExtSystem(props.extSystem)\n\nif (isUndefined(configExtSystem)) {\n throw new Error('AssetCustomMetadataForm: Ext system must be initialised.')\n}\n\n// Uses the configured number, including 0, which pins no field.\nconst pinnedCount = computed(() => {\n return configExtSystem[props.assetType]?.customMetadataPinnedAmount ?? 2\n})\n</script>\n\n<template>\n <ACustomDataForm\n :model-value=\"modelValue\"\n :pinned-count=\"pinnedCount\"\n :elements=\"elements\"\n :readonly=\"readonly\"\n :validation-scope=\"validationScope\"\n @any-change=\"emit('anyChange')\"\n @update:model-value=\"emit('update:modelValue', $event)\"\n >\n <template #after-pinned>\n <slot name=\"after-pinned\" />\n </template>\n <template #before-pinned>\n <slot name=\"before-pinned\" />\n <div\n v-if=\"typeNotLoaded\"\n class=\"text-error my-2\"\n >\n {{ t('common.damImage.error.loadingConfig') }}\n </div>\n </template>\n </ACustomDataForm>\n</template>\n"],"mappings":""}
@@ -13,12 +13,14 @@ type __VLS_Props = {
13
13
  /** The DAM configuration whose forms it shows; inherited when not given. */
14
14
  configName?: string;
15
15
  };
16
- declare var __VLS_11: {}, __VLS_14: {};
17
- type __VLS_Slots = {} & {
18
- 'after-pinned'?: (props: typeof __VLS_11) => any;
19
- } & {
20
- 'before-pinned'?: (props: typeof __VLS_14) => any;
16
+ declare const __VLS_template: () => {
17
+ __VLS_Slots: {
18
+ 'after-pinned'?: (props: {}) => any;
19
+ } & {
20
+ 'before-pinned'?: (props: {}) => any;
21
+ };
21
22
  };
23
+ type __VLS_Slots = ReturnType<typeof __VLS_template>['__VLS_Slots'];
22
24
  declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
23
25
  "update:modelValue": (data: any) => any;
24
26
  anyChange: () => any;
@@ -1 +1 @@
1
- {"version":3,"file":"AssetCustomMetadataForm.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createBlock","ACustomDataForm","_withCtx","_renderSlot","_createElementBlock","_toDisplayString","_unref","_createCommentVNode","ACustomDataForm_default","_hoisted_1","AssetCustomMetadataForm_vue_vue_type_script_setup_true_lang_default","ADamAssetMetadataValidationScopeSymbol","__emit","props","__props","emit","damConfigName","useDamConfigName","useDamConfigState","configAssetCustomFormElements","getDamConfigAssetCustomFormElements","isUndefined","typeNotLoaded","computed","useI18n","elements","configExtSystem","getDamConfigExtSystem","pinnedCount","openBlock","createBlock","_cache","$event","withCtx","renderSlot","_ctx","createElementBlock","toDisplayString","unref","t","createCommentVNode"],"sources":["../../../../../src/domains/dam/assetDetail/components/AssetCustomMetadataForm.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport type { DamAssetTypeType } from '@/domains/dam/types/Asset'\nimport { useDamConfigState } from '@/domains/dam/config/composables/damConfigState'\nimport ACustomDataForm from '@/domains/customDataForm/components/ACustomDataForm.vue'\nimport { ADamAssetMetadataValidationScopeSymbol } from '@/domains/dam/composables/uploadValidations'\nimport type { IntegerId } from '@/shared/types/common'\nimport type { ValidationScope } from '@/shared/types/Validation'\nimport { isUndefined } from '@/shared/utils/common'\nimport { useDamConfigName } from '@/domains/dam/composables/damConfigName'\n\nconst props = withDefaults(\n defineProps<{\n assetType: DamAssetTypeType\n extSystem: IntegerId\n modelValue: { [key: string]: any }\n dataCy?: string\n readonly?: boolean\n validationScope?: ValidationScope\n /** The DAM configuration whose forms it shows; inherited when not given. */\n configName?: string\n }>(),\n {\n dataCy: undefined,\n readonly: false,\n validationScope: ADamAssetMetadataValidationScopeSymbol,\n configName: undefined,\n }\n)\nconst emit = defineEmits<{\n (e: 'update:modelValue', data: any): void\n (e: 'anyChange'): void\n}>()\n\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst damConfigName = useDamConfigName(props.configName)\nconst { getDamConfigAssetCustomFormElements, getDamConfigExtSystem } = useDamConfigState(undefined, damConfigName)\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst configAssetCustomFormElements = getDamConfigAssetCustomFormElements(props.extSystem)\nif (isUndefined(configAssetCustomFormElements)) {\n throw new Error('Custom form elements must be initialised.')\n}\n// A type whose read failed beside reads that answered is not loaded: the form says so in place of its fields and draws\n// the rest, its slots too. Thrown, it took the inputs its host puts into the slots with it.\nconst typeNotLoaded = computed(() => isUndefined(getDamConfigAssetCustomFormElements(props.extSystem, props.assetType)))\n\nconst { t } = useI18n()\n\nconst elements = computed(() => {\n return configAssetCustomFormElements[props.assetType]\n})\n\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst configExtSystem = getDamConfigExtSystem(props.extSystem)\n\nif (isUndefined(configExtSystem)) {\n throw new Error('AssetCustomMetadataForm: Ext system must be initialised.')\n}\n\n// The number the DAM is configured with, 0 too: no field is pinned then.\nconst pinnedCount = computed(() => {\n return configExtSystem[props.assetType]?.customMetadataPinnedAmount ?? 2\n})\n</script>\n\n<template>\n <ACustomDataForm\n :model-value=\"modelValue\"\n :pinned-count=\"pinnedCount\"\n :elements=\"elements\"\n :readonly=\"readonly\"\n :validation-scope=\"validationScope\"\n @any-change=\"emit('anyChange')\"\n @update:model-value=\"emit('update:modelValue', $event)\"\n >\n <template #after-pinned>\n <slot name=\"after-pinned\" />\n </template>\n <template #before-pinned>\n <slot name=\"before-pinned\" />\n <div\n v-if=\"typeNotLoaded\"\n class=\"text-error my-2\"\n >\n {{ t('common.damImage.error.loadingConfig') }}\n </div>\n </template>\n </ACustomDataForm>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYA,IAAMc,IAAQC,GAkBRC,IAAOH,GAMPI,IAAgBC,EAAiBJ,EAAM,UAAU,GACjD,EAAE,wCAAqC,6BAA0BK,EAAkB,KAAA,GAAWF,CAAa,GAE3GG,IAAgCC,EAAoCP,EAAM,SAAS;EACzF,IAAIQ,EAAYF,CAA6B,GAC3C,MAAU,MAAM,2CAA2C;EAI7D,IAAMG,IAAgBC,QAAeF,EAAYD,EAAoCP,EAAM,WAAWA,EAAM,SAAS,CAAC,CAAC,GAEjH,EAAE,SAAMW,EAAQ,GAEhBC,IAAWF,QACRJ,EAA8BN,EAAM,UAC5C,GAGKa,IAAkBC,EAAsBd,EAAM,SAAS;EAE7D,IAAIQ,EAAYK,CAAe,GAC7B,MAAU,MAAM,0DAA0D;EAI5E,IAAME,IAAcL,QACXG,EAAgBb,EAAM,UAAU,EAAE,8BAA8B,CACxE;E,kBAICd,EAAA,GAAAC,EAqBkBC,GAAA;GApBf,eAAaa,EAAA;GACb,gBAAcc,EAAA;GACd,UAAUH,EAAA;GACV,UAAUX,EAAA;GACV,oBAAkBA,EAAA;GAClB,aAAU,AAAAiB,EAAA,QAAA,MAAEhB,EAAI,WAAA;GAChB,uBAAkB,AAAAgB,EAAA,QAAA,MAAEhB,EAAI,qBAAsBiB,CAAM;;GAE1C,gBAAY9B,QACO,CAA5BC,EAA4BgC,EAAA,QAAA,cAAA,C;GAEnB,iBAAajC,QACO,CAA7BC,EAA6BgC,EAAA,QAAA,eAAA,GAErBb,EAAA,SADRvB,EAAA,GAAAK,EAKM,OALNK,GAKMJ,EADDC,EAAAiC,CAAA,CAAC,CAAA,qCAAA,CAAA,GAAA,CAAA,K"}
1
+ {"version":3,"file":"AssetCustomMetadataForm.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createBlock","ACustomDataForm","_withCtx","_renderSlot","_createElementBlock","_toDisplayString","_unref","_createCommentVNode","ACustomDataForm_default","_hoisted_1","AssetCustomMetadataForm_vue_vue_type_script_setup_true_lang_default","ADamAssetMetadataValidationScopeSymbol","__emit","props","__props","emit","damConfigName","useDamConfigName","useDamConfigState","configAssetCustomFormElements","getDamConfigAssetCustomFormElements","isUndefined","typeNotLoaded","computed","useI18n","elements","configExtSystem","getDamConfigExtSystem","pinnedCount","openBlock","createBlock","_cache","$event","withCtx","renderSlot","_ctx","createElementBlock","toDisplayString","unref","t","createCommentVNode"],"sources":["../../../../../src/domains/dam/assetDetail/components/AssetCustomMetadataForm.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport type { DamAssetTypeType } from '@/domains/dam/types/Asset'\nimport { useDamConfigState } from '@/domains/dam/config/composables/damConfigState'\nimport ACustomDataForm from '@/domains/customDataForm/components/ACustomDataForm.vue'\nimport { ADamAssetMetadataValidationScopeSymbol } from '@/domains/dam/composables/uploadValidations'\nimport type { IntegerId } from '@/shared/types/common'\nimport type { ValidationScope } from '@/shared/types/Validation'\nimport { isUndefined } from '@/shared/utils/common'\nimport { useDamConfigName } from '@/domains/dam/composables/damConfigName'\n\nconst props = withDefaults(\n defineProps<{\n assetType: DamAssetTypeType\n extSystem: IntegerId\n modelValue: { [key: string]: any }\n dataCy?: string\n readonly?: boolean\n validationScope?: ValidationScope\n /** The DAM configuration whose forms it shows; inherited when not given. */\n configName?: string\n }>(),\n {\n dataCy: undefined,\n readonly: false,\n validationScope: ADamAssetMetadataValidationScopeSymbol,\n configName: undefined,\n }\n)\nconst emit = defineEmits<{\n (e: 'update:modelValue', data: any): void\n (e: 'anyChange'): void\n}>()\n\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst damConfigName = useDamConfigName(props.configName)\nconst { getDamConfigAssetCustomFormElements, getDamConfigExtSystem } = useDamConfigState(undefined, damConfigName)\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst configAssetCustomFormElements = getDamConfigAssetCustomFormElements(props.extSystem)\nif (isUndefined(configAssetCustomFormElements)) {\n throw new Error('Custom form elements must be initialised.')\n}\n// When the read of this type failed but other reads succeeded, the type is not loaded.\n// The form shows a notice in place of its fields and still renders the rest, including its slots.\n// Throwing here would also drop the inputs the host puts into the slots.\nconst typeNotLoaded = computed(() => isUndefined(getDamConfigAssetCustomFormElements(props.extSystem, props.assetType)))\n\nconst { t } = useI18n()\n\nconst elements = computed(() => {\n return configAssetCustomFormElements[props.assetType]\n})\n\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst configExtSystem = getDamConfigExtSystem(props.extSystem)\n\nif (isUndefined(configExtSystem)) {\n throw new Error('AssetCustomMetadataForm: Ext system must be initialised.')\n}\n\n// Uses the configured number, including 0, which pins no field.\nconst pinnedCount = computed(() => {\n return configExtSystem[props.assetType]?.customMetadataPinnedAmount ?? 2\n})\n</script>\n\n<template>\n <ACustomDataForm\n :model-value=\"modelValue\"\n :pinned-count=\"pinnedCount\"\n :elements=\"elements\"\n :readonly=\"readonly\"\n :validation-scope=\"validationScope\"\n @any-change=\"emit('anyChange')\"\n @update:model-value=\"emit('update:modelValue', $event)\"\n >\n <template #after-pinned>\n <slot name=\"after-pinned\" />\n </template>\n <template #before-pinned>\n <slot name=\"before-pinned\" />\n <div\n v-if=\"typeNotLoaded\"\n class=\"text-error my-2\"\n >\n {{ t('common.damImage.error.loadingConfig') }}\n </div>\n </template>\n </ACustomDataForm>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYA,IAAMc,IAAQC,GAkBRC,IAAOH,GAMPI,IAAgBC,EAAiBJ,EAAM,UAAU,GACjD,EAAE,wCAAqC,6BAA0BK,EAAkB,KAAA,GAAWF,CAAa,GAE3GG,IAAgCC,EAAoCP,EAAM,SAAS;EACzF,IAAIQ,EAAYF,CAA6B,GAC3C,MAAU,MAAM,2CAA2C;EAK7D,IAAMG,IAAgBC,QAAeF,EAAYD,EAAoCP,EAAM,WAAWA,EAAM,SAAS,CAAC,CAAC,GAEjH,EAAE,SAAMW,EAAQ,GAEhBC,IAAWF,QACRJ,EAA8BN,EAAM,UAC5C,GAGKa,IAAkBC,EAAsBd,EAAM,SAAS;EAE7D,IAAIQ,EAAYK,CAAe,GAC7B,MAAU,MAAM,0DAA0D;EAI5E,IAAME,IAAcL,QACXG,EAAgBb,EAAM,UAAU,EAAE,8BAA8B,CACxE;E,kBAICd,EAAA,GAAAC,EAqBkBC,GAAA;GApBf,eAAaa,EAAA;GACb,gBAAcc,EAAA;GACd,UAAUH,EAAA;GACV,UAAUX,EAAA;GACV,oBAAkBA,EAAA;GAClB,aAAU,AAAAiB,EAAA,QAAA,MAAEhB,EAAI,WAAA;GAChB,uBAAkB,AAAAgB,EAAA,QAAA,MAAEhB,EAAI,qBAAsBiB,CAAM;;GAE1C,gBAAY9B,QACO,CAA5BC,EAA4BgC,EAAA,QAAA,cAAA,C;GAEnB,iBAAajC,QACO,CAA7BC,EAA6BgC,EAAA,QAAA,eAAA,GAErBb,EAAA,SADRvB,EAAA,GAAAK,EAKM,OALNK,GAKMJ,EADDC,EAAAiC,CAAA,CAAC,CAAA,qCAAA,CAAA,GAAA,CAAA,K"}
@@ -1 +1 @@
1
- {"version":3,"file":"AssetDetailDialog.js","names":["_sfc_main","AssetDetailDialog_vue_vue_type_script_setup_true_lang_default","AssetDetailDialog_default"],"sources":["../../../../../src/domains/dam/assetDetail/components/AssetDetailDialog.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, onBeforeUnmount, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useI18n } from 'vue-i18n'\nimport { useAssetDetailStore } from '@/domains/dam/assetDetail/store/assetDetailStore'\nimport { type AssetDetailItemDto, DamAssetType } from '@/domains/dam/types/Asset'\nimport AssetDetailDialogFrame from '@/domains/dam/assetDetail/components/AssetDetailDialogFrame.vue'\nimport AssetDetailDialogSidebar from '@/domains/dam/assetDetail/components/AssetDetailDialogSidebar.vue'\nimport { assetDetailViewOfAsset } from '@/domains/dam/assetDetail/composables/assetDetailView'\nimport type { UploadQueueKey } from '@/domains/dam/types/UploadQueue'\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: UploadQueueKey\n extSystem: IntegerId\n configName?: string\n }>(),\n {\n configName: undefined,\n }\n)\n\nconst emit = defineEmits<{\n /** `shown`: the asset the detail showed when it closed; none when it was closed from its loader, or had none. */\n (e: 'close', shown: AssetDetailItemDto | null): void\n}>()\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst damConfigName = useDamConfigName(props.configName)\n\nconst { t } = useI18n()\n\nconst assetDetailStore = useAssetDetailStore()\nconst { asset, dialog, loading } = storeToRefs(assetDetailStore)\n\nconst { simpleAssetSidebarEnabled } = useCommonAdminCoreDamOptions(damConfigName)\n\nconst view = computed(() => assetDetailViewOfAsset(asset.value, simpleAssetSidebarEnabled))\n\n// What the detail shows while its button closes it. Noted before the store is emptied: its host cannot ask the store.\nlet shownAtClose: AssetDetailItemDto | null = null\nconst closeDialog = () => {\n shownAtClose = loading.value ? null : asset.value\n assetDetailStore.close()\n shownAtClose = null\n}\n// The store closes the detail by itself as well, after a read that failed: the host is told of either close, once.\n// Only a change that takes this detail away is its close. Until its host has drawn again this dialog still sees what\n// follows, the next opening of its host or of another.\nconst stopTellingHost = watch(\n dialog,\n (_now, before) => {\n if (before === props.queueKey) emit('close', shownAtClose)\n },\n { flush: 'sync' }\n)\n// A host that goes away with its detail open would leave its key in the store, which is the page's: the next host with\n// that key drew the detail at once, over a page that had not asked for it. The detail is closed with its host, and its\n// read on its way given up. That host is not told: it is going away.\nonBeforeUnmount(() => {\n stopTellingHost()\n if (dialog.value === props.queueKey) assetDetailStore.close()\n})\n\nconst toolbarTitle = computed(() => {\n if (!asset.value) return ''\n return asset.value.texts.displayTitle\n})\n</script>\n\n<template>\n <AssetDetailDialogFrame\n :loading=\"loading\"\n :view=\"view\"\n :ext-system=\"extSystem\"\n :config-name=\"damConfigName\"\n @close=\"closeDialog\"\n >\n <template #title>\n <div>{{ t('common.damImage.asset.detail.sourceSystem') }}: {{ toolbarTitle }}</div>\n </template>\n <template #toolbar-actions>\n <VBtn\n :aria-label=\"t('common.button.close')\"\n icon\n variant=\"text\"\n :width=\"36\"\n :height=\"36\"\n class=\"mr-1\"\n @click.stop=\"closeDialog\"\n >\n <VIcon icon=\"mdi-close\" />\n <VTooltip\n activator=\"parent\"\n location=\"bottom\"\n >\n {{ t('common.button.close') }}\n </VTooltip>\n </VBtn>\n </template>\n <template #sidebar=\"{ view: shown }\">\n <AssetDetailDialogSidebar\n v-if=\"shown.id\"\n :key=\"shown.id\"\n :queue-key=\"queueKey\"\n :ext-system=\"extSystem\"\n :config-name=\"damConfigName\"\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 />\n </template>\n </AssetDetailDialogFrame>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"AssetDetailDialog.js","names":["_sfc_main","AssetDetailDialog_vue_vue_type_script_setup_true_lang_default","AssetDetailDialog_default"],"sources":["../../../../../src/domains/dam/assetDetail/components/AssetDetailDialog.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, onBeforeUnmount, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useI18n } from 'vue-i18n'\nimport { useAssetDetailStore } from '@/domains/dam/assetDetail/store/assetDetailStore'\nimport { type AssetDetailItemDto, DamAssetType } from '@/domains/dam/types/Asset'\nimport AssetDetailDialogFrame from '@/domains/dam/assetDetail/components/AssetDetailDialogFrame.vue'\nimport AssetDetailDialogSidebar from '@/domains/dam/assetDetail/components/AssetDetailDialogSidebar.vue'\nimport { assetDetailViewOfAsset } from '@/domains/dam/assetDetail/composables/assetDetailView'\nimport type { UploadQueueKey } from '@/domains/dam/types/UploadQueue'\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: UploadQueueKey\n extSystem: IntegerId\n configName?: string\n }>(),\n {\n configName: undefined,\n }\n)\n\nconst emit = defineEmits<{\n /** `shown`: the asset the detail showed when it closed. Null when closed from its loader or when it showed none. */\n (e: 'close', shown: AssetDetailItemDto | null): void\n}>()\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst damConfigName = useDamConfigName(props.configName)\n\nconst { t } = useI18n()\n\nconst assetDetailStore = useAssetDetailStore()\nconst { asset, dialog, loading } = storeToRefs(assetDetailStore)\n\nconst { simpleAssetSidebarEnabled } = useCommonAdminCoreDamOptions(damConfigName)\n\nconst view = computed(() => assetDetailViewOfAsset(asset.value, simpleAssetSidebarEnabled))\n\n// The asset shown when the close button is pressed.\n// Captured before the store is emptied, because the host cannot read it from the store.\nlet shownAtClose: AssetDetailItemDto | null = null\nconst closeDialog = () => {\n shownAtClose = loading.value ? null : asset.value\n assetDetailStore.close()\n shownAtClose = null\n}\n// The store also closes the detail itself after a failed read. The host is told of either close, once.\n// Only a change that removes this detail counts as its close.\n// Until the host re-renders, this dialog still sees the next opening of its host or of another host.\nconst stopTellingHost = watch(\n dialog,\n (_now, before) => {\n if (before === props.queueKey) emit('close', shownAtClose)\n },\n { flush: 'sync' }\n)\n// The store is page-wide. A host unmounted with its detail open would leave its key in the store.\n// The next host with that key then showed the detail at once, unasked.\n// So the detail is closed with its host and its pending read is dropped. The host is not told because it is unmounting.\nonBeforeUnmount(() => {\n stopTellingHost()\n if (dialog.value === props.queueKey) assetDetailStore.close()\n})\n\nconst toolbarTitle = computed(() => {\n if (!asset.value) return ''\n return asset.value.texts.displayTitle\n})\n</script>\n\n<template>\n <AssetDetailDialogFrame\n :loading=\"loading\"\n :view=\"view\"\n :ext-system=\"extSystem\"\n :config-name=\"damConfigName\"\n @close=\"closeDialog\"\n >\n <template #title>\n <div>{{ t('common.damImage.asset.detail.sourceSystem') }}: {{ toolbarTitle }}</div>\n </template>\n <template #toolbar-actions>\n <VBtn\n :aria-label=\"t('common.button.close')\"\n icon\n variant=\"text\"\n :width=\"36\"\n :height=\"36\"\n class=\"mr-1\"\n @click.stop=\"closeDialog\"\n >\n <VIcon icon=\"mdi-close\" />\n <VTooltip\n activator=\"parent\"\n location=\"bottom\"\n >\n {{ t('common.button.close') }}\n </VTooltip>\n </VBtn>\n </template>\n <template #sidebar=\"{ view: shown }\">\n <AssetDetailDialogSidebar\n v-if=\"shown.id\"\n :key=\"shown.id\"\n :queue-key=\"queueKey\"\n :ext-system=\"extSystem\"\n :config-name=\"damConfigName\"\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 />\n </template>\n </AssetDetailDialogFrame>\n</template>\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"AssetDetailDialog.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createBlock","AssetDetailDialogFrame","_unref","_withCtx","_createElementVNode","_toDisplayString","_createVNode","_component_VBtn","_withModifiers","_component_VIcon","_component_VTooltip","_createTextVNode","AssetDetailDialogSidebar","_createCommentVNode","AssetDetailDialogFrame_default","AssetDetailDialogSidebar_default","AssetDetailDialog_vue_vue_type_script_setup_true_lang_default","__emit","props","__props","emit","damConfigName","useDamConfigName","useI18n","assetDetailStore","useAssetDetailStore","storeToRefs","useCommonAdminCoreDamOptions","view","computed","assetDetailViewOfAsset","asset","simpleAssetSidebarEnabled","shownAtClose","closeDialog","loading","stopTellingHost","watch","dialog","before","toolbarTitle","openBlock","createBlock","unref","withCtx","createElementVNode","toDisplayString","t","createVNode","VBtn","withModifiers","VIcon","VTooltip","createTextVNode","shown","DamAssetType","createCommentVNode"],"sources":["../../../../../src/domains/dam/assetDetail/components/AssetDetailDialog.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, onBeforeUnmount, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useI18n } from 'vue-i18n'\nimport { useAssetDetailStore } from '@/domains/dam/assetDetail/store/assetDetailStore'\nimport { type AssetDetailItemDto, DamAssetType } from '@/domains/dam/types/Asset'\nimport AssetDetailDialogFrame from '@/domains/dam/assetDetail/components/AssetDetailDialogFrame.vue'\nimport AssetDetailDialogSidebar from '@/domains/dam/assetDetail/components/AssetDetailDialogSidebar.vue'\nimport { assetDetailViewOfAsset } from '@/domains/dam/assetDetail/composables/assetDetailView'\nimport type { UploadQueueKey } from '@/domains/dam/types/UploadQueue'\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: UploadQueueKey\n extSystem: IntegerId\n configName?: string\n }>(),\n {\n configName: undefined,\n }\n)\n\nconst emit = defineEmits<{\n /** `shown`: the asset the detail showed when it closed; none when it was closed from its loader, or had none. */\n (e: 'close', shown: AssetDetailItemDto | null): void\n}>()\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst damConfigName = useDamConfigName(props.configName)\n\nconst { t } = useI18n()\n\nconst assetDetailStore = useAssetDetailStore()\nconst { asset, dialog, loading } = storeToRefs(assetDetailStore)\n\nconst { simpleAssetSidebarEnabled } = useCommonAdminCoreDamOptions(damConfigName)\n\nconst view = computed(() => assetDetailViewOfAsset(asset.value, simpleAssetSidebarEnabled))\n\n// What the detail shows while its button closes it. Noted before the store is emptied: its host cannot ask the store.\nlet shownAtClose: AssetDetailItemDto | null = null\nconst closeDialog = () => {\n shownAtClose = loading.value ? null : asset.value\n assetDetailStore.close()\n shownAtClose = null\n}\n// The store closes the detail by itself as well, after a read that failed: the host is told of either close, once.\n// Only a change that takes this detail away is its close. Until its host has drawn again this dialog still sees what\n// follows, the next opening of its host or of another.\nconst stopTellingHost = watch(\n dialog,\n (_now, before) => {\n if (before === props.queueKey) emit('close', shownAtClose)\n },\n { flush: 'sync' }\n)\n// A host that goes away with its detail open would leave its key in the store, which is the page's: the next host with\n// that key drew the detail at once, over a page that had not asked for it. The detail is closed with its host, and its\n// read on its way given up. That host is not told: it is going away.\nonBeforeUnmount(() => {\n stopTellingHost()\n if (dialog.value === props.queueKey) assetDetailStore.close()\n})\n\nconst toolbarTitle = computed(() => {\n if (!asset.value) return ''\n return asset.value.texts.displayTitle\n})\n</script>\n\n<template>\n <AssetDetailDialogFrame\n :loading=\"loading\"\n :view=\"view\"\n :ext-system=\"extSystem\"\n :config-name=\"damConfigName\"\n @close=\"closeDialog\"\n >\n <template #title>\n <div>{{ t('common.damImage.asset.detail.sourceSystem') }}: {{ toolbarTitle }}</div>\n </template>\n <template #toolbar-actions>\n <VBtn\n :aria-label=\"t('common.button.close')\"\n icon\n variant=\"text\"\n :width=\"36\"\n :height=\"36\"\n class=\"mr-1\"\n @click.stop=\"closeDialog\"\n >\n <VIcon icon=\"mdi-close\" />\n <VTooltip\n activator=\"parent\"\n location=\"bottom\"\n >\n {{ t('common.button.close') }}\n </VTooltip>\n </VBtn>\n </template>\n <template #sidebar=\"{ view: shown }\">\n <AssetDetailDialogSidebar\n v-if=\"shown.id\"\n :key=\"shown.id\"\n :queue-key=\"queueKey\"\n :ext-system=\"extSystem\"\n :config-name=\"damConfigName\"\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 />\n </template>\n </AssetDetailDialogFrame>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;EAcA,IAAMmB,IAAQC,GAWRC,IAAOH,GAKPI,IAAgBC,EAAiBJ,EAAM,UAAU,GAEjD,EAAE,SAAMK,EAAQ,GAEhBC,IAAmBC,EAAoB,GACvC,EAAE,UAAO,WAAQ,eAAYC,EAAYF,CAAgB,GAEzD,EAAE,iCAA8BG,EAA6BN,CAAa,GAE1EO,IAAOC,QAAeC,EAAuBC,EAAM,OAAOC,CAAyB,CAAC,GAGtFC,IAA0C,MACxCC,UAAoB;GAGxB,AAFA,IAAeC,EAAQ,QAAQ,OAAOJ,EAAM,OAC5CP,EAAiB,MAAM,GACvB,IAAe;EACjB,GAIMY,IAAkBC,EACtBC,IACC,GAAM,MAAW;GAChB,AAAIC,MAAWrB,EAAM,YAAUE,EAAK,SAASa,CAAY;EAC3D,GACA,EAAE,OAAO,OAAO,CAClB;EAIA,QAAsB;GAEpB,AADAG,EAAgB,GACZE,EAAO,UAAUpB,EAAM,YAAUM,EAAiB,MAAM;EAC9D,CAAC;EAED,IAAMgB,IAAeX,QACdE,EAAM,QACJA,EAAM,MAAM,MAAM,eADA,EAE1B;E,kBAIChC,EAAA,GAAAC,EA+CyBC,GAAA;GA9CtB,SAASC,EAAAiC,CAAA;GACT,MAAMP,EAAA;GACN,cAAYT,EAAA;GACZ,eAAajB,EAAAmB,CAAA;GACb,SAAOa;;GAEG,OAAK/B,QACqE,CAAnFC,EAAmF,OAAA,MAAAC,EAA3EH,EAAA6C,CAAA,CAAC,CAAA,2CAAA,CAAA,IAAgD,OAAE1C,EAAGmC,EAAA,KAAY,GAAA,CAAA,C;GAEjE,mBAAerC,QAiBjB,CAhBPG,EAgBOC,GAAA;IAfJ,cAAYL,EAAA6C,CAAA,CAAC,CAAA,qBAAA;IACd,MAAA;IACA,SAAQ;IACP,OAAO;IACP,QAAQ;IACT,OAAM;IACL,SAAKvC,EAAO0B,GAAW,CAAA,MAAA,CAAA;;IAExB,SAAA/B,QAA0B,CAA1BG,EAA0BG,GAAA,EAAnB,MAAK,YAAW,CAAA,GACvBH,EAKWI,GAAA;KAJT,WAAU;KACV,UAAS;;KAET,SAAAP,QAA8B,CAA3BQ,EAAAN,EAAAH,EAAA6C,CAAA,CAAC,CAAA,qBAAA,CAAA,GAAA,CAAA,C;;;;;GAIC,SAAO5C,GAgBd,EAAA,MAhBwBmD,QAAK,CAEvBA,EAAM,MADdvD,EAAA,GAAAC,EAeEY,GAAA;IAbC,KAAK0C,EAAM;IACX,aAAWnC,EAAA;IACX,cAAYA,EAAA;IACZ,eAAajB,EAAAmB,CAAA;IACb,YAAUiC,EAAM;IAChB,YAAUA,EAAM,cAAcpD,EAAAqD,CAAA,CAAY,CAAC;IAC3C,YAAUD,EAAM,cAAcpD,EAAAqD,CAAA,CAAY,CAAC;IAC3C,YAAUD,EAAM,cAAcpD,EAAAqD,CAAA,CAAY,CAAC;IAC3C,eAAaD,EAAM,cAAcpD,EAAAqD,CAAA,CAAY,CAAC;IAC9C,gBAAcD,EAAM;IACpB,cAAYA,EAAM;IAClB,0BAAwBA,EAAM,WAAWA,EAAM,SAAS,eAAe,SAAS,KAAA;IAChF,+BAA6BA,EAAM,WAAWA,EAAM,SAAS,eAAe,aAAa,KAAA"}
1
+ {"version":3,"file":"AssetDetailDialog.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createBlock","AssetDetailDialogFrame","_unref","_withCtx","_createElementVNode","_toDisplayString","_createVNode","_component_VBtn","_withModifiers","_component_VIcon","_component_VTooltip","_createTextVNode","AssetDetailDialogSidebar","_createCommentVNode","AssetDetailDialogFrame_default","AssetDetailDialogSidebar_default","AssetDetailDialog_vue_vue_type_script_setup_true_lang_default","__emit","props","__props","emit","damConfigName","useDamConfigName","useI18n","assetDetailStore","useAssetDetailStore","storeToRefs","useCommonAdminCoreDamOptions","view","computed","assetDetailViewOfAsset","asset","simpleAssetSidebarEnabled","shownAtClose","closeDialog","loading","stopTellingHost","watch","dialog","before","toolbarTitle","openBlock","createBlock","unref","withCtx","createElementVNode","toDisplayString","t","createVNode","VBtn","withModifiers","VIcon","VTooltip","createTextVNode","shown","DamAssetType","createCommentVNode"],"sources":["../../../../../src/domains/dam/assetDetail/components/AssetDetailDialog.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, onBeforeUnmount, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useI18n } from 'vue-i18n'\nimport { useAssetDetailStore } from '@/domains/dam/assetDetail/store/assetDetailStore'\nimport { type AssetDetailItemDto, DamAssetType } from '@/domains/dam/types/Asset'\nimport AssetDetailDialogFrame from '@/domains/dam/assetDetail/components/AssetDetailDialogFrame.vue'\nimport AssetDetailDialogSidebar from '@/domains/dam/assetDetail/components/AssetDetailDialogSidebar.vue'\nimport { assetDetailViewOfAsset } from '@/domains/dam/assetDetail/composables/assetDetailView'\nimport type { UploadQueueKey } from '@/domains/dam/types/UploadQueue'\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: UploadQueueKey\n extSystem: IntegerId\n configName?: string\n }>(),\n {\n configName: undefined,\n }\n)\n\nconst emit = defineEmits<{\n /** `shown`: the asset the detail showed when it closed. Null when closed from its loader or when it showed none. */\n (e: 'close', shown: AssetDetailItemDto | null): void\n}>()\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst damConfigName = useDamConfigName(props.configName)\n\nconst { t } = useI18n()\n\nconst assetDetailStore = useAssetDetailStore()\nconst { asset, dialog, loading } = storeToRefs(assetDetailStore)\n\nconst { simpleAssetSidebarEnabled } = useCommonAdminCoreDamOptions(damConfigName)\n\nconst view = computed(() => assetDetailViewOfAsset(asset.value, simpleAssetSidebarEnabled))\n\n// The asset shown when the close button is pressed.\n// Captured before the store is emptied, because the host cannot read it from the store.\nlet shownAtClose: AssetDetailItemDto | null = null\nconst closeDialog = () => {\n shownAtClose = loading.value ? null : asset.value\n assetDetailStore.close()\n shownAtClose = null\n}\n// The store also closes the detail itself after a failed read. The host is told of either close, once.\n// Only a change that removes this detail counts as its close.\n// Until the host re-renders, this dialog still sees the next opening of its host or of another host.\nconst stopTellingHost = watch(\n dialog,\n (_now, before) => {\n if (before === props.queueKey) emit('close', shownAtClose)\n },\n { flush: 'sync' }\n)\n// The store is page-wide. A host unmounted with its detail open would leave its key in the store.\n// The next host with that key then showed the detail at once, unasked.\n// So the detail is closed with its host and its pending read is dropped. The host is not told because it is unmounting.\nonBeforeUnmount(() => {\n stopTellingHost()\n if (dialog.value === props.queueKey) assetDetailStore.close()\n})\n\nconst toolbarTitle = computed(() => {\n if (!asset.value) return ''\n return asset.value.texts.displayTitle\n})\n</script>\n\n<template>\n <AssetDetailDialogFrame\n :loading=\"loading\"\n :view=\"view\"\n :ext-system=\"extSystem\"\n :config-name=\"damConfigName\"\n @close=\"closeDialog\"\n >\n <template #title>\n <div>{{ t('common.damImage.asset.detail.sourceSystem') }}: {{ toolbarTitle }}</div>\n </template>\n <template #toolbar-actions>\n <VBtn\n :aria-label=\"t('common.button.close')\"\n icon\n variant=\"text\"\n :width=\"36\"\n :height=\"36\"\n class=\"mr-1\"\n @click.stop=\"closeDialog\"\n >\n <VIcon icon=\"mdi-close\" />\n <VTooltip\n activator=\"parent\"\n location=\"bottom\"\n >\n {{ t('common.button.close') }}\n </VTooltip>\n </VBtn>\n </template>\n <template #sidebar=\"{ view: shown }\">\n <AssetDetailDialogSidebar\n v-if=\"shown.id\"\n :key=\"shown.id\"\n :queue-key=\"queueKey\"\n :ext-system=\"extSystem\"\n :config-name=\"damConfigName\"\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 />\n </template>\n </AssetDetailDialogFrame>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;EAcA,IAAMmB,IAAQC,GAWRC,IAAOH,GAKPI,IAAgBC,EAAiBJ,EAAM,UAAU,GAEjD,EAAE,SAAMK,EAAQ,GAEhBC,IAAmBC,EAAoB,GACvC,EAAE,UAAO,WAAQ,eAAYC,EAAYF,CAAgB,GAEzD,EAAE,iCAA8BG,EAA6BN,CAAa,GAE1EO,IAAOC,QAAeC,EAAuBC,EAAM,OAAOC,CAAyB,CAAC,GAItFC,IAA0C,MACxCC,UAAoB;GAGxB,AAFA,IAAeC,EAAQ,QAAQ,OAAOJ,EAAM,OAC5CP,EAAiB,MAAM,GACvB,IAAe;EACjB,GAIMY,IAAkBC,EACtBC,IACC,GAAM,MAAW;GAChB,AAAIC,MAAWrB,EAAM,YAAUE,EAAK,SAASa,CAAY;EAC3D,GACA,EAAE,OAAO,OAAO,CAClB;EAIA,QAAsB;GAEpB,AADAG,EAAgB,GACZE,EAAO,UAAUpB,EAAM,YAAUM,EAAiB,MAAM;EAC9D,CAAC;EAED,IAAMgB,IAAeX,QACdE,EAAM,QACJA,EAAM,MAAM,MAAM,eADA,EAE1B;E,kBAIChC,EAAA,GAAAC,EA+CyBC,GAAA;GA9CtB,SAASC,EAAAiC,CAAA;GACT,MAAMP,EAAA;GACN,cAAYT,EAAA;GACZ,eAAajB,EAAAmB,CAAA;GACb,SAAOa;;GAEG,OAAK/B,QACqE,CAAnFC,EAAmF,OAAA,MAAAC,EAA3EH,EAAA6C,CAAA,CAAC,CAAA,2CAAA,CAAA,IAAgD,OAAE1C,EAAGmC,EAAA,KAAY,GAAA,CAAA,C;GAEjE,mBAAerC,QAiBjB,CAhBPG,EAgBOC,GAAA;IAfJ,cAAYL,EAAA6C,CAAA,CAAC,CAAA,qBAAA;IACd,MAAA;IACA,SAAQ;IACP,OAAO;IACP,QAAQ;IACT,OAAM;IACL,SAAKvC,EAAO0B,GAAW,CAAA,MAAA,CAAA;;IAExB,SAAA/B,QAA0B,CAA1BG,EAA0BG,GAAA,EAAnB,MAAK,YAAW,CAAA,GACvBH,EAKWI,GAAA;KAJT,WAAU;KACV,UAAS;;KAET,SAAAP,QAA8B,CAA3BQ,EAAAN,EAAAH,EAAA6C,CAAA,CAAC,CAAA,qBAAA,CAAA,GAAA,CAAA,C;;;;;GAIC,SAAO5C,GAgBd,EAAA,MAhBwBmD,QAAK,CAEvBA,EAAM,MADdvD,EAAA,GAAAC,EAeEY,GAAA;IAbC,KAAK0C,EAAM;IACX,aAAWnC,EAAA;IACX,cAAYA,EAAA;IACZ,eAAajB,EAAAmB,CAAA;IACb,YAAUiC,EAAM;IAChB,YAAUA,EAAM,cAAcpD,EAAAqD,CAAA,CAAY,CAAC;IAC3C,YAAUD,EAAM,cAAcpD,EAAAqD,CAAA,CAAY,CAAC;IAC3C,YAAUD,EAAM,cAAcpD,EAAAqD,CAAA,CAAY,CAAC;IAC3C,eAAaD,EAAM,cAAcpD,EAAAqD,CAAA,CAAY,CAAC;IAC9C,gBAAcD,EAAM;IACpB,cAAYA,EAAM;IAClB,0BAAwBA,EAAM,WAAWA,EAAM,SAAS,eAAe,SAAS,KAAA;IAChF,+BAA6BA,EAAM,WAAWA,EAAM,SAAS,eAAe,aAAa,KAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"AssetDetailDialogFrame.js","names":["_sfc_main","AssetDetailDialogFrame_vue_vue_type_script_setup_true_lang_default","AssetDetailDialogFrame_default"],"sources":["../../../../../src/domains/dam/assetDetail/components/AssetDetailDialogFrame.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useI18n } from 'vue-i18n'\nimport { useTheme } from '@/domains/system/composables/themeSettings'\nimport { AssetDetailTabImageWithRoi, useAssetDetailStore } from '@/domains/dam/assetDetail/store/assetDetailStore'\nimport { type AssetDetailView, pictureIsPlaceholder } from '@/domains/dam/assetDetail/composables/assetDetailView'\nimport AssetDetailDialogLoader from '@/domains/dam/assetDetail/components/AssetDetailDialogLoader.vue'\nimport AssetImage from '@/domains/dam/assetDetail/components/AssetImage.vue'\nimport DamAssetImageRoiSelectLazy from '@/domains/dam/cropper/components/DamAssetImageRoiSelectLazy.vue'\nimport { useAuthHelpers } from '@/domains/auth/composables/defineAuth'\nimport { useCommonAdminCoreDamOptions } from '@/domains/dam/composables/commonAdminCoreDamOptions'\nimport type { IntegerId } from '@/shared/types/common'\nimport { isNull } from '@/shared/utils/common'\nimport { useDamConfigName } from '@/domains/dam/composables/damConfigName'\n\n// The frame of the detail of an asset and of the dialog of a single upload: the dialog, its toolbar, the picture or\n// the editor of the region of interest on the left, the sidebar on the right. What it draws comes from the view.\n\nconst props = withDefaults(\n defineProps<{\n loading: boolean\n view: AssetDetailView | null\n extSystem: IntegerId\n configName?: string\n }>(),\n {\n configName: undefined,\n }\n)\n\nconst emit = defineEmits<{\n (e: 'close'): void\n}>()\n\ndefineSlots<{\n title(): unknown\n 'toolbar-actions'(): unknown\n /** Over the picture: given, picture and overlay share a positioned box. */\n 'image-overlay'?(): unknown\n sidebar(props: { view: AssetDetailView }): unknown\n}>()\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst damConfigName = useDamConfigName(props.configName)\n\nconst { t } = useI18n()\nconst { canSafeHelper } = useAuthHelpers()\nconst { toolbarColor } = useTheme()\n\nconst { activeTab } = storeToRefs(useAssetDetailStore())\n\nconst { roiUpdateAcl } = useCommonAdminCoreDamOptions(damConfigName)\n// The endpoint refuses the region's save without it: the region tab then only shows the image.\nconst roiEditable = computed(() => isNull(roiUpdateAcl) || canSafeHelper(roiUpdateAcl, undefined, 'roi'))\n\nconst sidebar = ref(true)\n\nconst toggleSidebar = () => {\n sidebar.value = !sidebar.value\n}\n\nconst picture = computed(() => {\n if (!props.view) return {}\n const { image } = props.view\n return {\n assetType: props.view.assetType,\n assetStatus: props.view.assetStatus,\n src: image.src,\n backgroundColor: image.backgroundColor,\n width: image.width,\n height: image.height,\n showUploading: image.uploading,\n showProcessing: image.processing,\n showWaiting: image.waiting,\n showDone: image.done,\n uploadingProgress: image.progress,\n remainingTime: image.remainingTime,\n aspectRatio: image.aspectRatio,\n useComponent: true,\n }\n})\n</script>\n\n<template>\n <VDialog\n :model-value=\"true\"\n fullscreen\n eager\n >\n <AssetDetailDialogLoader\n v-if=\"loading\"\n @close-dialog=\"emit('close')\"\n />\n <VCard\n v-else-if=\"view\"\n class=\"dam-image-detail\"\n :class=\"{ 'dam-image-detail--sidebar-active': sidebar }\"\n >\n <div class=\"dam-image-detail__wrapper d-flex flex-column\">\n <VToolbar\n :color=\"toolbarColor\"\n density=\"compact\"\n :height=\"64\"\n class=\"border-b pr-1\"\n >\n <div class=\"text-label-large d-flex px-2\">\n <slot name=\"title\" />\n </div>\n <VSpacer />\n <div class=\"pr-2\">\n <VBtn\n :aria-label=\"t('common.damImage.asset.detail.toggleInfo')\"\n :active=\"sidebar\"\n :variant=\"sidebar ? 'flat' : 'text'\"\n :color=\"sidebar ? 'secondary' : ''\"\n icon\n class=\"mr-1\"\n :width=\"36\"\n :height=\"36\"\n @click.stop=\"toggleSidebar\"\n >\n <VIcon\n icon=\"mdi-information-outline\"\n class=\"d-none d-md-flex\"\n />\n <VIcon\n icon=\"mdi-image-outline\"\n class=\"d-flex d-md-none\"\n />\n <VTooltip\n activator=\"parent\"\n location=\"bottom\"\n >\n {{ t('common.damImage.asset.detail.toggleInfo') }}\n </VTooltip>\n </VBtn>\n <slot name=\"toolbar-actions\" />\n </div>\n </VToolbar>\n <div class=\"d-flex w-100 h-100 position-relative dam-image-detail__content\">\n <div class=\"d-flex w-100 align-center dam-image-detail__left\">\n <div\n v-if=\"(activeTab === AssetDetailTabImageWithRoi.ROI && view.roiEditorTab) || view.simpleMode\"\n class=\"w-100 h-100 pa-2 d-flex align-center justify-center\"\n >\n <DamAssetImageRoiSelectLazy\n :ext-system=\"extSystem\"\n :config-name=\"damConfigName\"\n :readonly=\"!roiEditable\"\n />\n </div>\n <div\n v-else\n class=\"w-100 h-100 pa-2 d-flex align-center justify-center\"\n >\n <!-- Around the grey placeholder the box is as large as this area, as the placeholder is without an\n overlay: it fills it, and the overlay covers it. Around a picture it keeps the picture's size. -->\n <div\n v-if=\"$slots['image-overlay']\"\n class=\"position-relative\"\n :class=\"{ 'w-100 h-100 d-flex align-center justify-center': pictureIsPlaceholder(view) }\"\n >\n <AssetImage v-bind=\"picture\" />\n <slot name=\"image-overlay\" />\n </div>\n <AssetImage\n v-else\n v-bind=\"picture\"\n />\n </div>\n </div>\n <div class=\"h-100 d-flex dam-image-detail__sidebar border-s\">\n <slot\n name=\"sidebar\"\n :view=\"view\"\n />\n </div>\n </div>\n </div>\n </VCard>\n </VDialog>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"AssetDetailDialogFrame.js","names":["_sfc_main","AssetDetailDialogFrame_vue_vue_type_script_setup_true_lang_default","AssetDetailDialogFrame_default"],"sources":["../../../../../src/domains/dam/assetDetail/components/AssetDetailDialogFrame.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useI18n } from 'vue-i18n'\nimport { useTheme } from '@/domains/system/composables/themeSettings'\nimport { AssetDetailTabImageWithRoi, useAssetDetailStore } from '@/domains/dam/assetDetail/store/assetDetailStore'\nimport { type AssetDetailView, pictureIsPlaceholder } from '@/domains/dam/assetDetail/composables/assetDetailView'\nimport AssetDetailDialogLoader from '@/domains/dam/assetDetail/components/AssetDetailDialogLoader.vue'\nimport AssetImage from '@/domains/dam/assetDetail/components/AssetImage.vue'\nimport DamAssetImageRoiSelectLazy from '@/domains/dam/cropper/components/DamAssetImageRoiSelectLazy.vue'\nimport { useAuthHelpers } from '@/domains/auth/composables/defineAuth'\nimport { useCommonAdminCoreDamOptions } from '@/domains/dam/composables/commonAdminCoreDamOptions'\nimport type { IntegerId } from '@/shared/types/common'\nimport { isNull } from '@/shared/utils/common'\nimport { useDamConfigName } from '@/domains/dam/composables/damConfigName'\n\n// Shared frame of the asset detail and the single-upload dialog: dialog,\n// toolbar, image or ROI editor on the left, sidebar on the right.\n// Its content comes from the view.\n\nconst props = withDefaults(\n defineProps<{\n loading: boolean\n view: AssetDetailView | null\n extSystem: IntegerId\n configName?: string\n }>(),\n {\n configName: undefined,\n }\n)\n\nconst emit = defineEmits<{\n (e: 'close'): void\n}>()\n\ndefineSlots<{\n title(): unknown\n 'toolbar-actions'(): unknown\n /** Drawn over the image. When given, image and overlay share a positioned box. */\n 'image-overlay'?(): unknown\n sidebar(props: { view: AssetDetailView }): unknown\n}>()\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst damConfigName = useDamConfigName(props.configName)\n\nconst { t } = useI18n()\nconst { canSafeHelper } = useAuthHelpers()\nconst { toolbarColor } = useTheme()\n\nconst { activeTab } = storeToRefs(useAssetDetailStore())\n\nconst { roiUpdateAcl } = useCommonAdminCoreDamOptions(damConfigName)\n// The endpoint rejects ROI saves without this permission. The ROI tab then only shows the image.\nconst roiEditable = computed(() => isNull(roiUpdateAcl) || canSafeHelper(roiUpdateAcl, undefined, 'roi'))\n\nconst sidebar = ref(true)\n\nconst toggleSidebar = () => {\n sidebar.value = !sidebar.value\n}\n\nconst picture = computed(() => {\n if (!props.view) return {}\n const { image } = props.view\n return {\n assetType: props.view.assetType,\n assetStatus: props.view.assetStatus,\n src: image.src,\n backgroundColor: image.backgroundColor,\n width: image.width,\n height: image.height,\n showUploading: image.uploading,\n showProcessing: image.processing,\n showWaiting: image.waiting,\n showDone: image.done,\n uploadingProgress: image.progress,\n remainingTime: image.remainingTime,\n aspectRatio: image.aspectRatio,\n useComponent: true,\n }\n})\n</script>\n\n<template>\n <VDialog\n :model-value=\"true\"\n fullscreen\n eager\n >\n <AssetDetailDialogLoader\n v-if=\"loading\"\n @close-dialog=\"emit('close')\"\n />\n <VCard\n v-else-if=\"view\"\n class=\"dam-image-detail\"\n :class=\"{ 'dam-image-detail--sidebar-active': sidebar }\"\n >\n <div class=\"dam-image-detail__wrapper d-flex flex-column\">\n <VToolbar\n :color=\"toolbarColor\"\n density=\"compact\"\n :height=\"64\"\n class=\"border-b pr-1\"\n >\n <div class=\"text-label-large d-flex px-2\">\n <slot name=\"title\" />\n </div>\n <VSpacer />\n <div class=\"pr-2\">\n <VBtn\n :aria-label=\"t('common.damImage.asset.detail.toggleInfo')\"\n :active=\"sidebar\"\n :variant=\"sidebar ? 'flat' : 'text'\"\n :color=\"sidebar ? 'secondary' : ''\"\n icon\n class=\"mr-1\"\n :width=\"36\"\n :height=\"36\"\n @click.stop=\"toggleSidebar\"\n >\n <VIcon\n icon=\"mdi-information-outline\"\n class=\"d-none d-md-flex\"\n />\n <VIcon\n icon=\"mdi-image-outline\"\n class=\"d-flex d-md-none\"\n />\n <VTooltip\n activator=\"parent\"\n location=\"bottom\"\n >\n {{ t('common.damImage.asset.detail.toggleInfo') }}\n </VTooltip>\n </VBtn>\n <slot name=\"toolbar-actions\" />\n </div>\n </VToolbar>\n <div class=\"d-flex w-100 h-100 position-relative dam-image-detail__content\">\n <div class=\"d-flex w-100 align-center dam-image-detail__left\">\n <div\n v-if=\"(activeTab === AssetDetailTabImageWithRoi.ROI && view.roiEditorTab) || view.simpleMode\"\n class=\"w-100 h-100 pa-2 d-flex align-center justify-center\"\n >\n <DamAssetImageRoiSelectLazy\n :ext-system=\"extSystem\"\n :config-name=\"damConfigName\"\n :readonly=\"!roiEditable\"\n />\n </div>\n <div\n v-else\n class=\"w-100 h-100 pa-2 d-flex align-center justify-center\"\n >\n <!--\n Around the grey placeholder the box fills this area, as the\n placeholder does without an overlay. The overlay covers it.\n Around an image the box keeps the image's size.\n -->\n <div\n v-if=\"$slots['image-overlay']\"\n class=\"position-relative\"\n :class=\"{ 'w-100 h-100 d-flex align-center justify-center': pictureIsPlaceholder(view) }\"\n >\n <AssetImage v-bind=\"picture\" />\n <slot name=\"image-overlay\" />\n </div>\n <AssetImage\n v-else\n v-bind=\"picture\"\n />\n </div>\n </div>\n <div class=\"h-100 d-flex dam-image-detail__sidebar border-s\">\n <slot\n name=\"sidebar\"\n :view=\"view\"\n />\n </div>\n </div>\n </div>\n </VCard>\n </VDialog>\n</template>\n"],"mappings":""}
@@ -9,7 +9,7 @@ type __VLS_Props = {
9
9
  type __VLS_Slots = {
10
10
  title(): unknown;
11
11
  'toolbar-actions'(): unknown;
12
- /** Over the picture: given, picture and overlay share a positioned box. */
12
+ /** Drawn over the image. When given, image and overlay share a positioned box. */
13
13
  'image-overlay'?(): unknown;
14
14
  sidebar(props: {
15
15
  view: AssetDetailView;
@@ -1 +1 @@
1
- {"version":3,"file":"AssetDetailDialogFrame.vue_vue_type_script_setup_true_lang.js","names":["$slots","_openBlock","_createBlock","_component_VDialog","_withCtx","AssetDetailDialogLoader","_component_VCard","_normalizeClass","_createElementVNode","_createVNode","_component_VToolbar","_unref","_renderSlot","_component_VSpacer","_component_VBtn","_withModifiers","_component_VIcon","_component_VTooltip","_createTextVNode","_toDisplayString","_createElementBlock","DamAssetImageRoiSelectLazy","AssetImage","_normalizeProps","_guardReactiveProps","_mergeProps","_createCommentVNode","AssetDetailDialogLoader_default","AssetImage_default","DamAssetImageRoiSelectLazy_default","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","AssetDetailDialogFrame_vue_vue_type_script_setup_true_lang_default","__emit","props","__props","emit","damConfigName","useDamConfigName","useI18n","useAuthHelpers","useTheme","storeToRefs","useAssetDetailStore","useCommonAdminCoreDamOptions","roiEditable","computed","isNull","roiUpdateAcl","canSafeHelper","sidebar","ref","toggleSidebar","picture","image","openBlock","createBlock","VDialog","withCtx","_cache","VCard","normalizeClass","createElementVNode","createVNode","VToolbar","unref","toolbarColor","renderSlot","_ctx","VSpacer","VBtn","t","withModifiers","VIcon","VTooltip","createTextVNode","toDisplayString","activeTab","AssetDetailTabImageWithRoi","createElementBlock","pictureIsPlaceholder","normalizeProps","guardReactiveProps","mergeProps","createCommentVNode"],"sources":["../../../../../src/domains/dam/assetDetail/components/AssetDetailDialogFrame.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useI18n } from 'vue-i18n'\nimport { useTheme } from '@/domains/system/composables/themeSettings'\nimport { AssetDetailTabImageWithRoi, useAssetDetailStore } from '@/domains/dam/assetDetail/store/assetDetailStore'\nimport { type AssetDetailView, pictureIsPlaceholder } from '@/domains/dam/assetDetail/composables/assetDetailView'\nimport AssetDetailDialogLoader from '@/domains/dam/assetDetail/components/AssetDetailDialogLoader.vue'\nimport AssetImage from '@/domains/dam/assetDetail/components/AssetImage.vue'\nimport DamAssetImageRoiSelectLazy from '@/domains/dam/cropper/components/DamAssetImageRoiSelectLazy.vue'\nimport { useAuthHelpers } from '@/domains/auth/composables/defineAuth'\nimport { useCommonAdminCoreDamOptions } from '@/domains/dam/composables/commonAdminCoreDamOptions'\nimport type { IntegerId } from '@/shared/types/common'\nimport { isNull } from '@/shared/utils/common'\nimport { useDamConfigName } from '@/domains/dam/composables/damConfigName'\n\n// The frame of the detail of an asset and of the dialog of a single upload: the dialog, its toolbar, the picture or\n// the editor of the region of interest on the left, the sidebar on the right. What it draws comes from the view.\n\nconst props = withDefaults(\n defineProps<{\n loading: boolean\n view: AssetDetailView | null\n extSystem: IntegerId\n configName?: string\n }>(),\n {\n configName: undefined,\n }\n)\n\nconst emit = defineEmits<{\n (e: 'close'): void\n}>()\n\ndefineSlots<{\n title(): unknown\n 'toolbar-actions'(): unknown\n /** Over the picture: given, picture and overlay share a positioned box. */\n 'image-overlay'?(): unknown\n sidebar(props: { view: AssetDetailView }): unknown\n}>()\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst damConfigName = useDamConfigName(props.configName)\n\nconst { t } = useI18n()\nconst { canSafeHelper } = useAuthHelpers()\nconst { toolbarColor } = useTheme()\n\nconst { activeTab } = storeToRefs(useAssetDetailStore())\n\nconst { roiUpdateAcl } = useCommonAdminCoreDamOptions(damConfigName)\n// The endpoint refuses the region's save without it: the region tab then only shows the image.\nconst roiEditable = computed(() => isNull(roiUpdateAcl) || canSafeHelper(roiUpdateAcl, undefined, 'roi'))\n\nconst sidebar = ref(true)\n\nconst toggleSidebar = () => {\n sidebar.value = !sidebar.value\n}\n\nconst picture = computed(() => {\n if (!props.view) return {}\n const { image } = props.view\n return {\n assetType: props.view.assetType,\n assetStatus: props.view.assetStatus,\n src: image.src,\n backgroundColor: image.backgroundColor,\n width: image.width,\n height: image.height,\n showUploading: image.uploading,\n showProcessing: image.processing,\n showWaiting: image.waiting,\n showDone: image.done,\n uploadingProgress: image.progress,\n remainingTime: image.remainingTime,\n aspectRatio: image.aspectRatio,\n useComponent: true,\n }\n})\n</script>\n\n<template>\n <VDialog\n :model-value=\"true\"\n fullscreen\n eager\n >\n <AssetDetailDialogLoader\n v-if=\"loading\"\n @close-dialog=\"emit('close')\"\n />\n <VCard\n v-else-if=\"view\"\n class=\"dam-image-detail\"\n :class=\"{ 'dam-image-detail--sidebar-active': sidebar }\"\n >\n <div class=\"dam-image-detail__wrapper d-flex flex-column\">\n <VToolbar\n :color=\"toolbarColor\"\n density=\"compact\"\n :height=\"64\"\n class=\"border-b pr-1\"\n >\n <div class=\"text-label-large d-flex px-2\">\n <slot name=\"title\" />\n </div>\n <VSpacer />\n <div class=\"pr-2\">\n <VBtn\n :aria-label=\"t('common.damImage.asset.detail.toggleInfo')\"\n :active=\"sidebar\"\n :variant=\"sidebar ? 'flat' : 'text'\"\n :color=\"sidebar ? 'secondary' : ''\"\n icon\n class=\"mr-1\"\n :width=\"36\"\n :height=\"36\"\n @click.stop=\"toggleSidebar\"\n >\n <VIcon\n icon=\"mdi-information-outline\"\n class=\"d-none d-md-flex\"\n />\n <VIcon\n icon=\"mdi-image-outline\"\n class=\"d-flex d-md-none\"\n />\n <VTooltip\n activator=\"parent\"\n location=\"bottom\"\n >\n {{ t('common.damImage.asset.detail.toggleInfo') }}\n </VTooltip>\n </VBtn>\n <slot name=\"toolbar-actions\" />\n </div>\n </VToolbar>\n <div class=\"d-flex w-100 h-100 position-relative dam-image-detail__content\">\n <div class=\"d-flex w-100 align-center dam-image-detail__left\">\n <div\n v-if=\"(activeTab === AssetDetailTabImageWithRoi.ROI && view.roiEditorTab) || view.simpleMode\"\n class=\"w-100 h-100 pa-2 d-flex align-center justify-center\"\n >\n <DamAssetImageRoiSelectLazy\n :ext-system=\"extSystem\"\n :config-name=\"damConfigName\"\n :readonly=\"!roiEditable\"\n />\n </div>\n <div\n v-else\n class=\"w-100 h-100 pa-2 d-flex align-center justify-center\"\n >\n <!-- Around the grey placeholder the box is as large as this area, as the placeholder is without an\n overlay: it fills it, and the overlay covers it. Around a picture it keeps the picture's size. -->\n <div\n v-if=\"$slots['image-overlay']\"\n class=\"position-relative\"\n :class=\"{ 'w-100 h-100 d-flex align-center justify-center': pictureIsPlaceholder(view) }\"\n >\n <AssetImage v-bind=\"picture\" />\n <slot name=\"image-overlay\" />\n </div>\n <AssetImage\n v-else\n v-bind=\"picture\"\n />\n </div>\n </div>\n <div class=\"h-100 d-flex dam-image-detail__sidebar border-s\">\n <slot\n name=\"sidebar\"\n :view=\"view\"\n />\n </div>\n </div>\n </div>\n </VCard>\n </VDialog>\n</template>\n"],"mappings":"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"}
1
+ {"version":3,"file":"AssetDetailDialogFrame.vue_vue_type_script_setup_true_lang.js","names":["$slots","_openBlock","_createBlock","_component_VDialog","_withCtx","AssetDetailDialogLoader","_component_VCard","_normalizeClass","_createElementVNode","_createVNode","_component_VToolbar","_unref","_renderSlot","_component_VSpacer","_component_VBtn","_withModifiers","_component_VIcon","_component_VTooltip","_createTextVNode","_toDisplayString","_createElementBlock","DamAssetImageRoiSelectLazy","AssetImage","_normalizeProps","_guardReactiveProps","_mergeProps","_createCommentVNode","AssetDetailDialogLoader_default","AssetImage_default","DamAssetImageRoiSelectLazy_default","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","AssetDetailDialogFrame_vue_vue_type_script_setup_true_lang_default","__emit","props","__props","emit","damConfigName","useDamConfigName","useI18n","useAuthHelpers","useTheme","storeToRefs","useAssetDetailStore","useCommonAdminCoreDamOptions","roiEditable","computed","isNull","roiUpdateAcl","canSafeHelper","sidebar","ref","toggleSidebar","picture","image","openBlock","createBlock","VDialog","withCtx","_cache","VCard","normalizeClass","createElementVNode","createVNode","VToolbar","unref","toolbarColor","renderSlot","_ctx","VSpacer","VBtn","t","withModifiers","VIcon","VTooltip","createTextVNode","toDisplayString","activeTab","AssetDetailTabImageWithRoi","createElementBlock","pictureIsPlaceholder","normalizeProps","guardReactiveProps","mergeProps","createCommentVNode"],"sources":["../../../../../src/domains/dam/assetDetail/components/AssetDetailDialogFrame.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useI18n } from 'vue-i18n'\nimport { useTheme } from '@/domains/system/composables/themeSettings'\nimport { AssetDetailTabImageWithRoi, useAssetDetailStore } from '@/domains/dam/assetDetail/store/assetDetailStore'\nimport { type AssetDetailView, pictureIsPlaceholder } from '@/domains/dam/assetDetail/composables/assetDetailView'\nimport AssetDetailDialogLoader from '@/domains/dam/assetDetail/components/AssetDetailDialogLoader.vue'\nimport AssetImage from '@/domains/dam/assetDetail/components/AssetImage.vue'\nimport DamAssetImageRoiSelectLazy from '@/domains/dam/cropper/components/DamAssetImageRoiSelectLazy.vue'\nimport { useAuthHelpers } from '@/domains/auth/composables/defineAuth'\nimport { useCommonAdminCoreDamOptions } from '@/domains/dam/composables/commonAdminCoreDamOptions'\nimport type { IntegerId } from '@/shared/types/common'\nimport { isNull } from '@/shared/utils/common'\nimport { useDamConfigName } from '@/domains/dam/composables/damConfigName'\n\n// Shared frame of the asset detail and the single-upload dialog: dialog,\n// toolbar, image or ROI editor on the left, sidebar on the right.\n// Its content comes from the view.\n\nconst props = withDefaults(\n defineProps<{\n loading: boolean\n view: AssetDetailView | null\n extSystem: IntegerId\n configName?: string\n }>(),\n {\n configName: undefined,\n }\n)\n\nconst emit = defineEmits<{\n (e: 'close'): void\n}>()\n\ndefineSlots<{\n title(): unknown\n 'toolbar-actions'(): unknown\n /** Drawn over the image. When given, image and overlay share a positioned box. */\n 'image-overlay'?(): unknown\n sidebar(props: { view: AssetDetailView }): unknown\n}>()\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst damConfigName = useDamConfigName(props.configName)\n\nconst { t } = useI18n()\nconst { canSafeHelper } = useAuthHelpers()\nconst { toolbarColor } = useTheme()\n\nconst { activeTab } = storeToRefs(useAssetDetailStore())\n\nconst { roiUpdateAcl } = useCommonAdminCoreDamOptions(damConfigName)\n// The endpoint rejects ROI saves without this permission. The ROI tab then only shows the image.\nconst roiEditable = computed(() => isNull(roiUpdateAcl) || canSafeHelper(roiUpdateAcl, undefined, 'roi'))\n\nconst sidebar = ref(true)\n\nconst toggleSidebar = () => {\n sidebar.value = !sidebar.value\n}\n\nconst picture = computed(() => {\n if (!props.view) return {}\n const { image } = props.view\n return {\n assetType: props.view.assetType,\n assetStatus: props.view.assetStatus,\n src: image.src,\n backgroundColor: image.backgroundColor,\n width: image.width,\n height: image.height,\n showUploading: image.uploading,\n showProcessing: image.processing,\n showWaiting: image.waiting,\n showDone: image.done,\n uploadingProgress: image.progress,\n remainingTime: image.remainingTime,\n aspectRatio: image.aspectRatio,\n useComponent: true,\n }\n})\n</script>\n\n<template>\n <VDialog\n :model-value=\"true\"\n fullscreen\n eager\n >\n <AssetDetailDialogLoader\n v-if=\"loading\"\n @close-dialog=\"emit('close')\"\n />\n <VCard\n v-else-if=\"view\"\n class=\"dam-image-detail\"\n :class=\"{ 'dam-image-detail--sidebar-active': sidebar }\"\n >\n <div class=\"dam-image-detail__wrapper d-flex flex-column\">\n <VToolbar\n :color=\"toolbarColor\"\n density=\"compact\"\n :height=\"64\"\n class=\"border-b pr-1\"\n >\n <div class=\"text-label-large d-flex px-2\">\n <slot name=\"title\" />\n </div>\n <VSpacer />\n <div class=\"pr-2\">\n <VBtn\n :aria-label=\"t('common.damImage.asset.detail.toggleInfo')\"\n :active=\"sidebar\"\n :variant=\"sidebar ? 'flat' : 'text'\"\n :color=\"sidebar ? 'secondary' : ''\"\n icon\n class=\"mr-1\"\n :width=\"36\"\n :height=\"36\"\n @click.stop=\"toggleSidebar\"\n >\n <VIcon\n icon=\"mdi-information-outline\"\n class=\"d-none d-md-flex\"\n />\n <VIcon\n icon=\"mdi-image-outline\"\n class=\"d-flex d-md-none\"\n />\n <VTooltip\n activator=\"parent\"\n location=\"bottom\"\n >\n {{ t('common.damImage.asset.detail.toggleInfo') }}\n </VTooltip>\n </VBtn>\n <slot name=\"toolbar-actions\" />\n </div>\n </VToolbar>\n <div class=\"d-flex w-100 h-100 position-relative dam-image-detail__content\">\n <div class=\"d-flex w-100 align-center dam-image-detail__left\">\n <div\n v-if=\"(activeTab === AssetDetailTabImageWithRoi.ROI && view.roiEditorTab) || view.simpleMode\"\n class=\"w-100 h-100 pa-2 d-flex align-center justify-center\"\n >\n <DamAssetImageRoiSelectLazy\n :ext-system=\"extSystem\"\n :config-name=\"damConfigName\"\n :readonly=\"!roiEditable\"\n />\n </div>\n <div\n v-else\n class=\"w-100 h-100 pa-2 d-flex align-center justify-center\"\n >\n <!--\n Around the grey placeholder the box fills this area, as the\n placeholder does without an overlay. The overlay covers it.\n Around an image the box keeps the image's size.\n -->\n <div\n v-if=\"$slots['image-overlay']\"\n class=\"position-relative\"\n :class=\"{ 'w-100 h-100 d-flex align-center justify-center': pictureIsPlaceholder(view) }\"\n >\n <AssetImage v-bind=\"picture\" />\n <slot name=\"image-overlay\" />\n </div>\n <AssetImage\n v-else\n v-bind=\"picture\"\n />\n </div>\n </div>\n <div class=\"h-100 d-flex dam-image-detail__sidebar border-s\">\n <slot\n name=\"sidebar\"\n :view=\"view\"\n />\n </div>\n </div>\n </div>\n </VCard>\n </VDialog>\n</template>\n"],"mappings":"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"}
@@ -2,10 +2,12 @@ import { UploadQueueKey } from '../../types/UploadQueue';
2
2
  type __VLS_Props = {
3
3
  queueKey: UploadQueueKey;
4
4
  };
5
- declare var __VLS_7: {};
6
- type __VLS_Slots = {} & {
7
- default?: (props: typeof __VLS_7) => any;
5
+ declare const __VLS_template: () => {
6
+ __VLS_Slots: {
7
+ default?: (props: {}) => any;
8
+ };
8
9
  };
10
+ type __VLS_Slots = ReturnType<typeof __VLS_template>['__VLS_Slots'];
9
11
  declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
10
12
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
11
13
  declare const _default: typeof __VLS_export;
@@ -1 +1 @@
1
- {"version":3,"file":"AssetDetailSidebarFrame.js","names":["_sfc_main","AssetDetailSidebarFrame_vue_vue_type_script_setup_true_lang_default","AssetDetailSidebarFrame_default"],"sources":["../../../../../src/domains/dam/assetDetail/components/AssetDetailSidebarFrame.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { storeToRefs } from 'pinia'\nimport { useI18n } from 'vue-i18n'\nimport { AssetDetailTabImageWithRoi, useAssetDetailStore } from '@/domains/dam/assetDetail/store/assetDetailStore'\nimport AssetDetailSidebarROI from '@/domains/dam/assetDetail/components/AssetDetailSidebarROI.vue'\nimport AssetDetailSidebarActionsTeleportTarget from '@/domains/dam/assetDetail/components/AssetDetailSidebarActionsTeleportTarget.vue'\nimport type { UploadQueueKey } from '@/domains/dam/types/UploadQueue'\nimport { useDamConfigName } from '@/domains/dam/composables/damConfigName'\n\n// The frame of the sidebar of the detail of an asset and of the dialog of a single upload: its tabs, the regions of\n// interest, and the target the buttons of the info tab are teleported to. What is above the content and in the info\n// tab is each sidebar's own.\n\nconst props = withDefaults(\n defineProps<{\n queueKey: UploadQueueKey\n configName?: string\n roiTab: boolean\n simpleMode: boolean\n }>(),\n {\n configName: undefined,\n }\n)\n\ndefineSlots<{\n prepend?(): unknown\n info(props: { isActive: boolean }): unknown\n}>()\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst damConfigName = useDamConfigName(props.configName)\n\nconst { t } = useI18n()\n\nconst { activeTab } = storeToRefs(useAssetDetailStore())\n</script>\n\n<template>\n <div\n class=\"sidebar-info d-flex w-100 h-100 flex-column\"\n :class=\"{ 'sidebar-info--no-tabs': simpleMode }\"\n >\n <div class=\"w-100 h-100 d-flex flex-column\">\n <VTabs\n v-if=\"!simpleMode\"\n v-model=\"activeTab\"\n show-arrows\n class=\"sidebar-info__tabs\"\n >\n <VTab\n :value=\"AssetDetailTabImageWithRoi.Info\"\n data-cy=\"button-meta\"\n >\n {{ t('common.damImage.asset.detail.tabs.info') }}\n </VTab>\n <VTab\n v-if=\"roiTab\"\n :value=\"AssetDetailTabImageWithRoi.ROI\"\n data-cy=\"button-focus\"\n >\n {{ t('common.damImage.asset.detail.tabs.roi') }}\n </VTab>\n </VTabs>\n\n <div class=\"sidebar-info__content\">\n <slot name=\"prepend\" />\n <template v-if=\"simpleMode\">\n <div class=\"py-2\">\n <slot\n name=\"info\"\n :is-active=\"true\"\n />\n </div>\n <div class=\"py-2\">\n <AssetDetailSidebarROI\n :is-active=\"true\"\n :queue-key=\"queueKey\"\n :config-name=\"damConfigName\"\n />\n </div>\n </template>\n <template v-else>\n <div\n v-if=\"activeTab === AssetDetailTabImageWithRoi.Info\"\n class=\"py-2\"\n >\n <slot\n name=\"info\"\n :is-active=\"activeTab === AssetDetailTabImageWithRoi.Info\"\n />\n </div>\n <div\n v-if=\"roiTab && activeTab === AssetDetailTabImageWithRoi.ROI\"\n class=\"py-2\"\n >\n <AssetDetailSidebarROI\n :is-active=\"activeTab === AssetDetailTabImageWithRoi.ROI\"\n :queue-key=\"queueKey\"\n :config-name=\"damConfigName\"\n />\n </div>\n </template>\n </div>\n <div class=\"sidebar-info__actions px-2\">\n <AssetDetailSidebarActionsTeleportTarget :queue-key=\"queueKey\" />\n </div>\n </div>\n </div>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"AssetDetailSidebarFrame.js","names":["_sfc_main","AssetDetailSidebarFrame_vue_vue_type_script_setup_true_lang_default","AssetDetailSidebarFrame_default"],"sources":["../../../../../src/domains/dam/assetDetail/components/AssetDetailSidebarFrame.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { storeToRefs } from 'pinia'\nimport { useI18n } from 'vue-i18n'\nimport { AssetDetailTabImageWithRoi, useAssetDetailStore } from '@/domains/dam/assetDetail/store/assetDetailStore'\nimport AssetDetailSidebarROI from '@/domains/dam/assetDetail/components/AssetDetailSidebarROI.vue'\nimport AssetDetailSidebarActionsTeleportTarget from '@/domains/dam/assetDetail/components/AssetDetailSidebarActionsTeleportTarget.vue'\nimport type { UploadQueueKey } from '@/domains/dam/types/UploadQueue'\nimport { useDamConfigName } from '@/domains/dam/composables/damConfigName'\n\n// Shared sidebar frame of the asset detail and the single-upload\n// dialog: tabs, ROIs and the teleport target for the info tab buttons.\n// Content above the tabs and inside the info tab belongs to each sidebar.\n\nconst props = withDefaults(\n defineProps<{\n queueKey: UploadQueueKey\n configName?: string\n roiTab: boolean\n simpleMode: boolean\n }>(),\n {\n configName: undefined,\n }\n)\n\ndefineSlots<{\n prepend?(): unknown\n info(props: { isActive: boolean }): unknown\n}>()\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst damConfigName = useDamConfigName(props.configName)\n\nconst { t } = useI18n()\n\nconst { activeTab } = storeToRefs(useAssetDetailStore())\n</script>\n\n<template>\n <div\n class=\"sidebar-info d-flex w-100 h-100 flex-column\"\n :class=\"{ 'sidebar-info--no-tabs': simpleMode }\"\n >\n <div class=\"w-100 h-100 d-flex flex-column\">\n <VTabs\n v-if=\"!simpleMode\"\n v-model=\"activeTab\"\n show-arrows\n class=\"sidebar-info__tabs\"\n >\n <VTab\n :value=\"AssetDetailTabImageWithRoi.Info\"\n data-cy=\"button-meta\"\n >\n {{ t('common.damImage.asset.detail.tabs.info') }}\n </VTab>\n <VTab\n v-if=\"roiTab\"\n :value=\"AssetDetailTabImageWithRoi.ROI\"\n data-cy=\"button-focus\"\n >\n {{ t('common.damImage.asset.detail.tabs.roi') }}\n </VTab>\n </VTabs>\n\n <div class=\"sidebar-info__content\">\n <slot name=\"prepend\" />\n <template v-if=\"simpleMode\">\n <div class=\"py-2\">\n <slot\n name=\"info\"\n :is-active=\"true\"\n />\n </div>\n <div class=\"py-2\">\n <AssetDetailSidebarROI\n :is-active=\"true\"\n :queue-key=\"queueKey\"\n :config-name=\"damConfigName\"\n />\n </div>\n </template>\n <template v-else>\n <div\n v-if=\"activeTab === AssetDetailTabImageWithRoi.Info\"\n class=\"py-2\"\n >\n <slot\n name=\"info\"\n :is-active=\"activeTab === AssetDetailTabImageWithRoi.Info\"\n />\n </div>\n <div\n v-if=\"roiTab && activeTab === AssetDetailTabImageWithRoi.ROI\"\n class=\"py-2\"\n >\n <AssetDetailSidebarROI\n :is-active=\"activeTab === AssetDetailTabImageWithRoi.ROI\"\n :queue-key=\"queueKey\"\n :config-name=\"damConfigName\"\n />\n </div>\n </template>\n </div>\n <div class=\"sidebar-info__actions px-2\">\n <AssetDetailSidebarActionsTeleportTarget :queue-key=\"queueKey\" />\n </div>\n </div>\n </div>\n</template>\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"AssetDetailSidebarFrame.vue_vue_type_script_setup_true_lang.js","names":["props","_openBlock","_createElementBlock","_normalizeClass","_createElementVNode","_createBlock","_component_VTabs","_unref","_isRef","_withCtx","_createVNode","_component_VTab","_createTextVNode","_toDisplayString","_createCommentVNode","_renderSlot","_Fragment","AssetDetailSidebarROI","AssetDetailSidebarActionsTeleportTarget","AssetDetailSidebarROI_default","AssetDetailSidebarActionsTeleportTarget_default","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","AssetDetailSidebarFrame_vue_vue_type_script_setup_true_lang_default","damConfigName","useDamConfigName","__props","useI18n","storeToRefs","useAssetDetailStore","openBlock","createElementBlock","normalizeClass","createElementVNode","createCommentVNode","createBlock","VTabs","unref","activeTab","_cache","isRef","$event","withCtx","createVNode","VTab","AssetDetailTabImageWithRoi","createTextVNode","toDisplayString","t","renderSlot","_ctx","Fragment"],"sources":["../../../../../src/domains/dam/assetDetail/components/AssetDetailSidebarFrame.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { storeToRefs } from 'pinia'\nimport { useI18n } from 'vue-i18n'\nimport { AssetDetailTabImageWithRoi, useAssetDetailStore } from '@/domains/dam/assetDetail/store/assetDetailStore'\nimport AssetDetailSidebarROI from '@/domains/dam/assetDetail/components/AssetDetailSidebarROI.vue'\nimport AssetDetailSidebarActionsTeleportTarget from '@/domains/dam/assetDetail/components/AssetDetailSidebarActionsTeleportTarget.vue'\nimport type { UploadQueueKey } from '@/domains/dam/types/UploadQueue'\nimport { useDamConfigName } from '@/domains/dam/composables/damConfigName'\n\n// The frame of the sidebar of the detail of an asset and of the dialog of a single upload: its tabs, the regions of\n// interest, and the target the buttons of the info tab are teleported to. What is above the content and in the info\n// tab is each sidebar's own.\n\nconst props = withDefaults(\n defineProps<{\n queueKey: UploadQueueKey\n configName?: string\n roiTab: boolean\n simpleMode: boolean\n }>(),\n {\n configName: undefined,\n }\n)\n\ndefineSlots<{\n prepend?(): unknown\n info(props: { isActive: boolean }): unknown\n}>()\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst damConfigName = useDamConfigName(props.configName)\n\nconst { t } = useI18n()\n\nconst { activeTab } = storeToRefs(useAssetDetailStore())\n</script>\n\n<template>\n <div\n class=\"sidebar-info d-flex w-100 h-100 flex-column\"\n :class=\"{ 'sidebar-info--no-tabs': simpleMode }\"\n >\n <div class=\"w-100 h-100 d-flex flex-column\">\n <VTabs\n v-if=\"!simpleMode\"\n v-model=\"activeTab\"\n show-arrows\n class=\"sidebar-info__tabs\"\n >\n <VTab\n :value=\"AssetDetailTabImageWithRoi.Info\"\n data-cy=\"button-meta\"\n >\n {{ t('common.damImage.asset.detail.tabs.info') }}\n </VTab>\n <VTab\n v-if=\"roiTab\"\n :value=\"AssetDetailTabImageWithRoi.ROI\"\n data-cy=\"button-focus\"\n >\n {{ t('common.damImage.asset.detail.tabs.roi') }}\n </VTab>\n </VTabs>\n\n <div class=\"sidebar-info__content\">\n <slot name=\"prepend\" />\n <template v-if=\"simpleMode\">\n <div class=\"py-2\">\n <slot\n name=\"info\"\n :is-active=\"true\"\n />\n </div>\n <div class=\"py-2\">\n <AssetDetailSidebarROI\n :is-active=\"true\"\n :queue-key=\"queueKey\"\n :config-name=\"damConfigName\"\n />\n </div>\n </template>\n <template v-else>\n <div\n v-if=\"activeTab === AssetDetailTabImageWithRoi.Info\"\n class=\"py-2\"\n >\n <slot\n name=\"info\"\n :is-active=\"activeTab === AssetDetailTabImageWithRoi.Info\"\n />\n </div>\n <div\n v-if=\"roiTab && activeTab === AssetDetailTabImageWithRoi.ROI\"\n class=\"py-2\"\n >\n <AssetDetailSidebarROI\n :is-active=\"activeTab === AssetDetailTabImageWithRoi.ROI\"\n :queue-key=\"queueKey\"\n :config-name=\"damConfigName\"\n />\n </div>\n </template>\n </div>\n <div class=\"sidebar-info__actions px-2\">\n <AssetDetailSidebarActionsTeleportTarget :queue-key=\"queueKey\" />\n </div>\n </div>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;EA8BA,IAAM6B,IAAgBC,EAAiB9B,EAAM,UAAU,GAEjD,EAAE,SAAMgC,EAAQ,GAEhB,EAAE,iBAAcC,EAAYC,EAAoB,CAAC;E,kBAIrDjC,EAAA,GAAAC,EAqEM,OAAA,EApEJ,OAAKC,EAAA,CAAC,+CAA6C,EAAA,yBAChB4B,EAAA,WAAU,CAAA,CAAA,E,IAE7C3B,EAgEM,OAhENiB,GAgEM;GA9DKU,EAAA,a,aADT9B,EAAA,GAAAI,EAmBQC,GAAA;;IAjBG,YAAAC,EAAAoC,CAAA;IAAA,uBAAA,AAAAC,EAAA,QAAA,MAAApC,EAAAmC,CAAA,IAAA,EAAS,QAAAG,IAAA;IAClB,eAAA;IACA,OAAM;;IAEN,SAAArC,QAKO,CALPC,EAKOC,GAAA;KAJJ,OAAOJ,EAAA2C,CAAA,CAA0B,CAAC;KACnC,WAAQ;;KAER,SAAAzC,QAAiD,CAA9CG,EAAAC,EAAAN,EAAA8C,CAAA,CAAC,CAAA,wCAAA,CAAA,GAAA,CAAA,C;;I,kBAGEtB,EAAA,UADR9B,EAAA,GAAAI,EAMOM,GAAA;;KAJJ,OAAOJ,EAAA2C,CAAA,CAA0B,CAAC;KACnC,WAAQ;;KAER,SAAAzC,QAAgD,CAA7CG,EAAAC,EAAAN,EAAA8C,CAAA,CAAC,CAAA,uCAAA,CAAA,GAAA,CAAA,C;;;;;GAIRjD,EAsCM,OAtCNkB,GAsCM,CArCJP,EAAuBwC,EAAA,QAAA,SAAA,GACPxB,EAAA,cAAhB9B,EAAA,GAAAC,EAcWc,GAAA,EAAA,KAAA,EAAA,GAAA,CAbTZ,EAKM,OALNmB,GAKM,CAJJR,EAGEwC,EAAA,QAAA,QAAA,EADC,UAAW,GAAI,CAAA,C,IAGpBnD,EAMM,OANNoB,GAMM,CALJd,EAIEO,GAAA;IAHC,aAAW;IACX,aAAWc,EAAA;IACX,eAAaxB,EAAAsB,CAAA;G,sDAIpB5B,EAAA,GAAAC,EAoBWc,GAAA,EAAA,KAAA,EAAA,GAAA,CAlBDT,EAAAoC,CAAA,MAAcpC,EAAA2C,CAAA,CAA0B,CAAC,QADjDjD,EAAA,GAAAC,EAQM,OARNuB,GAQM,CAJJV,EAGEwC,EAAA,QAAA,QAAA,EADC,UAAWhD,EAAAoC,CAAA,MAAcpC,EAAA2C,CAAA,CAA0B,CAAC,K,mBAIjDnB,EAAA,UAAUxB,EAAAoC,CAAA,MAAcpC,EAAA2C,CAAA,CAA0B,CAAC,OAD3DjD,EAAA,GAAAC,EASM,OATNwB,GASM,CALJhB,EAIEO,GAAA;IAHC,aAAWV,EAAAoC,CAAA,MAAcpC,EAAA2C,CAAA,CAA0B,CAAC;IACpD,aAAWnB,EAAA;IACX,eAAaxB,EAAAsB,CAAA;;;;;;GAKtBzB,EAEM,OAFNuB,GAEM,CADJjB,EAAiEQ,GAAA,EAAvB,aAAWa,EAAA,SAAQ,GAAA,MAAA,GAAA,CAAA,WAAA,CAAA,C"}
1
+ {"version":3,"file":"AssetDetailSidebarFrame.vue_vue_type_script_setup_true_lang.js","names":["props","_openBlock","_createElementBlock","_normalizeClass","_createElementVNode","_createBlock","_component_VTabs","_unref","_isRef","_withCtx","_createVNode","_component_VTab","_createTextVNode","_toDisplayString","_createCommentVNode","_renderSlot","_Fragment","AssetDetailSidebarROI","AssetDetailSidebarActionsTeleportTarget","AssetDetailSidebarROI_default","AssetDetailSidebarActionsTeleportTarget_default","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","AssetDetailSidebarFrame_vue_vue_type_script_setup_true_lang_default","damConfigName","useDamConfigName","__props","useI18n","storeToRefs","useAssetDetailStore","openBlock","createElementBlock","normalizeClass","createElementVNode","createCommentVNode","createBlock","VTabs","unref","activeTab","_cache","isRef","$event","withCtx","createVNode","VTab","AssetDetailTabImageWithRoi","createTextVNode","toDisplayString","t","renderSlot","_ctx","Fragment"],"sources":["../../../../../src/domains/dam/assetDetail/components/AssetDetailSidebarFrame.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { storeToRefs } from 'pinia'\nimport { useI18n } from 'vue-i18n'\nimport { AssetDetailTabImageWithRoi, useAssetDetailStore } from '@/domains/dam/assetDetail/store/assetDetailStore'\nimport AssetDetailSidebarROI from '@/domains/dam/assetDetail/components/AssetDetailSidebarROI.vue'\nimport AssetDetailSidebarActionsTeleportTarget from '@/domains/dam/assetDetail/components/AssetDetailSidebarActionsTeleportTarget.vue'\nimport type { UploadQueueKey } from '@/domains/dam/types/UploadQueue'\nimport { useDamConfigName } from '@/domains/dam/composables/damConfigName'\n\n// Shared sidebar frame of the asset detail and the single-upload\n// dialog: tabs, ROIs and the teleport target for the info tab buttons.\n// Content above the tabs and inside the info tab belongs to each sidebar.\n\nconst props = withDefaults(\n defineProps<{\n queueKey: UploadQueueKey\n configName?: string\n roiTab: boolean\n simpleMode: boolean\n }>(),\n {\n configName: undefined,\n }\n)\n\ndefineSlots<{\n prepend?(): unknown\n info(props: { isActive: boolean }): unknown\n}>()\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst damConfigName = useDamConfigName(props.configName)\n\nconst { t } = useI18n()\n\nconst { activeTab } = storeToRefs(useAssetDetailStore())\n</script>\n\n<template>\n <div\n class=\"sidebar-info d-flex w-100 h-100 flex-column\"\n :class=\"{ 'sidebar-info--no-tabs': simpleMode }\"\n >\n <div class=\"w-100 h-100 d-flex flex-column\">\n <VTabs\n v-if=\"!simpleMode\"\n v-model=\"activeTab\"\n show-arrows\n class=\"sidebar-info__tabs\"\n >\n <VTab\n :value=\"AssetDetailTabImageWithRoi.Info\"\n data-cy=\"button-meta\"\n >\n {{ t('common.damImage.asset.detail.tabs.info') }}\n </VTab>\n <VTab\n v-if=\"roiTab\"\n :value=\"AssetDetailTabImageWithRoi.ROI\"\n data-cy=\"button-focus\"\n >\n {{ t('common.damImage.asset.detail.tabs.roi') }}\n </VTab>\n </VTabs>\n\n <div class=\"sidebar-info__content\">\n <slot name=\"prepend\" />\n <template v-if=\"simpleMode\">\n <div class=\"py-2\">\n <slot\n name=\"info\"\n :is-active=\"true\"\n />\n </div>\n <div class=\"py-2\">\n <AssetDetailSidebarROI\n :is-active=\"true\"\n :queue-key=\"queueKey\"\n :config-name=\"damConfigName\"\n />\n </div>\n </template>\n <template v-else>\n <div\n v-if=\"activeTab === AssetDetailTabImageWithRoi.Info\"\n class=\"py-2\"\n >\n <slot\n name=\"info\"\n :is-active=\"activeTab === AssetDetailTabImageWithRoi.Info\"\n />\n </div>\n <div\n v-if=\"roiTab && activeTab === AssetDetailTabImageWithRoi.ROI\"\n class=\"py-2\"\n >\n <AssetDetailSidebarROI\n :is-active=\"activeTab === AssetDetailTabImageWithRoi.ROI\"\n :queue-key=\"queueKey\"\n :config-name=\"damConfigName\"\n />\n </div>\n </template>\n </div>\n <div class=\"sidebar-info__actions px-2\">\n <AssetDetailSidebarActionsTeleportTarget :queue-key=\"queueKey\" />\n </div>\n </div>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;EA8BA,IAAM6B,IAAgBC,EAAiB9B,EAAM,UAAU,GAEjD,EAAE,SAAMgC,EAAQ,GAEhB,EAAE,iBAAcC,EAAYC,EAAoB,CAAC;E,kBAIrDjC,EAAA,GAAAC,EAqEM,OAAA,EApEJ,OAAKC,EAAA,CAAC,+CAA6C,EAAA,yBAChB4B,EAAA,WAAU,CAAA,CAAA,E,IAE7C3B,EAgEM,OAhENiB,GAgEM;GA9DKU,EAAA,a,aADT9B,EAAA,GAAAI,EAmBQC,GAAA;;IAjBG,YAAAC,EAAAoC,CAAA;IAAA,uBAAA,AAAAC,EAAA,QAAA,MAAApC,EAAAmC,CAAA,IAAA,EAAS,QAAAG,IAAA;IAClB,eAAA;IACA,OAAM;;IAEN,SAAArC,QAKO,CALPC,EAKOC,GAAA;KAJJ,OAAOJ,EAAA2C,CAAA,CAA0B,CAAC;KACnC,WAAQ;;KAER,SAAAzC,QAAiD,CAA9CG,EAAAC,EAAAN,EAAA8C,CAAA,CAAC,CAAA,wCAAA,CAAA,GAAA,CAAA,C;;I,kBAGEtB,EAAA,UADR9B,EAAA,GAAAI,EAMOM,GAAA;;KAJJ,OAAOJ,EAAA2C,CAAA,CAA0B,CAAC;KACnC,WAAQ;;KAER,SAAAzC,QAAgD,CAA7CG,EAAAC,EAAAN,EAAA8C,CAAA,CAAC,CAAA,uCAAA,CAAA,GAAA,CAAA,C;;;;;GAIRjD,EAsCM,OAtCNkB,GAsCM,CArCJP,EAAuBwC,EAAA,QAAA,SAAA,GACPxB,EAAA,cAAhB9B,EAAA,GAAAC,EAcWc,GAAA,EAAA,KAAA,EAAA,GAAA,CAbTZ,EAKM,OALNmB,GAKM,CAJJR,EAGEwC,EAAA,QAAA,QAAA,EADC,UAAW,GAAI,CAAA,C,IAGpBnD,EAMM,OANNoB,GAMM,CALJd,EAIEO,GAAA;IAHC,aAAW;IACX,aAAWc,EAAA;IACX,eAAaxB,EAAAsB,CAAA;G,sDAIpB5B,EAAA,GAAAC,EAoBWc,GAAA,EAAA,KAAA,EAAA,GAAA,CAlBDT,EAAAoC,CAAA,MAAcpC,EAAA2C,CAAA,CAA0B,CAAC,QADjDjD,EAAA,GAAAC,EAQM,OARNuB,GAQM,CAJJV,EAGEwC,EAAA,QAAA,QAAA,EADC,UAAWhD,EAAAoC,CAAA,MAAcpC,EAAA2C,CAAA,CAA0B,CAAC,K,mBAIjDnB,EAAA,UAAUxB,EAAAoC,CAAA,MAAcpC,EAAA2C,CAAA,CAA0B,CAAC,OAD3DjD,EAAA,GAAAC,EASM,OATNwB,GASM,CALJhB,EAIEO,GAAA;IAHC,aAAWV,EAAAoC,CAAA,MAAcpC,EAAA2C,CAAA,CAA0B,CAAC;IACpD,aAAWnB,EAAA;IACX,eAAaxB,EAAAsB,CAAA;;;;;;GAKtBzB,EAEM,OAFNuB,GAEM,CADJjB,EAAiEQ,GAAA,EAAvB,aAAWa,EAAA,SAAQ,GAAA,MAAA,GAAA,CAAA,WAAA,CAAA,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"AssetDetailSidebarMetadata.js","names":["_sfc_main","AssetDetailSidebarMetadata_vue_vue_type_script_setup_true_lang_default","AssetDetailSidebarMetadata_default"],"sources":["../../../../../src/domains/dam/assetDetail/components/AssetDetailSidebarMetadata.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport AssetDetailSidebarActionsWrapper from '@/domains/dam/assetDetail/components/AssetDetailSidebarActionsWrapper.vue'\nimport { cloneDeep, isNull } from '@/shared/utils/common'\nimport { useI18n } from 'vue-i18n'\nimport { computed, ref } from 'vue'\nimport { useAlerts } from '@/domains/system/composables/alerts'\nimport useVuelidate from '@vuelidate/core'\nimport type { DamAssetTypeType } from '@/domains/dam/types/Asset'\nimport { useAssetDetailStore } from '@/domains/dam/assetDetail/store/assetDetailStore'\nimport { storeToRefs } from 'pinia'\nimport AssetMetadata from '@/domains/dam/assetDetail/components/AssetMetadata.vue'\nimport { showMetadataSaveError, updateAssetMetadata } from '@/domains/dam/api/damAssetApi'\nimport { useCommonAdminCoreDamOptions } from '@/domains/dam/composables/commonAdminCoreDamOptions'\nimport { ADamAssetMetadataValidationScopeSymbol } from '@/domains/dam/composables/uploadValidations'\nimport { useUploadQueuesStore } from '@/domains/dam/uploadQueue/store/uploadQueuesStore'\nimport type { UploadQueueKey } from '@/domains/dam/types/UploadQueue'\nimport type { IntegerId } from '@/shared/types/common'\nimport { assetMetadataMayStillChange } from '@/domains/dam/assetDetail/utils/assetMetadataMayStillChange'\nimport { useDamConfigName } from '@/domains/dam/composables/damConfigName'\n\nconst props = withDefaults(\n defineProps<{\n queueKey: UploadQueueKey\n isActive: boolean\n dataCy?: string\n assetType: DamAssetTypeType\n extSystem: IntegerId\n configName?: string\n }>(),\n {\n dataCy: undefined,\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 assetDetailStore = useAssetDetailStore()\nconst { asset, updateUploadStore, mainFileSingleUse } = storeToRefs(assetDetailStore)\nconst uploadQueueStore = useUploadQueuesStore()\n\nconst saveButtonLoading = ref(false)\n// Saved before the server has processed the file, the form would write over what the server fills in from the file.\n// The detail is not read again by itself: once the file is processed, the user opens it anew.\nconst saveBlocked = computed(() => !isNull(asset.value) && assetMetadataMayStillChange(asset.value))\n\nconst { showRecordWas, showValidationError } = useAlerts()\n\nconst v$ = useVuelidate({ $scope: ADamAssetMetadataValidationScopeSymbol, $stopPropagation: true })\n\nconst { damClient, endPointAsset } = useCommonAdminCoreDamOptions(damConfigName)\n\nconst onSave = async () => {\n // The spinning button still takes Enter and Space: a save that runs is not sent again.\n if (isNull(asset.value) || saveBlocked.value || saveButtonLoading.value) return\n saveButtonLoading.value = true\n v$.value.$touch()\n if (v$.value.$invalid) {\n showValidationError()\n saveButtonLoading.value = false\n return\n }\n // One copy of what is saved, taken before it is sent, and the queue is told by that copy. The form is not locked\n // while the save runs, and the detail can be closed, or opened on another asset, before the answer: read then,\n // the rows of the queue got what was typed since as if it were saved, or nothing at all.\n const saved = cloneDeep(asset.value)\n const savedSingleUse = mainFileSingleUse.value\n const tellsQueue = updateUploadStore.value\n // The rows of the queue as the save is pressed: what the user types into them while it runs is theirs.\n const rowsAtSave = tellsQueue ? uploadQueueStore.noteRowsOfAsset(saved.id, damConfigName) : undefined\n try {\n const sent = updateAssetMetadata(damClient, endPointAsset, saved, props.extSystem, savedSingleUse)\n // Kept where the host of the detail finds it: closed before the answer, the detail has its host wait for it.\n assetDetailStore.setSaving(saved.id, sent, damConfigName)\n await sent\n if (tellsQueue) {\n await uploadQueueStore.updateFromDetail(saved, damConfigName, savedSingleUse, rowsAtSave)\n }\n showRecordWas('updated')\n } catch (error) {\n showMetadataSaveError(error, props.extSystem, damConfigName)\n } finally {\n // Once the save has failed, nothing writes by its note; once it has written, the note is let go already.\n if (rowsAtSave) uploadQueueStore.forgetRowsNote(rowsAtSave)\n saveButtonLoading.value = false\n }\n}\n</script>\n\n<template>\n <AssetDetailSidebarActionsWrapper\n v-if=\"isActive\"\n :queue-key=\"queueKey\"\n >\n <ABtnPrimary\n type=\"submit\"\n class=\"ml-2\"\n data-cy=\"button-save\"\n :loading=\"saveButtonLoading\"\n :disabled=\"saveBlocked\"\n @click.stop=\"onSave\"\n >\n {{ t('common.button.save') }}\n </ABtnPrimary>\n </AssetDetailSidebarActionsWrapper>\n <div\n v-if=\"isActive && saveBlocked\"\n class=\"text-body-small px-4 pt-2\"\n data-cy=\"save-blocked\"\n >\n {{ t('common.damImage.queueItem.stillUploadingOrProcessing') }}\n </div>\n <AssetMetadata\n :ext-system=\"extSystem\"\n :config-name=\"damConfigName\"\n />\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"AssetDetailSidebarMetadata.js","names":["_sfc_main","AssetDetailSidebarMetadata_vue_vue_type_script_setup_true_lang_default","AssetDetailSidebarMetadata_default"],"sources":["../../../../../src/domains/dam/assetDetail/components/AssetDetailSidebarMetadata.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport AssetDetailSidebarActionsWrapper from '@/domains/dam/assetDetail/components/AssetDetailSidebarActionsWrapper.vue'\nimport { cloneDeep, isNull } from '@/shared/utils/common'\nimport { useI18n } from 'vue-i18n'\nimport { computed, ref } from 'vue'\nimport { useAlerts } from '@/domains/system/composables/alerts'\nimport useVuelidate from '@vuelidate/core'\nimport type { DamAssetTypeType } from '@/domains/dam/types/Asset'\nimport { useAssetDetailStore } from '@/domains/dam/assetDetail/store/assetDetailStore'\nimport { storeToRefs } from 'pinia'\nimport AssetMetadata from '@/domains/dam/assetDetail/components/AssetMetadata.vue'\nimport { showMetadataSaveError, updateAssetMetadata } from '@/domains/dam/api/damAssetApi'\nimport { useCommonAdminCoreDamOptions } from '@/domains/dam/composables/commonAdminCoreDamOptions'\nimport { ADamAssetMetadataValidationScopeSymbol } from '@/domains/dam/composables/uploadValidations'\nimport { useUploadQueuesStore } from '@/domains/dam/uploadQueue/store/uploadQueuesStore'\nimport type { UploadQueueKey } from '@/domains/dam/types/UploadQueue'\nimport type { IntegerId } from '@/shared/types/common'\nimport { assetMetadataMayStillChange } from '@/domains/dam/assetDetail/utils/assetMetadataMayStillChange'\nimport { useDamConfigName } from '@/domains/dam/composables/damConfigName'\n\nconst props = withDefaults(\n defineProps<{\n queueKey: UploadQueueKey\n isActive: boolean\n dataCy?: string\n assetType: DamAssetTypeType\n extSystem: IntegerId\n configName?: string\n }>(),\n {\n dataCy: undefined,\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 assetDetailStore = useAssetDetailStore()\nconst { asset, updateUploadStore, mainFileSingleUse } = storeToRefs(assetDetailStore)\nconst uploadQueueStore = useUploadQueuesStore()\n\nconst saveButtonLoading = ref(false)\n// Saving before the server has processed the file would overwrite the metadata the server extracts from it.\n// The detail is not reloaded automatically. The user reopens it after processing.\nconst saveBlocked = computed(() => !isNull(asset.value) && assetMetadataMayStillChange(asset.value))\n\nconst { showRecordWas, showValidationError } = useAlerts()\n\nconst v$ = useVuelidate({ $scope: ADamAssetMetadataValidationScopeSymbol, $stopPropagation: true })\n\nconst { damClient, endPointAsset } = useCommonAdminCoreDamOptions(damConfigName)\n\nconst onSave = async () => {\n // The loading button still reacts to Enter and Space. This prevents sending a running save again.\n if (isNull(asset.value) || saveBlocked.value || saveButtonLoading.value) return\n saveButtonLoading.value = true\n v$.value.$touch()\n if (v$.value.$invalid) {\n showValidationError()\n saveButtonLoading.value = false\n return\n }\n // Snapshot the asset before sending and update the queue from that snapshot.\n // The form is not locked during the save, and the detail can\n // be closed or switched to another asset before the response.\n // Reading the live state then gave the queue rows unsaved input, or nothing.\n const saved = cloneDeep(asset.value)\n const savedSingleUse = mainFileSingleUse.value\n const tellsQueue = updateUploadStore.value\n // Queue rows as of pressing save. Input typed into them while the save runs must not be overwritten.\n const rowsAtSave = tellsQueue ? uploadQueueStore.noteRowsOfAsset(saved.id, damConfigName) : undefined\n try {\n const sent = updateAssetMetadata(damClient, endPointAsset, saved, props.extSystem, savedSingleUse)\n // Registered for the host. If the detail closes before the response, the host waits for this save.\n assetDetailStore.setSaving(saved.id, sent, damConfigName)\n await sent\n if (tellsQueue) {\n await uploadQueueStore.updateFromDetail(saved, damConfigName, savedSingleUse, rowsAtSave)\n }\n showRecordWas('updated')\n } catch (error) {\n showMetadataSaveError(error, props.extSystem, damConfigName)\n } finally {\n // After a failed save nothing uses the note. After a successful write it has already been released.\n if (rowsAtSave) uploadQueueStore.forgetRowsNote(rowsAtSave)\n saveButtonLoading.value = false\n }\n}\n</script>\n\n<template>\n <AssetDetailSidebarActionsWrapper\n v-if=\"isActive\"\n :queue-key=\"queueKey\"\n >\n <ABtnPrimary\n type=\"submit\"\n class=\"ml-2\"\n data-cy=\"button-save\"\n :loading=\"saveButtonLoading\"\n :disabled=\"saveBlocked\"\n @click.stop=\"onSave\"\n >\n {{ t('common.button.save') }}\n </ABtnPrimary>\n </AssetDetailSidebarActionsWrapper>\n <div\n v-if=\"isActive && saveBlocked\"\n class=\"text-body-small px-4 pt-2\"\n data-cy=\"save-blocked\"\n >\n {{ t('common.damImage.queueItem.stillUploadingOrProcessing') }}\n </div>\n <AssetMetadata\n :ext-system=\"extSystem\"\n :config-name=\"damConfigName\"\n />\n</template>\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"AssetDetailSidebarMetadata.vue_vue_type_script_setup_true_lang.js","names":["_resolveComponent","_openBlock","_createElementBlock","_Fragment","_createBlock","AssetDetailSidebarActionsWrapper","_withCtx","_createVNode","_withModifiers","_createTextVNode","_toDisplayString","_unref","_createCommentVNode","AssetMetadata","AssetMetadata_default","AssetDetailSidebarActionsWrapper_default","useVuelidate","_hoisted_1","AssetDetailSidebarMetadata_vue_vue_type_script_setup_true_lang_default","props","__props","damConfigName","useDamConfigName","useI18n","assetDetailStore","useAssetDetailStore","storeToRefs","uploadQueueStore","useUploadQueuesStore","saveButtonLoading","ref","saveBlocked","computed","isNull","asset","assetMetadataMayStillChange","useAlerts","v$","ADamAssetMetadataValidationScopeSymbol","useCommonAdminCoreDamOptions","onSave","showValidationError","saved","cloneDeep","savedSingleUse","mainFileSingleUse","tellsQueue","updateUploadStore","rowsAtSave","sent","updateAssetMetadata","damClient","endPointAsset","showRecordWas","error","_component_ABtnPrimary","resolveComponent","openBlock","createElementBlock","Fragment","createBlock","withCtx","createVNode","withModifiers","createTextVNode","toDisplayString","unref","t","createCommentVNode"],"sources":["../../../../../src/domains/dam/assetDetail/components/AssetDetailSidebarMetadata.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport AssetDetailSidebarActionsWrapper from '@/domains/dam/assetDetail/components/AssetDetailSidebarActionsWrapper.vue'\nimport { cloneDeep, isNull } from '@/shared/utils/common'\nimport { useI18n } from 'vue-i18n'\nimport { computed, ref } from 'vue'\nimport { useAlerts } from '@/domains/system/composables/alerts'\nimport useVuelidate from '@vuelidate/core'\nimport type { DamAssetTypeType } from '@/domains/dam/types/Asset'\nimport { useAssetDetailStore } from '@/domains/dam/assetDetail/store/assetDetailStore'\nimport { storeToRefs } from 'pinia'\nimport AssetMetadata from '@/domains/dam/assetDetail/components/AssetMetadata.vue'\nimport { showMetadataSaveError, updateAssetMetadata } from '@/domains/dam/api/damAssetApi'\nimport { useCommonAdminCoreDamOptions } from '@/domains/dam/composables/commonAdminCoreDamOptions'\nimport { ADamAssetMetadataValidationScopeSymbol } from '@/domains/dam/composables/uploadValidations'\nimport { useUploadQueuesStore } from '@/domains/dam/uploadQueue/store/uploadQueuesStore'\nimport type { UploadQueueKey } from '@/domains/dam/types/UploadQueue'\nimport type { IntegerId } from '@/shared/types/common'\nimport { assetMetadataMayStillChange } from '@/domains/dam/assetDetail/utils/assetMetadataMayStillChange'\nimport { useDamConfigName } from '@/domains/dam/composables/damConfigName'\n\nconst props = withDefaults(\n defineProps<{\n queueKey: UploadQueueKey\n isActive: boolean\n dataCy?: string\n assetType: DamAssetTypeType\n extSystem: IntegerId\n configName?: string\n }>(),\n {\n dataCy: undefined,\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 assetDetailStore = useAssetDetailStore()\nconst { asset, updateUploadStore, mainFileSingleUse } = storeToRefs(assetDetailStore)\nconst uploadQueueStore = useUploadQueuesStore()\n\nconst saveButtonLoading = ref(false)\n// Saved before the server has processed the file, the form would write over what the server fills in from the file.\n// The detail is not read again by itself: once the file is processed, the user opens it anew.\nconst saveBlocked = computed(() => !isNull(asset.value) && assetMetadataMayStillChange(asset.value))\n\nconst { showRecordWas, showValidationError } = useAlerts()\n\nconst v$ = useVuelidate({ $scope: ADamAssetMetadataValidationScopeSymbol, $stopPropagation: true })\n\nconst { damClient, endPointAsset } = useCommonAdminCoreDamOptions(damConfigName)\n\nconst onSave = async () => {\n // The spinning button still takes Enter and Space: a save that runs is not sent again.\n if (isNull(asset.value) || saveBlocked.value || saveButtonLoading.value) return\n saveButtonLoading.value = true\n v$.value.$touch()\n if (v$.value.$invalid) {\n showValidationError()\n saveButtonLoading.value = false\n return\n }\n // One copy of what is saved, taken before it is sent, and the queue is told by that copy. The form is not locked\n // while the save runs, and the detail can be closed, or opened on another asset, before the answer: read then,\n // the rows of the queue got what was typed since as if it were saved, or nothing at all.\n const saved = cloneDeep(asset.value)\n const savedSingleUse = mainFileSingleUse.value\n const tellsQueue = updateUploadStore.value\n // The rows of the queue as the save is pressed: what the user types into them while it runs is theirs.\n const rowsAtSave = tellsQueue ? uploadQueueStore.noteRowsOfAsset(saved.id, damConfigName) : undefined\n try {\n const sent = updateAssetMetadata(damClient, endPointAsset, saved, props.extSystem, savedSingleUse)\n // Kept where the host of the detail finds it: closed before the answer, the detail has its host wait for it.\n assetDetailStore.setSaving(saved.id, sent, damConfigName)\n await sent\n if (tellsQueue) {\n await uploadQueueStore.updateFromDetail(saved, damConfigName, savedSingleUse, rowsAtSave)\n }\n showRecordWas('updated')\n } catch (error) {\n showMetadataSaveError(error, props.extSystem, damConfigName)\n } finally {\n // Once the save has failed, nothing writes by its note; once it has written, the note is let go already.\n if (rowsAtSave) uploadQueueStore.forgetRowsNote(rowsAtSave)\n saveButtonLoading.value = false\n }\n}\n</script>\n\n<template>\n <AssetDetailSidebarActionsWrapper\n v-if=\"isActive\"\n :queue-key=\"queueKey\"\n >\n <ABtnPrimary\n type=\"submit\"\n class=\"ml-2\"\n data-cy=\"button-save\"\n :loading=\"saveButtonLoading\"\n :disabled=\"saveBlocked\"\n @click.stop=\"onSave\"\n >\n {{ t('common.button.save') }}\n </ABtnPrimary>\n </AssetDetailSidebarActionsWrapper>\n <div\n v-if=\"isActive && saveBlocked\"\n class=\"text-body-small px-4 pt-2\"\n data-cy=\"save-blocked\"\n >\n {{ t('common.damImage.queueItem.stillUploadingOrProcessing') }}\n </div>\n <AssetMetadata\n :ext-system=\"extSystem\"\n :config-name=\"damConfigName\"\n />\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoBA,IAAMmB,IAAQC,GAeRC,IAAgBC,EAAiBH,EAAM,UAAU,GAEjD,EAAE,SAAMI,EAAQ,GAEhBC,IAAmBC,EAAoB,GACvC,EAAE,UAAO,sBAAmB,yBAAsBC,EAAYF,CAAgB,GAC9EG,IAAmBC,EAAqB,GAExCC,IAAoBC,EAAI,EAAK,GAG7BC,IAAcC,QAAe,CAACC,EAAOC,EAAM,KAAK,KAAKC,EAA4BD,EAAM,KAAK,CAAC,GAE7F,EAAE,kBAAe,2BAAwBE,EAAU,GAEnDC,IAAKrB,EAAa;GAAE,QAAQsB;GAAwC,kBAAkB;EAAK,CAAC,GAE5F,EAAE,cAAW,qBAAkBC,EAA6BlB,CAAa,GAEzEmB,IAAS,YAAY;GAEzB,IAAIP,EAAOC,EAAM,KAAK,KAAKH,EAAY,SAASF,EAAkB,OAAO;GAGzE,IAFA,EAAkB,QAAQ,IAC1BQ,EAAG,MAAM,OAAO,GACZA,EAAG,MAAM,UAAU;IAErB,AADAI,EAAoB,GACpB,EAAkB,QAAQ;IAC1B;GACF;GAIA,IAAMC,IAAQC,EAAUT,EAAM,KAAK,GAC7BU,IAAiBC,EAAkB,OACnCC,IAAaC,EAAkB,OAE/BC,IAAaF,IAAanB,EAAiB,gBAAgBe,EAAM,IAAIrB,CAAa,IAAI,KAAA;GAC5F,IAAI;IACF,IAAM4B,IAAOC,EAAoBC,GAAWC,GAAeV,GAAOvB,EAAM,WAAWyB,CAAc;IAOjG,AALApB,EAAiB,UAAUkB,EAAM,IAAIO,GAAM5B,CAAa,GACxD,MAAM4B,GACFH,KACF,MAAMnB,EAAiB,iBAAiBe,GAAOrB,GAAeuB,GAAgBI,CAAU,GAE1FK,EAAc,SAAS;GACzB,SAASC,GAAO;IACd,EAAsBA,GAAOnC,EAAM,WAAWE,CAAa;GAC7D,UAAU;IAGR,AADI2B,KAAYrB,EAAiB,eAAeqB,CAAU,GAC1D,EAAkB,QAAQ;GAC5B;EACF;;;;IAKU5B,EAAA,YADRnB,EAAA,GAAAG,EAcmCC,GAAA;;KAZhC,aAAWe,EAAA;;KAEZ,SAAAd,QASc,CATdC,EAScgD,GAAA;MARZ,MAAK;MACL,OAAM;MACN,WAAQ;MACP,SAAS1B,EAAA;MACT,UAAUE,EAAA;MACV,SAAKvB,EAAOgC,GAAM,CAAA,MAAA,CAAA;;MAEnB,SAAAlC,QAA6B,CAA1BG,EAAAC,EAAAC,EAAAwD,CAAA,CAAC,CAAA,oBAAA,CAAA,GAAA,CAAA,C;;;;;IAIA/C,EAAA,YAAYW,EAAA,SADpB9B,EAAA,GAAAC,EAMM,OANNe,GAMMP,EADDC,EAAAwD,CAAA,CAAC,CAAA,sDAAA,CAAA,GAAA,CAAA,K;IAEN5D,EAGEM,GAAA;KAFC,cAAYO,EAAA;KACZ,eAAaT,EAAAU,CAAA"}
1
+ {"version":3,"file":"AssetDetailSidebarMetadata.vue_vue_type_script_setup_true_lang.js","names":["_resolveComponent","_openBlock","_createElementBlock","_Fragment","_createBlock","AssetDetailSidebarActionsWrapper","_withCtx","_createVNode","_withModifiers","_createTextVNode","_toDisplayString","_unref","_createCommentVNode","AssetMetadata","AssetMetadata_default","AssetDetailSidebarActionsWrapper_default","useVuelidate","_hoisted_1","AssetDetailSidebarMetadata_vue_vue_type_script_setup_true_lang_default","props","__props","damConfigName","useDamConfigName","useI18n","assetDetailStore","useAssetDetailStore","storeToRefs","uploadQueueStore","useUploadQueuesStore","saveButtonLoading","ref","saveBlocked","computed","isNull","asset","assetMetadataMayStillChange","useAlerts","v$","ADamAssetMetadataValidationScopeSymbol","useCommonAdminCoreDamOptions","onSave","showValidationError","saved","cloneDeep","savedSingleUse","mainFileSingleUse","tellsQueue","updateUploadStore","rowsAtSave","sent","updateAssetMetadata","damClient","endPointAsset","showRecordWas","error","_component_ABtnPrimary","resolveComponent","openBlock","createElementBlock","Fragment","createBlock","withCtx","createVNode","withModifiers","createTextVNode","toDisplayString","unref","t","createCommentVNode"],"sources":["../../../../../src/domains/dam/assetDetail/components/AssetDetailSidebarMetadata.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport AssetDetailSidebarActionsWrapper from '@/domains/dam/assetDetail/components/AssetDetailSidebarActionsWrapper.vue'\nimport { cloneDeep, isNull } from '@/shared/utils/common'\nimport { useI18n } from 'vue-i18n'\nimport { computed, ref } from 'vue'\nimport { useAlerts } from '@/domains/system/composables/alerts'\nimport useVuelidate from '@vuelidate/core'\nimport type { DamAssetTypeType } from '@/domains/dam/types/Asset'\nimport { useAssetDetailStore } from '@/domains/dam/assetDetail/store/assetDetailStore'\nimport { storeToRefs } from 'pinia'\nimport AssetMetadata from '@/domains/dam/assetDetail/components/AssetMetadata.vue'\nimport { showMetadataSaveError, updateAssetMetadata } from '@/domains/dam/api/damAssetApi'\nimport { useCommonAdminCoreDamOptions } from '@/domains/dam/composables/commonAdminCoreDamOptions'\nimport { ADamAssetMetadataValidationScopeSymbol } from '@/domains/dam/composables/uploadValidations'\nimport { useUploadQueuesStore } from '@/domains/dam/uploadQueue/store/uploadQueuesStore'\nimport type { UploadQueueKey } from '@/domains/dam/types/UploadQueue'\nimport type { IntegerId } from '@/shared/types/common'\nimport { assetMetadataMayStillChange } from '@/domains/dam/assetDetail/utils/assetMetadataMayStillChange'\nimport { useDamConfigName } from '@/domains/dam/composables/damConfigName'\n\nconst props = withDefaults(\n defineProps<{\n queueKey: UploadQueueKey\n isActive: boolean\n dataCy?: string\n assetType: DamAssetTypeType\n extSystem: IntegerId\n configName?: string\n }>(),\n {\n dataCy: undefined,\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 assetDetailStore = useAssetDetailStore()\nconst { asset, updateUploadStore, mainFileSingleUse } = storeToRefs(assetDetailStore)\nconst uploadQueueStore = useUploadQueuesStore()\n\nconst saveButtonLoading = ref(false)\n// Saving before the server has processed the file would overwrite the metadata the server extracts from it.\n// The detail is not reloaded automatically. The user reopens it after processing.\nconst saveBlocked = computed(() => !isNull(asset.value) && assetMetadataMayStillChange(asset.value))\n\nconst { showRecordWas, showValidationError } = useAlerts()\n\nconst v$ = useVuelidate({ $scope: ADamAssetMetadataValidationScopeSymbol, $stopPropagation: true })\n\nconst { damClient, endPointAsset } = useCommonAdminCoreDamOptions(damConfigName)\n\nconst onSave = async () => {\n // The loading button still reacts to Enter and Space. This prevents sending a running save again.\n if (isNull(asset.value) || saveBlocked.value || saveButtonLoading.value) return\n saveButtonLoading.value = true\n v$.value.$touch()\n if (v$.value.$invalid) {\n showValidationError()\n saveButtonLoading.value = false\n return\n }\n // Snapshot the asset before sending and update the queue from that snapshot.\n // The form is not locked during the save, and the detail can\n // be closed or switched to another asset before the response.\n // Reading the live state then gave the queue rows unsaved input, or nothing.\n const saved = cloneDeep(asset.value)\n const savedSingleUse = mainFileSingleUse.value\n const tellsQueue = updateUploadStore.value\n // Queue rows as of pressing save. Input typed into them while the save runs must not be overwritten.\n const rowsAtSave = tellsQueue ? uploadQueueStore.noteRowsOfAsset(saved.id, damConfigName) : undefined\n try {\n const sent = updateAssetMetadata(damClient, endPointAsset, saved, props.extSystem, savedSingleUse)\n // Registered for the host. If the detail closes before the response, the host waits for this save.\n assetDetailStore.setSaving(saved.id, sent, damConfigName)\n await sent\n if (tellsQueue) {\n await uploadQueueStore.updateFromDetail(saved, damConfigName, savedSingleUse, rowsAtSave)\n }\n showRecordWas('updated')\n } catch (error) {\n showMetadataSaveError(error, props.extSystem, damConfigName)\n } finally {\n // After a failed save nothing uses the note. After a successful write it has already been released.\n if (rowsAtSave) uploadQueueStore.forgetRowsNote(rowsAtSave)\n saveButtonLoading.value = false\n }\n}\n</script>\n\n<template>\n <AssetDetailSidebarActionsWrapper\n v-if=\"isActive\"\n :queue-key=\"queueKey\"\n >\n <ABtnPrimary\n type=\"submit\"\n class=\"ml-2\"\n data-cy=\"button-save\"\n :loading=\"saveButtonLoading\"\n :disabled=\"saveBlocked\"\n @click.stop=\"onSave\"\n >\n {{ t('common.button.save') }}\n </ABtnPrimary>\n </AssetDetailSidebarActionsWrapper>\n <div\n v-if=\"isActive && saveBlocked\"\n class=\"text-body-small px-4 pt-2\"\n data-cy=\"save-blocked\"\n >\n {{ t('common.damImage.queueItem.stillUploadingOrProcessing') }}\n </div>\n <AssetMetadata\n :ext-system=\"extSystem\"\n :config-name=\"damConfigName\"\n />\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoBA,IAAMmB,IAAQC,GAeRC,IAAgBC,EAAiBH,EAAM,UAAU,GAEjD,EAAE,SAAMI,EAAQ,GAEhBC,IAAmBC,EAAoB,GACvC,EAAE,UAAO,sBAAmB,yBAAsBC,EAAYF,CAAgB,GAC9EG,IAAmBC,EAAqB,GAExCC,IAAoBC,EAAI,EAAK,GAG7BC,IAAcC,QAAe,CAACC,EAAOC,EAAM,KAAK,KAAKC,EAA4BD,EAAM,KAAK,CAAC,GAE7F,EAAE,kBAAe,2BAAwBE,EAAU,GAEnDC,IAAKrB,EAAa;GAAE,QAAQsB;GAAwC,kBAAkB;EAAK,CAAC,GAE5F,EAAE,cAAW,qBAAkBC,EAA6BlB,CAAa,GAEzEmB,IAAS,YAAY;GAEzB,IAAIP,EAAOC,EAAM,KAAK,KAAKH,EAAY,SAASF,EAAkB,OAAO;GAGzE,IAFA,EAAkB,QAAQ,IAC1BQ,EAAG,MAAM,OAAO,GACZA,EAAG,MAAM,UAAU;IAErB,AADAI,EAAoB,GACpB,EAAkB,QAAQ;IAC1B;GACF;GAKA,IAAMC,IAAQC,EAAUT,EAAM,KAAK,GAC7BU,IAAiBC,EAAkB,OACnCC,IAAaC,EAAkB,OAE/BC,IAAaF,IAAanB,EAAiB,gBAAgBe,EAAM,IAAIrB,CAAa,IAAI,KAAA;GAC5F,IAAI;IACF,IAAM4B,IAAOC,EAAoBC,GAAWC,GAAeV,GAAOvB,EAAM,WAAWyB,CAAc;IAOjG,AALApB,EAAiB,UAAUkB,EAAM,IAAIO,GAAM5B,CAAa,GACxD,MAAM4B,GACFH,KACF,MAAMnB,EAAiB,iBAAiBe,GAAOrB,GAAeuB,GAAgBI,CAAU,GAE1FK,EAAc,SAAS;GACzB,SAASC,GAAO;IACd,EAAsBA,GAAOnC,EAAM,WAAWE,CAAa;GAC7D,UAAU;IAGR,AADI2B,KAAYrB,EAAiB,eAAeqB,CAAU,GAC1D,EAAkB,QAAQ;GAC5B;EACF;;;;IAKU5B,EAAA,YADRnB,EAAA,GAAAG,EAcmCC,GAAA;;KAZhC,aAAWe,EAAA;;KAEZ,SAAAd,QASc,CATdC,EAScgD,GAAA;MARZ,MAAK;MACL,OAAM;MACN,WAAQ;MACP,SAAS1B,EAAA;MACT,UAAUE,EAAA;MACV,SAAKvB,EAAOgC,GAAM,CAAA,MAAA,CAAA;;MAEnB,SAAAlC,QAA6B,CAA1BG,EAAAC,EAAAC,EAAAwD,CAAA,CAAC,CAAA,oBAAA,CAAA,GAAA,CAAA,C;;;;;IAIA/C,EAAA,YAAYW,EAAA,SADpB9B,EAAA,GAAAC,EAMM,OANNe,GAMMP,EADDC,EAAAwD,CAAA,CAAC,CAAA,sDAAA,CAAA,GAAA,CAAA,K;IAEN5D,EAGEM,GAAA;KAFC,cAAYO,EAAA;KACZ,eAAaT,EAAAU,CAAA"}