@anzusystems/common-admin 2.0.0-rc.1 → 2.0.0-rc.3

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 (901) hide show
  1. package/dist/AnzuSystemsCommonAdmin.js +1 -2
  2. package/dist/_virtual/_plugin-vue_export-helper.js +1 -2
  3. package/dist/_virtual/_rolldown/runtime.js +1 -2
  4. package/dist/assets/dam-meta-icons/2k.js +1 -2
  5. package/dist/assets/dam-meta-icons/4k.js +1 -2
  6. package/dist/assets/dam-meta-icons/8k.js +1 -2
  7. package/dist/assets/dam-meta-icons/fhd.js +1 -2
  8. package/dist/assets/dam-meta-icons/low.js +1 -2
  9. package/dist/assets/dam-meta-icons/qhd.js +1 -2
  10. package/dist/assets/dam-meta-icons/rss.js +1 -2
  11. package/dist/assets/dam-meta-icons/slot.js +1 -2
  12. package/dist/assets/dam-meta-icons/tts.js +1 -2
  13. package/dist/assets/image/placeholder16x9.js +1 -2
  14. package/dist/common-admin.js +188 -187
  15. package/dist/domains/anzuUser/api/anzuUserApi.js +1 -2
  16. package/dist/domains/anzuUser/components/AAnzuUserDatatable.js +1 -2
  17. package/dist/domains/anzuUser/components/AAnzuUserDatatable.vue_vue_type_script_setup_true_lang.js +1 -2
  18. package/dist/domains/anzuUser/components/AAnzuUserFilter.js +1 -2
  19. package/dist/domains/anzuUser/components/AAnzuUserFilter.vue_vue_type_script_setup_true_lang.js +1 -2
  20. package/dist/domains/anzuUser/components/AAnzuUserForm.js +1 -2
  21. package/dist/domains/anzuUser/components/AAnzuUserForm.vue_vue_type_script_setup_true_lang.js +1 -2
  22. package/dist/domains/anzuUser/components/AAnzuUserRoleAutocomplete.js +1 -2
  23. package/dist/domains/anzuUser/components/AAnzuUserRoleAutocomplete.vue_vue_type_script_setup_true_lang.js +1 -2
  24. package/dist/domains/anzuUser/components/AUserBulkActionDialog.js +1 -2
  25. package/dist/domains/anzuUser/components/AUserBulkActionDialog.vue_vue_type_script_setup_true_lang.js +1 -2
  26. package/dist/domains/anzuUser/components/AUserCopyPermissionsDialog.js +1 -2
  27. package/dist/domains/anzuUser/components/AUserCopyPermissionsDialog.vue_vue_type_script_setup_true_lang.js +1 -2
  28. package/dist/domains/anzuUser/components/AUserCreateInSystemButton.js +1 -2
  29. package/dist/domains/anzuUser/components/AUserCreateInSystemButton.vue_vue_type_script_setup_true_lang.js +1 -2
  30. package/dist/domains/anzuUser/components/AUserEnabledSwitch.js +1 -2
  31. package/dist/domains/anzuUser/components/AUserEnabledSwitch.vue_vue_type_script_setup_true_lang.js +1 -2
  32. package/dist/domains/anzuUser/components/AUserManageButton.js +1 -2
  33. package/dist/domains/anzuUser/components/AUserManageButton.vue_vue_type_script_setup_true_lang.js +1 -2
  34. package/dist/domains/anzuUser/components/AUserMetadataForm.js +1 -2
  35. package/dist/domains/anzuUser/components/AUserMetadataForm.vue_vue_type_script_setup_true_lang.js +1 -2
  36. package/dist/domains/anzuUser/components/AUserMetadataRepairDialog.js +1 -2
  37. package/dist/domains/anzuUser/components/AUserMetadataRepairDialog.vue_vue_type_script_setup_true_lang.js +1 -2
  38. package/dist/domains/anzuUser/components/AUserOtherSystemsTable.js +1 -2
  39. package/dist/domains/anzuUser/components/AUserOtherSystemsTable.vue_vue_type_script_setup_true_lang.js +1 -2
  40. package/dist/domains/anzuUser/components/AUserSystemOverview.js +1 -2
  41. package/dist/domains/anzuUser/components/AUserSystemOverview.vue_vue_type_script_setup_true_lang.js +1 -2
  42. package/dist/domains/anzuUser/components/AUserSystemPanel.js +1 -2
  43. package/dist/domains/anzuUser/components/AUserSystemPanel.vue_vue_type_script_setup_true_lang.js +1 -2
  44. package/dist/domains/anzuUser/components/AUserSystemStatusChip.js +1 -2
  45. package/dist/domains/anzuUser/components/AUserSystemStatusChip.vue_vue_type_script_setup_true_lang.js +1 -2
  46. package/dist/domains/anzuUser/components/AUserTabsShell.js +1 -2
  47. package/dist/domains/anzuUser/components/AUserTabsShell.vue_vue_type_script_setup_true_lang.js +1 -2
  48. package/dist/domains/anzuUser/composables/anzuUserActions.js +1 -2
  49. package/dist/domains/anzuUser/composables/anzuUserValidations.js +1 -2
  50. package/dist/domains/anzuUser/composables/cachedAnzuUsers.js +1 -2
  51. package/dist/domains/anzuUser/composables/userCrossSystemSearch.js +1 -2
  52. package/dist/domains/anzuUser/composables/userCrossSystemWrites.js +1 -2
  53. package/dist/domains/anzuUser/composables/userSystemDescriptor.js +1 -2
  54. package/dist/domains/anzuUser/composables/userSystemProbe.js +1 -2
  55. package/dist/domains/anzuUser/factory/AnzuUserFactory.js +1 -2
  56. package/dist/domains/anzuUser/filter/anzuUserFilter.js +1 -2
  57. package/dist/domains/anzuUser/store/anzuUserStore.js +1 -2
  58. package/dist/domains/anzuUser/store/userCrossSystemStore.js +1 -2
  59. package/dist/domains/anzuUser/utils/userMetadataDiff.js +1 -2
  60. package/dist/domains/anzuUser/utils/userSystemState.js +1 -2
  61. package/dist/domains/anzuUser/utils/userTabs.js +1 -2
  62. package/dist/domains/api/composables/defineApiClient.js +1 -2
  63. package/dist/domains/api/composables/pagination.js +1 -2
  64. package/dist/domains/api/composables/request.js +1 -2
  65. package/dist/domains/api/composables/useApiFetchByIds.js +0 -1
  66. package/dist/domains/api/composables/useApiFetchItems.js +1 -2
  67. package/dist/domains/api/composables/useApiFetchList.js +1 -2
  68. package/dist/domains/api/composables/useApiFetchListBatch.js +1 -2
  69. package/dist/domains/api/composables/useApiQueryBuilder.js +1 -2
  70. package/dist/domains/api/composables/useApiRequest.js +1 -2
  71. package/dist/domains/api/types/SortOrder.js +1 -2
  72. package/dist/domains/api/utils/apiErrors.js +1 -2
  73. package/dist/domains/api/utils/apiHelper.js +1 -2
  74. package/dist/domains/api/utils/listBody.js +1 -2
  75. package/dist/domains/api/utils/response.js +1 -2
  76. package/dist/domains/auth/components/Acl.js +1 -2
  77. package/dist/domains/auth/components/Acl.vue_vue_type_script_setup_true_lang.js +1 -2
  78. package/dist/domains/auth/composables/aclAllowed.js +1 -2
  79. package/dist/domains/auth/composables/defineAuth.js +1 -2
  80. package/dist/domains/auth/composables/refreshSession.js +1 -2
  81. package/dist/domains/auth/store/authStore.js +1 -2
  82. package/dist/domains/auth/valueObject/Grant.js +1 -2
  83. package/dist/domains/cached/components/ACachedChip.js +1 -2
  84. package/dist/domains/cached/components/ACachedChip.vue_vue_type_script_setup_true_lang.js +1 -2
  85. package/dist/domains/cached/components/ACachedUserChip.js +1 -2
  86. package/dist/domains/cached/components/ACachedUserChip.vue_vue_type_script_setup_true_lang.js +1 -2
  87. package/dist/domains/cached/composables/createCachedChip.js +1 -2
  88. package/dist/domains/cached/composables/createUserAndTimeTrackingFields.js +1 -2
  89. package/dist/domains/cached/composables/defineCached.js +1 -2
  90. package/dist/domains/cached/composables/useCachedItem.js +1 -2
  91. package/dist/domains/collab/components/ACollabCountdown.js +1 -2
  92. package/dist/domains/collab/components/ACollabCountdown.vue_vue_type_script_setup_true_lang.js +1 -2
  93. package/dist/domains/collab/components/ACollabLockedByUser.js +1 -2
  94. package/dist/domains/collab/components/ACollabLockedByUser.vue_vue_type_script_setup_true_lang.js +1 -2
  95. package/dist/domains/collab/components/ACollabManagement.js +1 -2
  96. package/dist/domains/collab/components/ACollabManagement.vue_vue_type_script_setup_true_lang.js +1 -2
  97. package/dist/domains/collab/composables/collabAnyDataChange.js +1 -2
  98. package/dist/domains/collab/composables/collabCurrentUserId.js +1 -2
  99. package/dist/domains/collab/composables/collabEventBus.js +1 -2
  100. package/dist/domains/collab/composables/collabField.js +1 -2
  101. package/dist/domains/collab/composables/collabHelpers.js +1 -2
  102. package/dist/domains/collab/composables/collabInit.js +2 -3
  103. package/dist/domains/collab/composables/collabInit.js.map +1 -1
  104. package/dist/domains/collab/composables/collabRoom.js +1 -2
  105. package/dist/domains/collab/composables/collabState.js +1 -2
  106. package/dist/domains/collab/composables/commonAdminCollabOptions.js +1 -2
  107. package/dist/domains/collab/types/Collab.js +1 -2
  108. package/dist/domains/customDataForm/components/ACustomDataForm.js +1 -2
  109. package/dist/domains/customDataForm/components/ACustomDataForm.vue_vue_type_script_setup_true_lang.js +1 -2
  110. package/dist/domains/customDataForm/components/ACustomDataFormElement.js +1 -2
  111. package/dist/domains/customDataForm/components/ACustomDataFormElement.vue_vue_type_script_setup_true_lang.js +1 -2
  112. package/dist/domains/customDataForm/components/ACustomDataFormHiddenPart.js +1 -2
  113. package/dist/domains/customDataForm/components/ACustomDataFormHiddenPart.vue_vue_type_script_setup_true_lang.js +1 -2
  114. package/dist/domains/customDataForm/composables/useCustomDataForm.js +1 -2
  115. package/dist/domains/customDataForm/types/CustomDataFormElementTypes.js +1 -2
  116. package/dist/domains/dam/api/damAssetApi.js +1 -2
  117. package/dist/domains/dam/api/damAssetLicenceApi.js +1 -2
  118. package/dist/domains/dam/api/damConstants.js +1 -2
  119. package/dist/domains/dam/api/damEndPoints.js +1 -2
  120. package/dist/domains/dam/api/damImageApi.js +1 -2
  121. package/dist/domains/dam/api/damImageRoiApi.js +1 -2
  122. package/dist/domains/dam/api/damfetchAssetListByFileIdsMultipleLicences.js +1 -2
  123. package/dist/domains/dam/api/uploadApi.js +1 -2
  124. package/dist/domains/dam/assetDetail/components/AColorBox.js +1 -2
  125. package/dist/domains/dam/assetDetail/components/AColorBox.vue_vue_type_script_setup_true_lang.js +1 -2
  126. package/dist/domains/dam/assetDetail/components/AssetCustomMetadataForm.js +1 -2
  127. package/dist/domains/dam/assetDetail/components/AssetCustomMetadataForm.vue_vue_type_script_setup_true_lang.js +1 -2
  128. package/dist/domains/dam/assetDetail/components/AssetDetailDialog.js +1 -2
  129. package/dist/domains/dam/assetDetail/components/AssetDetailDialog.vue_vue_type_script_setup_true_lang.js +1 -2
  130. package/dist/domains/dam/assetDetail/components/AssetDetailDialogFrame.js +1 -2
  131. package/dist/domains/dam/assetDetail/components/AssetDetailDialogFrame.vue_vue_type_script_setup_true_lang.js +1 -2
  132. package/dist/domains/dam/assetDetail/components/AssetDetailDialogLoader.js +1 -2
  133. package/dist/domains/dam/assetDetail/components/AssetDetailDialogLoader.vue_vue_type_script_setup_true_lang.js +1 -2
  134. package/dist/domains/dam/assetDetail/components/AssetDetailDialogSidebar.js +1 -2
  135. package/dist/domains/dam/assetDetail/components/AssetDetailDialogSidebar.vue_vue_type_script_setup_true_lang.js +1 -2
  136. package/dist/domains/dam/assetDetail/components/AssetDetailSidebarActionsTeleportTarget.js +1 -2
  137. package/dist/domains/dam/assetDetail/components/AssetDetailSidebarActionsTeleportTarget.vue_vue_type_script_setup_true_lang.js +1 -2
  138. package/dist/domains/dam/assetDetail/components/AssetDetailSidebarActionsWrapper.js +1 -2
  139. package/dist/domains/dam/assetDetail/components/AssetDetailSidebarActionsWrapper.vue_vue_type_script_setup_true_lang.js +1 -2
  140. package/dist/domains/dam/assetDetail/components/AssetDetailSidebarFrame.js +1 -2
  141. package/dist/domains/dam/assetDetail/components/AssetDetailSidebarFrame.vue_vue_type_script_setup_true_lang.js +1 -2
  142. package/dist/domains/dam/assetDetail/components/AssetDetailSidebarMetadata.js +1 -2
  143. package/dist/domains/dam/assetDetail/components/AssetDetailSidebarMetadata.vue_vue_type_script_setup_true_lang.js +1 -2
  144. package/dist/domains/dam/assetDetail/components/AssetDetailSidebarROI.js +1 -2
  145. package/dist/domains/dam/assetDetail/components/AssetDetailSidebarROI.vue_vue_type_script_setup_true_lang.js +1 -2
  146. package/dist/domains/dam/assetDetail/components/AssetFileFailReasonChip.js +1 -2
  147. package/dist/domains/dam/assetDetail/components/AssetFileFailReasonChip.vue_vue_type_script_setup_true_lang.js +1 -2
  148. package/dist/domains/dam/assetDetail/components/AssetFileInfoPanel.js +1 -2
  149. package/dist/domains/dam/assetDetail/components/AssetFileInfoPanel.vue_vue_type_script_setup_true_lang.js +1 -2
  150. package/dist/domains/dam/assetDetail/components/AssetFileRotate.js +1 -2
  151. package/dist/domains/dam/assetDetail/components/AssetFileRotate.vue_vue_type_script_setup_true_lang.js +1 -2
  152. package/dist/domains/dam/assetDetail/components/AssetImage.js +1 -2
  153. package/dist/domains/dam/assetDetail/components/AssetImage.vue_vue_type_script_setup_true_lang.js +1 -2
  154. package/dist/domains/dam/assetDetail/components/AssetImageMetaIcons.js +1 -2
  155. package/dist/domains/dam/assetDetail/components/AssetImageMetaIcons.vue_vue_type_script_setup_true_lang.js +1 -2
  156. package/dist/domains/dam/assetDetail/components/AssetInfobox.js +1 -2
  157. package/dist/domains/dam/assetDetail/components/AssetInfobox.vue_vue_type_script_setup_true_lang.js +1 -2
  158. package/dist/domains/dam/assetDetail/components/AssetMetadata.js +1 -2
  159. package/dist/domains/dam/assetDetail/components/AssetMetadata.vue_vue_type_script_setup_true_lang.js +1 -2
  160. package/dist/domains/dam/assetDetail/components/AssetMetadataImageAttributes.js +1 -2
  161. package/dist/domains/dam/assetDetail/components/AssetMetadataImageAttributes.vue_vue_type_script_setup_true_lang.js +1 -2
  162. package/dist/domains/dam/assetDetail/composables/assetDetailExtSystem.js +1 -2
  163. package/dist/domains/dam/assetDetail/composables/assetDetailSidebarActionbar.js +1 -2
  164. package/dist/domains/dam/assetDetail/composables/assetDetailView.js +1 -2
  165. package/dist/domains/dam/assetDetail/composables/assetFileFailReason.js +1 -2
  166. package/dist/domains/dam/assetDetail/store/assetDetailStore.js +1 -2
  167. package/dist/domains/dam/assetDetail/utils/assetImageIconsConfig.js +1 -2
  168. package/dist/domains/dam/assetDetail/utils/assetMetadataMayStillChange.js +1 -2
  169. package/dist/domains/dam/assetSelect/api/damPodcastApi.js +1 -2
  170. package/dist/domains/dam/assetSelect/components/AAssetListInner.js +1 -2
  171. package/dist/domains/dam/assetSelect/components/AAssetListInner.vue_vue_type_script_setup_true_lang.js +1 -2
  172. package/dist/domains/dam/assetSelect/components/AAssetSelect.js +1 -2
  173. package/dist/domains/dam/assetSelect/components/AAssetSelect.vue_vue_type_script_setup_true_lang.js +1 -2
  174. package/dist/domains/dam/assetSelect/components/AAssetSelectMedia.js +1 -2
  175. package/dist/domains/dam/assetSelect/components/AAssetSelectMedia.vue_vue_type_script_setup_true_lang.js +1 -2
  176. package/dist/domains/dam/assetSelect/components/AssetDistributionServiceNameFilter.js +1 -2
  177. package/dist/domains/dam/assetSelect/components/AssetDistributionServiceNameFilter.vue_vue_type_script_setup_true_lang.js +1 -2
  178. package/dist/domains/dam/assetSelect/components/AssetImagePreview.js +1 -2
  179. package/dist/domains/dam/assetSelect/components/AssetImagePreview.vue_vue_type_script_setup_true_lang.js +1 -2
  180. package/dist/domains/dam/assetSelect/components/AssetSelectFilter.js +1 -2
  181. package/dist/domains/dam/assetSelect/components/AssetSelectFilter.vue_vue_type_script_setup_true_lang.js +1 -2
  182. package/dist/domains/dam/assetSelect/components/AssetSelectFilterForm.js +1 -2
  183. package/dist/domains/dam/assetSelect/components/AssetSelectFilterForm.vue_vue_type_script_setup_true_lang.js +1 -2
  184. package/dist/domains/dam/assetSelect/components/AssetSelectListBar.js +1 -2
  185. package/dist/domains/dam/assetSelect/components/AssetSelectListBar.vue_vue_type_script_setup_true_lang.js +1 -2
  186. package/dist/domains/dam/assetSelect/components/AssetSelectListTable.js +1 -2
  187. package/dist/domains/dam/assetSelect/components/AssetSelectListTable.vue_vue_type_script_setup_true_lang.js +1 -2
  188. package/dist/domains/dam/assetSelect/components/AssetSelectListTiles.js +1 -2
  189. package/dist/domains/dam/assetSelect/components/AssetSelectListTiles.vue_vue_type_script_setup_true_lang.js +1 -2
  190. package/dist/domains/dam/assetSelect/components/AssetSelectTableRowItem.js +1 -2
  191. package/dist/domains/dam/assetSelect/components/AssetSelectTableRowItem.vue_vue_type_script_setup_true_lang.js +1 -2
  192. package/dist/domains/dam/assetSelect/components/AssetSelectTilesItem.js +1 -2
  193. package/dist/domains/dam/assetSelect/components/AssetSelectTilesItem.vue_vue_type_script_setup_true_lang.js +1 -2
  194. package/dist/domains/dam/assetSelect/components/FilterPodcastRemoteAutocomplete.js +1 -2
  195. package/dist/domains/dam/assetSelect/components/FilterPodcastRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js +1 -2
  196. package/dist/domains/dam/assetSelect/composables/assetSelectFilterSidebar.js +1 -2
  197. package/dist/domains/dam/assetSelect/composables/assetSelectGridView.js +1 -2
  198. package/dist/domains/dam/assetSelect/composables/assetSelectItemActions.js +1 -2
  199. package/dist/domains/dam/assetSelect/composables/assetSelectListActions.js +1 -2
  200. package/dist/domains/dam/assetSelect/composables/podcastFilterAndActions.js +1 -2
  201. package/dist/domains/dam/assetSelect/filter/AssetFilter.js +1 -2
  202. package/dist/domains/dam/assetSelect/store/assetSelectStore.js +1 -2
  203. package/dist/domains/dam/author/api/authorApi.js +1 -2
  204. package/dist/domains/dam/author/components/AuthorCreateButton.js +1 -2
  205. package/dist/domains/dam/author/components/AuthorCreateButton.vue_vue_type_script_setup_true_lang.js +1 -2
  206. package/dist/domains/dam/author/components/AuthorRemoteAutocompleteCachedAuthorChip.js +1 -2
  207. package/dist/domains/dam/author/components/AuthorRemoteAutocompleteCachedAuthorChip.vue_vue_type_script_setup_true_lang.js +1 -2
  208. package/dist/domains/dam/author/components/AuthorRemoteAutocompleteCachedAuthorChipConflicts.js +1 -2
  209. package/dist/domains/dam/author/components/AuthorRemoteAutocompleteCachedAuthorChipConflicts.vue_vue_type_script_setup_true_lang.js +1 -2
  210. package/dist/domains/dam/author/components/AuthorRemoteAutocompleteWithCached.js +1 -2
  211. package/dist/domains/dam/author/components/AuthorRemoteAutocompleteWithCached.vue_vue_type_script_setup_true_lang.js +1 -2
  212. package/dist/domains/dam/author/components/DamAuthorFilterRemoteAutocomplete.js +1 -2
  213. package/dist/domains/dam/author/components/DamAuthorFilterRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js +1 -2
  214. package/dist/domains/dam/author/composables/authorActions.js +1 -2
  215. package/dist/domains/dam/author/composables/authorValidation.js +1 -2
  216. package/dist/domains/dam/author/composables/cachedAuthors.js +1 -2
  217. package/dist/domains/dam/author/composables/cachedUsers.js +1 -2
  218. package/dist/domains/dam/author/composables/damAuthorConfig.js +1 -2
  219. package/dist/domains/dam/author/factory/AuthorFactory.js +1 -2
  220. package/dist/domains/dam/author/filter/AuthorFilter.js +1 -2
  221. package/dist/domains/dam/author/types/DamAuthorType.js +1 -2
  222. package/dist/domains/dam/components/DamAdminAssetLink.js +1 -2
  223. package/dist/domains/dam/components/DamAdminAssetLink.vue_vue_type_script_setup_true_lang.js +1 -2
  224. package/dist/domains/dam/composables/commonAdminCoreDamOptions.js +1 -2
  225. package/dist/domains/dam/composables/damConfigName.js +1 -2
  226. package/dist/domains/dam/composables/damNotifications.js +1 -2
  227. package/dist/domains/dam/composables/damNotificationsConnection.js +1 -2
  228. package/dist/domains/dam/composables/damNotificationsEventBus.js +1 -2
  229. package/dist/domains/dam/composables/extSystemIdForCached.js +1 -2
  230. package/dist/domains/dam/composables/uploadValidations.js +1 -2
  231. package/dist/domains/dam/config/api/damAssetCustomFormApi.js +1 -2
  232. package/dist/domains/dam/config/api/damConfigApi.js +1 -2
  233. package/dist/domains/dam/config/composables/acceptTypeAndSizeHelper.js +1 -2
  234. package/dist/domains/dam/config/composables/damConfigState.js +1 -2
  235. package/dist/domains/dam/config/store/damConfigStore.js +1 -2
  236. package/dist/domains/dam/config/utils/damFilterUserAllowedUploadConfigs.js +1 -2
  237. package/dist/domains/dam/cropper/components/ACropper.js +1 -2
  238. package/dist/domains/dam/cropper/components/ACropper.js.map +1 -1
  239. package/dist/domains/dam/cropper/components/ACropper.vue_vue_type_script_setup_true_lang.js +2 -3
  240. package/dist/domains/dam/cropper/components/ACropper.vue_vue_type_script_setup_true_lang.js.map +1 -1
  241. package/dist/domains/dam/cropper/components/DamAssetImageRoiSelect.js +1 -2
  242. package/dist/domains/dam/cropper/components/DamAssetImageRoiSelect.vue_vue_type_script_setup_true_lang.js +1 -2
  243. package/dist/domains/dam/cropper/components/DamAssetImageRoiSelectLazy.js +1 -2
  244. package/dist/domains/dam/cropper/components/DamAssetImageRoiSelectLazy.vue_vue_type_script_setup_true_lang.js +1 -2
  245. package/dist/domains/dam/cropper/store/imageRoiStore.js +1 -2
  246. package/dist/domains/dam/cropper/utils/cropperGeometry.js +2 -3
  247. package/dist/domains/dam/cropper/utils/cropperGeometry.js.map +1 -1
  248. package/dist/domains/dam/cropper/utils/cropperJsService.js +1 -2
  249. package/dist/domains/dam/cropper/utils/damAssetImageRoiSelectLoader.js +1 -2
  250. package/dist/domains/dam/imageWidget/components/AImageMediaWidget.js +1 -2
  251. package/dist/domains/dam/imageWidget/components/AImageMediaWidget.vue_vue_type_script_setup_true_lang.js +1 -2
  252. package/dist/domains/dam/imageWidget/components/AImagePublicInput.js +1 -2
  253. package/dist/domains/dam/imageWidget/components/AImagePublicInput.vue_vue_type_script_setup_true_lang.js +1 -2
  254. package/dist/domains/dam/imageWidget/components/AImageWidget.js +1 -2
  255. package/dist/domains/dam/imageWidget/components/AImageWidget.vue_vue_type_script_setup_true_lang.js +1 -2
  256. package/dist/domains/dam/imageWidget/components/AImageWidgetMultiple.js +1 -2
  257. package/dist/domains/dam/imageWidget/components/AImageWidgetMultiple.vue_vue_type_script_setup_true_lang.js +1 -2
  258. package/dist/domains/dam/imageWidget/components/AImageWidgetMultipleSimple.js +1 -2
  259. package/dist/domains/dam/imageWidget/components/AImageWidgetMultipleSimple.vue_vue_type_script_setup_true_lang.js +1 -2
  260. package/dist/domains/dam/imageWidget/components/AImageWidgetSimple.js +1 -2
  261. package/dist/domains/dam/imageWidget/components/AImageWidgetSimple.vue_vue_type_script_setup_true_lang.js +1 -2
  262. package/dist/domains/dam/imageWidget/components/AMediaWidgetSimple.js +1 -2
  263. package/dist/domains/dam/imageWidget/components/AMediaWidgetSimple.vue_vue_type_script_setup_true_lang.js +1 -2
  264. package/dist/domains/dam/imageWidget/components/ImageDetailDialogMetadata.js +1 -2
  265. package/dist/domains/dam/imageWidget/components/ImageDetailDialogMetadata.vue_vue_type_script_setup_true_lang.js +1 -2
  266. package/dist/domains/dam/imageWidget/components/ImageMassOperations.js +1 -2
  267. package/dist/domains/dam/imageWidget/components/ImageMassOperations.vue_vue_type_script_setup_true_lang.js +1 -2
  268. package/dist/domains/dam/imageWidget/components/ImageMediaWidgetInner.js +1 -2
  269. package/dist/domains/dam/imageWidget/components/ImageMediaWidgetInner.vue_vue_type_script_setup_true_lang.js +2 -3
  270. package/dist/domains/dam/imageWidget/components/ImageMediaWidgetInner.vue_vue_type_script_setup_true_lang.js.map +1 -1
  271. package/dist/domains/dam/imageWidget/components/ImageWidgetInner.js +1 -2
  272. package/dist/domains/dam/imageWidget/components/ImageWidgetInner.vue_vue_type_script_setup_true_lang.js +2 -3
  273. package/dist/domains/dam/imageWidget/components/ImageWidgetInner.vue_vue_type_script_setup_true_lang.js.map +1 -1
  274. package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleInner.js +1 -2
  275. package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleInner.vue_vue_type_script_setup_true_lang.js +1 -2
  276. package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleItem.js +1 -2
  277. package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleItem.vue_vue_type_script_setup_true_lang.js +1 -2
  278. package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleLimitDialog.js +1 -2
  279. package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleLimitDialog.vue_vue_type_script_setup_true_lang.js +1 -2
  280. package/dist/domains/dam/imageWidget/components/MediaWidgetSimpleDialog.js +1 -2
  281. package/dist/domains/dam/imageWidget/components/MediaWidgetSimpleDialog.vue_vue_type_script_setup_true_lang.js +1 -2
  282. package/dist/domains/dam/imageWidget/composables/commonAdminImageOptions.js +1 -2
  283. package/dist/domains/dam/imageWidget/composables/imageActions.js +1 -2
  284. package/dist/domains/dam/imageWidget/composables/imageApiCms.js +1 -2
  285. package/dist/domains/dam/imageWidget/composables/imageDialogDamAuthors.js +1 -2
  286. package/dist/domains/dam/imageWidget/composables/useImageMassOperations.js +1 -2
  287. package/dist/domains/dam/imageWidget/store/imageMediaWidgetStore.js +1 -2
  288. package/dist/domains/dam/imageWidget/store/imageStore.js +1 -2
  289. package/dist/domains/dam/imageWidget/utils/damImage.js +1 -2
  290. package/dist/domains/dam/imageWidget/utils/fieldLockTurns.js +1 -2
  291. package/dist/domains/dam/imageWidget/utils/imageSaves.js +1 -2
  292. package/dist/domains/dam/imageWidget/utils/imageWidgetInkectionKeys.js +1 -2
  293. package/dist/domains/dam/imageWidget/utils/metadataToImageMap.js +1 -2
  294. package/dist/domains/dam/imageWidget/utils/waitLimit.js +1 -2
  295. package/dist/domains/dam/keyword/api/keywordApi.js +1 -2
  296. package/dist/domains/dam/keyword/components/DamKeywordFilterRemoteAutocomplete.js +1 -2
  297. package/dist/domains/dam/keyword/components/DamKeywordFilterRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js +1 -2
  298. package/dist/domains/dam/keyword/components/KeywordRemoteAutocompleteCachedKeywordChip.js +1 -2
  299. package/dist/domains/dam/keyword/components/KeywordRemoteAutocompleteCachedKeywordChip.vue_vue_type_script_setup_true_lang.js +1 -2
  300. package/dist/domains/dam/keyword/components/KeywordRemoteAutocompleteWithCached.js +1 -2
  301. package/dist/domains/dam/keyword/components/KeywordRemoteAutocompleteWithCached.vue_vue_type_script_setup_true_lang.js +1 -2
  302. package/dist/domains/dam/keyword/composables/cachedKeywords.js +1 -2
  303. package/dist/domains/dam/keyword/composables/damKeywordConfig.js +1 -2
  304. package/dist/domains/dam/keyword/composables/keywordActions.js +1 -2
  305. package/dist/domains/dam/keyword/factory/KeywordFactory.js +3 -4
  306. package/dist/domains/dam/keyword/factory/KeywordFactory.js.map +1 -1
  307. package/dist/domains/dam/keyword/filter/KeywordFilter.js +1 -2
  308. package/dist/domains/dam/types/Asset.js +1 -2
  309. package/dist/domains/dam/types/AssetFile.js +1 -2
  310. package/dist/domains/dam/types/AssetSelect.js +1 -2
  311. package/dist/domains/dam/types/DamConfig.js +1 -2
  312. package/dist/domains/dam/types/MediaAware.js +1 -2
  313. package/dist/domains/dam/types/UploadQueue.js +1 -2
  314. package/dist/domains/dam/uploadQueue/components/AssetCustomMetadataFormMassOperations.js +1 -2
  315. package/dist/domains/dam/uploadQueue/components/AssetCustomMetadataFormMassOperations.vue_vue_type_script_setup_true_lang.js +1 -2
  316. package/dist/domains/dam/uploadQueue/components/AssetQueueSelectedSidebar.js +1 -2
  317. package/dist/domains/dam/uploadQueue/components/AssetQueueSelectedSidebar.vue_vue_type_script_setup_true_lang.js +1 -2
  318. package/dist/domains/dam/uploadQueue/components/UploadQueueButtonStop.js +1 -2
  319. package/dist/domains/dam/uploadQueue/components/UploadQueueButtonStop.vue_vue_type_script_setup_true_lang.js +1 -2
  320. package/dist/domains/dam/uploadQueue/components/UploadQueueDialog.js +1 -2
  321. package/dist/domains/dam/uploadQueue/components/UploadQueueDialog.vue_vue_type_script_setup_true_lang.js +1 -2
  322. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingle.js +1 -2
  323. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingle.vue_vue_type_script_setup_true_lang.js +1 -2
  324. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebar.js +1 -2
  325. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebar.vue_vue_type_script_setup_true_lang.js +1 -2
  326. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebarMetadata.js +1 -2
  327. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebarMetadata.vue_vue_type_script_setup_true_lang.js +1 -2
  328. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebarMetadataContent.js +1 -2
  329. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebarMetadataContent.vue_vue_type_script_setup_true_lang.js +1 -2
  330. package/dist/domains/dam/uploadQueue/components/UploadQueueEditable.js +1 -2
  331. package/dist/domains/dam/uploadQueue/components/UploadQueueEditable.vue_vue_type_script_setup_true_lang.js +1 -2
  332. package/dist/domains/dam/uploadQueue/components/UploadQueueItemEditable.js +1 -2
  333. package/dist/domains/dam/uploadQueue/components/UploadQueueItemEditable.vue_vue_type_script_setup_true_lang.js +1 -2
  334. package/dist/domains/dam/uploadQueue/components/UploadQueueItemErrorOverlay.js +1 -2
  335. package/dist/domains/dam/uploadQueue/components/UploadQueueItemErrorOverlay.vue_vue_type_script_setup_true_lang.js +1 -2
  336. package/dist/domains/dam/uploadQueue/components/uploadQueueBindings.js +1 -2
  337. package/dist/domains/dam/uploadQueue/composables/assetSuggestions.js +1 -2
  338. package/dist/domains/dam/uploadQueue/composables/damUploadChunkSize.js +1 -2
  339. package/dist/domains/dam/uploadQueue/composables/uploadMeter.js +1 -2
  340. package/dist/domains/dam/uploadQueue/composables/uploadQueueItemRefresh.js +1 -2
  341. package/dist/domains/dam/uploadQueue/composables/uploadQueueMassOperations.js +1 -2
  342. package/dist/domains/dam/uploadQueue/composables/uploadService.js +1 -2
  343. package/dist/domains/dam/uploadQueue/composables/useUploadQueueDialog.js +1 -2
  344. package/dist/domains/dam/uploadQueue/core/uploadQueueCore.js +1 -2
  345. package/dist/domains/dam/uploadQueue/core/uploadQueueCoreTypes.js +1 -2
  346. package/dist/domains/dam/uploadQueue/core/uploadQueueFill.js +1 -2
  347. package/dist/domains/dam/uploadQueue/factory/UploadQueueItemFactory.js +1 -2
  348. package/dist/domains/dam/uploadQueue/presets/queuePresets.js +1 -2
  349. package/dist/domains/dam/uploadQueue/presets/uploadPresets.js +1 -2
  350. package/dist/domains/dam/uploadQueue/settlement/uploadPollSchedule.js +1 -2
  351. package/dist/domains/dam/uploadQueue/settlement/uploadPoller.js +1 -2
  352. package/dist/domains/dam/uploadQueue/settlement/uploadSettle.js +1 -2
  353. package/dist/domains/dam/uploadQueue/settlement/uploadSettlement.js +1 -2
  354. package/dist/domains/dam/uploadQueue/settlement/uploadSettlementRuntime.js +1 -2
  355. package/dist/domains/dam/uploadQueue/settlement/uploadSettlementTypes.js +1 -2
  356. package/dist/domains/dam/uploadQueue/store/uploadQueuesStore.js +1 -2
  357. package/dist/domains/dam/uploadQueue/utils/mimeTypeHelper.js +1 -2
  358. package/dist/domains/dam/user/api/assetLicenceApi.js +1 -2
  359. package/dist/domains/dam/user/api/assetLicenceGroupApi.js +1 -2
  360. package/dist/domains/dam/user/api/extSystemApi.js +1 -2
  361. package/dist/domains/dam/user/api/userApi.js +1 -2
  362. package/dist/domains/dam/user/components/DamAssetLicenceGroupRemoteAutocomplete.js +1 -2
  363. package/dist/domains/dam/user/components/DamAssetLicenceGroupRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js +1 -2
  364. package/dist/domains/dam/user/components/DamAssetLicenceRemoteAutocomplete.js +1 -2
  365. package/dist/domains/dam/user/components/DamAssetLicenceRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js +1 -2
  366. package/dist/domains/dam/user/components/DamDistributionServiceSelect.js +1 -2
  367. package/dist/domains/dam/user/components/DamDistributionServiceSelect.vue_vue_type_script_setup_true_lang.js +1 -2
  368. package/dist/domains/dam/user/components/DamExtSystemRemoteAutocomplete.js +1 -2
  369. package/dist/domains/dam/user/components/DamExtSystemRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js +1 -2
  370. package/dist/domains/dam/user/components/DamExternalProviderAssetSelect.js +1 -2
  371. package/dist/domains/dam/user/components/DamExternalProviderAssetSelect.vue_vue_type_script_setup_true_lang.js +1 -2
  372. package/dist/domains/dam/user/components/DamUserFilterRemoteAutocomplete.js +1 -2
  373. package/dist/domains/dam/user/components/DamUserFilterRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js +1 -2
  374. package/dist/domains/dam/user/components/DamUserRemoteAutocomplete.js +1 -2
  375. package/dist/domains/dam/user/components/DamUserRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js +1 -2
  376. package/dist/domains/dam/user/composables/assetLicenceActions.js +1 -2
  377. package/dist/domains/dam/user/composables/assetLicenceGroupActions.js +1 -2
  378. package/dist/domains/dam/user/composables/damUserSelectActions.js +1 -2
  379. package/dist/domains/dam/user/composables/extSystemActions.js +1 -2
  380. package/dist/domains/dam/user/filter/AssetLicenceFilter.js +1 -2
  381. package/dist/domains/dam/user/filter/AssetLicenceGroupFilter.js +1 -2
  382. package/dist/domains/dam/user/filter/DamUserFilter.js +1 -2
  383. package/dist/domains/dam/user/filter/ExtSystemFilter.js +1 -2
  384. package/dist/domains/dam/user/types/DamDistributionServiceType.js +1 -2
  385. package/dist/domains/dam/user/types/DamExternalProviderAssetType.js +1 -2
  386. package/dist/domains/filters/bookmarks/api/userAdminConfigApi.d.ts +1 -3
  387. package/dist/domains/filters/bookmarks/api/userAdminConfigApi.js +4 -5
  388. package/dist/domains/filters/bookmarks/api/userAdminConfigApi.js.map +1 -1
  389. package/dist/domains/filters/bookmarks/components/AFilterBookmarkButton.js +1 -2
  390. package/dist/domains/filters/bookmarks/components/AFilterBookmarkButton.vue_vue_type_script_setup_true_lang.js +1 -2
  391. package/dist/domains/filters/bookmarks/components/FilterBookmarkDialog.js +1 -2
  392. package/dist/domains/filters/bookmarks/components/FilterBookmarkDialog.vue_vue_type_script_setup_true_lang.js +1 -2
  393. package/dist/domains/filters/bookmarks/components/FilterBookmarks.js +1 -2
  394. package/dist/domains/filters/bookmarks/components/FilterBookmarks.vue_vue_type_script_setup_true_lang.js +1 -2
  395. package/dist/domains/filters/bookmarks/factory/UserAdminConfigFactory.js +1 -2
  396. package/dist/domains/filters/bookmarks/filter/UserAdminConfigFilter.js +1 -2
  397. package/dist/domains/filters/bookmarks/store/bookmarksStore.js +1 -2
  398. package/dist/domains/filters/bookmarks/types/UserAdminConfig.js +1 -2
  399. package/dist/domains/filters/components/AFilterAdvancedButton.js +1 -2
  400. package/dist/domains/filters/components/AFilterAdvancedButton.vue_vue_type_script_setup_true_lang.js +1 -2
  401. package/dist/domains/filters/components/AFilterBooleanSelect.js +1 -2
  402. package/dist/domains/filters/components/AFilterBooleanSelect.vue_vue_type_script_setup_true_lang.js +1 -2
  403. package/dist/domains/filters/components/AFilterDatetimePicker.js +1 -2
  404. package/dist/domains/filters/components/AFilterDatetimePicker.vue_vue_type_script_setup_true_lang.js +1 -2
  405. package/dist/domains/filters/components/AFilterEmpty.js +1 -2
  406. package/dist/domains/filters/components/AFilterEmpty.vue_vue_type_script_setup_true_lang.js +1 -2
  407. package/dist/domains/filters/components/AFilterInteger.js +1 -2
  408. package/dist/domains/filters/components/AFilterInteger.vue_vue_type_script_setup_true_lang.js +1 -2
  409. package/dist/domains/filters/components/AFilterResetButton.js +1 -2
  410. package/dist/domains/filters/components/AFilterResetButton.vue_vue_type_script_setup_true_lang.js +1 -2
  411. package/dist/domains/filters/components/AFilterString.js +1 -2
  412. package/dist/domains/filters/components/AFilterString.vue_vue_type_script_setup_true_lang.js +1 -2
  413. package/dist/domains/filters/components/AFilterSubmitButton.js +1 -2
  414. package/dist/domains/filters/components/AFilterSubmitButton.vue_vue_type_script_setup_true_lang.js +1 -2
  415. package/dist/domains/filters/components/AFilterTimeInterval.js +1 -2
  416. package/dist/domains/filters/components/AFilterTimeInterval.vue_vue_type_script_setup_true_lang.js +1 -2
  417. package/dist/domains/filters/components/AFilterValueObjectOptionsSelect.js +1 -2
  418. package/dist/domains/filters/components/AFilterValueObjectOptionsSelect.vue_vue_type_script_setup_true_lang.js +1 -2
  419. package/dist/domains/filters/components/AFilterWrapper.js +1 -2
  420. package/dist/domains/filters/components/AFilterWrapper.vue_vue_type_script_setup_true_lang.js +1 -2
  421. package/dist/domains/filters/components/AFilterWrapperSidebar.js +1 -2
  422. package/dist/domains/filters/components/AFilterWrapperSidebar.vue_vue_type_script_setup_true_lang.js +1 -2
  423. package/dist/domains/filters/components/FilterDetailItem.js +1 -2
  424. package/dist/domains/filters/components/FilterDetailItem.vue_vue_type_script_setup_true_lang.js +1 -2
  425. package/dist/domains/filters/components/FiltersSelected.js +1 -2
  426. package/dist/domains/filters/components/FiltersSelected.vue_vue_type_script_setup_true_lang.js +1 -2
  427. package/dist/domains/filters/composables/filterFactory.d.ts +31 -2
  428. package/dist/domains/filters/composables/filterFactory.js +79 -69
  429. package/dist/domains/filters/composables/filterFactory.js.map +1 -1
  430. package/dist/domains/filters/composables/filterTimeIntervalTools.js +1 -2
  431. package/dist/domains/filters/datatable/components/ADatatableConfigButton.js +1 -2
  432. package/dist/domains/filters/datatable/components/ADatatableConfigButton.vue_vue_type_script_setup_true_lang.js +1 -2
  433. package/dist/domains/filters/datatable/components/ADatatableOrdering.js +1 -2
  434. package/dist/domains/filters/datatable/components/ADatatableOrdering.vue_vue_type_script_setup_true_lang.js +1 -2
  435. package/dist/domains/filters/datatable/components/ADatatablePagination.js +1 -2
  436. package/dist/domains/filters/datatable/components/ADatatablePagination.vue_vue_type_script_setup_true_lang.js +1 -2
  437. package/dist/domains/filters/datatable/composables/createDatatableColumnsConfig.js +1 -2
  438. package/dist/domains/filters/datatable/utils/datatable.js +1 -2
  439. package/dist/domains/filters/datatable/utils/datatableColumns.js +1 -2
  440. package/dist/domains/filters/utils/filterInjectionKeys.js +1 -2
  441. package/dist/domains/form/components/AFormDatetimePicker.js +1 -2
  442. package/dist/domains/form/components/AFormDatetimePicker.vue_vue_type_script_setup_true_lang.js +1 -2
  443. package/dist/domains/form/components/AFormFlagDatetimePicker.js +1 -2
  444. package/dist/domains/form/components/AFormFlagDatetimePicker.vue_vue_type_script_setup_true_lang.js +1 -2
  445. package/dist/domains/form/components/AFormRemoteCheckbox.js +1 -2
  446. package/dist/domains/form/components/AFormRemoteCheckbox.vue_vue_type_script_setup_true_lang.js +1 -2
  447. package/dist/domains/form/components/AFormRemoteSwitch.js +1 -2
  448. package/dist/domains/form/components/AFormRemoteSwitch.vue_vue_type_script_setup_true_lang.js +1 -2
  449. package/dist/domains/form/components/AFormSwitch.js +1 -2
  450. package/dist/domains/form/components/AFormSwitch.vue_vue_type_script_setup_true_lang.js +1 -2
  451. package/dist/domains/form/components/AFormTextField.js +1 -2
  452. package/dist/domains/form/components/AFormTextField.js.map +1 -1
  453. package/dist/domains/form/components/AFormTextField.vue_vue_type_script_setup_true_lang.js +2 -3
  454. package/dist/domains/form/components/AFormTextField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  455. package/dist/domains/form/components/AFormTextarea.js +1 -2
  456. package/dist/domains/form/components/AFormTextarea.vue_vue_type_script_setup_true_lang.js +1 -2
  457. package/dist/domains/form/components/AFormValueObjectOptionsSelect.js +1 -2
  458. package/dist/domains/form/components/AFormValueObjectOptionsSelect.vue_vue_type_script_setup_true_lang.js +1 -2
  459. package/dist/domains/form/components/ASystemEntityScope.js +1 -2
  460. package/dist/domains/form/components/ASystemEntityScope.vue_vue_type_script_setup_true_lang.js +1 -2
  461. package/dist/domains/job/api/jobApi.js +1 -2
  462. package/dist/domains/job/components/AJobBaseCreateForm.js +1 -2
  463. package/dist/domains/job/components/AJobBaseCreateForm.vue_vue_type_script_setup_true_lang.js +1 -2
  464. package/dist/domains/job/components/AJobDetailCommon.js +1 -2
  465. package/dist/domains/job/components/AJobDetailCommon.vue_vue_type_script_setup_true_lang.js +1 -2
  466. package/dist/domains/job/components/AJobPriorityChip.js +1 -2
  467. package/dist/domains/job/components/AJobPriorityChip.vue_vue_type_script_setup_true_lang.js +1 -2
  468. package/dist/domains/job/components/AJobStatusChip.js +1 -2
  469. package/dist/domains/job/components/AJobStatusChip.vue_vue_type_script_setup_true_lang.js +1 -2
  470. package/dist/domains/job/composables/jobPriority.js +1 -2
  471. package/dist/domains/job/factory/JobFactory.js +1 -2
  472. package/dist/domains/job/valueObject/JobBaseResource.js +1 -2
  473. package/dist/domains/job/valueObject/JobStatus.js +1 -2
  474. package/dist/domains/listEditor/components/AListEditor.js +1 -2
  475. package/dist/domains/listEditor/components/AListEditor.vue_vue_type_script_setup_true_lang.js +1 -2
  476. package/dist/domains/listEditor/components/ANestedSortableListEditor.js +1 -2
  477. package/dist/domains/listEditor/components/ANestedSortableListEditor.vue_vue_type_script_setup_true_lang.js +1 -2
  478. package/dist/domains/listEditor/components/ASortableListEditor.js +1 -2
  479. package/dist/domains/listEditor/components/ASortableListEditor.vue_vue_type_script_setup_true_lang.js +1 -2
  480. package/dist/domains/listEditor/components/internal/LeChangeParentDialog.js +1 -2
  481. package/dist/domains/listEditor/components/internal/LeChangeParentDialog.vue_vue_type_script_setup_true_lang.js +1 -2
  482. package/dist/domains/listEditor/components/internal/LeDeleteDialog.js +1 -2
  483. package/dist/domains/listEditor/components/internal/LeDeleteDialog.vue_vue_type_script_setup_true_lang.js +1 -2
  484. package/dist/domains/listEditor/components/internal/LeDragHandle.js +1 -2
  485. package/dist/domains/listEditor/components/internal/LeDragHandle.vue_vue_type_script_setup_true_lang.js +1 -2
  486. package/dist/domains/listEditor/components/internal/LeEmptyState.js +1 -2
  487. package/dist/domains/listEditor/components/internal/LeEmptyState.vue_vue_type_script_setup_true_lang.js +1 -2
  488. package/dist/domains/listEditor/components/internal/LeMoveToPositionDialog.js +1 -2
  489. package/dist/domains/listEditor/components/internal/LeMoveToPositionDialog.vue_vue_type_script_setup_true_lang.js +1 -2
  490. package/dist/domains/listEditor/components/internal/LeNestedRow.js +1 -2
  491. package/dist/domains/listEditor/components/internal/LeNestedRow.vue_vue_type_script_setup_true_lang.js +1 -2
  492. package/dist/domains/listEditor/components/internal/LeStatus.js +1 -2
  493. package/dist/domains/listEditor/components/internal/LeStatus.vue_vue_type_script_setup_true_lang.js +1 -2
  494. package/dist/domains/listEditor/components/internal/LeUnsavedLabel.js +1 -2
  495. package/dist/domains/listEditor/components/internal/LeUnsavedLabel.vue_vue_type_script_setup_true_lang.js +1 -2
  496. package/dist/domains/listEditor/components/internal/constants.js +1 -2
  497. package/dist/domains/listEditor/composables/useContainerWidth.js +1 -2
  498. package/dist/domains/listEditor/composables/useDeleteDialog.js +1 -2
  499. package/dist/domains/listEditor/composables/useDragInstruction.js +1 -2
  500. package/dist/domains/listEditor/composables/useInlineEditing.js +1 -2
  501. package/dist/domains/listEditor/composables/useIsTouchDevice.js +1 -2
  502. package/dist/domains/listEditor/composables/useKeyboardNav.js +2 -3
  503. package/dist/domains/listEditor/composables/useKeyboardNav.js.map +1 -1
  504. package/dist/domains/listEditor/composables/useListEditorController.js +1 -2
  505. package/dist/domains/listEditor/composables/useListEditorScopeValidity.js +1 -2
  506. package/dist/domains/listEditor/composables/useListEditorStateScope.js +1 -2
  507. package/dist/domains/listEditor/composables/useNestedListEditor.js +1 -2
  508. package/dist/domains/listEditor/composables/useNestedListEditorController.js +1 -2
  509. package/dist/domains/listEditor/composables/useReorderMode.js +1 -2
  510. package/dist/domains/listEditor/utils/listEditorLoader.js +1 -2
  511. package/dist/domains/listEditor/utils/positions.js +1 -2
  512. package/dist/domains/listEditor/utils/resolveCompactText.js +1 -2
  513. package/dist/domains/listEditor/utils/revealInvalidRows.js +1 -2
  514. package/dist/domains/listEditor/utils/tempId.js +1 -2
  515. package/dist/domains/log/api/logApi.js +0 -1
  516. package/dist/domains/log/components/ALogDatatable.js +1 -2
  517. package/dist/domains/log/components/ALogDatatable.vue_vue_type_script_setup_true_lang.js +1 -2
  518. package/dist/domains/log/components/ALogDetail.js +1 -2
  519. package/dist/domains/log/components/ALogDetail.vue_vue_type_script_setup_true_lang.js +1 -2
  520. package/dist/domains/log/components/ALogDetailView.js +1 -2
  521. package/dist/domains/log/components/ALogDetailView.vue_vue_type_script_setup_true_lang.js +1 -2
  522. package/dist/domains/log/components/ALogFilter.js +1 -2
  523. package/dist/domains/log/components/ALogFilter.vue_vue_type_script_setup_true_lang.js +1 -2
  524. package/dist/domains/log/components/ALogLevelChip.js +1 -2
  525. package/dist/domains/log/components/ALogLevelChip.vue_vue_type_script_setup_true_lang.js +1 -2
  526. package/dist/domains/log/components/ALogListView.js +1 -2
  527. package/dist/domains/log/components/ALogListView.vue_vue_type_script_setup_true_lang.js +1 -2
  528. package/dist/domains/log/composables/logActions.js +1 -2
  529. package/dist/domains/log/composables/logType.js +1 -2
  530. package/dist/domains/log/filter/logFilter.js +1 -2
  531. package/dist/domains/log/valueObject/LogLevel.js +6 -7
  532. package/dist/domains/log/valueObject/LogLevel.js.map +1 -1
  533. package/dist/domains/permission/components/APermissionEditor.js +1 -2
  534. package/dist/domains/permission/components/APermissionEditor.vue_vue_type_script_setup_true_lang.js +1 -2
  535. package/dist/domains/permission/components/APermissionGrantEditor.js +1 -2
  536. package/dist/domains/permission/components/APermissionGrantEditor.vue_vue_type_script_setup_true_lang.js +1 -2
  537. package/dist/domains/permission/components/APermissionValueChip.js +1 -2
  538. package/dist/domains/permission/components/APermissionValueChip.vue_vue_type_script_setup_true_lang.js +1 -2
  539. package/dist/domains/permission/composables/permissionActions.js +1 -2
  540. package/dist/domains/permission/config/api/permissionConfigApi.js +1 -2
  541. package/dist/domains/permission/config/composables/permissionConfigActions.js +1 -2
  542. package/dist/domains/permission/config/factory/PermissionConfigFactory.js +1 -2
  543. package/dist/domains/permission/config/store/permissionConfigStore.js +1 -2
  544. package/dist/domains/permission/group/api/permissionGroupApi.js +1 -2
  545. package/dist/domains/permission/group/components/APermissionGroupDatatable.js +1 -2
  546. package/dist/domains/permission/group/components/APermissionGroupDatatable.vue_vue_type_script_setup_true_lang.js +1 -2
  547. package/dist/domains/permission/group/components/APermissionGroupDetail.js +1 -2
  548. package/dist/domains/permission/group/components/APermissionGroupDetail.vue_vue_type_script_setup_true_lang.js +1 -2
  549. package/dist/domains/permission/group/components/APermissionGroupFilter.js +1 -2
  550. package/dist/domains/permission/group/components/APermissionGroupFilter.vue_vue_type_script_setup_true_lang.js +1 -2
  551. package/dist/domains/permission/group/components/APermissionGroupManage.js +1 -2
  552. package/dist/domains/permission/group/components/APermissionGroupManage.vue_vue_type_script_setup_true_lang.js +1 -2
  553. package/dist/domains/permission/group/components/APermissionGroupRemoteAutocomplete.js +1 -2
  554. package/dist/domains/permission/group/components/APermissionGroupRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js +1 -2
  555. package/dist/domains/permission/group/composables/cachedPermissionGroups.js +1 -2
  556. package/dist/domains/permission/group/composables/permissionGroupActions.js +1 -2
  557. package/dist/domains/permission/group/composables/permissionGroupValidations.js +1 -2
  558. package/dist/domains/permission/group/factory/PermissionGroupFactory.js +1 -2
  559. package/dist/domains/permission/group/filter/permissionGroupFilter.js +1 -2
  560. package/dist/domains/permission/group/store/permissionGroupStore.js +1 -2
  561. package/dist/domains/permission/valueObject/GrantOrigin.js +1 -2
  562. package/dist/domains/remoteAutocomplete/components/AFilterRemoteAutocomplete.js +1 -2
  563. package/dist/domains/remoteAutocomplete/components/AFilterRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js +1 -2
  564. package/dist/domains/remoteAutocomplete/components/AFilterRemoteAutocompleteWithMinimal.js +1 -2
  565. package/dist/domains/remoteAutocomplete/components/AFilterRemoteAutocompleteWithMinimal.vue_vue_type_script_setup_true_lang.js +1 -2
  566. package/dist/domains/remoteAutocomplete/components/AFormRemoteAutocomplete.js +1 -2
  567. package/dist/domains/remoteAutocomplete/components/AFormRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js +1 -2
  568. package/dist/domains/remoteAutocomplete/components/AFormRemoteAutocompleteWithCached.js +1 -2
  569. package/dist/domains/remoteAutocomplete/components/AFormRemoteAutocompleteWithCached.vue_vue_type_script_setup_true_lang.js +1 -2
  570. package/dist/domains/remoteAutocomplete/composables/createRemoteAutocomplete.js +1 -2
  571. package/dist/domains/subjectSelect/components/AFilterWrapperSubjectSelect.js +1 -2
  572. package/dist/domains/subjectSelect/components/AFilterWrapperSubjectSelect.vue_vue_type_script_setup_true_lang.js +1 -2
  573. package/dist/domains/subjectSelect/components/ASubjectSelect.js +1 -2
  574. package/dist/domains/subjectSelect/components/ASubjectSelect.vue_vue_type_script_setup_true_lang.js +1 -2
  575. package/dist/domains/subjectSelect/composables/useSubjectSelect.js +1 -2
  576. package/dist/domains/subjectSelect/utils/selectStrategies.js +1 -2
  577. package/dist/domains/system/appShell/components/AActionbar.js +1 -2
  578. package/dist/domains/system/appShell/components/AActionbar.vue_vue_type_script_setup_true_lang.js +1 -2
  579. package/dist/domains/system/appShell/components/AActionbarTarget.js +1 -2
  580. package/dist/domains/system/appShell/components/AActionbarTarget.vue_vue_type_script_setup_true_lang.js +1 -2
  581. package/dist/domains/system/appShell/components/ALayoutLoader.js +1 -2
  582. package/dist/domains/system/appShell/components/ALayoutLoader.vue_vue_type_script_setup_true_lang.js +1 -2
  583. package/dist/domains/system/appShell/components/ALayoutSwitch.js +1 -2
  584. package/dist/domains/system/appShell/components/ALayoutSwitch.vue_vue_type_script_setup_true_lang.js +1 -2
  585. package/dist/domains/system/appShell/composables/teleportSlot.js +1 -2
  586. package/dist/domains/system/components/AAdminSwitcher.js +1 -2
  587. package/dist/domains/system/components/AAdminSwitcher.vue_vue_type_script_setup_true_lang.js +1 -2
  588. package/dist/domains/system/components/AAlerts.js +1 -2
  589. package/dist/domains/system/components/AAlerts.vue_vue_type_script_setup_true_lang.js +1 -2
  590. package/dist/domains/system/components/ALanguageSelect.js +1 -2
  591. package/dist/domains/system/components/ALanguageSelect.vue_vue_type_script_setup_true_lang.js +1 -2
  592. package/dist/domains/system/components/AThemeSelect.js +1 -2
  593. package/dist/domains/system/components/AThemeSelect.vue_vue_type_script_setup_true_lang.js +1 -2
  594. package/dist/domains/system/composables/alerts.js +1 -2
  595. package/dist/domains/system/composables/alertsQueue.js +1 -2
  596. package/dist/domains/system/composables/breadcrumbs.d.ts +6 -6
  597. package/dist/domains/system/composables/breadcrumbs.js +8 -9
  598. package/dist/domains/system/composables/breadcrumbs.js.map +1 -1
  599. package/dist/domains/system/composables/languageSettings.js +1 -2
  600. package/dist/domains/system/composables/loginStatus.js +1 -2
  601. package/dist/domains/system/composables/navigationError.js +1 -2
  602. package/dist/domains/system/composables/pageNavigation.js +1 -2
  603. package/dist/domains/system/composables/recordActions.d.ts +41 -0
  604. package/dist/domains/system/composables/recordActions.js +32 -0
  605. package/dist/domains/system/composables/recordActions.js.map +1 -0
  606. package/dist/domains/system/composables/recordPage.d.ts +14 -4
  607. package/dist/domains/system/composables/recordPage.js +37 -36
  608. package/dist/domains/system/composables/recordPage.js.map +1 -1
  609. package/dist/domains/system/composables/routeHistory.js +34 -28
  610. package/dist/domains/system/composables/routeHistory.js.map +1 -1
  611. package/dist/domains/system/composables/sentry.js +1 -2
  612. package/dist/domains/system/composables/themeSettings.js +1 -2
  613. package/dist/domains/system/composables/useDebugFeatures.js +1 -2
  614. package/dist/domains/system/composables/useUnreleasedFeatures.js +1 -2
  615. package/dist/domains/system/composables/useUserActivity.js +1 -2
  616. package/dist/domains/system/flags/components/FlagCountry.js +1 -2
  617. package/dist/domains/system/flags/components/FlagCountry.vue_vue_type_script_setup_true_lang.js +1 -2
  618. package/dist/domains/system/flags/components/FlagEmpty.js +1 -2
  619. package/dist/domains/system/flags/components/FlagEn.js +1 -2
  620. package/dist/domains/system/flags/components/FlagSk.js +1 -2
  621. package/dist/domains/system/store/datatablePageStore.js +1 -2
  622. package/dist/domains/system/systemBar/components/ASystemBar.js +1 -2
  623. package/dist/domains/system/systemBar/components/ASystemBar.vue_vue_type_script_setup_true_lang.js +1 -2
  624. package/dist/domains/system/systemBar/components/ASystemBarNewVersion.js +1 -2
  625. package/dist/domains/system/systemBar/components/ASystemBarNewVersion.vue_vue_type_script_setup_true_lang.js +1 -2
  626. package/dist/domains/system/systemBar/composables/systemBar.js +1 -2
  627. package/dist/domains/system/systemBar/utils/appReload.js +1 -2
  628. package/dist/domains/system/systemBar/utils/pageReload.js +1 -2
  629. package/dist/domains/ui/buttons/action/components/AActionCloseButtonHistory.js +1 -2
  630. package/dist/domains/ui/buttons/action/components/AActionCloseButtonHistory.vue_vue_type_script_setup_true_lang.js +1 -2
  631. package/dist/domains/ui/buttons/action/components/AActionCreateButton.js +1 -2
  632. package/dist/domains/ui/buttons/action/components/AActionCreateButton.vue_vue_type_script_setup_true_lang.js +1 -2
  633. package/dist/domains/ui/buttons/action/components/AActionDeleteButton.js +1 -2
  634. package/dist/domains/ui/buttons/action/components/AActionDeleteButton.vue_vue_type_script_setup_true_lang.js +1 -2
  635. package/dist/domains/ui/buttons/action/components/AActionEditButton.js +1 -2
  636. package/dist/domains/ui/buttons/action/components/AActionEditButton.vue_vue_type_script_setup_true_lang.js +1 -2
  637. package/dist/domains/ui/buttons/action/components/AActionSaveAndCloseButton.js +1 -2
  638. package/dist/domains/ui/buttons/action/components/AActionSaveAndCloseButton.vue_vue_type_script_setup_true_lang.js +1 -2
  639. package/dist/domains/ui/buttons/action/components/AActionSaveButton.js +1 -2
  640. package/dist/domains/ui/buttons/action/components/AActionSaveButton.vue_vue_type_script_setup_true_lang.js +1 -2
  641. package/dist/domains/ui/buttons/components/ABtnSplit.js +1 -2
  642. package/dist/domains/ui/buttons/components/ABtnSplit.vue_vue_type_script_setup_true_lang.js +1 -2
  643. package/dist/domains/ui/buttons/table/components/ATableCopyIdButton.js +1 -2
  644. package/dist/domains/ui/buttons/table/components/ATableCopyIdButton.vue_vue_type_script_setup_true_lang.js +1 -2
  645. package/dist/domains/ui/buttons/table/components/ATableDetailButton.js +1 -2
  646. package/dist/domains/ui/buttons/table/components/ATableDetailButton.vue_vue_type_script_setup_true_lang.js +1 -2
  647. package/dist/domains/ui/buttons/table/components/ATableEditButton.js +1 -2
  648. package/dist/domains/ui/buttons/table/components/ATableEditButton.vue_vue_type_script_setup_true_lang.js +1 -2
  649. package/dist/domains/ui/components/AAnzuUserAvatar.js +1 -2
  650. package/dist/domains/ui/components/AAnzuUserAvatar.vue_vue_type_script_setup_true_lang.js +1 -2
  651. package/dist/domains/ui/components/AAvatarColorPicker.js +1 -2
  652. package/dist/domains/ui/components/AAvatarColorPicker.vue_vue_type_script_setup_true_lang.js +1 -2
  653. package/dist/domains/ui/components/ABooleanSelect.js +1 -2
  654. package/dist/domains/ui/components/ABooleanSelect.vue_vue_type_script_setup_true_lang.js +1 -2
  655. package/dist/domains/ui/components/ABooleanValue.js +1 -2
  656. package/dist/domains/ui/components/ABooleanValue.vue_vue_type_script_setup_true_lang.js +1 -2
  657. package/dist/domains/ui/components/ACard.js +1 -2
  658. package/dist/domains/ui/components/ACard.vue_vue_type_script_setup_true_lang.js +1 -2
  659. package/dist/domains/ui/components/ACardLoader.js +1 -2
  660. package/dist/domains/ui/components/ACardLoader.vue_vue_type_script_setup_true_lang.js +1 -2
  661. package/dist/domains/ui/components/AChipNoLink.js +1 -2
  662. package/dist/domains/ui/components/AChipNoLink.vue_vue_type_script_setup_true_lang.js +1 -2
  663. package/dist/domains/ui/components/ACopyText.js +1 -2
  664. package/dist/domains/ui/components/ACopyText.vue_vue_type_script_setup_true_lang.js +1 -2
  665. package/dist/domains/ui/components/ACreateDialog.js +1 -2
  666. package/dist/domains/ui/components/ACreateDialog.vue_vue_type_script_setup_true_lang.js +1 -2
  667. package/dist/domains/ui/components/ACurrentUserDropdown.js +1 -2
  668. package/dist/domains/ui/components/ACurrentUserDropdown.vue_vue_type_script_setup_true_lang.js +1 -2
  669. package/dist/domains/ui/components/ADialogToolbar.js +1 -2
  670. package/dist/domains/ui/components/ADialogToolbar.vue_vue_type_script_setup_true_lang.js +1 -2
  671. package/dist/domains/ui/components/AIconGroup.js +1 -2
  672. package/dist/domains/ui/components/AIconGroup.vue_vue_type_script_setup_true_lang.js +1 -2
  673. package/dist/domains/ui/components/AProgress.js +1 -2
  674. package/dist/domains/ui/components/AProgress.vue_vue_type_script_setup_true_lang.js +1 -2
  675. package/dist/domains/ui/components/ARow.js +1 -2
  676. package/dist/domains/ui/components/ARow.vue_vue_type_script_setup_true_lang.js +1 -2
  677. package/dist/domains/ui/components/ATimeTrackingFields.js +1 -2
  678. package/dist/domains/ui/components/ATimeTrackingFields.vue_vue_type_script_setup_true_lang.js +1 -2
  679. package/dist/domains/ui/components/AUserAndTimeTrackingFields.js +1 -2
  680. package/dist/domains/ui/components/AUserAndTimeTrackingFields.vue_vue_type_script_setup_true_lang.js +1 -2
  681. package/dist/domains/ui/datetime/components/ADatetime.js +1 -2
  682. package/dist/domains/ui/datetime/components/ADatetime.vue_vue_type_script_setup_true_lang.js +1 -2
  683. package/dist/domains/ui/datetime/components/ADatetimePicker.js +1 -2
  684. package/dist/domains/ui/datetime/components/ADatetimePicker.vue_vue_type_script_setup_true_lang.js +1 -2
  685. package/dist/domains/ui/datetime/components/TimePicker.js +1 -2
  686. package/dist/domains/ui/datetime/components/TimePicker.vue_vue_type_script_setup_true_lang.js +1 -2
  687. package/dist/domains/ui/datetime/composables/remainingTime.js +1 -2
  688. package/dist/domains/ui/file/components/AFileDropzone.js +1 -2
  689. package/dist/domains/ui/file/components/AFileDropzone.vue_vue_type_script_setup_true_lang.js +1 -2
  690. package/dist/domains/ui/file/components/AFileInput.js +1 -2
  691. package/dist/domains/ui/file/components/AFileInput.vue_vue_type_script_setup_true_lang.js +1 -2
  692. package/dist/domains/ui/file/components/AFileInputDialog.js +1 -2
  693. package/dist/domains/ui/file/components/AFileInputDialog.vue_vue_type_script_setup_true_lang.js +1 -2
  694. package/dist/domains/ui/file/composables/dropzone.js +1 -2
  695. package/dist/domains/ui/file/composables/formatAndSizeCheck.js +1 -2
  696. package/dist/domains/ui/file/utils/fileType.js +1 -2
  697. package/dist/domains/ui/view/components/AGenericView.js +1 -2
  698. package/dist/domains/ui/view/components/AGenericView.vue_vue_type_script_setup_true_lang.js +1 -2
  699. package/dist/domains/ui/view/components/ALoginView.js +1 -2
  700. package/dist/domains/ui/view/components/ALoginView.vue_vue_type_script_setup_true_lang.js +1 -2
  701. package/dist/domains/ui/view/components/ALogoutView.js +1 -2
  702. package/dist/domains/ui/view/components/ALogoutView.vue_vue_type_script_setup_true_lang.js +1 -2
  703. package/dist/domains/ui/view/components/ANotFoundView.js +1 -2
  704. package/dist/domains/ui/view/components/ANotFoundView.vue_vue_type_script_setup_true_lang.js +1 -2
  705. package/dist/domains/ui/view/components/AUnauthorizedView.js +1 -2
  706. package/dist/domains/ui/view/components/AUnauthorizedView.vue_vue_type_script_setup_true_lang.js +1 -2
  707. package/dist/domains/unsavedGuard/components/AUnsavedConfirmDialog.js +1 -2
  708. package/dist/domains/unsavedGuard/components/AUnsavedConfirmDialog.vue_vue_type_script_setup_true_lang.js +1 -2
  709. package/dist/domains/unsavedGuard/composables/useUnsavedChangesGuard.js +1 -2
  710. package/dist/domains/unsavedGuard/composables/useUnsavedSection.js +1 -2
  711. package/dist/lib.d.ts +3 -2
  712. package/dist/locales/cs/common/alert.js +1 -2
  713. package/dist/locales/cs/common/anzuUser.js +1 -2
  714. package/dist/locales/cs/common/assetSelect.js +1 -2
  715. package/dist/locales/cs/common/button.js +1 -2
  716. package/dist/locales/cs/common/collab.js +1 -2
  717. package/dist/locales/cs/common/confirmDialog.js +1 -2
  718. package/dist/locales/cs/common/customForm.js +1 -2
  719. package/dist/locales/cs/common/customFormElement.js +1 -2
  720. package/dist/locales/cs/common/damImage.js +1 -2
  721. package/dist/locales/cs/common/dayOfWeek.js +1 -2
  722. package/dist/locales/cs/common/filter.js +1 -2
  723. package/dist/locales/cs/common/job.js +1 -2
  724. package/dist/locales/cs/common/linkDto.js +1 -2
  725. package/dist/locales/cs/common/listItemDto.js +1 -2
  726. package/dist/locales/cs/common/log.js +1 -2
  727. package/dist/locales/cs/common/model.js +1 -2
  728. package/dist/locales/cs/common/permission.js +1 -2
  729. package/dist/locales/cs/common/permissionEditor.js +1 -2
  730. package/dist/locales/cs/common/permissionGroup.js +1 -2
  731. package/dist/locales/cs/common/routeSettings.js +1 -2
  732. package/dist/locales/cs/common/sortable.js +1 -2
  733. package/dist/locales/cs/common/subjectSelect.js +1 -2
  734. package/dist/locales/cs/common/system.js +1 -2
  735. package/dist/locales/cs/common/time.js +1 -2
  736. package/dist/locales/cs/common/userSystem.js +1 -2
  737. package/dist/locales/cs/error/apiDependencyExists.js +1 -2
  738. package/dist/locales/cs/error/apiForbiddenOperation.js +1 -2
  739. package/dist/locales/cs/error/apiTimedOut.js +1 -2
  740. package/dist/locales/cs/error/apiValidation.js +1 -2
  741. package/dist/locales/cs/error/jsValidation.js +1 -2
  742. package/dist/locales/cs/vuetify.js +1 -2
  743. package/dist/locales/cs.js +1 -2
  744. package/dist/locales/en/common/alert.js +1 -2
  745. package/dist/locales/en/common/anzuUser.js +1 -2
  746. package/dist/locales/en/common/assetSelect.js +1 -2
  747. package/dist/locales/en/common/button.js +1 -2
  748. package/dist/locales/en/common/collab.js +1 -2
  749. package/dist/locales/en/common/confirmDialog.js +1 -2
  750. package/dist/locales/en/common/customForm.js +1 -2
  751. package/dist/locales/en/common/customFormElement.js +1 -2
  752. package/dist/locales/en/common/damImage.js +1 -2
  753. package/dist/locales/en/common/dayOfWeek.js +1 -2
  754. package/dist/locales/en/common/filter.js +1 -2
  755. package/dist/locales/en/common/job.js +1 -2
  756. package/dist/locales/en/common/linkDto.js +1 -2
  757. package/dist/locales/en/common/listItemDto.js +1 -2
  758. package/dist/locales/en/common/log.js +1 -2
  759. package/dist/locales/en/common/model.js +1 -2
  760. package/dist/locales/en/common/permission.js +1 -2
  761. package/dist/locales/en/common/permissionEditor.js +1 -2
  762. package/dist/locales/en/common/permissionGroup.js +1 -2
  763. package/dist/locales/en/common/routeSettings.js +1 -2
  764. package/dist/locales/en/common/sortable.js +1 -2
  765. package/dist/locales/en/common/subjectSelect.js +1 -2
  766. package/dist/locales/en/common/system.js +1 -2
  767. package/dist/locales/en/common/time.js +1 -2
  768. package/dist/locales/en/common/userSystem.js +1 -2
  769. package/dist/locales/en/error/apiDependencyExists.js +1 -2
  770. package/dist/locales/en/error/apiForbiddenOperation.js +1 -2
  771. package/dist/locales/en/error/apiTimedOut.js +1 -2
  772. package/dist/locales/en/error/apiValidation.js +1 -2
  773. package/dist/locales/en/error/jsValidation.js +1 -2
  774. package/dist/locales/en/vuetify.js +1 -2
  775. package/dist/locales/en.js +1 -2
  776. package/dist/locales/sk/common/alert.js +1 -2
  777. package/dist/locales/sk/common/anzuUser.js +1 -2
  778. package/dist/locales/sk/common/assetSelect.js +1 -2
  779. package/dist/locales/sk/common/button.js +1 -2
  780. package/dist/locales/sk/common/collab.js +1 -2
  781. package/dist/locales/sk/common/confirmDialog.js +1 -2
  782. package/dist/locales/sk/common/customForm.js +1 -2
  783. package/dist/locales/sk/common/customFormElement.js +1 -2
  784. package/dist/locales/sk/common/damImage.js +1 -2
  785. package/dist/locales/sk/common/dayOfWeek.js +1 -2
  786. package/dist/locales/sk/common/filter.js +1 -2
  787. package/dist/locales/sk/common/job.js +1 -2
  788. package/dist/locales/sk/common/linkDto.js +1 -2
  789. package/dist/locales/sk/common/listItemDto.js +1 -2
  790. package/dist/locales/sk/common/log.js +1 -2
  791. package/dist/locales/sk/common/model.js +1 -2
  792. package/dist/locales/sk/common/permission.js +1 -2
  793. package/dist/locales/sk/common/permissionEditor.js +1 -2
  794. package/dist/locales/sk/common/permissionGroup.js +1 -2
  795. package/dist/locales/sk/common/routeSettings.js +1 -2
  796. package/dist/locales/sk/common/sortable.js +1 -2
  797. package/dist/locales/sk/common/subjectSelect.js +1 -2
  798. package/dist/locales/sk/common/system.js +1 -2
  799. package/dist/locales/sk/common/time.js +1 -2
  800. package/dist/locales/sk/common/userSystem.js +1 -2
  801. package/dist/locales/sk/error/apiDependencyExists.js +1 -2
  802. package/dist/locales/sk/error/apiForbiddenOperation.js +1 -2
  803. package/dist/locales/sk/error/apiTimedOut.js +1 -2
  804. package/dist/locales/sk/error/apiValidation.js +1 -2
  805. package/dist/locales/sk/error/jsValidation.js +1 -2
  806. package/dist/locales/sk/vuetify.js +1 -2
  807. package/dist/locales/sk.js +1 -2
  808. package/dist/plugins/commonVuetifyConfig.js +1 -2
  809. package/dist/plugins/i18n.js +1 -2
  810. package/dist/plugins/pluginOptions.js +1 -2
  811. package/dist/plugins/webfontloader.js +0 -1
  812. package/dist/shared/commonConfig.js +0 -1
  813. package/dist/shared/error/AnzuApiAxiosError.js +1 -2
  814. package/dist/shared/error/AnzuApiCancelledError.js +1 -2
  815. package/dist/shared/error/AnzuApiDependencyExistsError.js +1 -2
  816. package/dist/shared/error/AnzuApiForbiddenError.js +1 -2
  817. package/dist/shared/error/AnzuApiForbiddenOperationError.js +1 -2
  818. package/dist/shared/error/AnzuApiResponseCodeError.js +1 -2
  819. package/dist/shared/error/AnzuApiTimeoutError.js +1 -2
  820. package/dist/shared/error/AnzuApiValidationError.js +1 -2
  821. package/dist/shared/error/AnzuError.js +1 -2
  822. package/dist/shared/error/AnzuFatalError.js +1 -2
  823. package/dist/shared/error/AnzuNewVersionFetchError.js +1 -2
  824. package/dist/shared/error/AuthUnavailableError.js +1 -2
  825. package/dist/shared/error/SessionExpiredError.js +1 -2
  826. package/dist/shared/error/isInCauseChain.js +1 -2
  827. package/dist/shared/injectionKeys.js +1 -2
  828. package/dist/shared/statusCodes.js +1 -2
  829. package/dist/shared/types/CreatedByAware.js +1 -2
  830. package/dist/shared/types/OwnerAware.js +1 -2
  831. package/dist/shared/types/utils.js +1 -2
  832. package/dist/shared/utils/array.js +1 -2
  833. package/dist/shared/utils/boolean.js +1 -2
  834. package/dist/shared/utils/common.js +1 -2
  835. package/dist/shared/utils/datetime.js +0 -1
  836. package/dist/shared/utils/datetimePickerValue.js +0 -1
  837. package/dist/shared/utils/development.js +1 -2
  838. package/dist/shared/utils/enum.js +1 -2
  839. package/dist/shared/utils/envConfig.js +1 -2
  840. package/dist/shared/utils/event.js +1 -2
  841. package/dist/shared/utils/file.js +1 -2
  842. package/dist/shared/utils/generator.js +1 -2
  843. package/dist/shared/utils/history.js +1 -2
  844. package/dist/shared/utils/json.js +1 -2
  845. package/dist/shared/utils/number.js +1 -2
  846. package/dist/shared/utils/object.js +1 -2
  847. package/dist/shared/utils/string.js +1 -2
  848. package/dist/shared/utils/userAndTimeTracking.js +1 -2
  849. package/dist/shared/validators/vuelidate/common/useValidateBetween.js +1 -2
  850. package/dist/shared/validators/vuelidate/common/useValidateCompareDates.js +1 -2
  851. package/dist/shared/validators/vuelidate/common/useValidateEmail.js +1 -2
  852. package/dist/shared/validators/vuelidate/common/useValidateHexColor.js +1 -2
  853. package/dist/shared/validators/vuelidate/common/useValidateMaxLength.js +1 -2
  854. package/dist/shared/validators/vuelidate/common/useValidateMaxValue.js +1 -2
  855. package/dist/shared/validators/vuelidate/common/useValidateMinLength.js +1 -2
  856. package/dist/shared/validators/vuelidate/common/useValidateMinValue.js +1 -2
  857. package/dist/shared/validators/vuelidate/common/useValidateNumeric.js +1 -2
  858. package/dist/shared/validators/vuelidate/common/useValidateRequired.js +1 -2
  859. package/dist/shared/validators/vuelidate/common/useValidateRequiredIf.js +1 -2
  860. package/dist/shared/validators/vuelidate/common/useValidateSlug.js +1 -2
  861. package/dist/shared/validators/vuelidate/common/useValidateStringArrayItemLength.js +1 -2
  862. package/dist/shared/validators/vuelidate/common/useValidateUrl.js +1 -2
  863. package/dist/shared/validators/vuelidate/useValidate.js +1 -2
  864. package/dist/testing/appShell.js +1 -2
  865. package/dist/testing/closeButtons.js +1 -2
  866. package/dist/testing/declaredDependencies.js +1 -2
  867. package/dist/testing/generatedRoutes.js +1 -2
  868. package/dist/testing/routeHistory.js +1 -2
  869. package/dist/testing/sortableLists.js +1 -2
  870. package/dist/testing/typedRouter.js +1 -2
  871. package/dist/vendor/@cropper/element/dist/element.esm.raw.js +2 -3
  872. package/dist/vendor/@cropper/element/dist/element.esm.raw.js.map +1 -1
  873. package/dist/vendor/@cropper/element-canvas/dist/element-canvas.esm.raw.js +2 -3
  874. package/dist/vendor/@cropper/element-canvas/dist/element-canvas.esm.raw.js.map +1 -1
  875. package/dist/vendor/@cropper/element-crosshair/dist/element-crosshair.esm.raw.js +2 -3
  876. package/dist/vendor/@cropper/element-crosshair/dist/element-crosshair.esm.raw.js.map +1 -1
  877. package/dist/vendor/@cropper/element-grid/dist/element-grid.esm.raw.js +2 -3
  878. package/dist/vendor/@cropper/element-grid/dist/element-grid.esm.raw.js.map +1 -1
  879. package/dist/vendor/@cropper/element-handle/dist/element-handle.esm.raw.js +2 -3
  880. package/dist/vendor/@cropper/element-handle/dist/element-handle.esm.raw.js.map +1 -1
  881. package/dist/vendor/@cropper/element-image/dist/element-image.esm.raw.js +77 -62
  882. package/dist/vendor/@cropper/element-image/dist/element-image.esm.raw.js.map +1 -1
  883. package/dist/vendor/@cropper/element-selection/dist/element-selection.esm.raw.js +199 -54
  884. package/dist/vendor/@cropper/element-selection/dist/element-selection.esm.raw.js.map +1 -1
  885. package/dist/vendor/@cropper/element-shade/dist/element-shade.esm.raw.js +12 -6
  886. package/dist/vendor/@cropper/element-shade/dist/element-shade.esm.raw.js.map +1 -1
  887. package/dist/vendor/@cropper/element-viewer/dist/element-viewer.esm.raw.js +9 -10
  888. package/dist/vendor/@cropper/element-viewer/dist/element-viewer.esm.raw.js.map +1 -1
  889. package/dist/vendor/@cropper/utils/dist/utils.esm.raw.js +90 -48
  890. package/dist/vendor/@cropper/utils/dist/utils.esm.raw.js.map +1 -1
  891. package/dist/vendor/{cropperjs2 → cropperjs}/dist/cropper.esm.raw.js +11 -12
  892. package/dist/vendor/cropperjs/dist/cropper.esm.raw.js.map +1 -0
  893. package/dist/vendor/rusha/dist/rusha.js +1 -2
  894. package/dist/vendor/uuid/dist/rng.js +1 -2
  895. package/dist/vendor/uuid/dist/stringify.js +1 -2
  896. package/dist/vendor/uuid/dist/v1.js +1 -2
  897. package/dist/vendor/uuid/dist/v4.js +1 -2
  898. package/package.json +10 -10
  899. package/src/eslint/adminConfig.mjs +2 -1
  900. package/src/eslint/oxlint-admin.json +3 -0
  901. package/dist/vendor/cropperjs2/dist/cropper.esm.raw.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"filterFactory.js","names":["SORT_URL_PARAM","END_FILTER_MARKER","RELAXED_IN_HASH","relaxHashEncoding","value","match","isSameFilterValue","isArray","a","b","item","index","encodeFilterHash","params","key","data","isUndefined","isNull","isEmptyArray","isObject","isEmptyObject","isString","sortBy","buildFilterHash","filters","field","filterConfig","hash","isRouterSafeHash","defaultRenderOptions","createFilterStore","reactive","filterFields","acc","cloneDeep","createFilter","config","filter","defaultValue","resolveValue","options","defaultGlobalOptions","store","fallback","useFilterClearHelpers","clearOne","name","clearAll","filterName","filterData","clearOneFilterSelected","isClearable","selectedFound","filterSelected","foundIndex","optionValue","newArray","toRaw","isNumber","isBoolean","clearAllFilterSelected","FilterHelpersMoreOptionsDefault","useFilterHelpers","moreOptions","storeKey","pageStoreKey","datatablePageKey","getCurrentInstance","provide","DatatablePageStoreKey","getFilterDataForStoring","serializeFilters","includeSort","pagination","deserializeFilters","markerIndex","result","sortParam","order","SortOrder","fieldConfig","items","replaceHash","url","state","patched","updateLocationHash","serialized","resetLocationHash","parseLocationHash","storeFilterLocalStorage","loadFilterLocalStorage","stored","useDatatablePageStore","source","storedFromHash","restoredPage","consumeStoredPage","callback","hashDescribesThisView","tryConvertNumber","stringToNumber","tryConvertBoolean","stringToBooleanExact"],"sources":["../../../../src/domains/filters/composables/filterFactory.ts"],"sourcesContent":["import { getCurrentInstance, provide, reactive, type Ref, toRaw } from 'vue'\nimport { datatablePageKey, useDatatablePageStore } from '@/domains/system/store/datatablePageStore'\nimport { DatatablePageStoreKey } from '@/domains/filters/utils/filterInjectionKeys'\nimport {\n cloneDeep,\n isArray,\n isBoolean,\n isEmptyArray,\n isEmptyObject,\n isNull,\n isNumber,\n isObject,\n isString,\n isUndefined,\n} from '@/shared/utils/common'\nimport type { AnyFn } from '@vueuse/core'\nimport type { Pagination } from '@/domains/api/composables/pagination'\nimport { type DatatableSortBy } from '@/domains/filters/datatable/utils/datatableColumns'\nimport { SortOrder } from '@/domains/api/types/SortOrder'\nimport { stringToBooleanExact, stringToNumber } from '@/shared/utils/string'\nimport type { ValueObjectOption } from '@/shared/types/ValueObject'\n\nexport type FilterStoreIdentifier = { system: string; subject: string }\n\nconst SORT_URL_PARAM = '_sort'\nconst END_FILTER_MARKER = '~'\n\n// `URLSearchParams` percent-encodes characters a URL fragment accepts verbatim, and vue-router\n// then runs `encodeURI` over the hash, which escapes the `%` a second time — `_sort=id%2Cdesc`\n// arrives as `id%252Cdesc` and the sort is silently lost. Handing these back keeps a built hash\n// stable through `router.push({ hash })`. `~` stays encoded because the end marker relies on it\n// never occurring inside a value; `&`, `=` carry the structure, `+` reads back as a space.\nconst RELAXED_IN_HASH: Record<string, string> = {\n '%2C': ',',\n '%3A': ':',\n '%2F': '/',\n '%40': '@',\n '%24': '$',\n '%21': '!',\n '%27': \"'\",\n '%28': '(',\n '%29': ')',\n '%3B': ';',\n '%3F': '?',\n}\nconst relaxHashEncoding = (value: string) =>\n value.replace(/%(2C|3A|2F|40|24|21|27|28|29|3B|3F)/g, (match) => RELAXED_IN_HASH[match]!)\n\n// `structuredClone` gives every array default a fresh identity, so `!==` is always true for them\n// and an array default would be written into the url on every submit.\nconst isSameFilterValue = (a: AllowedFilterValues, b: AllowedFilterValues): boolean => {\n if (isArray(a) && isArray(b)) {\n return a.length === b.length && a.every((item, index) => item === b[index])\n }\n return a === b\n}\n\nconst encodeFilterHash = (data: Record<string, AllowedFilterValues>, sortBy?: DatatableSortBy): string => {\n const params = new URLSearchParams()\n for (const key in data) {\n const value = data[key]\n if (isUndefined(value) || isNull(value)) continue\n if (isArray(value) && isEmptyArray(value)) continue\n if (isObject(value) && isEmptyObject(value)) continue\n if (isString(value) && value.length === 0) continue\n params.set(key, isArray(value) ? value.join(',') : String(value))\n }\n if (sortBy) {\n params.set(SORT_URL_PARAM, `${sortBy.key},${sortBy.order}`)\n }\n if (params.size === 0) return ''\n return relaxHashEncoding(params.toString()) + END_FILTER_MARKER\n}\n\n/**\n * Hash for a filter link, with values equal to their default left out.\n *\n * Pair it with `router.push({ name, hash })`, which needs the leading `#` — without it vue-router\n * glues the value onto the path instead. A hash still containing `%` (diacritics, `&`, `=`) does\n * not survive that trip; check with `isRouterSafeHash` and fall back to assigning\n * `window.location.hash` after navigating. Returns an empty string when nothing differs from\n * the defaults.\n */\nexport function buildFilterHash<F extends readonly MakeFilterOption<string>[]>(\n filterConfig: FilterConfig<F>,\n filters: Partial<Record<keyof FilterData<F> & string, AllowedFilterValues>>,\n sortBy?: DatatableSortBy\n): string {\n const data: Record<string, AllowedFilterValues> = {}\n for (const [key, value] of Object.entries(filters) as [string, AllowedFilterValues][]) {\n const field = filterConfig.fields[key as keyof FilterConfig<F>['fields']]\n if (isUndefined(field) || isSameFilterValue(value, field.default)) continue\n data[key] = value\n }\n const hash = encodeFilterHash(data, sortBy)\n return hash.length === 0 ? hash : '#' + hash\n}\n\n/** Whether `router.push({ hash })` would leave the hash intact — see `buildFilterHash`. */\nexport const isRouterSafeHash = (hash: string): boolean => !hash.includes('%')\n\nconst defaultRenderOptions: FilerRenderOptions = {\n skip: false,\n selected: true,\n xs: undefined,\n sm: undefined,\n md: undefined,\n lg: undefined,\n xl: undefined,\n}\n\nexport function createFilterStore<F extends readonly MakeFilterOption<string>[]>(filterFields: F): FilterData<F> {\n return reactive(\n filterFields.reduce((acc, field) => {\n return {\n ...acc,\n [field.name]: cloneDeep(field.default),\n }\n }, {} as FilterData<F>)\n ) as FilterData<F>\n}\n\nexport function createFilter<F extends readonly MakeFilterOption<string>[]>(\n filterFields: F,\n store: FilterData<F>,\n options?: Partial<GeneralFilterOptions>\n): {\n filterConfig: FilterConfig<F>\n filterData: FilterData<F>\n} {\n const config = filterFields.reduce(\n (acc, filter) => {\n const key = filter.name as keyof FilterData<F>\n const defaultValue = cloneDeep(filter.default)\n\n return {\n ...acc,\n [key]: {\n name: key as string,\n variant: resolveValue(filter.variant, 'eq'),\n type: resolveValue(filter.type, 'custom'),\n titleT:\n filter.titleT ??\n (options?.system && options?.subject && filter.name\n ? `${options.system}.${options.subject}.filter.${filter.name}`\n : undefined),\n apiName: resolveValue(filter.apiName, filter.name),\n clearable: resolveValue(filter.clearable, true),\n mandatory: resolveValue(filter.mandatory, false),\n multiple: isArray(defaultValue),\n advanced: resolveValue(filter.advanced, false),\n related: resolveValue(filter.related, undefined),\n exclude: resolveValue(filter.exclude, false),\n default: defaultValue,\n render: { ...defaultRenderOptions, ...resolveValue(filter.render, {}) },\n },\n }\n },\n {} as FilterConfig<F>['fields']\n )\n\n // A time interval names the field that holds its upper bound. The query builder and the selected chips\n // read that field's config without a check, so a name that is not configured fails here, by name,\n // instead of as a TypeError on the first query.\n for (const field of Object.values(config) as FilterField[]) {\n if (field.related && !(field.related in config)) {\n throw new Error(`createFilter: \"${field.name}\" names related field \"${field.related}\", which is not configured`)\n }\n }\n\n const defaultGlobalOptions: GeneralFilterOptions = {\n elastic: false,\n system: undefined,\n subject: undefined,\n simpleFilters: false,\n ...options,\n }\n\n if (defaultGlobalOptions.elastic) {\n defaultGlobalOptions.simpleFilters = true\n }\n\n const filterConfig = reactive({\n general: defaultGlobalOptions,\n touched: false,\n fields: config,\n }) as FilterConfig<F>\n\n return {\n filterConfig,\n filterData: store as FilterData<F>,\n }\n}\n\nfunction resolveValue<T>(value: T | undefined, fallback: T): T {\n return isUndefined(value) ? fallback : value\n}\n\nexport function useFilterClearHelpers<\n F extends readonly MakeFilterOption<string>[] = readonly MakeFilterOption<string>[],\n>() {\n const clearOne = (name: keyof FilterData<F>, filterData: FilterData<F>, filterConfig: FilterConfig<F>) => {\n if (!filterConfig.fields[name]?.clearable) return\n filterData[name] = cloneDeep(filterConfig.fields[name].default)\n }\n\n const clearAll = (filterData: FilterData<F>, filterConfig: FilterConfig<F>) => {\n for (const filterName in filterConfig.fields) {\n clearOne(filterName as keyof FilterData<F>, filterData, filterConfig)\n }\n }\n const clearOneFilterSelected = (\n name: string,\n optionValue: number | string,\n filterData: FilterData<F>,\n filterConfig: FilterConfig<F>,\n filterSelected: Ref<Map<string, ValueObjectOption<string | number>[]>>\n ) => {\n if (!isClearable(name, filterConfig)) return\n // update selected\n const config = filterConfig.fields[name as keyof FilterConfig<F>['fields']]\n const selectedFound = filterSelected.value.get(name)\n if (selectedFound && selectedFound.length === 1) {\n filterSelected.value.delete(name)\n } else if (selectedFound) {\n const foundIndex = selectedFound.findIndex((item) => item.value === optionValue)\n if (foundIndex !== -1) selectedFound.splice(foundIndex, 1)\n }\n // update data\n if (config.type === 'timeInterval' && config.related) {\n filterData[name as keyof FilterData<F>] = config.default\n filterData[config.related as keyof FilterData<F>] =\n filterConfig.fields[config.related as keyof FilterConfig<F>['fields']].default\n } else if (\n isArray(filterData[name as keyof FilterData<F>]) &&\n (filterData[name as keyof FilterData<F>] as any[]).length > 0\n ) {\n const foundIndex = (filterData[name as keyof FilterData<F>] as any[]).findIndex(\n (item) => String(item) === String(optionValue)\n )\n if (foundIndex !== -1) {\n const newArray = [...toRaw(filterData[name as keyof FilterData<F>] as any[])]\n newArray.splice(foundIndex, 1)\n filterData[name as keyof FilterData<F>] = newArray as AllowedFilterValues\n }\n } else if (isString(filterData[name as keyof FilterData<F>]) || isNumber(filterData[name as keyof FilterData<F>])) {\n filterData[name as keyof FilterData<F>] = config.default\n } else if (isBoolean(filterData[name as keyof FilterData<F>])) {\n filterData[name as keyof FilterData<F>] = config.default\n }\n }\n\n const clearAllFilterSelected = (\n filterData: FilterData<F>,\n filterConfig: FilterConfig<F>,\n filterSelected: Ref<Map<string, ValueObjectOption<string | number>[]>>\n ) => {\n for (const key of filterSelected.value.keys()) {\n if (isClearable(key, filterConfig)) {\n filterSelected.value.delete(key)\n }\n }\n }\n\n const isClearable = (name: string, filterConfig: FilterConfig<F>) => {\n const config = filterConfig.fields[name as keyof FilterConfig<F>['fields']]\n return !(config.mandatory || !config.clearable)\n }\n\n return {\n clearOne,\n clearAll,\n clearOneFilterSelected,\n clearAllFilterSelected,\n isClearable,\n }\n}\n\ninterface FilterHelpersMoreOptions {\n storeFiltersLocalStorage: string | boolean // false to disable, string to override store key\n populateUrlParams: boolean\n}\n\nconst FilterHelpersMoreOptionsDefault = {\n storeFiltersLocalStorage: true,\n populateUrlParams: true,\n}\n\nexport function useFilterHelpers<F extends readonly MakeFilterOption<string>[] = readonly MakeFilterOption<string>[]>(\n filterData: FilterData<F>,\n filterConfig: FilterConfig<F>,\n moreOptions: Partial<FilterHelpersMoreOptions> = {}\n) {\n const options = { ...FilterHelpersMoreOptionsDefault, ...moreOptions }\n\n let storeKey: undefined | string = undefined\n if (isString(options.storeFiltersLocalStorage)) {\n storeKey = options.storeFiltersLocalStorage\n } else if (\n isBoolean(options.storeFiltersLocalStorage) &&\n true === options.storeFiltersLocalStorage &&\n isString(filterConfig.general.system) &&\n isString(filterConfig.general.subject)\n ) {\n storeKey = 'tableFilter_' + filterConfig.general.system + '_' + filterConfig.general.subject\n }\n\n // Independent of `storeFiltersLocalStorage` being on: the remembered page is keyed even when\n // filters are not persisted. A string override is what distinguishes tables sharing a subject.\n const pageStoreKey = isString(options.storeFiltersLocalStorage)\n ? options.storeFiltersLocalStorage\n : datatablePageKey(filterConfig.general.system, filterConfig.general.subject)\n // Called from a datatable's setup, so `ADatatablePagination` picks it up. Guarded because a\n // composable may legitimately be called outside setup, and Vue would warn.\n if (getCurrentInstance()) {\n provide(DatatablePageStoreKey, pageStoreKey)\n }\n\n const { clearAll } = useFilterClearHelpers<F>()\n\n const getFilterDataForStoring = (): Record<string, AllowedFilterValues> => {\n const data: Record<string, AllowedFilterValues> = {}\n for (const filterName in filterData) {\n try {\n const key = filterName as keyof FilterData<F>\n const value = filterData[key]\n if (\n !isUndefined(value) &&\n !isNull(value) &&\n !isEmptyArray(value) &&\n !isSameFilterValue(value, filterConfig.fields[key].default)\n ) {\n data[filterName] = value\n }\n } catch (e) {\n // Ignore errors\n }\n }\n return data\n }\n\n const serializeFilters = (\n data: Record<string, AllowedFilterValues>,\n pagination: Ref<Pagination>,\n includeSort: boolean\n ): string => {\n return encodeFilterHash(data, includeSort ? pagination.value.sortBy : undefined)\n }\n\n const deserializeFilters = (\n hash: string\n ): { filters: Record<string, AllowedFilterValues>; sortBy: DatatableSortBy } | null => {\n if (!hash) return null\n if (hash.startsWith('#')) hash = hash.substring(1)\n\n // URLSearchParams percent-encodes `~` in values, so the marker cannot occur inside our own\n // data — a hash without it is foreign or truncated, and null lets localStorage take over.\n const markerIndex = hash.indexOf(END_FILTER_MARKER)\n if (markerIndex === -1) return null\n hash = hash.slice(0, markerIndex)\n\n const params = new URLSearchParams(hash)\n const result: Record<string, AllowedFilterValues> = {}\n let sortBy: DatatableSortBy = null\n\n const sortParam = params.get(SORT_URL_PARAM)\n if (sortParam) {\n const [key, order] = sortParam.split(',')\n if (key && (order === SortOrder.Asc || order === SortOrder.Desc)) {\n sortBy = { key, order }\n }\n params.delete(SORT_URL_PARAM)\n }\n\n for (const [key, value] of params.entries()) {\n const fieldConfig = filterConfig.fields[key as keyof typeof filterConfig.fields]\n if (isUndefined(fieldConfig)) {\n console.error(`Filter config not found for ${key}`)\n continue\n }\n const isMultiple = fieldConfig.multiple ?? false\n\n if (isMultiple) {\n const items = value.split(',')\n\n const allNumeric = items.every((item) => item !== '' && String(Number(item)) === item)\n\n result[key] = allNumeric ? items.map(Number) : items\n } else {\n result[key] = value\n }\n }\n\n // An empty result would still count as \"found\", shadowing localStorage.\n if (isEmptyObject(result) && isNull(sortBy)) return null\n\n return { filters: result, sortBy }\n }\n\n // A submit is not a place to step back to, so it replaces the entry. `replaceState` fires no\n // popstate, so vue-router does not run a navigation (and its guards) per submit; its `current` is\n // patched so the router's next push, which rewrites this entry from it, keeps the hash.\n const replaceHash = (hash: string) => {\n const url = window.location.pathname + window.location.search + hash\n const state = window.history.state\n const patched =\n isObject(state) && isString((state as { current?: unknown }).current)\n ? { ...state, current: ((state as { current: string }).current.split('#')[0] ?? '') + hash }\n : state\n window.history.replaceState(patched, '', url)\n }\n\n const updateLocationHash = (serialized: string) => {\n if (options.populateUrlParams === false) return\n replaceHash('#' + serialized)\n }\n\n const resetLocationHash = () => {\n if (options.populateUrlParams === false) return\n replaceHash('')\n }\n\n const parseLocationHash = () => {\n if (options.populateUrlParams === false) return null\n return deserializeFilters(window.location.hash)\n }\n\n const storeFilterLocalStorage = (serialized: string) => {\n if (!storeKey || !localStorage) return\n localStorage.setItem(storeKey, serialized)\n }\n\n const loadFilterLocalStorage = () => {\n if (!storeKey || !localStorage) return null\n const stored = localStorage.getItem(storeKey)\n if (!stored || !isString(stored)) return null\n return deserializeFilters(stored)\n }\n\n const resetFilter = (pagination: Ref<Pagination>, callback?: AnyFn) => {\n pagination.value = { ...pagination.value, page: 1 }\n if (storeKey && localStorage) {\n localStorage.removeItem(storeKey)\n }\n resetLocationHash()\n filterConfig.touched = false\n if (callback) callback()\n }\n\n const submitFilter = (pagination: Ref<Pagination>, callback?: AnyFn) => {\n const data = getFilterDataForStoring()\n const serialized = serializeFilters(data, pagination, true)\n updateLocationHash(serialized)\n storeFilterLocalStorage(serialized)\n pagination.value = { ...pagination.value, page: 1 }\n filterConfig.touched = false\n if (callback) callback()\n }\n\n const loadStoredFilters = (pagination: Ref<Pagination>, callback?: AnyFn) => {\n const { consumeStoredPage } = useDatatablePageStore()\n let source: 'hash' | 'localStorage' = 'hash'\n let storedFromHash = parseLocationHash()\n if (isNull(storedFromHash)) {\n source = 'localStorage'\n storedFromHash = loadFilterLocalStorage()\n }\n if (isNull(storedFromHash) || (isEmptyObject(storedFromHash.filters) && isNull(storedFromHash.sortBy))) {\n const restoredPage = consumeStoredPage(pageStoreKey)\n if (restoredPage !== null) {\n pagination.value = { ...pagination.value, page: restoredPage }\n }\n if (callback) callback()\n return false\n }\n\n // A hash naming at least one field is authoritative: it arrives from a link, or from stepping\n // back to an older address, and in both cases it describes the whole view. Without this reset\n // the fields it does not mention keep whatever the module-level filter store still holds from\n // an earlier visit, so the same link lands differently depending on how the user got to it.\n // On a fresh page load the store is already at its defaults and this is a no-op. Local storage\n // keeps merging, because there the absent fields were left out as equal to their default.\n //\n // A hash carrying only `_sort` is excluded on purpose. Unknown keys are dropped before this\n // point, so such a hash also results from a link meant for a different table sharing the page\n // - it must not wipe this one's filter. Only `clearable` fields are reset, as everywhere else.\n const hashDescribesThisView = source === 'hash' && !isEmptyObject(storedFromHash.filters)\n if (hashDescribesThisView) {\n clearAll(filterData, filterConfig)\n }\n\n for (const filterName in filterData) {\n const key = filterName as keyof FilterData<F>\n let value = storedFromHash.filters[key]\n if (isUndefined(value)) continue\n if (isString(value)) {\n const tryConvertNumber = stringToNumber(value)\n if (!isNull(tryConvertNumber) && String(tryConvertNumber) === value) {\n value = tryConvertNumber\n } else {\n const tryConvertBoolean = stringToBooleanExact(value)\n if (!isNull(tryConvertBoolean)) {\n value = tryConvertBoolean\n }\n }\n }\n filterData[key] = value\n }\n if (source === 'localStorage' && storeKey && localStorage) {\n const stored = localStorage.getItem(storeKey)\n if (stored) {\n updateLocationHash(stored)\n }\n }\n // Drained either way: the flag means \"the next list I land on should restore its page\", so\n // leaving it set would hand the remembered page to whichever table comes after this one.\n const restoredPage = consumeStoredPage(pageStoreKey)\n pagination.value = {\n ...pagination.value,\n // A link need not carry the sort. Taking `null` from it would drop `order[...]` from the\n // query, and paging without ORDER BY can repeat or skip rows.\n sortBy: storedFromHash.sortBy ?? pagination.value.sortBy,\n // A hash replaces the view, so a link starts at the first page. A restored page still wins:\n // the flag behind it is only ever set by the close button, which means \"I am coming back to\n // this list\", and that address carries the list's own hash along with it.\n page: restoredPage ?? (source === 'hash' ? 1 : pagination.value.page),\n }\n if (hashDescribesThisView) {\n // Local storage mirrors the last applied state, so a link becomes the view the user returns\n // to. Re-serialized rather than stored verbatim, to drop values equal to their default.\n // A sort-only hash is not a link to this view, so it does not overwrite what is remembered.\n storeFilterLocalStorage(serializeFilters(getFilterDataForStoring(), pagination, true))\n }\n if (callback) callback()\n return true\n }\n\n return {\n loadStoredFilters,\n resetFilter,\n submitFilter,\n serializeFilters,\n deserializeFilters,\n }\n}\n\nexport type AllowedFilterValues = number | number[] | string | string[] | null | undefined | boolean\n\nexport interface GeneralFilterOptions {\n system?: string\n subject?: string\n elastic?: boolean\n simpleFilters?: boolean\n}\n\nexport interface FilerRenderOptions {\n skip: boolean\n // Whether the field is shown as a selected-filter chip (FiltersSelected). Default true.\n // Optional for backward compatibility (other admins may construct FilerRenderOptions).\n selected?: boolean\n xs: number | undefined\n sm: number | undefined\n md: number | undefined\n lg: number | undefined\n xl: number | undefined\n}\n\nexport type FilterVariant =\n | 'search'\n | 'lt'\n | 'in'\n | 'notIn'\n | 'endsWith'\n | 'startsWith'\n | 'memberOf'\n | 'neq'\n | 'gte'\n | 'gt'\n | 'eq'\n | 'lte'\n | 'custom'\n\nexport type FilterType = 'boolean' | 'datetime' | 'integer' | 'string' | 'custom' | 'timeInterval'\n\nexport interface MakeFilterOption<TName extends string = string> {\n name: TName\n default: AllowedFilterValues\n type?: FilterType\n variant?: FilterVariant\n titleT?: string\n apiName?: string\n clearable?: boolean\n mandatory?: boolean\n advanced?: boolean\n exclude?: boolean\n related?: string | undefined\n render?: Partial<FilerRenderOptions>\n}\n\nexport interface FilterField {\n name: string\n type: FilterType\n variant: FilterVariant\n titleT?: string\n default: AllowedFilterValues\n apiName: string\n clearable: boolean\n mandatory: boolean\n multiple: boolean\n advanced: boolean\n exclude: boolean\n related: string | undefined\n render: FilerRenderOptions\n}\n\nexport type FilterConfig<F extends readonly MakeFilterOption<string>[] = readonly MakeFilterOption<string>[]> = {\n general: GeneralFilterOptions\n touched: boolean\n fields: {\n [P in F[number]['name']]: FilterField\n }\n}\n\nexport type FilterData<F extends readonly MakeFilterOption<string>[] = readonly MakeFilterOption<string>[]> = {\n [P in F[number]['name']]: AllowedFilterValues\n}\n"],"mappings":";;;;;;;AAwBA,IAAMA,IAAiB,SACjBC,IAAoB,KAOpBC,IAA0C;CAC9C,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;AACT,GACMC,KAAqB,MACzBC,EAAM,QAAQ,yCAAyC,MAAUF,EAAgBG,EAAO,GAIpFC,KAAqB,GAAwB,MAC7CC,EAAQC,CAAC,KAAKD,EAAQE,CAAC,IAClBD,EAAE,WAAWC,EAAE,UAAUD,EAAE,OAAO,GAAM,MAAUE,MAASD,EAAEE,EAAM,IAErEH,MAAMC,GAGTG,KAAoB,GAA2C,MAAqC;CACxG,IAAMC,IAAS,IAAI,gBAAgB;CACnC,KAAK,IAAMC,KAAOC,GAAM;EACtB,IAAMX,IAAQW,EAAKD;EACnB,AAAIE,EAAYZ,CAAK,KAAKa,EAAOb,CAAK,KAClCG,EAAQH,CAAK,KAAKc,EAAad,CAAK,KACpCe,EAASf,CAAK,KAAKgB,EAAchB,CAAK,KACtCiB,EAASjB,CAAK,KAAKA,EAAM,WAAW,KACxCS,EAAO,IAAIC,GAAKP,EAAQH,CAAK,IAAIA,EAAM,KAAK,GAAG,IAAI,OAAOA,CAAK,CAAC;CAClE;CAKA,OAJIkB,KACFT,EAAO,IAAIb,GAAgB,GAAGsB,EAAO,IAAI,GAAGA,EAAO,OAAO,GAExDT,EAAO,SAAS,IAAU,KACvBV,EAAkBU,EAAO,SAAS,CAAC,IAAIZ;AAChD;AAWA,SAAgBsB,EACd,GACA,GACA,GACQ;CACR,IAAMR,IAA4C,CAAC;CACnD,KAAK,IAAM,CAACD,GAAKV,MAAU,OAAO,QAAQoB,CAAO,GAAsC;EACrF,IAAMC,IAAQC,EAAa,OAAOZ;EAClC,AAAIE,EAAYS,CAAK,KAAKnB,EAAkBF,GAAOqB,EAAM,OAAO,MAChE,EAAKX,KAAOV;CACd;CACA,IAAMuB,IAAOf,EAAiBG,GAAMO,CAAM;CAC1C,OAAOK,EAAK,WAAW,IAAIA,IAAO,MAAMA;AAC1C;AAGA,IAAaC,KAAoB,MAA0B,CAACD,EAAK,SAAS,GAAG,GAEvEE,IAA2C;CAC/C,MAAM;CACN,UAAU;CACV,IAAI,KAAA;CACJ,IAAI,KAAA;CACJ,IAAI,KAAA;CACJ,IAAI,KAAA;CACJ,IAAI,KAAA;AACN;AAEA,SAAgBC,EAAiE,GAAgC;CAC/G,OAAOC,EACLC,EAAa,QAAQ,GAAK,OACjB;EACL,GAAGC;GACFR,EAAM,OAAOS,EAAUT,EAAM,OAAO;CACvC,IACC,CAAC,CAAkB,CACxB;AACF;AAEA,SAAgBU,EACd,GACA,GACA,GAIA;CACA,IAAMC,IAASJ,EAAa,QACzB,GAAK,MAAW;EACf,IAAMlB,IAAMuB,EAAO,MACbC,IAAeJ,EAAUG,EAAO,OAAO;EAE7C,OAAO;GACL,GAAGJ;IACFnB,IAAM;IACL,MAAMA;IACN,SAASyB,EAAaF,EAAO,SAAS,IAAI;IAC1C,MAAME,EAAaF,EAAO,MAAM,QAAQ;IACxC,QACEA,EAAO,WACNG,GAAS,UAAUA,GAAS,WAAWH,EAAO,OAC3C,GAAGG,EAAQ,OAAO,GAAGA,EAAQ,QAAQ,UAAUH,EAAO,SACtD,KAAA;IACN,SAASE,EAAaF,EAAO,SAASA,EAAO,IAAI;IACjD,WAAWE,EAAaF,EAAO,WAAW,EAAI;IAC9C,WAAWE,EAAaF,EAAO,WAAW,EAAK;IAC/C,UAAU9B,EAAQ+B,CAAY;IAC9B,UAAUC,EAAaF,EAAO,UAAU,EAAK;IAC7C,SAASE,EAAaF,EAAO,SAAS,KAAA,CAAS;IAC/C,SAASE,EAAaF,EAAO,SAAS,EAAK;IAC3C,SAASC;IACT,QAAQ;KAAE,GAAGT;KAAsB,GAAGU,EAAaF,EAAO,QAAQ,CAAC,CAAC;IAAE;GACxE;EACF;CACF,GACA,CAAC,CACH;CAKA,KAAK,IAAMZ,KAAS,OAAO,OAAOW,CAAM,GACtC,IAAIX,EAAM,WAAW,EAAEA,EAAM,WAAWW,IACtC,MAAU,MAAM,kBAAkBX,EAAM,KAAK,yBAAyBA,EAAM,QAAQ,2BAA2B;CAInH,IAAMgB,IAA6C;EACjD,SAAS;EACT,QAAQ,KAAA;EACR,SAAS,KAAA;EACT,eAAe;EACf,GAAGD;CACL;CAYA,OAVIC,EAAqB,YACvB,EAAqB,gBAAgB,KAShC;EACL,cAPmBV,EAAS;GAC5B,SAASU;GACT,SAAS;GACT,QAAQL;EACV,CAGE;EACA,YAAYM;CACd;AACF;AAEA,SAASH,EAAgB,GAAsB,GAAgB;CAC7D,OAAOvB,EAAYZ,CAAK,IAAIuC,IAAWvC;AACzC;AAEA,SAAgBwC,IAEZ;CACF,IAAMC,KAAY,GAA2B,GAA2B,MAAkC;EACxG,AAAKnB,EAAa,OAAOoB,EAAK,EAAE,cAChC,EAAWA,KAAQZ,EAAUR,EAAa,OAAOoB,EAAK,CAAC,OAAO;CAChE,GAEMC,KAAY,GAA2B,MAAkC;EAC7E,KAAK,IAAMC,KAActB,EAAa,QACpC,EAASsB,GAAmCC,GAAYvB,CAAY;CAExE,GACMwB,KACJ,GACA,GACA,GACA,GACA,MACG;EACH,IAAI,CAACC,EAAYL,GAAMpB,CAAY,GAAG;EAEtC,IAAMU,IAASV,EAAa,OAAOoB,IAC7BM,IAAgBC,EAAe,MAAM,IAAIP,CAAI;EACnD,IAAIM,KAAiBA,EAAc,WAAW,GAC5C,EAAe,MAAM,OAAON,CAAI;OAC3B,IAAIM,GAAe;GACxB,IAAME,IAAaF,EAAc,WAAW,MAAS1C,EAAK,UAAU6C,CAAW;GAC/E,AAAID,MAAe,MAAIF,EAAc,OAAOE,GAAY,CAAC;EAC3D;EAEA,IAAIlB,EAAO,SAAS,kBAAkBA,EAAO,SAE3C,AADA,EAAWU,KAA+BV,EAAO,SACjD,EAAWA,EAAO,WAChBV,EAAa,OAAOU,EAAO,QAA2C,CAAC;OACpE,IACL7B,EAAQ0C,EAAWH,EAA4B,KAC9CG,EAAWH,EAA4B,CAAW,SAAS,GAC5D;GACA,IAAMQ,IAAcL,EAAWH,EAA4B,CAAW,WACnE,MAAS,OAAOpC,CAAI,MAAM,OAAO6C,CAAW,CAC/C;GACA,IAAID,MAAe,IAAI;IACrB,IAAME,IAAW,CAAC,GAAGC,EAAMR,EAAWH,EAAqC,CAAC;IAE5E,AADAU,EAAS,OAAOF,GAAY,CAAC,GAC7B,EAAWR,KAA+BU;GAC5C;EACF,OAAO,CAAInC,EAAS4B,EAAWH,EAA4B,KAAKY,EAAST,EAAWH,EAA4B,KAErGa,EAAUV,EAAWH,EAA4B,OAC1D,EAAWA,KAA+BV,EAAO;CAErD,GAEMwB,KACJ,GACA,GACA,MACG;EACH,KAAK,IAAM9C,KAAOuC,EAAe,MAAM,KAAK,GAC1C,AAAIF,EAAYrC,GAAKY,CAAY,KAC/B2B,EAAe,MAAM,OAAOvC,CAAG;CAGrC,GAEMqC,KAAe,GAAc,MAAkC;EACnE,IAAMf,IAASV,EAAa,OAAOoB;EACnC,OAAO,EAAEV,EAAO,aAAa,CAACA,EAAO;CACvC;CAEA,OAAO;EACL;EACA;EACA;EACA;EACA;CACF;AACF;AAOA,IAAMyB,IAAkC;CACtC,0BAA0B;CAC1B,mBAAmB;AACrB;AAEA,SAAgBC,EACd,GACA,GACA,IAAiD,CAAC,GAClD;CACA,IAAMtB,IAAU;EAAE,GAAGqB;EAAiC,GAAGE;CAAY,GAEjEC;CACJ,AAAI3C,EAASmB,EAAQ,wBAAwB,IAC3C,IAAWA,EAAQ,2BAEnBmB,EAAUnB,EAAQ,wBAAwB,KAC1C,OAASA,EAAQ,4BACjBnB,EAASK,EAAa,QAAQ,MAAM,KACpCL,EAASK,EAAa,QAAQ,OAAO,MAErC,IAAW,iBAAiBA,EAAa,QAAQ,SAAS,MAAMA,EAAa,QAAQ;CAKvF,IAAMuC,IAAe5C,EAASmB,EAAQ,wBAAwB,IAC1DA,EAAQ,2BACR0B,EAAiBxC,EAAa,QAAQ,QAAQA,EAAa,QAAQ,OAAO;CAG9E,AAAIyC,EAAmB,KACrBC,EAAQC,GAAuBJ,CAAY;CAG7C,IAAM,EAAE,gBAAarB,EAAyB,GAExC0B,UAAqE;EACzE,IAAMvD,IAA4C,CAAC;EACnD,KAAK,IAAMiC,KAAcC,GACvB,IAAI;GACF,IAAMnC,IAAMkC,GACN5C,IAAQ6C,EAAWnC;GACzB,AACE,CAACE,EAAYZ,CAAK,KAClB,CAACa,EAAOb,CAAK,KACb,CAACc,EAAad,CAAK,KACnB,CAACE,EAAkBF,GAAOsB,EAAa,OAAOZ,EAAI,CAAC,OAAO,MAE1D,EAAKkC,KAAc5C;EAEvB,QAAY,CAEZ;EAEF,OAAOW;CACT,GAEMwD,KACJ,GACA,GACA,MAEO3D,EAAiBG,GAAMyD,IAAcC,EAAW,MAAM,SAAS,KAAA,CAAS,GAG3EC,KACJ,MACqF;EACrF,IAAI,CAAC/C,GAAM,OAAO;EAClB,AAAIA,EAAK,WAAW,GAAG,MAAG,IAAOA,EAAK,UAAU,CAAC;EAIjD,IAAMgD,IAAchD,EAAK,QAAQ1B,CAAiB;EAClD,IAAI0E,MAAgB,IAAI,OAAO;EAC/B,IAAOhD,EAAK,MAAM,GAAGgD,CAAW;EAEhC,IAAM9D,IAAS,IAAI,gBAAgBc,CAAI,GACjCiD,IAA8C,CAAC,GACjDtD,IAA0B,MAExBuD,IAAYhE,EAAO,IAAIb,CAAc;EAC3C,IAAI6E,GAAW;GACb,IAAM,CAAC/D,GAAKgE,KAASD,EAAU,MAAM,GAAG;GAIxC,AAHI/D,MAAQgE,MAAUC,EAAU,OAAOD,MAAUC,EAAU,UACzD,IAAS;IAAE;IAAK;GAAM,IAExBlE,EAAO,OAAOb,CAAc;EAC9B;EAEA,KAAK,IAAM,CAACc,GAAKV,MAAUS,EAAO,QAAQ,GAAG;GAC3C,IAAMmE,IAActD,EAAa,OAAOZ;GACxC,IAAIE,EAAYgE,CAAW,GACzB,QAAQ,MAAM,+BAA+BlE,GAAK;QAKpD,IAFmBkE,EAAY,YAAY,IAE3B;IACd,IAAMC,IAAQ7E,EAAM,MAAM,GAAG;IAI7B,EAAOU,KAFYmE,EAAM,OAAO,MAASvE,MAAS,MAAM,OAAO,OAAOA,CAAI,CAAC,MAAMA,CAEnE,IAAauE,EAAM,IAAI,MAAM,IAAIA;GACjD,OACE,EAAOnE,KAAOV;EAElB;EAKA,OAFIgB,EAAcwD,CAAM,KAAK3D,EAAOK,CAAM,IAAU,OAE7C;GAAE,SAASsD;GAAQ;EAAO;CACnC,GAKMM,KAAe,MAAiB;EACpC,IAAMC,IAAM,OAAO,SAAS,WAAW,OAAO,SAAS,SAASxD,GAC1DyD,IAAQ,OAAO,QAAQ,OACvBC,IACJlE,EAASiE,CAAK,KAAK/D,EAAU+D,EAAgC,OAAO,IAChE;GAAE,GAAGA;GAAO,UAAWA,EAA8B,QAAQ,MAAM,GAAG,CAAC,CAAC,MAAM,MAAMzD;EAAK,IACzFyD;EACN,OAAO,QAAQ,aAAaC,GAAS,IAAIF,CAAG;CAC9C,GAEMG,KAAsB,MAAuB;EACjD,AAAI9C,EAAQ,sBAAsB,MAClC0C,EAAY,MAAMK,CAAU;CAC9B,GAEMC,UAA0B;EAC9B,AAAIhD,EAAQ,sBAAsB,MAClC0C,EAAY,EAAE;CAChB,GAEMO,UACAjD,EAAQ,sBAAsB,KAAc,OACzCkC,EAAmB,OAAO,SAAS,IAAI,GAG1CgB,KAA2B,MAAuB;EACtD,AAAK1B,KAAa,gBAClB,aAAa,QAAQA,GAAUuB,CAAU;CAC3C,GAEMI,UAA+B;EACnC,IAAI,CAAC3B,KAAY,CAAC,cAAc,OAAO;EACvC,IAAM4B,IAAS,aAAa,QAAQ5B,CAAQ;EAE5C,OADI,CAAC4B,KAAU,CAACvE,EAASuE,CAAM,IAAU,OAClClB,EAAmBkB,CAAM;CAClC;CAoGA,OAAO;EACL,oBA/EyB,GAA6B,MAAqB;GAC3E,IAAM,EAAE,yBAAsBC,EAAsB,GAChDC,IAAkC,QAClCC,IAAiBN,EAAkB;GAKvC,IAJIxE,EAAO8E,CAAc,MACvB,IAAS,gBACT,IAAiBJ,EAAuB,IAEtC1E,EAAO8E,CAAc,KAAM3E,EAAc2E,EAAe,OAAO,KAAK9E,EAAO8E,EAAe,MAAM,GAAI;IACtG,IAAMC,IAAeC,EAAkBhC,CAAY;IAKnD,OAJI+B,MAAiB,SACnB,EAAW,QAAQ;KAAE,GAAGvB,EAAW;KAAO,MAAMuB;IAAa,IAE3DE,KAAUA,EAAS,GAChB;GACT;GAYA,IAAMC,IAAwBL,MAAW,UAAU,CAAC1E,EAAc2E,EAAe,OAAO;GACxF,AAAII,KACFpD,EAASE,GAAYvB,CAAY;GAGnC,KAAK,IAAMsB,KAAcC,GAAY;IACnC,IAAMnC,IAAMkC,GACR5C,IAAQ2F,EAAe,QAAQjF;IACnC,IAAI,GAAYV,CAAK,GACrB;SAAIiB,EAASjB,CAAK,GAAG;MACnB,IAAMgG,IAAmBC,EAAejG,CAAK;MAC7C,IAAI,CAACa,EAAOmF,CAAgB,KAAK,OAAOA,CAAgB,MAAMhG,GAC5D,IAAQgG;WACH;OACL,IAAME,IAAoBC,EAAqBnG,CAAK;OACpD,AAAKa,EAAOqF,CAAiB,MAC3B,IAAQA;MAEZ;KACF;KACA,EAAWxF,KAAOV;IADlB;GAEF;GACA,IAAI0F,MAAW,kBAAkB9B,KAAY,cAAc;IACzD,IAAM4B,IAAS,aAAa,QAAQ5B,CAAQ;IAC5C,AAAI4B,KACFN,EAAmBM,CAAM;GAE7B;GAGA,IAAMI,IAAeC,EAAkBhC,CAAY;GAkBnD,OAjBA,EAAW,QAAQ;IACjB,GAAGQ,EAAW;IAGd,QAAQsB,EAAe,UAAUtB,EAAW,MAAM;IAIlD,MAAMuB,MAAiBF,MAAW,SAAS,IAAIrB,EAAW,MAAM;GAClE,GACI0B,KAIFT,EAAwBnB,EAAiBD,EAAwB,GAAGG,GAAY,EAAI,CAAC,GAEnFyB,KAAUA,EAAS,GAChB;EACT;EAIE,cApGmB,GAA6B,MAAqB;GAOrE,AANA,EAAW,QAAQ;IAAE,GAAGzB,EAAW;IAAO,MAAM;GAAE,GAC9CT,KAAY,gBACd,aAAa,WAAWA,CAAQ,GAElCwB,EAAkB,GAClB,EAAa,UAAU,IACnBU,KAAUA,EAAS;EACzB;EA6FE,eA3FoB,GAA6B,MAAqB;GACtE,IAAMnF,IAAOuD,EAAwB,GAC/BiB,IAAahB,EAAiBxD,GAAM0D,GAAY,EAAI;GAK1D,AAJAa,EAAmBC,CAAU,GAC7BG,EAAwBH,CAAU,GAClC,EAAW,QAAQ;IAAE,GAAGd,EAAW;IAAO,MAAM;GAAE,GAClD,EAAa,UAAU,IACnByB,KAAUA,EAAS;EACzB;EAoFE;EACA;CACF;AACF"}
