@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
@@ -13,14 +13,16 @@ type __VLS_ModelProps = {
13
13
  modelValue?: boolean;
14
14
  };
15
15
  type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
16
- declare var __VLS_10: {
17
- props: Record<string, any>;
18
- }, __VLS_31: {};
19
- type __VLS_Slots = {} & {
20
- activator?: (props: typeof __VLS_10) => any;
21
- } & {
22
- title?: (props: typeof __VLS_31) => any;
16
+ declare const __VLS_template: () => {
17
+ __VLS_Slots: {
18
+ activator?: (props: {
19
+ props: Record<string, any>;
20
+ }) => any;
21
+ } & {
22
+ title?: (props: {}) => any;
23
+ };
23
24
  };
25
+ type __VLS_Slots = ReturnType<typeof __VLS_template>['__VLS_Slots'];
24
26
  declare const __VLS_base: import('vue').DefineComponent<__VLS_PublicProps, {
25
27
  activate: () => Promise<void>;
26
28
  }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
@@ -1 +1 @@
1
- {"version":3,"file":"AFileInputDialog.vue_vue_type_script_setup_true_lang.js","names":["_useModel","_resolveComponent","_openBlock","_createBlock","_component_VDialog","_withCtx","_renderSlot","_createVNode","_component_VBtn","_mergeProps","_unref","_component_VCard","ADialogToolbar","_createTextVNode","_toDisplayString","_component_VCardText","ARow","AFileInput","_component_VCardActions","_component_VSpacer","_withModifiers","_createCommentVNode","ARow_default","ADialogToolbar_default","AFileInput_default","AFileInputDialog_vue_vue_type_script_setup_true_lang_default","\"modelValue\"","\"modelModifiers\"","__expose","__emit","emit","modelValue","useModel","__props","onClose","useI18n","fileInputComponent","ref","onFilesInput","files","nextTick","_component_ABtnTertiary","resolveComponent","openBlock","createBlock","VDialog","_cache","$event","withCtx","dialogProps","renderSlot","_ctx","createVNode","VBtn","mergeProps","unref","t","VCard","createTextVNode","toDisplayString","VCardText","VCardActions","VSpacer","withModifiers","createCommentVNode"],"sources":["../../../../../src/domains/ui/file/components/AFileInputDialog.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport ADialogToolbar from '@/domains/ui/components/ADialogToolbar.vue'\nimport { useI18n } from 'vue-i18n'\nimport AFileInput from '@/domains/ui/file/components/AFileInput.vue'\nimport type { VBtn } from 'vuetify/components'\nimport type { InputFileChangeEvent } from '@/shared/types/ChangeEvent'\nimport { nextTick, ref } from 'vue'\nimport ARow from '@/domains/ui/components/ARow.vue'\n\n/**\n * For accept and maxSizes check docs {@see useFormatAndSizeCheck}\n */\nwithDefaults(\n defineProps<{\n fileInputKey?: number | undefined\n accept?: string | undefined\n maxSizes?: Record<string, number> | undefined\n multiple?: boolean\n toolbarT?: string\n }>(),\n {\n fileInputKey: undefined,\n accept: undefined,\n maxSizes: undefined,\n multiple: false,\n toolbarT: 'common.button.upload',\n }\n)\n\nconst emit = defineEmits<{\n (e: 'change', event: InputFileChangeEvent): void\n (e: 'filesInput', files: File[]): void\n}>()\n\nconst modelValue = defineModel<boolean>({ default: false, required: false })\n\nconst onClose = () => {\n modelValue.value = false\n}\n\nconst { t } = useI18n()\n\nconst fileInputComponent = ref<InstanceType<typeof AFileInput> | null>(null)\n\nconst onFilesInput = (files: File[]) => {\n emit('filesInput', files)\n modelValue.value = false\n}\n\n// Opens the file choice straight away, as a click on the input would. The input lives in the dialog, so the dialog\n// opens first; the choice still comes within the same click, which the browser requires.\nconst activate = async () => {\n modelValue.value = true\n await nextTick()\n fileInputComponent.value?.activate()\n}\n\ndefineExpose({\n activate,\n})\n</script>\n\n<template>\n <VDialog\n :model-value=\"modelValue\"\n persistent\n :max-width=\"500\"\n @update:model-value=\"modelValue = $event\"\n >\n <template #activator=\"{ props: dialogProps }\">\n <slot\n name=\"activator\"\n :props=\"dialogProps\"\n >\n <VBtn\n v-bind=\"dialogProps\"\n :text=\"t('common.button.open')\"\n />\n </slot>\n </template>\n <VCard\n v-if=\"modelValue\"\n data-cy=\"create-panel\"\n >\n <ADialogToolbar @cancel=\"onClose\">\n <slot name=\"title\">\n {{ t(toolbarT) }}\n </slot>\n </ADialogToolbar>\n <VCardText>\n <ARow>\n <AFileInput\n ref=\"fileInputComponent\"\n :file-input-key=\"fileInputKey\"\n :accept=\"accept\"\n :max-sizes=\"maxSizes\"\n :multiple=\"multiple\"\n use-dropzone\n @files-input=\"onFilesInput\"\n @change=\"emit('change', $event)\"\n />\n </ARow>\n </VCardText>\n <VCardActions>\n <VSpacer />\n <ABtnTertiary\n data-cy=\"button-close\"\n @click.stop=\"onClose\"\n >\n {{ t('common.button.close') }}\n </ABtnTertiary>\n </VCardActions>\n </VCard>\n </VDialog>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6BA,IAAM8B,IAAOD,GAKPE,IAAa/B,EAAoBiC,GAAA,YAAoC,GAErEC,UAAgB;GACpB,EAAW,QAAQ;EACrB,GAEM,EAAE,SAAMC,EAAQ,GAEhBC,IAAqBC,EAA4C,IAAI,GAErEC,KAAgB,MAAkB;GAEtC,AADAR,EAAK,cAAcS,CAAK,GACxB,EAAW,QAAQ;EACrB;E,OAUAX,EAAa,EACX,sBAP2B;GAG3B,AAFA,EAAW,QAAQ,IACnB,MAAMY,EAAS,GACfJ,EAAmB,OAAO,SAAS;EACrC,EAIA,CAAC,I;;GAIC,OAAAlC,EAAA,GAAAC,EAkDUC,GAAA;IAjDP,eAAa2B,EAAA;IACd,YAAA;IACC,aAAW;IACX,uBAAkB,AAAAe,EAAA,QAAA,MAAE,EAAA,QAAaC;;IAEvB,WAAS1C,GASX,EAAA,OATsB4C,QAAW,CACxC3C,EAQO6C,EAAA,QAAA,aAAA,EANJ,OAAOF,EAAW,SAMd,CAJL1C,EAGEC,GAHFC,EACUwC,GAAW,EAClB,MAAMvC,EAAA8C,CAAA,CAAC,CAAA,oBAAA,E;IAId,SAAAnD,QAgCQ,CA/BA0B,EAAA,SADR7B,EAAA,GAAAC,EAgCQQ,GAAA;;KA9BN,WAAQ;;KAER,SAAAN,QAIiB;MAJjBE,EAIiBK,GAAA,EAJA,UAAQsB,EAAO,GAAA;OAC9B,SAAA7B,QAEO,CAFPC,EAEO6C,EAAA,QAAA,SAAA,CAAA,SAAA,CADFtC,EAAAC,EAAAJ,EAAA8C,CAAA,CAAC,CAACvB,EAAA,QAAQ,CAAA,GAAA,CAAA,C;;;MAGjB1B,EAaYQ,GAAA,MAAA;OAZV,SAAAV,QAWO,CAXPE,EAWOS,GAAA,MAAA;QAVL,SAAAX,QASE,CATFE,EASEU,GAAA;SARI,SAAA;SAAJ,KAAImB;SACH,kBAAgBH,EAAA;SAChB,QAAQA,EAAA;SACR,aAAWA,EAAA;SACX,UAAUA,EAAA;SACX,gBAAA;SACc;SACb,UAAM,AAAAa,EAAA,QAAA,MAAEhB,EAAI,UAAWiB,CAAM;;;;;;;;;;;MAIpCxC,EAQeW,GAAA,MAAA;OAPb,SAAAb,QAAW,CAAXE,EAAWY,CAAA,GACXZ,EAKekC,GAAA;QAJb,WAAQ;QACP,SAAKrB,EAAOc,GAAO,CAAA,MAAA,CAAA;;QAEpB,SAAA7B,QAA8B,CAA3BQ,EAAAC,EAAAJ,EAAA8C,CAAA,CAAC,CAAA,qBAAA,CAAA,GAAA,CAAA,C"}
1
+ {"version":3,"file":"AFileInputDialog.vue_vue_type_script_setup_true_lang.js","names":["_useModel","_resolveComponent","_openBlock","_createBlock","_component_VDialog","_withCtx","_renderSlot","_createVNode","_component_VBtn","_mergeProps","_unref","_component_VCard","ADialogToolbar","_createTextVNode","_toDisplayString","_component_VCardText","ARow","AFileInput","_component_VCardActions","_component_VSpacer","_withModifiers","_createCommentVNode","ARow_default","ADialogToolbar_default","AFileInput_default","AFileInputDialog_vue_vue_type_script_setup_true_lang_default","\"modelValue\"","\"modelModifiers\"","__expose","__emit","emit","modelValue","useModel","__props","onClose","useI18n","fileInputComponent","ref","onFilesInput","files","nextTick","_component_ABtnTertiary","resolveComponent","openBlock","createBlock","VDialog","_cache","$event","withCtx","dialogProps","renderSlot","_ctx","createVNode","VBtn","mergeProps","unref","t","VCard","createTextVNode","toDisplayString","VCardText","VCardActions","VSpacer","withModifiers","createCommentVNode"],"sources":["../../../../../src/domains/ui/file/components/AFileInputDialog.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport ADialogToolbar from '@/domains/ui/components/ADialogToolbar.vue'\nimport { useI18n } from 'vue-i18n'\nimport AFileInput from '@/domains/ui/file/components/AFileInput.vue'\nimport type { VBtn } from 'vuetify/components'\nimport type { InputFileChangeEvent } from '@/shared/types/ChangeEvent'\nimport { nextTick, ref } from 'vue'\nimport ARow from '@/domains/ui/components/ARow.vue'\n\n/**\n * For accept and maxSizes check docs {@see useFormatAndSizeCheck}\n */\nwithDefaults(\n defineProps<{\n fileInputKey?: number | undefined\n accept?: string | undefined\n maxSizes?: Record<string, number> | undefined\n multiple?: boolean\n toolbarT?: string\n }>(),\n {\n fileInputKey: undefined,\n accept: undefined,\n maxSizes: undefined,\n multiple: false,\n toolbarT: 'common.button.upload',\n }\n)\n\nconst emit = defineEmits<{\n (e: 'change', event: InputFileChangeEvent): void\n (e: 'filesInput', files: File[]): void\n}>()\n\nconst modelValue = defineModel<boolean>({ default: false, required: false })\n\nconst onClose = () => {\n modelValue.value = false\n}\n\nconst { t } = useI18n()\n\nconst fileInputComponent = ref<InstanceType<typeof AFileInput> | null>(null)\n\nconst onFilesInput = (files: File[]) => {\n emit('filesInput', files)\n modelValue.value = false\n}\n\n// Opens the file picker like a click on the input. The input lives in the dialog, so the dialog opens first.\n// The picker must still open within the same click, which the browser requires.\nconst activate = async () => {\n modelValue.value = true\n await nextTick()\n fileInputComponent.value?.activate()\n}\n\ndefineExpose({\n activate,\n})\n</script>\n\n<template>\n <VDialog\n :model-value=\"modelValue\"\n persistent\n :max-width=\"500\"\n @update:model-value=\"modelValue = $event\"\n >\n <template #activator=\"{ props: dialogProps }\">\n <slot\n name=\"activator\"\n :props=\"dialogProps\"\n >\n <VBtn\n v-bind=\"dialogProps\"\n :text=\"t('common.button.open')\"\n />\n </slot>\n </template>\n <VCard\n v-if=\"modelValue\"\n data-cy=\"create-panel\"\n >\n <ADialogToolbar @cancel=\"onClose\">\n <slot name=\"title\">\n {{ t(toolbarT) }}\n </slot>\n </ADialogToolbar>\n <VCardText>\n <ARow>\n <AFileInput\n ref=\"fileInputComponent\"\n :file-input-key=\"fileInputKey\"\n :accept=\"accept\"\n :max-sizes=\"maxSizes\"\n :multiple=\"multiple\"\n use-dropzone\n @files-input=\"onFilesInput\"\n @change=\"emit('change', $event)\"\n />\n </ARow>\n </VCardText>\n <VCardActions>\n <VSpacer />\n <ABtnTertiary\n data-cy=\"button-close\"\n @click.stop=\"onClose\"\n >\n {{ t('common.button.close') }}\n </ABtnTertiary>\n </VCardActions>\n </VCard>\n </VDialog>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6BA,IAAM8B,IAAOD,GAKPE,IAAa/B,EAAoBiC,GAAA,YAAoC,GAErEC,UAAgB;GACpB,EAAW,QAAQ;EACrB,GAEM,EAAE,SAAMC,EAAQ,GAEhBC,IAAqBC,EAA4C,IAAI,GAErEC,KAAgB,MAAkB;GAEtC,AADAR,EAAK,cAAcS,CAAK,GACxB,EAAW,QAAQ;EACrB;E,OAUAX,EAAa,EACX,sBAP2B;GAG3B,AAFA,EAAW,QAAQ,IACnB,MAAMY,EAAS,GACfJ,EAAmB,OAAO,SAAS;EACrC,EAIA,CAAC,I;;GAIC,OAAAlC,EAAA,GAAAC,EAkDUC,GAAA;IAjDP,eAAa2B,EAAA;IACd,YAAA;IACC,aAAW;IACX,uBAAkB,AAAAe,EAAA,QAAA,MAAE,EAAA,QAAaC;;IAEvB,WAAS1C,GASX,EAAA,OATsB4C,QAAW,CACxC3C,EAQO6C,EAAA,QAAA,aAAA,EANJ,OAAOF,EAAW,SAMd,CAJL1C,EAGEC,GAHFC,EACUwC,GAAW,EAClB,MAAMvC,EAAA8C,CAAA,CAAC,CAAA,oBAAA,E;IAId,SAAAnD,QAgCQ,CA/BA0B,EAAA,SADR7B,EAAA,GAAAC,EAgCQQ,GAAA;;KA9BN,WAAQ;;KAER,SAAAN,QAIiB;MAJjBE,EAIiBK,GAAA,EAJA,UAAQsB,EAAO,GAAA;OAC9B,SAAA7B,QAEO,CAFPC,EAEO6C,EAAA,QAAA,SAAA,CAAA,SAAA,CADFtC,EAAAC,EAAAJ,EAAA8C,CAAA,CAAC,CAACvB,EAAA,QAAQ,CAAA,GAAA,CAAA,C;;;MAGjB1B,EAaYQ,GAAA,MAAA;OAZV,SAAAV,QAWO,CAXPE,EAWOS,GAAA,MAAA;QAVL,SAAAX,QASE,CATFE,EASEU,GAAA;SARI,SAAA;SAAJ,KAAImB;SACH,kBAAgBH,EAAA;SAChB,QAAQA,EAAA;SACR,aAAWA,EAAA;SACX,UAAUA,EAAA;SACX,gBAAA;SACc;SACb,UAAM,AAAAa,EAAA,QAAA,MAAEhB,EAAI,UAAWiB,CAAM;;;;;;;;;;;MAIpCxC,EAQeW,GAAA,MAAA;OAPb,SAAAb,QAAW,CAAXE,EAAWY,CAAA,GACXZ,EAKekC,GAAA;QAJb,WAAQ;QACP,SAAKrB,EAAOc,GAAO,CAAA,MAAA,CAAA;;QAEpB,SAAA7B,QAA8B,CAA3BQ,EAAAC,EAAAJ,EAAA8C,CAAA,CAAC,CAAA,qBAAA,CAAA,GAAA,CAAA,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"dropzone.js","names":["isDraggingFile","ref","draggingTimer","dragEventContainsFiles","event","i","checkReallyDraggingEnded","dragging","dragoverHandler","dragleaveHandler","dropHandler","useDropzoneGlobalDragState"],"sources":["../../../../../src/domains/ui/file/composables/dropzone.ts"],"sourcesContent":["import { type Ref, ref } from 'vue'\n\nconst isDraggingFile = ref(false)\nconst draggingTimer: Ref<ReturnType<typeof setTimeout> | undefined> = ref(undefined)\n\nconst dragEventContainsFiles = (event: DragEvent) => {\n if (event.dataTransfer?.types) {\n for (let i = 0; i < event.dataTransfer.types.length; i++) {\n if (event.dataTransfer.types[i] === 'Files') {\n return true\n }\n }\n }\n\n return false\n}\n\nconst checkReallyDraggingEnded = (event: DragEvent, dragging: boolean) => {\n if (!dragEventContainsFiles(event)) {\n return\n }\n if (dragging) {\n isDraggingFile.value = true\n clearTimeout(draggingTimer.value)\n } else {\n clearTimeout(draggingTimer.value)\n draggingTimer.value = setTimeout(() => {\n isDraggingFile.value = false\n }, 100)\n }\n}\n\n// Module level, not per call: `removeEventListener` matches by identity, so per-call handlers made\n// `destroyGlobalDragState()` remove references that were never added. The state is global — destroy\n// belongs to app teardown.\nconst dragoverHandler = (event: DragEvent) => {\n event.preventDefault()\n checkReallyDraggingEnded(event, true)\n}\nconst dragleaveHandler = (event: DragEvent) => {\n event.preventDefault()\n checkReallyDraggingEnded(event, false)\n}\nconst dropHandler = (event: DragEvent) => {\n event.preventDefault()\n checkReallyDraggingEnded(event, false)\n}\n\nexport function useDropzoneGlobalDragState() {\n const initGlobalDragState = () => {\n window.document.addEventListener('dragover', dragoverHandler)\n window.document.addEventListener('dragleave', dragleaveHandler)\n window.document.addEventListener('drop', dropHandler)\n }\n\n const destroyGlobalDragState = () => {\n window.document.removeEventListener('dragover', dragoverHandler)\n window.document.removeEventListener('dragleave', dragleaveHandler)\n window.document.removeEventListener('drop', dropHandler)\n clearTimeout(draggingTimer.value)\n isDraggingFile.value = false\n }\n\n return {\n isDraggingFile,\n initGlobalDragState,\n destroyGlobalDragState,\n }\n}\n"],"mappings":";;AAEA,IAAMA,IAAiBC,EAAI,EAAK,GAC1BC,IAAgED,EAAI,KAAA,CAAS,GAE7EE,KAA0B,MAAqB;CACnD,IAAIC,EAAM,cAAc,OACjB;OAAA,IAAIC,IAAI,GAAGA,IAAID,EAAM,aAAa,MAAM,QAAQ,KACnD,IAAIA,EAAM,aAAa,MAAMC,OAAO,SAClC,OAAO;CAAA;CAKb,OAAO;AACT,GAEMC,KAA4B,GAAkB,MAAsB;CACxE,AAAKH,EAAuBC,CAAK,MAG7BG,KACF,EAAe,QAAQ,IACvB,aAAaL,EAAc,KAAK,MAEhC,aAAaA,EAAc,KAAK,GAChC,EAAc,QAAQ,iBAAiB;EACrC,EAAe,QAAQ;CACzB,GAAG,GAAG;AAEV,GAKMM,KAAmB,MAAqB;CAE5C,AADAJ,EAAM,eAAe,GACrBE,EAAyBF,GAAO,EAAI;AACtC,GACMK,KAAoB,MAAqB;CAE7C,AADAL,EAAM,eAAe,GACrBE,EAAyBF,GAAO,EAAK;AACvC,GACMM,KAAe,MAAqB;CAExC,AADAN,EAAM,eAAe,GACrBE,EAAyBF,GAAO,EAAK;AACvC;AAEA,SAAgBO,IAA6B;CAe3C,OAAO;EACL;EACA,2BAhBgC;GAGhC,AAFA,OAAO,SAAS,iBAAiB,YAAYH,CAAe,GAC5D,OAAO,SAAS,iBAAiB,aAAaC,CAAgB,GAC9D,OAAO,SAAS,iBAAiB,QAAQC,CAAW;EACtD;EAaE,8BAXmC;GAKnC,AAJA,OAAO,SAAS,oBAAoB,YAAYF,CAAe,GAC/D,OAAO,SAAS,oBAAoB,aAAaC,CAAgB,GACjE,OAAO,SAAS,oBAAoB,QAAQC,CAAW,GACvD,aAAaR,EAAc,KAAK,GAChC,EAAe,QAAQ;EACzB;CAMA;AACF"}
1
+ {"version":3,"file":"dropzone.js","names":["isDraggingFile","ref","draggingTimer","dragEventContainsFiles","event","i","checkReallyDraggingEnded","dragging","dragoverHandler","dragleaveHandler","dropHandler","useDropzoneGlobalDragState"],"sources":["../../../../../src/domains/ui/file/composables/dropzone.ts"],"sourcesContent":["import { type Ref, ref } from 'vue'\n\nconst isDraggingFile = ref(false)\nconst draggingTimer: Ref<ReturnType<typeof setTimeout> | undefined> = ref(undefined)\n\nconst dragEventContainsFiles = (event: DragEvent) => {\n if (event.dataTransfer?.types) {\n for (let i = 0; i < event.dataTransfer.types.length; i++) {\n if (event.dataTransfer.types[i] === 'Files') {\n return true\n }\n }\n }\n\n return false\n}\n\nconst checkReallyDraggingEnded = (event: DragEvent, dragging: boolean) => {\n if (!dragEventContainsFiles(event)) {\n return\n }\n if (dragging) {\n isDraggingFile.value = true\n clearTimeout(draggingTimer.value)\n } else {\n clearTimeout(draggingTimer.value)\n draggingTimer.value = setTimeout(() => {\n isDraggingFile.value = false\n }, 100)\n }\n}\n\n// Handlers are module level because `removeEventListener` matches by identity. Per-call\n// handlers made `destroyGlobalDragState()` remove listeners that were never added.\n// The state is global, so destroy belongs to app teardown.\nconst dragoverHandler = (event: DragEvent) => {\n event.preventDefault()\n checkReallyDraggingEnded(event, true)\n}\nconst dragleaveHandler = (event: DragEvent) => {\n event.preventDefault()\n checkReallyDraggingEnded(event, false)\n}\nconst dropHandler = (event: DragEvent) => {\n event.preventDefault()\n checkReallyDraggingEnded(event, false)\n}\n\nexport function useDropzoneGlobalDragState() {\n const initGlobalDragState = () => {\n window.document.addEventListener('dragover', dragoverHandler)\n window.document.addEventListener('dragleave', dragleaveHandler)\n window.document.addEventListener('drop', dropHandler)\n }\n\n const destroyGlobalDragState = () => {\n window.document.removeEventListener('dragover', dragoverHandler)\n window.document.removeEventListener('dragleave', dragleaveHandler)\n window.document.removeEventListener('drop', dropHandler)\n clearTimeout(draggingTimer.value)\n isDraggingFile.value = false\n }\n\n return {\n isDraggingFile,\n initGlobalDragState,\n destroyGlobalDragState,\n }\n}\n"],"mappings":";;AAEA,IAAMA,IAAiBC,EAAI,EAAK,GAC1BC,IAAgED,EAAI,KAAA,CAAS,GAE7EE,KAA0B,MAAqB;CACnD,IAAIC,EAAM,cAAc,OACjB;OAAA,IAAIC,IAAI,GAAGA,IAAID,EAAM,aAAa,MAAM,QAAQ,KACnD,IAAIA,EAAM,aAAa,MAAMC,OAAO,SAClC,OAAO;CAAA;CAKb,OAAO;AACT,GAEMC,KAA4B,GAAkB,MAAsB;CACxE,AAAKH,EAAuBC,CAAK,MAG7BG,KACF,EAAe,QAAQ,IACvB,aAAaL,EAAc,KAAK,MAEhC,aAAaA,EAAc,KAAK,GAChC,EAAc,QAAQ,iBAAiB;EACrC,EAAe,QAAQ;CACzB,GAAG,GAAG;AAEV,GAKMM,KAAmB,MAAqB;CAE5C,AADAJ,EAAM,eAAe,GACrBE,EAAyBF,GAAO,EAAI;AACtC,GACMK,KAAoB,MAAqB;CAE7C,AADAL,EAAM,eAAe,GACrBE,EAAyBF,GAAO,EAAK;AACvC,GACMM,KAAe,MAAqB;CAExC,AADAN,EAAM,eAAe,GACrBE,EAAyBF,GAAO,EAAK;AACvC;AAEA,SAAgBO,IAA6B;CAe3C,OAAO;EACL;EACA,2BAhBgC;GAGhC,AAFA,OAAO,SAAS,iBAAiB,YAAYH,CAAe,GAC5D,OAAO,SAAS,iBAAiB,aAAaC,CAAgB,GAC9D,OAAO,SAAS,iBAAiB,QAAQC,CAAW;EACtD;EAaE,8BAXmC;GAKnC,AAJA,OAAO,SAAS,oBAAoB,YAAYF,CAAe,GAC/D,OAAO,SAAS,oBAAoB,aAAaC,CAAgB,GACjE,OAAO,SAAS,oBAAoB,QAAQC,CAAW,GACvD,aAAaR,EAAc,KAAK,GAChC,EAAe,QAAQ;EACzB;CAMA;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"formatAndSizeCheck.js","names":["t","useFormatAndSizeCheck","acceptKeys","computed","accept","toValue","acceptSource","isUndefined","key","maxSizeKeys","maxSizes","maxSizesSource","checkFormatsAndSizes","incorrectFileNames","validFiles","files","isFileValid","checkFormats","file","checkSizes","disableAlert","useAlerts","commonT","accepts","splitType","damFileTypeFix","keys","sizes","limit","pattern"],"sources":["../../../../../src/domains/ui/file/composables/formatAndSizeCheck.ts"],"sourcesContent":["import { useAlerts } from '@/domains/system/composables/alerts'\nimport { damFileTypeFix } from '@/domains/ui/file/utils/fileType'\nimport { isUndefined } from '@/shared/utils/common'\nimport { computed, type MaybeRefOrGetter, toValue } from 'vue'\nimport { commonT } from '@/plugins/i18n'\n\n/**\n * @param accept example: 'image/*,.jpg'\n * @param maxSizes example: { 'image/*': 20000 } or { 'image/png': 20000, 'image/jpg': 20000 } or\n * { '.jpg': 20000, '.png': 20000 } or { '*': 20000, }\n */\nexport function useFormatAndSizeCheck(\n acceptSource: MaybeRefOrGetter<string | undefined>,\n maxSizesSource: MaybeRefOrGetter<Record<string, number> | undefined>\n) {\n const acceptKeys = computed(() => {\n const accept = toValue(acceptSource)\n if (isUndefined(accept)) {\n return []\n }\n // File names are compared lowercased, and `'image/*, .jpg'` is a list of two.\n return accept.split(',').map((key) => key.trim().toLowerCase())\n })\n\n const maxSizeKeys = computed(() => {\n const maxSizes = toValue(maxSizesSource)\n if (isUndefined(maxSizes)) {\n return []\n }\n return Object.keys(maxSizes)\n })\n\n const checkFormatsAndSizes = (files: File[], disableAlert = false) => {\n const incorrectFileNames: string[] = []\n const validFiles = files.filter((file) => {\n const isFileValid =\n checkFormats(file, acceptKeys.value) && checkSizes(file, maxSizeKeys.value, toValue(maxSizesSource))\n if (!isFileValid) {\n incorrectFileNames.push(file.name)\n }\n return isFileValid\n })\n if (incorrectFileNames.length && !disableAlert) {\n const { showWarning } = useAlerts()\n const t = commonT\n showWarning(t('common.system.upload.incorrectFormatSize') + ':' + incorrectFileNames.join(', '))\n }\n\n return validFiles\n }\n\n const checkFormats = (file: File, accepts: string[]) => {\n if (accepts.length === 0) {\n return true\n }\n for (const accept of accepts) {\n if (accept.startsWith('.')) {\n // .format\n if (file.name.toLowerCase().endsWith(accept)) {\n return true\n }\n } else {\n // type\n const splitType = accept.split('/')\n if (splitType[1] === '*' && damFileTypeFix(file).startsWith(splitType[0] + '/')) {\n return true\n } else if (accept === damFileTypeFix(file)) {\n return true\n }\n }\n }\n return false\n }\n\n const checkSizes = (file: File, keys: Array<string>, sizes: Record<string, number> | undefined) => {\n if (keys.length === 0 || isUndefined(sizes)) {\n return true\n }\n // A file exactly at the limit passes, as in the dam's own check: the limit is the largest size allowed.\n // `keys` are `Object.keys` of these same sizes.\n for (const key of keys) {\n const limit = sizes[key]!\n const pattern = key.trim().toLowerCase()\n if (pattern === '*') {\n if (limit >= file.size) return true\n } else if (pattern.startsWith('.')) {\n if (file.name.toLowerCase().endsWith(pattern) && limit >= file.size) return true\n } else {\n // type\n const splitType = pattern.split('/')\n if (splitType[1] === '*' && damFileTypeFix(file).startsWith(splitType[0] + '/') && limit >= file.size) {\n return true\n } else if (pattern === damFileTypeFix(file) && limit >= file.size) {\n return true\n }\n }\n }\n return false\n }\n\n return {\n checkFormatsAndSizes,\n }\n}\n"],"mappings":";;;;;;AAWA,SAAgBC,EACd,GACA,GACA;CACA,IAAMC,IAAaC,QAAe;EAChC,IAAMC,IAASC,EAAQC,CAAY;EAKnC,OAJIC,EAAYH,CAAM,IACb,CAAC,IAGHA,EAAO,MAAM,GAAG,CAAC,CAAC,KAAK,MAAQI,EAAI,KAAK,CAAC,CAAC,YAAY,CAAC;CAChE,CAAC,GAEKC,IAAcN,QAAe;EACjC,IAAMO,IAAWL,EAAQM,CAAc;EAIvC,OAHIJ,EAAYG,CAAQ,IACf,CAAC,IAEH,OAAO,KAAKA,CAAQ;CAC7B,CAAC,GAEKE,KAAwB,GAAe,IAAe,OAAU;EACpE,IAAMC,IAA+B,CAAC,GAChCC,IAAaC,EAAM,QAAQ,MAAS;GACxC,IAAMC,IACJC,EAAaC,GAAMhB,EAAW,KAAK,KAAKiB,EAAWD,GAAMT,EAAY,OAAOJ,EAAQM,CAAc,CAAC;GAIrG,OAHKK,KACHH,EAAmB,KAAKK,EAAK,IAAI,GAE5BF;EACT,CAAC;EACD,IAAIH,EAAmB,UAAU,CAACO,GAAc;GAC9C,IAAM,EAAE,mBAAgBC,EAAU;GAElC,EAAYrB,EAAE,0CAA0C,IAAI,MAAMa,EAAmB,KAAK,IAAI,CAAC;EACjG;EAEA,OAAOC;CACT,GAEMG,KAAgB,GAAY,MAAsB;EACtD,IAAIM,EAAQ,WAAW,GACrB,OAAO;EAET,KAAK,IAAMnB,KAAUmB,GACnB,IAAInB,EAAO,WAAW,GAAG,GAEnB;OAAAc,EAAK,KAAK,YAAY,CAAC,CAAC,SAASd,CAAM,GACzC,OAAO;EAAA,OAEJ;GAEL,IAAMoB,IAAYpB,EAAO,MAAM,GAAG;GAG3B,IAFHoB,EAAU,OAAO,OAAOC,EAAeP,CAAI,CAAC,CAAC,WAAWM,EAAU,KAAK,GAAG,KAEnEpB,MAAWqB,EAAeP,CAAI,GACvC,OAAO;EAEX;EAEF,OAAO;CACT,GAEMC,KAAc,GAAY,GAAqB,MAA8C;EACjG,IAAIO,EAAK,WAAW,KAAKnB,EAAYoB,CAAK,GACxC,OAAO;EAIT,KAAK,IAAMnB,KAAOkB,GAAM;GACtB,IAAME,IAAQD,EAAMnB,IACdqB,IAAUrB,EAAI,KAAK,CAAC,CAAC,YAAY;GACvC,IAAIqB,MAAY,KACV;QAAAD,KAASV,EAAK,MAAM,OAAO;GAAA,OAC1B,IAAIW,EAAQ,WAAW,GAAG,GAC3B;QAAAX,EAAK,KAAK,YAAY,CAAC,CAAC,SAASW,CAAO,KAAKD,KAASV,EAAK,MAAM,OAAO;GAAA,OACvE;IAEL,IAAMM,IAAYK,EAAQ,MAAM,GAAG;IAG5B,IAFHL,EAAU,OAAO,OAAOC,EAAeP,CAAI,CAAC,CAAC,WAAWM,EAAU,KAAK,GAAG,KAAKI,KAASV,EAAK,QAEtFW,MAAYJ,EAAeP,CAAI,KAAKU,KAASV,EAAK,MAC3D,OAAO;GAEX;EACF;EACA,OAAO;CACT;CAEA,OAAO,EACL,wBACF;AACF"}
1
+ {"version":3,"file":"formatAndSizeCheck.js","names":["t","useFormatAndSizeCheck","acceptKeys","computed","accept","toValue","acceptSource","isUndefined","key","maxSizeKeys","maxSizes","maxSizesSource","checkFormatsAndSizes","incorrectFileNames","validFiles","files","isFileValid","checkFormats","file","checkSizes","disableAlert","useAlerts","commonT","accepts","splitType","damFileTypeFix","keys","sizes","limit","pattern"],"sources":["../../../../../src/domains/ui/file/composables/formatAndSizeCheck.ts"],"sourcesContent":["import { useAlerts } from '@/domains/system/composables/alerts'\nimport { damFileTypeFix } from '@/domains/ui/file/utils/fileType'\nimport { isUndefined } from '@/shared/utils/common'\nimport { computed, type MaybeRefOrGetter, toValue } from 'vue'\nimport { commonT } from '@/plugins/i18n'\n\n/**\n * @param accept example: 'image/*,.jpg'\n * @param maxSizes example: { 'image/*': 20000 } or { 'image/png': 20000, 'image/jpg': 20000 } or\n * { '.jpg': 20000, '.png': 20000 } or { '*': 20000, }\n */\nexport function useFormatAndSizeCheck(\n acceptSource: MaybeRefOrGetter<string | undefined>,\n maxSizesSource: MaybeRefOrGetter<Record<string, number> | undefined>\n) {\n const acceptKeys = computed(() => {\n const accept = toValue(acceptSource)\n if (isUndefined(accept)) {\n return []\n }\n // File names are compared lowercased, and `'image/*, .jpg'` is a list of two.\n return accept.split(',').map((key) => key.trim().toLowerCase())\n })\n\n const maxSizeKeys = computed(() => {\n const maxSizes = toValue(maxSizesSource)\n if (isUndefined(maxSizes)) {\n return []\n }\n return Object.keys(maxSizes)\n })\n\n const checkFormatsAndSizes = (files: File[], disableAlert = false) => {\n const incorrectFileNames: string[] = []\n const validFiles = files.filter((file) => {\n const isFileValid =\n checkFormats(file, acceptKeys.value) && checkSizes(file, maxSizeKeys.value, toValue(maxSizesSource))\n if (!isFileValid) {\n incorrectFileNames.push(file.name)\n }\n return isFileValid\n })\n if (incorrectFileNames.length && !disableAlert) {\n const { showWarning } = useAlerts()\n const t = commonT\n showWarning(t('common.system.upload.incorrectFormatSize') + ':' + incorrectFileNames.join(', '))\n }\n\n return validFiles\n }\n\n const checkFormats = (file: File, accepts: string[]) => {\n if (accepts.length === 0) {\n return true\n }\n for (const accept of accepts) {\n if (accept.startsWith('.')) {\n if (file.name.toLowerCase().endsWith(accept)) {\n return true\n }\n } else {\n const splitType = accept.split('/')\n if (splitType[1] === '*' && damFileTypeFix(file).startsWith(splitType[0] + '/')) {\n return true\n } else if (accept === damFileTypeFix(file)) {\n return true\n }\n }\n }\n return false\n }\n\n const checkSizes = (file: File, keys: Array<string>, sizes: Record<string, number> | undefined) => {\n if (keys.length === 0 || isUndefined(sizes)) {\n return true\n }\n // A file exactly at the limit passes, as in the DAM's own check.\n // `keys` are `Object.keys` of these same sizes.\n for (const key of keys) {\n const limit = sizes[key]!\n const pattern = key.trim().toLowerCase()\n if (pattern === '*') {\n if (limit >= file.size) return true\n } else if (pattern.startsWith('.')) {\n if (file.name.toLowerCase().endsWith(pattern) && limit >= file.size) return true\n } else {\n const splitType = pattern.split('/')\n if (splitType[1] === '*' && damFileTypeFix(file).startsWith(splitType[0] + '/') && limit >= file.size) {\n return true\n } else if (pattern === damFileTypeFix(file) && limit >= file.size) {\n return true\n }\n }\n }\n return false\n }\n\n return {\n checkFormatsAndSizes,\n }\n}\n"],"mappings":";;;;;;AAWA,SAAgBC,EACd,GACA,GACA;CACA,IAAMC,IAAaC,QAAe;EAChC,IAAMC,IAASC,EAAQC,CAAY;EAKnC,OAJIC,EAAYH,CAAM,IACb,CAAC,IAGHA,EAAO,MAAM,GAAG,CAAC,CAAC,KAAK,MAAQI,EAAI,KAAK,CAAC,CAAC,YAAY,CAAC;CAChE,CAAC,GAEKC,IAAcN,QAAe;EACjC,IAAMO,IAAWL,EAAQM,CAAc;EAIvC,OAHIJ,EAAYG,CAAQ,IACf,CAAC,IAEH,OAAO,KAAKA,CAAQ;CAC7B,CAAC,GAEKE,KAAwB,GAAe,IAAe,OAAU;EACpE,IAAMC,IAA+B,CAAC,GAChCC,IAAaC,EAAM,QAAQ,MAAS;GACxC,IAAMC,IACJC,EAAaC,GAAMhB,EAAW,KAAK,KAAKiB,EAAWD,GAAMT,EAAY,OAAOJ,EAAQM,CAAc,CAAC;GAIrG,OAHKK,KACHH,EAAmB,KAAKK,EAAK,IAAI,GAE5BF;EACT,CAAC;EACD,IAAIH,EAAmB,UAAU,CAACO,GAAc;GAC9C,IAAM,EAAE,mBAAgBC,EAAU;GAElC,EAAYrB,EAAE,0CAA0C,IAAI,MAAMa,EAAmB,KAAK,IAAI,CAAC;EACjG;EAEA,OAAOC;CACT,GAEMG,KAAgB,GAAY,MAAsB;EACtD,IAAIM,EAAQ,WAAW,GACrB,OAAO;EAET,KAAK,IAAMnB,KAAUmB,GACnB,IAAInB,EAAO,WAAW,GAAG,GACnB;OAAAc,EAAK,KAAK,YAAY,CAAC,CAAC,SAASd,CAAM,GACzC,OAAO;EAAA,OAEJ;GACL,IAAMoB,IAAYpB,EAAO,MAAM,GAAG;GAG3B,IAFHoB,EAAU,OAAO,OAAOC,EAAeP,CAAI,CAAC,CAAC,WAAWM,EAAU,KAAK,GAAG,KAEnEpB,MAAWqB,EAAeP,CAAI,GACvC,OAAO;EAEX;EAEF,OAAO;CACT,GAEMC,KAAc,GAAY,GAAqB,MAA8C;EACjG,IAAIO,EAAK,WAAW,KAAKnB,EAAYoB,CAAK,GACxC,OAAO;EAIT,KAAK,IAAMnB,KAAOkB,GAAM;GACtB,IAAME,IAAQD,EAAMnB,IACdqB,IAAUrB,EAAI,KAAK,CAAC,CAAC,YAAY;GACvC,IAAIqB,MAAY,KACV;QAAAD,KAASV,EAAK,MAAM,OAAO;GAAA,OAC1B,IAAIW,EAAQ,WAAW,GAAG,GAC3B;QAAAX,EAAK,KAAK,YAAY,CAAC,CAAC,SAASW,CAAO,KAAKD,KAASV,EAAK,MAAM,OAAO;GAAA,OACvE;IACL,IAAMM,IAAYK,EAAQ,MAAM,GAAG;IAG5B,IAFHL,EAAU,OAAO,OAAOC,EAAeP,CAAI,CAAC,CAAC,WAAWM,EAAU,KAAK,GAAG,KAAKI,KAASV,EAAK,QAEtFW,MAAYJ,EAAeP,CAAI,KAAKU,KAASV,EAAK,MAC3D,OAAO;GAEX;EACF;EACA,OAAO;CACT;CAEA,OAAO,EACL,wBACF;AACF"}
@@ -6,12 +6,14 @@ type __VLS_Props = {
6
6
  iconSize?: string;
7
7
  returnRouteName?: string;
8
8
  };
9
- declare var __VLS_1: {}, __VLS_8: {};
10
- type __VLS_Slots = {} & {
11
- default?: (props: typeof __VLS_1) => any;
12
- } & {
13
- actions?: (props: typeof __VLS_8) => any;
9
+ declare const __VLS_template: () => {
10
+ __VLS_Slots: {
11
+ default?: (props: {}) => any;
12
+ } & {
13
+ actions?: (props: {}) => any;
14
+ };
14
15
  };
16
+ type __VLS_Slots = ReturnType<typeof __VLS_template>['__VLS_Slots'];
15
17
  declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
16
18
  text: string;
17
19
  title: string;
@@ -2,7 +2,7 @@ import e from "../../../../_virtual/_plugin-vue_export-helper.js";
2
2
  import t from "./ALoginView.vue_vue_type_script_setup_true_lang.js";
3
3
  /* empty css */
4
4
  // src/domains/ui/view/components/ALoginView.vue
5
- var n = /*#__PURE__*/ e(t, [["__scopeId", "data-v-f9d993f3"]]);
5
+ var n = /*#__PURE__*/ e(t, [["__scopeId", "data-v-2bdb1a09"]]);
6
6
  export { n as default };
7
7
 
8
8
  //# sourceMappingURL=ALoginView.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ALoginView.js","names":["_sfc_main","_plugin_vue_export_helper_default","ALoginView_vue_vue_type_script_setup_true_lang_default","ALoginView_default"],"sources":["../../../../../src/domains/ui/view/components/ALoginView.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useI18n } from 'vue-i18n'\n\nwithDefaults(\n defineProps<{\n title?: string | undefined\n logoUrl?: string | undefined\n loginUrl?: undefined | (() => string)\n dataCy?: string\n }>(),\n {\n title: undefined,\n logoUrl: undefined,\n loginUrl: undefined,\n dataCy: 'button-login',\n }\n)\n\nconst { t } = useI18n()\n\n// The sign-in page takes the place of the admin's own `/login` in the browser history: left there, Back from the\n// admin after the sign-in showed the sign-in page to a user who is signed in. A press the browser takes for a tab, a\n// window or a download of its own (with Ctrl, Cmd, Shift or Alt, the middle button) goes on as a link does.\n// Without an address the button is no link, and a press does nothing, as before.\nconst onLoginClick = (event: MouseEvent) => {\n const link = event.currentTarget\n if (!(link instanceof HTMLAnchorElement) || !link.href) return\n if (event.button !== 0 || event.ctrlKey || event.metaKey || event.shiftKey || event.altKey) return\n event.preventDefault()\n window.location.replace(link.href)\n}\n</script>\n\n<template>\n <div class=\"d-flex justify-center align-center fill-height\">\n <div class=\"d-flex justify-center align-center flex-column\">\n <slot name=\"title\">\n <img\n :src=\"logoUrl\"\n class=\"logo pb-2\"\n alt=\"\"\n />\n <h1\n v-if=\"title\"\n class=\"text-headline-large my-3\"\n >\n {{ title }}\n </h1>\n </slot>\n <h4 class=\"mb-3 text-body-large\">\n <span>{{ t('common.system.login.text') }}</span>\n </h4>\n <div class=\"py-5\">\n <VBtn\n v-if=\"loginUrl\"\n :data-cy=\"dataCy\"\n :href=\"loginUrl()\"\n color=\"primary\"\n size=\"large\"\n @click=\"onLoginClick\"\n >\n {{ t('common.system.login.text') }}\n </VBtn>\n </div>\n </div>\n </div>\n</template>\n\n<style lang=\"scss\" scoped>\n.logo {\n display: block;\n max-width: 120px;\n height: auto;\n}\n</style>\n"],"mappings":""}
1
+ {"version":3,"file":"ALoginView.js","names":["_sfc_main","_plugin_vue_export_helper_default","ALoginView_vue_vue_type_script_setup_true_lang_default","ALoginView_default"],"sources":["../../../../../src/domains/ui/view/components/ALoginView.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useI18n } from 'vue-i18n'\n\nwithDefaults(\n defineProps<{\n title?: string | undefined\n logoUrl?: string | undefined\n loginUrl?: undefined | (() => string)\n dataCy?: string\n }>(),\n {\n title: undefined,\n logoUrl: undefined,\n loginUrl: undefined,\n dataCy: 'button-login',\n }\n)\n\nconst { t } = useI18n()\n\n// The sign-in page replaces the admin's `/login` in browser history.\n// Otherwise Back after sign-in shows the sign-in page to a signed-in user.\n// Modified clicks (Ctrl, Cmd, Shift, Alt, middle button) proceed as a normal link.\n// Without an address the button is not a link and a press does nothing.\nconst onLoginClick = (event: MouseEvent) => {\n const link = event.currentTarget\n if (!(link instanceof HTMLAnchorElement) || !link.href) return\n if (event.button !== 0 || event.ctrlKey || event.metaKey || event.shiftKey || event.altKey) return\n event.preventDefault()\n window.location.replace(link.href)\n}\n</script>\n\n<template>\n <div class=\"d-flex justify-center align-center fill-height\">\n <div class=\"d-flex justify-center align-center flex-column\">\n <slot name=\"title\">\n <img\n :src=\"logoUrl\"\n class=\"logo pb-2\"\n alt=\"\"\n />\n <h1\n v-if=\"title\"\n class=\"text-headline-large my-3\"\n >\n {{ title }}\n </h1>\n </slot>\n <h4 class=\"mb-3 text-body-large\">\n <span>{{ t('common.system.login.text') }}</span>\n </h4>\n <div class=\"py-5\">\n <VBtn\n v-if=\"loginUrl\"\n :data-cy=\"dataCy\"\n :href=\"loginUrl()\"\n color=\"primary\"\n size=\"large\"\n @click=\"onLoginClick\"\n >\n {{ t('common.system.login.text') }}\n </VBtn>\n </div>\n </div>\n </div>\n</template>\n\n<style lang=\"scss\" scoped>\n.logo {\n display: block;\n max-width: 120px;\n height: auto;\n}\n</style>\n"],"mappings":""}
@@ -4,10 +4,12 @@ type __VLS_Props = {
4
4
  loginUrl?: undefined | (() => string);
5
5
  dataCy?: string;
6
6
  };
7
- declare var __VLS_1: {};
8
- type __VLS_Slots = {} & {
9
- title?: (props: typeof __VLS_1) => any;
7
+ declare const __VLS_template: () => {
8
+ __VLS_Slots: {
9
+ title?: (props: {}) => any;
10
+ };
10
11
  };
12
+ type __VLS_Slots = ReturnType<typeof __VLS_template>['__VLS_Slots'];
11
13
  declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
12
14
  title: string;
13
15
  dataCy: string;
@@ -1 +1 @@
1
- {"version":3,"file":"ALoginView.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","_createElementVNode","_renderSlot","_toDisplayString","_createCommentVNode","_unref","_createBlock","_component_VBtn","_withCtx","_createTextVNode","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","ALoginView_vue_vue_type_script_setup_true_lang_default","useI18n","onLoginClick","link","event","openBlock","createElementBlock","createElementVNode","renderSlot","_ctx","__props","toDisplayString","createCommentVNode","unref","t","createBlock","VBtn","withCtx","createTextVNode"],"sources":["../../../../../src/domains/ui/view/components/ALoginView.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useI18n } from 'vue-i18n'\n\nwithDefaults(\n defineProps<{\n title?: string | undefined\n logoUrl?: string | undefined\n loginUrl?: undefined | (() => string)\n dataCy?: string\n }>(),\n {\n title: undefined,\n logoUrl: undefined,\n loginUrl: undefined,\n dataCy: 'button-login',\n }\n)\n\nconst { t } = useI18n()\n\n// The sign-in page takes the place of the admin's own `/login` in the browser history: left there, Back from the\n// admin after the sign-in showed the sign-in page to a user who is signed in. A press the browser takes for a tab, a\n// window or a download of its own (with Ctrl, Cmd, Shift or Alt, the middle button) goes on as a link does.\n// Without an address the button is no link, and a press does nothing, as before.\nconst onLoginClick = (event: MouseEvent) => {\n const link = event.currentTarget\n if (!(link instanceof HTMLAnchorElement) || !link.href) return\n if (event.button !== 0 || event.ctrlKey || event.metaKey || event.shiftKey || event.altKey) return\n event.preventDefault()\n window.location.replace(link.href)\n}\n</script>\n\n<template>\n <div class=\"d-flex justify-center align-center fill-height\">\n <div class=\"d-flex justify-center align-center flex-column\">\n <slot name=\"title\">\n <img\n :src=\"logoUrl\"\n class=\"logo pb-2\"\n alt=\"\"\n />\n <h1\n v-if=\"title\"\n class=\"text-headline-large my-3\"\n >\n {{ title }}\n </h1>\n </slot>\n <h4 class=\"mb-3 text-body-large\">\n <span>{{ t('common.system.login.text') }}</span>\n </h4>\n <div class=\"py-5\">\n <VBtn\n v-if=\"loginUrl\"\n :data-cy=\"dataCy\"\n :href=\"loginUrl()\"\n color=\"primary\"\n size=\"large\"\n @click=\"onLoginClick\"\n >\n {{ t('common.system.login.text') }}\n </VBtn>\n </div>\n </div>\n </div>\n</template>\n\n<style lang=\"scss\" scoped>\n.logo {\n display: block;\n max-width: 120px;\n height: auto;\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;EAkBA,IAAM,EAAE,SAAMkB,EAAQ,GAMhBC,KAAgB,MAAsB;GAC1C,IAAMC,IAAOC,EAAM;GACnB,AAAMD,aAAgB,qBAAuBA,EAAK,SAC9CC,EAAM,WAAW,KAAKA,EAAM,WAAWA,EAAM,WAAWA,EAAM,YAAYA,EAAM,WACpFA,EAAM,eAAe,GACrB,OAAO,SAAS,QAAQD,EAAK,IAAI;EACnC;E,kBAIEpB,EAAA,GAAAC,EA+BM,OA/BNU,GA+BM,CA9BJT,EA6BM,OA7BNU,GA6BM;GA5BJT,EAYOuB,EAAA,QAAA,SAAA,CAAA,SAAA,CAXLxB,EAIE,OAAA;IAHC,KAAKyB,EAAA;IACN,OAAM;IACN,KAAI;G,gBAGEA,EAAA,SADR3B,EAAA,GAAAC,EAKK,MALLa,GAKKV,EADAuB,EAAA,KAAK,GAAA,CAAA,K;GAGZzB,EAEK,MAFLa,GAEK,CADHb,EAAgD,QAAA,MAAAE,EAAvCE,EAAAyB,CAAA,CAAC,CAAA,0BAAA,CAAA,GAAA,CAAA,C;GAEZ7B,EAWM,OAXNc,GAWM,CATIW,EAAA,YADR3B,EAAA,GAAAO,EASOC,GAAA;;IAPJ,WAASmB,EAAA;IACT,MAAMA,EAAA,SAAQ;IACf,OAAM;IACN,MAAK;IACJ,SAAOR;;IAER,SAAAV,QAAmC,CAAhCC,EAAAN,EAAAE,EAAAyB,CAAA,CAAC,CAAA,0BAAA,CAAA,GAAA,CAAA,C"}
1
+ {"version":3,"file":"ALoginView.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","_createElementVNode","_renderSlot","_toDisplayString","_createCommentVNode","_unref","_createBlock","_component_VBtn","_withCtx","_createTextVNode","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","ALoginView_vue_vue_type_script_setup_true_lang_default","useI18n","onLoginClick","link","event","openBlock","createElementBlock","createElementVNode","renderSlot","_ctx","__props","toDisplayString","createCommentVNode","unref","t","createBlock","VBtn","withCtx","createTextVNode"],"sources":["../../../../../src/domains/ui/view/components/ALoginView.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useI18n } from 'vue-i18n'\n\nwithDefaults(\n defineProps<{\n title?: string | undefined\n logoUrl?: string | undefined\n loginUrl?: undefined | (() => string)\n dataCy?: string\n }>(),\n {\n title: undefined,\n logoUrl: undefined,\n loginUrl: undefined,\n dataCy: 'button-login',\n }\n)\n\nconst { t } = useI18n()\n\n// The sign-in page replaces the admin's `/login` in browser history.\n// Otherwise Back after sign-in shows the sign-in page to a signed-in user.\n// Modified clicks (Ctrl, Cmd, Shift, Alt, middle button) proceed as a normal link.\n// Without an address the button is not a link and a press does nothing.\nconst onLoginClick = (event: MouseEvent) => {\n const link = event.currentTarget\n if (!(link instanceof HTMLAnchorElement) || !link.href) return\n if (event.button !== 0 || event.ctrlKey || event.metaKey || event.shiftKey || event.altKey) return\n event.preventDefault()\n window.location.replace(link.href)\n}\n</script>\n\n<template>\n <div class=\"d-flex justify-center align-center fill-height\">\n <div class=\"d-flex justify-center align-center flex-column\">\n <slot name=\"title\">\n <img\n :src=\"logoUrl\"\n class=\"logo pb-2\"\n alt=\"\"\n />\n <h1\n v-if=\"title\"\n class=\"text-headline-large my-3\"\n >\n {{ title }}\n </h1>\n </slot>\n <h4 class=\"mb-3 text-body-large\">\n <span>{{ t('common.system.login.text') }}</span>\n </h4>\n <div class=\"py-5\">\n <VBtn\n v-if=\"loginUrl\"\n :data-cy=\"dataCy\"\n :href=\"loginUrl()\"\n color=\"primary\"\n size=\"large\"\n @click=\"onLoginClick\"\n >\n {{ t('common.system.login.text') }}\n </VBtn>\n </div>\n </div>\n </div>\n</template>\n\n<style lang=\"scss\" scoped>\n.logo {\n display: block;\n max-width: 120px;\n height: auto;\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;EAkBA,IAAM,EAAE,SAAMkB,EAAQ,GAMhBC,KAAgB,MAAsB;GAC1C,IAAMC,IAAOC,EAAM;GACnB,AAAMD,aAAgB,qBAAuBA,EAAK,SAC9CC,EAAM,WAAW,KAAKA,EAAM,WAAWA,EAAM,WAAWA,EAAM,YAAYA,EAAM,WACpFA,EAAM,eAAe,GACrB,OAAO,SAAS,QAAQD,EAAK,IAAI;EACnC;E,kBAIEpB,EAAA,GAAAC,EA+BM,OA/BNU,GA+BM,CA9BJT,EA6BM,OA7BNU,GA6BM;GA5BJT,EAYOuB,EAAA,QAAA,SAAA,CAAA,SAAA,CAXLxB,EAIE,OAAA;IAHC,KAAKyB,EAAA;IACN,OAAM;IACN,KAAI;G,gBAGEA,EAAA,SADR3B,EAAA,GAAAC,EAKK,MALLa,GAKKV,EADAuB,EAAA,KAAK,GAAA,CAAA,K;GAGZzB,EAEK,MAFLa,GAEK,CADHb,EAAgD,QAAA,MAAAE,EAAvCE,EAAAyB,CAAA,CAAC,CAAA,0BAAA,CAAA,GAAA,CAAA,C;GAEZ7B,EAWM,OAXNc,GAWM,CATIW,EAAA,YADR3B,EAAA,GAAAO,EASOC,GAAA;;IAPJ,WAASmB,EAAA;IACT,MAAMA,EAAA,SAAQ;IACf,OAAM;IACN,MAAK;IACJ,SAAOR;;IAER,SAAAV,QAAmC,CAAhCC,EAAAN,EAAAE,EAAAyB,CAAA,CAAC,CAAA,0BAAA,CAAA,GAAA,CAAA,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"ALogoutView.js","names":["_sfc_main","ALogoutView_vue_vue_type_script_setup_true_lang_default","ALogoutView_default"],"sources":["../../../../../src/domains/ui/view/components/ALogoutView.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { onMounted } from 'vue'\n\nconst props = withDefaults(\n defineProps<{\n logoutUrl?: undefined | (() => string)\n }>(),\n {\n logoutUrl: undefined,\n }\n)\n\n// The sign-out address takes the place of the admin's own `/logout` in the browser history: left there, Back after\n// the next sign-in came to `/logout`, and signed the user out at once. The page the user was on before stays.\nonMounted(() => {\n if (!props.logoutUrl) return\n window.location.replace(props.logoutUrl())\n})\n</script>\n\n<template>\n <div />\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"ALogoutView.js","names":["_sfc_main","ALogoutView_vue_vue_type_script_setup_true_lang_default","ALogoutView_default"],"sources":["../../../../../src/domains/ui/view/components/ALogoutView.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { onMounted } from 'vue'\n\nconst props = withDefaults(\n defineProps<{\n logoutUrl?: undefined | (() => string)\n }>(),\n {\n logoutUrl: undefined,\n }\n)\n\n// The sign-out address replaces the admin's `/logout` in browser history. Otherwise\n// Back after the next sign-in reaches `/logout` and signs the user out at once.\nonMounted(() => {\n if (!props.logoutUrl) return\n window.location.replace(props.logoutUrl())\n})\n</script>\n\n<template>\n <div />\n</template>\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"ALogoutView.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","ALogoutView_vue_vue_type_script_setup_true_lang_default","props","__props","onMounted","openBlock","createElementBlock"],"sources":["../../../../../src/domains/ui/view/components/ALogoutView.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { onMounted } from 'vue'\n\nconst props = withDefaults(\n defineProps<{\n logoutUrl?: undefined | (() => string)\n }>(),\n {\n logoutUrl: undefined,\n }\n)\n\n// The sign-out address takes the place of the admin's own `/logout` in the browser history: left there, Back after\n// the next sign-in came to `/logout`, and signed the user out at once. The page the user was on before stays.\nonMounted(() => {\n if (!props.logoutUrl) return\n window.location.replace(props.logoutUrl())\n})\n</script>\n\n<template>\n <div />\n</template>\n"],"mappings":";;;;;;;;;EAGA,IAAMG,IAAQC;E,OAWdC,QAAgB;GACd,AAAKF,EAAM,aACX,OAAO,SAAS,QAAQA,EAAM,UAAU,CAAC;EAC3C,CAAC,I,UAICH,EAAA,GAAAC,EAAO,KAAA"}
1
+ {"version":3,"file":"ALogoutView.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","ALogoutView_vue_vue_type_script_setup_true_lang_default","props","__props","onMounted","openBlock","createElementBlock"],"sources":["../../../../../src/domains/ui/view/components/ALogoutView.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { onMounted } from 'vue'\n\nconst props = withDefaults(\n defineProps<{\n logoutUrl?: undefined | (() => string)\n }>(),\n {\n logoutUrl: undefined,\n }\n)\n\n// The sign-out address replaces the admin's `/logout` in browser history. Otherwise\n// Back after the next sign-in reaches `/logout` and signs the user out at once.\nonMounted(() => {\n if (!props.logoutUrl) return\n window.location.replace(props.logoutUrl())\n})\n</script>\n\n<template>\n <div />\n</template>\n"],"mappings":";;;;;;;;;EAGA,IAAMG,IAAQC;E,OAWdC,QAAgB;GACd,AAAKF,EAAM,aACX,OAAO,SAAS,QAAQA,EAAM,UAAU,CAAC;EAC3C,CAAC,I,UAICH,EAAA,GAAAC,EAAO,KAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"ANotFoundView.js","names":["_sfc_main","ANotFoundView_vue_vue_type_script_setup_true_lang_default","ANotFoundView_default"],"sources":["../../../../../src/domains/ui/view/components/ANotFoundView.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useI18n } from 'vue-i18n'\nimport { useRouter } from 'vue-router'\nimport { useDatatablePageStore } from '@/domains/system/store/datatablePageStore'\n\nconst props = withDefaults(\n defineProps<{\n returnRouteName: string\n }>(),\n {}\n)\n\nconst { t } = useI18n()\nconst router = useRouter()\nconst { preservePageForLanding } = useDatatablePageStore()\n\n// A mistyped or stale record address lands here, so the way back to the list it came from is worth a\n// button of its own. A step back, so the browser's Back does not return to this page; the home route\n// when the app has no previous entry -- a tab opened on the bad address, where `router.back()` would\n// leave the application.\nconst goBack = () => {\n if (typeof router.options.history.state.back === 'string') {\n preservePageForLanding(router)\n router.back()\n return\n }\n const to = { name: props.returnRouteName }\n preservePageForLanding(router, { to, navigation: router.replace(to) })\n}\n</script>\n\n<template>\n <div class=\"d-flex justify-center align-center fill-height\">\n <div class=\"d-flex flex-column align-center\">\n <h1 class=\"d-flex justify-center align-center text-primary\">\n <VIcon\n size=\"x-large\"\n icon=\"mdi-emoticon-cry\"\n />\n <span>{{ t('common.system.notFound.title') }}</span>\n </h1>\n\n <p class=\"pa-4\">\n {{ t('common.system.notFound.text') }}\n </p>\n\n <div class=\"d-flex flex-wrap justify-center ga-2\">\n <VBtn\n color=\"primary\"\n size=\"large\"\n variant=\"outlined\"\n data-cy=\"not-found-back\"\n @click=\"goBack\"\n >\n {{ t('common.system.notFound.previousButton') }}\n </VBtn>\n <VBtn\n :to=\"{ name: returnRouteName }\"\n color=\"primary\"\n size=\"large\"\n >\n {{ t('common.system.notFound.backButton') }}\n </VBtn>\n </div>\n </div>\n </div>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"ANotFoundView.js","names":["_sfc_main","ANotFoundView_vue_vue_type_script_setup_true_lang_default","ANotFoundView_default"],"sources":["../../../../../src/domains/ui/view/components/ANotFoundView.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useI18n } from 'vue-i18n'\nimport { useRouter } from 'vue-router'\nimport { useDatatablePageStore } from '@/domains/system/store/datatablePageStore'\n\nconst props = withDefaults(\n defineProps<{\n returnRouteName: string\n }>(),\n {}\n)\n\nconst { t } = useI18n()\nconst router = useRouter()\nconst { preservePageForLanding } = useDatatablePageStore()\n\n// Steps back so the browser's Back does not return to this page.\n// Falls back to the home route when there is no previous entry, for example a\n// tab opened on the bad address. There `router.back()` would leave the app.\nconst goBack = () => {\n if (typeof router.options.history.state.back === 'string') {\n preservePageForLanding(router)\n router.back()\n return\n }\n const to = { name: props.returnRouteName }\n preservePageForLanding(router, { to, navigation: router.replace(to) })\n}\n</script>\n\n<template>\n <div class=\"d-flex justify-center align-center fill-height\">\n <div class=\"d-flex flex-column align-center\">\n <h1 class=\"d-flex justify-center align-center text-primary\">\n <VIcon\n size=\"x-large\"\n icon=\"mdi-emoticon-cry\"\n />\n <span>{{ t('common.system.notFound.title') }}</span>\n </h1>\n\n <p class=\"pa-4\">\n {{ t('common.system.notFound.text') }}\n </p>\n\n <div class=\"d-flex flex-wrap justify-center ga-2\">\n <VBtn\n color=\"primary\"\n size=\"large\"\n variant=\"outlined\"\n data-cy=\"not-found-back\"\n @click=\"goBack\"\n >\n {{ t('common.system.notFound.previousButton') }}\n </VBtn>\n <VBtn\n :to=\"{ name: returnRouteName }\"\n color=\"primary\"\n size=\"large\"\n >\n {{ t('common.system.notFound.backButton') }}\n </VBtn>\n </div>\n </div>\n </div>\n</template>\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"ANotFoundView.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","_createElementVNode","_createVNode","_component_VIcon","_toDisplayString","_unref","_component_VBtn","_withCtx","_createTextVNode","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","ANotFoundView_vue_vue_type_script_setup_true_lang_default","props","__props","useI18n","router","useRouter","useDatatablePageStore","goBack","preservePageForLanding","to","openBlock","createElementBlock","createElementVNode","createVNode","VIcon","toDisplayString","unref","t","VBtn","withCtx","createTextVNode"],"sources":["../../../../../src/domains/ui/view/components/ANotFoundView.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useI18n } from 'vue-i18n'\nimport { useRouter } from 'vue-router'\nimport { useDatatablePageStore } from '@/domains/system/store/datatablePageStore'\n\nconst props = withDefaults(\n defineProps<{\n returnRouteName: string\n }>(),\n {}\n)\n\nconst { t } = useI18n()\nconst router = useRouter()\nconst { preservePageForLanding } = useDatatablePageStore()\n\n// A mistyped or stale record address lands here, so the way back to the list it came from is worth a\n// button of its own. A step back, so the browser's Back does not return to this page; the home route\n// when the app has no previous entry -- a tab opened on the bad address, where `router.back()` would\n// leave the application.\nconst goBack = () => {\n if (typeof router.options.history.state.back === 'string') {\n preservePageForLanding(router)\n router.back()\n return\n }\n const to = { name: props.returnRouteName }\n preservePageForLanding(router, { to, navigation: router.replace(to) })\n}\n</script>\n\n<template>\n <div class=\"d-flex justify-center align-center fill-height\">\n <div class=\"d-flex flex-column align-center\">\n <h1 class=\"d-flex justify-center align-center text-primary\">\n <VIcon\n size=\"x-large\"\n icon=\"mdi-emoticon-cry\"\n />\n <span>{{ t('common.system.notFound.title') }}</span>\n </h1>\n\n <p class=\"pa-4\">\n {{ t('common.system.notFound.text') }}\n </p>\n\n <div class=\"d-flex flex-wrap justify-center ga-2\">\n <VBtn\n color=\"primary\"\n size=\"large\"\n variant=\"outlined\"\n data-cy=\"not-found-back\"\n @click=\"goBack\"\n >\n {{ t('common.system.notFound.previousButton') }}\n </VBtn>\n <VBtn\n :to=\"{ name: returnRouteName }\"\n color=\"primary\"\n size=\"large\"\n >\n {{ t('common.system.notFound.backButton') }}\n </VBtn>\n </div>\n </div>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;EAKA,IAAMgB,IAAQC,GAOR,EAAE,SAAMC,EAAQ,GAChBC,IAASC,EAAU,GACnB,EAAE,8BAA2BC,EAAsB,GAMnDC,UAAe;GACnB,IAAI,OAAOH,EAAO,QAAQ,QAAQ,MAAM,QAAS,UAAU;IAEzD,AADAI,EAAuBJ,CAAM,GAC7BA,EAAO,KAAK;IACZ;GACF;GACA,IAAMK,IAAK,EAAE,MAAMR,EAAM,gBAAgB;GACzC,EAAuBG,GAAQ;IAAE;IAAI,YAAYA,EAAO,QAAQK,CAAE;GAAE,CAAC;EACvE;E,kBAIExB,EAAA,GAAAC,EAiCM,OAjCNS,GAiCM,CAhCJR,EA+BM,OA/BNS,GA+BM;GA9BJT,EAMK,MANLU,GAMK,CALHT,EAGEC,GAAA;IAFA,MAAK;IACL,MAAK;G,IAEPF,EAAoD,QAAA,MAAAG,EAA3CC,EAAA0B,CAAA,CAAC,CAAA,8BAAA,CAAA,GAAA,CAAA,C;GAGZ9B,EAEI,KAFJW,GAEIR,EADCC,EAAA0B,CAAA,CAAC,CAAA,6BAAA,CAAA,GAAA,CAAA;GAGN9B,EAiBM,OAjBNY,GAiBM,CAhBJX,EAQOI,GAAA;IAPL,OAAM;IACN,MAAK;IACL,SAAQ;IACR,WAAQ;IACP,SAAOe;;IAER,SAAAd,QAAgD,CAA7CC,EAAAJ,EAAAC,EAAA0B,CAAA,CAAC,CAAA,uCAAA,CAAA,GAAA,CAAA,C;;G,IAEN7B,EAMOI,GAAA;IALJ,IAAE,EAAA,MAAUU,EAAA,gBAAe;IAC5B,OAAM;IACN,MAAK;;IAEL,SAAAT,QAA4C,CAAzCC,EAAAJ,EAAAC,EAAA0B,CAAA,CAAC,CAAA,mCAAA,CAAA,GAAA,CAAA,C"}
1
+ {"version":3,"file":"ANotFoundView.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","_createElementVNode","_createVNode","_component_VIcon","_toDisplayString","_unref","_component_VBtn","_withCtx","_createTextVNode","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","ANotFoundView_vue_vue_type_script_setup_true_lang_default","props","__props","useI18n","router","useRouter","useDatatablePageStore","goBack","preservePageForLanding","to","openBlock","createElementBlock","createElementVNode","createVNode","VIcon","toDisplayString","unref","t","VBtn","withCtx","createTextVNode"],"sources":["../../../../../src/domains/ui/view/components/ANotFoundView.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useI18n } from 'vue-i18n'\nimport { useRouter } from 'vue-router'\nimport { useDatatablePageStore } from '@/domains/system/store/datatablePageStore'\n\nconst props = withDefaults(\n defineProps<{\n returnRouteName: string\n }>(),\n {}\n)\n\nconst { t } = useI18n()\nconst router = useRouter()\nconst { preservePageForLanding } = useDatatablePageStore()\n\n// Steps back so the browser's Back does not return to this page.\n// Falls back to the home route when there is no previous entry, for example a\n// tab opened on the bad address. There `router.back()` would leave the app.\nconst goBack = () => {\n if (typeof router.options.history.state.back === 'string') {\n preservePageForLanding(router)\n router.back()\n return\n }\n const to = { name: props.returnRouteName }\n preservePageForLanding(router, { to, navigation: router.replace(to) })\n}\n</script>\n\n<template>\n <div class=\"d-flex justify-center align-center fill-height\">\n <div class=\"d-flex flex-column align-center\">\n <h1 class=\"d-flex justify-center align-center text-primary\">\n <VIcon\n size=\"x-large\"\n icon=\"mdi-emoticon-cry\"\n />\n <span>{{ t('common.system.notFound.title') }}</span>\n </h1>\n\n <p class=\"pa-4\">\n {{ t('common.system.notFound.text') }}\n </p>\n\n <div class=\"d-flex flex-wrap justify-center ga-2\">\n <VBtn\n color=\"primary\"\n size=\"large\"\n variant=\"outlined\"\n data-cy=\"not-found-back\"\n @click=\"goBack\"\n >\n {{ t('common.system.notFound.previousButton') }}\n </VBtn>\n <VBtn\n :to=\"{ name: returnRouteName }\"\n color=\"primary\"\n size=\"large\"\n >\n {{ t('common.system.notFound.backButton') }}\n </VBtn>\n </div>\n </div>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;EAKA,IAAMgB,IAAQC,GAOR,EAAE,SAAMC,EAAQ,GAChBC,IAASC,EAAU,GACnB,EAAE,8BAA2BC,EAAsB,GAKnDC,UAAe;GACnB,IAAI,OAAOH,EAAO,QAAQ,QAAQ,MAAM,QAAS,UAAU;IAEzD,AADAI,EAAuBJ,CAAM,GAC7BA,EAAO,KAAK;IACZ;GACF;GACA,IAAMK,IAAK,EAAE,MAAMR,EAAM,gBAAgB;GACzC,EAAuBG,GAAQ;IAAE;IAAI,YAAYA,EAAO,QAAQK,CAAE;GAAE,CAAC;EACvE;E,kBAIExB,EAAA,GAAAC,EAiCM,OAjCNS,GAiCM,CAhCJR,EA+BM,OA/BNS,GA+BM;GA9BJT,EAMK,MANLU,GAMK,CALHT,EAGEC,GAAA;IAFA,MAAK;IACL,MAAK;G,IAEPF,EAAoD,QAAA,MAAAG,EAA3CC,EAAA0B,CAAA,CAAC,CAAA,8BAAA,CAAA,GAAA,CAAA,C;GAGZ9B,EAEI,KAFJW,GAEIR,EADCC,EAAA0B,CAAA,CAAC,CAAA,6BAAA,CAAA,GAAA,CAAA;GAGN9B,EAiBM,OAjBNY,GAiBM,CAhBJX,EAQOI,GAAA;IAPL,OAAM;IACN,MAAK;IACL,SAAQ;IACR,WAAQ;IACP,SAAOe;;IAER,SAAAd,QAAgD,CAA7CC,EAAAJ,EAAAC,EAAA0B,CAAA,CAAC,CAAA,uCAAA,CAAA,GAAA,CAAA,C;;G,IAEN7B,EAMOI,GAAA;IALJ,IAAE,EAAA,MAAUU,EAAA,gBAAe;IAC5B,OAAM;IACN,MAAK;;IAEL,SAAAT,QAA4C,CAAzCC,EAAAJ,EAAAC,EAAA0B,CAAA,CAAC,CAAA,mCAAA,CAAA,GAAA,CAAA,C"}
@@ -9,9 +9,9 @@ export interface UseUnsavedChangesGuardOptions {
9
9
  */
10
10
  sources: UnsavedSource[];
11
11
  /**
12
- * Block route navigation via vue-router's onBeforeRouteLeave, and onBeforeRouteUpdate when the path changes. Default true.
13
- * Only a literal `false` skips registering the guard; a Ref is read when the navigation happens, so
14
- * it can turn blocking on and off later.
12
+ * Block route navigation via `onBeforeRouteLeave`, and `onBeforeRouteUpdate` when the path changes. Default true.
13
+ * Only a literal `false` skips registering the guard. A Ref is
14
+ * read at navigation time, so blocking can be toggled later.
15
15
  */
16
16
  guardRoute?: boolean | Ref<boolean>;
17
17
  /**
@@ -65,10 +65,9 @@ export interface UseUnsavedChangesGuardApi {
65
65
  */
66
66
  acknowledge: () => void;
67
67
  /**
68
- * Releases what the guard registered imperatively — `beforeunload` listener, acknowledge timer,
69
- * dialog watcher — and settles an open prompt as "stay". Idempotent, and called automatically on
70
- * unmount; outside a component it is the only way to clean up. The route-leave guard is
71
- * lifecycle-bound and unaffected.
68
+ * Releases the `beforeunload` listener, acknowledge timer and dialog watcher, and settles an open prompt as "stay".
69
+ * Idempotent and called on unmount. Outside a component it is the only way
70
+ * to clean up. The route-leave guard is lifecycle-bound and unaffected.
72
71
  */
73
72
  stop: () => void;
74
73
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"useUnsavedChangesGuard.js","names":["ACKNOWLEDGE_TTL_MS","isTruthySource","value","resolveBool","v","fallback","useUnsavedChangesGuard","sectionRegistry","provideUnsavedSectionRegistry","options","ownSections","id","normalized","computed","resolved","hasUnsavedChanges","s","promptOpen","ref","pendingResolvers","acknowledgedOnce","acknowledgeTimer","clearAcknowledgeTimer","askToLeave","resolve","resolvePrompt","resolvers","discard","acknowledge","unacknowledge","getCurrentInstance","guardLeave","onBeforeRouteLeave","onBeforeRouteUpdate","to","from","disposers","stopped","onBeforeUnload","dialogModel","suppressNext","stopDialogWatch","watch","prev","now","stop","dispose","onBeforeUnmount"],"sources":["../../../../src/domains/unsavedGuard/composables/useUnsavedChangesGuard.ts"],"sourcesContent":["import { computed, getCurrentInstance, onBeforeUnmount, ref, watch, type ComputedRef, type Ref } from 'vue'\nimport { onBeforeRouteLeave, onBeforeRouteUpdate } from 'vue-router'\nimport {\n provideUnsavedSectionRegistry,\n type UnsavedSectionDescriptor,\n type UnsavedSectionSource,\n} from '@/domains/unsavedGuard/composables/useUnsavedSection'\n\ntype UnsavedSource = Ref<boolean | Set<unknown> | unknown[] | null | undefined>\n\nexport interface UseUnsavedChangesGuardOptions {\n /**\n * Reactive sources that signal \"unsaved\" state. Each source's truthiness is\n * checked: a Set/array is \"dirty\" when non-empty, a boolean when true, null\n * or undefined as not dirty.\n */\n sources: UnsavedSource[]\n /**\n * Block route navigation via vue-router's onBeforeRouteLeave, and onBeforeRouteUpdate when the path changes. Default true.\n * Only a literal `false` skips registering the guard; a Ref is read when the navigation happens, so\n * it can turn blocking on and off later.\n */\n guardRoute?: boolean | Ref<boolean>\n /**\n * Block window/tab unload via beforeunload. Default true. Like `guardRoute`: only a literal `false`\n * skips the listener, a Ref is read when the unload happens.\n */\n guardWindowUnload?: boolean | Ref<boolean>\n /**\n * Optional Vuetify dialog v-model. When provided, attempts to close the\n * dialog while dirty are intercepted: dialog stays open until the user\n * confirms via the confirm dialog or via `acknowledge()`.\n */\n guardDialogModel?: Ref<boolean>\n /**\n * Named sections owned by the guard host component itself. Descendants use\n * `useUnsavedSection` instead — but a component can't `inject` its own\n * `provide`, so when the host *is* the section owner (e.g. a dialog), pass\n * the sections here.\n */\n ownSections?: UnsavedSectionSource\n}\n\nexport interface UseUnsavedChangesGuardApi {\n hasUnsavedChanges: ComputedRef<boolean>\n /**\n * Labels of the dirty sections registered by descendants via\n * `useUnsavedSection`. Bind to `AUnsavedConfirmDialog`'s `dirtyLabels` prop\n * so the dialog names *which* parts are unsaved. Empty when no descendant\n * registered a section (dialog falls back to the generic message).\n */\n dirtyLabels: ComputedRef<string[]>\n /**\n * v-model-bound to the confirm dialog. When the guard wants to ask the user\n * to confirm leaving, it sets this to true. The confirm dialog reads it.\n */\n promptOpen: Ref<boolean>\n /**\n * Resolves the confirm prompt with `discard=true` (proceed) or `false`\n * (stay). Called by the confirm dialog.\n */\n resolvePrompt: (discard: boolean) => void\n /**\n * Manually mark the most recent intent as acknowledged so the next\n * route/dialog/unload attempt proceeds without prompting. Useful right\n * before a programmatic navigation that the consumer has already\n * confirmed.\n *\n * The acknowledgement AUTO-EXPIRES after a few seconds if nothing consumes it\n * (see `ACKNOWLEDGE_TTL_MS`): a delete that acknowledges up-front but then FAILS\n * (throws, never navigates) must not leave the guard silently disarmed for the\n * next unrelated navigation. Consuming it (a real leave) clears the timer.\n */\n acknowledge: () => void\n /**\n * Releases what the guard registered imperatively — `beforeunload` listener, acknowledge timer,\n * dialog watcher — and settles an open prompt as \"stay\". Idempotent, and called automatically on\n * unmount; outside a component it is the only way to clean up. The route-leave guard is\n * lifecycle-bound and unaffected.\n */\n stop: () => void\n /**\n * Cancel a pending `acknowledge()` (disarm). Call from a delete's failure path\n * so a failed/aborted delete restores the guard immediately instead of waiting\n * for the TTL. No-op if nothing is acknowledged.\n */\n unacknowledge: () => void\n}\n\n// An acknowledgement is meant for an IMMINENT navigation (a delete's router.push after its HTTP\n// round-trip — tens to hundreds of ms). If none arrives within this window the delete almost\n// certainly failed, so the one-shot expires rather than arming an unrelated later navigation.\n// Generously longer than any real delete request so a legitimate slow-success never false-prompts.\nconst ACKNOWLEDGE_TTL_MS = 8000\n\nconst isTruthySource = (value: unknown): boolean => {\n if (value === null || value === undefined) return false\n if (typeof value === 'boolean') return value\n if (value instanceof Set) return value.size > 0\n if (Array.isArray(value)) return value.length > 0\n return Boolean(value)\n}\n\nconst resolveBool = (v: boolean | Ref<boolean> | undefined, fallback: boolean): boolean => {\n if (v === undefined) return fallback\n if (typeof v === 'boolean') return v\n return v.value\n}\n\nexport function useUnsavedChangesGuard(options: UseUnsavedChangesGuardOptions): UseUnsavedChangesGuardApi {\n // Provide a section registry so descendants can name their dirty sections\n // via `useUnsavedSection`. The dialog reads `dirtyLabels` from this.\n const sectionRegistry = provideUnsavedSectionRegistry()\n\n // The host component can't inject its own provide, so register its own\n // sections directly.\n if (options.ownSections) {\n const ownSections = options.ownSections\n const id = Symbol('unsaved.section.own')\n const normalized = computed<UnsavedSectionDescriptor[]>(() => {\n const resolved = ownSections()\n return Array.isArray(resolved) ? resolved : [resolved]\n })\n sectionRegistry.register(id, normalized)\n }\n\n const hasUnsavedChanges = computed<boolean>(\n () => options.sources.some((s) => isTruthySource(s.value)) || sectionRegistry.dirtyLabels.value.length > 0\n )\n\n const promptOpen = ref<boolean>(false)\n // Every navigation waiting on the open prompt: one started meanwhile (the browser's Back) asks too, and the answer is\n // theirs alike.\n let pendingResolvers: ((discard: boolean) => void)[] = []\n let acknowledgedOnce = false\n let acknowledgeTimer: ReturnType<typeof setTimeout> | null = null\n\n const clearAcknowledgeTimer = () => {\n if (acknowledgeTimer !== null) {\n clearTimeout(acknowledgeTimer)\n acknowledgeTimer = null\n }\n }\n\n const askToLeave = (): Promise<boolean> => {\n if (acknowledgedOnce) {\n acknowledgedOnce = false\n clearAcknowledgeTimer()\n return Promise.resolve(true)\n }\n return new Promise((resolve) => {\n pendingResolvers.push(resolve)\n promptOpen.value = true\n })\n }\n\n const resolvePrompt = (discard: boolean) => {\n promptOpen.value = false\n const resolvers = pendingResolvers\n pendingResolvers = []\n resolvers.forEach((resolve) => resolve(discard))\n }\n\n const acknowledge = () => {\n acknowledgedOnce = true\n // Auto-expire: if the imminent navigation never arrives (e.g. the delete threw), don't leave\n // the guard armed for an unrelated later leave. A real consume (askToLeave) clears this first.\n clearAcknowledgeTimer()\n acknowledgeTimer = setTimeout(() => {\n acknowledgedOnce = false\n acknowledgeTimer = null\n }, ACKNOWLEDGE_TTL_MS)\n }\n\n const unacknowledge = () => {\n acknowledgedOnce = false\n clearAcknowledgeTimer()\n }\n\n // Route guards — `onBeforeRouteLeave` and `onBeforeRouteUpdate` only work inside a route component\n // (it reads the current vm context). Outside a component it's a no-op.\n // A Ref option is read at event time (register whenever it is not a literal `false`).\n if (options.guardRoute !== false && getCurrentInstance()) {\n try {\n const guardLeave = async () => {\n if (!resolveBool(options.guardRoute, true) || !hasUnsavedChanges.value) return true\n const discard = await askToLeave()\n return discard\n }\n onBeforeRouteLeave(guardLeave)\n // The same route with other params (another article's edit page) drops this page's changes as surely: an admin\n // keys its view by path and remounts it, a child route switching under a guarded parent included, and only a\n // leave was asked about. Any path, not only the guarded route's own params: where the view is not keyed so, the\n // question is one too many, never a loss of changes without one. Query and hash alone keep the page.\n onBeforeRouteUpdate((to, from) => (to.path === from.path ? true : guardLeave()))\n } catch {\n // Not in a route context — skip silently.\n }\n }\n\n // beforeunload — modern browsers strip custom messages but still display a\n // generic confirm. Setting `returnValue` is the canonical way to opt in.\n // Collected, not tied to onBeforeUnmount: outside a component that hook is a silent no-op.\n const disposers: Array<() => void> = [clearAcknowledgeTimer]\n let stopped = false\n\n if (options.guardWindowUnload !== false) {\n const onBeforeUnload = (e: BeforeUnloadEvent) => {\n if (!resolveBool(options.guardWindowUnload, true) || !hasUnsavedChanges.value) return\n e.preventDefault()\n e.returnValue = ''\n }\n if (typeof window !== 'undefined') {\n window.addEventListener('beforeunload', onBeforeUnload)\n disposers.push(() => window.removeEventListener('beforeunload', onBeforeUnload))\n }\n }\n\n // Dialog guard — when the parent dialog tries to close while dirty, intercept\n // and ask the user to confirm. The parent dialog model goes from false→true\n // (open) to true→false (closing); we re-open it while we await the prompt.\n if (options.guardDialogModel) {\n const dialogModel = options.guardDialogModel\n let suppressNext = false\n const stopDialogWatch = watch(dialogModel, async (now, prev) => {\n if (suppressNext) {\n suppressNext = false\n return\n }\n if (prev === true && now === false && hasUnsavedChanges.value) {\n // Re-open the dialog while we wait for the user's choice.\n suppressNext = true\n dialogModel.value = true\n const discard = await askToLeave()\n // A teardown mid-prompt must not fall through and mutate the caller's dialog model.\n if (stopped) return\n if (discard) {\n suppressNext = true\n dialogModel.value = false\n }\n }\n })\n disposers.push(stopDialogWatch)\n }\n\n const stop = () => {\n if (stopped) return\n stopped = true\n // An open prompt would leave whoever awaits askToLeave() pending forever; \"stay\" is safe.\n resolvePrompt(false)\n disposers.forEach((dispose) => dispose())\n }\n\n if (getCurrentInstance()) {\n onBeforeUnmount(stop)\n }\n\n return {\n hasUnsavedChanges,\n dirtyLabels: sectionRegistry.dirtyLabels,\n promptOpen,\n resolvePrompt,\n acknowledge,\n unacknowledge,\n stop,\n }\n}\n"],"mappings":";;;;AA6FA,IAAMA,IAAqB,KAErBC,KAAkB,MAClBC,KAAU,OAAoC,KAC9C,OAAOA,KAAU,YAAkBA,IACnCA,aAAiB,MAAYA,EAAM,OAAO,IAC1C,MAAM,QAAQA,CAAK,IAAUA,EAAM,SAAS,IACzC,EAAQA,GAGXC,KAAe,GAAuC,MACtDC,MAAM,KAAA,IAAkBC,IACxB,OAAOD,KAAM,YAAkBA,IAC5BA,EAAE;AAGX,SAAgBE,EAAuB,GAAmE;CAGxG,IAAMC,IAAkBC,EAA8B;CAItD,IAAIC,EAAQ,aAAa;EACvB,IAAMC,IAAcD,EAAQ,aACtBE,IAAK,OAAO,qBAAqB,GACjCC,IAAaC,QAA2C;GAC5D,IAAMC,IAAWJ,EAAY;GAC7B,OAAO,MAAM,QAAQI,CAAQ,IAAIA,IAAW,CAACA,CAAQ;EACvD,CAAC;EACD,EAAgB,SAASH,GAAIC,CAAU;CACzC;CAEA,IAAMG,IAAoBF,QAClBJ,EAAQ,QAAQ,MAAM,MAAMR,EAAee,EAAE,KAAK,CAAC,KAAKT,EAAgB,YAAY,MAAM,SAAS,CAC3G,GAEMU,IAAaC,EAAa,EAAK,GAGjCC,IAAmD,CAAC,GACpDC,IAAmB,IACnBC,IAAyD,MAEvDC,UAA8B;EAClC,AAAID,MAAqB,SACvB,aAAaA,CAAgB,GAC7B,IAAmB;CAEvB,GAEME,UACAH,KACF,IAAmB,IACnBE,EAAsB,GACf,QAAQ,QAAQ,EAAI,KAEtB,IAAI,SAAS,MAAY;EAE9B,AADAH,EAAiB,KAAKK,CAAO,GAC7B,EAAW,QAAQ;CACrB,CAAC,GAGGC,KAAiB,MAAqB;EAC1C,EAAW,QAAQ;EACnB,IAAMC,IAAYP;EAElB,AADA,IAAmB,CAAC,GACpBO,EAAU,SAAS,MAAYF,EAAQG,CAAO,CAAC;CACjD,GAEMC,UAAoB;EAKxB,AAJA,IAAmB,IAGnBN,EAAsB,GACtB,IAAmB,iBAAiB;GAElC,AADA,IAAmB,IACnB,IAAmB;EACrB,GAAGtB,CAAkB;CACvB,GAEM6B,UAAsB;EAE1B,AADA,IAAmB,IACnBP,EAAsB;CACxB;CAKA,IAAIb,EAAQ,eAAe,MAASqB,EAAmB,GACrD,IAAI;EACF,IAAMC,IAAa,YACb,CAAC5B,EAAYM,EAAQ,YAAY,EAAI,KAAK,CAACM,EAAkB,SAE1D,MADeQ,EAAW;EAQnC,AALAS,EAAmBD,CAAU,GAK7BE,GAAqB,GAAI,MAAUC,EAAG,SAASC,EAAK,QAAcJ,EAAW,CAAE;CACjF,QAAQ,CAER;CAMF,IAAMK,IAA+B,CAACd,CAAqB,GACvDe,IAAU;CAEd,IAAI5B,EAAQ,sBAAsB,IAAO;EACvC,IAAM6B,KAAkB,MAAyB;GAC/C,AAAKnC,EAAYM,EAAQ,mBAAmB,EAAI,KAAMM,EAAkB,UACxE,EAAE,eAAe,GACjB,EAAE,cAAc;EAClB;EACA,AAAI,OAAO,SAAW,QACpB,OAAO,iBAAiB,gBAAgBuB,CAAc,GACtDF,EAAU,WAAW,OAAO,oBAAoB,gBAAgBE,CAAc,CAAC;CAEnF;CAKA,IAAI7B,EAAQ,kBAAkB;EAC5B,IAAM8B,IAAc9B,EAAQ,kBACxB+B,IAAe,IACbC,IAAkBC,EAAMH,GAAa,OAAO,GAAK,MAAS;GAC9D,IAAIC,GACF,IAAe;QAGjB,IAAIG,MAAS,MAAQC,MAAQ,MAAS7B,EAAkB,OAAO;IAG7D,AADA,IAAe,IACf,EAAY,QAAQ;IACpB,IAAMY,IAAU,MAAMJ,EAAW;IAEjC,IAAIc,GAAS;IACb,AAAIV,MACF,IAAe,IACf,EAAY,QAAQ;GAExB;EACF,CAAC;EACD,EAAU,KAAKc,CAAe;CAChC;CAEA,IAAMI,UAAa;EACjB,AAAIR,MACJ,IAAU,IAEVZ,EAAc,EAAK,GACnBW,EAAU,SAAS,MAAYU,EAAQ,CAAC;CAC1C;CAMA,OAJIhB,EAAmB,KACrBiB,EAAgBF,CAAI,GAGf;EACL;EACA,aAAatC,EAAgB;EAC7B;EACA;EACA;EACA;EACA;CACF;AACF"}
1
+ {"version":3,"file":"useUnsavedChangesGuard.js","names":["ACKNOWLEDGE_TTL_MS","isTruthySource","value","resolveBool","v","fallback","useUnsavedChangesGuard","sectionRegistry","provideUnsavedSectionRegistry","options","ownSections","id","normalized","computed","resolved","hasUnsavedChanges","s","promptOpen","ref","pendingResolvers","acknowledgedOnce","acknowledgeTimer","clearAcknowledgeTimer","askToLeave","resolve","resolvePrompt","resolvers","discard","acknowledge","unacknowledge","getCurrentInstance","guardLeave","onBeforeRouteLeave","onBeforeRouteUpdate","to","from","disposers","stopped","onBeforeUnload","dialogModel","suppressNext","stopDialogWatch","watch","prev","now","stop","dispose","onBeforeUnmount"],"sources":["../../../../src/domains/unsavedGuard/composables/useUnsavedChangesGuard.ts"],"sourcesContent":["import { computed, getCurrentInstance, onBeforeUnmount, ref, watch, type ComputedRef, type Ref } from 'vue'\nimport { onBeforeRouteLeave, onBeforeRouteUpdate } from 'vue-router'\nimport {\n provideUnsavedSectionRegistry,\n type UnsavedSectionDescriptor,\n type UnsavedSectionSource,\n} from '@/domains/unsavedGuard/composables/useUnsavedSection'\n\ntype UnsavedSource = Ref<boolean | Set<unknown> | unknown[] | null | undefined>\n\nexport interface UseUnsavedChangesGuardOptions {\n /**\n * Reactive sources that signal \"unsaved\" state. Each source's truthiness is\n * checked: a Set/array is \"dirty\" when non-empty, a boolean when true, null\n * or undefined as not dirty.\n */\n sources: UnsavedSource[]\n /**\n * Block route navigation via `onBeforeRouteLeave`, and `onBeforeRouteUpdate` when the path changes. Default true.\n * Only a literal `false` skips registering the guard. A Ref is\n * read at navigation time, so blocking can be toggled later.\n */\n guardRoute?: boolean | Ref<boolean>\n /**\n * Block window/tab unload via beforeunload. Default true. Like `guardRoute`: only a literal `false`\n * skips the listener, a Ref is read when the unload happens.\n */\n guardWindowUnload?: boolean | Ref<boolean>\n /**\n * Optional Vuetify dialog v-model. When provided, attempts to close the\n * dialog while dirty are intercepted: dialog stays open until the user\n * confirms via the confirm dialog or via `acknowledge()`.\n */\n guardDialogModel?: Ref<boolean>\n /**\n * Named sections owned by the guard host component itself. Descendants use\n * `useUnsavedSection` instead — but a component can't `inject` its own\n * `provide`, so when the host *is* the section owner (e.g. a dialog), pass\n * the sections here.\n */\n ownSections?: UnsavedSectionSource\n}\n\nexport interface UseUnsavedChangesGuardApi {\n hasUnsavedChanges: ComputedRef<boolean>\n /**\n * Labels of the dirty sections registered by descendants via\n * `useUnsavedSection`. Bind to `AUnsavedConfirmDialog`'s `dirtyLabels` prop\n * so the dialog names *which* parts are unsaved. Empty when no descendant\n * registered a section (dialog falls back to the generic message).\n */\n dirtyLabels: ComputedRef<string[]>\n /**\n * v-model-bound to the confirm dialog. When the guard wants to ask the user\n * to confirm leaving, it sets this to true. The confirm dialog reads it.\n */\n promptOpen: Ref<boolean>\n /**\n * Resolves the confirm prompt with `discard=true` (proceed) or `false`\n * (stay). Called by the confirm dialog.\n */\n resolvePrompt: (discard: boolean) => void\n /**\n * Manually mark the most recent intent as acknowledged so the next\n * route/dialog/unload attempt proceeds without prompting. Useful right\n * before a programmatic navigation that the consumer has already\n * confirmed.\n *\n * The acknowledgement AUTO-EXPIRES after a few seconds if nothing consumes it\n * (see `ACKNOWLEDGE_TTL_MS`): a delete that acknowledges up-front but then FAILS\n * (throws, never navigates) must not leave the guard silently disarmed for the\n * next unrelated navigation. Consuming it (a real leave) clears the timer.\n */\n acknowledge: () => void\n /**\n * Releases the `beforeunload` listener, acknowledge timer and dialog watcher, and settles an open prompt as \"stay\".\n * Idempotent and called on unmount. Outside a component it is the only way\n * to clean up. The route-leave guard is lifecycle-bound and unaffected.\n */\n stop: () => void\n /**\n * Cancel a pending `acknowledge()` (disarm). Call from a delete's failure path\n * so a failed/aborted delete restores the guard immediately instead of waiting\n * for the TTL. No-op if nothing is acknowledged.\n */\n unacknowledge: () => void\n}\n\n// An acknowledgement is meant for an IMMINENT navigation (a delete's router.push after its HTTP\n// round-trip — tens to hundreds of ms). If none arrives within this window the delete almost\n// certainly failed, so the one-shot expires rather than arming an unrelated later navigation.\n// Generously longer than any real delete request so a legitimate slow-success never false-prompts.\nconst ACKNOWLEDGE_TTL_MS = 8000\n\nconst isTruthySource = (value: unknown): boolean => {\n if (value === null || value === undefined) return false\n if (typeof value === 'boolean') return value\n if (value instanceof Set) return value.size > 0\n if (Array.isArray(value)) return value.length > 0\n return Boolean(value)\n}\n\nconst resolveBool = (v: boolean | Ref<boolean> | undefined, fallback: boolean): boolean => {\n if (v === undefined) return fallback\n if (typeof v === 'boolean') return v\n return v.value\n}\n\nexport function useUnsavedChangesGuard(options: UseUnsavedChangesGuardOptions): UseUnsavedChangesGuardApi {\n // Provide a section registry so descendants can name their dirty sections\n // via `useUnsavedSection`. The dialog reads `dirtyLabels` from this.\n const sectionRegistry = provideUnsavedSectionRegistry()\n\n // The host component can't inject its own provide, so register its own\n // sections directly.\n if (options.ownSections) {\n const ownSections = options.ownSections\n const id = Symbol('unsaved.section.own')\n const normalized = computed<UnsavedSectionDescriptor[]>(() => {\n const resolved = ownSections()\n return Array.isArray(resolved) ? resolved : [resolved]\n })\n sectionRegistry.register(id, normalized)\n }\n\n const hasUnsavedChanges = computed<boolean>(\n () => options.sources.some((s) => isTruthySource(s.value)) || sectionRegistry.dirtyLabels.value.length > 0\n )\n\n const promptOpen = ref<boolean>(false)\n // All navigations waiting on the open prompt. One started\n // meanwhile (browser Back) also waits and gets the same answer.\n let pendingResolvers: ((discard: boolean) => void)[] = []\n let acknowledgedOnce = false\n let acknowledgeTimer: ReturnType<typeof setTimeout> | null = null\n\n const clearAcknowledgeTimer = () => {\n if (acknowledgeTimer !== null) {\n clearTimeout(acknowledgeTimer)\n acknowledgeTimer = null\n }\n }\n\n const askToLeave = (): Promise<boolean> => {\n if (acknowledgedOnce) {\n acknowledgedOnce = false\n clearAcknowledgeTimer()\n return Promise.resolve(true)\n }\n return new Promise((resolve) => {\n pendingResolvers.push(resolve)\n promptOpen.value = true\n })\n }\n\n const resolvePrompt = (discard: boolean) => {\n promptOpen.value = false\n const resolvers = pendingResolvers\n pendingResolvers = []\n resolvers.forEach((resolve) => resolve(discard))\n }\n\n const acknowledge = () => {\n acknowledgedOnce = true\n // Auto-expire: if the imminent navigation never arrives (e.g. the delete threw), don't leave\n // the guard armed for an unrelated later leave. A real consume (askToLeave) clears this first.\n clearAcknowledgeTimer()\n acknowledgeTimer = setTimeout(() => {\n acknowledgedOnce = false\n acknowledgeTimer = null\n }, ACKNOWLEDGE_TTL_MS)\n }\n\n const unacknowledge = () => {\n acknowledgedOnce = false\n clearAcknowledgeTimer()\n }\n\n // `onBeforeRouteLeave` and `onBeforeRouteUpdate` only work inside a route component. Outside one they are no-ops.\n // A Ref option is read at event time.\n if (options.guardRoute !== false && getCurrentInstance()) {\n try {\n const guardLeave = async () => {\n if (!resolveBool(options.guardRoute, true) || !hasUnsavedChanges.value) return true\n const discard = await askToLeave()\n return discard\n }\n onBeforeRouteLeave(guardLeave)\n // A path change within the same route (another article's edit page) also drops this page's changes.\n // Admins key their view by path and remount it, including child routes under a guarded parent.\n // Any path change asks. Where the view is not keyed by path, this is one\n // extra prompt, never lost changes. Query and hash changes keep the page.\n onBeforeRouteUpdate((to, from) => (to.path === from.path ? true : guardLeave()))\n } catch {\n // Not in a route context — skip silently.\n }\n }\n\n // Browsers ignore custom `beforeunload` messages but show a generic confirm when `returnValue` is set.\n // Disposers are collected, not tied to `onBeforeUnmount`, because outside a component that hook is a silent no-op.\n const disposers: Array<() => void> = [clearAcknowledgeTimer]\n let stopped = false\n\n if (options.guardWindowUnload !== false) {\n const onBeforeUnload = (e: BeforeUnloadEvent) => {\n if (!resolveBool(options.guardWindowUnload, true) || !hasUnsavedChanges.value) return\n e.preventDefault()\n e.returnValue = ''\n }\n if (typeof window !== 'undefined') {\n window.addEventListener('beforeunload', onBeforeUnload)\n disposers.push(() => window.removeEventListener('beforeunload', onBeforeUnload))\n }\n }\n\n // Dialog guard — when the parent dialog tries to close while dirty, intercept\n // and ask the user to confirm. The parent dialog model goes from false→true\n // (open) to true→false (closing); we re-open it while we await the prompt.\n if (options.guardDialogModel) {\n const dialogModel = options.guardDialogModel\n let suppressNext = false\n const stopDialogWatch = watch(dialogModel, async (now, prev) => {\n if (suppressNext) {\n suppressNext = false\n return\n }\n if (prev === true && now === false && hasUnsavedChanges.value) {\n // Re-open the dialog while we wait for the user's choice.\n suppressNext = true\n dialogModel.value = true\n const discard = await askToLeave()\n // A teardown mid-prompt must not fall through and mutate the caller's dialog model.\n if (stopped) return\n if (discard) {\n suppressNext = true\n dialogModel.value = false\n }\n }\n })\n disposers.push(stopDialogWatch)\n }\n\n const stop = () => {\n if (stopped) return\n stopped = true\n // An open prompt would leave whoever awaits askToLeave() pending forever; \"stay\" is safe.\n resolvePrompt(false)\n disposers.forEach((dispose) => dispose())\n }\n\n if (getCurrentInstance()) {\n onBeforeUnmount(stop)\n }\n\n return {\n hasUnsavedChanges,\n dirtyLabels: sectionRegistry.dirtyLabels,\n promptOpen,\n resolvePrompt,\n acknowledge,\n unacknowledge,\n stop,\n }\n}\n"],"mappings":";;;;AA4FA,IAAMA,IAAqB,KAErBC,KAAkB,MAClBC,KAAU,OAAoC,KAC9C,OAAOA,KAAU,YAAkBA,IACnCA,aAAiB,MAAYA,EAAM,OAAO,IAC1C,MAAM,QAAQA,CAAK,IAAUA,EAAM,SAAS,IACzC,EAAQA,GAGXC,KAAe,GAAuC,MACtDC,MAAM,KAAA,IAAkBC,IACxB,OAAOD,KAAM,YAAkBA,IAC5BA,EAAE;AAGX,SAAgBE,EAAuB,GAAmE;CAGxG,IAAMC,IAAkBC,EAA8B;CAItD,IAAIC,EAAQ,aAAa;EACvB,IAAMC,IAAcD,EAAQ,aACtBE,IAAK,OAAO,qBAAqB,GACjCC,IAAaC,QAA2C;GAC5D,IAAMC,IAAWJ,EAAY;GAC7B,OAAO,MAAM,QAAQI,CAAQ,IAAIA,IAAW,CAACA,CAAQ;EACvD,CAAC;EACD,EAAgB,SAASH,GAAIC,CAAU;CACzC;CAEA,IAAMG,IAAoBF,QAClBJ,EAAQ,QAAQ,MAAM,MAAMR,EAAee,EAAE,KAAK,CAAC,KAAKT,EAAgB,YAAY,MAAM,SAAS,CAC3G,GAEMU,IAAaC,EAAa,EAAK,GAGjCC,IAAmD,CAAC,GACpDC,IAAmB,IACnBC,IAAyD,MAEvDC,UAA8B;EAClC,AAAID,MAAqB,SACvB,aAAaA,CAAgB,GAC7B,IAAmB;CAEvB,GAEME,UACAH,KACF,IAAmB,IACnBE,EAAsB,GACf,QAAQ,QAAQ,EAAI,KAEtB,IAAI,SAAS,MAAY;EAE9B,AADAH,EAAiB,KAAKK,CAAO,GAC7B,EAAW,QAAQ;CACrB,CAAC,GAGGC,KAAiB,MAAqB;EAC1C,EAAW,QAAQ;EACnB,IAAMC,IAAYP;EAElB,AADA,IAAmB,CAAC,GACpBO,EAAU,SAAS,MAAYF,EAAQG,CAAO,CAAC;CACjD,GAEMC,UAAoB;EAKxB,AAJA,IAAmB,IAGnBN,EAAsB,GACtB,IAAmB,iBAAiB;GAElC,AADA,IAAmB,IACnB,IAAmB;EACrB,GAAGtB,CAAkB;CACvB,GAEM6B,UAAsB;EAE1B,AADA,IAAmB,IACnBP,EAAsB;CACxB;CAIA,IAAIb,EAAQ,eAAe,MAASqB,EAAmB,GACrD,IAAI;EACF,IAAMC,IAAa,YACb,CAAC5B,EAAYM,EAAQ,YAAY,EAAI,KAAK,CAACM,EAAkB,SAE1D,MADeQ,EAAW;EAQnC,AALAS,EAAmBD,CAAU,GAK7BE,GAAqB,GAAI,MAAUC,EAAG,SAASC,EAAK,QAAcJ,EAAW,CAAE;CACjF,QAAQ,CAER;CAKF,IAAMK,IAA+B,CAACd,CAAqB,GACvDe,IAAU;CAEd,IAAI5B,EAAQ,sBAAsB,IAAO;EACvC,IAAM6B,KAAkB,MAAyB;GAC/C,AAAKnC,EAAYM,EAAQ,mBAAmB,EAAI,KAAMM,EAAkB,UACxE,EAAE,eAAe,GACjB,EAAE,cAAc;EAClB;EACA,AAAI,OAAO,SAAW,QACpB,OAAO,iBAAiB,gBAAgBuB,CAAc,GACtDF,EAAU,WAAW,OAAO,oBAAoB,gBAAgBE,CAAc,CAAC;CAEnF;CAKA,IAAI7B,EAAQ,kBAAkB;EAC5B,IAAM8B,IAAc9B,EAAQ,kBACxB+B,IAAe,IACbC,IAAkBC,EAAMH,GAAa,OAAO,GAAK,MAAS;GAC9D,IAAIC,GACF,IAAe;QAGjB,IAAIG,MAAS,MAAQC,MAAQ,MAAS7B,EAAkB,OAAO;IAG7D,AADA,IAAe,IACf,EAAY,QAAQ;IACpB,IAAMY,IAAU,MAAMJ,EAAW;IAEjC,IAAIc,GAAS;IACb,AAAIV,MACF,IAAe,IACf,EAAY,QAAQ;GAExB;EACF,CAAC;EACD,EAAU,KAAKc,CAAe;CAChC;CAEA,IAAMI,UAAa;EACjB,AAAIR,MACJ,IAAU,IAEVZ,EAAc,EAAK,GACnBW,EAAU,SAAS,MAAYU,EAAQ,CAAC;CAC1C;CAMA,OAJIhB,EAAmB,KACrBiB,EAAgBF,CAAI,GAGf;EACL;EACA,aAAatC,EAAgB;EAC7B;EACA;EACA;EACA;EACA;CACF;AACF"}
package/dist/lib.d.ts CHANGED
@@ -191,7 +191,7 @@ import { useCollabRoom } from './domains/collab/composables/collabRoom';
191
191
  import { COLLAB_FIELD_PREFIX_COMMENT, COLLAB_FIELD_PREFIX_EMBED, CollabCachedUsersMap, useCollabHelpers } from './domains/collab/composables/collabHelpers';
192
192
  import { useCollabAnyDataChange } from './domains/collab/composables/collabAnyDataChange';
193
193
  import { CollabFieldLockStatus, CollabFieldLockStatusPayload, CollabFieldLockStatusType, CollabFieldLockType, CollabFieldLockTypeType, CollabGatheringBufferDataEvent, useCollabGatheringBufferDataEventBus, useCollabReconnectEventBus } from './domains/collab/composables/collabEventBus';
194
- import { CollabAccessRoomStatus, CollabAccessRoomStatusType, CollabChangeRoomLockStatus, CollabChangeRoomLockStatusType, CollabComponentConfig, CollabFieldData, CollabFieldDataEnvelope, CollabFieldLock, CollabFieldLockOptions, CollabFieldName, CollabRequestToJoinStatus, CollabRequestToJoinStatusType, CollabRequestToTakeModerationStatus, CollabRequestToTakeModerationStatusType, CollabRoom, CollabRoomData, CollabRoomInfo, CollabRoomJoinStrategy, CollabRoomJoinStrategyType, CollabRoomLocks, CollabJoinAckOptions, CollabRoomOptions, CollabRoomPlainData, CollabRoomsInfo, CollabStatus, CollabStatusType, CollabUserId, CollabUserIdNullable } from './domains/collab/types/Collab';
194
+ import { CollabAccessRoomStatus, CollabAccessRoomStatusType, CollabChangeRoomLockStatus, CollabChangeRoomLockStatusType, CollabComponentConfig, CollabFieldData, CollabFieldDataEnvelope, CollabFieldLock, CollabFieldLockOptions, CollabFieldName, CollabRequestToJoinStatus, CollabRequestToJoinStatusType, CollabRequestToTakeModerationStatus, CollabRequestToTakeModerationStatusType, CollabRoom, CollabRoomData, CollabRoomInfo, CollabRoomJoinStrategy, CollabRoomJoinStrategyType, CollabRoomLocks, CollabJoinAckOptions, CollabRoomOptions, CollabRoomPlainData, CollabRoomsInfo, CollabStatus, CollabStatusType, CollabConnectionState, CollabConnectionStateType, CollabReconnectVerdict, CollabReconnectVerdictType, CollabUserId, CollabUserIdNullable } from './domains/collab/types/Collab';
195
195
  import { default as ADamAssetLicenceRemoteAutocomplete } from './domains/dam/user/components/DamAssetLicenceRemoteAutocomplete.vue';
196
196
  import { default as ADamAssetLicenceGroupRemoteAutocomplete } from './domains/dam/user/components/DamAssetLicenceGroupRemoteAutocomplete.vue';
197
197
  import { default as ADamExtSystemRemoteAutocomplete } from './domains/dam/user/components/DamExtSystemRemoteAutocomplete.vue';
@@ -298,7 +298,7 @@ import { default as AUserTabsShell } from './domains/anzuUser/components/AUserTa
298
298
  import { OTHER_SYSTEMS_TAB } from './domains/anzuUser/utils/userTabs';
299
299
  import { USER_PROBE_ENTITY, UserSystemRefreshHook } from './domains/anzuUser/composables/userSystemProbe';
300
300
  import { default as AUserSystemOverview } from './domains/anzuUser/components/AUserSystemOverview.vue';
301
- export { ACard, AProgress, ARow, AChipNoLink, AAlerts, AActionbar, AActionbarTarget, ALayoutLoader, ALayoutSwitch, actionbarSlot, createTeleportSlot, type TeleportSlot, ABooleanValue, ASystemEntityScope, AFormTextField, AFormTextarea, AFormDatetimePicker, AFormFlagDatetimePicker, AFormRemoteCheckbox, AFormRemoteSwitch, AFormSwitch, AFormValueObjectOptionsSelect, ADatetime, ADatetimePicker, ADatatableConfigButton, ADialogToolbar, ACreateDialog, AJobStatusChip, ACachedChip, ACachedUserChip, AAdminSwitcher, ATimeTrackingFields, Acl, ACopyText, AIconGroup, AUserAndTimeTrackingFields, AActionCloseButtonHistory, AActionCreateButton, AActionDeleteButton, AActionEditButton, AActionSaveAndCloseButton, AActionSaveButton, ATableCopyIdButton, ATableDetailButton, ATableEditButton, ABtnSplit, AThemeSelect, ALanguageSelect, ASystemBar, AAnzuUserAvatar, AAvatarColorPicker, ACurrentUserDropdown, AJobDetailCommon, AJobPriorityChip, AJobBaseCreateForm, ACustomDataForm, ACustomDataFormElement, AImageWidget, AImageWidgetInner, AImageMediaWidget, AImageWidgetSimple, AMediaWidgetSimple, AImageWidgetMultiple, AImageWidgetMultipleInner, AImageWidgetMultipleSimple, AImageMassOperations, AImagePublicInput, ADamAssetImageRoiSelect, ACollabLockedByUser, ACollabManagement, AFileInput, AAssetSelect, AAssetListInner, ABooleanSelect, ADamExtSystemRemoteAutocomplete, ADamExternalProviderAssetSelect, ADamDistributionServiceSelect, ADamAssetLicenceRemoteAutocomplete, ADamAssetLicenceGroupRemoteAutocomplete, ADamAuthorFilterRemoteAutocomplete, ADamKeywordFilterRemoteAutocomplete, ADamUserFilterRemoteAutocomplete, ADamUserRemoteAutocomplete, ADamAdminAssetLink, ALoginView, ALogoutView, AUnauthorizedView, ANotFoundView, AGenericView, useRouteHistory, type NavigateBackOptions, type NavigateBackTarget, type RouteHistoryEntry, handleRecordLoadError, useRecordPage, type UseRecordPageOptions, type UseRecordPageReturn, defineRecordLoader, defineRecordSave, trackNavigation, isNavigationPending, usePageNavigation, type UsePageNavigationReturn, createNavigationErrorHandler, type NavigationErrorHandlerOptions, useRemainingTime, useAlerts, useTheme, defineCached, useCachedItem, Theme, type ThemeType, useLanguageSettings, modifyLanguageSettings, useLoginStatus, generateDatatableMinMaxSelectStrategy, useCustomDataFormElementType, useDamConfigState, useUploadQueueItemFactory, useDamUploadChunkSize, useDamAcceptTypeAndSizeHelper, useAssetSuggestions, destroyDamNotifications, initDamNotifications, useDamNotifications, useDamNotificationsConnection, createUploadSettlement, uploadSettlementRuntime, UPLOAD_POLL_SCHEDULE, useDropzoneGlobalDragState, useDamKeywordFactory, useDamAuthorFactory, useDamAuthorType, useDamDistributionServiceType, useDamAssetLicenceInnerFilter, useImageActions, useCommonAdminImageOptions, defineAuth, useAclAllowed, AuthUnavailableError, type AuthCookieState, createRefreshRequestInterceptor, createRefreshSession, isInCauseChain, type RefreshResult, SessionExpiredError, defineBreadcrumbs, useDamCachedUsers, useUnreleasedFeatures, useDebugFeatures, useSentry, useUserActivity, type GrantType, Grant, useGrant, type GrantOriginType, GrantOrigin, GrantOriginDefault, useGrantOrigin, LogLevel, type LogLevelType, type IntegerId, type IntegerIdNullable, type DocId, type DocIdNullable, type DatetimeUTCNullable, type DatetimeUTC, type DateUTC, type DatetimePickerType, type AnzuUser, type BaseUser, type AnzuUserMinimal, type AnzuUserAndTimeTrackingAware, type ValueObjectOption, type CreatedByAware, type PermissionConfig, type PermissionTranslationGroup, type PermissionGroup, type PermissionGroupMinimal, type VuetifyIconValue, type JobBase, type JobUserDataDelete, JOB_RESOURCE_USER_DATA_DELETE, JobStatus, JobStatusDefault, type JobStatusType, type JobBaseResource, useCommonJobFactory, type AclValue, type AclRegistry, type AclValueOf, type RegisteredAclValue, type Permissions, type PluginOptions, type CommonAdminImageOptions, type CommonAdminCoreDamOptions, type CommonAdminCollabOptions, type LanguageCode, type Immutable, type ResourceNameSystemAware, type ValidationScope, type AFormFieldValidation, type CommonAdminGlobalComponents, type ACreateDialogValidation, type Log, type ApiInfiniteResponseList, type DatatableOrderingOption, type DatatableOrderingOptions, type DatatableSortBy, type SortOrderType, type ObjectLeaves, type UniqueValues, ensureUniqueValues, type CachedItem, type AddToCachedArgs, type CachedUnresolvedReason, type DefineCachedOptions, type RecordWasType, type UrlParams, type AssetSelectReturnData, AssetSelectReturnType, type AssetSelectReturnTypeType, type SortableItemDataAware, type AssetFileProperties, type AssetSearchListItemDto, type AssetDetailItemDto, type AssetMetadataDto, type AssetCustomData, type AssetMetadataSuggestions, AssetFileFailReason, type AssetFileFailReasonType, AssetFileProcessStatus, type AssetFileProcessStatusType, AssetFileLinkType, type AssetFileLinkTypeType, type AssetFile, type AssetFileDocument, type AssetFileVideo, type AssetFileAudio, type AssetFileImage, type AssetFileNullable, type AssetFileLink, type AssetFileLinks, type AssetFileRoute, AssetFileRouteStatus, type AssetFileRouteStatusType, type AssetFileMainRouteAware, type AssetFileDownloadLink, type AssetFileImagePreviewNullable, assetFileIsImageFile, assetFileIsVideoFile, assetFileIsAudioFile, type UploadQueue, type UploadQueueItem, UploadQueueItemStatus, type UploadQueueItemStatusType, UploadQueueItemType, type UploadQueueItemTypeType, type CustomDataAware, type CustomDataValue, type CustomDataFormElement, type CustomDataFormElementAttributes, CustomDataFormElementType, CustomDataFormElementTypeDefault, type CustomDataFormElementTypeType, DamAssetType, DamAssetTypeDefault, type DamAssetTypeType, DamAssetStatus, DamAssetStatusDefault, type DamAssetStatusType, type DamPubConfig, type DamPrvConfig, type DamExtSystemConfig, type DamDistributionServiceName, type DamExtSystemConfigItem, type DamExtSystemConfigItemImage, type DamExternalProviderAssetConfig, type DamExternalProviderAssetName, type DamDistributionConfig, type DamDistributionRequirementsConfig, DamDistributionRequirementStrategy, type DamDistributionRequirementStrategyType, type DamDistributionRequirementsCategorySelectConfig, type DamExtSystemAssetTypeExifMetadata, DamDistributionServiceType, type DamDistributionServiceTypeType, DamDistributionStatus, type DamDistributionStatusType, UserAuthType, type UserAuthTypeType, type DamUploadStartResponse, type DamNotificationNameType, DamNotificationName, type DamNotificationListenerOptions, UploadRowRole, type UploadRowRoleType, type UploadSettlement, type UploadSettlementProfile, type UploadSettlementEvent, type UploadSettlementTarget, type UploadSettlePolicy, type UploadRefreshOutcome, type UploadReadOptions, type UploadSettlementScheduler, type UploadSettlementVisibility, type ImageAware, type ImageCreateUpdateAware, type ImageCreateUpdateAwareKeyed, type UploadMetadataToImageMapFn, type UploadMetadataToImageMapItem, type AssetSelectMetadataToImageMapFn, isImageCreateUpdateAware, type ImageMediaCollabValue, type MediaAware, isMediaAware, type DamMediaFromDam, type DamMedia, DamMediaType, type DamMediaTypeType, type DamAuthor, type DamAuthorMinimal, type DamKeyword, type DamKeywordMinimal, DamAuthorType, type DamAuthorTypeType, type DamExtSystem, type DamExtSystemMinimal, type DamCurrentUserDto, type DamAssetLicence, type DamAssetLicenceMinimal, type DamAssetLicenceGroup, type DamUserUpdateDto, type DamUser, type BreadcrumbItem, type Breadcrumbs, type UploadQueueKey, type DamConfigLicenceExtSystemReturnType, useAnzuUserFactory, usePermissionConfigFactory, usePermissionGroupFactory, cloneDeep, isEmpty, isEmptyObject, isObject, isArray, isFunction, isBoolean, isDocId, isNull, isUndefined, isDefined, isInt, isString, isNumber, objectGetValueByPath, objectSetValueByPath, objectDeletePropertyByPath, objectDeepFreeze, stringToInt, stringToFloat, stringToSlug, stringSplitOnFirstOccurrence, stringToKebabCase, stringIsValidEmail, stringToBooleanExact, DATETIME_MIN, DATETIME_MAX, dateTimeEndOfDay, dateTimeStartOfDay, dateTimeNow, dateTimeFriendly, dateTimePretty, dateModifyMinutes, dateToUtc, dateNow, dateTimeToDate, datePretty, dateUtcPretty, dateUtcToday, timePretty, dateDiff, type DateDiffUnit, prettyBytes, prettyDuration, booleanToInteger, arrayItemToggle, arrayFromArgs, arrayFlatten, type NestedArray, arraysHaveSameElements, browserHistoryReplaceUrlByRouter, eventClickBlur, generateUUIDv1, generateUUIDv4, isOneOf, useJobBaseResource, useJobStatus, fetchDamAssetLicenceListByIds, useFetchDamAssetLicenceList, fetchDamAssetLicenceGroupListByIds, fetchDamExtSystemListByIds, fetchDamUserListByIds, useFetchDamUserList, updateDamUser, fetchDamUser, fetchAssetAndCheckForSingleUseByFileIds, fetchAsset, fetchAssetAsCmsMedia, fetchAssetByFileId, type IdsGroupedByLicences, messagesCs, messagesEn, messagesSk, SystemScopeKey, SubjectScopeKey, HTTP_STATUS_OK, HTTP_STATUS_CREATED, HTTP_STATUS_NO_CONTENT, HTTP_STATUS_BAD_REQUEST, HTTP_STATUS_UNAUTHORIZED, HTTP_STATUS_FORBIDDEN, HTTP_STATUS_NOT_FOUND, HTTP_STATUS_UNPROCESSABLE_ENTITY, ROLE_SUPER_ADMIN, NEW_LINE_MARK, COMMON_CONFIG, SORT_BY_SCORE, SORT_BY_SCORE_BEST, SORT_BY_SCORE_DATE, SORT_BY_ID, SortOrder, ImageWidgetUploadConfigKey, useValidate, useCollabInit, useCommonAdminCollabOptions, useCollabCurrentUserId, useCollabState, useCollabField, useCollabRoom, useCollabHelpers, useCollabAnyDataChange, type CollabGatheringBufferDataEvent, useCollabReconnectEventBus, useCollabGatheringBufferDataEventBus, CollabFieldLockType, type CollabFieldLockTypeType, CollabFieldLockStatus, type CollabFieldLockStatusType, type CollabFieldLockStatusPayload, type CollabUserId, type CollabUserIdNullable, type CollabRoom, CollabStatus, type CollabStatusType, type CollabRoomInfo, type CollabRoomsInfo, type CollabFieldDataEnvelope, type CollabFieldData, type CollabFieldName, type CollabFieldLock, type CollabRoomLocks, type CollabRoomData, type CollabRoomPlainData, CollabAccessRoomStatus, type CollabAccessRoomStatusType, CollabChangeRoomLockStatus, type CollabChangeRoomLockStatusType, type CollabFieldLockOptions, CollabRoomJoinStrategy, type CollabRoomJoinStrategyType, type CollabJoinAckOptions, type CollabRoomOptions, CollabRequestToTakeModerationStatus, type CollabRequestToTakeModerationStatusType, CollabRequestToJoinStatus, type CollabRequestToJoinStatusType, type CollabCachedUsersMap, type CollabComponentConfig, COLLAB_FIELD_PREFIX_COMMENT, COLLAB_FIELD_PREFIX_EMBED, useDamConfigStore, useDamConfigStoreOf, type DamConfigStore, useImageStore, type CommonAdminI18n, slovakPluralizationRule, isAnzuApiForbiddenError, axiosErrorResponseIsForbidden, AnzuApiForbiddenError, isAnzuApiResponseCodeError, AnzuApiResponseCodeError, isAnzuApiForbiddenOperationError, axiosErrorResponseHasForbiddenOperationData, AnzuApiForbiddenOperationError, isAnzuApiValidationError, hasAnzuApiValidationErrorSpecific, axiosErrorResponseHasValidationData, AnzuApiValidationError, isAnzuFatalError, AnzuFatalError, isAnzuApiTimeoutError, AnzuApiTimeoutError, AnzuApiCancelledError, isAnzuApiCancelledError, AnzuError, isAnzuError, isAnzuApiAxiosError, AnzuApiAxiosError, type ValidationError, type AnzuApiValidationResponseData, isAnzuApiDependencyExistsError, axiosErrorResponseHasDependencyExistsData, AnzuApiDependencyExistsError, AnzuSystemsCommonAdmin, useCommonVuetifyConfig, createAnzuVuetify, type CreateAnzuVuetifyOptions, loadCommonFonts, getAssetTypeByMimeType, damFileTypeFix, localTimeShiftInSeconds, useSystemBar, AFilterWrapper, AFilterWrapperSidebar, AFilterWrapperSubjectSelect, AFiltersSelected, AFilterBooleanSelect, AFilterInteger, AFilterRemoteAutocomplete, AFilterString, AFilterTimeInterval, AFilterValueObjectOptionsSelect, FilterConfigKey, FilterDataKey, FilterInnerConfigKey, FilterInnerDataKey, ADatatableOrdering, ADatatablePagination, DatatablePaginationKey, AFormRemoteAutocomplete, createFilterRemoteAutocomplete, createRemoteAutocomplete, type CreateRemoteAutocompleteOptions, type RemoteAutocompleteScope, type FilterRemoteAutocompleteComponent, type FilterRemoteAutocompleteProps, type RemoteAutocompleteComponent, type RemoteAutocompleteProps, type RemoteInnerFilter, type RemoteSelectActions, AFormRemoteAutocompleteWithCached, buildFilterHash, createFilter, createFilterStore, isRouterSafeHash, useFilterHelpers, useDatatableList, type FilterHelpersMoreOptions, type FilterConfig, type FilterData, type FilterStoreIdentifier, type MakeFilterOption, type AllowedFilterValues, type FilterField, type FilterType, type FilterVariant, TimeIntervalSpecialOptions, type TimeIntervalToolsValue, type TimeIntervalSpecialOptionsType, type Pagination, useApiFetchByIds, useApiFetchItems, useApiFetchList, useApiCommand, useApiRequest, defineApiClient, startWithEnvConfig, checkForNewVersion, requestAppReload, RELOAD_VETO_GRACE, skipUrlPrefixes, type ApiClientSetup, type ApiClientRequestInterceptor, type ApiClientResponseInterceptor, type UseApiRequestParams, type ExecuteRequestParams, type UseApiRequestReturnType, type UseApiFetchListParams, type FetchListParams, type UseApiFetchListReturnType, type UseApiFetchByIdsParams, type FetchByIdsParams, type UseApiFetchByIdsReturnType, type UseApiFetchItemsParams, type FetchItemsParams, type ItemsShape, type UseApiFetchItemsReturnType, type UseApiFetchListBatchParams, type FetchListBatchParams, type UseApiFetchListBatchReturnType, defaultApiErrorLogger, apiErrorStatus, apiErrorIsReported, setApiErrorLogger, type ApiErrorContext, type ApiErrorLogger, useApiFetchListBatch, useApiQueryBuilder, generateListQuery, usePagination, createDatatableColumnsConfig, useSubjectSelect, ASubjectSelect, AListEditor, ASortableListEditor, ANestedSortableListEditor, AUnsavedConfirmDialog, useUnsavedChangesGuard, useUnsavedSection, type UnsavedSectionDescriptor, type UnsavedSectionSource, useListEditorController, type ListEditorHandle, type ExposedListEditorHandle, type UseListEditorControllerOptions, type ListEditorChanges, type ListEditorValidationResult, type GetKey, type PositionOption, type PositionStrategy, type PositionAction, renumberPositions, sortByPosition, sortByPositionDeep, type RenumberPositionsOptions, nextListEditorTempId, type NestedViewItem, useNestedListEditorController, type NestedListEditorHandle, type ExposedNestedListEditorHandle, type ExposedNestedSortableListEditorHandle, type NestedSortableListEditorExtras, type UseNestedListEditorControllerOptions, type NestedListEditorChanges, type ListEditorKey, type ListEditorValidationState, type ListViewItem, type NestedPositionHint, type NestedTree, type NestedTreeNode, type PositionHint, useJobApi, type AxiosClientFn, useUserAdminConfigApi, type UserAdminConfig, UserAdminConfigType, type UserAdminConfigTypeType, UserAdminConfigLayoutType, type UserAdminConfigLayoutTypeType, type UserAdminConfigDataFilterBookmark, type UserAdminConfigDataPinnedWidgets, useUserAdminConfigFactory, ALogListView, ALogDetailView, LogType, LogTypeDefault, type LogTypeType, isLogType, DEFAULT_LOG_PATHS, type LogPaths, type LogTimeWindow, APermissionGroupDatatable, APermissionGroupDetail, APermissionGroupManage, usePermissionGroupActions, type PermissionGroupActionsParams, AAnzuUserDatatable, AAnzuUserForm, AUserCopyPermissionsDialog, useAnzuUserActions, type AnzuUserActionsParams, defineUserSystemDescriptor, descriptorMayWrite, type UserSystemWriteAction, resolveProbeEndpoint, resolveMetadataWrite, resolveEnabledWrite, resolveCreateEndpoint, type UserSystemDescriptor, type AnyUserSystemDescriptor, type UserSystemEndpoints, type AnzuUserEndpointPair, type BaseUserEndpointPair, type UserSystemExtraState, type UserSystemManageTarget, AUserTabsShell, OTHER_SYSTEMS_TAB, USER_PROBE_ENTITY, type UserSystemRefreshHook, AUserSystemOverview, };
301
+ export { ACard, AProgress, ARow, AChipNoLink, AAlerts, AActionbar, AActionbarTarget, ALayoutLoader, ALayoutSwitch, actionbarSlot, createTeleportSlot, type TeleportSlot, ABooleanValue, ASystemEntityScope, AFormTextField, AFormTextarea, AFormDatetimePicker, AFormFlagDatetimePicker, AFormRemoteCheckbox, AFormRemoteSwitch, AFormSwitch, AFormValueObjectOptionsSelect, ADatetime, ADatetimePicker, ADatatableConfigButton, ADialogToolbar, ACreateDialog, AJobStatusChip, ACachedChip, ACachedUserChip, AAdminSwitcher, ATimeTrackingFields, Acl, ACopyText, AIconGroup, AUserAndTimeTrackingFields, AActionCloseButtonHistory, AActionCreateButton, AActionDeleteButton, AActionEditButton, AActionSaveAndCloseButton, AActionSaveButton, ATableCopyIdButton, ATableDetailButton, ATableEditButton, ABtnSplit, AThemeSelect, ALanguageSelect, ASystemBar, AAnzuUserAvatar, AAvatarColorPicker, ACurrentUserDropdown, AJobDetailCommon, AJobPriorityChip, AJobBaseCreateForm, ACustomDataForm, ACustomDataFormElement, AImageWidget, AImageWidgetInner, AImageMediaWidget, AImageWidgetSimple, AMediaWidgetSimple, AImageWidgetMultiple, AImageWidgetMultipleInner, AImageWidgetMultipleSimple, AImageMassOperations, AImagePublicInput, ADamAssetImageRoiSelect, ACollabLockedByUser, ACollabManagement, AFileInput, AAssetSelect, AAssetListInner, ABooleanSelect, ADamExtSystemRemoteAutocomplete, ADamExternalProviderAssetSelect, ADamDistributionServiceSelect, ADamAssetLicenceRemoteAutocomplete, ADamAssetLicenceGroupRemoteAutocomplete, ADamAuthorFilterRemoteAutocomplete, ADamKeywordFilterRemoteAutocomplete, ADamUserFilterRemoteAutocomplete, ADamUserRemoteAutocomplete, ADamAdminAssetLink, ALoginView, ALogoutView, AUnauthorizedView, ANotFoundView, AGenericView, useRouteHistory, type NavigateBackOptions, type NavigateBackTarget, type RouteHistoryEntry, handleRecordLoadError, useRecordPage, type UseRecordPageOptions, type UseRecordPageReturn, defineRecordLoader, defineRecordSave, trackNavigation, isNavigationPending, usePageNavigation, type UsePageNavigationReturn, createNavigationErrorHandler, type NavigationErrorHandlerOptions, useRemainingTime, useAlerts, useTheme, defineCached, useCachedItem, Theme, type ThemeType, useLanguageSettings, modifyLanguageSettings, useLoginStatus, generateDatatableMinMaxSelectStrategy, useCustomDataFormElementType, useDamConfigState, useUploadQueueItemFactory, useDamUploadChunkSize, useDamAcceptTypeAndSizeHelper, useAssetSuggestions, destroyDamNotifications, initDamNotifications, useDamNotifications, useDamNotificationsConnection, createUploadSettlement, uploadSettlementRuntime, UPLOAD_POLL_SCHEDULE, useDropzoneGlobalDragState, useDamKeywordFactory, useDamAuthorFactory, useDamAuthorType, useDamDistributionServiceType, useDamAssetLicenceInnerFilter, useImageActions, useCommonAdminImageOptions, defineAuth, useAclAllowed, AuthUnavailableError, type AuthCookieState, createRefreshRequestInterceptor, createRefreshSession, isInCauseChain, type RefreshResult, SessionExpiredError, defineBreadcrumbs, useDamCachedUsers, useUnreleasedFeatures, useDebugFeatures, useSentry, useUserActivity, type GrantType, Grant, useGrant, type GrantOriginType, GrantOrigin, GrantOriginDefault, useGrantOrigin, LogLevel, type LogLevelType, type IntegerId, type IntegerIdNullable, type DocId, type DocIdNullable, type DatetimeUTCNullable, type DatetimeUTC, type DateUTC, type DatetimePickerType, type AnzuUser, type BaseUser, type AnzuUserMinimal, type AnzuUserAndTimeTrackingAware, type ValueObjectOption, type CreatedByAware, type PermissionConfig, type PermissionTranslationGroup, type PermissionGroup, type PermissionGroupMinimal, type VuetifyIconValue, type JobBase, type JobUserDataDelete, JOB_RESOURCE_USER_DATA_DELETE, JobStatus, JobStatusDefault, type JobStatusType, type JobBaseResource, useCommonJobFactory, type AclValue, type AclRegistry, type AclValueOf, type RegisteredAclValue, type Permissions, type PluginOptions, type CommonAdminImageOptions, type CommonAdminCoreDamOptions, type CommonAdminCollabOptions, type LanguageCode, type Immutable, type ResourceNameSystemAware, type ValidationScope, type AFormFieldValidation, type CommonAdminGlobalComponents, type ACreateDialogValidation, type Log, type ApiInfiniteResponseList, type DatatableOrderingOption, type DatatableOrderingOptions, type DatatableSortBy, type SortOrderType, type ObjectLeaves, type UniqueValues, ensureUniqueValues, type CachedItem, type AddToCachedArgs, type CachedUnresolvedReason, type DefineCachedOptions, type RecordWasType, type UrlParams, type AssetSelectReturnData, AssetSelectReturnType, type AssetSelectReturnTypeType, type SortableItemDataAware, type AssetFileProperties, type AssetSearchListItemDto, type AssetDetailItemDto, type AssetMetadataDto, type AssetCustomData, type AssetMetadataSuggestions, AssetFileFailReason, type AssetFileFailReasonType, AssetFileProcessStatus, type AssetFileProcessStatusType, AssetFileLinkType, type AssetFileLinkTypeType, type AssetFile, type AssetFileDocument, type AssetFileVideo, type AssetFileAudio, type AssetFileImage, type AssetFileNullable, type AssetFileLink, type AssetFileLinks, type AssetFileRoute, AssetFileRouteStatus, type AssetFileRouteStatusType, type AssetFileMainRouteAware, type AssetFileDownloadLink, type AssetFileImagePreviewNullable, assetFileIsImageFile, assetFileIsVideoFile, assetFileIsAudioFile, type UploadQueue, type UploadQueueItem, UploadQueueItemStatus, type UploadQueueItemStatusType, UploadQueueItemType, type UploadQueueItemTypeType, type CustomDataAware, type CustomDataValue, type CustomDataFormElement, type CustomDataFormElementAttributes, CustomDataFormElementType, CustomDataFormElementTypeDefault, type CustomDataFormElementTypeType, DamAssetType, DamAssetTypeDefault, type DamAssetTypeType, DamAssetStatus, DamAssetStatusDefault, type DamAssetStatusType, type DamPubConfig, type DamPrvConfig, type DamExtSystemConfig, type DamDistributionServiceName, type DamExtSystemConfigItem, type DamExtSystemConfigItemImage, type DamExternalProviderAssetConfig, type DamExternalProviderAssetName, type DamDistributionConfig, type DamDistributionRequirementsConfig, DamDistributionRequirementStrategy, type DamDistributionRequirementStrategyType, type DamDistributionRequirementsCategorySelectConfig, type DamExtSystemAssetTypeExifMetadata, DamDistributionServiceType, type DamDistributionServiceTypeType, DamDistributionStatus, type DamDistributionStatusType, UserAuthType, type UserAuthTypeType, type DamUploadStartResponse, type DamNotificationNameType, DamNotificationName, type DamNotificationListenerOptions, UploadRowRole, type UploadRowRoleType, type UploadSettlement, type UploadSettlementProfile, type UploadSettlementEvent, type UploadSettlementTarget, type UploadSettlePolicy, type UploadRefreshOutcome, type UploadReadOptions, type UploadSettlementScheduler, type UploadSettlementVisibility, type ImageAware, type ImageCreateUpdateAware, type ImageCreateUpdateAwareKeyed, type UploadMetadataToImageMapFn, type UploadMetadataToImageMapItem, type AssetSelectMetadataToImageMapFn, isImageCreateUpdateAware, type ImageMediaCollabValue, type MediaAware, isMediaAware, type DamMediaFromDam, type DamMedia, DamMediaType, type DamMediaTypeType, type DamAuthor, type DamAuthorMinimal, type DamKeyword, type DamKeywordMinimal, DamAuthorType, type DamAuthorTypeType, type DamExtSystem, type DamExtSystemMinimal, type DamCurrentUserDto, type DamAssetLicence, type DamAssetLicenceMinimal, type DamAssetLicenceGroup, type DamUserUpdateDto, type DamUser, type BreadcrumbItem, type Breadcrumbs, type UploadQueueKey, type DamConfigLicenceExtSystemReturnType, useAnzuUserFactory, usePermissionConfigFactory, usePermissionGroupFactory, cloneDeep, isEmpty, isEmptyObject, isObject, isArray, isFunction, isBoolean, isDocId, isNull, isUndefined, isDefined, isInt, isString, isNumber, objectGetValueByPath, objectSetValueByPath, objectDeletePropertyByPath, objectDeepFreeze, stringToInt, stringToFloat, stringToSlug, stringSplitOnFirstOccurrence, stringToKebabCase, stringIsValidEmail, stringToBooleanExact, DATETIME_MIN, DATETIME_MAX, dateTimeEndOfDay, dateTimeStartOfDay, dateTimeNow, dateTimeFriendly, dateTimePretty, dateModifyMinutes, dateToUtc, dateNow, dateTimeToDate, datePretty, dateUtcPretty, dateUtcToday, timePretty, dateDiff, type DateDiffUnit, prettyBytes, prettyDuration, booleanToInteger, arrayItemToggle, arrayFromArgs, arrayFlatten, type NestedArray, arraysHaveSameElements, browserHistoryReplaceUrlByRouter, eventClickBlur, generateUUIDv1, generateUUIDv4, isOneOf, useJobBaseResource, useJobStatus, fetchDamAssetLicenceListByIds, useFetchDamAssetLicenceList, fetchDamAssetLicenceGroupListByIds, fetchDamExtSystemListByIds, fetchDamUserListByIds, useFetchDamUserList, updateDamUser, fetchDamUser, fetchAssetAndCheckForSingleUseByFileIds, fetchAsset, fetchAssetAsCmsMedia, fetchAssetByFileId, type IdsGroupedByLicences, messagesCs, messagesEn, messagesSk, SystemScopeKey, SubjectScopeKey, HTTP_STATUS_OK, HTTP_STATUS_CREATED, HTTP_STATUS_NO_CONTENT, HTTP_STATUS_BAD_REQUEST, HTTP_STATUS_UNAUTHORIZED, HTTP_STATUS_FORBIDDEN, HTTP_STATUS_NOT_FOUND, HTTP_STATUS_UNPROCESSABLE_ENTITY, ROLE_SUPER_ADMIN, NEW_LINE_MARK, COMMON_CONFIG, SORT_BY_SCORE, SORT_BY_SCORE_BEST, SORT_BY_SCORE_DATE, SORT_BY_ID, SortOrder, ImageWidgetUploadConfigKey, useValidate, useCollabInit, useCommonAdminCollabOptions, useCollabCurrentUserId, useCollabState, useCollabField, useCollabRoom, useCollabHelpers, useCollabAnyDataChange, type CollabGatheringBufferDataEvent, useCollabReconnectEventBus, useCollabGatheringBufferDataEventBus, CollabFieldLockType, type CollabFieldLockTypeType, CollabFieldLockStatus, type CollabFieldLockStatusType, type CollabFieldLockStatusPayload, type CollabUserId, type CollabUserIdNullable, type CollabRoom, CollabStatus, type CollabStatusType, CollabConnectionState, type CollabConnectionStateType, CollabReconnectVerdict, type CollabReconnectVerdictType, type CollabRoomInfo, type CollabRoomsInfo, type CollabFieldDataEnvelope, type CollabFieldData, type CollabFieldName, type CollabFieldLock, type CollabRoomLocks, type CollabRoomData, type CollabRoomPlainData, CollabAccessRoomStatus, type CollabAccessRoomStatusType, CollabChangeRoomLockStatus, type CollabChangeRoomLockStatusType, type CollabFieldLockOptions, CollabRoomJoinStrategy, type CollabRoomJoinStrategyType, type CollabJoinAckOptions, type CollabRoomOptions, CollabRequestToTakeModerationStatus, type CollabRequestToTakeModerationStatusType, CollabRequestToJoinStatus, type CollabRequestToJoinStatusType, type CollabCachedUsersMap, type CollabComponentConfig, COLLAB_FIELD_PREFIX_COMMENT, COLLAB_FIELD_PREFIX_EMBED, useDamConfigStore, useDamConfigStoreOf, type DamConfigStore, useImageStore, type CommonAdminI18n, slovakPluralizationRule, isAnzuApiForbiddenError, axiosErrorResponseIsForbidden, AnzuApiForbiddenError, isAnzuApiResponseCodeError, AnzuApiResponseCodeError, isAnzuApiForbiddenOperationError, axiosErrorResponseHasForbiddenOperationData, AnzuApiForbiddenOperationError, isAnzuApiValidationError, hasAnzuApiValidationErrorSpecific, axiosErrorResponseHasValidationData, AnzuApiValidationError, isAnzuFatalError, AnzuFatalError, isAnzuApiTimeoutError, AnzuApiTimeoutError, AnzuApiCancelledError, isAnzuApiCancelledError, AnzuError, isAnzuError, isAnzuApiAxiosError, AnzuApiAxiosError, type ValidationError, type AnzuApiValidationResponseData, isAnzuApiDependencyExistsError, axiosErrorResponseHasDependencyExistsData, AnzuApiDependencyExistsError, AnzuSystemsCommonAdmin, useCommonVuetifyConfig, createAnzuVuetify, type CreateAnzuVuetifyOptions, loadCommonFonts, getAssetTypeByMimeType, damFileTypeFix, localTimeShiftInSeconds, useSystemBar, AFilterWrapper, AFilterWrapperSidebar, AFilterWrapperSubjectSelect, AFiltersSelected, AFilterBooleanSelect, AFilterInteger, AFilterRemoteAutocomplete, AFilterString, AFilterTimeInterval, AFilterValueObjectOptionsSelect, FilterConfigKey, FilterDataKey, FilterInnerConfigKey, FilterInnerDataKey, ADatatableOrdering, ADatatablePagination, DatatablePaginationKey, AFormRemoteAutocomplete, createFilterRemoteAutocomplete, createRemoteAutocomplete, type CreateRemoteAutocompleteOptions, type RemoteAutocompleteScope, type FilterRemoteAutocompleteComponent, type FilterRemoteAutocompleteProps, type RemoteAutocompleteComponent, type RemoteAutocompleteProps, type RemoteInnerFilter, type RemoteSelectActions, AFormRemoteAutocompleteWithCached, buildFilterHash, createFilter, createFilterStore, isRouterSafeHash, useFilterHelpers, useDatatableList, type FilterHelpersMoreOptions, type FilterConfig, type FilterData, type FilterStoreIdentifier, type MakeFilterOption, type AllowedFilterValues, type FilterField, type FilterType, type FilterVariant, TimeIntervalSpecialOptions, type TimeIntervalToolsValue, type TimeIntervalSpecialOptionsType, type Pagination, useApiFetchByIds, useApiFetchItems, useApiFetchList, useApiCommand, useApiRequest, defineApiClient, startWithEnvConfig, checkForNewVersion, requestAppReload, RELOAD_VETO_GRACE, skipUrlPrefixes, type ApiClientSetup, type ApiClientRequestInterceptor, type ApiClientResponseInterceptor, type UseApiRequestParams, type ExecuteRequestParams, type UseApiRequestReturnType, type UseApiFetchListParams, type FetchListParams, type UseApiFetchListReturnType, type UseApiFetchByIdsParams, type FetchByIdsParams, type UseApiFetchByIdsReturnType, type UseApiFetchItemsParams, type FetchItemsParams, type ItemsShape, type UseApiFetchItemsReturnType, type UseApiFetchListBatchParams, type FetchListBatchParams, type UseApiFetchListBatchReturnType, defaultApiErrorLogger, apiErrorStatus, apiErrorIsReported, setApiErrorLogger, type ApiErrorContext, type ApiErrorLogger, useApiFetchListBatch, useApiQueryBuilder, generateListQuery, usePagination, createDatatableColumnsConfig, useSubjectSelect, ASubjectSelect, AListEditor, ASortableListEditor, ANestedSortableListEditor, AUnsavedConfirmDialog, useUnsavedChangesGuard, useUnsavedSection, type UnsavedSectionDescriptor, type UnsavedSectionSource, useListEditorController, type ListEditorHandle, type ExposedListEditorHandle, type UseListEditorControllerOptions, type ListEditorChanges, type ListEditorValidationResult, type GetKey, type PositionOption, type PositionStrategy, type PositionAction, renumberPositions, sortByPosition, sortByPositionDeep, type RenumberPositionsOptions, nextListEditorTempId, type NestedViewItem, useNestedListEditorController, type NestedListEditorHandle, type ExposedNestedListEditorHandle, type ExposedNestedSortableListEditorHandle, type NestedSortableListEditorExtras, type UseNestedListEditorControllerOptions, type NestedListEditorChanges, type ListEditorKey, type ListEditorValidationState, type ListViewItem, type NestedPositionHint, type NestedTree, type NestedTreeNode, type PositionHint, useJobApi, type AxiosClientFn, useUserAdminConfigApi, type UserAdminConfig, UserAdminConfigType, type UserAdminConfigTypeType, UserAdminConfigLayoutType, type UserAdminConfigLayoutTypeType, type UserAdminConfigDataFilterBookmark, type UserAdminConfigDataPinnedWidgets, useUserAdminConfigFactory, ALogListView, ALogDetailView, LogType, LogTypeDefault, type LogTypeType, isLogType, DEFAULT_LOG_PATHS, type LogPaths, type LogTimeWindow, APermissionGroupDatatable, APermissionGroupDetail, APermissionGroupManage, usePermissionGroupActions, type PermissionGroupActionsParams, AAnzuUserDatatable, AAnzuUserForm, AUserCopyPermissionsDialog, useAnzuUserActions, type AnzuUserActionsParams, defineUserSystemDescriptor, descriptorMayWrite, type UserSystemWriteAction, resolveProbeEndpoint, resolveMetadataWrite, resolveEnabledWrite, resolveCreateEndpoint, type UserSystemDescriptor, type AnyUserSystemDescriptor, type UserSystemEndpoints, type AnzuUserEndpointPair, type BaseUserEndpointPair, type UserSystemExtraState, type UserSystemManageTarget, AUserTabsShell, OTHER_SYSTEMS_TAB, USER_PROBE_ENTITY, type UserSystemRefreshHook, AUserSystemOverview, };
302
302
  export { createCachedChip } from './domains/cached/composables/createCachedChip';
303
303
  export type { CreateCachedChipOptions } from './domains/cached/composables/createCachedChip';
304
304
  export { createUserAndTimeTrackingFields } from './domains/cached/composables/createUserAndTimeTrackingFields';
@@ -143,9 +143,9 @@ export interface CreateAnzuVuetifyOptions {
143
143
  defaults?: VuetifyOptions['defaults'];
144
144
  }
145
145
  /**
146
- * The Vuetify instance every admin created in its own `vuetify.ts`, identical in all six: the common
147
- * aliases, theme and defaults, texts through the admin's i18n, the `Intersect` directive. The stylesheets
148
- * (`vuetify/styles`, the icon font) stay imported by the admin, where their order is decided.
146
+ * The Vuetify instance shared by all admins: common aliases, theme and
147
+ * defaults, texts through the admin's i18n, and the `Intersect` directive.
148
+ * The stylesheets (`vuetify/styles`, the icon font) stay imported by the admin, which decides their order.
149
149
  */
150
150
  export declare function createAnzuVuetify({ i18n, defaults }: CreateAnzuVuetifyOptions): {
151
151
  install: (app: import('vue').App) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"commonVuetifyConfig.js","names":["useCommonVuetifyConfig","VBtn","createAnzuVuetify","createVuetify","commonAliases","createVueI18nAdapter","commonTheme","commonDefaults","defaults"],"sources":["../../src/plugins/commonVuetifyConfig.ts"],"sourcesContent":["import { type I18n, useI18n } from 'vue-i18n'\nimport { createVuetify, type VuetifyOptions } from 'vuetify'\nimport { VBtn } from 'vuetify/components'\nimport { Intersect } from 'vuetify/directives'\nimport { createVueI18nAdapter } from 'vuetify/locale/adapters/vue-i18n'\n\nexport const useCommonVuetifyConfig = () => {\n const commonTheme = () => {\n return {\n defaultTheme: 'light',\n variations: {\n colors: [],\n lighten: 0,\n darken: 0,\n },\n themes: {\n light: {\n dark: false,\n colors: {\n background: '#ffffff',\n surface: '#ffffff',\n 'on-surface': '#333333',\n primary: '#3f6ad8',\n 'on-primary': '#ffffff',\n secondary: '#e0e0e0',\n 'on-secondary': '#333333',\n success: '#3ac47d',\n 'on-success': '#ffffff',\n warning: '#fb8c00',\n 'on-warning': '#ffffff',\n error: '#d92550',\n 'on-error': '#ffffff',\n info: '#78c3fb',\n 'on-info': '#333333',\n },\n variables: {},\n },\n dark: {\n dark: true,\n colors: {\n background: '#1a1a1a',\n 'on-background': '#ffffff',\n surface: '#1a1a1a',\n 'on-surface': '#ffffff',\n primary: '#3f6ad8',\n 'on-primary': '#ffffff',\n secondary: '#e0e0e0',\n 'on-secondary': '#333333',\n success: '#3ac47d',\n 'on-success': '#ffffff',\n warning: '#fb8c00',\n 'on-warning': '#ffffff',\n error: '#d92550',\n 'on-error': '#ffffff',\n info: '#78c3fb',\n 'on-info': '#333333',\n },\n variables: {},\n },\n },\n }\n }\n\n const commonDefaults = () => {\n // No input can hover (a touch screen): a tap emulates the hover and focus a tooltip opens on, and nothing\n // ever ends them, so the tooltip stayed open. There it opens neither way.\n const touchOnly = typeof window !== 'undefined' && !!window.matchMedia?.('(any-hover: none)').matches\n return {\n global: {},\n VTooltip: touchOnly ? { openOnHover: false, openOnFocus: false } : {},\n VTextField: {\n variant: 'underlined',\n density: 'compact',\n color: 'primary',\n },\n VTextarea: {\n variant: 'underlined',\n density: 'compact',\n color: 'primary',\n },\n VSelect: {\n variant: 'underlined',\n density: 'compact',\n color: 'primary',\n },\n VAutocomplete: {\n variant: 'underlined',\n density: 'compact',\n color: 'primary',\n clearOnSelect: true,\n },\n VCombobox: {\n variant: 'underlined',\n density: 'compact',\n color: 'primary',\n },\n VNumberInput: {\n variant: 'underlined',\n density: 'compact',\n color: 'primary',\n },\n VSwitch: {\n color: 'success',\n density: 'compact',\n },\n VCard: {\n variant: 'flat',\n },\n VDialog: {\n noClickAnimation: true,\n persistent: true,\n scrollable: true,\n },\n VProgressCircular: {\n color: 'primary',\n },\n VBtn: {\n variant: 'flat',\n },\n ABtnPrimary: {\n variant: 'flat',\n color: 'primary',\n },\n ABtnSecondary: {\n variant: 'outlined',\n color: 'primary',\n },\n ABtnTertiary: {\n variant: 'text',\n color: 'primary',\n },\n ABtnIcon: {\n variant: 'text',\n icon: true,\n },\n }\n }\n\n const commonAliases = () => {\n return {\n ABtnPrimary: VBtn as any,\n ABtnSecondary: VBtn as any,\n ABtnTertiary: VBtn as any,\n ABtnIcon: VBtn as any,\n }\n }\n\n return {\n commonAliases,\n commonDefaults,\n commonTheme,\n }\n}\n\nexport interface CreateAnzuVuetifyOptions {\n /** The admin's vue-i18n instance, in composition mode: Vuetify's own texts are translated through it. */\n i18n: I18n<any, any, any, string, false>\n /** Merged over the common defaults per component, the way admin-ugc sets `VDataTableServer`. */\n defaults?: VuetifyOptions['defaults']\n}\n\n/**\n * The Vuetify instance every admin created in its own `vuetify.ts`, identical in all six: the common\n * aliases, theme and defaults, texts through the admin's i18n, the `Intersect` directive. The stylesheets\n * (`vuetify/styles`, the icon font) stay imported by the admin, where their order is decided.\n */\nexport function createAnzuVuetify({ i18n, defaults }: CreateAnzuVuetifyOptions) {\n const { commonTheme, commonAliases, commonDefaults } = useCommonVuetifyConfig()\n return createVuetify({\n aliases: commonAliases(),\n locale: {\n adapter: createVueI18nAdapter({ i18n, useI18n }),\n },\n directives: { Intersect },\n theme: commonTheme(),\n defaults: { ...commonDefaults(), ...defaults },\n })\n}\n"],"mappings":";;;;;;AAMA,IAAaA,WA6IJ;CACL,sBATO;EACL,aAAaC;EACb,eAAeA;EACf,cAAcA;EACd,UAAUA;CACZ;CAKA,uBAlFO;EACL,QAAQ,CAAC;EACT,UAHgB,OAAO,SAAW,OAAiB,OAAO,aAAa,mBAAmB,CAAC,CAAC,UAGtE;GAAE,aAAa;GAAO,aAAa;EAAM,IAAI,CAAC;EACpE,YAAY;GACV,SAAS;GACT,SAAS;GACT,OAAO;EACT;EACA,WAAW;GACT,SAAS;GACT,SAAS;GACT,OAAO;EACT;EACA,SAAS;GACP,SAAS;GACT,SAAS;GACT,OAAO;EACT;EACA,eAAe;GACb,SAAS;GACT,SAAS;GACT,OAAO;GACP,eAAe;EACjB;EACA,WAAW;GACT,SAAS;GACT,SAAS;GACT,OAAO;EACT;EACA,cAAc;GACZ,SAAS;GACT,SAAS;GACT,OAAO;EACT;EACA,SAAS;GACP,OAAO;GACP,SAAS;EACX;EACA,OAAO,EACL,SAAS,OACX;EACA,SAAS;GACP,kBAAkB;GAClB,YAAY;GACZ,YAAY;EACd;EACA,mBAAmB,EACjB,OAAO,UACT;EACA,MAAM,EACJ,SAAS,OACX;EACA,aAAa;GACX,SAAS;GACT,OAAO;EACT;EACA,eAAe;GACb,SAAS;GACT,OAAO;EACT;EACA,cAAc;GACZ,SAAS;GACT,OAAO;EACT;EACA,UAAU;GACR,SAAS;GACT,MAAM;EACR;CACF;CAeA,oBA9IO;EACL,cAAc;EACd,YAAY;GACV,QAAQ,CAAC;GACT,SAAS;GACT,QAAQ;EACV;EACA,QAAQ;GACN,OAAO;IACL,MAAM;IACN,QAAQ;KACN,YAAY;KACZ,SAAS;KACT,cAAc;KACd,SAAS;KACT,cAAc;KACd,WAAW;KACX,gBAAgB;KAChB,SAAS;KACT,cAAc;KACd,SAAS;KACT,cAAc;KACd,OAAO;KACP,YAAY;KACZ,MAAM;KACN,WAAW;IACb;IACA,WAAW,CAAC;GACd;GACA,MAAM;IACJ,MAAM;IACN,QAAQ;KACN,YAAY;KACZ,iBAAiB;KACjB,SAAS;KACT,cAAc;KACd,SAAS;KACT,cAAc;KACd,WAAW;KACX,gBAAgB;KAChB,SAAS;KACT,cAAc;KACd,SAAS;KACT,cAAc;KACd,OAAO;KACP,YAAY;KACZ,MAAM;KACN,WAAW;IACb;IACA,WAAW,CAAC;GACd;EACF;CACF;AA2FF;AAeF,SAAgBC,EAAkB,EAAE,SAAM,eAAsC;CAC9E,IAAM,EAAE,gBAAa,kBAAe,sBAAmBF,EAAuB;CAC9E,OAAOG,EAAc;EACnB,SAASC,EAAc;EACvB,QAAQ,EACN,SAASC,EAAqB;GAAE;GAAM;EAAQ,CAAC,EACjD;EACA,YAAY,EAAE,aAAU;EACxB,OAAOC,EAAY;EACnB,UAAU;GAAE,GAAGC,EAAe;GAAG,GAAGC;EAAS;CAC/C,CAAC;AACH"}
1
+ {"version":3,"file":"commonVuetifyConfig.js","names":["useCommonVuetifyConfig","VBtn","createAnzuVuetify","createVuetify","commonAliases","createVueI18nAdapter","commonTheme","commonDefaults","defaults"],"sources":["../../src/plugins/commonVuetifyConfig.ts"],"sourcesContent":["import { type I18n, useI18n } from 'vue-i18n'\nimport { createVuetify, type VuetifyOptions } from 'vuetify'\nimport { VBtn } from 'vuetify/components'\nimport { Intersect } from 'vuetify/directives'\nimport { createVueI18nAdapter } from 'vuetify/locale/adapters/vue-i18n'\n\nexport const useCommonVuetifyConfig = () => {\n const commonTheme = () => {\n return {\n defaultTheme: 'light',\n variations: {\n colors: [],\n lighten: 0,\n darken: 0,\n },\n themes: {\n light: {\n dark: false,\n colors: {\n background: '#ffffff',\n surface: '#ffffff',\n 'on-surface': '#333333',\n primary: '#3f6ad8',\n 'on-primary': '#ffffff',\n secondary: '#e0e0e0',\n 'on-secondary': '#333333',\n success: '#3ac47d',\n 'on-success': '#ffffff',\n warning: '#fb8c00',\n 'on-warning': '#ffffff',\n error: '#d92550',\n 'on-error': '#ffffff',\n info: '#78c3fb',\n 'on-info': '#333333',\n },\n variables: {},\n },\n dark: {\n dark: true,\n colors: {\n background: '#1a1a1a',\n 'on-background': '#ffffff',\n surface: '#1a1a1a',\n 'on-surface': '#ffffff',\n primary: '#3f6ad8',\n 'on-primary': '#ffffff',\n secondary: '#e0e0e0',\n 'on-secondary': '#333333',\n success: '#3ac47d',\n 'on-success': '#ffffff',\n warning: '#fb8c00',\n 'on-warning': '#ffffff',\n error: '#d92550',\n 'on-error': '#ffffff',\n info: '#78c3fb',\n 'on-info': '#333333',\n },\n variables: {},\n },\n },\n }\n }\n\n const commonDefaults = () => {\n // On touch-only screens a tap emulates hover and focus, and nothing\n // ends them, so tooltips stayed open. There tooltips open on neither.\n const touchOnly = typeof window !== 'undefined' && !!window.matchMedia?.('(any-hover: none)').matches\n return {\n global: {},\n VTooltip: touchOnly ? { openOnHover: false, openOnFocus: false } : {},\n VTextField: {\n variant: 'underlined',\n density: 'compact',\n color: 'primary',\n },\n VTextarea: {\n variant: 'underlined',\n density: 'compact',\n color: 'primary',\n },\n VSelect: {\n variant: 'underlined',\n density: 'compact',\n color: 'primary',\n },\n VAutocomplete: {\n variant: 'underlined',\n density: 'compact',\n color: 'primary',\n clearOnSelect: true,\n },\n VCombobox: {\n variant: 'underlined',\n density: 'compact',\n color: 'primary',\n },\n VNumberInput: {\n variant: 'underlined',\n density: 'compact',\n color: 'primary',\n },\n VSwitch: {\n color: 'success',\n density: 'compact',\n },\n VCard: {\n variant: 'flat',\n },\n VDialog: {\n noClickAnimation: true,\n persistent: true,\n scrollable: true,\n },\n VProgressCircular: {\n color: 'primary',\n },\n VBtn: {\n variant: 'flat',\n },\n ABtnPrimary: {\n variant: 'flat',\n color: 'primary',\n },\n ABtnSecondary: {\n variant: 'outlined',\n color: 'primary',\n },\n ABtnTertiary: {\n variant: 'text',\n color: 'primary',\n },\n ABtnIcon: {\n variant: 'text',\n icon: true,\n },\n }\n }\n\n const commonAliases = () => {\n return {\n ABtnPrimary: VBtn as any,\n ABtnSecondary: VBtn as any,\n ABtnTertiary: VBtn as any,\n ABtnIcon: VBtn as any,\n }\n }\n\n return {\n commonAliases,\n commonDefaults,\n commonTheme,\n }\n}\n\nexport interface CreateAnzuVuetifyOptions {\n /** The admin's vue-i18n instance, in composition mode: Vuetify's own texts are translated through it. */\n i18n: I18n<any, any, any, string, false>\n /** Merged over the common defaults per component, the way admin-ugc sets `VDataTableServer`. */\n defaults?: VuetifyOptions['defaults']\n}\n\n/**\n * The Vuetify instance shared by all admins: common aliases, theme and\n * defaults, texts through the admin's i18n, and the `Intersect` directive.\n * The stylesheets (`vuetify/styles`, the icon font) stay imported by the admin, which decides their order.\n */\nexport function createAnzuVuetify({ i18n, defaults }: CreateAnzuVuetifyOptions) {\n const { commonTheme, commonAliases, commonDefaults } = useCommonVuetifyConfig()\n return createVuetify({\n aliases: commonAliases(),\n locale: {\n adapter: createVueI18nAdapter({ i18n, useI18n }),\n },\n directives: { Intersect },\n theme: commonTheme(),\n defaults: { ...commonDefaults(), ...defaults },\n })\n}\n"],"mappings":";;;;;;AAMA,IAAaA,WA6IJ;CACL,sBATO;EACL,aAAaC;EACb,eAAeA;EACf,cAAcA;EACd,UAAUA;CACZ;CAKA,uBAlFO;EACL,QAAQ,CAAC;EACT,UAHgB,OAAO,SAAW,OAAiB,OAAO,aAAa,mBAAmB,CAAC,CAAC,UAGtE;GAAE,aAAa;GAAO,aAAa;EAAM,IAAI,CAAC;EACpE,YAAY;GACV,SAAS;GACT,SAAS;GACT,OAAO;EACT;EACA,WAAW;GACT,SAAS;GACT,SAAS;GACT,OAAO;EACT;EACA,SAAS;GACP,SAAS;GACT,SAAS;GACT,OAAO;EACT;EACA,eAAe;GACb,SAAS;GACT,SAAS;GACT,OAAO;GACP,eAAe;EACjB;EACA,WAAW;GACT,SAAS;GACT,SAAS;GACT,OAAO;EACT;EACA,cAAc;GACZ,SAAS;GACT,SAAS;GACT,OAAO;EACT;EACA,SAAS;GACP,OAAO;GACP,SAAS;EACX;EACA,OAAO,EACL,SAAS,OACX;EACA,SAAS;GACP,kBAAkB;GAClB,YAAY;GACZ,YAAY;EACd;EACA,mBAAmB,EACjB,OAAO,UACT;EACA,MAAM,EACJ,SAAS,OACX;EACA,aAAa;GACX,SAAS;GACT,OAAO;EACT;EACA,eAAe;GACb,SAAS;GACT,OAAO;EACT;EACA,cAAc;GACZ,SAAS;GACT,OAAO;EACT;EACA,UAAU;GACR,SAAS;GACT,MAAM;EACR;CACF;CAeA,oBA9IO;EACL,cAAc;EACd,YAAY;GACV,QAAQ,CAAC;GACT,SAAS;GACT,QAAQ;EACV;EACA,QAAQ;GACN,OAAO;IACL,MAAM;IACN,QAAQ;KACN,YAAY;KACZ,SAAS;KACT,cAAc;KACd,SAAS;KACT,cAAc;KACd,WAAW;KACX,gBAAgB;KAChB,SAAS;KACT,cAAc;KACd,SAAS;KACT,cAAc;KACd,OAAO;KACP,YAAY;KACZ,MAAM;KACN,WAAW;IACb;IACA,WAAW,CAAC;GACd;GACA,MAAM;IACJ,MAAM;IACN,QAAQ;KACN,YAAY;KACZ,iBAAiB;KACjB,SAAS;KACT,cAAc;KACd,SAAS;KACT,cAAc;KACd,WAAW;KACX,gBAAgB;KAChB,SAAS;KACT,cAAc;KACd,SAAS;KACT,cAAc;KACd,OAAO;KACP,YAAY;KACZ,MAAM;KACN,WAAW;IACb;IACA,WAAW,CAAC;GACd;EACF;CACF;AA2FF;AAeF,SAAgBC,EAAkB,EAAE,SAAM,eAAsC;CAC9E,IAAM,EAAE,gBAAa,kBAAe,sBAAmBF,EAAuB;CAC9E,OAAOG,EAAc;EACnB,SAASC,EAAc;EACvB,QAAQ,EACN,SAASC,EAAqB;GAAE;GAAM;EAAQ,CAAC,EACjD;EACA,YAAY,EAAE,aAAU;EACxB,OAAOC,EAAY;EACnB,UAAU;GAAE,GAAGC,EAAe;GAAG,GAAGC;EAAS;CAC/C,CAAC;AACH"}
@@ -1289,11 +1289,10 @@ export type CommonAdminI18n = I18n<any, any, any, string, false>;
1289
1289
  /** Takes the admin's instance (the plugin's `i18n` option); the library translates through it from then on. */
1290
1290
  export declare const setCommonAdminI18n: (instance: CommonAdminI18n) => void;
1291
1291
  /**
1292
- * The instance the library translates through: the admin's own, once the plugin has it. Before that --
1293
- * the library's tests and playground -- the library's instance above.
1294
- *
1295
- * Read when a text is translated, not when a module loads: a validator or an alert module imported
1296
- * before the plugin is installed would otherwise keep the wrong instance for good.
1292
+ * The instance the library translates through: the admin's own once
1293
+ * the plugin has it, otherwise the library's (tests and playground).
1294
+ * Read at translation time, not at module load. A module imported before
1295
+ * the plugin is installed would otherwise keep the wrong instance.
1297
1296
  */
1298
1297
  export declare const commonI18n: () => CommonAdminI18n;
1299
1298
  type Translate = (key: string, ...args: unknown[]) => string;
@@ -1 +1 @@
1
- {"version":3,"file":"i18n.js","names":["REQUIRED_LOCALES","slovakPluralizationRule","choicesLength","choice","i18n","createI18n","locale","key","installed","setCommonAdminI18n","instance","commonI18n","commonT","args","commonTe"],"sources":["../../src/plugins/i18n.ts"],"sourcesContent":["import type { I18n, Locale, Path } from 'vue-i18n'\nimport { createI18n } from 'vue-i18n'\nimport type en from '@/locales/en'\n\nexport type MessageSchema = typeof en\n\nconst REQUIRED_LOCALES = ['en', 'sk']\n\n/**\n * Custom Slovak Pluralization Rule.\n *\n * Automatically detects the format of the translation string based on the number\n * of pipe-separated choices (`choicesLength`) and returns the correct index.\n *\n * Case A: 4 choices (Extended format with explicit 0 support)\n * Structure: \"0 items | 1 item | 2-4 items | 5+ items\"\n * - 0 -> Index 0\n * - 1 -> Index 1\n * - 2-4 -> Index 2\n * - 5+ -> Index 3\n *\n * Case B: 3 choices (Starndard Slovak format)\n * Structure: \"1 item | 2-4 items | 5+ items\"\n * - 1 -> Index 0\n * - 2-4 -> Index 1\n * - 5+ -> Index 2 (Includes 0)\n *\n * Case C: 2 choices or fewer (Fallback)\n * - 1 -> Index 0\n * - Other-> Index 1\n */\nexport const slovakPluralizationRule = (choice: number, choicesLength: number) => {\n if (choicesLength === 4) {\n if (choice === 0) return 0\n if (choice === 1) return 1\n if (choice >= 2 && choice <= 4) return 2\n return 3\n }\n if (choicesLength === 3) {\n if (choice === 1) return 0\n if (choice >= 2 && choice <= 4) return 1\n return 2\n }\n return choice === 1 ? 0 : 1\n}\n\nexport const i18n = createI18n<[MessageSchema], string, false>({\n globalInjection: false,\n legacy: false,\n locale: REQUIRED_LOCALES[0],\n fallbackLocale: false,\n pluralRules: {\n sk: slovakPluralizationRule,\n // Czech shares the Slovak plural categories (one / 2-4 / other), and without\n // a rule the default would pick zero|one|other: \"1 nepotvrzené změny\".\n cs: slovakPluralizationRule,\n },\n missing: (locale: Locale, key: Path) => {\n if (REQUIRED_LOCALES.includes(locale) && !key.startsWith('system.subject.')) {\n console.warn(`Missing ${locale} translation: ${key}`)\n }\n },\n})\n\n/** The admin's instance as the plugin takes it: composition mode (`legacy: false`), any message schema. */\n// oxlint-disable-next-line typescript/no-explicit-any -- the admin's own message schema\nexport type CommonAdminI18n = I18n<any, any, any, string, false>\n\nlet installed: CommonAdminI18n | undefined\n\n/** Takes the admin's instance (the plugin's `i18n` option); the library translates through it from then on. */\nexport const setCommonAdminI18n = (instance: CommonAdminI18n): void => {\n installed = instance\n}\n\n/**\n * The instance the library translates through: the admin's own, once the plugin has it. Before that --\n * the library's tests and playground -- the library's instance above.\n *\n * Read when a text is translated, not when a module loads: a validator or an alert module imported\n * before the plugin is installed would otherwise keep the wrong instance for good.\n */\nexport const commonI18n = (): CommonAdminI18n => installed ?? (i18n as unknown as CommonAdminI18n)\n\ntype Translate = (key: string, ...args: unknown[]) => string\n\n/** `t` of `commonI18n()`, resolved on every call. */\nexport const commonT: Translate = (key, ...args) => (commonI18n().global.t as unknown as Translate)(key, ...args)\n\n/** `te` of `commonI18n()`, resolved on every call. */\nexport const commonTe = (key: string, locale?: string): boolean =>\n (commonI18n().global.te as (key: string, locale?: string) => boolean)(key, locale)\n"],"mappings":";;AAMA,IAAMA,IAAmB,CAAC,MAAM,IAAI,GAyBvBC,KAA2B,GAAgB,MAClDC,MAAkB,IAChBC,MAAW,IAAU,IACrBA,MAAW,IAAU,IACrBA,KAAU,KAAKA,KAAU,IAAU,IAChC,IAELD,MAAkB,IAChBC,MAAW,IAAU,IACrBA,KAAU,KAAKA,KAAU,IAAU,IAChC,IAEFA,MAAW,IAAI,IAAI,GAGfC,IAAOC,EAA2C;CAC7D,iBAAiB;CACjB,QAAQ;CACR,QAAQL,EAAiB;CACzB,gBAAgB;CAChB,aAAa;EACX,IAAIC;EAGJ,IAAIA;CACN;CACA,UAAU,GAAgB,MAAc;EACtC,AAAID,EAAiB,SAASM,CAAM,KAAK,CAACC,EAAI,WAAW,iBAAiB,KACxE,QAAQ,KAAK,WAAWD,EAAO,gBAAgBC,GAAK;CAExD;AACF,CAAC,GAMGC,GAGSC,KAAsB,MAAoC;CACrE,IAAYC;AACd,GASaC,UAAoCH,KAAcJ,GAKlDQ,KAAsB,GAAK,GAAGC,MAAUF,EAAW,CAAC,CAAC,OAAO,EAA2BJ,GAAK,GAAGM,CAAI,GAGnGC,KAAY,GAAa,MACnCH,EAAW,CAAC,CAAC,OAAO,GAAiDJ,GAAKD,CAAM"}
1
+ {"version":3,"file":"i18n.js","names":["REQUIRED_LOCALES","slovakPluralizationRule","choicesLength","choice","i18n","createI18n","locale","key","installed","setCommonAdminI18n","instance","commonI18n","commonT","args","commonTe"],"sources":["../../src/plugins/i18n.ts"],"sourcesContent":["import type { I18n, Locale, Path } from 'vue-i18n'\nimport { createI18n } from 'vue-i18n'\nimport type en from '@/locales/en'\n\nexport type MessageSchema = typeof en\n\nconst REQUIRED_LOCALES = ['en', 'sk']\n\n/**\n * Custom Slovak Pluralization Rule.\n *\n * Automatically detects the format of the translation string based on the number\n * of pipe-separated choices (`choicesLength`) and returns the correct index.\n *\n * Case A: 4 choices (Extended format with explicit 0 support)\n * Structure: \"0 items | 1 item | 2-4 items | 5+ items\"\n * - 0 -> Index 0\n * - 1 -> Index 1\n * - 2-4 -> Index 2\n * - 5+ -> Index 3\n *\n * Case B: 3 choices (Starndard Slovak format)\n * Structure: \"1 item | 2-4 items | 5+ items\"\n * - 1 -> Index 0\n * - 2-4 -> Index 1\n * - 5+ -> Index 2 (Includes 0)\n *\n * Case C: 2 choices or fewer (Fallback)\n * - 1 -> Index 0\n * - Other-> Index 1\n */\nexport const slovakPluralizationRule = (choice: number, choicesLength: number) => {\n if (choicesLength === 4) {\n if (choice === 0) return 0\n if (choice === 1) return 1\n if (choice >= 2 && choice <= 4) return 2\n return 3\n }\n if (choicesLength === 3) {\n if (choice === 1) return 0\n if (choice >= 2 && choice <= 4) return 1\n return 2\n }\n return choice === 1 ? 0 : 1\n}\n\nexport const i18n = createI18n<[MessageSchema], string, false>({\n globalInjection: false,\n legacy: false,\n locale: REQUIRED_LOCALES[0],\n fallbackLocale: false,\n pluralRules: {\n sk: slovakPluralizationRule,\n // Czech shares the Slovak plural categories (one / 2-4 / other), and without\n // a rule the default would pick zero|one|other: \"1 nepotvrzené změny\".\n cs: slovakPluralizationRule,\n },\n missing: (locale: Locale, key: Path) => {\n if (REQUIRED_LOCALES.includes(locale) && !key.startsWith('system.subject.')) {\n console.warn(`Missing ${locale} translation: ${key}`)\n }\n },\n})\n\n/** The admin's instance as the plugin takes it: composition mode (`legacy: false`), any message schema. */\n// oxlint-disable-next-line typescript/no-explicit-any -- the admin's own message schema\nexport type CommonAdminI18n = I18n<any, any, any, string, false>\n\nlet installed: CommonAdminI18n | undefined\n\n/** Takes the admin's instance (the plugin's `i18n` option); the library translates through it from then on. */\nexport const setCommonAdminI18n = (instance: CommonAdminI18n): void => {\n installed = instance\n}\n\n/**\n * The instance the library translates through: the admin's own once\n * the plugin has it, otherwise the library's (tests and playground).\n * Read at translation time, not at module load. A module imported before\n * the plugin is installed would otherwise keep the wrong instance.\n */\nexport const commonI18n = (): CommonAdminI18n => installed ?? (i18n as unknown as CommonAdminI18n)\n\ntype Translate = (key: string, ...args: unknown[]) => string\n\n/** `t` of `commonI18n()`, resolved on every call. */\nexport const commonT: Translate = (key, ...args) => (commonI18n().global.t as unknown as Translate)(key, ...args)\n\n/** `te` of `commonI18n()`, resolved on every call. */\nexport const commonTe = (key: string, locale?: string): boolean =>\n (commonI18n().global.te as (key: string, locale?: string) => boolean)(key, locale)\n"],"mappings":";;AAMA,IAAMA,IAAmB,CAAC,MAAM,IAAI,GAyBvBC,KAA2B,GAAgB,MAClDC,MAAkB,IAChBC,MAAW,IAAU,IACrBA,MAAW,IAAU,IACrBA,KAAU,KAAKA,KAAU,IAAU,IAChC,IAELD,MAAkB,IAChBC,MAAW,IAAU,IACrBA,KAAU,KAAKA,KAAU,IAAU,IAChC,IAEFA,MAAW,IAAI,IAAI,GAGfC,IAAOC,EAA2C;CAC7D,iBAAiB;CACjB,QAAQ;CACR,QAAQL,EAAiB;CACzB,gBAAgB;CAChB,aAAa;EACX,IAAIC;EAGJ,IAAIA;CACN;CACA,UAAU,GAAgB,MAAc;EACtC,AAAID,EAAiB,SAASM,CAAM,KAAK,CAACC,EAAI,WAAW,iBAAiB,KACxE,QAAQ,KAAK,WAAWD,EAAO,gBAAgBC,GAAK;CAExD;AACF,CAAC,GAMGC,GAGSC,KAAsB,MAAoC;CACrE,IAAYC;AACd,GAQaC,UAAoCH,KAAcJ,GAKlDQ,KAAsB,GAAK,GAAGC,MAAUF,EAAW,CAAC,CAAC,OAAO,EAA2BJ,GAAK,GAAGM,CAAI,GAGnGC,KAAY,GAAa,MACnCH,EAAW,CAAC,CAAC,OAAO,GAAiDJ,GAAKD,CAAM"}
@@ -34,12 +34,14 @@ export declare const coreDamOptions: import('vue').Ref<{
34
34
  export declare const collabOptions: import('vue').Ref<{
35
35
  enabled: boolean;
36
36
  socketUrl: string;
37
- beforeReconnect: () => Promise<void>;
37
+ beforeReconnect: () => Promise<void | import('../lib').CollabReconnectVerdictType>;
38
+ isSameIdentity?: (() => boolean | undefined) | undefined;
38
39
  io: typeof import('socket.io-client').io | undefined;
39
40
  }, CommonAdminCollabOptions | {
40
41
  enabled: boolean;
41
42
  socketUrl: string;
42
- beforeReconnect: () => Promise<void>;
43
+ beforeReconnect: () => Promise<void | import('../lib').CollabReconnectVerdictType>;
44
+ isSameIdentity?: (() => boolean | undefined) | undefined;
43
45
  io: typeof import('socket.io-client').io | undefined;
44
46
  }>;
45
47
  export declare function initCommonAdminImageOptions(data: CommonAdminImageOptions): void;