@anzusystems/common-admin 1.49.0 → 2.0.0-rc.1
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.
- package/CHANGELOG.md +5 -0
- package/README.md +57 -2
- package/dist/AnzuSystemsCommonAdmin.d.ts +170 -0
- package/dist/AnzuSystemsCommonAdmin.js +13 -0
- package/dist/AnzuSystemsCommonAdmin.js.map +1 -0
- package/dist/_virtual/_plugin-vue_export-helper.js +8 -0
- package/dist/_virtual/_rolldown/runtime.js +13 -0
- package/dist/assets/dam-meta-icons/2k.js +6 -0
- package/dist/assets/dam-meta-icons/2k.js.map +1 -0
- package/dist/assets/dam-meta-icons/4k.js +6 -0
- package/dist/assets/dam-meta-icons/4k.js.map +1 -0
- package/dist/assets/dam-meta-icons/8k.js +6 -0
- package/dist/assets/dam-meta-icons/8k.js.map +1 -0
- package/dist/assets/dam-meta-icons/fhd.js +6 -0
- package/dist/assets/dam-meta-icons/fhd.js.map +1 -0
- package/dist/assets/dam-meta-icons/low.js +6 -0
- package/dist/assets/dam-meta-icons/low.js.map +1 -0
- package/dist/assets/dam-meta-icons/qhd.js +6 -0
- package/dist/assets/dam-meta-icons/qhd.js.map +1 -0
- package/dist/assets/dam-meta-icons/rss.js +6 -0
- package/dist/assets/dam-meta-icons/rss.js.map +1 -0
- package/dist/assets/dam-meta-icons/slot.js +6 -0
- package/dist/assets/dam-meta-icons/slot.js.map +1 -0
- package/dist/assets/dam-meta-icons/tts.js +6 -0
- package/dist/assets/dam-meta-icons/tts.js.map +1 -0
- package/dist/assets/image/placeholder16x9.js +6 -0
- package/dist/assets/image/placeholder16x9.js.map +1 -0
- package/dist/common-admin.css +2 -1
- package/dist/common-admin.css.d.ts +6 -0
- package/dist/common-admin.d.ts +2 -10340
- package/dist/common-admin.js +300 -24064
- package/dist/domains/anzuUser/api/anzuUserApi.d.ts +38 -0
- package/dist/domains/anzuUser/api/anzuUserApi.js +62 -0
- package/dist/domains/anzuUser/api/anzuUserApi.js.map +1 -0
- package/dist/domains/anzuUser/components/AAnzuUserDatatable.js +7 -0
- package/dist/domains/anzuUser/components/AAnzuUserDatatable.js.map +1 -0
- package/dist/domains/anzuUser/components/AAnzuUserDatatable.vue.d.ts +116 -0
- package/dist/domains/anzuUser/components/AAnzuUserDatatable.vue_vue_type_script_setup_true_lang.js +223 -0
- package/dist/domains/anzuUser/components/AAnzuUserDatatable.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/anzuUser/components/AAnzuUserFilter.js +7 -0
- package/dist/domains/anzuUser/components/AAnzuUserFilter.js.map +1 -0
- package/dist/domains/anzuUser/components/AAnzuUserFilter.vue.d.ts +53 -0
- package/dist/domains/anzuUser/components/AAnzuUserFilter.vue_vue_type_script_setup_true_lang.js +53 -0
- package/dist/domains/anzuUser/components/AAnzuUserFilter.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/anzuUser/components/AAnzuUserForm.js +7 -0
- package/dist/domains/anzuUser/components/AAnzuUserForm.js.map +1 -0
- package/dist/domains/anzuUser/components/AAnzuUserForm.vue.d.ts +67 -0
- package/dist/domains/anzuUser/components/AAnzuUserForm.vue_vue_type_script_setup_true_lang.js +182 -0
- package/dist/domains/anzuUser/components/AAnzuUserForm.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/anzuUser/components/AAnzuUserRoleAutocomplete.js +7 -0
- package/dist/domains/anzuUser/components/AAnzuUserRoleAutocomplete.js.map +1 -0
- package/dist/domains/anzuUser/components/AAnzuUserRoleAutocomplete.vue.d.ts +24 -0
- package/dist/domains/anzuUser/components/AAnzuUserRoleAutocomplete.vue_vue_type_script_setup_true_lang.js +63 -0
- package/dist/domains/anzuUser/components/AAnzuUserRoleAutocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/anzuUser/components/AUserBulkActionDialog.js +7 -0
- package/dist/domains/anzuUser/components/AUserBulkActionDialog.js.map +1 -0
- package/dist/domains/anzuUser/components/AUserBulkActionDialog.vue.d.ts +20 -0
- package/dist/domains/anzuUser/components/AUserBulkActionDialog.vue_vue_type_script_setup_true_lang.js +183 -0
- package/dist/domains/anzuUser/components/AUserBulkActionDialog.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/anzuUser/components/AUserCopyPermissionsDialog.js +7 -0
- package/dist/domains/anzuUser/components/AUserCopyPermissionsDialog.js.map +1 -0
- package/dist/domains/anzuUser/components/AUserCopyPermissionsDialog.vue.d.ts +43 -0
- package/dist/domains/anzuUser/components/AUserCopyPermissionsDialog.vue_vue_type_script_setup_true_lang.js +107 -0
- package/dist/domains/anzuUser/components/AUserCopyPermissionsDialog.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/anzuUser/components/AUserCreateInSystemButton.js +7 -0
- package/dist/domains/anzuUser/components/AUserCreateInSystemButton.js.map +1 -0
- package/dist/domains/anzuUser/components/AUserCreateInSystemButton.vue.d.ts +47 -0
- package/dist/domains/anzuUser/components/AUserCreateInSystemButton.vue_vue_type_script_setup_true_lang.js +119 -0
- package/dist/domains/anzuUser/components/AUserCreateInSystemButton.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/anzuUser/components/AUserEnabledSwitch.js +7 -0
- package/dist/domains/anzuUser/components/AUserEnabledSwitch.js.map +1 -0
- package/dist/domains/anzuUser/components/AUserEnabledSwitch.vue.d.ts +34 -0
- package/dist/domains/anzuUser/components/AUserEnabledSwitch.vue_vue_type_script_setup_true_lang.js +49 -0
- package/dist/domains/anzuUser/components/AUserEnabledSwitch.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/anzuUser/components/AUserManageButton.js +7 -0
- package/dist/domains/anzuUser/components/AUserManageButton.js.map +1 -0
- package/dist/domains/anzuUser/components/AUserManageButton.vue.d.ts +13 -0
- package/dist/domains/anzuUser/components/AUserManageButton.vue_vue_type_script_setup_true_lang.js +51 -0
- package/dist/domains/anzuUser/components/AUserManageButton.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/anzuUser/components/AUserMetadataForm.js +7 -0
- package/dist/domains/anzuUser/components/AUserMetadataForm.js.map +1 -0
- package/dist/domains/anzuUser/components/AUserMetadataForm.vue.d.ts +51 -0
- package/dist/domains/anzuUser/components/AUserMetadataForm.vue_vue_type_script_setup_true_lang.js +258 -0
- package/dist/domains/anzuUser/components/AUserMetadataForm.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/anzuUser/components/AUserMetadataRepairDialog.js +7 -0
- package/dist/domains/anzuUser/components/AUserMetadataRepairDialog.js.map +1 -0
- package/dist/domains/anzuUser/components/AUserMetadataRepairDialog.vue.d.ts +25 -0
- package/dist/domains/anzuUser/components/AUserMetadataRepairDialog.vue_vue_type_script_setup_true_lang.js +240 -0
- package/dist/domains/anzuUser/components/AUserMetadataRepairDialog.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/anzuUser/components/AUserOtherSystemsTable.js +7 -0
- package/dist/domains/anzuUser/components/AUserOtherSystemsTable.js.map +1 -0
- package/dist/domains/anzuUser/components/AUserOtherSystemsTable.vue.d.ts +24 -0
- package/dist/domains/anzuUser/components/AUserOtherSystemsTable.vue_vue_type_script_setup_true_lang.js +55 -0
- package/dist/domains/anzuUser/components/AUserOtherSystemsTable.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/anzuUser/components/AUserSystemOverview.js +7 -0
- package/dist/domains/anzuUser/components/AUserSystemOverview.js.map +1 -0
- package/dist/domains/anzuUser/components/AUserSystemOverview.vue.d.ts +16 -0
- package/dist/domains/anzuUser/components/AUserSystemOverview.vue_vue_type_script_setup_true_lang.js +496 -0
- package/dist/domains/anzuUser/components/AUserSystemOverview.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/anzuUser/components/AUserSystemPanel.js +7 -0
- package/dist/domains/anzuUser/components/AUserSystemPanel.js.map +1 -0
- package/dist/domains/anzuUser/components/AUserSystemPanel.vue.d.ts +31 -0
- package/dist/domains/anzuUser/components/AUserSystemPanel.vue_vue_type_script_setup_true_lang.js +107 -0
- package/dist/domains/anzuUser/components/AUserSystemPanel.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/anzuUser/components/AUserSystemStatusChip.js +7 -0
- package/dist/domains/anzuUser/components/AUserSystemStatusChip.js.map +1 -0
- package/dist/domains/anzuUser/components/AUserSystemStatusChip.vue.d.ts +7 -0
- package/dist/domains/anzuUser/components/AUserSystemStatusChip.vue_vue_type_script_setup_true_lang.js +69 -0
- package/dist/domains/anzuUser/components/AUserSystemStatusChip.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/anzuUser/components/AUserTabsShell.js +7 -0
- package/dist/domains/anzuUser/components/AUserTabsShell.js.map +1 -0
- package/dist/domains/anzuUser/components/AUserTabsShell.vue.d.ts +71 -0
- package/dist/domains/anzuUser/components/AUserTabsShell.vue_vue_type_script_setup_true_lang.js +188 -0
- package/dist/domains/anzuUser/components/AUserTabsShell.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/anzuUser/composables/anzuUserActions.d.ts +143 -0
- package/dist/domains/anzuUser/composables/anzuUserActions.js +100 -0
- package/dist/domains/anzuUser/composables/anzuUserActions.js.map +1 -0
- package/dist/domains/anzuUser/composables/anzuUserValidations.d.ts +217 -0
- package/dist/domains/anzuUser/composables/anzuUserValidations.js +50 -0
- package/dist/domains/anzuUser/composables/anzuUserValidations.js.map +1 -0
- package/dist/domains/anzuUser/composables/cachedAnzuUsers.d.ts +27 -0
- package/dist/domains/anzuUser/composables/cachedAnzuUsers.js +49 -0
- package/dist/domains/anzuUser/composables/cachedAnzuUsers.js.map +1 -0
- package/dist/domains/anzuUser/composables/userCrossSystemSearch.d.ts +25 -0
- package/dist/domains/anzuUser/composables/userCrossSystemSearch.js +95 -0
- package/dist/domains/anzuUser/composables/userCrossSystemSearch.js.map +1 -0
- package/dist/domains/anzuUser/composables/userCrossSystemWrites.d.ts +35 -0
- package/dist/domains/anzuUser/composables/userCrossSystemWrites.js +96 -0
- package/dist/domains/anzuUser/composables/userCrossSystemWrites.js.map +1 -0
- package/dist/domains/anzuUser/composables/userSystemDescriptor.d.ts +156 -0
- package/dist/domains/anzuUser/composables/userSystemDescriptor.js +42 -0
- package/dist/domains/anzuUser/composables/userSystemDescriptor.js.map +1 -0
- package/dist/domains/anzuUser/composables/userSystemProbe.d.ts +56 -0
- package/dist/domains/anzuUser/composables/userSystemProbe.js +104 -0
- package/dist/domains/anzuUser/composables/userSystemProbe.js.map +1 -0
- package/dist/domains/anzuUser/factory/AnzuUserFactory.d.ts +4 -0
- package/dist/domains/anzuUser/factory/AnzuUserFactory.js +35 -0
- package/dist/domains/anzuUser/factory/AnzuUserFactory.js.map +1 -0
- package/dist/domains/anzuUser/filter/anzuUserFilter.d.ts +65 -0
- package/dist/domains/anzuUser/filter/anzuUserFilter.js +53 -0
- package/dist/domains/anzuUser/filter/anzuUserFilter.js.map +1 -0
- package/dist/domains/anzuUser/store/anzuUserStore.d.ts +61 -0
- package/dist/domains/anzuUser/store/anzuUserStore.js +27 -0
- package/dist/domains/anzuUser/store/anzuUserStore.js.map +1 -0
- package/dist/domains/anzuUser/store/userCrossSystemStore.d.ts +152 -0
- package/dist/domains/anzuUser/store/userCrossSystemStore.js +103 -0
- package/dist/domains/anzuUser/store/userCrossSystemStore.js.map +1 -0
- package/dist/domains/anzuUser/utils/userMetadataDiff.d.ts +39 -0
- package/dist/domains/anzuUser/utils/userMetadataDiff.js +60 -0
- package/dist/domains/anzuUser/utils/userMetadataDiff.js.map +1 -0
- package/dist/domains/anzuUser/utils/userSystemState.d.ts +84 -0
- package/dist/domains/anzuUser/utils/userSystemState.js +55 -0
- package/dist/domains/anzuUser/utils/userSystemState.js.map +1 -0
- package/dist/domains/anzuUser/utils/userTabs.d.ts +7 -0
- package/dist/domains/anzuUser/utils/userTabs.js +6 -0
- package/dist/domains/anzuUser/utils/userTabs.js.map +1 -0
- package/dist/domains/api/composables/defineApiClient.d.ts +32 -0
- package/dist/domains/api/composables/defineApiClient.js +20 -0
- package/dist/domains/api/composables/defineApiClient.js.map +1 -0
- package/dist/domains/api/composables/pagination.d.ts +23 -0
- package/dist/domains/api/composables/pagination.js +63 -0
- package/dist/domains/api/composables/pagination.js.map +1 -0
- package/dist/domains/api/composables/request.d.ts +79 -0
- package/dist/domains/api/composables/request.js +55 -0
- package/dist/domains/api/composables/request.js.map +1 -0
- package/dist/domains/api/composables/useApiFetchByIds.d.ts +57 -0
- package/dist/domains/api/composables/useApiFetchByIds.js +61 -0
- package/dist/domains/api/composables/useApiFetchByIds.js.map +1 -0
- package/dist/domains/api/composables/useApiFetchItems.d.ts +101 -0
- package/dist/domains/api/composables/useApiFetchItems.js +56 -0
- package/dist/domains/api/composables/useApiFetchItems.js.map +1 -0
- package/dist/domains/api/composables/useApiFetchList.d.ts +60 -0
- package/dist/domains/api/composables/useApiFetchList.js +69 -0
- package/dist/domains/api/composables/useApiFetchList.js.map +1 -0
- package/dist/domains/api/composables/useApiFetchListBatch.d.ts +57 -0
- package/dist/domains/api/composables/useApiFetchListBatch.js +116 -0
- package/dist/domains/api/composables/useApiFetchListBatch.js.map +1 -0
- package/dist/domains/api/composables/useApiQueryBuilder.d.ts +19 -0
- package/dist/domains/api/composables/useApiQueryBuilder.js +75 -0
- package/dist/domains/api/composables/useApiQueryBuilder.js.map +1 -0
- package/dist/domains/api/composables/useApiRequest.d.ts +87 -0
- package/dist/domains/api/composables/useApiRequest.js +62 -0
- package/dist/domains/api/composables/useApiRequest.js.map +1 -0
- package/dist/domains/api/types/ApiResponse.d.ts +4 -0
- package/dist/domains/api/types/SortOrder.d.ts +5 -0
- package/dist/domains/api/types/SortOrder.js +9 -0
- package/dist/domains/api/types/SortOrder.js.map +1 -0
- package/dist/domains/api/utils/apiErrors.d.ts +88 -0
- package/dist/domains/api/utils/apiErrors.js +45 -0
- package/dist/domains/api/utils/apiErrors.js.map +1 -0
- package/dist/domains/api/utils/apiHelper.d.ts +4 -0
- package/dist/domains/api/utils/apiHelper.js +8 -0
- package/dist/domains/api/utils/apiHelper.js.map +1 -0
- package/dist/domains/api/utils/client.d.ts +2 -0
- package/dist/domains/api/utils/listBody.d.ts +65 -0
- package/dist/domains/api/utils/listBody.js +36 -0
- package/dist/domains/api/utils/listBody.js.map +1 -0
- package/dist/domains/api/utils/response.d.ts +1 -0
- package/dist/domains/api/utils/response.js +7 -0
- package/dist/domains/api/utils/response.js.map +1 -0
- package/dist/domains/auth/components/Acl.js +7 -0
- package/dist/domains/auth/components/Acl.js.map +1 -0
- package/dist/domains/auth/components/Acl.vue.d.ts +24 -0
- package/dist/domains/auth/components/Acl.vue_vue_type_script_setup_true_lang.js +18 -0
- package/dist/domains/auth/components/Acl.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/auth/composables/aclAllowed.d.ts +8 -0
- package/dist/domains/auth/composables/aclAllowed.js +15 -0
- package/dist/domains/auth/composables/aclAllowed.js.map +1 -0
- package/dist/domains/auth/composables/defineAuth.d.ts +49 -0
- package/dist/domains/auth/composables/defineAuth.js +122 -0
- package/dist/domains/auth/composables/defineAuth.js.map +1 -0
- package/dist/domains/auth/composables/refreshSession.d.ts +49 -0
- package/dist/domains/auth/composables/refreshSession.js +56 -0
- package/dist/domains/auth/composables/refreshSession.js.map +1 -0
- package/dist/domains/auth/store/authStore.d.ts +82 -0
- package/dist/domains/auth/store/authStore.js +29 -0
- package/dist/domains/auth/store/authStore.js.map +1 -0
- package/dist/domains/auth/types/Permission.d.ts +19 -0
- package/dist/domains/auth/valueObject/Grant.d.ts +23 -0
- package/dist/domains/auth/valueObject/Grant.js +35 -0
- package/dist/domains/auth/valueObject/Grant.js.map +1 -0
- package/dist/domains/cached/components/ACachedChip.js +8 -0
- package/dist/domains/cached/components/ACachedChip.js.map +1 -0
- package/dist/domains/cached/components/ACachedChip.vue.d.ts +56 -0
- package/dist/domains/cached/components/ACachedChip.vue_vue_type_script_setup_true_lang.js +139 -0
- package/dist/domains/cached/components/ACachedChip.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/cached/components/ACachedUserChip.js +9 -0
- package/dist/domains/cached/components/ACachedUserChip.js.map +1 -0
- package/dist/domains/cached/components/ACachedUserChip.vue.d.ts +27 -0
- package/dist/domains/cached/components/ACachedUserChip.vue_vue_type_script_setup_true_lang.js +91 -0
- package/dist/domains/cached/components/ACachedUserChip.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/cached/composables/createCachedChip.d.ts +36 -0
- package/dist/domains/cached/composables/createCachedChip.js +28 -0
- package/dist/domains/cached/composables/createCachedChip.js.map +1 -0
- package/dist/domains/cached/composables/createUserAndTimeTrackingFields.d.ts +36 -0
- package/dist/domains/cached/composables/createUserAndTimeTrackingFields.js +29 -0
- package/dist/domains/cached/composables/createUserAndTimeTrackingFields.js.map +1 -0
- package/dist/domains/cached/composables/defineCached.d.ts +55 -0
- package/dist/domains/cached/composables/defineCached.js +161 -0
- package/dist/domains/cached/composables/defineCached.js.map +1 -0
- package/dist/domains/cached/composables/useCachedItem.d.ts +26 -0
- package/dist/domains/cached/composables/useCachedItem.js +26 -0
- package/dist/domains/cached/composables/useCachedItem.js.map +1 -0
- package/dist/domains/collab/components/ACollabCountdown.js +7 -0
- package/dist/domains/collab/components/ACollabCountdown.js.map +1 -0
- package/dist/domains/collab/components/ACollabCountdown.vue.d.ts +16 -0
- package/dist/domains/collab/components/ACollabCountdown.vue_vue_type_script_setup_true_lang.js +36 -0
- package/dist/domains/collab/components/ACollabCountdown.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/collab/components/ACollabLockedByUser.js +7 -0
- package/dist/domains/collab/components/ACollabLockedByUser.js.map +1 -0
- package/dist/domains/collab/components/ACollabLockedByUser.vue.d.ts +13 -0
- package/dist/domains/collab/components/ACollabLockedByUser.vue_vue_type_script_setup_true_lang.js +66 -0
- package/dist/domains/collab/components/ACollabLockedByUser.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/collab/components/ACollabManagement.js +7 -0
- package/dist/domains/collab/components/ACollabManagement.js.map +1 -0
- package/dist/domains/collab/components/ACollabManagement.vue.d.ts +27 -0
- package/dist/domains/collab/components/ACollabManagement.vue_vue_type_script_setup_true_lang.js +460 -0
- package/dist/domains/collab/components/ACollabManagement.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/collab/composables/collabAnyDataChange.d.ts +11 -0
- package/dist/domains/collab/composables/collabAnyDataChange.js +75 -0
- package/dist/domains/collab/composables/collabAnyDataChange.js.map +1 -0
- package/dist/domains/collab/composables/collabCurrentUserId.d.ts +5 -0
- package/dist/domains/collab/composables/collabCurrentUserId.js +16 -0
- package/dist/domains/collab/composables/collabCurrentUserId.js.map +1 -0
- package/dist/domains/collab/composables/collabEventBus.d.ts +83 -0
- package/dist/domains/collab/composables/collabEventBus.js +53 -0
- package/dist/domains/collab/composables/collabEventBus.js.map +1 -0
- package/dist/domains/collab/composables/collabField.d.ts +21 -0
- package/dist/domains/collab/composables/collabField.js +90 -0
- package/dist/domains/collab/composables/collabField.js.map +1 -0
- package/dist/domains/collab/composables/collabHelpers.d.ts +17 -0
- package/dist/domains/collab/composables/collabHelpers.js +18 -0
- package/dist/domains/collab/composables/collabHelpers.js.map +1 -0
- package/dist/domains/collab/composables/collabInit.d.ts +3 -0
- package/dist/domains/collab/composables/collabInit.js +100 -0
- package/dist/domains/collab/composables/collabInit.js.map +1 -0
- package/dist/domains/collab/composables/collabRoom.d.ts +43 -0
- package/dist/domains/collab/composables/collabRoom.js +167 -0
- package/dist/domains/collab/composables/collabRoom.js.map +1 -0
- package/dist/domains/collab/composables/collabState.d.ts +31 -0
- package/dist/domains/collab/composables/collabState.js +44 -0
- package/dist/domains/collab/composables/collabState.js.map +1 -0
- package/dist/domains/collab/composables/commonAdminCollabOptions.d.ts +14 -0
- package/dist/domains/collab/composables/commonAdminCollabOptions.js +11 -0
- package/dist/domains/collab/composables/commonAdminCollabOptions.js.map +1 -0
- package/dist/domains/collab/types/Collab.d.ts +172 -0
- package/dist/domains/collab/types/Collab.js +38 -0
- package/dist/domains/collab/types/Collab.js.map +1 -0
- package/dist/domains/customDataForm/components/ACustomDataForm.js +7 -0
- package/dist/domains/customDataForm/components/ACustomDataForm.js.map +1 -0
- package/dist/domains/customDataForm/components/ACustomDataForm.vue.d.ts +38 -0
- package/dist/domains/customDataForm/components/ACustomDataForm.vue_vue_type_script_setup_true_lang.js +132 -0
- package/dist/domains/customDataForm/components/ACustomDataForm.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/customDataForm/components/ACustomDataFormElement.js +7 -0
- package/dist/domains/customDataForm/components/ACustomDataFormElement.js.map +1 -0
- package/dist/domains/customDataForm/components/ACustomDataFormElement.vue.d.ts +24 -0
- package/dist/domains/customDataForm/components/ACustomDataFormElement.vue_vue_type_script_setup_true_lang.js +167 -0
- package/dist/domains/customDataForm/components/ACustomDataFormElement.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/customDataForm/components/ACustomDataFormHiddenPart.js +7 -0
- package/dist/domains/customDataForm/components/ACustomDataFormHiddenPart.js.map +1 -0
- package/dist/domains/customDataForm/components/ACustomDataFormHiddenPart.vue.d.ts +24 -0
- package/dist/domains/customDataForm/components/ACustomDataFormHiddenPart.vue_vue_type_script_setup_true_lang.js +27 -0
- package/dist/domains/customDataForm/components/ACustomDataFormHiddenPart.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/customDataForm/composables/useCustomDataForm.d.ts +4 -0
- package/dist/domains/customDataForm/composables/useCustomDataForm.js +13 -0
- package/dist/domains/customDataForm/composables/useCustomDataForm.js.map +1 -0
- package/dist/domains/customDataForm/types/CustomDataForm.d.ts +26 -0
- package/dist/domains/customDataForm/types/CustomDataFormElementTypes.d.ts +32 -0
- package/dist/domains/customDataForm/types/CustomDataFormElementTypes.js +42 -0
- package/dist/domains/customDataForm/types/CustomDataFormElementTypes.js.map +1 -0
- package/dist/domains/dam/api/damAssetApi.d.ts +49 -0
- package/dist/domains/dam/api/damAssetApi.js +166 -0
- package/dist/domains/dam/api/damAssetApi.js.map +1 -0
- package/dist/domains/dam/api/damAssetLicenceApi.d.ts +5 -0
- package/dist/domains/dam/api/damAssetLicenceApi.js +17 -0
- package/dist/domains/dam/api/damAssetLicenceApi.js.map +1 -0
- package/dist/domains/dam/api/damConstants.d.ts +2 -0
- package/dist/domains/dam/api/damConstants.js +6 -0
- package/dist/domains/dam/api/damConstants.js.map +1 -0
- package/dist/domains/dam/api/damEndPoints.d.ts +7 -0
- package/dist/domains/dam/api/damEndPoints.js +6 -0
- package/dist/domains/dam/api/damEndPoints.js.map +1 -0
- package/dist/domains/dam/api/damImageApi.d.ts +11 -0
- package/dist/domains/dam/api/damImageApi.js +168 -0
- package/dist/domains/dam/api/damImageApi.js.map +1 -0
- package/dist/domains/dam/api/damImageRoiApi.d.ts +7 -0
- package/dist/domains/dam/api/damImageRoiApi.js +36 -0
- package/dist/domains/dam/api/damImageRoiApi.js.map +1 -0
- package/dist/domains/dam/api/damfetchAssetListByFileIdsMultipleLicences.d.ts +4 -0
- package/dist/domains/dam/api/damfetchAssetListByFileIdsMultipleLicences.js +30 -0
- package/dist/domains/dam/api/damfetchAssetListByFileIdsMultipleLicences.js.map +1 -0
- package/dist/domains/dam/api/uploadApi.d.ts +6 -0
- package/dist/domains/dam/api/uploadApi.js +23 -0
- package/dist/domains/dam/api/uploadApi.js.map +1 -0
- package/dist/domains/dam/assetDetail/components/AColorBox.js +7 -0
- package/dist/domains/dam/assetDetail/components/AColorBox.js.map +1 -0
- package/dist/domains/dam/assetDetail/components/AColorBox.vue.d.ts +12 -0
- package/dist/domains/dam/assetDetail/components/AColorBox.vue_vue_type_script_setup_true_lang.js +25 -0
- package/dist/domains/dam/assetDetail/components/AColorBox.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/assetDetail/components/AssetCustomMetadataForm.js +7 -0
- package/dist/domains/dam/assetDetail/components/AssetCustomMetadataForm.js.map +1 -0
- package/dist/domains/dam/assetDetail/components/AssetCustomMetadataForm.vue.d.ts +41 -0
- package/dist/domains/dam/assetDetail/components/AssetCustomMetadataForm.vue_vue_type_script_setup_true_lang.js +65 -0
- package/dist/domains/dam/assetDetail/components/AssetCustomMetadataForm.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/assetDetail/components/AssetDetailDialog.js +7 -0
- package/dist/domains/dam/assetDetail/components/AssetDetailDialog.js.map +1 -0
- package/dist/domains/dam/assetDetail/components/AssetDetailDialog.vue.d.ts +17 -0
- package/dist/domains/dam/assetDetail/components/AssetDetailDialog.vue_vue_type_script_setup_true_lang.js +99 -0
- package/dist/domains/dam/assetDetail/components/AssetDetailDialog.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/assetDetail/components/AssetDetailDialogFrame.js +7 -0
- package/dist/domains/dam/assetDetail/components/AssetDetailDialogFrame.js.map +1 -0
- package/dist/domains/dam/assetDetail/components/AssetDetailDialogFrame.vue.d.ts +32 -0
- package/dist/domains/dam/assetDetail/components/AssetDetailDialogFrame.vue_vue_type_script_setup_true_lang.js +139 -0
- package/dist/domains/dam/assetDetail/components/AssetDetailDialogFrame.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/assetDetail/components/AssetDetailDialogLoader.js +7 -0
- package/dist/domains/dam/assetDetail/components/AssetDetailDialogLoader.js.map +1 -0
- package/dist/domains/dam/assetDetail/components/AssetDetailDialogLoader.vue.d.ts +7 -0
- package/dist/domains/dam/assetDetail/components/AssetDetailDialogLoader.vue_vue_type_script_setup_true_lang.js +53 -0
- package/dist/domains/dam/assetDetail/components/AssetDetailDialogLoader.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/assetDetail/components/AssetDetailDialogSidebar.js +7 -0
- package/dist/domains/dam/assetDetail/components/AssetDetailDialogSidebar.js.map +1 -0
- package/dist/domains/dam/assetDetail/components/AssetDetailDialogSidebar.vue.d.ts +27 -0
- package/dist/domains/dam/assetDetail/components/AssetDetailDialogSidebar.vue_vue_type_script_setup_true_lang.js +67 -0
- package/dist/domains/dam/assetDetail/components/AssetDetailDialogSidebar.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/assetDetail/components/AssetDetailSidebarActionsTeleportTarget.js +7 -0
- package/dist/domains/dam/assetDetail/components/AssetDetailSidebarActionsTeleportTarget.js.map +1 -0
- package/dist/domains/dam/assetDetail/components/AssetDetailSidebarActionsTeleportTarget.vue.d.ts +7 -0
- package/dist/domains/dam/assetDetail/components/AssetDetailSidebarActionsTeleportTarget.vue_vue_type_script_setup_true_lang.js +26 -0
- package/dist/domains/dam/assetDetail/components/AssetDetailSidebarActionsTeleportTarget.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/assetDetail/components/AssetDetailSidebarActionsWrapper.js +7 -0
- package/dist/domains/dam/assetDetail/components/AssetDetailSidebarActionsWrapper.js.map +1 -0
- package/dist/domains/dam/assetDetail/components/AssetDetailSidebarActionsWrapper.vue.d.ts +17 -0
- package/dist/domains/dam/assetDetail/components/AssetDetailSidebarActionsWrapper.vue_vue_type_script_setup_true_lang.js +18 -0
- package/dist/domains/dam/assetDetail/components/AssetDetailSidebarActionsWrapper.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/assetDetail/components/AssetDetailSidebarFrame.js +7 -0
- package/dist/domains/dam/assetDetail/components/AssetDetailSidebarFrame.js.map +1 -0
- package/dist/domains/dam/assetDetail/components/AssetDetailSidebarFrame.vue.d.ts +24 -0
- package/dist/domains/dam/assetDetail/components/AssetDetailSidebarFrame.vue_vue_type_script_setup_true_lang.js +70 -0
- package/dist/domains/dam/assetDetail/components/AssetDetailSidebarFrame.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/assetDetail/components/AssetDetailSidebarMetadata.js +7 -0
- package/dist/domains/dam/assetDetail/components/AssetDetailSidebarMetadata.js.map +1 -0
- package/dist/domains/dam/assetDetail/components/AssetDetailSidebarMetadata.vue.d.ts +17 -0
- package/dist/domains/dam/assetDetail/components/AssetDetailSidebarMetadata.vue_vue_type_script_setup_true_lang.js +83 -0
- package/dist/domains/dam/assetDetail/components/AssetDetailSidebarMetadata.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/assetDetail/components/AssetDetailSidebarROI.js +8 -0
- package/dist/domains/dam/assetDetail/components/AssetDetailSidebarROI.js.map +1 -0
- package/dist/domains/dam/assetDetail/components/AssetDetailSidebarROI.vue.d.ts +11 -0
- package/dist/domains/dam/assetDetail/components/AssetDetailSidebarROI.vue_vue_type_script_setup_true_lang.js +127 -0
- package/dist/domains/dam/assetDetail/components/AssetDetailSidebarROI.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/assetDetail/components/AssetFileFailReasonChip.js +7 -0
- package/dist/domains/dam/assetDetail/components/AssetFileFailReasonChip.js.map +1 -0
- package/dist/domains/dam/assetDetail/components/AssetFileFailReasonChip.vue.d.ts +7 -0
- package/dist/domains/dam/assetDetail/components/AssetFileFailReasonChip.vue_vue_type_script_setup_true_lang.js +19 -0
- package/dist/domains/dam/assetDetail/components/AssetFileFailReasonChip.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/assetDetail/components/AssetFileInfoPanel.js +7 -0
- package/dist/domains/dam/assetDetail/components/AssetFileInfoPanel.js.map +1 -0
- package/dist/domains/dam/assetDetail/components/AssetFileInfoPanel.vue.d.ts +9 -0
- package/dist/domains/dam/assetDetail/components/AssetFileInfoPanel.vue_vue_type_script_setup_true_lang.js +122 -0
- package/dist/domains/dam/assetDetail/components/AssetFileInfoPanel.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/assetDetail/components/AssetFileRotate.js +7 -0
- package/dist/domains/dam/assetDetail/components/AssetFileRotate.js.map +1 -0
- package/dist/domains/dam/assetDetail/components/AssetFileRotate.vue.d.ts +16 -0
- package/dist/domains/dam/assetDetail/components/AssetFileRotate.vue_vue_type_script_setup_true_lang.js +57 -0
- package/dist/domains/dam/assetDetail/components/AssetFileRotate.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/assetDetail/components/AssetImage.js +7 -0
- package/dist/domains/dam/assetDetail/components/AssetImage.js.map +1 -0
- package/dist/domains/dam/assetDetail/components/AssetImage.vue.d.ts +62 -0
- package/dist/domains/dam/assetDetail/components/AssetImage.vue_vue_type_script_setup_true_lang.js +301 -0
- package/dist/domains/dam/assetDetail/components/AssetImage.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/assetDetail/components/AssetImageMetaIcons.js +8 -0
- package/dist/domains/dam/assetDetail/components/AssetImageMetaIcons.js.map +1 -0
- package/dist/domains/dam/assetDetail/components/AssetImageMetaIcons.vue.d.ts +17 -0
- package/dist/domains/dam/assetDetail/components/AssetImageMetaIcons.vue_vue_type_script_setup_true_lang.js +58 -0
- package/dist/domains/dam/assetDetail/components/AssetImageMetaIcons.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/assetDetail/components/AssetInfobox.js +7 -0
- package/dist/domains/dam/assetDetail/components/AssetInfobox.js.map +1 -0
- package/dist/domains/dam/assetDetail/components/AssetInfobox.vue.d.ts +13 -0
- package/dist/domains/dam/assetDetail/components/AssetInfobox.vue_vue_type_script_setup_true_lang.js +47 -0
- package/dist/domains/dam/assetDetail/components/AssetInfobox.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/assetDetail/components/AssetMetadata.js +7 -0
- package/dist/domains/dam/assetDetail/components/AssetMetadata.js.map +1 -0
- package/dist/domains/dam/assetDetail/components/AssetMetadata.vue.d.ts +18 -0
- package/dist/domains/dam/assetDetail/components/AssetMetadata.vue_vue_type_script_setup_true_lang.js +200 -0
- package/dist/domains/dam/assetDetail/components/AssetMetadata.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/assetDetail/components/AssetMetadataImageAttributes.js +7 -0
- package/dist/domains/dam/assetDetail/components/AssetMetadataImageAttributes.js.map +1 -0
- package/dist/domains/dam/assetDetail/components/AssetMetadataImageAttributes.vue.d.ts +7 -0
- package/dist/domains/dam/assetDetail/components/AssetMetadataImageAttributes.vue_vue_type_script_setup_true_lang.js +69 -0
- package/dist/domains/dam/assetDetail/components/AssetMetadataImageAttributes.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/assetDetail/composables/assetDetailExtSystem.d.ts +12 -0
- package/dist/domains/dam/assetDetail/composables/assetDetailExtSystem.js +19 -0
- package/dist/domains/dam/assetDetail/composables/assetDetailExtSystem.js.map +1 -0
- package/dist/domains/dam/assetDetail/composables/assetDetailSidebarActionbar.d.ts +8 -0
- package/dist/domains/dam/assetDetail/composables/assetDetailSidebarActionbar.js +20 -0
- package/dist/domains/dam/assetDetail/composables/assetDetailSidebarActionbar.js.map +1 -0
- package/dist/domains/dam/assetDetail/composables/assetDetailView.d.ts +46 -0
- package/dist/domains/dam/assetDetail/composables/assetDetailView.js +65 -0
- package/dist/domains/dam/assetDetail/composables/assetDetailView.js.map +1 -0
- package/dist/domains/dam/assetDetail/composables/assetFileFailReason.d.ts +24 -0
- package/dist/domains/dam/assetDetail/composables/assetFileFailReason.js +40 -0
- package/dist/domains/dam/assetDetail/composables/assetFileFailReason.js.map +1 -0
- package/dist/domains/dam/assetDetail/store/assetDetailStore.d.ts +800 -0
- package/dist/domains/dam/assetDetail/store/assetDetailStore.js +64 -0
- package/dist/domains/dam/assetDetail/store/assetDetailStore.js.map +1 -0
- package/dist/domains/dam/assetDetail/utils/assetImageIconsConfig.d.ts +11 -0
- package/dist/domains/dam/assetDetail/utils/assetImageIconsConfig.js +46 -0
- package/dist/domains/dam/assetDetail/utils/assetImageIconsConfig.js.map +1 -0
- package/dist/domains/dam/assetDetail/utils/assetMetadataMayStillChange.d.ts +7 -0
- package/dist/domains/dam/assetDetail/utils/assetMetadataMayStillChange.js +11 -0
- package/dist/domains/dam/assetDetail/utils/assetMetadataMayStillChange.js.map +1 -0
- package/dist/domains/dam/assetSelect/api/damPodcastApi.d.ts +5 -0
- package/dist/domains/dam/assetSelect/api/damPodcastApi.js +25 -0
- package/dist/domains/dam/assetSelect/api/damPodcastApi.js.map +1 -0
- package/dist/domains/dam/assetSelect/components/AAssetListInner.js +7 -0
- package/dist/domains/dam/assetSelect/components/AAssetListInner.js.map +1 -0
- package/dist/domains/dam/assetSelect/components/AAssetListInner.vue.d.ts +828 -0
- package/dist/domains/dam/assetSelect/components/AAssetListInner.vue_vue_type_script_setup_true_lang.js +300 -0
- package/dist/domains/dam/assetSelect/components/AAssetListInner.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/assetSelect/components/AAssetSelect.js +7 -0
- package/dist/domains/dam/assetSelect/components/AAssetSelect.js.map +1 -0
- package/dist/domains/dam/assetSelect/components/AAssetSelect.vue.d.ts +453 -0
- package/dist/domains/dam/assetSelect/components/AAssetSelect.vue_vue_type_script_setup_true_lang.js +226 -0
- package/dist/domains/dam/assetSelect/components/AAssetSelect.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/assetSelect/components/AAssetSelectMedia.js +7 -0
- package/dist/domains/dam/assetSelect/components/AAssetSelectMedia.js.map +1 -0
- package/dist/domains/dam/assetSelect/components/AAssetSelectMedia.vue.d.ts +63 -0
- package/dist/domains/dam/assetSelect/components/AAssetSelectMedia.vue_vue_type_script_setup_true_lang.js +231 -0
- package/dist/domains/dam/assetSelect/components/AAssetSelectMedia.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/assetSelect/components/AssetDistributionServiceNameFilter.js +7 -0
- package/dist/domains/dam/assetSelect/components/AssetDistributionServiceNameFilter.js.map +1 -0
- package/dist/domains/dam/assetSelect/components/AssetDistributionServiceNameFilter.vue.d.ts +13 -0
- package/dist/domains/dam/assetSelect/components/AssetDistributionServiceNameFilter.vue_vue_type_script_setup_true_lang.js +47 -0
- package/dist/domains/dam/assetSelect/components/AssetDistributionServiceNameFilter.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/assetSelect/components/AssetImagePreview.js +8 -0
- package/dist/domains/dam/assetSelect/components/AssetImagePreview.js.map +1 -0
- package/dist/domains/dam/assetSelect/components/AssetImagePreview.vue.d.ts +33 -0
- package/dist/domains/dam/assetSelect/components/AssetImagePreview.vue_vue_type_script_setup_true_lang.js +114 -0
- package/dist/domains/dam/assetSelect/components/AssetImagePreview.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/assetSelect/components/AssetSelectFilter.js +7 -0
- package/dist/domains/dam/assetSelect/components/AssetSelectFilter.js.map +1 -0
- package/dist/domains/dam/assetSelect/components/AssetSelectFilter.vue.d.ts +8 -0
- package/dist/domains/dam/assetSelect/components/AssetSelectFilter.vue_vue_type_script_setup_true_lang.js +90 -0
- package/dist/domains/dam/assetSelect/components/AssetSelectFilter.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/assetSelect/components/AssetSelectFilterForm.js +7 -0
- package/dist/domains/dam/assetSelect/components/AssetSelectFilterForm.js.map +1 -0
- package/dist/domains/dam/assetSelect/components/AssetSelectFilterForm.vue.d.ts +16 -0
- package/dist/domains/dam/assetSelect/components/AssetSelectFilterForm.vue_vue_type_script_setup_true_lang.js +124 -0
- package/dist/domains/dam/assetSelect/components/AssetSelectFilterForm.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/assetSelect/components/AssetSelectListBar.js +7 -0
- package/dist/domains/dam/assetSelect/components/AssetSelectListBar.js.map +1 -0
- package/dist/domains/dam/assetSelect/components/AssetSelectListBar.vue.d.ts +51 -0
- package/dist/domains/dam/assetSelect/components/AssetSelectListBar.vue_vue_type_script_setup_true_lang.js +322 -0
- package/dist/domains/dam/assetSelect/components/AssetSelectListBar.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/assetSelect/components/AssetSelectListTable.js +7 -0
- package/dist/domains/dam/assetSelect/components/AssetSelectListTable.js.map +1 -0
- package/dist/domains/dam/assetSelect/components/AssetSelectListTable.vue.d.ts +7 -0
- package/dist/domains/dam/assetSelect/components/AssetSelectListTable.vue_vue_type_script_setup_true_lang.js +42 -0
- package/dist/domains/dam/assetSelect/components/AssetSelectListTable.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/assetSelect/components/AssetSelectListTiles.js +8 -0
- package/dist/domains/dam/assetSelect/components/AssetSelectListTiles.js.map +1 -0
- package/dist/domains/dam/assetSelect/components/AssetSelectListTiles.vue.d.ts +7 -0
- package/dist/domains/dam/assetSelect/components/AssetSelectListTiles.vue_vue_type_script_setup_true_lang.js +28 -0
- package/dist/domains/dam/assetSelect/components/AssetSelectListTiles.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/assetSelect/components/AssetSelectTableRowItem.js +8 -0
- package/dist/domains/dam/assetSelect/components/AssetSelectTableRowItem.js.map +1 -0
- package/dist/domains/dam/assetSelect/components/AssetSelectTableRowItem.vue.d.ts +22 -0
- package/dist/domains/dam/assetSelect/components/AssetSelectTableRowItem.vue_vue_type_script_setup_true_lang.js +74 -0
- package/dist/domains/dam/assetSelect/components/AssetSelectTableRowItem.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/assetSelect/components/AssetSelectTilesItem.js +7 -0
- package/dist/domains/dam/assetSelect/components/AssetSelectTilesItem.js.map +1 -0
- package/dist/domains/dam/assetSelect/components/AssetSelectTilesItem.vue.d.ts +22 -0
- package/dist/domains/dam/assetSelect/components/AssetSelectTilesItem.vue_vue_type_script_setup_true_lang.js +71 -0
- package/dist/domains/dam/assetSelect/components/AssetSelectTilesItem.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/assetSelect/components/FilterPodcastRemoteAutocomplete.js +7 -0
- package/dist/domains/dam/assetSelect/components/FilterPodcastRemoteAutocomplete.js.map +1 -0
- package/dist/domains/dam/assetSelect/components/FilterPodcastRemoteAutocomplete.vue.d.ts +12 -0
- package/dist/domains/dam/assetSelect/components/FilterPodcastRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js +33 -0
- package/dist/domains/dam/assetSelect/components/FilterPodcastRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/assetSelect/composables/assetSelectFilterSidebar.d.ts +10 -0
- package/dist/domains/dam/assetSelect/composables/assetSelectFilterSidebar.js +32 -0
- package/dist/domains/dam/assetSelect/composables/assetSelectFilterSidebar.js.map +1 -0
- package/dist/domains/dam/assetSelect/composables/assetSelectGridView.d.ts +11 -0
- package/dist/domains/dam/assetSelect/composables/assetSelectGridView.js +19 -0
- package/dist/domains/dam/assetSelect/composables/assetSelectGridView.js.map +1 -0
- package/dist/domains/dam/assetSelect/composables/assetSelectItemActions.d.ts +30 -0
- package/dist/domains/dam/assetSelect/composables/assetSelectItemActions.js +37 -0
- package/dist/domains/dam/assetSelect/composables/assetSelectItemActions.js.map +1 -0
- package/dist/domains/dam/assetSelect/composables/assetSelectListActions.d.ts +1571 -0
- package/dist/domains/dam/assetSelect/composables/assetSelectListActions.js +152 -0
- package/dist/domains/dam/assetSelect/composables/assetSelectListActions.js.map +1 -0
- package/dist/domains/dam/assetSelect/composables/podcastFilterAndActions.d.ts +32 -0
- package/dist/domains/dam/assetSelect/composables/podcastFilterAndActions.js +38 -0
- package/dist/domains/dam/assetSelect/composables/podcastFilterAndActions.js.map +1 -0
- package/dist/domains/dam/assetSelect/filter/AssetFilter.d.ts +1172 -0
- package/dist/domains/dam/assetSelect/filter/AssetFilter.js +232 -0
- package/dist/domains/dam/assetSelect/filter/AssetFilter.js.map +1 -0
- package/dist/domains/dam/assetSelect/store/assetSelectStore.d.ts +1941 -0
- package/dist/domains/dam/assetSelect/store/assetSelectStore.js +163 -0
- package/dist/domains/dam/assetSelect/store/assetSelectStore.js.map +1 -0
- package/dist/domains/dam/author/api/authorApi.d.ts +7 -0
- package/dist/domains/dam/author/api/authorApi.js +35 -0
- package/dist/domains/dam/author/api/authorApi.js.map +1 -0
- package/dist/domains/dam/author/components/AuthorCreateButton.js +7 -0
- package/dist/domains/dam/author/components/AuthorCreateButton.js.map +1 -0
- package/dist/domains/dam/author/components/AuthorCreateButton.vue.d.ts +35 -0
- package/dist/domains/dam/author/components/AuthorCreateButton.vue_vue_type_script_setup_true_lang.js +230 -0
- package/dist/domains/dam/author/components/AuthorCreateButton.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/author/components/AuthorRemoteAutocompleteCachedAuthorChip.js +7 -0
- package/dist/domains/dam/author/components/AuthorRemoteAutocompleteCachedAuthorChip.js.map +1 -0
- package/dist/domains/dam/author/components/AuthorRemoteAutocompleteCachedAuthorChip.vue.d.ts +41 -0
- package/dist/domains/dam/author/components/AuthorRemoteAutocompleteCachedAuthorChip.vue_vue_type_script_setup_true_lang.js +112 -0
- package/dist/domains/dam/author/components/AuthorRemoteAutocompleteCachedAuthorChip.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/author/components/AuthorRemoteAutocompleteCachedAuthorChipConflicts.js +7 -0
- package/dist/domains/dam/author/components/AuthorRemoteAutocompleteCachedAuthorChipConflicts.js.map +1 -0
- package/dist/domains/dam/author/components/AuthorRemoteAutocompleteCachedAuthorChipConflicts.vue.d.ts +14 -0
- package/dist/domains/dam/author/components/AuthorRemoteAutocompleteCachedAuthorChipConflicts.vue_vue_type_script_setup_true_lang.js +68 -0
- package/dist/domains/dam/author/components/AuthorRemoteAutocompleteCachedAuthorChipConflicts.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/author/components/AuthorRemoteAutocompleteWithCached.js +9 -0
- package/dist/domains/dam/author/components/AuthorRemoteAutocompleteWithCached.js.map +1 -0
- package/dist/domains/dam/author/components/AuthorRemoteAutocompleteWithCached.vue.d.ts +39 -0
- package/dist/domains/dam/author/components/AuthorRemoteAutocompleteWithCached.vue_vue_type_script_setup_true_lang.js +229 -0
- package/dist/domains/dam/author/components/AuthorRemoteAutocompleteWithCached.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/author/components/DamAuthorFilterRemoteAutocomplete.js +7 -0
- package/dist/domains/dam/author/components/DamAuthorFilterRemoteAutocomplete.js.map +1 -0
- package/dist/domains/dam/author/components/DamAuthorFilterRemoteAutocomplete.vue.d.ts +16 -0
- package/dist/domains/dam/author/components/DamAuthorFilterRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js +66 -0
- package/dist/domains/dam/author/components/DamAuthorFilterRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/author/composables/authorActions.d.ts +13 -0
- package/dist/domains/dam/author/composables/authorActions.js +29 -0
- package/dist/domains/dam/author/composables/authorActions.js.map +1 -0
- package/dist/domains/dam/author/composables/authorValidation.d.ts +38 -0
- package/dist/domains/dam/author/composables/authorValidation.js +19 -0
- package/dist/domains/dam/author/composables/authorValidation.js.map +1 -0
- package/dist/domains/dam/author/composables/cachedAuthors.d.ts +25 -0
- package/dist/domains/dam/author/composables/cachedAuthors.js +51 -0
- package/dist/domains/dam/author/composables/cachedAuthors.js.map +1 -0
- package/dist/domains/dam/author/composables/cachedUsers.d.ts +17 -0
- package/dist/domains/dam/author/composables/cachedUsers.js +45 -0
- package/dist/domains/dam/author/composables/cachedUsers.js.map +1 -0
- package/dist/domains/dam/author/composables/damAuthorConfig.d.ts +10 -0
- package/dist/domains/dam/author/composables/damAuthorConfig.js +17 -0
- package/dist/domains/dam/author/composables/damAuthorConfig.js.map +1 -0
- package/dist/domains/dam/author/factory/AuthorFactory.d.ts +4 -0
- package/dist/domains/dam/author/factory/AuthorFactory.js +30 -0
- package/dist/domains/dam/author/factory/AuthorFactory.js.map +1 -0
- package/dist/domains/dam/author/filter/AuthorFilter.d.ts +14 -0
- package/dist/domains/dam/author/filter/AuthorFilter.js +24 -0
- package/dist/domains/dam/author/filter/AuthorFilter.js.map +1 -0
- package/dist/domains/dam/author/types/DamAuthor.d.ts +21 -0
- package/dist/domains/dam/author/types/DamAuthorType.d.ts +31 -0
- package/dist/domains/dam/author/types/DamAuthorType.js +37 -0
- package/dist/domains/dam/author/types/DamAuthorType.js.map +1 -0
- package/dist/domains/dam/components/DamAdminAssetLink.js +7 -0
- package/dist/domains/dam/components/DamAdminAssetLink.js.map +1 -0
- package/dist/domains/dam/components/DamAdminAssetLink.vue.d.ts +11 -0
- package/dist/domains/dam/components/DamAdminAssetLink.vue_vue_type_script_setup_true_lang.js +31 -0
- package/dist/domains/dam/components/DamAdminAssetLink.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/composables/commonAdminCoreDamOptions.d.ts +84 -0
- package/dist/domains/dam/composables/commonAdminCoreDamOptions.js +101 -0
- package/dist/domains/dam/composables/commonAdminCoreDamOptions.js.map +1 -0
- package/dist/domains/dam/composables/damConfigName.d.ts +20 -0
- package/dist/domains/dam/composables/damConfigName.js +20 -0
- package/dist/domains/dam/composables/damConfigName.js.map +1 -0
- package/dist/domains/dam/composables/damNotifications.d.ts +31 -0
- package/dist/domains/dam/composables/damNotifications.js +112 -0
- package/dist/domains/dam/composables/damNotifications.js.map +1 -0
- package/dist/domains/dam/composables/damNotificationsConnection.d.ts +11 -0
- package/dist/domains/dam/composables/damNotificationsConnection.js +20 -0
- package/dist/domains/dam/composables/damNotificationsConnection.js.map +1 -0
- package/dist/domains/dam/composables/damNotificationsEventBus.d.ts +72 -0
- package/dist/domains/dam/composables/damNotificationsEventBus.js +26 -0
- package/dist/domains/dam/composables/damNotificationsEventBus.js.map +1 -0
- package/dist/domains/dam/composables/extSystemIdForCached.d.ts +10 -0
- package/dist/domains/dam/composables/extSystemIdForCached.js +12 -0
- package/dist/domains/dam/composables/extSystemIdForCached.js.map +1 -0
- package/dist/domains/dam/composables/uploadValidations.d.ts +35 -0
- package/dist/domains/dam/composables/uploadValidations.js +22 -0
- package/dist/domains/dam/composables/uploadValidations.js.map +1 -0
- package/dist/domains/dam/config/api/damAssetCustomFormApi.d.ts +6 -0
- package/dist/domains/dam/config/api/damAssetCustomFormApi.js +28 -0
- package/dist/domains/dam/config/api/damAssetCustomFormApi.js.map +1 -0
- package/dist/domains/dam/config/api/damConfigApi.d.ts +6 -0
- package/dist/domains/dam/config/api/damConfigApi.js +36 -0
- package/dist/domains/dam/config/api/damConfigApi.js.map +1 -0
- package/dist/domains/dam/config/composables/acceptTypeAndSizeHelper.d.ts +8 -0
- package/dist/domains/dam/config/composables/acceptTypeAndSizeHelper.js +25 -0
- package/dist/domains/dam/config/composables/acceptTypeAndSizeHelper.js.map +1 -0
- package/dist/domains/dam/config/composables/damConfigState.d.ts +31 -0
- package/dist/domains/dam/config/composables/damConfigState.js +209 -0
- package/dist/domains/dam/config/composables/damConfigState.js.map +1 -0
- package/dist/domains/dam/config/store/damConfigStore.d.ts +37 -0
- package/dist/domains/dam/config/store/damConfigStore.js +49 -0
- package/dist/domains/dam/config/store/damConfigStore.js.map +1 -0
- package/dist/domains/dam/config/utils/damFilterUserAllowedUploadConfigs.d.ts +5 -0
- package/dist/domains/dam/config/utils/damFilterUserAllowedUploadConfigs.js +27 -0
- package/dist/domains/dam/config/utils/damFilterUserAllowedUploadConfigs.js.map +1 -0
- package/dist/domains/dam/cropper/components/ACropper.js +8 -0
- package/dist/domains/dam/cropper/components/ACropper.js.map +1 -0
- package/dist/domains/dam/cropper/components/ACropper.vue.d.ts +48 -0
- package/dist/domains/dam/cropper/components/ACropper.vue_vue_type_script_setup_true_lang.js +291 -0
- package/dist/domains/dam/cropper/components/ACropper.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/cropper/components/DamAssetImageRoiSelect.js +7 -0
- package/dist/domains/dam/cropper/components/DamAssetImageRoiSelect.js.map +1 -0
- package/dist/domains/dam/cropper/components/DamAssetImageRoiSelect.vue.d.ts +12 -0
- package/dist/domains/dam/cropper/components/DamAssetImageRoiSelect.vue_vue_type_script_setup_true_lang.js +100 -0
- package/dist/domains/dam/cropper/components/DamAssetImageRoiSelect.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/cropper/components/DamAssetImageRoiSelectLazy.js +7 -0
- package/dist/domains/dam/cropper/components/DamAssetImageRoiSelectLazy.js.map +1 -0
- package/dist/domains/dam/cropper/components/DamAssetImageRoiSelectLazy.vue.d.ts +12 -0
- package/dist/domains/dam/cropper/components/DamAssetImageRoiSelectLazy.vue_vue_type_script_setup_true_lang.js +57 -0
- package/dist/domains/dam/cropper/components/DamAssetImageRoiSelectLazy.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/cropper/store/imageRoiStore.d.ts +274 -0
- package/dist/domains/dam/cropper/store/imageRoiStore.js +50 -0
- package/dist/domains/dam/cropper/store/imageRoiStore.js.map +1 -0
- package/dist/domains/dam/cropper/utils/cropperGeometry.d.ts +70 -0
- package/dist/domains/dam/cropper/utils/cropperGeometry.js +72 -0
- package/dist/domains/dam/cropper/utils/cropperGeometry.js.map +1 -0
- package/dist/domains/dam/cropper/utils/cropperJsService.d.ts +13 -0
- package/dist/domains/dam/cropper/utils/cropperJsService.js +19 -0
- package/dist/domains/dam/cropper/utils/cropperJsService.js.map +1 -0
- package/dist/domains/dam/cropper/utils/cropperTypes.d.ts +14 -0
- package/dist/domains/dam/cropper/utils/damAssetImageRoiSelectLoader.d.ts +10 -0
- package/dist/domains/dam/cropper/utils/damAssetImageRoiSelectLoader.js +7 -0
- package/dist/domains/dam/cropper/utils/damAssetImageRoiSelectLoader.js.map +1 -0
- package/dist/domains/dam/imageWidget/components/AImageMediaWidget.js +7 -0
- package/dist/domains/dam/imageWidget/components/AImageMediaWidget.js.map +1 -0
- package/dist/domains/dam/imageWidget/components/AImageMediaWidget.vue.d.ts +82 -0
- package/dist/domains/dam/imageWidget/components/AImageMediaWidget.vue_vue_type_script_setup_true_lang.js +172 -0
- package/dist/domains/dam/imageWidget/components/AImageMediaWidget.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/imageWidget/components/AImagePublicInput.js +7 -0
- package/dist/domains/dam/imageWidget/components/AImagePublicInput.js.map +1 -0
- package/dist/domains/dam/imageWidget/components/AImagePublicInput.vue.d.ts +31 -0
- package/dist/domains/dam/imageWidget/components/AImagePublicInput.vue_vue_type_script_setup_true_lang.js +165 -0
- package/dist/domains/dam/imageWidget/components/AImagePublicInput.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/imageWidget/components/AImageWidget.js +7 -0
- package/dist/domains/dam/imageWidget/components/AImageWidget.js.map +1 -0
- package/dist/domains/dam/imageWidget/components/AImageWidget.vue.d.ts +71 -0
- package/dist/domains/dam/imageWidget/components/AImageWidget.vue_vue_type_script_setup_true_lang.js +138 -0
- package/dist/domains/dam/imageWidget/components/AImageWidget.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/imageWidget/components/AImageWidgetMultiple.js +7 -0
- package/dist/domains/dam/imageWidget/components/AImageWidgetMultiple.js.map +1 -0
- package/dist/domains/dam/imageWidget/components/AImageWidgetMultiple.vue.d.ts +30 -0
- package/dist/domains/dam/imageWidget/components/AImageWidgetMultiple.vue_vue_type_script_setup_true_lang.js +97 -0
- package/dist/domains/dam/imageWidget/components/AImageWidgetMultiple.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/imageWidget/components/AImageWidgetMultipleSimple.js +7 -0
- package/dist/domains/dam/imageWidget/components/AImageWidgetMultipleSimple.js.map +1 -0
- package/dist/domains/dam/imageWidget/components/AImageWidgetMultipleSimple.vue.d.ts +25 -0
- package/dist/domains/dam/imageWidget/components/AImageWidgetMultipleSimple.vue_vue_type_script_setup_true_lang.js +66 -0
- package/dist/domains/dam/imageWidget/components/AImageWidgetMultipleSimple.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/imageWidget/components/AImageWidgetSimple.js +9 -0
- package/dist/domains/dam/imageWidget/components/AImageWidgetSimple.js.map +1 -0
- package/dist/domains/dam/imageWidget/components/AImageWidgetSimple.vue.d.ts +85 -0
- package/dist/domains/dam/imageWidget/components/AImageWidgetSimple.vue_vue_type_script_setup_true_lang.js +136 -0
- package/dist/domains/dam/imageWidget/components/AImageWidgetSimple.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/imageWidget/components/AMediaWidgetSimple.js +9 -0
- package/dist/domains/dam/imageWidget/components/AMediaWidgetSimple.js.map +1 -0
- package/dist/domains/dam/imageWidget/components/AMediaWidgetSimple.vue.d.ts +69 -0
- package/dist/domains/dam/imageWidget/components/AMediaWidgetSimple.vue_vue_type_script_setup_true_lang.js +122 -0
- package/dist/domains/dam/imageWidget/components/AMediaWidgetSimple.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/imageWidget/components/ImageDetailDialogMetadata.js +7 -0
- package/dist/domains/dam/imageWidget/components/ImageDetailDialogMetadata.js.map +1 -0
- package/dist/domains/dam/imageWidget/components/ImageDetailDialogMetadata.vue.d.ts +72 -0
- package/dist/domains/dam/imageWidget/components/ImageDetailDialogMetadata.vue_vue_type_script_setup_true_lang.js +362 -0
- package/dist/domains/dam/imageWidget/components/ImageDetailDialogMetadata.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/imageWidget/components/ImageMassOperations.js +7 -0
- package/dist/domains/dam/imageWidget/components/ImageMassOperations.js.map +1 -0
- package/dist/domains/dam/imageWidget/components/ImageMassOperations.vue.d.ts +9 -0
- package/dist/domains/dam/imageWidget/components/ImageMassOperations.vue_vue_type_script_setup_true_lang.js +250 -0
- package/dist/domains/dam/imageWidget/components/ImageMassOperations.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/imageWidget/components/ImageMediaWidgetInner.js +7 -0
- package/dist/domains/dam/imageWidget/components/ImageMediaWidgetInner.js.map +1 -0
- package/dist/domains/dam/imageWidget/components/ImageMediaWidgetInner.vue.d.ts +142 -0
- package/dist/domains/dam/imageWidget/components/ImageMediaWidgetInner.vue_vue_type_script_setup_true_lang.js +776 -0
- package/dist/domains/dam/imageWidget/components/ImageMediaWidgetInner.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/imageWidget/components/ImageWidgetInner.js +7 -0
- package/dist/domains/dam/imageWidget/components/ImageWidgetInner.js.map +1 -0
- package/dist/domains/dam/imageWidget/components/ImageWidgetInner.vue.d.ts +487 -0
- package/dist/domains/dam/imageWidget/components/ImageWidgetInner.vue_vue_type_script_setup_true_lang.js +662 -0
- package/dist/domains/dam/imageWidget/components/ImageWidgetInner.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleInner.js +8 -0
- package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleInner.js.map +1 -0
- package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleInner.vue.d.ts +435 -0
- package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleInner.vue_vue_type_script_setup_true_lang.js +597 -0
- package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleInner.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleItem.js +8 -0
- package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleItem.js.map +1 -0
- package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleItem.vue.d.ts +24 -0
- package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleItem.vue_vue_type_script_setup_true_lang.js +173 -0
- package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleItem.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleLimitDialog.js +7 -0
- package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleLimitDialog.js.map +1 -0
- package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleLimitDialog.vue.d.ts +13 -0
- package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleLimitDialog.vue_vue_type_script_setup_true_lang.js +88 -0
- package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleLimitDialog.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/imageWidget/components/MediaWidgetSimpleDialog.js +7 -0
- package/dist/domains/dam/imageWidget/components/MediaWidgetSimpleDialog.js.map +1 -0
- package/dist/domains/dam/imageWidget/components/MediaWidgetSimpleDialog.vue.d.ts +24 -0
- package/dist/domains/dam/imageWidget/components/MediaWidgetSimpleDialog.vue_vue_type_script_setup_true_lang.js +58 -0
- package/dist/domains/dam/imageWidget/components/MediaWidgetSimpleDialog.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/imageWidget/composables/commonAdminImageOptions.d.ts +16 -0
- package/dist/domains/dam/imageWidget/composables/commonAdminImageOptions.js +26 -0
- package/dist/domains/dam/imageWidget/composables/commonAdminImageOptions.js.map +1 -0
- package/dist/domains/dam/imageWidget/composables/imageActions.d.ts +9 -0
- package/dist/domains/dam/imageWidget/composables/imageActions.js +13 -0
- package/dist/domains/dam/imageWidget/composables/imageActions.js.map +1 -0
- package/dist/domains/dam/imageWidget/composables/imageApiCms.d.ts +11 -0
- package/dist/domains/dam/imageWidget/composables/imageApiCms.js +68 -0
- package/dist/domains/dam/imageWidget/composables/imageApiCms.js.map +1 -0
- package/dist/domains/dam/imageWidget/composables/imageDialogDamAuthors.d.ts +434 -0
- package/dist/domains/dam/imageWidget/composables/imageDialogDamAuthors.js +128 -0
- package/dist/domains/dam/imageWidget/composables/imageDialogDamAuthors.js.map +1 -0
- package/dist/domains/dam/imageWidget/composables/useImageMassOperations.d.ts +6 -0
- package/dist/domains/dam/imageWidget/composables/useImageMassOperations.js +53 -0
- package/dist/domains/dam/imageWidget/composables/useImageMassOperations.js.map +1 -0
- package/dist/domains/dam/imageWidget/store/imageMediaWidgetStore.d.ts +87 -0
- package/dist/domains/dam/imageWidget/store/imageMediaWidgetStore.js +30 -0
- package/dist/domains/dam/imageWidget/store/imageMediaWidgetStore.js.map +1 -0
- package/dist/domains/dam/imageWidget/store/imageStore.d.ts +58 -0
- package/dist/domains/dam/imageWidget/store/imageStore.js +50 -0
- package/dist/domains/dam/imageWidget/store/imageStore.js.map +1 -0
- package/dist/domains/dam/imageWidget/utils/damImage.d.ts +26 -0
- package/dist/domains/dam/imageWidget/utils/damImage.js +35 -0
- package/dist/domains/dam/imageWidget/utils/damImage.js.map +1 -0
- package/dist/domains/dam/imageWidget/utils/fieldLockTurns.d.ts +5 -0
- package/dist/domains/dam/imageWidget/utils/fieldLockTurns.js +9 -0
- package/dist/domains/dam/imageWidget/utils/fieldLockTurns.js.map +1 -0
- package/dist/domains/dam/imageWidget/utils/imageSaves.d.ts +33 -0
- package/dist/domains/dam/imageWidget/utils/imageSaves.js +67 -0
- package/dist/domains/dam/imageWidget/utils/imageSaves.js.map +1 -0
- package/dist/domains/dam/imageWidget/utils/imageWidgetInkectionKeys.d.ts +5 -0
- package/dist/domains/dam/imageWidget/utils/imageWidgetInkectionKeys.js +6 -0
- package/dist/domains/dam/imageWidget/utils/imageWidgetInkectionKeys.js.map +1 -0
- package/dist/domains/dam/imageWidget/utils/metadataToImageMap.d.ts +16 -0
- package/dist/domains/dam/imageWidget/utils/metadataToImageMap.js +45 -0
- package/dist/domains/dam/imageWidget/utils/metadataToImageMap.js.map +1 -0
- package/dist/domains/dam/imageWidget/utils/waitLimit.d.ts +10 -0
- package/dist/domains/dam/imageWidget/utils/waitLimit.js +13 -0
- package/dist/domains/dam/imageWidget/utils/waitLimit.js.map +1 -0
- package/dist/domains/dam/keyword/api/keywordApi.d.ts +6 -0
- package/dist/domains/dam/keyword/api/keywordApi.js +35 -0
- package/dist/domains/dam/keyword/api/keywordApi.js.map +1 -0
- package/dist/domains/dam/keyword/components/DamKeywordFilterRemoteAutocomplete.js +7 -0
- package/dist/domains/dam/keyword/components/DamKeywordFilterRemoteAutocomplete.js.map +1 -0
- package/dist/domains/dam/keyword/components/DamKeywordFilterRemoteAutocomplete.vue.d.ts +16 -0
- package/dist/domains/dam/keyword/components/DamKeywordFilterRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js +35 -0
- package/dist/domains/dam/keyword/components/DamKeywordFilterRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/keyword/components/KeywordRemoteAutocompleteCachedKeywordChip.js +7 -0
- package/dist/domains/dam/keyword/components/KeywordRemoteAutocompleteCachedKeywordChip.js.map +1 -0
- package/dist/domains/dam/keyword/components/KeywordRemoteAutocompleteCachedKeywordChip.vue.d.ts +36 -0
- package/dist/domains/dam/keyword/components/KeywordRemoteAutocompleteCachedKeywordChip.vue_vue_type_script_setup_true_lang.js +87 -0
- package/dist/domains/dam/keyword/components/KeywordRemoteAutocompleteCachedKeywordChip.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/keyword/components/KeywordRemoteAutocompleteWithCached.js +9 -0
- package/dist/domains/dam/keyword/components/KeywordRemoteAutocompleteWithCached.js.map +1 -0
- package/dist/domains/dam/keyword/components/KeywordRemoteAutocompleteWithCached.vue.d.ts +37 -0
- package/dist/domains/dam/keyword/components/KeywordRemoteAutocompleteWithCached.vue_vue_type_script_setup_true_lang.js +212 -0
- package/dist/domains/dam/keyword/components/KeywordRemoteAutocompleteWithCached.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/keyword/composables/cachedKeywords.d.ts +25 -0
- package/dist/domains/dam/keyword/composables/cachedKeywords.js +47 -0
- package/dist/domains/dam/keyword/composables/cachedKeywords.js.map +1 -0
- package/dist/domains/dam/keyword/composables/damKeywordConfig.d.ts +10 -0
- package/dist/domains/dam/keyword/composables/damKeywordConfig.js +17 -0
- package/dist/domains/dam/keyword/composables/damKeywordConfig.js.map +1 -0
- package/dist/domains/dam/keyword/composables/keywordActions.d.ts +12 -0
- package/dist/domains/dam/keyword/composables/keywordActions.js +26 -0
- package/dist/domains/dam/keyword/composables/keywordActions.js.map +1 -0
- package/dist/domains/dam/keyword/factory/KeywordFactory.d.ts +4 -0
- package/dist/domains/dam/keyword/factory/KeywordFactory.js +22 -0
- package/dist/domains/dam/keyword/factory/KeywordFactory.js.map +1 -0
- package/dist/domains/dam/keyword/filter/KeywordFilter.d.ts +14 -0
- package/dist/domains/dam/keyword/filter/KeywordFilter.js +24 -0
- package/dist/domains/dam/keyword/filter/KeywordFilter.js.map +1 -0
- package/dist/domains/dam/keyword/types/DamKeyword.d.ts +16 -0
- package/dist/domains/dam/types/Asset.d.ts +101 -0
- package/dist/domains/dam/types/Asset.js +15 -0
- package/dist/domains/dam/types/Asset.js.map +1 -0
- package/dist/domains/dam/types/AssetFile.d.ts +159 -0
- package/dist/domains/dam/types/AssetFile.js +26 -0
- package/dist/domains/dam/types/AssetFile.js.map +1 -0
- package/dist/domains/dam/types/AssetLicence.d.ts +11 -0
- package/dist/domains/dam/types/AssetLicenceGroup.d.ts +9 -0
- package/dist/domains/dam/types/AssetSelect.d.ts +25 -0
- package/dist/domains/dam/types/AssetSelect.js +10 -0
- package/dist/domains/dam/types/AssetSelect.js.map +1 -0
- package/dist/domains/dam/types/DamConfig.d.ts +119 -0
- package/dist/domains/dam/types/DamConfig.js +24 -0
- package/dist/domains/dam/types/DamConfig.js.map +1 -0
- package/dist/domains/dam/types/DamCurrentUser.d.ts +32 -0
- package/dist/domains/dam/types/DamExtSystem.d.ts +11 -0
- package/dist/domains/dam/types/ImageAware.d.ts +31 -0
- package/dist/domains/dam/types/MediaAware.d.ts +34 -0
- package/dist/domains/dam/types/MediaAware.js +9 -0
- package/dist/domains/dam/types/MediaAware.js.map +1 -0
- package/dist/domains/dam/types/Roi.d.ts +17 -0
- package/dist/domains/dam/types/UploadQueue.d.ts +88 -0
- package/dist/domains/dam/types/UploadQueue.js +19 -0
- package/dist/domains/dam/types/UploadQueue.js.map +1 -0
- package/dist/domains/dam/uploadQueue/components/AssetCustomMetadataFormMassOperations.js +7 -0
- package/dist/domains/dam/uploadQueue/components/AssetCustomMetadataFormMassOperations.js.map +1 -0
- package/dist/domains/dam/uploadQueue/components/AssetCustomMetadataFormMassOperations.vue.d.ts +36 -0
- package/dist/domains/dam/uploadQueue/components/AssetCustomMetadataFormMassOperations.vue_vue_type_script_setup_true_lang.js +108 -0
- package/dist/domains/dam/uploadQueue/components/AssetCustomMetadataFormMassOperations.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/uploadQueue/components/AssetQueueSelectedSidebar.js +7 -0
- package/dist/domains/dam/uploadQueue/components/AssetQueueSelectedSidebar.js.map +1 -0
- package/dist/domains/dam/uploadQueue/components/AssetQueueSelectedSidebar.vue.d.ts +17 -0
- package/dist/domains/dam/uploadQueue/components/AssetQueueSelectedSidebar.vue_vue_type_script_setup_true_lang.js +364 -0
- package/dist/domains/dam/uploadQueue/components/AssetQueueSelectedSidebar.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/uploadQueue/components/UploadQueueButtonStop.js +7 -0
- package/dist/domains/dam/uploadQueue/components/UploadQueueButtonStop.js.map +1 -0
- package/dist/domains/dam/uploadQueue/components/UploadQueueButtonStop.vue.d.ts +15 -0
- package/dist/domains/dam/uploadQueue/components/UploadQueueButtonStop.vue_vue_type_script_setup_true_lang.js +95 -0
- package/dist/domains/dam/uploadQueue/components/UploadQueueButtonStop.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/uploadQueue/components/UploadQueueDialog.js +7 -0
- package/dist/domains/dam/uploadQueue/components/UploadQueueDialog.js.map +1 -0
- package/dist/domains/dam/uploadQueue/components/UploadQueueDialog.vue.d.ts +24 -0
- package/dist/domains/dam/uploadQueue/components/UploadQueueDialog.vue_vue_type_script_setup_true_lang.js +299 -0
- package/dist/domains/dam/uploadQueue/components/UploadQueueDialog.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingle.js +7 -0
- package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingle.js.map +1 -0
- package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingle.vue.d.ts +22 -0
- package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingle.vue_vue_type_script_setup_true_lang.js +179 -0
- package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingle.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebar.js +7 -0
- package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebar.js.map +1 -0
- package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebar.vue.d.ts +47 -0
- package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebar.vue_vue_type_script_setup_true_lang.js +81 -0
- package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebar.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebarMetadata.js +7 -0
- package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebarMetadata.js.map +1 -0
- package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebarMetadata.vue.d.ts +31 -0
- package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebarMetadata.vue_vue_type_script_setup_true_lang.js +96 -0
- package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebarMetadata.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebarMetadataContent.js +7 -0
- package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebarMetadataContent.js.map +1 -0
- package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebarMetadataContent.vue.d.ts +11 -0
- package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebarMetadataContent.vue_vue_type_script_setup_true_lang.js +167 -0
- package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebarMetadataContent.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/uploadQueue/components/UploadQueueEditable.js +7 -0
- package/dist/domains/dam/uploadQueue/components/UploadQueueEditable.js.map +1 -0
- package/dist/domains/dam/uploadQueue/components/UploadQueueEditable.vue.d.ts +52 -0
- package/dist/domains/dam/uploadQueue/components/UploadQueueEditable.vue_vue_type_script_setup_true_lang.js +129 -0
- package/dist/domains/dam/uploadQueue/components/UploadQueueEditable.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/uploadQueue/components/UploadQueueItemEditable.js +7 -0
- package/dist/domains/dam/uploadQueue/components/UploadQueueItemEditable.js.map +1 -0
- package/dist/domains/dam/uploadQueue/components/UploadQueueItemEditable.vue.d.ts +109 -0
- package/dist/domains/dam/uploadQueue/components/UploadQueueItemEditable.vue_vue_type_script_setup_true_lang.js +402 -0
- package/dist/domains/dam/uploadQueue/components/UploadQueueItemEditable.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/uploadQueue/components/UploadQueueItemErrorOverlay.js +7 -0
- package/dist/domains/dam/uploadQueue/components/UploadQueueItemErrorOverlay.js.map +1 -0
- package/dist/domains/dam/uploadQueue/components/UploadQueueItemErrorOverlay.vue.d.ts +7 -0
- package/dist/domains/dam/uploadQueue/components/UploadQueueItemErrorOverlay.vue_vue_type_script_setup_true_lang.js +34 -0
- package/dist/domains/dam/uploadQueue/components/UploadQueueItemErrorOverlay.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/uploadQueue/components/uploadQueueBindings.d.ts +46 -0
- package/dist/domains/dam/uploadQueue/components/uploadQueueBindings.js +39 -0
- package/dist/domains/dam/uploadQueue/components/uploadQueueBindings.js.map +1 -0
- package/dist/domains/dam/uploadQueue/composables/assetSuggestions.d.ts +5 -0
- package/dist/domains/dam/uploadQueue/composables/assetSuggestions.js +20 -0
- package/dist/domains/dam/uploadQueue/composables/assetSuggestions.js.map +1 -0
- package/dist/domains/dam/uploadQueue/composables/damUploadChunkSize.d.ts +8 -0
- package/dist/domains/dam/uploadQueue/composables/damUploadChunkSize.js +24 -0
- package/dist/domains/dam/uploadQueue/composables/damUploadChunkSize.js.map +1 -0
- package/dist/domains/dam/uploadQueue/composables/uploadMeter.d.ts +26 -0
- package/dist/domains/dam/uploadQueue/composables/uploadMeter.js +59 -0
- package/dist/domains/dam/uploadQueue/composables/uploadMeter.js.map +1 -0
- package/dist/domains/dam/uploadQueue/composables/uploadQueueItemRefresh.d.ts +27 -0
- package/dist/domains/dam/uploadQueue/composables/uploadQueueItemRefresh.js +59 -0
- package/dist/domains/dam/uploadQueue/composables/uploadQueueItemRefresh.js.map +1 -0
- package/dist/domains/dam/uploadQueue/composables/uploadQueueMassOperations.d.ts +12 -0
- package/dist/domains/dam/uploadQueue/composables/uploadQueueMassOperations.js +22 -0
- package/dist/domains/dam/uploadQueue/composables/uploadQueueMassOperations.js.map +1 -0
- package/dist/domains/dam/uploadQueue/composables/uploadService.d.ts +13 -0
- package/dist/domains/dam/uploadQueue/composables/uploadService.js +124 -0
- package/dist/domains/dam/uploadQueue/composables/uploadService.js.map +1 -0
- package/dist/domains/dam/uploadQueue/composables/useUploadQueueDialog.d.ts +15 -0
- package/dist/domains/dam/uploadQueue/composables/useUploadQueueDialog.js +28 -0
- package/dist/domains/dam/uploadQueue/composables/useUploadQueueDialog.js.map +1 -0
- package/dist/domains/dam/uploadQueue/core/uploadQueueCore.d.ts +8 -0
- package/dist/domains/dam/uploadQueue/core/uploadQueueCore.js +176 -0
- package/dist/domains/dam/uploadQueue/core/uploadQueueCore.js.map +1 -0
- package/dist/domains/dam/uploadQueue/core/uploadQueueCoreTypes.d.ts +69 -0
- package/dist/domains/dam/uploadQueue/core/uploadQueueCoreTypes.js +6 -0
- package/dist/domains/dam/uploadQueue/core/uploadQueueCoreTypes.js.map +1 -0
- package/dist/domains/dam/uploadQueue/core/uploadQueueFill.d.ts +14 -0
- package/dist/domains/dam/uploadQueue/core/uploadQueueFill.js +19 -0
- package/dist/domains/dam/uploadQueue/core/uploadQueueFill.js.map +1 -0
- package/dist/domains/dam/uploadQueue/factory/UploadQueueItemFactory.d.ts +6 -0
- package/dist/domains/dam/uploadQueue/factory/UploadQueueItemFactory.js +53 -0
- package/dist/domains/dam/uploadQueue/factory/UploadQueueItemFactory.js.map +1 -0
- package/dist/domains/dam/uploadQueue/presets/queuePresets.d.ts +30 -0
- package/dist/domains/dam/uploadQueue/presets/queuePresets.js +65 -0
- package/dist/domains/dam/uploadQueue/presets/queuePresets.js.map +1 -0
- package/dist/domains/dam/uploadQueue/presets/uploadPresets.d.ts +70 -0
- package/dist/domains/dam/uploadQueue/presets/uploadPresets.js +49 -0
- package/dist/domains/dam/uploadQueue/presets/uploadPresets.js.map +1 -0
- package/dist/domains/dam/uploadQueue/settlement/uploadPollSchedule.d.ts +30 -0
- package/dist/domains/dam/uploadQueue/settlement/uploadPollSchedule.js +68 -0
- package/dist/domains/dam/uploadQueue/settlement/uploadPollSchedule.js.map +1 -0
- package/dist/domains/dam/uploadQueue/settlement/uploadPoller.d.ts +19 -0
- package/dist/domains/dam/uploadQueue/settlement/uploadPoller.js +76 -0
- package/dist/domains/dam/uploadQueue/settlement/uploadPoller.js.map +1 -0
- package/dist/domains/dam/uploadQueue/settlement/uploadSettle.d.ts +122 -0
- package/dist/domains/dam/uploadQueue/settlement/uploadSettle.js +246 -0
- package/dist/domains/dam/uploadQueue/settlement/uploadSettle.js.map +1 -0
- package/dist/domains/dam/uploadQueue/settlement/uploadSettlement.d.ts +6 -0
- package/dist/domains/dam/uploadQueue/settlement/uploadSettlement.js +482 -0
- package/dist/domains/dam/uploadQueue/settlement/uploadSettlement.js.map +1 -0
- package/dist/domains/dam/uploadQueue/settlement/uploadSettlementRuntime.d.ts +17 -0
- package/dist/domains/dam/uploadQueue/settlement/uploadSettlementRuntime.js +16 -0
- package/dist/domains/dam/uploadQueue/settlement/uploadSettlementRuntime.js.map +1 -0
- package/dist/domains/dam/uploadQueue/settlement/uploadSettlementTypes.d.ts +207 -0
- package/dist/domains/dam/uploadQueue/settlement/uploadSettlementTypes.js +12 -0
- package/dist/domains/dam/uploadQueue/settlement/uploadSettlementTypes.js.map +1 -0
- package/dist/domains/dam/uploadQueue/store/uploadQueuesStore.d.ts +55 -0
- package/dist/domains/dam/uploadQueue/store/uploadQueuesStore.js +320 -0
- package/dist/domains/dam/uploadQueue/store/uploadQueuesStore.js.map +1 -0
- package/dist/domains/dam/uploadQueue/utils/mimeTypeHelper.d.ts +3 -0
- package/dist/domains/dam/uploadQueue/utils/mimeTypeHelper.js +12 -0
- package/dist/domains/dam/uploadQueue/utils/mimeTypeHelper.js.map +1 -0
- package/dist/domains/dam/user/api/assetLicenceApi.d.ts +6 -0
- package/dist/domains/dam/user/api/assetLicenceApi.js +22 -0
- package/dist/domains/dam/user/api/assetLicenceApi.js.map +1 -0
- package/dist/domains/dam/user/api/assetLicenceGroupApi.d.ts +6 -0
- package/dist/domains/dam/user/api/assetLicenceGroupApi.js +22 -0
- package/dist/domains/dam/user/api/assetLicenceGroupApi.js.map +1 -0
- package/dist/domains/dam/user/api/extSystemApi.d.ts +6 -0
- package/dist/domains/dam/user/api/extSystemApi.js +22 -0
- package/dist/domains/dam/user/api/extSystemApi.js.map +1 -0
- package/dist/domains/dam/user/api/userApi.d.ts +9 -0
- package/dist/domains/dam/user/api/userApi.js +45 -0
- package/dist/domains/dam/user/api/userApi.js.map +1 -0
- package/dist/domains/dam/user/components/DamAssetLicenceGroupRemoteAutocomplete.js +7 -0
- package/dist/domains/dam/user/components/DamAssetLicenceGroupRemoteAutocomplete.js.map +1 -0
- package/dist/domains/dam/user/components/DamAssetLicenceGroupRemoteAutocomplete.vue.d.ts +34 -0
- package/dist/domains/dam/user/components/DamAssetLicenceGroupRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js +80 -0
- package/dist/domains/dam/user/components/DamAssetLicenceGroupRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/user/components/DamAssetLicenceRemoteAutocomplete.js +7 -0
- package/dist/domains/dam/user/components/DamAssetLicenceRemoteAutocomplete.js.map +1 -0
- package/dist/domains/dam/user/components/DamAssetLicenceRemoteAutocomplete.vue.d.ts +36 -0
- package/dist/domains/dam/user/components/DamAssetLicenceRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js +84 -0
- package/dist/domains/dam/user/components/DamAssetLicenceRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/user/components/DamDistributionServiceSelect.js +7 -0
- package/dist/domains/dam/user/components/DamDistributionServiceSelect.js.map +1 -0
- package/dist/domains/dam/user/components/DamDistributionServiceSelect.vue.d.ts +24 -0
- package/dist/domains/dam/user/components/DamDistributionServiceSelect.vue_vue_type_script_setup_true_lang.js +57 -0
- package/dist/domains/dam/user/components/DamDistributionServiceSelect.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/user/components/DamExtSystemRemoteAutocomplete.js +7 -0
- package/dist/domains/dam/user/components/DamExtSystemRemoteAutocomplete.js.map +1 -0
- package/dist/domains/dam/user/components/DamExtSystemRemoteAutocomplete.vue.d.ts +26 -0
- package/dist/domains/dam/user/components/DamExtSystemRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js +71 -0
- package/dist/domains/dam/user/components/DamExtSystemRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/user/components/DamExternalProviderAssetSelect.js +7 -0
- package/dist/domains/dam/user/components/DamExternalProviderAssetSelect.js.map +1 -0
- package/dist/domains/dam/user/components/DamExternalProviderAssetSelect.vue.d.ts +24 -0
- package/dist/domains/dam/user/components/DamExternalProviderAssetSelect.vue_vue_type_script_setup_true_lang.js +57 -0
- package/dist/domains/dam/user/components/DamExternalProviderAssetSelect.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/user/components/DamUserFilterRemoteAutocomplete.js +7 -0
- package/dist/domains/dam/user/components/DamUserFilterRemoteAutocomplete.js.map +1 -0
- package/dist/domains/dam/user/components/DamUserFilterRemoteAutocomplete.vue.d.ts +13 -0
- package/dist/domains/dam/user/components/DamUserFilterRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js +35 -0
- package/dist/domains/dam/user/components/DamUserFilterRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/user/components/DamUserRemoteAutocomplete.js +7 -0
- package/dist/domains/dam/user/components/DamUserRemoteAutocomplete.js.map +1 -0
- package/dist/domains/dam/user/components/DamUserRemoteAutocomplete.vue.d.ts +35 -0
- package/dist/domains/dam/user/components/DamUserRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js +71 -0
- package/dist/domains/dam/user/components/DamUserRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/dam/user/composables/assetLicenceActions.d.ts +10 -0
- package/dist/domains/dam/user/composables/assetLicenceActions.js +16 -0
- package/dist/domains/dam/user/composables/assetLicenceActions.js.map +1 -0
- package/dist/domains/dam/user/composables/assetLicenceGroupActions.d.ts +9 -0
- package/dist/domains/dam/user/composables/assetLicenceGroupActions.js +16 -0
- package/dist/domains/dam/user/composables/assetLicenceGroupActions.js.map +1 -0
- package/dist/domains/dam/user/composables/damUserSelectActions.d.ts +13 -0
- package/dist/domains/dam/user/composables/damUserSelectActions.js +17 -0
- package/dist/domains/dam/user/composables/damUserSelectActions.js.map +1 -0
- package/dist/domains/dam/user/composables/extSystemActions.d.ts +10 -0
- package/dist/domains/dam/user/composables/extSystemActions.js +19 -0
- package/dist/domains/dam/user/composables/extSystemActions.js.map +1 -0
- package/dist/domains/dam/user/filter/AssetLicenceFilter.d.ts +34 -0
- package/dist/domains/dam/user/filter/AssetLicenceFilter.js +33 -0
- package/dist/domains/dam/user/filter/AssetLicenceFilter.js.map +1 -0
- package/dist/domains/dam/user/filter/AssetLicenceGroupFilter.d.ts +14 -0
- package/dist/domains/dam/user/filter/AssetLicenceGroupFilter.js +23 -0
- package/dist/domains/dam/user/filter/AssetLicenceGroupFilter.js.map +1 -0
- package/dist/domains/dam/user/filter/DamUserFilter.d.ts +64 -0
- package/dist/domains/dam/user/filter/DamUserFilter.js +44 -0
- package/dist/domains/dam/user/filter/DamUserFilter.js.map +1 -0
- package/dist/domains/dam/user/filter/ExtSystemFilter.d.ts +14 -0
- package/dist/domains/dam/user/filter/ExtSystemFilter.js +23 -0
- package/dist/domains/dam/user/filter/ExtSystemFilter.js.map +1 -0
- package/dist/domains/dam/user/types/DamDistributionServiceType.d.ts +27 -0
- package/dist/domains/dam/user/types/DamDistributionServiceType.js +18 -0
- package/dist/domains/dam/user/types/DamDistributionServiceType.js.map +1 -0
- package/dist/domains/dam/user/types/DamExternalProviderAssetType.d.ts +24 -0
- package/dist/domains/dam/user/types/DamExternalProviderAssetType.js +17 -0
- package/dist/domains/dam/user/types/DamExternalProviderAssetType.js.map +1 -0
- package/dist/domains/dam/user/types/DamUser.d.ts +14 -0
- package/dist/domains/filters/bookmarks/api/userAdminConfigApi.d.ts +14 -0
- package/dist/domains/filters/bookmarks/api/userAdminConfigApi.js +79 -0
- package/dist/domains/filters/bookmarks/api/userAdminConfigApi.js.map +1 -0
- package/dist/domains/filters/bookmarks/components/AFilterBookmarkButton.js +7 -0
- package/dist/domains/filters/bookmarks/components/AFilterBookmarkButton.js.map +1 -0
- package/dist/domains/filters/bookmarks/components/AFilterBookmarkButton.vue.d.ts +34 -0
- package/dist/domains/filters/bookmarks/components/AFilterBookmarkButton.vue_vue_type_script_setup_true_lang.js +77 -0
- package/dist/domains/filters/bookmarks/components/AFilterBookmarkButton.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/filters/bookmarks/components/FilterBookmarkDialog.js +7 -0
- package/dist/domains/filters/bookmarks/components/FilterBookmarkDialog.js.map +1 -0
- package/dist/domains/filters/bookmarks/components/FilterBookmarkDialog.vue.d.ts +18 -0
- package/dist/domains/filters/bookmarks/components/FilterBookmarkDialog.vue_vue_type_script_setup_true_lang.js +331 -0
- package/dist/domains/filters/bookmarks/components/FilterBookmarkDialog.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/filters/bookmarks/components/FilterBookmarks.js +7 -0
- package/dist/domains/filters/bookmarks/components/FilterBookmarks.js.map +1 -0
- package/dist/domains/filters/bookmarks/components/FilterBookmarks.vue.d.ts +22 -0
- package/dist/domains/filters/bookmarks/components/FilterBookmarks.vue_vue_type_script_setup_true_lang.js +147 -0
- package/dist/domains/filters/bookmarks/components/FilterBookmarks.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/filters/bookmarks/factory/UserAdminConfigFactory.d.ts +4 -0
- package/dist/domains/filters/bookmarks/factory/UserAdminConfigFactory.js +26 -0
- package/dist/domains/filters/bookmarks/factory/UserAdminConfigFactory.js.map +1 -0
- package/dist/domains/filters/bookmarks/filter/UserAdminConfigFilter.d.ts +40 -0
- package/dist/domains/filters/bookmarks/filter/UserAdminConfigFilter.js +41 -0
- package/dist/domains/filters/bookmarks/filter/UserAdminConfigFilter.js.map +1 -0
- package/dist/domains/filters/bookmarks/store/bookmarksStore.d.ts +96 -0
- package/dist/domains/filters/bookmarks/store/bookmarksStore.js +89 -0
- package/dist/domains/filters/bookmarks/store/bookmarksStore.js.map +1 -0
- package/dist/domains/filters/bookmarks/types/UserAdminConfig.d.ts +38 -0
- package/dist/domains/filters/bookmarks/types/UserAdminConfig.js +12 -0
- package/dist/domains/filters/bookmarks/types/UserAdminConfig.js.map +1 -0
- package/dist/domains/filters/components/AFilterAdvancedButton.js +7 -0
- package/dist/domains/filters/components/AFilterAdvancedButton.js.map +1 -0
- package/dist/domains/filters/components/AFilterAdvancedButton.vue.d.ts +16 -0
- package/dist/domains/filters/components/AFilterAdvancedButton.vue_vue_type_script_setup_true_lang.js +47 -0
- package/dist/domains/filters/components/AFilterAdvancedButton.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/filters/components/AFilterBooleanSelect.js +7 -0
- package/dist/domains/filters/components/AFilterBooleanSelect.js.map +1 -0
- package/dist/domains/filters/components/AFilterBooleanSelect.vue.d.ts +19 -0
- package/dist/domains/filters/components/AFilterBooleanSelect.vue_vue_type_script_setup_true_lang.js +82 -0
- package/dist/domains/filters/components/AFilterBooleanSelect.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/filters/components/AFilterDatetimePicker.js +7 -0
- package/dist/domains/filters/components/AFilterDatetimePicker.js.map +1 -0
- package/dist/domains/filters/components/AFilterDatetimePicker.vue.d.ts +13 -0
- package/dist/domains/filters/components/AFilterDatetimePicker.vue_vue_type_script_setup_true_lang.js +53 -0
- package/dist/domains/filters/components/AFilterDatetimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/filters/components/AFilterEmpty.js +7 -0
- package/dist/domains/filters/components/AFilterEmpty.js.map +1 -0
- package/dist/domains/filters/components/AFilterEmpty.vue.d.ts +6 -0
- package/dist/domains/filters/components/AFilterEmpty.vue_vue_type_script_setup_true_lang.js +14 -0
- package/dist/domains/filters/components/AFilterEmpty.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/filters/components/AFilterInteger.js +7 -0
- package/dist/domains/filters/components/AFilterInteger.js.map +1 -0
- package/dist/domains/filters/components/AFilterInteger.vue.d.ts +15 -0
- package/dist/domains/filters/components/AFilterInteger.vue_vue_type_script_setup_true_lang.js +62 -0
- package/dist/domains/filters/components/AFilterInteger.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/filters/components/AFilterResetButton.js +7 -0
- package/dist/domains/filters/components/AFilterResetButton.js.map +1 -0
- package/dist/domains/filters/components/AFilterResetButton.vue.d.ts +16 -0
- package/dist/domains/filters/components/AFilterResetButton.vue_vue_type_script_setup_true_lang.js +49 -0
- package/dist/domains/filters/components/AFilterResetButton.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/filters/components/AFilterString.js +7 -0
- package/dist/domains/filters/components/AFilterString.js.map +1 -0
- package/dist/domains/filters/components/AFilterString.vue.d.ts +15 -0
- package/dist/domains/filters/components/AFilterString.vue_vue_type_script_setup_true_lang.js +62 -0
- package/dist/domains/filters/components/AFilterString.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/filters/components/AFilterSubmitButton.js +7 -0
- package/dist/domains/filters/components/AFilterSubmitButton.js.map +1 -0
- package/dist/domains/filters/components/AFilterSubmitButton.vue.d.ts +18 -0
- package/dist/domains/filters/components/AFilterSubmitButton.vue_vue_type_script_setup_true_lang.js +42 -0
- package/dist/domains/filters/components/AFilterSubmitButton.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/filters/components/AFilterTimeInterval.js +9 -0
- package/dist/domains/filters/components/AFilterTimeInterval.js.map +1 -0
- package/dist/domains/filters/components/AFilterTimeInterval.vue.d.ts +31 -0
- package/dist/domains/filters/components/AFilterTimeInterval.vue_vue_type_script_setup_true_lang.js +201 -0
- package/dist/domains/filters/components/AFilterTimeInterval.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/filters/components/AFilterValueObjectOptionsSelect.js +7 -0
- package/dist/domains/filters/components/AFilterValueObjectOptionsSelect.js.map +1 -0
- package/dist/domains/filters/components/AFilterValueObjectOptionsSelect.vue.d.ts +15 -0
- package/dist/domains/filters/components/AFilterValueObjectOptionsSelect.vue_vue_type_script_setup_true_lang.js +81 -0
- package/dist/domains/filters/components/AFilterValueObjectOptionsSelect.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/filters/components/AFilterWrapper.js +8 -0
- package/dist/domains/filters/components/AFilterWrapper.js.map +1 -0
- package/dist/domains/filters/components/AFilterWrapper.vue.d.ts +68 -0
- package/dist/domains/filters/components/AFilterWrapper.vue_vue_type_script_setup_true_lang.js +209 -0
- package/dist/domains/filters/components/AFilterWrapper.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/filters/components/AFilterWrapperSidebar.js +7 -0
- package/dist/domains/filters/components/AFilterWrapperSidebar.js.map +1 -0
- package/dist/domains/filters/components/AFilterWrapperSidebar.vue.d.ts +24 -0
- package/dist/domains/filters/components/AFilterWrapperSidebar.vue_vue_type_script_setup_true_lang.js +35 -0
- package/dist/domains/filters/components/AFilterWrapperSidebar.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/filters/components/FilterDetailItem.js +7 -0
- package/dist/domains/filters/components/FilterDetailItem.js.map +1 -0
- package/dist/domains/filters/components/FilterDetailItem.vue.d.ts +6 -0
- package/dist/domains/filters/components/FilterDetailItem.vue_vue_type_script_setup_true_lang.js +32 -0
- package/dist/domains/filters/components/FilterDetailItem.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/filters/components/FiltersSelected.js +8 -0
- package/dist/domains/filters/components/FiltersSelected.js.map +1 -0
- package/dist/domains/filters/components/FiltersSelected.vue.d.ts +3 -0
- package/dist/domains/filters/components/FiltersSelected.vue_vue_type_script_setup_true_lang.js +69 -0
- package/dist/domains/filters/components/FiltersSelected.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/filters/composables/filterFactory.d.ts +105 -0
- package/dist/domains/filters/composables/filterFactory.js +251 -0
- package/dist/domains/filters/composables/filterFactory.js.map +1 -0
- package/dist/domains/filters/composables/filterTimeIntervalTools.d.ts +88 -0
- package/dist/domains/filters/composables/filterTimeIntervalTools.js +76 -0
- package/dist/domains/filters/composables/filterTimeIntervalTools.js.map +1 -0
- package/dist/domains/filters/datatable/components/ADatatableConfigButton.js +7 -0
- package/dist/domains/filters/datatable/components/ADatatableConfigButton.js.map +1 -0
- package/dist/domains/filters/datatable/components/ADatatableConfigButton.vue.d.ts +19 -0
- package/dist/domains/filters/datatable/components/ADatatableConfigButton.vue_vue_type_script_setup_true_lang.js +91 -0
- package/dist/domains/filters/datatable/components/ADatatableConfigButton.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/filters/datatable/components/ADatatableOrdering.js +7 -0
- package/dist/domains/filters/datatable/components/ADatatableOrdering.js.map +1 -0
- package/dist/domains/filters/datatable/components/ADatatableOrdering.vue.d.ts +26 -0
- package/dist/domains/filters/datatable/components/ADatatableOrdering.vue_vue_type_script_setup_true_lang.js +143 -0
- package/dist/domains/filters/datatable/components/ADatatableOrdering.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/filters/datatable/components/ADatatablePagination.js +8 -0
- package/dist/domains/filters/datatable/components/ADatatablePagination.js.map +1 -0
- package/dist/domains/filters/datatable/components/ADatatablePagination.vue.d.ts +14 -0
- package/dist/domains/filters/datatable/components/ADatatablePagination.vue_vue_type_script_setup_true_lang.js +121 -0
- package/dist/domains/filters/datatable/components/ADatatablePagination.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/filters/datatable/composables/createDatatableColumnsConfig.d.ts +20 -0
- package/dist/domains/filters/datatable/composables/createDatatableColumnsConfig.js +69 -0
- package/dist/domains/filters/datatable/composables/createDatatableColumnsConfig.js.map +1 -0
- package/dist/domains/filters/datatable/utils/datatable.d.ts +1 -0
- package/dist/domains/filters/datatable/utils/datatable.js +6 -0
- package/dist/domains/filters/datatable/utils/datatable.js.map +1 -0
- package/dist/domains/filters/datatable/utils/datatableColumns.d.ts +33 -0
- package/dist/domains/filters/datatable/utils/datatableColumns.js +6 -0
- package/dist/domains/filters/datatable/utils/datatableColumns.js.map +1 -0
- package/dist/domains/filters/utils/filterInjectionKeys.d.ts +13 -0
- package/dist/domains/filters/utils/filterInjectionKeys.js +6 -0
- package/dist/domains/filters/utils/filterInjectionKeys.js.map +1 -0
- package/dist/domains/form/components/AFormDatetimePicker.js +7 -0
- package/dist/domains/form/components/AFormDatetimePicker.js.map +1 -0
- package/dist/domains/form/components/AFormDatetimePicker.vue.d.ts +57 -0
- package/dist/domains/form/components/AFormDatetimePicker.vue_vue_type_script_setup_true_lang.js +118 -0
- package/dist/domains/form/components/AFormDatetimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/form/components/AFormFlagDatetimePicker.js +7 -0
- package/dist/domains/form/components/AFormFlagDatetimePicker.js.map +1 -0
- package/dist/domains/form/components/AFormFlagDatetimePicker.vue.d.ts +50 -0
- package/dist/domains/form/components/AFormFlagDatetimePicker.vue_vue_type_script_setup_true_lang.js +131 -0
- package/dist/domains/form/components/AFormFlagDatetimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/form/components/AFormRemoteCheckbox.js +7 -0
- package/dist/domains/form/components/AFormRemoteCheckbox.js.map +1 -0
- package/dist/domains/form/components/AFormRemoteCheckbox.vue.d.ts +22 -0
- package/dist/domains/form/components/AFormRemoteCheckbox.vue_vue_type_script_setup_true_lang.js +69 -0
- package/dist/domains/form/components/AFormRemoteCheckbox.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/form/components/AFormRemoteSwitch.js +8 -0
- package/dist/domains/form/components/AFormRemoteSwitch.js.map +1 -0
- package/dist/domains/form/components/AFormRemoteSwitch.vue.d.ts +22 -0
- package/dist/domains/form/components/AFormRemoteSwitch.vue_vue_type_script_setup_true_lang.js +98 -0
- package/dist/domains/form/components/AFormRemoteSwitch.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/form/components/AFormSwitch.js +7 -0
- package/dist/domains/form/components/AFormSwitch.js.map +1 -0
- package/dist/domains/form/components/AFormSwitch.vue.d.ts +47 -0
- package/dist/domains/form/components/AFormSwitch.vue_vue_type_script_setup_true_lang.js +87 -0
- package/dist/domains/form/components/AFormSwitch.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/form/components/AFormTextField.js +7 -0
- package/dist/domains/form/components/AFormTextField.js.map +1 -0
- package/dist/domains/form/components/AFormTextField.vue.d.ts +76 -0
- package/dist/domains/form/components/AFormTextField.vue_vue_type_script_setup_true_lang.js +155 -0
- package/dist/domains/form/components/AFormTextField.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/form/components/AFormTextarea.js +7 -0
- package/dist/domains/form/components/AFormTextarea.js.map +1 -0
- package/dist/domains/form/components/AFormTextarea.vue.d.ts +72 -0
- package/dist/domains/form/components/AFormTextarea.vue_vue_type_script_setup_true_lang.js +151 -0
- package/dist/domains/form/components/AFormTextarea.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/form/components/AFormValueObjectOptionsSelect.js +7 -0
- package/dist/domains/form/components/AFormValueObjectOptionsSelect.js.map +1 -0
- package/dist/domains/form/components/AFormValueObjectOptionsSelect.vue.d.ts +60 -0
- package/dist/domains/form/components/AFormValueObjectOptionsSelect.vue_vue_type_script_setup_true_lang.js +135 -0
- package/dist/domains/form/components/AFormValueObjectOptionsSelect.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/form/components/ASystemEntityScope.js +7 -0
- package/dist/domains/form/components/ASystemEntityScope.js.map +1 -0
- package/dist/domains/form/components/ASystemEntityScope.vue.d.ts +17 -0
- package/dist/domains/form/components/ASystemEntityScope.vue_vue_type_script_setup_true_lang.js +18 -0
- package/dist/domains/form/components/ASystemEntityScope.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/job/api/jobApi.d.ts +9 -0
- package/dist/domains/job/api/jobApi.js +52 -0
- package/dist/domains/job/api/jobApi.js.map +1 -0
- package/dist/domains/job/components/AJobBaseCreateForm.js +7 -0
- package/dist/domains/job/components/AJobBaseCreateForm.js.map +1 -0
- package/dist/domains/job/components/AJobBaseCreateForm.vue.d.ts +11 -0
- package/dist/domains/job/components/AJobBaseCreateForm.vue_vue_type_script_setup_true_lang.js +46 -0
- package/dist/domains/job/components/AJobBaseCreateForm.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/job/components/AJobDetailCommon.js +7 -0
- package/dist/domains/job/components/AJobDetailCommon.js.map +1 -0
- package/dist/domains/job/components/AJobDetailCommon.vue.d.ts +20 -0
- package/dist/domains/job/components/AJobDetailCommon.vue_vue_type_script_setup_true_lang.js +58 -0
- package/dist/domains/job/components/AJobDetailCommon.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/job/components/AJobPriorityChip.js +7 -0
- package/dist/domains/job/components/AJobPriorityChip.js.map +1 -0
- package/dist/domains/job/components/AJobPriorityChip.vue.d.ts +6 -0
- package/dist/domains/job/components/AJobPriorityChip.vue_vue_type_script_setup_true_lang.js +19 -0
- package/dist/domains/job/components/AJobPriorityChip.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/job/components/AJobStatusChip.js +7 -0
- package/dist/domains/job/components/AJobStatusChip.js.map +1 -0
- package/dist/domains/job/components/AJobStatusChip.vue.d.ts +7 -0
- package/dist/domains/job/components/AJobStatusChip.vue_vue_type_script_setup_true_lang.js +24 -0
- package/dist/domains/job/components/AJobStatusChip.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/job/composables/jobPriority.d.ts +9 -0
- package/dist/domains/job/composables/jobPriority.js +27 -0
- package/dist/domains/job/composables/jobPriority.js.map +1 -0
- package/dist/domains/job/factory/JobFactory.d.ts +6 -0
- package/dist/domains/job/factory/JobFactory.js +34 -0
- package/dist/domains/job/factory/JobFactory.js.map +1 -0
- package/dist/domains/job/types/Job.d.ts +22 -0
- package/dist/domains/job/valueObject/JobBaseResource.d.ts +19 -0
- package/dist/domains/job/valueObject/JobBaseResource.js +18 -0
- package/dist/domains/job/valueObject/JobBaseResource.js.map +1 -0
- package/dist/domains/job/valueObject/JobStatus.d.ts +26 -0
- package/dist/domains/job/valueObject/JobStatus.js +47 -0
- package/dist/domains/job/valueObject/JobStatus.js.map +1 -0
- package/dist/domains/listEditor/components/AListEditor.js +8 -0
- package/dist/domains/listEditor/components/AListEditor.js.map +1 -0
- package/dist/domains/listEditor/components/AListEditor.vue.d.ts +208 -0
- package/dist/domains/listEditor/components/AListEditor.vue_vue_type_script_setup_true_lang.js +599 -0
- package/dist/domains/listEditor/components/AListEditor.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/listEditor/components/ANestedSortableListEditor.js +8 -0
- package/dist/domains/listEditor/components/ANestedSortableListEditor.js.map +1 -0
- package/dist/domains/listEditor/components/ANestedSortableListEditor.vue.d.ts +274 -0
- package/dist/domains/listEditor/components/ANestedSortableListEditor.vue_vue_type_script_setup_true_lang.js +1093 -0
- package/dist/domains/listEditor/components/ANestedSortableListEditor.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/listEditor/components/ASortableListEditor.js +8 -0
- package/dist/domains/listEditor/components/ASortableListEditor.js.map +1 -0
- package/dist/domains/listEditor/components/ASortableListEditor.vue.d.ts +277 -0
- package/dist/domains/listEditor/components/ASortableListEditor.vue_vue_type_script_setup_true_lang.js +1132 -0
- package/dist/domains/listEditor/components/ASortableListEditor.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/listEditor/components/internal/LeChangeParentDialog.js +9 -0
- package/dist/domains/listEditor/components/internal/LeChangeParentDialog.js.map +1 -0
- package/dist/domains/listEditor/components/internal/LeChangeParentDialog.vue.d.ts +32 -0
- package/dist/domains/listEditor/components/internal/LeChangeParentDialog.vue_vue_type_script_setup_true_lang.js +229 -0
- package/dist/domains/listEditor/components/internal/LeChangeParentDialog.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/listEditor/components/internal/LeDeleteDialog.js +7 -0
- package/dist/domains/listEditor/components/internal/LeDeleteDialog.js.map +1 -0
- package/dist/domains/listEditor/components/internal/LeDeleteDialog.vue.d.ts +29 -0
- package/dist/domains/listEditor/components/internal/LeDeleteDialog.vue_vue_type_script_setup_true_lang.js +89 -0
- package/dist/domains/listEditor/components/internal/LeDeleteDialog.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/listEditor/components/internal/LeDragHandle.js +7 -0
- package/dist/domains/listEditor/components/internal/LeDragHandle.js.map +1 -0
- package/dist/domains/listEditor/components/internal/LeDragHandle.vue.d.ts +3 -0
- package/dist/domains/listEditor/components/internal/LeDragHandle.vue_vue_type_script_setup_true_lang.js +17 -0
- package/dist/domains/listEditor/components/internal/LeDragHandle.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/listEditor/components/internal/LeEmptyState.js +7 -0
- package/dist/domains/listEditor/components/internal/LeEmptyState.js.map +1 -0
- package/dist/domains/listEditor/components/internal/LeEmptyState.vue.d.ts +15 -0
- package/dist/domains/listEditor/components/internal/LeEmptyState.vue_vue_type_script_setup_true_lang.js +33 -0
- package/dist/domains/listEditor/components/internal/LeEmptyState.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/listEditor/components/internal/LeMoveToPositionDialog.js +7 -0
- package/dist/domains/listEditor/components/internal/LeMoveToPositionDialog.js.map +1 -0
- package/dist/domains/listEditor/components/internal/LeMoveToPositionDialog.vue.d.ts +21 -0
- package/dist/domains/listEditor/components/internal/LeMoveToPositionDialog.vue_vue_type_script_setup_true_lang.js +111 -0
- package/dist/domains/listEditor/components/internal/LeMoveToPositionDialog.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/listEditor/components/internal/LeNestedRow.js +7 -0
- package/dist/domains/listEditor/components/internal/LeNestedRow.js.map +1 -0
- package/dist/domains/listEditor/components/internal/LeNestedRow.vue.d.ts +57 -0
- package/dist/domains/listEditor/components/internal/LeNestedRow.vue_vue_type_script_setup_true_lang.js +411 -0
- package/dist/domains/listEditor/components/internal/LeNestedRow.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/listEditor/components/internal/LeStatus.js +7 -0
- package/dist/domains/listEditor/components/internal/LeStatus.js.map +1 -0
- package/dist/domains/listEditor/components/internal/LeStatus.vue.d.ts +10 -0
- package/dist/domains/listEditor/components/internal/LeStatus.vue_vue_type_script_setup_true_lang.js +34 -0
- package/dist/domains/listEditor/components/internal/LeStatus.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/listEditor/components/internal/LeUnsavedLabel.js +7 -0
- package/dist/domains/listEditor/components/internal/LeUnsavedLabel.js.map +1 -0
- package/dist/domains/listEditor/components/internal/LeUnsavedLabel.vue.d.ts +10 -0
- package/dist/domains/listEditor/components/internal/LeUnsavedLabel.vue_vue_type_script_setup_true_lang.js +28 -0
- package/dist/domains/listEditor/components/internal/LeUnsavedLabel.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/listEditor/components/internal/constants.d.ts +3 -0
- package/dist/domains/listEditor/components/internal/constants.js +6 -0
- package/dist/domains/listEditor/components/internal/constants.js.map +1 -0
- package/dist/domains/listEditor/composables/useContainerWidth.d.ts +5 -0
- package/dist/domains/listEditor/composables/useContainerWidth.js +14 -0
- package/dist/domains/listEditor/composables/useContainerWidth.js.map +1 -0
- package/dist/domains/listEditor/composables/useDeleteDialog.d.ts +51 -0
- package/dist/domains/listEditor/composables/useDeleteDialog.js +37 -0
- package/dist/domains/listEditor/composables/useDeleteDialog.js.map +1 -0
- package/dist/domains/listEditor/composables/useDragInstruction.d.ts +61 -0
- package/dist/domains/listEditor/composables/useDragInstruction.js +87 -0
- package/dist/domains/listEditor/composables/useDragInstruction.js.map +1 -0
- package/dist/domains/listEditor/composables/useInlineEditing.d.ts +40 -0
- package/dist/domains/listEditor/composables/useInlineEditing.js +48 -0
- package/dist/domains/listEditor/composables/useInlineEditing.js.map +1 -0
- package/dist/domains/listEditor/composables/useIsTouchDevice.d.ts +3 -0
- package/dist/domains/listEditor/composables/useIsTouchDevice.js +15 -0
- package/dist/domains/listEditor/composables/useIsTouchDevice.js.map +1 -0
- package/dist/domains/listEditor/composables/useKeyboardNav.d.ts +42 -0
- package/dist/domains/listEditor/composables/useKeyboardNav.js +106 -0
- package/dist/domains/listEditor/composables/useKeyboardNav.js.map +1 -0
- package/dist/domains/listEditor/composables/useListEditorController.d.ts +124 -0
- package/dist/domains/listEditor/composables/useListEditorController.js +193 -0
- package/dist/domains/listEditor/composables/useListEditorController.js.map +1 -0
- package/dist/domains/listEditor/composables/useListEditorScopeValidity.d.ts +39 -0
- package/dist/domains/listEditor/composables/useListEditorScopeValidity.js +16 -0
- package/dist/domains/listEditor/composables/useListEditorScopeValidity.js.map +1 -0
- package/dist/domains/listEditor/composables/useListEditorStateScope.d.ts +81 -0
- package/dist/domains/listEditor/composables/useListEditorStateScope.js +105 -0
- package/dist/domains/listEditor/composables/useListEditorStateScope.js.map +1 -0
- package/dist/domains/listEditor/composables/useNestedListEditor.d.ts +67 -0
- package/dist/domains/listEditor/composables/useNestedListEditor.js +212 -0
- package/dist/domains/listEditor/composables/useNestedListEditor.js.map +1 -0
- package/dist/domains/listEditor/composables/useNestedListEditorController.d.ts +136 -0
- package/dist/domains/listEditor/composables/useNestedListEditorController.js +300 -0
- package/dist/domains/listEditor/composables/useNestedListEditorController.js.map +1 -0
- package/dist/domains/listEditor/composables/useReorderMode.d.ts +124 -0
- package/dist/domains/listEditor/composables/useReorderMode.js +40 -0
- package/dist/domains/listEditor/composables/useReorderMode.js.map +1 -0
- package/dist/domains/listEditor/types/listEditorTypes.d.ts +53 -0
- package/dist/domains/listEditor/utils/listEditorLoader.d.ts +12 -0
- package/dist/domains/listEditor/utils/listEditorLoader.js +13 -0
- package/dist/domains/listEditor/utils/listEditorLoader.js.map +1 -0
- package/dist/domains/listEditor/utils/positions.d.ts +42 -0
- package/dist/domains/listEditor/utils/positions.js +31 -0
- package/dist/domains/listEditor/utils/positions.js.map +1 -0
- package/dist/domains/listEditor/utils/resolveCompactText.d.ts +3 -0
- package/dist/domains/listEditor/utils/resolveCompactText.js +14 -0
- package/dist/domains/listEditor/utils/resolveCompactText.js.map +1 -0
- package/dist/domains/listEditor/utils/revealInvalidRows.d.ts +12 -0
- package/dist/domains/listEditor/utils/revealInvalidRows.js +10 -0
- package/dist/domains/listEditor/utils/revealInvalidRows.js.map +1 -0
- package/dist/domains/listEditor/utils/tempId.d.ts +10 -0
- package/dist/domains/listEditor/utils/tempId.js +6 -0
- package/dist/domains/listEditor/utils/tempId.js.map +1 -0
- package/dist/domains/log/api/logApi.d.ts +18 -0
- package/dist/domains/log/api/logApi.js +18 -0
- package/dist/domains/log/api/logApi.js.map +1 -0
- package/dist/domains/log/components/ALogDatatable.js +7 -0
- package/dist/domains/log/components/ALogDatatable.js.map +1 -0
- package/dist/domains/log/components/ALogDatatable.vue.d.ts +30 -0
- package/dist/domains/log/components/ALogDatatable.vue_vue_type_script_setup_true_lang.js +116 -0
- package/dist/domains/log/components/ALogDatatable.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/log/components/ALogDetail.js +9 -0
- package/dist/domains/log/components/ALogDetail.js.map +1 -0
- package/dist/domains/log/components/ALogDetail.vue.d.ts +7 -0
- package/dist/domains/log/components/ALogDetail.vue_vue_type_script_setup_true_lang.js +99 -0
- package/dist/domains/log/components/ALogDetail.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/log/components/ALogDetailView.js +7 -0
- package/dist/domains/log/components/ALogDetailView.js.map +1 -0
- package/dist/domains/log/components/ALogDetailView.vue.d.ts +17 -0
- package/dist/domains/log/components/ALogDetailView.vue_vue_type_script_setup_true_lang.js +49 -0
- package/dist/domains/log/components/ALogDetailView.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/log/components/ALogFilter.js +7 -0
- package/dist/domains/log/components/ALogFilter.js.map +1 -0
- package/dist/domains/log/components/ALogFilter.vue.d.ts +17 -0
- package/dist/domains/log/components/ALogFilter.vue_vue_type_script_setup_true_lang.js +83 -0
- package/dist/domains/log/components/ALogFilter.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/log/components/ALogLevelChip.js +7 -0
- package/dist/domains/log/components/ALogLevelChip.js.map +1 -0
- package/dist/domains/log/components/ALogLevelChip.vue.d.ts +7 -0
- package/dist/domains/log/components/ALogLevelChip.vue_vue_type_script_setup_true_lang.js +22 -0
- package/dist/domains/log/components/ALogLevelChip.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/log/components/ALogListView.js +7 -0
- package/dist/domains/log/components/ALogListView.js.map +1 -0
- package/dist/domains/log/components/ALogListView.vue.d.ts +27 -0
- package/dist/domains/log/components/ALogListView.vue_vue_type_script_setup_true_lang.js +66 -0
- package/dist/domains/log/components/ALogListView.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/log/composables/logActions.d.ts +132 -0
- package/dist/domains/log/composables/logActions.js +62 -0
- package/dist/domains/log/composables/logActions.js.map +1 -0
- package/dist/domains/log/composables/logType.d.ts +43 -0
- package/dist/domains/log/composables/logType.js +23 -0
- package/dist/domains/log/composables/logType.js.map +1 -0
- package/dist/domains/log/filter/logFilter.d.ts +141 -0
- package/dist/domains/log/filter/logFilter.js +100 -0
- package/dist/domains/log/filter/logFilter.js.map +1 -0
- package/dist/domains/log/types/Log.d.ts +27 -0
- package/dist/domains/log/valueObject/LogLevel.d.ts +34 -0
- package/dist/domains/log/valueObject/LogLevel.js +64 -0
- package/dist/domains/log/valueObject/LogLevel.js.map +1 -0
- package/dist/domains/permission/components/APermissionEditor.js +7 -0
- package/dist/domains/permission/components/APermissionEditor.js.map +1 -0
- package/dist/domains/permission/components/APermissionEditor.vue.d.ts +35 -0
- package/dist/domains/permission/components/APermissionEditor.vue_vue_type_script_setup_true_lang.js +109 -0
- package/dist/domains/permission/components/APermissionEditor.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/permission/components/APermissionGrantEditor.js +7 -0
- package/dist/domains/permission/components/APermissionGrantEditor.js.map +1 -0
- package/dist/domains/permission/components/APermissionGrantEditor.vue.d.ts +12 -0
- package/dist/domains/permission/components/APermissionGrantEditor.vue_vue_type_script_setup_true_lang.js +45 -0
- package/dist/domains/permission/components/APermissionGrantEditor.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/permission/components/APermissionValueChip.js +7 -0
- package/dist/domains/permission/components/APermissionValueChip.js.map +1 -0
- package/dist/domains/permission/components/APermissionValueChip.vue.d.ts +9 -0
- package/dist/domains/permission/components/APermissionValueChip.vue_vue_type_script_setup_true_lang.js +32 -0
- package/dist/domains/permission/components/APermissionValueChip.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/permission/composables/permissionActions.d.ts +22 -0
- package/dist/domains/permission/composables/permissionActions.js +25 -0
- package/dist/domains/permission/composables/permissionActions.js.map +1 -0
- package/dist/domains/permission/config/api/permissionConfigApi.d.ts +18 -0
- package/dist/domains/permission/config/api/permissionConfigApi.js +15 -0
- package/dist/domains/permission/config/api/permissionConfigApi.js.map +1 -0
- package/dist/domains/permission/config/composables/permissionConfigActions.d.ts +26 -0
- package/dist/domains/permission/config/composables/permissionConfigActions.js +43 -0
- package/dist/domains/permission/config/composables/permissionConfigActions.js.map +1 -0
- package/dist/domains/permission/config/factory/PermissionConfigFactory.d.ts +4 -0
- package/dist/domains/permission/config/factory/PermissionConfigFactory.js +17 -0
- package/dist/domains/permission/config/factory/PermissionConfigFactory.js.map +1 -0
- package/dist/domains/permission/config/store/permissionConfigStore.d.ts +82 -0
- package/dist/domains/permission/config/store/permissionConfigStore.js +47 -0
- package/dist/domains/permission/config/store/permissionConfigStore.js.map +1 -0
- package/dist/domains/permission/config/types/PermissionConfig.d.ts +30 -0
- package/dist/domains/permission/group/api/permissionGroupApi.d.ts +34 -0
- package/dist/domains/permission/group/api/permissionGroupApi.js +62 -0
- package/dist/domains/permission/group/api/permissionGroupApi.js.map +1 -0
- package/dist/domains/permission/group/components/APermissionGroupDatatable.js +7 -0
- package/dist/domains/permission/group/components/APermissionGroupDatatable.js.map +1 -0
- package/dist/domains/permission/group/components/APermissionGroupDatatable.vue.d.ts +46 -0
- package/dist/domains/permission/group/components/APermissionGroupDatatable.vue_vue_type_script_setup_true_lang.js +130 -0
- package/dist/domains/permission/group/components/APermissionGroupDatatable.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/permission/group/components/APermissionGroupDetail.js +7 -0
- package/dist/domains/permission/group/components/APermissionGroupDetail.js.map +1 -0
- package/dist/domains/permission/group/components/APermissionGroupDetail.vue.d.ts +41 -0
- package/dist/domains/permission/group/components/APermissionGroupDetail.vue_vue_type_script_setup_true_lang.js +80 -0
- package/dist/domains/permission/group/components/APermissionGroupDetail.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/permission/group/components/APermissionGroupFilter.js +7 -0
- package/dist/domains/permission/group/components/APermissionGroupFilter.js.map +1 -0
- package/dist/domains/permission/group/components/APermissionGroupFilter.vue.d.ts +9 -0
- package/dist/domains/permission/group/components/APermissionGroupFilter.vue_vue_type_script_setup_true_lang.js +25 -0
- package/dist/domains/permission/group/components/APermissionGroupFilter.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/permission/group/components/APermissionGroupManage.js +7 -0
- package/dist/domains/permission/group/components/APermissionGroupManage.js.map +1 -0
- package/dist/domains/permission/group/components/APermissionGroupManage.vue.d.ts +42 -0
- package/dist/domains/permission/group/components/APermissionGroupManage.vue_vue_type_script_setup_true_lang.js +79 -0
- package/dist/domains/permission/group/components/APermissionGroupManage.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/permission/group/components/APermissionGroupRemoteAutocomplete.js +7 -0
- package/dist/domains/permission/group/components/APermissionGroupRemoteAutocomplete.js.map +1 -0
- package/dist/domains/permission/group/components/APermissionGroupRemoteAutocomplete.vue.d.ts +34 -0
- package/dist/domains/permission/group/components/APermissionGroupRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js +83 -0
- package/dist/domains/permission/group/components/APermissionGroupRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/permission/group/composables/cachedPermissionGroups.d.ts +23 -0
- package/dist/domains/permission/group/composables/cachedPermissionGroups.js +44 -0
- package/dist/domains/permission/group/composables/cachedPermissionGroups.js.map +1 -0
- package/dist/domains/permission/group/composables/permissionGroupActions.d.ts +92 -0
- package/dist/domains/permission/group/composables/permissionGroupActions.js +126 -0
- package/dist/domains/permission/group/composables/permissionGroupActions.js.map +1 -0
- package/dist/domains/permission/group/composables/permissionGroupValidations.d.ts +48 -0
- package/dist/domains/permission/group/composables/permissionGroupValidations.js +18 -0
- package/dist/domains/permission/group/composables/permissionGroupValidations.js.map +1 -0
- package/dist/domains/permission/group/factory/PermissionGroupFactory.d.ts +4 -0
- package/dist/domains/permission/group/factory/PermissionGroupFactory.js +20 -0
- package/dist/domains/permission/group/factory/PermissionGroupFactory.js.map +1 -0
- package/dist/domains/permission/group/filter/permissionGroupFilter.d.ts +44 -0
- package/dist/domains/permission/group/filter/permissionGroupFilter.js +45 -0
- package/dist/domains/permission/group/filter/permissionGroupFilter.js.map +1 -0
- package/dist/domains/permission/group/store/permissionGroupStore.d.ts +38 -0
- package/dist/domains/permission/group/store/permissionGroupStore.js +27 -0
- package/dist/domains/permission/group/store/permissionGroupStore.js.map +1 -0
- package/dist/domains/permission/group/types/PermissionGroup.d.ts +13 -0
- package/dist/domains/permission/valueObject/GrantOrigin.d.ts +25 -0
- package/dist/domains/permission/valueObject/GrantOrigin.js +37 -0
- package/dist/domains/permission/valueObject/GrantOrigin.js.map +1 -0
- package/dist/domains/remoteAutocomplete/components/AFilterRemoteAutocomplete.js +7 -0
- package/dist/domains/remoteAutocomplete/components/AFilterRemoteAutocomplete.js.map +1 -0
- package/dist/domains/remoteAutocomplete/components/AFilterRemoteAutocomplete.vue.d.ts +35 -0
- package/dist/domains/remoteAutocomplete/components/AFilterRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js +205 -0
- package/dist/domains/remoteAutocomplete/components/AFilterRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/remoteAutocomplete/components/AFilterRemoteAutocompleteWithMinimal.js +7 -0
- package/dist/domains/remoteAutocomplete/components/AFilterRemoteAutocompleteWithMinimal.js.map +1 -0
- package/dist/domains/remoteAutocomplete/components/AFilterRemoteAutocompleteWithMinimal.vue.d.ts +36 -0
- package/dist/domains/remoteAutocomplete/components/AFilterRemoteAutocompleteWithMinimal.vue_vue_type_script_setup_true_lang.js +206 -0
- package/dist/domains/remoteAutocomplete/components/AFilterRemoteAutocompleteWithMinimal.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/remoteAutocomplete/components/AFormRemoteAutocomplete.js +7 -0
- package/dist/domains/remoteAutocomplete/components/AFormRemoteAutocomplete.js.map +1 -0
- package/dist/domains/remoteAutocomplete/components/AFormRemoteAutocomplete.vue.d.ts +73 -0
- package/dist/domains/remoteAutocomplete/components/AFormRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js +297 -0
- package/dist/domains/remoteAutocomplete/components/AFormRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/remoteAutocomplete/components/AFormRemoteAutocompleteWithCached.js +7 -0
- package/dist/domains/remoteAutocomplete/components/AFormRemoteAutocompleteWithCached.js.map +1 -0
- package/dist/domains/remoteAutocomplete/components/AFormRemoteAutocompleteWithCached.vue.d.ts +87 -0
- package/dist/domains/remoteAutocomplete/components/AFormRemoteAutocompleteWithCached.vue_vue_type_script_setup_true_lang.js +194 -0
- package/dist/domains/remoteAutocomplete/components/AFormRemoteAutocompleteWithCached.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/remoteAutocomplete/composables/createRemoteAutocomplete.d.ts +121 -0
- package/dist/domains/remoteAutocomplete/composables/createRemoteAutocomplete.js +73 -0
- package/dist/domains/remoteAutocomplete/composables/createRemoteAutocomplete.js.map +1 -0
- package/dist/domains/subjectSelect/components/AFilterWrapperSubjectSelect.js +8 -0
- package/dist/domains/subjectSelect/components/AFilterWrapperSubjectSelect.js.map +1 -0
- package/dist/domains/subjectSelect/components/AFilterWrapperSubjectSelect.vue.d.ts +57 -0
- package/dist/domains/subjectSelect/components/AFilterWrapperSubjectSelect.vue_vue_type_script_setup_true_lang.js +147 -0
- package/dist/domains/subjectSelect/components/AFilterWrapperSubjectSelect.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/subjectSelect/components/ASubjectSelect.js +7 -0
- package/dist/domains/subjectSelect/components/ASubjectSelect.js.map +1 -0
- package/dist/domains/subjectSelect/components/ASubjectSelect.vue.d.ts +68 -0
- package/dist/domains/subjectSelect/components/ASubjectSelect.vue_vue_type_script_setup_true_lang.js +182 -0
- package/dist/domains/subjectSelect/components/ASubjectSelect.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/subjectSelect/composables/useSubjectSelect.d.ts +28 -0
- package/dist/domains/subjectSelect/composables/useSubjectSelect.js +84 -0
- package/dist/domains/subjectSelect/composables/useSubjectSelect.js.map +1 -0
- package/dist/domains/subjectSelect/utils/selectStrategies.d.ts +24 -0
- package/dist/domains/subjectSelect/utils/selectStrategies.js +16 -0
- package/dist/domains/subjectSelect/utils/selectStrategies.js.map +1 -0
- package/dist/domains/system/appShell/components/AActionbar.js +8 -0
- package/dist/domains/system/appShell/components/AActionbar.js.map +1 -0
- package/dist/domains/system/appShell/components/AActionbar.vue.d.ts +32 -0
- package/dist/domains/system/appShell/components/AActionbar.vue_vue_type_script_setup_true_lang.js +59 -0
- package/dist/domains/system/appShell/components/AActionbar.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/system/appShell/components/AActionbarTarget.js +7 -0
- package/dist/domains/system/appShell/components/AActionbarTarget.js.map +1 -0
- package/dist/domains/system/appShell/components/AActionbarTarget.vue.d.ts +3 -0
- package/dist/domains/system/appShell/components/AActionbarTarget.vue_vue_type_script_setup_true_lang.js +17 -0
- package/dist/domains/system/appShell/components/AActionbarTarget.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/system/appShell/components/ALayoutLoader.js +7 -0
- package/dist/domains/system/appShell/components/ALayoutLoader.js.map +1 -0
- package/dist/domains/system/appShell/components/ALayoutLoader.vue.d.ts +3 -0
- package/dist/domains/system/appShell/components/ALayoutLoader.vue_vue_type_script_setup_true_lang.js +26 -0
- package/dist/domains/system/appShell/components/ALayoutLoader.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/system/appShell/components/ALayoutSwitch.js +7 -0
- package/dist/domains/system/appShell/components/ALayoutSwitch.js.map +1 -0
- package/dist/domains/system/appShell/components/ALayoutSwitch.vue.d.ts +24 -0
- package/dist/domains/system/appShell/components/ALayoutSwitch.vue_vue_type_script_setup_true_lang.js +29 -0
- package/dist/domains/system/appShell/components/ALayoutSwitch.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/system/appShell/composables/teleportSlot.d.ts +17 -0
- package/dist/domains/system/appShell/composables/teleportSlot.js +41 -0
- package/dist/domains/system/appShell/composables/teleportSlot.js.map +1 -0
- package/dist/domains/system/components/AAdminSwitcher.js +8 -0
- package/dist/domains/system/components/AAdminSwitcher.js.map +1 -0
- package/dist/domains/system/components/AAdminSwitcher.vue.d.ts +8 -0
- package/dist/domains/system/components/AAdminSwitcher.vue_vue_type_script_setup_true_lang.js +60 -0
- package/dist/domains/system/components/AAdminSwitcher.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/system/components/AAlerts.js +8 -0
- package/dist/domains/system/components/AAlerts.js.map +1 -0
- package/dist/domains/system/components/AAlerts.vue.d.ts +16 -0
- package/dist/domains/system/components/AAlerts.vue_vue_type_script_setup_true_lang.js +68 -0
- package/dist/domains/system/components/AAlerts.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/system/components/ALanguageSelect.js +9 -0
- package/dist/domains/system/components/ALanguageSelect.js.map +1 -0
- package/dist/domains/system/components/ALanguageSelect.vue.d.ts +11 -0
- package/dist/domains/system/components/ALanguageSelect.vue_vue_type_script_setup_true_lang.js +69 -0
- package/dist/domains/system/components/ALanguageSelect.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/system/components/AThemeSelect.js +7 -0
- package/dist/domains/system/components/AThemeSelect.js.map +1 -0
- package/dist/domains/system/components/AThemeSelect.vue.d.ts +3 -0
- package/dist/domains/system/components/AThemeSelect.vue_vue_type_script_setup_true_lang.js +86 -0
- package/dist/domains/system/components/AThemeSelect.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/system/composables/alerts.d.ts +20 -0
- package/dist/domains/system/composables/alerts.js +83 -0
- package/dist/domains/system/composables/alerts.js.map +1 -0
- package/dist/domains/system/composables/alertsQueue.d.ts +10 -0
- package/dist/domains/system/composables/alertsQueue.js +18 -0
- package/dist/domains/system/composables/alertsQueue.js.map +1 -0
- package/dist/domains/system/composables/breadcrumbs.d.ts +22 -0
- package/dist/domains/system/composables/breadcrumbs.js +16 -0
- package/dist/domains/system/composables/breadcrumbs.js.map +1 -0
- package/dist/domains/system/composables/languageSettings.d.ts +18 -0
- package/dist/domains/system/composables/languageSettings.js +51 -0
- package/dist/domains/system/composables/languageSettings.js.map +1 -0
- package/dist/domains/system/composables/loginStatus.d.ts +18 -0
- package/dist/domains/system/composables/loginStatus.js +34 -0
- package/dist/domains/system/composables/loginStatus.js.map +1 -0
- package/dist/domains/system/composables/navigationError.d.ts +24 -0
- package/dist/domains/system/composables/navigationError.js +26 -0
- package/dist/domains/system/composables/navigationError.js.map +1 -0
- package/dist/domains/system/composables/pageNavigation.d.ts +28 -0
- package/dist/domains/system/composables/pageNavigation.js +40 -0
- package/dist/domains/system/composables/pageNavigation.js.map +1 -0
- package/dist/domains/system/composables/recordPage.d.ts +58 -0
- package/dist/domains/system/composables/recordPage.js +101 -0
- package/dist/domains/system/composables/recordPage.js.map +1 -0
- package/dist/domains/system/composables/routeHistory.d.ts +38 -0
- package/dist/domains/system/composables/routeHistory.js +65 -0
- package/dist/domains/system/composables/routeHistory.js.map +1 -0
- package/dist/domains/system/composables/sentry.d.ts +17 -0
- package/dist/domains/system/composables/sentry.js +56 -0
- package/dist/domains/system/composables/sentry.js.map +1 -0
- package/dist/domains/system/composables/themeSettings.d.ts +20 -0
- package/dist/domains/system/composables/themeSettings.js +61 -0
- package/dist/domains/system/composables/themeSettings.js.map +1 -0
- package/dist/domains/system/composables/useDebugFeatures.d.ts +11 -0
- package/dist/domains/system/composables/useDebugFeatures.js +10 -0
- package/dist/domains/system/composables/useDebugFeatures.js.map +1 -0
- package/dist/domains/system/composables/useUnreleasedFeatures.d.ts +3 -0
- package/dist/domains/system/composables/useUnreleasedFeatures.js +10 -0
- package/dist/domains/system/composables/useUnreleasedFeatures.js.map +1 -0
- package/dist/domains/system/composables/useUserActivity.d.ts +4 -0
- package/dist/domains/system/composables/useUserActivity.js +14 -0
- package/dist/domains/system/composables/useUserActivity.js.map +1 -0
- package/dist/domains/system/flags/components/FlagCountry.js +7 -0
- package/dist/domains/system/flags/components/FlagCountry.js.map +1 -0
- package/dist/domains/system/flags/components/FlagCountry.vue.d.ts +11 -0
- package/dist/domains/system/flags/components/FlagCountry.vue_vue_type_script_setup_true_lang.js +26 -0
- package/dist/domains/system/flags/components/FlagCountry.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/system/flags/components/FlagEmpty.js +19 -0
- package/dist/domains/system/flags/components/FlagEmpty.js.map +1 -0
- package/dist/domains/system/flags/components/FlagEmpty.vue.d.ts +3 -0
- package/dist/domains/system/flags/components/FlagEn.js +16 -0
- package/dist/domains/system/flags/components/FlagEn.js.map +1 -0
- package/dist/domains/system/flags/components/FlagEn.vue.d.ts +3 -0
- package/dist/domains/system/flags/components/FlagSk.js +15 -0
- package/dist/domains/system/flags/components/FlagSk.js.map +1 -0
- package/dist/domains/system/flags/components/FlagSk.vue.d.ts +3 -0
- package/dist/domains/system/store/datatablePageStore.d.ts +9 -0
- package/dist/domains/system/store/datatablePageStore.js +42 -0
- package/dist/domains/system/store/datatablePageStore.js.map +1 -0
- package/dist/domains/system/systemBar/components/ASystemBar.js +7 -0
- package/dist/domains/system/systemBar/components/ASystemBar.js.map +1 -0
- package/dist/domains/system/systemBar/components/ASystemBar.vue.d.ts +13 -0
- package/dist/domains/system/systemBar/components/ASystemBar.vue_vue_type_script_setup_true_lang.js +74 -0
- package/dist/domains/system/systemBar/components/ASystemBar.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/system/systemBar/components/ASystemBarNewVersion.js +7 -0
- package/dist/domains/system/systemBar/components/ASystemBarNewVersion.js.map +1 -0
- package/dist/domains/system/systemBar/components/ASystemBarNewVersion.vue.d.ts +3 -0
- package/dist/domains/system/systemBar/components/ASystemBarNewVersion.vue_vue_type_script_setup_true_lang.js +19 -0
- package/dist/domains/system/systemBar/components/ASystemBarNewVersion.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/system/systemBar/composables/systemBar.d.ts +3 -0
- package/dist/domains/system/systemBar/composables/systemBar.js +10 -0
- package/dist/domains/system/systemBar/composables/systemBar.js.map +1 -0
- package/dist/domains/system/systemBar/utils/appReload.d.ts +13 -0
- package/dist/domains/system/systemBar/utils/appReload.js +23 -0
- package/dist/domains/system/systemBar/utils/appReload.js.map +1 -0
- package/dist/domains/system/systemBar/utils/pageReload.d.ts +1 -0
- package/dist/domains/system/systemBar/utils/pageReload.js +6 -0
- package/dist/domains/system/systemBar/utils/pageReload.js.map +1 -0
- package/dist/domains/ui/buttons/action/components/AActionCloseButtonHistory.js +7 -0
- package/dist/domains/ui/buttons/action/components/AActionCloseButtonHistory.js.map +1 -0
- package/dist/domains/ui/buttons/action/components/AActionCloseButtonHistory.vue.d.ts +24 -0
- package/dist/domains/ui/buttons/action/components/AActionCloseButtonHistory.vue_vue_type_script_setup_true_lang.js +61 -0
- package/dist/domains/ui/buttons/action/components/AActionCloseButtonHistory.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/ui/buttons/action/components/AActionCreateButton.js +7 -0
- package/dist/domains/ui/buttons/action/components/AActionCreateButton.js.map +1 -0
- package/dist/domains/ui/buttons/action/components/AActionCreateButton.vue.d.ts +23 -0
- package/dist/domains/ui/buttons/action/components/AActionCreateButton.vue_vue_type_script_setup_true_lang.js +81 -0
- package/dist/domains/ui/buttons/action/components/AActionCreateButton.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/ui/buttons/action/components/AActionDeleteButton.js +7 -0
- package/dist/domains/ui/buttons/action/components/AActionDeleteButton.js.map +1 -0
- package/dist/domains/ui/buttons/action/components/AActionDeleteButton.vue.d.ts +49 -0
- package/dist/domains/ui/buttons/action/components/AActionDeleteButton.vue_vue_type_script_setup_true_lang.js +164 -0
- package/dist/domains/ui/buttons/action/components/AActionDeleteButton.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/ui/buttons/action/components/AActionEditButton.js +7 -0
- package/dist/domains/ui/buttons/action/components/AActionEditButton.js.map +1 -0
- package/dist/domains/ui/buttons/action/components/AActionEditButton.vue.d.ts +33 -0
- package/dist/domains/ui/buttons/action/components/AActionEditButton.vue_vue_type_script_setup_true_lang.js +101 -0
- package/dist/domains/ui/buttons/action/components/AActionEditButton.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/ui/buttons/action/components/AActionSaveAndCloseButton.js +7 -0
- package/dist/domains/ui/buttons/action/components/AActionSaveAndCloseButton.js.map +1 -0
- package/dist/domains/ui/buttons/action/components/AActionSaveAndCloseButton.vue.d.ts +25 -0
- package/dist/domains/ui/buttons/action/components/AActionSaveAndCloseButton.vue_vue_type_script_setup_true_lang.js +68 -0
- package/dist/domains/ui/buttons/action/components/AActionSaveAndCloseButton.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/ui/buttons/action/components/AActionSaveButton.js +7 -0
- package/dist/domains/ui/buttons/action/components/AActionSaveButton.js.map +1 -0
- package/dist/domains/ui/buttons/action/components/AActionSaveButton.vue.d.ts +30 -0
- package/dist/domains/ui/buttons/action/components/AActionSaveButton.vue_vue_type_script_setup_true_lang.js +98 -0
- package/dist/domains/ui/buttons/action/components/AActionSaveButton.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/ui/buttons/components/ABtnSplit.js +8 -0
- package/dist/domains/ui/buttons/components/ABtnSplit.js.map +1 -0
- package/dist/domains/ui/buttons/components/ABtnSplit.vue.d.ts +45 -0
- package/dist/domains/ui/buttons/components/ABtnSplit.vue_vue_type_script_setup_true_lang.js +145 -0
- package/dist/domains/ui/buttons/components/ABtnSplit.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/ui/buttons/table/components/ATableCopyIdButton.js +7 -0
- package/dist/domains/ui/buttons/table/components/ATableCopyIdButton.js.map +1 -0
- package/dist/domains/ui/buttons/table/components/ATableCopyIdButton.vue.d.ts +19 -0
- package/dist/domains/ui/buttons/table/components/ATableCopyIdButton.vue_vue_type_script_setup_true_lang.js +64 -0
- package/dist/domains/ui/buttons/table/components/ATableCopyIdButton.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/ui/buttons/table/components/ATableDetailButton.js +7 -0
- package/dist/domains/ui/buttons/table/components/ATableDetailButton.js.map +1 -0
- package/dist/domains/ui/buttons/table/components/ATableDetailButton.vue.d.ts +22 -0
- package/dist/domains/ui/buttons/table/components/ATableDetailButton.vue_vue_type_script_setup_true_lang.js +60 -0
- package/dist/domains/ui/buttons/table/components/ATableDetailButton.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/ui/buttons/table/components/ATableEditButton.js +7 -0
- package/dist/domains/ui/buttons/table/components/ATableEditButton.js.map +1 -0
- package/dist/domains/ui/buttons/table/components/ATableEditButton.vue.d.ts +22 -0
- package/dist/domains/ui/buttons/table/components/ATableEditButton.vue_vue_type_script_setup_true_lang.js +60 -0
- package/dist/domains/ui/buttons/table/components/ATableEditButton.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/ui/components/AAnzuUserAvatar.js +7 -0
- package/dist/domains/ui/components/AAnzuUserAvatar.js.map +1 -0
- package/dist/domains/ui/components/AAnzuUserAvatar.vue.d.ts +15 -0
- package/dist/domains/ui/components/AAnzuUserAvatar.vue_vue_type_script_setup_true_lang.js +46 -0
- package/dist/domains/ui/components/AAnzuUserAvatar.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/ui/components/AAvatarColorPicker.js +8 -0
- package/dist/domains/ui/components/AAvatarColorPicker.js.map +1 -0
- package/dist/domains/ui/components/AAvatarColorPicker.vue.d.ts +23 -0
- package/dist/domains/ui/components/AAvatarColorPicker.vue_vue_type_script_setup_true_lang.js +122 -0
- package/dist/domains/ui/components/AAvatarColorPicker.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/ui/components/ABooleanSelect.js +7 -0
- package/dist/domains/ui/components/ABooleanSelect.js.map +1 -0
- package/dist/domains/ui/components/ABooleanSelect.vue.d.ts +21 -0
- package/dist/domains/ui/components/ABooleanSelect.vue_vue_type_script_setup_true_lang.js +57 -0
- package/dist/domains/ui/components/ABooleanSelect.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/ui/components/ABooleanValue.js +7 -0
- package/dist/domains/ui/components/ABooleanValue.js.map +1 -0
- package/dist/domains/ui/components/ABooleanValue.vue.d.ts +11 -0
- package/dist/domains/ui/components/ABooleanValue.vue_vue_type_script_setup_true_lang.js +39 -0
- package/dist/domains/ui/components/ABooleanValue.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/ui/components/ACard.js +7 -0
- package/dist/domains/ui/components/ACard.js.map +1 -0
- package/dist/domains/ui/components/ACard.vue.d.ts +22 -0
- package/dist/domains/ui/components/ACard.vue_vue_type_script_setup_true_lang.js +38 -0
- package/dist/domains/ui/components/ACard.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/ui/components/ACardLoader.js +8 -0
- package/dist/domains/ui/components/ACardLoader.js.map +1 -0
- package/dist/domains/ui/components/ACardLoader.vue.d.ts +8 -0
- package/dist/domains/ui/components/ACardLoader.vue_vue_type_script_setup_true_lang.js +16 -0
- package/dist/domains/ui/components/ACardLoader.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/ui/components/AChipNoLink.js +7 -0
- package/dist/domains/ui/components/AChipNoLink.js.map +1 -0
- package/dist/domains/ui/components/AChipNoLink.vue.d.ts +22 -0
- package/dist/domains/ui/components/AChipNoLink.vue_vue_type_script_setup_true_lang.js +35 -0
- package/dist/domains/ui/components/AChipNoLink.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/ui/components/ACopyText.js +8 -0
- package/dist/domains/ui/components/ACopyText.js.map +1 -0
- package/dist/domains/ui/components/ACopyText.vue.d.ts +28 -0
- package/dist/domains/ui/components/ACopyText.vue_vue_type_script_setup_true_lang.js +56 -0
- package/dist/domains/ui/components/ACopyText.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/ui/components/ACreateDialog.js +7 -0
- package/dist/domains/ui/components/ACreateDialog.js.map +1 -0
- package/dist/domains/ui/components/ACreateDialog.vue.d.ts +59 -0
- package/dist/domains/ui/components/ACreateDialog.vue_vue_type_script_setup_true_lang.js +128 -0
- package/dist/domains/ui/components/ACreateDialog.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/ui/components/ACurrentUserDropdown.js +7 -0
- package/dist/domains/ui/components/ACurrentUserDropdown.js.map +1 -0
- package/dist/domains/ui/components/ACurrentUserDropdown.vue.d.ts +12 -0
- package/dist/domains/ui/components/ACurrentUserDropdown.vue_vue_type_script_setup_true_lang.js +163 -0
- package/dist/domains/ui/components/ACurrentUserDropdown.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/ui/components/ADialogToolbar.js +7 -0
- package/dist/domains/ui/components/ADialogToolbar.js.map +1 -0
- package/dist/domains/ui/components/ADialogToolbar.vue.d.ts +17 -0
- package/dist/domains/ui/components/ADialogToolbar.vue_vue_type_script_setup_true_lang.js +41 -0
- package/dist/domains/ui/components/ADialogToolbar.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/ui/components/AIconGroup.js +8 -0
- package/dist/domains/ui/components/AIconGroup.js.map +1 -0
- package/dist/domains/ui/components/AIconGroup.vue.d.ts +13 -0
- package/dist/domains/ui/components/AIconGroup.vue_vue_type_script_setup_true_lang.js +41 -0
- package/dist/domains/ui/components/AIconGroup.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/ui/components/AProgress.js +9 -0
- package/dist/domains/ui/components/AProgress.js.map +1 -0
- package/dist/domains/ui/components/AProgress.vue.d.ts +10 -0
- package/dist/domains/ui/components/AProgress.vue_vue_type_script_setup_true_lang.js +32 -0
- package/dist/domains/ui/components/AProgress.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/ui/components/ARow.js +7 -0
- package/dist/domains/ui/components/ARow.js.map +1 -0
- package/dist/domains/ui/components/ARow.vue.d.ts +24 -0
- package/dist/domains/ui/components/ARow.vue_vue_type_script_setup_true_lang.js +28 -0
- package/dist/domains/ui/components/ARow.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/ui/components/ATimeTrackingFields.js +7 -0
- package/dist/domains/ui/components/ATimeTrackingFields.js.map +1 -0
- package/dist/domains/ui/components/ATimeTrackingFields.vue.d.ts +12 -0
- package/dist/domains/ui/components/ATimeTrackingFields.vue_vue_type_script_setup_true_lang.js +39 -0
- package/dist/domains/ui/components/ATimeTrackingFields.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/ui/components/AUserAndTimeTrackingFields.js +7 -0
- package/dist/domains/ui/components/AUserAndTimeTrackingFields.js.map +1 -0
- package/dist/domains/ui/components/AUserAndTimeTrackingFields.vue.d.ts +46 -0
- package/dist/domains/ui/components/AUserAndTimeTrackingFields.vue_vue_type_script_setup_true_lang.js +104 -0
- package/dist/domains/ui/components/AUserAndTimeTrackingFields.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/ui/datetime/components/ADatetime.js +7 -0
- package/dist/domains/ui/datetime/components/ADatetime.js.map +1 -0
- package/dist/domains/ui/datetime/components/ADatetime.vue.d.ts +10 -0
- package/dist/domains/ui/datetime/components/ADatetime.vue_vue_type_script_setup_true_lang.js +18 -0
- package/dist/domains/ui/datetime/components/ADatetime.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/ui/datetime/components/ADatetimePicker.js +9 -0
- package/dist/domains/ui/datetime/components/ADatetimePicker.js.map +1 -0
- package/dist/domains/ui/datetime/components/ADatetimePicker.vue.d.ts +61 -0
- package/dist/domains/ui/datetime/components/ADatetimePicker.vue_vue_type_script_setup_true_lang.js +240 -0
- package/dist/domains/ui/datetime/components/ADatetimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/ui/datetime/components/TimePicker.js +9 -0
- package/dist/domains/ui/datetime/components/TimePicker.js.map +1 -0
- package/dist/domains/ui/datetime/components/TimePicker.vue.d.ts +26 -0
- package/dist/domains/ui/datetime/components/TimePicker.vue_vue_type_script_setup_true_lang.js +151 -0
- package/dist/domains/ui/datetime/components/TimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/ui/datetime/composables/remainingTime.d.ts +4 -0
- package/dist/domains/ui/datetime/composables/remainingTime.js +17 -0
- package/dist/domains/ui/datetime/composables/remainingTime.js.map +1 -0
- package/dist/domains/ui/file/components/AFileDropzone.js +8 -0
- package/dist/domains/ui/file/components/AFileDropzone.js.map +1 -0
- package/dist/domains/ui/file/components/AFileDropzone.vue.d.ts +31 -0
- package/dist/domains/ui/file/components/AFileDropzone.vue_vue_type_script_setup_true_lang.js +68 -0
- package/dist/domains/ui/file/components/AFileDropzone.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/ui/file/components/AFileInput.js +7 -0
- package/dist/domains/ui/file/components/AFileInput.js.map +1 -0
- package/dist/domains/ui/file/components/AFileInput.vue.d.ts +48 -0
- package/dist/domains/ui/file/components/AFileInput.vue_vue_type_script_setup_true_lang.js +82 -0
- package/dist/domains/ui/file/components/AFileInput.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/ui/file/components/AFileInputDialog.js +7 -0
- package/dist/domains/ui/file/components/AFileInputDialog.js.map +1 -0
- package/dist/domains/ui/file/components/AFileInputDialog.vue.d.ts +49 -0
- package/dist/domains/ui/file/components/AFileInputDialog.vue_vue_type_script_setup_true_lang.js +100 -0
- package/dist/domains/ui/file/components/AFileInputDialog.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/ui/file/composables/dropzone.d.ts +6 -0
- package/dist/domains/ui/file/composables/dropzone.js +33 -0
- package/dist/domains/ui/file/composables/dropzone.js.map +1 -0
- package/dist/domains/ui/file/composables/formatAndSizeCheck.d.ts +9 -0
- package/dist/domains/ui/file/composables/formatAndSizeCheck.js +53 -0
- package/dist/domains/ui/file/composables/formatAndSizeCheck.js.map +1 -0
- package/dist/domains/ui/file/utils/fileType.d.ts +1 -0
- package/dist/domains/ui/file/utils/fileType.js +14 -0
- package/dist/domains/ui/file/utils/fileType.js.map +1 -0
- package/dist/domains/ui/view/components/AGenericView.js +7 -0
- package/dist/domains/ui/view/components/AGenericView.js.map +1 -0
- package/dist/domains/ui/view/components/AGenericView.vue.d.ts +30 -0
- package/dist/domains/ui/view/components/AGenericView.vue_vue_type_script_setup_true_lang.js +45 -0
- package/dist/domains/ui/view/components/AGenericView.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/ui/view/components/ALoginView.js +9 -0
- package/dist/domains/ui/view/components/ALoginView.js.map +1 -0
- package/dist/domains/ui/view/components/ALoginView.vue.d.ts +24 -0
- package/dist/domains/ui/view/components/ALoginView.vue_vue_type_script_setup_true_lang.js +48 -0
- package/dist/domains/ui/view/components/ALoginView.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/ui/view/components/ALogoutView.js +7 -0
- package/dist/domains/ui/view/components/ALogoutView.js.map +1 -0
- package/dist/domains/ui/view/components/ALogoutView.vue.d.ts +8 -0
- package/dist/domains/ui/view/components/ALogoutView.vue_vue_type_script_setup_true_lang.js +19 -0
- package/dist/domains/ui/view/components/ALogoutView.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/ui/view/components/ANotFoundView.js +7 -0
- package/dist/domains/ui/view/components/ANotFoundView.js.map +1 -0
- package/dist/domains/ui/view/components/ANotFoundView.vue.d.ts +6 -0
- package/dist/domains/ui/view/components/ANotFoundView.vue_vue_type_script_setup_true_lang.js +52 -0
- package/dist/domains/ui/view/components/ANotFoundView.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/ui/view/components/AUnauthorizedView.js +7 -0
- package/dist/domains/ui/view/components/AUnauthorizedView.js.map +1 -0
- package/dist/domains/ui/view/components/AUnauthorizedView.vue.d.ts +14 -0
- package/dist/domains/ui/view/components/AUnauthorizedView.vue_vue_type_script_setup_true_lang.js +33 -0
- package/dist/domains/ui/view/components/AUnauthorizedView.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/unsavedGuard/components/AUnsavedConfirmDialog.js +9 -0
- package/dist/domains/unsavedGuard/components/AUnsavedConfirmDialog.js.map +1 -0
- package/dist/domains/unsavedGuard/components/AUnsavedConfirmDialog.vue.d.ts +31 -0
- package/dist/domains/unsavedGuard/components/AUnsavedConfirmDialog.vue_vue_type_script_setup_true_lang.js +82 -0
- package/dist/domains/unsavedGuard/components/AUnsavedConfirmDialog.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/domains/unsavedGuard/composables/useUnsavedChangesGuard.d.ts +82 -0
- package/dist/domains/unsavedGuard/composables/useUnsavedChangesGuard.js +69 -0
- package/dist/domains/unsavedGuard/composables/useUnsavedChangesGuard.js.map +1 -0
- package/dist/domains/unsavedGuard/composables/useUnsavedSection.d.ts +36 -0
- package/dist/domains/unsavedGuard/composables/useUnsavedSection.js +36 -0
- package/dist/domains/unsavedGuard/composables/useUnsavedSection.js.map +1 -0
- package/dist/lib.d.ts +341 -0
- package/dist/locales/cs/common/alert.js +153 -0
- package/dist/locales/cs/common/alert.js.map +1 -0
- package/dist/locales/cs/common/anzuUser.js +271 -0
- package/dist/locales/cs/common/anzuUser.js.map +1 -0
- package/dist/locales/cs/common/assetSelect.js +371 -0
- package/dist/locales/cs/common/assetSelect.js.map +1 -0
- package/dist/locales/cs/common/button.js +311 -0
- package/dist/locales/cs/common/button.js.map +1 -0
- package/dist/locales/cs/common/collab.js +267 -0
- package/dist/locales/cs/common/collab.js.map +1 -0
- package/dist/locales/cs/common/confirmDialog.js +41 -0
- package/dist/locales/cs/common/confirmDialog.js.map +1 -0
- package/dist/locales/cs/common/customForm.js +109 -0
- package/dist/locales/cs/common/customForm.js.map +1 -0
- package/dist/locales/cs/common/customFormElement.js +141 -0
- package/dist/locales/cs/common/customFormElement.js.map +1 -0
- package/dist/locales/cs/common/damImage.js +1345 -0
- package/dist/locales/cs/common/damImage.js.map +1 -0
- package/dist/locales/cs/common/dayOfWeek.js +79 -0
- package/dist/locales/cs/common/dayOfWeek.js.map +1 -0
- package/dist/locales/cs/common/filter.js +217 -0
- package/dist/locales/cs/common/filter.js.map +1 -0
- package/dist/locales/cs/common/job.js +207 -0
- package/dist/locales/cs/common/job.js.map +1 -0
- package/dist/locales/cs/common/linkDto.js +23 -0
- package/dist/locales/cs/common/linkDto.js.map +1 -0
- package/dist/locales/cs/common/listItemDto.js +13 -0
- package/dist/locales/cs/common/listItemDto.js.map +1 -0
- package/dist/locales/cs/common/log.js +255 -0
- package/dist/locales/cs/common/log.js.map +1 -0
- package/dist/locales/cs/common/model.js +165 -0
- package/dist/locales/cs/common/model.js.map +1 -0
- package/dist/locales/cs/common/permission.js +85 -0
- package/dist/locales/cs/common/permission.js.map +1 -0
- package/dist/locales/cs/common/permissionEditor.js +74 -0
- package/dist/locales/cs/common/permissionEditor.js.map +1 -0
- package/dist/locales/cs/common/permissionGroup.js +101 -0
- package/dist/locales/cs/common/permissionGroup.js.map +1 -0
- package/dist/locales/cs/common/routeSettings.js +227 -0
- package/dist/locales/cs/common/routeSettings.js.map +1 -0
- package/dist/locales/cs/common/sortable.js +594 -0
- package/dist/locales/cs/common/sortable.js.map +1 -0
- package/dist/locales/cs/common/subjectSelect.js +89 -0
- package/dist/locales/cs/common/subjectSelect.js.map +1 -0
- package/dist/locales/cs/common/system.js +377 -0
- package/dist/locales/cs/common/system.js.map +1 -0
- package/dist/locales/cs/common/time.js +131 -0
- package/dist/locales/cs/common/time.js.map +1 -0
- package/dist/locales/cs/common/userSystem.js +744 -0
- package/dist/locales/cs/common/userSystem.js.map +1 -0
- package/dist/locales/cs/error/apiDependencyExists.js +13 -0
- package/dist/locales/cs/error/apiDependencyExists.js.map +1 -0
- package/dist/locales/cs/error/apiForbiddenOperation.js +13 -0
- package/dist/locales/cs/error/apiForbiddenOperation.js.map +1 -0
- package/dist/locales/cs/error/apiTimedOut.js +13 -0
- package/dist/locales/cs/error/apiTimedOut.js.map +1 -0
- package/dist/locales/cs/error/apiValidation.js +111 -0
- package/dist/locales/cs/error/apiValidation.js.map +1 -0
- package/dist/locales/cs/error/jsValidation.js +273 -0
- package/dist/locales/cs/error/jsValidation.js.map +1 -0
- package/dist/locales/cs/vuetify.js +1324 -0
- package/dist/locales/cs/vuetify.js.map +1 -0
- package/dist/locales/cs.d.ts +1254 -0
- package/dist/locales/cs.js +73 -0
- package/dist/locales/cs.js.map +1 -0
- package/dist/locales/en/common/alert.js +153 -0
- package/dist/locales/en/common/alert.js.map +1 -0
- package/dist/locales/en/common/anzuUser.js +271 -0
- package/dist/locales/en/common/anzuUser.js.map +1 -0
- package/dist/locales/en/common/assetSelect.js +371 -0
- package/dist/locales/en/common/assetSelect.js.map +1 -0
- package/dist/locales/en/common/button.js +311 -0
- package/dist/locales/en/common/button.js.map +1 -0
- package/dist/locales/en/common/collab.js +267 -0
- package/dist/locales/en/common/collab.js.map +1 -0
- package/dist/locales/en/common/confirmDialog.js +41 -0
- package/dist/locales/en/common/confirmDialog.js.map +1 -0
- package/dist/locales/en/common/customForm.js +109 -0
- package/dist/locales/en/common/customForm.js.map +1 -0
- package/dist/locales/en/common/customFormElement.js +141 -0
- package/dist/locales/en/common/customFormElement.js.map +1 -0
- package/dist/locales/en/common/damImage.js +1345 -0
- package/dist/locales/en/common/damImage.js.map +1 -0
- package/dist/locales/en/common/dayOfWeek.js +79 -0
- package/dist/locales/en/common/dayOfWeek.js.map +1 -0
- package/dist/locales/en/common/filter.js +217 -0
- package/dist/locales/en/common/filter.js.map +1 -0
- package/dist/locales/en/common/job.js +207 -0
- package/dist/locales/en/common/job.js.map +1 -0
- package/dist/locales/en/common/linkDto.js +23 -0
- package/dist/locales/en/common/linkDto.js.map +1 -0
- package/dist/locales/en/common/listItemDto.js +13 -0
- package/dist/locales/en/common/listItemDto.js.map +1 -0
- package/dist/locales/en/common/log.js +255 -0
- package/dist/locales/en/common/log.js.map +1 -0
- package/dist/locales/en/common/model.js +165 -0
- package/dist/locales/en/common/model.js.map +1 -0
- package/dist/locales/en/common/permission.js +85 -0
- package/dist/locales/en/common/permission.js.map +1 -0
- package/dist/locales/en/common/permissionEditor.js +54 -0
- package/dist/locales/en/common/permissionEditor.js.map +1 -0
- package/dist/locales/en/common/permissionGroup.js +101 -0
- package/dist/locales/en/common/permissionGroup.js.map +1 -0
- package/dist/locales/en/common/routeSettings.js +227 -0
- package/dist/locales/en/common/routeSettings.js.map +1 -0
- package/dist/locales/en/common/sortable.js +581 -0
- package/dist/locales/en/common/sortable.js.map +1 -0
- package/dist/locales/en/common/subjectSelect.js +89 -0
- package/dist/locales/en/common/subjectSelect.js.map +1 -0
- package/dist/locales/en/common/system.js +377 -0
- package/dist/locales/en/common/system.js.map +1 -0
- package/dist/locales/en/common/time.js +131 -0
- package/dist/locales/en/common/time.js.map +1 -0
- package/dist/locales/en/common/userSystem.js +684 -0
- package/dist/locales/en/common/userSystem.js.map +1 -0
- package/dist/locales/en/error/apiDependencyExists.js +13 -0
- package/dist/locales/en/error/apiDependencyExists.js.map +1 -0
- package/dist/locales/en/error/apiForbiddenOperation.js +13 -0
- package/dist/locales/en/error/apiForbiddenOperation.js.map +1 -0
- package/dist/locales/en/error/apiTimedOut.js +13 -0
- package/dist/locales/en/error/apiTimedOut.js.map +1 -0
- package/dist/locales/en/error/apiValidation.js +111 -0
- package/dist/locales/en/error/apiValidation.js.map +1 -0
- package/dist/locales/en/error/jsValidation.js +273 -0
- package/dist/locales/en/error/jsValidation.js.map +1 -0
- package/dist/locales/en/vuetify.js +1324 -0
- package/dist/locales/en/vuetify.js.map +1 -0
- package/dist/locales/en.d.ts +1254 -0
- package/dist/locales/en.js +73 -0
- package/dist/locales/en.js.map +1 -0
- package/dist/locales/sk/common/alert.js +153 -0
- package/dist/locales/sk/common/alert.js.map +1 -0
- package/dist/locales/sk/common/anzuUser.js +271 -0
- package/dist/locales/sk/common/anzuUser.js.map +1 -0
- package/dist/locales/sk/common/assetSelect.js +371 -0
- package/dist/locales/sk/common/assetSelect.js.map +1 -0
- package/dist/locales/sk/common/button.js +311 -0
- package/dist/locales/sk/common/button.js.map +1 -0
- package/dist/locales/sk/common/collab.js +267 -0
- package/dist/locales/sk/common/collab.js.map +1 -0
- package/dist/locales/sk/common/confirmDialog.js +41 -0
- package/dist/locales/sk/common/confirmDialog.js.map +1 -0
- package/dist/locales/sk/common/customForm.js +109 -0
- package/dist/locales/sk/common/customForm.js.map +1 -0
- package/dist/locales/sk/common/customFormElement.js +141 -0
- package/dist/locales/sk/common/customFormElement.js.map +1 -0
- package/dist/locales/sk/common/damImage.js +1345 -0
- package/dist/locales/sk/common/damImage.js.map +1 -0
- package/dist/locales/sk/common/dayOfWeek.js +79 -0
- package/dist/locales/sk/common/dayOfWeek.js.map +1 -0
- package/dist/locales/sk/common/filter.js +217 -0
- package/dist/locales/sk/common/filter.js.map +1 -0
- package/dist/locales/sk/common/job.js +207 -0
- package/dist/locales/sk/common/job.js.map +1 -0
- package/dist/locales/sk/common/linkDto.js +23 -0
- package/dist/locales/sk/common/linkDto.js.map +1 -0
- package/dist/locales/sk/common/listItemDto.js +13 -0
- package/dist/locales/sk/common/listItemDto.js.map +1 -0
- package/dist/locales/sk/common/log.js +255 -0
- package/dist/locales/sk/common/log.js.map +1 -0
- package/dist/locales/sk/common/model.js +165 -0
- package/dist/locales/sk/common/model.js.map +1 -0
- package/dist/locales/sk/common/permission.js +85 -0
- package/dist/locales/sk/common/permission.js.map +1 -0
- package/dist/locales/sk/common/permissionEditor.js +74 -0
- package/dist/locales/sk/common/permissionEditor.js.map +1 -0
- package/dist/locales/sk/common/permissionGroup.js +101 -0
- package/dist/locales/sk/common/permissionGroup.js.map +1 -0
- package/dist/locales/sk/common/routeSettings.js +227 -0
- package/dist/locales/sk/common/routeSettings.js.map +1 -0
- package/dist/locales/sk/common/sortable.js +594 -0
- package/dist/locales/sk/common/sortable.js.map +1 -0
- package/dist/locales/sk/common/subjectSelect.js +89 -0
- package/dist/locales/sk/common/subjectSelect.js.map +1 -0
- package/dist/locales/sk/common/system.js +377 -0
- package/dist/locales/sk/common/system.js.map +1 -0
- package/dist/locales/sk/common/time.js +131 -0
- package/dist/locales/sk/common/time.js.map +1 -0
- package/dist/locales/sk/common/userSystem.js +744 -0
- package/dist/locales/sk/common/userSystem.js.map +1 -0
- package/dist/locales/sk/error/apiDependencyExists.js +13 -0
- package/dist/locales/sk/error/apiDependencyExists.js.map +1 -0
- package/dist/locales/sk/error/apiForbiddenOperation.js +13 -0
- package/dist/locales/sk/error/apiForbiddenOperation.js.map +1 -0
- package/dist/locales/sk/error/apiTimedOut.js +13 -0
- package/dist/locales/sk/error/apiTimedOut.js.map +1 -0
- package/dist/locales/sk/error/apiValidation.js +111 -0
- package/dist/locales/sk/error/apiValidation.js.map +1 -0
- package/dist/locales/sk/error/jsValidation.js +273 -0
- package/dist/locales/sk/error/jsValidation.js.map +1 -0
- package/dist/locales/sk/vuetify.js +1324 -0
- package/dist/locales/sk/vuetify.js.map +1 -0
- package/dist/locales/sk.d.ts +1254 -0
- package/dist/locales/sk.js +73 -0
- package/dist/locales/sk.js.map +1 -0
- package/dist/plugins/commonVuetifyConfig.d.ts +234 -0
- package/dist/plugins/commonVuetifyConfig.js +153 -0
- package/dist/plugins/commonVuetifyConfig.js.map +1 -0
- package/dist/plugins/i18n.d.ts +1304 -0
- package/dist/plugins/i18n.js +21 -0
- package/dist/plugins/i18n.js.map +1 -0
- package/dist/plugins/pluginOptions.d.ts +47 -0
- package/dist/plugins/pluginOptions.js +22 -0
- package/dist/plugins/pluginOptions.js.map +1 -0
- package/dist/plugins/webfontloader.d.ts +1 -0
- package/dist/plugins/webfontloader.js +11 -0
- package/dist/plugins/webfontloader.js.map +1 -0
- package/dist/shared/commonConfig.d.ts +14 -0
- package/dist/shared/commonConfig.js +12 -0
- package/dist/shared/commonConfig.js.map +1 -0
- package/dist/shared/error/AnzuApiAxiosError.d.ts +10 -0
- package/dist/shared/error/AnzuApiAxiosError.js +11 -0
- package/dist/shared/error/AnzuApiAxiosError.js.map +1 -0
- package/dist/shared/error/AnzuApiCancelledError.d.ts +18 -0
- package/dist/shared/error/AnzuApiCancelledError.js +12 -0
- package/dist/shared/error/AnzuApiCancelledError.js.map +1 -0
- package/dist/shared/error/AnzuApiDependencyExistsError.d.ts +13 -0
- package/dist/shared/error/AnzuApiDependencyExistsError.js +18 -0
- package/dist/shared/error/AnzuApiDependencyExistsError.js.map +1 -0
- package/dist/shared/error/AnzuApiForbiddenError.d.ts +7 -0
- package/dist/shared/error/AnzuApiForbiddenError.js +13 -0
- package/dist/shared/error/AnzuApiForbiddenError.js.map +1 -0
- package/dist/shared/error/AnzuApiForbiddenOperationError.d.ts +8 -0
- package/dist/shared/error/AnzuApiForbiddenOperationError.js +18 -0
- package/dist/shared/error/AnzuApiForbiddenOperationError.js.map +1 -0
- package/dist/shared/error/AnzuApiResponseCodeError.d.ts +6 -0
- package/dist/shared/error/AnzuApiResponseCodeError.js +13 -0
- package/dist/shared/error/AnzuApiResponseCodeError.js.map +1 -0
- package/dist/shared/error/AnzuApiTimeoutError.d.ts +9 -0
- package/dist/shared/error/AnzuApiTimeoutError.js +12 -0
- package/dist/shared/error/AnzuApiTimeoutError.js.map +1 -0
- package/dist/shared/error/AnzuApiValidationError.d.ts +29 -0
- package/dist/shared/error/AnzuApiValidationError.js +24 -0
- package/dist/shared/error/AnzuApiValidationError.js.map +1 -0
- package/dist/shared/error/AnzuError.d.ts +11 -0
- package/dist/shared/error/AnzuError.js +10 -0
- package/dist/shared/error/AnzuError.js.map +1 -0
- package/dist/shared/error/AnzuFatalError.d.ts +5 -0
- package/dist/shared/error/AnzuFatalError.js +12 -0
- package/dist/shared/error/AnzuFatalError.js.map +1 -0
- package/dist/shared/error/AnzuNewVersionFetchError.d.ts +6 -0
- package/dist/shared/error/AnzuNewVersionFetchError.js +12 -0
- package/dist/shared/error/AnzuNewVersionFetchError.js.map +1 -0
- package/dist/shared/error/AuthUnavailableError.d.ts +8 -0
- package/dist/shared/error/AuthUnavailableError.js +10 -0
- package/dist/shared/error/AuthUnavailableError.js.map +1 -0
- package/dist/shared/error/SessionExpiredError.d.ts +4 -0
- package/dist/shared/error/SessionExpiredError.js +10 -0
- package/dist/shared/error/SessionExpiredError.js.map +1 -0
- package/dist/shared/error/isInCauseChain.d.ts +5 -0
- package/dist/shared/error/isInCauseChain.js +14 -0
- package/dist/shared/error/isInCauseChain.js.map +1 -0
- package/dist/shared/injectionKeys.d.ts +6 -0
- package/dist/shared/injectionKeys.js +6 -0
- package/dist/shared/injectionKeys.js.map +1 -0
- package/dist/shared/statusCodes.d.ts +10 -0
- package/dist/shared/statusCodes.js +11 -0
- package/dist/shared/statusCodes.js.map +1 -0
- package/dist/shared/types/AnzuUser.d.ts +30 -0
- package/dist/shared/types/AnzuUserAndTimeTrackingAware.d.ts +7 -0
- package/dist/shared/types/ChangeEvent.d.ts +3 -0
- package/dist/shared/types/CreatedByAware.d.ts +5 -0
- package/dist/shared/types/CreatedByAware.js +6 -0
- package/dist/shared/types/CreatedByAware.js.map +1 -0
- package/dist/shared/types/OwnerAware.d.ts +5 -0
- package/dist/shared/types/OwnerAware.js +7 -0
- package/dist/shared/types/OwnerAware.js.map +1 -0
- package/dist/shared/types/ResourceNameSystemAware.d.ts +4 -0
- package/dist/shared/types/UserAndTimeTracking.d.ts +23 -0
- package/dist/shared/types/Validation.d.ts +23 -0
- package/dist/shared/types/ValueObject.d.ts +7 -0
- package/dist/shared/types/Vuetify.d.ts +3 -0
- package/dist/shared/types/common.d.ts +28 -0
- package/dist/shared/types/commonAdmin.d.ts +2 -0
- package/dist/shared/types/globalComponents.d.ts +30 -0
- package/dist/shared/types/sortableUtils.d.ts +10 -0
- package/dist/shared/types/utils.d.ts +10 -0
- package/dist/shared/types/utils.js +8 -0
- package/dist/shared/types/utils.js.map +1 -0
- package/dist/shared/utils/array.d.ts +5 -0
- package/dist/shared/utils/array.js +17 -0
- package/dist/shared/utils/array.js.map +1 -0
- package/dist/shared/utils/boolean.d.ts +2 -0
- package/dist/shared/utils/boolean.js +6 -0
- package/dist/shared/utils/boolean.js.map +1 -0
- package/dist/shared/utils/common.d.ts +24 -0
- package/dist/shared/utils/common.js +30 -0
- package/dist/shared/utils/common.js.map +1 -0
- package/dist/shared/utils/datetime.d.ts +37 -0
- package/dist/shared/utils/datetime.js +31 -0
- package/dist/shared/utils/datetime.js.map +1 -0
- package/dist/shared/utils/datetimePickerValue.d.ts +27 -0
- package/dist/shared/utils/datetimePickerValue.js +32 -0
- package/dist/shared/utils/datetimePickerValue.js.map +1 -0
- package/dist/shared/utils/development.d.ts +8 -0
- package/dist/shared/utils/development.js +14 -0
- package/dist/shared/utils/development.js.map +1 -0
- package/dist/shared/utils/enum.d.ts +1 -0
- package/dist/shared/utils/enum.js +8 -0
- package/dist/shared/utils/enum.js.map +1 -0
- package/dist/shared/utils/envConfig.d.ts +9 -0
- package/dist/shared/utils/envConfig.js +30 -0
- package/dist/shared/utils/envConfig.js.map +1 -0
- package/dist/shared/utils/event.d.ts +1 -0
- package/dist/shared/utils/event.js +8 -0
- package/dist/shared/utils/event.js.map +1 -0
- package/dist/shared/utils/file.d.ts +2 -0
- package/dist/shared/utils/file.js +26 -0
- package/dist/shared/utils/file.js.map +1 -0
- package/dist/shared/utils/generator.d.ts +2 -0
- package/dist/shared/utils/generator.js +8 -0
- package/dist/shared/utils/generator.js.map +1 -0
- package/dist/shared/utils/history.d.ts +3 -0
- package/dist/shared/utils/history.js +10 -0
- package/dist/shared/utils/history.js.map +1 -0
- package/dist/shared/utils/json.d.ts +5 -0
- package/dist/shared/utils/json.js +12 -0
- package/dist/shared/utils/json.js.map +1 -0
- package/dist/shared/utils/number.d.ts +1 -0
- package/dist/shared/utils/number.js +6 -0
- package/dist/shared/utils/number.js.map +1 -0
- package/dist/shared/utils/object.d.ts +7 -0
- package/dist/shared/utils/object.js +39 -0
- package/dist/shared/utils/object.js.map +1 -0
- package/dist/shared/utils/string.d.ts +21 -0
- package/dist/shared/utils/string.js +59 -0
- package/dist/shared/utils/string.js.map +1 -0
- package/dist/shared/utils/userAndTimeTracking.d.ts +11 -0
- package/dist/shared/utils/userAndTimeTracking.js +9 -0
- package/dist/shared/utils/userAndTimeTracking.js.map +1 -0
- package/dist/shared/validators/vuelidate/common/useValidateBetween.d.ts +4 -0
- package/dist/shared/validators/vuelidate/common/useValidateBetween.js +14 -0
- package/dist/shared/validators/vuelidate/common/useValidateBetween.js.map +1 -0
- package/dist/shared/validators/vuelidate/common/useValidateCompareDates.d.ts +12 -0
- package/dist/shared/validators/vuelidate/common/useValidateCompareDates.js +34 -0
- package/dist/shared/validators/vuelidate/common/useValidateCompareDates.js.map +1 -0
- package/dist/shared/validators/vuelidate/common/useValidateEmail.d.ts +1 -0
- package/dist/shared/validators/vuelidate/common/useValidateEmail.js +11 -0
- package/dist/shared/validators/vuelidate/common/useValidateEmail.js.map +1 -0
- package/dist/shared/validators/vuelidate/common/useValidateHexColor.d.ts +8 -0
- package/dist/shared/validators/vuelidate/common/useValidateHexColor.js +11 -0
- package/dist/shared/validators/vuelidate/common/useValidateHexColor.js.map +1 -0
- package/dist/shared/validators/vuelidate/common/useValidateMaxLength.d.ts +3 -0
- package/dist/shared/validators/vuelidate/common/useValidateMaxLength.js +14 -0
- package/dist/shared/validators/vuelidate/common/useValidateMaxLength.js.map +1 -0
- package/dist/shared/validators/vuelidate/common/useValidateMaxValue.d.ts +3 -0
- package/dist/shared/validators/vuelidate/common/useValidateMaxValue.js +14 -0
- package/dist/shared/validators/vuelidate/common/useValidateMaxValue.js.map +1 -0
- package/dist/shared/validators/vuelidate/common/useValidateMinLength.d.ts +3 -0
- package/dist/shared/validators/vuelidate/common/useValidateMinLength.js +14 -0
- package/dist/shared/validators/vuelidate/common/useValidateMinLength.js.map +1 -0
- package/dist/shared/validators/vuelidate/common/useValidateMinValue.d.ts +3 -0
- package/dist/shared/validators/vuelidate/common/useValidateMinValue.js +14 -0
- package/dist/shared/validators/vuelidate/common/useValidateMinValue.js.map +1 -0
- package/dist/shared/validators/vuelidate/common/useValidateNumeric.d.ts +1 -0
- package/dist/shared/validators/vuelidate/common/useValidateNumeric.js +11 -0
- package/dist/shared/validators/vuelidate/common/useValidateNumeric.js.map +1 -0
- package/dist/shared/validators/vuelidate/common/useValidateRequired.d.ts +1 -0
- package/dist/shared/validators/vuelidate/common/useValidateRequired.js +11 -0
- package/dist/shared/validators/vuelidate/common/useValidateRequired.js.map +1 -0
- package/dist/shared/validators/vuelidate/common/useValidateRequiredIf.d.ts +1 -0
- package/dist/shared/validators/vuelidate/common/useValidateRequiredIf.js +14 -0
- package/dist/shared/validators/vuelidate/common/useValidateRequiredIf.js.map +1 -0
- package/dist/shared/validators/vuelidate/common/useValidateSlug.d.ts +1 -0
- package/dist/shared/validators/vuelidate/common/useValidateSlug.js +11 -0
- package/dist/shared/validators/vuelidate/common/useValidateSlug.js.map +1 -0
- package/dist/shared/validators/vuelidate/common/useValidateStringArrayItemLength.d.ts +8 -0
- package/dist/shared/validators/vuelidate/common/useValidateStringArrayItemLength.js +23 -0
- package/dist/shared/validators/vuelidate/common/useValidateStringArrayItemLength.js.map +1 -0
- package/dist/shared/validators/vuelidate/common/useValidateUrl.d.ts +1 -0
- package/dist/shared/validators/vuelidate/common/useValidateUrl.js +11 -0
- package/dist/shared/validators/vuelidate/common/useValidateUrl.js.map +1 -0
- package/dist/shared/validators/vuelidate/useValidate.d.ts +41 -0
- package/dist/shared/validators/vuelidate/useValidate.js +37 -0
- package/dist/shared/validators/vuelidate/useValidate.js.map +1 -0
- package/dist/testing/appShell.d.ts +43 -0
- package/dist/testing/appShell.js +57 -0
- package/dist/testing/appShell.js.map +1 -0
- package/dist/testing/closeButtons.d.ts +21 -0
- package/dist/testing/closeButtons.js +60 -0
- package/dist/testing/closeButtons.js.map +1 -0
- package/dist/testing/declaredDependencies.d.ts +26 -0
- package/dist/testing/declaredDependencies.js +109 -0
- package/dist/testing/declaredDependencies.js.map +1 -0
- package/dist/testing/generatedRoutes.d.ts +25 -0
- package/dist/testing/generatedRoutes.js +33 -0
- package/dist/testing/generatedRoutes.js.map +1 -0
- package/dist/testing/index.d.ts +7 -0
- package/dist/testing/routeHistory.d.ts +20 -0
- package/dist/testing/routeHistory.js +57 -0
- package/dist/testing/routeHistory.js.map +1 -0
- package/dist/testing/sortableLists.d.ts +31 -0
- package/dist/testing/sortableLists.js +36 -0
- package/dist/testing/sortableLists.js.map +1 -0
- package/dist/testing/typedRouter.d.ts +18 -0
- package/dist/testing/typedRouter.js +16 -0
- package/dist/testing/typedRouter.js.map +1 -0
- package/dist/testing.d.ts +2 -0
- package/dist/testing.js +8 -0
- package/dist/vendor/@cropper/element/dist/element.esm.raw.js +103 -0
- package/dist/vendor/@cropper/element/dist/element.esm.raw.js.map +1 -0
- package/dist/vendor/@cropper/element-canvas/dist/element-canvas.esm.raw.js +175 -0
- package/dist/vendor/@cropper/element-canvas/dist/element-canvas.esm.raw.js.map +1 -0
- package/dist/vendor/@cropper/element-crosshair/dist/element-crosshair.esm.raw.js +16 -0
- package/dist/vendor/@cropper/element-crosshair/dist/element-crosshair.esm.raw.js.map +1 -0
- package/dist/vendor/@cropper/element-grid/dist/element-grid.esm.raw.js +42 -0
- package/dist/vendor/@cropper/element-grid/dist/element-grid.esm.raw.js.map +1 -0
- package/dist/vendor/@cropper/element-handle/dist/element-handle.esm.raw.js +16 -0
- package/dist/vendor/@cropper/element-handle/dist/element-handle.esm.raw.js.map +1 -0
- package/dist/vendor/@cropper/element-image/dist/element-image.esm.raw.js +349 -0
- package/dist/vendor/@cropper/element-image/dist/element-image.esm.raw.js.map +1 -0
- package/dist/vendor/@cropper/element-selection/dist/element-selection.esm.raw.js +317 -0
- package/dist/vendor/@cropper/element-selection/dist/element-selection.esm.raw.js.map +1 -0
- package/dist/vendor/@cropper/element-shade/dist/element-shade.esm.raw.js +63 -0
- package/dist/vendor/@cropper/element-shade/dist/element-shade.esm.raw.js.map +1 -0
- package/dist/vendor/@cropper/element-viewer/dist/element-viewer.esm.raw.js +110 -0
- package/dist/vendor/@cropper/element-viewer/dist/element-viewer.esm.raw.js.map +1 -0
- package/dist/vendor/@cropper/elements/dist/elements.esm.raw.js +10 -0
- package/dist/vendor/@cropper/utils/dist/utils.esm.raw.js +128 -0
- package/dist/vendor/@cropper/utils/dist/utils.esm.raw.js.map +1 -0
- package/dist/vendor/cropperjs2/dist/cropper.esm.raw.js +65 -0
- package/dist/vendor/cropperjs2/dist/cropper.esm.raw.js.map +1 -0
- package/dist/vendor/rusha/dist/rusha.js +399 -0
- package/dist/vendor/rusha/dist/rusha.js.map +1 -0
- package/dist/vendor/uuid/dist/rng.js +9 -0
- package/dist/vendor/uuid/dist/rng.js.map +1 -0
- package/dist/vendor/uuid/dist/stringify.js +10 -0
- package/dist/vendor/uuid/dist/stringify.js.map +1 -0
- package/dist/vendor/uuid/dist/v1.js +36 -0
- package/dist/vendor/uuid/dist/v1.js.map +1 -0
- package/dist/vendor/uuid/dist/v4.js +21 -0
- package/dist/vendor/uuid/dist/v4.js.map +1 -0
- package/package.json +132 -91
- package/src/eslint/adminConfig.mjs +253 -0
- package/src/eslint/globalComponentNames.d.mts +9 -0
- package/src/eslint/globalComponentNames.mjs +15 -0
- package/src/eslint/oxlint-admin.json +45 -0
- package/src/eslint/oxlint.mjs +28 -0
- package/src/eslint/plugin.d.mts +64 -0
- package/src/eslint/plugin.mjs +205 -338
- package/src/eslint/validRouteName.mjs +126 -0
- package/src/vite/devWatch.mjs +169 -0
- package/src/vite/index.d.mts +39 -0
- package/src/vite/index.mjs +3 -0
- package/src/vite/sentry.mjs +80 -0
- package/src/vite/sourcemaps.mjs +38 -0
- package/dist/AFormRemoteAutocomplete.vue_vue_type_script_setup_true_lang-DAnD88NB.mjs +0 -10084
- package/dist/AFormRemoteAutocomplete.vue_vue_type_script_setup_true_lang-DAnD88NB.mjs.map +0 -1
- package/dist/android-chrome-192x192.png +0 -0
- package/dist/android-chrome-512x512.png +0 -0
- package/dist/apple-touch-icon.png +0 -0
- package/dist/browserconfig.xml +0 -9
- package/dist/common-admin.js.map +0 -1
- package/dist/favicon-16x16.png +0 -0
- package/dist/favicon-32x32.png +0 -0
- package/dist/favicon.ico +0 -0
- package/dist/index-2jGSo7Ju.mjs +0 -22165
- package/dist/index-2jGSo7Ju.mjs.map +0 -1
- package/dist/labs.d.ts +0 -2711
- package/dist/labs.js +0 -3526
- package/dist/labs.js.map +0 -1
- package/dist/mstile-144x144.png +0 -0
- package/dist/mstile-150x150.png +0 -0
- package/dist/mstile-310x150.png +0 -0
- package/dist/mstile-310x310.png +0 -0
- package/dist/mstile-70x70.png +0 -0
- package/dist/safari-pinned-tab.svg +0 -16
- package/dist/site.webmanifest +0 -19
- package/dist/webfontloader-CZqOgyx0.mjs +0 -454
- package/dist/webfontloader-CZqOgyx0.mjs.map +0 -1
package/dist/labs.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"labs.js","sources":["../src/labs/filters/AFilterWrapperSidebar.vue","../src/labs/filters/ADatatableOrdering.vue","../src/labs/filters/ADatatablePagination.vue","../src/labs/api/useApiFetchByIds.ts","../src/labs/api/useApiFetchListBatch.ts","../src/labs/job/jobApi.ts","../src/labs/filters/datatableColumns.ts","../src/labs/subjectSelect/useSubjectSelect.ts","../src/labs/subjectSelect/ASubjectSelect.vue","../src/labs/listEditor/AListEditor.vue","../src/labs/listEditor/composables/useDragInstruction.ts","../src/labs/listEditor/internal/LeNestedRow.vue","../src/labs/listEditor/internal/LeChangeParentDialog.vue","../src/labs/listEditor/ANestedSortableListEditor.vue","../src/labs/unsavedGuard/AUnsavedConfirmDialog.vue","../src/labs/unsavedGuard/useUnsavedChangesGuard.ts","../src/labs/unsavedGuard/useGuardedDelete.ts","../src/labs/listEditor/composables/useListEditor.ts","../src/labs/listEditor/composables/useNestedUnsavedKeys.ts"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { inject, provide, ref } from 'vue'\nimport {\n FilterConfigKey,\n FilterDataKey,\n FilterSelectedKey,\n FilterSubmitResetCounterKey,\n} from '@/labs/filters/filterInjectionKeys'\nimport type { ValueObjectOption } from '@/types/ValueObject'\nimport { isUndefined } from '@/utils/common'\nimport { useFilterClearHelpers } from '@/labs/filters/filterFactory'\n\nwithDefaults(\n defineProps<{\n formName?: string\n }>(),\n {\n formName: 'search',\n },\n)\nconst emit = defineEmits<{\n (e: 'submit'): void\n}>()\n\nconst filterConfig = inject(FilterConfigKey)\nconst filterData = inject(FilterDataKey)\nif (isUndefined(filterConfig) || isUndefined(filterData)) {\n throw new Error('Incorrect provide/inject config.')\n}\n\nprovide(FilterSubmitResetCounterKey, ref(0))\nconst filterSelected = ref<Map<string, ValueObjectOption<string | number>[]>>(new Map())\nprovide(FilterSelectedKey, filterSelected)\n\nconst { clearAll, clearAllFilterSelected } = useFilterClearHelpers()\n\nconst submitFilter = () => {\n emit('submit')\n}\n\n// AFilterWrapperSidebar has no reset button of its own (the consumer renders it, e.g. in the drawer\n// footer). Expose the same reset AFilterWrapper does so that button also clears the filter values and\n// the selected-filter chips.\nconst resetFilter = () => {\n clearAll(filterData, filterConfig)\n clearAllFilterSelected(filterData, filterConfig, filterSelected)\n}\n\ndefineExpose({ resetFilter })\n</script>\n\n<template>\n <VForm\n :name=\"formName\"\n @submit.prevent=\"submitFilter\"\n @keyup.enter=\"submitFilter\"\n >\n <slot />\n </VForm>\n</template>\n","<script lang=\"ts\" setup>\nimport { computed, inject, type Ref, watch } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport {\n type DatatableOrderingOption,\n type DatatableOrderingOptions,\n SORT_BY_SCORE,\n SortOrder,\n} from '@/composables/system/datatableColumns'\nimport { isUndefined } from '@/utils/common'\nimport { DatatablePaginationKey } from '@/labs/filters/filterInjectionKeys'\n\nimport type { Pagination } from '@/labs/filters/pagination'\n\nconst props = withDefaults(\n defineProps<{\n variant?: 'id' | 'createdAt' | 'most-relevant'\n customOptions?: undefined | DatatableOrderingOptions\n paginationUpdateCustomCb?:\n | ((option: DatatableOrderingOption, pagination: Ref<Pagination>) => void)\n | undefined\n }>(),\n {\n variant: 'id',\n customOptions: undefined,\n paginationUpdateCustomCb: undefined,\n },\n)\nconst emit = defineEmits<{\n (e: 'sortByChange', data: DatatableOrderingOption): void\n}>()\n\nconst modelValue = defineModel<number>('modelValue', {\n default: 1,\n required: false,\n})\n\nconst pagination = inject(DatatablePaginationKey)\n\nif (isUndefined(pagination)) {\n throw new Error('Incorrect provide/inject config.')\n}\n\nconst { t } = useI18n()\n\nconst defaultItemsCreatedAt: DatatableOrderingOptions = [\n {\n id: 1,\n titleT: 'common.system.datatable.ordering.mostRecent',\n sortBy: { key: 'createdAt', order: SortOrder.Desc },\n },\n {\n id: 2,\n titleT: 'common.system.datatable.ordering.oldest',\n sortBy: { key: 'createdAt', order: SortOrder.Asc },\n },\n]\n\nconst defaultItemsId: DatatableOrderingOptions = [\n {\n id: 1,\n titleT: 'common.system.datatable.ordering.mostRecent',\n sortBy: { key: 'id', order: SortOrder.Desc },\n },\n {\n id: 2,\n titleT: 'common.system.datatable.ordering.oldest',\n sortBy: { key: 'id', order: SortOrder.Asc },\n },\n]\n\nconst defaultItemsMostRelevant: DatatableOrderingOptions = [\n {\n id: 3,\n titleT: 'common.system.datatable.ordering.mostRelevant',\n sortBy: { key: SORT_BY_SCORE, order: SortOrder.Desc },\n },\n {\n id: 1,\n titleT: 'common.system.datatable.ordering.mostRecent',\n sortBy: { key: 'createdAt', order: SortOrder.Desc },\n },\n {\n id: 2,\n titleT: 'common.system.datatable.ordering.oldest',\n sortBy: { key: 'createdAt', order: SortOrder.Asc },\n },\n]\n\nconst activeTitle = computed(() => {\n const found = options.value.find((item: any) => item.id === modelValue.value)\n if (found) return t(found.titleT)\n return ''\n})\n\nconst options = computed(() => {\n if (props.customOptions) return props.customOptions\n if (props.variant === 'most-relevant') return defaultItemsMostRelevant\n if (props.variant === 'id') return defaultItemsId\n return defaultItemsCreatedAt\n})\n\nconst onItemClick = (item: DatatableOrderingOption) => {\n modelValue.value = item.id\n}\n\nconst paginationUpdateDefault = (found: DatatableOrderingOption) => {\n if (!found.sortBy) {\n pagination.value = {\n ...pagination.value,\n sortBy: null,\n }\n emit('sortByChange', found)\n }\n pagination.value.sortBy = found.sortBy\n emit('sortByChange', found)\n}\n\nwatch(modelValue, (newValue, oldValue) => {\n if (newValue === oldValue) return\n const found = options.value.find((option) => {\n return option.id === newValue\n })\n if (isUndefined(found)) {\n return\n }\n if (isUndefined(props.paginationUpdateCustomCb)) {\n paginationUpdateDefault(found)\n return\n }\n props.paginationUpdateCustomCb(found, pagination)\n})\n\nwatch(\n pagination,\n (newValue, oldValue) => {\n if (\n newValue.sortBy?.key === oldValue?.sortBy?.key &&\n newValue.sortBy?.order === oldValue?.sortBy?.order\n ) {\n return\n }\n const found = options.value.find((option) => {\n return (\n newValue.sortBy?.key === option.sortBy?.key &&\n newValue.sortBy?.order === option.sortBy?.order\n )\n })\n if (isUndefined(found)) {\n return\n }\n modelValue.value = found.id\n },\n { immediate: true },\n)\n</script>\n\n<template>\n <div class=\"d-flex align-center justify-center\">\n <div class=\"text-body-small mr-1\">\n {{ t('common.system.datatable.ordering.title') }}:\n </div>\n <VBtn\n variant=\"text\"\n rounded=\"xl\"\n size=\"small\"\n class=\"text-medium-emphasis\"\n append-icon=\"mdi-chevron-down\"\n >\n {{ activeTitle }}\n <VMenu\n activator=\"parent\"\n location=\"bottom\"\n close-on-content-click\n >\n <VList\n density=\"compact\"\n class=\"pa-0\"\n >\n <VListItem\n v-for=\"item in options\"\n :key=\"item.id\"\n @click=\"onItemClick(item)\"\n >\n <VListItemTitle :class=\"{ 'font-weight-bold': item.id === modelValue }\">\n {{ t(item.titleT) }}\n </VListItemTitle>\n </VListItem>\n </VList>\n </VMenu>\n </VBtn>\n </div>\n</template>\n","<script lang=\"ts\" setup>\nimport { computed, inject, watch } from 'vue'\nimport { isNull, isUndefined } from '@/utils/common'\nimport { useI18n } from 'vue-i18n'\nimport { DatatablePaginationKey } from '@/labs/filters/filterInjectionKeys'\nimport { useThrottleFn } from '@vueuse/core'\nimport { useDatatablePageStore } from '@/composables/system/datatablePageStore'\n\nwithDefaults(\n defineProps<{\n itemsPerPageOptions?: number[]\n hideRecordsPerPage?: boolean\n }>(),\n {\n itemsPerPageOptions: () => [10, 25, 50],\n hideRecordsPerPage: false,\n },\n)\nconst emit = defineEmits<{\n (e: 'change'): void\n}>()\n\nconst pagination = inject(DatatablePaginationKey)\n\nif (isUndefined(pagination)) {\n throw new Error('Incorrect provide/inject config.')\n}\n\nconst { t } = useI18n()\nconst { setStoredPage } = useDatatablePageStore()\n\nconst lastPage = computed(() => {\n return Math.ceil(pagination.value.totalCount / pagination.value.rowsPerPage)\n})\n\nconst displayedFrom = computed(() => {\n return pagination.value.page * pagination.value.rowsPerPage - pagination.value.rowsPerPage + 1\n})\n\nconst displayedTo = computed(() => {\n return (\n pagination.value.page * pagination.value.rowsPerPage -\n pagination.value.rowsPerPage +\n pagination.value.currentViewCount\n )\n})\n\nconst disabledFirstAndPrev = computed(() => {\n return pagination.value.page === 1\n})\n\nconst disabledLast = computed(() => {\n return !isNull(pagination.value.hasNextPage) || pagination.value.page === lastPage.value\n})\n\nconst disabledNext = computed(() => {\n return (\n (isNull(pagination.value.hasNextPage) && pagination.value.page === lastPage.value) ||\n pagination.value.hasNextPage === false\n )\n})\n\nconst computedTotalCountText = computed(() => {\n if (!isNull(pagination.value.hasNextPage)) {\n return pagination.value.hasNextPage ? displayedTo.value + 1 + '+' : displayedTo.value\n }\n return pagination.value.totalCount\n})\n\nwatch(\n () => pagination.value.rowsPerPage,\n (newValue, oldValue) => {\n if (newValue !== oldValue) {\n pagination.value.page = 1\n emit('change')\n }\n },\n)\n\nwatch(\n () => pagination.value.page,\n (newValue, oldValue) => {\n if (newValue !== oldValue) {\n setStoredPage(newValue)\n emit('change')\n }\n },\n)\n\nconst onClickFirst = useThrottleFn(() => {\n pagination.value.page = 1\n}, 300)\n\nconst onClickLast = useThrottleFn(() => {\n pagination.value.page = lastPage.value\n}, 300)\n\nconst onClickPrev = useThrottleFn(() => {\n pagination.value.page = pagination.value.page - 1\n}, 300)\n\nconst onClickNext = useThrottleFn(() => {\n pagination.value.page = pagination.value.page + 1\n}, 300)\n</script>\n\n<template>\n <div class=\"anzu-data-footer\">\n <div\n v-if=\"!hideRecordsPerPage\"\n class=\"anzu-data-footer__page-limit\"\n >\n {{ t('common.system.datatable.itemsPerPage') }}:\n <VBtnToggle\n v-model=\"pagination.rowsPerPage\"\n class=\"ml-2\"\n density=\"compact\"\n mandatory\n data-cy=\"table-size\"\n >\n <VBtn\n v-for=\"item in itemsPerPageOptions\"\n :key=\"item\"\n :color=\"item === pagination.rowsPerPage ? 'secondary' : ''\"\n :value=\"item\"\n density=\"compact\"\n size=\"small\"\n variant=\"text\"\n >\n {{ item }}\n </VBtn>\n </VBtnToggle>\n </div>\n <div class=\"anzu-data-footer__pagination\">\n {{ displayedFrom }} - {{ displayedTo }} {{ t('common.system.datatable.from') }}\n {{ computedTotalCountText }}\n </div>\n <div class=\"anzu-data-footer__icons-before\">\n <VBtn\n :disabled=\"disabledFirstAndPrev\"\n icon=\"mdi-page-first\"\n size=\"small\"\n variant=\"text\"\n @click.stop=\"onClickFirst\"\n />\n <VBtn\n :disabled=\"disabledFirstAndPrev\"\n icon=\"mdi-chevron-left\"\n size=\"small\"\n variant=\"text\"\n @click.stop=\"onClickPrev\"\n />\n </div>\n <div class=\"current-page\">\n <span>{{ pagination.page }}</span>\n </div>\n <div class=\"anzu-data-footer__icons-after\">\n <VBtn\n :disabled=\"disabledNext\"\n icon=\"mdi-chevron-right\"\n size=\"small\"\n variant=\"text\"\n @click.stop=\"onClickNext\"\n />\n <VBtn\n :disabled=\"disabledLast\"\n icon=\"mdi-page-last\"\n size=\"small\"\n variant=\"text\"\n @click.stop=\"onClickLast\"\n />\n </div>\n </div>\n</template>\n\n<style lang=\"scss\">\n.anzu-data-footer {\n margin-top: 10px;\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-end;\n align-items: center;\n font-size: 0.75rem;\n padding: 0 8px;\n\n > div.current-page {\n padding-left: 10px;\n padding-right: 10px;\n user-select: none;\n min-width: 40px;\n display: flex;\n text-align: center;\n align-items: center;\n justify-content: center;\n }\n\n &__page-limit {\n display: flex;\n align-items: center;\n flex: 0 0 0;\n justify-content: flex-end;\n white-space: nowrap;\n margin-right: 14px;\n }\n\n &__pagination {\n display: block;\n text-align: center;\n margin: 0 32px 0 24px;\n }\n}\n</style>\n","import {\n AnzuApiResponseCodeError,\n isAnzuApiResponseCodeError,\n} from '@/model/error/AnzuApiResponseCodeError'\nimport {\n AnzuApiValidationError,\n axiosErrorResponseHasValidationData,\n} from '@/model/error/AnzuApiValidationError'\nimport { replaceUrlParameters, type UrlParams } from '@/services/api/apiHelper'\nimport { isValidHTTPStatus } from '@/utils/response'\nimport axios, { type AxiosRequestConfig } from 'axios'\nimport {\n AnzuApiForbiddenError,\n axiosErrorResponseIsForbidden,\n} from '@/model/error/AnzuApiForbiddenError'\nimport { AnzuFatalError } from '@/model/error/AnzuFatalError'\nimport {\n AnzuApiForbiddenOperationError,\n axiosErrorResponseHasForbiddenOperationData,\n} from '@/model/error/AnzuApiForbiddenOperationError'\nimport { HTTP_STATUS_NO_CONTENT } from '@/composables/statusCodes'\nimport {\n AnzuApiDependencyExistsError,\n axiosErrorResponseHasDependencyExistsData,\n} from '@/model/error/AnzuApiDependencyExistsError'\nimport type { DocId, IntegerId } from '@/types/common'\nimport { AnzuApiTimeoutError, axiosErrorIsTimeout } from '@/model/error/AnzuApiTimeoutError'\nimport { AnzuApiAxiosError } from '@/model/error/AnzuApiAxiosError'\nimport { isDefined, isUndefined } from '@/utils/common'\nimport type { AxiosClientFn } from '@/labs/api/client'\nimport { useApiQueryBuilder } from '@/labs/api/useApiQueryBuilder'\n\nexport type UseApiFetchByIdsParams = {\n client: AxiosClientFn\n system: string\n entity: string\n urlTemplate?: string\n urlParams?: UrlParams\n options?: AxiosRequestConfig\n isSearchApi?: boolean\n field?: string\n silentConsoleError?: boolean\n}\n\nexport type FetchByIdsParams = {\n urlTemplate?: string\n urlParams?: UrlParams\n}\n\n/**\n * @template T Type used for request payload, by default same as Response type\n * @template R Response type override, optional\n */\nconst generateByIdsApiQuery = (\n ids: IntegerId[] | DocId[],\n isSearchApi: boolean,\n field = 'id',\n): string => {\n const { querySetLimit, querySetOffset, querySetOrder, queryBuild, queryAddFilter, queryAdd } =\n useApiQueryBuilder()\n const limit = ids.length // todo add batch fetch\n querySetLimit(limit)\n querySetOffset(1, limit)\n querySetOrder(field, false)\n if (isSearchApi) queryAdd(field, ids.join(','))\n else queryAddFilter('in', field, ids.join(','))\n\n return queryBuild()\n}\n\nexport const useApiFetchByIds = <R>(\n params: UseApiFetchByIdsParams,\n): UseApiFetchByIdsReturnType<R> => {\n const {\n client,\n system,\n entity,\n urlTemplate,\n urlParams,\n options = {},\n isSearchApi = false,\n field = 'id',\n silentConsoleError = false,\n } = params\n\n let abortController: AbortController | null = null\n\n const executeFetch = async (\n ids: DocId[] | IntegerId[],\n fetchParams: FetchByIdsParams = {},\n ): Promise<R> => {\n abortController = new AbortController()\n\n const { urlTemplate: urlTemplateOverride, urlParams: urlParamsOverride } = fetchParams\n\n try {\n const resolvedParams = isDefined(urlParamsOverride) ? urlParamsOverride : urlParams\n const template = isDefined(urlTemplateOverride) ? urlTemplateOverride : urlTemplate\n if (isUndefined(template)) throw new Error('Url template is undefined')\n const url =\n (isUndefined(resolvedParams) ? template : replaceUrlParameters(template, resolvedParams)) +\n generateByIdsApiQuery(ids, isSearchApi, field)\n\n const res = await client().get(url, {\n ...options,\n signal: abortController.signal,\n })\n\n if (!isValidHTTPStatus(res.status)) {\n throw new AnzuApiResponseCodeError(res.status)\n }\n\n if (res.data?.data) {\n return res.data.data as R\n }\n\n if (res.status === HTTP_STATUS_NO_CONTENT) {\n return [] as R\n }\n\n throw new AnzuFatalError()\n } catch (err: any) {\n if (err instanceof DOMException && err.name === 'AbortError') {\n return [] as R\n }\n\n if (isAnzuApiResponseCodeError(err)) {\n throw err\n }\n\n if (axiosErrorResponseIsForbidden(err)) {\n throw new AnzuApiForbiddenError(err, err.config?.url)\n }\n\n if (axiosErrorResponseHasValidationData(err)) {\n throw new AnzuApiValidationError(err, system, entity, err)\n }\n\n if (axiosErrorResponseHasDependencyExistsData(err)) {\n throw new AnzuApiDependencyExistsError(err, system, entity, err)\n }\n\n if (axiosErrorResponseHasForbiddenOperationData(err)) {\n throw new AnzuApiForbiddenOperationError(err, err)\n }\n\n if (axiosErrorIsTimeout(err)) {\n throw new AnzuApiTimeoutError(err)\n }\n\n if (axios.isAxiosError(err)) {\n if (!silentConsoleError)\n console.error('Axios error: ' + urlTemplate, ...(err.cause ? [err.cause] : []))\n throw new AnzuApiAxiosError(err)\n }\n\n if (!silentConsoleError) console.error('AnzuFatalError: ', err)\n throw new AnzuFatalError(err)\n } finally {\n abortController = null\n }\n }\n\n const abortFetch = () => {\n if (abortController) {\n abortController.abort()\n }\n }\n\n return {\n executeFetch,\n abortFetch,\n }\n}\n\nexport type UseApiFetchByIdsReturnType<R> = {\n executeFetch: (ids: DocId[] | IntegerId[], params?: FetchByIdsParams) => Promise<R>\n abortFetch: () => void\n}\n","import {\n AnzuApiResponseCodeError,\n isAnzuApiResponseCodeError,\n} from '@/model/error/AnzuApiResponseCodeError'\nimport {\n AnzuApiValidationError,\n axiosErrorResponseHasValidationData,\n} from '@/model/error/AnzuApiValidationError'\nimport { replaceUrlParameters, type UrlParams } from '@/services/api/apiHelper'\nimport { isDefined, isUndefined } from '@/utils/common'\nimport { isValidHTTPStatus } from '@/utils/response'\nimport axios, { type AxiosRequestConfig } from 'axios'\nimport {\n AnzuApiForbiddenError,\n axiosErrorResponseIsForbidden,\n} from '@/model/error/AnzuApiForbiddenError'\nimport { AnzuFatalError } from '@/model/error/AnzuFatalError'\nimport type { ApiInfiniteResponseList, ApiResponseList } from '@/types/ApiResponse'\nimport { isApiInfiniteResponseList, isApiResponseList } from '@/types/ApiResponse'\nimport {\n AnzuApiForbiddenOperationError,\n axiosErrorResponseHasForbiddenOperationData,\n} from '@/model/error/AnzuApiForbiddenOperationError'\nimport { HTTP_STATUS_NO_CONTENT } from '@/composables/statusCodes'\nimport {\n AnzuApiDependencyExistsError,\n axiosErrorResponseHasDependencyExistsData,\n} from '@/model/error/AnzuApiDependencyExistsError'\nimport { generateListQuery } from '@/labs/api/useApiFetchList'\nimport { AnzuApiTimeoutError, axiosErrorIsTimeout } from '@/model/error/AnzuApiTimeoutError'\nimport { AnzuApiAxiosError } from '@/model/error/AnzuApiAxiosError'\nimport type { FilterConfig, FilterData } from '@/labs/filters/filterFactory'\nimport { ref } from 'vue'\nimport { usePagination } from '@/labs/filters/pagination'\nimport { SortOrder } from '@/composables/system/datatableColumns'\nimport type { AxiosClientFn } from '@/labs/api/client'\n\nexport type UseApiFetchListBatchParams = {\n client: AxiosClientFn\n system: string\n entity: string\n urlTemplate?: string\n urlParams?: UrlParams\n options?: AxiosRequestConfig\n silentConsoleError?: boolean\n}\n\nexport type FetchListBatchParams = {\n urlTemplate?: string\n urlParams?: UrlParams\n sortBy?: string\n sortDesc?: boolean\n batchSize?: number\n forceElastic?: boolean\n}\n\nexport const useApiFetchListBatch = <R>(\n params: UseApiFetchListBatchParams,\n): UseApiFetchListBatchReturnType<R> => {\n const {\n client,\n system,\n entity,\n urlTemplate,\n urlParams,\n options = {},\n silentConsoleError = false,\n } = params\n\n let abortController: AbortController | null = null\n\n const executeFetch = async (\n filterData: FilterData<any>,\n filterConfig: FilterConfig<any>,\n fetchParams: FetchListBatchParams = {},\n ): Promise<R> => {\n abortController = new AbortController()\n\n const {\n urlTemplate: urlTemplateOverride,\n urlParams: urlParamsOverride,\n sortBy = 'id',\n sortDesc = true,\n batchSize = 100,\n forceElastic = false,\n } = fetchParams\n\n try {\n const searchApi = filterConfig.general.elastic || forceElastic ? '/search' : ''\n const resolvedParams = isDefined(urlParamsOverride) ? urlParamsOverride : urlParams\n const template = isDefined(urlTemplateOverride) ? urlTemplateOverride : urlTemplate\n if (isUndefined(template)) throw new Error('Url template is undefined')\n const { pagination } = usePagination(sortBy, sortDesc ? SortOrder.Desc : SortOrder.Asc, {\n rowsPerPage: batchSize,\n })\n const url =\n (isUndefined(resolvedParams) ? template : replaceUrlParameters(template, resolvedParams)) +\n searchApi\n const results = [] as unknown as R\n\n // First page request\n const res = await client().get(\n url + generateListQuery(pagination, filterData, filterConfig),\n {\n ...options,\n signal: abortController.signal,\n },\n )\n\n if (!isValidHTTPStatus(res.status)) {\n throw new AnzuApiResponseCodeError(res.status)\n }\n\n if (res.data) {\n const resData = res.data as unknown as ApiResponseList<R> | ApiInfiniteResponseList<R>\n // @ts-ignore\n results.push(...resData.data)\n\n if (isApiInfiniteResponseList(resData)) {\n pagination.value.hasNextPage = resData.hasNextPage\n\n // Handle pagination for infinite lists\n while (pagination.value.hasNextPage) {\n pagination.value.page++\n const nextPageResponse = await client().get(\n url + generateListQuery(pagination, filterData, filterConfig),\n {\n ...options,\n signal: abortController.signal,\n },\n )\n const nextPageData = nextPageResponse.data\n // @ts-ignore\n results.push(...nextPageData.data)\n pagination.value.hasNextPage = nextPageData.hasNextPage\n }\n } else if (isApiResponseList(resData)) {\n pagination.value.totalCount = resData.totalCount\n\n if (pagination.value.totalCount <= pagination.value.rowsPerPage) {\n return results as R\n }\n\n // Handle pagination for regular lists - fetch all remaining pages in parallel\n const promises: Promise<any>[] = []\n const numPages = Math.ceil(pagination.value.totalCount / pagination.value.rowsPerPage)\n\n for (let i = 1; i < numPages; i++) {\n // Start from 1 since we already fetched page 0\n const pageCopy = { ...pagination.value, page: i + 1 }\n const paginationRef = ref(pageCopy)\n promises.push(\n client().get(url + generateListQuery(paginationRef, filterData, filterConfig), {\n ...options,\n signal: abortController.signal,\n }),\n )\n }\n\n const allResponses = await Promise.all(promises)\n allResponses.forEach((pageResponse) => {\n // @ts-ignore\n results.push(...pageResponse.data.data)\n })\n }\n\n return results as R\n }\n\n if (res.status === HTTP_STATUS_NO_CONTENT) {\n return [] as R\n }\n\n throw new AnzuFatalError()\n } catch (err: any) {\n if (err instanceof DOMException && err.name === 'AbortError') {\n return [] as R\n }\n\n if (isAnzuApiResponseCodeError(err)) {\n throw err\n }\n\n if (axiosErrorResponseIsForbidden(err)) {\n throw new AnzuApiForbiddenError(err, err.config?.url)\n }\n\n if (axiosErrorResponseHasValidationData(err)) {\n throw new AnzuApiValidationError(err, system, entity, err)\n }\n\n if (axiosErrorResponseHasDependencyExistsData(err)) {\n throw new AnzuApiDependencyExistsError(err, system, entity, err)\n }\n\n if (axiosErrorResponseHasForbiddenOperationData(err)) {\n throw new AnzuApiForbiddenOperationError(err, err)\n }\n\n if (axiosErrorIsTimeout(err)) {\n throw new AnzuApiTimeoutError(err)\n }\n\n if (axios.isAxiosError(err)) {\n if (!silentConsoleError)\n console.error('Axios error: ' + urlTemplate, ...(err.cause ? [err.cause] : []))\n throw new AnzuApiAxiosError(err)\n }\n\n if (!silentConsoleError) console.error('AnzuFatalError: ', err)\n throw new AnzuFatalError(err)\n } finally {\n abortController = null\n }\n }\n\n const abortFetch = () => {\n if (abortController) {\n abortController.abort()\n }\n }\n\n return {\n executeFetch,\n abortFetch,\n }\n}\n\nexport type UseApiFetchListBatchReturnType<R> = {\n executeFetch: (\n filterData: FilterData<any>,\n filterConfig: FilterConfig<any>,\n params?: FetchListBatchParams,\n ) => Promise<R>\n abortFetch: () => void\n}\n","import type { AxiosInstance } from 'axios'\nimport type { JobBase } from '@/types/Job'\nimport { apiFetchOne } from '@/services/api/apiFetchOne'\nimport { apiCreateOne } from '@/services/api/apiCreateOne'\nimport { apiDeleteOne } from '@/services/api/apiDeleteOne'\nimport { stringToKebabCase } from '@/utils/string'\nimport { useApiFetchList } from '@/labs/api/useApiFetchList'\n\nconst END_POINT = '/adm/v1/job'\nexport const ENTITY = 'job'\n\nexport function useJobApi<JobType extends JobBase = JobBase>(\n client: () => AxiosInstance,\n system: string,\n) {\n const useFetchJobList = () =>\n useApiFetchList<JobType[]>({ client, system, entity: ENTITY, urlTemplate: END_POINT })\n\n const fetchJob = (id: number) =>\n apiFetchOne<JobType>(client, END_POINT + '/:id', { id }, system, ENTITY)\n\n const createJob = (data: JobType) => {\n const type = stringToKebabCase(data._resourceName)\n .slice(4) // remove \"job-\" prefix\n .replace('-kind-', '-kind/') // replace \"-kind-\" with \"-kind/\" if the needle is found\n\n return apiCreateOne<JobType>(client, data, END_POINT + '/:type', { type }, system, ENTITY)\n }\n\n const deleteJob = (id: number) =>\n apiDeleteOne<JobType>(client, END_POINT + '/:id', { id }, system, ENTITY)\n\n return {\n useFetchJobList,\n fetchJob,\n createJob,\n deleteJob,\n }\n}\n","import {\n type ColumnConfig,\n type ColumnInternalValues,\n DATETIME_AUTO_LABEL_TRACKING,\n type StoredData,\n} from '@/composables/system/datatableColumns'\nimport { computed, onMounted, type Ref, watch } from 'vue'\nimport { i18n } from '@/plugins/i18n'\nimport { isArray, isBoolean, isObject, isString, isUndefined } from '@/utils/common'\n\nconst defaultColumn: ColumnInternalValues = {\n key: '',\n title: undefined,\n sortable: false,\n fixed: false,\n}\n\ninterface DatatableColumnsConfigMoreOptions {\n storeColumnsLocalStorage: string | boolean // false to disable, string to override store key\n disableActions: boolean\n customI18n: any\n showExpand: boolean\n}\n\nconst DatatableColumnsConfigMoreOptionsDefault = {\n storeColumnsLocalStorage: true,\n disableActions: false,\n customI18n: undefined,\n showExpand: false,\n}\n\nexport function createDatatableColumnsConfig(\n config: ColumnConfig[],\n columnsHidden: Ref<Array<string>>,\n system: string,\n subject: string,\n moreOptions: Partial<DatatableColumnsConfigMoreOptions> = {},\n) {\n const options = { ...DatatableColumnsConfigMoreOptionsDefault, ...moreOptions }\n const localI18n = options.customI18n ?? i18n\n const { t } = localI18n.global || localI18n\n\n let storeKey: undefined | string = undefined\n if (isString(options.storeColumnsLocalStorage)) {\n storeKey = options.storeColumnsLocalStorage\n } else if (\n isBoolean(options.storeColumnsLocalStorage) &&\n true === options.storeColumnsLocalStorage\n ) {\n storeKey = 'table_' + system + '_' + subject\n }\n\n const columnsAll = config.map((item) => {\n const obj = { ...defaultColumn, ...item }\n if (!isUndefined(obj.title)) {\n // do not modify\n } else if (isUndefined(obj.title) && DATETIME_AUTO_LABEL_TRACKING.includes(obj.key)) {\n obj.title = t('common.model.tracking.' + obj.key)\n } else if (isUndefined(obj.title) && system && subject) {\n obj.title = t(system + '.' + subject + '.model.' + obj.key)\n } else {\n obj.title = ''\n }\n return obj\n })\n\n const columnsVisible = computed(() => {\n const columns: any = []\n if (options.showExpand) columns.push({ key: 'data-table-expand', sortable: false })\n columnsAll.forEach((column) => {\n if (!columnsHidden.value.includes(column.key)) {\n columns.push(column)\n }\n })\n if (!options.disableActions) columns.push({ key: 'actions', sortable: false, fixed: 'end' })\n return columns\n })\n\n const loadStoredColumns = () => {\n if (!storeKey || !localStorage) return\n const stored = localStorage.getItem(storeKey)\n if (!stored) return\n const storedData = JSON.parse(stored) as StoredData\n if (!isObject(storedData)) return\n if (!isArray(storedData.hidden)) return\n columnsHidden.value = storedData.hidden as string[]\n }\n\n const storeColumns = (columns: string[]) => {\n if (!storeKey || !localStorage) return\n localStorage.setItem(storeKey, JSON.stringify({ hidden: columns }))\n }\n\n onMounted(() => {\n loadStoredColumns()\n })\n\n watch(columnsHidden, (newValue) => {\n storeColumns(newValue)\n })\n\n return {\n columnsAll,\n columnsVisible,\n columnsHidden,\n }\n}\n","import {\n type DatatableOrderingOption,\n type DatatableSortBy,\n} from '@/composables/system/datatableColumns'\nimport type { Ref } from 'vue'\nimport { ref } from 'vue'\nimport { useAlerts } from '@/composables/system/alerts'\nimport { type FilterConfig, type FilterData, useFilterHelpers } from '@/labs/filters/filterFactory'\nimport { createDatatableColumnsConfig } from '@/labs/filters/datatableColumns'\nimport { type Pagination, usePagination } from '@/labs/filters/pagination'\nimport type { FetchListParams } from '@/labs/api/useApiFetchList'\nimport { useDebounceFn } from '@vueuse/core'\nimport { isNull } from '@/utils/common'\n\nexport function useSubjectSelect<TItem>(\n datatableConfig: any,\n datatableHiddenColumns: any,\n system: string,\n subject: string,\n executeFetch: (\n pagination: Ref<Pagination>,\n filterData: FilterData<any>,\n filterConfig: FilterConfig<any>,\n params?: FetchListParams,\n ) => Promise<TItem[]>,\n filterData: FilterData<any>,\n filterConfig: FilterConfig<any>,\n filterSortBy: DatatableSortBy | null = null,\n fetchParams: FetchListParams | undefined = undefined,\n enableActions: boolean = false,\n) {\n const filterTouched: Ref<boolean> = ref(false)\n const items: Ref<Array<TItem>> = ref([])\n const selected: Ref<Array<TItem>> = ref([])\n const loading = ref(false)\n const { pagination, setSortBy, incrementPage } = usePagination(\n isNull(filterSortBy) ? null : filterSortBy.key,\n filterSortBy?.order,\n )\n\n const { resetFilter, submitFilter } = useFilterHelpers(filterData, filterConfig, {\n storeFiltersLocalStorage: false,\n populateUrlParams: false,\n })\n const { showErrorsDefault } = useAlerts()\n\n const { columnsVisible, columnsAll, columnsHidden } = createDatatableColumnsConfig(\n datatableConfig,\n datatableHiddenColumns,\n system,\n subject,\n { storeColumnsLocalStorage: false, disableActions: !enableActions },\n )\n\n const onOpen = () => {\n resetState()\n getListDebounced()\n }\n\n const sortByChange = (option: DatatableOrderingOption) => {\n setSortBy(option.sortBy)\n getListDebounced()\n }\n\n const onFetchNextPage = async () => {\n loading.value = true\n incrementPage()\n try {\n const res = (await executeFetch(pagination, filterData, filterConfig, fetchParams)) as TItem[]\n items.value.push(...res)\n } catch (e) {\n showErrorsDefault(e)\n } finally {\n loading.value = false\n }\n }\n\n const resetState = () => {\n items.value = []\n selected.value = []\n }\n\n const getList = async () => {\n loading.value = true\n try {\n items.value = (await executeFetch(\n pagination,\n filterData,\n filterConfig,\n fetchParams,\n )) as TItem[]\n } catch (e) {\n showErrorsDefault(e)\n } finally {\n loading.value = false\n }\n }\n\n const getListDebounced = useDebounceFn(async () => {\n await getList()\n })\n\n const onRowClick = (event: Event) => {\n const eventTarget = event.target as HTMLElement | null\n if (\n !eventTarget ||\n (eventTarget.tagName === 'INPUT' && (eventTarget as HTMLInputElement).type === 'checkbox')\n ) {\n return\n }\n const parent = eventTarget.closest('.v-data-table__tr')\n if (!parent || !parent.classList.contains('v-data-table__tr')) return\n const firstTd = parent.firstElementChild\n if (!firstTd || !firstTd.classList.contains('v-data-table__td')) return\n const input = firstTd.querySelector('input')\n if (!input) return\n input.click()\n }\n\n return {\n items,\n selected,\n pagination,\n columnsVisible,\n columnsHidden,\n columnsAll,\n filterTouched,\n loading,\n onRowClick,\n onFetchNextPage,\n onOpen,\n sortByChange,\n getList: getListDebounced,\n resetFilter: () => resetFilter(pagination, getListDebounced),\n submitFilter: () => submitFilter(pagination, getListDebounced),\n }\n}\n","<script lang=\"ts\" setup generic=\"TItem\">\nimport { computed, onMounted, provide, ref, toRaw, withModifiers } from 'vue'\nimport { isNull, isUndefined } from '@/utils/common'\nimport ADialogToolbar from '@/components/ADialogToolbar.vue'\nimport { useI18n } from 'vue-i18n'\nimport { useDisplay } from 'vuetify'\nimport type { Pagination } from '@/labs/filters/pagination'\nimport ADatatablePagination from '@/labs/filters/ADatatablePagination.vue'\nimport { SubjectSelectCloseSidebarKey } from '@/labs/filters/filterInjectionKeys'\n\nconst props = withDefaults(\n defineProps<{\n selectedItems: Array<TItem>\n pagination: Pagination\n loading?: boolean\n minCount?: number\n maxCount?: number\n modelValue?: boolean | undefined // dialog\n dialogTitleT?: string\n paginationMode?: 'standard' | 'more'\n autoOpen?: boolean\n }>(),\n {\n loading: false,\n minCount: 1,\n maxCount: 1,\n modelValue: undefined,\n dialogTitleT: 'common.subjectSelect.texts.title',\n paginationMode: 'standard',\n autoOpen: false,\n },\n)\nconst emit = defineEmits<{\n (e: 'update:modelValue', data: boolean): void\n (e: 'update:pagination', data: Pagination): void\n (e: 'onOpen'): void\n (e: 'onPageChange'): void\n (e: 'onConfirm', data: Array<TItem>): void\n (e: 'onFetchNextPage'): void\n}>()\n\nconst dialogLocal = ref(false)\nconst dialog = computed({\n get() {\n if (isUndefined(props.modelValue)) return dialogLocal.value\n return props.modelValue\n },\n set(newValue: boolean) {\n dialogLocal.value = newValue\n emit('update:modelValue', newValue)\n },\n})\n\nconst paginationComputed = computed({\n get: () => props.pagination,\n set: (newValue) => {\n emit('update:pagination', { ...toRaw(newValue) })\n },\n})\n\nconst { mdAndDown } = useDisplay()\nconst sidebarLeft = ref(!mdAndDown.value)\n\nconst closeSidebarOnMobile = () => {\n if (mdAndDown.value) sidebarLeft.value = false\n}\n\nprovide(SubjectSelectCloseSidebarKey, closeSidebarOnMobile)\n\nconst { t } = useI18n()\n\nconst selectedItemsCount = computed(() => {\n return props.selectedItems.length\n})\n\nconst disabledSubmit = computed(() => {\n return selectedItemsCount.value < props.minCount || selectedItemsCount.value > props.maxCount\n})\n\nconst onOpen = () => {\n emit('onOpen')\n sidebarLeft.value = !mdAndDown.value\n dialog.value = true\n}\n\nconst toggleSidebar = () => {\n sidebarLeft.value = !sidebarLeft.value\n}\n\nconst onClose = () => {\n dialog.value = false\n}\n\nconst onConfirm = () => {\n emit(\n 'onConfirm',\n props.selectedItems.map((item) => toRaw(item)),\n )\n onClose()\n}\n\nconst fetchNextPage = () => {\n emit('onFetchNextPage')\n}\n\nconst onPageChange = () => {\n emit('onPageChange')\n}\n\nconst lastPage = computed(() => {\n return Math.ceil(paginationComputed.value.totalCount / paginationComputed.value.rowsPerPage)\n})\n\nconst hasNextPage = computed(() => {\n return !(\n (isNull(paginationComputed.value.hasNextPage) &&\n paginationComputed.value.page === lastPage.value) ||\n paginationComputed.value.hasNextPage === false\n )\n})\n\nconst autoloadOnIntersect = (isIntersecting: boolean) => {\n if (isIntersecting && hasNextPage.value && !props.loading) {\n fetchNextPage()\n }\n}\n\nonMounted(() => {\n if (props.autoOpen) {\n onOpen()\n }\n})\n\ndefineExpose({\n open: onOpen,\n closeSidebarOnMobile,\n})\n</script>\n\n<template>\n <slot\n name=\"activator\"\n :props=\"{ onClick: withModifiers(() => onOpen(), ['stop']) }\"\n />\n <VDialog\n v-bind=\"$attrs\"\n :model-value=\"dialog\"\n fullscreen\n class=\"subject-select\"\n @update:model-value=\"emit('update:modelValue', $event)\"\n >\n <VCard\n v-if=\"dialog\"\n class=\"subject-select__card\"\n >\n <ADialogToolbar\n class=\"subject-select__toolbar system-border-b\"\n @on-cancel=\"onClose\"\n >\n <slot name=\"title\">\n {{ t(dialogTitleT) }}\n </slot>\n </ADialogToolbar>\n <VToolbar\n density=\"compact\"\n color=\"transparent\"\n :height=\"46\"\n elevation=\"0\"\n class=\"system-border-b subject-select__second-bar\"\n >\n <slot name=\"second-bar\">\n <div class=\"d-flex flex-column w-100 px-1 align-center\">\n <div class=\"d-flex justify-space-between w-100 align-center\">\n <div class=\"d-flex align-center\">\n <VBtn\n icon\n :width=\"30\"\n :height=\"30\"\n @click=\"toggleSidebar\"\n >\n <VIcon\n icon=\"mdi-tune\"\n :size=\"16\"\n />\n <VTooltip\n activator=\"parent\"\n location=\"bottom\"\n >\n {{ t('common.subjectSelect.filter.toggle') }}\n </VTooltip>\n </VBtn>\n <slot name=\"second-bar-left\" />\n </div>\n <div class=\"d-flex align-center\">\n <slot name=\"second-bar-right\" />\n </div>\n </div>\n </div>\n </slot>\n </VToolbar>\n <div\n class=\"subject-select__main\"\n :class=\"{ 'subject-select__main--sidebar-active': sidebarLeft }\"\n >\n <div class=\"subject-select__sidebar system-border-r\">\n <div class=\"subject-select-filter\">\n <slot name=\"filter\" />\n </div>\n </div>\n <div class=\"subject-select__content\">\n <slot name=\"content\" />\n <div\n v-if=\"paginationMode === 'more'\"\n class=\"d-flex w-100 align-center justify-center pa-4\"\n >\n <ABtnSecondary\n v-show=\"hasNextPage || loading\"\n v-intersect.quiet=\"autoloadOnIntersect\"\n :loading=\"loading\"\n size=\"small\"\n @click=\"fetchNextPage\"\n >\n <slot name=\"button-confirm-title\">\n {{ t('common.button.loadMore') }}\n </slot>\n </ABtnSecondary>\n </div>\n <ADatatablePagination\n v-else\n v-model=\"paginationComputed\"\n @change=\"onPageChange\"\n />\n </div>\n </div>\n <div class=\"subject-select__actions system-border-t\">\n <div v-if=\"minCount === maxCount\">\n {{\n t('common.subjectSelect.texts.pickExactCount', {\n count: minCount,\n selected: selectedItemsCount,\n })\n }}\n </div>\n <div v-else>\n {{\n t('common.subjectSelect.texts.pickRangeCount', {\n minCount: minCount,\n maxCount: maxCount,\n selected: selectedItemsCount,\n })\n }}\n </div>\n <VSpacer />\n <ABtnPrimary\n :disabled=\"disabledSubmit\"\n @click.stop=\"onConfirm\"\n >\n <slot name=\"button-confirm-title\">\n {{ t('common.button.confirm') }}\n </slot>\n </ABtnPrimary>\n </div>\n </VCard>\n </VDialog>\n</template>\n","<script setup lang=\"ts\" generic=\"TItem extends Record<string, any>\">\nimport { computed, ref, useSlots, useTemplateRef, watch } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport { useDisplay } from 'vuetify'\nimport { useKeyboardNav } from '@/labs/listEditor/composables/useKeyboardNav'\nimport {\n useListEditorController,\n type GetKey,\n type ListEditorHandle,\n type ListEditorValidationResult,\n type PositionAction,\n type PositionOption,\n type PositionStrategy,\n} from '@/labs/listEditor/composables/useListEditorController'\nimport {\n provideListEditorStateScope,\n useListEditorStateEntry,\n type ListEditorStateBindings,\n} from '@/labs/listEditor/composables/useListEditorStateScope'\nimport { resolveCompactText as resolveCompactTextUtil } from '@/labs/listEditor/composables/resolveCompactText'\nimport { useUnsavedSection } from '@/labs/unsavedGuard/useUnsavedSection'\nimport { useDeleteDialog } from '@/labs/listEditor/composables/useDeleteDialog'\nimport { useInlineEditing } from '@/labs/listEditor/composables/useInlineEditing'\nimport { validateAllAndReveal } from '@/labs/listEditor/utils/revealInvalidRows'\nimport { useListEditorScopeValidity } from '@/labs/listEditor/composables/useListEditorScopeValidity'\nimport LeDeleteDialog from '@/labs/listEditor/internal/LeDeleteDialog.vue'\nimport LeEmptyState from '@/labs/listEditor/internal/LeEmptyState.vue'\nimport LeUnsavedLabel from '@/labs/listEditor/internal/LeUnsavedLabel.vue'\nimport type {\n ListEditorKey,\n ListEditorValidationScope,\n ListEditorValidationState,\n ListViewItem,\n} from '@/labs/listEditor/types/listEditorTypes'\n\nexport interface DecoratedViewItem<T> extends ListViewItem<T> {\n editing: boolean\n expanded: boolean\n loading: boolean\n dirty: boolean\n unsaved: boolean\n validationState: ListEditorValidationState\n}\n\n// Hoisted for vite-plugin-dts d.ts rollup.\nexport interface RowActions<TItem> {\n edit: () => void\n save: () => Promise<void> | void\n cancel: () => void\n close: () => void\n delete: () => Promise<void>\n addAfter: () => void\n toggleExpand: () => void\n update: (next: TItem | Partial<TItem> | ((current: TItem) => TItem)) => void\n}\nexport interface RowSlotProps<TItem extends Record<string, any>> {\n item: DecoratedViewItem<TItem>\n raw: TItem\n index: number\n key: ListEditorKey\n readonly: boolean\n disabled: boolean\n expanded: boolean\n editing: boolean\n dirty: boolean\n /** Aliases `dirty` here (no reorder mode → no `moved` to OR). Same field name as on sortable/nested variants. */\n unsaved: boolean\n touch: boolean\n /**\n * Row-scoped `state-key` prefix. Thread it down to any list editor rendered in this slot and set\n * its `:state-key=\"`${stateKeyPrefix}:someList`\"` — that editor's controller then lives in THIS\n * editor's scope and survives the row collapsing (which unmounts the whole slot subtree). Entries\n * under this prefix are disposed when the row is removed.\n */\n stateKeyPrefix: string\n actions: RowActions<TItem>\n}\nexport interface EmptySlotProps {\n readonly: boolean\n disabled: boolean\n actions: { add: () => void }\n}\nexport interface AddButtonSlotProps {\n readonly: boolean\n disabled: boolean\n props: { onClick: () => void }\n actions: { add: () => void }\n}\nexport interface HeaderSlotProps {\n title: string | null\n}\n\nexport interface Props<TItem extends Record<string, any>> {\n /**\n * New-row factory. Add / \"add after\" insert `factory()` through the controller\n * (positions renumbered) — no consumer `@add` push handler is needed.\n */\n factory?: () => TItem\n /**\n * Stable row identity. Default `'id'`; never the position field. Typed `string`\n * not `keyof TItem` because the latter compiles to a Boolean-only runtime prop\n * type that silently coerces `get-key=\"id\"` to `true`.\n */\n getKey?: string | ((item: TItem) => ListEditorKey)\n /**\n * Managed order field. Default `'position'`; `false` opts out. `string` must be\n * listed before `false` (and not be `keyof TItem`): otherwise Vue's runtime\n * type goes Boolean-first and coerces `position=\"position\"` to `true`.\n */\n position?:\n | string\n | false\n | {\n field: string\n multiplier?: number\n strategy?: PositionStrategy\n strategyOverrides?: Partial<Record<PositionAction, PositionStrategy>>\n }\n /**\n * Extra fields to drop from the dirty content-hash (position is always dropped).\n * Use when a SEPARATE nested editor already tracks a child collection, so editing\n * a child doesn't flip the parent row amber. Still saved; only the diff ignores it.\n */\n dirtyExclude?: string[]\n /** Per-row validity — `true` (or `{ valid: true }`) = VALID. Drives the red rail + save guard. */\n validate?: (item: TItem) => ListEditorValidationResult\n /**\n * Vuelidate `$scope` (the same one the consumer's row forms / save-gate collector use). When set,\n * the editor registers its aggregate validity under it, so a plain `v$.$invalid` save gate blocks\n * AND reveals a collapsed invalid row — no `validateAll()` call needed in the save flow. Omit to\n * keep legacy behavior (gate the save on the exposed `validateAll()` yourself); `false` opts out.\n */\n validationScope?: ListEditorValidationScope | false\n /**\n * Opt-in lifted controller from `useListEditorController()` — pass it so editor\n * state survives this component's unmount/remount. Omitted: the editor owns one\n * internally. Either way the `ListEditorHandle` is reachable via `useTemplateRef`.\n */\n editor?: ListEditorHandle<TItem>\n /**\n * Persist this editor's controller in the nearest ANCESTOR editor's row-state scope under this\n * key, instead of owning it. Use it for an editor rendered in another editor's `#item` slot: that\n * slot is behind a `v-if`, so collapsing the row unmounts this editor and a component-owned\n * controller would re-baseline the already-edited data on re-expand (losing amber, tombstones and\n * the red rail). Derive the key from the row slot's `stateKeyPrefix`, e.g.\n * `:state-key=\"`${stateKeyPrefix}:adverts`\"`. Options stay declared here, on this tag: the\n * controller is built from THIS editor's `factory`/`get-key`/`position`/`dirty-exclude`/`validate`\n * and rebound to each new instance's model on remount. Ignored when `:editor` is passed, and a\n * no-op without an ancestor scope.\n */\n stateKey?: string\n\n readonly?: boolean\n disabled?: boolean\n loading?: boolean\n error?: string | null\n\n title?: string | null\n\n compactField?: string | null\n statusField?: string | null\n twoRows?: 'never' | 'mobile' | 'always'\n chips?: boolean\n\n showAddButton?: boolean\n showDeleteButton?: boolean\n showEditButton?: boolean\n showAddAfterAction?: boolean\n\n addLabel?: string | null\n emptyTitle?: string | null\n\n disableRowClick?: boolean\n disableDeleteConfirm?: boolean\n /** Disable unsaved-state tracking — no dirty markers, never reads as unsaved. */\n disableUnsaved?: boolean\n deleteConfirmTitle?: string | null\n deleteConfirmText?: string | null\n /**\n * How a row delete persists. `deferred` (default): the row disappears but the deletion counts as an\n * unconfirmed change (`unsavedCount`) until save, and is revertible until then. `immediate`: the\n * consumer deletes on the backend (`:on-delete`) — the dialog states it is irreversible and the\n * delete does NOT read as unsaved.\n */\n deleteMode?: 'immediate' | 'deferred'\n\n closeVariant?: 'auto' | 'icon' | 'labeled'\n\n /**\n * Render every `#item` slot expanded — no edit pencil, inline footer, or row-click\n * toggle. Use when all forms should be visible at once (e.g. ThirdPartyTracker).\n */\n defaultExpanded?: boolean\n\n loadingKeys?: Set<ListEditorKey> | null\n\n onDeleteConfirm?: (item: TItem) => Promise<boolean> | boolean\n onDelete?: (item: TItem) => Promise<void> | void\n onItemSave?: (item: TItem) => Promise<void> | void\n\n /**\n * Registers this editor as a named unsaved-changes section under this (already\n * translated) label — replaces a per-consumer `useUnsavedSection` call.\n */\n unsavedSectionLabel?: string\n}\n\nconst props = withDefaults(defineProps<Props<TItem>>(), {\n factory: undefined,\n getKey: undefined,\n position: undefined,\n dirtyExclude: undefined,\n validate: undefined,\n validationScope: undefined,\n editor: undefined,\n stateKey: undefined,\n readonly: false,\n disabled: false,\n loading: false,\n error: null,\n title: null,\n compactField: null,\n statusField: null,\n twoRows: 'never',\n chips: false,\n showAddButton: true,\n showDeleteButton: true,\n showEditButton: true,\n showAddAfterAction: false,\n addLabel: null,\n emptyTitle: null,\n disableRowClick: false,\n disableDeleteConfirm: false,\n disableUnsaved: false,\n deleteConfirmTitle: null,\n deleteConfirmText: null,\n deleteMode: 'deferred',\n closeVariant: 'auto',\n defaultExpanded: false,\n loadingKeys: null,\n onDeleteConfirm: undefined,\n onDelete: undefined,\n onItemSave: undefined,\n unsavedSectionLabel: undefined,\n})\n\nconst emit = defineEmits<{\n edit: [item: ListViewItem<TItem>]\n deleted: [item: ListViewItem<TItem>]\n close: [item: ListViewItem<TItem>]\n 'item-saved': [item: ListViewItem<TItem>]\n 'item-expand': [item: ListViewItem<TItem>, expanded: boolean]\n}>()\n\ndefineSlots<{\n header?: (props: HeaderSlotProps) => unknown\n empty?: (props: EmptySlotProps) => unknown\n 'add-button'?: (props: AddButtonSlotProps) => unknown\n item?: (props: RowSlotProps<TItem>) => unknown\n 'item-compact'?: (props: RowSlotProps<TItem>) => unknown\n 'item-readonly'?: (props: RowSlotProps<TItem>) => unknown\n 'item-status'?: (props: RowSlotProps<TItem>) => unknown\n 'item-actions'?: (props: RowSlotProps<TItem>) => unknown\n 'item-footer'?: (props: RowSlotProps<TItem>) => unknown\n 'before-item'?: (props: RowSlotProps<TItem>) => unknown\n 'after-item'?: (props: RowSlotProps<TItem>) => unknown\n}>()\n\nconst modelValue = defineModel<TItem[]>({ required: true })\n\nconst { t } = useI18n()\nconst slots = useSlots()\nconst display = useDisplay()\n\nconst rootEl = useTemplateRef<HTMLElement>('rootEl')\n\nconst isTouch = computed<boolean>(() => display.platform.value.touch)\n\n// State controller (v2). `factory`/`getKey`/`position`/`validate` are construction-time options read\n// once to seed it (undefined → controller defaults 'id'/'position'/always-valid), not reactive props\n// — so the reactivity-loss rule is intentionally suppressed here.\n/* eslint-disable vue/no-setup-props-reactivity-loss */\nconst controllerOptions: ListEditorStateBindings<TItem> = {\n get: () => modelValue.value,\n set: (v) => (modelValue.value = v),\n factory: props.factory,\n getKey: props.getKey as GetKey<TItem> | undefined,\n position: props.position as PositionOption<TItem> | undefined,\n dirtyExclude: () => props.dirtyExclude ?? [],\n validate: props.validate,\n}\n// Precedence: an explicitly lifted `:editor` wins; then a `state-key`'d entry persisted in the\n// nearest ancestor editor's row-state scope (built from the options above, rebound to this instance\n// on every remount); else this component owns the controller — today's behaviour, unchanged.\nconst stateEntry = props.editor\n ? null\n : useListEditorStateEntry<TItem>(props.stateKey, controllerOptions)\nconst controller =\n props.editor ?? stateEntry?.handle ?? useListEditorController<TItem>(controllerOptions)\n\n// Mirror the controller's key resolution so rendered rows key the way it tracks them.\nconst getKeyOpt = props.getKey ?? 'id'\n/* eslint-enable vue/no-setup-props-reactivity-loss */\n\n// Row-state scope for THIS editor's `#item` slot subtree: a nested editor with a `state-key` builds\n// its controller in here, so it outlives the row collapsing (which unmounts the slot). When this\n// editor is itself persisted, the scope comes from its own entry — so the chain holds at any depth.\nconst rowStateScope = provideListEditorStateScope(stateEntry?.childScope ?? null)\nconst keyOf = (item: TItem): ListEditorKey =>\n typeof getKeyOpt === 'function'\n ? getKeyOpt(item)\n : (item[getKeyOpt as keyof TItem] as ListEditorKey)\n\nconst keyFieldName = computed<string>(() =>\n typeof getKeyOpt === 'function' ? '(fn)' : (getKeyOpt as string),\n)\n\n// Managed position field name, mirroring the controller's resolution.\nconst positionFieldName = computed<string>(() => {\n const p = props.position\n if (p === undefined) return 'position'\n if (p === false) return 'position'\n if (typeof p === 'object') return p.field as string\n return p as string\n})\n\n// Render projection only — the controller owns the data (key + index + raw + position).\nconst viewItems = computed<ListViewItem<TItem>[]>(() =>\n modelValue.value.map((raw, index) => ({\n key: keyOf(raw),\n index,\n raw,\n position: raw[positionFieldName.value] as number | undefined,\n })),\n)\n\n// Surfaces row-key wiring bugs loudly: undefined or duplicate keys silently break\n// dirty tracking, validity rails and reorder targeting and are hard to trace from\n// symptoms. Deduped per signature so a stable bad state warns once, a new one again.\nconst warnedKeySignatures = new Set<string>()\nconst warnOnBadKeys = (items: ListViewItem<TItem>[]): void => {\n const seen = new Set<ListEditorKey>()\n const duplicates = new Set<string>()\n let missing = 0\n for (const vi of items) {\n if (vi.key === undefined || vi.key === null) {\n missing++\n continue\n }\n if (seen.has(vi.key)) duplicates.add(String(vi.key))\n seen.add(vi.key)\n }\n if (missing === 0 && duplicates.size === 0) return\n const signature = `${missing}|${[...duplicates].sort().join(',')}`\n if (warnedKeySignatures.has(signature)) return\n warnedKeySignatures.add(signature)\n if (missing > 0) {\n console.warn(\n `[list-editor] ${missing} row(s) resolve to an undefined key (key-field \"${keyFieldName.value}\"). ` +\n 'Point get-key at a field every item has, or give new items unique temp ids ' +\n '(see nextListEditorTempId).',\n )\n }\n if (duplicates.size > 0) {\n console.warn(\n `[list-editor] duplicate row keys (key-field \"${keyFieldName.value}\"): ${[...duplicates].join(', ')}. ` +\n 'Row keys must be unique — dirty tracking and validation rails target rows by key.',\n )\n }\n}\nwatch(viewItems, (items) => warnOnBadKeys(items), { immediate: true })\n\n// Drop the persisted controllers of rows that no longer exist. `post` so the removed row's subtree\n// has already unmounted (its editors released their entries) before we stop their effect scopes.\nwatch(\n () => viewItems.value.map((vi) => String(vi.key)).join('|'),\n () => rowStateScope.retainOwners(viewItems.value.map((vi) => vi.key)),\n { flush: 'post' },\n)\n\nconst expandedKeys = ref<Set<ListEditorKey>>(new Set())\n\nconst rowsContainer = useTemplateRef<HTMLElement>('rowsContainer')\n\nconst isInlineEdit = computed(() => !props.chips && !!slots.item)\nconst hasReadonlyDetail = computed(() => !props.chips && !!slots['item-readonly'])\n\nconst {\n editingKeys,\n editingSnapshots,\n beginEdit,\n cancelEdit,\n commitEdit,\n closeEdit,\n requestAutoOpen,\n} = useInlineEditing<TItem, ListViewItem<TItem>>({\n rowsContainer,\n rowSelector: '.a-le-row',\n isInlineEdit,\n restoreSnapshot: (key, data) => controller.updateItem(key, data),\n watchKeys: () => modelValue.value.map((it) => keyOf(it)),\n findEntry: (key) => {\n const hit = modelValue.value.find((it) => keyOf(it) === key)\n return hit ? { data: hit } : null\n },\n afterAutoOpen: (key) => {\n expandedKeys.value.delete(key)\n },\n})\n\nconst addLabelResolved = computed(() =>\n props.addLabel ? t(props.addLabel) : t('common.sortable.add'),\n)\nconst emptyTitleResolved = computed(() => props.emptyTitle ?? t('common.sortable.emptyTitle'))\nconst deleteConfirmTitleResolved = computed(\n () => props.deleteConfirmTitle ?? t('common.sortable.deleteConfirmTitle'),\n)\nconst deleteConfirmTextResolved = computed(\n () =>\n props.deleteConfirmText ??\n (props.deleteMode === 'immediate'\n ? t('common.sortable.deleteConfirmText')\n : t('common.sortable.deleteConfirmTextDeferred')),\n)\n\nconst canInteract = computed(() => !props.readonly && !props.disabled && !props.loading)\nconst canAdd = computed(() => canInteract.value && props.showAddButton)\n\n// Total unconfirmed-change count (added/edited/moved rows + deferred deletions). A delete lights this\n// up even though its row is gone. Shown as a header badge + exposed on the handle.\nconst unsavedCount = controller.unsavedCount\nconst unsavedCountVisible = computed(\n () => !props.readonly && !props.disableUnsaved && unsavedCount.value > 0,\n)\nconst headerVisible = computed(() => !!(props.title || slots.header) || unsavedCountVisible.value)\n\n// Per-row Save/Cancel footer only makes sense with a per-item persist callback;\n// without one the parent form's global save flushes everything, so hide it.\nconst showInlineSaveFooter = computed(() => !!props.onItemSave)\n\n// Per-key decorator cache: reuse the cached object when base item AND every flag\n// match, giving slot consumers a stable reference for unchanged rows. `disableUnsaved`\n// suppresses only the amber marker — the validation rail still shows, since hiding\n// dirty-state shouldn't hide a real error.\nconst decoratorCache = new Map<ListEditorKey, DecoratedViewItem<TItem>>()\nconst viewItemsDecorated = computed<DecoratedViewItem<TItem>[]>(() => {\n const next: DecoratedViewItem<TItem>[] = []\n const liveKeys = new Set<ListEditorKey>()\n for (const vi of viewItems.value) {\n liveKeys.add(vi.key)\n const editing = editingKeys.value.has(vi.key)\n const expanded = expandedKeys.value.has(vi.key)\n const loading = props.loadingKeys?.has(vi.key) ?? false\n // Readonly can't have user-unsaved changes; never paint amber there (also avoids\n // a mount-before-load baseline marking every loaded row added). (QA 85050 sweep)\n const unsaved = props.disableUnsaved || props.readonly ? false : controller.isUnsaved(vi.key)\n const dirty = unsaved\n // `editing` → the controller reads amber (not red) while the row is being filled in. (QA 85050 b7)\n const validationState = controller.rowState(vi.raw, vi.key, editing)\n const cached = decoratorCache.get(vi.key)\n if (\n cached &&\n cached.raw === vi.raw &&\n cached.index === vi.index &&\n cached.position === vi.position &&\n cached.editing === editing &&\n cached.expanded === expanded &&\n cached.loading === loading &&\n cached.dirty === dirty &&\n cached.unsaved === unsaved &&\n cached.validationState === validationState\n ) {\n next.push(cached)\n continue\n }\n const decorated: DecoratedViewItem<TItem> = {\n ...vi,\n editing,\n expanded,\n loading,\n dirty,\n unsaved,\n validationState,\n }\n decoratorCache.set(vi.key, decorated)\n next.push(decorated)\n }\n for (const key of decoratorCache.keys()) {\n if (!liveKeys.has(key)) decoratorCache.delete(key)\n }\n return next\n})\n\nconst isEmpty = computed(() => viewItemsDecorated.value.length === 0)\n\nconst findVi = (key: ListEditorKey): DecoratedViewItem<TItem> | undefined =>\n viewItemsDecorated.value.find((v) => v.key === key)\n\nconst keyboardNav = useKeyboardNav({\n viewItems: computed(() => viewItemsDecorated.value.map((vi) => ({ key: vi.key }))),\n variant: 'flat',\n isReorderMode: ref(false),\n disabled: computed(() => !canInteract.value),\n isEditing: (key) => editingKeys.value.has(key),\n onToggleEdit: (key) => {\n const vi = findVi(key)\n if (vi) onEditClick(vi)\n },\n onCancelEdit: (key) => {\n const vi = findVi(key)\n if (vi) onCloseClick(vi)\n },\n})\n\nconst resolveCompactText = (raw: TItem): string =>\n resolveCompactTextUtil(raw, { compactField: props.compactField })\n\n// Managed add: the controller inserts `factory()` and renumbers; the inline-editing\n// watch picks up the new key off the model change and auto-opens it.\nconst onAddClick = () => {\n if (!canAdd.value) return\n requestAutoOpen()\n controller.addItem(undefined, undefined)\n}\n\nconst onRowAddAfterClick = (vi: ListViewItem<TItem>) => {\n if (!canInteract.value) return\n requestAutoOpen()\n controller.addItem(undefined, { afterId: vi.key })\n}\n\nconst onEditClick = (vi: ListViewItem<TItem>) => {\n if (!canInteract.value) return\n // Toggle: edit while already editing closes the form, matching row-header click.\n if (editingKeys.value.has(vi.key)) {\n onCloseClick(vi)\n return\n }\n if (isInlineEdit.value) {\n beginEdit(vi)\n expandedKeys.value.delete(vi.key)\n }\n emit('edit', vi)\n}\n\nconst onExpandClick = (vi: ListViewItem<TItem>) => {\n if (props.disabled || props.loading) return\n const key = vi.key\n const currentlyExpanded = expandedKeys.value.has(key)\n if (currentlyExpanded) {\n expandedKeys.value.delete(key)\n } else {\n for (const k of expandedKeys.value) expandedKeys.value.delete(k)\n expandedKeys.value.add(key)\n }\n emit('item-expand', vi, !currentlyExpanded)\n}\n\nconst isRowClickable = (vi: DecoratedViewItem<TItem>): boolean => {\n if (props.chips) return false\n if (props.disableRowClick) return false\n if (props.defaultExpanded) return false\n if (props.disabled || props.loading) return false\n if (vi.editing || vi.expanded) return true\n if (!props.readonly && props.showEditButton) return true\n return false\n}\n\nconst onRowClick = (vi: DecoratedViewItem<TItem>) => {\n if (!isRowClickable(vi)) return\n if (vi.editing || vi.expanded) {\n onCloseClick(vi)\n return\n }\n if (props.readonly && hasReadonlyDetail.value) {\n onExpandClick(vi)\n } else {\n onEditClick(vi)\n }\n}\n\nconst {\n deleteDialog,\n deleteInFlight,\n deleteError,\n onDeleteClick: triggerDeleteClick,\n onDeleteDialogConfirm,\n onDeleteDialogCancel,\n} = useDeleteDialog<TItem, ListViewItem<TItem>>({\n onDeleteConfirm: (raw) => (props.onDeleteConfirm ? props.onDeleteConfirm(raw) : true),\n onDelete: (raw) => props.onDelete?.(raw),\n onDeleted: (vi) => {\n editingKeys.value.delete(vi.key)\n editingSnapshots.value.delete(vi.key)\n expandedKeys.value.delete(vi.key)\n // Controller owns removal: a temp row vanishes; a saved row is recorded in `getChanges().deleted`\n // and counts as an unconfirmed change (deferred) — unless immediate mode (already deleted on the\n // backend), which skips the tombstone.\n controller.deleteItem(vi.key, { trackDeleted: props.deleteMode === 'deferred' })\n emit('deleted', vi)\n },\n disableDeleteConfirm: () => props.disableDeleteConfirm || props.chips,\n})\n\nconst onDeleteClick = async (vi: ListViewItem<TItem>) => {\n if (!canInteract.value) return\n await triggerDeleteClick(vi)\n}\n\nconst onSaveClick = async (vi: ListViewItem<TItem>) => {\n if (props.onItemSave) {\n await props.onItemSave(vi.raw)\n }\n commitEdit(vi)\n emit('item-saved', vi)\n}\n\nconst onCancelClick = (vi: ListViewItem<TItem>) => {\n cancelEdit(vi)\n}\n\nconst onCloseClick = (vi: ListViewItem<TItem>) => {\n closeEdit(vi)\n expandedKeys.value.delete(vi.key)\n emit('close', vi)\n}\n\n// Per-key actions cache: each row's `actions` bundle is allocated once so slot\n// consumers get a stable identity (no prop-ref churn → no spurious re-renders).\n// Closures capture the stable key and look up the live decorator via `findVi(key)`.\ntype ActionsBundle = {\n edit: () => void\n save: () => Promise<void> | void\n cancel: () => void\n close: () => void\n delete: () => Promise<void>\n addAfter: () => void\n toggleExpand: () => void\n update: (next: TItem | Partial<TItem> | ((current: TItem) => TItem)) => void\n}\nconst actionsCache = new Map<ListEditorKey, ActionsBundle>()\nconst getActions = (key: ListEditorKey): ActionsBundle => {\n let actions = actionsCache.get(key)\n if (!actions) {\n actions = {\n edit: () => {\n const vi = findVi(key)\n if (vi) onEditClick(vi)\n },\n save: () => {\n const vi = findVi(key)\n if (vi) return onSaveClick(vi)\n },\n cancel: () => {\n const vi = findVi(key)\n if (vi) onCancelClick(vi)\n },\n close: () => {\n const vi = findVi(key)\n if (vi) onCloseClick(vi)\n },\n delete: async () => {\n const vi = findVi(key)\n if (vi) await onDeleteClick(vi)\n },\n addAfter: () => {\n const vi = findVi(key)\n if (vi) onRowAddAfterClick(vi)\n },\n toggleExpand: () => {\n const vi = findVi(key)\n if (vi) onExpandClick(vi)\n },\n update: (next) => controller.updateItem(key, next),\n }\n actionsCache.set(key, actions)\n }\n return actions\n}\n// Garbage-collect cache entries for keys that have left the model.\nwatch(\n () => viewItemsDecorated.value,\n (now) => {\n if (actionsCache.size === 0) return\n const liveKeys = new Set(now.map((v) => v.key))\n for (const key of actionsCache.keys()) {\n if (!liveKeys.has(key)) actionsCache.delete(key)\n }\n },\n)\n\nconst buildSlotProps = (vi: DecoratedViewItem<TItem>) => ({\n item: vi,\n raw: vi.raw,\n index: vi.index,\n key: vi.key,\n readonly: props.readonly,\n disabled: props.disabled,\n expanded: vi.expanded,\n editing: vi.editing || props.defaultExpanded,\n dirty: vi.dirty,\n unsaved: vi.unsaved,\n touch: isTouch.value,\n stateKeyPrefix: rowStateScope.prefixFor(vi.key),\n actions: getActions(vi.key),\n})\n\n// Named unsaved-changes section, registered only when a label is passed.\nuseUnsavedSection(() =>\n props.unsavedSectionLabel && !props.disableUnsaved\n ? { label: props.unsavedSectionLabel, dirty: controller.hasUnsaved.value }\n : [],\n)\n\n// Opens invalid rows so a blocked save surfaces WHICH rows are wrong instead of a collapsed red\n// rail. The body is gated on `editing` not `expanded`, so drive `beginEdit` not `expandedKeys`\n// (QA 85050 B4-17). Shared by the exposed `validateAll` and the scope-collector reveal-on-touch.\nconst runValidateAndReveal = (): boolean =>\n validateAllAndReveal(controller, (key) => {\n const vi = viewItems.value.find((v) => v.key === key)\n if (vi) beginEdit(vi)\n })\n\n// Auto-bridge the editor's aggregate validity into the consumer's `validation-scope` collector so a\n// plain `$invalid` save gate blocks (and reveals) a collapsed invalid row. No-op without the prop.\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss -- construction-time opt-in, read once\nuseListEditorScopeValidity({\n hasErrors: controller.hasErrors,\n validationScope: props.validationScope,\n validateProvided: props.validate !== undefined,\n reveal: runValidateAndReveal,\n})\n\n// Expose the controller handle via `useTemplateRef<ListEditorHandle<TItem>>`.\ndefineExpose<ListEditorHandle<TItem>>({\n ...controller,\n validateAll: runValidateAndReveal,\n})\n</script>\n\n<template>\n <div\n ref=\"rootEl\"\n class=\"a-list-editor\"\n :class=\"[\n `a-list-editor--two-rows-${twoRows}`,\n {\n 'a-list-editor--readonly': readonly,\n 'a-list-editor--disabled': disabled,\n 'a-list-editor--touch': isTouch,\n 'a-list-editor--chips': chips,\n },\n ]\"\n >\n <div\n ref=\"rowsContainer\"\n class=\"a-le-card\"\n >\n <div\n v-if=\"headerVisible\"\n class=\"a-le-header\"\n >\n <slot\n name=\"header\"\n :title=\"title\"\n >\n <h3\n v-if=\"title\"\n class=\"a-le-title-heading\"\n >\n {{ title }}\n </h3>\n </slot>\n <span\n v-if=\"unsavedCountVisible\"\n class=\"a-le-unsaved-count\"\n :data-unsaved-count=\"unsavedCount\"\n >\n {{ t('common.sortable.pendingChanges', { count: unsavedCount }) }}\n </span>\n </div>\n\n <div\n v-if=\"loading\"\n class=\"a-le-state a-le-state--loading\"\n >\n <VProgressCircular\n indeterminate\n color=\"primary\"\n size=\"32\"\n />\n </div>\n\n <div\n v-else-if=\"error\"\n class=\"a-le-state a-le-state--error\"\n >\n <VAlert\n type=\"error\"\n variant=\"tonal\"\n density=\"compact\"\n border=\"start\"\n >\n {{ error }}\n </VAlert>\n </div>\n\n <div\n v-else-if=\"isEmpty\"\n class=\"a-le-state a-le-state--empty\"\n >\n <slot\n name=\"empty\"\n :readonly=\"readonly\"\n :disabled=\"disabled\"\n :actions=\"{ add: onAddClick }\"\n >\n <LeEmptyState\n :title=\"emptyTitleResolved\"\n :add-label=\"addLabelResolved\"\n :can-add=\"canAdd\"\n @add=\"onAddClick\"\n />\n </slot>\n </div>\n\n <template v-else>\n <div\n v-for=\"vi in viewItemsDecorated\"\n :key=\"String(vi.key)\"\n class=\"a-le-row-wrapper\"\n >\n <!-- Interstitial slots render as SIBLINGS of `.a-le-row` (inside this\n wrapper), so consumer content placed between rows never inherits the\n row's unsaved/editing/validation tint. (QA 85050 BUG-04/05) -->\n <slot\n name=\"before-item\"\n v-bind=\"buildSlotProps(vi)\"\n />\n\n <div\n :data-id=\"String(vi.key)\"\n role=\"listitem\"\n :tabindex=\"keyboardNav.rowTabindex(vi.key)\"\n class=\"a-le-row\"\n :class=\"{\n 'a-le-row--two-rows': twoRows === 'always',\n 'a-le-row--editing': vi.editing,\n 'a-le-row--expanded': vi.expanded,\n 'a-le-row--unsaved': vi.unsaved,\n 'a-le-row--clickable': isRowClickable(vi),\n [`a-le-row--validation-${vi.validationState}`]: vi.validationState !== null,\n }\"\n @keydown=\"keyboardNav.handleKeydown(vi.key, $event)\"\n >\n <div\n class=\"a-le-row-header\"\n @click=\"onRowClick(vi)\"\n >\n <div class=\"a-le-row-main\">\n <slot\n name=\"item-compact\"\n v-bind=\"buildSlotProps(vi)\"\n >\n <span class=\"a-le-title\">\n {{ resolveCompactText(vi.raw) }}\n </span>\n </slot>\n <LeUnsavedLabel\n v-if=\"vi.unsaved\"\n :dot-only=\"chips\"\n />\n </div>\n\n <div\n v-if=\"!chips\"\n class=\"a-le-status\"\n >\n <slot\n name=\"item-status\"\n v-bind=\"buildSlotProps(vi)\"\n >\n <span\n v-if=\"statusField && vi.raw[statusField] != null && vi.raw[statusField] !== ''\"\n class=\"a-le-status-badge\"\n >\n {{ vi.raw[statusField] }}\n </span>\n </slot>\n </div>\n\n <div class=\"a-le-actions\">\n <slot\n name=\"item-actions\"\n v-bind=\"buildSlotProps(vi)\"\n >\n <VBtn\n v-if=\"chips && showDeleteButton && canInteract\"\n icon\n size=\"x-small\"\n variant=\"text\"\n density=\"compact\"\n :active=\"false\"\n class=\"a-le-action a-le-action--chip-close\"\n @click.stop=\"onDeleteClick(vi)\"\n >\n <VIcon\n icon=\"mdi-close\"\n size=\"14\"\n />\n </VBtn>\n <template v-else>\n <VBtn\n v-if=\"showEditButton && canInteract && !defaultExpanded\"\n icon\n size=\"small\"\n variant=\"tonal\"\n color=\"primary\"\n density=\"comfortable\"\n class=\"mx-1 a-le-action a-le-action--edit\"\n @click.stop=\"onEditClick(vi)\"\n >\n <VIcon\n icon=\"mdi-pencil-outline\"\n size=\"18\"\n />\n <VTooltip\n activator=\"parent\"\n location=\"bottom\"\n :text=\"t('common.sortable.edit')\"\n />\n </VBtn>\n <VBtn\n v-if=\"showDeleteButton && canInteract\"\n icon\n size=\"small\"\n variant=\"text\"\n density=\"comfortable\"\n class=\"mx-1 a-le-action a-le-action--delete\"\n @click.stop=\"onDeleteClick(vi)\"\n >\n <VIcon\n icon=\"mdi-trash-can-outline\"\n size=\"18\"\n />\n <VTooltip\n activator=\"parent\"\n location=\"bottom\"\n :text=\"t('common.sortable.delete')\"\n />\n </VBtn>\n <VBtn\n v-if=\"showAddAfterAction && canInteract\"\n icon\n size=\"small\"\n variant=\"text\"\n density=\"comfortable\"\n :active=\"false\"\n class=\"mx-1 a-le-action a-le-action--menu\"\n >\n <VIcon\n icon=\"mdi-dots-vertical\"\n size=\"18\"\n />\n <VTooltip\n activator=\"parent\"\n location=\"bottom\"\n :text=\"t('common.sortable.more')\"\n />\n <VMenu activator=\"parent\">\n <VList density=\"compact\">\n <VListItem @click=\"onRowAddAfterClick(vi)\">\n <template #prepend>\n <VIcon icon=\"mdi-plus\" />\n </template>\n <VListItemTitle>\n {{ t('common.sortable.addAfter') }}\n </VListItemTitle>\n </VListItem>\n </VList>\n </VMenu>\n </VBtn>\n </template>\n </slot>\n </div>\n </div>\n\n <template v-if=\"(vi.editing || defaultExpanded) && $slots.item\">\n <div class=\"a-le-row-body\">\n <div class=\"a-le-form\">\n <slot\n name=\"item\"\n v-bind=\"buildSlotProps(vi)\"\n />\n </div>\n </div>\n <slot\n name=\"item-footer\"\n v-bind=\"buildSlotProps(vi)\"\n >\n <div\n v-if=\"showInlineSaveFooter && !defaultExpanded\"\n class=\"a-le-row-footer\"\n >\n <div class=\"a-le-row-footer-spacer\" />\n <VBtn\n variant=\"text\"\n :disabled=\"vi.loading\"\n @click.stop=\"onCancelClick(vi)\"\n >\n {{ t('common.button.cancel') }}\n </VBtn>\n <VBtn\n color=\"primary\"\n variant=\"flat\"\n prepend-icon=\"mdi-check\"\n :disabled=\"vi.loading\"\n @click.stop=\"onSaveClick(vi)\"\n >\n {{ t('common.button.save') }}\n </VBtn>\n </div>\n </slot>\n </template>\n\n <div\n v-else-if=\"$slots['item-readonly'] && (readonly || vi.expanded)\"\n class=\"a-le-row-body\"\n >\n <div class=\"a-le-form\">\n <slot\n name=\"item-readonly\"\n v-bind=\"buildSlotProps(vi)\"\n />\n </div>\n </div>\n </div>\n\n <slot\n name=\"after-item\"\n v-bind=\"buildSlotProps(vi)\"\n />\n </div>\n </template>\n\n <slot\n v-if=\"canAdd && !loading && !error && !isEmpty\"\n name=\"add-button\"\n :readonly=\"readonly\"\n :disabled=\"disabled\"\n :props=\"{ onClick: onAddClick }\"\n :actions=\"{ add: onAddClick }\"\n >\n <button\n type=\"button\"\n class=\"a-le-row-add\"\n @click=\"onAddClick\"\n >\n <VIcon\n icon=\"mdi-plus\"\n size=\"18\"\n />\n <span>{{ addLabelResolved }}</span>\n </button>\n </slot>\n </div>\n\n <LeDeleteDialog\n v-model=\"deleteDialog\"\n :title=\"deleteConfirmTitleResolved\"\n :text=\"deleteConfirmTextResolved\"\n :confirm-label=\"t('common.sortable.delete')\"\n :cancel-label=\"t('common.button.cancel')\"\n :error=\"deleteError\"\n :in-flight=\"deleteInFlight\"\n @confirm=\"onDeleteDialogConfirm\"\n @cancel=\"onDeleteDialogCancel\"\n />\n\n <div\n class=\"a-le-sr-only\"\n aria-live=\"polite\"\n role=\"status\"\n >\n {{\n keyboardNav.grabbedKey.value !== null\n ? t('common.sortable.keyboardGrab.status', {\n n: keyboardNav.grabbedIndex.value + 1,\n total: keyboardNav.totalCount.value,\n })\n : ''\n }}\n </div>\n </div>\n</template>\n\n<style lang=\"scss\">\n@use './styles/tokens';\n@use './styles/shared';\n\n// Variant-specific rules, scoped under the AListEditor root.\n.a-list-editor {\n // Chips: 12px left padding (flat) vs 8px in sortable, which reserves drag-handle room.\n &--chips .a-le-row-header {\n padding: 2px 4px 2px 12px;\n gap: 4px;\n min-height: 28px;\n }\n}\n\n// Narrow/mobile layout: taller rows, always-visible actions, status badge dropped for room.\n/* stylelint-disable selector-max-compound-selectors */\n@container le-shell (max-width: 768px) {\n .a-list-editor {\n --le-row-min-height: 48px;\n --le-row-pad-y: 10px;\n\n .a-le-row:not(.a-le-row--editing) .a-le-status {\n display: none;\n }\n\n .a-le-row .a-le-action--edit,\n .a-le-row .a-le-action--delete,\n .a-le-row .a-le-action--menu {\n opacity: 1;\n }\n }\n}\n/* stylelint-enable selector-max-compound-selectors */\n</style>\n","import type { ListEditorKey } from '@/labs/listEditor/types/listEditorTypes'\nimport type { NestedViewItem } from '@/labs/listEditor/composables/useNestedListEditor'\n\n/**\n * Drop instruction — where the dragged item will land + how to paint the line.\n *\n * Outliner model (dnd-kit / Workflowy style):\n * - Pointer Y picks which gap the drop lands in: the upper 50% of the\n * hovered row = the gap above it, the lower 50% = the gap below.\n * - Pointer X picks the depth within that gap. Depth is measured in indent\n * columns of `indentPx` each, rounded to the nearest column, and clamped\n * to `[0, anchor.depth + 1]` where `anchor` is the visible row immediately\n * above the target gap. You can never skip more than one level deeper\n * than what's already on the row above — same rule as dnd-kit's\n * SortableTree — which keeps the tree structure coherent.\n *\n * `makeChild: true` when the chosen depth is one level deeper than the\n * anchor. The target becomes a new parent and the consumer should\n * auto-expand `parentKey` so the inserted row stays visible.\n *\n * `blocked` wraps the would-be instruction when the move would breach\n * `maxDepth` — the overlay keeps rendering the line in a warning colour\n * so the intent stays legible but the mutation is refused.\n */\n\nexport type ExecutableInstruction = {\n type: 'insert'\n refKey: ListEditorKey\n refEdge: 'top' | 'bottom'\n parentKey: ListEditorKey | null\n index: number\n depth: number\n makeChild: boolean\n // Row whose level the inserted item will match — the sibling we're\n // inserting after (sibling case) or the ancestor we're joining as sibling\n // of (reparent case). `null` for make-child (creating a brand new deeper\n // level, no existing peer to anchor against) and the root-top fallback.\n // Consumers render a thin connector from the drop line up to this row so\n // the user can see which row dictates the new level.\n levelRowKey: ListEditorKey | null\n}\n\nexport type Instruction =\n | ExecutableInstruction\n | {\n type: 'blocked'\n desired: ExecutableInstruction\n reason: 'maxDepth'\n }\n\nexport interface HoveredRow {\n key: ListEditorKey\n rect: DOMRect\n depth: number\n parentKey: ListEditorKey | null\n siblingIndex: number\n siblingCount: number\n}\n\nexport interface ComputeInstructionArgs {\n pointer: { x: number; y: number }\n hoveredRow: HoveredRow\n sourceKey: ListEditorKey\n sourceSubtreeDepth: number\n viewItems: NestedViewItem<any>[]\n maxDepth: number\n indentPx: number\n containerLeft: number\n containerPaddingLeft: number\n}\n\nconst findByKey = (\n viewItems: NestedViewItem<any>[],\n key: ListEditorKey,\n): NestedViewItem<any> | null => viewItems.find((v) => v.key === key) ?? null\n\nconst isDescendantOf = (\n viewItems: NestedViewItem<any>[],\n ancestorKey: ListEditorKey,\n candidateKey: ListEditorKey,\n): boolean => {\n let current = findByKey(viewItems, candidateKey)\n while (current && current.parentKey !== null) {\n if (current.parentKey === ancestorKey) return true\n current = findByKey(viewItems, current.parentKey)\n }\n return false\n}\n\nconst findAncestorAtDepth = (\n viewItems: NestedViewItem<any>[],\n startKey: ListEditorKey,\n targetDepth: number,\n): NestedViewItem<any> | null => {\n let current = findByKey(viewItems, startKey)\n while (current && current.depth > targetDepth) {\n if (current.parentKey === null) return null\n current = findByKey(viewItems, current.parentKey)\n }\n return current && current.depth === targetDepth ? current : null\n}\n\nconst isInSourceSubtree = (\n viewItems: NestedViewItem<any>[],\n sourceKey: ListEditorKey,\n candidateKey: ListEditorKey,\n): boolean => candidateKey === sourceKey || isDescendantOf(viewItems, sourceKey, candidateKey)\n\n// Walk the flat view-items list in `dir` (±1) starting at `startIdx`, skipping\n// any row that belongs to the dragged subtree — those rows aren't visible drop\n// targets so they shouldn't define the gap boundaries for depth clamping.\nconst findSiblingNotInSource = (\n viewItems: NestedViewItem<any>[],\n startIdx: number,\n dir: 1 | -1,\n sourceKey: ListEditorKey,\n): NestedViewItem<any> | null => {\n for (let i = startIdx; i >= 0 && i < viewItems.length; i += dir) {\n const vi = viewItems[i]\n if (!isInSourceSubtree(viewItems, sourceKey, vi.key)) return vi\n }\n return null\n}\n\nexport const computeInstruction = (args: ComputeInstructionArgs): Instruction | null => {\n const {\n pointer,\n hoveredRow,\n sourceKey,\n sourceSubtreeDepth,\n viewItems,\n maxDepth,\n indentPx,\n containerLeft,\n containerPaddingLeft,\n } = args\n\n if (hoveredRow.key === sourceKey) return null\n if (isDescendantOf(viewItems, sourceKey, hoveredRow.key)) return null\n\n const y = pointer.y - hoveredRow.rect.top\n const h = hoveredRow.rect.height\n const inTopHalf = y < h / 2\n const refEdge: 'top' | 'bottom' = inTopHalf ? 'top' : 'bottom'\n\n // The gap between two flat-adjacent rows frames the drop. `prev` is the\n // row immediately above the gap, `next` is the row immediately below it.\n // Rows belonging to the dragged subtree don't exist for clamping purposes —\n // they'll disappear from the flat list once the move completes, so they\n // can't define the depth bounds of the drop.\n const flatIdx = viewItems.findIndex((v) => v.key === hoveredRow.key)\n const prev: NestedViewItem<any> | null = inTopHalf\n ? findSiblingNotInSource(viewItems, flatIdx - 1, -1, sourceKey)\n : findSiblingNotInSource(viewItems, flatIdx, -1, sourceKey)\n const next: NestedViewItem<any> | null = inTopHalf\n ? findSiblingNotInSource(viewItems, flatIdx, 1, sourceKey)\n : findSiblingNotInSource(viewItems, flatIdx + 1, 1, sourceKey)\n\n // Depth bounds for this gap:\n // maxDepth = prev.depth + 1 (you can nest one level deeper than prev).\n // minDepth = next.depth (shallower would insert AFTER next's parent\n // subtree, i.e., at a different Y than the\n // user is pointing at — so that's not a valid\n // option for THIS gap).\n // If prev is missing (gap at top of tree) or next is missing (bottom of\n // tree), the missing side defaults to 0.\n const pointerRelX = pointer.x - containerLeft - containerPaddingLeft\n const rawDepth = Math.round(pointerRelX / indentPx)\n const depthCeiling = prev ? prev.depth + 1 : 0\n const depthFloor = next ? next.depth : 0\n const clampedDepth = Math.max(depthFloor, Math.min(rawDepth, depthCeiling))\n\n let desired: ExecutableInstruction\n\n if (!prev) {\n // Gap at the very top of the tree — only landing is root index 0.\n desired = {\n type: 'insert',\n refKey: hoveredRow.key,\n refEdge: 'top',\n parentKey: null,\n index: 0,\n depth: 0,\n makeChild: false,\n levelRowKey: null,\n }\n } else if (clampedDepth === prev.depth + 1) {\n desired = {\n type: 'insert',\n refKey: hoveredRow.key,\n refEdge,\n parentKey: prev.key,\n index: 0,\n depth: clampedDepth,\n makeChild: true,\n levelRowKey: null,\n }\n } else if (clampedDepth === prev.depth) {\n desired = {\n type: 'insert',\n refKey: hoveredRow.key,\n refEdge,\n parentKey: prev.parentKey,\n index: prev.siblingIndex + 1,\n depth: clampedDepth,\n makeChild: false,\n levelRowKey: prev.key,\n }\n } else {\n // clampedDepth < prev.depth → reparent to ancestor at clampedDepth.\n const ancestor = findAncestorAtDepth(viewItems, prev.key, clampedDepth)\n if (ancestor) {\n desired = {\n type: 'insert',\n refKey: hoveredRow.key,\n refEdge,\n parentKey: ancestor.parentKey,\n index: ancestor.siblingIndex + 1,\n depth: clampedDepth,\n makeChild: false,\n levelRowKey: ancestor.key,\n }\n } else {\n // Shouldn't hit with clampedDepth ≥ 0 but keep a safe fallback.\n desired = {\n type: 'insert',\n refKey: hoveredRow.key,\n refEdge,\n parentKey: prev.parentKey,\n index: prev.siblingIndex + 1,\n depth: prev.depth,\n makeChild: false,\n levelRowKey: prev.key,\n }\n }\n }\n\n if (desired.depth + sourceSubtreeDepth - 1 >= maxDepth) {\n return { type: 'blocked', desired, reason: 'maxDepth' }\n }\n\n return desired\n}\n","<script setup lang=\"ts\" generic=\"TItem extends Record<string, any>\">\nimport { useI18n } from 'vue-i18n'\nimport LeNestedRowSelf from './LeNestedRow.vue'\nimport LeDragHandle from '@/labs/listEditor/internal/LeDragHandle.vue'\nimport LeUnsavedLabel from '@/labs/listEditor/internal/LeUnsavedLabel.vue'\nimport type {\n ListEditorKey,\n ListEditorValidationState,\n} from '@/labs/listEditor/types/listEditorTypes'\n\n// Self-recursive row. Interior uses `any` — strong typing lives on the public ANestedSortableListEditor wrapper.\n\nexport type Props = {\n vi: any\n viewItems: any[]\n dragState: any\n context: any\n callbacks: any\n}\nconst props = defineProps<Props>()\n\n// `as any` breaks Vue's circular type inference on self-import.\nconst LeNestedRow = LeNestedRowSelf as any\n\nconst { t } = useI18n()\n\nconst GROUP_CLASS = 'a-nested-list-editor__group'\nconst HANDLE_CLASS = 'a-le-drag-handle'\n\nconst anchorName = (key: ListEditorKey): string => `--row-${String(key).replace(/\\W/g, '_')}`\n\n// Delegate to the parent editor's resolver so the registry + getValidationState\n// prop apply consistently. Falls back to reading raw.validationState if context\n// doesn't supply one.\nconst resolveValidation = (raw: TItem): ListEditorValidationState => {\n if (typeof props.context.resolveValidation === 'function') {\n return props.context.resolveValidation(raw, props.vi.key, props.vi.index)\n }\n const v = raw.validationState\n if (v === 'valid' || v === 'invalid' || v === 'warning') return v\n return null\n}\n\nconst buildSlotProps = () => props.context.buildSlotProps(props.vi)\n\nconst directChildren = (): any[] => props.viewItems.filter((v) => v.parentKey === props.vi.key)\n</script>\n\n<template>\n <div\n :class=\"[\n 'a-le-row-wrapper',\n {\n 'a-le-row-wrapper--drop-disabled': dragState !== null && dragState.sourceKey === vi.key,\n },\n ]\"\n :data-id=\"String(vi.key)\"\n role=\"treeitem\"\n :aria-level=\"vi.depth + 1\"\n :tabindex=\"context.keyboardNav ? context.keyboardNav.rowTabindex(vi.key) : undefined\"\n @keydown=\"context.keyboardNav ? context.keyboardNav.handleKeydown(vi.key, $event) : undefined\"\n >\n <!-- Interstitial slots are SIBLINGS of `.a-le-row` (children of this wrapper),\n so between-row content never inherits the row's unsaved/editing/grabbed/\n validation tint. (QA 85050 BUG-04/05) -->\n <slot\n name=\"before-item\"\n v-bind=\"buildSlotProps()\"\n />\n\n <div\n :class=\"[\n 'a-le-row',\n vi.depth > 0 ? 'a-le-row--child' : null,\n {\n 'a-le-row--editing': vi.editing,\n 'a-le-row--expanded': vi.expanded,\n 'a-le-row--unsaved': vi.unsaved,\n 'a-le-row--reorder': context.reorderMode,\n 'a-le-row--grabbed': context.keyboardNav && context.keyboardNav.isGrabbed(vi.key),\n 'a-le-row--clickable': context.isRowClickable(vi),\n 'a-le-row--drop-source': dragState !== null && dragState.sourceKey === vi.key,\n [`a-le-row--validation-${resolveValidation(vi.raw)}`]: resolveValidation(vi.raw) !== null,\n },\n ]\"\n :style=\"{\n '--nested-depth': vi.depth,\n 'anchor-name': anchorName(vi.key),\n '--parent-anchor': vi.parentKey !== null ? anchorName(vi.parentKey) : 'none',\n }\"\n >\n <div\n class=\"a-le-row-header\"\n @click=\"callbacks.onRowClick(vi)\"\n >\n <LeDragHandle\n v-if=\"context.dragEnabled\"\n :class=\"HANDLE_CLASS\"\n />\n\n <!-- Expand toggle — a small triangular caret rendered uniformly for both\n root and nested rows. For leaf rows (no children) the toggle is\n hidden via `visibility: hidden` so the column stays aligned. -->\n <button\n v-if=\"context.showExpandToggle && vi.childrenAllowed\"\n type=\"button\"\n :class=\"[\n 'a-nested-list-editor__tree-toggle',\n {\n 'a-nested-list-editor__tree-toggle--empty': !vi.hasChildren,\n 'a-nested-list-editor__tree-toggle--open': vi.childrenExpanded,\n },\n ]\"\n :aria-label=\"vi.childrenExpanded ? t('common.sortable.close') : t('common.sortable.edit')\"\n @click.stop=\"vi.hasChildren && callbacks.onChevronClick(vi)\"\n >\n <span class=\"a-nested-list-editor__tree-toggle-caret\" />\n </button>\n <!-- Spacer for leaf rows that have no caret, so titles align with\n parents having one. -->\n <span\n v-else-if=\"context.showExpandToggle\"\n class=\"a-nested-list-editor__tree-toggle a-nested-list-editor__tree-toggle--spacer\"\n aria-hidden=\"true\"\n />\n\n <div class=\"a-le-row-main\">\n <slot\n name=\"item-compact\"\n v-bind=\"buildSlotProps()\"\n >\n <span class=\"a-le-title\">\n {{ context.resolveCompactText(vi.raw, vi.key) }}\n </span>\n </slot>\n <!-- Visible only inside the SortableJS drag clone — signals that the\n item being moved carries a subtree so the user realises the whole\n branch will follow. Sits right after the title. Hidden in the\n normal DOM via CSS. -->\n <span\n v-if=\"vi.hasChildren\"\n class=\"a-nested-list-editor__drag-count\"\n aria-hidden=\"true\"\n >\n <VIcon\n icon=\"mdi-file-tree\"\n size=\"14\"\n />\n +{{ vi.childrenCount }}\n </span>\n <LeUnsavedLabel v-if=\"vi.unsaved\" />\n </div>\n\n <div\n v-if=\"!context.reorderMode\"\n class=\"a-le-status\"\n >\n <slot\n name=\"item-status\"\n v-bind=\"buildSlotProps()\"\n >\n <span\n v-if=\"\n context.statusField &&\n vi.raw[context.statusField] != null &&\n vi.raw[context.statusField] !== ''\n \"\n class=\"a-le-status-badge\"\n >\n {{ vi.raw[context.statusField] }}\n </span>\n </slot>\n </div>\n\n <div class=\"a-le-actions\">\n <slot\n name=\"item-actions\"\n v-bind=\"buildSlotProps()\"\n >\n <template v-if=\"context.reorderMode\">\n <VBtn\n icon\n size=\"small\"\n variant=\"text\"\n density=\"comfortable\"\n :disabled=\"vi.firstInParent\"\n class=\"mx-1 a-le-action a-le-action--up\"\n @click.stop=\"callbacks.moveUp(vi.key)\"\n >\n <VIcon\n icon=\"mdi-arrow-up\"\n size=\"18\"\n />\n <VTooltip\n activator=\"parent\"\n location=\"bottom\"\n :text=\"t('common.sortable.moveUp')\"\n />\n </VBtn>\n <VBtn\n icon\n size=\"small\"\n variant=\"text\"\n density=\"comfortable\"\n :disabled=\"vi.lastInParent\"\n class=\"mx-1 a-le-action a-le-action--down\"\n @click.stop=\"callbacks.moveDown(vi.key)\"\n >\n <VIcon\n icon=\"mdi-arrow-down\"\n size=\"18\"\n />\n <VTooltip\n activator=\"parent\"\n location=\"bottom\"\n :text=\"t('common.sortable.moveDown')\"\n />\n </VBtn>\n <VBtn\n icon\n size=\"small\"\n variant=\"text\"\n density=\"comfortable\"\n :active=\"false\"\n class=\"mx-1 a-le-action a-le-action--menu\"\n >\n <VIcon\n icon=\"mdi-dots-vertical\"\n size=\"18\"\n />\n <VTooltip\n activator=\"parent\"\n location=\"bottom\"\n :text=\"t('common.sortable.more')\"\n />\n <VMenu activator=\"parent\">\n <VList density=\"compact\">\n <VListItem\n :disabled=\"vi.firstInParent\"\n @click.stop=\"callbacks.moveTop(vi.key)\"\n >\n <template #prepend>\n <VIcon icon=\"mdi-arrow-collapse-up\" />\n </template>\n <VListItemTitle>{{ t('common.sortable.moveToTop') }}</VListItemTitle>\n </VListItem>\n <VListItem\n :disabled=\"vi.lastInParent\"\n @click.stop=\"callbacks.moveBottom(vi.key)\"\n >\n <template #prepend>\n <VIcon icon=\"mdi-arrow-collapse-down\" />\n </template>\n <VListItemTitle>{{ t('common.sortable.moveToBottom') }}</VListItemTitle>\n </VListItem>\n <VListItem\n v-if=\"context.showMoveToPosition && (!vi.firstInParent || !vi.lastInParent)\"\n @click.stop=\"callbacks.openMoveToPosition(vi)\"\n >\n <template #prepend>\n <VIcon icon=\"mdi-target\" />\n </template>\n <VListItemTitle>\n {{ t('common.sortable.moveToPosition.action') }}\n </VListItemTitle>\n </VListItem>\n <VListItem\n v-if=\"context.showChangeParent\"\n @click.stop=\"callbacks.openChangeParent(vi)\"\n >\n <template #prepend>\n <VIcon icon=\"mdi-folder-move-outline\" />\n </template>\n <VListItemTitle>\n {{ t('common.sortable.changeParent.action') }}\n </VListItemTitle>\n </VListItem>\n <VListItem\n :disabled=\"!vi.canIndent\"\n @click.stop=\"callbacks.indent(vi)\"\n >\n <template #prepend>\n <VIcon icon=\"mdi-format-indent-increase\" />\n </template>\n <VListItemTitle>{{ t('common.sortable.indent') }}</VListItemTitle>\n </VListItem>\n <VListItem\n :disabled=\"!vi.canOutdent\"\n @click.stop=\"callbacks.outdent(vi)\"\n >\n <template #prepend>\n <VIcon icon=\"mdi-format-indent-decrease\" />\n </template>\n <VListItemTitle>{{ t('common.sortable.outdent') }}</VListItemTitle>\n </VListItem>\n <VListItem\n v-if=\"context.showDeleteButton && context.canInteract\"\n @click.stop=\"callbacks.onDeleteClick(vi)\"\n >\n <template #prepend>\n <VIcon\n icon=\"mdi-trash-can-outline\"\n color=\"error\"\n />\n </template>\n <VListItemTitle class=\"text-error\">\n {{ t('common.sortable.delete') }}\n </VListItemTitle>\n </VListItem>\n </VList>\n </VMenu>\n </VBtn>\n </template>\n <template v-else>\n <VBtn\n v-if=\"context.showEditButton && context.canInteract\"\n icon\n size=\"small\"\n variant=\"tonal\"\n color=\"primary\"\n density=\"comfortable\"\n class=\"mx-1 a-le-action a-le-action--edit\"\n @click.stop=\"callbacks.onEditClick(vi)\"\n >\n <VIcon\n icon=\"mdi-pencil-outline\"\n size=\"18\"\n />\n <VTooltip\n activator=\"parent\"\n location=\"bottom\"\n :text=\"t('common.sortable.edit')\"\n />\n </VBtn>\n <VBtn\n v-if=\"context.showDeleteButton && context.canInteract\"\n icon\n size=\"small\"\n variant=\"text\"\n density=\"comfortable\"\n class=\"mx-1 a-le-action a-le-action--delete\"\n @click.stop=\"callbacks.onDeleteClick(vi)\"\n >\n <VIcon\n icon=\"mdi-trash-can-outline\"\n size=\"18\"\n />\n <VTooltip\n activator=\"parent\"\n location=\"bottom\"\n :text=\"t('common.sortable.delete')\"\n />\n </VBtn>\n <VBtn\n v-if=\"\n context.canInteract &&\n ((context.showAddChildButton && vi.canAddChild) || context.showAddAfterAction)\n \"\n icon\n size=\"small\"\n variant=\"text\"\n density=\"comfortable\"\n :active=\"false\"\n class=\"mx-1 a-le-action a-le-action--menu\"\n >\n <VIcon\n icon=\"mdi-dots-vertical\"\n size=\"18\"\n />\n <VTooltip\n activator=\"parent\"\n location=\"bottom\"\n :text=\"t('common.sortable.more')\"\n />\n <VMenu activator=\"parent\">\n <VList density=\"compact\">\n <VListItem\n v-if=\"context.showAddAfterAction\"\n @click.stop=\"callbacks.onAddAfterClick(vi)\"\n >\n <template #prepend>\n <VIcon icon=\"mdi-playlist-plus\" />\n </template>\n <VListItemTitle>\n {{ t('common.sortable.addAfter') }}\n </VListItemTitle>\n </VListItem>\n <VListItem\n v-if=\"context.showAddChildButton && vi.canAddChild\"\n @click.stop=\"callbacks.onAddChildClick(vi)\"\n >\n <template #prepend>\n <VIcon icon=\"mdi-subdirectory-arrow-right\" />\n </template>\n <VListItemTitle>\n {{ t('common.sortable.addChild') }}\n </VListItemTitle>\n </VListItem>\n </VList>\n </VMenu>\n </VBtn>\n </template>\n </slot>\n </div>\n </div>\n\n <!-- Inline edit body — status badge intentionally NOT rendered here,\n the compact header's status is enough; stacking it in the form body\n was visually noisy. -->\n <template v-if=\"vi.editing && !context.reorderMode && $slots.item\">\n <div class=\"a-le-row-body\">\n <div class=\"a-le-form\">\n <slot\n name=\"item\"\n v-bind=\"buildSlotProps()\"\n />\n </div>\n </div>\n <slot\n name=\"item-footer\"\n v-bind=\"buildSlotProps()\"\n >\n <div\n v-if=\"context.showInlineSaveFooter\"\n class=\"a-le-row-footer\"\n >\n <div class=\"a-le-row-footer-spacer\" />\n <VBtn\n variant=\"text\"\n :disabled=\"vi.loading\"\n @click.stop=\"callbacks.onCancelClick(vi)\"\n >\n {{ t('common.button.cancel') }}\n </VBtn>\n <VBtn\n color=\"primary\"\n variant=\"flat\"\n prepend-icon=\"mdi-check\"\n :disabled=\"vi.loading\"\n @click.stop=\"callbacks.onSaveClick(vi)\"\n >\n {{ t('common.button.save') }}\n </VBtn>\n </div>\n </slot>\n </template>\n\n <div\n v-else-if=\"\n $slots['item-readonly'] && (context.readonly || vi.expanded) && !context.reorderMode\n \"\n class=\"a-le-row-body\"\n >\n <div class=\"a-le-form\">\n <slot\n name=\"item-readonly\"\n v-bind=\"buildSlotProps()\"\n />\n </div>\n </div>\n </div>\n\n <slot\n name=\"after-item\"\n v-bind=\"buildSlotProps()\"\n />\n\n <!-- Recursive children — any depth level. The `::before` on this wrapper\n renders the single continuous vertical tree line at the parent's\n chevron column (see CSS). One line per group = no per-row gaps. -->\n <div\n v-if=\"vi.hasChildren && vi.childrenExpanded\"\n class=\"a-nested-list-editor__children\"\n :style=\"{ '--parent-depth': vi.depth }\"\n >\n <div\n :class=\"[GROUP_CLASS]\"\n :data-parent-id=\"String(vi.key)\"\n >\n <LeNestedRow\n v-for=\"child in directChildren()\"\n :key=\"String(child.key)\"\n :vi=\"child\"\n :view-items=\"viewItems\"\n :drag-state=\"dragState\"\n :context=\"context\"\n :callbacks=\"callbacks\"\n >\n <template #item=\"slotScope\">\n <slot\n name=\"item\"\n v-bind=\"slotScope\"\n />\n </template>\n <template #item-compact=\"slotScope\">\n <slot\n name=\"item-compact\"\n v-bind=\"slotScope\"\n />\n </template>\n <template #item-readonly=\"slotScope\">\n <slot\n name=\"item-readonly\"\n v-bind=\"slotScope\"\n />\n </template>\n <template #item-status=\"slotScope\">\n <slot\n name=\"item-status\"\n v-bind=\"slotScope\"\n />\n </template>\n <template #item-footer=\"slotScope\">\n <slot\n name=\"item-footer\"\n v-bind=\"slotScope\"\n />\n </template>\n <template #item-actions=\"slotScope\">\n <slot\n name=\"item-actions\"\n v-bind=\"slotScope\"\n />\n </template>\n <template #before-item=\"slotScope\">\n <slot\n name=\"before-item\"\n v-bind=\"slotScope\"\n />\n </template>\n <template #after-item=\"slotScope\">\n <slot\n name=\"after-item\"\n v-bind=\"slotScope\"\n />\n </template>\n </LeNestedRow>\n </div>\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\" generic=\"TItem extends Record<string, any>\">\nimport { computed, ref, watch } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport type {\n ListEditorKey,\n NestedTree,\n NestedTreeNode,\n} from '@/labs/listEditor/types/listEditorTypes'\n\nexport interface Props<TItem extends Record<string, any>> {\n tree: NestedTree<TItem>\n sourceKey: ListEditorKey | null\n keyField: string\n maxDepth: number\n resolveLabel: (raw: TItem, key: ListEditorKey) => string\n calculateSubtreeDepth: (node: NestedTreeNode<TItem>) => number\n}\n\ninterface Candidate {\n key: ListEditorKey | null\n depth: number\n label: string\n hasChildren: boolean\n disallowed: boolean\n reason: 'self' | 'descendant' | 'maxDepth' | 'currentParent' | null\n}\n\nconst props = defineProps<Props<TItem>>()\n\nconst emit = defineEmits<{\n confirm: [parentId: ListEditorKey | null, position: 'first' | 'last']\n}>()\n\nconst open = defineModel<boolean>({ required: true })\n\nconst { t } = useI18n()\n\nconst selectedKey = ref<ListEditorKey | null | undefined>(undefined)\nconst placement = ref<'first' | 'last'>('last')\n\nwatch(open, (now) => {\n if (now) {\n selectedKey.value = undefined\n placement.value = 'last'\n }\n})\n\n// Walk the source's subtree to gather descendant keys (cycle prevention).\nconst descendantKeys = computed<Set<ListEditorKey>>(() => {\n const out = new Set<ListEditorKey>()\n if (props.sourceKey === null) return out\n const walk = (nodes: NestedTreeNode<TItem>[]): boolean => {\n for (const n of nodes) {\n const k = n.data[props.keyField] as ListEditorKey\n if (k === props.sourceKey) {\n const collect = (sub: NestedTreeNode<TItem>[]) => {\n for (const s of sub) {\n out.add(s.data[props.keyField] as ListEditorKey)\n if (s.children?.length) collect(s.children)\n }\n }\n if (n.children?.length) collect(n.children)\n return true\n }\n if (n.children?.length && walk(n.children)) return true\n }\n return false\n }\n walk(props.tree.children)\n return out\n})\n\nconst sourceNode = computed<NestedTreeNode<TItem> | null>(() => {\n if (props.sourceKey === null) return null\n const find = (nodes: NestedTreeNode<TItem>[]): NestedTreeNode<TItem> | null => {\n for (const n of nodes) {\n if ((n.data[props.keyField] as ListEditorKey) === props.sourceKey) return n\n if (n.children?.length) {\n const hit = find(n.children)\n if (hit) return hit\n }\n }\n return null\n }\n return find(props.tree.children)\n})\n\n// `currentParentKey` = parent of the source row (null if source is at root).\n// We exclude this from candidates because moving to \"the same parent\" is not a\n// \"change parent\" operation (use Move-to-position instead).\nconst currentParentKey = computed<ListEditorKey | null | undefined>(() => {\n if (props.sourceKey === null) return undefined\n const find = (\n nodes: NestedTreeNode<TItem>[],\n parentKey: ListEditorKey | null,\n ): ListEditorKey | null | undefined => {\n for (const n of nodes) {\n if ((n.data[props.keyField] as ListEditorKey) === props.sourceKey) return parentKey\n if (n.children?.length) {\n const hit = find(n.children, n.data[props.keyField] as ListEditorKey)\n if (hit !== undefined) return hit\n }\n }\n return undefined\n }\n return find(props.tree.children, null)\n})\n\nconst candidates = computed<Candidate[]>(() => {\n const out: Candidate[] = []\n const subtreeDepth = sourceNode.value ? props.calculateSubtreeDepth(sourceNode.value) : 1\n\n out.push({\n key: null,\n depth: 0,\n label: t('common.sortable.changeParent.rootLabel'),\n hasChildren: props.tree.children.length > 0,\n disallowed: currentParentKey.value === null,\n reason: currentParentKey.value === null ? 'currentParent' : null,\n })\n\n const walk = (nodes: NestedTreeNode<TItem>[], depth: number) => {\n for (const n of nodes) {\n const key = n.data[props.keyField] as ListEditorKey\n let disallowed = false\n let reason: Candidate['reason'] = null\n if (key === props.sourceKey) {\n disallowed = true\n reason = 'self'\n } else if (descendantKeys.value.has(key)) {\n disallowed = true\n reason = 'descendant'\n } else if (currentParentKey.value !== undefined && currentParentKey.value === key) {\n disallowed = true\n reason = 'currentParent'\n } else if (depth + 1 + subtreeDepth > props.maxDepth) {\n disallowed = true\n reason = 'maxDepth'\n }\n out.push({\n key,\n depth: depth + 1,\n label: props.resolveLabel(n.data as TItem, key),\n hasChildren: !!(n.children && n.children.length > 0),\n disallowed,\n reason,\n })\n if (n.children?.length) walk(n.children, depth + 1)\n }\n }\n walk(props.tree.children, 0)\n return out\n})\n\nconst validCandidates = computed(() => candidates.value.filter((c) => !c.disallowed))\n\nconst selectedCandidate = computed<Candidate | null>(() =>\n selectedKey.value === undefined\n ? null\n : (candidates.value.find((c) => c.key === selectedKey.value) ?? null),\n)\n\nconst showPlacementPicker = computed<boolean>(\n () => !!selectedCandidate.value && selectedCandidate.value.hasChildren,\n)\n\nconst onCandidateClick = (c: Candidate) => {\n if (c.disallowed) return\n selectedKey.value = c.key\n}\n\nconst onConfirm = () => {\n if (!selectedCandidate.value) return\n emit('confirm', selectedCandidate.value.key, placement.value)\n open.value = false\n}\n\nconst onCancel = () => {\n open.value = false\n}\n\nconst indent = (depth: number): string => `${depth * 16}px`\n\nconst reasonLabel = (reason: Candidate['reason']): string => {\n if (reason === 'maxDepth') return t('common.sortable.changeParent.errorMaxDepth')\n return ''\n}\n</script>\n\n<template>\n <VDialog\n v-model=\"open\"\n max-width=\"540\"\n persistent\n >\n <VCard>\n <VCardTitle>\n {{ t('common.sortable.changeParent.title') }}\n </VCardTitle>\n\n <VCardText\n v-if=\"validCandidates.length === 0\"\n class=\"text-body-medium\"\n >\n <VAlert\n type=\"info\"\n variant=\"tonal\"\n density=\"compact\"\n >\n <strong>{{ t('common.sortable.changeParent.noTargetsTitle') }}</strong>\n <div>{{ t('common.sortable.changeParent.noTargetsText') }}</div>\n </VAlert>\n </VCardText>\n\n <template v-else>\n <VCardText class=\"pb-1\">\n <VList\n density=\"compact\"\n class=\"le-change-parent__list\"\n >\n <VListItem\n v-for=\"c in candidates\"\n :key=\"c.key === null ? '__root__' : String(c.key)\"\n :disabled=\"c.disallowed\"\n :active=\"selectedKey === c.key\"\n :title=\"c.label\"\n :subtitle=\"reasonLabel(c.reason)\"\n :style=\"{ paddingInlineStart: indent(c.depth) }\"\n :data-disallowed=\"c.disallowed ? 'true' : 'false'\"\n :data-reason=\"c.reason ?? ''\"\n @click=\"onCandidateClick(c)\"\n >\n <template #prepend>\n <VIcon\n v-if=\"c.key === null\"\n icon=\"mdi-folder-home-outline\"\n size=\"18\"\n />\n <VIcon\n v-else-if=\"c.hasChildren\"\n icon=\"mdi-folder-outline\"\n size=\"18\"\n />\n <VIcon\n v-else\n icon=\"mdi-file-outline\"\n size=\"18\"\n />\n </template>\n </VListItem>\n </VList>\n </VCardText>\n\n <VCardText\n v-if=\"showPlacementPicker\"\n class=\"pt-0\"\n >\n <div class=\"text-body-medium mb-2\">\n {{\n t('common.sortable.changeParent.placementHeading', {\n label: selectedCandidate?.label ?? '',\n })\n }}\n </div>\n <VRadioGroup\n v-model=\"placement\"\n density=\"compact\"\n hide-details\n >\n <VRadio\n value=\"first\"\n :label=\"t('common.sortable.changeParent.placeFirst')\"\n />\n <VRadio\n value=\"last\"\n :label=\"t('common.sortable.changeParent.placeLast')\"\n />\n </VRadioGroup>\n </VCardText>\n </template>\n\n <VCardActions>\n <VSpacer />\n <VBtn\n variant=\"text\"\n @click=\"onCancel\"\n >\n {{ t('common.sortable.reorderCancel') }}\n </VBtn>\n <VBtn\n color=\"primary\"\n variant=\"elevated\"\n :disabled=\"!selectedCandidate || selectedCandidate.disallowed\"\n @click=\"onConfirm\"\n >\n {{ t('common.sortable.changeParent.confirm') }}\n </VBtn>\n </VCardActions>\n </VCard>\n </VDialog>\n</template>\n\n<style lang=\"scss\" scoped>\n.le-change-parent__list {\n max-height: 340px;\n overflow-y: auto;\n}\n</style>\n","<script setup lang=\"ts\" generic=\"TItem extends Record<string, any>\">\nimport {\n computed,\n nextTick,\n onBeforeUnmount,\n onMounted,\n ref,\n shallowRef,\n useSlots,\n useTemplateRef,\n watch,\n} from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport { useContainerWidth } from '@/labs/listEditor/composables/useContainerWidth'\nimport { useIsTouchDevice } from '@/labs/listEditor/composables/useIsTouchDevice'\nimport { useKeyboardNav } from '@/labs/listEditor/composables/useKeyboardNav'\nimport { useSortable } from '@vueuse/integrations/useSortable'\nimport { type NestedViewItem } from '@/labs/listEditor/composables/useNestedListEditor'\nimport {\n useNestedListEditorController,\n type GetKey,\n type ListEditorValidationResult,\n type NestedListEditorHandle,\n type PositionOption,\n type PositionStrategy,\n} from '@/labs/listEditor/composables/useNestedListEditorController'\nimport {\n computeInstruction,\n type ExecutableInstruction,\n type Instruction,\n} from '@/labs/listEditor/composables/useDragInstruction'\nimport {\n provideListEditorStateScope,\n useNestedListEditorStateEntry,\n type NestedListEditorStateBindings,\n} from '@/labs/listEditor/composables/useListEditorStateScope'\nimport { resolveCompactText as resolveCompactTextUtil } from '@/labs/listEditor/composables/resolveCompactText'\nimport { useUnsavedSection } from '@/labs/unsavedGuard/useUnsavedSection'\nimport { useDeleteDialog } from '@/labs/listEditor/composables/useDeleteDialog'\nimport { useInlineEditing } from '@/labs/listEditor/composables/useInlineEditing'\nimport { validateAllAndReveal } from '@/labs/listEditor/utils/revealInvalidRows'\nimport { useListEditorScopeValidity } from '@/labs/listEditor/composables/useListEditorScopeValidity'\nimport { useReorderMode } from '@/labs/listEditor/composables/useReorderMode'\nimport { cloneDeep } from '@/utils/common'\nimport type {\n ListEditorKey,\n ListEditorValidationScope,\n ListEditorValidationState,\n NestedPositionHint,\n NestedTree,\n NestedTreeNode,\n} from '@/labs/listEditor/types/listEditorTypes'\nimport { useAlerts } from '@/composables/system/alerts'\nimport { stringToInt } from '@/utils/string'\nimport LeNestedRow from '@/labs/listEditor/internal/LeNestedRow.vue'\nimport LeDeleteDialog from '@/labs/listEditor/internal/LeDeleteDialog.vue'\nimport LeMoveToPositionDialog from '@/labs/listEditor/internal/LeMoveToPositionDialog.vue'\nimport LeChangeParentDialog from '@/labs/listEditor/internal/LeChangeParentDialog.vue'\nimport LeEmptyState from '@/labs/listEditor/internal/LeEmptyState.vue'\nimport LeStatus from '@/labs/listEditor/internal/LeStatus.vue'\nimport {\n DRAG_GHOST_CLASS,\n DRAG_CHOSEN_CLASS,\n DRAG_CLASS,\n} from '@/labs/listEditor/internal/constants'\n\nexport interface DecoratedNestedViewItem<T> extends NestedViewItem<T> {\n editing: boolean\n expanded: boolean\n childrenExpanded: boolean\n loading: boolean\n dirty: boolean\n moved: boolean\n unsaved: boolean\n}\n\nexport interface DragState {\n sourceKey: ListEditorKey\n sourceSubtreeDepth: number\n instruction: Instruction | null\n}\n\nexport type ReorderMode = 'view' | 'reorder'\n\n// Hoisted for vite-plugin-dts d.ts rollup.\nexport interface RowActions<TItem> {\n edit: () => void\n save: () => Promise<void> | void\n cancel: () => void\n close: () => void\n delete: () => Promise<void>\n addAfter: () => void\n addChild: () => void\n toggleExpand: () => void\n toggleDetail: () => void\n moveUp: () => void\n moveDown: () => void\n moveTop: () => void\n moveBottom: () => void\n indent: () => void\n outdent: () => void\n update: (data: TItem) => void\n}\nexport interface RowSlotProps<TItem extends Record<string, any>> {\n item: DecoratedNestedViewItem<TItem> & { validationState: ListEditorValidationState }\n raw: TItem\n index: number\n key: ListEditorKey\n depth: number\n parent: TItem | null\n parentKey: ListEditorKey | null\n childrenCount: number\n hasChildren: boolean\n childrenAllowed: boolean\n firstInParent: boolean\n lastInParent: boolean\n readonly: boolean\n disabled: boolean\n expanded: boolean\n childrenExpanded: boolean\n editing: boolean\n dirty: boolean\n unsaved: boolean\n moved: boolean\n reorderMode: boolean\n canMoveUp: boolean\n canMoveDown: boolean\n canIndent: boolean\n canOutdent: boolean\n canAddChild: boolean\n touch: boolean\n /**\n * Row-scoped `state-key` prefix. Thread it down to any list editor rendered in this slot and set\n * its `:state-key=\"`${stateKeyPrefix}:someList`\"` — that editor's controller then lives in THIS\n * editor's scope and survives the row collapsing (which unmounts the whole slot subtree). Entries\n * under this prefix are disposed when the row is removed.\n */\n stateKeyPrefix: string\n actions: RowActions<TItem>\n}\nexport interface ToolbarSlotProps {\n applying: boolean\n hasPendingChanges: boolean\n movedCount: number\n error: string | null\n actions: { apply: () => Promise<void>; cancel: () => void }\n}\nexport interface ReorderToggleSlotProps {\n mode: ReorderMode\n disabled: boolean\n hasPendingChanges: boolean\n actions: { enterReorderMode: () => void; exitReorderMode: () => void }\n}\nexport interface HeaderSlotProps extends ReorderToggleSlotProps {\n title: string | null\n}\nexport interface EmptySlotProps {\n readonly: boolean\n disabled: boolean\n actions: { add: () => void }\n}\nexport interface AddButtonSlotProps {\n readonly: boolean\n disabled: boolean\n props: { onClick: () => void }\n actions: { add: () => void }\n}\n\nexport interface Props<TItem extends Record<string, any>> {\n maxDepth: number\n\n /**\n * New-row factory; if set, add/add-after/add-inside insert through the\n * controller (no `@add` handler needed). Optional for read-only trees.\n */\n factory?: () => TItem\n /**\n * Stable row identity. Default `'id'`. Never point at the position field.\n * Typed `string` (not `keyof TItem`): a bare keyof compiles to a Boolean-only\n * runtime type that silently coerces `get-key=\"id\"` to `true`.\n */\n getKey?: string | ((item: TItem) => ListEditorKey)\n /**\n * Managed order field. Default `'position'`; `false` opts out. Typed\n * `[String, Boolean, Object]` with `string` before `false`: a bare keyof\n * compiles Boolean-only, and `false`-first would coerce `position=\"position\"`\n * (value == prop name) to `true`. Object form folds in `{ field, multiplier }`.\n */\n position?: string | false | { field: string; multiplier?: number; strategy?: PositionStrategy }\n /** Parent-key field written onto reparented rows. Default `'parent'`. */\n parentField?: string\n /**\n * Extra fields dropped from the dirty content-hash (position + parent always\n * dropped), e.g. a child collection tracked by a separate editor.\n */\n dirtyExclude?: string[]\n /** Per-row validity — `true` (or `{ valid: true }`) = VALID. Drives the red rail + save guard. */\n validate?: (item: TItem) => ListEditorValidationResult\n /**\n * Vuelidate `$scope` (the same one the consumer's row forms / save-gate collector use). When set,\n * the editor registers its aggregate validity under it, so a plain `v$.$invalid` save gate blocks\n * AND reveals a collapsed invalid row — no `validateAll()` call needed in the save flow. Omit to\n * keep legacy behavior (gate the save on the exposed `validateAll()` yourself); `false` opts out.\n */\n validationScope?: ListEditorValidationScope | false\n /**\n * Opt-in lifted controller (`useNestedListEditorController()`) so state\n * survives unmount/remount; omitted = internal controller. Same handle\n * reachable via `useTemplateRef`.\n */\n editor?: NestedListEditorHandle<TItem>\n /**\n * Persist this editor's controller in the nearest ANCESTOR editor's row-state scope under this\n * key, instead of owning it. Use it for an editor rendered in another editor's `#item` slot (that\n * slot is behind a `v-if`, so collapsing the row unmounts this editor and a component-owned\n * controller would re-baseline the already-edited tree on re-expand). Derive the key from the row\n * slot's `stateKeyPrefix`. Options stay declared here, on this tag. Ignored when `:editor` is\n * passed, and a no-op without an ancestor scope.\n */\n stateKey?: string\n\n readonly?: boolean\n disabled?: boolean\n loading?: boolean\n error?: string | null\n\n title?: string | null\n\n compactField?: string | null\n statusField?: string | null\n\n showAddButton?: boolean\n showAddChildButton?: boolean\n showDeleteButton?: boolean\n showEditButton?: boolean\n showAddAfterAction?: boolean\n showMoveToPosition?: boolean\n showChangeParent?: boolean\n showExpandToggle?: boolean\n\n addLabel?: string | null\n emptyTitle?: string | null\n\n disableRowClick?: boolean\n disableDeleteConfirm?: boolean\n deleteConfirmTitle?: string | null\n deleteConfirmText?: string | null\n /**\n * How a row delete persists. `deferred` (default): the row disappears but the deletion counts as an\n * unconfirmed change until save (revertible until then, incl. via reorder Cancel). `immediate`: the\n * consumer deletes on the backend — the dialog says it is irreversible and it does NOT read as unsaved.\n */\n deleteMode?: 'immediate' | 'deferred'\n\n closeVariant?: 'auto' | 'icon' | 'labeled'\n\n loadingKeys?: Set<ListEditorKey> | null\n\n showReorderToggle?: boolean\n disableReorder?: boolean\n disableDrag?: boolean\n\n onDeleteConfirm?: (item: TItem) => Promise<boolean> | boolean\n onDelete?: (item: TItem) => Promise<void> | void\n onItemSave?: (item: TItem) => Promise<void> | void\n onReorderApply?: (tree: NestedTree<TItem>) => Promise<void> | void\n\n /** Registers this editor as a named unsaved-changes section under the given (translated) label. */\n unsavedSectionLabel?: string\n}\n\nconst props = withDefaults(defineProps<Props<TItem>>(), {\n unsavedSectionLabel: undefined,\n factory: undefined,\n getKey: undefined,\n position: undefined,\n parentField: 'parent',\n dirtyExclude: undefined,\n validate: undefined,\n validationScope: undefined,\n editor: undefined,\n stateKey: undefined,\n readonly: false,\n disabled: false,\n loading: false,\n error: null,\n title: null,\n compactField: null,\n statusField: null,\n showAddButton: true,\n showAddChildButton: true,\n showDeleteButton: true,\n showEditButton: true,\n showAddAfterAction: false,\n showMoveToPosition: false,\n showChangeParent: false,\n showExpandToggle: true,\n addLabel: null,\n emptyTitle: null,\n disableRowClick: false,\n disableDeleteConfirm: false,\n deleteConfirmTitle: null,\n deleteConfirmText: null,\n deleteMode: 'deferred',\n closeVariant: 'auto',\n loadingKeys: null,\n showReorderToggle: true,\n disableReorder: false,\n disableDrag: false,\n onDeleteConfirm: undefined,\n onDelete: undefined,\n onItemSave: undefined,\n onReorderApply: undefined,\n})\n\nconst emit = defineEmits<{\n add: [hint: NestedPositionHint | undefined]\n 'add-child': [parent: NestedViewItem<TItem>]\n edit: [item: NestedViewItem<TItem>]\n deleted: [item: NestedViewItem<TItem>]\n close: [item: NestedViewItem<TItem>]\n 'item-saved': [item: NestedViewItem<TItem>]\n 'item-expand': [item: NestedViewItem<TItem>, expanded: boolean]\n 'reorder-start': []\n 'reorder-cancel': []\n 'reorder-applied': [tree: NestedTree<TItem>]\n 'reorder-apply-error': [error: unknown]\n 'reorder-end': []\n indent: [item: NestedViewItem<TItem>]\n outdent: [item: NestedViewItem<TItem>]\n}>()\n\nconst modelValue = defineModel<NestedTree<TItem>>({ required: true })\nconst mode = defineModel<ReorderMode>('mode', { default: 'view' })\n\ndefineSlots<{\n header?: (props: HeaderSlotProps) => unknown\n 'reorder-toggle'?: (props: ReorderToggleSlotProps) => unknown\n 'reorder-toolbar'?: (props: ToolbarSlotProps) => unknown\n empty?: (props: EmptySlotProps) => unknown\n 'add-button'?: (props: AddButtonSlotProps) => unknown\n item?: (props: RowSlotProps<TItem>) => unknown\n 'item-compact'?: (props: RowSlotProps<TItem>) => unknown\n 'item-readonly'?: (props: RowSlotProps<TItem>) => unknown\n 'item-status'?: (props: RowSlotProps<TItem>) => unknown\n 'item-footer'?: (props: RowSlotProps<TItem>) => unknown\n 'item-actions'?: (props: RowSlotProps<TItem>) => unknown\n 'before-item'?: (props: RowSlotProps<TItem>) => unknown\n 'after-item'?: (props: RowSlotProps<TItem>) => unknown\n}>()\n\nconst { t } = useI18n()\nconst slots = useSlots()\nconst { showWarningT } = useAlerts()\n\nconst rootEl = useTemplateRef<HTMLElement>('rootEl')\nconst { isNarrow } = useContainerWidth(rootEl)\n\nconst isTouch = useIsTouchDevice()\n\nconst effectiveCloseVariant = computed<'icon' | 'labeled'>(() => {\n if (props.closeVariant === 'icon') return 'icon'\n if (props.closeVariant === 'labeled') return 'labeled'\n return isNarrow.value ? 'icon' : 'labeled'\n})\n\nconst childrenExpandedKeys = ref<Set<ListEditorKey>>(new Set())\n// Readonly detail body visibility — independent of subtree expansion.\nconst detailExpandedKeys = ref<Set<ListEditorKey>>(new Set())\n\n// Local mirror of the controller's key resolution so walkers + the template key\n// rows the same way the controller tracks them. Construction-time config, read once.\n/* eslint-disable vue/no-setup-props-reactivity-loss */\nconst getKeyOpt = props.getKey ?? 'id'\nconst keyFieldName = (typeof getKeyOpt === 'function' ? 'id' : getKeyOpt) as string\nconst keyOf = (data: TItem): ListEditorKey =>\n typeof getKeyOpt === 'function'\n ? getKeyOpt(data)\n : (data[getKeyOpt as keyof TItem] as ListEditorKey)\n\n// Managed position field (row position, move-to-position dialog, flatViewItems). Mirrors the controller.\nconst positionFieldName = ((): string => {\n const p = props.position\n if (p === undefined || p === false) return 'position'\n if (typeof p === 'object') return p.field\n return p\n})()\n\nconst initChildrenExpanded = (tree: NestedTree<TItem>) => {\n const walk = (nodes: NestedTreeNode<TItem>[]) => {\n for (const n of nodes) {\n if (n.children && n.children.length > 0) {\n childrenExpandedKeys.value.add(keyOf(n.data))\n walk(n.children)\n }\n }\n }\n walk(tree.children)\n}\n// eslint-disable-next-line vue/no-ref-object-reactivity-loss\ninitChildrenExpanded(modelValue.value)\n\n// State controller (v2). Undefined getKey/position/validate fall back to controller defaults\n// ('id' / 'position' / always-valid). Its `viewItems` ignores expand state, so we re-project an\n// expand-aware list below (flatViewItems).\nconst controllerOptions: NestedListEditorStateBindings<TItem> = {\n get: () => modelValue.value,\n set: (v) => (modelValue.value = v),\n factory: props.factory,\n getKey: props.getKey as GetKey<TItem> | undefined,\n position: props.position as PositionOption<TItem> | undefined,\n parentField: props.parentField,\n maxDepth: props.maxDepth,\n dirtyExclude: () => props.dirtyExclude ?? [],\n validate: props.validate,\n}\n// Precedence: an explicitly lifted `:editor` wins; then a `state-key`'d entry persisted in the\n// nearest ancestor editor's row-state scope (rebound to this instance on every remount); else this\n// component owns the controller — today's behaviour, unchanged.\nconst stateEntry = props.editor\n ? null\n : useNestedListEditorStateEntry<TItem>(props.stateKey, controllerOptions)\nconst controller =\n props.editor ?? stateEntry?.handle ?? useNestedListEditorController<TItem>(controllerOptions)\n/* eslint-enable vue/no-setup-props-reactivity-loss */\n\n// Row-state scope for THIS editor's `#item` slot subtree — see ASortableListEditor.\nconst rowStateScope = provideListEditorStateScope(stateEntry?.childScope ?? null)\n\n// FULL flattened list (collapsed-branch rows included) built directly off the\n// tree: the recursive renderer (LeNestedRow) filters by parentKey + childrenExpandedKeys,\n// so it needs every row present in viewItemsDecorated even when hidden.\nconst flatViewItems = computed<NestedViewItem<TItem>[]>(() => {\n const flat: NestedViewItem<TItem>[] = []\n let flatIndex = 0\n const maxDepth = props.maxDepth\n const walk = (\n nodes: NestedTreeNode<TItem>[],\n depth: number,\n parentNode: NestedTreeNode<TItem> | null,\n ) => {\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i]\n const key = keyOf(node.data)\n const childrenAllowed = node.children !== undefined\n const hasChildren = childrenAllowed && (node.children?.length ?? 0) > 0\n const childrenCount = node.children?.length ?? 0\n const remainingDepth = maxDepth - (depth + 1)\n flat.push({\n key,\n index: flatIndex++,\n raw: node.data,\n position: node.data[positionFieldName] as number | undefined,\n node,\n depth,\n parent: parentNode?.data ?? null,\n parentKey: parentNode ? keyOf(parentNode.data) : null,\n childrenCount,\n hasChildren,\n childrenAllowed,\n siblingIndex: i,\n siblingCount: nodes.length,\n firstInParent: i === 0,\n lastInParent: i === nodes.length - 1,\n canAddChild: childrenAllowed && remainingDepth > 0,\n canIndent: i > 0,\n canOutdent: depth > 0,\n })\n if (hasChildren) walk(node.children as NestedTreeNode<TItem>[], depth + 1, node)\n }\n }\n walk(modelValue.value.children, 0, null)\n return flat\n})\n\n// Drop the persisted controllers of rows that no longer exist. `post` so the removed row's subtree\n// has already unmounted (its editors released their entries) before we stop their effect scopes.\nwatch(\n () => flatViewItems.value.map((vi) => String(vi.key)).join('|'),\n () => rowStateScope.retainOwners(flatViewItems.value.map((vi) => vi.key)),\n { flush: 'post' },\n)\n\n// Snapshot for reorder-cancel restore only; dirty detection lives in the controller.\n// `movedKeys` is component view state driving the toolbar \"N pending\" counter,\n// cleared on every mode transition by `useReorderMode`.\nconst snapshot = shallowRef<NestedTree<TItem> | null>(null)\nconst movedKeys = ref<Set<ListEditorKey>>(new Set())\n// Deletes made during the current reorder session, split by mode — deferred ones count in the toolbar\n// and revert on Cancel; immediate (backend) ones are re-applied on Cancel so they stay gone (else the\n// snapshot-restore would resurrect a server-deleted row). Mirrors ASortableListEditor.\nconst sessionDeferredDeletes = ref<Set<ListEditorKey>>(new Set())\nconst sessionImmediateDeletes = ref<Set<ListEditorKey>>(new Set())\n\n// Re-baseline current tree as saved. Legacy name kept; maps onto `controller.commit()`.\nconst resetDirtyBaseline = () => {\n controller.commit()\n movedKeys.value = new Set()\n}\n// Mark row + every descendant moved — a moved parent visually carries its subtree.\nconst markMoved = (key: ListEditorKey) => {\n const { node } = controller.findNode(key)\n if (!node) {\n movedKeys.value.add(key)\n return\n }\n const collect = (n: NestedTreeNode<TItem>) => {\n movedKeys.value.add(keyOf(n.data))\n if (n.children) n.children.forEach(collect)\n }\n collect(node)\n}\n\nconst decoratorCache = new Map<ListEditorKey, DecoratedNestedViewItem<TItem>>()\nconst viewItemsDecorated = computed<DecoratedNestedViewItem<TItem>[]>(() => {\n const next: DecoratedNestedViewItem<TItem>[] = []\n const liveKeys = new Set<ListEditorKey>()\n for (const vi of flatViewItems.value) {\n liveKeys.add(vi.key)\n const editing = editingKeys.value.has(vi.key)\n const expanded = detailExpandedKeys.value.has(vi.key)\n const childrenExpanded = childrenExpandedKeys.value.has(vi.key)\n const loading = props.loadingKeys?.has(vi.key) ?? false\n const moved = movedKeys.value.has(vi.key)\n // Amber = controller dirty OR reorder-session moved. readonly suppresses it\n // (read-only views can't be unsaved; also dodges a mount-before-load baseline). (QA 85050 sweep)\n const dirty = props.readonly ? false : controller.isUnsaved(vi.key)\n const unsaved = props.readonly ? false : dirty || moved\n const cached = decoratorCache.get(vi.key)\n if (\n cached &&\n cached.raw === vi.raw &&\n cached.index === vi.index &&\n cached.position === vi.position &&\n cached.depth === vi.depth &&\n cached.parentKey === vi.parentKey &&\n cached.childrenCount === vi.childrenCount &&\n cached.firstInParent === vi.firstInParent &&\n cached.lastInParent === vi.lastInParent &&\n cached.editing === editing &&\n cached.expanded === expanded &&\n cached.childrenExpanded === childrenExpanded &&\n cached.loading === loading &&\n cached.dirty === dirty &&\n cached.moved === moved &&\n cached.unsaved === unsaved\n ) {\n next.push(cached)\n continue\n }\n const decorated: DecoratedNestedViewItem<TItem> = {\n ...vi,\n editing,\n expanded,\n childrenExpanded,\n loading,\n dirty,\n moved,\n unsaved,\n }\n decoratorCache.set(vi.key, decorated)\n next.push(decorated)\n }\n for (const key of decoratorCache.keys()) {\n if (!liveKeys.has(key)) decoratorCache.delete(key)\n }\n return next\n})\n\nconst isEmpty = computed(() => modelValue.value.children.length === 0)\nconst totalItemCount = computed(() => flatViewItems.value.length)\n\nconst rowsContainer = useTemplateRef<HTMLElement>('rowsContainer')\n\nconst canInteract = computed(() => !props.readonly && !props.disabled && !props.loading)\nconst canEnterReorder = computed(\n () => canInteract.value && !props.disableReorder && totalItemCount.value > 1,\n)\n\nconst isInlineEdit = computed(() => !!(slots as Record<string, unknown>).item)\nconst hasReadonlyDetail = computed(() => !!(slots as Record<string, unknown>)['item-readonly'])\nconst showInlineSaveFooter = computed(() => !!props.onItemSave)\n\nconst {\n editingKeys,\n editingSnapshots,\n clearEditing,\n beginEdit,\n cancelEdit,\n commitEdit,\n closeEdit,\n requestAutoOpen,\n} = useInlineEditing<TItem, NestedViewItem<TItem>>({\n rowsContainer,\n rowSelector: '.a-le-row-wrapper',\n isInlineEdit,\n // markDirty=false: restoring the pre-edit snapshot on cancel must not flag the\n // node dirty (it would otherwise be resent by partial-multi saves).\n restoreSnapshot: (key, data) => controller.updateItem(key, data, false),\n watchKeys: () => {\n const keys: ListEditorKey[] = []\n const walk = (nodes: NestedTreeNode<TItem>[]) => {\n for (const n of nodes) {\n keys.push(keyOf(n.data))\n if (n.children && n.children.length) walk(n.children)\n }\n }\n walk(modelValue.value.children)\n return keys\n },\n findEntry: (key) => {\n const { node } = controller.findNode(key)\n return node ? { data: node.data } : null\n },\n afterAutoOpen: (key) => {\n const { parent } = controller.findNode(key)\n if (parent) {\n childrenExpandedKeys.value.add(keyOf(parent.data))\n }\n },\n})\n\nconst {\n applying,\n applyError,\n hasPendingChanges,\n movedCount,\n reorderMode,\n enterReorderMode,\n cancelReorderMode,\n applyReorder,\n} = useReorderMode<NestedTree<TItem>>({\n mode,\n snapshot,\n movedKeys,\n modelValue,\n cloneModel: (m) => cloneDeep(m) as NestedTree<TItem>,\n applyModel: (m) => {\n modelValue.value = m\n },\n canEnterReorder,\n onEnter: () => {\n sessionDeferredDeletes.value = new Set()\n sessionImmediateDeletes.value = new Set()\n clearEditing()\n // Expand every branch so all rows are reachable drag targets.\n for (const k of expandableKeys.value) childrenExpandedKeys.value.add(k)\n nextTick(() => {\n if (dragEnabled.value) initSortables()\n })\n },\n onExternalEnter: () => {\n sessionDeferredDeletes.value = new Set()\n sessionImmediateDeletes.value = new Set()\n clearEditing()\n },\n // Cancel: the snapshot-restore has brought every deleted row back; reconcile the controller so a\n // deferred delete truly reverts (clear tombstone, row stays) and an immediate delete stays gone (row\n // removed again — it is deleted on the backend and must not resurrect / be re-created by a save).\n onCancel: () => {\n for (const key of sessionDeferredDeletes.value) controller.restoreDeleted(key)\n for (const key of sessionImmediateDeletes.value)\n controller.deleteItem(key, { trackDeleted: false })\n sessionDeferredDeletes.value = new Set()\n sessionImmediateDeletes.value = new Set()\n destroySortables()\n },\n onApplyEnd: () => {\n sessionDeferredDeletes.value = new Set()\n sessionImmediateDeletes.value = new Set()\n destroySortables()\n },\n onReorderApply: (tree) => props.onReorderApply?.(tree),\n emit: {\n reorderStart: () => emit('reorder-start'),\n reorderCancel: () => emit('reorder-cancel'),\n reorderApplied: (payload) => emit('reorder-applied', payload),\n reorderApplyError: (err) => emit('reorder-apply-error', err),\n reorderEnd: () => emit('reorder-end'),\n },\n})\n\n// Reorder-toolbar pending indicator = session moves + deferred deletes made in the session, so a delete\n// in reorder mode no longer reads as \"no pending changes\" and Apply stays enabled.\nconst nestedPendingCount = computed<number>(\n () => movedCount.value + sessionDeferredDeletes.value.size,\n)\nconst nestedPendingChanges = computed<boolean>(\n () => hasPendingChanges.value || sessionDeferredDeletes.value.size > 0,\n)\n\nconst canAdd = computed(() => canInteract.value && props.showAddButton && !reorderMode.value)\nconst dragEnabled = computed(() => reorderMode.value && !isTouch.value && !props.disableDrag)\n\nconst addLabelResolved = computed(() =>\n props.addLabel ? t(props.addLabel) : t('common.sortable.add'),\n)\nconst emptyTitleResolved = computed(() => props.emptyTitle ?? t('common.sortable.emptyTitle'))\nconst deleteConfirmTitleResolved = computed(\n () => props.deleteConfirmTitle ?? t('common.sortable.deleteConfirmTitle'),\n)\nconst deleteConfirmTextResolved = computed(\n () =>\n props.deleteConfirmText ??\n (props.deleteMode === 'immediate'\n ? t('common.sortable.deleteConfirmText')\n : t('common.sortable.deleteConfirmTextDeferred')),\n)\n\nconst reorderToggleVisible = computed<boolean>(\n (): boolean =>\n !props.readonly && props.showReorderToggle && !reorderMode.value && totalItemCount.value > 0,\n)\n\nconst compactReorderButton = computed<boolean>((): boolean => !!props.title && isNarrow.value)\n\n// Keys of every node that has children — the expand/collapse candidates.\nconst expandableKeys = computed<ListEditorKey[]>(() => {\n const out: ListEditorKey[] = []\n const walk = (nodes: NestedTreeNode<TItem>[]) => {\n for (const n of nodes) {\n if (n.children && n.children.length > 0) {\n out.push(keyOf(n.data))\n walk(n.children)\n }\n }\n }\n walk(modelValue.value.children)\n return out\n})\n\nconst allExpanded = computed<boolean>(\n () =>\n expandableKeys.value.length > 0 &&\n expandableKeys.value.every((k) => childrenExpandedKeys.value.has(k)),\n)\n\nconst expandAllVisible = computed<boolean>(\n () => !reorderMode.value && expandableKeys.value.length > 0,\n)\n\nconst toggleExpandAll = () => {\n if (allExpanded.value) {\n for (const k of expandableKeys.value) childrenExpandedKeys.value.delete(k)\n } else {\n for (const k of expandableKeys.value) childrenExpandedKeys.value.add(k)\n }\n}\n\nconst headerVisible = computed<boolean>(\n (): boolean =>\n !!(\n props.title ||\n (slots as Record<string, unknown>).header ||\n (slots as Record<string, unknown>)['reorder-toggle'] ||\n reorderToggleVisible.value ||\n expandAllVisible.value ||\n reorderMode.value\n ),\n)\n\n// One Sortable instance per group so drag/drop moves items within/between groups;\n// SortableJS owns the pointer events, onEnd reconciles via editor.moveTo().\nconst sortableInstances = ref<\n Array<{ stop: () => void; option?: (k: string, v: unknown) => void }>\n>([])\nconst forceRerender = ref(0)\n\nconst destroySortables = () => {\n for (const s of sortableInstances.value) {\n try {\n s.stop()\n } catch {\n // no-op\n }\n }\n sortableInstances.value = []\n}\n\nconst GROUP_CLASS = 'a-nested-list-editor__group'\nconst HANDLE_CLASS = 'a-le-drag-handle'\n\n// Live drag state. `instruction` is recomputed on every pointermove and encodes\n// where + at what depth the dragged item lands (sibling-above/below/make-child/blocked);\n// the overlay reads it, onEnd applies it via `editor.moveTo`. SortableJS never moves\n// the DOM (onMove always returns false) — hit-testing, depth and the mutation are all ours.\nconst dragState = ref<DragState | null>(null)\n\n// Drop indicator anchor geometry, kept in sync with CSS (reorder-mode header\n// padding-left = 12 + depth*24, drag handle = 20px). ANCHOR_X = 12 + half handle\n// (10) = 22 puts the dot on the handle's centre; the line steps 24px per depth.\nconst INDENT_PX = 24\nconst ANCHOR_X = 22\n\nconst hitTestRow = (\n clientX: number,\n clientY: number,\n): { el: HTMLElement; viewItem: DecoratedNestedViewItem<TItem> } | null => {\n const hit = document.elementFromPoint(clientX, clientY) as HTMLElement | null\n if (!hit) return null\n const wrapper = hit.closest('.a-le-row-wrapper') as HTMLElement | null\n if (!wrapper) return null\n // Only wrappers inside our rowsContainer — elementFromPoint could hit a\n // different ANestedSortableListEditor instance on the same page.\n if (!rowsContainer.value || !rowsContainer.value.contains(wrapper)) return null\n const key = parseKey(wrapper.getAttribute('data-id'))\n if (key === null) return null\n const vi = viewItemsDecorated.value.find((v) => v.key === key)\n if (!vi) return null\n return { el: wrapper, viewItem: vi }\n}\n\nconst recomputeInstruction = (clientX: number, clientY: number) => {\n if (!dragState.value || !rowsContainer.value) return\n const hit = hitTestRow(clientX, clientY)\n if (!hit) {\n dragState.value.instruction = null\n return\n }\n const containerRect = rowsContainer.value.getBoundingClientRect()\n // Hit-test the `.a-le-row` child, not the wrapper — the wrapper's height\n // balloons when children are rendered.\n const rowEl = hit.el.querySelector(':scope > .a-le-row') as HTMLElement | null\n const rowRect = (rowEl ?? hit.el).getBoundingClientRect()\n dragState.value.instruction = computeInstruction({\n pointer: { x: clientX, y: clientY },\n hoveredRow: {\n key: hit.viewItem.key,\n rect: rowRect,\n depth: hit.viewItem.depth,\n parentKey: hit.viewItem.parentKey,\n siblingIndex: hit.viewItem.siblingIndex,\n siblingCount: hit.viewItem.siblingCount,\n },\n sourceKey: dragState.value.sourceKey,\n sourceSubtreeDepth: dragState.value.sourceSubtreeDepth,\n viewItems: viewItemsDecorated.value,\n maxDepth: props.maxDepth,\n indentPx: INDENT_PX,\n containerLeft: containerRect.left,\n containerPaddingLeft: ANCHOR_X,\n })\n}\n\nconst onPointerMove = (e: PointerEvent) => {\n recomputeInstruction(e.clientX, e.clientY)\n}\n\nconst applyInstruction = (inst: ExecutableInstruction, sourceKey: ListEditorKey) => {\n const ok = controller.moveTo(sourceKey, inst.parentKey, inst.index)\n if (!ok) {\n showWarningT('common.sortable.error.maxDeepExceed')\n forceRerender.value++\n nextTick(() => initSortables())\n return\n }\n markMoved(sourceKey)\n // makeChild: expand the new parent so the just-moved row doesn't vanish into a collapsed branch.\n if (inst.makeChild && inst.parentKey !== null) {\n childrenExpandedKeys.value.add(inst.parentKey)\n }\n}\n\nconst initSortables = () => {\n destroySortables()\n if (!dragEnabled.value) return\n if (!rowsContainer.value) return\n const groups = Array.from(rowsContainer.value.querySelectorAll<HTMLElement>('.' + GROUP_CLASS))\n for (const group of groups) {\n const sortable = useSortable(group, [], {\n group: { name: 'a-nested', pull: true, put: true },\n handle: '.' + HANDLE_CLASS,\n animation: 0,\n ghostClass: DRAG_GHOST_CLASS,\n chosenClass: DRAG_CHOSEN_CLASS,\n dragClass: DRAG_CLASS,\n fallbackOnBody: true,\n forceFallback: true,\n fallbackTolerance: 3,\n onStart: (event) => {\n const draggedEl = event.item as HTMLElement\n const id = parseKey(draggedEl.getAttribute('data-id'))\n if (id === null) return\n const draggedNode = controller.findNode(id).node\n const subtreeDepth = draggedNode ? controller.calculateSubtreeDepth(draggedNode) : 1\n dragState.value = {\n sourceKey: id,\n sourceSubtreeDepth: subtreeDepth,\n instruction: null,\n }\n document.addEventListener('pointermove', onPointerMove, { passive: true })\n },\n onMove: (event) => {\n // Also track the pointer via SortableJS's stream — keeps `instruction`\n // in sync when the browser coalesces pointermove events during fast drags.\n const orig = (event as unknown as { originalEvent?: Event }).originalEvent\n if (orig) {\n if ('clientX' in orig && 'clientY' in orig) {\n recomputeInstruction((orig as MouseEvent).clientX, (orig as MouseEvent).clientY)\n } else if ('touches' in orig) {\n const tev = orig as TouchEvent\n if (tev.touches.length > 0) {\n recomputeInstruction(tev.touches[0].clientX, tev.touches[0].clientY)\n }\n }\n }\n // Refuse SortableJS's own DOM insertion — onEnd's `editor.moveTo` drives the move.\n return false\n },\n onEnd: () => {\n document.removeEventListener('pointermove', onPointerMove)\n const state = dragState.value\n dragState.value = null\n if (!state) return\n const inst = state.instruction\n if (inst === null) return\n if (inst.type === 'blocked') return\n applyInstruction(inst, state.sourceKey)\n },\n })\n sortableInstances.value.push(sortable)\n }\n}\n\nconst parseKey = (raw: string | null): ListEditorKey | null => {\n if (raw === null || raw === '') return null\n // Numeric key only when `data-id` is a pure integer string (incl. negative temp\n // ids like \"-1\"); else a DocId/UUID. The old `n > 0` test sent negative temp ids\n // to the string branch, so a freshly-added row's move marked the wrong key.\n const n = stringToInt(raw)\n return String(n) === raw ? n : raw\n}\n\nwatch(\n () => dragEnabled.value,\n () => {\n if (dragEnabled.value) nextTick(() => initSortables())\n else destroySortables()\n },\n)\n\nwatch(\n () => forceRerender.value,\n () => {\n if (dragEnabled.value) nextTick(() => initSortables())\n },\n)\n\n// Rebuild sortables when the tree shape changes during drag mode, else newly rendered groups aren't draggable.\nwatch(\n () => viewItemsDecorated.value.map((v) => v.key).join('|'),\n () => {\n if (dragEnabled.value) nextTick(() => initSortables())\n },\n)\n\nonMounted(() => {\n if (dragEnabled.value) initSortables()\n})\nonBeforeUnmount(() => {\n destroySortables()\n document.removeEventListener('pointermove', onPointerMove)\n})\n\n// Overlay visual props from the current instruction; `null` = hidden (no\n// instruction, or blocked). The optional connector is a rail from the drop line\n// up to the row whose level dictates the insert. Measured via getBoundingClientRect\n// rather than CSS anchor positioning: Chrome's anchor-reachability rule excludes\n// some deeply-nested descendants, so JS measurement is simpler and more reliable.\ntype OverlayVisual = {\n line: { top: number; left: number; right: number }\n connector: { top: number; height: number; left: number } | null\n}\n\nconst overlayVisual = computed<OverlayVisual | null>(() => {\n const state = dragState.value\n if (!state || state.instruction === null || !rowsContainer.value) return null\n const inst = state.instruction\n // Blocked drops render nothing — the silent empty space is the \"not here\" signal.\n if (inst.type === 'blocked') return null\n const refWrapper = rowsContainer.value.querySelector<HTMLElement>(\n `.a-le-row-wrapper[data-id=\"${CSS.escape(String(inst.refKey))}\"]`,\n )\n if (!refWrapper) return null\n const rowEl = refWrapper.querySelector<HTMLElement>(':scope > .a-le-row')\n const containerRect = rowsContainer.value.getBoundingClientRect()\n const rowRect = (rowEl ?? refWrapper).getBoundingClientRect()\n\n const lineLeft = ANCHOR_X + inst.depth * INDENT_PX\n const lineTop =\n inst.refEdge === 'top' ? rowRect.top - containerRect.top : rowRect.bottom - containerRect.top\n const line = { top: lineTop, left: lineLeft, right: 16 }\n\n let connector: OverlayVisual['connector'] = null\n if (inst.levelRowKey !== null) {\n const levelWrapper = rowsContainer.value.querySelector<HTMLElement>(\n `.a-le-row-wrapper[data-id=\"${CSS.escape(String(inst.levelRowKey))}\"]`,\n )\n if (levelWrapper) {\n const levelRow = levelWrapper.querySelector<HTMLElement>(':scope > .a-le-row')\n const levelRect = (levelRow ?? levelWrapper).getBoundingClientRect()\n const levelCentreY = levelRect.top - containerRect.top + levelRect.height / 2\n if (levelCentreY < lineTop) {\n connector = {\n top: levelCentreY,\n height: lineTop - levelCentreY,\n left: lineLeft,\n }\n }\n }\n }\n\n return { line, connector }\n})\n\n// With a `factory`, the editor inserts through the controller; without one it\n// stays emit-only so legacy `@add` consumers drive the insert. The `add` event\n// fires either way.\nconst onAddClick = () => {\n if (!canAdd.value) return\n requestAutoOpen()\n if (props.factory) controller.addItem()\n emit('add', undefined)\n}\n\nconst onRowAddAfterClick = (vi: NestedViewItem<TItem>) => {\n if (!canInteract.value) return\n requestAutoOpen()\n if (props.factory) controller.addAfter(vi.key, undefined, vi.childrenAllowed)\n emit('add', { afterId: vi.key, childrenAllowed: vi.childrenAllowed })\n}\n\nconst onAddChildClick = (vi: NestedViewItem<TItem>) => {\n if (!canInteract.value) return\n if (!vi.canAddChild) return\n requestAutoOpen()\n childrenExpandedKeys.value.add(vi.key)\n emit('add-child', vi)\n // Append to the end of children, matching the root \"Add item\" semantic.\n // (Drag-drop make-child still lands at index 0 — its drop line sits just below the parent.)\n if (props.factory) controller.addChild(vi.key, undefined, true)\n emit('add', { parentId: vi.key, childrenAllowed: true })\n}\n\nconst onEditClick = (vi: NestedViewItem<TItem>) => {\n if (!canInteract.value || reorderMode.value) return\n // Clicking edit while already editing closes the form, so the pencil toggles like the row header.\n if (editingKeys.value.has(vi.key)) {\n onCloseClick(vi)\n return\n }\n if (isInlineEdit.value) {\n beginEdit(vi)\n }\n emit('edit', vi)\n}\n\n// Toggles tree children visibility (distinct from the readonly-detail body below).\nconst onChevronClick = (vi: NestedViewItem<TItem>) => {\n if (props.disabled || props.loading) return\n const key = vi.key\n const currently = childrenExpandedKeys.value.has(key)\n if (currently) childrenExpandedKeys.value.delete(key)\n else childrenExpandedKeys.value.add(key)\n emit('item-expand', vi, !currently)\n}\n\n// Toggles the row's readonly-detail body (separate from tree children).\nconst onDetailToggle = (vi: NestedViewItem<TItem>) => {\n if (props.disabled || props.loading) return\n const key = vi.key\n const currently = detailExpandedKeys.value.has(key)\n if (currently) detailExpandedKeys.value.delete(key)\n else detailExpandedKeys.value.add(key)\n emit('item-expand', vi, !currently)\n}\n\nconst isRowClickable = (vi: DecoratedNestedViewItem<TItem>): boolean => {\n if (props.disableRowClick) return false\n if (props.disabled || props.loading) return false\n if (reorderMode.value) return false\n if (vi.editing || vi.expanded) return true\n if (!props.readonly && props.showEditButton) return true\n return false\n}\n\nconst onRowClick = (vi: DecoratedNestedViewItem<TItem>) => {\n if (!isRowClickable(vi)) return\n if (vi.editing || vi.expanded) {\n onCloseClick(vi)\n return\n }\n if (props.readonly && hasReadonlyDetail.value) onDetailToggle(vi)\n else onEditClick(vi)\n}\n\nconst {\n deleteDialog,\n deleteInFlight,\n deleteError,\n onDeleteClick: triggerDeleteClick,\n onDeleteDialogConfirm,\n onDeleteDialogCancel,\n} = useDeleteDialog<TItem, NestedViewItem<TItem>>({\n onDeleteConfirm: (raw) => (props.onDeleteConfirm ? props.onDeleteConfirm(raw) : true),\n onDelete: (raw) => props.onDelete?.(raw),\n onDeleted: (vi) => {\n editingKeys.value.delete(vi.key)\n editingSnapshots.value.delete(vi.key)\n detailExpandedKeys.value.delete(vi.key)\n childrenExpandedKeys.value.delete(vi.key)\n const deferred = props.deleteMode === 'deferred'\n // A delete in reorder mode is a session change: deferred reverts on Cancel, immediate stays gone\n // (re-applied after Cancel's snapshot-restore).\n if (reorderMode.value) {\n if (deferred) sessionDeferredDeletes.value.add(vi.key)\n else sessionImmediateDeletes.value.add(vi.key)\n }\n // Controller owns removal (mirrors the flat editors): a deferred saved-row delete is tombstoned\n // (counts as unsaved); immediate skips it (already deleted on the backend). Runs before the\n // `deleted` emit so a consumer's handler still receives `vi.raw`.\n controller.deleteItem(vi.key, { trackDeleted: deferred })\n emit('deleted', vi)\n },\n disableDeleteConfirm: () => props.disableDeleteConfirm,\n})\n\nconst onDeleteClick = async (vi: NestedViewItem<TItem>) => {\n if (!canInteract.value) return\n await triggerDeleteClick(vi)\n}\n\nconst onSaveClick = async (vi: NestedViewItem<TItem>) => {\n if (props.onItemSave) await props.onItemSave(vi.raw)\n commitEdit(vi)\n emit('item-saved', vi)\n}\n\nconst onCancelClick = (vi: NestedViewItem<TItem>) => {\n cancelEdit(vi)\n}\n\nconst onCloseClick = (vi: NestedViewItem<TItem>) => {\n closeEdit(vi)\n emit('close', vi)\n}\n\nconst moveUp = (id: ListEditorKey) => {\n if (controller.moveUp(id)) markMoved(id)\n}\nconst moveDown = (id: ListEditorKey) => {\n if (controller.moveDown(id)) markMoved(id)\n}\nconst moveTop = (id: ListEditorKey) => {\n if (controller.moveTop(id)) markMoved(id)\n}\nconst moveBottom = (id: ListEditorKey) => {\n if (controller.moveBottom(id)) markMoved(id)\n}\nconst doIndent = (vi: NestedViewItem<TItem>) => {\n if (!controller.indent(vi.key)) {\n showWarningT('common.sortable.error.maxDeepExceed')\n return\n }\n markMoved(vi.key)\n emit('indent', vi)\n}\nconst doOutdent = (vi: NestedViewItem<TItem>) => {\n if (!controller.outdent(vi.key)) return\n markMoved(vi.key)\n emit('outdent', vi)\n}\n\nconst resolveCompactText = (raw: TItem): string =>\n resolveCompactTextUtil(raw, { compactField: props.compactField })\n\n// Row validation from the controller's gated `rowState` — red rail shows only\n// once the row is unsaved or `validateAll()` ran.\n// `editing` → the controller reads amber (not red) while the row is being filled in. (QA 85050 b7)\nconst resolveValidation = (raw: TItem, key?: ListEditorKey): ListEditorValidationState =>\n key === undefined ? null : controller.rowState(raw, key, editingKeys.value.has(key))\n\n// Per-key actions cache for stable per-row identity (see AListEditor). Closures\n// capture the stable key and look up the current vi via findVi at call time.\ntype ActionsBundle = {\n edit: () => void\n save: () => Promise<void> | void\n cancel: () => void\n close: () => void\n delete: () => Promise<void>\n addAfter: () => void\n addChild: () => void\n toggleExpand: () => void\n toggleDetail: () => void\n moveUp: () => void\n moveDown: () => void\n moveTop: () => void\n moveBottom: () => void\n indent: () => void\n outdent: () => void\n update: (data: TItem) => void\n}\nconst actionsCache = new Map<ListEditorKey, ActionsBundle>()\nconst getActions = (key: ListEditorKey): ActionsBundle => {\n let actions = actionsCache.get(key)\n if (!actions) {\n actions = {\n edit: () => {\n const vi = findVi(key)\n if (vi) onEditClick(vi)\n },\n save: () => {\n const vi = findVi(key)\n if (vi) return onSaveClick(vi)\n },\n cancel: () => {\n const vi = findVi(key)\n if (vi) onCancelClick(vi)\n },\n close: () => {\n const vi = findVi(key)\n if (vi) onCloseClick(vi)\n },\n delete: async () => {\n const vi = findVi(key)\n if (vi) await onDeleteClick(vi)\n },\n addAfter: () => {\n const vi = findVi(key)\n if (vi) onRowAddAfterClick(vi)\n },\n addChild: () => {\n const vi = findVi(key)\n if (vi) onAddChildClick(vi)\n },\n toggleExpand: () => {\n const vi = findVi(key)\n if (vi) onChevronClick(vi)\n },\n toggleDetail: () => {\n const vi = findVi(key)\n if (vi) onDetailToggle(vi)\n },\n moveUp: () => moveUp(key),\n moveDown: () => moveDown(key),\n moveTop: () => moveTop(key),\n moveBottom: () => moveBottom(key),\n indent: () => {\n const vi = findVi(key)\n if (vi) doIndent(vi)\n },\n outdent: () => {\n const vi = findVi(key)\n if (vi) doOutdent(vi)\n },\n update: (data: TItem) => controller.updateItem(key, data),\n }\n actionsCache.set(key, actions)\n }\n return actions\n}\nwatch(\n () => viewItemsDecorated.value,\n (now) => {\n if (actionsCache.size === 0) return\n const liveKeys = new Set(now.map((v) => v.key))\n for (const key of actionsCache.keys()) {\n if (!liveKeys.has(key)) actionsCache.delete(key)\n }\n },\n)\n\nconst buildSlotProps = (vi: DecoratedNestedViewItem<TItem>) => ({\n item: { ...vi, validationState: resolveValidation(vi.raw as TItem, vi.key) },\n raw: vi.raw,\n index: vi.index,\n key: vi.key,\n depth: vi.depth,\n parent: vi.parent,\n parentKey: vi.parentKey,\n childrenCount: vi.childrenCount,\n hasChildren: vi.hasChildren,\n childrenAllowed: vi.childrenAllowed,\n firstInParent: vi.firstInParent,\n lastInParent: vi.lastInParent,\n readonly: props.readonly,\n disabled: props.disabled,\n expanded: vi.expanded,\n childrenExpanded: vi.childrenExpanded,\n editing: vi.editing,\n dirty: vi.dirty,\n unsaved: vi.unsaved,\n moved: vi.moved,\n reorderMode: reorderMode.value,\n canMoveUp: !vi.firstInParent,\n canMoveDown: !vi.lastInParent,\n canIndent: vi.canIndent,\n canOutdent: vi.canOutdent,\n canAddChild: vi.canAddChild,\n touch: isTouch.value,\n stateKeyPrefix: rowStateScope.prefixFor(vi.key),\n actions: getActions(vi.key),\n})\n\nconst toolbarSlotProps = computed(() => ({\n applying: applying.value,\n hasPendingChanges: nestedPendingChanges.value,\n movedCount: nestedPendingCount.value,\n error: applyError.value,\n actions: {\n apply: applyReorder,\n cancel: cancelReorderMode,\n },\n}))\n\nconst reorderToggleSlotProps = computed(() => ({\n mode: mode.value,\n disabled: !canEnterReorder.value,\n hasPendingChanges: hasPendingChanges.value,\n actions: {\n enterReorderMode,\n exitReorderMode: cancelReorderMode,\n },\n}))\n\nconst expandableKeySet = computed(() => new Set(expandableKeys.value))\n\nconst findVi = (key: ListEditorKey): DecoratedNestedViewItem<TItem> | undefined =>\n viewItemsDecorated.value.find((v) => v.key === key)\n\nconst keyboardNav = useKeyboardNav({\n viewItems: computed(() =>\n viewItemsDecorated.value.map((vi) => ({\n key: vi.key,\n expanded: vi.childrenExpanded,\n canExpand: expandableKeySet.value.has(vi.key),\n canIndent: true,\n canOutdent: true,\n })),\n ),\n variant: 'nested',\n isReorderMode: reorderMode,\n disabled: computed(() => !canInteract.value),\n isEditing: (key) => editingKeys.value.has(key),\n onToggleEdit: (key) => {\n const vi = findVi(key)\n if (vi) onEditClick(vi)\n },\n onCancelEdit: (key) => {\n const vi = findVi(key)\n if (vi) onCloseClick(vi)\n },\n onMoveUp: (key) => moveUp(key),\n onMoveDown: (key) => moveDown(key),\n onMoveTop: (key) => moveTop(key),\n onMoveBottom: (key) => moveBottom(key),\n onIndent: (key) => {\n const vi = findVi(key)\n if (vi) doIndent(vi)\n },\n onOutdent: (key) => {\n const vi = findVi(key)\n if (vi) doOutdent(vi)\n },\n onToggleChildren: (key) => {\n const vi = findVi(key)\n if (vi) onChevronClick(vi)\n },\n onCancelReorder: () => cancelReorderMode(),\n})\n\nconst moveToPositionDialogOpen = ref<boolean>(false)\nconst moveToPositionTarget = shallowRef<DecoratedNestedViewItem<TItem> | null>(null)\nconst moveToPositionContext = computed<{\n parentId: ListEditorKey | null\n total: number\n currentIndex: number\n} | null>(() => {\n const target = moveToPositionTarget.value\n if (!target) return null\n const found = controller.findNode(target.key)\n const siblings = found.parent?.children ?? modelValue.value.children\n const idx = siblings.findIndex((s) => keyOf(s.data) === target.key)\n return {\n parentId: found.parent ? keyOf(found.parent.data) : null,\n total: siblings.length,\n currentIndex: idx,\n }\n})\nconst moveToPositionLabel = computed<string>(() =>\n moveToPositionTarget.value ? resolveCompactText(moveToPositionTarget.value.raw) : '',\n)\nconst openMoveToPosition = (vi: DecoratedNestedViewItem<TItem>) => {\n if (!props.showMoveToPosition) return\n moveToPositionTarget.value = vi\n moveToPositionDialogOpen.value = true\n}\nconst onMoveToPositionConfirm = (newIndex: number) => {\n const ctx = moveToPositionContext.value\n const target = moveToPositionTarget.value\n moveToPositionTarget.value = null\n if (!ctx || !target) return\n if (newIndex === ctx.currentIndex) return\n if (controller.moveTo(target.key, ctx.parentId, newIndex)) {\n markMoved(target.key)\n }\n}\n\nconst changeParentDialogOpen = ref<boolean>(false)\nconst changeParentTarget = shallowRef<DecoratedNestedViewItem<TItem> | null>(null)\nconst openChangeParent = (vi: DecoratedNestedViewItem<TItem>) => {\n if (!props.showChangeParent) return\n changeParentTarget.value = vi\n changeParentDialogOpen.value = true\n}\nconst onChangeParentConfirm = (parentId: ListEditorKey | null, position: 'first' | 'last') => {\n const target = changeParentTarget.value\n changeParentTarget.value = null\n if (!target) return\n // Sibling count under the new parent so 'last' resolves to the right index ('first' = 0).\n let siblingCount = 0\n if (parentId === null) {\n siblingCount = modelValue.value.children.length\n } else {\n const found = controller.findNode(parentId)\n siblingCount = found.node?.children?.length ?? 0\n }\n const targetIndex = position === 'first' ? 0 : siblingCount\n if (controller.moveTo(target.key, parentId, targetIndex)) {\n markMoved(target.key)\n if (parentId !== null) childrenExpandedKeys.value.add(parentId)\n }\n}\n\n// Aggregated display flags + helpers passed into each <LeNestedRow>.\nconst rowContext = computed(() => ({\n reorderMode: reorderMode.value,\n readonly: props.readonly,\n canInteract: canInteract.value,\n dragEnabled: dragEnabled.value,\n showExpandToggle: props.showExpandToggle,\n showEditButton: props.showEditButton,\n showDeleteButton: props.showDeleteButton,\n showAddChildButton: props.showAddChildButton,\n showAddAfterAction: props.showAddAfterAction,\n showMoveToPosition: props.showMoveToPosition,\n showChangeParent: props.showChangeParent,\n showInlineSaveFooter: showInlineSaveFooter.value,\n statusField: props.statusField,\n effectiveCloseVariant: effectiveCloseVariant.value,\n keyboardNav,\n isRowClickable,\n resolveCompactText,\n resolveValidation: (raw: TItem, key?: ListEditorKey) => resolveValidation(raw, key),\n buildSlotProps,\n}))\n\n// Event callback bundle passed to each row.\nconst rowCallbacks = {\n onRowClick,\n onChevronClick,\n onEditClick,\n onDeleteClick,\n onCloseClick,\n onSaveClick,\n onCancelClick,\n onAddAfterClick: onRowAddAfterClick,\n onAddChildClick,\n moveUp: (id: ListEditorKey) => moveUp(id),\n moveDown: (id: ListEditorKey) => moveDown(id),\n moveTop: (id: ListEditorKey) => moveTop(id),\n moveBottom: (id: ListEditorKey) => moveBottom(id),\n indent: doIndent,\n outdent: doOutdent,\n openMoveToPosition,\n openChangeParent,\n}\n\nconst rootViewItems = computed(() => viewItemsDecorated.value.filter((v) => v.parentKey === null))\n\n// Imperative aliases mirroring the legacy ASortableNested signatures so existing\n// consumers keep working. They assume the caller persists server-side, so they\n// re-baseline via `controller.commit()` (rows don't render \"unsaved\" after the\n// call) and return the live model. New consumers should use the controller handle directly.\n\n/** @deprecated Use `addItem(data, { afterId, childrenAllowed })` on the handle. */\nconst addAfterId = (targetId: ListEditorKey | null, data: TItem, childrenAllowed: boolean) => {\n controller.addItem(data, { afterId: targetId ?? undefined, childrenAllowed })\n nextTick(() => controller.commit())\n return modelValue.value\n}\n/** @deprecated Use `addChild(parentKey, data, childrenAllowed)` on the handle. */\nconst addChildToId = (targetId: ListEditorKey, data: TItem, childrenAllowed: boolean) => {\n childrenExpandedKeys.value.add(targetId)\n // Legacy \"prepend as first child\" semantic (canonical `addChild` appends to the end).\n controller.addItem(data, { parentId: targetId, asFirstChild: true, childrenAllowed })\n nextTick(() => controller.commit())\n return modelValue.value\n}\n/** @deprecated Use `deleteItem(id)` on the handle. */\nconst removeById = (id: ListEditorKey) => {\n controller.deleteItem(id)\n editingKeys.value.delete(id)\n editingSnapshots.value.delete(id)\n detailExpandedKeys.value.delete(id)\n childrenExpandedKeys.value.delete(id)\n nextTick(() => controller.commit())\n}\n/** @deprecated Use `updateItem(id, data)` on the handle. */\nconst updateData = (\n id: ListEditorKey,\n data: TItem,\n _children: unknown = null,\n _position: unknown = null,\n _markUnsaved: unknown = null,\n) => {\n controller.updateItem(id, data)\n nextTick(() => controller.commit())\n}\n\n// Total distinct unconfirmed changes (added/edited/moved/reparented rows + deferred deletions) — a\n// delete counts even though its row is gone. Drives the unsaved-section label + the exposed handle.\nconst unsavedCount = controller.unsavedCount\n\n// Re-baseline as saved, clear the moved set, close open edits. Legacy name kept.\nconst clearUnsavedState = () => {\n controller.commit()\n movedKeys.value = new Set()\n clearEditing()\n}\n\n// Registers this editor as a named unsaved-changes section when a label is passed.\nuseUnsavedSection(() =>\n props.unsavedSectionLabel\n ? { label: props.unsavedSectionLabel, dirty: controller.hasUnsaved.value }\n : [],\n)\n\n// Expose the controller handle plus legacy aliases and reorder/expand controls.\n// Entries after the spread override controller methods where the historic name or\n// return shape differs (e.g. `viewItems` is this component's expand-aware list).\n// Reveal for a blocked save: open invalid rows AND expand the offender's ancestor chain so a\n// collapsed nested row becomes visible. Shared by the exposed validateAll + scope reveal-on-touch.\nconst revealNestedInvalid = (): boolean =>\n validateAllAndReveal(controller, (key) => {\n let ancestor = controller.findNode(key).parent\n while (ancestor) {\n childrenExpandedKeys.value.add(keyOf(ancestor.data))\n ancestor = controller.findNode(keyOf(ancestor.data)).parent\n }\n const vi = controller.viewItems.value.find((v) => v.key === key)\n if (vi) beginEdit(vi)\n })\n\n// Auto-bridge the editor's aggregate validity into the consumer's `validation-scope` collector so a\n// plain `$invalid` save gate blocks (and reveals) a collapsed invalid row. No-op without the prop.\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss -- construction-time opt-in, read once\nuseListEditorScopeValidity({\n hasErrors: controller.hasErrors,\n validationScope: props.validationScope,\n validateProvided: props.validate !== undefined,\n reveal: revealNestedInvalid,\n})\n\ndefineExpose<\n NestedListEditorHandle<TItem> & {\n addAfterId: typeof addAfterId\n addChildToId: typeof addChildToId\n removeById: typeof removeById\n updateData: typeof updateData\n resetDirtyBaseline: () => void\n hasUnsavedChanges: typeof controller.hasUnsaved\n unsavedCount: typeof unsavedCount\n clearUnsavedState: () => void\n enterReorderMode: () => void\n cancelReorderMode: () => void\n applyReorder: () => Promise<void>\n expand: (id: ListEditorKey) => void\n collapse: (id: ListEditorKey) => void\n toggleExpand: (id: ListEditorKey) => void\n expandDetail: (id: ListEditorKey) => void\n collapseDetail: (id: ListEditorKey) => void\n }\n>({\n ...controller,\n validateAll: revealNestedInvalid,\n // Legacy aliases (pre-v2 ASortableNested API).\n addAfterId,\n addChildToId,\n removeById,\n updateData,\n resetDirtyBaseline,\n hasUnsavedChanges: controller.hasUnsaved,\n unsavedCount,\n clearUnsavedState,\n // Expand-aware flattened view (controller's own `viewItems` ignores collapse state).\n viewItems: flatViewItems,\n enterReorderMode,\n cancelReorderMode,\n applyReorder,\n expand: (id: ListEditorKey) => childrenExpandedKeys.value.add(id),\n collapse: (id: ListEditorKey) => childrenExpandedKeys.value.delete(id),\n toggleExpand: (id: ListEditorKey) => {\n if (childrenExpandedKeys.value.has(id)) childrenExpandedKeys.value.delete(id)\n else childrenExpandedKeys.value.add(id)\n },\n expandDetail: (id: ListEditorKey) => detailExpandedKeys.value.add(id),\n collapseDetail: (id: ListEditorKey) => detailExpandedKeys.value.delete(id),\n})\n</script>\n\n<template>\n <div\n ref=\"rootEl\"\n class=\"a-nested-list-editor\"\n :class=\"[\n `a-nested-list-editor--mode-${mode}`,\n {\n 'a-nested-list-editor--readonly': readonly,\n 'a-nested-list-editor--disabled': disabled,\n 'a-nested-list-editor--touch': isTouch,\n 'a-nested-list-editor--drag-enabled': dragEnabled,\n },\n ]\"\n >\n <div class=\"a-le-card\">\n <div\n v-if=\"headerVisible\"\n class=\"a-le-header\"\n >\n <slot\n name=\"header\"\n :title=\"title\"\n v-bind=\"reorderToggleSlotProps\"\n >\n <h3\n v-if=\"title\"\n class=\"a-le-title-heading\"\n >\n {{ title }}\n </h3>\n <div class=\"a-le-header-actions\">\n <template v-if=\"reorderMode\">\n <!-- Reorder-mode header: pending count + Cancel/Apply, sitting where\n the \"Reorder\" button lives in view mode (not a bottom toolbar). -->\n <slot\n name=\"reorder-toolbar\"\n v-bind=\"toolbarSlotProps\"\n >\n <LeStatus\n :class=\"{ 'a-le-toolbar-status--pending': nestedPendingChanges }\"\n :has-pending-changes=\"nestedPendingChanges\"\n :pending-count=\"nestedPendingCount\"\n :error=\"applyError\"\n />\n <VBtn\n variant=\"text\"\n size=\"small\"\n :disabled=\"applying\"\n @click=\"cancelReorderMode\"\n >\n {{ t('common.sortable.reorderCancel') }}\n </VBtn>\n <VBtn\n color=\"primary\"\n variant=\"flat\"\n size=\"small\"\n prepend-icon=\"mdi-check\"\n :loading=\"applying\"\n :disabled=\"applying || !nestedPendingChanges\"\n @click=\"applyReorder\"\n >\n {{ t('common.sortable.reorderApply') }}\n </VBtn>\n </slot>\n </template>\n <template v-else>\n <VBtn\n v-if=\"expandAllVisible && compactReorderButton\"\n variant=\"tonal\"\n color=\"primary\"\n icon\n size=\"x-small\"\n @click=\"toggleExpandAll\"\n >\n <VIcon\n :icon=\"allExpanded ? 'mdi-unfold-less-horizontal' : 'mdi-unfold-more-horizontal'\"\n size=\"18\"\n />\n <VTooltip\n activator=\"parent\"\n location=\"bottom\"\n :text=\"\n allExpanded ? t('common.sortable.collapseAll') : t('common.sortable.expandAll')\n \"\n />\n </VBtn>\n <VBtn\n v-else-if=\"expandAllVisible\"\n variant=\"tonal\"\n color=\"primary\"\n size=\"small\"\n :prepend-icon=\"\n allExpanded ? 'mdi-unfold-less-horizontal' : 'mdi-unfold-more-horizontal'\n \"\n @click=\"toggleExpandAll\"\n >\n {{\n allExpanded ? t('common.sortable.collapseAll') : t('common.sortable.expandAll')\n }}\n </VBtn>\n <slot\n v-if=\"reorderToggleVisible\"\n name=\"reorder-toggle\"\n v-bind=\"reorderToggleSlotProps\"\n >\n <VBtn\n v-if=\"compactReorderButton\"\n variant=\"tonal\"\n color=\"primary\"\n icon\n size=\"x-small\"\n :disabled=\"!canEnterReorder\"\n @click=\"enterReorderMode\"\n >\n <VIcon\n icon=\"mdi-sort\"\n size=\"18\"\n />\n <VTooltip\n activator=\"parent\"\n location=\"bottom\"\n :text=\"t('common.sortable.reorder')\"\n />\n </VBtn>\n <VBtn\n v-else\n variant=\"tonal\"\n color=\"primary\"\n prepend-icon=\"mdi-sort\"\n size=\"small\"\n :disabled=\"!canEnterReorder\"\n @click=\"enterReorderMode\"\n >\n {{ t('common.sortable.reorder') }}\n </VBtn>\n </slot>\n </template>\n </div>\n </slot>\n </div>\n\n <div\n v-if=\"loading\"\n class=\"a-le-state a-le-state--loading\"\n >\n <VProgressCircular\n indeterminate\n color=\"primary\"\n size=\"32\"\n />\n </div>\n\n <div\n v-else-if=\"error\"\n class=\"a-le-state a-le-state--error\"\n >\n <VAlert\n type=\"error\"\n variant=\"tonal\"\n density=\"compact\"\n border=\"start\"\n >\n {{ error }}\n </VAlert>\n </div>\n\n <div\n v-else-if=\"isEmpty\"\n class=\"a-le-state a-le-state--empty\"\n >\n <slot\n name=\"empty\"\n :readonly=\"readonly\"\n :disabled=\"disabled\"\n :actions=\"{ add: onAddClick }\"\n >\n <LeEmptyState\n :title=\"emptyTitleResolved\"\n :add-label=\"addLabelResolved\"\n :can-add=\"canAdd\"\n @add=\"onAddClick\"\n />\n </slot>\n </div>\n\n <div\n v-else\n :key=\"forceRerender\"\n ref=\"rowsContainer\"\n class=\"a-nested-list-editor__rows\"\n :class=\"{ 'a-nested-list-editor__rows--dragging': dragState !== null }\"\n >\n <div\n :class=\"[GROUP_CLASS, 'a-nested-list-editor__group--root']\"\n data-parent-id=\"\"\n >\n <LeNestedRow\n v-for=\"vi in rootViewItems\"\n :key=\"String(vi.key)\"\n :vi=\"vi\"\n :view-items=\"viewItemsDecorated\"\n :drag-state=\"dragState\"\n :context=\"rowContext\"\n :callbacks=\"rowCallbacks\"\n >\n <template #item=\"slotScope\">\n <slot\n name=\"item\"\n v-bind=\"slotScope\"\n />\n </template>\n <template #item-compact=\"slotScope\">\n <slot\n name=\"item-compact\"\n v-bind=\"slotScope\"\n />\n </template>\n <template #item-readonly=\"slotScope\">\n <slot\n name=\"item-readonly\"\n v-bind=\"slotScope\"\n />\n </template>\n <template #item-status=\"slotScope\">\n <slot\n name=\"item-status\"\n v-bind=\"slotScope\"\n />\n </template>\n <template #item-footer=\"slotScope\">\n <slot\n name=\"item-footer\"\n v-bind=\"slotScope\"\n />\n </template>\n <template #item-actions=\"slotScope\">\n <slot\n name=\"item-actions\"\n v-bind=\"slotScope\"\n />\n </template>\n <template #before-item=\"slotScope\">\n <slot\n name=\"before-item\"\n v-bind=\"slotScope\"\n />\n </template>\n <template #after-item=\"slotScope\">\n <slot\n name=\"after-item\"\n v-bind=\"slotScope\"\n />\n </template>\n </LeNestedRow>\n </div>\n\n <!-- Drop indicator overlay (valid drops only): horizontal line at a row\n edge (depth in `left`) + an optional vertical connector rail to the\n row whose level the insert matches. -->\n <template v-if=\"overlayVisual !== null\">\n <div\n v-if=\"overlayVisual.connector !== null\"\n class=\"a-nested-list-editor__drop-connector\"\n :style=\"{\n left: `${overlayVisual.connector.left}px`,\n top: `${overlayVisual.connector.top}px`,\n height: `${overlayVisual.connector.height}px`,\n }\"\n />\n <div\n class=\"a-nested-list-editor__drop-line\"\n :style=\"{\n top: `${overlayVisual.line.top}px`,\n left: `${overlayVisual.line.left}px`,\n right: `${overlayVisual.line.right}px`,\n }\"\n >\n <span class=\"a-nested-list-editor__drop-line-dot\" />\n </div>\n </template>\n </div>\n\n <slot\n v-if=\"canAdd && !loading && !error && !isEmpty\"\n name=\"add-button\"\n :readonly=\"readonly\"\n :disabled=\"disabled\"\n :props=\"{ onClick: onAddClick }\"\n :actions=\"{ add: onAddClick }\"\n >\n <button\n type=\"button\"\n class=\"a-le-row-add\"\n @click=\"onAddClick\"\n >\n <VIcon\n icon=\"mdi-plus\"\n size=\"18\"\n />\n <span>{{ addLabelResolved }}</span>\n </button>\n </slot>\n </div>\n\n <LeMoveToPositionDialog\n v-model=\"moveToPositionDialogOpen\"\n :total=\"moveToPositionContext?.total ?? 0\"\n :current-index=\"moveToPositionContext?.currentIndex ?? 0\"\n :item-label=\"moveToPositionLabel\"\n @confirm=\"onMoveToPositionConfirm\"\n />\n\n <LeChangeParentDialog\n v-model=\"changeParentDialogOpen\"\n :tree=\"modelValue\"\n :source-key=\"changeParentTarget?.key ?? null\"\n :key-field=\"keyFieldName\"\n :max-depth=\"maxDepth\"\n :resolve-label=\"resolveCompactText\"\n :calculate-subtree-depth=\"controller.calculateSubtreeDepth\"\n @confirm=\"onChangeParentConfirm\"\n />\n\n <LeDeleteDialog\n v-model=\"deleteDialog\"\n :title=\"deleteConfirmTitleResolved\"\n :text=\"deleteConfirmTextResolved\"\n :confirm-label=\"t('common.sortable.delete')\"\n :cancel-label=\"t('common.button.cancel')\"\n :error=\"deleteError\"\n :in-flight=\"deleteInFlight\"\n @confirm=\"onDeleteDialogConfirm\"\n @cancel=\"onDeleteDialogCancel\"\n />\n\n <div\n class=\"a-le-sr-only\"\n aria-live=\"polite\"\n role=\"status\"\n >\n {{\n keyboardNav.grabbedKey.value !== null\n ? t('common.sortable.keyboardGrab.status', {\n n: keyboardNav.grabbedIndex.value + 1,\n total: keyboardNav.totalCount.value,\n })\n : ''\n }}\n </div>\n </div>\n</template>\n\n<style lang=\"scss\">\n@use './styles/tokens';\n@use './styles/shared';\n\n// Nested-variant rules — depth-aware padding, tree toggle caret, children\n// groups, drop indicator overlay, drag clone.\n.a-nested-list-editor {\n // Depth-aware left padding — caret column + indent per depth level.\n .a-le-row-header {\n padding: var(--le-row-pad-y) 12px var(--le-row-pad-y)\n calc(16px + var(--nested-depth, 0) * var(--le-indent));\n }\n\n // Row wrappers + inter-row group layout.\n &__rows {\n position: relative;\n display: flex;\n flex-direction: column;\n }\n\n &__group {\n display: flex;\n flex-direction: column;\n }\n\n // Re-apply the `font` shorthand (shared class uses longhand for flat variants)\n // so the nested variant keeps its explicit line-height reset.\n .a-le-toolbar-status {\n font: 500 13px/1 var(--v-font-body, inherit);\n }\n}\n\n.a-le-row-wrapper {\n display: flex;\n flex-direction: column;\n}\n\n.a-nested-list-editor {\n // Root rows get a bolder title weight to anchor the hierarchy without header rows.\n .a-le-row:not(.a-le-row--child) .a-le-title {\n font-weight: 600;\n }\n\n // Reorder mode — flat-variant padding offset by the row's indent level.\n .a-le-row--reorder .a-le-row-header {\n padding-left: calc(12px + var(--nested-depth, 0) * var(--le-indent));\n padding-right: 8px;\n gap: 8px;\n }\n\n // Active (editing / readonly-expanded) tree-toggle picks up the primary tint\n // so the header reads \"active\" together with the title color.\n .a-le-row--editing &__tree-toggle,\n .a-le-row--expanded &__tree-toggle {\n color: var(--le-primary);\n }\n\n // Children wrapper — depth conveyed by the row's padding-left indent alone.\n &__children {\n position: relative;\n }\n\n // Triangle-caret toggle — circular text-style button (24×24), transparent\n // with a subtle tinted circle on hover.\n &__tree-toggle {\n width: 24px;\n height: 24px;\n padding: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: none;\n border-radius: 50%;\n cursor: pointer;\n pointer-events: auto;\n color: rgb(0 0 0 / 54%);\n z-index: 2;\n flex-shrink: 0;\n transition:\n background 0.15s,\n color 0.15s;\n\n &:hover {\n background: rgb(0 0 0 / 5%);\n color: var(--le-on-surface);\n }\n\n &:focus-visible {\n outline: none;\n background: rgb(0 0 0 / 8%);\n }\n }\n\n // Reserve caret column width on leaf rows so titles align across siblings.\n &__tree-toggle--spacer,\n &__tree-toggle--empty {\n width: 24px;\n height: 24px;\n background: transparent;\n visibility: hidden;\n pointer-events: none;\n }\n\n // Pure CSS right-pointing triangle; rotates to down when the row is open.\n &__tree-toggle-caret {\n width: 0;\n height: 0;\n border-left: 5px solid currentcolor;\n border-top: 4px solid transparent;\n border-bottom: 4px solid transparent;\n border-right: 0;\n transition: transform 0.15s cubic-bezier(0.4, 0, 0.2, 1);\n transform: translateX(1px); // optical centering — triangle leans left\n }\n\n &__tree-toggle--open &__tree-toggle-caret {\n transform: translate(0, 1px) rotate(90deg);\n }\n\n // Dragged subtree (source + descendants) dimmed and non-hittable. `!important`\n // on display beats SortableJS's inline `display: none` under `forceFallback`.\n .a-le-row-wrapper.a-le-row--chosen,\n .a-le-row-wrapper.a-le-row-wrapper--drop-disabled {\n display: flex !important;\n opacity: 0.4 !important;\n pointer-events: none !important;\n }\n\n // Hide SortableJS's placeholder — our overlay is the sole landing indicator.\n .a-le-row--ghost {\n display: none !important;\n }\n\n // No floating clone — the line overlay carries all the \"where it lands\" info.\n // Wrapper selector beats the `.row-wrapper--drop-disabled` rule the clone inherits.\n .a-le-row-wrapper.a-le-row--drag {\n display: none !important;\n }\n\n // Drop indicator line — 2px primary stroke with an 8px left terminal dot,\n // absolute-positioned inside `__rows`.\n &__drop-line {\n position: absolute;\n height: 2px;\n margin-top: -1px;\n background: var(--le-primary);\n pointer-events: none;\n z-index: 4;\n border-radius: 1px;\n }\n\n &__drop-line-dot {\n position: absolute;\n left: -4px;\n top: 50%;\n width: 8px;\n height: 8px;\n background: var(--le-primary);\n border-radius: 50%;\n transform: translateY(-50%);\n }\n\n // Connector rail — vertical line linking the drop line up to the level-match row.\n &__drop-connector {\n position: absolute;\n width: 2px;\n margin-left: -1px;\n background: var(--le-primary);\n opacity: 0.5;\n pointer-events: none;\n z-index: 3;\n }\n\n // While dragging, dim the add-button so focus stays on the drag target.\n &__rows--dragging .a-le-row-add {\n opacity: 0.4;\n }\n\n // \"+N\" children indicator — hidden in the normal DOM, visible only inside the\n // SortableJS drag clone so the user sees the whole branch will follow.\n &__drag-count {\n display: none;\n align-items: center;\n gap: 4px;\n margin-left: 8px;\n padding: 2px 8px;\n font: 500 11px/1 var(--v-font-body, inherit);\n letter-spacing: 0.02em;\n color: var(--le-primary);\n background: var(--le-primary-container);\n border-radius: var(--le-radius-pill);\n flex-shrink: 0;\n }\n\n .a-le-row--drag &__drag-count {\n display: inline-flex;\n }\n}\n\n// Desktop — depth-aware padding-left aligns the inline form with the title column:\n// 16 (pad) + 24 (caret) + 10 (gap) = 50, plus depth*indent.\n@container le-shell (min-width: 769px) {\n .a-nested-list-editor {\n .a-le-row--editing .a-le-row-body,\n .a-le-row--expanded .a-le-row-body,\n .a-le-row--editing .a-le-row-footer,\n .a-le-row--expanded .a-le-row-footer {\n padding-left: calc(50px + var(--nested-depth, 0) * var(--le-indent));\n padding-right: 16px;\n }\n }\n}\n\n// Narrow / mobile — tighter indent so deep branches fit, taller touch rows,\n// always-visible actions, status badge dropped to make room for the title.\n/* stylelint-disable selector-max-compound-selectors */\n@container le-shell (max-width: 768px) {\n .a-nested-list-editor {\n --le-indent: 18px;\n --le-row-min-height: 48px;\n --le-row-pad-y: 10px;\n\n .a-le-row:not(.a-le-row--editing) .a-le-status {\n display: none;\n }\n\n .a-le-row .a-le-action--edit,\n .a-le-row .a-le-action--delete,\n .a-le-row .a-le-action--menu,\n .a-le-row .a-le-action--up,\n .a-le-row .a-le-action--down,\n .a-le-row .a-le-action--add-child {\n opacity: 1;\n }\n }\n}\n/* stylelint-enable selector-max-compound-selectors */\n</style>\n","<script setup lang=\"ts\">\nimport { useI18n } from 'vue-i18n'\n\nexport interface Props {\n title?: string\n body?: string\n stayLabel?: string\n discardLabel?: string\n /**\n * Names of the dirty sections (from the guard's `dirtyLabels`). When\n * non-empty the dialog lists them instead of the generic body message.\n */\n dirtyLabels?: string[]\n}\n\nwithDefaults(defineProps<Props>(), {\n title: undefined,\n body: undefined,\n stayLabel: undefined,\n discardLabel: undefined,\n dirtyLabels: () => [],\n})\n\nconst emit = defineEmits<{\n resolve: [discard: boolean]\n}>()\n\nconst open = defineModel<boolean>({ required: true })\n\nconst { t } = useI18n()\n\nconst onStay = () => {\n emit('resolve', false)\n}\n\nconst onDiscard = () => {\n emit('resolve', true)\n}\n</script>\n\n<template>\n <VDialog\n v-model=\"open\"\n max-width=\"480\"\n persistent\n >\n <VCard>\n <VCardTitle>\n {{ title ?? t('common.sortable.unsavedChanges.title') }}\n </VCardTitle>\n <VCardText>\n <template v-if=\"body\">\n {{ body }}\n </template>\n <template v-else-if=\"dirtyLabels.length\">\n {{ t('common.sortable.unsavedChanges.sectionsIntro') }}\n <ul class=\"a-unsaved-sections\">\n <li\n v-for=\"(label, i) in dirtyLabels\"\n :key=\"i\"\n >\n {{ label }}\n </li>\n </ul>\n {{ t('common.sortable.unsavedChanges.leaveQuestion') }}\n </template>\n <template v-else>\n {{ t('common.sortable.unsavedChanges.body') }}\n </template>\n </VCardText>\n <VCardActions>\n <VSpacer />\n <VBtn\n variant=\"text\"\n @click=\"onStay\"\n >\n {{ stayLabel ?? t('common.sortable.unsavedChanges.stay') }}\n </VBtn>\n <VBtn\n color=\"warning\"\n variant=\"flat\"\n @click=\"onDiscard\"\n >\n {{ discardLabel ?? t('common.sortable.unsavedChanges.discard') }}\n </VBtn>\n </VCardActions>\n </VCard>\n </VDialog>\n</template>\n\n<style scoped lang=\"scss\">\n.a-unsaved-sections {\n margin: 8px 0;\n padding-left: 20px;\n\n li {\n font-weight: 500;\n }\n}\n</style>\n","import {\n computed,\n getCurrentInstance,\n onBeforeUnmount,\n ref,\n watch,\n type ComputedRef,\n type Ref,\n} from 'vue'\nimport { onBeforeRouteLeave } from 'vue-router'\nimport {\n provideUnsavedSectionRegistry,\n type UnsavedSectionDescriptor,\n type UnsavedSectionSource,\n} from '@/labs/unsavedGuard/useUnsavedSection'\n\ntype UnsavedSource = Ref<boolean | Set<unknown> | unknown[] | null | undefined>\n\nexport interface UseUnsavedChangesGuardOptions {\n /**\n * Reactive sources that signal \"unsaved\" state. Each source's truthiness is\n * checked: a Set/array is \"dirty\" when non-empty, a boolean when true, null\n * or undefined as not dirty.\n */\n sources: UnsavedSource[]\n /**\n * Block route navigation via vue-router's onBeforeRouteLeave. Default true.\n * When omitted/false, the route guard is not registered.\n */\n guardRoute?: boolean | Ref<boolean>\n /**\n * Block window/tab unload via beforeunload. Default true.\n */\n guardWindowUnload?: boolean | Ref<boolean>\n /**\n * Optional Vuetify dialog v-model. When provided, attempts to close the\n * dialog while dirty are intercepted: dialog stays open until the user\n * confirms via the confirm dialog or via `acknowledge()`.\n */\n guardDialogModel?: Ref<boolean>\n /**\n * Named sections owned by the guard host component itself. Descendants use\n * `useUnsavedSection` instead — but a component can't `inject` its own\n * `provide`, so when the host *is* the section owner (e.g. a dialog), pass\n * the sections here.\n */\n ownSections?: UnsavedSectionSource\n}\n\nexport interface UseUnsavedChangesGuardApi {\n hasUnsavedChanges: ComputedRef<boolean>\n /**\n * Labels of the dirty sections registered by descendants via\n * `useUnsavedSection`. Bind to `AUnsavedConfirmDialog`'s `dirtyLabels` prop\n * so the dialog names *which* parts are unsaved. Empty when no descendant\n * registered a section (dialog falls back to the generic message).\n */\n dirtyLabels: ComputedRef<string[]>\n /**\n * v-model-bound to the confirm dialog. When the guard wants to ask the user\n * to confirm leaving, it sets this to true. The confirm dialog reads it.\n */\n promptOpen: Ref<boolean>\n /**\n * Resolves the confirm prompt with `discard=true` (proceed) or `false`\n * (stay). Called by the confirm dialog.\n */\n resolvePrompt: (discard: boolean) => void\n /**\n * Manually mark the most recent intent as acknowledged so the next\n * route/dialog/unload attempt proceeds without prompting. Useful right\n * before a programmatic navigation that the consumer has already\n * confirmed.\n *\n * The acknowledgement AUTO-EXPIRES after a few seconds if nothing consumes it\n * (see `ACKNOWLEDGE_TTL_MS`): a delete that acknowledges up-front but then FAILS\n * (throws, never navigates) must not leave the guard silently disarmed for the\n * next unrelated navigation. Consuming it (a real leave) clears the timer.\n */\n acknowledge: () => void\n /**\n * Cancel a pending `acknowledge()` (disarm). Call from a delete's failure path\n * so a failed/aborted delete restores the guard immediately instead of waiting\n * for the TTL. No-op if nothing is acknowledged.\n */\n unacknowledge: () => void\n}\n\n// An acknowledgement is meant for an IMMINENT navigation (a delete's router.push after its HTTP\n// round-trip — tens to hundreds of ms). If none arrives within this window the delete almost\n// certainly failed, so the one-shot expires rather than arming an unrelated later navigation.\n// Generously longer than any real delete request so a legitimate slow-success never false-prompts.\nconst ACKNOWLEDGE_TTL_MS = 8000\n\nconst isTruthySource = (value: unknown): boolean => {\n if (value === null || value === undefined) return false\n if (typeof value === 'boolean') return value\n if (value instanceof Set) return value.size > 0\n if (Array.isArray(value)) return value.length > 0\n return Boolean(value)\n}\n\nconst resolveBool = (v: boolean | Ref<boolean> | undefined, fallback: boolean): boolean => {\n if (v === undefined) return fallback\n if (typeof v === 'boolean') return v\n return v.value\n}\n\nexport function useUnsavedChangesGuard(\n options: UseUnsavedChangesGuardOptions,\n): UseUnsavedChangesGuardApi {\n // Provide a section registry so descendants can name their dirty sections\n // via `useUnsavedSection`. The dialog reads `dirtyLabels` from this.\n const sectionRegistry = provideUnsavedSectionRegistry()\n\n // The host component can't inject its own provide, so register its own\n // sections directly.\n if (options.ownSections) {\n const ownSections = options.ownSections\n const id = Symbol('unsaved.section.own')\n const normalized = computed<UnsavedSectionDescriptor[]>(() => {\n const resolved = ownSections()\n return Array.isArray(resolved) ? resolved : [resolved]\n })\n sectionRegistry.register(id, normalized)\n }\n\n const hasUnsavedChanges = computed<boolean>(\n () =>\n options.sources.some((s) => isTruthySource(s.value)) ||\n sectionRegistry.dirtyLabels.value.length > 0,\n )\n\n const promptOpen = ref<boolean>(false)\n let pendingResolver: ((discard: boolean) => void) | null = null\n let acknowledgedOnce = false\n let acknowledgeTimer: ReturnType<typeof setTimeout> | null = null\n\n const clearAcknowledgeTimer = () => {\n if (acknowledgeTimer !== null) {\n clearTimeout(acknowledgeTimer)\n acknowledgeTimer = null\n }\n }\n\n const askToLeave = (): Promise<boolean> => {\n if (acknowledgedOnce) {\n acknowledgedOnce = false\n clearAcknowledgeTimer()\n return Promise.resolve(true)\n }\n return new Promise((resolve) => {\n pendingResolver = resolve\n promptOpen.value = true\n })\n }\n\n const resolvePrompt = (discard: boolean) => {\n promptOpen.value = false\n if (pendingResolver) {\n pendingResolver(discard)\n pendingResolver = null\n }\n }\n\n const acknowledge = () => {\n acknowledgedOnce = true\n // Auto-expire: if the imminent navigation never arrives (e.g. the delete threw), don't leave\n // the guard armed for an unrelated later leave. A real consume (askToLeave) clears this first.\n clearAcknowledgeTimer()\n acknowledgeTimer = setTimeout(() => {\n acknowledgedOnce = false\n acknowledgeTimer = null\n }, ACKNOWLEDGE_TTL_MS)\n }\n\n const unacknowledge = () => {\n acknowledgedOnce = false\n clearAcknowledgeTimer()\n }\n\n // Route guard — `onBeforeRouteLeave` only works inside a route component\n // (it reads the current vm context). Outside a component it's a no-op.\n if (resolveBool(options.guardRoute, true) && getCurrentInstance()) {\n try {\n onBeforeRouteLeave(async () => {\n if (!hasUnsavedChanges.value) return true\n const discard = await askToLeave()\n return discard\n })\n } catch {\n // Not in a route context — skip silently.\n }\n }\n\n // beforeunload — modern browsers strip custom messages but still display a\n // generic confirm. Setting `returnValue` is the canonical way to opt in.\n if (resolveBool(options.guardWindowUnload, true)) {\n const onBeforeUnload = (e: BeforeUnloadEvent) => {\n if (!hasUnsavedChanges.value) return\n e.preventDefault()\n e.returnValue = ''\n }\n if (typeof window !== 'undefined') {\n window.addEventListener('beforeunload', onBeforeUnload)\n onBeforeUnmount(() => {\n window.removeEventListener('beforeunload', onBeforeUnload)\n })\n }\n }\n\n // Dialog guard — when the parent dialog tries to close while dirty, intercept\n // and ask the user to confirm. The parent dialog model goes from false→true\n // (open) to true→false (closing); we re-open it while we await the prompt.\n if (options.guardDialogModel) {\n const dialogModel = options.guardDialogModel\n let suppressNext = false\n watch(dialogModel, async (now, prev) => {\n if (suppressNext) {\n suppressNext = false\n return\n }\n if (prev === true && now === false && hasUnsavedChanges.value) {\n // Re-open the dialog while we wait for the user's choice.\n suppressNext = true\n dialogModel.value = true\n const discard = await askToLeave()\n if (discard) {\n suppressNext = true\n dialogModel.value = false\n }\n }\n })\n }\n\n if (getCurrentInstance()) {\n onBeforeUnmount(clearAcknowledgeTimer)\n }\n\n return {\n hasUnsavedChanges,\n dirtyLabels: sectionRegistry.dirtyLabels,\n promptOpen,\n resolvePrompt,\n acknowledge,\n unacknowledge,\n }\n}\n","import type { UseUnsavedChangesGuardApi } from '@/labs/unsavedGuard/useUnsavedChangesGuard'\n\n/**\n * Wrap an entity-delete handler so it bypasses the unsaved-changes leave guard.\n *\n * An entity delete destroys the record together with any unsaved edits, so the \"you have unsaved\n * changes — really leave?\" prompt that the delete's `router.push` would otherwise trigger is\n * meaningless: the user already confirmed the delete, and there is nothing left to keep. Without this\n * the delete runs, then the leave-guard fires on the post-delete navigation and choosing \"stay\" leaves\n * the view on an already-deleted entity (system error). This acknowledges the guard right before the\n * delete so the follow-up navigation proceeds without prompting. (QA 85050 batch 7 — BUG-08)\n *\n * If `onDelete` REJECTS (the delete failed and never navigated), the acknowledgement is undone\n * immediately (`unacknowledge()`) so a subsequently-dirtied navigation is still guarded (M1) — the\n * error is re-thrown so the caller's own handling runs. For this to catch failures, `onDelete` must\n * let its error propagate (don't swallow it in the action's try/catch).\n *\n * Usage: `@delete-record=\"guardedDelete(() => onDelete(id))\"` or wrap the handler once.\n */\nexport function useGuardedDelete<A extends unknown[], R>(\n guard: Pick<UseUnsavedChangesGuardApi, 'acknowledge' | 'unacknowledge'>,\n onDelete: (...args: A) => R,\n): (...args: A) => R | Promise<Awaited<R>> {\n return (...args: A): R | Promise<Awaited<R>> => {\n guard.acknowledge()\n let result: R\n try {\n result = onDelete(...args)\n } catch (err) {\n // Synchronous throw before any navigation — disarm and re-throw.\n guard.unacknowledge()\n throw err\n }\n // Async handler: undo the acknowledgement if the delete rejects (no navigation happened).\n if (result instanceof Promise) {\n return (result as Promise<Awaited<R>>).catch((err) => {\n guard.unacknowledge()\n throw err\n })\n }\n return result\n }\n}\n","import { computed, type ComputedRef, type Ref } from 'vue'\nimport type {\n ListEditorKey,\n ListViewItem,\n PositionHint,\n UseListEditorOptions,\n} from '@/labs/listEditor/types/listEditorTypes'\nimport { renumberPositions } from '@/labs/listEditor/utils/positions'\n\nexport interface ListEditorApi<TItem> {\n viewItems: ComputedRef<ListViewItem<TItem>[]>\n addItem: (data: TItem, positionHint?: PositionHint) => TItem[]\n deleteItem: (idOrItem: ListEditorKey | TItem) => TItem[]\n updateItem: (idOrItem: ListEditorKey | TItem, data: TItem) => TItem[]\n moveItem: (fromIndex: number, toIndex: number) => TItem[]\n recalculatePositions: (items: TItem[]) => TItem[]\n}\n\n/**\n * Flat list editor core. Pure data behavior shared by AListEditor and\n * ASortableListEditor. Does not touch the DOM, SortableJS, or emits.\n *\n * The caller passes a writable ref (typically `defineModel<TItem[]>`).\n * Mutators write a new array to `model.value` and also return it.\n * Input items are never mutated — when positions need to change, a new\n * item object is produced with `{ ...item, [positionField]: n }`.\n */\nexport function useListEditor<TItem extends Record<string, any>>(\n model: Ref<TItem[]>,\n options: UseListEditorOptions = {},\n): ListEditorApi<TItem> {\n const keyField = options.keyField ?? 'id'\n const positionField = options.positionField ?? 'position'\n const positionMultiplier = options.positionMultiplier ?? 1\n const updatePositionEnabled = options.updatePosition === true\n\n // Using the position field as the row key while `update-position` is on is\n // self-defeating: every reorder renumbers positions, which changes the keys,\n // so dirty/validity tracking flags the displaced rows as unsaved (QA 85050\n // BUG-09). Point key-field at a stable identity field (e.g. \"id\").\n if (updatePositionEnabled && keyField === positionField) {\n console.warn(\n `[list-editor] key-field === position-field (\"${keyField}\") with update-position enabled. ` +\n 'Reordering renumbers positions and thus changes row keys, breaking dirty/validity ' +\n 'tracking. Point key-field at a stable identity field (e.g. \"id\").',\n )\n }\n\n // Surfaces row-key wiring bugs loudly: rows keyed `undefined` (item lacks the\n // key-field) or two rows sharing one key silently break dirty tracking,\n // validity rails and reorder targeting in ways that are hard to trace from\n // symptoms (QA 85050 BUG-09 class). Deduplicated per signature so a stable\n // bad state warns once, but a new offender warns again.\n const warnedKeySignatures = new Set<string>()\n const warnOnBadKeys = (items: ListViewItem<TItem>[]): void => {\n const seen = new Set<ListEditorKey>()\n const duplicates = new Set<string>()\n let missing = 0\n for (const vi of items) {\n if (vi.key === undefined || vi.key === null) {\n missing++\n continue\n }\n if (seen.has(vi.key)) duplicates.add(String(vi.key))\n seen.add(vi.key)\n }\n if (missing === 0 && duplicates.size === 0) return\n const signature = `${missing}|${[...duplicates].sort().join(',')}`\n if (warnedKeySignatures.has(signature)) return\n warnedKeySignatures.add(signature)\n if (missing > 0) {\n console.warn(\n `[list-editor] ${missing} row(s) resolve to an undefined key (key-field \"${keyField}\"). ` +\n 'Point key-field at a field every item has, or give new items unique temp ids ' +\n '(see nextListEditorTempId).',\n )\n }\n if (duplicates.size > 0) {\n console.warn(\n `[list-editor] duplicate row keys (key-field \"${keyField}\"): ${[...duplicates].join(', ')}. ` +\n 'Row keys must be unique — dirty tracking and validation rails target rows by key.',\n )\n }\n }\n\n const viewItems = computed<ListViewItem<TItem>[]>(() => {\n const items = model.value.map((raw, index) => ({\n key: raw[keyField] as ListEditorKey,\n index,\n raw,\n position: raw[positionField] as number | undefined,\n }))\n warnOnBadKeys(items)\n return items\n })\n\n const recalculatePositions = (items: TItem[]): TItem[] =>\n renumberPositions(items, { positionField, positionMultiplier })\n\n const finalize = (arr: TItem[]): TItem[] => {\n const result = updatePositionEnabled ? recalculatePositions(arr) : arr\n model.value = result\n return result\n }\n\n const isItem = (value: ListEditorKey | TItem): value is TItem =>\n value !== null && typeof value === 'object'\n\n const resolveIndexByKey = (items: TItem[], key: ListEditorKey): number =>\n items.findIndex((x) => x[keyField] === key)\n\n const resolveIndex = (items: TItem[], idOrItem: ListEditorKey | TItem): number => {\n const key = isItem(idOrItem) ? (idOrItem[keyField] as ListEditorKey) : idOrItem\n return resolveIndexByKey(items, key)\n }\n\n const resolveInsertIndex = (items: TItem[], hint?: PositionHint): number => {\n if (!hint) return items.length\n if (hint.afterId !== undefined) {\n const idx = resolveIndexByKey(items, hint.afterId)\n return idx === -1 ? items.length : idx + 1\n }\n if (hint.afterIndex !== undefined) {\n if (hint.afterIndex < 0) return items.length\n return Math.min(hint.afterIndex + 1, items.length)\n }\n if (hint.index !== undefined) {\n return Math.max(0, Math.min(hint.index, items.length))\n }\n return items.length\n }\n\n const addItem = (data: TItem, positionHint?: PositionHint): TItem[] => {\n const arr = [...model.value]\n const insertIndex = resolveInsertIndex(arr, positionHint)\n arr.splice(insertIndex, 0, data)\n return finalize(arr)\n }\n\n const deleteItem = (idOrItem: ListEditorKey | TItem): TItem[] => {\n const idx = resolveIndex(model.value, idOrItem)\n if (idx === -1) return model.value\n const arr = [...model.value]\n arr.splice(idx, 1)\n return finalize(arr)\n }\n\n const updateItem = (idOrItem: ListEditorKey | TItem, data: TItem): TItem[] => {\n const idx = resolveIndex(model.value, idOrItem)\n if (idx === -1) return model.value\n const arr = [...model.value]\n arr[idx] = data\n return finalize(arr)\n }\n\n const moveItem = (fromIndex: number, toIndex: number): TItem[] => {\n const len = model.value.length\n if (fromIndex === toIndex) return model.value\n if (fromIndex < 0 || fromIndex >= len) return model.value\n if (toIndex < 0 || toIndex >= len) return model.value\n const arr = [...model.value]\n const [el] = arr.splice(fromIndex, 1)\n arr.splice(toIndex, 0, el)\n return finalize(arr)\n }\n\n return {\n viewItems,\n addItem,\n deleteItem,\n updateItem,\n moveItem,\n recalculatePositions,\n }\n}\n","import { computed, ref, type ComputedRef, type Ref } from 'vue'\nimport type { ListEditorKey } from '@/labs/listEditor/types/listEditorTypes'\n\nexport interface UseNestedUnsavedKeysApi {\n /** Set of unsaved keys for one parent row — used as the inner editor's `v-model:unsaved-keys`. */\n getForParent: (parentKey: ListEditorKey) => Set<ListEditorKey>\n /** Push a child editor's unsaved-key set up under `parentKey`. */\n setForParent: (parentKey: ListEditorKey, set: Set<ListEditorKey>) => void\n /**\n * Aggregated set with prefix-merged keys (`${parentKey}:${childKey}`) so two\n * different parents can't collide on a shared child key (typical for newly\n * created rows whose `id` is `0` until the API assigns one).\n */\n merged: ComputedRef<Set<ListEditorKey>>\n /** Total count across all parents — handy for the parent v-model:unsaved-keys. */\n count: ComputedRef<number>\n}\n\n/**\n * Aggregates per-parent child-editor unsaved-keys into one prefix-merged set.\n * Used by stacked editors (e.g. quiz: questions → answers) so the outer\n * editor's parent gets a single merged `Set<ListEditorKey>` to thread into a\n * unsaved-changes guard, without losing per-parent identity.\n *\n * Key collision matters: a brand-new question and a brand-new answer both\n * have `id: 0` from the factory; without the prefix the answers from two\n * different questions would dedupe into one entry and the count would\n * under-report. Prefix `${parentKey}:${childKey}` keeps them distinct.\n *\n * Usage:\n * const childSets = useNestedUnsavedKeys()\n * <ChildEditor\n * :unsaved-keys=\"childSets.getForParent(parent.id)\"\n * @update:unsaved-keys=\"(s) => childSets.setForParent(parent.id, s)\"\n * />\n * // emit `childSets.merged.value` upward\n *\n * IMPORTANT: when the parent editor uses `manage-delete`, clear the removed\n * parent's entry on its `@deleted` — `setForParent(deletedKey, new Set())` —\n * otherwise the deleted row's stale child-unsaved keys keep `merged` non-empty\n * and the unsaved-changes guard lingers after an add-then-delete.\n */\nexport function useNestedUnsavedKeys(): UseNestedUnsavedKeysApi {\n const byParent: Ref<Map<ListEditorKey, Set<ListEditorKey>>> = ref(new Map())\n\n const empty = new Set<ListEditorKey>()\n\n const getForParent = (parentKey: ListEditorKey): Set<ListEditorKey> =>\n byParent.value.get(parentKey) ?? empty\n\n const setForParent = (parentKey: ListEditorKey, set: Set<ListEditorKey>) => {\n if (set.size === 0) {\n byParent.value.delete(parentKey)\n } else {\n byParent.value.set(parentKey, set)\n }\n // Trigger reactivity for `merged` — Map mutations are tracked in Vue 3,\n // but we want a defensive re-emit by reassigning on every call so\n // consumers using shallow equality see a new identity.\n byParent.value = new Map(byParent.value)\n }\n\n const merged = computed<Set<ListEditorKey>>(() => {\n const out = new Set<ListEditorKey>()\n for (const [parentKey, set] of byParent.value.entries()) {\n for (const childKey of set) {\n out.add(`${String(parentKey)}:${String(childKey)}`)\n }\n }\n return out\n })\n\n const count = computed<number>(() => merged.value.size)\n\n return { getForParent, setForParent, merged, count }\n}\n"],"names":["emit","__emit","filterConfig","inject","FilterConfigKey","filterData","FilterDataKey","isUndefined","provide","FilterSubmitResetCounterKey","ref","filterSelected","FilterSelectedKey","clearAll","clearAllFilterSelected","useFilterClearHelpers","submitFilter","__expose","_createBlock","_component_VForm","__props","_renderSlot","_ctx","props","modelValue","_useModel","pagination","DatatablePaginationKey","t","useI18n","defaultItemsCreatedAt","SortOrder","defaultItemsId","defaultItemsMostRelevant","SORT_BY_SCORE","activeTitle","computed","found","options","item","onItemClick","paginationUpdateDefault","watch","newValue","oldValue","option","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_toDisplayString","_unref","_createVNode","_component_VBtn","_createTextVNode","_component_VMenu","_component_VList","_Fragment","_renderList","_component_VListItem","$event","_component_VListItemTitle","_normalizeClass","setStoredPage","useDatatablePageStore","lastPage","displayedFrom","displayedTo","disabledFirstAndPrev","disabledLast","isNull","disabledNext","computedTotalCountText","onClickFirst","useThrottleFn","onClickLast","onClickPrev","onClickNext","_component_VBtnToggle","_cache","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","generateByIdsApiQuery","ids","isSearchApi","field","querySetLimit","querySetOffset","querySetOrder","queryBuild","queryAddFilter","queryAdd","useApiQueryBuilder","limit","useApiFetchByIds","params","client","system","entity","urlTemplate","urlParams","silentConsoleError","abortController","fetchParams","urlTemplateOverride","urlParamsOverride","resolvedParams","isDefined","template","url","replaceUrlParameters","res","isValidHTTPStatus","AnzuApiResponseCodeError","HTTP_STATUS_NO_CONTENT","AnzuFatalError","err","isAnzuApiResponseCodeError","axiosErrorResponseIsForbidden","AnzuApiForbiddenError","axiosErrorResponseHasValidationData","AnzuApiValidationError","axiosErrorResponseHasDependencyExistsData","AnzuApiDependencyExistsError","axiosErrorResponseHasForbiddenOperationData","AnzuApiForbiddenOperationError","axiosErrorIsTimeout","AnzuApiTimeoutError","axios","AnzuApiAxiosError","useApiFetchListBatch","sortBy","sortDesc","batchSize","forceElastic","searchApi","usePagination","results","generateListQuery","resData","isApiInfiniteResponseList","nextPageData","isApiResponseList","promises","numPages","i","pageCopy","paginationRef","pageResponse","END_POINT","ENTITY","useJobApi","useApiFetchList","id","apiFetchOne","data","type","stringToKebabCase","apiCreateOne","apiDeleteOne","defaultColumn","DatatableColumnsConfigMoreOptionsDefault","createDatatableColumnsConfig","config","columnsHidden","subject","moreOptions","localI18n","i18n","storeKey","isString","isBoolean","columnsAll","obj","DATETIME_AUTO_LABEL_TRACKING","columnsVisible","columns","column","loadStoredColumns","stored","storedData","isObject","isArray","storeColumns","onMounted","useSubjectSelect","datatableConfig","datatableHiddenColumns","executeFetch","filterSortBy","enableActions","filterTouched","items","selected","loading","setSortBy","incrementPage","resetFilter","useFilterHelpers","showErrorsDefault","useAlerts","onOpen","resetState","getListDebounced","sortByChange","onFetchNextPage","e","getList","useDebounceFn","event","eventTarget","parent","firstTd","input","dialogLocal","dialog","paginationComputed","toRaw","mdAndDown","useDisplay","sidebarLeft","closeSidebarOnMobile","SubjectSelectCloseSidebarKey","selectedItemsCount","disabledSubmit","toggleSidebar","onClose","onConfirm","fetchNextPage","onPageChange","hasNextPage","autoloadOnIntersect","isIntersecting","withModifiers","_component_VDialog","_mergeProps","_component_VCard","ADialogToolbar","_component_VToolbar","_component_VIcon","_component_VTooltip","_hoisted_7","_hoisted_8","_component_ABtnSecondary","_vShow","ADatatablePagination","_hoisted_9","_component_VSpacer","_component_ABtnPrimary","slots","useSlots","display","rootEl","useTemplateRef","isTouch","controllerOptions","v","stateEntry","useListEditorStateEntry","controller","useListEditorController","getKeyOpt","rowStateScope","provideListEditorStateScope","keyOf","keyFieldName","positionFieldName","p","viewItems","raw","index","warnedKeySignatures","warnOnBadKeys","seen","duplicates","missing","vi","signature","expandedKeys","rowsContainer","isInlineEdit","hasReadonlyDetail","editingKeys","editingSnapshots","beginEdit","cancelEdit","commitEdit","closeEdit","requestAutoOpen","useInlineEditing","key","it","hit","addLabelResolved","emptyTitleResolved","deleteConfirmTitleResolved","deleteConfirmTextResolved","canInteract","canAdd","unsavedCount","unsavedCountVisible","headerVisible","showInlineSaveFooter","decoratorCache","viewItemsDecorated","next","liveKeys","editing","expanded","unsaved","dirty","validationState","cached","decorated","isEmpty","findVi","keyboardNav","useKeyboardNav","resolveCompactText","resolveCompactTextUtil","onAddClick","onRowAddAfterClick","onEditClick","onCloseClick","onExpandClick","currentlyExpanded","k","isRowClickable","onRowClick","deleteDialog","deleteInFlight","deleteError","triggerDeleteClick","onDeleteDialogConfirm","onDeleteDialogCancel","useDeleteDialog","onDeleteClick","onSaveClick","onCancelClick","actionsCache","getActions","actions","now","buildSlotProps","useUnsavedSection","runValidateAndReveal","validateAllAndReveal","useListEditorScopeValidity","_component_VProgressCircular","_component_VAlert","LeEmptyState","_hoisted_10","LeUnsavedLabel","_hoisted_11","_hoisted_12","_hoisted_13","_withModifiers","$slots","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","LeDeleteDialog","_hoisted_19","findByKey","isDescendantOf","ancestorKey","candidateKey","current","findAncestorAtDepth","startKey","targetDepth","isInSourceSubtree","sourceKey","findSiblingNotInSource","startIdx","dir","computeInstruction","args","pointer","hoveredRow","sourceSubtreeDepth","maxDepth","indentPx","containerLeft","containerPaddingLeft","y","h","inTopHalf","refEdge","flatIdx","prev","pointerRelX","rawDepth","depthCeiling","depthFloor","clampedDepth","desired","ancestor","GROUP_CLASS","HANDLE_CLASS","LeNestedRow","LeNestedRowSelf","anchorName","resolveValidation","directChildren","_normalizeStyle","LeDragHandle","_normalizeProps","_guardReactiveProps","child","_withCtx","slotScope","open","selectedKey","placement","descendantKeys","out","walk","nodes","n","collect","sub","s","sourceNode","find","currentParentKey","parentKey","candidates","subtreeDepth","depth","disallowed","reason","validCandidates","c","selectedCandidate","showPlacementPicker","onCandidateClick","onCancel","indent","reasonLabel","_component_VCardTitle","_component_VCardText","_component_VRadioGroup","_component_VRadio","_component_VCardActions","INDENT_PX","ANCHOR_X","mode","showWarningT","isNarrow","useContainerWidth","useIsTouchDevice","effectiveCloseVariant","childrenExpandedKeys","detailExpandedKeys","tree","useNestedListEditorStateEntry","useNestedListEditorController","flatViewItems","flat","flatIndex","parentNode","node","childrenAllowed","hasChildren","childrenCount","remainingDepth","snapshot","shallowRef","movedKeys","sessionDeferredDeletes","sessionImmediateDeletes","resetDirtyBaseline","markMoved","childrenExpanded","moved","totalItemCount","canEnterReorder","clearEditing","keys","applying","applyError","hasPendingChanges","movedCount","reorderMode","enterReorderMode","cancelReorderMode","applyReorder","useReorderMode","m","cloneDeep","expandableKeys","nextTick","dragEnabled","initSortables","destroySortables","payload","nestedPendingCount","nestedPendingChanges","reorderToggleVisible","compactReorderButton","allExpanded","expandAllVisible","toggleExpandAll","sortableInstances","forceRerender","dragState","hitTestRow","clientX","clientY","wrapper","parseKey","recomputeInstruction","containerRect","rowRect","onPointerMove","applyInstruction","inst","groups","group","sortable","useSortable","DRAG_GHOST_CLASS","DRAG_CHOSEN_CLASS","DRAG_CLASS","draggedEl","draggedNode","orig","tev","state","stringToInt","onBeforeUnmount","overlayVisual","refWrapper","rowEl","lineLeft","lineTop","line","connector","levelWrapper","levelRect","levelCentreY","onAddChildClick","onChevronClick","currently","onDetailToggle","deferred","moveUp","moveDown","moveTop","moveBottom","doIndent","doOutdent","toolbarSlotProps","reorderToggleSlotProps","expandableKeySet","moveToPositionDialogOpen","moveToPositionTarget","moveToPositionContext","target","siblings","idx","moveToPositionLabel","openMoveToPosition","onMoveToPositionConfirm","newIndex","ctx","changeParentDialogOpen","changeParentTarget","openChangeParent","onChangeParentConfirm","parentId","position","siblingCount","targetIndex","rowContext","rowCallbacks","rootViewItems","addAfterId","targetId","addChildToId","removeById","updateData","_children","_position","_markUnsaved","clearUnsavedState","revealNestedInvalid","LeStatus","LeMoveToPositionDialog","LeChangeParentDialog","onStay","onDiscard","label","ACKNOWLEDGE_TTL_MS","isTruthySource","value","resolveBool","fallback","useUnsavedChangesGuard","sectionRegistry","provideUnsavedSectionRegistry","ownSections","normalized","resolved","hasUnsavedChanges","promptOpen","pendingResolver","acknowledgedOnce","acknowledgeTimer","clearAcknowledgeTimer","askToLeave","resolve","resolvePrompt","discard","acknowledge","unacknowledge","getCurrentInstance","onBeforeRouteLeave","onBeforeUnload","dialogModel","suppressNext","useGuardedDelete","guard","onDelete","result","useListEditor","model","keyField","positionField","positionMultiplier","updatePositionEnabled","recalculatePositions","renumberPositions","finalize","arr","isItem","resolveIndexByKey","x","resolveIndex","idOrItem","resolveInsertIndex","hint","positionHint","insertIndex","fromIndex","toIndex","len","el","useNestedUnsavedKeys","byParent","empty","getForParent","setForParent","set","merged","childKey","count"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBA,UAAMA,IAAOC,GAIPC,IAAeC,GAAOC,EAAe,GACrCC,IAAaF,GAAOG,EAAa;AACvC,QAAIC,GAAYL,CAAY,KAAKK,GAAYF,CAAU;AACrD,YAAM,IAAI,MAAM,kCAAkC;AAGpD,IAAAG,GAAQC,IAA6BC,EAAI,CAAC,CAAC;AAC3C,UAAMC,IAAiBD,EAAuD,oBAAI,KAAK;AACvF,IAAAF,GAAQI,IAAmBD,CAAc;AAEzC,UAAM,EAAE,UAAAE,GAAU,wBAAAC,EAAA,IAA2BC,GAAA,GAEvCC,IAAe,MAAM;AACzB,MAAAhB,EAAK,QAAQ;AAAA,IACf;AAUA,WAAAiB,EAAa,EAAE,aALK,MAAM;AACxB,MAAAJ,EAASR,GAAYH,CAAY,GACjCY,EAAuBT,GAAYH,GAAcS,CAAc;AAAA,IACjE,GAE4B,mBAI1BO,EAMQC,IAAA;AAAA,MALL,MAAMC,EAAA;AAAA,MACN,YAAgBJ,GAAY,CAAA,SAAA,CAAA;AAAA,MAC5B,YAAaA,GAAY,CAAA,OAAA,CAAA;AAAA,IAAA;iBAE1B,MAAQ;AAAA,QAARK,EAAQC,EAAA,QAAA,SAAA;AAAA,MAAA;;;;;;;;;;;;;;;;;;;AC3CZ,UAAMC,IAAQH,GAcRpB,IAAOC,GAIPuB,IAAaC,MAAoB,YAGtC,GAEKC,IAAavB,GAAOwB,EAAsB;AAEhD,QAAIpB,GAAYmB,CAAU;AACxB,YAAM,IAAI,MAAM,kCAAkC;AAGpD,UAAM,EAAE,GAAAE,EAAA,IAAMC,GAAA,GAERC,IAAkD;AAAA,MACtD;AAAA,QACE,IAAI;AAAA,QACJ,QAAQ;AAAA,QACR,QAAQ,EAAE,KAAK,aAAa,OAAOC,GAAU,KAAA;AAAA,MAAK;AAAA,MAEpD;AAAA,QACE,IAAI;AAAA,QACJ,QAAQ;AAAA,QACR,QAAQ,EAAE,KAAK,aAAa,OAAOA,GAAU,IAAA;AAAA,MAAI;AAAA,IACnD,GAGIC,IAA2C;AAAA,MAC/C;AAAA,QACE,IAAI;AAAA,QACJ,QAAQ;AAAA,QACR,QAAQ,EAAE,KAAK,MAAM,OAAOD,GAAU,KAAA;AAAA,MAAK;AAAA,MAE7C;AAAA,QACE,IAAI;AAAA,QACJ,QAAQ;AAAA,QACR,QAAQ,EAAE,KAAK,MAAM,OAAOA,GAAU,IAAA;AAAA,MAAI;AAAA,IAC5C,GAGIE,IAAqD;AAAA,MACzD;AAAA,QACE,IAAI;AAAA,QACJ,QAAQ;AAAA,QACR,QAAQ,EAAE,KAAKC,IAAe,OAAOH,GAAU,KAAA;AAAA,MAAK;AAAA,MAEtD;AAAA,QACE,IAAI;AAAA,QACJ,QAAQ;AAAA,QACR,QAAQ,EAAE,KAAK,aAAa,OAAOA,GAAU,KAAA;AAAA,MAAK;AAAA,MAEpD;AAAA,QACE,IAAI;AAAA,QACJ,QAAQ;AAAA,QACR,QAAQ,EAAE,KAAK,aAAa,OAAOA,GAAU,IAAA;AAAA,MAAI;AAAA,IACnD,GAGII,IAAcC,EAAS,MAAM;AACjC,YAAMC,IAAQC,EAAQ,MAAM,KAAK,CAACC,MAAcA,EAAK,OAAOf,EAAW,KAAK;AAC5E,aAAIa,IAAcT,EAAES,EAAM,MAAM,IACzB;AAAA,IACT,CAAC,GAEKC,IAAUF,EAAS,MACnBb,EAAM,gBAAsBA,EAAM,gBAClCA,EAAM,YAAY,kBAAwBU,IAC1CV,EAAM,YAAY,OAAaS,IAC5BF,CACR,GAEKU,IAAc,CAACD,MAAkC;AACrD,MAAAf,EAAW,QAAQe,EAAK;AAAA,IAC1B,GAEME,IAA0B,CAACJ,MAAmC;AAClE,MAAKA,EAAM,WACTX,EAAW,QAAQ;AAAA,QACjB,GAAGA,EAAW;AAAA,QACd,QAAQ;AAAA,MAAA,GAEV1B,EAAK,gBAAgBqC,CAAK,IAE5BX,EAAW,MAAM,SAASW,EAAM,QAChCrC,EAAK,gBAAgBqC,CAAK;AAAA,IAC5B;AAEA,WAAAK,GAAMlB,GAAY,CAACmB,GAAUC,MAAa;AACxC,UAAID,MAAaC,EAAU;AAC3B,YAAMP,IAAQC,EAAQ,MAAM,KAAK,CAACO,MACzBA,EAAO,OAAOF,CACtB;AACD,UAAI,CAAApC,GAAY8B,CAAK,GAGrB;AAAA,YAAI9B,GAAYgB,EAAM,wBAAwB,GAAG;AAC/C,UAAAkB,EAAwBJ,CAAK;AAC7B;AAAA,QACF;AACA,QAAAd,EAAM,yBAAyBc,GAAOX,CAAU;AAAA;AAAA,IAClD,CAAC,GAEDgB;AAAA,MACEhB;AAAA,MACA,CAACiB,GAAUC,MAAa;AACtB,YACED,EAAS,QAAQ,QAAQC,GAAU,QAAQ,OAC3CD,EAAS,QAAQ,UAAUC,GAAU,QAAQ;AAE7C;AAEF,cAAMP,IAAQC,EAAQ,MAAM,KAAK,CAACO,MAE9BF,EAAS,QAAQ,QAAQE,EAAO,QAAQ,OACxCF,EAAS,QAAQ,UAAUE,EAAO,QAAQ,KAE7C;AACD,QAAItC,GAAY8B,CAAK,MAGrBb,EAAW,QAAQa,EAAM;AAAA,MAC3B;AAAA,MACA,EAAE,WAAW,GAAA;AAAA,IAAK,cAKlBS,EAAA,GAAAC,EAiCM,OAjCNC,IAiCM;AAAA,MAhCJC,EAEM,OAFNC,IAEMC,EADDC,EAAAxB,CAAA,+CAA8C,MACnD,CAAA;AAAA,MACAyB,EA4BOC,GAAA;AAAA,QA3BL,SAAQ;AAAA,QACR,SAAQ;AAAA,QACR,MAAK;AAAA,QACL,OAAM;AAAA,QACN,eAAY;AAAA,MAAA;mBAEZ,MAAiB;AAAA,UAAdC,EAAAJ,EAAAhB,EAAA,KAAW,IAAG,KACjB,CAAA;AAAA,UAAAkB,EAmBQG,IAAA;AAAA,YAlBN,WAAU;AAAA,YACV,UAAS;AAAA,YACT,0BAAA;AAAA,UAAA;uBAEA,MAaQ;AAAA,cAbRH,EAaQI,IAAA;AAAA,gBAZN,SAAQ;AAAA,gBACR,OAAM;AAAA,cAAA;2BAGJ,MAAuB;AAAA,0BADzBV,EAQYW,IAAA,MAAAC,GAPKrB,EAAA,OAAO,CAAfC,YADTrB,EAQY0C,IAAA;AAAA,oBANT,KAAKrB,EAAK;AAAA,oBACV,SAAK,CAAAsB,MAAErB,EAAYD,CAAI;AAAA,kBAAA;+BAExB,MAEiB;AAAA,sBAFjBc,EAEiBS,IAAA;AAAA,wBAFA,OAAKC,GAAA,EAAA,oBAAwBxB,EAAK,OAAOf,EAAA,OAAU;AAAA,sBAAA;mCAClE,MAAoB;AAAA,8BAAjB4B,EAAAxB,CAAA,EAAEW,EAAK,MAAM,CAAA,GAAA,CAAA;AAAA,wBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvK9B,UAAMvC,IAAOC,GAIPyB,IAAavB,GAAOwB,EAAsB;AAEhD,QAAIpB,GAAYmB,CAAU;AACxB,YAAM,IAAI,MAAM,kCAAkC;AAGpD,UAAM,EAAE,GAAAE,EAAA,IAAMC,GAAA,GACR,EAAE,eAAAmC,EAAA,IAAkBC,GAAA,GAEpBC,IAAW9B,EAAS,MACjB,KAAK,KAAKV,EAAW,MAAM,aAAaA,EAAW,MAAM,WAAW,CAC5E,GAEKyC,IAAgB/B,EAAS,MACtBV,EAAW,MAAM,OAAOA,EAAW,MAAM,cAAcA,EAAW,MAAM,cAAc,CAC9F,GAEK0C,IAAchC,EAAS,MAEzBV,EAAW,MAAM,OAAOA,EAAW,MAAM,cACzCA,EAAW,MAAM,cACjBA,EAAW,MAAM,gBAEpB,GAEK2C,IAAuBjC,EAAS,MAC7BV,EAAW,MAAM,SAAS,CAClC,GAEK4C,IAAelC,EAAS,MACrB,CAACmC,GAAO7C,EAAW,MAAM,WAAW,KAAKA,EAAW,MAAM,SAASwC,EAAS,KACpF,GAEKM,IAAepC,EAAS,MAEzBmC,GAAO7C,EAAW,MAAM,WAAW,KAAKA,EAAW,MAAM,SAASwC,EAAS,SAC5ExC,EAAW,MAAM,gBAAgB,EAEpC,GAEK+C,IAAyBrC,EAAS,MACjCmC,GAAO7C,EAAW,MAAM,WAAW,IAGjCA,EAAW,MAAM,aAFfA,EAAW,MAAM,cAAc0C,EAAY,QAAQ,IAAI,MAAMA,EAAY,KAGnF;AAED,IAAA1B;AAAA,MACE,MAAMhB,EAAW,MAAM;AAAA,MACvB,CAACiB,GAAUC,MAAa;AACtB,QAAID,MAAaC,MACflB,EAAW,MAAM,OAAO,GACxB1B,EAAK,QAAQ;AAAA,MAEjB;AAAA,IAAA,GAGF0C;AAAA,MACE,MAAMhB,EAAW,MAAM;AAAA,MACvB,CAACiB,GAAUC,MAAa;AACtB,QAAID,MAAaC,MACfoB,EAAcrB,CAAQ,GACtB3C,EAAK,QAAQ;AAAA,MAEjB;AAAA,IAAA;AAGF,UAAM0E,IAAeC,GAAc,MAAM;AACvC,MAAAjD,EAAW,MAAM,OAAO;AAAA,IAC1B,GAAG,GAAG,GAEAkD,IAAcD,GAAc,MAAM;AACtC,MAAAjD,EAAW,MAAM,OAAOwC,EAAS;AAAA,IACnC,GAAG,GAAG,GAEAW,IAAcF,GAAc,MAAM;AACtC,MAAAjD,EAAW,MAAM,OAAOA,EAAW,MAAM,OAAO;AAAA,IAClD,GAAG,GAAG,GAEAoD,IAAcH,GAAc,MAAM;AACtC,MAAAjD,EAAW,MAAM,OAAOA,EAAW,MAAM,OAAO;AAAA,IAClD,GAAG,GAAG;sBAIJoB,EAAA,GAAAC,EAiEM,OAjENC,IAiEM;AAAA,MA/DK5B,EAAA,kCADT0B,KAAAC,EAwBM,OAxBNG,IAwBM;AAAA,QApBDK,EAAAJ,EAAAC,EAAAxB,CAAA,6CAA4C,MAC/C,CAAA;AAAA,QAAAyB,EAkBa0B,IAAA;AAAA,UAjBF,YAAA3B,EAAA1B,CAAA,EAAW;AAAA,UAAX,uBAAAsD,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAnB,MAAAT,EAAA1B,CAAA,EAAW,cAAWmC;AAAA,UAC/B,OAAM;AAAA,UACN,SAAQ;AAAA,UACR,WAAA;AAAA,UACA,WAAQ;AAAA,QAAA;qBAGN,MAAmC;AAAA,oBADrCd,EAUOW,IAAA,MAAAC,GATUvC,EAAA,qBAAmB,CAA3BmB,YADTrB,EAUOoC,GAAA;AAAA,cARJ,KAAKf;AAAA,cACL,OAAOA,MAASa,EAAA1B,CAAA,EAAW,cAAW,cAAA;AAAA,cACtC,OAAOa;AAAA,cACR,SAAQ;AAAA,cACR,MAAK;AAAA,cACL,SAAQ;AAAA,YAAA;yBAER,MAAU;AAAA,oBAAPA,CAAI,GAAA,CAAA;AAAA,cAAA;;;;;;;MAIbU,EAGM,OAHNgC,IAGM9B,EAFDgB,EAAA,KAAa,IAAG,QAAGhB,EAAGiB,EAAA,KAAW,IAAG,MAACjB,EAAGC,EAAAxB,CAAA,EAAC,8BAAA,CAAA,IAAmC,QAC5E6C,EAAA,KAAsB,GAAA,CAAA;AAAA,MAE3BxB,EAeM,OAfNiC,IAeM;AAAA,QAdJ7B,EAMEC,GAAA;AAAA,UALC,UAAUe,EAAA;AAAA,UACX,MAAK;AAAA,UACL,MAAK;AAAA,UACL,SAAQ;AAAA,UACP,WAAYjB,EAAAsB,CAAA,GAAY,CAAA,MAAA,CAAA;AAAA,QAAA;QAE3BrB,EAMEC,GAAA;AAAA,UALC,UAAUe,EAAA;AAAA,UACX,MAAK;AAAA,UACL,MAAK;AAAA,UACL,SAAQ;AAAA,UACP,WAAYjB,EAAAyB,CAAA,GAAW,CAAA,MAAA,CAAA;AAAA,QAAA;;MAG5B5B,EAEM,OAFNkC,IAEM;AAAA,QADJlC,EAAkC,QAAA,MAAAE,EAAzBC,EAAA1B,CAAA,EAAW,IAAI,GAAA,CAAA;AAAA,MAAA;MAE1BuB,EAeM,OAfNmC,IAeM;AAAA,QAdJ/B,EAMEC,GAAA;AAAA,UALC,UAAUkB,EAAA;AAAA,UACX,MAAK;AAAA,UACL,MAAK;AAAA,UACL,SAAQ;AAAA,UACP,WAAYpB,EAAA0B,CAAA,GAAW,CAAA,MAAA,CAAA;AAAA,QAAA;QAE1BzB,EAMEC,GAAA;AAAA,UALC,UAAUgB,EAAA;AAAA,UACX,MAAK;AAAA,UACL,MAAK;AAAA,UACL,SAAQ;AAAA,UACP,WAAYlB,EAAAwB,CAAA,GAAW,CAAA,MAAA,CAAA;AAAA,QAAA;;;;ICpH1BS,KAAwB,CAC5BC,GACAC,GACAC,IAAQ,SACG;AACX,QAAM,EAAE,eAAAC,GAAe,gBAAAC,GAAgB,eAAAC,GAAe,YAAAC,GAAY,gBAAAC,GAAgB,UAAAC,EAAA,IAChFC,GAAA,GACIC,IAAQV,EAAI;AAClB,SAAAG,EAAcO,CAAK,GACnBN,EAAe,GAAGM,CAAK,GACvBL,EAAcH,GAAO,EAAK,GACtBD,IAAaO,EAASN,GAAOF,EAAI,KAAK,GAAG,CAAC,MAC1B,MAAME,GAAOF,EAAI,KAAK,GAAG,CAAC,GAEvCM,EAAA;AACT,GAEaK,KAAmB,CAC9BC,MACkC;AAClC,QAAM;AAAA,IACJ,QAAAC;AAAA,IACA,QAAAC;AAAA,IACA,QAAAC;AAAA,IACA,aAAAC;AAAA,IACA,WAAAC;AAAA,IACA,SAAAjE,IAAU,CAAA;AAAA,IACV,aAAAiD,IAAc;AAAA,IACd,OAAAC,IAAQ;AAAA,IACR,oBAAAgB,IAAqB;AAAA,EAAA,IACnBN;AAEJ,MAAIO,IAA0C;AAoF9C,SAAO;AAAA,IACL,cAnFmB,OACnBnB,GACAoB,IAAgC,CAAA,MACjB;AACf,MAAAD,IAAkB,IAAI,gBAAA;AAEtB,YAAM,EAAE,aAAaE,GAAqB,WAAWC,MAAsBF;AAE3E,UAAI;AACF,cAAMG,IAAiBC,GAAUF,CAAiB,IAAIA,IAAoBL,GACpEQ,IAAWD,GAAUH,CAAmB,IAAIA,IAAsBL;AACxE,YAAI/F,GAAYwG,CAAQ,EAAG,OAAM,IAAI,MAAM,2BAA2B;AACtE,cAAMC,KACHzG,GAAYsG,CAAc,IAAIE,IAAWE,GAAqBF,GAAUF,CAAc,KACvFxB,GAAsBC,GAAKC,GAAaC,CAAK,GAEzC0B,IAAM,MAAMf,IAAS,IAAIa,GAAK;AAAA,UAClC,GAAG1E;AAAA,UACH,QAAQmE,EAAgB;AAAA,QAAA,CACzB;AAED,YAAI,CAACU,GAAkBD,EAAI,MAAM;AAC/B,gBAAM,IAAIE,GAAyBF,EAAI,MAAM;AAG/C,YAAIA,EAAI,MAAM;AACZ,iBAAOA,EAAI,KAAK;AAGlB,YAAIA,EAAI,WAAWG;AACjB,iBAAO,CAAA;AAGT,cAAM,IAAIC,GAAA;AAAA,MACZ,SAASC,GAAU;AACjB,YAAIA,aAAe,gBAAgBA,EAAI,SAAS;AAC9C,iBAAO,CAAA;AAGT,cAAIC,GAA2BD,CAAG,IAC1BA,IAGJE,GAA8BF,CAAG,IAC7B,IAAIG,GAAsBH,GAAKA,EAAI,QAAQ,GAAG,IAGlDI,GAAoCJ,CAAG,IACnC,IAAIK,GAAuBL,GAAKnB,GAAQC,GAAQkB,CAAG,IAGvDM,GAA0CN,CAAG,IACzC,IAAIO,GAA6BP,GAAKnB,GAAQC,GAAQkB,CAAG,IAG7DQ,GAA4CR,CAAG,IAC3C,IAAIS,GAA+BT,GAAKA,CAAG,IAG/CU,GAAoBV,CAAG,IACnB,IAAIW,GAAoBX,CAAG,IAG/BY,GAAM,aAAaZ,CAAG,KACnBf,KACH,QAAQ,MAAM,kBAAkBF,GAAa,GAAIiB,EAAI,QAAQ,CAACA,EAAI,KAAK,IAAI,EAAG,GAC1E,IAAIa,GAAkBb,CAAG,MAG5Bf,KAAoB,QAAQ,MAAM,oBAAoBe,CAAG,GACxD,IAAID,GAAeC,CAAG;AAAA,MAC9B,UAAA;AACE,QAAAd,IAAkB;AAAA,MACpB;AAAA,IACF;AAAA,IAUE,YARiB,MAAM;AACvB,MAAIA,KACFA,EAAgB,MAAA;AAAA,IAEpB;AAAA,EAIE;AAEJ,GCrHa4B,KAAuB,CAClCnC,MACsC;AACtC,QAAM;AAAA,IACJ,QAAAC;AAAA,IACA,QAAAC;AAAA,IACA,QAAAC;AAAA,IACA,aAAAC;AAAA,IACA,WAAAC;AAAA,IACA,SAAAjE,IAAU,CAAA;AAAA,IACV,oBAAAkE,IAAqB;AAAA,EAAA,IACnBN;AAEJ,MAAIO,IAA0C;AAyJ9C,SAAO;AAAA,IACL,cAxJmB,OACnBpG,GACAH,GACAwG,IAAoC,CAAA,MACrB;AACf,MAAAD,IAAkB,IAAI,gBAAA;AAEtB,YAAM;AAAA,QACJ,aAAaE;AAAA,QACb,WAAWC;AAAA,QACX,QAAA0B,IAAS;AAAA,QACT,UAAAC,IAAW;AAAA,QACX,WAAAC,IAAY;AAAA,QACZ,cAAAC,IAAe;AAAA,MAAA,IACb/B;AAEJ,UAAI;AACF,cAAMgC,IAAYxI,EAAa,QAAQ,WAAWuI,IAAe,YAAY,IACvE5B,IAAiBC,GAAUF,CAAiB,IAAIA,IAAoBL,GACpEQ,IAAWD,GAAUH,CAAmB,IAAIA,IAAsBL;AACxE,YAAI/F,GAAYwG,CAAQ,EAAG,OAAM,IAAI,MAAM,2BAA2B;AACtE,cAAM,EAAE,YAAArF,MAAeiH,GAAcL,GAAQC,IAAWxG,GAAU,OAAOA,GAAU,KAAK;AAAA,UACtF,aAAayG;AAAA,QAAA,CACd,GACKxB,KACHzG,GAAYsG,CAAc,IAAIE,IAAWE,GAAqBF,GAAUF,CAAc,KACvF6B,GACIE,IAAU,CAAA,GAGV1B,KAAM,MAAMf,EAAA,EAAS;AAAA,UACzBa,IAAM6B,GAAkBnH,GAAYrB,GAAYH,CAAY;AAAA,UAC5D;AAAA,YACE,GAAGoC;AAAA,YACH,QAAQmE,EAAgB;AAAA,UAAA;AAAA,QAC1B;AAGF,YAAI,CAACU,GAAkBD,GAAI,MAAM;AAC/B,gBAAM,IAAIE,GAAyBF,GAAI,MAAM;AAG/C,YAAIA,GAAI,MAAM;AACZ,gBAAM4B,IAAU5B,GAAI;AAIpB,cAFA0B,EAAQ,KAAK,GAAGE,EAAQ,IAAI,GAExBC,GAA0BD,CAAO;AAInC,iBAHApH,EAAW,MAAM,cAAcoH,EAAQ,aAGhCpH,EAAW,MAAM,eAAa;AACnC,cAAAA,EAAW,MAAM;AAQjB,oBAAMsH,MAPmB,MAAM7C,EAAA,EAAS;AAAA,gBACtCa,IAAM6B,GAAkBnH,GAAYrB,GAAYH,CAAY;AAAA,gBAC5D;AAAA,kBACE,GAAGoC;AAAA,kBACH,QAAQmE,EAAgB;AAAA,gBAAA;AAAA,cAC1B,GAEoC;AAEtC,cAAAmC,EAAQ,KAAK,GAAGI,GAAa,IAAI,GACjCtH,EAAW,MAAM,cAAcsH,GAAa;AAAA,YAC9C;AAAA,mBACSC,GAAkBH,CAAO,GAAG;AAGrC,gBAFApH,EAAW,MAAM,aAAaoH,EAAQ,YAElCpH,EAAW,MAAM,cAAcA,EAAW,MAAM;AAClD,qBAAOkH;AAIT,kBAAMM,IAA2B,CAAA,GAC3BC,KAAW,KAAK,KAAKzH,EAAW,MAAM,aAAaA,EAAW,MAAM,WAAW;AAErF,qBAAS0H,KAAI,GAAGA,KAAID,IAAUC,MAAK;AAEjC,oBAAMC,KAAW,EAAE,GAAG3H,EAAW,OAAO,MAAM0H,KAAI,EAAA,GAC5CE,KAAgB5I,EAAI2I,EAAQ;AAClC,cAAAH,EAAS;AAAA,gBACP/C,EAAA,EAAS,IAAIa,IAAM6B,GAAkBS,IAAejJ,GAAYH,CAAY,GAAG;AAAA,kBAC7E,GAAGoC;AAAA,kBACH,QAAQmE,EAAgB;AAAA,gBAAA,CACzB;AAAA,cAAA;AAAA,YAEL;AAGA,aADqB,MAAM,QAAQ,IAAIyC,CAAQ,GAClC,QAAQ,CAACK,OAAiB;AAErC,cAAAX,EAAQ,KAAK,GAAGW,GAAa,KAAK,IAAI;AAAA,YACxC,CAAC;AAAA,UACH;AAEA,iBAAOX;AAAA,QACT;AAEA,YAAI1B,GAAI,WAAWG;AACjB,iBAAO,CAAA;AAGT,cAAM,IAAIC,GAAA;AAAA,MACZ,SAASC,GAAU;AACjB,YAAIA,aAAe,gBAAgBA,EAAI,SAAS;AAC9C,iBAAO,CAAA;AAGT,cAAIC,GAA2BD,CAAG,IAC1BA,IAGJE,GAA8BF,CAAG,IAC7B,IAAIG,GAAsBH,GAAKA,EAAI,QAAQ,GAAG,IAGlDI,GAAoCJ,CAAG,IACnC,IAAIK,GAAuBL,GAAKnB,GAAQC,GAAQkB,CAAG,IAGvDM,GAA0CN,CAAG,IACzC,IAAIO,GAA6BP,GAAKnB,GAAQC,GAAQkB,CAAG,IAG7DQ,GAA4CR,CAAG,IAC3C,IAAIS,GAA+BT,GAAKA,CAAG,IAG/CU,GAAoBV,CAAG,IACnB,IAAIW,GAAoBX,CAAG,IAG/BY,GAAM,aAAaZ,CAAG,KACnBf,KACH,QAAQ,MAAM,kBAAkBF,GAAa,GAAIiB,EAAI,QAAQ,CAACA,EAAI,KAAK,IAAI,EAAG,GAC1E,IAAIa,GAAkBb,CAAG,MAG5Bf,KAAoB,QAAQ,MAAM,oBAAoBe,CAAG,GACxD,IAAID,GAAeC,CAAG;AAAA,MAC9B,UAAA;AACE,QAAAd,IAAkB;AAAA,MACpB;AAAA,IACF;AAAA,IAUE,YARiB,MAAM;AACvB,MAAIA,KACFA,EAAgB,MAAA;AAAA,IAEpB;AAAA,EAIE;AAEJ,GC1NM+C,KAAY,eACLC,KAAS;AAEf,SAASC,GACdvD,GACAC,GACA;AAkBA,SAAO;AAAA,IACL,iBAlBsB,MACtBuD,GAA2B,EAAE,QAAAxD,GAAQ,QAAAC,GAAQ,QAAQqD,IAAQ,aAAaD,IAAW;AAAA,IAkBrF,UAhBe,CAACI,MAChBC,GAAqB1D,GAAQqD,KAAY,QAAQ,EAAE,IAAAI,KAAMxD,GAAQqD,EAAM;AAAA,IAgBvE,WAdgB,CAACK,MAAkB;AACnC,YAAMC,IAAOC,GAAkBF,EAAK,aAAa,EAC9C,MAAM,CAAC,EACP,QAAQ,UAAU,QAAQ;AAE7B,aAAOG,GAAsB9D,GAAQ2D,GAAMN,KAAY,UAAU,EAAE,MAAAO,EAAA,GAAQ3D,GAAQqD,EAAM;AAAA,IAC3F;AAAA,IASE,WAPgB,CAACG,MACjBM,GAAsB/D,GAAQqD,KAAY,QAAQ,EAAE,IAAAI,KAAMxD,GAAQqD,EAAM;AAAA,EAMxE;AAEJ;AC5BA,MAAMU,KAAsC;AAAA,EAC1C,KAAK;AAAA,EACL,OAAO;AAAA,EACP,UAAU;AAAA,EACV,OAAO;AACT,GASMC,KAA2C;AAAA,EAC/C,0BAA0B;AAAA,EAC1B,gBAAgB;AAAA,EAChB,YAAY;AAAA,EACZ,YAAY;AACd;AAEO,SAASC,GACdC,GACAC,GACAnE,GACAoE,GACAC,IAA0D,IAC1D;AACA,QAAMnI,IAAU,EAAE,GAAG8H,IAA0C,GAAGK,EAAA,GAC5DC,IAAYpI,EAAQ,cAAcqI,IAClC,EAAE,GAAA/I,EAAA,IAAM8I,EAAU,UAAUA;AAElC,MAAIE;AACJ,EAAIC,GAASvI,EAAQ,wBAAwB,IAC3CsI,IAAWtI,EAAQ,2BAEnBwI,GAAUxI,EAAQ,wBAAwB,KACjCA,EAAQ,6BAAjB,OAEAsI,IAAW,WAAWxE,IAAS,MAAMoE;AAGvC,QAAMO,IAAaT,EAAO,IAAI,CAAC/H,MAAS;AACtC,UAAMyI,IAAM,EAAE,GAAGb,IAAe,GAAG5H,EAAA;AACnC,WAAKhC,GAAYyK,EAAI,KAAK,MAEfzK,GAAYyK,EAAI,KAAK,KAAKC,GAA6B,SAASD,EAAI,GAAG,IAChFA,EAAI,QAAQpJ,EAAE,2BAA2BoJ,EAAI,GAAG,IACvCzK,GAAYyK,EAAI,KAAK,KAAK5E,KAAUoE,IAC7CQ,EAAI,QAAQpJ,EAAEwE,IAAS,MAAMoE,IAAU,YAAYQ,EAAI,GAAG,IAE1DA,EAAI,QAAQ,KAEPA;AAAA,EACT,CAAC,GAEKE,IAAiB9I,EAAS,MAAM;AACpC,UAAM+I,IAAe,CAAA;AACrB,WAAI7I,EAAQ,cAAY6I,EAAQ,KAAK,EAAE,KAAK,qBAAqB,UAAU,IAAO,GAClFJ,EAAW,QAAQ,CAACK,MAAW;AAC7B,MAAKb,EAAc,MAAM,SAASa,EAAO,GAAG,KAC1CD,EAAQ,KAAKC,CAAM;AAAA,IAEvB,CAAC,GACI9I,EAAQ,kBAAgB6I,EAAQ,KAAK,EAAE,KAAK,WAAW,UAAU,IAAO,OAAO,MAAA,CAAO,GACpFA;AAAA,EACT,CAAC,GAEKE,IAAoB,MAAM;AAC9B,QAAI,CAACT,KAAY,CAAC,aAAc;AAChC,UAAMU,IAAS,aAAa,QAAQV,CAAQ;AAC5C,QAAI,CAACU,EAAQ;AACb,UAAMC,IAAa,KAAK,MAAMD,CAAM;AACpC,IAAKE,GAASD,CAAU,KACnBE,GAAQF,EAAW,MAAM,MAC9BhB,EAAc,QAAQgB,EAAW;AAAA,EACnC,GAEMG,IAAe,CAACP,MAAsB;AAC1C,IAAI,CAACP,KAAY,CAAC,gBAClB,aAAa,QAAQA,GAAU,KAAK,UAAU,EAAE,QAAQO,EAAA,CAAS,CAAC;AAAA,EACpE;AAEA,SAAAQ,GAAU,MAAM;AACd,IAAAN,EAAA;AAAA,EACF,CAAC,GAED3I,GAAM6H,GAAe,CAAC5H,MAAa;AACjC,IAAA+I,EAAa/I,CAAQ;AAAA,EACvB,CAAC,GAEM;AAAA,IACL,YAAAoI;AAAA,IACA,gBAAAG;AAAA,IACA,eAAAX;AAAA,EAAA;AAEJ;AC5FO,SAASqB,GACdC,GACAC,GACA1F,GACAoE,GACAuB,GAMA1L,GACAH,GACA8L,IAAuC,MACvCtF,IAA2C,QAC3CuF,IAAyB,IACzB;AACA,QAAMC,IAA8BxL,EAAI,EAAK,GACvCyL,IAA2BzL,EAAI,EAAE,GACjC0L,IAA8B1L,EAAI,EAAE,GACpC2L,IAAU3L,EAAI,EAAK,GACnB,EAAE,YAAAgB,GAAY,WAAA4K,GAAW,eAAAC,EAAA,IAAkB5D;AAAA,IAC/CpE,GAAOyH,CAAY,IAAI,OAAOA,EAAa;AAAA,IAC3CA,GAAc;AAAA,EAAA,GAGV,EAAE,aAAAQ,GAAa,cAAAxL,EAAA,IAAiByL,GAAiBpM,GAAYH,GAAc;AAAA,IAC/E,0BAA0B;AAAA,IAC1B,mBAAmB;AAAA,EAAA,CACpB,GACK,EAAE,mBAAAwM,EAAA,IAAsBC,GAAA,GAExB,EAAE,gBAAAzB,GAAgB,YAAAH,GAAY,eAAAR,EAAA,IAAkBF;AAAA,IACpDwB;AAAA,IACAC;AAAA,IACA1F;AAAA,IACAoE;AAAA,IACA,EAAE,0BAA0B,IAAO,gBAAgB,CAACyB,EAAA;AAAA,EAAc,GAG9DW,IAAS,MAAM;AACnB,IAAAC,GAAA,GACAC,EAAA;AAAA,EACF,GAEMC,IAAe,CAAClK,OAAoC;AACxD,IAAAyJ,EAAUzJ,GAAO,MAAM,GACvBiK,EAAA;AAAA,EACF,GAEME,IAAkB,YAAY;AAClC,IAAAX,EAAQ,QAAQ,IAChBE,EAAA;AACA,QAAI;AACF,YAAMrF,KAAO,MAAM6E,EAAarK,GAAYrB,GAAYH,GAAcwG,CAAW;AACjF,MAAAyF,EAAM,MAAM,KAAK,GAAGjF,EAAG;AAAA,IACzB,SAAS+F,IAAG;AACV,MAAAP,EAAkBO,EAAC;AAAA,IACrB,UAAA;AACE,MAAAZ,EAAQ,QAAQ;AAAA,IAClB;AAAA,EACF,GAEMQ,KAAa,MAAM;AACvB,IAAAV,EAAM,QAAQ,CAAA,GACdC,EAAS,QAAQ,CAAA;AAAA,EACnB,GAEMc,IAAU,YAAY;AAC1B,IAAAb,EAAQ,QAAQ;AAChB,QAAI;AACF,MAAAF,EAAM,QAAS,MAAMJ;AAAA,QACnBrK;AAAA,QACArB;AAAA,QACAH;AAAA,QACAwG;AAAA,MAAA;AAAA,IAEJ,SAASuG,IAAG;AACV,MAAAP,EAAkBO,EAAC;AAAA,IACrB,UAAA;AACE,MAAAZ,EAAQ,QAAQ;AAAA,IAClB;AAAA,EACF,GAEMS,IAAmBK,GAAc,YAAY;AACjD,UAAMD,EAAA;AAAA,EACR,CAAC;AAmBD,SAAO;AAAA,IACL,OAAAf;AAAA,IACA,UAAAC;AAAA,IACA,YAAA1K;AAAA,IACA,gBAAAwJ;AAAA,IACA,eAAAX;AAAA,IACA,YAAAQ;AAAA,IACA,eAAAmB;AAAA,IACA,SAAAG;AAAA,IACA,YA1BiB,CAACe,OAAiB;AACnC,YAAMC,KAAcD,GAAM;AAC1B,UACE,CAACC,MACAA,GAAY,YAAY,WAAYA,GAAiC,SAAS;AAE/E;AAEF,YAAMC,KAASD,GAAY,QAAQ,mBAAmB;AACtD,UAAI,CAACC,MAAU,CAACA,GAAO,UAAU,SAAS,kBAAkB,EAAG;AAC/D,YAAMC,KAAUD,GAAO;AACvB,UAAI,CAACC,MAAW,CAACA,GAAQ,UAAU,SAAS,kBAAkB,EAAG;AACjE,YAAMC,KAAQD,GAAQ,cAAc,OAAO;AAC3C,MAAKC,MACLA,GAAM,MAAA;AAAA,IACR;AAAA,IAYE,iBAAAR;AAAA,IACA,QAAAJ;AAAA,IACA,cAAAG;AAAA,IACA,SAASD;AAAA,IACT,aAAa,MAAMN,EAAY9K,GAAYoL,CAAgB;AAAA,IAC3D,cAAc,MAAM9L,EAAaU,GAAYoL,CAAgB;AAAA,EAAA;AAEjE;;;;;;;;;;;;;;;;;;;AC9HA,UAAMvL,IAAQH,GAsBRpB,IAAOC,GASPwN,IAAc/M,EAAI,EAAK,GACvBgN,IAAStL,EAAS;AAAA,MACtB,MAAM;AACJ,eAAI7B,GAAYgB,EAAM,UAAU,IAAUkM,EAAY,QAC/ClM,EAAM;AAAA,MACf;AAAA,MACA,IAAIoB,GAAmB;AACrB,QAAA8K,EAAY,QAAQ9K,GACpB3C,EAAK,qBAAqB2C,CAAQ;AAAA,MACpC;AAAA,IAAA,CACD,GAEKgL,IAAqBvL,EAAS;AAAA,MAClC,KAAK,MAAMb,EAAM;AAAA,MACjB,KAAK,CAACoB,MAAa;AACjB,QAAA3C,EAAK,qBAAqB,EAAE,GAAG4N,GAAMjL,CAAQ,GAAG;AAAA,MAClD;AAAA,IAAA,CACD,GAEK,EAAE,WAAAkL,EAAA,IAAcC,GAAA,GAChBC,IAAcrN,EAAI,CAACmN,EAAU,KAAK,GAElCG,IAAuB,MAAM;AACjC,MAAIH,EAAU,UAAOE,EAAY,QAAQ;AAAA,IAC3C;AAEA,IAAAvN,GAAQyN,IAA8BD,CAAoB;AAE1D,UAAM,EAAE,GAAApM,EAAA,IAAMC,GAAA,GAERqM,IAAqB9L,EAAS,MAC3Bb,EAAM,cAAc,MAC5B,GAEK4M,IAAiB/L,EAAS,MACvB8L,EAAmB,QAAQ3M,EAAM,YAAY2M,EAAmB,QAAQ3M,EAAM,QACtF,GAEKqL,IAAS,MAAM;AACnB,MAAA5M,EAAK,QAAQ,GACb+N,EAAY,QAAQ,CAACF,EAAU,OAC/BH,EAAO,QAAQ;AAAA,IACjB,GAEMU,IAAgB,MAAM;AAC1B,MAAAL,EAAY,QAAQ,CAACA,EAAY;AAAA,IACnC,GAEMM,IAAU,MAAM;AACpB,MAAAX,EAAO,QAAQ;AAAA,IACjB,GAEMY,IAAY,MAAM;AACtB,MAAAtO;AAAA,QACE;AAAA,QACAuB,EAAM,cAAc,IAAI,CAACgB,MAASqL,GAAMrL,CAAI,CAAC;AAAA,MAAA,GAE/C8L,EAAA;AAAA,IACF,GAEME,IAAgB,MAAM;AAC1B,MAAAvO,EAAK,iBAAiB;AAAA,IACxB,GAEMwO,IAAe,MAAM;AACzB,MAAAxO,EAAK,cAAc;AAAA,IACrB,GAEMkE,IAAW9B,EAAS,MACjB,KAAK,KAAKuL,EAAmB,MAAM,aAAaA,EAAmB,MAAM,WAAW,CAC5F,GAEKc,IAAcrM,EAAS,MACpB,EACJmC,GAAOoJ,EAAmB,MAAM,WAAW,KAC1CA,EAAmB,MAAM,SAASzJ,EAAS,SAC7CyJ,EAAmB,MAAM,gBAAgB,GAE5C,GAEKe,IAAsB,CAACC,MAA4B;AACvD,MAAIA,KAAkBF,EAAY,SAAS,CAAClN,EAAM,WAChDgN,EAAA;AAAA,IAEJ;AAEA,WAAA5C,GAAU,MAAM;AACd,MAAIpK,EAAM,YACRqL,EAAA;AAAA,IAEJ,CAAC,GAED3L,EAAa;AAAA,MACX,MAAM2L;AAAA,MACN,sBAAAoB;AAAA,IAAA,CACD;;;QAIC3M,EAGEC,EAAA,QAAA,aAAA;AAAA,UADC,OAAK,EAAA,SAAasN,EAAa,MAAOhC,KAAM,CAAA,MAAA,CAAA,EAAA;AAAA,QAAA;QAE/CvJ,EAuHUwL,IAvHVC,EAuHUxN,EAAA,QAtHM;AAAA,UACb,eAAaoM,EAAA;AAAA,UACd,YAAA;AAAA,UACA,OAAM;AAAA,UACL,uBAAkB1I,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAnB,MAAE7D,EAAI,qBAAsB6D,CAAM;AAAA,QAAA;qBAErD,MA+GQ;AAAA,YA9GA6J,EAAA,cADRxM,EA+GQ6N,IAAA;AAAA;cA7GN,OAAM;AAAA,YAAA;yBAEN,MAOiB;AAAA,gBAPjB1L,EAOiB2L,IAAA;AAAA,kBANf,OAAM;AAAA,kBACL,YAAWX;AAAA,gBAAA;6BAEZ,MAEO;AAAA,oBAFPhN,EAEOC,uBAFP,MAEO;AAAA,sBADFiC,EAAAJ,EAAAC,EAAAxB,CAAA,EAAER,EAAA,YAAY,CAAA,GAAA,CAAA;AAAA,oBAAA;;;;gBAGrBiC,EAoCW4L,IAAA;AAAA,kBAnCT,SAAQ;AAAA,kBACR,OAAM;AAAA,kBACL,QAAQ;AAAA,kBACT,WAAU;AAAA,kBACV,OAAM;AAAA,gBAAA;6BAEN,MA4BO;AAAA,oBA5BP5N,EA4BOC,4BA5BP,MA4BO;AAAA,sBA3BL2B,EA0BM,OA1BND,IA0BM;AAAA,wBAzBJC,EAwBM,OAxBNC,IAwBM;AAAA,0BAvBJD,EAmBM,OAnBNgC,IAmBM;AAAA,4BAlBJ5B,EAgBOC,GAAA;AAAA,8BAfL,MAAA;AAAA,8BACC,OAAO;AAAA,8BACP,QAAQ;AAAA,8BACR,SAAO8K;AAAA,4BAAA;yCAER,MAGE;AAAA,gCAHF/K,EAGE6L,GAAA;AAAA,kCAFA,MAAK;AAAA,kCACJ,MAAM;AAAA,gCAAA;gCAET7L,EAKW8L,IAAA;AAAA,kCAJT,WAAU;AAAA,kCACV,UAAS;AAAA,gCAAA;6CAET,MAA6C;AAAA,wCAA1C/L,EAAAxB,CAAA,EAAC,oCAAA,CAAA,GAAA,CAAA;AAAA,kCAAA;;;;;;4BAGRP,EAA+BC,EAAA,QAAA,iBAAA;AAAA,0BAAA;0BAEjC2B,EAEM,OAFNiC,IAEM;AAAA,4BADJ7D,EAAgCC,EAAA,QAAA,kBAAA;AAAA,0BAAA;;;;;;;gBAM1C2B,EAiCM,OAAA;AAAA,kBAhCJ,OAAKc,GAAA,CAAC,wBAAsB,EAAA,wCACsBgK,EAAA,OAAW,CAAA;AAAA,gBAAA;kBAE7D9K,EAIM,OAJNkC,IAIM;AAAA,oBAHJlC,EAEM,OAFNmC,IAEM;AAAA,sBADJ/D,EAAsBC,EAAA,QAAA,QAAA;AAAA,oBAAA;;kBAG1B2B,EAuBM,OAvBNmM,IAuBM;AAAA,oBAtBJ/N,EAAuBC,EAAA,QAAA,SAAA;AAAA,oBAEfF,EAAA,mBAAc,UADtB0B,KAAAC,EAeM,OAfNsM,IAeM;AAAA,+BAXJnO,EAUgBoO,GAAA;AAAA,wBAPb,SAASlO,EAAA;AAAA,wBACV,MAAK;AAAA,wBACJ,SAAOmN;AAAA,sBAAA;mCAER,MAEO;AAAA,0BAFPlN,EAEOC,sCAFP,MAEO;AAAA,gCADF8B,EAAAxB,CAAA,EAAC,wBAAA,CAAA,GAAA,CAAA;AAAA,0BAAA;;;;wBAPE,CAAA2N,IAAAd,EAAA,SAAerN,EAAA,OAAO;AAAA;;0BACXsN;AAAA;0BAAP,EAAA,OAAZ,GAAA;AAAA,wBAAuC;AAAA;gCAU3CxN,EAIEsO,IAAA;AAAA;kCAFS7B,EAAA;AAAA,oEAAAA,EAAkB,QAAA9J;AAAA,sBAC1B,UAAQ2K;AAAA,oBAAA;;;gBAIfvL,EA2BM,OA3BNwM,IA2BM;AAAA,kBA1BOrO,EAAA,aAAaA,EAAA,YAAxB0B,EAAA,GAAAC,EAOM,aALFK,EAAAxB,CAAA,EAAC,6CAAA;AAAA,2BAAqER,EAAA;AAAA,8BAAkC8M,EAAA;AAAA,kBAAA,YAM5GpL,EAAA,GAAAC,EAQM,aANFK,EAAAxB,CAAA,EAAC,6CAAA;AAAA,8BAAwER,EAAA;AAAA,8BAAkCA,EAAA;AAAA,8BAAkC8M,EAAA;AAAA,kBAAA;kBAOjJ7K,EAAWqM,EAAA;AAAA,kBACXrM,EAOcsM,IAAA;AAAA,oBANX,UAAUxB,EAAA;AAAA,oBACV,WAAYG,GAAS,CAAA,MAAA,CAAA;AAAA,kBAAA;+BAEtB,MAEO;AAAA,sBAFPjN,EAEOC,sCAFP,MAEO;AAAA,4BADF8B,EAAAxB,CAAA,EAAC,uBAAA,CAAA,GAAA,CAAA;AAAA,sBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnDhB,UAAML,IAAQH,GAuCRpB,IAAOC,GAsBPuB,IAAaC,GAAoBL,GAAA,YAAmB,GAEpD,EAAE,GAAAQ,EAAA,IAAMC,GAAA,GACR+N,IAAQC,GAAA,GACRC,IAAUhC,GAAA,GAEViC,IAASC,GAA4B,QAAQ,GAE7CC,IAAU7N,EAAkB,MAAM0N,EAAQ,SAAS,MAAM,KAAK,GAM9DI,IAAoD;AAAA,MACxD,KAAK,MAAM1O,EAAW;AAAA,MACtB,KAAK,CAAC2O,MAAO3O,EAAW,QAAQ2O;AAAA,MAChC,SAAS5O,EAAM;AAAA,MACf,QAAQA,EAAM;AAAA,MACd,UAAUA,EAAM;AAAA,MAChB,cAAc,MAAMA,EAAM,gBAAgB,CAAA;AAAA,MAC1C,UAAUA,EAAM;AAAA,IAAA,GAKZ6O,IAAa7O,EAAM,SACrB,OACA8O,GAA+B9O,EAAM,UAAU2O,CAAiB,GAC9DI,IACJ/O,EAAM,UAAU6O,GAAY,UAAUG,GAA+BL,CAAiB,GAGlFM,IAAYjP,EAAM,UAAU,MAM5BkP,IAAgBC,GAA4BN,GAAY,cAAc,IAAI,GAC1EO,IAAQ,CAACpO,MACb,OAAOiO,KAAc,aACjBA,EAAUjO,CAAI,IACbA,EAAKiO,CAAwB,GAE9BI,IAAexO;AAAA,MAAiB,MACpC,OAAOoO,KAAc,aAAa,SAAUA;AAAA,IAAA,GAIxCK,IAAoBzO,EAAiB,MAAM;AAC/C,YAAM0O,IAAIvP,EAAM;AAEhB,aADIuP,MAAM,UACNA,MAAM,KAAc,aACpB,OAAOA,KAAM,WAAiBA,EAAE,QAC7BA;AAAA,IACT,CAAC,GAGKC,IAAY3O;AAAA,MAAgC,MAChDZ,EAAW,MAAM,IAAI,CAACwP,GAAKC,OAAW;AAAA,QACpC,KAAKN,EAAMK,CAAG;AAAA,QACd,OAAAC;AAAA,QACA,KAAAD;AAAA,QACA,UAAUA,EAAIH,EAAkB,KAAK;AAAA,MAAA,EACrC;AAAA,IAAA,GAMEK,wBAA0B,IAAA,GAC1BC,IAAgB,CAAChF,MAAuC;AAC5D,YAAMiF,wBAAW,IAAA,GACXC,wBAAiB,IAAA;AACvB,UAAIC,KAAU;AACd,iBAAWC,MAAMpF,GAAO;AACtB,YAAIoF,GAAG,QAAQ,UAAaA,GAAG,QAAQ,MAAM;AAC3C,UAAAD;AACA;AAAA,QACF;AACA,QAAIF,EAAK,IAAIG,GAAG,GAAG,OAAc,IAAI,OAAOA,GAAG,GAAG,CAAC,GACnDH,EAAK,IAAIG,GAAG,GAAG;AAAA,MACjB;AACA,UAAID,OAAY,KAAKD,EAAW,SAAS,EAAG;AAC5C,YAAMG,KAAY,GAAGF,EAAO,IAAI,CAAC,GAAGD,CAAU,EAAE,KAAA,EAAO,KAAK,GAAG,CAAC;AAChE,MAAIH,EAAoB,IAAIM,EAAS,MACrCN,EAAoB,IAAIM,EAAS,GAC7BF,KAAU,KACZ,QAAQ;AAAA,QACN,iBAAiBA,EAAO,mDAAmDV,EAAa,KAAK;AAAA,MAAA,GAK7FS,EAAW,OAAO,KACpB,QAAQ;AAAA,QACN,gDAAgDT,EAAa,KAAK,OAAO,CAAC,GAAGS,CAAU,EAAE,KAAK,IAAI,CAAC;AAAA,MAAA;AAAA,IAIzG;AACA,IAAA3O,GAAMqO,GAAW,CAAC5E,MAAUgF,EAAchF,CAAK,GAAG,EAAE,WAAW,IAAM,GAIrEzJ;AAAA,MACE,MAAMqO,EAAU,MAAM,IAAI,CAACQ,MAAO,OAAOA,EAAG,GAAG,CAAC,EAAE,KAAK,GAAG;AAAA,MAC1D,MAAMd,EAAc,aAAaM,EAAU,MAAM,IAAI,CAACQ,MAAOA,EAAG,GAAG,CAAC;AAAA,MACpE,EAAE,OAAO,OAAA;AAAA,IAAO;AAGlB,UAAME,IAAe/Q,EAAwB,oBAAI,KAAK,GAEhDgR,IAAgB1B,GAA4B,eAAe,GAE3D2B,IAAevP,EAAS,MAAM,CAACb,EAAM,SAAS,CAAC,CAACqO,EAAM,IAAI,GAC1DgC,IAAoBxP,EAAS,MAAM,CAACb,EAAM,SAAS,CAAC,CAACqO,EAAM,eAAe,CAAC,GAE3E;AAAA,MACJ,aAAAiC;AAAA,MACA,kBAAAC;AAAA,MACA,WAAAC;AAAA,MACA,YAAAC;AAAA,MACA,YAAAC;AAAA,MACA,WAAAC;AAAA,MACA,iBAAAC;AAAA,IAAA,IACEC,GAA6C;AAAA,MAC/C,eAAAV;AAAA,MACA,aAAa;AAAA,MACb,cAAAC;AAAA,MACA,iBAAiB,CAACU,GAAKvI,MAASwG,EAAW,WAAW+B,GAAKvI,CAAI;AAAA,MAC/D,WAAW,MAAMtI,EAAW,MAAM,IAAI,CAAC8Q,MAAO3B,EAAM2B,CAAE,CAAC;AAAA,MACvD,WAAW,CAACD,MAAQ;AAClB,cAAME,IAAM/Q,EAAW,MAAM,KAAK,CAAC8Q,MAAO3B,EAAM2B,CAAE,MAAMD,CAAG;AAC3D,eAAOE,IAAM,EAAE,MAAMA,EAAA,IAAQ;AAAA,MAC/B;AAAA,MACA,eAAe,CAACF,MAAQ;AACtB,QAAAZ,EAAa,MAAM,OAAOY,CAAG;AAAA,MAC/B;AAAA,IAAA,CACD,GAEKG,KAAmBpQ;AAAA,MAAS,MAChCb,EAAM,WAAWK,EAAEL,EAAM,QAAQ,IAAIK,EAAE,qBAAqB;AAAA,IAAA,GAExD6Q,KAAqBrQ,EAAS,MAAMb,EAAM,cAAcK,EAAE,4BAA4B,CAAC,GACvF8Q,KAA6BtQ;AAAA,MACjC,MAAMb,EAAM,sBAAsBK,EAAE,oCAAoC;AAAA,IAAA,GAEpE+Q,KAA4BvQ;AAAA,MAChC,MACEb,EAAM,sBACLA,EAAM,eAAe,cAClBK,EAAE,mCAAmC,IACrCA,EAAE,2CAA2C;AAAA,IAAA,GAG/CgR,KAAcxQ,EAAS,MAAM,CAACb,EAAM,YAAY,CAACA,EAAM,YAAY,CAACA,EAAM,OAAO,GACjFsR,KAASzQ,EAAS,MAAMwQ,GAAY,SAASrR,EAAM,aAAa,GAIhEuR,KAAexC,EAAW,cAC1ByC,KAAsB3Q;AAAA,MAC1B,MAAM,CAACb,EAAM,YAAY,CAACA,EAAM,kBAAkBuR,GAAa,QAAQ;AAAA,IAAA,GAEnEE,KAAgB5Q,EAAS,MAAM,CAAC,EAAEb,EAAM,SAASqO,EAAM,WAAWmD,GAAoB,KAAK,GAI3FE,KAAuB7Q,EAAS,MAAM,CAAC,CAACb,EAAM,UAAU,GAMxD2R,yBAAqB,IAAA,GACrBC,KAAqB/Q,EAAqC,MAAM;AACpE,YAAMgR,IAAmC,CAAA,GACnCC,wBAAe,IAAA;AACrB,iBAAW9B,KAAMR,EAAU,OAAO;AAChC,QAAAsC,EAAS,IAAI9B,EAAG,GAAG;AACnB,cAAM+B,KAAUzB,GAAY,MAAM,IAAIN,EAAG,GAAG,GACtCgC,KAAW9B,EAAa,MAAM,IAAIF,EAAG,GAAG,GACxClF,KAAU9K,EAAM,aAAa,IAAIgQ,EAAG,GAAG,KAAK,IAG5CiC,KAAUjS,EAAM,kBAAkBA,EAAM,WAAW,KAAQ+O,EAAW,UAAUiB,EAAG,GAAG,GACtFkC,KAAQD,IAERE,KAAkBpD,EAAW,SAASiB,EAAG,KAAKA,EAAG,KAAK+B,EAAO,GAC7DK,KAAST,GAAe,IAAI3B,EAAG,GAAG;AACxC,YACEoC,MACAA,GAAO,QAAQpC,EAAG,OAClBoC,GAAO,UAAUpC,EAAG,SACpBoC,GAAO,aAAapC,EAAG,YACvBoC,GAAO,YAAYL,MACnBK,GAAO,aAAaJ,MACpBI,GAAO,YAAYtH,MACnBsH,GAAO,UAAUF,MACjBE,GAAO,YAAYH,MACnBG,GAAO,oBAAoBD,IAC3B;AACA,UAAAN,EAAK,KAAKO,EAAM;AAChB;AAAA,QACF;AACA,cAAMC,KAAsC;AAAA,UAC1C,GAAGrC;AAAA,UACH,SAAA+B;AAAA,UACA,UAAAC;AAAA,UACA,SAAAlH;AAAA,UACA,OAAAoH;AAAA,UACA,SAAAD;AAAA,UACA,iBAAAE;AAAA,QAAA;AAEF,QAAAR,GAAe,IAAI3B,EAAG,KAAKqC,EAAS,GACpCR,EAAK,KAAKQ,EAAS;AAAA,MACrB;AACA,iBAAWvB,KAAOa,GAAe;AAC/B,QAAKG,EAAS,IAAIhB,CAAG,KAAGa,GAAe,OAAOb,CAAG;AAEnD,aAAOe;AAAA,IACT,CAAC,GAEKS,KAAUzR,EAAS,MAAM+Q,GAAmB,MAAM,WAAW,CAAC,GAE9DW,KAAS,CAACzB,MACdc,GAAmB,MAAM,KAAK,CAAChD,MAAMA,EAAE,QAAQkC,CAAG,GAE9C0B,KAAcC,GAAe;AAAA,MACjC,WAAW5R,EAAS,MAAM+Q,GAAmB,MAAM,IAAI,CAAC5B,OAAQ,EAAE,KAAKA,EAAG,IAAA,EAAM,CAAC;AAAA,MACjF,SAAS;AAAA,MACT,eAAe7Q,EAAI,EAAK;AAAA,MACxB,UAAU0B,EAAS,MAAM,CAACwQ,GAAY,KAAK;AAAA,MAC3C,WAAW,CAACP,MAAQR,GAAY,MAAM,IAAIQ,CAAG;AAAA,MAC7C,cAAc,CAACA,MAAQ;AACrB,cAAMd,IAAKuC,GAAOzB,CAAG;AACrB,QAAId,QAAgBA,CAAE;AAAA,MACxB;AAAA,MACA,cAAc,CAACc,MAAQ;AACrB,cAAMd,IAAKuC,GAAOzB,CAAG;AACrB,QAAId,QAAiBA,CAAE;AAAA,MACzB;AAAA,IAAA,CACD,GAEK0C,KAAqB,CAACjD,MAC1BkD,GAAuBlD,GAAK,EAAE,cAAczP,EAAM,cAAc,GAI5D4S,KAAa,MAAM;AACvB,MAAKtB,GAAO,UACZV,GAAA,GACA7B,EAAW,QAAQ,QAAW,MAAS;AAAA,IACzC,GAEM8D,KAAqB,CAAC7C,MAA4B;AACtD,MAAKqB,GAAY,UACjBT,GAAA,GACA7B,EAAW,QAAQ,QAAW,EAAE,SAASiB,EAAG,KAAK;AAAA,IACnD,GAEM8C,KAAc,CAAC9C,MAA4B;AAC/C,UAAKqB,GAAY,OAEjB;AAAA,YAAIf,GAAY,MAAM,IAAIN,EAAG,GAAG,GAAG;AACjC,UAAA+C,GAAa/C,CAAE;AACf;AAAA,QACF;AACA,QAAII,EAAa,UACfI,EAAUR,CAAE,GACZE,EAAa,MAAM,OAAOF,EAAG,GAAG,IAElCvR,EAAK,QAAQuR,CAAE;AAAA;AAAA,IACjB,GAEMgD,KAAgB,CAAChD,MAA4B;AACjD,UAAIhQ,EAAM,YAAYA,EAAM,QAAS;AACrC,YAAM8Q,IAAMd,EAAG,KACTiD,IAAoB/C,EAAa,MAAM,IAAIY,CAAG;AACpD,UAAImC;AACF,QAAA/C,EAAa,MAAM,OAAOY,CAAG;AAAA,WACxB;AACL,mBAAWoC,MAAKhD,EAAa,MAAO,CAAAA,EAAa,MAAM,OAAOgD,EAAC;AAC/D,QAAAhD,EAAa,MAAM,IAAIY,CAAG;AAAA,MAC5B;AACA,MAAArS,EAAK,eAAeuR,GAAI,CAACiD,CAAiB;AAAA,IAC5C,GAEME,KAAiB,CAACnD,MAClBhQ,EAAM,SACNA,EAAM,mBACNA,EAAM,mBACNA,EAAM,YAAYA,EAAM,UAAgB,KACxC,GAAAgQ,EAAG,WAAWA,EAAG,YACjB,CAAChQ,EAAM,YAAYA,EAAM,iBAIzBoT,KAAa,CAACpD,MAAiC;AACnD,UAAKmD,GAAenD,CAAE,GACtB;AAAA,YAAIA,EAAG,WAAWA,EAAG,UAAU;AAC7B,UAAA+C,GAAa/C,CAAE;AACf;AAAA,QACF;AACA,QAAIhQ,EAAM,YAAYqQ,EAAkB,QACtC2C,GAAchD,CAAE,IAEhB8C,GAAY9C,CAAE;AAAA;AAAA,IAElB,GAEM;AAAA,MACJ,cAAAqD;AAAA,MACA,gBAAAC;AAAA,MACA,aAAAC;AAAA,MACA,eAAeC;AAAA,MACf,uBAAAC;AAAA,MACA,sBAAAC;AAAA,IAAA,IACEC,GAA4C;AAAA,MAC9C,iBAAiB,CAAClE,MAASzP,EAAM,kBAAkBA,EAAM,gBAAgByP,CAAG,IAAI;AAAA,MAChF,UAAU,CAACA,MAAQzP,EAAM,WAAWyP,CAAG;AAAA,MACvC,WAAW,CAACO,MAAO;AACjB,QAAAM,GAAY,MAAM,OAAON,EAAG,GAAG,GAC/BO,EAAiB,MAAM,OAAOP,EAAG,GAAG,GACpCE,EAAa,MAAM,OAAOF,EAAG,GAAG,GAIhCjB,EAAW,WAAWiB,EAAG,KAAK,EAAE,cAAchQ,EAAM,eAAe,YAAY,GAC/EvB,EAAK,WAAWuR,CAAE;AAAA,MACpB;AAAA,MACA,sBAAsB,MAAMhQ,EAAM,wBAAwBA,EAAM;AAAA,IAAA,CACjE,GAEK4T,KAAgB,OAAO5D,MAA4B;AACvD,MAAKqB,GAAY,SACjB,MAAMmC,GAAmBxD,CAAE;AAAA,IAC7B,GAEM6D,KAAc,OAAO7D,MAA4B;AACrD,MAAIhQ,EAAM,cACR,MAAMA,EAAM,WAAWgQ,EAAG,GAAG,GAE/BU,GAAWV,CAAE,GACbvR,EAAK,cAAcuR,CAAE;AAAA,IACvB,GAEM8D,KAAgB,CAAC9D,MAA4B;AACjD,MAAAS,GAAWT,CAAE;AAAA,IACf,GAEM+C,KAAe,CAAC/C,MAA4B;AAChD,MAAAW,GAAUX,CAAE,GACZE,EAAa,MAAM,OAAOF,EAAG,GAAG,GAChCvR,EAAK,SAASuR,CAAE;AAAA,IAClB,GAeM+D,yBAAmB,IAAA,GACnBC,KAAa,CAAClD,MAAsC;AACxD,UAAImD,IAAUF,GAAa,IAAIjD,CAAG;AAClC,aAAKmD,MACHA,IAAU;AAAA,QACR,MAAM,MAAM;AACV,gBAAMjE,IAAKuC,GAAOzB,CAAG;AACrB,UAAId,QAAgBA,CAAE;AAAA,QACxB;AAAA,QACA,MAAM,MAAM;AACV,gBAAMA,IAAKuC,GAAOzB,CAAG;AACrB,cAAId,EAAI,QAAO6D,GAAY7D,CAAE;AAAA,QAC/B;AAAA,QACA,QAAQ,MAAM;AACZ,gBAAMA,IAAKuC,GAAOzB,CAAG;AACrB,UAAId,QAAkBA,CAAE;AAAA,QAC1B;AAAA,QACA,OAAO,MAAM;AACX,gBAAMA,IAAKuC,GAAOzB,CAAG;AACrB,UAAId,QAAiBA,CAAE;AAAA,QACzB;AAAA,QACA,QAAQ,YAAY;AAClB,gBAAMA,IAAKuC,GAAOzB,CAAG;AACrB,UAAId,KAAI,MAAM4D,GAAc5D,CAAE;AAAA,QAChC;AAAA,QACA,UAAU,MAAM;AACd,gBAAMA,IAAKuC,GAAOzB,CAAG;AACrB,UAAId,QAAuBA,CAAE;AAAA,QAC/B;AAAA,QACA,cAAc,MAAM;AAClB,gBAAMA,IAAKuC,GAAOzB,CAAG;AACrB,UAAId,QAAkBA,CAAE;AAAA,QAC1B;AAAA,QACA,QAAQ,CAAC6B,MAAS9C,EAAW,WAAW+B,GAAKe,CAAI;AAAA,MAAA,GAEnDkC,GAAa,IAAIjD,GAAKmD,CAAO,IAExBA;AAAA,IACT;AAEA,IAAA9S;AAAA,MACE,MAAMyQ,GAAmB;AAAA,MACzB,CAACsC,MAAQ;AACP,YAAIH,GAAa,SAAS,EAAG;AAC7B,cAAMjC,IAAW,IAAI,IAAIoC,EAAI,IAAI,CAACtF,MAAMA,EAAE,GAAG,CAAC;AAC9C,mBAAWkC,KAAOiD,GAAa;AAC7B,UAAKjC,EAAS,IAAIhB,CAAG,KAAGiD,GAAa,OAAOjD,CAAG;AAAA,MAEnD;AAAA,IAAA;AAGF,UAAMqD,KAAiB,CAACnE,OAAkC;AAAA,MACxD,MAAMA;AAAA,MACN,KAAKA,EAAG;AAAA,MACR,OAAOA,EAAG;AAAA,MACV,KAAKA,EAAG;AAAA,MACR,UAAUhQ,EAAM;AAAA,MAChB,UAAUA,EAAM;AAAA,MAChB,UAAUgQ,EAAG;AAAA,MACb,SAASA,EAAG,WAAWhQ,EAAM;AAAA,MAC7B,OAAOgQ,EAAG;AAAA,MACV,SAASA,EAAG;AAAA,MACZ,OAAOtB,EAAQ;AAAA,MACf,gBAAgBQ,EAAc,UAAUc,EAAG,GAAG;AAAA,MAC9C,SAASgE,GAAWhE,EAAG,GAAG;AAAA,IAAA;AAI5B,IAAAoE;AAAA,MAAkB,MAChBpU,EAAM,uBAAuB,CAACA,EAAM,iBAChC,EAAE,OAAOA,EAAM,qBAAqB,OAAO+O,EAAW,WAAW,MAAA,IACjE,CAAA;AAAA,IAAC;AAMP,UAAMsF,KAAuB,MAC3BC,GAAqBvF,GAAY,CAAC+B,MAAQ;AACxC,YAAMd,IAAKR,EAAU,MAAM,KAAK,CAACZ,MAAMA,EAAE,QAAQkC,CAAG;AACpD,MAAId,OAAcA,CAAE;AAAA,IACtB,CAAC;AAKH,WAAAuE,GAA2B;AAAA,MACzB,WAAWxF,EAAW;AAAA,MACtB,iBAAiB/O,EAAM;AAAA,MACvB,kBAAkBA,EAAM,aAAa;AAAA,MACrC,QAAQqU;AAAA,IAAA,CACT,GAGD3U,EAAsC;AAAA,MACpC,GAAGqP;AAAA,MACH,aAAasF;AAAA,IAAA,CACd,mBAIC7S,EAgWM,OAAA;AAAA,eA/VA;AAAA,MAAJ,KAAIgN;AAAA,MACJ,WAAM,iBAAe;AAAA,mCACsB3O,EAAA,OAAO;AAAA;qCAA+CA,EAAA;AAAA,qCAA6CA,EAAA;AAAA,kCAA0C6O,EAAA;AAAA,kCAAyC7O,EAAA;AAAA,QAAA;AAAA;;MAUjO6B,EAuTM,OAAA;AAAA,iBAtTA;AAAA,QAAJ,KAAIyO;AAAA,QACJ,OAAM;AAAA,MAAA;QAGEsB,GAAA,SADRlQ,EAAA,GAAAC,EAsBM,OAtBNC,IAsBM;AAAA,UAlBJ3B,EAUOC,EAAA,QAAA,UAAA,EARJ,OAAOF,EAAA,MAAA,GAFV,MAUO;AAAA,YALGA,EAAA,cADR2B,EAKK,MALLG,IAKKC,EADA/B,EAAA,KAAK,GAAA,CAAA;;UAIJ2R,GAAA,cADRhQ,EAMO,QAAA;AAAA;YAJL,OAAM;AAAA,YACL,sBAAoBK,EAAA0P,EAAA;AAAA,UAAA,GAElB3P,EAAAC,EAAAxB,CAAA,6CAA6CwB,EAAA0P,EAAA,EAAA,CAAY,CAAA,GAAA,GAAA7N,EAAA;;QAKxD7D,EAAA,WADR0B,EAAA,GAAAC,EASM,OATNmC,IASM;AAAA,UALJ7B,EAIE0S,IAAA;AAAA,YAHA,eAAA;AAAA,YACA,OAAM;AAAA,YACN,MAAK;AAAA,UAAA;cAKI3U,EAAA,SADb0B,KAAAC,EAYM,OAZNoC,IAYM;AAAA,UARJ9B,EAOS2S,IAAA;AAAA,YANP,MAAK;AAAA,YACL,SAAQ;AAAA,YACR,SAAQ;AAAA,YACR,QAAO;AAAA,UAAA;uBAEP,MAAW;AAAA,kBAAR5U,EAAA,KAAK,GAAA,CAAA;AAAA,YAAA;;;cAKCyS,GAAA,SADb/Q,KAAAC,EAiBM,OAjBNqC,IAiBM;AAAA,UAbJ/D,EAYOC,EAAA,QAAA,SAAA;AAAA,YAVJ,UAAUF,EAAA;AAAA,YACV,UAAUA,EAAA;AAAA,YACV,gBAAgB+S,GAAA;AAAA,UAAU,GAJ7B,MAYO;AAAA,YANL9Q,EAKE4S,IAAA;AAAA,cAJC,OAAOxD,GAAA;AAAA,cACP,aAAWD,GAAA;AAAA,cACX,WAASK,GAAA;AAAA,cACT,OAAKsB;AAAA,YAAA;;sBAMVpR,EAuNMW,IAAA,EAAA,KAAA,KAAAC,GAtNSwP,GAAA,OAAkB,CAAxB5B,YADTxO,EAuNM,OAAA;AAAA,UArNH,KAAK,OAAOwO,EAAG,GAAG;AAAA,UACnB,OAAM;AAAA,QAAA;UAKNlQ,EAGEC,EAAA,QAAA,eAHFwN,EAGE,EAAA,SAAA,GAAA,GADQ4G,GAAenE,CAAE,CAAA,CAAA;AAAA,UAG3BtO,EAoMM,OAAA;AAAA,YAnMH,WAAS,OAAOsO,EAAG,GAAG;AAAA,YACvB,MAAK;AAAA,YACJ,UAAUnO,EAAA2Q,EAAA,EAAY,YAAYxC,EAAG,GAAG;AAAA,YACzC,WAAM,YAAU;AAAA,oCAC8BnQ,EAAA,YAAO;AAAA,cAAkD,qBAAAmQ,EAAG;AAAA,cAA6C,sBAAAA,EAAG;AAAA,cAA6C,qBAAAA,EAAG;AAAA,cAA8C,uBAAAmD,GAAenD,CAAE;AAAA,cAA0C,CAAA,wBAAAA,EAAG,eAAe,EAAA,GAAKA,EAAG,oBAAe;AAAA,YAAA;YAQ3V,WAAO,CAAA1N,OAAET,MAAY,cAAcmO,EAAG,KAAK1N,EAAM;AAAA,UAAA;YAElDZ,EAkIM,OAAA;AAAA,cAjIJ,OAAM;AAAA,cACL,SAAK,CAAAY,OAAE8Q,GAAWpD,CAAE;AAAA,YAAA;cAErBtO,EAaM,OAbNwM,IAaM;AAAA,gBAZJpO,EAOOC,0BAPPwN,EAOO,EAAA,SAAA,MALG4G,GAAenE,CAAE,IAF3B,MAOO;AAAA,kBAHLtO,EAEO,QAFPiT,IAEO/S,EADF8Q,GAAmB1C,EAAG,GAAG,CAAA,GAAA,CAAA;AAAA,gBAAA;gBAIxBA,EAAG,gBADXrQ,EAGEiV,IAAA;AAAA;kBADC,YAAU/U,EAAA;AAAA,gBAAA;;cAKNA,EAAA,qBADT0B,KAAAC,EAeM,OAfNqT,IAeM;AAAA,gBAXJ/U,EAUOC,yBAVPwN,EAUO,EAAA,SAAA,MARG4G,GAAenE,CAAE,IAF3B,MAUO;AAAA,kBALGnQ,EAAA,eAAemQ,EAAG,IAAInQ,EAAA,WAAW,KAAA,QAAamQ,EAAG,IAAInQ,EAAA,WAAW,MAAA,MADxE0B,KAAAC,EAKO,QALPsT,IAKOlT,EADFoO,EAAG,IAAInQ,EAAA,WAAW,CAAA,GAAA,CAAA;;;cAK3B6B,EA6FM,OA7FNqT,IA6FM;AAAA,gBA5FJjV,EA2FOC,0BA3FPwN,EA2FO,EAAA,SAAA,MAzFG4G,GAAenE,CAAE,IAF3B,MA2FO;AAAA,kBAtFGnQ,EAAA,SAASA,EAAA,oBAAoBwR,GAAA,cADrC1R,EAcOoC,GAAA;AAAA;oBAZL,MAAA;AAAA,oBACA,MAAK;AAAA,oBACL,SAAQ;AAAA,oBACR,SAAQ;AAAA,oBACP,QAAQ;AAAA,oBACT,OAAM;AAAA,oBACL,SAAKiT,EAAA,CAAA1S,OAAOsR,GAAc5D,CAAE,GAAA,CAAA,MAAA,CAAA;AAAA,kBAAA;+BAE7B,MAGE;AAAA,sBAHFlO,EAGE6L,GAAA;AAAA,wBAFA,MAAK;AAAA,wBACL,MAAK;AAAA,sBAAA;;;8CAGTnM,EAuEWW,IAAA,EAAA,KAAA,KAAA;AAAA,oBArEDtC,EAAA,kBAAkBwR,GAAA,SAAW,CAAKxR,EAAA,wBAD1CF,EAmBOoC,GAAA;AAAA;sBAjBL,MAAA;AAAA,sBACA,MAAK;AAAA,sBACL,SAAQ;AAAA,sBACR,OAAM;AAAA,sBACN,SAAQ;AAAA,sBACR,OAAM;AAAA,sBACL,SAAKiT,EAAA,CAAA1S,OAAOwQ,GAAY9C,CAAE,GAAA,CAAA,MAAA,CAAA;AAAA,oBAAA;iCAE3B,MAGE;AAAA,wBAHFlO,EAGE6L,GAAA;AAAA,0BAFA,MAAK;AAAA,0BACL,MAAK;AAAA,wBAAA;wBAEP7L,EAIE8L,IAAA;AAAA,0BAHA,WAAU;AAAA,0BACV,UAAS;AAAA,0BACR,MAAM/L,EAAAxB,CAAA,EAAC,sBAAA;AAAA,wBAAA;;;;oBAIJR,EAAA,oBAAoBwR,GAAA,cAD5B1R,EAkBOoC,GAAA;AAAA;sBAhBL,MAAA;AAAA,sBACA,MAAK;AAAA,sBACL,SAAQ;AAAA,sBACR,SAAQ;AAAA,sBACR,OAAM;AAAA,sBACL,SAAKiT,EAAA,CAAA1S,OAAOsR,GAAc5D,CAAE,GAAA,CAAA,MAAA,CAAA;AAAA,oBAAA;iCAE7B,MAGE;AAAA,wBAHFlO,EAGE6L,GAAA;AAAA,0BAFA,MAAK;AAAA,0BACL,MAAK;AAAA,wBAAA;wBAEP7L,EAIE8L,IAAA;AAAA,0BAHA,WAAU;AAAA,0BACV,UAAS;AAAA,0BACR,MAAM/L,EAAAxB,CAAA,EAAC,wBAAA;AAAA,wBAAA;;;;oBAIJR,EAAA,sBAAsBwR,GAAA,cAD9B1R,EA8BOoC,GAAA;AAAA;sBA5BL,MAAA;AAAA,sBACA,MAAK;AAAA,sBACL,SAAQ;AAAA,sBACR,SAAQ;AAAA,sBACP,QAAQ;AAAA,sBACT,OAAM;AAAA,oBAAA;iCAEN,MAGE;AAAA,wBAHFD,EAGE6L,GAAA;AAAA,0BAFA,MAAK;AAAA,0BACL,MAAK;AAAA,wBAAA;wBAEP7L,EAIE8L,IAAA;AAAA,0BAHA,WAAU;AAAA,0BACV,UAAS;AAAA,0BACR,MAAM/L,EAAAxB,CAAA,EAAC,sBAAA;AAAA,wBAAA;wBAEVyB,EAWQG,IAAA,EAXD,WAAU,YAAQ;AAAA,qCACvB,MASQ;AAAA,4BATRH,EASQI,IAAA,EATD,SAAQ,aAAS;AAAA,yCACtB,MAOY;AAAA,gCAPZJ,EAOYO,IAAA;AAAA,kCAPA,SAAK,CAAAC,OAAEuQ,GAAmB7C,CAAE;AAAA,gCAAA;kCAC3B,WACT,MAAyB;AAAA,oCAAzBlO,EAAyB6L,GAAA,EAAlB,MAAK,YAAU;AAAA,kCAAA;6CAExB,MAEiB;AAAA,oCAFjB7L,EAEiBS,IAAA,MAAA;AAAA,iDADf,MAAmC;AAAA,4CAAhCV,EAAAxB,CAAA,EAAC,0BAAA,CAAA,GAAA,CAAA;AAAA,sCAAA;;;;;;;;;;;;;;;;;;;aAWL2P,EAAG,WAAWnQ,sBAAoBoV,EAAAA,OAAO,aAA1DzT,EAoCWW,IAAA,EAAA,KAAA,KAAA;AAAA,cAnCTT,EAOM,OAPNwT,IAOM;AAAA,gBANJxT,EAKM,OALNyT,IAKM;AAAA,kBAJJrV,EAGEC,EAAA,QAAA,QAHFwN,EAGE,EAAA,SAAA,GAAA,GADQ4G,GAAenE,CAAE,CAAA,CAAA;AAAA,gBAAA;;cAI/BlQ,EA0BOC,yBA1BPwN,EA0BO,EAAA,SAAA,MAxBG4G,GAAenE,CAAE,IAF3B,MA0BO;AAAA,gBArBG0B,GAAA,UAAyB7R,EAAA,mBADjC0B,KAAAC,EAqBM,OArBN4T,IAqBM;AAAA,kCAjBJ1T,EAAsC,OAAA,EAAjC,OAAM,yBAAA,GAAwB,MAAA,EAAA;AAAA,kBACnCI,EAMOC,GAAA;AAAA,oBALL,SAAQ;AAAA,oBACP,UAAUiO,EAAG;AAAA,oBACb,SAAKgF,EAAA,CAAA1S,OAAOwR,GAAc9D,CAAE,GAAA,CAAA,MAAA,CAAA;AAAA,kBAAA;+BAE7B,MAA+B;AAAA,0BAA5BnO,EAAAxB,CAAA,EAAC,sBAAA,CAAA,GAAA,CAAA;AAAA,oBAAA;;;kBAENyB,EAQOC,GAAA;AAAA,oBAPL,OAAM;AAAA,oBACN,SAAQ;AAAA,oBACR,gBAAa;AAAA,oBACZ,UAAUiO,EAAG;AAAA,oBACb,SAAKgF,EAAA,CAAA1S,OAAOuR,GAAY7D,CAAE,GAAA,CAAA,MAAA,CAAA;AAAA,kBAAA;+BAE3B,MAA6B;AAAA,0BAA1BnO,EAAAxB,CAAA,EAAC,oBAAA,CAAA,GAAA,CAAA;AAAA,oBAAA;;;;;sBAOC4U,EAAAA,OAAM,eAAA,MAAsBpV,EAAA,YAAYmQ,EAAG,aADxDzO,EAAA,GAAAC,EAUM,OAVN6T,IAUM;AAAA,cANJ3T,EAKM,OALN4T,IAKM;AAAA,gBAJJxV,EAGEC,EAAA,QAAA,iBAHFwN,EAGE,EAAA,SAAA,GAAA,GADQ4G,GAAenE,CAAE,CAAA,CAAA;AAAA,cAAA;;;UAMjClQ,EAGEC,EAAA,QAAA,cAHFwN,EAGE,EAAA,SAAA,GAAA,GADQ4G,GAAenE,CAAE,CAAA,CAAA;AAAA,QAAA;QAMvBsB,GAAA,SAAM,CAAKzR,EAAA,WAAO,CAAKA,EAAA,UAAUyS,GAAA,QADzCxS,EAmBOC,EAAA,QAAA,cAAA;AAAA,UAhBJ,UAAUF,EAAA;AAAA,UACV,UAAUA,EAAA;AAAA,UACV,kBAAkB+S,GAAA;AAAA,UAClB,gBAAgBA,GAAA;AAAA,QAAU,GAN7B,MAmBO;AAAA,UAXLlR,EAUS,UAAA;AAAA,YATP,MAAK;AAAA,YACL,OAAM;AAAA,YACL,SAAOkR;AAAA,UAAA;YAER9Q,EAGE6L,GAAA;AAAA,cAFA,MAAK;AAAA,cACL,MAAK;AAAA,YAAA;YAEPjM,EAAmC,gBAA1BuP,GAAA,KAAgB,GAAA,CAAA;AAAA,UAAA;;;MAK/BnP,EAUEyT,IAAA;AAAA,oBATS1T,EAAAwR,EAAA;AAAA,+DAAAA,GAAY,QAAA/Q,IAAA;AAAA,QACpB,OAAO6O,GAAA;AAAA,QACP,MAAMC,GAAA;AAAA,QACN,iBAAevP,EAAAxB,CAAA,EAAC,wBAAA;AAAA,QAChB,gBAAcwB,EAAAxB,CAAA,EAAC,sBAAA;AAAA,QACf,OAAOwB,EAAA0R,EAAA;AAAA,QACP,aAAW1R,EAAAyR,EAAA;AAAA,QACX,WAASzR,EAAA4R,EAAA;AAAA,QACT,UAAQ5R,EAAA6R,EAAA;AAAA,MAAA;MAGXhS,EAaM,OAbN8T,IAaM5T,EAPFC,MAAY,WAAW,UAAK,OAAsBA,EAAAxB,CAAA,EAAC,uCAAA;AAAA,WAAyDwB,EAAA2Q,EAAA,EAAY,aAAa,QAAK;AAAA,eAAyB3Q,EAAA2Q,EAAA,EAAY,WAAW;AAAA,MAAA;;;ICt/B5LiD,KAAY,CAChBjG,GACAsB,MAC+BtB,EAAU,KAAK,CAACZ,MAAMA,EAAE,QAAQkC,CAAG,KAAK,MAEnE4E,KAAiB,CACrBlG,GACAmG,GACAC,MACY;AACZ,MAAIC,IAAUJ,GAAUjG,GAAWoG,CAAY;AAC/C,SAAOC,KAAWA,EAAQ,cAAc,QAAM;AAC5C,QAAIA,EAAQ,cAAcF,EAAa,QAAO;AAC9C,IAAAE,IAAUJ,GAAUjG,GAAWqG,EAAQ,SAAS;AAAA,EAClD;AACA,SAAO;AACT,GAEMC,KAAsB,CAC1BtG,GACAuG,GACAC,MAC+B;AAC/B,MAAIH,IAAUJ,GAAUjG,GAAWuG,CAAQ;AAC3C,SAAOF,KAAWA,EAAQ,QAAQG,KAAa;AAC7C,QAAIH,EAAQ,cAAc,KAAM,QAAO;AACvC,IAAAA,IAAUJ,GAAUjG,GAAWqG,EAAQ,SAAS;AAAA,EAClD;AACA,SAAOA,KAAWA,EAAQ,UAAUG,IAAcH,IAAU;AAC9D,GAEMI,KAAoB,CACxBzG,GACA0G,GACAN,MACYA,MAAiBM,KAAaR,GAAelG,GAAW0G,GAAWN,CAAY,GAKvFO,KAAyB,CAC7B3G,GACA4G,GACAC,GACAH,MAC+B;AAC/B,WAASrO,IAAIuO,GAAUvO,KAAK,KAAKA,IAAI2H,EAAU,QAAQ3H,KAAKwO,GAAK;AAC/D,UAAMrG,IAAKR,EAAU3H,CAAC;AACtB,QAAI,CAACoO,GAAkBzG,GAAW0G,GAAWlG,EAAG,GAAG,EAAG,QAAOA;AAAA,EAC/D;AACA,SAAO;AACT,GAEasG,KAAqB,CAACC,MAAqD;AACtF,QAAM;AAAA,IACJ,SAAAC;AAAA,IACA,YAAAC;AAAA,IACA,WAAAP;AAAA,IACA,oBAAAQ;AAAA,IACA,WAAAlH;AAAA,IACA,UAAAmH;AAAA,IACA,UAAAC;AAAA,IACA,eAAAC;AAAA,IACA,sBAAAC;AAAA,EAAA,IACEP;AAGJ,MADIE,EAAW,QAAQP,KACnBR,GAAelG,GAAW0G,GAAWO,EAAW,GAAG,EAAG,QAAO;AAEjE,QAAMM,IAAIP,EAAQ,IAAIC,EAAW,KAAK,KAChCO,IAAIP,EAAW,KAAK,QACpBQ,IAAYF,IAAIC,IAAI,GACpBE,IAA4BD,IAAY,QAAQ,UAOhDE,IAAU3H,EAAU,UAAU,CAACZ,MAAMA,EAAE,QAAQ6H,EAAW,GAAG,GAC7DW,IAAmCH,IACrCd,GAAuB3G,GAAW2H,IAAU,GAAG,IAAIjB,CAAS,IAC5DC,GAAuB3G,GAAW2H,GAAS,IAAIjB,CAAS,GACtDrE,IAAmCoF,IACrCd,GAAuB3G,GAAW2H,GAAS,GAAGjB,CAAS,IACvDC,GAAuB3G,GAAW2H,IAAU,GAAG,GAAGjB,CAAS,GAUzDmB,IAAcb,EAAQ,IAAIK,IAAgBC,GAC1CQ,IAAW,KAAK,MAAMD,IAAcT,CAAQ,GAC5CW,IAAeH,IAAOA,EAAK,QAAQ,IAAI,GACvCI,IAAa3F,IAAOA,EAAK,QAAQ,GACjC4F,IAAe,KAAK,IAAID,GAAY,KAAK,IAAIF,GAAUC,CAAY,CAAC;AAE1E,MAAIG;AAEJ,MAAI,CAACN;AAEH,IAAAM,IAAU;AAAA,MACR,MAAM;AAAA,MACN,QAAQjB,EAAW;AAAA,MACnB,SAAS;AAAA,MACT,WAAW;AAAA,MACX,OAAO;AAAA,MACP,OAAO;AAAA,MACP,WAAW;AAAA,MACX,aAAa;AAAA,IAAA;AAAA,WAENgB,MAAiBL,EAAK,QAAQ;AACvC,IAAAM,IAAU;AAAA,MACR,MAAM;AAAA,MACN,QAAQjB,EAAW;AAAA,MACnB,SAAAS;AAAA,MACA,WAAWE,EAAK;AAAA,MAChB,OAAO;AAAA,MACP,OAAOK;AAAA,MACP,WAAW;AAAA,MACX,aAAa;AAAA,IAAA;AAAA,WAENA,MAAiBL,EAAK;AAC/B,IAAAM,IAAU;AAAA,MACR,MAAM;AAAA,MACN,QAAQjB,EAAW;AAAA,MACnB,SAAAS;AAAA,MACA,WAAWE,EAAK;AAAA,MAChB,OAAOA,EAAK,eAAe;AAAA,MAC3B,OAAOK;AAAA,MACP,WAAW;AAAA,MACX,aAAaL,EAAK;AAAA,IAAA;AAAA,OAEf;AAEL,UAAMO,IAAW7B,GAAoBtG,GAAW4H,EAAK,KAAKK,CAAY;AACtE,IAAIE,IACFD,IAAU;AAAA,MACR,MAAM;AAAA,MACN,QAAQjB,EAAW;AAAA,MACnB,SAAAS;AAAA,MACA,WAAWS,EAAS;AAAA,MACpB,OAAOA,EAAS,eAAe;AAAA,MAC/B,OAAOF;AAAA,MACP,WAAW;AAAA,MACX,aAAaE,EAAS;AAAA,IAAA,IAIxBD,IAAU;AAAA,MACR,MAAM;AAAA,MACN,QAAQjB,EAAW;AAAA,MACnB,SAAAS;AAAA,MACA,WAAWE,EAAK;AAAA,MAChB,OAAOA,EAAK,eAAe;AAAA,MAC3B,OAAOA,EAAK;AAAA,MACZ,WAAW;AAAA,MACX,aAAaA,EAAK;AAAA,IAAA;AAAA,EAGxB;AAEA,SAAIM,EAAQ,QAAQhB,IAAqB,KAAKC,IACrC,EAAE,MAAM,WAAW,SAAAe,GAAS,QAAQ,WAAA,IAGtCA;AACT;;;;;;;;;;;;;;;;;;;;yDCxNME,KAAc,+BACdC,KAAe;;;;;;;;;;AARrB,UAAM7X,IAAQH,GAGRiY,IAAcC,IAEd,EAAE,GAAA1X,EAAA,IAAMC,GAAA,GAKR0X,IAAa,CAAClH,MAA+B,SAAS,OAAOA,CAAG,EAAE,QAAQ,OAAO,GAAG,CAAC,IAKrFmH,IAAoB,CAACxI,MAA0C;AACnE,UAAI,OAAOzP,EAAM,QAAQ,qBAAsB;AAC7C,eAAOA,EAAM,QAAQ,kBAAkByP,GAAKzP,EAAM,GAAG,KAAKA,EAAM,GAAG,KAAK;AAE1E,YAAM4O,IAAIa,EAAI;AACd,aAAIb,MAAM,WAAWA,MAAM,aAAaA,MAAM,YAAkBA,IACzD;AAAA,IACT,GAEMuF,IAAiB,MAAMnU,EAAM,QAAQ,eAAeA,EAAM,EAAE,GAE5DkY,IAAiB,MAAalY,EAAM,UAAU,OAAO,CAAC4O,MAAMA,EAAE,cAAc5O,EAAM,GAAG,GAAG;2BAI5FwB,EA0eM,OAAA;AAAA,MAzeH,OAAKgB,GAAA;AAAA;;UAAiF,mCAAA3C,EAAA,sBAAsBA,EAAA,UAAU,cAAcA,EAAA,GAAG;AAAA,QAAA;AAAA;MAMvI,WAAS,OAAOA,EAAA,GAAG,GAAG;AAAA,MACvB,MAAK;AAAA,MACJ,cAAYA,EAAA,GAAG,QAAK;AAAA,MACpB,UAAUA,EAAA,QAAQ,cAAcA,EAAA,QAAQ,YAAY,YAAYA,EAAA,GAAG,GAAG,IAAI;AAAA,MAC1E,oCAASA,EAAA,QAAQ,cAAcA,UAAQ,YAAY,cAAcA,EAAA,GAAG,KAAKyC,CAAM,IAAI;AAAA,IAAA;MAKpFxC,EAGEC,+BADQoU,EAAA,CAAc,CAAA,CAAA;AAAA,MAGxBzS,EAsYM,OAAA;AAAA,QArYH,OAAKc,GAAA;AAAA;UAAgC3C,EAAA,GAAG,QAAK,IAAA,oBAAA;AAAA;YAA0E,qBAAAA,EAAA,GAAG;AAAA,YAAyC,sBAAAA,EAAA,GAAG;AAAA,YAAyC,qBAAAA,EAAA,GAAG;AAAA,YAAwC,qBAAAA,EAAA,QAAQ;AAAA,iCAA4CA,EAAA,QAAQ,eAAeA,EAAA,QAAQ,YAAY,UAAUA,EAAA,GAAG,GAAG;AAAA,mCAAoCA,EAAA,QAAQ,eAAeA,EAAA,EAAE;AAAA,YAAsC,yBAAAA,EAAA,sBAAsBA,EAAA,UAAU,cAAcA,EAAA,GAAG;AAAA,qCAAwCoY,EAAkBpY,KAAG,GAAG,MAAMoY,EAAkBpY,EAAA,GAAG,GAAG,MAAA;AAAA,UAAA;AAAA;QAc3lB,OAAKsY,GAAA;AAAA,UAA8B,kBAAAtY,EAAA,GAAG;AAAA,yBAA8BmY,EAAWnY,EAAA,GAAG,GAAG;AAAA,UAA8B,mBAAAA,EAAA,GAAG,cAAS,OAAYmY,EAAWnY,EAAA,GAAG,SAAS,IAAA;AAAA,QAAA;;QAMnK6B,EAyTM,OAAA;AAAA,UAxTJ,OAAM;AAAA,UACL,SAAK+B,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA,CAAAnB,MAAEzC,EAAA,UAAU,WAAWA,EAAA,EAAE;AAAA,QAAA;UAGvBA,EAAA,QAAQ,oBADhBF,EAGEyY,IAAA;AAAA;YADC,UAAOP,EAAY;AAAA,UAAA;UAOdhY,EAAA,QAAQ,oBAAoBA,EAAA,GAAG,wBADvC2B,EAcS,UAAA;AAAA;YAZP,MAAK;AAAA,YACJ,OAAKgB,GAAA;AAAA;;gBAA8H,4CAAA,CAAA3C,EAAA,GAAG;AAAA,gBAAsE,2CAAAA,EAAA,GAAG;AAAA,cAAA;AAAA;YAO/M,cAAYA,EAAA,GAAG,mBAAmBgC,EAAAxB,CAAA,6BAA6BwB,EAAAxB,CAAA,EAAC,sBAAA;AAAA,YAChE,SAAKoD,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAAuR,EAAA,CAAA1S,MAAOzC,KAAG,eAAeA,EAAA,UAAU,eAAeA,EAAA,EAAE,GAAA,CAAA,MAAA,CAAA;AAAA,UAAA;YAE1D6B,EAAwD,QAAA,EAAlD,OAAM,0CAAA,GAAyC,MAAA,EAAA;AAAA,UAAA,gBAK1C7B,EAAA,QAAQ,oBADrB0B,EAAA,GAAAC,EAIE,QAJFkC,EAIE;UAEFhC,EAyBM,OAzBNiC,IAyBM;AAAA,YAxBJ7D,EAOOC,EAAA,QAAA,gBAAAsY,GAAAC,GALGnE,GAAc,CAAA,GAFxB,MAOO;AAAA,cAHLzS,EAEO,QAFPkC,IAEOhC,EADF/B,EAAA,QAAQ,mBAAmBA,EAAA,GAAG,KAAKA,EAAA,GAAG,GAAG,CAAA,GAAA,CAAA;AAAA,YAAA;YAQxCA,EAAA,GAAG,eADX0B,KAAAC,EAUO,QAVPqC,IAUO;AAAA,cALL/B,EAGE6L,GAAA;AAAA,gBAFA,MAAK;AAAA,gBACL,MAAK;AAAA,cAAA;gBACL,OACD/L,EAAG/B,EAAA,GAAG,aAAa,GAAA,CAAA;AAAA,YAAA;YAEAA,EAAA,GAAG,gBAAzBF,EAAoCiV,IAAA,EAAA,KAAA,EAAA,CAAA;;UAI7B/U,EAAA,QAAQ,2BADjB0B,KAAAC,EAmBM,OAnBNqM,IAmBM;AAAA,YAfJ/N,EAcOC,EAAA,QAAA,eAAAsY,GAAAC,GAZGnE,GAAc,CAAA,GAFxB,MAcO;AAAA,cAToBtU,EAAA,QAAQ,eAAiCA,EAAA,GAAG,IAAIA,EAAA,QAAQ,WAAW,KAAA,QAA+BA,EAAA,GAAG,IAAIA,EAAA,QAAQ,WAAW,MAAA,WADrJ2B,EASO,QATPsM,IASOlM,EADF/B,EAAA,GAAG,IAAIA,EAAA,QAAQ,WAAW,CAAA,GAAA,CAAA;;;UAKnC6B,EAqOM,OArONwM,IAqOM;AAAA,YApOJpO,EAmOOC,EAAA,QAAA,gBAAAsY,GAAAC,GAjOGnE,GAAc,CAAA,GAFxB,MAmOO;AAAA,cA/NWtU,EAAA,QAAQ,oBAAxB2B,EAqIWW,IAAA,EAAA,KAAA,KAAA;AAAA,gBApITL,EAkBOC,GAAA;AAAA,kBAjBL,MAAA;AAAA,kBACA,MAAK;AAAA,kBACL,SAAQ;AAAA,kBACR,SAAQ;AAAA,kBACP,UAAUlC,EAAA,GAAG;AAAA,kBACd,OAAM;AAAA,kBACL,kCAAYA,EAAA,UAAU,OAAOA,EAAA,GAAG,GAAG,GAAA,CAAA,MAAA,CAAA;AAAA,gBAAA;6BAEpC,MAGE;AAAA,oBAHFiC,EAGE6L,GAAA;AAAA,sBAFA,MAAK;AAAA,sBACL,MAAK;AAAA,oBAAA;oBAEP7L,EAIE8L,IAAA;AAAA,sBAHA,WAAU;AAAA,sBACV,UAAS;AAAA,sBACR,MAAM/L,EAAAxB,CAAA,EAAC,wBAAA;AAAA,oBAAA;;;;gBAGZyB,EAkBOC,GAAA;AAAA,kBAjBL,MAAA;AAAA,kBACA,MAAK;AAAA,kBACL,SAAQ;AAAA,kBACR,SAAQ;AAAA,kBACP,UAAUlC,EAAA,GAAG;AAAA,kBACd,OAAM;AAAA,kBACL,kCAAYA,EAAA,UAAU,SAASA,EAAA,GAAG,GAAG,GAAA,CAAA,MAAA,CAAA;AAAA,gBAAA;6BAEtC,MAGE;AAAA,oBAHFiC,EAGE6L,GAAA;AAAA,sBAFA,MAAK;AAAA,sBACL,MAAK;AAAA,oBAAA;oBAEP7L,EAIE8L,IAAA;AAAA,sBAHA,WAAU;AAAA,sBACV,UAAS;AAAA,sBACR,MAAM/L,EAAAxB,CAAA,EAAC,0BAAA;AAAA,oBAAA;;;;gBAGZyB,EA6FOC,GAAA;AAAA,kBA5FL,MAAA;AAAA,kBACA,MAAK;AAAA,kBACL,SAAQ;AAAA,kBACR,SAAQ;AAAA,kBACP,QAAQ;AAAA,kBACT,OAAM;AAAA,gBAAA;6BAEN,MAGE;AAAA,oBAHFD,EAGE6L,GAAA;AAAA,sBAFA,MAAK;AAAA,sBACL,MAAK;AAAA,oBAAA;oBAEP7L,EAIE8L,IAAA;AAAA,sBAHA,WAAU;AAAA,sBACV,UAAS;AAAA,sBACR,MAAM/L,EAAAxB,CAAA,EAAC,sBAAA;AAAA,oBAAA;oBAEVyB,EA2EQG,IAAA,EA3ED,WAAU,YAAQ;AAAA,iCACvB,MAyEQ;AAAA,wBAzERH,EAyEQI,IAAA,EAzED,SAAQ,aAAS;AAAA,qCACtB,MAQY;AAAA,4BARZJ,EAQYO,IAAA;AAAA,8BAPT,UAAUxC,EAAA,GAAG;AAAA,8BACb,kCAAYA,EAAA,UAAU,QAAQA,EAAA,GAAG,GAAG,GAAA,CAAA,MAAA,CAAA;AAAA,4BAAA;8BAE1B,WACT,MAAsC;AAAA,gCAAtCiC,EAAsC6L,GAAA,EAA/B,MAAK,yBAAuB;AAAA,8BAAA;yCAErC,MAAqE;AAAA,gCAArE7L,EAAqES,IAAA,MAAA;AAAA,6CAArD,MAAoC;AAAA,wCAAjCV,EAAAxB,CAAA,EAAC,2BAAA,CAAA,GAAA,CAAA;AAAA,kCAAA;;;;;;4BAEtByB,EAQYO,IAAA;AAAA,8BAPT,UAAUxC,EAAA,GAAG;AAAA,8BACb,kCAAYA,EAAA,UAAU,WAAWA,EAAA,GAAG,GAAG,GAAA,CAAA,MAAA,CAAA;AAAA,4BAAA;8BAE7B,WACT,MAAwC;AAAA,gCAAxCiC,EAAwC6L,GAAA,EAAjC,MAAK,2BAAyB;AAAA,8BAAA;yCAEvC,MAAwE;AAAA,gCAAxE7L,EAAwES,IAAA,MAAA;AAAA,6CAAxD,MAAuC;AAAA,wCAApCV,EAAAxB,CAAA,EAAC,8BAAA,CAAA,GAAA,CAAA;AAAA,kCAAA;;;;;;4BAGdR,EAAA,QAAQ,uBAAkB,CAAMA,EAAA,GAAG,iBAAa,CAAKA,EAAA,GAAG,sBADhEF,EAUY0C,IAAA;AAAA;8BART,SAAKoB,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAAuR,EAAA,CAAA1S,MAAOzC,EAAA,UAAU,mBAAmBA,EAAA,EAAE,GAAA,CAAA,MAAA,CAAA;AAAA,4BAAA;8BAEjC,WACT,MAA2B;AAAA,gCAA3BiC,EAA2B6L,GAAA,EAApB,MAAK,cAAY;AAAA,8BAAA;yCAE1B,MAEiB;AAAA,gCAFjB7L,EAEiBS,IAAA,MAAA;AAAA,6CADf,MAAgD;AAAA,wCAA7CV,EAAAxB,CAAA,EAAC,uCAAA,CAAA,GAAA,CAAA;AAAA,kCAAA;;;;;;4BAIAR,EAAA,QAAQ,yBADhBF,EAUY0C,IAAA;AAAA;8BART,SAAKoB,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAAuR,EAAA,CAAA1S,MAAOzC,EAAA,UAAU,iBAAiBA,EAAA,EAAE,GAAA,CAAA,MAAA,CAAA;AAAA,4BAAA;8BAE/B,WACT,MAAwC;AAAA,gCAAxCiC,EAAwC6L,GAAA,EAAjC,MAAK,2BAAyB;AAAA,8BAAA;yCAEvC,MAEiB;AAAA,gCAFjB7L,EAEiBS,IAAA,MAAA;AAAA,6CADf,MAA8C;AAAA,wCAA3CV,EAAAxB,CAAA,EAAC,qCAAA,CAAA,GAAA,CAAA;AAAA,kCAAA;;;;;;4BAGRyB,EAQYO,IAAA;AAAA,8BAPT,UAAQ,CAAGxC,EAAA,GAAG;AAAA,8BACd,SAAK4D,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAAuR,EAAA,CAAA1S,MAAOzC,EAAA,UAAU,OAAOA,EAAA,EAAE,GAAA,CAAA,MAAA,CAAA;AAAA,4BAAA;8BAErB,WACT,MAA2C;AAAA,gCAA3CiC,EAA2C6L,GAAA,EAApC,MAAK,8BAA4B;AAAA,8BAAA;yCAE1C,MAAkE;AAAA,gCAAlE7L,EAAkES,IAAA,MAAA;AAAA,6CAAlD,MAAiC;AAAA,wCAA9BV,EAAAxB,CAAA,EAAC,wBAAA,CAAA,GAAA,CAAA;AAAA,kCAAA;;;;;;4BAEtByB,EAQYO,IAAA;AAAA,8BAPT,UAAQ,CAAGxC,EAAA,GAAG;AAAA,8BACd,SAAK4D,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAAuR,EAAA,CAAA1S,MAAOzC,EAAA,UAAU,QAAQA,EAAA,EAAE,GAAA,CAAA,MAAA,CAAA;AAAA,4BAAA;8BAEtB,WACT,MAA2C;AAAA,gCAA3CiC,EAA2C6L,GAAA,EAApC,MAAK,8BAA4B;AAAA,8BAAA;yCAE1C,MAAmE;AAAA,gCAAnE7L,EAAmES,IAAA,MAAA;AAAA,6CAAnD,MAAkC;AAAA,wCAA/BV,EAAAxB,CAAA,EAAC,yBAAA,CAAA,GAAA,CAAA;AAAA,kCAAA;;;;;;4BAGdR,EAAA,QAAQ,oBAAoBA,EAAA,QAAQ,oBAD5CF,EAaY0C,IAAA;AAAA;8BAXT,SAAKoB,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAAuR,EAAA,CAAA1S,MAAOzC,EAAA,UAAU,cAAcA,EAAA,EAAE,GAAA,CAAA,MAAA,CAAA;AAAA,4BAAA;8BAE5B,WACT,MAGE;AAAA,gCAHFiC,EAGE6L,GAAA;AAAA,kCAFA,MAAK;AAAA,kCACL,OAAM;AAAA,gCAAA;;yCAGV,MAEiB;AAAA,gCAFjB7L,EAEiBS,IAAA,EAFD,OAAM,gBAAY;AAAA,6CAChC,MAAiC;AAAA,wCAA9BV,EAAAxB,CAAA,EAAC,wBAAA,CAAA,GAAA,CAAA;AAAA,kCAAA;;;;;;;;;;;;;;;8BAOhBmB,EAwFWW,IAAA,EAAA,KAAA,KAAA;AAAA,gBAtFDtC,EAAA,QAAQ,kBAAkBA,EAAA,QAAQ,oBAD1CF,EAmBOoC,GAAA;AAAA;kBAjBL,MAAA;AAAA,kBACA,MAAK;AAAA,kBACL,SAAQ;AAAA,kBACR,OAAM;AAAA,kBACN,SAAQ;AAAA,kBACR,OAAM;AAAA,kBACL,SAAK0B,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAAuR,EAAA,CAAA1S,MAAOzC,EAAA,UAAU,YAAYA,EAAA,EAAE,GAAA,CAAA,MAAA,CAAA;AAAA,gBAAA;6BAErC,MAGE;AAAA,oBAHFiC,EAGE6L,GAAA;AAAA,sBAFA,MAAK;AAAA,sBACL,MAAK;AAAA,oBAAA;oBAEP7L,EAIE8L,IAAA;AAAA,sBAHA,WAAU;AAAA,sBACV,UAAS;AAAA,sBACR,MAAM/L,EAAAxB,CAAA,EAAC,sBAAA;AAAA,oBAAA;;;;gBAIJR,EAAA,QAAQ,oBAAoBA,EAAA,QAAQ,oBAD5CF,EAkBOoC,GAAA;AAAA;kBAhBL,MAAA;AAAA,kBACA,MAAK;AAAA,kBACL,SAAQ;AAAA,kBACR,SAAQ;AAAA,kBACR,OAAM;AAAA,kBACL,SAAK0B,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAAuR,EAAA,CAAA1S,MAAOzC,EAAA,UAAU,cAAcA,EAAA,EAAE,GAAA,CAAA,MAAA,CAAA;AAAA,gBAAA;6BAEvC,MAGE;AAAA,oBAHFiC,EAGE6L,GAAA;AAAA,sBAFA,MAAK;AAAA,sBACL,MAAK;AAAA,oBAAA;oBAEP7L,EAIE8L,IAAA;AAAA,sBAHA,WAAU;AAAA,sBACV,UAAS;AAAA,sBACR,MAAM/L,EAAAxB,CAAA,EAAC,wBAAA;AAAA,oBAAA;;;;gBAIeR,EAAA,QAAQ,gBAAqCA,EAAA,QAAQ,sBAAsBA,EAAA,GAAG,eAAgBA,EAAA,QAAQ,4BADjIF,EA+COoC,GAAA;AAAA;kBA1CL,MAAA;AAAA,kBACA,MAAK;AAAA,kBACL,SAAQ;AAAA,kBACR,SAAQ;AAAA,kBACP,QAAQ;AAAA,kBACT,OAAM;AAAA,gBAAA;6BAEN,MAGE;AAAA,oBAHFD,EAGE6L,GAAA;AAAA,sBAFA,MAAK;AAAA,sBACL,MAAK;AAAA,oBAAA;oBAEP7L,EAIE8L,IAAA;AAAA,sBAHA,WAAU;AAAA,sBACV,UAAS;AAAA,sBACR,MAAM/L,EAAAxB,CAAA,EAAC,sBAAA;AAAA,oBAAA;oBAEVyB,EAyBQG,IAAA,EAzBD,WAAU,YAAQ;AAAA,iCACvB,MAuBQ;AAAA,wBAvBRH,EAuBQI,IAAA,EAvBD,SAAQ,aAAS;AAAA,qCACtB,MAUY;AAAA,4BATJrC,EAAA,QAAQ,2BADhBF,EAUY0C,IAAA;AAAA;8BART,SAAKoB,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAAuR,EAAA,CAAA1S,MAAOzC,EAAA,UAAU,gBAAgBA,EAAA,EAAE,GAAA,CAAA,MAAA,CAAA;AAAA,4BAAA;8BAE9B,WACT,MAAkC;AAAA,gCAAlCiC,EAAkC6L,GAAA,EAA3B,MAAK,qBAAmB;AAAA,8BAAA;yCAEjC,MAEiB;AAAA,gCAFjB7L,EAEiBS,IAAA,MAAA;AAAA,6CADf,MAAmC;AAAA,wCAAhCV,EAAAxB,CAAA,EAAC,0BAAA,CAAA,GAAA,CAAA;AAAA,kCAAA;;;;;;4BAIAR,EAAA,QAAQ,sBAAsBA,EAAA,GAAG,oBADzCF,EAUY0C,IAAA;AAAA;8BART,SAAKoB,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAAuR,EAAA,CAAA1S,MAAOzC,EAAA,UAAU,gBAAgBA,EAAA,EAAE,GAAA,CAAA,MAAA,CAAA;AAAA,4BAAA;8BAE9B,WACT,MAA6C;AAAA,gCAA7CiC,EAA6C6L,GAAA,EAAtC,MAAK,gCAA8B;AAAA,8BAAA;yCAE5C,MAEiB;AAAA,gCAFjB7L,EAEiBS,IAAA,MAAA;AAAA,6CADf,MAAmC;AAAA,wCAAhCV,EAAAxB,CAAA,EAAC,0BAAA,CAAA,GAAA,CAAA;AAAA,kCAAA;;;;;;;;;;;;;;;;;;;QAcNR,EAAA,GAAG,WAAO,CAAKA,EAAA,QAAQ,eAAeoV,EAAAA,OAAO,aAA7DzT,EAoCWW,IAAA,EAAA,KAAA,KAAA;AAAA,UAnCTT,EAOM,OAPNiT,IAOM;AAAA,YANJjT,EAKM,OALNmT,IAKM;AAAA,cAJJ/U,EAGEC,wBADQoU,EAAA,CAAc,CAAA,CAAA;AAAA,YAAA;;UAI5BrU,EA0BOC,EAAA,QAAA,eAAAsY,GAAAC,GAxBGnE,GAAc,CAAA,GAFxB,MA0BO;AAAA,YArBGtU,EAAA,QAAQ,wBADhB0B,KAAAC,EAqBM,OArBNsT,IAqBM;AAAA,gCAjBJpT,EAAsC,OAAA,EAAjC,OAAM,yBAAA,GAAwB,MAAA,EAAA;AAAA,cACnCI,EAMOC,GAAA;AAAA,gBALL,SAAQ;AAAA,gBACP,UAAUlC,EAAA,GAAG;AAAA,gBACb,SAAK4D,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAAuR,EAAA,CAAA1S,MAAOzC,EAAA,UAAU,cAAcA,EAAA,EAAE,GAAA,CAAA,MAAA,CAAA;AAAA,cAAA;2BAEvC,MAA+B;AAAA,sBAA5BgC,EAAAxB,CAAA,EAAC,sBAAA,CAAA,GAAA,CAAA;AAAA,gBAAA;;;cAENyB,EAQOC,GAAA;AAAA,gBAPL,OAAM;AAAA,gBACN,SAAQ;AAAA,gBACR,gBAAa;AAAA,gBACZ,UAAUlC,EAAA,GAAG;AAAA,gBACb,SAAK4D,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAAuR,EAAA,CAAA1S,MAAOzC,EAAA,UAAU,YAAYA,EAAA,EAAE,GAAA,CAAA,MAAA,CAAA;AAAA,cAAA;2BAErC,MAA6B;AAAA,sBAA1BgC,EAAAxB,CAAA,EAAC,oBAAA,CAAA,GAAA,CAAA;AAAA,gBAAA;;;;;kBAOY4U,EAAAA,OAAM,eAAA,MAAsBpV,EAAA,QAAQ,YAAYA,EAAA,GAAG,aAAQ,CAAMA,EAAA,QAAQ,eADjG0B,KAAAC,EAYM,OAZNuT,IAYM;AAAA,UANJrT,EAKM,OALNwT,IAKM;AAAA,YAJJpV,EAGEC,iCADQoU,EAAA,CAAc,CAAA,CAAA;AAAA,UAAA;;;MAM9BrU,EAGEC,8BADQoU,EAAA,CAAc,CAAA,CAAA;AAAA,MAOhBtU,EAAA,GAAG,eAAeA,EAAA,GAAG,yBAD7B2B,EAoEM,OAAA;AAAA;QAlEJ,OAAM;AAAA,QACL,OAAK2W,GAAA,EAAA,kBAAsBtY,EAAA,GAAG,OAAK;AAAA,MAAA;QAEpC6B,EA8DM,OAAA;AAAA,UA7DH,WAAQkW,EAAW,CAAA;AAAA,UACnB,kBAAgB,OAAO/X,EAAA,GAAG,GAAG;AAAA,QAAA;kBAE9B2B,EAyDcW,IAAA,MAAAC,GAxDI8V,KAAc,CAAvBK,YADT5Y,EAyDckC,EAAAiW,CAAA,GAAA;AAAA,YAvDX,KAAK,OAAOS,EAAM,GAAG;AAAA,YACrB,IAAIA;AAAA,YACJ,cAAY1Y,EAAA;AAAA,YACZ,cAAYA,EAAA;AAAA,YACZ,SAASA,EAAA;AAAA,YACT,WAAWA,EAAA;AAAA,UAAA;YAED,MAAI2Y,EACb,CAGEC,MAJsB;AAAA,cACxB3Y,EAGEC,EAAA,QAAA,QAHFwN,EAGE,EAAA,SAAA,GAAA,GADQkL,CAAS,CAAA;AAAA,YAAA;YAGV,gBAAYD,EACrB,CAGEC,MAJ8B;AAAA,cAChC3Y,EAGEC,EAAA,QAAA,gBAHFwN,EAGE,EAAA,SAAA,GAAA,GADQkL,CAAS,CAAA;AAAA,YAAA;YAGV,iBAAaD,EACtB,CAGEC,MAJ+B;AAAA,cACjC3Y,EAGEC,EAAA,QAAA,iBAHFwN,EAGE,EAAA,SAAA,GAAA,GADQkL,CAAS,CAAA;AAAA,YAAA;YAGV,eAAWD,EACpB,CAGEC,MAJ6B;AAAA,cAC/B3Y,EAGEC,EAAA,QAAA,eAHFwN,EAGE,EAAA,SAAA,GAAA,GADQkL,CAAS,CAAA;AAAA,YAAA;YAGV,eAAWD,EACpB,CAGEC,MAJ6B;AAAA,cAC/B3Y,EAGEC,EAAA,QAAA,eAHFwN,EAGE,EAAA,SAAA,GAAA,GADQkL,CAAS,CAAA;AAAA,YAAA;YAGV,gBAAYD,EACrB,CAGEC,MAJ8B;AAAA,cAChC3Y,EAGEC,EAAA,QAAA,gBAHFwN,EAGE,EAAA,SAAA,GAAA,GADQkL,CAAS,CAAA;AAAA,YAAA;YAGV,eAAWD,EACpB,CAGEC,MAJ6B;AAAA,cAC/B3Y,EAGEC,EAAA,QAAA,eAHFwN,EAGE,EAAA,SAAA,GAAA,GADQkL,CAAS,CAAA;AAAA,YAAA;YAGV,cAAUD,EACnB,CAGEC,MAJ4B;AAAA,cAC9B3Y,EAGEC,EAAA,QAAA,cAHFwN,EAGE,EAAA,SAAA,GAAA,GADQkL,CAAS,CAAA;AAAA,YAAA;;;;;;;;;;;;;;;;;;;;;;AC1f/B,UAAMzY,IAAQH,GAERpB,IAAOC,GAIPga,IAAOxY,GAAoBL,GAAA,YAAmB,GAE9C,EAAE,GAAAQ,EAAA,IAAMC,GAAA,GAERqY,IAAcxZ,EAAsC,MAAS,GAC7DyZ,IAAYzZ,EAAsB,MAAM;AAE9C,IAAAgC,GAAMuX,GAAM,CAACxE,MAAQ;AACnB,MAAIA,MACFyE,EAAY,QAAQ,QACpBC,EAAU,QAAQ;AAAA,IAEtB,CAAC;AAGD,UAAMC,IAAiBhY,EAA6B,MAAM;AACxD,YAAMiY,wBAAU,IAAA;AAChB,UAAI9Y,EAAM,cAAc,KAAM,QAAO8Y;AACrC,YAAMC,IAAO,CAACC,MAA4C;AACxD,mBAAWC,KAAKD,GAAO;AAErB,cADUC,EAAE,KAAKjZ,EAAM,QAAQ,MACrBA,EAAM,WAAW;AACzB,kBAAMkZ,IAAU,CAACC,OAAiC;AAChD,yBAAWC,KAAKD;AACd,gBAAAL,EAAI,IAAIM,EAAE,KAAKpZ,EAAM,QAAQ,CAAkB,GAC3CoZ,EAAE,UAAU,UAAQF,EAAQE,EAAE,QAAQ;AAAA,YAE9C;AACA,mBAAIH,EAAE,UAAU,UAAQC,EAAQD,EAAE,QAAQ,GACnC;AAAA,UACT;AACA,cAAIA,EAAE,UAAU,UAAUF,EAAKE,EAAE,QAAQ,EAAG,QAAO;AAAA,QACrD;AACA,eAAO;AAAA,MACT;AACA,aAAAF,EAAK/Y,EAAM,KAAK,QAAQ,GACjB8Y;AAAA,IACT,CAAC,GAEKO,IAAaxY,EAAuC,MAAM;AAC9D,UAAIb,EAAM,cAAc,KAAM,QAAO;AACrC,YAAMsZ,IAAO,CAACN,MAAiE;AAC7E,mBAAWC,KAAKD,GAAO;AACrB,cAAKC,EAAE,KAAKjZ,EAAM,QAAQ,MAAwBA,EAAM,UAAW,QAAOiZ;AAC1E,cAAIA,EAAE,UAAU,QAAQ;AACtB,kBAAMjI,IAAMsI,EAAKL,EAAE,QAAQ;AAC3B,gBAAIjI,EAAK,QAAOA;AAAA,UAClB;AAAA,QACF;AACA,eAAO;AAAA,MACT;AACA,aAAOsI,EAAKtZ,EAAM,KAAK,QAAQ;AAAA,IACjC,CAAC,GAKKuZ,IAAmB1Y,EAA2C,MAAM;AACxE,UAAIb,EAAM,cAAc,KAAM;AAC9B,YAAMsZ,IAAO,CACXN,GACAQ,MACqC;AACrC,mBAAWP,KAAKD,GAAO;AACrB,cAAKC,EAAE,KAAKjZ,EAAM,QAAQ,MAAwBA,EAAM,UAAW,QAAOwZ;AAC1E,cAAIP,EAAE,UAAU,QAAQ;AACtB,kBAAMjI,IAAMsI,EAAKL,EAAE,UAAUA,EAAE,KAAKjZ,EAAM,QAAQ,CAAkB;AACpE,gBAAIgR,MAAQ,OAAW,QAAOA;AAAA,UAChC;AAAA,QACF;AAAA,MAEF;AACA,aAAOsI,EAAKtZ,EAAM,KAAK,UAAU,IAAI;AAAA,IACvC,CAAC,GAEKyZ,IAAa5Y,EAAsB,MAAM;AAC7C,YAAMiY,IAAmB,CAAA,GACnBY,IAAeL,EAAW,QAAQrZ,EAAM,sBAAsBqZ,EAAW,KAAK,IAAI;AAExF,MAAAP,EAAI,KAAK;AAAA,QACP,KAAK;AAAA,QACL,OAAO;AAAA,QACP,OAAOzY,EAAE,wCAAwC;AAAA,QACjD,aAAaL,EAAM,KAAK,SAAS,SAAS;AAAA,QAC1C,YAAYuZ,EAAiB,UAAU;AAAA,QACvC,QAAQA,EAAiB,UAAU,OAAO,kBAAkB;AAAA,MAAA,CAC7D;AAED,YAAMR,IAAO,CAACC,GAAgCW,MAAkB;AAC9D,mBAAWV,KAAKD,GAAO;AACrB,gBAAMlI,KAAMmI,EAAE,KAAKjZ,EAAM,QAAQ;AACjC,cAAI4Z,IAAa,IACbC,IAA8B;AAClC,UAAI/I,OAAQ9Q,EAAM,aAChB4Z,IAAa,IACbC,IAAS,UACAhB,EAAe,MAAM,IAAI/H,EAAG,KACrC8I,IAAa,IACbC,IAAS,gBACAN,EAAiB,UAAU,UAAaA,EAAiB,UAAUzI,MAC5E8I,IAAa,IACbC,IAAS,mBACAF,IAAQ,IAAID,IAAe1Z,EAAM,aAC1C4Z,IAAa,IACbC,IAAS,aAEXf,EAAI,KAAK;AAAA,YACP,KAAAhI;AAAA,YACA,OAAO6I,IAAQ;AAAA,YACf,OAAO3Z,EAAM,aAAaiZ,EAAE,MAAenI,EAAG;AAAA,YAC9C,aAAa,CAAC,EAAEmI,EAAE,YAAYA,EAAE,SAAS,SAAS;AAAA,YAClD,YAAAW;AAAA,YACA,QAAAC;AAAA,UAAA,CACD,GACGZ,EAAE,UAAU,YAAaA,EAAE,UAAUU,IAAQ,CAAC;AAAA,QACpD;AAAA,MACF;AACA,aAAAZ,EAAK/Y,EAAM,KAAK,UAAU,CAAC,GACpB8Y;AAAA,IACT,CAAC,GAEKgB,IAAkBjZ,EAAS,MAAM4Y,EAAW,MAAM,OAAO,CAACM,MAAM,CAACA,EAAE,UAAU,CAAC,GAE9EC,IAAoBnZ;AAAA,MAA2B,MACnD8X,EAAY,UAAU,SAClB,OACCc,EAAW,MAAM,KAAK,CAACM,MAAMA,EAAE,QAAQpB,EAAY,KAAK,KAAK;AAAA,IAAA,GAG9DsB,IAAsBpZ;AAAA,MAC1B,MAAM,CAAC,CAACmZ,EAAkB,SAASA,EAAkB,MAAM;AAAA,IAAA,GAGvDE,IAAmB,CAACH,MAAiB;AACzC,MAAIA,EAAE,eACNpB,EAAY,QAAQoB,EAAE;AAAA,IACxB,GAEMhN,IAAY,MAAM;AACtB,MAAKiN,EAAkB,UACvBvb,EAAK,WAAWub,EAAkB,MAAM,KAAKpB,EAAU,KAAK,GAC5DF,EAAK,QAAQ;AAAA,IACf,GAEMyB,IAAW,MAAM;AACrB,MAAAzB,EAAK,QAAQ;AAAA,IACf,GAEM0B,IAAS,CAACT,MAA0B,GAAGA,IAAQ,EAAE,MAEjDU,IAAc,CAACR,MACfA,MAAW,aAAmBxZ,EAAE,4CAA4C,IACzE;2BAKPV,EA6GU2N,IAAA;AAAA,kBA5GCoL,EAAA;AAAA,oDAAAA,EAAI,QAAApW;AAAA,MACb,aAAU;AAAA,MACV,YAAA;AAAA,IAAA;iBAEA,MAuGQ;AAAA,QAvGRR,EAuGQ0L,IAAA,MAAA;AAAA,qBAtGN,MAEa;AAAA,YAFb1L,EAEawY,IAAA,MAAA;AAAA,yBADX,MAA6C;AAAA,oBAA1CzY,EAAAxB,CAAA,EAAC,oCAAA,CAAA,GAAA,CAAA;AAAA,cAAA;;;YAIEyZ,EAAA,MAAgB,WAAM,UAD9Bna,EAYY4a,IAAA;AAAA;cAVV,OAAM;AAAA,YAAA;yBAEN,MAOS;AAAA,gBAPTzY,EAOS2S,IAAA;AAAA,kBANP,MAAK;AAAA,kBACL,SAAQ;AAAA,kBACR,SAAQ;AAAA,gBAAA;6BAER,MAAuE;AAAA,oBAAvE/S,EAAuE,kBAA5DG,EAAAxB,CAAA,EAAC,6CAAA,CAAA,GAAA,CAAA;AAAA,oBACZqB,EAAgE,eAAxDG,EAAAxB,CAAA,EAAC,4CAAA,CAAA,GAAA,CAAA;AAAA,kBAAA;;;;;wBAIbmB,EAiEWW,IAAA,EAAA,KAAA,KAAA;AAAA,cAhETL,EAoCYyY,IAAA,EApCD,OAAM,UAAM;AAAA,2BACrB,MAkCQ;AAAA,kBAlCRzY,EAkCQI,IAAA;AAAA,oBAjCN,SAAQ;AAAA,oBACR,OAAM;AAAA,kBAAA;+BAGJ,MAAuB;AAAA,8BADzBV,EA6BYW,IAAA,MAAAC,GA5BEqX,EAAA,OAAU,CAAfM,YADTpa,EA6BY0C,IAAA;AAAA,wBA3BT,KAAK0X,EAAE,4BAA4B,OAAOA,EAAE,GAAG;AAAA,wBAC/C,UAAUA,EAAE;AAAA,wBACZ,QAAQpB,EAAA,UAAgBoB,EAAE;AAAA,wBAC1B,OAAOA,EAAE;AAAA,wBACT,UAAUM,EAAYN,EAAE,MAAM;AAAA,wBAC9B,OAAK5B,GAAA,EAAA,oBAAwBiC,EAAOL,EAAE,KAAK,GAAA;AAAA,wBAC3C,mBAAiBA,EAAE,aAAU,SAAA;AAAA,wBAC7B,eAAaA,EAAE,UAAM;AAAA,wBACrB,SAAK,CAAAzX,MAAE4X,EAAiBH,CAAC;AAAA,sBAAA;wBAEf,WACT,MAIE;AAAA,0BAHMA,EAAE,QAAG,aADbpa,EAIEgO,GAAA;AAAA;4BAFA,MAAK;AAAA,4BACL,MAAK;AAAA,0BAAA,MAGMoM,EAAE,oBADfpa,EAIEgO,GAAA;AAAA;4BAFA,MAAK;AAAA,4BACL,MAAK;AAAA,0BAAA,YAEPhO,EAIEgO,GAAA;AAAA;4BAFA,MAAK;AAAA,4BACL,MAAK;AAAA,0BAAA;;;;;;;;;;cAQPsM,EAAA,cADRta,EAyBY4a,IAAA;AAAA;gBAvBV,OAAM;AAAA,cAAA;2BAEN,MAMM;AAAA,kBANN7Y,EAMM,OANND,IAMMG,EAJFC,EAAAxB,CAAA,EAAC,iDAAA;AAAA,oBAA2E,OAAA2Z,EAAA,OAAmB,SAAK;AAAA,kBAAA;kBAKxGlY,EAac0Y,IAAA;AAAA,gCAZH5B,EAAA;AAAA,kEAAAA,EAAS,QAAAtW;AAAA,oBAClB,SAAQ;AAAA,oBACR,gBAAA;AAAA,kBAAA;+BAEA,MAGE;AAAA,sBAHFR,EAGE2Y,IAAA;AAAA,wBAFA,OAAM;AAAA,wBACL,OAAO5Y,EAAAxB,CAAA,EAAC,yCAAA;AAAA,sBAAA;sBAEXyB,EAGE2Y,IAAA;AAAA,wBAFA,OAAM;AAAA,wBACL,OAAO5Y,EAAAxB,CAAA,EAAC,wCAAA;AAAA,sBAAA;;;;;;;;YAMjByB,EAgBe4Y,IAAA,MAAA;AAAA,yBAfb,MAAW;AAAA,gBAAX5Y,EAAWqM,EAAA;AAAA,gBACXrM,EAKOC,GAAA;AAAA,kBAJL,SAAQ;AAAA,kBACP,SAAOoY;AAAA,gBAAA;6BAER,MAAwC;AAAA,wBAArCtY,EAAAxB,CAAA,EAAC,+BAAA,CAAA,GAAA,CAAA;AAAA,kBAAA;;;gBAENyB,EAOOC,GAAA;AAAA,kBANL,OAAM;AAAA,kBACN,SAAQ;AAAA,kBACP,UAAQ,CAAGiY,EAAA,SAAqBA,EAAA,MAAkB;AAAA,kBAClD,SAAOjN;AAAA,gBAAA;6BAER,MAA+C;AAAA,wBAA5ClL,EAAAxB,CAAA,EAAC,sCAAA,CAAA,GAAA,CAAA;AAAA,kBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GCoeRuX,KAAc,+BACdC,KAAe,oBAWf8C,KAAY,IACZC,KAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAzgBjB,UAAM5a,IAAQH,GA4CRpB,IAAOC,GAiBPuB,IAAaC,GAA8BL,GAAA,YAAmB,GAC9Dgb,IAAO3a,GAAwBL,GAAC,MAA2B,GAkB3D,EAAE,GAAAQ,EAAA,IAAMC,GAAA,GACR+N,IAAQC,GAAA,GACR,EAAE,cAAAwM,EAAA,IAAiB1P,GAAA,GAEnBoD,IAASC,GAA4B,QAAQ,GAC7C,EAAE,UAAAsM,EAAA,IAAaC,GAAkBxM,CAAM,GAEvCE,IAAUuM,GAAA,GAEVC,IAAwBra,EAA6B,MACrDb,EAAM,iBAAiB,SAAe,SACtCA,EAAM,iBAAiB,YAAkB,YACtC+a,EAAS,QAAQ,SAAS,SAClC,GAEKI,IAAuBhc,EAAwB,oBAAI,KAAK,GAExDic,IAAqBjc,EAAwB,oBAAI,KAAK,GAKtD8P,IAAYjP,EAAM,UAAU,MAC5BqP,IAAgB,OAAOJ,KAAc,aAAa,OAAOA,GACzDG,IAAQ,CAAC7G,MACb,OAAO0G,KAAc,aACjBA,EAAU1G,CAAI,IACbA,EAAK0G,CAAwB,GAG9BK,KAAqB,MAAc;AACvC,YAAMC,IAAIvP,EAAM;AAChB,aAAIuP,MAAM,UAAaA,MAAM,KAAc,aACvC,OAAOA,KAAM,WAAiBA,EAAE,QAC7BA;AAAA,IACT,GAAA;AAcA,KAZ6B,CAAC8L,MAA4B;AACxD,YAAMtC,IAAO,CAACC,MAAmC;AAC/C,mBAAWC,KAAKD;AACd,UAAIC,EAAE,YAAYA,EAAE,SAAS,SAAS,MACpCkC,EAAqB,MAAM,IAAI/L,EAAM6J,EAAE,IAAI,CAAC,GAC5CF,EAAKE,EAAE,QAAQ;AAAA,MAGrB;AACA,MAAAF,EAAKsC,EAAK,QAAQ;AAAA,IACpB,GAEqBpb,EAAW,KAAK;AAKrC,UAAM0O,IAA0D;AAAA,MAC9D,KAAK,MAAM1O,EAAW;AAAA,MACtB,KAAK,CAAC2O,MAAO3O,EAAW,QAAQ2O;AAAA,MAChC,SAAS5O,EAAM;AAAA,MACf,QAAQA,EAAM;AAAA,MACd,UAAUA,EAAM;AAAA,MAChB,aAAaA,EAAM;AAAA,MACnB,UAAUA,EAAM;AAAA,MAChB,cAAc,MAAMA,EAAM,gBAAgB,CAAA;AAAA,MAC1C,UAAUA,EAAM;AAAA,IAAA,GAKZ6O,IAAa7O,EAAM,SACrB,OACAsb,GAAqCtb,EAAM,UAAU2O,CAAiB,GACpEI,IACJ/O,EAAM,UAAU6O,GAAY,UAAU0M,GAAqC5M,CAAiB,GAIxFO,IAAgBC,GAA4BN,GAAY,cAAc,IAAI,GAK1E2M,IAAgB3a,EAAkC,MAAM;AAC5D,YAAM4a,IAAgC,CAAA;AACtC,UAAIC,IAAY;AAChB,YAAM/E,IAAW3W,EAAM,UACjB+Y,IAAO,CACXC,GACAW,IACAgC,OACG;AACH,iBAAS9T,KAAI,GAAGA,KAAImR,EAAM,QAAQnR,MAAK;AACrC,gBAAM+T,KAAO5C,EAAMnR,EAAC,GACdiJ,KAAM1B,EAAMwM,GAAK,IAAI,GACrBC,IAAkBD,GAAK,aAAa,QACpCE,KAAcD,MAAoBD,GAAK,UAAU,UAAU,KAAK,GAChEG,KAAgBH,GAAK,UAAU,UAAU,GACzCI,KAAiBrF,KAAYgD,KAAQ;AAC3C,UAAA8B,EAAK,KAAK;AAAA,YACR,KAAA3K;AAAA,YACA,OAAO4K;AAAA,YACP,KAAKE,GAAK;AAAA,YACV,UAAUA,GAAK,KAAKtM,CAAiB;AAAA,YACrC,MAAAsM;AAAA,YACA,OAAAjC;AAAA,YACA,QAAQgC,IAAY,QAAQ;AAAA,YAC5B,WAAWA,KAAavM,EAAMuM,GAAW,IAAI,IAAI;AAAA,YACjD,eAAAI;AAAA,YACA,aAAAD;AAAA,YACA,iBAAAD;AAAA,YACA,cAAchU;AAAA,YACd,cAAcmR,EAAM;AAAA,YACpB,eAAenR,OAAM;AAAA,YACrB,cAAcA,OAAMmR,EAAM,SAAS;AAAA,YACnC,aAAa6C,KAAmBG,KAAiB;AAAA,YACjD,WAAWnU,KAAI;AAAA,YACf,YAAY8R,KAAQ;AAAA,UAAA,CACrB,GACGmC,MAAa/C,EAAK6C,GAAK,UAAqCjC,KAAQ,GAAGiC,EAAI;AAAA,QACjF;AAAA,MACF;AACA,aAAA7C,EAAK9Y,EAAW,MAAM,UAAU,GAAG,IAAI,GAChCwb;AAAA,IACT,CAAC;AAID,IAAAta;AAAA,MACE,MAAMqa,EAAc,MAAM,IAAI,CAACxL,MAAO,OAAOA,EAAG,GAAG,CAAC,EAAE,KAAK,GAAG;AAAA,MAC9D,MAAMd,EAAc,aAAasM,EAAc,MAAM,IAAI,CAACxL,MAAOA,EAAG,GAAG,CAAC;AAAA,MACxE,EAAE,OAAO,OAAA;AAAA,IAAO;AAMlB,UAAMiM,KAAWC,GAAqC,IAAI,GACpDC,IAAYhd,EAAwB,oBAAI,KAAK,GAI7Cid,IAAyBjd,EAAwB,oBAAI,KAAK,GAC1Dkd,KAA0Bld,EAAwB,oBAAI,KAAK,GAG3Dmd,KAAqB,MAAM;AAC/B,MAAAvN,EAAW,OAAA,GACXoN,EAAU,4BAAY,IAAA;AAAA,IACxB,GAEMI,KAAY,CAACzL,MAAuB;AACxC,YAAM,EAAE,MAAA8K,EAAA,IAAS7M,EAAW,SAAS+B,CAAG;AACxC,UAAI,CAAC8K,GAAM;AACT,QAAAO,EAAU,MAAM,IAAIrL,CAAG;AACvB;AAAA,MACF;AACA,YAAMoI,IAAU,CAACD,MAA6B;AAC5C,QAAAkD,EAAU,MAAM,IAAI/M,EAAM6J,EAAE,IAAI,CAAC,GAC7BA,EAAE,YAAUA,EAAE,SAAS,QAAQC,CAAO;AAAA,MAC5C;AACA,MAAAA,EAAQ0C,CAAI;AAAA,IACd,GAEMjK,yBAAqB,IAAA,GACrBC,KAAqB/Q,EAA2C,MAAM;AAC1E,YAAMgR,IAAyC,CAAA,GACzCC,wBAAe,IAAA;AACrB,iBAAW9B,KAAMwL,EAAc,OAAO;AACpC,QAAA1J,EAAS,IAAI9B,EAAG,GAAG;AACnB,cAAM+B,IAAUzB,GAAY,MAAM,IAAIN,EAAG,GAAG,GACtCgC,IAAWoJ,EAAmB,MAAM,IAAIpL,EAAG,GAAG,GAC9CwM,KAAmBrB,EAAqB,MAAM,IAAInL,EAAG,GAAG,GACxDlF,KAAU9K,EAAM,aAAa,IAAIgQ,EAAG,GAAG,KAAK,IAC5CyM,KAAQN,EAAU,MAAM,IAAInM,EAAG,GAAG,GAGlCkC,KAAQlS,EAAM,WAAW,KAAQ+O,EAAW,UAAUiB,EAAG,GAAG,GAC5DiC,KAAUjS,EAAM,WAAW,KAAQkS,MAASuK,IAC5CrK,IAAST,GAAe,IAAI3B,EAAG,GAAG;AACxC,YACEoC,KACAA,EAAO,QAAQpC,EAAG,OAClBoC,EAAO,UAAUpC,EAAG,SACpBoC,EAAO,aAAapC,EAAG,YACvBoC,EAAO,UAAUpC,EAAG,SACpBoC,EAAO,cAAcpC,EAAG,aACxBoC,EAAO,kBAAkBpC,EAAG,iBAC5BoC,EAAO,kBAAkBpC,EAAG,iBAC5BoC,EAAO,iBAAiBpC,EAAG,gBAC3BoC,EAAO,YAAYL,KACnBK,EAAO,aAAaJ,KACpBI,EAAO,qBAAqBoK,MAC5BpK,EAAO,YAAYtH,MACnBsH,EAAO,UAAUF,MACjBE,EAAO,UAAUqK,MACjBrK,EAAO,YAAYH,IACnB;AACA,UAAAJ,EAAK,KAAKO,CAAM;AAChB;AAAA,QACF;AACA,cAAMC,KAA4C;AAAA,UAChD,GAAGrC;AAAA,UACH,SAAA+B;AAAA,UACA,UAAAC;AAAA,UACA,kBAAAwK;AAAA,UACA,SAAA1R;AAAA,UACA,OAAAoH;AAAA,UACA,OAAAuK;AAAA,UACA,SAAAxK;AAAA,QAAA;AAEF,QAAAN,GAAe,IAAI3B,EAAG,KAAKqC,EAAS,GACpCR,EAAK,KAAKQ,EAAS;AAAA,MACrB;AACA,iBAAWvB,KAAOa,GAAe;AAC/B,QAAKG,EAAS,IAAIhB,CAAG,KAAGa,GAAe,OAAOb,CAAG;AAEnD,aAAOe;AAAA,IACT,CAAC,GAEKS,KAAUzR,EAAS,MAAMZ,EAAW,MAAM,SAAS,WAAW,CAAC,GAC/Dyc,KAAiB7b,EAAS,MAAM2a,EAAc,MAAM,MAAM,GAE1DrL,KAAgB1B,GAA4B,eAAe,GAE3D4C,KAAcxQ,EAAS,MAAM,CAACb,EAAM,YAAY,CAACA,EAAM,YAAY,CAACA,EAAM,OAAO,GACjF2c,KAAkB9b;AAAA,MACtB,MAAMwQ,GAAY,SAAS,CAACrR,EAAM,kBAAkB0c,GAAe,QAAQ;AAAA,IAAA,GAGvEtM,KAAevP,EAAS,MAAM,CAAC,CAAEwN,EAAkC,IAAI,GACvEgC,KAAoBxP,EAAS,MAAM,CAAC,CAAEwN,EAAkC,eAAe,CAAC,GACxFqD,KAAuB7Q,EAAS,MAAM,CAAC,CAACb,EAAM,UAAU,GAExD;AAAA,MACJ,aAAAsQ;AAAA,MACA,kBAAAC;AAAA,MACA,cAAAqM;AAAA,MACA,WAAApM;AAAA,MACA,YAAAC;AAAA,MACA,YAAAC;AAAA,MACA,WAAAC;AAAA,MACA,iBAAAC;AAAA,IAAA,IACEC,GAA+C;AAAA,MACjD,eAAAV;AAAA,MACA,aAAa;AAAA,MACb,cAAAC;AAAA;AAAA;AAAA,MAGA,iBAAiB,CAACU,GAAKvI,MAASwG,EAAW,WAAW+B,GAAKvI,GAAM,EAAK;AAAA,MACtE,WAAW,MAAM;AACf,cAAMsU,IAAwB,CAAA,GACxB9D,IAAO,CAACC,MAAmC;AAC/C,qBAAWC,KAAKD;AACd,YAAA6D,EAAK,KAAKzN,EAAM6J,EAAE,IAAI,CAAC,GACnBA,EAAE,YAAYA,EAAE,SAAS,UAAQF,EAAKE,EAAE,QAAQ;AAAA,QAExD;AACA,eAAAF,EAAK9Y,EAAW,MAAM,QAAQ,GACvB4c;AAAA,MACT;AAAA,MACA,WAAW,CAAC/L,MAAQ;AAClB,cAAM,EAAE,MAAA8K,EAAA,IAAS7M,EAAW,SAAS+B,CAAG;AACxC,eAAO8K,IAAO,EAAE,MAAMA,EAAK,SAAS;AAAA,MACtC;AAAA,MACA,eAAe,CAAC9K,MAAQ;AACtB,cAAM,EAAE,QAAA/E,EAAA,IAAWgD,EAAW,SAAS+B,CAAG;AAC1C,QAAI/E,KACFoP,EAAqB,MAAM,IAAI/L,EAAMrD,EAAO,IAAI,CAAC;AAAA,MAErD;AAAA,IAAA,CACD,GAEK;AAAA,MACJ,UAAA+Q;AAAA,MACA,YAAAC;AAAA,MACA,mBAAAC;AAAA,MACA,YAAAC;AAAA,MACA,aAAAC;AAAA,MACA,kBAAAC;AAAA,MACA,mBAAAC;AAAA,MACA,cAAAC;AAAA,IAAA,IACEC,GAAkC;AAAA,MACpC,MAAAzC;AAAA,MACA,UAAAoB;AAAA,MACA,WAAAE;AAAA,MACA,YAAAlc;AAAA,MACA,YAAY,CAACsd,MAAMC,GAAUD,CAAC;AAAA,MAC9B,YAAY,CAACA,MAAM;AACjB,QAAAtd,EAAW,QAAQsd;AAAA,MACrB;AAAA,MACA,iBAAAZ;AAAA,MACA,SAAS,MAAM;AACb,QAAAP,EAAuB,4BAAY,IAAA,GACnCC,GAAwB,4BAAY,IAAA,GACpCO,GAAA;AAEA,mBAAW1J,KAAKuK,GAAe,MAAO,CAAAtC,EAAqB,MAAM,IAAIjI,CAAC;AACtE,QAAAwK,GAAS,MAAM;AACb,UAAIC,GAAY,SAAOC,GAAA;AAAA,QACzB,CAAC;AAAA,MACH;AAAA,MACA,iBAAiB,MAAM;AACrB,QAAAxB,EAAuB,4BAAY,IAAA,GACnCC,GAAwB,4BAAY,IAAA,GACpCO,GAAA;AAAA,MACF;AAAA;AAAA;AAAA;AAAA,MAIA,UAAU,MAAM;AACd,mBAAW9L,KAAOsL,EAAuB,MAAO,CAAArN,EAAW,eAAe+B,CAAG;AAC7E,mBAAWA,KAAOuL,GAAwB;AACxC,UAAAtN,EAAW,WAAW+B,GAAK,EAAE,cAAc,IAAO;AACpD,QAAAsL,EAAuB,4BAAY,IAAA,GACnCC,GAAwB,4BAAY,IAAA,GACpCwB,GAAA;AAAA,MACF;AAAA,MACA,YAAY,MAAM;AAChB,QAAAzB,EAAuB,4BAAY,IAAA,GACnCC,GAAwB,4BAAY,IAAA,GACpCwB,GAAA;AAAA,MACF;AAAA,MACA,gBAAgB,CAACxC,MAASrb,EAAM,iBAAiBqb,CAAI;AAAA,MACrD,MAAM;AAAA,QACJ,cAAc,MAAM5c,EAAK,eAAe;AAAA,QACxC,eAAe,MAAMA,EAAK,gBAAgB;AAAA,QAC1C,gBAAgB,CAACqf,MAAYrf,EAAK,mBAAmBqf,CAAO;AAAA,QAC5D,mBAAmB,CAAC9X,MAAQvH,EAAK,uBAAuBuH,CAAG;AAAA,QAC3D,YAAY,MAAMvH,EAAK,aAAa;AAAA,MAAA;AAAA,IACtC,CACD,GAIKsf,KAAqBld;AAAA,MACzB,MAAMoc,GAAW,QAAQb,EAAuB,MAAM;AAAA,IAAA,GAElD4B,KAAuBnd;AAAA,MAC3B,MAAMmc,GAAkB,SAASZ,EAAuB,MAAM,OAAO;AAAA,IAAA,GAGjE9K,KAASzQ,EAAS,MAAMwQ,GAAY,SAASrR,EAAM,iBAAiB,CAACkd,GAAY,KAAK,GACtFS,KAAc9c,EAAS,MAAMqc,GAAY,SAAS,CAACxO,EAAQ,SAAS,CAAC1O,EAAM,WAAW,GAEtFiR,KAAmBpQ;AAAA,MAAS,MAChCb,EAAM,WAAWK,EAAEL,EAAM,QAAQ,IAAIK,EAAE,qBAAqB;AAAA,IAAA,GAExD6Q,KAAqBrQ,EAAS,MAAMb,EAAM,cAAcK,EAAE,4BAA4B,CAAC,GACvF8Q,KAA6BtQ;AAAA,MACjC,MAAMb,EAAM,sBAAsBK,EAAE,oCAAoC;AAAA,IAAA,GAEpE+Q,KAA4BvQ;AAAA,MAChC,MACEb,EAAM,sBACLA,EAAM,eAAe,cAClBK,EAAE,mCAAmC,IACrCA,EAAE,2CAA2C;AAAA,IAAA,GAG/C4d,KAAuBpd;AAAA,MAC3B,MACE,CAACb,EAAM,YAAYA,EAAM,qBAAqB,CAACkd,GAAY,SAASR,GAAe,QAAQ;AAAA,IAAA,GAGzFwB,KAAuBrd,EAAkB,MAAe,CAAC,CAACb,EAAM,SAAS+a,EAAS,KAAK,GAGvF0C,KAAiB5c,EAA0B,MAAM;AACrD,YAAMiY,IAAuB,CAAA,GACvBC,IAAO,CAACC,MAAmC;AAC/C,mBAAWC,KAAKD;AACd,UAAIC,EAAE,YAAYA,EAAE,SAAS,SAAS,MACpCH,EAAI,KAAK1J,EAAM6J,EAAE,IAAI,CAAC,GACtBF,EAAKE,EAAE,QAAQ;AAAA,MAGrB;AACA,aAAAF,EAAK9Y,EAAW,MAAM,QAAQ,GACvB6Y;AAAA,IACT,CAAC,GAEKqF,IAActd;AAAA,MAClB,MACE4c,GAAe,MAAM,SAAS,KAC9BA,GAAe,MAAM,MAAM,CAACvK,MAAMiI,EAAqB,MAAM,IAAIjI,CAAC,CAAC;AAAA,IAAA,GAGjEkL,IAAmBvd;AAAA,MACvB,MAAM,CAACqc,GAAY,SAASO,GAAe,MAAM,SAAS;AAAA,IAAA,GAGtDY,IAAkB,MAAM;AAC5B,UAAIF,EAAY;AACd,mBAAWjL,KAAKuK,GAAe,MAAO,CAAAtC,EAAqB,MAAM,OAAOjI,CAAC;AAAA;AAEzE,mBAAWA,KAAKuK,GAAe,MAAO,CAAAtC,EAAqB,MAAM,IAAIjI,CAAC;AAAA,IAE1E,GAEMzB,KAAgB5Q;AAAA,MACpB,MACE,CAAC,EACCb,EAAM,SACLqO,EAAkC,UAClCA,EAAkC,gBAAgB,KACnD4P,GAAqB,SACrBG,EAAiB,SACjBlB,GAAY;AAAA,IAAA,GAMZoB,KAAoBnf,EAExB,EAAE,GACEof,KAAgBpf,EAAI,CAAC,GAErB0e,KAAmB,MAAM;AAC7B,iBAAWzE,KAAKkF,GAAkB;AAChC,YAAI;AACF,UAAAlF,EAAE,KAAA;AAAA,QACJ,QAAQ;AAAA,QAER;AAEF,MAAAkF,GAAkB,QAAQ,CAAA;AAAA,IAC5B,GASME,KAAYrf,EAAsB,IAAI,GAQtCsf,KAAa,CACjBC,GACAC,MACyE;AACzE,YAAM3N,IAAM,SAAS,iBAAiB0N,GAASC,CAAO;AACtD,UAAI,CAAC3N,EAAK,QAAO;AACjB,YAAM4N,IAAU5N,EAAI,QAAQ,mBAAmB;AAI/C,UAHI,CAAC4N,KAGD,CAACzO,GAAc,SAAS,CAACA,GAAc,MAAM,SAASyO,CAAO,EAAG,QAAO;AAC3E,YAAM9N,IAAM+N,GAASD,EAAQ,aAAa,SAAS,CAAC;AACpD,UAAI9N,MAAQ,KAAM,QAAO;AACzB,YAAMd,KAAK4B,GAAmB,MAAM,KAAK,CAAChD,OAAMA,GAAE,QAAQkC,CAAG;AAC7D,aAAKd,KACE,EAAE,IAAI4O,GAAS,UAAU5O,GAAA,IADhB;AAAA,IAElB,GAEM8O,KAAuB,CAACJ,GAAiBC,MAAoB;AACjE,UAAI,CAACH,GAAU,SAAS,CAACrO,GAAc,MAAO;AAC9C,YAAMa,IAAMyN,GAAWC,GAASC,CAAO;AACvC,UAAI,CAAC3N,GAAK;AACR,QAAAwN,GAAU,MAAM,cAAc;AAC9B;AAAA,MACF;AACA,YAAMO,IAAgB5O,GAAc,MAAM,sBAAA,GAIpC6O,MADQhO,EAAI,GAAG,cAAc,oBAAoB,KAC7BA,EAAI,IAAI,sBAAA;AAClC,MAAAwN,GAAU,MAAM,cAAclI,GAAmB;AAAA,QAC/C,SAAS,EAAE,GAAGoI,GAAS,GAAGC,EAAA;AAAA,QAC1B,YAAY;AAAA,UACV,KAAK3N,EAAI,SAAS;AAAA,UAClB,MAAMgO;AAAA,UACN,OAAOhO,EAAI,SAAS;AAAA,UACpB,WAAWA,EAAI,SAAS;AAAA,UACxB,cAAcA,EAAI,SAAS;AAAA,UAC3B,cAAcA,EAAI,SAAS;AAAA,QAAA;AAAA,QAE7B,WAAWwN,GAAU,MAAM;AAAA,QAC3B,oBAAoBA,GAAU,MAAM;AAAA,QACpC,WAAW5M,GAAmB;AAAA,QAC9B,UAAU5R,EAAM;AAAA,QAChB,UAAU2a;AAAA,QACV,eAAeoE,EAAc;AAAA,QAC7B,sBAAsBnE;AAAA,MAAA,CACvB;AAAA,IACH,GAEMqE,KAAgB,CAAC,MAAoB;AACzC,MAAAH,GAAqB,EAAE,SAAS,EAAE,OAAO;AAAA,IAC3C,GAEMI,KAAmB,CAACC,GAA6BjJ,MAA6B;AAElF,UAAI,CADOnH,EAAW,OAAOmH,GAAWiJ,EAAK,WAAWA,EAAK,KAAK,GACzD;AACP,QAAArE,EAAa,qCAAqC,GAClDyD,GAAc,SACdb,GAAS,MAAME,IAAe;AAC9B;AAAA,MACF;AACA,MAAArB,GAAUrG,CAAS,GAEfiJ,EAAK,aAAaA,EAAK,cAAc,QACvChE,EAAqB,MAAM,IAAIgE,EAAK,SAAS;AAAA,IAEjD,GAEMvB,KAAgB,MAAM;AAG1B,UAFAC,GAAA,GACI,CAACF,GAAY,SACb,CAACxN,GAAc,MAAO;AAC1B,YAAMiP,IAAS,MAAM,KAAKjP,GAAc,MAAM,iBAA8B,MAAMyH,EAAW,CAAC;AAC9F,iBAAWyH,KAASD,GAAQ;AAC1B,cAAME,IAAWC,GAAYF,GAAO,IAAI;AAAA,UACtC,OAAO,EAAE,MAAM,YAAY,MAAM,IAAM,KAAK,GAAA;AAAA,UAC5C,QAAQ,MAAMxH;AAAA,UACd,WAAW;AAAA,UACX,YAAY2H;AAAA,UACZ,aAAaC;AAAA,UACb,WAAWC;AAAA,UACX,gBAAgB;AAAA,UAChB,eAAe;AAAA,UACf,mBAAmB;AAAA,UACnB,SAAS,CAAC7T,MAAU;AAClB,kBAAM8T,IAAY9T,EAAM,MAClBxD,KAAKwW,GAASc,EAAU,aAAa,SAAS,CAAC;AACrD,gBAAItX,OAAO,KAAM;AACjB,kBAAMuX,KAAc7Q,EAAW,SAAS1G,EAAE,EAAE,MACtCqR,KAAekG,KAAc7Q,EAAW,sBAAsB6Q,EAAW,IAAI;AACnF,YAAApB,GAAU,QAAQ;AAAA,cAChB,WAAWnW;AAAA,cACX,oBAAoBqR;AAAA,cACpB,aAAa;AAAA,YAAA,GAEf,SAAS,iBAAiB,eAAeuF,IAAe,EAAE,SAAS,IAAM;AAAA,UAC3E;AAAA,UACA,QAAQ,CAACpT,MAAU;AAGjB,kBAAMgU,IAAQhU,EAA+C;AAC7D,gBAAIgU;AACF,kBAAI,aAAaA,KAAQ,aAAaA;AACpC,gBAAAf,GAAsBe,EAAoB,SAAUA,EAAoB,OAAO;AAAA,uBACtE,aAAaA,GAAM;AAC5B,sBAAMC,KAAMD;AACZ,gBAAIC,GAAI,QAAQ,SAAS,KACvBhB,GAAqBgB,GAAI,QAAQ,CAAC,EAAE,SAASA,GAAI,QAAQ,CAAC,EAAE,OAAO;AAAA,cAEvE;AAAA;AAGF,mBAAO;AAAA,UACT;AAAA,UACA,OAAO,MAAM;AACX,qBAAS,oBAAoB,eAAeb,EAAa;AACzD,kBAAMc,IAAQvB,GAAU;AAExB,gBADAA,GAAU,QAAQ,MACd,CAACuB,EAAO;AACZ,kBAAMZ,IAAOY,EAAM;AACnB,YAAIZ,MAAS,QACTA,EAAK,SAAS,aAClBD,GAAiBC,GAAMY,EAAM,SAAS;AAAA,UACxC;AAAA,QAAA,CACD;AACD,QAAAzB,GAAkB,MAAM,KAAKgB,CAAQ;AAAA,MACvC;AAAA,IACF,GAEMT,KAAW,CAACpP,MAA6C;AAC7D,UAAIA,MAAQ,QAAQA,MAAQ,GAAI,QAAO;AAIvC,YAAMwJ,IAAI+G,GAAYvQ,CAAG;AACzB,aAAO,OAAOwJ,CAAC,MAAMxJ,IAAMwJ,IAAIxJ;AAAA,IACjC;AAEA,IAAAtO;AAAA,MACE,MAAMwc,GAAY;AAAA,MAClB,MAAM;AACJ,QAAIA,GAAY,QAAOD,GAAS,MAAME,IAAe,IAChDC,GAAA;AAAA,MACP;AAAA,IAAA,GAGF1c;AAAA,MACE,MAAMod,GAAc;AAAA,MACpB,MAAM;AACJ,QAAIZ,GAAY,SAAOD,GAAS,MAAME,IAAe;AAAA,MACvD;AAAA,IAAA,GAIFzc;AAAA,MACE,MAAMyQ,GAAmB,MAAM,IAAI,CAAChD,MAAMA,EAAE,GAAG,EAAE,KAAK,GAAG;AAAA,MACzD,MAAM;AACJ,QAAI+O,GAAY,SAAOD,GAAS,MAAME,IAAe;AAAA,MACvD;AAAA,IAAA,GAGFxT,GAAU,MAAM;AACd,MAAIuT,GAAY,SAAOC,GAAA;AAAA,IACzB,CAAC,GACDqC,GAAgB,MAAM;AACpB,MAAApC,GAAA,GACA,SAAS,oBAAoB,eAAeoB,EAAa;AAAA,IAC3D,CAAC;AAYD,UAAMiB,KAAgBrf,EAA+B,MAAM;AACzD,YAAMkf,IAAQvB,GAAU;AACxB,UAAI,CAACuB,KAASA,EAAM,gBAAgB,QAAQ,CAAC5P,GAAc,MAAO,QAAO;AACzE,YAAMgP,IAAOY,EAAM;AAEnB,UAAIZ,EAAK,SAAS,UAAW,QAAO;AACpC,YAAMgB,IAAahQ,GAAc,MAAM;AAAA,QACrC,8BAA8B,IAAI,OAAO,OAAOgP,EAAK,MAAM,CAAC,CAAC;AAAA,MAAA;AAE/D,UAAI,CAACgB,EAAY,QAAO;AACxB,YAAMC,IAAQD,EAAW,cAA2B,oBAAoB,GAClEpB,IAAgB5O,GAAc,MAAM,sBAAA,GACpC6O,MAAWoB,KAASD,GAAY,sBAAA,GAEhCE,KAAWzF,KAAWuE,EAAK,QAAQxE,IACnC2F,KACJnB,EAAK,YAAY,QAAQH,GAAQ,MAAMD,EAAc,MAAMC,GAAQ,SAASD,EAAc,KACtFwB,KAAO,EAAE,KAAKD,IAAS,MAAMD,IAAU,OAAO,GAAA;AAEpD,UAAIG,KAAwC;AAC5C,UAAIrB,EAAK,gBAAgB,MAAM;AAC7B,cAAMsB,IAAetQ,GAAc,MAAM;AAAA,UACvC,8BAA8B,IAAI,OAAO,OAAOgP,EAAK,WAAW,CAAC,CAAC;AAAA,QAAA;AAEpE,YAAIsB,GAAc;AAEhB,gBAAMC,MADWD,EAAa,cAA2B,oBAAoB,KAC9CA,GAAc,sBAAA,GACvCE,KAAeD,GAAU,MAAM3B,EAAc,MAAM2B,GAAU,SAAS;AAC5E,UAAIC,KAAeL,OACjBE,KAAY;AAAA,YACV,KAAKG;AAAA,YACL,QAAQL,KAAUK;AAAA,YAClB,MAAMN;AAAA,UAAA;AAAA,QAGZ;AAAA,MACF;AAEA,aAAO,EAAE,MAAAE,IAAM,WAAAC,GAAA;AAAA,IACjB,CAAC,GAKK5N,KAAa,MAAM;AACvB,MAAKtB,GAAO,UACZV,GAAA,GACI5Q,EAAM,WAAS+O,EAAW,QAAA,GAC9BtQ,EAAK,OAAO,MAAS;AAAA,IACvB,GAEMoU,KAAqB,CAAC7C,MAA8B;AACxD,MAAKqB,GAAY,UACjBT,GAAA,GACI5Q,EAAM,WAAS+O,EAAW,SAASiB,EAAG,KAAK,QAAWA,EAAG,eAAe,GAC5EvR,EAAK,OAAO,EAAE,SAASuR,EAAG,KAAK,iBAAiBA,EAAG,iBAAiB;AAAA,IACtE,GAEM4Q,KAAkB,CAAC5Q,MAA8B;AACrD,MAAKqB,GAAY,SACZrB,EAAG,gBACRY,GAAA,GACAuK,EAAqB,MAAM,IAAInL,EAAG,GAAG,GACrCvR,EAAK,aAAauR,CAAE,GAGhBhQ,EAAM,WAAS+O,EAAW,SAASiB,EAAG,KAAK,QAAW,EAAI,GAC9DvR,EAAK,OAAO,EAAE,UAAUuR,EAAG,KAAK,iBAAiB,IAAM;AAAA,IACzD,GAEM8C,KAAc,CAAC9C,MAA8B;AACjD,UAAI,GAACqB,GAAY,SAAS6L,GAAY,QAEtC;AAAA,YAAI5M,GAAY,MAAM,IAAIN,EAAG,GAAG,GAAG;AACjC,UAAA+C,GAAa/C,CAAE;AACf;AAAA,QACF;AACA,QAAII,GAAa,SACfI,GAAUR,CAAE,GAEdvR,EAAK,QAAQuR,CAAE;AAAA;AAAA,IACjB,GAGM6Q,KAAiB,CAAC7Q,MAA8B;AACpD,UAAIhQ,EAAM,YAAYA,EAAM,QAAS;AACrC,YAAM8Q,IAAMd,EAAG,KACT8Q,IAAY3F,EAAqB,MAAM,IAAIrK,CAAG;AACpD,MAAIgQ,IAAW3F,EAAqB,MAAM,OAAOrK,CAAG,IAC/CqK,EAAqB,MAAM,IAAIrK,CAAG,GACvCrS,EAAK,eAAeuR,GAAI,CAAC8Q,CAAS;AAAA,IACpC,GAGMC,KAAiB,CAAC/Q,MAA8B;AACpD,UAAIhQ,EAAM,YAAYA,EAAM,QAAS;AACrC,YAAM8Q,IAAMd,EAAG,KACT8Q,IAAY1F,EAAmB,MAAM,IAAItK,CAAG;AAClD,MAAIgQ,IAAW1F,EAAmB,MAAM,OAAOtK,CAAG,IAC7CsK,EAAmB,MAAM,IAAItK,CAAG,GACrCrS,EAAK,eAAeuR,GAAI,CAAC8Q,CAAS;AAAA,IACpC,GAEM3N,KAAiB,CAACnD,MAClBhQ,EAAM,mBACNA,EAAM,YAAYA,EAAM,WACxBkd,GAAY,QAAc,KAC1B,GAAAlN,EAAG,WAAWA,EAAG,YACjB,CAAChQ,EAAM,YAAYA,EAAM,iBAIzBoT,KAAa,CAACpD,MAAuC;AACzD,UAAKmD,GAAenD,CAAE,GACtB;AAAA,YAAIA,EAAG,WAAWA,EAAG,UAAU;AAC7B,UAAA+C,GAAa/C,CAAE;AACf;AAAA,QACF;AACA,QAAIhQ,EAAM,YAAYqQ,GAAkB,WAAsBL,CAAE,OAC/CA,CAAE;AAAA;AAAA,IACrB,GAEM;AAAA,MACJ,cAAAqD;AAAA,MACA,gBAAAC;AAAA,MACA,aAAAC;AAAA,MACA,eAAeC;AAAA,MACf,uBAAAC;AAAA,MACA,sBAAAC;AAAA,IAAA,IACEC,GAA8C;AAAA,MAChD,iBAAiB,CAAClE,MAASzP,EAAM,kBAAkBA,EAAM,gBAAgByP,CAAG,IAAI;AAAA,MAChF,UAAU,CAACA,MAAQzP,EAAM,WAAWyP,CAAG;AAAA,MACvC,WAAW,CAACO,MAAO;AACjB,QAAAM,GAAY,MAAM,OAAON,EAAG,GAAG,GAC/BO,GAAiB,MAAM,OAAOP,EAAG,GAAG,GACpCoL,EAAmB,MAAM,OAAOpL,EAAG,GAAG,GACtCmL,EAAqB,MAAM,OAAOnL,EAAG,GAAG;AACxC,cAAMgR,IAAWhhB,EAAM,eAAe;AAGtC,QAAIkd,GAAY,UACV8D,IAAU5E,EAAuB,MAAM,IAAIpM,EAAG,GAAG,IAChDqM,GAAwB,MAAM,IAAIrM,EAAG,GAAG,IAK/CjB,EAAW,WAAWiB,EAAG,KAAK,EAAE,cAAcgR,GAAU,GACxDviB,EAAK,WAAWuR,CAAE;AAAA,MACpB;AAAA,MACA,sBAAsB,MAAMhQ,EAAM;AAAA,IAAA,CACnC,GAEK4T,KAAgB,OAAO5D,MAA8B;AACzD,MAAKqB,GAAY,SACjB,MAAMmC,GAAmBxD,CAAE;AAAA,IAC7B,GAEM6D,KAAc,OAAO7D,MAA8B;AACvD,MAAIhQ,EAAM,cAAY,MAAMA,EAAM,WAAWgQ,EAAG,GAAG,GACnDU,GAAWV,CAAE,GACbvR,EAAK,cAAcuR,CAAE;AAAA,IACvB,GAEM8D,KAAgB,CAAC9D,MAA8B;AACnD,MAAAS,GAAWT,CAAE;AAAA,IACf,GAEM+C,KAAe,CAAC/C,MAA8B;AAClD,MAAAW,GAAUX,CAAE,GACZvR,EAAK,SAASuR,CAAE;AAAA,IAClB,GAEMiR,KAAS,CAAC5Y,MAAsB;AACpC,MAAI0G,EAAW,OAAO1G,CAAE,QAAaA,CAAE;AAAA,IACzC,GACM6Y,KAAW,CAAC7Y,MAAsB;AACtC,MAAI0G,EAAW,SAAS1G,CAAE,QAAaA,CAAE;AAAA,IAC3C,GACM8Y,KAAU,CAAC9Y,MAAsB;AACrC,MAAI0G,EAAW,QAAQ1G,CAAE,QAAaA,CAAE;AAAA,IAC1C,GACM+Y,KAAa,CAAC/Y,MAAsB;AACxC,MAAI0G,EAAW,WAAW1G,CAAE,QAAaA,CAAE;AAAA,IAC7C,GACMgZ,KAAW,CAACrR,MAA8B;AAC9C,UAAI,CAACjB,EAAW,OAAOiB,EAAG,GAAG,GAAG;AAC9B,QAAA8K,EAAa,qCAAqC;AAClD;AAAA,MACF;AACA,MAAAyB,GAAUvM,EAAG,GAAG,GAChBvR,EAAK,UAAUuR,CAAE;AAAA,IACnB,GACMsR,KAAY,CAACtR,MAA8B;AAC/C,MAAKjB,EAAW,QAAQiB,EAAG,GAAG,MAC9BuM,GAAUvM,EAAG,GAAG,GAChBvR,EAAK,WAAWuR,CAAE;AAAA,IACpB,GAEM0C,KAAqB,CAACjD,MAC1BkD,GAAuBlD,GAAK,EAAE,cAAczP,EAAM,cAAc,GAK5DiY,KAAoB,CAACxI,GAAYqB,MACrCA,MAAQ,SAAY,OAAO/B,EAAW,SAASU,GAAKqB,GAAKR,GAAY,MAAM,IAAIQ,CAAG,CAAC,GAsB/EiD,yBAAmB,IAAA,GACnBC,KAAa,CAAClD,MAAsC;AACxD,UAAImD,IAAUF,GAAa,IAAIjD,CAAG;AAClC,aAAKmD,MACHA,IAAU;AAAA,QACR,MAAM,MAAM;AACV,gBAAMjE,IAAKuC,GAAOzB,CAAG;AACrB,UAAId,QAAgBA,CAAE;AAAA,QACxB;AAAA,QACA,MAAM,MAAM;AACV,gBAAMA,IAAKuC,GAAOzB,CAAG;AACrB,cAAId,EAAI,QAAO6D,GAAY7D,CAAE;AAAA,QAC/B;AAAA,QACA,QAAQ,MAAM;AACZ,gBAAMA,IAAKuC,GAAOzB,CAAG;AACrB,UAAId,QAAkBA,CAAE;AAAA,QAC1B;AAAA,QACA,OAAO,MAAM;AACX,gBAAMA,IAAKuC,GAAOzB,CAAG;AACrB,UAAId,QAAiBA,CAAE;AAAA,QACzB;AAAA,QACA,QAAQ,YAAY;AAClB,gBAAMA,IAAKuC,GAAOzB,CAAG;AACrB,UAAId,KAAI,MAAM4D,GAAc5D,CAAE;AAAA,QAChC;AAAA,QACA,UAAU,MAAM;AACd,gBAAMA,IAAKuC,GAAOzB,CAAG;AACrB,UAAId,QAAuBA,CAAE;AAAA,QAC/B;AAAA,QACA,UAAU,MAAM;AACd,gBAAMA,IAAKuC,GAAOzB,CAAG;AACrB,UAAId,QAAoBA,CAAE;AAAA,QAC5B;AAAA,QACA,cAAc,MAAM;AAClB,gBAAMA,IAAKuC,GAAOzB,CAAG;AACrB,UAAId,QAAmBA,CAAE;AAAA,QAC3B;AAAA,QACA,cAAc,MAAM;AAClB,gBAAMA,IAAKuC,GAAOzB,CAAG;AACrB,UAAId,QAAmBA,CAAE;AAAA,QAC3B;AAAA,QACA,QAAQ,MAAMiR,GAAOnQ,CAAG;AAAA,QACxB,UAAU,MAAMoQ,GAASpQ,CAAG;AAAA,QAC5B,SAAS,MAAMqQ,GAAQrQ,CAAG;AAAA,QAC1B,YAAY,MAAMsQ,GAAWtQ,CAAG;AAAA,QAChC,QAAQ,MAAM;AACZ,gBAAMd,IAAKuC,GAAOzB,CAAG;AACrB,UAAId,QAAaA,CAAE;AAAA,QACrB;AAAA,QACA,SAAS,MAAM;AACb,gBAAMA,IAAKuC,GAAOzB,CAAG;AACrB,UAAId,QAAcA,CAAE;AAAA,QACtB;AAAA,QACA,QAAQ,CAACzH,MAAgBwG,EAAW,WAAW+B,GAAKvI,CAAI;AAAA,MAAA,GAE1DwL,GAAa,IAAIjD,GAAKmD,CAAO,IAExBA;AAAA,IACT;AACA,IAAA9S;AAAA,MACE,MAAMyQ,GAAmB;AAAA,MACzB,CAACsC,MAAQ;AACP,YAAIH,GAAa,SAAS,EAAG;AAC7B,cAAMjC,IAAW,IAAI,IAAIoC,EAAI,IAAI,CAACtF,MAAMA,EAAE,GAAG,CAAC;AAC9C,mBAAWkC,KAAOiD,GAAa;AAC7B,UAAKjC,EAAS,IAAIhB,CAAG,KAAGiD,GAAa,OAAOjD,CAAG;AAAA,MAEnD;AAAA,IAAA;AAGF,UAAMqD,KAAiB,CAACnE,OAAwC;AAAA,MAC9D,MAAM,EAAE,GAAGA,GAAI,iBAAiBiI,GAAkBjI,EAAG,KAAcA,EAAG,GAAG,EAAA;AAAA,MACzE,KAAKA,EAAG;AAAA,MACR,OAAOA,EAAG;AAAA,MACV,KAAKA,EAAG;AAAA,MACR,OAAOA,EAAG;AAAA,MACV,QAAQA,EAAG;AAAA,MACX,WAAWA,EAAG;AAAA,MACd,eAAeA,EAAG;AAAA,MAClB,aAAaA,EAAG;AAAA,MAChB,iBAAiBA,EAAG;AAAA,MACpB,eAAeA,EAAG;AAAA,MAClB,cAAcA,EAAG;AAAA,MACjB,UAAUhQ,EAAM;AAAA,MAChB,UAAUA,EAAM;AAAA,MAChB,UAAUgQ,EAAG;AAAA,MACb,kBAAkBA,EAAG;AAAA,MACrB,SAASA,EAAG;AAAA,MACZ,OAAOA,EAAG;AAAA,MACV,SAASA,EAAG;AAAA,MACZ,OAAOA,EAAG;AAAA,MACV,aAAakN,GAAY;AAAA,MACzB,WAAW,CAAClN,EAAG;AAAA,MACf,aAAa,CAACA,EAAG;AAAA,MACjB,WAAWA,EAAG;AAAA,MACd,YAAYA,EAAG;AAAA,MACf,aAAaA,EAAG;AAAA,MAChB,OAAOtB,EAAQ;AAAA,MACf,gBAAgBQ,EAAc,UAAUc,EAAG,GAAG;AAAA,MAC9C,SAASgE,GAAWhE,EAAG,GAAG;AAAA,IAAA,IAGtBuR,KAAmB1gB,EAAS,OAAO;AAAA,MACvC,UAAUic,GAAS;AAAA,MACnB,mBAAmBkB,GAAqB;AAAA,MACxC,YAAYD,GAAmB;AAAA,MAC/B,OAAOhB,GAAW;AAAA,MAClB,SAAS;AAAA,QACP,OAAOM;AAAA,QACP,QAAQD;AAAA,MAAA;AAAA,IACV,EACA,GAEIoE,KAAyB3gB,EAAS,OAAO;AAAA,MAC7C,MAAMga,EAAK;AAAA,MACX,UAAU,CAAC8B,GAAgB;AAAA,MAC3B,mBAAmBK,GAAkB;AAAA,MACrC,SAAS;AAAA,QACP,kBAAAG;AAAA,QACA,iBAAiBC;AAAA,MAAA;AAAA,IACnB,EACA,GAEIqE,KAAmB5gB,EAAS,MAAM,IAAI,IAAI4c,GAAe,KAAK,CAAC,GAE/DlL,KAAS,CAACzB,MACdc,GAAmB,MAAM,KAAK,CAAChD,MAAMA,EAAE,QAAQkC,CAAG,GAE9C0B,KAAcC,GAAe;AAAA,MACjC,WAAW5R;AAAA,QAAS,MAClB+Q,GAAmB,MAAM,IAAI,CAAC5B,OAAQ;AAAA,UACpC,KAAKA,EAAG;AAAA,UACR,UAAUA,EAAG;AAAA,UACb,WAAWyR,GAAiB,MAAM,IAAIzR,EAAG,GAAG;AAAA,UAC5C,WAAW;AAAA,UACX,YAAY;AAAA,QAAA,EACZ;AAAA,MAAA;AAAA,MAEJ,SAAS;AAAA,MACT,eAAekN;AAAA,MACf,UAAUrc,EAAS,MAAM,CAACwQ,GAAY,KAAK;AAAA,MAC3C,WAAW,CAACP,MAAQR,GAAY,MAAM,IAAIQ,CAAG;AAAA,MAC7C,cAAc,CAACA,MAAQ;AACrB,cAAMd,IAAKuC,GAAOzB,CAAG;AACrB,QAAId,QAAgBA,CAAE;AAAA,MACxB;AAAA,MACA,cAAc,CAACc,MAAQ;AACrB,cAAMd,IAAKuC,GAAOzB,CAAG;AACrB,QAAId,QAAiBA,CAAE;AAAA,MACzB;AAAA,MACA,UAAU,CAACc,MAAQmQ,GAAOnQ,CAAG;AAAA,MAC7B,YAAY,CAACA,MAAQoQ,GAASpQ,CAAG;AAAA,MACjC,WAAW,CAACA,MAAQqQ,GAAQrQ,CAAG;AAAA,MAC/B,cAAc,CAACA,MAAQsQ,GAAWtQ,CAAG;AAAA,MACrC,UAAU,CAACA,MAAQ;AACjB,cAAMd,IAAKuC,GAAOzB,CAAG;AACrB,QAAId,QAAaA,CAAE;AAAA,MACrB;AAAA,MACA,WAAW,CAACc,MAAQ;AAClB,cAAMd,IAAKuC,GAAOzB,CAAG;AACrB,QAAId,QAAcA,CAAE;AAAA,MACtB;AAAA,MACA,kBAAkB,CAACc,MAAQ;AACzB,cAAMd,IAAKuC,GAAOzB,CAAG;AACrB,QAAId,QAAmBA,CAAE;AAAA,MAC3B;AAAA,MACA,iBAAiB,MAAMoN,GAAA;AAAA,IAAkB,CAC1C,GAEKsE,KAA2BviB,EAAa,EAAK,GAC7CwiB,KAAuBzF,GAAkD,IAAI,GAC7E0F,KAAwB/gB,EAIpB,MAAM;AACd,YAAMghB,IAASF,GAAqB;AACpC,UAAI,CAACE,EAAQ,QAAO;AACpB,YAAM/gB,IAAQiO,EAAW,SAAS8S,EAAO,GAAG,GACtCC,IAAWhhB,EAAM,QAAQ,YAAYb,EAAW,MAAM,UACtD8hB,IAAMD,EAAS,UAAU,CAAC1I,MAAMhK,EAAMgK,EAAE,IAAI,MAAMyI,EAAO,GAAG;AAClE,aAAO;AAAA,QACL,UAAU/gB,EAAM,SAASsO,EAAMtO,EAAM,OAAO,IAAI,IAAI;AAAA,QACpD,OAAOghB,EAAS;AAAA,QAChB,cAAcC;AAAA,MAAA;AAAA,IAElB,CAAC,GACKC,KAAsBnhB;AAAA,MAAiB,MAC3C8gB,GAAqB,QAAQjP,GAAmBiP,GAAqB,MAAM,GAAG,IAAI;AAAA,IAAA,GAE9EM,KAAqB,CAACjS,MAAuC;AACjE,MAAKhQ,EAAM,uBACX2hB,GAAqB,QAAQ3R,GAC7B0R,GAAyB,QAAQ;AAAA,IACnC,GACMQ,KAA0B,CAACC,MAAqB;AACpD,YAAMC,IAAMR,GAAsB,OAC5BC,IAASF,GAAqB;AAEpC,MADAA,GAAqB,QAAQ,MACzB,GAACS,KAAO,CAACP,MACTM,MAAaC,EAAI,gBACjBrT,EAAW,OAAO8S,EAAO,KAAKO,EAAI,UAAUD,CAAQ,KACtD5F,GAAUsF,EAAO,GAAG;AAAA,IAExB,GAEMQ,KAAyBljB,EAAa,EAAK,GAC3CmjB,KAAqBpG,GAAkD,IAAI,GAC3EqG,KAAmB,CAACvS,MAAuC;AAC/D,MAAKhQ,EAAM,qBACXsiB,GAAmB,QAAQtS,GAC3BqS,GAAuB,QAAQ;AAAA,IACjC,GACMG,KAAwB,CAACC,GAAgCC,MAA+B;AAC5F,YAAMb,IAASS,GAAmB;AAElC,UADAA,GAAmB,QAAQ,MACvB,CAACT,EAAQ;AAEb,UAAIc,IAAe;AACnB,MAAIF,MAAa,OACfE,IAAe1iB,EAAW,MAAM,SAAS,SAGzC0iB,IADc5T,EAAW,SAAS0T,CAAQ,EACrB,MAAM,UAAU,UAAU;AAEjD,YAAMG,IAAcF,MAAa,UAAU,IAAIC;AAC/C,MAAI5T,EAAW,OAAO8S,EAAO,KAAKY,GAAUG,CAAW,MACrDrG,GAAUsF,EAAO,GAAG,GAChBY,MAAa,QAAMtH,EAAqB,MAAM,IAAIsH,CAAQ;AAAA,IAElE,GAGMI,KAAahiB,EAAS,OAAO;AAAA,MACjC,aAAaqc,GAAY;AAAA,MACzB,UAAUld,EAAM;AAAA,MAChB,aAAaqR,GAAY;AAAA,MACzB,aAAasM,GAAY;AAAA,MACzB,kBAAkB3d,EAAM;AAAA,MACxB,gBAAgBA,EAAM;AAAA,MACtB,kBAAkBA,EAAM;AAAA,MACxB,oBAAoBA,EAAM;AAAA,MAC1B,oBAAoBA,EAAM;AAAA,MAC1B,oBAAoBA,EAAM;AAAA,MAC1B,kBAAkBA,EAAM;AAAA,MACxB,sBAAsB0R,GAAqB;AAAA,MAC3C,aAAa1R,EAAM;AAAA,MACnB,uBAAuBkb,EAAsB;AAAA,MAC7C,aAAA1I;AAAA,MACA,gBAAAW;AAAA,MAAA,oBACAT;AAAAA,MACA,mBAAmB,CAACjD,GAAYqB,MAAwBmH,GAAkBxI,GAAKqB,CAAG;AAAA,MAClF,gBAAAqD;AAAA,IAAA,EACA,GAGI2O,KAAe;AAAA,MACnB,YAAA1P;AAAA,MACA,gBAAAyN;AAAA,MACA,aAAA/N;AAAA,MACA,eAAAc;AAAA,MACA,cAAAb;AAAA,MACA,aAAAc;AAAA,MACA,eAAAC;AAAA,MACA,iBAAiBjB;AAAA,MACjB,iBAAA+N;AAAA,MACA,QAAQ,CAACvY,MAAsB4Y,GAAO5Y,CAAE;AAAA,MACxC,UAAU,CAACA,MAAsB6Y,GAAS7Y,CAAE;AAAA,MAC5C,SAAS,CAACA,MAAsB8Y,GAAQ9Y,CAAE;AAAA,MAC1C,YAAY,CAACA,MAAsB+Y,GAAW/Y,CAAE;AAAA,MAChD,QAAQgZ;AAAA,MACR,SAASC;AAAA,MACT,oBAAAW;AAAA,MACA,kBAAAM;AAAA,IAAA,GAGIQ,KAAgBliB,EAAS,MAAM+Q,GAAmB,MAAM,OAAO,CAAChD,MAAMA,EAAE,cAAc,IAAI,CAAC,GAQ3FoU,KAAa,CAACC,GAAgC1a,GAAasT,OAC/D9M,EAAW,QAAQxG,GAAM,EAAE,SAAS0a,KAAY,QAAW,iBAAApH,GAAiB,GAC5E6B,GAAS,MAAM3O,EAAW,QAAQ,GAC3B9O,EAAW,QAGdijB,KAAe,CAACD,GAAyB1a,GAAasT,OAC1DV,EAAqB,MAAM,IAAI8H,CAAQ,GAEvClU,EAAW,QAAQxG,GAAM,EAAE,UAAU0a,GAAU,cAAc,IAAM,iBAAApH,GAAiB,GACpF6B,GAAS,MAAM3O,EAAW,QAAQ,GAC3B9O,EAAW,QAGdkjB,KAAa,CAAC9a,MAAsB;AACxC,MAAA0G,EAAW,WAAW1G,CAAE,GACxBiI,GAAY,MAAM,OAAOjI,CAAE,GAC3BkI,GAAiB,MAAM,OAAOlI,CAAE,GAChC+S,EAAmB,MAAM,OAAO/S,CAAE,GAClC8S,EAAqB,MAAM,OAAO9S,CAAE,GACpCqV,GAAS,MAAM3O,EAAW,QAAQ;AAAA,IACpC,GAEMqU,KAAa,CACjB/a,GACAE,GACA8a,IAAqB,MACrBC,IAAqB,MACrBC,IAAwB,SACrB;AACH,MAAAxU,EAAW,WAAW1G,GAAIE,CAAI,GAC9BmV,GAAS,MAAM3O,EAAW,QAAQ;AAAA,IACpC,GAIMwC,KAAexC,EAAW,cAG1ByU,KAAoB,MAAM;AAC9B,MAAAzU,EAAW,OAAA,GACXoN,EAAU,4BAAY,IAAA,GACtBS,GAAA;AAAA,IACF;AAGA,IAAAxI;AAAA,MAAkB,MAChBpU,EAAM,sBACF,EAAE,OAAOA,EAAM,qBAAqB,OAAO+O,EAAW,WAAW,UACjE,CAAA;AAAA,IAAC;AAQP,UAAM0U,KAAsB,MAC1BnP,GAAqBvF,GAAY,CAAC+B,MAAQ;AACxC,UAAI6G,IAAW5I,EAAW,SAAS+B,CAAG,EAAE;AACxC,aAAO6G;AACL,QAAAwD,EAAqB,MAAM,IAAI/L,EAAMuI,EAAS,IAAI,CAAC,GACnDA,IAAW5I,EAAW,SAASK,EAAMuI,EAAS,IAAI,CAAC,EAAE;AAEvD,YAAM3H,IAAKjB,EAAW,UAAU,MAAM,KAAK,CAACH,MAAMA,EAAE,QAAQkC,CAAG;AAC/D,MAAId,QAAcA,CAAE;AAAA,IACtB,CAAC;AAKH,WAAAuE,GAA2B;AAAA,MACzB,WAAWxF,EAAW;AAAA,MACtB,iBAAiB/O,EAAM;AAAA,MACvB,kBAAkBA,EAAM,aAAa;AAAA,MACrC,QAAQyjB;AAAA,IAAA,CACT,GAED/jB,EAmBE;AAAA,MACA,GAAGqP;AAAA,MACH,aAAa0U;AAAA;AAAA,MAEb,YAAAT;AAAA,MACA,cAAAE;AAAA,MACA,YAAAC;AAAA,MACA,YAAAC;AAAA,MACA,oBAAA9G;AAAA,MACA,mBAAmBvN,EAAW;AAAA,MAC9B,cAAAwC;AAAA,MACA,mBAAAiS;AAAA;AAAA,MAEA,WAAWhI;AAAA,MACX,kBAAA2B;AAAA,MACA,mBAAAC;AAAA,MACA,cAAAC;AAAA,MACA,QAAQ,CAAChV,MAAsB8S,EAAqB,MAAM,IAAI9S,CAAE;AAAA,MAChE,UAAU,CAACA,MAAsB8S,EAAqB,MAAM,OAAO9S,CAAE;AAAA,MACrE,cAAc,CAACA,MAAsB;AACnC,QAAI8S,EAAqB,MAAM,IAAI9S,CAAE,IAAG8S,EAAqB,MAAM,OAAO9S,CAAE,IACvE8S,EAAqB,MAAM,IAAI9S,CAAE;AAAA,MACxC;AAAA,MACA,cAAc,CAACA,MAAsB+S,EAAmB,MAAM,IAAI/S,CAAE;AAAA,MACpE,gBAAgB,CAACA,MAAsB+S,EAAmB,MAAM,OAAO/S,CAAE;AAAA,IAAA,CAC1E,mBAIC7G,EA4VM,OAAA;AAAA,eA3VA;AAAA,MAAJ,KAAIgN;AAAA,MACJ,WAAM,wBAAsB;AAAA,sCACkBqM,EAAA,KAAI;AAAA;4CAAsDhb,EAAA;AAAA,4CAAoDA,EAAA;AAAA,yCAAiDgC,EAAA6M,CAAA;AAAA,gDAAuDiP,GAAA;AAAA,QAAA;AAAA;;MAUpQjc,EAgSM,OAhSND,IAgSM;AAAA,QA9RIgQ,GAAA,SADRlQ,EAAA,GAAAC,EA4HM,OA5HNG,IA4HM;AAAA,UAxHJ7B,EAuHOC,EAAA,QAAA,UAvHPwN,EAuHO,EArHJ,OAAO1N,EAAA,MAAA,GACA2hB,GAAA,KAAsB,GAHhC,MAuHO;AAAA,YAjHG3hB,EAAA,cADR2B,EAKK,MALLkC,IAKK9B,EADA/B,EAAA,KAAK,GAAA,CAAA;YAEV6B,EA2GM,OA3GNiC,IA2GM;AAAA,cA1GY9B,EAAAqb,EAAA,IAGdpd,EA6BOC,EAAA,QAAA,mBAAAsY,GAAAC,GA3BGiJ,GAAA,KAAgB,CAAA,GAF1B,MA6BO;AAAA,gBAzBLzf,EAKE4hB,IAAA;AAAA,kBAJC,4CAAyC1F,GAAA,OAAoB;AAAA,kBAC7D,uBAAqBA,GAAA;AAAA,kBACrB,iBAAeD,GAAA;AAAA,kBACf,OAAOlc,EAAAkb,EAAA;AAAA,gBAAA;gBAEVjb,EAOOC,GAAA;AAAA,kBANL,SAAQ;AAAA,kBACR,MAAK;AAAA,kBACJ,UAAUF,EAAAib,EAAA;AAAA,kBACV,SAAOjb,EAAAub,EAAA;AAAA,gBAAA;6BAER,MAAwC;AAAA,wBAArCvb,EAAAxB,CAAA,EAAC,+BAAA,CAAA,GAAA,CAAA;AAAA,kBAAA;;;gBAENyB,EAUOC,GAAA;AAAA,kBATL,OAAM;AAAA,kBACN,SAAQ;AAAA,kBACR,MAAK;AAAA,kBACL,gBAAa;AAAA,kBACZ,SAASF,EAAAib,EAAA;AAAA,kBACT,UAAUjb,EAAAib,EAAA,KAAQ,CAAKkB,GAAA;AAAA,kBACvB,SAAOnc,EAAAwb,EAAA;AAAA,gBAAA;6BAER,MAAuC;AAAA,wBAApCxb,EAAAxB,CAAA,EAAC,8BAAA,CAAA,GAAA,CAAA;AAAA,kBAAA;;;oCAIVmB,EAuEWW,IAAA,EAAA,KAAA,KAAA;AAAA,gBArEDic,EAAA,SAAoBF,GAAA,cAD5Bve,EAmBOoC,GAAA;AAAA;kBAjBL,SAAQ;AAAA,kBACR,OAAM;AAAA,kBACN,MAAA;AAAA,kBACA,MAAK;AAAA,kBACJ,SAAOsc;AAAA,gBAAA;6BAER,MAGE;AAAA,oBAHFvc,EAGE6L,GAAA;AAAA,sBAFC,MAAMwQ,EAAA,QAAW,+BAAA;AAAA,sBAClB,MAAK;AAAA,oBAAA;oBAEPrc,EAME8L,IAAA;AAAA,sBALA,WAAU;AAAA,sBACV,UAAS;AAAA,sBACR,MAA2BuQ,EAAA,QAActc,EAAAxB,CAAA,EAAC,6BAAA,IAAkCwB,EAAAxB,CAAA,EAAC,2BAAA;AAAA,oBAAA;;;sBAMrE+d,EAAA,cADbze,EAaOoC,GAAA;AAAA;kBAXL,SAAQ;AAAA,kBACR,OAAM;AAAA,kBACN,MAAK;AAAA,kBACJ,gBAAiCoc,EAAA,QAAW,+BAAA;AAAA,kBAG5C,SAAOE;AAAA,gBAAA;6BAER,MAEE;AAAA,wBADAF,EAAA,QAActc,EAAAxB,CAAA,EAAC,6BAAA,IAAkCwB,EAAAxB,CAAA,EAAC,2BAAA,CAAA,GAAA,CAAA;AAAA,kBAAA;;;gBAI9C4d,GAAA,QADRne,EAmCOC,EAAA,QAAA,kBAAAsY,GAAAC,GAhCGkJ,GAAA,KAAsB,CAAA,GAHhC,MAmCO;AAAA,kBA7BGtD,GAAA,cADRve,EAkBOoC,GAAA;AAAA;oBAhBL,SAAQ;AAAA,oBACR,OAAM;AAAA,oBACN,MAAA;AAAA,oBACA,MAAK;AAAA,oBACJ,WAAW4a,GAAA;AAAA,oBACX,SAAO9a,EAAAsb,EAAA;AAAA,kBAAA;+BAER,MAGE;AAAA,sBAHFrb,EAGE6L,GAAA;AAAA,wBAFA,MAAK;AAAA,wBACL,MAAK;AAAA,sBAAA;sBAEP7L,EAIE8L,IAAA;AAAA,wBAHA,WAAU;AAAA,wBACV,UAAS;AAAA,wBACR,MAAM/L,EAAAxB,CAAA,EAAC,yBAAA;AAAA,sBAAA;;;0DAGZV,EAUOoC,GAAA;AAAA;oBARL,SAAQ;AAAA,oBACR,OAAM;AAAA,oBACN,gBAAa;AAAA,oBACb,MAAK;AAAA,oBACJ,WAAW4a,GAAA;AAAA,oBACX,SAAO9a,EAAAsb,EAAA;AAAA,kBAAA;+BAER,MAAkC;AAAA,0BAA/Btb,EAAAxB,CAAA,EAAC,yBAAA,CAAA,GAAA,CAAA;AAAA,oBAAA;;;;;;;;QASRR,EAAA,WADR0B,EAAA,GAAAC,EASM,OATNoC,IASM;AAAA,UALJ9B,EAIE0S,IAAA;AAAA,YAHA,eAAA;AAAA,YACA,OAAM;AAAA,YACN,MAAK;AAAA,UAAA;cAKI3U,EAAA,SADb0B,KAAAC,EAYM,OAZNqC,IAYM;AAAA,UARJ/B,EAOS2S,IAAA;AAAA,YANP,MAAK;AAAA,YACL,SAAQ;AAAA,YACR,SAAQ;AAAA,YACR,QAAO;AAAA,UAAA;uBAEP,MAAW;AAAA,kBAAR5U,EAAA,KAAK,GAAA,CAAA;AAAA,YAAA;;;cAKCyS,GAAA,SADb/Q,KAAAC,EAiBM,OAjBNqM,IAiBM;AAAA,UAbJ/N,EAYOC,EAAA,QAAA,SAAA;AAAA,YAVJ,UAAUF,EAAA;AAAA,YACV,UAAUA,EAAA;AAAA,YACV,gBAAgB+S,GAAA;AAAA,UAAU,GAJ7B,MAYO;AAAA,YANL9Q,EAKE4S,IAAA;AAAA,cAJC,OAAOxD,GAAA;AAAA,cACP,aAAWD,GAAA;AAAA,cACX,WAASK,GAAA;AAAA,cACT,OAAKsB;AAAA,YAAA;;oBAKZpR,EA+FM,OAAA;AAAA,UA7FH,KAAK+c,GAAA;AAAA,mBACF;AAAA,UAAJ,KAAIpO;AAAA,UACJ,OAAK3N,GAAA,CAAC,8BAA4B,EAAA,wCACgBgc,GAAA,UAAS,MAAA,CAAA;AAAA,QAAA;UAE3D9c,EA8DM,OAAA;AAAA,YA7DH,WAAQkW,IAAW,mCAAA,CAAA;AAAA,YACpB,kBAAe;AAAA,UAAA;oBAEfpW,EAyDcW,IAAA,MAAAC,GAxDC2gB,GAAA,OAAa,CAAnB/S,YADTrQ,EAyDcmY,IAAA;AAAA,cAvDX,KAAK,OAAO9H,EAAG,GAAG;AAAA,cAClB,IAAAA;AAAA,cACA,cAAY4B,GAAA;AAAA,cACZ,cAAY4M,GAAA;AAAA,cACZ,SAASqE,GAAA;AAAA,cACT,WAAWC;AAAA,YAAA;cAED,MAAItK,EACb,CAGEC,MAJsB;AAAA,gBACxB3Y,EAGEC,EAAA,QAAA,QAHFwN,EAGE,EAAA,SAAA,GAAA,GADQkL,CAAS,CAAA;AAAA,cAAA;cAGV,gBAAYD,EACrB,CAGEC,MAJ8B;AAAA,gBAChC3Y,EAGEC,EAAA,QAAA,gBAHFwN,EAGE,EAAA,SAAA,GAAA,GADQkL,CAAS,CAAA;AAAA,cAAA;cAGV,iBAAaD,EACtB,CAGEC,MAJ+B;AAAA,gBACjC3Y,EAGEC,EAAA,QAAA,iBAHFwN,EAGE,EAAA,SAAA,GAAA,GADQkL,CAAS,CAAA;AAAA,cAAA;cAGV,eAAWD,EACpB,CAGEC,MAJ6B;AAAA,gBAC/B3Y,EAGEC,EAAA,QAAA,eAHFwN,EAGE,EAAA,SAAA,GAAA,GADQkL,CAAS,CAAA;AAAA,cAAA;cAGV,eAAWD,EACpB,CAGEC,MAJ6B;AAAA,gBAC/B3Y,EAGEC,EAAA,QAAA,eAHFwN,EAGE,EAAA,SAAA,GAAA,GADQkL,CAAS,CAAA;AAAA,cAAA;cAGV,gBAAYD,EACrB,CAGEC,MAJ8B;AAAA,gBAChC3Y,EAGEC,EAAA,QAAA,gBAHFwN,EAGE,EAAA,SAAA,GAAA,GADQkL,CAAS,CAAA;AAAA,cAAA;cAGV,eAAWD,EACpB,CAGEC,MAJ6B;AAAA,gBAC/B3Y,EAGEC,EAAA,QAAA,eAHFwN,EAGE,EAAA,SAAA,GAAA,GADQkL,CAAS,CAAA;AAAA,cAAA;cAGV,cAAUD,EACnB,CAGEC,MAJ4B;AAAA,gBAC9B3Y,EAGEC,EAAA,QAAA,cAHFwN,EAGE,EAAA,SAAA,GAAA,GADQkL,CAAS,CAAA;AAAA,cAAA;;;;UASTyH,GAAA,UAAa,aAA7B1e,EAoBWW,IAAA,EAAA,KAAA,KAAA;AAAA,YAlBD+d,GAAA,MAAc,cAAS,aAD/B1e,EAQE,OAAA;AAAA;cANA,OAAM;AAAA,cACL,OAAK2W,GAAA;AAAA,yBAA2B+H,GAAA,MAAc,UAAU,IAAI;AAAA,wBAA4BA,GAAA,MAAc,UAAU,GAAG;AAAA,2BAA+BA,GAAA,MAAc,UAAU,MAAM;AAAA,cAAA;;YAMnLxe,EASM,OAAA;AAAA,cARJ,OAAM;AAAA,cACL,OAAKyW,GAAA;AAAA,wBAA0B+H,GAAA,MAAc,KAAK,GAAG;AAAA,yBAA6BA,GAAA,MAAc,KAAK,IAAI;AAAA,0BAA8BA,GAAA,MAAc,KAAK,KAAK;AAAA,cAAA;;cAMhKxe,EAAoD,QAAA,EAA9C,OAAM,sCAAA,GAAqC,MAAA,EAAA;AAAA,YAAA;;;QAM/C4P,GAAA,SAAM,CAAKzR,EAAA,WAAO,CAAKA,EAAA,UAAUyS,GAAA,QADzCxS,EAmBOC,EAAA,QAAA,cAAA;AAAA,UAhBJ,UAAUF,EAAA;AAAA,UACV,UAAUA,EAAA;AAAA,UACV,kBAAkB+S,GAAA;AAAA,UAClB,gBAAgBA,GAAA;AAAA,QAAU,GAN7B,MAmBO;AAAA,UAXLlR,EAUS,UAAA;AAAA,YATP,MAAK;AAAA,YACL,OAAM;AAAA,YACL,SAAOkR;AAAA,UAAA;YAER9Q,EAGE6L,GAAA;AAAA,cAFA,MAAK;AAAA,cACL,MAAK;AAAA,YAAA;YAEPjM,EAAmC,gBAA1BuP,GAAA,KAAgB,GAAA,CAAA;AAAA,UAAA;;;MAK/BnP,EAME6hB,IAAA;AAAA,oBALSjC,GAAA;AAAA,sDAAAA,GAAwB,QAAApf;AAAA,QAChC,OAAOsf,GAAA,OAAuB,SAAK;AAAA,QACnC,iBAAeA,GAAA,OAAuB,gBAAY;AAAA,QAClD,cAAYI,GAAA;AAAA,QACZ,WAASE;AAAA,MAAA;MAGZpgB,EASE8hB,IAAA;AAAA,oBARSvB,GAAA;AAAA,sDAAAA,GAAsB,QAAA/f;AAAA,QAC9B,MAAMrC,EAAA;AAAA,QACN,cAAYqiB,GAAA,OAAoB,OAAG;AAAA,QACnC,aAAWzgB,EAAAwN,CAAA;AAAA,QACX,aAAWxP,EAAA;AAAA,QACX,iBAAe6S;AAAAA,QACf,2BAAyB7Q,EAAAkN,CAAA,EAAW;AAAA,QACpC,WAASyT;AAAA,MAAA;MAGZ1gB,EAUEyT,IAAA;AAAA,oBATS1T,EAAAwR,EAAA;AAAA,+DAAAA,GAAY,QAAA/Q,IAAA;AAAA,QACpB,OAAO6O,GAAA;AAAA,QACP,MAAMC,GAAA;AAAA,QACN,iBAAevP,EAAAxB,CAAA,EAAC,wBAAA;AAAA,QAChB,gBAAcwB,EAAAxB,CAAA,EAAC,sBAAA;AAAA,QACf,OAAOwB,EAAA0R,EAAA;AAAA,QACP,aAAW1R,EAAAyR,EAAA;AAAA,QACX,WAASzR,EAAA4R,EAAA;AAAA,QACT,UAAQ5R,EAAA6R,EAAA;AAAA,MAAA;MAGXhS,EAaM,OAbNoM,IAaMlM,EAPFC,MAAY,WAAW,UAAK,OAAsBA,EAAAxB,CAAA,EAAC,uCAAA;AAAA,WAAyDwB,EAAA2Q,EAAA,EAAY,aAAa,QAAK;AAAA,eAAyB3Q,EAAA2Q,EAAA,EAAY,WAAW;AAAA,MAAA;;;;;;;;;;;;;;;;;ACz4DlM,UAAM/T,IAAOC,GAIPga,IAAOxY,GAAoBL,GAAA,YAAmB,GAE9C,EAAE,GAAAQ,EAAA,IAAMC,GAAA,GAERujB,IAAS,MAAM;AACnB,MAAAplB,EAAK,WAAW,EAAK;AAAA,IACvB,GAEMqlB,IAAY,MAAM;AACtB,MAAArlB,EAAK,WAAW,EAAI;AAAA,IACtB;2BAIEkB,EA8CU2N,IAAA;AAAA,kBA7CCoL,EAAA;AAAA,oDAAAA,EAAI,QAAApW;AAAA,MACb,aAAU;AAAA,MACV,YAAA;AAAA,IAAA;iBAEA,MAwCQ;AAAA,QAxCRR,EAwCQ0L,IAAA,MAAA;AAAA,qBAvCN,MAEa;AAAA,YAFb1L,EAEawY,IAAA,MAAA;AAAA,yBADX,MAAwD;AAAA,gBAArDtY,EAAAJ,EAAA/B,EAAA,SAASgC,EAAAxB,CAAA,EAAC,sCAAA,CAAA,GAAA,CAAA;AAAA,cAAA;;;YAEfyB,EAmBYyY,IAAA,MAAA;AAAA,yBAlBV,MAEW;AAAA,gBAFK1a,EAAA,aAAhB2B,EAEWW,IAAA,EAAA,KAAA,KAAA;AAAA,sBADNtC,EAAA,IAAI,GAAA,CAAA;AAAA,gBAAA,UAEYA,EAAA,YAAY,eAAjC2B,EAWWW,IAAA,EAAA,KAAA,KAAA;AAAA,kBAVNH,EAAAJ,EAAAC,EAAAxB,CAAA,qDAAoD,KACvD,CAAA;AAAA,kBAAAqB,EAOK,MAPLD,IAOK;AAAA,qBANHF,EAAA,EAAA,GAAAC,EAKKW,IAAA,MAAAC,GAJkBvC,EAAA,aAAW,CAAxBkkB,GAAOlc,OADjBtG,EAAA,GAAAC,EAKK,MAAA,EAHF,KAAKqG,EAAA,KAEHkc,CAAK,GAAA,CAAA;;kBAEP/hB,EAAA,QACFH,EAAAxB,CAAA,EAAC,8CAAA,CAAA,GAAA,CAAA;AAAA,gBAAA,gBAENmB,EAEWW,IAAA,EAAA,KAAA,KAAA;AAAA,sBADNN,EAAAxB,CAAA,EAAC,qCAAA,CAAA,GAAA,CAAA;AAAA,gBAAA;;;;YAGRyB,EAee4Y,IAAA,MAAA;AAAA,yBAdb,MAAW;AAAA,gBAAX5Y,EAAWqM,EAAA;AAAA,gBACXrM,EAKOC,GAAA;AAAA,kBAJL,SAAQ;AAAA,kBACP,SAAO8hB;AAAA,gBAAA;6BAER,MAA2D;AAAA,oBAAxD7hB,EAAAJ,EAAA/B,EAAA,aAAagC,EAAAxB,CAAA,EAAC,qCAAA,CAAA,GAAA,CAAA;AAAA,kBAAA;;;gBAEnByB,EAMOC,GAAA;AAAA,kBALL,OAAM;AAAA,kBACN,SAAQ;AAAA,kBACP,SAAO+hB;AAAA,gBAAA;6BAER,MAAiE;AAAA,oBAA9D9hB,EAAAJ,EAAA/B,EAAA,gBAAgBgC,EAAAxB,CAAA,EAAC,wCAAA,CAAA,GAAA,CAAA;AAAA,kBAAA;;;;;;;;;;;;;qECSxB2jB,KAAqB,KAErBC,KAAiB,CAACC,MAClBA,KAAU,OAAoC,KAC9C,OAAOA,KAAU,YAAkBA,IACnCA,aAAiB,MAAYA,EAAM,OAAO,IAC1C,MAAM,QAAQA,CAAK,IAAUA,EAAM,SAAS,IACzC,EAAQA,GAGXC,KAAc,CAACvV,GAAuCwV,MACtDxV,MAAM,SAAkBwV,IACxB,OAAOxV,KAAM,YAAkBA,IAC5BA,EAAE;AAGJ,SAASyV,GACdtjB,GAC2B;AAG3B,QAAMujB,IAAkBC,GAAA;AAIxB,MAAIxjB,EAAQ,aAAa;AACvB,UAAMyjB,IAAczjB,EAAQ,aACtBsH,2BAAY,qBAAqB,GACjCoc,IAAa5jB,EAAqC,MAAM;AAC5D,YAAM6jB,IAAWF,EAAA;AACjB,aAAO,MAAM,QAAQE,CAAQ,IAAIA,IAAW,CAACA,CAAQ;AAAA,IACvD,CAAC;AACD,IAAAJ,EAAgB,SAASjc,GAAIoc,CAAU;AAAA,EACzC;AAEA,QAAME,IAAoB9jB;AAAA,IACxB,MACEE,EAAQ,QAAQ,KAAK,CAACqY,MAAM6K,GAAe7K,EAAE,KAAK,CAAC,KACnDkL,EAAgB,YAAY,MAAM,SAAS;AAAA,EAAA,GAGzCM,IAAazlB,EAAa,EAAK;AACrC,MAAI0lB,IAAuD,MACvDC,IAAmB,IACnBC,IAAyD;AAE7D,QAAMC,IAAwB,MAAM;AAClC,IAAID,MAAqB,SACvB,aAAaA,CAAgB,GAC7BA,IAAmB;AAAA,EAEvB,GAEME,IAAa,MACbH,KACFA,IAAmB,IACnBE,EAAA,GACO,QAAQ,QAAQ,EAAI,KAEtB,IAAI,QAAQ,CAACE,MAAY;AAC9B,IAAAL,IAAkBK,GAClBN,EAAW,QAAQ;AAAA,EACrB,CAAC,GAGGO,IAAgB,CAACC,MAAqB;AAC1C,IAAAR,EAAW,QAAQ,IACfC,MACFA,EAAgBO,CAAO,GACvBP,IAAkB;AAAA,EAEtB,GAEMQ,IAAc,MAAM;AACxB,IAAAP,IAAmB,IAGnBE,EAAA,GACAD,IAAmB,WAAW,MAAM;AAClC,MAAAD,IAAmB,IACnBC,IAAmB;AAAA,IACrB,GAAGf,EAAkB;AAAA,EACvB,GAEMsB,IAAgB,MAAM;AAC1B,IAAAR,IAAmB,IACnBE,EAAA;AAAA,EACF;AAIA,MAAIb,GAAYpjB,EAAQ,YAAY,EAAI,KAAKwkB;AAC3C,QAAI;AACF,MAAAC,GAAmB,YACZb,EAAkB,QACP,MAAMM,EAAA,IADe,EAGtC;AAAA,IACH,QAAQ;AAAA,IAER;AAKF,MAAId,GAAYpjB,EAAQ,mBAAmB,EAAI,GAAG;AAChD,UAAM0kB,IAAiB,CAAC/Z,MAAyB;AAC/C,MAAKiZ,EAAkB,UACvBjZ,EAAE,eAAA,GACFA,EAAE,cAAc;AAAA,IAClB;AACA,IAAI,OAAO,SAAW,QACpB,OAAO,iBAAiB,gBAAgB+Z,CAAc,GACtDxF,GAAgB,MAAM;AACpB,aAAO,oBAAoB,gBAAgBwF,CAAc;AAAA,IAC3D,CAAC;AAAA,EAEL;AAKA,MAAI1kB,EAAQ,kBAAkB;AAC5B,UAAM2kB,IAAc3kB,EAAQ;AAC5B,QAAI4kB,IAAe;AACnB,IAAAxkB,GAAMukB,GAAa,OAAOxR,GAAKkD,MAAS;AACtC,UAAIuO,GAAc;AAChB,QAAAA,IAAe;AACf;AAAA,MACF;AACA,MAAIvO,MAAS,MAAQlD,MAAQ,MAASyQ,EAAkB,UAEtDgB,IAAe,IACfD,EAAY,QAAQ,IACJ,MAAMT,EAAA,MAEpBU,IAAe,IACfD,EAAY,QAAQ;AAAA,IAG1B,CAAC;AAAA,EACH;AAEA,SAAIH,QACFtF,GAAgB+E,CAAqB,GAGhC;AAAA,IACL,mBAAAL;AAAA,IACA,aAAaL,EAAgB;AAAA,IAC7B,YAAAM;AAAA,IACA,eAAAO;AAAA,IACA,aAAAE;AAAA,IACA,eAAAC;AAAA,EAAA;AAEJ;ACpOO,SAASM,GACdC,GACAC,GACyC;AACzC,SAAO,IAAIvP,MAAqC;AAC9C,IAAAsP,EAAM,YAAA;AACN,QAAIE;AACJ,QAAI;AACF,MAAAA,IAASD,EAAS,GAAGvP,CAAI;AAAA,IAC3B,SAASvQ,GAAK;AAEZ,YAAA6f,EAAM,cAAA,GACA7f;AAAA,IACR;AAEA,WAAI+f,aAAkB,UACZA,EAA+B,MAAM,CAAC/f,MAAQ;AACpD,YAAA6f,EAAM,cAAA,GACA7f;AAAA,IACR,CAAC,IAEI+f;AAAA,EACT;AACF;ACfO,SAASC,GACdC,GACAllB,IAAgC,IACV;AACtB,QAAMmlB,IAAWnlB,EAAQ,YAAY,MAC/BolB,IAAgBplB,EAAQ,iBAAiB,YACzCqlB,IAAqBrlB,EAAQ,sBAAsB,GACnDslB,IAAwBtlB,EAAQ,mBAAmB;AAMzD,EAAIslB,KAAyBH,MAAaC,KACxC,QAAQ;AAAA,IACN,gDAAgDD,CAAQ;AAAA,EAAA;AAW5D,QAAMvW,wBAA0B,IAAA,GAC1BC,IAAgB,CAAChF,MAAuC;AAC5D,UAAMiF,wBAAW,IAAA,GACXC,wBAAiB,IAAA;AACvB,QAAIC,IAAU;AACd,eAAWC,KAAMpF,GAAO;AACtB,UAAIoF,EAAG,QAAQ,UAAaA,EAAG,QAAQ,MAAM;AAC3C,QAAAD;AACA;AAAA,MACF;AACA,MAAIF,EAAK,IAAIG,EAAG,GAAG,OAAc,IAAI,OAAOA,EAAG,GAAG,CAAC,GACnDH,EAAK,IAAIG,EAAG,GAAG;AAAA,IACjB;AACA,QAAID,MAAY,KAAKD,EAAW,SAAS,EAAG;AAC5C,UAAMG,IAAY,GAAGF,CAAO,IAAI,CAAC,GAAGD,CAAU,EAAE,KAAA,EAAO,KAAK,GAAG,CAAC;AAChE,IAAIH,EAAoB,IAAIM,CAAS,MACrCN,EAAoB,IAAIM,CAAS,GAC7BF,IAAU,KACZ,QAAQ;AAAA,MACN,iBAAiBA,CAAO,mDAAmDmW,CAAQ;AAAA,IAAA,GAKnFpW,EAAW,OAAO,KACpB,QAAQ;AAAA,MACN,gDAAgDoW,CAAQ,OAAO,CAAC,GAAGpW,CAAU,EAAE,KAAK,IAAI,CAAC;AAAA,IAAA;AAAA,EAI/F,GAEMN,IAAY3O,EAAgC,MAAM;AACtD,UAAM+J,IAAQqb,EAAM,MAAM,IAAI,CAACxW,GAAKC,OAAW;AAAA,MAC7C,KAAKD,EAAIyW,CAAQ;AAAA,MACjB,OAAAxW;AAAA,MACA,KAAAD;AAAA,MACA,UAAUA,EAAI0W,CAAa;AAAA,IAAA,EAC3B;AACF,WAAAvW,EAAchF,CAAK,GACZA;AAAA,EACT,CAAC,GAEK0b,IAAuB,CAAC1b,MAC5B2b,GAAkB3b,GAAO,EAAE,eAAAub,GAAe,oBAAAC,GAAoB,GAE1DI,IAAW,CAACC,MAA0B;AAC1C,UAAMV,IAASM,IAAwBC,EAAqBG,CAAG,IAAIA;AACnE,WAAAR,EAAM,QAAQF,GACPA;AAAA,EACT,GAEMW,IAAS,CAACxC,MACdA,MAAU,QAAQ,OAAOA,KAAU,UAE/ByC,IAAoB,CAAC/b,GAAgBkG,MACzClG,EAAM,UAAU,CAACgc,MAAMA,EAAEV,CAAQ,MAAMpV,CAAG,GAEtC+V,IAAe,CAACjc,GAAgBkc,MAA4C;AAChF,UAAMhW,IAAM4V,EAAOI,CAAQ,IAAKA,EAASZ,CAAQ,IAAsBY;AACvE,WAAOH,EAAkB/b,GAAOkG,CAAG;AAAA,EACrC,GAEMiW,IAAqB,CAACnc,GAAgBoc,MAAgC;AAC1E,QAAI,CAACA,EAAM,QAAOpc,EAAM;AACxB,QAAIoc,EAAK,YAAY,QAAW;AAC9B,YAAMjF,IAAM4E,EAAkB/b,GAAOoc,EAAK,OAAO;AACjD,aAAOjF,MAAQ,KAAKnX,EAAM,SAASmX,IAAM;AAAA,IAC3C;AACA,WAAIiF,EAAK,eAAe,SAClBA,EAAK,aAAa,IAAUpc,EAAM,SAC/B,KAAK,IAAIoc,EAAK,aAAa,GAAGpc,EAAM,MAAM,IAE/Coc,EAAK,UAAU,SACV,KAAK,IAAI,GAAG,KAAK,IAAIA,EAAK,OAAOpc,EAAM,MAAM,CAAC,IAEhDA,EAAM;AAAA,EACf;AAoCA,SAAO;AAAA,IACL,WAAA4E;AAAA,IACA,SApCc,CAACjH,GAAa0e,MAAyC;AACrE,YAAMR,IAAM,CAAC,GAAGR,EAAM,KAAK,GACrBiB,IAAcH,EAAmBN,GAAKQ,CAAY;AACxD,aAAAR,EAAI,OAAOS,GAAa,GAAG3e,CAAI,GACxBie,EAASC,CAAG;AAAA,IACrB;AAAA,IAgCE,YA9BiB,CAACK,MAA6C;AAC/D,YAAM/E,IAAM8E,EAAaZ,EAAM,OAAOa,CAAQ;AAC9C,UAAI/E,MAAQ,GAAI,QAAOkE,EAAM;AAC7B,YAAMQ,IAAM,CAAC,GAAGR,EAAM,KAAK;AAC3B,aAAAQ,EAAI,OAAO1E,GAAK,CAAC,GACVyE,EAASC,CAAG;AAAA,IACrB;AAAA,IAyBE,YAvBiB,CAACK,GAAiCve,MAAyB;AAC5E,YAAMwZ,IAAM8E,EAAaZ,EAAM,OAAOa,CAAQ;AAC9C,UAAI/E,MAAQ,GAAI,QAAOkE,EAAM;AAC7B,YAAMQ,IAAM,CAAC,GAAGR,EAAM,KAAK;AAC3B,aAAAQ,EAAI1E,CAAG,IAAIxZ,GACJie,EAASC,CAAG;AAAA,IACrB;AAAA,IAkBE,UAhBe,CAACU,GAAmBC,MAA6B;AAChE,YAAMC,IAAMpB,EAAM,MAAM;AAGxB,UAFIkB,MAAcC,KACdD,IAAY,KAAKA,KAAaE,KAC9BD,IAAU,KAAKA,KAAWC,UAAYpB,EAAM;AAChD,YAAMQ,IAAM,CAAC,GAAGR,EAAM,KAAK,GACrB,CAACqB,CAAE,IAAIb,EAAI,OAAOU,GAAW,CAAC;AACpC,aAAAV,EAAI,OAAOW,GAAS,GAAGE,CAAE,GAClBd,EAASC,CAAG;AAAA,IACrB;AAAA,IAQE,sBAAAH;AAAA,EAAA;AAEJ;ACpIO,SAASiB,KAAgD;AAC9D,QAAMC,IAAwDroB,EAAI,oBAAI,KAAK,GAErEsoB,wBAAY,IAAA,GAEZC,IAAe,CAAClO,MACpBgO,EAAS,MAAM,IAAIhO,CAAS,KAAKiO,GAE7BE,IAAe,CAACnO,GAA0BoO,MAA4B;AAC1E,IAAIA,EAAI,SAAS,IACfJ,EAAS,MAAM,OAAOhO,CAAS,IAE/BgO,EAAS,MAAM,IAAIhO,GAAWoO,CAAG,GAKnCJ,EAAS,QAAQ,IAAI,IAAIA,EAAS,KAAK;AAAA,EACzC,GAEMK,IAAShnB,EAA6B,MAAM;AAChD,UAAMiY,wBAAU,IAAA;AAChB,eAAW,CAACU,GAAWoO,CAAG,KAAKJ,EAAS,MAAM;AAC5C,iBAAWM,KAAYF;AACrB,QAAA9O,EAAI,IAAI,GAAG,OAAOU,CAAS,CAAC,IAAI,OAAOsO,CAAQ,CAAC,EAAE;AAGtD,WAAOhP;AAAA,EACT,CAAC,GAEKiP,IAAQlnB,EAAiB,MAAMgnB,EAAO,MAAM,IAAI;AAEtD,SAAO,EAAE,cAAAH,GAAc,cAAAC,GAAc,QAAAE,GAAQ,OAAAE,EAAA;AAC/C;"}
|