1
+ {"version":3,"file":"filterFactory.js","names":["SORT_URL_PARAM","END_FILTER_MARKER","RELAXED_IN_HASH","relaxHashEncoding","value","match","isSameFilterValue","isArray","a","b","item","index","encodeFilterHash","params","key","data","isUndefined","isNull","isEmptyArray","isObject","isEmptyObject","isString","sortBy","buildFilterHash","filters","field","filterConfig","hash","isRouterSafeHash","defaultRenderOptions","createFilterStore","reactive","filterFields","acc","cloneDeep","createFilter","config","filter","defaultValue","resolveValue","options","defaultGlobalOptions","store","fallback","useFilterClearHelpers","clearOne","name","clearAll","filterName","filterData","clearOneFilterSelected","isClearable","selectedFound","filterSelected","foundIndex","optionValue","newArray","toRaw","isNumber","isBoolean","clearAllFilterSelected","FilterHelpersMoreOptionsDefault","useFilterHelpers","moreOptions","storeKey","pageStoreKey","datatablePageKey","getCurrentInstance","provide","DatatablePageStoreKey","getFilterDataForStoring","serializeFilters","includeSort","pagination","deserializeFilters","markerIndex","result","sortParam","order","SortOrder","fieldConfig","items","replaceHash","url","state","patched","updateLocationHash","serialized","resetLocationHash","parseLocationHash","storeFilterLocalStorage","loadFilterLocalStorage","stored","useDatatablePageStore","source","storedFromHash","restoredPage","consumeStoredPage","callback","hashDescribesThisView","tryConvertNumber","stringToNumber","tryConvertBoolean","stringToBooleanExact","useDatatableList","FilterConfigKey","FilterDataKey","DatatablePaginationKey","filterHelpersOptions","getList","useDebounceFn","fetchList","submitFilterAction","submitFilter","onMounted","loadStoredFilters","resetFilter"],"sources":["../../../../src/domains/filters/composables/filterFactory.ts"],"sourcesContent":["import { getCurrentInstance, onMounted, provide, reactive, type Ref, toRaw } from 'vue'\nimport { useDebounceFn } from '@vueuse/core'\nimport { datatablePageKey, useDatatablePageStore } from '@/domains/system/store/datatablePageStore'\nimport {\n DatatablePageStoreKey,\n DatatablePaginationKey,\n FilterConfigKey,\n FilterDataKey,\n} from '@/domains/filters/utils/filterInjectionKeys'\nimport {\n cloneDeep,\n isArray,\n isBoolean,\n isEmptyArray,\n isEmptyObject,\n isNull,\n isNumber,\n isObject,\n isString,\n isUndefined,\n} from '@/shared/utils/common'\nimport type { AnyFn } from '@vueuse/core'\nimport type { Pagination } from '@/domains/api/composables/pagination'\nimport { type DatatableSortBy } from '@/domains/filters/datatable/utils/datatableColumns'\nimport { SortOrder } from '@/domains/api/types/SortOrder'\nimport { stringToBooleanExact, stringToNumber } from '@/shared/utils/string'\nimport type { ValueObjectOption } from '@/shared/types/ValueObject'\n\nexport type FilterStoreIdentifier = { system: string; subject: string }\n\nconst SORT_URL_PARAM = '_sort'\nconst END_FILTER_MARKER = '~'\n\n// `URLSearchParams` percent-encodes characters a URL fragment accepts verbatim, and vue-router\n// then runs `encodeURI` over the hash, which escapes the `%` a second time — `_sort=id%2Cdesc`\n// arrives as `id%252Cdesc` and the sort is silently lost. Handing these back keeps a built hash\n// stable through `router.push({ hash })`. `~` stays encoded because the end marker relies on it\n// never occurring inside a value; `&`, `=` carry the structure, `+` reads back as a space.\nconst RELAXED_IN_HASH: Record<string, string> = {\n '%2C': ',',\n '%3A': ':',\n '%2F': '/',\n '%40': '@',\n '%24': '$',\n '%21': '!',\n '%27': \"'\",\n '%28': '(',\n '%29': ')',\n '%3B': ';',\n '%3F': '?',\n}\nconst relaxHashEncoding = (value: string) =>\n value.replace(/%(2C|3A|2F|40|24|21|27|28|29|3B|3F)/g, (match) => RELAXED_IN_HASH[match]!)\n\n// `structuredClone` gives every array default a fresh identity, so `!==` is always true for them\n// and an array default would be written into the url on every submit.\nconst isSameFilterValue = (a: AllowedFilterValues, b: AllowedFilterValues): boolean => {\n if (isArray(a) && isArray(b)) {\n return a.length === b.length && a.every((item, index) => item === b[index])\n }\n return a === b\n}\n\nconst encodeFilterHash = (data: Record<string, AllowedFilterValues>, sortBy?: DatatableSortBy): string => {\n const params = new URLSearchParams()\n for (const key in data) {\n const value = data[key]\n if (isUndefined(value) || isNull(value)) continue\n if (isArray(value) && isEmptyArray(value)) continue\n if (isObject(value) && isEmptyObject(value)) continue\n if (isString(value) && value.length === 0) continue\n params.set(key, isArray(value) ? value.join(',') : String(value))\n }\n if (sortBy) {\n params.set(SORT_URL_PARAM, `${sortBy.key},${sortBy.order}`)\n }\n if (params.size === 0) return ''\n return relaxHashEncoding(params.toString()) + END_FILTER_MARKER\n}\n\n/**\n * Hash for a filter link, with values equal to their default left out.\n *\n * Pair it with `router.push({ name, hash })`, which needs the leading `#` — without it vue-router\n * glues the value onto the path instead. A hash still containing `%` (diacritics, `&`, `=`) does\n * not survive that trip; check with `isRouterSafeHash` and fall back to assigning\n * `window.location.hash` after navigating. Returns an empty string when nothing differs from\n * the defaults.\n */\nexport function buildFilterHash<F extends readonly MakeFilterOption<string>[]>(\n filterConfig: FilterConfig<F>,\n filters: Partial<Record<keyof FilterData<F> & string, AllowedFilterValues>>,\n sortBy?: DatatableSortBy\n): string {\n const data: Record<string, AllowedFilterValues> = {}\n for (const [key, value] of Object.entries(filters) as [string, AllowedFilterValues][]) {\n const field = filterConfig.fields[key as keyof FilterConfig<F>['fields']]\n if (isUndefined(field) || isSameFilterValue(value, field.default)) continue\n data[key] = value\n }\n const hash = encodeFilterHash(data, sortBy)\n return hash.length === 0 ? hash : '#' + hash\n}\n\n/** Whether `router.push({ hash })` would leave the hash intact — see `buildFilterHash`. */\nexport const isRouterSafeHash = (hash: string): boolean => !hash.includes('%')\n\nconst defaultRenderOptions: FilerRenderOptions = {\n skip: false,\n selected: true,\n xs: undefined,\n sm: undefined,\n md: undefined,\n lg: undefined,\n xl: undefined,\n}\n\nexport function createFilterStore<F extends readonly MakeFilterOption<string>[]>(filterFields: F): FilterData<F> {\n return reactive(\n filterFields.reduce((acc, field) => {\n return {\n ...acc,\n [field.name]: cloneDeep(field.default),\n }\n }, {} as FilterData<F>)\n ) as FilterData<F>\n}\n\nexport function createFilter<F extends readonly MakeFilterOption<string>[]>(\n filterFields: F,\n store: FilterData<F>,\n options?: Partial<GeneralFilterOptions>\n): {\n filterConfig: FilterConfig<F>\n filterData: FilterData<F>\n} {\n const config = filterFields.reduce(\n (acc, filter) => {\n const key = filter.name as keyof FilterData<F>\n const defaultValue = cloneDeep(filter.default)\n\n return {\n ...acc,\n [key]: {\n name: key as string,\n variant: resolveValue(filter.variant, 'eq'),\n type: resolveValue(filter.type, 'custom'),\n titleT:\n filter.titleT ??\n (options?.system && options?.subject && filter.name\n ? `${options.system}.${options.subject}.filter.${filter.name}`\n : undefined),\n apiName: resolveValue(filter.apiName, filter.name),\n clearable: resolveValue(filter.clearable, true),\n mandatory: resolveValue(filter.mandatory, false),\n multiple: isArray(defaultValue),\n advanced: resolveValue(filter.advanced, false),\n related: resolveValue(filter.related, undefined),\n exclude: resolveValue(filter.exclude, false),\n default: defaultValue,\n render: { ...defaultRenderOptions, ...resolveValue(filter.render, {}) },\n },\n }\n },\n {} as FilterConfig<F>['fields']\n )\n\n // A time interval names the field that holds its upper bound. The query builder and the selected chips\n // read that field's config without a check, so a name that is not configured fails here, by name,\n // instead of as a TypeError on the first query.\n for (const field of Object.values(config) as FilterField[]) {\n if (field.related && !(field.related in config)) {\n throw new Error(`createFilter: \"${field.name}\" names related field \"${field.related}\", which is not configured`)\n }\n }\n\n const defaultGlobalOptions: GeneralFilterOptions = {\n elastic: false,\n system: undefined,\n subject: undefined,\n simpleFilters: false,\n ...options,\n }\n\n if (defaultGlobalOptions.elastic) {\n defaultGlobalOptions.simpleFilters = true\n }\n\n const filterConfig = reactive({\n general: defaultGlobalOptions,\n touched: false,\n fields: config,\n }) as FilterConfig<F>\n\n return {\n filterConfig,\n filterData: store as FilterData<F>,\n }\n}\n\nfunction resolveValue<T>(value: T | undefined, fallback: T): T {\n return isUndefined(value) ? fallback : value\n}\n\nexport function useFilterClearHelpers<\n F extends readonly MakeFilterOption<string>[] = readonly MakeFilterOption<string>[],\n>() {\n const clearOne = (name: keyof FilterData<F>, filterData: FilterData<F>, filterConfig: FilterConfig<F>) => {\n if (!filterConfig.fields[name]?.clearable) return\n filterData[name] = cloneDeep(filterConfig.fields[name].default)\n }\n\n const clearAll = (filterData: FilterData<F>, filterConfig: FilterConfig<F>) => {\n for (const filterName in filterConfig.fields) {\n clearOne(filterName as keyof FilterData<F>, filterData, filterConfig)\n }\n }\n const clearOneFilterSelected = (\n name: string,\n optionValue: number | string,\n filterData: FilterData<F>,\n filterConfig: FilterConfig<F>,\n filterSelected: Ref<Map<string, ValueObjectOption<string | number>[]>>\n ) => {\n if (!isClearable(name, filterConfig)) return\n // update selected\n const config = filterConfig.fields[name as keyof FilterConfig<F>['fields']]\n const selectedFound = filterSelected.value.get(name)\n if (selectedFound && selectedFound.length === 1) {\n filterSelected.value.delete(name)\n } else if (selectedFound) {\n const foundIndex = selectedFound.findIndex((item) => item.value === optionValue)\n if (foundIndex !== -1) selectedFound.splice(foundIndex, 1)\n }\n // update data\n if (config.type === 'timeInterval' && config.related) {\n filterData[name as keyof FilterData<F>] = config.default\n filterData[config.related as keyof FilterData<F>] =\n filterConfig.fields[config.related as keyof FilterConfig<F>['fields']].default\n } else if (\n isArray(filterData[name as keyof FilterData<F>]) &&\n (filterData[name as keyof FilterData<F>] as any[]).length > 0\n ) {\n const foundIndex = (filterData[name as keyof FilterData<F>] as any[]).findIndex(\n (item) => String(item) === String(optionValue)\n )\n if (foundIndex !== -1) {\n const newArray = [...toRaw(filterData[name as keyof FilterData<F>] as any[])]\n newArray.splice(foundIndex, 1)\n filterData[name as keyof FilterData<F>] = newArray as AllowedFilterValues\n }\n } else if (isString(filterData[name as keyof FilterData<F>]) || isNumber(filterData[name as keyof FilterData<F>])) {\n filterData[name as keyof FilterData<F>] = config.default\n } else if (isBoolean(filterData[name as keyof FilterData<F>])) {\n filterData[name as keyof FilterData<F>] = config.default\n }\n }\n\n const clearAllFilterSelected = (\n filterData: FilterData<F>,\n filterConfig: FilterConfig<F>,\n filterSelected: Ref<Map<string, ValueObjectOption<string | number>[]>>\n ) => {\n for (const key of filterSelected.value.keys()) {\n if (isClearable(key, filterConfig)) {\n filterSelected.value.delete(key)\n }\n }\n }\n\n const isClearable = (name: string, filterConfig: FilterConfig<F>) => {\n const config = filterConfig.fields[name as keyof FilterConfig<F>['fields']]\n return !(config.mandatory || !config.clearable)\n }\n\n return {\n clearOne,\n clearAll,\n clearOneFilterSelected,\n clearAllFilterSelected,\n isClearable,\n }\n}\n\nexport interface FilterHelpersMoreOptions {\n storeFiltersLocalStorage: string | boolean // false to disable, string to override store key\n populateUrlParams: boolean\n}\n\nconst FilterHelpersMoreOptionsDefault = {\n storeFiltersLocalStorage: true,\n populateUrlParams: true,\n}\n\nexport function useFilterHelpers<F extends readonly MakeFilterOption<string>[] = readonly MakeFilterOption<string>[]>(\n filterData: FilterData<F>,\n filterConfig: FilterConfig<F>,\n moreOptions: Partial<FilterHelpersMoreOptions> = {}\n) {\n const options = { ...FilterHelpersMoreOptionsDefault, ...moreOptions }\n\n let storeKey: undefined | string = undefined\n if (isString(options.storeFiltersLocalStorage)) {\n storeKey = options.storeFiltersLocalStorage\n } else if (\n isBoolean(options.storeFiltersLocalStorage) &&\n true === options.storeFiltersLocalStorage &&\n isString(filterConfig.general.system) &&\n isString(filterConfig.general.subject)\n ) {\n storeKey = 'tableFilter_' + filterConfig.general.system + '_' + filterConfig.general.subject\n }\n\n // Independent of `storeFiltersLocalStorage` being on: the remembered page is keyed even when\n // filters are not persisted. A string override is what distinguishes tables sharing a subject.\n const pageStoreKey = isString(options.storeFiltersLocalStorage)\n ? options.storeFiltersLocalStorage\n : datatablePageKey(filterConfig.general.system, filterConfig.general.subject)\n // Called from a datatable's setup, so `ADatatablePagination` picks it up. Guarded because a\n // composable may legitimately be called outside setup, and Vue would warn.\n if (getCurrentInstance()) {\n provide(DatatablePageStoreKey, pageStoreKey)\n }\n\n const { clearAll } = useFilterClearHelpers<F>()\n\n const getFilterDataForStoring = (): Record<string, AllowedFilterValues> => {\n const data: Record<string, AllowedFilterValues> = {}\n for (const filterName in filterData) {\n try {\n const key = filterName as keyof FilterData<F>\n const value = filterData[key]\n if (\n !isUndefined(value) &&\n !isNull(value) &&\n !isEmptyArray(value) &&\n !isSameFilterValue(value, filterConfig.fields[key].default)\n ) {\n data[filterName] = value\n }\n } catch (e) {\n // Ignore errors\n }\n }\n return data\n }\n\n const serializeFilters = (\n data: Record<string, AllowedFilterValues>,\n pagination: Ref<Pagination>,\n includeSort: boolean\n ): string => {\n return encodeFilterHash(data, includeSort ? pagination.value.sortBy : undefined)\n }\n\n const deserializeFilters = (\n hash: string\n ): { filters: Record<string, AllowedFilterValues>; sortBy: DatatableSortBy } | null => {\n if (!hash) return null\n if (hash.startsWith('#')) hash = hash.substring(1)\n\n // URLSearchParams percent-encodes `~` in values, so the marker cannot occur inside our own\n // data — a hash without it is foreign or truncated, and null lets localStorage take over.\n const markerIndex = hash.indexOf(END_FILTER_MARKER)\n if (markerIndex === -1) return null\n hash = hash.slice(0, markerIndex)\n\n const params = new URLSearchParams(hash)\n const result: Record<string, AllowedFilterValues> = {}\n let sortBy: DatatableSortBy = null\n\n const sortParam = params.get(SORT_URL_PARAM)\n if (sortParam) {\n const [key, order] = sortParam.split(',')\n if (key && (order === SortOrder.Asc || order === SortOrder.Desc)) {\n sortBy = { key, order }\n }\n params.delete(SORT_URL_PARAM)\n }\n\n for (const [key, value] of params.entries()) {\n const fieldConfig = filterConfig.fields[key as keyof typeof filterConfig.fields]\n if (isUndefined(fieldConfig)) {\n console.error(`Filter config not found for ${key}`)\n continue\n }\n const isMultiple = fieldConfig.multiple ?? false\n\n if (isMultiple) {\n const items = value.split(',')\n\n const allNumeric = items.every((item) => item !== '' && String(Number(item)) === item)\n\n result[key] = allNumeric ? items.map(Number) : items\n } else {\n result[key] = value\n }\n }\n\n // An empty result would still count as \"found\", shadowing localStorage.\n if (isEmptyObject(result) && isNull(sortBy)) return null\n\n return { filters: result, sortBy }\n }\n\n // A submit is not a place to step back to, so it replaces the entry. `replaceState` fires no\n // popstate, so vue-router does not run a navigation (and its guards) per submit; its `current` is\n // patched so the router's next push, which rewrites this entry from it, keeps the hash.\n const replaceHash = (hash: string) => {\n const url = window.location.pathname + window.location.search + hash\n const state = window.history.state\n const patched =\n isObject(state) && isString((state as { current?: unknown }).current)\n ? { ...state, current: ((state as { current: string }).current.split('#')[0] ?? '') + hash }\n : state\n window.history.replaceState(patched, '', url)\n }\n\n const updateLocationHash = (serialized: string) => {\n if (options.populateUrlParams === false) return\n replaceHash('#' + serialized)\n }\n\n const resetLocationHash = () => {\n if (options.populateUrlParams === false) return\n replaceHash('')\n }\n\n const parseLocationHash = () => {\n if (options.populateUrlParams === false) return null\n return deserializeFilters(window.location.hash)\n }\n\n const storeFilterLocalStorage = (serialized: string) => {\n if (!storeKey || !localStorage) return\n localStorage.setItem(storeKey, serialized)\n }\n\n const loadFilterLocalStorage = () => {\n if (!storeKey || !localStorage) return null\n const stored = localStorage.getItem(storeKey)\n if (!stored || !isString(stored)) return null\n return deserializeFilters(stored)\n }\n\n const resetFilter = (pagination: Ref<Pagination>, callback?: AnyFn) => {\n pagination.value = { ...pagination.value, page: 1 }\n if (storeKey && localStorage) {\n localStorage.removeItem(storeKey)\n }\n resetLocationHash()\n filterConfig.touched = false\n if (callback) callback()\n }\n\n const submitFilter = (pagination: Ref<Pagination>, callback?: AnyFn) => {\n const data = getFilterDataForStoring()\n const serialized = serializeFilters(data, pagination, true)\n updateLocationHash(serialized)\n storeFilterLocalStorage(serialized)\n pagination.value = { ...pagination.value, page: 1 }\n filterConfig.touched = false\n if (callback) callback()\n }\n\n const loadStoredFilters = (pagination: Ref<Pagination>, callback?: AnyFn) => {\n const { consumeStoredPage } = useDatatablePageStore()\n let source: 'hash' | 'localStorage' = 'hash'\n let storedFromHash = parseLocationHash()\n if (isNull(storedFromHash)) {\n source = 'localStorage'\n storedFromHash = loadFilterLocalStorage()\n }\n if (isNull(storedFromHash) || (isEmptyObject(storedFromHash.filters) && isNull(storedFromHash.sortBy))) {\n const restoredPage = consumeStoredPage(pageStoreKey)\n if (restoredPage !== null) {\n pagination.value = { ...pagination.value, page: restoredPage }\n }\n if (callback) callback()\n return false\n }\n\n // A hash naming at least one field is authoritative: it arrives from a link, or from stepping\n // back to an older address, and in both cases it describes the whole view. Without this reset\n // the fields it does not mention keep whatever the module-level filter store still holds from\n // an earlier visit, so the same link lands differently depending on how the user got to it.\n // On a fresh page load the store is already at its defaults and this is a no-op. Local storage\n // keeps merging, because there the absent fields were left out as equal to their default.\n //\n // A hash carrying only `_sort` is excluded on purpose. Unknown keys are dropped before this\n // point, so such a hash also results from a link meant for a different table sharing the page\n // - it must not wipe this one's filter. Only `clearable` fields are reset, as everywhere else.\n const hashDescribesThisView = source === 'hash' && !isEmptyObject(storedFromHash.filters)\n if (hashDescribesThisView) {\n clearAll(filterData, filterConfig)\n }\n\n for (const filterName in filterData) {\n const key = filterName as keyof FilterData<F>\n let value = storedFromHash.filters[key]\n if (isUndefined(value)) continue\n if (isString(value)) {\n const tryConvertNumber = stringToNumber(value)\n if (!isNull(tryConvertNumber) && String(tryConvertNumber) === value) {\n value = tryConvertNumber\n } else {\n const tryConvertBoolean = stringToBooleanExact(value)\n if (!isNull(tryConvertBoolean)) {\n value = tryConvertBoolean\n }\n }\n }\n filterData[key] = value\n }\n if (source === 'localStorage' && storeKey && localStorage) {\n const stored = localStorage.getItem(storeKey)\n if (stored) {\n updateLocationHash(stored)\n }\n }\n // Drained either way: the flag means \"the next list I land on should restore its page\", so\n // leaving it set would hand the remembered page to whichever table comes after this one.\n const restoredPage = consumeStoredPage(pageStoreKey)\n pagination.value = {\n ...pagination.value,\n // A link need not carry the sort. Taking `null` from it would drop `order[...]` from the\n // query, and paging without ORDER BY can repeat or skip rows.\n sortBy: storedFromHash.sortBy ?? pagination.value.sortBy,\n // A hash replaces the view, so a link starts at the first page. A restored page still wins:\n // the flag behind it is only ever set by the close button, which means \"I am coming back to\n // this list\", and that address carries the list's own hash along with it.\n page: restoredPage ?? (source === 'hash' ? 1 : pagination.value.page),\n }\n if (hashDescribesThisView) {\n // Local storage mirrors the last applied state, so a link becomes the view the user returns\n // to. Re-serialized rather than stored verbatim, to drop values equal to their default.\n // A sort-only hash is not a link to this view, so it does not overwrite what is remembered.\n storeFilterLocalStorage(serializeFilters(getFilterDataForStoring(), pagination, true))\n }\n if (callback) callback()\n return true\n }\n\n return {\n loadStoredFilters,\n resetFilter,\n submitFilter,\n serializeFilters,\n deserializeFilters,\n }\n}\n\n/**\n * Provides the filter (`FilterConfigKey`, `FilterDataKey`) and `pagination` (`DatatablePaginationKey`) to the filter\n * bar and `ADatatablePagination` below this component, and wires the list to them: `getList` is\n * `fetchList(pagination, filterData, filterConfig)` debounced and resolves once that has (a refresh button can wait for\n * it; a call that a newer one replaces within the debounce resolves at once, without a load of its own), submit, reset\n * and sort go through `useFilterHelpers` (with `filterHelpersOptions`), and on mount the stored filter and the\n * remembered page are restored before the first load.\n *\n * Only for a datatable that is the parent of its filter bar and does exactly this. Write the wiring out when the first\n * load skips the stored filter, `getList` checks or adds anything, the sort is handled by hand, `fetchList` takes more\n * than the list's three arguments, or a parent renders the filter bar (the parent provides then).\n *\n * ```ts\n * const { filterData, filterConfig } = useFaqListFilter()\n * const { fetchList, listItems } = useFaqListActions()\n * const { pagination } = usePagination(SORT_BY_ID)\n * const { getList, sortByChange, submitFilterAction, resetFilterAction } = useDatatableList(\n * filterData,\n * filterConfig,\n * pagination,\n * fetchList\n * )\n * ```\n */\nexport function useDatatableList<\n F extends readonly MakeFilterOption<string>[] = readonly MakeFilterOption<string>[],\n R = unknown,\n>(\n filterData: FilterData<F>,\n filterConfig: FilterConfig<F>,\n pagination: Ref<Pagination>,\n fetchList: (pagination: Ref<Pagination>, filterData: FilterData<F>, filterConfig: FilterConfig<F>) => R,\n filterHelpersOptions: Partial<FilterHelpersMoreOptions> = {}\n) {\n provide(FilterConfigKey, filterConfig as FilterConfig)\n provide(FilterDataKey, filterData as FilterData)\n provide(DatatablePaginationKey, pagination)\n const { resetFilter, submitFilter, loadStoredFilters } = useFilterHelpers(\n filterData,\n filterConfig,\n filterHelpersOptions\n )\n const getList = useDebounceFn(() => fetchList(pagination, filterData, filterConfig))\n const submitFilterAction = () => submitFilter(pagination, getList)\n const resetFilterAction = () => resetFilter(pagination, getList)\n onMounted(() => loadStoredFilters(pagination, getList))\n return { getList, sortByChange: submitFilterAction, submitFilterAction, resetFilterAction }\n}\n\nexport type AllowedFilterValues = number | number[] | string | string[] | null | undefined | boolean\n\nexport interface GeneralFilterOptions {\n system?: string\n subject?: string\n elastic?: boolean\n simpleFilters?: boolean\n}\n\nexport interface FilerRenderOptions {\n skip: boolean\n // Whether the field is shown as a selected-filter chip (FiltersSelected). Default true.\n // Optional for backward compatibility (other admins may construct FilerRenderOptions).\n selected?: boolean\n xs: number | undefined\n sm: number | undefined\n md: number | undefined\n lg: number | undefined\n xl: number | undefined\n}\n\nexport type FilterVariant =\n | 'search'\n | 'lt'\n | 'in'\n | 'notIn'\n | 'endsWith'\n | 'startsWith'\n | 'memberOf'\n | 'neq'\n | 'gte'\n | 'gt'\n | 'eq'\n | 'lte'\n | 'custom'\n\nexport type FilterType = 'boolean' | 'datetime' | 'integer' | 'string' | 'custom' | 'timeInterval'\n\nexport interface MakeFilterOption<TName extends string = string> {\n name: TName\n default: AllowedFilterValues\n type?: FilterType\n variant?: FilterVariant\n titleT?: string\n apiName?: string\n clearable?: boolean\n mandatory?: boolean\n advanced?: boolean\n exclude?: boolean\n related?: string | undefined\n render?: Partial<FilerRenderOptions>\n}\n\nexport interface FilterField {\n name: string\n type: FilterType\n variant: FilterVariant\n titleT?: string\n default: AllowedFilterValues\n apiName: string\n clearable: boolean\n mandatory: boolean\n multiple: boolean\n advanced: boolean\n exclude: boolean\n related: string | undefined\n render: FilerRenderOptions\n}\n\nexport type FilterConfig<F extends readonly MakeFilterOption<string>[] = readonly MakeFilterOption<string>[]> = {\n general: GeneralFilterOptions\n touched: boolean\n fields: {\n [P in F[number]['name']]: FilterField\n }\n}\n\nexport type FilterData<F extends readonly MakeFilterOption<string>[] = readonly MakeFilterOption<string>[]> = {\n [P in F[number]['name']]: AllowedFilterValues\n}\n"],"mappings":"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"}
@@ -3,7 +3,7 @@ import { useValidate as n } from "../../../shared/validators/vuelidate/useValida
3
3
  import { computed as r } from "vue";
