@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
@@ -12,6 +12,32 @@ export declare const CollabStatus: {
12
12
  readonly Active: "active";
13
13
  };
14
14
  export type CollabStatusType = (typeof CollabStatus)[keyof typeof CollabStatus];
15
+ /**
16
+ * What `beforeReconnect` tells the library after the server refused the connection:
17
+ * - `ready`: connect again (a resolved `void` means the same),
18
+ * - `retryLater`: no point now (e.g. the token refresh failed on the network); the library retries on its own,
19
+ * - `sessionEnded`, `identityChanged`: no point until the user acts.
20
+ */
21
+ export declare const CollabReconnectVerdict: {
22
+ readonly Ready: "ready";
23
+ readonly RetryLater: "retryLater";
24
+ readonly SessionEnded: "sessionEnded";
25
+ readonly IdentityChanged: "identityChanged";
26
+ };
27
+ export type CollabReconnectVerdictType = (typeof CollabReconnectVerdict)[keyof typeof CollabReconnectVerdict];
28
+ /**
29
+ * `reconnecting` and `waitingForNetwork` recover on their own; `sessionEnded`, `identityChanged` and `rejected`
30
+ * wait for the user (`reconnectCollab()` or a reload).
31
+ */
32
+ export declare const CollabConnectionState: {
33
+ readonly Connected: "connected";
34
+ readonly Reconnecting: "reconnecting";
35
+ readonly WaitingForNetwork: "waitingForNetwork";
36
+ readonly SessionEnded: "sessionEnded";
37
+ readonly IdentityChanged: "identityChanged";
38
+ readonly Rejected: "rejected";
39
+ };
40
+ export type CollabConnectionStateType = (typeof CollabConnectionState)[keyof typeof CollabConnectionState];
15
41
  export interface CollabRoomInfo {
16
42
  name: CollabRoom;
17
43
  moderator: CollabUserIdNullable;
@@ -96,14 +122,14 @@ export interface CollabRoomOptions {
96
122
  editors?: CollabFieldName[];
97
123
  }
98
124
  /**
99
- * How this client waits for a join or a leave. Kept apart from `CollabRoomOptions`, which the server stores as the
100
- * room's.
125
+ * How this client waits for a join or leave ack.
126
+ * Separate from `CollabRoomOptions`, which the server stores as room options.
101
127
  */
102
128
  export interface CollabJoinAckOptions {
103
129
  /**
104
- * Milliseconds to wait for the server's answer before the join fails or the leave resolves. The server may still
105
- * finish one the client has given up on; a caller that cleans up or joins again behind it waits longer than the
106
- * server can take.
130
+ * Milliseconds to wait for the server before the join fails or the leave resolves.
131
+ * The server may still finish an operation the client gave up on. A caller that
132
+ * cleans up or rejoins afterwards should wait longer than the server can take.
107
133
  */
108
134
  ackTimeout?: number;
109
135
  }
@@ -3,35 +3,47 @@ var e = {
3
3
  Inactive: "inactive",
4
4
  Active: "active"
5
5
  }, t = {
6
+ Ready: "ready",
7
+ RetryLater: "retryLater",
8
+ SessionEnded: "sessionEnded",
9
+ IdentityChanged: "identityChanged"
10
+ }, n = {
11
+ Connected: "connected",
12
+ Reconnecting: "reconnecting",
13
+ WaitingForNetwork: "waitingForNetwork",
14
+ SessionEnded: "sessionEnded",
15
+ IdentityChanged: "identityChanged",
16
+ Rejected: "rejected"
17
+ }, r = {
6
18
  Ok: "ok",
7
19
  Occupied: "occupied",
8
20
  Failed: "failed"
9
21
  };
10
- function n(e) {
11
- return e.status === t.Ok;
22
+ function i(e) {
23
+ return e.status === r.Ok;
12
24
  }
13
- var r = {
25
+ var a = {
14
26
  Ok: "ok",
15
27
  Failed: "failed"
16
28
  };
17
- function i(e) {
18
- return e.status === r.Ok;
29
+ function o(e) {
30
+ return e.status === a.Ok;
19
31
  }
20
- function a(e) {
21
- return e.status === r.Failed;
32
+ function s(e) {
33
+ return e.status === a.Failed;
22
34
  }
23
- var o = {
35
+ var c = {
24
36
  Free: "free",
25
37
  Moderated: "moderated"
26
- }, s = {
38
+ }, l = {
27
39
  Ok: "ok",
28
40
  AlreadyRequested: "alreadyRequested",
29
41
  Failed: "failed"
30
- }, c = {
42
+ }, u = {
31
43
  Ok: "ok",
32
44
  AlreadyRequested: "alreadyRequested",
33
45
  Failed: "failed"
34
46
  };
35
- export { t as CollabAccessRoomStatus, r as CollabChangeRoomLockStatus, c as CollabRequestToJoinStatus, s as CollabRequestToTakeModerationStatus, o as CollabRoomJoinStrategy, e as CollabStatus, a as isCollabFailedChangeRoomLockCallback, n as isCollabSuccessAccessRoomCallback, i as isCollabSuccessChangeRoomLockCallback };
47
+ export { r as CollabAccessRoomStatus, a as CollabChangeRoomLockStatus, n as CollabConnectionState, t as CollabReconnectVerdict, u as CollabRequestToJoinStatus, l as CollabRequestToTakeModerationStatus, c as CollabRoomJoinStrategy, e as CollabStatus, s as isCollabFailedChangeRoomLockCallback, i as isCollabSuccessAccessRoomCallback, o as isCollabSuccessChangeRoomLockCallback };
36
48
 
37
49
  //# sourceMappingURL=Collab.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Collab.js","names":["CollabStatus","CollabAccessRoomStatus","isCollabSuccessAccessRoomCallback","callback","CollabChangeRoomLockStatus","isCollabSuccessChangeRoomLockCallback","isCollabFailedChangeRoomLockCallback","CollabRoomJoinStrategy","CollabRequestToTakeModerationStatus","CollabRequestToJoinStatus"],"sources":["../../../../src/domains/collab/types/Collab.ts"],"sourcesContent":["import type { CollabCachedUsersMap } from '@/domains/collab/composables/collabHelpers'\n\nexport type CollabUserId = number\nexport type CollabUserIdNullable = number | null\n\nexport type CollabRoom = string\n\nexport type CollabComponentConfig =\n | undefined\n | {\n room: CollabRoom\n field: CollabFieldName\n cachedUsers: CollabCachedUsersMap\n }\n\nexport const CollabStatus = {\n Inactive: 'inactive',\n Active: 'active',\n} as const\nexport type CollabStatusType = (typeof CollabStatus)[keyof typeof CollabStatus]\n\nexport interface CollabRoomInfo {\n name: CollabRoom\n moderator: CollabUserIdNullable\n users: CollabUserId[]\n status: CollabStatusType\n options: CollabRoomOptions\n}\n\nexport interface CollabRoomsInfo extends Record<CollabRoom, CollabRoomInfo> {}\n\nexport interface CollabFieldDataEnvelope {\n type: 'scalar' | 'json'\n user: CollabUserId\n value: CollabFieldData\n}\n\nexport type CollabFieldData = unknown\nexport type CollabFieldName = string\nexport type CollabFieldLock = CollabUserIdNullable\n\nexport interface CollabRoomLocks extends Record<CollabFieldName, CollabFieldLock> {}\n\nexport interface CollabRoomData extends Record<CollabFieldName, CollabFieldDataEnvelope> {}\n\nexport interface CollabRoomPlainData extends Record<CollabFieldName, CollabFieldData> {}\n\nexport const CollabAccessRoomStatus = {\n Ok: 'ok',\n Occupied: 'occupied',\n Failed: 'failed',\n} as const\nexport type CollabAccessRoomStatusType = (typeof CollabAccessRoomStatus)[keyof typeof CollabAccessRoomStatus]\n\nexport interface CollabRoomInfoCallback {\n room: CollabRoomInfo\n}\n\ninterface CollabAccessRoomCallback {\n status: CollabAccessRoomStatusType\n}\n\nexport interface CollabSuccessAccessRoomCallback extends CollabAccessRoomCallback, CollabRoomInfoCallback {\n status: typeof CollabAccessRoomStatus.Ok\n}\n\nexport interface CollabOccupiedAccessRoomCallback extends CollabAccessRoomCallback, CollabRoomInfoCallback {\n status: typeof CollabAccessRoomStatus.Occupied\n}\n\nexport interface CollabFailedAccessRoomCallback extends CollabAccessRoomCallback {\n status: typeof CollabAccessRoomStatus.Failed\n reason: string\n}\n\nexport type CollabAccessRoomCallbackTypes =\n | CollabSuccessAccessRoomCallback\n | CollabOccupiedAccessRoomCallback\n | CollabFailedAccessRoomCallback\n\nexport function isCollabSuccessAccessRoomCallback(\n callback: CollabAccessRoomCallbackTypes\n): callback is CollabSuccessAccessRoomCallback {\n return callback.status === CollabAccessRoomStatus.Ok\n}\n\nexport function isCollabOccupiedAccessRoomCallback(\n callback: CollabAccessRoomCallbackTypes\n): callback is CollabSuccessAccessRoomCallback {\n return callback.status === CollabAccessRoomStatus.Occupied\n}\n\nexport const CollabChangeRoomLockStatus = {\n Ok: 'ok',\n Failed: 'failed',\n} as const\nexport type CollabChangeRoomLockStatusType =\n (typeof CollabChangeRoomLockStatus)[keyof typeof CollabChangeRoomLockStatus]\n\nexport interface CollabRoomLocksInfoCallback {\n locks: CollabRoomLocks | undefined | null\n}\n\ninterface CollabChangeRoomLocksInfoCallback {\n status: CollabChangeRoomLockStatusType\n}\n\nexport interface CollabSuccessChangeRoomLockCallback\n extends CollabChangeRoomLocksInfoCallback, CollabRoomLocksInfoCallback {\n status: typeof CollabChangeRoomLockStatus.Ok\n locks: CollabRoomLocks | undefined | null\n}\n\nexport interface CollabFailedChangeRoomLockCallback extends CollabChangeRoomLocksInfoCallback {\n status: typeof CollabChangeRoomLockStatus.Failed\n reason: string\n}\n\nexport type CollabChangeRoomLockCallbackTypes = CollabSuccessChangeRoomLockCallback | CollabFailedChangeRoomLockCallback\n\nexport function isCollabSuccessChangeRoomLockCallback(\n callback: CollabChangeRoomLockCallbackTypes\n): callback is CollabSuccessChangeRoomLockCallback {\n return callback.status === CollabChangeRoomLockStatus.Ok\n}\n\nexport function isCollabFailedChangeRoomLockCallback(\n callback: CollabChangeRoomLockCallbackTypes\n): callback is CollabFailedChangeRoomLockCallback {\n return callback.status === CollabChangeRoomLockStatus.Failed\n}\n\nexport interface CollabFieldLockOptions {\n forceFailure?: boolean\n}\n\nexport const CollabRoomJoinStrategy = {\n Free: 'free',\n Moderated: 'moderated',\n} as const\nexport type CollabRoomJoinStrategyType = (typeof CollabRoomJoinStrategy)[keyof typeof CollabRoomJoinStrategy]\n\nexport interface CollabRoomOptions {\n joinStrategy?: CollabRoomJoinStrategyType\n allowedSameUser?: boolean\n editors?: CollabFieldName[]\n}\n\n/**\n * How this client waits for a join or a leave. Kept apart from `CollabRoomOptions`, which the server stores as the\n * room's.\n */\nexport interface CollabJoinAckOptions {\n /**\n * Milliseconds to wait for the server's answer before the join fails or the leave resolves. The server may still\n * finish one the client has given up on; a caller that cleans up or joins again behind it waits longer than the\n * server can take.\n */\n ackTimeout?: number\n}\n\nexport const CollabRequestToTakeModerationStatus = {\n Ok: 'ok',\n AlreadyRequested: 'alreadyRequested',\n Failed: 'failed',\n} as const\nexport type CollabRequestToTakeModerationStatusType =\n (typeof CollabRequestToTakeModerationStatus)[keyof typeof CollabRequestToTakeModerationStatus]\n\nexport interface CollabRequestToTakeModerationStatusCallback {\n status: CollabRequestToTakeModerationStatusType\n}\n\nexport const CollabRequestToJoinStatus = {\n Ok: 'ok',\n AlreadyRequested: 'alreadyRequested',\n Failed: 'failed',\n} as const\nexport type CollabRequestToJoinStatusType = (typeof CollabRequestToJoinStatus)[keyof typeof CollabRequestToJoinStatus]\n\nexport interface CollabRequestToJoinStatusCallback {\n status: CollabRequestToJoinStatusType\n}\n\nexport interface CollabClientToServerEvents {\n subscribeCollabRoomInfo: (room: CollabRoom, callback: (data: CollabRoomInfoCallback) => void) => void\n unsubscribeCollabRoomInfo: (room: CollabRoom, callback: (data: CollabRoomInfoCallback) => void) => void\n joinCollabRoom: (\n room: CollabRoom,\n options: CollabRoomOptions,\n callback: (data: CollabAccessRoomCallbackTypes) => void\n ) => void\n leaveCollabRoom: (room: CollabRoom, callback: (data: CollabAccessRoomCallbackTypes) => void) => void\n acquireFieldLock: (\n room: CollabRoom,\n field: CollabFieldName,\n options: CollabFieldLockOptions,\n callback: (data: CollabChangeRoomLockCallbackTypes) => void\n ) => void\n releaseFieldLock: (\n room: CollabRoom,\n field: CollabFieldName,\n changedData: unknown,\n options: CollabFieldLockOptions,\n callback: (data: CollabChangeRoomLockCallbackTypes) => void\n ) => void\n changeFieldData: (\n room: CollabRoom,\n field: CollabFieldName,\n changedData: unknown,\n callback: (data: CollabChangeRoomLockCallbackTypes) => void\n ) => void\n requestToJoin: (\n room: CollabRoom,\n timestamp: number,\n callback: (data: CollabRequestToJoinStatusCallback) => void\n ) => void\n approveRequestToJoin: (room: CollabRoom, userId: CollabUserId) => void\n rejectRequestToJoin: (room: CollabRoom, userId: CollabUserId) => void\n enteredCollabRoom: (room: CollabRoom) => void\n requestToTakeModeration: (\n room: CollabRoom,\n timestamp: number,\n callback: (data: CollabRequestToTakeModerationStatusCallback) => void\n ) => void\n approveRequestToTakeModeration: (room: CollabRoom) => void\n rejectRequestToTakeModeration: (room: CollabRoom) => void\n kickUserFromRoom: (room: CollabRoom, userId: CollabUserId) => void\n purgeRoom: (room: CollabRoom) => void\n transferModeration: (room: CollabRoom, userId: CollabUserId) => void\n fetchRoomsInfo: (rooms: CollabRoom[], callback: (data: CollabRoomsInfo) => void) => void\n}\n\nexport interface CollabServerToClientEvents {\n collabRoomChanged: (room: CollabRoomInfo) => void\n collabRoomLocksChanged: (room: CollabRoom, locks: CollabRoomLocks) => void\n collabRoomDataChanged: (room: CollabRoom, data: CollabRoomData) => void\n requestToJoin: (room: CollabRoom, user: CollabUserId, timestamp: number) => void\n approvedRequestToJoin: (room: CollabRoom) => void\n rejectedRequestToJoin: (room: CollabRoom) => void\n startCollab: (room: CollabRoom, callback: (data: CollabRoomPlainData) => void) => void\n requestToTakeModeration: (room: CollabRoom, user: CollabUserId, timestamp: number) => void\n transferredModeration: (room: CollabRoom) => void\n approvedRequestToTakeModeration: (room: CollabRoom) => void\n rejectedRequestToTakeModeration: (room: CollabRoom) => void\n kickedFromRoom: (room: CollabRoom) => void\n}\n\nexport interface CollabConfig extends CollabRoomOptions {\n room: CollabRoom\n joinStrategy: CollabRoomJoinStrategyType\n occupiedOrKickedRedirectToRoute: string\n editors: CollabFieldName[]\n}\n\nexport interface CollabDelayedRequest {\n userId: CollabUserId\n timestamp: number\n}\n"],"mappings":";AAeA,IAAaA,IAAe;CAC1B,UAAU;CACV,QAAQ;AACV,GA6BaC,IAAyB;CACpC,IAAI;CACJ,UAAU;CACV,QAAQ;AACV;AA6BA,SAAgBC,EACd,GAC6C;CAC7C,OAAOC,EAAS,WAAWF,EAAuB;AACpD;AAQA,IAAaG,IAA6B;CACxC,IAAI;CACJ,QAAQ;AACV;AAyBA,SAAgBC,EACd,GACiD;CACjD,OAAOF,EAAS,WAAWC,EAA2B;AACxD;AAEA,SAAgBE,EACd,GACgD;CAChD,OAAOH,EAAS,WAAWC,EAA2B;AACxD;AAMA,IAAaG,IAAyB;CACpC,MAAM;CACN,WAAW;AACb,GAsBaC,IAAsC;CACjD,IAAI;CACJ,kBAAkB;CAClB,QAAQ;AACV,GAQaC,IAA4B;CACvC,IAAI;CACJ,kBAAkB;CAClB,QAAQ;AACV"}
1
+ {"version":3,"file":"Collab.js","names":["CollabStatus","CollabReconnectVerdict","CollabConnectionState","CollabAccessRoomStatus","isCollabSuccessAccessRoomCallback","callback","CollabChangeRoomLockStatus","isCollabSuccessChangeRoomLockCallback","isCollabFailedChangeRoomLockCallback","CollabRoomJoinStrategy","CollabRequestToTakeModerationStatus","CollabRequestToJoinStatus"],"sources":["../../../../src/domains/collab/types/Collab.ts"],"sourcesContent":["import type { CollabCachedUsersMap } from '@/domains/collab/composables/collabHelpers'\n\nexport type CollabUserId = number\nexport type CollabUserIdNullable = number | null\n\nexport type CollabRoom = string\n\nexport type CollabComponentConfig =\n | undefined\n | {\n room: CollabRoom\n field: CollabFieldName\n cachedUsers: CollabCachedUsersMap\n }\n\nexport const CollabStatus = {\n Inactive: 'inactive',\n Active: 'active',\n} as const\nexport type CollabStatusType = (typeof CollabStatus)[keyof typeof CollabStatus]\n\n/**\n * What `beforeReconnect` tells the library after the server refused the connection:\n * - `ready`: connect again (a resolved `void` means the same),\n * - `retryLater`: no point now (e.g. the token refresh failed on the network); the library retries on its own,\n * - `sessionEnded`, `identityChanged`: no point until the user acts.\n */\nexport const CollabReconnectVerdict = {\n Ready: 'ready',\n RetryLater: 'retryLater',\n SessionEnded: 'sessionEnded',\n IdentityChanged: 'identityChanged',\n} as const\nexport type CollabReconnectVerdictType = (typeof CollabReconnectVerdict)[keyof typeof CollabReconnectVerdict]\n\n/**\n * `reconnecting` and `waitingForNetwork` recover on their own; `sessionEnded`, `identityChanged` and `rejected`\n * wait for the user (`reconnectCollab()` or a reload).\n */\nexport const CollabConnectionState = {\n Connected: 'connected',\n Reconnecting: 'reconnecting',\n WaitingForNetwork: 'waitingForNetwork',\n SessionEnded: 'sessionEnded',\n IdentityChanged: 'identityChanged',\n Rejected: 'rejected',\n} as const\nexport type CollabConnectionStateType = (typeof CollabConnectionState)[keyof typeof CollabConnectionState]\n\nexport interface CollabRoomInfo {\n name: CollabRoom\n moderator: CollabUserIdNullable\n users: CollabUserId[]\n status: CollabStatusType\n options: CollabRoomOptions\n}\n\nexport interface CollabRoomsInfo extends Record<CollabRoom, CollabRoomInfo> {}\n\nexport interface CollabFieldDataEnvelope {\n type: 'scalar' | 'json'\n user: CollabUserId\n value: CollabFieldData\n}\n\nexport type CollabFieldData = unknown\nexport type CollabFieldName = string\nexport type CollabFieldLock = CollabUserIdNullable\n\nexport interface CollabRoomLocks extends Record<CollabFieldName, CollabFieldLock> {}\n\nexport interface CollabRoomData extends Record<CollabFieldName, CollabFieldDataEnvelope> {}\n\nexport interface CollabRoomPlainData extends Record<CollabFieldName, CollabFieldData> {}\n\nexport const CollabAccessRoomStatus = {\n Ok: 'ok',\n Occupied: 'occupied',\n Failed: 'failed',\n} as const\nexport type CollabAccessRoomStatusType = (typeof CollabAccessRoomStatus)[keyof typeof CollabAccessRoomStatus]\n\nexport interface CollabRoomInfoCallback {\n room: CollabRoomInfo\n}\n\ninterface CollabAccessRoomCallback {\n status: CollabAccessRoomStatusType\n}\n\nexport interface CollabSuccessAccessRoomCallback extends CollabAccessRoomCallback, CollabRoomInfoCallback {\n status: typeof CollabAccessRoomStatus.Ok\n}\n\nexport interface CollabOccupiedAccessRoomCallback extends CollabAccessRoomCallback, CollabRoomInfoCallback {\n status: typeof CollabAccessRoomStatus.Occupied\n}\n\nexport interface CollabFailedAccessRoomCallback extends CollabAccessRoomCallback {\n status: typeof CollabAccessRoomStatus.Failed\n reason: string\n}\n\nexport type CollabAccessRoomCallbackTypes =\n | CollabSuccessAccessRoomCallback\n | CollabOccupiedAccessRoomCallback\n | CollabFailedAccessRoomCallback\n\nexport function isCollabSuccessAccessRoomCallback(\n callback: CollabAccessRoomCallbackTypes\n): callback is CollabSuccessAccessRoomCallback {\n return callback.status === CollabAccessRoomStatus.Ok\n}\n\nexport function isCollabOccupiedAccessRoomCallback(\n callback: CollabAccessRoomCallbackTypes\n): callback is CollabSuccessAccessRoomCallback {\n return callback.status === CollabAccessRoomStatus.Occupied\n}\n\nexport const CollabChangeRoomLockStatus = {\n Ok: 'ok',\n Failed: 'failed',\n} as const\nexport type CollabChangeRoomLockStatusType =\n (typeof CollabChangeRoomLockStatus)[keyof typeof CollabChangeRoomLockStatus]\n\nexport interface CollabRoomLocksInfoCallback {\n locks: CollabRoomLocks | undefined | null\n}\n\ninterface CollabChangeRoomLocksInfoCallback {\n status: CollabChangeRoomLockStatusType\n}\n\nexport interface CollabSuccessChangeRoomLockCallback\n extends CollabChangeRoomLocksInfoCallback, CollabRoomLocksInfoCallback {\n status: typeof CollabChangeRoomLockStatus.Ok\n locks: CollabRoomLocks | undefined | null\n}\n\nexport interface CollabFailedChangeRoomLockCallback extends CollabChangeRoomLocksInfoCallback {\n status: typeof CollabChangeRoomLockStatus.Failed\n reason: string\n}\n\nexport type CollabChangeRoomLockCallbackTypes = CollabSuccessChangeRoomLockCallback | CollabFailedChangeRoomLockCallback\n\nexport function isCollabSuccessChangeRoomLockCallback(\n callback: CollabChangeRoomLockCallbackTypes\n): callback is CollabSuccessChangeRoomLockCallback {\n return callback.status === CollabChangeRoomLockStatus.Ok\n}\n\nexport function isCollabFailedChangeRoomLockCallback(\n callback: CollabChangeRoomLockCallbackTypes\n): callback is CollabFailedChangeRoomLockCallback {\n return callback.status === CollabChangeRoomLockStatus.Failed\n}\n\nexport interface CollabFieldLockOptions {\n forceFailure?: boolean\n}\n\nexport const CollabRoomJoinStrategy = {\n Free: 'free',\n Moderated: 'moderated',\n} as const\nexport type CollabRoomJoinStrategyType = (typeof CollabRoomJoinStrategy)[keyof typeof CollabRoomJoinStrategy]\n\nexport interface CollabRoomOptions {\n joinStrategy?: CollabRoomJoinStrategyType\n allowedSameUser?: boolean\n editors?: CollabFieldName[]\n}\n\n/**\n * How this client waits for a join or leave ack.\n * Separate from `CollabRoomOptions`, which the server stores as room options.\n */\nexport interface CollabJoinAckOptions {\n /**\n * Milliseconds to wait for the server before the join fails or the leave resolves.\n * The server may still finish an operation the client gave up on. A caller that\n * cleans up or rejoins afterwards should wait longer than the server can take.\n */\n ackTimeout?: number\n}\n\nexport const CollabRequestToTakeModerationStatus = {\n Ok: 'ok',\n AlreadyRequested: 'alreadyRequested',\n Failed: 'failed',\n} as const\nexport type CollabRequestToTakeModerationStatusType =\n (typeof CollabRequestToTakeModerationStatus)[keyof typeof CollabRequestToTakeModerationStatus]\n\nexport interface CollabRequestToTakeModerationStatusCallback {\n status: CollabRequestToTakeModerationStatusType\n}\n\nexport const CollabRequestToJoinStatus = {\n Ok: 'ok',\n AlreadyRequested: 'alreadyRequested',\n Failed: 'failed',\n} as const\nexport type CollabRequestToJoinStatusType = (typeof CollabRequestToJoinStatus)[keyof typeof CollabRequestToJoinStatus]\n\nexport interface CollabRequestToJoinStatusCallback {\n status: CollabRequestToJoinStatusType\n}\n\nexport interface CollabClientToServerEvents {\n subscribeCollabRoomInfo: (room: CollabRoom, callback: (data: CollabRoomInfoCallback) => void) => void\n unsubscribeCollabRoomInfo: (room: CollabRoom, callback: (data: CollabRoomInfoCallback) => void) => void\n joinCollabRoom: (\n room: CollabRoom,\n options: CollabRoomOptions,\n callback: (data: CollabAccessRoomCallbackTypes) => void\n ) => void\n leaveCollabRoom: (room: CollabRoom, callback: (data: CollabAccessRoomCallbackTypes) => void) => void\n acquireFieldLock: (\n room: CollabRoom,\n field: CollabFieldName,\n options: CollabFieldLockOptions,\n callback: (data: CollabChangeRoomLockCallbackTypes) => void\n ) => void\n releaseFieldLock: (\n room: CollabRoom,\n field: CollabFieldName,\n changedData: unknown,\n options: CollabFieldLockOptions,\n callback: (data: CollabChangeRoomLockCallbackTypes) => void\n ) => void\n changeFieldData: (\n room: CollabRoom,\n field: CollabFieldName,\n changedData: unknown,\n callback: (data: CollabChangeRoomLockCallbackTypes) => void\n ) => void\n requestToJoin: (\n room: CollabRoom,\n timestamp: number,\n callback: (data: CollabRequestToJoinStatusCallback) => void\n ) => void\n approveRequestToJoin: (room: CollabRoom, userId: CollabUserId) => void\n rejectRequestToJoin: (room: CollabRoom, userId: CollabUserId) => void\n enteredCollabRoom: (room: CollabRoom) => void\n requestToTakeModeration: (\n room: CollabRoom,\n timestamp: number,\n callback: (data: CollabRequestToTakeModerationStatusCallback) => void\n ) => void\n approveRequestToTakeModeration: (room: CollabRoom) => void\n rejectRequestToTakeModeration: (room: CollabRoom) => void\n kickUserFromRoom: (room: CollabRoom, userId: CollabUserId) => void\n purgeRoom: (room: CollabRoom) => void\n transferModeration: (room: CollabRoom, userId: CollabUserId) => void\n fetchRoomsInfo: (rooms: CollabRoom[], callback: (data: CollabRoomsInfo) => void) => void\n}\n\nexport interface CollabServerToClientEvents {\n collabRoomChanged: (room: CollabRoomInfo) => void\n collabRoomLocksChanged: (room: CollabRoom, locks: CollabRoomLocks) => void\n collabRoomDataChanged: (room: CollabRoom, data: CollabRoomData) => void\n requestToJoin: (room: CollabRoom, user: CollabUserId, timestamp: number) => void\n approvedRequestToJoin: (room: CollabRoom) => void\n rejectedRequestToJoin: (room: CollabRoom) => void\n startCollab: (room: CollabRoom, callback: (data: CollabRoomPlainData) => void) => void\n requestToTakeModeration: (room: CollabRoom, user: CollabUserId, timestamp: number) => void\n transferredModeration: (room: CollabRoom) => void\n approvedRequestToTakeModeration: (room: CollabRoom) => void\n rejectedRequestToTakeModeration: (room: CollabRoom) => void\n kickedFromRoom: (room: CollabRoom) => void\n}\n\nexport interface CollabConfig extends CollabRoomOptions {\n room: CollabRoom\n joinStrategy: CollabRoomJoinStrategyType\n occupiedOrKickedRedirectToRoute: string\n editors: CollabFieldName[]\n}\n\nexport interface CollabDelayedRequest {\n userId: CollabUserId\n timestamp: number\n}\n"],"mappings":";AAeA,IAAaA,IAAe;CAC1B,UAAU;CACV,QAAQ;AACV,GASaC,IAAyB;CACpC,OAAO;CACP,YAAY;CACZ,cAAc;CACd,iBAAiB;AACnB,GAOaC,IAAwB;CACnC,WAAW;CACX,cAAc;CACd,mBAAmB;CACnB,cAAc;CACd,iBAAiB;CACjB,UAAU;AACZ,GA6BaC,IAAyB;CACpC,IAAI;CACJ,UAAU;CACV,QAAQ;AACV;AA6BA,SAAgBC,EACd,GAC6C;CAC7C,OAAOC,EAAS,WAAWF,EAAuB;AACpD;AAQA,IAAaG,IAA6B;CACxC,IAAI;CACJ,QAAQ;AACV;AAyBA,SAAgBC,EACd,GACiD;CACjD,OAAOF,EAAS,WAAWC,EAA2B;AACxD;AAEA,SAAgBE,EACd,GACgD;CAChD,OAAOH,EAAS,WAAWC,EAA2B;AACxD;AAMA,IAAaG,IAAyB;CACpC,MAAM;CACN,WAAW;AACb,GAsBaC,IAAsC;CACjD,IAAI;CACJ,kBAAkB;CAClB,QAAQ;AACV,GAQaC,IAA4B;CACvC,IAAI;CACJ,kBAAkB;CAClB,QAAQ;AACV"}
@@ -1 +1 @@
1
- {"version":3,"file":"ACustomDataForm.js","names":["_sfc_main","ACustomDataForm_vue_vue_type_script_setup_true_lang_default","ACustomDataForm_default"],"sources":["../../../../src/domains/customDataForm/components/ACustomDataForm.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, ref, watch } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport useVuelidate from '@vuelidate/core'\nimport type { CustomDataFormElement } from '@/domains/customDataForm/types/CustomDataForm'\nimport type { ValidationScope } from '@/shared/types/Validation'\nimport { useCustomDataForm } from '@/domains/customDataForm/composables/useCustomDataForm'\nimport ACustomFormElement from '@/domains/customDataForm/components/ACustomDataFormElement.vue'\nimport ACustomDataFormHiddenPart from '@/domains/customDataForm/components/ACustomDataFormHiddenPart.vue'\nimport ARow from '@/domains/ui/components/ARow.vue'\n\nconst props = withDefaults(\n defineProps<{\n modelValue: { [key: string]: any }\n elements: CustomDataFormElement[]\n validationScope?: ValidationScope\n pinnedCount?: number\n readonly?: boolean\n }>(),\n {\n validationScope: undefined,\n pinnedCount: 1000,\n readonly: false,\n }\n)\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', data: any): void\n (e: 'anyChange'): void\n}>()\n\nconst { t } = useI18n()\n\n// \"Show all\" and \"hide\" are one choice for every form on the page, as it has been.\nconst { showAll, hideRequests } = useCustomDataForm()\n\n// What fails behind \"show all\" is shown whatever that choice is, in the form it fails in, and stays\n// open once the user has fixed it (it would close under the cursor otherwise).\nconst hiddenError = ref(false)\nconst revealed = ref(false)\nconst onHiddenError = (isError: boolean) => {\n hiddenError.value = isError\n if (isError) revealed.value = true\n}\nconst hiddenVisible = computed(() => showAll.value || revealed.value)\n// Not while something in it fails: such a form stays open when another one hides, and cannot hide itself.\nwatch(hideRequests, () => {\n revealed.value = hiddenError.value\n})\nconst hideDisabled = computed(() => hiddenVisible.value && hiddenError.value)\nconst toggleForm = () => {\n if (!hiddenVisible.value) {\n showAll.value = true\n return\n }\n showAll.value = false\n hideRequests.value++\n}\n\nconst updateModelValue = (data: { property: string; value: any }) => {\n const updated = {} as { [key: string]: any }\n updated[data.property] = data.value\n emit('update:modelValue', { ...props.modelValue, ...updated })\n emit('anyChange')\n}\n\nconst elementsPinned = computed(() => {\n return props.elements.slice(0, props.pinnedCount)\n})\n\nconst elementsOther = computed(() => {\n return props.elements.slice(props.pinnedCount)\n})\n\nconst showHideButtonText = computed(() => {\n return hiddenVisible.value\n ? t('common.damImage.asset.detail.metadataToggle.hide')\n : t('common.damImage.asset.detail.metadataToggle.show')\n})\nconst showHideButtonIcon = computed(() => {\n return hiddenVisible.value ? 'mdi-minus' : 'mdi-plus'\n})\n\nconst enableShowHide = computed(() => {\n return props.elements.length > props.pinnedCount\n})\n\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst v$ = useVuelidate({ $scope: props.validationScope })\n\nconst validate = (): Promise<boolean> => {\n return v$.value.$validate()\n}\n\ndefineExpose({\n validate,\n})\n</script>\n\n<template>\n <div class=\"w-100\">\n <slot name=\"before-pinned\" />\n <VRow\n v-for=\"element in elementsPinned\"\n :key=\"element.id\"\n density=\"compact\"\n class=\"mt-1\"\n >\n <VCol>\n <ARow\n v-if=\"readonly\"\n :title=\"element.name\"\n >\n {{ modelValue[element.property] }}\n </ARow>\n <ACustomFormElement\n v-else\n :config=\"element\"\n :model-value=\"modelValue[element.property]\"\n :validation-scope=\"validationScope\"\n @update:model-value=\"updateModelValue\"\n />\n </VCol>\n </VRow>\n <slot name=\"after-pinned\" />\n </div>\n <ACustomDataFormHiddenPart\n :visible=\"hiddenVisible\"\n :validation-scope=\"validationScope\"\n @error=\"onHiddenError\"\n >\n <VRow\n v-for=\"element in elementsOther\"\n :key=\"element.id\"\n density=\"compact\"\n class=\"mt-1\"\n >\n <VCol>\n <ARow\n v-if=\"readonly\"\n :title=\"element.name\"\n >\n {{ modelValue[element.property] }}\n </ARow>\n <ACustomFormElement\n v-else\n :config=\"element\"\n :model-value=\"modelValue[element.property]\"\n :validation-scope=\"validationScope\"\n @update:model-value=\"updateModelValue\"\n />\n </VCol>\n </VRow>\n </ACustomDataFormHiddenPart>\n <VBtn\n v-if=\"enableShowHide\"\n variant=\"text\"\n size=\"small\"\n class=\"my-2\"\n :disabled=\"hideDisabled\"\n @click=\"toggleForm\"\n >\n <VIcon :icon=\"showHideButtonIcon\" />\n {{ showHideButtonText }}\n </VBtn>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"ACustomDataForm.js","names":["_sfc_main","ACustomDataForm_vue_vue_type_script_setup_true_lang_default","ACustomDataForm_default"],"sources":["../../../../src/domains/customDataForm/components/ACustomDataForm.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, ref, watch } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport useVuelidate from '@vuelidate/core'\nimport type { CustomDataFormElement } from '@/domains/customDataForm/types/CustomDataForm'\nimport type { ValidationScope } from '@/shared/types/Validation'\nimport { useCustomDataForm } from '@/domains/customDataForm/composables/useCustomDataForm'\nimport ACustomFormElement from '@/domains/customDataForm/components/ACustomDataFormElement.vue'\nimport ACustomDataFormHiddenPart from '@/domains/customDataForm/components/ACustomDataFormHiddenPart.vue'\nimport ARow from '@/domains/ui/components/ARow.vue'\n\nconst props = withDefaults(\n defineProps<{\n modelValue: { [key: string]: any }\n elements: CustomDataFormElement[]\n validationScope?: ValidationScope\n pinnedCount?: number\n readonly?: boolean\n }>(),\n {\n validationScope: undefined,\n pinnedCount: 1000,\n readonly: false,\n }\n)\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', data: any): void\n (e: 'anyChange'): void\n}>()\n\nconst { t } = useI18n()\n\n// \"Show all\" and \"hide\" are one shared choice for every form on the page.\nconst { showAll, hideRequests } = useCustomDataForm()\n\n// A failing field behind \"show all\" is shown regardless of that choice, in its own form.\n// It stays open after the user fixes it, so it does not close under the cursor.\nconst hiddenError = ref(false)\nconst revealed = ref(false)\nconst onHiddenError = (isError: boolean) => {\n hiddenError.value = isError\n if (isError) revealed.value = true\n}\nconst hiddenVisible = computed(() => showAll.value || revealed.value)\n// A form with a failing field stays open when another form hides, and cannot hide itself.\nwatch(hideRequests, () => {\n revealed.value = hiddenError.value\n})\nconst hideDisabled = computed(() => hiddenVisible.value && hiddenError.value)\nconst toggleForm = () => {\n if (!hiddenVisible.value) {\n showAll.value = true\n return\n }\n showAll.value = false\n hideRequests.value++\n}\n\nconst updateModelValue = (data: { property: string; value: any }) => {\n const updated = {} as { [key: string]: any }\n updated[data.property] = data.value\n emit('update:modelValue', { ...props.modelValue, ...updated })\n emit('anyChange')\n}\n\nconst elementsPinned = computed(() => {\n return props.elements.slice(0, props.pinnedCount)\n})\n\nconst elementsOther = computed(() => {\n return props.elements.slice(props.pinnedCount)\n})\n\nconst showHideButtonText = computed(() => {\n return hiddenVisible.value\n ? t('common.damImage.asset.detail.metadataToggle.hide')\n : t('common.damImage.asset.detail.metadataToggle.show')\n})\nconst showHideButtonIcon = computed(() => {\n return hiddenVisible.value ? 'mdi-minus' : 'mdi-plus'\n})\n\nconst enableShowHide = computed(() => {\n return props.elements.length > props.pinnedCount\n})\n\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst v$ = useVuelidate({ $scope: props.validationScope })\n\nconst validate = (): Promise<boolean> => {\n return v$.value.$validate()\n}\n\ndefineExpose({\n validate,\n})\n</script>\n\n<template>\n <div class=\"w-100\">\n <slot name=\"before-pinned\" />\n <VRow\n v-for=\"element in elementsPinned\"\n :key=\"element.id\"\n density=\"compact\"\n class=\"mt-1\"\n >\n <VCol>\n <ARow\n v-if=\"readonly\"\n :title=\"element.name\"\n >\n {{ modelValue[element.property] }}\n </ARow>\n <ACustomFormElement\n v-else\n :config=\"element\"\n :model-value=\"modelValue[element.property]\"\n :validation-scope=\"validationScope\"\n @update:model-value=\"updateModelValue\"\n />\n </VCol>\n </VRow>\n <slot name=\"after-pinned\" />\n </div>\n <ACustomDataFormHiddenPart\n :visible=\"hiddenVisible\"\n :validation-scope=\"validationScope\"\n @error=\"onHiddenError\"\n >\n <VRow\n v-for=\"element in elementsOther\"\n :key=\"element.id\"\n density=\"compact\"\n class=\"mt-1\"\n >\n <VCol>\n <ARow\n v-if=\"readonly\"\n :title=\"element.name\"\n >\n {{ modelValue[element.property] }}\n </ARow>\n <ACustomFormElement\n v-else\n :config=\"element\"\n :model-value=\"modelValue[element.property]\"\n :validation-scope=\"validationScope\"\n @update:model-value=\"updateModelValue\"\n />\n </VCol>\n </VRow>\n </ACustomDataFormHiddenPart>\n <VBtn\n v-if=\"enableShowHide\"\n variant=\"text\"\n size=\"small\"\n class=\"my-2\"\n :disabled=\"hideDisabled\"\n @click=\"toggleForm\"\n >\n <VIcon :icon=\"showHideButtonIcon\" />\n {{ showHideButtonText }}\n </VBtn>\n</template>\n"],"mappings":""}
@@ -9,12 +9,14 @@ type __VLS_Props = {
9
9
  pinnedCount?: number;
10
10
  readonly?: boolean;
11
11
  };
12
- declare var __VLS_1: {}, __VLS_29: {};
13
- type __VLS_Slots = {} & {
14
- 'before-pinned'?: (props: typeof __VLS_1) => any;
15
- } & {
16
- 'after-pinned'?: (props: typeof __VLS_29) => any;
12
+ declare const __VLS_template: () => {
13
+ __VLS_Slots: {
14
+ 'before-pinned'?: (props: {}) => any;
15
+ } & {
16
+ 'after-pinned'?: (props: {}) => any;
17
+ };
17
18
  };
19
+ type __VLS_Slots = ReturnType<typeof __VLS_template>['__VLS_Slots'];
18
20
  declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {
19
21
  validate: () => Promise<boolean>;
20
22
  }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
@@ -1 +1 @@
1
- {"version":3,"file":"ACustomDataForm.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","_Fragment","_createElementVNode","_renderSlot","_renderList","_createBlock","_component_VRow","_withCtx","_createVNode","_component_VCol","ARow","_createTextVNode","_toDisplayString","ACustomFormElement","ACustomDataFormHiddenPart","_component_VBtn","_component_VIcon","_createCommentVNode","ARow_default","ACustomDataFormElement_default","ACustomDataFormHiddenPart_default","useVuelidate","_hoisted_1","ACustomDataForm_vue_vue_type_script_setup_true_lang_default","__expose","__emit","props","__props","emit","useI18n","useCustomDataForm","hiddenError","ref","revealed","onHiddenError","isError","hiddenVisible","computed","showAll","hideRequests","hideDisabled","toggleForm","updateModelValue","updated","data","elementsPinned","elementsOther","showHideButtonText","t","showHideButtonIcon","enableShowHide","v$","openBlock","createElementBlock","Fragment","createElementVNode","renderSlot","_ctx","renderList","createBlock","VRow","element","withCtx","createVNode","VCol","createTextVNode","toDisplayString","VBtn","VIcon","createCommentVNode"],"sources":["../../../../src/domains/customDataForm/components/ACustomDataForm.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, ref, watch } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport useVuelidate from '@vuelidate/core'\nimport type { CustomDataFormElement } from '@/domains/customDataForm/types/CustomDataForm'\nimport type { ValidationScope } from '@/shared/types/Validation'\nimport { useCustomDataForm } from '@/domains/customDataForm/composables/useCustomDataForm'\nimport ACustomFormElement from '@/domains/customDataForm/components/ACustomDataFormElement.vue'\nimport ACustomDataFormHiddenPart from '@/domains/customDataForm/components/ACustomDataFormHiddenPart.vue'\nimport ARow from '@/domains/ui/components/ARow.vue'\n\nconst props = withDefaults(\n defineProps<{\n modelValue: { [key: string]: any }\n elements: CustomDataFormElement[]\n validationScope?: ValidationScope\n pinnedCount?: number\n readonly?: boolean\n }>(),\n {\n validationScope: undefined,\n pinnedCount: 1000,\n readonly: false,\n }\n)\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', data: any): void\n (e: 'anyChange'): void\n}>()\n\nconst { t } = useI18n()\n\n// \"Show all\" and \"hide\" are one choice for every form on the page, as it has been.\nconst { showAll, hideRequests } = useCustomDataForm()\n\n// What fails behind \"show all\" is shown whatever that choice is, in the form it fails in, and stays\n// open once the user has fixed it (it would close under the cursor otherwise).\nconst hiddenError = ref(false)\nconst revealed = ref(false)\nconst onHiddenError = (isError: boolean) => {\n hiddenError.value = isError\n if (isError) revealed.value = true\n}\nconst hiddenVisible = computed(() => showAll.value || revealed.value)\n// Not while something in it fails: such a form stays open when another one hides, and cannot hide itself.\nwatch(hideRequests, () => {\n revealed.value = hiddenError.value\n})\nconst hideDisabled = computed(() => hiddenVisible.value && hiddenError.value)\nconst toggleForm = () => {\n if (!hiddenVisible.value) {\n showAll.value = true\n return\n }\n showAll.value = false\n hideRequests.value++\n}\n\nconst updateModelValue = (data: { property: string; value: any }) => {\n const updated = {} as { [key: string]: any }\n updated[data.property] = data.value\n emit('update:modelValue', { ...props.modelValue, ...updated })\n emit('anyChange')\n}\n\nconst elementsPinned = computed(() => {\n return props.elements.slice(0, props.pinnedCount)\n})\n\nconst elementsOther = computed(() => {\n return props.elements.slice(props.pinnedCount)\n})\n\nconst showHideButtonText = computed(() => {\n return hiddenVisible.value\n ? t('common.damImage.asset.detail.metadataToggle.hide')\n : t('common.damImage.asset.detail.metadataToggle.show')\n})\nconst showHideButtonIcon = computed(() => {\n return hiddenVisible.value ? 'mdi-minus' : 'mdi-plus'\n})\n\nconst enableShowHide = computed(() => {\n return props.elements.length > props.pinnedCount\n})\n\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst v$ = useVuelidate({ $scope: props.validationScope })\n\nconst validate = (): Promise<boolean> => {\n return v$.value.$validate()\n}\n\ndefineExpose({\n validate,\n})\n</script>\n\n<template>\n <div class=\"w-100\">\n <slot name=\"before-pinned\" />\n <VRow\n v-for=\"element in elementsPinned\"\n :key=\"element.id\"\n density=\"compact\"\n class=\"mt-1\"\n >\n <VCol>\n <ARow\n v-if=\"readonly\"\n :title=\"element.name\"\n >\n {{ modelValue[element.property] }}\n </ARow>\n <ACustomFormElement\n v-else\n :config=\"element\"\n :model-value=\"modelValue[element.property]\"\n :validation-scope=\"validationScope\"\n @update:model-value=\"updateModelValue\"\n />\n </VCol>\n </VRow>\n <slot name=\"after-pinned\" />\n </div>\n <ACustomDataFormHiddenPart\n :visible=\"hiddenVisible\"\n :validation-scope=\"validationScope\"\n @error=\"onHiddenError\"\n >\n <VRow\n v-for=\"element in elementsOther\"\n :key=\"element.id\"\n density=\"compact\"\n class=\"mt-1\"\n >\n <VCol>\n <ARow\n v-if=\"readonly\"\n :title=\"element.name\"\n >\n {{ modelValue[element.property] }}\n </ARow>\n <ACustomFormElement\n v-else\n :config=\"element\"\n :model-value=\"modelValue[element.property]\"\n :validation-scope=\"validationScope\"\n @update:model-value=\"updateModelValue\"\n />\n </VCol>\n </VRow>\n </ACustomDataFormHiddenPart>\n <VBtn\n v-if=\"enableShowHide\"\n variant=\"text\"\n size=\"small\"\n class=\"my-2\"\n :disabled=\"hideDisabled\"\n @click=\"toggleForm\"\n >\n <VIcon :icon=\"showHideButtonIcon\" />\n {{ showHideButtonText }}\n </VBtn>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAWA,IAAM2B,IAAQC,GAeRC,IAAOH,GAKP,EAAE,SAAMI,EAAQ,GAGhB,EAAE,YAAS,oBAAiBC,EAAkB,GAI9CC,IAAcC,EAAI,EAAK,GACvBC,IAAWD,EAAI,EAAK,GACpBE,KAAiB,MAAqB;GAE1C,AADA,EAAY,QAAQC,GAChBA,MAAS,EAAS,QAAQ;EAChC,GACMC,IAAgBC,QAAeC,EAAQ,SAASL,EAAS,KAAK;EAEpE,EAAMM,SAAoB;GACxB,EAAS,QAAQR,EAAY;EAC/B,CAAC;EACD,IAAMS,IAAeH,QAAeD,EAAc,SAASL,EAAY,KAAK,GACtEU,UAAmB;GACvB,AAAKL,EAAc,SAInB,EAAQ,QAAQ,IAChB,EAAa,WAJX,EAAQ,QAAQ;EAKpB,GAEMM,KAAoB,MAA2C;GACnE,IAAMC,IAAU,CAAC;GAGjB,AAFA,EAAQC,EAAK,YAAYA,EAAK,OAC9BhB,EAAK,qBAAqB;IAAE,GAAGF,EAAM;IAAY,GAAGiB;GAAQ,CAAC,GAC7Df,EAAK,WAAW;EAClB,GAEMiB,IAAiBR,QACdX,EAAM,SAAS,MAAM,GAAGA,EAAM,WAAW,CACjD,GAEKoB,IAAgBT,QACbX,EAAM,SAAS,MAAMA,EAAM,WAAW,CAC9C,GAEKqB,IAAqBV,QAClBD,EAAc,QACjBY,EAAE,kDAAkD,IACpDA,EAAE,kDAAkD,CACzD,GACKC,IAAqBZ,QAClBD,EAAc,QAAQ,cAAc,UAC5C,GAEKc,IAAiBb,QACdX,EAAM,SAAS,SAASA,EAAM,WACtC,GAGKyB,IAAK9B,EAAa,EAAE,QAAQK,EAAM,gBAAgB,CAAC;E,OAMzDF,EAAa,EACX,gBAJO2B,EAAG,MAAM,UAAU,EAK5B,CAAC,I;GAICjD,EAyBM,OAzBNoB,GAyBM;IAxBJnB,EAA6BsD,EAAA,QAAA,eAAA;KAC7B1D,EAAA,EAAA,GAAAC,EAqBOC,GAAA,MAAAG,EApBayC,EAAA,QAAX,OADT9C,EAAA,GAAAM,EAqBOC,GAAA;KAnBJ,KAAKuD,EAAQ;KACd,SAAQ;KACR,OAAM;;KAEN,SAAAtD,QAcO,CAdPC,EAcOC,GAAA,MAAA;MAbL,SAAAF,QAKO,CAJCoB,EAAA,YADR5B,EAAA,GAAAM,EAKOK,GAAA;;OAHJ,OAAOmD,EAAQ;;OAEhB,SAAAtD,QAAkC,CAA/BI,EAAAC,EAAAe,EAAA,WAAWkC,EAAQ,SAAQ,GAAA,CAAA,C;;M,wBAEhC9D,EAAA,GAAAM,EAMEQ,GAAA;;OAJC,QAAQgD;OACR,eAAalC,EAAA,WAAWkC,EAAQ;OAChC,oBAAkBlC,EAAA;OAClB,uBAAoBe;;;;;;;;;;IAI3BvC,EAA4BsD,EAAA,QAAA,cAAA;;GAE9BjD,EA2B4BM,GAAA;IA1BzB,SAASsB,EAAA;IACT,oBAAkBT,EAAA;IAClB,SAAOO;;IAGN,SAAA3B,QAAgC,EADlCR,EAAA,EAAA,GAAAC,EAqBOC,GAAA,MAAAG,EApBa0C,EAAA,QAAX,OADT/C,EAAA,GAAAM,EAqBOC,GAAA;KAnBJ,KAAKuD,EAAQ;KACd,SAAQ;KACR,OAAM;;KAEN,SAAAtD,QAcO,CAdPC,EAcOC,GAAA,MAAA;MAbL,SAAAF,QAKO,CAJCoB,EAAA,YADR5B,EAAA,GAAAM,EAKOK,GAAA;;OAHJ,OAAOmD,EAAQ;;OAEhB,SAAAtD,QAAkC,CAA/BI,EAAAC,EAAAe,EAAA,WAAWkC,EAAQ,SAAQ,GAAA,CAAA,C;;M,wBAEhC9D,EAAA,GAAAM,EAMEQ,GAAA;;OAJC,QAAQgD;OACR,eAAalC,EAAA,WAAWkC,EAAQ;OAChC,oBAAkBlC,EAAA;OAClB,uBAAoBe;;;;;;;;;;;;GAMrBQ,EAAA,SADRnD,EAAA,GAAAM,EAUOU,GAAA;;IARL,SAAQ;IACR,MAAK;IACL,OAAM;IACL,UAAUyB,EAAA;IACV,SAAOC;;IAER,SAAAlC,QAAoC,CAApCC,EAAoCQ,GAAA,EAA5B,MAAMiC,EAAA,MAAkB,GAAA,MAAA,GAAA,CAAA,MAAA,CAAA,GAAItC,EAAA,MACpCC,EAAGmC,EAAA,KAAkB,GAAA,CAAA,C"}
1
+ {"version":3,"file":"ACustomDataForm.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","_Fragment","_createElementVNode","_renderSlot","_renderList","_createBlock","_component_VRow","_withCtx","_createVNode","_component_VCol","ARow","_createTextVNode","_toDisplayString","ACustomFormElement","ACustomDataFormHiddenPart","_component_VBtn","_component_VIcon","_createCommentVNode","ARow_default","ACustomDataFormElement_default","ACustomDataFormHiddenPart_default","useVuelidate","_hoisted_1","ACustomDataForm_vue_vue_type_script_setup_true_lang_default","__expose","__emit","props","__props","emit","useI18n","useCustomDataForm","hiddenError","ref","revealed","onHiddenError","isError","hiddenVisible","computed","showAll","hideRequests","hideDisabled","toggleForm","updateModelValue","updated","data","elementsPinned","elementsOther","showHideButtonText","t","showHideButtonIcon","enableShowHide","v$","openBlock","createElementBlock","Fragment","createElementVNode","renderSlot","_ctx","renderList","createBlock","VRow","element","withCtx","createVNode","VCol","createTextVNode","toDisplayString","VBtn","VIcon","createCommentVNode"],"sources":["../../../../src/domains/customDataForm/components/ACustomDataForm.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, ref, watch } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport useVuelidate from '@vuelidate/core'\nimport type { CustomDataFormElement } from '@/domains/customDataForm/types/CustomDataForm'\nimport type { ValidationScope } from '@/shared/types/Validation'\nimport { useCustomDataForm } from '@/domains/customDataForm/composables/useCustomDataForm'\nimport ACustomFormElement from '@/domains/customDataForm/components/ACustomDataFormElement.vue'\nimport ACustomDataFormHiddenPart from '@/domains/customDataForm/components/ACustomDataFormHiddenPart.vue'\nimport ARow from '@/domains/ui/components/ARow.vue'\n\nconst props = withDefaults(\n defineProps<{\n modelValue: { [key: string]: any }\n elements: CustomDataFormElement[]\n validationScope?: ValidationScope\n pinnedCount?: number\n readonly?: boolean\n }>(),\n {\n validationScope: undefined,\n pinnedCount: 1000,\n readonly: false,\n }\n)\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', data: any): void\n (e: 'anyChange'): void\n}>()\n\nconst { t } = useI18n()\n\n// \"Show all\" and \"hide\" are one shared choice for every form on the page.\nconst { showAll, hideRequests } = useCustomDataForm()\n\n// A failing field behind \"show all\" is shown regardless of that choice, in its own form.\n// It stays open after the user fixes it, so it does not close under the cursor.\nconst hiddenError = ref(false)\nconst revealed = ref(false)\nconst onHiddenError = (isError: boolean) => {\n hiddenError.value = isError\n if (isError) revealed.value = true\n}\nconst hiddenVisible = computed(() => showAll.value || revealed.value)\n// A form with a failing field stays open when another form hides, and cannot hide itself.\nwatch(hideRequests, () => {\n revealed.value = hiddenError.value\n})\nconst hideDisabled = computed(() => hiddenVisible.value && hiddenError.value)\nconst toggleForm = () => {\n if (!hiddenVisible.value) {\n showAll.value = true\n return\n }\n showAll.value = false\n hideRequests.value++\n}\n\nconst updateModelValue = (data: { property: string; value: any }) => {\n const updated = {} as { [key: string]: any }\n updated[data.property] = data.value\n emit('update:modelValue', { ...props.modelValue, ...updated })\n emit('anyChange')\n}\n\nconst elementsPinned = computed(() => {\n return props.elements.slice(0, props.pinnedCount)\n})\n\nconst elementsOther = computed(() => {\n return props.elements.slice(props.pinnedCount)\n})\n\nconst showHideButtonText = computed(() => {\n return hiddenVisible.value\n ? t('common.damImage.asset.detail.metadataToggle.hide')\n : t('common.damImage.asset.detail.metadataToggle.show')\n})\nconst showHideButtonIcon = computed(() => {\n return hiddenVisible.value ? 'mdi-minus' : 'mdi-plus'\n})\n\nconst enableShowHide = computed(() => {\n return props.elements.length > props.pinnedCount\n})\n\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst v$ = useVuelidate({ $scope: props.validationScope })\n\nconst validate = (): Promise<boolean> => {\n return v$.value.$validate()\n}\n\ndefineExpose({\n validate,\n})\n</script>\n\n<template>\n <div class=\"w-100\">\n <slot name=\"before-pinned\" />\n <VRow\n v-for=\"element in elementsPinned\"\n :key=\"element.id\"\n density=\"compact\"\n class=\"mt-1\"\n >\n <VCol>\n <ARow\n v-if=\"readonly\"\n :title=\"element.name\"\n >\n {{ modelValue[element.property] }}\n </ARow>\n <ACustomFormElement\n v-else\n :config=\"element\"\n :model-value=\"modelValue[element.property]\"\n :validation-scope=\"validationScope\"\n @update:model-value=\"updateModelValue\"\n />\n </VCol>\n </VRow>\n <slot name=\"after-pinned\" />\n </div>\n <ACustomDataFormHiddenPart\n :visible=\"hiddenVisible\"\n :validation-scope=\"validationScope\"\n @error=\"onHiddenError\"\n >\n <VRow\n v-for=\"element in elementsOther\"\n :key=\"element.id\"\n density=\"compact\"\n class=\"mt-1\"\n >\n <VCol>\n <ARow\n v-if=\"readonly\"\n :title=\"element.name\"\n >\n {{ modelValue[element.property] }}\n </ARow>\n <ACustomFormElement\n v-else\n :config=\"element\"\n :model-value=\"modelValue[element.property]\"\n :validation-scope=\"validationScope\"\n @update:model-value=\"updateModelValue\"\n />\n </VCol>\n </VRow>\n </ACustomDataFormHiddenPart>\n <VBtn\n v-if=\"enableShowHide\"\n variant=\"text\"\n size=\"small\"\n class=\"my-2\"\n :disabled=\"hideDisabled\"\n @click=\"toggleForm\"\n >\n <VIcon :icon=\"showHideButtonIcon\" />\n {{ showHideButtonText }}\n </VBtn>\n</template>\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ACustomDataFormElement.js","names":["_sfc_main","ACustomDataFormElement_vue_vue_type_script_setup_true_lang_default","ACustomDataFormElement_default"],"sources":["../../../../src/domains/customDataForm/components/ACustomDataFormElement.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, isProxy, ref, toRaw } from 'vue'\nimport type { ErrorObject } from '@vuelidate/core'\nimport { useVuelidate } from '@vuelidate/core'\nimport type { CustomDataFormElement } from '@/domains/customDataForm/types/CustomDataForm'\nimport type { ValidationScope } from '@/shared/types/Validation'\nimport { CustomDataFormElementType } from '@/domains/customDataForm/types/CustomDataFormElementTypes'\nimport { isEmptyObject } from '@/shared/utils/common'\nimport { useValidate } from '@/shared/validators/vuelidate/useValidate'\nimport ABooleanSelect from '@/domains/ui/components/ABooleanSelect.vue'\n\nconst props = withDefaults(\n defineProps<{\n modelValue: any\n config: CustomDataFormElement\n validationScope?: ValidationScope\n }>(),\n {\n validationScope: undefined,\n }\n)\nconst emit = defineEmits<{\n (e: 'update:modelValue', data: { property: string; value: any }): void\n (e: 'blur', data: any): void\n}>()\n\nconst fixValue = (value: any) => {\n if (props.config.attributes.type === CustomDataFormElementType.Integer) {\n // A cleared input is no value, not `NaN`: an optional number can be emptied, a required one says so.\n const parsed = parseInt(value)\n return Number.isNaN(parsed) ? null : parsed\n }\n return value\n}\n\nconst updateModelValue = (value: any) => {\n emit('update:modelValue', { property: props.config.property, value: fixValue(value) })\n}\n\nconst modelValueComputed = computed(() => {\n const value = isProxy(props.modelValue) ? toRaw(props.modelValue) : props.modelValue\n if (\n (props.config.attributes.type === CustomDataFormElementType.StringArray ||\n props.config.attributes.type === CustomDataFormElementType.StringArrayLegacy) &&\n isEmptyObject(value)\n )\n return []\n return value\n})\n\nconst { maxLength, minLength, requiredIf, minValue, maxValue, stringArrayItemLength } = useValidate()\n\nconst rules = computed(() => {\n // What the user cannot change is not theirs to fix; the server does not validate it either.\n if (props.config.attributes.readonly) return { modelValueComputed: {} }\n const dynamicRules: Record<string, any> = {\n modelValueComputed: {\n required: requiredIf(props.config.attributes.required),\n },\n }\n switch (props.config.attributes.type) {\n case CustomDataFormElementType.String:\n dynamicRules.modelValueComputed.minLength = minLength(\n props.config.attributes.minValue ? props.config.attributes.minValue : 0\n )\n dynamicRules.modelValueComputed.maxLength = maxLength(\n props.config.attributes.maxValue ? props.config.attributes.maxValue : 256\n )\n break\n case CustomDataFormElementType.Integer:\n dynamicRules.modelValueComputed.minValue = minValue(\n props.config.attributes.minValue ? props.config.attributes.minValue : 0\n )\n dynamicRules.modelValueComputed.maxValue = maxValue(\n props.config.attributes.maxValue ? props.config.attributes.maxValue : 9999\n )\n break\n case CustomDataFormElementType.StringArray:\n dynamicRules.modelValueComputed.minLength = minLength(\n props.config.attributes.minCount ? props.config.attributes.minCount : 0\n )\n dynamicRules.modelValueComputed.maxLength = maxLength(\n props.config.attributes.maxCount ? props.config.attributes.maxCount : 32\n )\n dynamicRules.modelValueComputed.stringArrayItemLength = stringArrayItemLength(\n props.config.attributes.minValue ? props.config.attributes.minValue : 0,\n props.config.attributes.maxValue ? props.config.attributes.maxValue : 256\n )\n break\n }\n\n return dynamicRules\n})\n\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst v$ = useVuelidate(rules, { modelValueComputed }, { $scope: props.validationScope })\n\nconst errorMessageComputed = computed(() => {\n if (v$.value.$errors.length) return [v$.value.$errors.map((item: ErrorObject) => item.$message).join(' ')]\n return []\n})\n\nconst counter = ref<number | undefined>(undefined)\ncounter.value = props.config.attributes.maxValue ?? undefined\n\nconst onBlur = () => {\n emit('blur', props.modelValue)\n v$.value.$touch()\n}\n</script>\n\n<template>\n <VTextarea\n v-if=\"config.attributes.type === CustomDataFormElementType.String\"\n :model-value=\"modelValue\"\n auto-grow\n :rows=\"1\"\n :label=\"config.name\"\n :error-messages=\"errorMessageComputed\"\n :counter=\"counter\"\n :readonly=\"config.attributes.readonly\"\n :data-cy=\"'custom-field-' + config.property\"\n @update:model-value=\"updateModelValue\"\n @blur=\"onBlur\"\n >\n <template #label>\n {{ config.name\n }}<span\n v-if=\"config.attributes.required\"\n class=\"a-required-mark\"\n />\n </template>\n </VTextarea>\n <VTextField\n v-else-if=\"config.attributes.type === CustomDataFormElementType.Integer\"\n :model-value=\"modelValueComputed\"\n type=\"number\"\n :label=\"config.name\"\n :error-messages=\"errorMessageComputed\"\n :readonly=\"config.attributes.readonly\"\n :data-cy=\"'custom-field-' + config.property\"\n @update:model-value=\"updateModelValue\"\n @blur=\"onBlur\"\n >\n <template #label>\n {{ config.name\n }}<span\n v-if=\"config.attributes.required\"\n class=\"a-required-mark\"\n />\n </template>\n </VTextField>\n <VCombobox\n v-else-if=\"\n config.attributes.type === CustomDataFormElementType.StringArray ||\n config.attributes.type === CustomDataFormElementType.StringArrayLegacy\n \"\n :model-value=\"modelValueComputed\"\n :label=\"config.name\"\n multiple\n chips\n :readonly=\"config.attributes.readonly\"\n :error-messages=\"errorMessageComputed\"\n :data-cy=\"'custom-field-' + config.property\"\n @update:model-value=\"updateModelValue\"\n @blur=\"onBlur\"\n >\n <template #label>\n {{ config.name\n }}<span\n v-if=\"config.attributes.required\"\n class=\"a-required-mark\"\n />\n </template>\n </VCombobox>\n <VSwitch\n v-if=\"config.attributes.type === CustomDataFormElementType.Boolean && config.attributes.required === true\"\n :label=\"config.name\"\n :model-value=\"modelValueComputed\"\n :error-messages=\"errorMessageComputed\"\n :readonly=\"config.attributes.readonly\"\n :data-cy=\"'custom-field-' + config.property\"\n @update:model-value=\"updateModelValue\"\n />\n <ABooleanSelect\n v-if=\"config.attributes.type === CustomDataFormElementType.Boolean && config.attributes.required === false\"\n :model-value=\"modelValueComputed\"\n :label=\"config.name\"\n :data-cy=\"'custom-field-' + config.property\"\n :readonly=\"config.attributes.readonly\"\n @update:model-value=\"updateModelValue\"\n />\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"ACustomDataFormElement.js","names":["_sfc_main","ACustomDataFormElement_vue_vue_type_script_setup_true_lang_default","ACustomDataFormElement_default"],"sources":["../../../../src/domains/customDataForm/components/ACustomDataFormElement.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, isProxy, ref, toRaw } from 'vue'\nimport type { ErrorObject } from '@vuelidate/core'\nimport { useVuelidate } from '@vuelidate/core'\nimport type { CustomDataFormElement } from '@/domains/customDataForm/types/CustomDataForm'\nimport type { ValidationScope } from '@/shared/types/Validation'\nimport { CustomDataFormElementType } from '@/domains/customDataForm/types/CustomDataFormElementTypes'\nimport { isEmptyObject } from '@/shared/utils/common'\nimport { useValidate } from '@/shared/validators/vuelidate/useValidate'\nimport ABooleanSelect from '@/domains/ui/components/ABooleanSelect.vue'\n\nconst props = withDefaults(\n defineProps<{\n modelValue: any\n config: CustomDataFormElement\n validationScope?: ValidationScope\n }>(),\n {\n validationScope: undefined,\n }\n)\nconst emit = defineEmits<{\n (e: 'update:modelValue', data: { property: string; value: any }): void\n (e: 'blur', data: any): void\n}>()\n\nconst fixValue = (value: any) => {\n if (props.config.attributes.type === CustomDataFormElementType.Integer) {\n // A cleared input is null, not `NaN`. An optional number can be emptied; a required one reports the error.\n const parsed = parseInt(value)\n return Number.isNaN(parsed) ? null : parsed\n }\n return value\n}\n\nconst updateModelValue = (value: any) => {\n emit('update:modelValue', { property: props.config.property, value: fixValue(value) })\n}\n\nconst modelValueComputed = computed(() => {\n const value = isProxy(props.modelValue) ? toRaw(props.modelValue) : props.modelValue\n if (\n (props.config.attributes.type === CustomDataFormElementType.StringArray ||\n props.config.attributes.type === CustomDataFormElementType.StringArrayLegacy) &&\n isEmptyObject(value)\n )\n return []\n return value\n})\n\nconst { maxLength, minLength, requiredIf, minValue, maxValue, stringArrayItemLength } = useValidate()\n\nconst rules = computed(() => {\n // Readonly fields are not validated. The user cannot fix them and the server does not validate them either.\n if (props.config.attributes.readonly) return { modelValueComputed: {} }\n const dynamicRules: Record<string, any> = {\n modelValueComputed: {\n required: requiredIf(props.config.attributes.required),\n },\n }\n switch (props.config.attributes.type) {\n case CustomDataFormElementType.String:\n dynamicRules.modelValueComputed.minLength = minLength(\n props.config.attributes.minValue ? props.config.attributes.minValue : 0\n )\n dynamicRules.modelValueComputed.maxLength = maxLength(\n props.config.attributes.maxValue ? props.config.attributes.maxValue : 256\n )\n break\n case CustomDataFormElementType.Integer:\n dynamicRules.modelValueComputed.minValue = minValue(\n props.config.attributes.minValue ? props.config.attributes.minValue : 0\n )\n dynamicRules.modelValueComputed.maxValue = maxValue(\n props.config.attributes.maxValue ? props.config.attributes.maxValue : 9999\n )\n break\n case CustomDataFormElementType.StringArray:\n dynamicRules.modelValueComputed.minLength = minLength(\n props.config.attributes.minCount ? props.config.attributes.minCount : 0\n )\n dynamicRules.modelValueComputed.maxLength = maxLength(\n props.config.attributes.maxCount ? props.config.attributes.maxCount : 32\n )\n dynamicRules.modelValueComputed.stringArrayItemLength = stringArrayItemLength(\n props.config.attributes.minValue ? props.config.attributes.minValue : 0,\n props.config.attributes.maxValue ? props.config.attributes.maxValue : 256\n )\n break\n }\n\n return dynamicRules\n})\n\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst v$ = useVuelidate(rules, { modelValueComputed }, { $scope: props.validationScope })\n\nconst errorMessageComputed = computed(() => {\n if (v$.value.$errors.length) return [v$.value.$errors.map((item: ErrorObject) => item.$message).join(' ')]\n return []\n})\n\nconst counter = ref<number | undefined>(undefined)\ncounter.value = props.config.attributes.maxValue ?? undefined\n\nconst onBlur = () => {\n emit('blur', props.modelValue)\n v$.value.$touch()\n}\n</script>\n\n<template>\n <VTextarea\n v-if=\"config.attributes.type === CustomDataFormElementType.String\"\n :model-value=\"modelValue\"\n auto-grow\n :rows=\"1\"\n :label=\"config.name\"\n :error-messages=\"errorMessageComputed\"\n :counter=\"counter\"\n :readonly=\"config.attributes.readonly\"\n :data-cy=\"'custom-field-' + config.property\"\n @update:model-value=\"updateModelValue\"\n @blur=\"onBlur\"\n >\n <template #label>\n {{ config.name\n }}<span\n v-if=\"config.attributes.required\"\n class=\"a-required-mark\"\n />\n </template>\n </VTextarea>\n <VTextField\n v-else-if=\"config.attributes.type === CustomDataFormElementType.Integer\"\n :model-value=\"modelValueComputed\"\n type=\"number\"\n :label=\"config.name\"\n :error-messages=\"errorMessageComputed\"\n :readonly=\"config.attributes.readonly\"\n :data-cy=\"'custom-field-' + config.property\"\n @update:model-value=\"updateModelValue\"\n @blur=\"onBlur\"\n >\n <template #label>\n {{ config.name\n }}<span\n v-if=\"config.attributes.required\"\n class=\"a-required-mark\"\n />\n </template>\n </VTextField>\n <VCombobox\n v-else-if=\"\n config.attributes.type === CustomDataFormElementType.StringArray ||\n config.attributes.type === CustomDataFormElementType.StringArrayLegacy\n \"\n :model-value=\"modelValueComputed\"\n :label=\"config.name\"\n multiple\n chips\n :readonly=\"config.attributes.readonly\"\n :error-messages=\"errorMessageComputed\"\n :data-cy=\"'custom-field-' + config.property\"\n @update:model-value=\"updateModelValue\"\n @blur=\"onBlur\"\n >\n <template #label>\n {{ config.name\n }}<span\n v-if=\"config.attributes.required\"\n class=\"a-required-mark\"\n />\n </template>\n </VCombobox>\n <VSwitch\n v-if=\"config.attributes.type === CustomDataFormElementType.Boolean && config.attributes.required === true\"\n :label=\"config.name\"\n :model-value=\"modelValueComputed\"\n :error-messages=\"errorMessageComputed\"\n :readonly=\"config.attributes.readonly\"\n :data-cy=\"'custom-field-' + config.property\"\n @update:model-value=\"updateModelValue\"\n />\n <ABooleanSelect\n v-if=\"config.attributes.type === CustomDataFormElementType.Boolean && config.attributes.required === false\"\n :model-value=\"modelValueComputed\"\n :label=\"config.name\"\n :data-cy=\"'custom-field-' + config.property\"\n :readonly=\"config.attributes.readonly\"\n @update:model-value=\"updateModelValue\"\n />\n</template>\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"ACustomDataFormElement.vue_vue_type_script_setup_true_lang.js","names":["useVuelidate","_openBlock","_createElementBlock","_Fragment","_unref","_createBlock","_component_VTextarea","_withCtx","_createTextVNode","_toDisplayString","_createCommentVNode","_component_VTextField","_component_VCombobox","_component_VSwitch","ABooleanSelect","ABooleanSelect_default","useVuelidate$1","_hoisted_1","_hoisted_2","_hoisted_3","ACustomDataFormElement_vue_vue_type_script_setup_true_lang_default","__emit","props","__props","emit","fixValue","CustomDataFormElementType","parsed","value","updateModelValue","modelValueComputed","computed","isProxy","toRaw","isEmptyObject","useValidate","rules","dynamicRules","requiredIf","minLength","maxLength","minValue","maxValue","stringArrayItemLength","v$","errorMessageComputed","item","counter","ref","onBlur","openBlock","createElementBlock","Fragment","unref","createBlock","VTextarea","withCtx","createTextVNode","toDisplayString","createCommentVNode","VTextField","VCombobox","VSwitch"],"sources":["../../../../src/domains/customDataForm/components/ACustomDataFormElement.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, isProxy, ref, toRaw } from 'vue'\nimport type { ErrorObject } from '@vuelidate/core'\nimport { useVuelidate } from '@vuelidate/core'\nimport type { CustomDataFormElement } from '@/domains/customDataForm/types/CustomDataForm'\nimport type { ValidationScope } from '@/shared/types/Validation'\nimport { CustomDataFormElementType } from '@/domains/customDataForm/types/CustomDataFormElementTypes'\nimport { isEmptyObject } from '@/shared/utils/common'\nimport { useValidate } from '@/shared/validators/vuelidate/useValidate'\nimport ABooleanSelect from '@/domains/ui/components/ABooleanSelect.vue'\n\nconst props = withDefaults(\n defineProps<{\n modelValue: any\n config: CustomDataFormElement\n validationScope?: ValidationScope\n }>(),\n {\n validationScope: undefined,\n }\n)\nconst emit = defineEmits<{\n (e: 'update:modelValue', data: { property: string; value: any }): void\n (e: 'blur', data: any): void\n}>()\n\nconst fixValue = (value: any) => {\n if (props.config.attributes.type === CustomDataFormElementType.Integer) {\n // A cleared input is no value, not `NaN`: an optional number can be emptied, a required one says so.\n const parsed = parseInt(value)\n return Number.isNaN(parsed) ? null : parsed\n }\n return value\n}\n\nconst updateModelValue = (value: any) => {\n emit('update:modelValue', { property: props.config.property, value: fixValue(value) })\n}\n\nconst modelValueComputed = computed(() => {\n const value = isProxy(props.modelValue) ? toRaw(props.modelValue) : props.modelValue\n if (\n (props.config.attributes.type === CustomDataFormElementType.StringArray ||\n props.config.attributes.type === CustomDataFormElementType.StringArrayLegacy) &&\n isEmptyObject(value)\n )\n return []\n return value\n})\n\nconst { maxLength, minLength, requiredIf, minValue, maxValue, stringArrayItemLength } = useValidate()\n\nconst rules = computed(() => {\n // What the user cannot change is not theirs to fix; the server does not validate it either.\n if (props.config.attributes.readonly) return { modelValueComputed: {} }\n const dynamicRules: Record<string, any> = {\n modelValueComputed: {\n required: requiredIf(props.config.attributes.required),\n },\n }\n switch (props.config.attributes.type) {\n case CustomDataFormElementType.String:\n dynamicRules.modelValueComputed.minLength = minLength(\n props.config.attributes.minValue ? props.config.attributes.minValue : 0\n )\n dynamicRules.modelValueComputed.maxLength = maxLength(\n props.config.attributes.maxValue ? props.config.attributes.maxValue : 256\n )\n break\n case CustomDataFormElementType.Integer:\n dynamicRules.modelValueComputed.minValue = minValue(\n props.config.attributes.minValue ? props.config.attributes.minValue : 0\n )\n dynamicRules.modelValueComputed.maxValue = maxValue(\n props.config.attributes.maxValue ? props.config.attributes.maxValue : 9999\n )\n break\n case CustomDataFormElementType.StringArray:\n dynamicRules.modelValueComputed.minLength = minLength(\n props.config.attributes.minCount ? props.config.attributes.minCount : 0\n )\n dynamicRules.modelValueComputed.maxLength = maxLength(\n props.config.attributes.maxCount ? props.config.attributes.maxCount : 32\n )\n dynamicRules.modelValueComputed.stringArrayItemLength = stringArrayItemLength(\n props.config.attributes.minValue ? props.config.attributes.minValue : 0,\n props.config.attributes.maxValue ? props.config.attributes.maxValue : 256\n )\n break\n }\n\n return dynamicRules\n})\n\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst v$ = useVuelidate(rules, { modelValueComputed }, { $scope: props.validationScope })\n\nconst errorMessageComputed = computed(() => {\n if (v$.value.$errors.length) return [v$.value.$errors.map((item: ErrorObject) => item.$message).join(' ')]\n return []\n})\n\nconst counter = ref<number | undefined>(undefined)\ncounter.value = props.config.attributes.maxValue ?? undefined\n\nconst onBlur = () => {\n emit('blur', props.modelValue)\n v$.value.$touch()\n}\n</script>\n\n<template>\n <VTextarea\n v-if=\"config.attributes.type === CustomDataFormElementType.String\"\n :model-value=\"modelValue\"\n auto-grow\n :rows=\"1\"\n :label=\"config.name\"\n :error-messages=\"errorMessageComputed\"\n :counter=\"counter\"\n :readonly=\"config.attributes.readonly\"\n :data-cy=\"'custom-field-' + config.property\"\n @update:model-value=\"updateModelValue\"\n @blur=\"onBlur\"\n >\n <template #label>\n {{ config.name\n }}<span\n v-if=\"config.attributes.required\"\n class=\"a-required-mark\"\n />\n </template>\n </VTextarea>\n <VTextField\n v-else-if=\"config.attributes.type === CustomDataFormElementType.Integer\"\n :model-value=\"modelValueComputed\"\n type=\"number\"\n :label=\"config.name\"\n :error-messages=\"errorMessageComputed\"\n :readonly=\"config.attributes.readonly\"\n :data-cy=\"'custom-field-' + config.property\"\n @update:model-value=\"updateModelValue\"\n @blur=\"onBlur\"\n >\n <template #label>\n {{ config.name\n }}<span\n v-if=\"config.attributes.required\"\n class=\"a-required-mark\"\n />\n </template>\n </VTextField>\n <VCombobox\n v-else-if=\"\n config.attributes.type === CustomDataFormElementType.StringArray ||\n config.attributes.type === CustomDataFormElementType.StringArrayLegacy\n \"\n :model-value=\"modelValueComputed\"\n :label=\"config.name\"\n multiple\n chips\n :readonly=\"config.attributes.readonly\"\n :error-messages=\"errorMessageComputed\"\n :data-cy=\"'custom-field-' + config.property\"\n @update:model-value=\"updateModelValue\"\n @blur=\"onBlur\"\n >\n <template #label>\n {{ config.name\n }}<span\n v-if=\"config.attributes.required\"\n class=\"a-required-mark\"\n />\n </template>\n </VCombobox>\n <VSwitch\n v-if=\"config.attributes.type === CustomDataFormElementType.Boolean && config.attributes.required === true\"\n :label=\"config.name\"\n :model-value=\"modelValueComputed\"\n :error-messages=\"errorMessageComputed\"\n :readonly=\"config.attributes.readonly\"\n :data-cy=\"'custom-field-' + config.property\"\n @update:model-value=\"updateModelValue\"\n />\n <ABooleanSelect\n v-if=\"config.attributes.type === CustomDataFormElementType.Boolean && config.attributes.required === false\"\n :model-value=\"modelValueComputed\"\n :label=\"config.name\"\n :data-cy=\"'custom-field-' + config.property\"\n :readonly=\"config.attributes.readonly\"\n @update:model-value=\"updateModelValue\"\n />\n</template>\n"],"mappings":"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"}
1
+ {"version":3,"file":"ACustomDataFormElement.vue_vue_type_script_setup_true_lang.js","names":["useVuelidate","_openBlock","_createElementBlock","_Fragment","_unref","_createBlock","_component_VTextarea","_withCtx","_createTextVNode","_toDisplayString","_createCommentVNode","_component_VTextField","_component_VCombobox","_component_VSwitch","ABooleanSelect","ABooleanSelect_default","useVuelidate$1","_hoisted_1","_hoisted_2","_hoisted_3","ACustomDataFormElement_vue_vue_type_script_setup_true_lang_default","__emit","props","__props","emit","fixValue","CustomDataFormElementType","parsed","value","updateModelValue","modelValueComputed","computed","isProxy","toRaw","isEmptyObject","useValidate","rules","dynamicRules","requiredIf","minLength","maxLength","minValue","maxValue","stringArrayItemLength","v$","errorMessageComputed","item","counter","ref","onBlur","openBlock","createElementBlock","Fragment","unref","createBlock","VTextarea","withCtx","createTextVNode","toDisplayString","createCommentVNode","VTextField","VCombobox","VSwitch"],"sources":["../../../../src/domains/customDataForm/components/ACustomDataFormElement.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, isProxy, ref, toRaw } from 'vue'\nimport type { ErrorObject } from '@vuelidate/core'\nimport { useVuelidate } from '@vuelidate/core'\nimport type { CustomDataFormElement } from '@/domains/customDataForm/types/CustomDataForm'\nimport type { ValidationScope } from '@/shared/types/Validation'\nimport { CustomDataFormElementType } from '@/domains/customDataForm/types/CustomDataFormElementTypes'\nimport { isEmptyObject } from '@/shared/utils/common'\nimport { useValidate } from '@/shared/validators/vuelidate/useValidate'\nimport ABooleanSelect from '@/domains/ui/components/ABooleanSelect.vue'\n\nconst props = withDefaults(\n defineProps<{\n modelValue: any\n config: CustomDataFormElement\n validationScope?: ValidationScope\n }>(),\n {\n validationScope: undefined,\n }\n)\nconst emit = defineEmits<{\n (e: 'update:modelValue', data: { property: string; value: any }): void\n (e: 'blur', data: any): void\n}>()\n\nconst fixValue = (value: any) => {\n if (props.config.attributes.type === CustomDataFormElementType.Integer) {\n // A cleared input is null, not `NaN`. An optional number can be emptied; a required one reports the error.\n const parsed = parseInt(value)\n return Number.isNaN(parsed) ? null : parsed\n }\n return value\n}\n\nconst updateModelValue = (value: any) => {\n emit('update:modelValue', { property: props.config.property, value: fixValue(value) })\n}\n\nconst modelValueComputed = computed(() => {\n const value = isProxy(props.modelValue) ? toRaw(props.modelValue) : props.modelValue\n if (\n (props.config.attributes.type === CustomDataFormElementType.StringArray ||\n props.config.attributes.type === CustomDataFormElementType.StringArrayLegacy) &&\n isEmptyObject(value)\n )\n return []\n return value\n})\n\nconst { maxLength, minLength, requiredIf, minValue, maxValue, stringArrayItemLength } = useValidate()\n\nconst rules = computed(() => {\n // Readonly fields are not validated. The user cannot fix them and the server does not validate them either.\n if (props.config.attributes.readonly) return { modelValueComputed: {} }\n const dynamicRules: Record<string, any> = {\n modelValueComputed: {\n required: requiredIf(props.config.attributes.required),\n },\n }\n switch (props.config.attributes.type) {\n case CustomDataFormElementType.String:\n dynamicRules.modelValueComputed.minLength = minLength(\n props.config.attributes.minValue ? props.config.attributes.minValue : 0\n )\n dynamicRules.modelValueComputed.maxLength = maxLength(\n props.config.attributes.maxValue ? props.config.attributes.maxValue : 256\n )\n break\n case CustomDataFormElementType.Integer:\n dynamicRules.modelValueComputed.minValue = minValue(\n props.config.attributes.minValue ? props.config.attributes.minValue : 0\n )\n dynamicRules.modelValueComputed.maxValue = maxValue(\n props.config.attributes.maxValue ? props.config.attributes.maxValue : 9999\n )\n break\n case CustomDataFormElementType.StringArray:\n dynamicRules.modelValueComputed.minLength = minLength(\n props.config.attributes.minCount ? props.config.attributes.minCount : 0\n )\n dynamicRules.modelValueComputed.maxLength = maxLength(\n props.config.attributes.maxCount ? props.config.attributes.maxCount : 32\n )\n dynamicRules.modelValueComputed.stringArrayItemLength = stringArrayItemLength(\n props.config.attributes.minValue ? props.config.attributes.minValue : 0,\n props.config.attributes.maxValue ? props.config.attributes.maxValue : 256\n )\n break\n }\n\n return dynamicRules\n})\n\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst v$ = useVuelidate(rules, { modelValueComputed }, { $scope: props.validationScope })\n\nconst errorMessageComputed = computed(() => {\n if (v$.value.$errors.length) return [v$.value.$errors.map((item: ErrorObject) => item.$message).join(' ')]\n return []\n})\n\nconst counter = ref<number | undefined>(undefined)\ncounter.value = props.config.attributes.maxValue ?? undefined\n\nconst onBlur = () => {\n emit('blur', props.modelValue)\n v$.value.$touch()\n}\n</script>\n\n<template>\n <VTextarea\n v-if=\"config.attributes.type === CustomDataFormElementType.String\"\n :model-value=\"modelValue\"\n auto-grow\n :rows=\"1\"\n :label=\"config.name\"\n :error-messages=\"errorMessageComputed\"\n :counter=\"counter\"\n :readonly=\"config.attributes.readonly\"\n :data-cy=\"'custom-field-' + config.property\"\n @update:model-value=\"updateModelValue\"\n @blur=\"onBlur\"\n >\n <template #label>\n {{ config.name\n }}<span\n v-if=\"config.attributes.required\"\n class=\"a-required-mark\"\n />\n </template>\n </VTextarea>\n <VTextField\n v-else-if=\"config.attributes.type === CustomDataFormElementType.Integer\"\n :model-value=\"modelValueComputed\"\n type=\"number\"\n :label=\"config.name\"\n :error-messages=\"errorMessageComputed\"\n :readonly=\"config.attributes.readonly\"\n :data-cy=\"'custom-field-' + config.property\"\n @update:model-value=\"updateModelValue\"\n @blur=\"onBlur\"\n >\n <template #label>\n {{ config.name\n }}<span\n v-if=\"config.attributes.required\"\n class=\"a-required-mark\"\n />\n </template>\n </VTextField>\n <VCombobox\n v-else-if=\"\n config.attributes.type === CustomDataFormElementType.StringArray ||\n config.attributes.type === CustomDataFormElementType.StringArrayLegacy\n \"\n :model-value=\"modelValueComputed\"\n :label=\"config.name\"\n multiple\n chips\n :readonly=\"config.attributes.readonly\"\n :error-messages=\"errorMessageComputed\"\n :data-cy=\"'custom-field-' + config.property\"\n @update:model-value=\"updateModelValue\"\n @blur=\"onBlur\"\n >\n <template #label>\n {{ config.name\n }}<span\n v-if=\"config.attributes.required\"\n class=\"a-required-mark\"\n />\n </template>\n </VCombobox>\n <VSwitch\n v-if=\"config.attributes.type === CustomDataFormElementType.Boolean && config.attributes.required === true\"\n :label=\"config.name\"\n :model-value=\"modelValueComputed\"\n :error-messages=\"errorMessageComputed\"\n :readonly=\"config.attributes.readonly\"\n :data-cy=\"'custom-field-' + config.property\"\n @update:model-value=\"updateModelValue\"\n />\n <ABooleanSelect\n v-if=\"config.attributes.type === CustomDataFormElementType.Boolean && config.attributes.required === false\"\n :model-value=\"modelValueComputed\"\n :label=\"config.name\"\n :data-cy=\"'custom-field-' + config.property\"\n :readonly=\"config.attributes.readonly\"\n @update:model-value=\"updateModelValue\"\n />\n</template>\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ACustomDataFormHiddenPart.js","names":["_sfc_main","ACustomDataFormHiddenPart_vue_vue_type_script_setup_true_lang_default","ACustomDataFormHiddenPart_default"],"sources":["../../../../src/domains/customDataForm/components/ACustomDataFormHiddenPart.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { watch } from 'vue'\nimport useVuelidate from '@vuelidate/core'\nimport type { ValidationScope } from '@/shared/types/Validation'\n\n// The elements behind \"show all\", under a collector of their own: the form has to know whether what\n// fails is in here, to show it. The elements report to this collector, and it reports to the form.\nconst props = withDefaults(\n defineProps<{\n visible: boolean\n validationScope?: ValidationScope\n }>(),\n {\n validationScope: undefined,\n }\n)\n\nconst emit = defineEmits<{\n (e: 'error', isError: boolean): void\n}>()\n\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst v$ = useVuelidate({ $scope: props.validationScope })\n\n// Whether an element in here shows a message: after a save that touched them all, and also when the user\n// left one of them invalid (the collector as a whole is in error only once every element was touched).\nwatch(\n () => v$.value.$errors.length > 0,\n (isError) => emit('error', isError)\n)\n</script>\n\n<template>\n <div\n v-show=\"visible\"\n class=\"w-100\"\n >\n <slot />\n </div>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"ACustomDataFormHiddenPart.js","names":["_sfc_main","ACustomDataFormHiddenPart_vue_vue_type_script_setup_true_lang_default","ACustomDataFormHiddenPart_default"],"sources":["../../../../src/domains/customDataForm/components/ACustomDataFormHiddenPart.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { watch } from 'vue'\nimport useVuelidate from '@vuelidate/core'\nimport type { ValidationScope } from '@/shared/types/Validation'\n\n// The elements behind \"show all\" use their own validation collector,\n// so the form knows whether a failure is in here and can show it.\n// The elements report to this collector, and it reports to the form.\nconst props = withDefaults(\n defineProps<{\n visible: boolean\n validationScope?: ValidationScope\n }>(),\n {\n validationScope: undefined,\n }\n)\n\nconst emit = defineEmits<{\n (e: 'error', isError: boolean): void\n}>()\n\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst v$ = useVuelidate({ $scope: props.validationScope })\n\n// Whether an element in here shows an error: after a save touched them all, or when the user left one invalid.\n// The collector as a whole is in error only once every element was touched.\nwatch(\n () => v$.value.$errors.length > 0,\n (isError) => emit('error', isError)\n)\n</script>\n\n<template>\n <div\n v-show=\"visible\"\n class=\"w-100\"\n >\n <slot />\n </div>\n</template>\n"],"mappings":""}
@@ -3,10 +3,12 @@ type __VLS_Props = {
3
3
  visible: boolean;
4
4
  validationScope?: ValidationScope;
5
5
  };
6
- declare var __VLS_1: {};
7
- type __VLS_Slots = {} & {
8
- default?: (props: typeof __VLS_1) => any;
6
+ declare const __VLS_template: () => {
7
+ __VLS_Slots: {
8
+ default?: (props: {}) => any;
9
+ };
9
10
  };
11
+ type __VLS_Slots = ReturnType<typeof __VLS_template>['__VLS_Slots'];
10
12
  declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
11
13
  error: (isError: boolean) => any;
12
14
  }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
@@ -1 +1 @@
1
- {"version":3,"file":"ACustomDataFormHiddenPart.vue_vue_type_script_setup_true_lang.js","names":["_withDirectives","_openBlock","_createElementBlock","_renderSlot","_vShow","useVuelidate","_hoisted_1","ACustomDataFormHiddenPart_vue_vue_type_script_setup_true_lang_default","__emit","props","__props","emit","v$","watch","isError","withDirectives","openBlock","createElementBlock","renderSlot","_ctx","vShow"],"sources":["../../../../src/domains/customDataForm/components/ACustomDataFormHiddenPart.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { watch } from 'vue'\nimport useVuelidate from '@vuelidate/core'\nimport type { ValidationScope } from '@/shared/types/Validation'\n\n// The elements behind \"show all\", under a collector of their own: the form has to know whether what\n// fails is in here, to show it. The elements report to this collector, and it reports to the form.\nconst props = withDefaults(\n defineProps<{\n visible: boolean\n validationScope?: ValidationScope\n }>(),\n {\n validationScope: undefined,\n }\n)\n\nconst emit = defineEmits<{\n (e: 'error', isError: boolean): void\n}>()\n\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst v$ = useVuelidate({ $scope: props.validationScope })\n\n// Whether an element in here shows a message: after a save that touched them all, and also when the user\n// left one of them invalid (the collector as a whole is in error only once every element was touched).\nwatch(\n () => v$.value.$errors.length > 0,\n (isError) => emit('error', isError)\n)\n</script>\n\n<template>\n <div\n v-show=\"visible\"\n class=\"w-100\"\n >\n <slot />\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;EAOA,IAAMS,IAAQC,GAURC,IAAOH,GAKPI,IAAKP,EAAa,EAAE,QAAQI,EAAM,gBAAgB,CAAC;E,OAIzDI,QACQD,EAAG,MAAM,QAAQ,SAAS,IAC/B,MAAYD,EAAK,SAASG,CAAO,CACpC,I,SAIEd,GAAAC,EAAA,GAAAC,EAKM,OALNI,GAKM,CADJH,EAAQgB,EAAA,QAAA,SAAA,C,WAHA,CAAAf,GAAAM,EAAA,OAAO,C"}
1
+ {"version":3,"file":"ACustomDataFormHiddenPart.vue_vue_type_script_setup_true_lang.js","names":["_withDirectives","_openBlock","_createElementBlock","_renderSlot","_vShow","useVuelidate","_hoisted_1","ACustomDataFormHiddenPart_vue_vue_type_script_setup_true_lang_default","__emit","props","__props","emit","v$","watch","isError","withDirectives","openBlock","createElementBlock","renderSlot","_ctx","vShow"],"sources":["../../../../src/domains/customDataForm/components/ACustomDataFormHiddenPart.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { watch } from 'vue'\nimport useVuelidate from '@vuelidate/core'\nimport type { ValidationScope } from '@/shared/types/Validation'\n\n// The elements behind \"show all\" use their own validation collector,\n// so the form knows whether a failure is in here and can show it.\n// The elements report to this collector, and it reports to the form.\nconst props = withDefaults(\n defineProps<{\n visible: boolean\n validationScope?: ValidationScope\n }>(),\n {\n validationScope: undefined,\n }\n)\n\nconst emit = defineEmits<{\n (e: 'error', isError: boolean): void\n}>()\n\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst v$ = useVuelidate({ $scope: props.validationScope })\n\n// Whether an element in here shows an error: after a save touched them all, or when the user left one invalid.\n// The collector as a whole is in error only once every element was touched.\nwatch(\n () => v$.value.$errors.length > 0,\n (isError) => emit('error', isError)\n)\n</script>\n\n<template>\n <div\n v-show=\"visible\"\n class=\"w-100\"\n >\n <slot />\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;EAQA,IAAMS,IAAQC,GAURC,IAAOH,GAKPI,IAAKP,EAAa,EAAE,QAAQI,EAAM,gBAAgB,CAAC;E,OAIzDI,QACQD,EAAG,MAAM,QAAQ,SAAS,IAC/B,MAAYD,EAAK,SAASG,CAAO,CACpC,I,SAIEd,GAAAC,EAAA,GAAAC,EAKM,OALNI,GAKM,CADJH,EAAQgB,EAAA,QAAA,SAAA,C,WAHA,CAAAf,GAAAM,EAAA,OAAO,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"useCustomDataForm.js","names":["showAll","ref","hideRequests","useCustomDataForm"],"sources":["../../../../src/domains/customDataForm/composables/useCustomDataForm.ts"],"sourcesContent":["import { ref } from 'vue'\n\nconst showAll = ref(false)\n// \"Hide\" is for every form on the page as well, and each one answers it for itself.\nconst hideRequests = ref(0)\n\nexport function useCustomDataForm() {\n return {\n showAll,\n hideRequests,\n }\n}\n"],"mappings":";;AAEA,IAAMA,IAAUC,EAAI,EAAK,GAEnBC,IAAeD,EAAI,CAAC;AAE1B,SAAgBE,IAAoB;CAClC,OAAO;EACL;EACA;CACF;AACF"}
1
+ {"version":3,"file":"useCustomDataForm.js","names":["showAll","ref","hideRequests","useCustomDataForm"],"sources":["../../../../src/domains/customDataForm/composables/useCustomDataForm.ts"],"sourcesContent":["import { ref } from 'vue'\n\nconst showAll = ref(false)\n// \"Hide\" also applies to every form on the page. Each form handles it itself.\nconst hideRequests = ref(0)\n\nexport function useCustomDataForm() {\n return {\n showAll,\n hideRequests,\n }\n}\n"],"mappings":";;AAEA,IAAMA,IAAUC,EAAI,EAAK,GAEnBC,IAAeD,EAAI,CAAC;AAE1B,SAAgBE,IAAoB;CAClC,OAAO;EACL;EACA;CACF;AACF"}
@@ -17,7 +17,10 @@ export interface CustomDataFormElementAttributes {
17
17
  searchable: boolean;
18
18
  readonly: boolean;
19
19
  }
20
- /** `null`: a value that was emptied (a cleared number), also as the API returns it once saved. A value never set has no key. */
20
+ /**
21
+ * `null` is an emptied value (e.g. a cleared number), and the API
22
+ * returns it that way once saved. A value never set has no key.
23
+ */
21
24
  export type CustomDataValue = boolean | string | number | string[] | number[] | null;
22
25
  export interface CustomDataAware {
23
26
  customData: {
@@ -17,25 +17,25 @@ export interface AssetMetadataBulkItem {
17
17
  export declare type AssetCustomData = Record<string, any>;
18
18
  export declare const useFetchAssetList: (client: () => AxiosInstance, endPoint: string, licenceId: IntegerId) => import('../../api/composables/useApiFetchList').UseApiFetchListReturnType<AssetSearchListItemDto>;
19
19
  /**
20
- * `options.report: false`: a failure of this read is not handed to the api error logger. For the upload queue,
21
- * which asks for the same asset again and again and reports only the first failure of a streak.
20
+ * `options.report: false` keeps a failure of this read out of the api error logger.
21
+ * Used by the upload queue, which polls the same asset repeatedly and reports only the first failure of a streak.
22
22
  */
23
23
  export declare const fetchAsset: (client: () => AxiosInstance, endPoint: string, id: DocId, options?: {
24
24
  report?: boolean;
25
25
  }) => Promise<AssetDetailItemDto>;
26
- /** `endPoint`: as a configuration names it (`endPointCmsAsset`); `/adm/v1/cms/asset` by default. */
26
+ /** `endPoint`: as configured (`endPointCmsAsset`). Defaults to `/adm/v1/cms/asset`. */
27
27
  export declare const fetchAssetAsCmsMedia: <T extends DamMediaFromDam>(client: () => AxiosInstance, id: DocId, endPoint?: string) => Promise<T>;
28
28
  export declare const fetchAssetByFileId: (client: () => AxiosInstance, endPoint: string, assetFileId: DocId) => Promise<AssetDetailItemDto>;
29
29
  export declare const bulkUpdateAssetsMetadata: (client: () => AxiosInstance, endPoint: string, items: UploadQueueItem[], mainFileSingleUseOverride?: boolean | undefined) => Promise<AssetMetadataBulkItem[]>;
30
30
  export declare const fetchAssetListByIds: (client: () => AxiosInstance, endPoint: string, ids: DocId[], licenceId: number) => Promise<AssetDetailItemDto[]>;
31
- /** What the bulk save sends: an item with an asset whose metadata the user may edit. */
31
+ /** Items the bulk save sends: those with an asset whose metadata the user may edit. */
32
32
  export declare const hasMetadataToSave: (item: UploadQueueItem) => item is UploadQueueItem & {
33
33
  assetId: DocId;
34
34
  };
35
35
  /**
36
- * What a failed save of metadata tells the user, by the kind of the failure: the one place that says it. A refusal
37
- * by validation names its fields as the forms of `extSystem` do in the DAM configuration `configName`, a field refused
38
- * for several assets once.
36
+ * The single place that tells the user about a failed metadata save, by kind of failure.
37
+ * A validation refusal names its fields as the `extSystem` forms do in DAM
38
+ * configuration `configName`. A field refused for several assets is listed once.
39
39
  */
40
40
  export declare const showMetadataSaveError: (error: unknown, extSystem: IntegerId, configName: string) => void;
41
41
  export declare const updateAssetMetadata: (client: () => AxiosInstance, endPoint: string, asset: AssetDetailItemDto, extSystem: IntegerId, mainFileSingleUse: boolean | null) => Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"damAssetApi.js","names":["axios","BULK_METADATA_LIMIT","ENTITY","FETCH_BY_IDS_MAX_LIMIT","useFetchAssetList","useApiFetchList","SYSTEM_CORE_DAM","endPoint","fetchAsset","useApiRequest","execute","options","fetchAssetAsCmsMedia","DAM_END_POINT_CMS_ASSET","fetchAssetByFileId","assetFileId","bulkUpdateAssetsMetadata","sent","items","hasMetadataToSave","useMetadataBulkUpdate","client","saveMetadataInBatches","listItemsToMetadataBulkItems","mainFileSingleUseOverride","item","fetchAssetListByIdsSequence","ids","totalCalls","responses","i","offset","reduced","res","licenceId","fetchAssetListByIds","resolve","final","list","reject","err","metadataBulkUpdate","status","useApiFetchItems","useMetadataBulkCommand","useApiCommand","AssetMetadataValidationError","AnzuApiValidationError","axiosError","field","errors","assetTypes","answers","bodies","error","isAnzuApiValidationError","isNull","dtoItems","useAlerts","metadataFieldName","indexed","key","path","commonT","property","assetType","isUndefined","useDamConfigState","configName","found","getDamConfigAssetCustomFormElements","extSystem","element","showMetadataSaveError","named","name","showErrorsDefault","showUnknownError","updateAssetMetadata","data","asset","updateAssetAuthors","bulkUpdateAssetsAuthors"],"sources":["../../../../src/domains/dam/api/damAssetApi.ts"],"sourcesContent":["import axios, { type AxiosError, type AxiosInstance } from 'axios'\nimport type { DocId, IntegerId } from '@/shared/types/common'\nimport type { AssetDetailItemDto, AssetSearchListItemDto, DamAssetTypeType } from '@/domains/dam/types/Asset'\nimport type { UploadQueueItem } from '@/domains/dam/types/UploadQueue'\nimport { HTTP_STATUS_OK } from '@/shared/statusCodes'\nimport { isNull, isUndefined } from '@/shared/utils/common'\nimport {\n AnzuApiValidationError,\n type AnzuApiValidationResponseData,\n isAnzuApiValidationError,\n type ValidationError,\n} from '@/shared/error/AnzuApiValidationError'\nimport { useAlerts } from '@/domains/system/composables/alerts'\nimport { SYSTEM_CORE_DAM } from '@/domains/dam/api/damConstants'\nimport { DAM_END_POINT_CMS_ASSET } from '@/domains/dam/api/damEndPoints'\nimport { useDamConfigState } from '@/domains/dam/config/composables/damConfigState'\nimport { useApiFetchList } from '@/domains/api/composables/useApiFetchList'\nimport { useApiCommand, useApiRequest } from '@/domains/api/composables/useApiRequest'\nimport { useApiFetchItems } from '@/domains/api/composables/useApiFetchItems'\nimport type { DamMediaFromDam } from '@/domains/dam/types/MediaAware'\nimport { commonT } from '@/plugins/i18n'\n\nconst BULK_METADATA_LIMIT = 10\nexport const ENTITY = 'asset'\nconst FETCH_BY_IDS_MAX_LIMIT = 50\n\nexport interface AssetMetadataBulkItem {\n id: DocId\n keywords: DocId[]\n authors: DocId[]\n described: boolean\n customData: AssetCustomData\n mainFileSingleUse: boolean | null\n mainFileInternal: boolean | null\n mainFileOverrideInternal: boolean | null\n}\n\n// What a save sends. Whether the main file is internal is set in the DAM itself: a save from here leaves the two\n// as they are, and reads them from the answer.\ntype AssetMetadataBulkItemBody = Omit<AssetMetadataBulkItem, 'mainFileInternal' | 'mainFileOverrideInternal'>\n\nexport declare type AssetCustomData = Record<string, any>\n\nexport const useFetchAssetList = (client: () => AxiosInstance, endPoint: string, licenceId: IntegerId) =>\n useApiFetchList<AssetSearchListItemDto>({\n client,\n system: SYSTEM_CORE_DAM,\n entity: ENTITY,\n urlTemplate: endPoint + '/licence/:licenceId',\n urlParams: { licenceId },\n })\n\n/**\n * `options.report: false`: a failure of this read is not handed to the api error logger. For the upload queue,\n * which asks for the same asset again and again and reports only the first failure of a streak.\n */\nexport const fetchAsset = (\n client: () => AxiosInstance,\n endPoint: string,\n id: DocId,\n options: { report?: boolean } = {}\n) => {\n const { execute } = useApiRequest<AssetDetailItemDto, null>({\n client,\n method: 'GET',\n system: SYSTEM_CORE_DAM,\n entity: ENTITY,\n urlTemplate: endPoint + '/:id',\n })\n\n return execute({ urlParams: { id }, report: options.report })\n}\n\n/** `endPoint`: as a configuration names it (`endPointCmsAsset`); `/adm/v1/cms/asset` by default. */\nexport const fetchAssetAsCmsMedia = <T extends DamMediaFromDam>(\n client: () => AxiosInstance,\n id: DocId,\n endPoint: string = DAM_END_POINT_CMS_ASSET\n) => {\n const { execute } = useApiRequest<T, null>({\n client,\n method: 'GET',\n system: SYSTEM_CORE_DAM,\n entity: ENTITY,\n urlTemplate: endPoint + '/:id',\n })\n\n return execute({ urlParams: { id } })\n}\n\nexport const fetchAssetByFileId = (client: () => AxiosInstance, endPoint: string, assetFileId: DocId) => {\n const { execute } = useApiRequest<AssetDetailItemDto, null>({\n client,\n method: 'GET',\n system: SYSTEM_CORE_DAM,\n entity: ENTITY,\n urlTemplate: endPoint + '/asset-file/:id',\n })\n\n return execute({ urlParams: { id: assetFileId } })\n}\n\nexport const bulkUpdateAssetsMetadata = async (\n client: () => AxiosInstance,\n endPoint: string,\n items: UploadQueueItem[],\n mainFileSingleUseOverride: boolean | undefined = undefined\n) => {\n const sent = items.filter(hasMetadataToSave)\n const { execute } = useMetadataBulkUpdate<AssetMetadataBulkItemBody>(client, endPoint)\n const answers = await saveMetadataInBatches(\n execute,\n listItemsToMetadataBulkItems(sent, mainFileSingleUseOverride),\n sent.map((item) => item.assetType)\n )\n\n return answers.flat()\n}\n\nasync function fetchAssetListByIdsSequence(\n client: () => AxiosInstance,\n endPoint: string,\n ids: DocId[],\n licenceId: number\n) {\n if (ids.length === 0) return Promise.resolve([])\n const totalCalls = Math.ceil(ids.length / FETCH_BY_IDS_MAX_LIMIT)\n const responses = []\n\n for (let i = 0; i < totalCalls; i++) {\n const offset = i * FETCH_BY_IDS_MAX_LIMIT\n const reduced = ids.slice(offset, offset + FETCH_BY_IDS_MAX_LIMIT)\n const res = await client().get(endPoint + `/licence/${licenceId}/ids/${reduced.join(',')}`)\n responses.push(res)\n }\n return responses\n}\n\nexport const fetchAssetListByIds: (\n client: () => AxiosInstance,\n endPoint: string,\n ids: DocId[],\n licenceId: number\n) => Promise<AssetDetailItemDto[]> = (\n client: () => AxiosInstance,\n endPoint: string,\n ids: DocId[],\n licenceId: number\n) => {\n return new Promise((resolve, reject) => {\n fetchAssetListByIdsSequence(client, endPoint, ids, licenceId)\n .then((responses) => {\n if (ids.length === 0) {\n return resolve([])\n } else if (responses.length === 0) {\n reject(responses)\n } else if (\n responses.every((res) => {\n return res.status === HTTP_STATUS_OK\n })\n ) {\n const final = []\n for (let i = 0; i < responses.length; i++) {\n const list = responses[i]!.data?.data\n // Not \"none of them exists\": the upload queue counts the assets an answer does not carry.\n if (!Array.isArray(list)) return reject(responses)\n final.push(...list)\n }\n resolve(final as AssetDetailItemDto[])\n } else {\n reject(responses)\n }\n })\n .catch((err) => {\n //\n reject(err)\n })\n })\n}\n\n// Only a 200 is a save: any other answer is a save that failed, as before.\nconst metadataBulkUpdate = (client: () => AxiosInstance, endPoint: string) => ({\n client,\n method: 'PATCH' as const,\n system: SYSTEM_CORE_DAM,\n entity: ENTITY,\n urlTemplate: endPoint + '/metadata-bulk-update',\n options: { validateStatus: (status: number) => status === HTTP_STATUS_OK },\n})\n\n// For a caller that builds on the answer: it has to be the list of the saved assets.\nconst useMetadataBulkUpdate = <B>(client: () => AxiosInstance, endPoint: string) =>\n useApiFetchItems<AssetMetadataBulkItem, B[]>({ ...metadataBulkUpdate(client, endPoint), shape: 'array' })\n\n// For a caller that reads nothing of the answer.\nconst useMetadataBulkCommand = <B>(client: () => AxiosInstance, endPoint: string) =>\n useApiCommand<B[]>(metadataBulkUpdate(client, endPoint))\n\n/**\n * A save of metadata refused by validation. Its `fields` are as the helpers make them; `requestFields` keep the keys\n * of the request, such as `[0].customData.title`, whose index is the place of the asset in its batch, not a row on\n * the screen. `assetTypes` are the types of the assets of that batch, in its order: a custom field is named by the\n * form of the type of its asset.\n */\nclass AssetMetadataValidationError extends AnzuApiValidationError {\n requestFields: ValidationError[]\n assetTypes: Array<DamAssetTypeType | undefined>\n\n constructor(axiosError: AxiosError<AnzuApiValidationResponseData>, assetTypes: Array<DamAssetTypeType | undefined>) {\n super(axiosError, SYSTEM_CORE_DAM, ENTITY, axiosError)\n this.requestFields = Object.entries(axiosError.response!.data.fields).map(([field, errors]) => ({ field, errors }))\n this.assetTypes = assetTypes\n }\n}\n\n/**\n * Ten at a time, one batch after the other. The server saves a batch whole or not at all: a batch that fails stops\n * those after it, the ones before it stay saved, and saving again is safe.\n */\nconst saveMetadataInBatches = async <B, R>(\n execute: (params: { body: B[] }) => Promise<R>,\n bodies: B[],\n assetTypes: Array<DamAssetTypeType | undefined>\n) => {\n const answers: R[] = []\n for (let offset = 0; offset < bodies.length; offset += BULK_METADATA_LIMIT) {\n try {\n answers.push(await execute({ body: bodies.slice(offset, offset + BULK_METADATA_LIMIT) }))\n } catch (error) {\n // The helper makes a refusal by validation of the error of axios, which it keeps as the cause.\n if (isAnzuApiValidationError(error) && axios.isAxiosError(error.cause)) {\n throw new AssetMetadataValidationError(error.cause, assetTypes.slice(offset, offset + BULK_METADATA_LIMIT))\n }\n throw error\n }\n }\n\n return answers\n}\n\n/** What the bulk save sends: an item with an asset whose metadata the user may edit. */\nexport const hasMetadataToSave = (item: UploadQueueItem): item is UploadQueueItem & { assetId: DocId } =>\n !isNull(item.assetId) && item.canEditMetadata\n\nfunction listItemsToMetadataBulkItems(\n items: UploadQueueItem[],\n mainFileSingleUseOverride: boolean | undefined = undefined\n) {\n const dtoItems: AssetMetadataBulkItemBody[] = []\n items.forEach((item) => {\n if (hasMetadataToSave(item)) {\n dtoItems.push({\n id: item.assetId,\n keywords: item.keywords,\n authors: item.authors,\n described: true,\n customData: item.customData,\n // Never null: a row whose switch is not known yet is saved as off, which is what the DAM makes of null.\n mainFileSingleUse: mainFileSingleUseOverride ?? item.mainFileSingleUse ?? false,\n })\n }\n })\n\n return dtoItems\n}\n\nconst { showErrorsDefault, showUnknownError, showApiValidationError } = useAlerts()\n\n/** A field of a refused save of metadata, as the forms name it. */\nconst metadataFieldName = (\n key: string,\n assetTypes: Array<DamAssetTypeType | undefined>,\n extSystem: IntegerId,\n configName: string\n) => {\n const indexed = key.match(/^\\[(\\d+)\\]\\.(.+)$/)\n const path = indexed ? indexed[2]! : key\n if (path === 'keywords') return commonT('common.damImage.asset.model.keywords')\n if (path === 'authors') return commonT('common.damImage.asset.model.authors')\n const property = path.split('.').at(-1)!\n const assetType = indexed ? assetTypes[Number(indexed[1])] : undefined\n if (path.startsWith('customData.') && !isUndefined(assetType)) {\n const { getDamConfigAssetCustomFormElements } = useDamConfigState(undefined, configName)\n const found = getDamConfigAssetCustomFormElements(extSystem)?.[assetType].find(\n (element) => element.property === property\n )\n if (found) return found.name\n }\n\n return property\n}\n\n/**\n * What a failed save of metadata tells the user, by the kind of the failure: the one place that says it. A refusal\n * by validation names its fields as the forms of `extSystem` do in the DAM configuration `configName`, a field refused\n * for several assets once.\n */\nexport const showMetadataSaveError = (error: unknown, extSystem: IntegerId, configName: string) => {\n if (error instanceof AssetMetadataValidationError) {\n const named = new Map<string, Set<string>>()\n for (const { field, errors } of error.requestFields) {\n const name = metadataFieldName(field, error.assetTypes, extSystem, configName)\n named.set(name, new Set([...(named.get(name) ?? []), ...errors]))\n }\n showApiValidationError(\n Array.from(named, ([field, errors]) => ({ field, errors: [...errors] })),\n -1,\n true\n )\n return\n }\n if (!showErrorsDefault(error)) showUnknownError()\n}\n\n// `extSystem` is no longer read here: the caller names the fields of a refusal, through `showMetadataSaveError`.\nexport const updateAssetMetadata = async (\n client: () => AxiosInstance,\n endPoint: string,\n asset: AssetDetailItemDto,\n extSystem: IntegerId,\n mainFileSingleUse: boolean | null\n) => {\n const data: AssetMetadataBulkItemBody = {\n id: asset.id,\n keywords: asset.keywords,\n authors: asset.authors,\n described: true,\n customData: asset.metadata.customData,\n mainFileSingleUse: mainFileSingleUse,\n }\n\n const { execute } = useMetadataBulkCommand<AssetMetadataBulkItemBody>(client, endPoint)\n await saveMetadataInBatches(execute, [data], [asset.attributes.assetType])\n}\n\n// As `updateAssetMetadata`: the caller names the fields of a refusal, through `showMetadataSaveError`.\nexport const updateAssetAuthors = async (client: () => AxiosInstance, endPoint: string, asset: AssetDetailItemDto) => {\n const data: Partial<AssetMetadataBulkItem> = {\n id: asset.id,\n authors: asset.authors,\n described: true,\n }\n\n const { execute } = useMetadataBulkCommand<Partial<AssetMetadataBulkItem>>(client, endPoint)\n await saveMetadataInBatches(execute, [data], [asset.attributes.assetType])\n}\n\nexport type IdsGroupedByLicences = Map<IntegerId, DocId[]>\n\nexport type AssetAuthorsItems = AssetAuthorsItem[]\nexport interface AssetAuthorsItem {\n id: DocId\n authors: DocId[]\n}\n\nexport const bulkUpdateAssetsAuthors = async (\n client: () => AxiosInstance,\n endPoint: string,\n items: AssetAuthorsItems\n) => {\n const { execute } = useMetadataBulkCommand<AssetAuthorsItem>(client, endPoint)\n await saveMetadataInBatches(execute, items, [])\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"damAssetApi.js","names":["axios","BULK_METADATA_LIMIT","ENTITY","FETCH_BY_IDS_MAX_LIMIT","useFetchAssetList","useApiFetchList","SYSTEM_CORE_DAM","endPoint","fetchAsset","useApiRequest","execute","options","fetchAssetAsCmsMedia","DAM_END_POINT_CMS_ASSET","fetchAssetByFileId","assetFileId","bulkUpdateAssetsMetadata","sent","items","hasMetadataToSave","useMetadataBulkUpdate","client","saveMetadataInBatches","listItemsToMetadataBulkItems","mainFileSingleUseOverride","item","fetchAssetListByIdsSequence","ids","totalCalls","responses","i","offset","reduced","res","licenceId","fetchAssetListByIds","resolve","final","list","reject","err","metadataBulkUpdate","status","useApiFetchItems","useMetadataBulkCommand","useApiCommand","AssetMetadataValidationError","AnzuApiValidationError","axiosError","field","errors","assetTypes","answers","bodies","error","isAnzuApiValidationError","isNull","dtoItems","useAlerts","metadataFieldName","indexed","key","path","commonT","property","assetType","isUndefined","useDamConfigState","configName","found","getDamConfigAssetCustomFormElements","extSystem","element","showMetadataSaveError","named","name","showErrorsDefault","showUnknownError","updateAssetMetadata","data","asset","updateAssetAuthors","bulkUpdateAssetsAuthors"],"sources":["../../../../src/domains/dam/api/damAssetApi.ts"],"sourcesContent":["import axios, { type AxiosError, type AxiosInstance } from 'axios'\nimport type { DocId, IntegerId } from '@/shared/types/common'\nimport type { AssetDetailItemDto, AssetSearchListItemDto, DamAssetTypeType } from '@/domains/dam/types/Asset'\nimport type { UploadQueueItem } from '@/domains/dam/types/UploadQueue'\nimport { HTTP_STATUS_OK } from '@/shared/statusCodes'\nimport { isNull, isUndefined } from '@/shared/utils/common'\nimport {\n AnzuApiValidationError,\n type AnzuApiValidationResponseData,\n isAnzuApiValidationError,\n type ValidationError,\n} from '@/shared/error/AnzuApiValidationError'\nimport { useAlerts } from '@/domains/system/composables/alerts'\nimport { SYSTEM_CORE_DAM } from '@/domains/dam/api/damConstants'\nimport { DAM_END_POINT_CMS_ASSET } from '@/domains/dam/api/damEndPoints'\nimport { useDamConfigState } from '@/domains/dam/config/composables/damConfigState'\nimport { useApiFetchList } from '@/domains/api/composables/useApiFetchList'\nimport { useApiCommand, useApiRequest } from '@/domains/api/composables/useApiRequest'\nimport { useApiFetchItems } from '@/domains/api/composables/useApiFetchItems'\nimport type { DamMediaFromDam } from '@/domains/dam/types/MediaAware'\nimport { commonT } from '@/plugins/i18n'\n\nconst BULK_METADATA_LIMIT = 10\nexport const ENTITY = 'asset'\nconst FETCH_BY_IDS_MAX_LIMIT = 50\n\nexport interface AssetMetadataBulkItem {\n id: DocId\n keywords: DocId[]\n authors: DocId[]\n described: boolean\n customData: AssetCustomData\n mainFileSingleUse: boolean | null\n mainFileInternal: boolean | null\n mainFileOverrideInternal: boolean | null\n}\n\n// What a save sends. Whether the main file is internal is set in the DAM itself.\n// A save from here leaves those two fields unchanged and reads them from the answer.\ntype AssetMetadataBulkItemBody = Omit<AssetMetadataBulkItem, 'mainFileInternal' | 'mainFileOverrideInternal'>\n\nexport declare type AssetCustomData = Record<string, any>\n\nexport const useFetchAssetList = (client: () => AxiosInstance, endPoint: string, licenceId: IntegerId) =>\n useApiFetchList<AssetSearchListItemDto>({\n client,\n system: SYSTEM_CORE_DAM,\n entity: ENTITY,\n urlTemplate: endPoint + '/licence/:licenceId',\n urlParams: { licenceId },\n })\n\n/**\n * `options.report: false` keeps a failure of this read out of the api error logger.\n * Used by the upload queue, which polls the same asset repeatedly and reports only the first failure of a streak.\n */\nexport const fetchAsset = (\n client: () => AxiosInstance,\n endPoint: string,\n id: DocId,\n options: { report?: boolean } = {}\n) => {\n const { execute } = useApiRequest<AssetDetailItemDto, null>({\n client,\n method: 'GET',\n system: SYSTEM_CORE_DAM,\n entity: ENTITY,\n urlTemplate: endPoint + '/:id',\n })\n\n return execute({ urlParams: { id }, report: options.report })\n}\n\n/** `endPoint`: as configured (`endPointCmsAsset`). Defaults to `/adm/v1/cms/asset`. */\nexport const fetchAssetAsCmsMedia = <T extends DamMediaFromDam>(\n client: () => AxiosInstance,\n id: DocId,\n endPoint: string = DAM_END_POINT_CMS_ASSET\n) => {\n const { execute } = useApiRequest<T, null>({\n client,\n method: 'GET',\n system: SYSTEM_CORE_DAM,\n entity: ENTITY,\n urlTemplate: endPoint + '/:id',\n })\n\n return execute({ urlParams: { id } })\n}\n\nexport const fetchAssetByFileId = (client: () => AxiosInstance, endPoint: string, assetFileId: DocId) => {\n const { execute } = useApiRequest<AssetDetailItemDto, null>({\n client,\n method: 'GET',\n system: SYSTEM_CORE_DAM,\n entity: ENTITY,\n urlTemplate: endPoint + '/asset-file/:id',\n })\n\n return execute({ urlParams: { id: assetFileId } })\n}\n\nexport const bulkUpdateAssetsMetadata = async (\n client: () => AxiosInstance,\n endPoint: string,\n items: UploadQueueItem[],\n mainFileSingleUseOverride: boolean | undefined = undefined\n) => {\n const sent = items.filter(hasMetadataToSave)\n const { execute } = useMetadataBulkUpdate<AssetMetadataBulkItemBody>(client, endPoint)\n const answers = await saveMetadataInBatches(\n execute,\n listItemsToMetadataBulkItems(sent, mainFileSingleUseOverride),\n sent.map((item) => item.assetType)\n )\n\n return answers.flat()\n}\n\nasync function fetchAssetListByIdsSequence(\n client: () => AxiosInstance,\n endPoint: string,\n ids: DocId[],\n licenceId: number\n) {\n if (ids.length === 0) return Promise.resolve([])\n const totalCalls = Math.ceil(ids.length / FETCH_BY_IDS_MAX_LIMIT)\n const responses = []\n\n for (let i = 0; i < totalCalls; i++) {\n const offset = i * FETCH_BY_IDS_MAX_LIMIT\n const reduced = ids.slice(offset, offset + FETCH_BY_IDS_MAX_LIMIT)\n const res = await client().get(endPoint + `/licence/${licenceId}/ids/${reduced.join(',')}`)\n responses.push(res)\n }\n return responses\n}\n\nexport const fetchAssetListByIds: (\n client: () => AxiosInstance,\n endPoint: string,\n ids: DocId[],\n licenceId: number\n) => Promise<AssetDetailItemDto[]> = (\n client: () => AxiosInstance,\n endPoint: string,\n ids: DocId[],\n licenceId: number\n) => {\n return new Promise((resolve, reject) => {\n fetchAssetListByIdsSequence(client, endPoint, ids, licenceId)\n .then((responses) => {\n if (ids.length === 0) {\n return resolve([])\n } else if (responses.length === 0) {\n reject(responses)\n } else if (\n responses.every((res) => {\n return res.status === HTTP_STATUS_OK\n })\n ) {\n const final = []\n for (let i = 0; i < responses.length; i++) {\n const list = responses[i]!.data?.data\n // Reject instead of treating it as \"none exist\": the upload queue counts the assets missing from an answer.\n if (!Array.isArray(list)) return reject(responses)\n final.push(...list)\n }\n resolve(final as AssetDetailItemDto[])\n } else {\n reject(responses)\n }\n })\n .catch((err) => {\n //\n reject(err)\n })\n })\n}\n\n// Only a 200 is a save: any other answer is a save that failed, as before.\nconst metadataBulkUpdate = (client: () => AxiosInstance, endPoint: string) => ({\n client,\n method: 'PATCH' as const,\n system: SYSTEM_CORE_DAM,\n entity: ENTITY,\n urlTemplate: endPoint + '/metadata-bulk-update',\n options: { validateStatus: (status: number) => status === HTTP_STATUS_OK },\n})\n\n// For callers that build on the answer. It must be the list of saved assets.\nconst useMetadataBulkUpdate = <B>(client: () => AxiosInstance, endPoint: string) =>\n useApiFetchItems<AssetMetadataBulkItem, B[]>({ ...metadataBulkUpdate(client, endPoint), shape: 'array' })\n\n// For a caller that reads nothing of the answer.\nconst useMetadataBulkCommand = <B>(client: () => AxiosInstance, endPoint: string) =>\n useApiCommand<B[]>(metadataBulkUpdate(client, endPoint))\n\n/**\n * A metadata save refused by validation. `fields` are as the helpers build them.\n * `requestFields` keep the request keys, such as `[0].customData.title`.\n * The index is the asset's position in its batch, not a screen row.\n * `assetTypes` are the types of that batch's assets, in order. A custom field is named by the form of its asset's type.\n */\nclass AssetMetadataValidationError extends AnzuApiValidationError {\n requestFields: ValidationError[]\n assetTypes: Array<DamAssetTypeType | undefined>\n\n constructor(axiosError: AxiosError<AnzuApiValidationResponseData>, assetTypes: Array<DamAssetTypeType | undefined>) {\n super(axiosError, SYSTEM_CORE_DAM, ENTITY, axiosError)\n this.requestFields = Object.entries(axiosError.response!.data.fields).map(([field, errors]) => ({ field, errors }))\n this.assetTypes = assetTypes\n }\n}\n\n/**\n * Ten at a time, sequentially. The server saves a batch whole or not at all.\n * A failing batch stops the later ones, earlier ones stay saved, and saving again is safe.\n */\nconst saveMetadataInBatches = async <B, R>(\n execute: (params: { body: B[] }) => Promise<R>,\n bodies: B[],\n assetTypes: Array<DamAssetTypeType | undefined>\n) => {\n const answers: R[] = []\n for (let offset = 0; offset < bodies.length; offset += BULK_METADATA_LIMIT) {\n try {\n answers.push(await execute({ body: bodies.slice(offset, offset + BULK_METADATA_LIMIT) }))\n } catch (error) {\n // The helper builds the validation error from the axios error and keeps it as the cause.\n if (isAnzuApiValidationError(error) && axios.isAxiosError(error.cause)) {\n throw new AssetMetadataValidationError(error.cause, assetTypes.slice(offset, offset + BULK_METADATA_LIMIT))\n }\n throw error\n }\n }\n\n return answers\n}\n\n/** Items the bulk save sends: those with an asset whose metadata the user may edit. */\nexport const hasMetadataToSave = (item: UploadQueueItem): item is UploadQueueItem & { assetId: DocId } =>\n !isNull(item.assetId) && item.canEditMetadata\n\nfunction listItemsToMetadataBulkItems(\n items: UploadQueueItem[],\n mainFileSingleUseOverride: boolean | undefined = undefined\n) {\n const dtoItems: AssetMetadataBulkItemBody[] = []\n items.forEach((item) => {\n if (hasMetadataToSave(item)) {\n dtoItems.push({\n id: item.assetId,\n keywords: item.keywords,\n authors: item.authors,\n described: true,\n customData: item.customData,\n // Never null. A row whose switch is not known yet is saved as off, which is how the DAM treats null.\n mainFileSingleUse: mainFileSingleUseOverride ?? item.mainFileSingleUse ?? false,\n })\n }\n })\n\n return dtoItems\n}\n\nconst { showErrorsDefault, showUnknownError, showApiValidationError } = useAlerts()\n\n/** A field of a refused metadata save, named as the forms name it. */\nconst metadataFieldName = (\n key: string,\n assetTypes: Array<DamAssetTypeType | undefined>,\n extSystem: IntegerId,\n configName: string\n) => {\n const indexed = key.match(/^\\[(\\d+)\\]\\.(.+)$/)\n const path = indexed ? indexed[2]! : key\n if (path === 'keywords') return commonT('common.damImage.asset.model.keywords')\n if (path === 'authors') return commonT('common.damImage.asset.model.authors')\n const property = path.split('.').at(-1)!\n const assetType = indexed ? assetTypes[Number(indexed[1])] : undefined\n if (path.startsWith('customData.') && !isUndefined(assetType)) {\n const { getDamConfigAssetCustomFormElements } = useDamConfigState(undefined, configName)\n const found = getDamConfigAssetCustomFormElements(extSystem)?.[assetType].find(\n (element) => element.property === property\n )\n if (found) return found.name\n }\n\n return property\n}\n\n/**\n * The single place that tells the user about a failed metadata save, by kind of failure.\n * A validation refusal names its fields as the `extSystem` forms do in DAM\n * configuration `configName`. A field refused for several assets is listed once.\n */\nexport const showMetadataSaveError = (error: unknown, extSystem: IntegerId, configName: string) => {\n if (error instanceof AssetMetadataValidationError) {\n const named = new Map<string, Set<string>>()\n for (const { field, errors } of error.requestFields) {\n const name = metadataFieldName(field, error.assetTypes, extSystem, configName)\n named.set(name, new Set([...(named.get(name) ?? []), ...errors]))\n }\n showApiValidationError(\n Array.from(named, ([field, errors]) => ({ field, errors: [...errors] })),\n -1,\n true\n )\n return\n }\n if (!showErrorsDefault(error)) showUnknownError()\n}\n\n// Callers name the fields of a refusal through `showMetadataSaveError`, so `extSystem` is not needed here.\nexport const updateAssetMetadata = async (\n client: () => AxiosInstance,\n endPoint: string,\n asset: AssetDetailItemDto,\n extSystem: IntegerId,\n mainFileSingleUse: boolean | null\n) => {\n const data: AssetMetadataBulkItemBody = {\n id: asset.id,\n keywords: asset.keywords,\n authors: asset.authors,\n described: true,\n customData: asset.metadata.customData,\n mainFileSingleUse: mainFileSingleUse,\n }\n\n const { execute } = useMetadataBulkCommand<AssetMetadataBulkItemBody>(client, endPoint)\n await saveMetadataInBatches(execute, [data], [asset.attributes.assetType])\n}\n\n// Callers name the fields of a refusal through `showMetadataSaveError`.\nexport const updateAssetAuthors = async (client: () => AxiosInstance, endPoint: string, asset: AssetDetailItemDto) => {\n const data: Partial<AssetMetadataBulkItem> = {\n id: asset.id,\n authors: asset.authors,\n described: true,\n }\n\n const { execute } = useMetadataBulkCommand<Partial<AssetMetadataBulkItem>>(client, endPoint)\n await saveMetadataInBatches(execute, [data], [asset.attributes.assetType])\n}\n\nexport type IdsGroupedByLicences = Map<IntegerId, DocId[]>\n\nexport type AssetAuthorsItems = AssetAuthorsItem[]\nexport interface AssetAuthorsItem {\n id: DocId\n authors: DocId[]\n}\n\nexport const bulkUpdateAssetsAuthors = async (\n client: () => AxiosInstance,\n endPoint: string,\n items: AssetAuthorsItems\n) => {\n const { execute } = useMetadataBulkCommand<AssetAuthorsItem>(client, endPoint)\n await saveMetadataInBatches(execute, items, [])\n}\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { DamAssetLicence } from '../types/AssetLicence';
2
2
  import { AxiosInstance } from 'axios';
3
3
  import { IntegerId } from '../../../shared/types/common';
4
- /** `endPoint`: the address of the licences the caller goes by; the default one where it gives none. */
4
+ /** `endPoint`: the caller's licence endpoint. The default one is used when not given. */
5
5
  export declare const fetchDamAssetLicence: (client: () => AxiosInstance, id: IntegerId, endPoint?: string) => Promise<DamAssetLicence>;