4
4
  import { useI18n as i } from "vue-i18n";
5
5
  import a from "@vuelidate/core";
6
- //#region src/domains/filters/composables/filterTimeIntervalTools.ts
6
+ // src/domains/filters/composables/filterTimeIntervalTools.ts
7
7
  var o = {
8
8
  CurrentMonth: "cm",
9
9
  LastMonth: "lm",
@@ -70,7 +70,6 @@ function c(e) {
70
70
  } };
71
71
  return { v$: a(s, { dialogData: e }, { $scope: "AFilterTimeIntervalScope" }) };
72
72
  }
73
- //#endregion
74
73
  export { o as TimeIntervalSpecialOptions, c as useFilterTimeIntervalValidators, s as useTimeIntervalOptions };
75
74
 
76
75
  //# sourceMappingURL=filterTimeIntervalTools.js.map
@@ -1,7 +1,6 @@
1
1
  import e from "./ADatatableConfigButton.vue_vue_type_script_setup_true_lang.js";
2
- //#region src/domains/filters/datatable/components/ADatatableConfigButton.vue
2
+ // src/domains/filters/datatable/components/ADatatableConfigButton.vue
3
3
  var t = e;
4
- //#endregion
5
4
  export { t as default };
6
5
 
7
6
  //# sourceMappingURL=ADatatableConfigButton.js.map
@@ -7,7 +7,7 @@ import { VTooltip as v } from "vuetify/components/VTooltip";
7
7
  import { VBtn as y } from "vuetify/components/VBtn";
8
8
  import { VList as b, VListItem as x, VListItemTitle as S } from "vuetify/components/VList";
9
9
  import { VMenu as C } from "vuetify/components/VMenu";
10
- //#region src/domains/filters/datatable/components/ADatatableConfigButton.vue?vue&type=script&setup=true&lang.ts
10
+ // src/domains/filters/datatable/components/ADatatableConfigButton.vue?vue&type=script&setup=true&lang.ts
11
11
  var w = /*@__PURE__*/ s({
12
12
  __name: "ADatatableConfigButton",
13
13
  props: {
@@ -85,7 +85,6 @@ var w = /*@__PURE__*/ s({
85
85
  ]));
86
86
  }
87
87
  });
88
- //#endregion
89
88
  export { w as default };
90
89
 
91
90
  //# sourceMappingURL=ADatatableConfigButton.vue_vue_type_script_setup_true_lang.js.map
@@ -1,7 +1,6 @@
1
1
  import e from "./ADatatableOrdering.vue_vue_type_script_setup_true_lang.js";
2
- //#region src/domains/filters/datatable/components/ADatatableOrdering.vue
2
+ // src/domains/filters/datatable/components/ADatatableOrdering.vue
3
3
  var t = e;
4
- //#endregion
5
4
  export { t as default };
6
5
 
7
6
  //# sourceMappingURL=ADatatableOrdering.js.map
@@ -7,7 +7,7 @@ import { useI18n as S } from "vue-i18n";
7
7
  import { VBtn as C } from "vuetify/components/VBtn";
8
8
  import { VList as w, VListItem as T, VListItemTitle as E } from "vuetify/components/VList";
9
9
  import { VMenu as D } from "vuetify/components/VMenu";
10
- //#region src/domains/filters/datatable/components/ADatatableOrdering.vue?vue&type=script&setup=true&lang.ts
10
+ // src/domains/filters/datatable/components/ADatatableOrdering.vue?vue&type=script&setup=true&lang.ts
11
11
  var O = { class: "d-flex align-center justify-center" }, k = { class: "text-body-small mr-1" }, A = /*@__PURE__*/ d({
12
12
  __name: "ADatatableOrdering",
13
13
  props: /*@__PURE__*/ p({
@@ -137,7 +137,6 @@ var O = { class: "d-flex align-center justify-center" }, k = { class: "text-body
137
137
  })]));
138
138
  }
139
139
  });
140
- //#endregion
141
140
  export { A as default };
142
141
 
143
142
  //# sourceMappingURL=ADatatableOrdering.vue_vue_type_script_setup_true_lang.js.map
@@ -1,8 +1,7 @@
1
1
  import e from "./ADatatablePagination.vue_vue_type_script_setup_true_lang.js";
2
2
  /* empty css */
3
- //#region src/domains/filters/datatable/components/ADatatablePagination.vue
3
+ // src/domains/filters/datatable/components/ADatatablePagination.vue
4
4
  var t = e;
5
- //#endregion
6
5
  export { t as default };
7
6
 
8
7
  //# sourceMappingURL=ADatatablePagination.js.map
@@ -6,7 +6,7 @@ import { useI18n as w } from "vue-i18n";
6
6
  import { useThrottleFn as T } from "@vueuse/core";
7
7
  import { VBtn as E } from "vuetify/components/VBtn";
8
8
  import { VBtnToggle as D } from "vuetify/components/VBtnToggle";
9
- //#region src/domains/filters/datatable/components/ADatatablePagination.vue?vue&type=script&setup=true&lang.ts
9
+ // src/domains/filters/datatable/components/ADatatablePagination.vue?vue&type=script&setup=true&lang.ts
10
10
  var O = { class: "anzu-data-footer" }, k = {
11
11
  key: 0,
12
12
  class: "anzu-data-footer__page-limit"
@@ -115,7 +115,6 @@ var O = { class: "anzu-data-footer" }, k = {
115
115
  ]));
116
116
  }
117
117
  });
118
- //#endregion
119
118
  export { P as default };
120
119
 
121
120
  //# sourceMappingURL=ADatatablePagination.vue_vue_type_script_setup_true_lang.js.map
@@ -2,7 +2,7 @@ import { commonI18n as e } from "../../../../plugins/i18n.js";
2
2
  import { isArray as t, isBoolean as n, isObject as r, isString as i, isUndefined as a } from "../../../../shared/utils/common.js";
3
3
  import { DATETIME_AUTO_LABEL_TRACKING as o } from "../utils/datatableColumns.js";
4
4
  import { computed as s, onMounted as c, watch as l } from "vue";
5
- //#region src/domains/filters/datatable/composables/createDatatableColumnsConfig.ts
5
+ // src/domains/filters/datatable/composables/createDatatableColumnsConfig.ts
6
6
  var u = {
7
7
  key: "",
8
8
  title: void 0,
@@ -63,7 +63,6 @@ function f(f, p, m, h, g = {}) {
63
63
  columnsHidden: p
64
64
  };
65
65
  }
66
- //#endregion
67
66
  export { f as createDatatableColumnsConfig };
68
67
 
69
68
  //# sourceMappingURL=createDatatableColumnsConfig.js.map
@@ -1,6 +1,5 @@
1
- //#region src/domains/filters/datatable/utils/datatable.ts
1
+ // src/domains/filters/datatable/utils/datatable.ts
2
2
  var e = (e, t = "item") => t + "." + e;
3
- //#endregion
4
3
  export { e as datatableSlotName };
5
4
 
6
5
  //# sourceMappingURL=datatable.js.map
@@ -1,6 +1,5 @@
1
- //#region src/domains/filters/datatable/utils/datatableColumns.ts
1
+ // src/domains/filters/datatable/utils/datatableColumns.ts
2
2
  var e = ["createdAt", "modifiedAt"], t = "_score", n = "id", r = "score_date", i = "score_best";
3
- //#endregion
4
3
  export { e as DATETIME_AUTO_LABEL_TRACKING, n as SORT_BY_ID, t as SORT_BY_SCORE, i as SORT_BY_SCORE_BEST, r as SORT_BY_SCORE_DATE };
5
4
 
6
5
  //# sourceMappingURL=datatableColumns.js.map
@@ -1,6 +1,5 @@
1
- //#region src/domains/filters/utils/filterInjectionKeys.ts
1
+ // src/domains/filters/utils/filterInjectionKeys.ts
2
2
  var e = Symbol.for("anzu:FilterDataKey"), t = Symbol.for("anzu:FilterConfigKey"), n = Symbol.for("anzu:FilterInnerDataKey"), r = Symbol.for("anzu:FilterInnerConfigKey"), i = Symbol.for("anzu:FilterSubmitResetCounterKey"), a = Symbol.for("anzu:FilterSelectedKey"), o = Symbol.for("anzu:DatatablePaginationKey"), s = Symbol.for("anzu:SubjectSelectCloseSidebarKey"), c = Symbol.for("anzu:DatatablePageStoreKey");
3
- //#endregion
4
3
  export { c as DatatablePageStoreKey, o as DatatablePaginationKey, t as FilterConfigKey, e as FilterDataKey, r as FilterInnerConfigKey, n as FilterInnerDataKey, a as FilterSelectedKey, i as FilterSubmitResetCounterKey, s as SubjectSelectCloseSidebarKey };
5
4
 
6
5
  //# sourceMappingURL=filterInjectionKeys.js.map
@@ -1,7 +1,6 @@
1
1
  import e from "./AFormDatetimePicker.vue_vue_type_script_setup_true_lang.js";
2
- //#region src/domains/form/components/AFormDatetimePicker.vue
2
+ // src/domains/form/components/AFormDatetimePicker.vue
3
3
  var t = e;
4
- //#endregion
5
4
  export { t as default };
6
5
 
7
6
  //# sourceMappingURL=AFormDatetimePicker.js.map
@@ -7,7 +7,7 @@ import { useCollabField as s } from "../../collab/composables/collabField.js";
7
7
  import c from "../../ui/datetime/components/ADatetimePicker.js";
8
8
  import { computed as l, createBlock as u, createCommentVNode as d, defineComponent as f, inject as p, mergeProps as m, nextTick as h, openBlock as g, ref as _, renderSlot as v, unref as y, watch as b, withCtx as x } from "vue";
9
9
  import { useI18n as S } from "vue-i18n";
10
- //#region src/domains/form/components/AFormDatetimePicker.vue?vue&type=script&setup=true&lang.ts
10
+ // src/domains/form/components/AFormDatetimePicker.vue?vue&type=script&setup=true&lang.ts
11
11
  var C = /*@__PURE__*/ f({
12
12
  __name: "AFormDatetimePicker",
13
13
  props: {
@@ -112,7 +112,6 @@ var C = /*@__PURE__*/ f({
112
112
  ]));
113
113
  }
114
114
  });
115
- //#endregion
116
115
  export { C as default };
117
116
 
118
117
  //# sourceMappingURL=AFormDatetimePicker.vue_vue_type_script_setup_true_lang.js.map
@@ -1,7 +1,6 @@
1
1
  import e from "./AFormFlagDatetimePicker.vue_vue_type_script_setup_true_lang.js";
2
- //#region src/domains/form/components/AFormFlagDatetimePicker.vue
2
+ // src/domains/form/components/AFormFlagDatetimePicker.vue
3
3
  var t = e;
4
- //#endregion
5
4
  export { t as default };
6
5
 
7
6
  //# sourceMappingURL=AFormFlagDatetimePicker.js.map
@@ -10,7 +10,7 @@ import { Fragment as f, computed as p, createBlock as m, createCommentVNode as h
10
10
  import { useI18n as A } from "vue-i18n";
11
11
  import { VCheckboxBtn as j } from "vuetify/components/VCheckbox";
12
12
  import { VExpandTransition as M } from "vuetify/components/transitions";
13
- //#region src/domains/form/components/AFormFlagDatetimePicker.vue?vue&type=script&setup=true&lang.ts
13
+ // src/domains/form/components/AFormFlagDatetimePicker.vue?vue&type=script&setup=true&lang.ts
14
14
  var N = { class: "d-flex justify-space-between" }, P = { style: { opacity: "0.5" } }, F = /*@__PURE__*/ y({
15
15
  __name: "AFormFlagDatetimePicker",
16
16
  props: {
@@ -125,7 +125,6 @@ var N = { class: "d-flex justify-space-between" }, P = { style: { opacity: "0.5"
125
125
  })], 64));
126
126
  }
127
127
  });
128
- //#endregion
129
128
  export { F as default };
130
129
 
131
130
  //# sourceMappingURL=AFormFlagDatetimePicker.vue_vue_type_script_setup_true_lang.js.map
@@ -1,7 +1,6 @@
1
1
  import e from "./AFormRemoteCheckbox.vue_vue_type_script_setup_true_lang.js";
2
- //#region src/domains/form/components/AFormRemoteCheckbox.vue
2
+ // src/domains/form/components/AFormRemoteCheckbox.vue
3
3
  var t = e;
4
- //#endregion
5
4
  export { t as default };
6
5
 
7
6
  //# sourceMappingURL=AFormRemoteCheckbox.js.map
@@ -4,7 +4,7 @@ import { SubjectScopeKey as n, SystemScopeKey as r } from "../../../shared/injec
4
4
  import { computed as i, createCommentVNode as a, createElementBlock as o, createVNode as s, defineComponent as c, inject as l, onMounted as u, openBlock as d, ref as f, toDisplayString as p, useId as m, watch as h, withModifiers as g } from "vue";
5
5
  import { useI18n as _ } from "vue-i18n";
6
6
  import { VCheckboxBtn as v } from "vuetify/components/VCheckbox";
7
- //#region src/domains/form/components/AFormRemoteCheckbox.vue?vue&type=script&setup=true&lang.ts
7
+ // src/domains/form/components/AFormRemoteCheckbox.vue?vue&type=script&setup=true&lang.ts
8
8
  var y = { class: "d-flex" }, b = ["for"], x = /*@__PURE__*/ c({
9
9
  __name: "AFormRemoteCheckbox",
10
10
  props: {
@@ -63,7 +63,6 @@ var y = { class: "d-flex" }, b = ["for"], x = /*@__PURE__*/ c({
63
63
  }, p(D.value), 9, b))]));
64
64
  }
65
65
  });
66
- //#endregion
67
66
  export { x as default };
68
67
 
69
68
  //# sourceMappingURL=AFormRemoteCheckbox.vue_vue_type_script_setup_true_lang.js.map
@@ -1,8 +1,7 @@
1
1
  import e from "./AFormRemoteSwitch.vue_vue_type_script_setup_true_lang.js";
2
2
  /* empty css */
3
- //#region src/domains/form/components/AFormRemoteSwitch.vue
3
+ // src/domains/form/components/AFormRemoteSwitch.vue
4
4
  var t = e;
5
- //#endregion
6
5
  export { t as default };
7
6
 
8
7
  //# sourceMappingURL=AFormRemoteSwitch.js.map
@@ -6,7 +6,7 @@ import { useI18n as y } from "vue-i18n";
6
6
  import { VIcon as b } from "vuetify/components/VIcon";
7
7
  import { VBtn as x } from "vuetify/components/VBtn";
8
8
  import { VSwitch as S } from "vuetify/components/VSwitch";
9
- //#region src/domains/form/components/AFormRemoteSwitch.vue?vue&type=script&setup=true&lang.ts
9
+ // src/domains/form/components/AFormRemoteSwitch.vue?vue&type=script&setup=true&lang.ts
10
10
  var C = { class: "d-flex" }, w = ["for"], T = /*@__PURE__*/ l({
11
11
  __name: "AFormRemoteSwitch",
12
12
  props: {
@@ -92,7 +92,6 @@ var C = { class: "d-flex" }, w = ["for"], T = /*@__PURE__*/ l({
92
92
  }, m(j.value), 9, w))]));
93
93
  }
94
94
  });
95
- //#endregion
96
95
  export { T as default };
97
96
 
98
97
  //# sourceMappingURL=AFormRemoteSwitch.vue_vue_type_script_setup_true_lang.js.map
@@ -1,7 +1,6 @@
1
1
  import e from "./AFormSwitch.vue_vue_type_script_setup_true_lang.js";
2
- //#region src/domains/form/components/AFormSwitch.vue
2
+ // src/domains/form/components/AFormSwitch.vue
3
3
  var t = e;
4
- //#endregion
5
4
  export { t as default };
6
5
 
7
6
  //# sourceMappingURL=AFormSwitch.js.map
@@ -4,7 +4,7 @@ import { useCommonAdminCollabOptions as n } from "../../collab/composables/commo
4
4
  import { useCollabField as r } from "../../collab/composables/collabField.js";
5
5
  import { computed as i, createBlock as a, createCommentVNode as o, createSlots as s, createTextVNode as c, defineComponent as l, openBlock as u, ref as d, renderSlot as f, toDisplayString as p, unref as m, watch as h, withCtx as g, withModifiers as _ } from "vue";
6
6
  import { VSwitch as v } from "vuetify/components/VSwitch";
7
- //#region src/domains/form/components/AFormSwitch.vue?vue&type=script&setup=true&lang.ts
7
+ // src/domains/form/components/AFormSwitch.vue?vue&type=script&setup=true&lang.ts
8
8
  var y = /*@__PURE__*/ l({
9
9
  __name: "AFormSwitch",
10
10
  props: {
@@ -81,7 +81,6 @@ var y = /*@__PURE__*/ l({
81
81
  ]));
82
82
  }
83
83
  });
84
- //#endregion
85
84
  export { y as default };
86
85
 
87
86
  //# sourceMappingURL=AFormSwitch.vue_vue_type_script_setup_true_lang.js.map
@@ -1,7 +1,6 @@
1
1
  import e from "./AFormTextField.vue_vue_type_script_setup_true_lang.js";
2
- //#region src/domains/form/components/AFormTextField.vue
2
+ // src/domains/form/components/AFormTextField.vue
3
3
  var t = e;
4
- //#endregion
5
4
  export { t as default };
6
5
 
7
6
  //# sourceMappingURL=AFormTextField.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AFormTextField.js","names":["_sfc_main","AFormTextField_vue_vue_type_script_setup_true_lang_default","AFormTextField_default"],"sources":["../../../../src/domains/form/components/AFormTextField.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { AFormFieldValidation } from '@/shared/types/Validation'\nimport { computed, inject, ref, watch, unref } from 'vue'\nimport { stringSplitOnFirstOccurrence } from '@/shared/utils/string'\nimport { isDefined, isUndefined } from '@/shared/utils/common'\nimport { SubjectScopeKey, SystemScopeKey } from '@/shared/injectionKeys'\nimport type { VuetifyIconValue } from '@/shared/types/Vuetify'\nimport { useI18n } from 'vue-i18n'\nimport ACollabLockedByUser from '@/domains/collab/components/ACollabLockedByUser.vue'\nimport {\n CollabFieldLockStatus,\n type CollabFieldLockStatusPayload,\n CollabFieldLockType,\n} from '@/domains/collab/composables/collabEventBus'\nimport type { CollabComponentConfig, CollabFieldData, CollabFieldLockOptions } from '@/domains/collab/types/Collab'\nimport { useCollabField } from '@/domains/collab/composables/collabField'\nimport type { IntegerIdNullable } from '@/shared/types/common'\nimport type { VTextField } from 'vuetify/components/VTextField'\nimport { useCommonAdminCollabOptions } from '@/domains/collab/composables/commonAdminCollabOptions'\n\nconst props = withDefaults(\n defineProps<{\n modelValue: string | number | null | undefined\n label?: string\n errorMessage?: string\n required?: boolean\n v?: AFormFieldValidation | null\n prependIcon?: VuetifyIconValue\n appendIcon?: VuetifyIconValue\n dataCy?: string\n hideLabel?: boolean\n type?: string\n step?: number\n maxlength?: number | undefined\n collab?: CollabComponentConfig\n disabled?: boolean\n placeholder?: undefined | string\n persistentPlaceholder?: boolean\n help?: string | undefined\n readonly?: boolean\n // `v-model.number` and `.trim`. Vue applies them to what this component emits; VTextField reads `trim` too, to keep\n // the caret in place.\n modelModifiers?: Partial<Record<'number' | 'trim' | 'lazy', true>>\n }>(),\n {\n label: undefined,\n errorMessage: undefined,\n required: undefined,\n v: null,\n prependIcon: undefined,\n appendIcon: undefined,\n dataCy: undefined,\n hideLabel: false,\n type: 'text',\n step: undefined,\n maxlength: undefined,\n collab: undefined,\n disabled: undefined,\n placeholder: undefined,\n persistentPlaceholder: false,\n help: undefined,\n // Left to a `VForm` around it when not set.\n readonly: undefined,\n modelModifiers: undefined,\n }\n)\nconst emit = defineEmits<{\n (e: 'update:modelValue', data: string | number | null | undefined): void\n (e: 'click:append', data: string | number | null | undefined): void\n (e: 'blur', data: string | number | null | undefined): void\n (e: 'focus', data: string | number | null | undefined): void\n}>()\n\nconst textFieldRef = ref<InstanceType<typeof VTextField> | null>(null)\n\n// Collaboration\nconst { collabOptions } = useCommonAdminCollabOptions()\n\nconst releaseFieldLock = ref((_data: CollabFieldData, _options?: Partial<CollabFieldLockOptions>) => {})\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst acquireFieldLock = ref((options?: Partial<CollabFieldLockOptions>) => {})\nconst lockedByUserLocal = ref<IntegerIdNullable>(null)\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nif (collabOptions.value.enabled && isDefined(props.collab)) {\n const {\n releaseCollabFieldLock,\n acquireCollabFieldLock,\n addCollabFieldLockStatusListener,\n addCollabGatheringBufferDataListener,\n lockedByUser,\n } = useCollabField(props.collab.room, props.collab.field, false, true)\n releaseFieldLock.value = releaseCollabFieldLock\n acquireFieldLock.value = acquireCollabFieldLock\n watch(\n lockedByUser,\n (newValue) => {\n lockedByUserLocal.value = newValue\n },\n { immediate: true }\n )\n addCollabFieldLockStatusListener((data: CollabFieldLockStatusPayload) => {\n if (data.status === CollabFieldLockStatus.Failure && data.type === CollabFieldLockType.Acquire) {\n textFieldRef.value?.blur()\n }\n })\n addCollabGatheringBufferDataListener(() => {\n textFieldRef.value?.blur()\n })\n}\n\nconst { t } = useI18n()\n\nconst system = inject<string | undefined>(SystemScopeKey, undefined)\nconst subject = inject<string | undefined>(SubjectScopeKey, undefined)\n\nconst onUpdate = (newValue: string) => {\n emit('update:modelValue', newValue)\n}\nconst onBlur = () => {\n emit('blur', props.modelValue)\n props.v?.$touch()\n releaseFieldLock.value(props.modelValue)\n}\n\nconst onFocus = () => {\n emit('focus', props.modelValue)\n acquireFieldLock.value()\n}\n\nconst errorMessageComputed = computed(() => {\n if (isDefined(props.errorMessage)) return [props.errorMessage]\n if (props.v?.$errors?.length) return [props.v.$errors.map((item) => unref(item.$message)).join(' ')]\n return []\n})\n\nconst labelComputed = computed(() => {\n if (isDefined(props.label)) return props.label\n if (isUndefined(system) || isUndefined(subject) || isUndefined(props.v?.$path)) return ''\n const { end: path } = stringSplitOnFirstOccurrence(props.v?.$path, '.')\n return t(system + '.' + subject + '.model.' + path)\n})\n\nconst requiredComputed = computed(() => {\n if (isDefined(props.required)) return props.required\n if ((props.v?.required as { $params?: { type?: string } } | undefined)?.$params?.type === 'required') return true\n return false\n})\n\nconst disabledComputed = computed(() => {\n if (isDefined(props.disabled)) return props.disabled\n return !!lockedByUserLocal.value\n})\n\nconst focus = () => {\n textFieldRef.value?.focus()\n}\n\ndefineExpose({\n focus,\n})\n</script>\n\n<template>\n <VTextField\n ref=\"textFieldRef\"\n :prepend-icon=\"prependIcon\"\n :data-cy=\"dataCy\"\n :error-messages=\"errorMessageComputed\"\n :model-value=\"modelValue\"\n :required=\"requiredComputed\"\n :type=\"type\"\n :step=\"step\"\n :append-icon=\"appendIcon\"\n :maxlength=\"maxlength\"\n :disabled=\"disabledComputed\"\n :placeholder=\"placeholder\"\n :persistent-placeholder=\"persistentPlaceholder\"\n :readonly=\"readonly\"\n :model-modifiers=\"modelModifiers\"\n autocomplete=\"off\"\n @click:append=\"(event: any) => emit('click:append', event)\"\n @blur=\"onBlur\"\n @focus=\"onFocus\"\n @update:model-value=\"onUpdate($event)\"\n >\n <template\n v-if=\"!hideLabel\"\n #label\n >\n {{ labelComputed\n }}<span\n v-if=\"requiredComputed\"\n class=\"a-required-mark\"\n />\n </template>\n <template\n v-if=\"lockedByUserLocal\"\n #append-inner\n >\n <slot\n name=\"locked\"\n :user-id=\"lockedByUserLocal\"\n >\n <ACollabLockedByUser\n v-if=\"collab\"\n :id=\"lockedByUserLocal\"\n :users=\"collab.cachedUsers\"\n />\n </slot>\n </template>\n <template\n v-if=\"$slots.prepend\"\n #prepend\n >\n <slot name=\"prepend\" />\n </template>\n <template\n v-if=\"help\"\n #append\n >\n <VIcon\n v-tooltip=\"help\"\n icon=\"mdi-help-circle-outline\"\n />\n </template>\n </VTextField>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"AFormTextField.js","names":["_sfc_main","AFormTextField_vue_vue_type_script_setup_true_lang_default","AFormTextField_default"],"sources":["../../../../src/domains/form/components/AFormTextField.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { AFormFieldValidation } from '@/shared/types/Validation'\nimport { computed, inject, ref, watch, unref } from 'vue'\nimport { stringSplitOnFirstOccurrence } from '@/shared/utils/string'\nimport { isDefined, isUndefined } from '@/shared/utils/common'\nimport { SubjectScopeKey, SystemScopeKey } from '@/shared/injectionKeys'\nimport type { VuetifyIconValue } from '@/shared/types/Vuetify'\nimport { useI18n } from 'vue-i18n'\nimport ACollabLockedByUser from '@/domains/collab/components/ACollabLockedByUser.vue'\nimport {\n CollabFieldLockStatus,\n type CollabFieldLockStatusPayload,\n CollabFieldLockType,\n} from '@/domains/collab/composables/collabEventBus'\nimport type { CollabComponentConfig, CollabFieldData, CollabFieldLockOptions } from '@/domains/collab/types/Collab'\nimport { useCollabField } from '@/domains/collab/composables/collabField'\nimport type { IntegerIdNullable } from '@/shared/types/common'\nimport type { VTextField } from 'vuetify/components/VTextField'\nimport { useCommonAdminCollabOptions } from '@/domains/collab/composables/commonAdminCollabOptions'\n\nconst props = withDefaults(\n defineProps<{\n modelValue: string | number | null | undefined\n label?: string\n errorMessage?: string\n required?: boolean\n v?: AFormFieldValidation | null\n prependIcon?: VuetifyIconValue\n appendIcon?: VuetifyIconValue\n dataCy?: string\n hideLabel?: boolean\n type?: string\n step?: number\n maxlength?: number | undefined\n collab?: CollabComponentConfig\n disabled?: boolean\n placeholder?: undefined | string\n persistentPlaceholder?: boolean\n help?: string | undefined\n readonly?: boolean\n // `v-model.number` and `.trim`. Vue applies them to what this component emits; VTextField reads `trim` too, to keep\n // the caret in place.\n modelModifiers?: Partial<Record<'number' | 'trim' | 'lazy', true>>\n }>(),\n {\n label: undefined,\n errorMessage: undefined,\n required: undefined,\n v: null,\n prependIcon: undefined,\n appendIcon: undefined,\n dataCy: undefined,\n hideLabel: false,\n type: 'text',\n step: undefined,\n maxlength: undefined,\n collab: undefined,\n disabled: undefined,\n placeholder: undefined,\n persistentPlaceholder: false,\n help: undefined,\n // Left to a `VForm` around it when not set.\n readonly: undefined,\n modelModifiers: undefined,\n }\n)\nconst emit = defineEmits<{\n (e: 'update:modelValue', data: string | number | null | undefined): void\n (e: 'click:append', data: string | number | null | undefined): void\n (e: 'blur', data: string | number | null | undefined): void\n (e: 'focus', data: string | number | null | undefined): void\n}>()\n\nconst textFieldRef = ref<InstanceType<typeof VTextField> | null>(null)\n\n// Collaboration\nconst { collabOptions } = useCommonAdminCollabOptions()\n\nconst releaseFieldLock = ref((_data: CollabFieldData, _options?: Partial<CollabFieldLockOptions>) => {})\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst acquireFieldLock = ref((options?: Partial<CollabFieldLockOptions>) => {})\nconst lockedByUserLocal = ref<IntegerIdNullable>(null)\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nif (collabOptions.value.enabled && isDefined(props.collab)) {\n const {\n releaseCollabFieldLock,\n acquireCollabFieldLock,\n addCollabFieldLockStatusListener,\n addCollabGatheringBufferDataListener,\n lockedByUser,\n } = useCollabField(props.collab.room, props.collab.field, false, true)\n releaseFieldLock.value = releaseCollabFieldLock\n acquireFieldLock.value = acquireCollabFieldLock\n watch(\n lockedByUser,\n (newValue) => {\n lockedByUserLocal.value = newValue\n },\n { immediate: true }\n )\n addCollabFieldLockStatusListener((data: CollabFieldLockStatusPayload) => {\n if (data.status === CollabFieldLockStatus.Failure && data.type === CollabFieldLockType.Acquire) {\n textFieldRef.value?.blur()\n }\n })\n addCollabGatheringBufferDataListener(() => {\n textFieldRef.value?.blur()\n })\n}\n\nconst { t } = useI18n()\n\nconst system = inject<string | undefined>(SystemScopeKey, undefined)\nconst subject = inject<string | undefined>(SubjectScopeKey, undefined)\n\nconst onUpdate = (newValue: string | number | null) => {\n // Under `.number` an empty input means no value; '' would reach the backend and be cast to 0.\n emit('update:modelValue', props.modelModifiers?.number && newValue === '' ? null : newValue)\n}\nconst onBlur = () => {\n emit('blur', props.modelValue)\n props.v?.$touch()\n releaseFieldLock.value(props.modelValue)\n}\n\nconst onFocus = () => {\n emit('focus', props.modelValue)\n acquireFieldLock.value()\n}\n\nconst errorMessageComputed = computed(() => {\n if (isDefined(props.errorMessage)) return [props.errorMessage]\n if (props.v?.$errors?.length) return [props.v.$errors.map((item) => unref(item.$message)).join(' ')]\n return []\n})\n\nconst labelComputed = computed(() => {\n if (isDefined(props.label)) return props.label\n if (isUndefined(system) || isUndefined(subject) || isUndefined(props.v?.$path)) return ''\n const { end: path } = stringSplitOnFirstOccurrence(props.v?.$path, '.')\n return t(system + '.' + subject + '.model.' + path)\n})\n\nconst requiredComputed = computed(() => {\n if (isDefined(props.required)) return props.required\n if ((props.v?.required as { $params?: { type?: string } } | undefined)?.$params?.type === 'required') return true\n return false\n})\n\nconst disabledComputed = computed(() => {\n if (isDefined(props.disabled)) return props.disabled\n return !!lockedByUserLocal.value\n})\n\nconst focus = () => {\n textFieldRef.value?.focus()\n}\n\ndefineExpose({\n focus,\n})\n</script>\n\n<template>\n <VTextField\n ref=\"textFieldRef\"\n :prepend-icon=\"prependIcon\"\n :data-cy=\"dataCy\"\n :error-messages=\"errorMessageComputed\"\n :model-value=\"modelValue\"\n :required=\"requiredComputed\"\n :type=\"type\"\n :step=\"step\"\n :append-icon=\"appendIcon\"\n :maxlength=\"maxlength\"\n :disabled=\"disabledComputed\"\n :placeholder=\"placeholder\"\n :persistent-placeholder=\"persistentPlaceholder\"\n :readonly=\"readonly\"\n :model-modifiers=\"modelModifiers\"\n autocomplete=\"off\"\n @click:append=\"(event: any) => emit('click:append', event)\"\n @blur=\"onBlur\"\n @focus=\"onFocus\"\n @update:model-value=\"onUpdate($event)\"\n >\n <template\n v-if=\"!hideLabel\"\n #label\n >\n {{ labelComputed\n }}<span\n v-if=\"requiredComputed\"\n class=\"a-required-mark\"\n />\n </template>\n <template\n v-if=\"lockedByUserLocal\"\n #append-inner\n >\n <slot\n name=\"locked\"\n :user-id=\"lockedByUserLocal\"\n >\n <ACollabLockedByUser\n v-if=\"collab\"\n :id=\"lockedByUserLocal\"\n :users=\"collab.cachedUsers\"\n />\n </slot>\n </template>\n <template\n v-if=\"$slots.prepend\"\n #prepend\n >\n <slot name=\"prepend\" />\n </template>\n <template\n v-if=\"help\"\n #append\n >\n <VIcon\n v-tooltip=\"help\"\n icon=\"mdi-help-circle-outline\"\n />\n </template>\n </VTextField>\n</template>\n"],"mappings":""}
@@ -10,7 +10,7 @@ import { useI18n as D } from "vue-i18n";
10
10
  import { VIcon as O } from "vuetify/components/VIcon";
11
11
  import { VTextField as k } from "vuetify/components/VTextField";
12
12
  import { Tooltip as A } from "vuetify/directives";
13
- //#region src/domains/form/components/AFormTextField.vue?vue&type=script&setup=true&lang.ts
13
+ // src/domains/form/components/AFormTextField.vue?vue&type=script&setup=true&lang.ts
14
14
  var j = {
15
15
  key: 0,
16
16
  class: "a-required-mark"
@@ -71,7 +71,7 @@ var j = {
71
71
  });
72
72
  }
73
73
  let { t: V } = D(), H = v(i, void 0), U = v(r, void 0), W = (e) => {
74
- F("update:modelValue", e);
74
+ F("update:modelValue", P.modelModifiers?.number && e === "" ? null : e);
75
75
  }, G = () => {
76
76
  F("blur", P.modelValue), P.v?.$touch(), R.value(P.modelValue);
77
77
  }, K = () => {
@@ -149,7 +149,6 @@ var j = {
149
149
  ]));
150
150
  }
151
151
  });
152
- //#endregion
153
152
  export { M as default };
154
153
 
155
154
  //# sourceMappingURL=AFormTextField.vue_vue_type_script_setup_true_lang.js.map