{"version":3,"file":"adf-core.mjs","sources":["../../../../lib/core/src/lib/about/about-extension-list/about-extension-list.component.ts","../../../../lib/core/src/lib/about/about-extension-list/about-extension-list.component.html","../../../../lib/core/src/lib/about/about-license-list/about-license-list.component.ts","../../../../lib/core/src/lib/about/about-license-list/about-license-list.component.html","../../../../lib/core/src/lib/about/about-module-list/module-list.component.ts","../../../../lib/core/src/lib/about/about-module-list/module-list.component.html","../../../../lib/core/src/lib/about/about-package/package-list.component.ts","../../../../lib/core/src/lib/about/about-package/package-list.component.html","../../../../lib/core/src/lib/common/utils/object-utils.ts","../../../../lib/core/src/lib/app-config/app-config.service.ts","../../../../lib/core/src/lib/about/about-server-settings/about-server-settings.component.ts","../../../../lib/core/src/lib/about/about-server-settings/about-server-settings.component.html","../../../../lib/core/src/lib/about/about-status-list/about-status-list.component.ts","../../../../lib/core/src/lib/about/about-status-list/about-status-list.component.html","../../../../lib/core/src/lib/about/about-panel.directive.ts","../../../../lib/core/src/lib/about/about.component.ts","../../../../lib/core/src/lib/about/about.component.html","../../../../lib/core/src/lib/common/utils/file-utils.ts","../../../../lib/core/src/lib/common/utils/moment-date-formats.model.ts","../../../../lib/core/src/lib/common/services/storage.service.ts","../../../../lib/core/src/lib/common/models/default-languages.model.ts","../../../../lib/core/src/lib/common/services/user-preferences.service.ts","../../../../lib/core/src/lib/common/utils/moment-date-adapter.ts","../../../../lib/core/src/lib/common/utils/string-utils.ts","../../../../lib/core/src/lib/common/utils/date-fns-utils.ts","../../../../lib/core/src/lib/common/utils/date-fns-adapter.ts","../../../../lib/core/src/lib/common/utils/datetime-fns-adapter.ts","../../../../lib/core/src/lib/common/utils/public-api.ts","../../../../lib/core/src/lib/common/utils/index.ts","../../../../lib/core/src/lib/about/about-repository-info/about-repository-info.component.ts","../../../../lib/core/src/lib/about/about-repository-info/about-repository-info.component.html","../../../../lib/core/src/lib/about/about-repository-info/repository-info.interface.ts","../../../../lib/core/src/lib/about/about.module.ts","../../../../lib/core/src/lib/about/public-api.ts","../../../../lib/core/src/lib/about/index.ts","../../../../lib/core/src/lib/avatar/avatar.component.ts","../../../../lib/core/src/lib/avatar/avatar.component.html","../../../../lib/core/src/lib/viewer/services/view-util.service.ts","../../../../lib/core/src/lib/app-config/app-config.pipe.ts","../../../../lib/core/src/lib/app-config/app-config-storage-prefix.factory.ts","../../../../lib/core/src/lib/app-config/app-config.loader.ts","../../../../lib/core/src/lib/common/services/cookie.service.ts","../../../../lib/core/src/lib/common/models/log-levels.model.ts","../../../../lib/core/src/lib/common/services/log.service.ts","../../../../lib/core/src/lib/common/services/language-item.interface.ts","../../../../lib/core/src/lib/common/services/dynamic-component-mapper.service.ts","../../../../lib/core/src/lib/common/services/highlight-transform.service.ts","../../../../lib/core/src/lib/translation/translation.service.ts","../../../../lib/core/src/lib/common/services/page-title.service.ts","../../../../lib/core/src/lib/common/services/thumbnail.service.ts","../../../../lib/core/src/lib/common/services/sort-by-category.service.ts","../../../../lib/core/src/lib/common/services/download.service.ts","../../../../lib/core/src/lib/common/services/url.service.ts","../../../../lib/core/src/lib/common/interface/search-component.interface.ts","../../../../lib/core/src/lib/common/mock/app-config.service.mock.ts","../../../../lib/core/src/lib/common/index.ts","../../../../lib/core/src/lib/app-config/provide-app-config.ts","../../../../lib/core/src/lib/app-config/public-api.ts","../../../../lib/core/src/lib/app-config/index.ts","../../../../lib/core/src/lib/toolbar/toolbar-divider.component.ts","../../../../lib/core/src/lib/toolbar/toolbar-title.component.ts","../../../../lib/core/src/lib/toolbar/toolbar.component.ts","../../../../lib/core/src/lib/toolbar/toolbar.component.html","../../../../lib/core/src/lib/toolbar/toolbar.module.ts","../../../../lib/core/src/lib/toolbar/public-api.ts","../../../../lib/core/src/lib/toolbar/index.ts","../../../../lib/core/src/lib/icon/icon-alias-map.token.ts","../../../../lib/core/src/lib/icon/icon.directive.ts","../../../../lib/core/src/lib/icon/icon.module.ts","../../../../lib/core/src/lib/viewer/components/img-viewer/img-viewer.component.ts","../../../../lib/core/src/lib/viewer/components/img-viewer/img-viewer.component.html","../../../../lib/core/src/lib/viewer/components/media-player/media-player.component.ts","../../../../lib/core/src/lib/viewer/components/media-player/media-player.component.html","../../../../lib/core/src/lib/viewer/components/pdf-viewer-password-dialog/pdf-viewer-password-dialog.ts","../../../../lib/core/src/lib/viewer/components/pdf-viewer-password-dialog/pdf-viewer-password-dialog.html","../../../../lib/core/src/lib/viewer/services/rendering-queue.services.ts","../../../../lib/core/src/lib/viewer/components/pdf-viewer-thumb/pdf-viewer-thumb.component.ts","../../../../lib/core/src/lib/viewer/components/pdf-viewer-thumb/pdf-viewer-thumb.component.html","../../../../lib/core/src/lib/viewer/components/pdf-viewer-thumbnails/pdf-viewer-thumbnails.component.ts","../../../../lib/core/src/lib/viewer/components/pdf-viewer-thumbnails/pdf-viewer-thumbnails.component.html","../../../../lib/core/src/lib/viewer/components/pdf-viewer/pdf-viewer.component.ts","../../../../lib/core/src/lib/viewer/components/pdf-viewer/pdf-viewer.component.html","../../../../lib/core/src/lib/viewer/components/txt-viewer/txt-viewer.component.ts","../../../../lib/core/src/lib/viewer/components/txt-viewer/txt-viewer.component.html","../../../../lib/core/src/lib/viewer/components/unknown-format/unknown-format.component.ts","../../../../lib/core/src/lib/viewer/components/unknown-format/unknown-format.component.html","../../../../lib/core/src/lib/viewer/components/viewer-more-actions.component.ts","../../../../lib/core/src/lib/viewer/components/viewer-open-with.component.ts","../../../../lib/core/src/lib/viewer/components/viewer-sidebar.component.ts","../../../../lib/core/src/lib/viewer/components/viewer-toolbar.component.ts","../../../../lib/core/src/lib/viewer/components/viewer-toolbar-actions.component.ts","../../../../lib/core/src/lib/viewer/components/viewer-toolbar-custom-actions.component.ts","../../../../lib/core/src/lib/viewer/components/viewer-render/viewer-render.component.ts","../../../../lib/core/src/lib/viewer/components/viewer-render/viewer-render.component.html","../../../../lib/core/src/lib/viewer/models/download-prompt.actions.ts","../../../../lib/core/src/lib/viewer/models/viewer.model.ts","../../../../lib/core/src/lib/viewer/components/download-prompt-dialog/download-prompt-dialog.component.ts","../../../../lib/core/src/lib/viewer/components/download-prompt-dialog/download-prompt-dialog.component.html","../../../../lib/core/src/lib/viewer/components/viewer.component.ts","../../../../lib/core/src/lib/viewer/components/viewer.component.html","../../../../lib/core/src/lib/viewer/directives/viewer-extension.directive.ts","../../../../lib/core/src/lib/viewer/viewer.module.ts","../../../../lib/core/src/lib/viewer/public-api.ts","../../../../lib/core/src/lib/viewer/index.ts","../../../../lib/core/src/lib/header/navbar/navbar-item.component.ts","../../../../lib/core/src/lib/header/navbar/navbar-item.component.html","../../../../lib/core/src/lib/header/navbar/navbar.component.ts","../../../../lib/core/src/lib/header/navbar/navbar.component.html","../../../../lib/core/src/lib/header/header.component.ts","../../../../lib/core/src/lib/header/header.component.html","../../../../lib/core/src/lib/header/public-api.ts","../../../../lib/core/src/lib/header/index.ts","../../../../lib/core/src/lib/models/pagination.model.ts","../../../../lib/core/src/lib/pagination/pagination.component.ts","../../../../lib/core/src/lib/pagination/pagination.component.html","../../../../lib/core/src/lib/pagination/infinite-pagination.component.ts","../../../../lib/core/src/lib/pagination/infinite-pagination.component.html","../../../../lib/core/src/lib/pagination/paginated-component.interface.ts","../../../../lib/core/src/lib/pagination/pagination-component.interface.ts","../../../../lib/core/src/lib/pagination/pagination.module.ts","../../../../lib/core/src/lib/pagination/public-api.ts","../../../../lib/core/src/lib/pagination/index.ts","../../../../lib/core/src/lib/auth/services/base-authentication.service.ts","../../../../lib/core/src/lib/auth/services/jwt-helper.service.ts","../../../../lib/core/src/lib/auth/oidc/auth-config.ts","../../../../lib/core/src/lib/auth/oidc/auth-config.service.ts","../../../../lib/core/src/lib/auth/oidc/auth.service.ts","../../../../lib/core/src/lib/auth/oidc/oidc-authentication.service.ts","../../../../lib/core/src/lib/auth/basic-auth/content-auth.ts","../../../../lib/core/src/lib/auth/basic-auth/process-auth.ts","../../../../lib/core/src/lib/auth/basic-auth/basic-alfresco-auth.service.ts","../../../../lib/core/src/lib/auth/oidc/retry-login.service.ts","../../../../lib/core/src/lib/auth/services/time-sync.service.ts","../../../../lib/core/src/lib/auth/oidc/redirect-auth.service.ts","../../../../lib/core/src/lib/auth/services/authentication.service.ts","../../../../lib/core/src/lib/auth/authentication-interceptor/auth-bearer.interceptor.ts","../../../../lib/core/src/lib/auth/guard/auth-guard.service.ts","../../../../lib/core/src/lib/auth/guard/auth-guard.ts","../../../../lib/core/src/lib/auth/guard/auth-guard-ecm.service.ts","../../../../lib/core/src/lib/auth/guard/auth-guard-bpm.service.ts","../../../../lib/core/src/lib/auth/services/user-access.service.ts","../../../../lib/core/src/lib/auth/guard/auth-guard-sso-role.service.ts","../../../../lib/core/src/lib/auth/services/identity-role.service.ts","../../../../lib/core/src/lib/auth/services/oauth2.service.ts","../../../../lib/core/src/lib/auth/services/identity-user.service.ts","../../../../lib/core/src/lib/auth/services/identity-group.service.ts","../../../../lib/core/src/lib/auth/interfaces/identity-user.service.interface.ts","../../../../lib/core/src/lib/auth/interfaces/identity-group.interface.ts","../../../../lib/core/src/lib/auth/interfaces/openid-configuration.interface.ts","../../../../lib/core/src/lib/auth/models/oauth-config.model.ts","../../../../lib/core/src/lib/auth/models/redirection.model.ts","../../../../lib/core/src/lib/auth/models/identity-group.model.ts","../../../../lib/core/src/lib/auth/models/identity-user.model.ts","../../../../lib/core/src/lib/auth/models/identity-role.model.ts","../../../../lib/core/src/lib/auth/models/user-access.model.ts","../../../../lib/core/src/lib/auth/models/application-access.model.ts","../../../../lib/core/src/lib/auth/oidc/token.interceptor.ts","../../../../lib/core/src/lib/auth/oidc/view/authentication-confirmation/authentication-confirmation.component.ts","../../../../lib/core/src/lib/auth/oidc/oidc-auth.guard.ts","../../../../lib/core/src/lib/auth/oidc/auth.routes.ts","../../../../lib/core/src/lib/auth/oidc/auth.module.ts","../../../../lib/core/src/lib/auth/oidc/public-api.ts","../../../../lib/core/src/lib/auth/public-api.ts","../../../../lib/core/src/lib/auth/index.ts","../../../../lib/core/src/lib/models/component.model.ts","../../../../lib/core/src/lib/translation/translate-loader.service.ts","../../../../lib/core/src/lib/translation/provide-i18n.ts","../../../../lib/core/src/lib/translation/public-api.ts","../../../../lib/core/src/lib/translation/index.ts","../../../../lib/core/src/lib/login/models/login-error.event.ts","../../../../lib/core/src/lib/login/models/login-submit.event.ts","../../../../lib/core/src/lib/login/models/login-success.event.ts","../../../../lib/core/src/lib/login/components/login/login.component.ts","../../../../lib/core/src/lib/login/components/login/login.component.html","../../../../lib/core/src/lib/login/directives/login-header.directive.ts","../../../../lib/core/src/lib/login/directives/login-footer.directive.ts","../../../../lib/core/src/lib/login/components/login-dialog-panel/login-dialog-panel.component.ts","../../../../lib/core/src/lib/login/components/login-dialog-panel/login-dialog-panel.component.html","../../../../lib/core/src/lib/login/login.module.ts","../../../../lib/core/src/lib/login/public-api.ts","../../../../lib/core/src/lib/login/index.ts","../../../../lib/core/src/lib/language-menu/service/language.service.ts","../../../../lib/core/src/lib/language-menu/language-menu.component.ts","../../../../lib/core/src/lib/language-menu/language-picker.component.ts","../../../../lib/core/src/lib/language-menu/language-menu.module.ts","../../../../lib/core/src/lib/language-menu/public-api.ts","../../../../lib/core/src/lib/language-menu/index.ts","../../../../lib/core/src/lib/info-drawer/info-drawer-layout.component.ts","../../../../lib/core/src/lib/info-drawer/info-drawer-layout.component.html","../../../../lib/core/src/lib/info-drawer/info-drawer.component.ts","../../../../lib/core/src/lib/info-drawer/info-drawer.component.html","../../../../lib/core/src/lib/info-drawer/info-drawer.module.ts","../../../../lib/core/src/lib/info-drawer/public-api.ts","../../../../lib/core/src/lib/info-drawer/index.ts","../../../../lib/core/src/lib/pipes/decimal-number.pipe.ts","../../../../lib/core/src/lib/pipes/file-size.pipe.ts","../../../../lib/core/src/lib/pipes/file-type.pipe.ts","../../../../lib/core/src/lib/pipes/format-space.pipe.ts","../../../../lib/core/src/lib/pipes/full-name.pipe.ts","../../../../lib/core/src/lib/pipes/localized-date.pipe.ts","../../../../lib/core/src/lib/pipes/text-highlight.pipe.ts","../../../../lib/core/src/lib/pipes/time-ago.pipe.ts","../../../../lib/core/src/lib/pipes/user-initial.pipe.ts","../../../../lib/core/src/lib/pipes/date-time.pipe.ts","../../../../lib/core/src/lib/pipes/truncate.pipe.ts","../../../../lib/core/src/lib/pipes/pipe.module.ts","../../../../lib/core/src/lib/pipes/public-api.ts","../../../../lib/core/src/lib/pipes/index.ts","../../../../lib/core/src/lib/identity-user-info/identity-user-info.component.ts","../../../../lib/core/src/lib/identity-user-info/identity-user-info.component.html","../../../../lib/core/src/lib/identity-user-info/identity-user-info.module.ts","../../../../lib/core/src/lib/identity-user-info/public-api.ts","../../../../lib/core/src/lib/identity-user-info/index.ts","../../../../lib/core/src/lib/datatable/data-column/data-column.component.ts","../../../../lib/core/src/lib/datatable/data-column/data-column-list.component.ts","../../../../lib/core/src/lib/datatable/data-column/data-column-header.component.ts","../../../../lib/core/src/lib/datatable/data-column/public-api.ts","../../../../lib/core/src/lib/datatable/data-column/index.ts","../../../../lib/core/src/lib/datatable/services/datatable.service.ts","../../../../lib/core/src/lib/notifications/models/notification.model.ts","../../../../lib/core/src/lib/notifications/helpers/notification.factory.ts","../../../../lib/core/src/lib/snackbar-content/snackbar-content.component.ts","../../../../lib/core/src/lib/snackbar-content/snackbar-content.component.html","../../../../lib/core/src/lib/snackbar-content/snackbar-content.module.ts","../../../../lib/core/src/lib/snackbar-content/snack-bar-data.ts","../../../../lib/core/src/lib/snackbar-content/public-api.ts","../../../../lib/core/src/lib/snackbar-content/index.ts","../../../../lib/core/src/lib/notifications/services/notification.service.ts","../../../../lib/core/src/lib/clipboard/clipboard.service.ts","../../../../lib/core/src/lib/clipboard/clipboard.directive.ts","../../../../lib/core/src/lib/datatable/components/datatable-cell/datatable-cell.component.ts","../../../../lib/core/src/lib/datatable/components/amount-cell/amount-cell.component.ts","../../../../lib/core/src/lib/datatable/components/amount-cell/amount-cell.component.html","../../../../lib/core/src/lib/datatable/components/boolean-cell/boolean-cell.component.ts","../../../../lib/core/src/lib/datatable/components/columns-selector/columns-search-filter.pipe.ts","../../../../lib/core/src/lib/datatable/components/columns-selector/columns-selector.component.ts","../../../../lib/core/src/lib/datatable/components/columns-selector/columns-selector.component.html","../../../../lib/core/src/lib/events/base.event.ts","../../../../lib/core/src/lib/events/base-ui.event.ts","../../../../lib/core/src/lib/events/public-api.ts","../../../../lib/core/src/lib/events/index.ts","../../../../lib/core/src/lib/datatable/data/data-row-event.model.ts","../../../../lib/core/src/lib/datatable/data/data-sorting.model.ts","../../../../lib/core/src/lib/datatable/components/datatable-row/datatable-row.component.ts","../../../../lib/core/src/lib/datatable/data/object-datarow.model.ts","../../../../lib/core/src/lib/datatable/data/object-datacolumn.model.ts","../../../../lib/core/src/lib/datatable/data/object-datatable-adapter.ts","../../../../lib/core/src/lib/datatable/components/data-cell.event.ts","../../../../lib/core/src/lib/datatable/components/data-row-action.event.ts","../../../../lib/core/src/lib/datatable/directives/drop-zone.directive.ts","../../../../lib/core/src/lib/datatable/directives/resizable/resizable.directive.ts","../../../../lib/core/src/lib/datatable/directives/resizable/resize-handle.directive.ts","../../../../lib/core/src/lib/directives/tooltip-card/tooltip-card.component.ts","../../../../lib/core/src/lib/directives/tooltip-card/tooltip-card.component.html","../../../../lib/core/src/lib/directives/tooltip-card/tooltip-card.directive.ts","../../../../lib/core/src/lib/directives/highlight.directive.ts","../../../../lib/core/src/lib/directives/infinite-select-scroll.directive.ts","../../../../lib/core/src/lib/directives/logout.directive.ts","../../../../lib/core/src/lib/directives/upload.directive.ts","../../../../lib/core/src/lib/directives/directive.module.ts","../../../../lib/core/src/lib/directives/public-api.ts","../../../../lib/core/src/lib/directives/index.ts","../../../../lib/core/src/lib/context-menu/context-menu-overlay.ts","../../../../lib/core/src/lib/context-menu/animations.ts","../../../../lib/core/src/lib/context-menu/context-menu.tokens.ts","../../../../lib/core/src/lib/context-menu/context-menu-list.component.ts","../../../../lib/core/src/lib/context-menu/context-menu-list.component.html","../../../../lib/core/src/lib/context-menu/context-menu-overlay.service.ts","../../../../lib/core/src/lib/context-menu/context-menu.directive.ts","../../../../lib/core/src/lib/context-menu/context-menu.module.ts","../../../../lib/core/src/lib/context-menu/public-api.ts","../../../../lib/core/src/lib/context-menu/index.ts","../../../../lib/core/src/lib/datatable/components/icon-cell/icon-cell.component.ts","../../../../lib/core/src/lib/datatable/components/date-cell/date-cell.component.ts","../../../../lib/core/src/lib/datatable/components/location-cell/location-cell.component.ts","../../../../lib/core/src/lib/datatable/components/filesize-cell/filesize-cell.component.ts","../../../../lib/core/src/lib/dialogs/edit-json/edit-json.dialog.ts","../../../../lib/core/src/lib/dialogs/edit-json/edit-json.dialog.html","../../../../lib/core/src/lib/datatable/components/json-cell/json-cell.component.ts","../../../../lib/core/src/lib/datatable/components/number-cell/number-cell.component.ts","../../../../lib/core/src/lib/datatable/components/number-cell/number-cell.component.html","../../../../lib/core/src/lib/datatable/components/datatable/datatable.component.ts","../../../../lib/core/src/lib/datatable/components/datatable/datatable.component.html","../../../../lib/core/src/lib/datatable/components/empty-list/empty-list.component.ts","../../../../lib/core/src/lib/datatable/components/empty-list/empty-list.component.html","../../../../lib/core/src/lib/datatable/data/datatable-adapter.ts","../../../../lib/core/src/lib/datatable/data/data-row.model.ts","../../../../lib/core/src/lib/datatable/data/data-column.model.ts","../../../../lib/core/src/lib/datatable/data/data-table.schema.ts","../../../../lib/core/src/lib/datatable/directives/loading-template.directive.ts","../../../../lib/core/src/lib/datatable/directives/no-content-template.directive.ts","../../../../lib/core/src/lib/datatable/directives/no-permission-template.directive.ts","../../../../lib/core/src/lib/datatable/directives/header-filter-template.directive.ts","../../../../lib/core/src/lib/datatable/directives/custom-empty-content-template.directive.ts","../../../../lib/core/src/lib/datatable/directives/custom-loading-template.directive.ts","../../../../lib/core/src/lib/datatable/directives/custom-no-permission-template.directive.ts","../../../../lib/core/src/lib/datatable/directives/main-data-table-action-template.directive.ts","../../../../lib/core/src/lib/datatable/datatable.module.ts","../../../../lib/core/src/lib/datatable/public-api.ts","../../../../lib/core/src/lib/datatable/index.ts","../../../../lib/core/src/lib/card-view/services/card-view-update.service.ts","../../../../lib/core/src/lib/card-view/components/base-card-view.ts","../../../../lib/core/src/lib/card-view/components/card-view-textitem/card-view-textitem.component.ts","../../../../lib/core/src/lib/card-view/components/card-view-textitem/card-view-textitem.component.html","../../../../lib/core/src/lib/card-view/components/card-view-dateitem/card-view-dateitem.component.ts","../../../../lib/core/src/lib/card-view/components/card-view-dateitem/card-view-dateitem.component.html","../../../../lib/core/src/lib/card-view/components/card-view-mapitem/card-view-mapitem.component.ts","../../../../lib/core/src/lib/card-view/components/card-view-mapitem/card-view-mapitem.component.html","../../../../lib/core/src/lib/card-view/components/card-view-selectitem/select-filter-input/select-filter-input.component.ts","../../../../lib/core/src/lib/card-view/components/card-view-selectitem/select-filter-input/select-filter-input.component.html","../../../../lib/core/src/lib/card-view/validators/card-view-item-match.validator.ts","../../../../lib/core/src/lib/card-view/validators/card-view-item-int.validator.ts","../../../../lib/core/src/lib/card-view/validators/card-view-item-minmax.validator.ts","../../../../lib/core/src/lib/card-view/validators/card-view-item-length.validator.ts","../../../../lib/core/src/lib/card-view/validators/validators.map.ts","../../../../lib/core/src/lib/card-view/models/card-view-baseitem.model.ts","../../../../lib/core/src/lib/card-view/directives/card-view-property-validator.directive.ts","../../../../lib/core/src/lib/card-view/components/card-view-selectitem/card-view-selectitem.component.ts","../../../../lib/core/src/lib/card-view/components/card-view-selectitem/card-view-selectitem.component.html","../../../../lib/core/src/lib/card-view/components/card-view-boolitem/card-view-boolitem.component.ts","../../../../lib/core/src/lib/card-view/components/card-view-boolitem/card-view-boolitem.component.html","../../../../lib/core/src/lib/card-view/components/card-view-keyvaluepairsitem/card-view-keyvaluepairsitem.component.ts","../../../../lib/core/src/lib/card-view/components/card-view-keyvaluepairsitem/card-view-keyvaluepairsitem.component.html","../../../../lib/core/src/lib/card-view/components/card-view-arrayitem/card-view-arrayitem.component.ts","../../../../lib/core/src/lib/card-view/components/card-view-arrayitem/card-view-arrayitem.component.html","../../../../lib/core/src/lib/card-view/services/card-item-types.service.ts","../../../../lib/core/src/lib/card-view/components/card-view-item-dispatcher/card-view-item-dispatcher.component.ts","../../../../lib/core/src/lib/card-view/components/card-view/card-view.component.ts","../../../../lib/core/src/lib/card-view/components/card-view/card-view.component.html","../../../../lib/core/src/lib/card-view/components/card-view.components.ts","../../../../lib/core/src/lib/card-view/interfaces/card-view-item-properties.interface.ts","../../../../lib/core/src/lib/card-view/interfaces/card-view-item-validator.interface.ts","../../../../lib/core/src/lib/card-view/interfaces/card-view-item.interface.ts","../../../../lib/core/src/lib/card-view/interfaces/card-view-textitem-properties.interface.ts","../../../../lib/core/src/lib/card-view/interfaces/card-view-dateitem-properties.interface.ts","../../../../lib/core/src/lib/card-view/interfaces/card-view-boolitem-properties.interface.ts","../../../../lib/core/src/lib/card-view/interfaces/card-view-textitem-pipe-property.interface.ts","../../../../lib/core/src/lib/card-view/interfaces/card-view-keyvaluepairsitem-properties.interface.ts","../../../../lib/core/src/lib/card-view/interfaces/card-view-selectitem-properties.interface.ts","../../../../lib/core/src/lib/card-view/interfaces/base-card-view-update.interface.ts","../../../../lib/core/src/lib/card-view/interfaces/click-notification.interface.ts","../../../../lib/core/src/lib/card-view/interfaces/update-notification.interface.ts","../../../../lib/core/src/lib/card-view/interfaces/card-view.interfaces.ts","../../../../lib/core/src/lib/card-view/validators/card-view-item-only-positive-int.validator.ts","../../../../lib/core/src/lib/card-view/validators/card-view-item-float.validator.ts","../../../../lib/core/src/lib/card-view/validators/card-view-item-long.validator.ts","../../../../lib/core/src/lib/card-view/validators/card-view-item-only-positive-long.validator.ts","../../../../lib/core/src/lib/card-view/validators/card-view.validators.ts","../../../../lib/core/src/lib/card-view/models/card-view-boolitem.model.ts","../../../../lib/core/src/lib/card-view/models/card-view-dateitem.model.ts","../../../../lib/core/src/lib/card-view/models/card-view-datetimeitem.model.ts","../../../../lib/core/src/lib/card-view/models/card-view-textitem.model.ts","../../../../lib/core/src/lib/card-view/models/card-view-floatitem.model.ts","../../../../lib/core/src/lib/card-view/models/card-view-intitem.model.ts","../../../../lib/core/src/lib/card-view/models/card-view-longitem.model.ts","../../../../lib/core/src/lib/card-view/models/card-view-mapitem.model.ts","../../../../lib/core/src/lib/card-view/models/card-view-keyvaluepairs.model.ts","../../../../lib/core/src/lib/card-view/models/card-view-selectitem.model.ts","../../../../lib/core/src/lib/card-view/models/card-view-arrayitem.model.ts","../../../../lib/core/src/lib/card-view/models/card-view.models.ts","../../../../lib/core/src/lib/card-view/services/card-view.services.ts","../../../../lib/core/src/lib/card-view/card-view.module.ts","../../../../lib/core/src/lib/card-view/public-api.ts","../../../../lib/core/src/lib/card-view/index.ts","../../../../lib/core/src/lib/form/events/form.event.ts","../../../../lib/core/src/lib/form/events/form-error.event.ts","../../../../lib/core/src/lib/form/events/form-field.event.ts","../../../../lib/core/src/lib/form/events/validate-form-field.event.ts","../../../../lib/core/src/lib/form/events/validate-form.event.ts","../../../../lib/core/src/lib/form/events/form-rules.event.ts","../../../../lib/core/src/lib/form/events/form-spinner.event.ts","../../../../lib/core/src/lib/form/events/index.ts","../../../../lib/core/src/lib/form/components/widgets/core/form-widget.model.ts","../../../../lib/core/src/lib/form/components/widgets/core/form-field-types.ts","../../../../lib/core/src/lib/form/components/widgets/core/container.model.ts","../../../../lib/core/src/lib/form/components/widgets/core/container-column.model.ts","../../../../lib/core/src/lib/form/components/widgets/core/error-message.model.ts","../../../../lib/core/src/lib/form/components/widgets/core/form-field-utils.ts","../../../../lib/core/src/lib/form/components/widgets/core/container-row.model.ts","../../../../lib/core/src/lib/form/components/widgets/core/repeatable-section.model.ts","../../../../lib/core/src/lib/form/components/widgets/core/handlers/form-field-rule.handler.ts","../../../../lib/core/src/lib/form/models/widget-visibility.model.ts","../../../../lib/core/src/lib/form/components/widgets/core/handlers/form-field-visibility-condition.handler.ts","../../../../lib/core/src/lib/form/components/widgets/core/form-field.model.ts","../../../../lib/core/src/lib/form/components/widgets/core/tab.model.ts","../../../../lib/core/src/lib/form/components/widgets/core/form-outcome.model.ts","../../../../lib/core/src/lib/form/components/widgets/core/form-field-validator.ts","../../../../lib/core/src/lib/form/components/widgets/core/form.model.ts","../../../../lib/core/src/lib/form/services/form.service.ts","../../../../lib/core/src/lib/form/components/widgets/core/form-field-metadata.ts","../../../../lib/core/src/lib/form/components/widgets/core/form-values.ts","../../../../lib/core/src/lib/form/components/widgets/core/form-field-option.ts","../../../../lib/core/src/lib/form/components/widgets/core/form-field-templates.ts","../../../../lib/core/src/lib/form/components/widgets/core/process-form-model.interface.ts","../../../../lib/core/src/lib/form/components/widgets/core/form-outcome-event.model.ts","../../../../lib/core/src/lib/form/components/widgets/core/custom-validation-message.token.ts","../../../../lib/core/src/lib/form/components/widgets/core/content-link.model.ts","../../../../lib/core/src/lib/form/components/widgets/core/external-content.ts","../../../../lib/core/src/lib/form/components/widgets/core/external-content-link.ts","../../../../lib/core/src/lib/form/components/widgets/core/group.model.ts","../../../../lib/core/src/lib/form/components/widgets/core/form-variable.model.ts","../../../../lib/core/src/lib/form/components/widgets/core/process-variable.model.ts","../../../../lib/core/src/lib/form/components/widgets/core/upload-widget-content-link.model.ts","../../../../lib/core/src/lib/form/components/widgets/core/form-field-file-source.ts","../../../../lib/core/src/lib/form/components/widgets/core/form-field-rule.ts","../../../../lib/core/src/lib/form/components/widgets/core/form-field-variable-options.ts","../../../../lib/core/src/lib/form/components/widgets/core/widget-schema.model.ts","../../../../lib/core/src/lib/form/components/widgets/core/theme.model.ts","../../../../lib/core/src/lib/form/components/widgets/core/predefined-theme.ts","../../../../lib/core/src/lib/form/components/widgets/core/displayable-cm-properties.model.ts","../../../../lib/core/src/lib/form/components/widgets/core/index.ts","../../../../lib/core/src/lib/form/components/widgets/widget.component.ts","../../../../lib/core/src/lib/form/components/widgets/unknown/unknown.widget.ts","../../../../lib/core/src/lib/form/components/widgets/error/error.component.ts","../../../../lib/core/src/lib/form/components/widgets/error/error.component.html","../../../../lib/core/src/lib/form/components/widgets/amount/amount.widget.ts","../../../../lib/core/src/lib/form/components/widgets/amount/amount.widget.html","../../../../lib/core/src/lib/form/components/widgets/checkbox/checkbox.widget.ts","../../../../lib/core/src/lib/form/components/widgets/checkbox/checkbox.widget.html","../../../../lib/core/src/lib/form/components/widgets/date/date.widget.ts","../../../../lib/core/src/lib/form/components/widgets/date/date.widget.html","../../../../lib/core/src/lib/form/services/form-expression.service.ts","../../../../lib/core/src/lib/form/components/widgets/base-display-text/base-display-text.widget.ts","../../../../lib/core/src/lib/form/components/widgets/display-text/display-text.widget.ts","../../../../lib/core/src/lib/form/components/widgets/display-text/display-text.widget.html","../../../../lib/core/src/lib/form/components/widgets/hyperlink/hyperlink.widget.ts","../../../../lib/core/src/lib/form/components/widgets/hyperlink/hyperlink.widget.html","../../../../lib/core/src/lib/form/components/widgets/multiline-text/multiline-text.widget.ts","../../../../lib/core/src/lib/form/components/widgets/multiline-text/multiline-text.widget.html","../../../../lib/core/src/lib/form/components/widgets/number/number.widget.ts","../../../../lib/core/src/lib/form/components/widgets/number/number.widget.html","../../../../lib/core/src/lib/form/components/widgets/text/text-mask.component.ts","../../../../lib/core/src/lib/form/components/widgets/text/text.widget.ts","../../../../lib/core/src/lib/form/components/widgets/text/text.widget.html","../../../../lib/core/src/lib/form/components/widgets/date-time/date-time.widget.ts","../../../../lib/core/src/lib/form/components/widgets/date-time/date-time.widget.html","../../../../lib/core/src/lib/form/components/widgets/json/json.widget.ts","../../../../lib/core/src/lib/form/components/widgets/json/json.widget.html","../../../../lib/core/src/lib/form/components/widgets/base-viewer/base-viewer.widget.ts","../../../../lib/core/src/lib/form/components/widgets/base-viewer/base-viewer.widget.html","../../../../lib/core/src/lib/form/components/widgets/decimal/decimal.component.ts","../../../../lib/core/src/lib/form/components/widgets/decimal/decimal.component.html","../../../../lib/core/src/lib/form/components/widgets/button/button.widget.ts","../../../../lib/core/src/lib/form/components/widgets/button/button.widget.html","../../../../lib/core/src/lib/form/components/widgets/reactive-widget.interface.ts","../../../../lib/core/src/lib/form/components/widgets/display-text/display-text.schema.ts","../../../../lib/core/src/lib/form/components/widgets/display-text/index.ts","../../../../lib/core/src/lib/form/components/widgets/header/header.schema.ts","../../../../lib/core/src/lib/form/pipes/field-style.pipe.ts","../../../../lib/core/src/lib/form/components/widgets/header/header.widget.ts","../../../../lib/core/src/lib/form/components/widgets/header/header.widget.html","../../../../lib/core/src/lib/form/components/widgets/header/index.ts","../../../../lib/core/src/lib/form/components/widgets/repeat/repeat.widget.ts","../../../../lib/core/src/lib/form/components/widgets/repeat/repeat.widget.html","../../../../lib/core/src/lib/form/components/widgets/index.ts","../../../../lib/core/src/lib/form/services/form-rendering.service.ts","../../../../lib/core/src/lib/form/services/widget-visibility.service.ts","../../../../lib/core/src/lib/form/components/form-field/form-field.component.ts","../../../../lib/core/src/lib/form/components/form-field/form-field.component.html","../../../../lib/core/src/lib/form/components/helpers/buttons-visibility.ts","../../../../lib/core/src/lib/form/components/form-base.component.ts","../../../../lib/core/src/lib/form/components/inplace-form-input/inplace-form-input.component.ts","../../../../lib/core/src/lib/form/components/inplace-form-input/inplace-form-input.component.html","../../../../lib/core/src/lib/form/components/form-custom-button.directive.ts","../../../../lib/core/src/lib/form/models/form-rules.model.ts","../../../../lib/core/src/lib/form/components/middlewares/middleware.ts","../../../../lib/core/src/lib/form/components/form-section/form-section.component.ts","../../../../lib/core/src/lib/form/components/form-section/form-section.component.html","../../../../lib/core/src/lib/form/components/middlewares/decimal-middleware.service.ts","../../../../lib/core/src/lib/dialogs/confirm-dialog/confirm.dialog.ts","../../../../lib/core/src/lib/dialogs/confirm-dialog/confirm.dialog.html","../../../../lib/core/src/lib/form/components/form-renderer.component.ts","../../../../lib/core/src/lib/form/components/form-renderer.component.html","../../../../lib/core/src/lib/form/services/form-validation-service.interface.ts","../../../../lib/core/src/lib/form/pipes/index.ts","../../../../lib/core/src/lib/form/form-base.module.ts","../../../../lib/core/src/lib/form/models/task-process-variable.model.ts","../../../../lib/core/src/lib/form/public-api.ts","../../../../lib/core/src/lib/form/index.ts","../../../../lib/core/src/lib/layout/components/header/header.component.ts","../../../../lib/core/src/lib/layout/components/header/header.component.html","../../../../lib/core/src/lib/layout/components/layout-container/layout-container.component.ts","../../../../lib/core/src/lib/layout/components/layout-container/layout-container.component.html","../../../../lib/core/src/lib/layout/components/sidebar-action/sidebar-action-menu.component.ts","../../../../lib/core/src/lib/layout/components/sidebar-action/sidebar-action-menu.component.html","../../../../lib/core/src/lib/layout/directives/sidenav-layout-content.directive.ts","../../../../lib/core/src/lib/layout/directives/sidenav-layout-header.directive.ts","../../../../lib/core/src/lib/layout/directives/sidenav-layout-navigation.directive.ts","../../../../lib/core/src/lib/layout/components/sidenav-layout/sidenav-layout.component.ts","../../../../lib/core/src/lib/layout/components/sidenav-layout/sidenav-layout.component.html","../../../../lib/core/src/lib/layout/layout.module.ts","../../../../lib/core/src/lib/layout/public-api.ts","../../../../lib/core/src/lib/layout/index.ts","../../../../lib/core/src/lib/comments/interfaces/comments.token.ts","../../../../lib/core/src/lib/comments/comment-list/comment-list.component.ts","../../../../lib/core/src/lib/comments/comment-list/comment-list.component.html","../../../../lib/core/src/lib/comments/comment-list/comment-list.module.ts","../../../../lib/core/src/lib/comments/comment-list/public-api.ts","../../../../lib/core/src/lib/comments/comment-list/index.ts","../../../../lib/core/src/lib/comments/comments.component.ts","../../../../lib/core/src/lib/comments/comments.component.html","../../../../lib/core/src/lib/comments/interfaces/comments-service.interface.ts","../../../../lib/core/src/lib/comments/comments.module.ts","../../../../lib/core/src/lib/comments/public-api.ts","../../../../lib/core/src/lib/comments/index.ts","../../../../lib/core/src/lib/templates/error-content/error-content.component.ts","../../../../lib/core/src/lib/templates/error-content/error-content.component.html","../../../../lib/core/src/lib/icon/icon.component.ts","../../../../lib/core/src/lib/icon/icon.component.html","../../../../lib/core/src/lib/icon/icon-alias-map.type.ts","../../../../lib/core/src/lib/icon/public-api.ts","../../../../lib/core/src/lib/icon/index.ts","../../../../lib/core/src/lib/templates/empty-content/empty-content.component.ts","../../../../lib/core/src/lib/templates/empty-content/empty-content.component.html","../../../../lib/core/src/lib/templates/template.module.ts","../../../../lib/core/src/lib/templates/public-api.ts","../../../../lib/core/src/lib/templates/index.ts","../../../../lib/core/src/lib/dynamic-chip-list/dynamic-chip-list.component.ts","../../../../lib/core/src/lib/dynamic-chip-list/dynamic-chip-list.component.html","../../../../lib/core/src/lib/dynamic-chip-list/dynamic-chip-list.module.ts","../../../../lib/core/src/lib/dynamic-chip-list/chip.ts","../../../../lib/core/src/lib/dynamic-chip-list/public-api.ts","../../../../lib/core/src/lib/dynamic-chip-list/index.ts","../../../../lib/core/src/lib/clipboard/clipboard.module.ts","../../../../lib/core/src/lib/clipboard/public-api.ts","../../../../lib/core/src/lib/clipboard/index.ts","../../../../lib/core/src/lib/dialogs/edit-json/edit-json.dialog.module.ts","../../../../lib/core/src/lib/dialogs/unsaved-changes-dialog/unsaved-changes-dialog.component.ts","../../../../lib/core/src/lib/dialogs/unsaved-changes-dialog/unsaved-changes-dialog.component.html","../../../../lib/core/src/lib/dialogs/unsaved-changes-dialog/unsaved-changes-dialog.module.ts","../../../../lib/core/src/lib/dialogs/unsaved-changes-dialog/unsaved-changes.guard.ts","../../../../lib/core/src/lib/dialogs/confirm-dialog/confirm.dialog.module.ts","../../../../lib/core/src/lib/dialogs/dialog/dialog-data.interface.ts","../../../../lib/core/src/lib/dialogs/dialog/dialog.model.ts","../../../../lib/core/src/lib/dialogs/dialog/dialog.component.ts","../../../../lib/core/src/lib/dialogs/dialog/dialog.component.html","../../../../lib/core/src/lib/dialogs/dialog/index.ts","../../../../lib/core/src/lib/dialogs/public-api.ts","../../../../lib/core/src/lib/dialogs/index.ts","../../../../lib/core/src/lib/notifications/components/notification-history.component.ts","../../../../lib/core/src/lib/notifications/components/notification-history.component.html","../../../../lib/core/src/lib/notifications/notification-history.module.ts","../../../../lib/core/src/lib/notifications/public-api.ts","../../../../lib/core/src/lib/notifications/index.ts","../../../../lib/core/src/lib/search-text/animations.ts","../../../../lib/core/src/lib/search-text/models/search-text-input.model.ts","../../../../lib/core/src/lib/search-text/search-trigger.directive.ts","../../../../lib/core/src/lib/search-text/search-text-input.component.ts","../../../../lib/core/src/lib/search-text/search-text-input.component.html","../../../../lib/core/src/lib/search-text/search-text-input.module.ts","../../../../lib/core/src/lib/search-text/public-api.ts","../../../../lib/core/src/lib/search-text/index.ts","../../../../lib/core/src/lib/models/general-user.model.ts","../../../../lib/core/src/lib/models/comment.model.ts","../../../../lib/core/src/lib/models/request-pagination.model.ts","../../../../lib/core/src/lib/models/path.model.ts","../../../../lib/core/src/lib/models/public-api.ts","../../../../lib/core/src/lib/models/index.ts","../../../../lib/core/src/lib/mock/cookie.service.mock.ts","../../../../lib/core/src/lib/mock/event.mock.ts","../../../../lib/core/src/lib/mock/translation.service.mock.ts","../../../../lib/core/src/lib/mock/form/form.service.mock.ts","../../../../lib/core/src/lib/mock/form/widget-visibility.service.mock.ts","../../../../lib/core/src/lib/mock/public-api.ts","../../../../lib/core/src/lib/mock/index.ts","../../../../lib/core/src/lib/testing/noop-translate.module.ts","../../../../lib/core/src/lib/testing/noop-auth.module.ts","../../../../lib/core/src/lib/testing/unit-testing-utils.ts","../../../../lib/core/src/lib/testing/app-config-testing.ts","../../../../lib/core/src/lib/testing/index.ts","../../../../lib/core/src/lib/stories/core-story.providers.ts","../../../../lib/core/src/lib/stories/index.ts","../../../../lib/core/src/lib/material.module.ts","../../../../lib/core/src/lib/core.module.ts","../../../../lib/core/src/public-api.ts","../../../../lib/core/src/adf-core.ts"],"sourcesContent":["/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { ExtensionRef } from '@alfresco/adf-extensions';\nimport { CommonModule } from '@angular/common';\nimport { MatTableModule } from '@angular/material/table';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n@Component({\n    selector: 'adf-about-extension-list',\n    templateUrl: './about-extension-list.component.html',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [CommonModule, MatTableModule, TranslatePipe]\n})\nexport class AboutExtensionListComponent {\n    columns = [\n        {\n            columnDef: 'name',\n            header: 'ABOUT.PLUGINS.NAME',\n            cell: (row: ExtensionRef) => `${row.$name}`\n        },\n        {\n            columnDef: 'version',\n            header: 'ABOUT.PLUGINS.VERSION',\n            cell: (row: ExtensionRef) => `${row.$version}`\n        }\n    ];\n\n    displayedColumns = this.columns.map((x) => x.columnDef);\n\n    @Input({ required: true })\n    data: Array<ExtensionRef> = [];\n}\n","<mat-table [dataSource]=\"data\">\n  <ng-container *ngFor=\"let column of columns\" [matColumnDef]=\"column.columnDef\">\n    <mat-header-cell *matHeaderCellDef>\n      {{ column.header | translate }}\n    </mat-header-cell>\n    <mat-cell *matCellDef=\"let row\">{{ column.cell(row) }}</mat-cell>\n  </ng-container>\n\n  <mat-header-row *matHeaderRowDef=\"displayedColumns\" />\n  <mat-row *matRowDef=\"let row; columns: displayedColumns\" />\n</mat-table>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChangeDetectionStrategy, Component, Input, ViewEncapsulation, inject } from '@angular/core';\nimport { LicenseData } from '../interfaces';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe, TranslateService } from '@ngx-translate/core';\nimport { MatTableModule } from '@angular/material/table';\n\n@Component({\n    selector: 'adf-about-license-list',\n    templateUrl: './about-license-list.component.html',\n    styleUrls: ['./about-license-list.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [CommonModule, TranslatePipe, MatTableModule]\n})\nexport class AboutLicenseListComponent {\n    private readonly translateService = inject(TranslateService);\n\n    columns = [\n        {\n            columnDef: 'property',\n            header: 'ABOUT.LICENSE.PROPERTY',\n            cell: (row: LicenseData) => `${row.property}`\n        },\n        {\n            columnDef: 'value',\n            header: 'ABOUT.LICENSE.VALUE',\n            cell: (row: LicenseData) => {\n                const enabledIcon = '&#9989';\n                const disabledIcon = '&#10060';\n                const statusAndValueGroupsRegex = new RegExp(`(${enabledIcon}|${disabledIcon})\\\\s*([^&#]+)`, 'g');\n                return typeof row.value === 'string'\n                    ? row.value.replace(\n                          statusAndValueGroupsRegex,\n                          (_match, icon, label) =>\n                              `<div>\n                                <span aria-hidden=\"true\">${icon}</span>\n                                <span class=\"cdk-visually-hidden\">\n                                ${this.translateService.instant(icon === enabledIcon ? 'ABOUT.LICENSE.ENABLED' : 'ABOUT.LICENSE.DISABLED')}\n                                </span>\n                                ${label}\n                              </div>`\n                      )\n                    : row.value;\n            }\n        }\n    ];\n\n    displayedColumns = this.columns.map((x) => x.columnDef);\n\n    @Input({ required: true })\n    data: LicenseData[] = [];\n}\n","<mat-table [dataSource]=\"data\">\n  <ng-container *ngFor=\"let column of columns\" [matColumnDef]=\"column.columnDef\">\n    <mat-header-cell *matHeaderCellDef>\n      {{ column.header | translate }}\n    </mat-header-cell>\n    <mat-cell *matCellDef=\"let row\"\n              class=\"adf-about-license-cell\"\n              [innerHTML]=\"column.cell(row)\" />\n  </ng-container>\n\n  <mat-header-row *matHeaderRowDef=\"displayedColumns\" />\n  <mat-row *matRowDef=\"let row; columns: displayedColumns\" />\n</mat-table>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatTableModule } from '@angular/material/table';\n\ninterface ModuleInfo {\n    title: string;\n    version: string;\n}\n\n@Component({\n    selector: 'adf-about-module-list',\n    templateUrl: './module-list.component.html',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [CommonModule, TranslatePipe, MatTableModule]\n})\nexport class ModuleListComponent {\n    columns = [\n        {\n            columnDef: 'title',\n            header: 'ABOUT.MODULES.NAME',\n            cell: (row: ModuleInfo) => `${row.title}`\n        },\n        {\n            columnDef: 'version',\n            header: 'ABOUT.MODULES.VERSION',\n            cell: (row: ModuleInfo) => `${row.version}`\n        }\n    ];\n\n    displayedColumns = this.columns.map((x) => x.columnDef);\n\n    @Input({ required: true })\n    data: Array<ModuleInfo> = [];\n}\n","<mat-table [dataSource]=\"data\">\n  <ng-container *ngFor=\"let column of columns\" [matColumnDef]=\"column.columnDef\">\n    <mat-header-cell *matHeaderCellDef>\n      {{ column.header | translate }}\n    </mat-header-cell>\n    <mat-cell *matCellDef=\"let row\">{{ column.cell(row) }}</mat-cell>\n  </ng-container>\n\n  <mat-header-row *matHeaderRowDef=\"displayedColumns\" />\n  <mat-row *matRowDef=\"let row; columns: displayedColumns\" />\n</mat-table>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { PackageInfo } from '../interfaces';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatTableModule } from '@angular/material/table';\n\n@Component({\n    selector: 'adf-about-package-list',\n    templateUrl: './package-list.component.html',\n    styleUrls: ['./package-list.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [CommonModule, TranslatePipe, MatTableModule]\n})\nexport class PackageListComponent implements OnInit {\n    @Input()\n    dependencies: any;\n\n    columns = [\n        {\n            columnDef: 'title',\n            header: 'ABOUT.PACKAGES.NAME',\n            cell: (row: PackageInfo) => `${row.name}`\n        },\n        {\n            columnDef: 'version',\n            header: 'ABOUT.PACKAGES.VERSION',\n            cell: (row: PackageInfo) => `${row.version}`\n        }\n    ];\n\n    displayedColumns = this.columns.map((x) => x.columnDef);\n\n    @Input()\n    data: Array<PackageInfo> = [];\n\n    ngOnInit() {\n        const regexp = new RegExp('^(@alfresco)');\n\n        if (this.dependencies) {\n            const libs = Object.keys(this.dependencies).filter((val) => regexp.test(val));\n            this.data = [];\n\n            libs.forEach((val) => {\n                this.data.push({\n                    name: val,\n                    version: this.dependencies[val]\n                });\n            });\n        }\n    }\n}\n","<mat-table [dataSource]=\"data\" class=\"adf-package-list-table\">\n  <ng-container *ngFor=\"let column of columns\" [matColumnDef]=\"column.columnDef\">\n    <mat-header-cell *matHeaderCellDef class=\"adf-package-list-table__header-cell\">\n      {{ column.header | translate }}\n    </mat-header-cell>\n    <mat-cell *matCellDef=\"let row\" class=\"adf-package-list-table__row-cell\">{{ column.cell(row) }}</mat-cell>\n  </ng-container>\n\n  <mat-header-row *matHeaderRowDef=\"displayedColumns\" class=\"adf-package-list-table__header-row\" />\n  <mat-row *matRowDef=\"let row; columns: displayedColumns\" class=\"adf-package-list-table__row\" />\n</mat-table>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport class ObjectUtils {\n    /**\n     * Gets a value from an object by composed key\n     * ObjectUtils.getValue({ item: { nodeType: 'cm:folder' }}, 'item.nodeType') ==> 'cm:folder'\n     *\n     * @param target target object\n     * @param key object property key\n     * @returns object property value\n     */\n    static getValue(target: any, key: string): any {\n        if (!target || !key) {\n            return undefined;\n        }\n\n        const keys = key.split('.');\n        key = '';\n\n        do {\n            key += keys.shift();\n            const value = target[key];\n            if (value !== undefined && (typeof value === 'object' || !keys.length)) {\n                target = value;\n                key = '';\n            } else if (!keys.length) {\n                target = undefined;\n            } else {\n                key += '.';\n            }\n        } while (keys.length);\n\n        return target;\n    }\n\n    static merge(...objects): any {\n        const result = {};\n\n        objects.forEach((source) => {\n            Object.keys(source).forEach((prop) => {\n                if (prop in result && Array.isArray(result[prop])) {\n                    result[prop] = result[prop].concat(source[prop]);\n                } else if (prop in result && typeof result[prop] === 'object') {\n                    result[prop] = ObjectUtils.merge(result[prop], source[prop]);\n                } else {\n                    result[prop] = source[prop];\n                }\n            });\n        });\n\n        return result;\n    }\n\n    static isObject(target: any): boolean {\n        return target === Object(target);\n    }\n\n    static isEmpty(target: any): boolean {\n        return target && Object.keys(target).length === 0 && Object.getPrototypeOf(target) === Object.prototype;\n    }\n\n    static hasKeys(target: any): boolean {\n        return target && Object.keys(target).length > 0;\n    }\n\n    static isBooleanObject(target: any): boolean {\n        return Object.values(target).every((value) => typeof value === 'boolean');\n    }\n\n    static booleanPrettify(target: any, enhancer?: (param: string) => string): string {\n        if (!target || ObjectUtils.isEmpty(target) || !ObjectUtils.isBooleanObject(target)) {\n            return '';\n        }\n\n        if (!ObjectUtils.isObject(target) || !ObjectUtils.hasKeys(target)) {\n            return target.toString();\n        }\n\n        const greenBorderWhiteCheckSymbol = '&#9989';\n        const redCrossSymbol = '&#10060';\n\n        target = Object.keys(target)\n            .map((key) => {\n                if (target[key]) {\n                    if (enhancer) {\n                        return `${greenBorderWhiteCheckSymbol} ${enhancer(key)}`;\n                    } else {\n                        return `${greenBorderWhiteCheckSymbol} ${key}`;\n                    }\n                }\n\n                if (enhancer) {\n                    return `${redCrossSymbol} ${enhancer(key)}`;\n                } else {\n                    return `${redCrossSymbol} ${key}`;\n                }\n            })\n            .join('\\n');\n\n        return target;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { ObjectUtils } from '../common/utils/object-utils';\nimport { Observable, ReplaySubject } from 'rxjs';\nimport { map, distinctUntilChanged, take } from 'rxjs/operators';\nimport { ExtensionConfig, ExtensionService, mergeObjects } from '@alfresco/adf-extensions';\nimport { OpenidConfiguration } from '../auth/interfaces/openid-configuration.interface';\nimport { OauthConfigModel } from '../auth/models/oauth-config.model';\n\n/* spellchecker: disable */\n\n// eslint-disable-next-line no-shadow\nexport const AppConfigValues = {\n    APP_CONFIG_LANGUAGES_KEY: 'languages',\n    PROVIDERS: 'providers',\n    OAUTHCONFIG: 'oauth2',\n    ECMHOST: 'ecmHost',\n    BASESHAREURL: 'baseShareUrl',\n    OOI_CONNECTOR_URL: 'ooiServiceUrl',\n    BPMHOST: 'bpmHost',\n    IDENTITY_HOST: 'identityHost',\n    AUTHTYPE: 'authType',\n    CONTEXTROOTECM: 'contextRootEcm',\n    CONTEXTROOTBPM: 'contextRootBpm',\n    ALFRESCO_REPOSITORY_NAME: 'alfrescoRepositoryName',\n    LOG_LEVEL: 'logLevel',\n    LOGIN_ROUTE: 'loginRoute',\n    DISABLECSRF: 'disableCSRF',\n    AUTH_WITH_CREDENTIALS: 'auth.withCredentials',\n    APPLICATION: 'application',\n    STORAGE_PREFIX: 'application.storagePrefix',\n    NOTIFY_DURATION: 'notificationDefaultDuration',\n    CONTENT_TICKET_STORAGE_LABEL: 'ticket-ECM',\n    PROCESS_TICKET_STORAGE_LABEL: 'ticket-BPM',\n    UNSAVED_CHANGES_MODAL_HIDDEN: 'unsaved_changes__modal_hidden'\n} as const;\n\nexport type AppConfigValues = (typeof AppConfigValues)[keyof typeof AppConfigValues];\n\nexport const Status = {\n    INIT: 'init',\n    LOADING: 'loading',\n    LOADED: 'loaded'\n} as const;\n\nexport type Status = (typeof Status)[keyof typeof Status];\n\n/* spellchecker: enable */\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class AppConfigService {\n    protected http = inject(HttpClient);\n    protected extensionService = inject(ExtensionService);\n\n    config: any = {\n        application: {\n            name: 'Alfresco ADF Application'\n        },\n        ecmHost: 'http://{hostname}{:port}/ecm',\n        bpmHost: 'http://{hostname}{:port}/bpm',\n        logLevel: 'silent'\n    };\n\n    status: Status = Status.INIT;\n    protected onLoadSubject: ReplaySubject<any>;\n    onLoad: Observable<any>;\n\n    get isLoaded() {\n        return this.status === Status.LOADED;\n    }\n\n    constructor() {\n        this.onLoadSubject = new ReplaySubject();\n        this.onLoad = this.onLoadSubject.asObservable();\n\n        this.extensionService.setup$.subscribe((config) => {\n            this.onExtensionsLoaded(config);\n        });\n    }\n\n    /**\n     * Requests notification of a property value when it is loaded.\n     *\n     * @param property The desired property value\n     * @returns Property value, when loaded\n     */\n    select(property: string): Observable<any> {\n        return this.onLoadSubject.pipe(\n            map((config) => ObjectUtils.getValue(config, property)),\n            distinctUntilChanged()\n        );\n    }\n\n    /**\n     * Gets the value of a named property.\n     *\n     * @param key Name of the property\n     * @param defaultValue Value to return if the key is not found\n     * @returns Value of the property\n     */\n    get<T>(key: string, defaultValue?: T): T {\n        let result: any = ObjectUtils.getValue(this.config, key);\n        if (typeof result === 'string') {\n            const keywords = new Map<string, string>();\n            keywords.set('hostname', this.getLocationHostname());\n            keywords.set(':port', this.getLocationPort(':'));\n            keywords.set('port', this.getLocationPort());\n            keywords.set('protocol', this.getLocationProtocol());\n            result = this.formatString(result, keywords);\n        }\n\n        if (typeof result === 'object') {\n            result = JSON.parse(JSON.stringify(result).replace(/{hostname}/g, this.getLocationHostname()));\n            result = JSON.parse(JSON.stringify(result).replace(/{:port}/g, this.getLocationPort(':')));\n            result = JSON.parse(JSON.stringify(result).replace(/{protocol}/g, this.getLocationProtocol()));\n        }\n\n        if (result === undefined) {\n            return defaultValue;\n        }\n\n        return result;\n    }\n\n    /**\n     * Gets the location.protocol value.\n     *\n     * @returns The location.protocol string\n     */\n    getLocationProtocol(): string {\n        return location.protocol;\n    }\n\n    /**\n     * Gets the location.hostname property.\n     *\n     * @returns Value of the property\n     */\n    getLocationHostname(): string {\n        return location.hostname;\n    }\n\n    /**\n     * Gets the location.port property.\n     *\n     * @param prefix Text added before port value\n     * @returns Port with prefix\n     */\n    getLocationPort(prefix: string = ''): string {\n        return location.port ? prefix + location.port : '';\n    }\n\n    protected onLoaded() {\n        this.onLoadSubject.next(this.config);\n    }\n\n    protected onDataLoaded() {\n        this.onLoadSubject.next(this.config);\n\n        this.extensionService.setup$.pipe(take(1)).subscribe((config) => this.onExtensionsLoaded(config));\n    }\n\n    protected onExtensionsLoaded(config: ExtensionConfig) {\n        if (config) {\n            const customConfig = config.appConfig;\n\n            if (customConfig) {\n                this.config = mergeObjects(this.config, customConfig);\n            }\n        }\n    }\n\n    /**\n     * Loads the config file.\n     *\n     * @param callback an optional callback to execute when configuration is loaded\n     * @returns Notification when loading is complete\n     */\n    load(callback?: (...args: any[]) => any): Promise<any> {\n        return new Promise((resolve) => {\n            const configUrl = `app.config.json?v=${Date.now()}`;\n\n            if (this.status === Status.INIT) {\n                this.status = Status.LOADING;\n                this.http.get(configUrl).subscribe(\n                    (data: any) => {\n                        this.status = Status.LOADED;\n                        this.config = Object.assign({}, this.config, data || {});\n                        callback?.();\n                        resolve(data);\n                        this.onDataLoaded();\n                    },\n                    () => {\n                        // eslint-disable-next-line no-console\n                        console.error('app.config.json contains validation errors');\n                        resolve(this.config);\n                    }\n                );\n            } else if (this.status === Status.LOADED) {\n                resolve(this.config);\n            } else if (this.status === Status.LOADING) {\n                this.onLoad.subscribe(() => {\n                    resolve(this.config);\n                });\n            }\n        });\n    }\n\n    /**\n     * Call the discovery API to fetch configuration\n     *\n     * @param hostIdp host address\n     * @returns Discovery configuration\n     */\n    loadWellKnown(hostIdp: string): Promise<OpenidConfiguration> {\n        return new Promise((resolve, reject) => {\n            this.http.get<OpenidConfiguration>(`${hostIdp}/.well-known/openid-configuration`).subscribe({\n                next: (res: OpenidConfiguration) => {\n                    resolve(res);\n                },\n                error: (err: any) => {\n                    // eslint-disable-next-line no-console\n                    console.error('hostIdp not correctly configured or unreachable');\n                    reject(err);\n                }\n            });\n        });\n    }\n\n    /**\n     * OAuth2 configuration\n     *\n     * @returns auth config model\n     */\n    get oauth2(): OauthConfigModel {\n        const config = this.get(AppConfigValues.OAUTHCONFIG, {});\n        const implicitFlow = config['implicitFlow'] === true || config['implicitFlow'] === 'true';\n        const silentLogin = config['silentLogin'] === true || config['silentLogin'] === 'true';\n        const codeFlow = config['codeFlow'] === true || config['codeFlow'] === 'true';\n\n        return {\n            ...(config as OauthConfigModel),\n            implicitFlow,\n            silentLogin,\n            codeFlow\n        };\n    }\n\n    private formatString(str: string, keywords: Map<string, string>): string {\n        let result = str;\n\n        keywords.forEach((value, key) => {\n            const expr = new RegExp('{' + key + '}', 'gm');\n            result = result.replace(expr, value);\n        });\n\n        return result;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, OnInit, ViewEncapsulation, inject } from '@angular/core';\nimport { AppConfigService, AppConfigValues } from '../../app-config/app-config.service';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatCardModule } from '@angular/material/card';\n\n@Component({\n    selector: 'adf-about-server-settings',\n    templateUrl: './about-server-settings.component.html',\n    styleUrls: ['./about-server-settings.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    imports: [CommonModule, TranslatePipe, MatCardModule]\n})\nexport class AboutServerSettingsComponent implements OnInit {\n    private readonly appConfig = inject(AppConfigService);\n\n    ecmHost = '';\n    bpmHost = '';\n\n    ngOnInit() {\n        this.ecmHost = this.appConfig.get(AppConfigValues.ECMHOST);\n        this.bpmHost = this.appConfig.get(AppConfigValues.BPMHOST);\n    }\n}\n","<div class=\"adf-about-server-settings\">\n    <mat-card appearance=\"outlined\" class=\"mat-elevation-z0 adf-about-server-settings__card\">\n        <p data-automation-id=\"adf-process-service-host\">\n            {{ 'ABOUT.SERVER_SETTINGS.PROCESS_SERVICE_HOST' | translate: {value: bpmHost} }}\n        </p>\n        <p data-automation-id=\"adf-content-service-host\">\n            {{ 'ABOUT.SERVER_SETTINGS.CONTENT_SERVICE_HOST' | translate: {value: ecmHost} }}\n        </p>\n    </mat-card>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { StatusData } from '../interfaces';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatTableModule } from '@angular/material/table';\n\n@Component({\n    selector: 'adf-about-status-list',\n    templateUrl: './about-status-list.component.html',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [CommonModule, TranslatePipe, MatTableModule]\n})\nexport class AboutStatusListComponent {\n    columns = [\n        {\n            columnDef: 'property',\n            header: 'ABOUT.STATUS.PROPERTY',\n            cell: (row: StatusData) => `${row.property}`\n        },\n        {\n            columnDef: 'value',\n            header: 'ABOUT.STATUS.VALUE',\n            cell: (row: StatusData) => `${row.value}`\n        }\n    ];\n\n    displayedColumns = this.columns.map((x) => x.columnDef);\n\n    @Input({ required: true })\n    data: StatusData[] = [];\n}\n","<mat-table [dataSource]=\"data\">\n  <ng-container *ngFor=\"let column of columns\" [matColumnDef]=\"column.columnDef\">\n    <mat-header-cell *matHeaderCellDef>\n      {{ column.header | translate }}\n    </mat-header-cell>\n    <mat-cell *matCellDef=\"let row\">{{ column.cell(row) }}</mat-cell>\n  </ng-container>\n\n  <mat-header-row *matHeaderRowDef=\"displayedColumns\" />\n  <mat-row *matRowDef=\"let row; columns: displayedColumns\" />\n</mat-table>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ContentChild, Directive, Input, TemplateRef } from '@angular/core';\n\n@Directive({\n    selector: 'adf-about-panel'\n})\nexport class AboutPanelDirective {\n    @Input() label!: string;\n    @Input() automationId: string;\n\n    @ContentChild(TemplateRef)\n    layoutTemplate!: TemplateRef<any>;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, ContentChildren, QueryList, ViewEncapsulation } from '@angular/core';\nimport { AboutPanelDirective } from './about-panel.directive';\nimport { CommonModule } from '@angular/common';\nimport { MatExpansionModule } from '@angular/material/expansion';\n\n@Component({\n    selector: 'adf-about',\n    templateUrl: './about.component.html',\n    styleUrls: ['about.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    imports: [CommonModule, MatExpansionModule]\n})\nexport class AboutComponent {\n    @ContentChildren(AboutPanelDirective)\n    panels: QueryList<AboutPanelDirective>;\n}\n","<mat-accordion [togglePosition]=\"'before'\" class=\"adf-about-panel\">\n    <ng-container *ngFor=\"let panel of panels\">\n        <mat-expansion-panel [attr.data-automation-id]=\"panel.automationId\">\n            <mat-expansion-panel-header class=\"adf-about-panel-header\">\n                <mat-panel-title class=\"adf-about-panel-header__title\">{{panel.label}}</mat-panel-title>\n            </mat-expansion-panel-header>\n            <ng-container *ngTemplateOutlet=\"panel.layoutTemplate\" />\n        </mat-expansion-panel>\n    </ng-container>\n</mat-accordion>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface FileInfo {\n    entry?: any;\n    file?: File;\n    relativeFolder?: string;\n}\n\nexport class FileUtils {\n    static flatten(folder: any): Promise<FileInfo[]> {\n        const reader = folder.createReader();\n        const files: FileInfo[] = [];\n        return new Promise((resolve) => {\n            const iterations = [];\n            (function traverse() {\n                reader.readEntries((entries) => {\n                    if (!entries.length) {\n                        Promise.all(iterations).then(() => resolve(files));\n                    } else {\n                        iterations.push(\n                            Promise.all(\n                                entries.map((entry) => {\n                                    if (entry.isFile) {\n                                        return new Promise<void>((resolveFile) => {\n                                            entry.file((file: File) => {\n                                                files.push({\n                                                    entry,\n                                                    file,\n                                                    relativeFolder: entry.fullPath.replace(/\\/[^/]*$/, '')\n                                                });\n                                                resolveFile();\n                                            });\n                                        });\n                                    } else {\n                                        return FileUtils.flatten(entry).then((result) => {\n                                            files.push(...result);\n                                        });\n                                    }\n                                })\n                            )\n                        );\n                        // Try calling traverse() again for the same dir, according to spec\n                        traverse();\n                    }\n                });\n            })();\n        });\n    }\n\n    static toFileArray(fileList: FileList): File[] {\n        const result = [];\n\n        if (fileList && fileList.length > 0) {\n            for (let i = 0; i < fileList.length; i++) {\n                result.push(fileList[i]);\n            }\n        }\n\n        return result;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { MatDateFormats } from '@angular/material/core';\n\nexport const MOMENT_DATE_FORMATS: MatDateFormats = {\n    parse: {\n        dateInput: 'DD/MM/YYYY'\n    },\n    display: {\n        dateInput: 'DD/MM/YYYY',\n        monthYearLabel: 'MMMM Y',\n        dateA11yLabel: 'LL',\n        monthYearA11yLabel: 'MMMM Y'\n    }\n};\n\nconst dateNames: string[] = [];\nfor (let date = 1; date <= 31; date++) {\n    dateNames.push(String(date));\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable } from '@angular/core';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class StorageService {\n    private memoryStore: { [key: string]: any } = {};\n    private readonly useLocalStorage: boolean = false;\n    private _prefix: string = '';\n\n    get prefix() {\n        return this._prefix;\n    }\n\n    set prefix(prefix: string) {\n        this._prefix = prefix ? prefix + '_' : '';\n    }\n\n    constructor() {\n        this.useLocalStorage = this.storageAvailable('localStorage');\n    }\n\n    /**\n     * Gets an item.\n     *\n     * @param key Key to identify the item\n     * @returns The item (if any) retrieved by the key\n     */\n    getItem(key: string): string | null {\n        if (this.useLocalStorage) {\n            return localStorage.getItem(this.prefix + key);\n        } else {\n            return Object.prototype.hasOwnProperty.call(this.memoryStore, this.prefix + key) ? this.memoryStore[this.prefix + key] : null;\n        }\n    }\n\n    /**\n     * Gets all items from the storage.\n     *\n     * @returns All items stored\n     */\n    getItems(): { [key: string]: any } {\n        const items: { [key: string]: any } = {};\n        if (this.useLocalStorage) {\n            for (let i = 0; i < localStorage.length; i++) {\n                const key = localStorage.key(i);\n                if (key?.startsWith(this.prefix)) {\n                    const keyWithoutPrefix = key.slice(this.prefix.length);\n                    items[keyWithoutPrefix] = localStorage.getItem(key);\n                }\n            }\n        } else {\n            Object.keys(this.memoryStore).forEach((key) => {\n                if (key.startsWith(this.prefix)) {\n                    const unprefixedKey = key.slice(this.prefix.length);\n                    items[unprefixedKey] = this.memoryStore[key];\n                }\n            });\n        }\n\n        return items;\n    }\n\n    /**\n     * Stores an item\n     *\n     * @param key Key to identify the item\n     * @param data Data to store\n     */\n    setItem(key: string, data: string) {\n        if (this.useLocalStorage) {\n            localStorage.setItem(this.prefix + key, data);\n        } else {\n            this.memoryStore[this.prefix + key] = data.toString();\n        }\n    }\n\n    /** Removes all currently stored items. */\n    clear() {\n        if (this.useLocalStorage) {\n            localStorage.clear();\n        } else {\n            this.memoryStore = {};\n        }\n    }\n\n    /**\n     * Removes a single item.\n     *\n     * @param key Key to identify the item\n     */\n    removeItem(key: string) {\n        if (this.useLocalStorage) {\n            localStorage.removeItem(`${this.prefix}` + key);\n        } else {\n            delete this.memoryStore[this.prefix + key];\n        }\n    }\n\n    /**\n     * Is any item currently stored under `key`?\n     *\n     * @param key Key identifying item to check\n     * @returns True if key retrieves an item, false otherwise\n     */\n    hasItem(key: string): boolean {\n        if (this.useLocalStorage) {\n            return !!localStorage.getItem(this.prefix + key);\n        } else {\n            return Object.prototype.hasOwnProperty.call(this.memoryStore, key);\n        }\n    }\n\n    private storageAvailable(type: string): boolean {\n        try {\n            const storage = window[type];\n            const key = '__storage_test__';\n            storage.setItem(key, key);\n            storage.removeItem(key, key);\n            return true;\n        } catch {\n            return false;\n        }\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { LanguageItem } from '../services/language-item.interface';\n\nexport const DEFAULT_LANGUAGE_LIST: LanguageItem[] = [\n    { key: 'de', label: 'Deutsch' },\n    { key: 'en', label: 'English' },\n    { key: 'es', label: 'Español' },\n    { key: 'fr', label: 'Français' },\n    { key: 'it', label: 'Italiano' },\n    { key: 'ja', label: '日本語' },\n    { key: 'nb', label: 'Bokmål' },\n    { key: 'nl', label: 'Nederlands' },\n    { key: 'pt-BR', label: 'Português (Brasil)' },\n    { key: 'ru', label: 'Русский' },\n    { key: 'zh-CN', label: '中文简体' },\n    { key: 'cs', label: 'Čeština' },\n    { key: 'da', label: 'Dansk' },\n    { key: 'fi', label: 'Suomi' },\n    { key: 'pl', label: 'Polski' },\n    { key: 'sv', label: 'Svenska' },\n    { key: 'ar', label: 'العربية', direction: 'rtl' }\n];\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { inject, Injectable, RendererFactory2, Signal } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Observable, BehaviorSubject } from 'rxjs';\nimport { AppConfigService, AppConfigValues } from '../../app-config/app-config.service';\nimport { StorageService } from './storage.service';\nimport { distinctUntilChanged, map } from 'rxjs/operators';\nimport { LanguageItem } from './language-item.interface';\nimport { DOCUMENT } from '@angular/common';\nimport { Directionality, Direction } from '@angular/cdk/bidi';\nimport { DEFAULT_LANGUAGE_LIST } from '../models/default-languages.model';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\nexport const UserPreferenceValues = {\n    PaginationSize: 'paginationSize',\n    Locale: 'locale',\n    SupportedPageSizes: 'supportedPageSizes',\n    ExpandedSideNavStatus: 'expandedSidenav'\n} as const;\n\nexport type UserPreferenceValues = (typeof UserPreferenceValues)[keyof typeof UserPreferenceValues];\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class UserPreferencesService {\n    translate = inject(TranslateService);\n    private readonly appConfig = inject(AppConfigService);\n    private readonly storage = inject(StorageService);\n\n    private readonly document = inject(DOCUMENT);\n    private readonly rendererFactory = inject(RendererFactory2);\n    private readonly directionality = inject(Directionality);\n\n    defaults = {\n        paginationSize: 25,\n        supportedPageSizes: [5, 10, 15, 20],\n        locale: 'en',\n        expandedSidenav: true\n    };\n\n    private userPreferenceStatus: any = { ...this.defaults };\n    private readonly onChangeSubject: BehaviorSubject<any>;\n    onChange: Observable<any>;\n\n    /**\n     * Observable that emits the current locale whenever it changes.\n     * This is a convenience property that simplifies subscribing to locale changes.\n     *\n     * @example Observable usage (requires manual unsubscription):\n     * ```typescript\n     * constructor(private userPreferencesService: UserPreferencesService) {\n     *   this.userPreferencesService.locale$\n     *     .pipe(takeUntilDestroyed())\n     *     .subscribe(locale => {\n     *       this.currentLocale = locale;\n     *     });\n     * }\n     * ```\n     *\n     * @example Signal usage (automatic cleanup, recommended):\n     * ```typescript\n     * export class MyComponent {\n     *   private userPreferencesService = inject(UserPreferencesService);\n     *   currentLocale = this.userPreferencesService.localeSignal; // Signal - no subscription needed!\n     * }\n     * ```\n     */\n    readonly locale$: Observable<string>;\n\n    /**\n     * Signal that provides the current locale value.\n     * Automatically handles cleanup - no need for takeUntilDestroyed or manual unsubscription.\n     * This is the recommended way to access locale in components.\n     */\n    readonly localeSignal: Signal<string>;\n\n    /**\n     * Observable that emits the current pagination size whenever it changes.\n     */\n    readonly paginationSize$: Observable<number>;\n\n    /**\n     * Signal that provides the current pagination size value.\n     */\n    readonly paginationSizeSignal: Signal<number>;\n\n    /**\n     * Observable that emits the supported page sizes whenever they change.\n     */\n    readonly supportedPageSizes$: Observable<number[]>;\n\n    /**\n     * Signal that provides the supported page sizes array.\n     */\n    readonly supportedPageSizesSignal: Signal<number[]>;\n\n    constructor() {\n        this.onChangeSubject = new BehaviorSubject(this.userPreferenceStatus);\n        this.onChange = this.onChangeSubject.asObservable();\n\n        // Initialize convenience observables\n        this.locale$ = this.select<string>(UserPreferenceValues.Locale);\n        this.paginationSize$ = this.select<number>(UserPreferenceValues.PaginationSize);\n        this.supportedPageSizes$ = this.select<string>(UserPreferenceValues.SupportedPageSizes).pipe(\n            map((value) => (value ? JSON.parse(value) : this.defaults.supportedPageSizes))\n        );\n\n        // Initialize convenience signals (automatically handle cleanup)\n        this.localeSignal = toSignal(this.locale$, { initialValue: this.defaults.locale });\n        this.paginationSizeSignal = toSignal(this.paginationSize$, { initialValue: this.defaults.paginationSize });\n        this.supportedPageSizesSignal = toSignal(this.supportedPageSizes$, { initialValue: this.defaults.supportedPageSizes });\n\n        this.appConfig.onLoad.subscribe(() => {\n            this.initUserPreferenceStatus();\n        });\n\n        const renderer = this.rendererFactory.createRenderer(null, null);\n\n        this.select('textOrientation').subscribe((direction: Direction) => {\n            renderer.setAttribute(this.document.body, 'dir', direction);\n            (this.directionality as any).value = direction;\n        });\n    }\n\n    private initUserPreferenceStatus() {\n        this.initUserLanguage();\n        this.initPaginationPreferences();\n    }\n\n    private initPaginationPreferences() {\n        // Check if values are already in storage\n        const storedPaginationSize = this.get(UserPreferenceValues.PaginationSize);\n        const storedSupportedPageSizes = this.get(UserPreferenceValues.SupportedPageSizes);\n\n        if (storedPaginationSize) {\n            // Already in storage - just update in-memory state\n            this.setWithoutStore(UserPreferenceValues.PaginationSize, Number(storedPaginationSize));\n        } else {\n            // Not in storage - get from config and save\n            const paginationSize = this.appConfig.get('pagination.size', this.defaults.paginationSize);\n            this.set(UserPreferenceValues.PaginationSize, paginationSize);\n        }\n\n        if (storedSupportedPageSizes) {\n            // Already in storage - just update in-memory state\n            this.setWithoutStore(UserPreferenceValues.SupportedPageSizes, storedSupportedPageSizes);\n        } else {\n            // Not in storage - get from config and save\n            const supportedPageSizes = this.appConfig.get('pagination.supportedPageSizes', this.defaults.supportedPageSizes);\n            this.set(UserPreferenceValues.SupportedPageSizes, JSON.stringify(supportedPageSizes));\n        }\n    }\n\n    private initUserLanguage() {\n        const storedLocale = this.get(UserPreferenceValues.Locale);\n        const configLocale = this.appConfig.get<string>(UserPreferenceValues.Locale);\n\n        if (storedLocale) {\n            // Locale already in storage - just update in-memory state, don't re-save\n            this.setWithoutStore(UserPreferenceValues.Locale, storedLocale);\n            this.setWithoutStore('textOrientation', this.getLanguageByKey(storedLocale).direction || 'ltr');\n        } else if (configLocale) {\n            // Locale from config but not in storage - save to storage\n            this.set(UserPreferenceValues.Locale, configLocale);\n            this.set('textOrientation', this.getLanguageByKey(configLocale).direction || 'ltr');\n        } else {\n            // No locale anywhere - use default, don't save to storage\n            const locale = this.getDefaultLocale();\n            this.setWithoutStore(UserPreferenceValues.Locale, locale);\n            this.setWithoutStore('textOrientation', this.getLanguageByKey(locale).direction || 'ltr');\n        }\n    }\n\n    /**\n     * Sets up a callback to notify when a property has changed.\n     *\n     * @param property The property to watch\n     * @returns Notification callback\n     */\n    select<T = any>(property: string): Observable<T> {\n        return this.onChange.pipe(\n            map((userPreferenceStatus) => userPreferenceStatus[property]),\n            distinctUntilChanged()\n        );\n    }\n\n    /**\n     * Gets a preference property.\n     *\n     * @param property Name of the property\n     * @param defaultValue Default to return if the property is not found\n     * @returns Preference property\n     */\n    get(property: string, defaultValue?: string): string {\n        const key = this.getPropertyKey(property);\n        const value = this.storage.getItem(key);\n        if (value === undefined || value === null) {\n            return defaultValue;\n        }\n        return value;\n    }\n\n    /**\n     * Sets a preference property.\n     *\n     * @param property Name of the property\n     * @param value New value for the property\n     */\n    set(property: string, value: any) {\n        if (!property) {\n            return;\n        }\n        this.storage.setItem(this.getPropertyKey(property), value);\n        this.userPreferenceStatus[property] = value;\n        this.onChangeSubject.next(this.userPreferenceStatus);\n    }\n\n    /**\n     * Sets a preference property.\n     *\n     * @param property Name of the property\n     * @param value New value for the property\n     */\n    setWithoutStore(property: string, value: any) {\n        if (!property) {\n            return;\n        }\n        this.userPreferenceStatus[property] = value;\n        this.onChangeSubject.next(this.userPreferenceStatus);\n    }\n\n    /**\n     * Check if an item is present in the storage\n     *\n     * @param property Name of the property\n     * @returns True if the item is present, false otherwise\n     */\n    hasItem(property: string): boolean {\n        if (!property) {\n            return false;\n        }\n        return this.storage.hasItem(this.getPropertyKey(property));\n    }\n\n    /**\n     * Gets the active storage prefix for preferences.\n     *\n     * @returns Storage prefix\n     */\n    getStoragePrefix(): string {\n        return this.storage.getItem('USER_PROFILE') || 'GUEST';\n    }\n\n    /**\n     * Sets the active storage prefix for preferences.\n     *\n     * @param value Name of the prefix\n     */\n    setStoragePrefix(value: string | null) {\n        this.storage.setItem('USER_PROFILE', value || 'GUEST');\n        this.initUserPreferenceStatus();\n    }\n\n    /**\n     * Gets the full property key with prefix.\n     *\n     * @param property The property name\n     * @returns Property key\n     */\n    getPropertyKey(property: string): string {\n        return `${this.getStoragePrefix()}__${property}`;\n    }\n\n    /**\n     * Gets an array containing the available page sizes.\n     *\n     * @returns Array of page size values\n     */\n    get supportedPageSizes(): number[] {\n        const supportedPageSizes = this.get(UserPreferenceValues.SupportedPageSizes);\n\n        if (supportedPageSizes) {\n            return JSON.parse(supportedPageSizes);\n        } else {\n            return this.appConfig.get('pagination.supportedPageSizes', this.defaults.supportedPageSizes);\n        }\n    }\n\n    set supportedPageSizes(value: number[]) {\n        this.set(UserPreferenceValues.SupportedPageSizes, JSON.stringify(value));\n    }\n\n    /** Pagination size. */\n    set paginationSize(value: number) {\n        this.set(UserPreferenceValues.PaginationSize, value);\n    }\n\n    get paginationSize(): number {\n        const paginationSize = this.get(UserPreferenceValues.PaginationSize);\n\n        if (paginationSize) {\n            return Number(paginationSize);\n        } else {\n            return Number(this.appConfig.get('pagination.size', this.defaults.paginationSize));\n        }\n    }\n\n    /**\n     * Current locale setting.\n     *\n     * @returns locale name\n     */\n    get locale(): string {\n        return this.get(UserPreferenceValues.Locale) || this.getDefaultLocale();\n    }\n\n    set locale(value: string) {\n        this.set(UserPreferenceValues.Locale, value);\n    }\n\n    /**\n     * Gets the default locale.\n     *\n     * @returns Default locale language code\n     */\n    getDefaultLocale(): string {\n        return this.appConfig.get<string>(UserPreferenceValues.Locale) || this.translate.getBrowserCultureLang() || 'en';\n    }\n\n    private getLanguageByKey(key: string): LanguageItem {\n        const defaultLanguage = { key: 'en' } as LanguageItem;\n        let language: LanguageItem;\n\n        const customLanguages = this.appConfig.get<Array<LanguageItem>>(AppConfigValues.APP_CONFIG_LANGUAGES_KEY);\n        if (Array.isArray(customLanguages)) {\n            language = customLanguages.find((customLanguage) => key.includes(customLanguage.key));\n        }\n        language ??= DEFAULT_LANGUAGE_LIST.find((defaultLang) => defaultLang.key === key) ?? defaultLanguage;\n        return language;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { effect, Injectable, inject } from '@angular/core';\nimport { DateAdapter } from '@angular/material/core';\nimport { UserPreferencesService } from '../services/user-preferences.service';\n\n// Stub for the moment.js integration.\n// While this dependency is no longer used by the libraries, the moment adapter can still discover the moment.js linked to the application\ndeclare let moment: any;\ntype Moment = any;\n\n/**\n * @deprecated this class is deprecated and should not be used.\n * Consider using `AdfDateFnsAdapter` or `AdfDateTimeFnsAdapter` instead\n */\n@Injectable()\nexport class MomentDateAdapter extends DateAdapter<Moment> {\n    private localeData: any = moment.localeData();\n\n    overrideDisplayFormat: string;\n\n    constructor() {\n        const preferences = inject(UserPreferencesService);\n\n        super();\n\n        // Use effect to reactively update locale when signal changes\n        // Note: This adapter is a singleton service, so no cleanup needed\n        effect(() => {\n            const locale = preferences.localeSignal();\n            this.setLocale(locale);\n        });\n    }\n\n    getYear(date: Moment): number {\n        return date.year();\n    }\n\n    getMonth(date: Moment): number {\n        return date.month();\n    }\n\n    getDate(date: Moment): number {\n        return date.date();\n    }\n\n    getDayOfWeek(date: Moment): number {\n        return date.day();\n    }\n\n    getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\n        switch (style) {\n            case 'long':\n                return this.localeData.months();\n            case 'short':\n                return this.localeData.monthsShort();\n            case 'narrow':\n                return this.localeData.monthsShort().map((month) => month[0]);\n            default:\n                return [];\n        }\n    }\n\n    getDateNames(): string[] {\n        const dateNames: string[] = [];\n        for (let date = 1; date <= 31; date++) {\n            dateNames.push(String(date));\n        }\n\n        return dateNames;\n    }\n\n    getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\n        switch (style) {\n            case 'long':\n                return this.localeData.weekdays();\n            case 'short':\n                return this.localeData.weekdaysShort();\n            case 'narrow':\n                return this.localeData.weekdaysShort();\n            default:\n                return [];\n        }\n    }\n\n    getYearName(date: Moment): string {\n        return String(date.year());\n    }\n\n    getFirstDayOfWeek(): number {\n        return this.localeData.firstDayOfWeek();\n    }\n\n    getNumDaysInMonth(date: Moment): number {\n        return date.daysInMonth();\n    }\n\n    clone(date: Moment): Moment {\n        const locale = this.locale || 'en';\n        return date.clone().locale(locale);\n    }\n\n    createDate(year: number, month: number, date: number): Moment {\n        return moment([year, month, date]);\n    }\n\n    today(): Moment {\n        const locale = this.locale || 'en';\n        return moment().locale(locale);\n    }\n\n    parse(value: any, parseFormat: any): Moment {\n        const locale = this.locale || 'en';\n\n        if (value && typeof value === 'string') {\n            let m = moment(value, parseFormat, locale, true);\n            if (!m.isValid()) {\n                // use strict parsing because Moment's parser is very forgiving, and this can lead to undesired behavior.\n                m = moment(value, this.overrideDisplayFormat, locale, true);\n            }\n            if (m.isValid()) {\n                // if user omits year, it defaults to 2001, so check for that issue.\n                if (m.year() === 2001 && value.indexOf('2001') === -1) {\n                    // if 2001 not actually in the value string, change to current year\n                    const currentYear = new Date().getFullYear();\n                    m.set('year', currentYear);\n                    // if date is in the future, set previous year\n                    if (m.isAfter(moment())) {\n                        m.set('year', currentYear - 1);\n                    }\n                }\n            }\n            return m;\n        }\n\n        return value ? moment(value).locale(locale) : null;\n    }\n\n    format(date: Moment, displayFormat: any): string {\n        date = this.clone(date);\n        displayFormat = this.overrideDisplayFormat ? this.overrideDisplayFormat : displayFormat;\n\n        if (date?.format) {\n            return date.utc().local().format(displayFormat);\n        } else {\n            return '';\n        }\n    }\n\n    addCalendarYears(date: Moment, years: number): Moment {\n        return date.clone().add(years, 'y');\n    }\n\n    addCalendarMonths(date: Moment, months: number): Moment {\n        return date.clone().add(months, 'M');\n    }\n\n    addCalendarDays(date: Moment, days: number): Moment {\n        return date.clone().add(days, 'd');\n    }\n\n    getISODateString(date: Moment): string {\n        return date.toISOString();\n    }\n\n    setLocale(locale: any): void {\n        super.setLocale(locale);\n\n        this.localeData = moment.localeData(locale);\n    }\n\n    compareDate(first: Moment, second: Moment): number {\n        return first.diff(second, 'seconds', true);\n    }\n\n    sameDate(first: any | Moment, second: any | Moment): boolean {\n        if (first == null) {\n            // same if both null\n            return second == null;\n        } else if (moment.isMoment(first)) {\n            return first.isSame(second);\n        } else {\n            const isSame = super.sameDate(first, second);\n            return isSame;\n        }\n    }\n\n    clampDate(date: Moment, min?: any | Moment, max?: any | Moment): Moment {\n        if (min && date.isBefore(min)) {\n            return min;\n        } else if (max && date.isAfter(max)) {\n            return max;\n        } else {\n            return date;\n        }\n    }\n\n    isDateInstance(date: any) {\n        let isValidDateInstance = false;\n\n        if (date) {\n            // eslint-disable-next-line no-underscore-dangle\n            isValidDateInstance = date._isAMomentObject;\n        }\n\n        return isValidDateInstance;\n    }\n\n    isValid(date: Moment): boolean {\n        return date.isValid();\n    }\n\n    toIso8601(date: Moment): string {\n        return this.clone(date).format();\n    }\n\n    fromIso8601(iso8601String: string): Moment | null {\n        const locale = this.locale || 'en';\n        const d = moment(iso8601String, moment.ISO_8601).locale(locale);\n        return this.isValid(d) ? d : null;\n    }\n\n    invalid(): Moment {\n        return moment.invalid();\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ObjectUtils } from './object-utils';\n\nexport class StringUtils {\n    static capitalize(target: string): string {\n        return target.charAt(0).toUpperCase() + target.slice(1).toLowerCase();\n    }\n\n    static replaceAll(target: string, delimiters: any): string {\n        if (!ObjectUtils.isObject(delimiters)) {\n            return target;\n        }\n\n        Object.keys(delimiters).forEach((key) => {\n            target = target.replace(key, delimiters[key]);\n        });\n\n        return target;\n    }\n\n    static removeAll(target: string, ...delimiters: string[]): string {\n        const delimiterObj = {};\n        delimiters.forEach((delimiter) => {\n            delimiterObj[delimiter] = '';\n        });\n\n        return StringUtils.replaceAll(target, delimiterObj);\n    }\n\n    static prettifyBooleanEnabled(target: string): string {\n        const redactedTarget = StringUtils.removeAll(target.toLowerCase(), 'is', 'enabled');\n        const bagOfWords = redactedTarget.split(' ');\n        const capitalizedBagOfWords = bagOfWords.map((word) => StringUtils.capitalize(word));\n\n        return capitalizedBagOfWords.join(' ');\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { format, parse, parseISO, isValid, isBefore, isAfter } from 'date-fns';\nimport { ar, cs, da, de, enUS, es, fi, fr, it, ja, nb, nl, pl, ptBR, ru, sv, zhCN } from 'date-fns/locale';\n\nconst panDate = (num: number = 1): string => {\n    let text = num.toString();\n    while (text.length < 2) {\n        text = '0' + text;\n    }\n    return text;\n};\n\nexport class DateFnsUtils {\n    static getLocaleFromString(locale: string): Locale {\n        let dateFnsLocale: Locale;\n        switch (locale) {\n            case 'ar':\n                dateFnsLocale = ar;\n                break;\n            case 'cs':\n                dateFnsLocale = cs;\n                break;\n            case 'da':\n                dateFnsLocale = da;\n                break;\n            case 'de':\n                dateFnsLocale = de;\n                break;\n            case 'en':\n                dateFnsLocale = enUS;\n                break;\n            case 'es':\n                dateFnsLocale = es;\n                break;\n            case 'fi':\n                dateFnsLocale = fi;\n                break;\n            case 'fr':\n                dateFnsLocale = fr;\n                break;\n            case 'it':\n                dateFnsLocale = it;\n                break;\n            case 'ja':\n                dateFnsLocale = ja;\n                break;\n            case 'nb':\n                dateFnsLocale = nb;\n                break;\n            case 'nl':\n                dateFnsLocale = nl;\n                break;\n            case 'pl':\n                dateFnsLocale = pl;\n                break;\n            case 'pt':\n            case 'pt-BR':\n                dateFnsLocale = ptBR;\n                break;\n            case 'ru':\n                dateFnsLocale = ru;\n                break;\n            case 'sv':\n                dateFnsLocale = sv;\n                break;\n            case 'zh-CN':\n                dateFnsLocale = zhCN;\n                break;\n            default:\n                dateFnsLocale = enUS;\n                break;\n        }\n        return dateFnsLocale;\n    }\n\n    private static readonly momentToDateFnsMap = {\n        D: 'd',\n        Y: 'y',\n        AZ: 'aa',\n        A: 'a',\n        ll: 'PP',\n        T: `'T'`,\n        ZZ: 'XX',\n        Z: `XXX`\n    };\n\n    /**\n     * Converts a Moment.js date format string to the equivalent date-fns format string.\n     *\n     * @param dateDisplayFormat - The Moment.js date format string to convert.\n     * @returns The equivalent date-fns format string.\n     */\n    static convertMomentToDateFnsFormat(dateDisplayFormat: string): string {\n        if (dateDisplayFormat && dateDisplayFormat.trim() !== '') {\n            // normalise the input to support double conversion of the same string\n            dateDisplayFormat = dateDisplayFormat.replace(`'T'`, 'T');\n\n            for (const [search, replace] of Object.entries(this.momentToDateFnsMap)) {\n                dateDisplayFormat = dateDisplayFormat.replace(new RegExp(search, 'g'), replace);\n            }\n            return dateDisplayFormat;\n        }\n        return '';\n    }\n\n    /**\n     * Formats a date using the specified date format.\n     *\n     * @param date - The date to format, can be a number or a Date object.\n     * @param dateFormat - The date format string to use for formatting.\n     * @returns The formatted date as a string\n     */\n    static formatDate(date: number | Date | string, dateFormat: string): string {\n        if (typeof date === 'string') {\n            date = parseISO(date);\n        }\n        return format(date, this.convertMomentToDateFnsFormat(dateFormat));\n    }\n\n    /**\n     * Parses a date string using the specified date format.\n     *\n     * @param value - The date value to parse. Can be a string or a Date (for generic calls)\n     * @param dateFormat - The date format string to use for parsing.\n     * @param options - Additional options\n     * @param options.dateOnly - Strip the time and zone\n     * @returns The parsed Date object.\n     */\n    static parseDate(value: string | Date, dateFormat: string, options?: { dateOnly?: boolean }): Date {\n        if (value) {\n            if (typeof value === 'string') {\n                if (options?.dateOnly && value.includes('T')) {\n                    value = value.split('T')[0];\n                }\n\n                return parse(value, this.convertMomentToDateFnsFormat(dateFormat), new Date());\n            }\n            return value;\n        }\n        return new Date('error');\n    }\n\n    /**\n     * Parses a datetime string using the ISO format\n     *\n     * @param value - The date and time string to parse\n     * @returns returns the parsed Date object\n     */\n    static parseDateTime(value: string): Date {\n        return parseISO(value);\n    }\n\n    /**\n     * Checks if the date string is a valid date according to the specified format\n     *\n     * @param dateValue Date value\n     * @param dateFormat The date format\n     * @returns `true` if the date is valid, otherwise `false`\n     */\n    static isValidDate(dateValue: string, dateFormat: string): boolean {\n        if (dateValue) {\n            const date = this.parseDate(dateValue, dateFormat);\n            return isValid(date);\n        }\n        return false;\n    }\n\n    /**\n     * Validates a date is before another one\n     *\n     * @param source source date to compare\n     * @param target target date to compare\n     * @returns `true` if the source date is before the target one, otherwise `false`\n     */\n    static isBeforeDate(source: Date, target: Date): boolean {\n        return isBefore(source, target);\n    }\n\n    /**\n     * Validates a date is after another one\n     *\n     * @param source source date to compare\n     * @param target target date to compare\n     * @returns `true` if the source date is after the target one, otherwise `false`\n     */\n    static isAfterDate(source: Date, target: Date): boolean {\n        return isAfter(source, target);\n    }\n\n    static utcToLocal(date: Date): Date {\n        return new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds()));\n    }\n\n    static localToUtc(date: Date): Date {\n        return new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());\n    }\n\n    static forceLocal(date: Date | string): Date {\n        if (typeof date === 'string') {\n            date = parseISO(date);\n        }\n        const localDate = `${date.getUTCFullYear()}-${panDate(date.getUTCMonth() + 1)}-${panDate(date.getUTCDate())}T00:00:00.000`;\n        return new Date(localDate);\n    }\n\n    static forceUtc(date: Date | string): Date {\n        if (typeof date === 'string') {\n            date = parseISO(date);\n        }\n        const utcDate = `${date.getFullYear()}-${panDate(date.getMonth() + 1)}-${panDate(date.getDate())}T00:00:00.000Z`;\n        return new Date(utcDate);\n    }\n\n    static stringDateContainsTimeZone(value: string): boolean {\n        return /(Z|([+|-]\\d\\d:?\\d\\d))$/.test(value);\n    }\n\n    static getDate(value: string | number | Date): Date {\n        let date = new Date(value);\n\n        if (typeof value === 'string' && !DateFnsUtils.stringDateContainsTimeZone(value)) {\n            date = this.utcToLocal(date);\n        }\n\n        return date;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DateFnsAdapter } from '@angular/material-date-fns-adapter';\nimport { DateFnsUtils } from './date-fns-utils';\nimport { effect, Injectable, inject } from '@angular/core';\nimport { MAT_DATE_FORMATS, MAT_DATE_LOCALE, MatDateFormats } from '@angular/material/core';\nimport { UserPreferencesService } from '../services/user-preferences.service';\nimport { isValid, Locale, parse } from 'date-fns';\nimport { enUS } from 'date-fns/locale';\n\n/**\n * Date-fns adapter with moment-to-date-fns conversion.\n *\n * Automatically switches locales based on user preferences.\n * Supports custom display format.\n *\n * @example\n *\n * Add the following to the component `providers` section\n *\n * providers: [\n *  { provide: MAT_DATE_FORMATS, useValue: ADF_FORM_DATE_FORMATS },\n *  { provide: DateAdapter, useClass: AdfDateFnsAdapter }\n * ]\n *\n * Setting custom format\n *\n * constructor(private dateAdapter: DateAdapter<Date>) {}\n *\n * ngOnInit() {\n *   const adapter = this.dateAdapter as AdfDateFnsAdapter;\n     adapter.displayFormat = '<custom date-fns format>';\n * }\n */\n\nexport const DEFAULT_DATE_FORMAT = 'dd-MM-yyyy';\n\n/**\n * Material date formats for Date-fns\n */\nexport const ADF_DATE_FORMATS: MatDateFormats = {\n    parse: {\n        dateInput: DEFAULT_DATE_FORMAT\n    },\n    display: {\n        dateInput: DEFAULT_DATE_FORMAT,\n        monthLabel: 'LLL',\n        monthYearLabel: 'LLL uuuu',\n        dateA11yLabel: 'PP',\n        monthYearA11yLabel: 'LLLL uuuu'\n    }\n};\n\n@Injectable({ providedIn: 'root' })\nexport class AdfDateFnsAdapter extends DateFnsAdapter {\n    private readonly formats = inject<MatDateFormats>(MAT_DATE_FORMATS, { optional: true });\n\n    private _displayFormat?: string = null;\n\n    get displayFormat(): string | null {\n        return this._displayFormat;\n    }\n\n    set displayFormat(value: string | null) {\n        this._displayFormat = value ? DateFnsUtils.convertMomentToDateFnsFormat(value) : null;\n    }\n\n    constructor() {\n        const matDateLocale = inject<Locale>(MAT_DATE_LOCALE, { optional: true });\n        const preferences = inject(UserPreferencesService);\n\n        // Ensure we have a valid locale for the base class\n        // If matDateLocale is not provided, use enUS as default\n        super(matDateLocale || enUS);\n\n        // Initialize locale synchronously from signal's initial value\n        // This ensures locale is set before any format() calls\n        const initialLocale = preferences.localeSignal();\n        if (initialLocale) {\n            this.setLocale(DateFnsUtils.getLocaleFromString(initialLocale));\n        }\n\n        // Use effect to reactively update locale when signal changes\n        // Note: This adapter is a singleton service, so no cleanup needed\n        effect(() => {\n            const locale = preferences.localeSignal();\n            if (locale) {\n                this.setLocale(DateFnsUtils.getLocaleFromString(locale));\n            }\n        });\n    }\n\n    override parse(value: any, parseFormat: string | string[]): Date {\n        const dateValue = this.isValid(value) ? value : this.parseAndValidateDate(value);\n        const format = Array.isArray(parseFormat)\n            ? parseFormat.map(DateFnsUtils.convertMomentToDateFnsFormat)\n            : DateFnsUtils.convertMomentToDateFnsFormat(parseFormat);\n        return super.parse(dateValue, format);\n    }\n\n    override format(date: Date, displayFormat: string): string {\n        displayFormat = DateFnsUtils.convertMomentToDateFnsFormat(displayFormat);\n\n        if (this.displayFormat && displayFormat === this.formats?.display?.dateInput) {\n            return super.format(date, this.displayFormat || displayFormat);\n        }\n\n        return super.format(date, displayFormat);\n    }\n\n    private parseAndValidateDate(value: any): Date {\n        const parsedDate = parse(value, this.displayFormat || DEFAULT_DATE_FORMAT, new Date());\n        return isValid(parsedDate) ? parsedDate : value;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable, inject } from '@angular/core';\nimport { DateFnsUtils } from './date-fns-utils';\nimport { DatetimeAdapter, MAT_DATETIME_FORMATS, MatDatetimeFormats } from '@mat-datetimepicker/core';\nimport { DateAdapter, MAT_DATE_LOCALE } from '@angular/material/core';\nimport { Locale, addHours, addMinutes, isValid, parse } from 'date-fns';\n\n/**\n * Material date/time formats for Date-fns (mat-datetimepicker)\n */\nexport const ADF_DATETIME_FORMATS: MatDatetimeFormats = {\n    parse: {\n        dateInput: 'P', // L\n        monthInput: 'LLLL', // MMMM\n        timeInput: 'p', // LT\n        datetimeInput: 'Pp' // L LT\n    },\n    display: {\n        dateInput: 'P', // L\n        monthInput: 'LLLL', // MMMM\n        datetimeInput: 'Pp', // L LT\n        timeInput: 'p', // LT\n        monthYearLabel: 'LLL uuuu', // MMM YYYY\n        dateA11yLabel: 'PP', // LL\n        monthYearA11yLabel: 'LLLL uuuu', // MMMM YYYY\n        popupHeaderDateLabel: 'ccc, dd MMM' // ddd, DD MMM\n    }\n};\n\n/** The default hour names to use if Intl API is not available. */\nconst DEFAULT_HOUR_NAMES = range(24, (i) => String(i));\n\n/** The default minute names to use if Intl API is not available. */\nconst DEFAULT_MINUTE_NAMES = range(60, (i) => String(i));\n\n// eslint-disable-next-line jsdoc/require-jsdoc\nfunction range<T>(length: number, valueFunction: (index: number) => T): T[] {\n    const valuesArray = Array(length);\n    for (let i = 0; i < length; i++) {\n        valuesArray[i] = valueFunction(i);\n    }\n    return valuesArray;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class AdfDateTimeFnsAdapter extends DatetimeAdapter<Date> {\n    private readonly formats = inject<MatDatetimeFormats>(MAT_DATETIME_FORMATS, { optional: true });\n\n    private _displayFormat?: string = null;\n\n    get displayFormat(): string | null {\n        return this._displayFormat;\n    }\n\n    set displayFormat(value: string | null) {\n        this._displayFormat = value ? DateFnsUtils.convertMomentToDateFnsFormat(value) : null;\n    }\n\n    constructor() {\n        const matDateLocale = inject<Locale>(MAT_DATE_LOCALE, { optional: true });\n        const dateAdapter = inject<DateAdapter<Date, Locale>>(DateAdapter);\n\n        super(dateAdapter);\n        this.setLocale(matDateLocale);\n    }\n\n    getHour(date: Date): number {\n        return date.getHours();\n    }\n\n    getMinute(date: Date): number {\n        return date.getMinutes();\n    }\n\n    getFirstDateOfMonth(date: Date): Date {\n        const result = new Date();\n        result.setFullYear(date.getFullYear(), date.getMonth(), 1);\n        return result;\n    }\n\n    isInNextMonth(startDate: Date, endDate: Date): boolean {\n        const nextMonth = this.getDateInNextMonth(startDate);\n        return this.sameMonthAndYear(nextMonth, endDate);\n    }\n\n    getHourNames(): string[] {\n        return DEFAULT_HOUR_NAMES;\n    }\n\n    getMinuteNames(): string[] {\n        return DEFAULT_MINUTE_NAMES;\n    }\n\n    addCalendarHours(date: Date, hours: number): Date {\n        return addHours(date, hours);\n    }\n\n    addCalendarMinutes(date: Date, minutes: number): Date {\n        return addMinutes(date, minutes);\n    }\n\n    createDatetime(year: number, month: number, date: number, hour: number, minute: number): Date {\n        const result = new Date();\n        result.setFullYear(year, month, date);\n        result.setHours(hour, minute, 0, 0);\n        return result;\n    }\n\n    private getDateInNextMonth(date: Date) {\n        return new Date(date.getFullYear(), date.getMonth() + 1, 1, date.getHours(), date.getMinutes());\n    }\n\n    override parse(value: any, parseFormat: any): Date {\n        const dateToParse = isValid(new Date(value)) ? parse(value, this.displayFormat ?? parseFormat, new Date()) : value;\n        return this._delegate.parse(dateToParse, parseFormat);\n    }\n\n    override format(date: Date, displayFormat: any): string {\n        displayFormat = DateFnsUtils.convertMomentToDateFnsFormat(displayFormat);\n\n        if (this.displayFormat && displayFormat === this.formats?.display?.datetimeInput) {\n            return this._delegate.format(date, this.displayFormat || displayFormat);\n        }\n\n        return this._delegate.format(date, displayFormat);\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './object-utils';\nexport * from './file-utils';\nexport * from './moment-date-formats.model';\nexport * from './moment-date-adapter';\nexport * from './string-utils';\nexport * from './date-fns-utils';\nexport * from './date-fns-adapter';\nexport * from './datetime-fns-adapter';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, Input, OnInit, ViewEncapsulation } from '@angular/core';\nimport { ObjectUtils, StringUtils } from '../../common/utils';\nimport { LicenseData, StatusData } from '../interfaces';\nimport { RepositoryInfo } from './repository-info.interface';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { AboutLicenseListComponent } from '../about-license-list/about-license-list.component';\nimport { ModuleListComponent } from '../about-module-list/module-list.component';\nimport { AboutStatusListComponent } from '../about-status-list/about-status-list.component';\n\n@Component({\n    selector: 'adf-about-repository-info',\n    templateUrl: './about-repository-info.component.html',\n    styleUrls: ['./about-repository-info.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    imports: [CommonModule, TranslatePipe, AboutLicenseListComponent, ModuleListComponent, AboutStatusListComponent]\n})\nexport class AboutRepositoryInfoComponent implements OnInit {\n    @Input()\n    data: RepositoryInfo;\n\n    statusEntries: StatusData[];\n    licenseEntries: LicenseData[];\n\n    ngOnInit(): void {\n        if (this.data) {\n            const repository = this.data;\n\n            this.statusEntries = Object.keys(repository.status).map((key) => ({\n                property: key,\n                value: repository.status[key]\n            }));\n\n            if (repository.license) {\n                this.licenseEntries = Object.keys(repository.license).map((key) => {\n                    if (ObjectUtils.isObject(repository.license[key])) {\n                        return {\n                            property: key,\n                            value: ObjectUtils.booleanPrettify(repository.license[key], StringUtils.prettifyBooleanEnabled)\n                        };\n                    }\n\n                    return {\n                        property: key,\n                        value: repository.license[key]\n                    };\n                });\n            }\n        }\n    }\n}\n","<div>\n    <article *ngIf=\"licenseEntries\">\n        <header>{{ 'ABOUT.LICENSE.TITLE' | translate }}</header>\n        <adf-about-license-list [data]=\"licenseEntries\" />\n    </article>\n\n    <article *ngIf=\"statusEntries\">\n        <header>{{ 'ABOUT.STATUS.TITLE' | translate }}</header>\n        <adf-about-status-list [data]=\"statusEntries\" />\n    </article>\n\n    <article *ngIf=\"data?.modules\">\n        <header>{{ 'ABOUT.MODULES.TITLE' | translate }}</header>\n        <adf-about-module-list [data]=\"data.modules\" />\n    </article>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface RepositoryInfo {\n    status: {\n        isReadOnly: boolean;\n        isAuditEnabled: boolean;\n        isQuickShareEnabled: boolean;\n        isThumbnailGenerationEnabled: boolean;\n        isDirectAccessUrlEnabled: boolean;\n    };\n    edition: string;\n    version: {\n        display: string;\n    };\n    license?: {\n        issuedAt: Date;\n        expiresAt: Date;\n        remainingDays: number;\n        holder: string;\n        mode: string;\n        entitlements?: {\n            maxUsers?: number;\n            maxDocs?: number;\n            isClusterEnabled?: boolean;\n            isCryptodocEnabled?: boolean;\n        };\n    };\n    modules?: Array<{\n        title: string;\n        version: string;\n    }>;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NgModule } from '@angular/core';\nimport { AboutServerSettingsComponent } from './about-server-settings/about-server-settings.component';\nimport { AboutExtensionListComponent } from './about-extension-list/about-extension-list.component';\nimport { AboutLicenseListComponent } from './about-license-list/about-license-list.component';\nimport { PackageListComponent } from './about-package/package-list.component';\nimport { AboutStatusListComponent } from './about-status-list/about-status-list.component';\nimport { ModuleListComponent } from './about-module-list/module-list.component';\nimport { AboutComponent } from './about.component';\nimport { AboutPanelDirective } from './about-panel.directive';\nimport { AboutRepositoryInfoComponent } from './about-repository-info/about-repository-info.component';\n\nexport const ABOUT_DIRECTIVES = [\n    AboutExtensionListComponent,\n    AboutLicenseListComponent,\n    ModuleListComponent,\n    AboutRepositoryInfoComponent,\n    PackageListComponent,\n    AboutStatusListComponent,\n    AboutServerSettingsComponent,\n    AboutPanelDirective,\n    AboutComponent\n] as const;\n\n/** @deprecated import `ABOUT_DIRECTIVES` or standalone components instead */\n@NgModule({\n    imports: [...ABOUT_DIRECTIVES],\n    exports: [...ABOUT_DIRECTIVES]\n})\nexport class AboutModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './about-extension-list/about-extension-list.component';\nexport * from './about-license-list/about-license-list.component';\nexport * from './about-module-list/module-list.component';\nexport * from './about-package/package-list.component';\nexport * from './about-server-settings/about-server-settings.component';\nexport * from './about-status-list/about-status-list.component';\nexport * from './about.component';\nexport * from './about-panel.directive';\nexport * from './about-repository-info/about-repository-info.component';\nexport * from './about-repository-info/repository-info.interface';\n\nexport * from './about.module';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, HostBinding, Input, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n    selector: 'adf-avatar',\n    imports: [CommonModule],\n    templateUrl: './avatar.component.html',\n    styleUrls: ['./avatar.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class AvatarComponent {\n    @Input()\n    src: string;\n\n    @Input()\n    initials: string = 'U';\n\n    @Input()\n    tooltip: string = '';\n\n    @HostBinding('style.--adf-avatar-size')\n    @Input()\n    size = getComputedStyle(document.documentElement).getPropertyValue('--adf-avatar-size');\n\n    @HostBinding('style.--adf-avatar-cursor')\n    @Input()\n    cursor = getComputedStyle(document.documentElement).getPropertyValue('--adf-avatar-cursor');\n}\n","<div class=\"adf-avatar\">\n    <img (error)=\"src = ''\" *ngIf=\"src; else initialsTemplate\" class=\"adf-avatar__image\" [src]=\"src\" [alt]=\"initials\" [title]=\"tooltip\" />\n</div>\n\n<ng-template #initialsTemplate>\n    <div class=\"adf-avatar__image adf-avatar__initials\" [title]=\"tooltip\">{{ initials }}</div>\n</ng-template>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable, inject } from '@angular/core';\nimport { AppExtensionService, ViewerExtensionRef } from '@alfresco/adf-extensions';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class ViewUtilService {\n    private readonly extensionService = inject(AppExtensionService);\n\n    // Extensions that are supported by the Viewer without conversion\n    private readonly extensions = {\n        image: ['png', 'jpg', 'jpeg', 'gif', 'bpm', 'svg'],\n        media: ['wav', 'mp4', 'mp3', 'webm', 'ogg'],\n        text: ['txt', 'xml', 'html', 'json', 'ts', 'css', 'md'],\n        pdf: ['pdf']\n    };\n\n    // Mime types that are supported by the Viewer without conversion\n    private readonly mimeTypes = {\n        text: ['text/plain', 'text/csv', 'text/xml', 'text/html', 'application/x-javascript'],\n        pdf: ['application/pdf'],\n        image: ['image/png', 'image/jpeg', 'image/gif', 'image/bmp', 'image/svg+xml'],\n        media: ['video/mp4', 'video/webm', 'video/ogg', 'audio/mpeg', 'audio/mp3', 'audio/ogg', 'audio/wav']\n    };\n\n    /**\n     * Returns a list of the active Viewer content extensions.\n     *\n     * @returns list of extension references\n     */\n    get viewerExtensions(): ViewerExtensionRef[] {\n        return this.extensionService.getViewerExtensions();\n    }\n\n    /**\n     * Provides a list of file extensions supported by external plugins.\n     *\n     * @returns list of extensions\n     */\n    get externalExtensions(): string[] {\n        return this.viewerExtensions.map((extension) => extension.fileExtension);\n    }\n\n    /**\n     * get File name from url\n     *\n     * @param  url - url file\n     * @returns file name portion of the url\n     */\n    getFilenameFromUrl(url: string): string {\n        const anchor = url.indexOf('#');\n        const query = url.indexOf('?');\n        const end = Math.min(anchor > 0 ? anchor : url.length, query > 0 ? query : url.length);\n        return url.substring(url.lastIndexOf('/', end) + 1, end);\n    }\n\n    /**\n     * Get file extension from the string.\n     * Supports the URL formats like:\n     * http://localhost/test.jpg?cache=1000\n     * http://localhost/test.jpg#cache=1000\n     *\n     * @param fileName - file name\n     * @returns file extension\n     */\n    getFileExtension(fileName: string): string {\n        if (fileName) {\n            const match = fileName.match(/\\.([^./?#]+)($|\\?|#)/);\n            return match ? match[1] : null;\n        }\n        return undefined;\n    }\n\n    getViewerType(extension: string, mimeType: string, extensionsSupportedByTemplates?: string[]): string {\n        let viewerType = this.getViewerTypeByExtension(extension, extensionsSupportedByTemplates);\n\n        if (viewerType === 'unknown') {\n            viewerType = this.getViewerTypeByMimeType(mimeType);\n        }\n\n        return viewerType;\n    }\n\n    getViewerTypeByMimeType(mimeType: string) {\n        if (mimeType) {\n            mimeType = mimeType.toLowerCase();\n\n            const editorTypes = Object.keys(this.mimeTypes);\n            for (const type of editorTypes) {\n                if (this.mimeTypes[type].includes(mimeType)) {\n                    return type;\n                }\n            }\n        }\n        return 'unknown';\n    }\n\n    private getViewerTypeByExtension(extension: string, extensionsSupportedByTemplates?: string[]): string {\n        if (extension) {\n            extension = extension.toLowerCase();\n        }\n\n        if (this.isExternalViewer()) {\n            return 'external';\n        }\n\n        if (this.isCustomViewerExtension(extension, extensionsSupportedByTemplates)) {\n            return 'custom';\n        }\n\n        if (this.extensions.image.includes(extension)) {\n            return 'image';\n        }\n\n        if (this.extensions.media.includes(extension)) {\n            return 'media';\n        }\n\n        if (this.extensions.text.includes(extension)) {\n            return 'text';\n        }\n\n        if (this.extensions.pdf.includes(extension)) {\n            return 'pdf';\n        }\n\n        return 'unknown';\n    }\n\n    private isExternalViewer(): boolean {\n        return this.viewerExtensions.some((extension) => extension.fileExtension === '*');\n    }\n\n    isCustomViewerExtension(extension: string, extensionsSupportedByTemplates?: string[]): boolean {\n        const extensions = this.externalExtensions || [];\n        if (extensionsSupportedByTemplates) {\n            extensions.push(...extensionsSupportedByTemplates);\n        }\n\n        if (extension && extensions.length > 0) {\n            extension = extension.toLowerCase();\n            return extensions.flat().includes(extension);\n        }\n\n        return false;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Pipe, PipeTransform, inject } from '@angular/core';\nimport { AppConfigService } from './app-config.service';\n\n@Pipe({\n    name: 'adfAppConfig'\n})\nexport class AppConfigPipe implements PipeTransform {\n    private readonly config = inject(AppConfigService);\n\n    transform(value: string, fallback?: any): any {\n        return this.config.get(value, fallback);\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable, InjectionToken, inject } from '@angular/core';\nimport { AppConfigService, AppConfigValues } from './app-config.service';\nimport { Observable, of } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\n\nexport interface StoragePrefixFactoryService {\n    getPrefix(): Observable<string | undefined>;\n}\n\nexport const STORAGE_PREFIX_FACTORY_SERVICE = new InjectionToken<StoragePrefixFactoryService>('STORAGE_PREFIX_FACTORY_SERVICE');\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class StoragePrefixFactory {\n    private readonly appConfigService = inject(AppConfigService);\n    private readonly storagePrefixFactory = inject<StoragePrefixFactoryService>(STORAGE_PREFIX_FACTORY_SERVICE, { optional: true });\n\n    getPrefix(): Observable<string | undefined> {\n        return this.appConfigService.select(AppConfigValues.STORAGE_PREFIX).pipe(\n            switchMap((prefix: string | undefined) => {\n                if (prefix) {\n                    return of(prefix);\n                }\n\n                return this.storagePrefixFactory ? this.storagePrefixFactory.getPrefix() : of(prefix);\n            })\n        );\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AppConfigService, AppConfigValues } from './app-config.service';\nimport { StorageService } from '../common/services/storage.service';\nimport { AdfHttpClient } from '@alfresco/adf-core/api';\nimport { StoragePrefixFactory } from './app-config-storage-prefix.factory';\n\n/**\n * Create a factory to load app configuration\n *\n * @param appConfigService app config service\n * @param storageService storage service\n * @param adfHttpClient http client\n * @param storagePrefixFactory prefix factory\n * @returns factory function\n */\nexport function loadAppConfig(\n    appConfigService: AppConfigService,\n    storageService: StorageService,\n    adfHttpClient: AdfHttpClient,\n    storagePrefixFactory: StoragePrefixFactory\n) {\n    const init = () => {\n        adfHttpClient.disableCsrf = appConfigService.get<boolean>(AppConfigValues.DISABLECSRF, true);\n        const withCredentials = appConfigService.get<boolean>(AppConfigValues.AUTH_WITH_CREDENTIALS);\n        if (withCredentials !== undefined && withCredentials !== null) {\n            adfHttpClient.setDefaultSecurityOption({ withCredentials });\n        }\n\n        storageService.prefix = appConfigService.get<string>(AppConfigValues.STORAGE_PREFIX, '');\n\n        storagePrefixFactory.getPrefix().subscribe((property) => {\n            storageService.prefix = property;\n        });\n    };\n    return () => appConfigService.load(init);\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable } from '@angular/core';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class CookieService {\n    cookieEnabled = false;\n\n    constructor() {\n        // for certain scenarios Chrome may say 'true' but have cookies still disabled\n        if (navigator.cookieEnabled === false) {\n            this.cookieEnabled = false;\n        }\n\n        this.setItem('test-cookie', 'test');\n        this.cookieEnabled = document.cookie.indexOf('test-cookie') >= 0;\n        this.deleteCookie('test-cookie');\n    }\n\n    /**\n     * Checks if cookies are enabled.\n     *\n     * @returns True if enabled, false otherwise\n     */\n    isEnabled(): boolean {\n        return this.cookieEnabled;\n    }\n\n    /**\n     * Retrieves a cookie by its key.\n     *\n     * @param key Key to identify the cookie\n     * @returns The cookie data or null if it is not found\n     */\n    getItem(key: string): string | null {\n        const regexp = new RegExp('(?:' + key + '|;\\\\s*' + key + ')=(.*?)(?:;|$)', 'g');\n        const result = regexp.exec(document.cookie);\n        return result === null ? null : result[1];\n    }\n\n    /**\n     * Sets a cookie.\n     *\n     * @param key Key to identify the cookie\n     * @param data Data value to set for the cookie\n     * @param expiration Expiration date of the data\n     * @param path \"Pathname\" to store the cookie\n     */\n    setItem(key: string, data: string, expiration: Date | null = null, path: string | null = null): void {\n        document.cookie = `${key}=${data}` + (expiration ? ';expires=' + expiration.toUTCString() : '') + (path ? `;path=${path}` : ';path=/');\n    }\n\n    /**\n     * Delete a cookie Key.\n     *\n     * @param key Key to identify the cookie\n     * @param path \"Pathname\" to store the cookie\n     */\n    deleteCookie(key: string, path: string | null = null): void {\n        document.cookie = key + '=; expires=Thu, 01 Jan 1970 00:00:01 GMT;' + (path ? `;path=${path}` : ';path=/');\n    }\n\n    /** Placeholder for testing purposes - do not use. */\n    clear() {\n        /* placeholder for testing purposes */\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport class LogLevelsEnum extends Number {\n    static TRACE: number = 5;\n    static DEBUG: number = 4;\n    static INFO: number = 3;\n    static WARN: number = 2;\n    static ERROR: number = 1;\n    static SILENT: number = 0;\n}\n\nexport const logLevels: any[] = [\n    { level: LogLevelsEnum.TRACE, name: 'TRACE' },\n    { level: LogLevelsEnum.DEBUG, name: 'DEBUG' },\n    { level: LogLevelsEnum.INFO, name: 'INFO' },\n    { level: LogLevelsEnum.WARN, name: 'WARN' },\n    { level: LogLevelsEnum.ERROR, name: 'ERROR' },\n    { level: LogLevelsEnum.SILENT, name: 'SILENT' }\n];\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable no-console */\n\nimport { Injectable, inject } from '@angular/core';\nimport { AppConfigService, AppConfigValues } from '../../app-config/app-config.service';\nimport { logLevels, LogLevelsEnum } from '../models/log-levels.model';\nimport { Subject } from 'rxjs';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class LogService {\n    private readonly appConfig = inject(AppConfigService);\n\n    get currentLogLevel(): number {\n        const configLevel: string = this.appConfig.get<string>(AppConfigValues.LOG_LEVEL);\n\n        if (configLevel) {\n            return this.getLogLevel(configLevel);\n        }\n\n        return LogLevelsEnum.TRACE;\n    }\n\n    onMessage: Subject<any>;\n\n    constructor() {\n        this.onMessage = new Subject();\n    }\n\n    /**\n     * Logs a message at the \"ERROR\" level.\n     *\n     * @param message Message to log\n     * @param optionalParams Interpolation values for the message in \"printf\" format\n     */\n    error(message?: any, ...optionalParams: any[]) {\n        if (this.currentLogLevel >= LogLevelsEnum.ERROR) {\n            this.messageBus(message, 'ERROR');\n\n            console.error(message, ...optionalParams);\n        }\n    }\n\n    /**\n     * Logs a message at the \"DEBUG\" level.\n     *\n     * @param message Message to log\n     * @param optionalParams Interpolation values for the message in \"printf\" format\n     */\n    debug(message?: any, ...optionalParams: any[]) {\n        if (this.currentLogLevel >= LogLevelsEnum.DEBUG) {\n            this.messageBus(message, 'DEBUG');\n\n            console.debug(message, ...optionalParams);\n        }\n    }\n\n    /**\n     * Logs a message at the \"INFO\" level.\n     *\n     * @param message Message to log\n     * @param optionalParams Interpolation values for the message in \"printf\" format\n     */\n    info(message?: any, ...optionalParams: any[]) {\n        if (this.currentLogLevel >= LogLevelsEnum.INFO) {\n            this.messageBus(message, 'INFO');\n\n            console.info(message, ...optionalParams);\n        }\n    }\n\n    /**\n     * Logs a message at any level from \"TRACE\" upwards.\n     *\n     * @param message Message to log\n     * @param optionalParams Interpolation values for the message in \"printf\" format\n     */\n    log(message?: any, ...optionalParams: any[]) {\n        if (this.currentLogLevel >= LogLevelsEnum.TRACE) {\n            this.messageBus(message, 'LOG');\n\n            console.log(message, ...optionalParams);\n        }\n    }\n\n    /**\n     * Logs a message at the \"TRACE\" level.\n     *\n     * @param message Message to log\n     * @param optionalParams Interpolation values for the message in \"printf\" format\n     */\n    trace(message?: any, ...optionalParams: any[]) {\n        if (this.currentLogLevel >= LogLevelsEnum.TRACE) {\n            this.messageBus(message, 'TRACE');\n\n            console.trace(message, ...optionalParams);\n        }\n    }\n\n    /**\n     * Logs a message at the \"WARN\" level.\n     *\n     * @param message Message to log\n     * @param optionalParams Interpolation values for the message in \"printf\" format\n     */\n    warn(message?: any, ...optionalParams: any[]) {\n        if (this.currentLogLevel >= LogLevelsEnum.WARN) {\n            this.messageBus(message, 'WARN');\n\n            console.warn(message, ...optionalParams);\n        }\n    }\n\n    /**\n     * Logs a message if a boolean test fails.\n     *\n     * @param test Test value (typically a boolean expression)\n     * @param message Message to show if test is false\n     * @param optionalParams Interpolation values for the message in \"printf\" format\n     */\n    assert(test?: boolean, message?: string, ...optionalParams: any[]) {\n        if (this.currentLogLevel !== LogLevelsEnum.SILENT) {\n            this.messageBus(message, 'ASSERT');\n\n            console.assert(test, message, ...optionalParams);\n        }\n    }\n\n    /**\n     * Starts an indented group of log messages.\n     *\n     * @param groupTitle Title shown at the start of the group\n     * @param optionalParams Interpolation values for the title in \"printf\" format\n     */\n    group(groupTitle?: string, ...optionalParams: any[]) {\n        if (this.currentLogLevel !== LogLevelsEnum.SILENT) {\n            console.group(groupTitle, ...optionalParams);\n        }\n    }\n\n    /**\n     * Ends a indented group of log messages.\n     */\n    groupEnd() {\n        if (this.currentLogLevel !== LogLevelsEnum.SILENT) {\n            console.groupEnd();\n        }\n    }\n\n    /**\n     * Converts a log level name string into its numeric equivalent.\n     *\n     * @param level Level name\n     * @returns Numeric log level\n     */\n    getLogLevel(level: string): number {\n        const referencedLevel = logLevels.find((currentLevel: any) => currentLevel.name.toLocaleLowerCase() === level.toLocaleLowerCase());\n\n        return referencedLevel ? referencedLevel.level : 5;\n    }\n\n    /**\n     * Triggers notification callback for log messages.\n     *\n     * @param text Message text\n     * @param logLevel Log level for the message\n     */\n    messageBus(text: string, logLevel: string) {\n        this.onMessage.next({ text, type: logLevel });\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Direction } from '@angular/cdk/bidi';\n\nexport interface LanguageItem {\n    key: string;\n    label: string;\n    direction?: Direction;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Type } from '@angular/core';\n\nconst getType =\n    (type: any): any =>\n    () =>\n        type;\n\nexport interface DynamicComponentModel {\n    type: string;\n}\n\nexport type DynamicComponentResolveFunction = (model: DynamicComponentModel) => Type<any>;\nexport class DynamicComponentResolver {\n    static fromType(type: Type<any>): DynamicComponentResolveFunction {\n        return getType(type);\n    }\n}\n\nexport abstract class DynamicComponentMapper {\n    protected defaultValue: Type<any> = undefined;\n    protected types: { [key: string]: DynamicComponentResolveFunction } = {};\n\n    /**\n     * Gets the currently active DynamicComponentResolveFunction for a field type.\n     *\n     * @param type The type whose resolver you want\n     * @param defaultValue Default type returned for types that are not yet mapped\n     * @returns Resolver function\n     */\n    getComponentTypeResolver(type: string, defaultValue: Type<any> = this.defaultValue): DynamicComponentResolveFunction {\n        if (type) {\n            return this.types[type] || DynamicComponentResolver.fromType(defaultValue);\n        }\n        return DynamicComponentResolver.fromType(defaultValue);\n    }\n\n    /**\n     * Sets or optionally replaces a DynamicComponentResolveFunction for a field type.\n     *\n     * @param type The type whose resolver you want to set\n     * @param resolver The new resolver function\n     * @param override The new resolver will only replace an existing one if this parameter is true\n     */\n    setComponentTypeResolver(type: string, resolver: DynamicComponentResolveFunction, override: boolean = true) {\n        if (!type) {\n            throw new Error(`type is null or not defined`);\n        }\n\n        if (!resolver) {\n            throw new Error(`resolver is null or not defined`);\n        }\n\n        const existing = this.types[type];\n        if (existing && !override) {\n            throw new Error(`already mapped, use override option if you intend replacing existing mapping.`);\n        }\n\n        this.types[type] = resolver;\n    }\n\n    /**\n     * Register multiple components\n     *\n     * @param components map of components to register\n     * @param override replace existing components\n     */\n    register(components: { [key: string]: DynamicComponentResolveFunction }, override: boolean = false) {\n        if (components) {\n            for (const type of Object.keys(components)) {\n                this.setComponentTypeResolver(type, components[type], override);\n            }\n        }\n    }\n\n    /**\n     * Finds the component type that is needed to render a form field.\n     *\n     * @param model Form field model for the field to render\n     * @param defaultValue Default type returned for field types that are not yet mapped.\n     * @returns Component type\n     */\n    resolveComponentType(model: DynamicComponentModel, defaultValue: Type<any> = this.defaultValue): Type<any> {\n        if (model) {\n            const resolver = this.getComponentTypeResolver(model.type, defaultValue);\n            return resolver(model);\n        }\n        return defaultValue;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable } from '@angular/core';\n\nexport interface HighlightTransformResult {\n    text: string;\n    changed: boolean;\n}\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class HighlightTransformService {\n    /**\n     * Searches for `search` string(s) within `text` and highlights all occurrences.\n     *\n     * @param text Text to search within\n     * @param search Text pattern to search for\n     * @param wrapperClass CSS class used to provide highlighting style\n     * @returns New text along with boolean value to indicate whether anything was highlighted\n     */\n    public highlight(text: string, search: string, wrapperClass: string = 'adf-highlight'): HighlightTransformResult {\n        let isMatching = false;\n        let result = text;\n\n        if (search && text) {\n            // eslint-disable-next-line no-useless-escape\n            let pattern = search.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n            pattern = pattern\n                .split(' ')\n                .filter((t) => t.length > 0)\n                .join('|');\n\n            const regex = new RegExp(pattern, 'gi');\n            result = this.removeHtmlTags(text).replace(regex, (match) => {\n                isMatching = true;\n                return `<span class=\"${wrapperClass}\">${match}</span>`;\n            });\n            return { text: result, changed: isMatching };\n        } else {\n            return { text: result, changed: isMatching };\n        }\n    }\n\n    private removeHtmlTags(text: string): string {\n        return text.split('>').pop().split('<')[0];\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { effect, Injectable, InjectionToken, inject } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Observable } from 'rxjs';\nimport { TranslateLoaderService } from './translate-loader.service';\nimport { UserPreferencesService, UserPreferenceValues } from '../common/services/user-preferences.service';\n\nexport const TRANSLATION_PROVIDER = new InjectionToken('Injection token for translation providers.');\n\nexport interface TranslationProvider {\n    name: string;\n    source: string;\n}\n\n/**\n * Generate translation provider\n *\n * @param id Unique identifier\n * @param path Path to translation files\n * @returns Provider\n */\nexport function provideTranslations(id: string, path: string) {\n    return {\n        provide: TRANSLATION_PROVIDER,\n        multi: true,\n        useValue: {\n            name: id,\n            source: path\n        }\n    };\n}\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class TranslationService {\n    translate = inject(TranslateService);\n    private readonly userPreferencesService = inject(UserPreferencesService);\n    private readonly providers = inject<TranslationProvider[]>(TRANSLATION_PROVIDER, { optional: true }) ?? [];\n\n    defaultLang: string;\n    userLang: string;\n    customLoader: TranslateLoaderService;\n\n    constructor() {\n        this.customLoader = this.translate.currentLoader as TranslateLoaderService;\n\n        this.defaultLang = 'en';\n        this.translate.setDefaultLang(this.defaultLang);\n        this.customLoader.setDefaultLang(this.defaultLang);\n\n        if (this.providers && this.providers.length > 0) {\n            for (const provider of this.providers) {\n                this.addTranslationFolder(provider.name, provider.source);\n            }\n        }\n\n        // Try to read locale from storage synchronously to apply it before components render\n        const storedLocale = this.userPreferencesService.get(UserPreferenceValues.Locale);\n\n        if (storedLocale) {\n            // Apply stored locale immediately during construction\n            this.userLang = storedLocale;\n            this.loadTranslation(storedLocale, this.defaultLang);\n        }\n\n        effect(() => {\n            const locale = this.userPreferencesService.localeSignal();\n\n            if (locale && locale !== this.userLang) {\n                this.userLang = locale;\n                this.loadTranslation(locale, this.defaultLang);\n            }\n        });\n    }\n\n    /**\n     * Adds a new folder of translation source files.\n     *\n     * @param name Name for the translation provider\n     * @param path Path to the folder\n     */\n    addTranslationFolder(name: string = '', path: string = '') {\n        if (!this.customLoader.providerRegistered(name)) {\n            this.customLoader.registerProvider(name, path);\n\n            if (this.userLang) {\n                this.loadTranslation(this.userLang, this.defaultLang);\n            } else {\n                this.loadTranslation(this.defaultLang);\n            }\n        }\n    }\n\n    /**\n     * Loads a translation file.\n     *\n     * @param lang Language code for the language to load\n     * @param fallback Language code to fall back to if the first one was unavailable\n     */\n    loadTranslation(lang: string, fallback?: string) {\n        this.translate.getTranslation(lang).subscribe(\n            () => {\n                this.translate.use(lang);\n                this.onTranslationChanged(lang);\n            },\n            () => {\n                if (fallback && fallback !== lang) {\n                    this.loadTranslation(fallback);\n                }\n            }\n        );\n    }\n\n    /**\n     * Triggers a notification callback when the translation language changes.\n     *\n     * @param lang The new language code\n     */\n    onTranslationChanged(lang: string): void {\n        this.translate.onTranslationChange.next({\n            lang,\n            translations: this.customLoader.getFullTranslationJSON?.(lang) ?? {}\n        });\n    }\n\n    /**\n     * Sets the target language for translations.\n     *\n     * @param lang Code name for the language\n     * @returns Translations available for the language\n     */\n    use(lang: string): Observable<any> {\n        this.customLoader.init(lang);\n        return this.translate.use(lang);\n    }\n\n    /**\n     * Gets the translation for the supplied key.\n     *\n     * @param key Key to translate\n     * @param interpolateParams String(s) to be interpolated into the main message\n     * @returns Translated text\n     */\n    get(key: string | Array<string>, interpolateParams?: any): Observable<string | any> {\n        return this.translate.get(key, interpolateParams);\n    }\n\n    /**\n     * Determines the preferred locale for the current user.\n     *\n     * @returns Locale identifier resolved from the browser or the default translation locale\n     */\n    getLocale(): string {\n        const defaultLocale = this.userLang || this.defaultLang;\n        if (typeof window?.navigator === 'undefined') {\n            return defaultLocale;\n        }\n        const wn = window.navigator as Navigator;\n        let lang = wn.languages ? wn.languages[0] : defaultLocale;\n        lang = lang || wn.language;\n        return lang;\n    }\n\n    /**\n     * Directly returns the translation for the supplied key.\n     *\n     * @param key Key to translate\n     * @param interpolateParams String(s) to be interpolated into the main message\n     * @returns Translated text\n     */\n    instant(key: string | Array<string>, interpolateParams?: any): string | any {\n        return key ? this.translate.instant(key, interpolateParams) : '';\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable, inject } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport { AppConfigService } from '../../app-config/app-config.service';\nimport { TranslationService } from '../../translation/translation.service';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class PageTitleService {\n    private readonly titleService = inject(Title);\n    private readonly appConfig = inject(AppConfigService);\n    private readonly translationService = inject(TranslationService);\n\n    private originalTitle: string = '';\n    private translatedTitle: string = '';\n\n    constructor() {\n        const translationService = this.translationService;\n\n        translationService.translate.onLangChange.subscribe(() => this.onLanguageChanged());\n        translationService.translate.onTranslationChange.subscribe(() => this.onLanguageChanged());\n    }\n\n    /**\n     * Sets the page title.\n     *\n     * @param value The new title\n     */\n    setTitle(value: string = '') {\n        this.originalTitle = value;\n        this.translatedTitle = this.translationService.instant(value);\n\n        this.updateTitle();\n    }\n\n    private onLanguageChanged() {\n        this.translatedTitle = this.translationService.instant(this.originalTitle);\n        this.updateTitle();\n    }\n\n    private updateTitle() {\n        const name = this.appConfig.get('application.name') || 'Alfresco ADF Application';\n\n        const title = this.translatedTitle ? `${this.translatedTitle} - ${name}` : `${name}`;\n        this.titleService.setTitle(title);\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* spellchecker: disable */\nimport { Injectable, inject } from '@angular/core';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nconst DEFAULT_ICON = './assets/images/ft_ic_miscellaneous.svg';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class ThumbnailService {\n    mimeTypeIcons: any = {\n        'image/png': './assets/images/ft_ic_raster_image.svg',\n        'image/jpeg': './assets/images/ft_ic_raster_image.svg',\n        'image/gif': './assets/images/ft_ic_raster_image.svg',\n        'image/bmp': './assets/images/ft_ic_raster_image.svg',\n        'image/cgm': './assets/images/ft_ic_raster_image.svg',\n        'image/ief': './assets/images/ft_ic_raster_image.svg',\n        'image/jp2': './assets/images/ft_ic_raster_image.svg',\n        'image/tiff': './assets/images/ft_ic_raster_image.svg',\n        'image/vnd.adobe.photoshop': './assets/images/ft_ic_raster_image.svg',\n        'image/vnd.adobe.premiere': './assets/images/ft_ic_raster_image.svg',\n        'image/x-cmu-raster': './assets/images/ft_ic_raster_image.svg',\n        'image/x-dwt': './assets/images/ft_ic_raster_image.svg',\n        'image/x-portable-anymap': './assets/images/ft_ic_raster_image.svg',\n        'image/x-portable-bitmap': './assets/images/ft_ic_raster_image.svg',\n        'image/x-portable-graymap': './assets/images/ft_ic_raster_image.svg',\n        'image/x-portable-pixmap': './assets/images/ft_ic_raster_image.svg',\n        'image/x-raw-adobe': './assets/images/ft_ic_raster_image.svg',\n        'image/x-raw-canon': './assets/images/ft_ic_raster_image.svg',\n        'image/x-raw-fuji': './assets/images/ft_ic_raster_image.svg',\n        'image/x-raw-hasselblad': './assets/images/ft_ic_raster_image.svg',\n        'image/x-raw-kodak': './assets/images/ft_ic_raster_image.svg',\n        'image/x-raw-leica': './assets/images/ft_ic_raster_image.svg',\n        'image/x-raw-minolta': './assets/images/ft_ic_raster_image.svg',\n        'image/x-raw-nikon': './assets/images/ft_ic_raster_image.svg',\n        'image/x-raw-olympus': './assets/images/ft_ic_raster_image.svg',\n        'image/x-raw-panasonic': './assets/images/ft_ic_raster_image.svg',\n        'image/x-raw-pentax': './assets/images/ft_ic_raster_image.svg',\n        'image/x-raw-red': './assets/images/ft_ic_raster_image.svg',\n        'image/x-raw-sigma': './assets/images/ft_ic_raster_image.svg',\n        'image/x-raw-sony': './assets/images/ft_ic_raster_image.svg',\n        'image/x-xbitmap': './assets/images/ft_ic_raster_image.svg',\n        'image/x-xpixmap': './assets/images/ft_ic_raster_image.svg',\n        'image/x-xwindowdump': './assets/images/ft_ic_raster_image.svg',\n        'image/svg+xml': './assets/images/ft_ic_vector_image.svg',\n        'application/eps': './assets/images/ft_ic_raster_image.svg',\n        'application/illustrator': './assets/images/ft_ic_raster_image.svg',\n        'application/pdf': './assets/images/ft_ic_pdf.svg',\n        'application/vnd.ms-excel': './assets/images/ft_ic_ms_excel.svg',\n        'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': './assets/images/ft_ic_ms_excel.svg',\n        'application/vnd.openxmlformats-officedocument.spreadsheetml.template': './assets/images/ft_ic_ms_excel.svg',\n        'application/vnd.ms-excel.addin.macroenabled.12': './assets/images/ft_ic_ms_excel.svg',\n        'application/vnd.ms-excel.sheet.binary.macroenabled.12': './assets/images/ft_ic_ms_excel.svg',\n        'application/vnd.ms-excel.sheet.macroenabled.12': './assets/images/ft_ic_ms_excel.svg',\n        'application/vnd.ms-excel.template.macroenabled.12': './assets/images/ft_ic_ms_excel.svg',\n        'application/vnd.sun.xml.calc': './assets/images/ft_ic_ms_excel.svg',\n        'application/vnd.sun.xml.calc.template': './assets/images/ft_ic_ms_excel.svg',\n        'application/vnd.ms-outlook': './assets/images/ft_ic_document.svg',\n        'application/msword': './assets/images/ft_ic_ms_word.svg',\n        'application/vnd.openxmlformats-officedocument.wordprocessingml.document': './assets/images/ft_ic_ms_word.svg',\n        'application/vnd.openxmlformats-officedocument.wordprocessingml.template': './assets/images/ft_ic_ms_word.svg',\n        'application/vnd.ms-word.document.macroenabled.12': './assets/images/ft_ic_ms_word.svg',\n        'application/vnd.ms-word.template.macroenabled.12': './assets/images/ft_ic_ms_word.svg',\n        'application/vnd.sun.xml.writer': './assets/images/ft_ic_ms_word.svg',\n        'application/vnd.sun.xml.writer.template': './assets/images/ft_ic_ms_word.svg',\n        'application/rtf': './assets/images/ft_ic_ms_word.svg',\n        'text/rtf': './assets/images/ft_ic_ms_word.svg',\n        'application/vnd.ms-powerpoint': './assets/images/ft_ic_ms_powerpoint.svg',\n        'application/vnd.openxmlformats-officedocument.presentationml.presentation': './assets/images/ft_ic_ms_powerpoint.svg',\n        'application/vnd.openxmlformats-officedocument.presentationml.template': './assets/images/ft_ic_ms_powerpoint.svg',\n        'application/vnd.openxmlformats-officedocument.presentationml.slideshow': './assets/images/ft_ic_ms_powerpoint.svg',\n        'application/vnd.oasis.opendocument.presentation': './assets/images/ft_ic_ms_powerpoint.svg',\n        'application/vnd.oasis.opendocument.presentation-template': './assets/images/ft_ic_ms_powerpoint.svg',\n        'application/vnd.openxmlformats-officedocument.presentationml.slide': './assets/images/ft_ic_ms_powerpoint.svg',\n        'application/vnd.sun.xml.impress': './assets/images/ft_ic_ms_powerpoint.svg',\n        'application/vnd.sun.xml.impress.template': './assets/images/ft_ic_ms_powerpoint.svg',\n        'application/vnd.oasis.opendocument.spreadsheet': './assets/images/ft_ic_ms_excel.svg',\n        'application/vnd.oasis.opendocument.spreadsheet-template': './assets/images/ft_ic_ms_excel.svg',\n        'application/vnd.ms-powerpoint.addin.macroenabled.12': './assets/images/ft_ic_ms_powerpoint.svg',\n        'application/vnd.ms-powerpoint.presentation.macroenabled.12': './assets/images/ft_ic_ms_powerpoint.svg',\n        'application/vnd.ms-powerpoint.slide.macroenabled.12': './assets/images/ft_ic_ms_powerpoint.svg',\n        'application/vnd.ms-powerpoint.slideshow.macroenabled.12': './assets/images/ft_ic_ms_powerpoint.svg',\n        'application/vnd.ms-powerpoint.template.macroenabled.12': './assets/images/ft_ic_ms_powerpoint.svg',\n        'video/mp4': './assets/images/ft_ic_video.svg',\n        'video/3gpp': './assets/images/ft_ic_video.svg',\n        'video/3gpp2': './assets/images/ft_ic_video.svg',\n        'video/mp2t': './assets/images/ft_ic_video.svg',\n        'video/mpeg': './assets/images/ft_ic_video.svg',\n        'video/mpeg2': './assets/images/ft_ic_video.svg',\n        'video/ogg': './assets/images/ft_ic_video.svg',\n        'video/quicktime': './assets/images/ft_ic_video.svg',\n        'video/webm': './assets/images/ft_ic_video.svg',\n        'video/x-flv': './assets/images/ft_ic_video.svg',\n        'video/x-m4v': './assets/images/ft_ic_video.svg',\n        'video/x-ms-asf': './assets/images/ft_ic_video.svg',\n        'video/x-ms-wmv': './assets/images/ft_ic_video.svg',\n        'video/x-msvideo': './assets/images/ft_ic_video.svg',\n        'video/x-rad-screenplay': './assets/images/ft_ic_video.svg',\n        'video/x-sgi-movie': './assets/images/ft_ic_video.svg',\n        'video/x-matroska': './assets/images/ft_ic_video.svg',\n        'audio/mpeg': './assets/images/ft_ic_audio.svg',\n        'audio/ogg': './assets/images/ft_ic_audio.svg',\n        'audio/wav': './assets/images/ft_ic_audio.svg',\n        'audio/basic': './assets/images/ft_ic_audio.svg',\n        'audio/mp3': './assets/images/ft_ic_audio.svg',\n        'audio/mp4': './assets/images/ft_ic_audio.svg',\n        'audio/vnd.adobe.soundbooth': './assets/images/ft_ic_audio.svg',\n        'audio/vorbis': './assets/images/ft_ic_audio.svg',\n        'audio/x-aiff': './assets/images/ft_ic_audio.svg',\n        'audio/x-flac': './assets/images/ft_ic_audio.svg',\n        'audio/x-ms-wma': './assets/images/ft_ic_audio.svg',\n        'audio/x-wav': './assets/images/ft_ic_audio.svg',\n        'x-world/x-vrml': './assets/images/ft_ic_video.svg',\n        'text/plain': './assets/images/ft_ic_document.svg',\n        'application/vnd.oasis.opendocument.text': './assets/images/ft_ic_document.svg',\n        'application/vnd.oasis.opendocument.text-template': './assets/images/ft_ic_document.svg',\n        'application/x-javascript': './assets/images/ft_ic_document.svg',\n        'application/json': './assets/images/ft_ic_document.svg',\n        'text/csv': './assets/images/ft_ic_document.svg',\n        'text/xml': './assets/images/ft_ic_document.svg',\n        'text/html': './assets/images/ft_ic_website.svg',\n        'application/x-compressed': './assets/images/ft_ic_archive.svg',\n        'application/x-zip-compressed': './assets/images/ft_ic_archive.svg',\n        'application/zip': './assets/images/ft_ic_archive.svg',\n        'application/x-tar': './assets/images/ft_ic_archive.svg',\n        'application/vnd.apple.keynote': './assets/images/ft_ic_presentation.svg',\n        'application/vnd.apple.pages': './assets/images/ft_ic_document.svg',\n        'application/vnd.apple.numbers': './assets/images/ft_ic_spreadsheet.svg',\n        'application/vnd.visio': './assets/images/ft_ic_document.svg',\n        'application/wordperfect': './assets/images/ft_ic_document.svg',\n        'application/x-cpio': './assets/images/ft_ic_document.svg',\n        folder: './assets/images/ft_ic_folder.svg',\n        smartFolder: './assets/images/ft_ic_smart_folder.svg',\n        ruleFolder: './assets/images/ft_ic_folder_rule.svg',\n        linkFolder: './assets/images/ft_ic_folder_shortcut_link.svg',\n        'disable/folder': './assets/images/ft_ic_folder_disable.svg',\n        selected: './assets/images/ft_ic_selected.svg',\n        'dynamic-feed': './assets/images/dynamic_feed-24px.svg',\n        'ic-process': './assets/images/ic-process.svg',\n        'save-as': './assets/images/save-as.svg',\n        save: './assets/images/save.svg',\n        task: './assets/images/task.svg',\n        'multipart/related': './assets/images/ft_ic_website.svg'\n    };\n\n    constructor() {\n        const matIconRegistry = inject(MatIconRegistry);\n        const sanitizer = inject(DomSanitizer);\n\n        Object.keys(this.mimeTypeIcons).forEach((key) => {\n            const url = sanitizer.bypassSecurityTrustResourceUrl(this.mimeTypeIcons[key]);\n\n            matIconRegistry.addSvgIcon(key, url);\n            matIconRegistry.addSvgIconInNamespace('adf', key, url);\n        });\n    }\n\n    /**\n     * Gets a thumbnail URL for a MIME type.\n     *\n     * @param mimeType MIME type for the thumbnail\n     * @returns URL string\n     */\n    public getMimeTypeIcon(mimeType: string): string {\n        const icon = this.mimeTypeIcons[mimeType];\n        return icon || DEFAULT_ICON;\n    }\n\n    /**\n     * Gets a \"miscellaneous\" thumbnail URL for types with no other icon defined.\n     *\n     * @returns URL string\n     */\n    getDefaultMimeTypeIcon(): string {\n        return DEFAULT_ICON;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable } from '@angular/core';\n\nexport interface SortableByCategoryItem {\n    name?: string;\n    category?: string;\n}\n\nexport interface ItemsByCategory<T> {\n    category: string;\n    items: T[];\n}\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class SortByCategoryMapperService<T extends SortableByCategoryItem = SortableByCategoryItem> {\n    private defaultCategories: string[] = [];\n\n    mapItems(items: T[], defaultCategories: string[]): ItemsByCategory<T>[] {\n        this.defaultCategories = defaultCategories;\n\n        const sortedItems = this.sortItems(items);\n        const itemsByCategory = this.mapItemsByCategory(sortedItems);\n        const itemsSortedByCategory = this.sortCategories(itemsByCategory);\n\n        return itemsSortedByCategory;\n    }\n\n    private mapItemsByCategory(items: T[]): ItemsByCategory<T>[] {\n        const itemsByCategoryObject: { [category: string]: T[] } = {};\n\n        items.forEach((item) => {\n            const category = this.mapItemDefaultCategory(item);\n            if (!itemsByCategoryObject[category]) {\n                itemsByCategoryObject[category] = [];\n            }\n\n            itemsByCategoryObject[category].push(item);\n        });\n\n        const itemsByCategory: ItemsByCategory<T>[] = Object.keys(itemsByCategoryObject).map((key) => {\n            const category = key;\n            return { category, items: itemsByCategoryObject[category] };\n        });\n\n        return itemsByCategory;\n    }\n\n    private sortItems(items: T[]): T[] {\n        return items.sort((itemA, itemB) => itemA.name.localeCompare(itemB.name));\n    }\n\n    private sortCategories(itemsByCategory: ItemsByCategory<T>[]): ItemsByCategory<T>[] {\n        return itemsByCategory.sort((itemA, itemB) => {\n            if (itemB.category === '' && itemA.category === '') {\n                return 0;\n            }\n\n            if (itemA.category === '') {\n                return 1;\n            }\n\n            if (itemB.category === '') {\n                return -1;\n            }\n\n            return itemA.category.localeCompare(itemB.category);\n        });\n    }\n\n    private mapItemDefaultCategory(listItem: SortableByCategoryItem): string {\n        const itemCategory = listItem.category;\n\n        if (!this.isDefaultCategory(itemCategory)) {\n            return itemCategory ?? '';\n        }\n\n        return '';\n    }\n\n    private isDefaultCategory(category?: string): boolean {\n        return category ? this.defaultCategories.includes(category) : false;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable } from '@angular/core';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class DownloadService {\n    private readonly saveData: any;\n\n    constructor() {\n        this.saveData = (() => {\n            const a = document.createElement('a');\n            document.body.appendChild(a);\n            a.style.display = 'none';\n\n            return (fileData, format, fileName) => {\n                let blob = null;\n\n                if (format === 'blob' || format === 'data') {\n                    blob = new Blob([fileData], { type: 'octet/stream' });\n                }\n\n                if (format === 'object' || format === 'json') {\n                    const json = JSON.stringify(fileData);\n                    blob = new Blob([json], { type: 'octet/stream' });\n                }\n\n                if (blob) {\n                    if (window.navigator?.['msSaveOrOpenBlob']) {\n                        window.navigator['msSaveOrOpenBlob'](blob, fileName);\n                    } else {\n                        const url = window.URL.createObjectURL(blob);\n                        a.href = url;\n                        a.download = fileName;\n                        a.click();\n\n                        window.URL.revokeObjectURL(url);\n                    }\n                }\n            };\n        })();\n    }\n\n    /**\n     * Invokes content download for a Blob with a file name.\n     *\n     * @param blob Content to download.\n     * @param fileName Name of the resulting file.\n     */\n    downloadBlob(blob: Blob, fileName: string): void {\n        this.saveData(blob, 'blob', fileName);\n    }\n\n    /**\n     * Invokes content download for a data array with a file name.\n     *\n     * @param data Data to download.\n     * @param fileName Name of the resulting file.\n     */\n    downloadData(data: any, fileName: string): void {\n        this.saveData(data, 'data', fileName);\n    }\n\n    /**\n     * Invokes content download for a JSON object with a file name.\n     *\n     * @param json JSON object to download.\n     * @param fileName Name of the resulting file.\n     */\n    downloadJSON(json: any, fileName: string): void {\n        this.saveData(json, 'json', fileName);\n    }\n\n    /**\n     * Invokes the download of the file by its URL address.\n     *\n     * @param url Url address pointing to the file.\n     * @param fileName Name of the file download.\n     */\n    downloadUrl(url: string, fileName: string): void {\n        if (url && fileName) {\n            const link = document.createElement('a');\n\n            link.style.display = 'none';\n            link.download = fileName;\n            link.href = url;\n\n            document.body.appendChild(link);\n            link.click();\n            document.body.removeChild(link);\n        }\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable, inject } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class UrlService {\n    private readonly sanitizer = inject(DomSanitizer);\n\n    /**\n     * Creates a trusted object URL from the Blob.\n     * WARNING: calling this method with untrusted user data exposes your application to XSS security risks!\n     *\n     * @param  blob Data to wrap into object URL\n     * @returns URL string\n     */\n    createTrustedUrl(blob: Blob): string {\n        const url = window.URL.createObjectURL(blob);\n        return this.sanitizer.bypassSecurityTrustUrl(url) as string;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ElementRef } from '@angular/core';\nimport { Subject } from 'rxjs';\n\ninterface Node {\n    id: string;\n}\n\ninterface NodeEntry {\n    entry: Node;\n}\n\ninterface NodePagingList {\n    entries?: NodeEntry[];\n}\n\ninterface NodePaging {\n    list?: NodePagingList;\n}\n\nexport interface SearchComponentInterface {\n\n    panel: ElementRef;\n    showPanel: boolean;\n    results: NodePaging;\n    isOpen: boolean;\n    keyPressedStream: Subject<string>;\n    displayWith: ((value: any) => string) | null;\n\n    resetResults(): void;\n    hidePanel(): void;\n    setVisibility(): void;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable } from '@angular/core';\nimport { AppConfigService, Status } from '../../app-config/app-config.service';\n\n@Injectable()\nexport class AppConfigServiceMock extends AppConfigService {\n    constructor() {\n        super();\n\n        this.config = {\n            application: {\n                name: 'Alfresco ADF Application',\n                storagePrefix: 'ADF_APP'\n            },\n            ecmHost: 'http://{hostname}{:port}/ecm',\n            bpmHost: 'http://{hostname}{:port}/bpm',\n            logLevel: 'silent'\n        };\n    }\n\n    load(callback?: (...args: any[]) => any): Promise<any> {\n        return new Promise((resolve) => {\n            this.status = Status.LOADED;\n            callback?.();\n            resolve(this.config);\n            this.onDataLoaded();\n        });\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './services/cookie.service';\nexport * from './services/log.service';\nexport * from './services/storage.service';\nexport * from './services/user-preferences.service';\nexport * from './services/language-item.interface';\nexport * from './services/dynamic-component-mapper.service';\nexport * from './services/highlight-transform.service';\nexport * from './services/page-title.service';\nexport * from './services/thumbnail.service';\nexport * from './services/sort-by-category.service';\nexport * from './services/download.service';\nexport * from './services/url.service';\n\nexport * from './models/log-levels.model';\nexport * from './models/default-languages.model';\n\nexport * from './interface/search-component.interface';\n\nexport * from './mock/app-config.service.mock';\n\nexport * from './utils';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { inject, provideAppInitializer, Provider, EnvironmentProviders } from '@angular/core';\nimport { StoragePrefixFactory } from './app-config-storage-prefix.factory';\nimport { loadAppConfig } from './app-config.loader';\nimport { AppConfigService } from './app-config.service';\nimport { StorageService } from '../common';\nimport { AdfHttpClient } from '@alfresco/adf-core/api';\n\n/**\n * Provides the application configuration for the application.\n *\n * @returns An array of providers to initialize the application configuration.\n */\nexport function provideAppConfig(): (Provider | EnvironmentProviders)[] {\n    return [\n        StoragePrefixFactory,\n        provideAppInitializer(() => {\n            const initializerFn = loadAppConfig(\n                inject(AppConfigService),\n                inject(StorageService),\n                inject(AdfHttpClient),\n                inject(StoragePrefixFactory)\n            );\n            return initializerFn();\n        })\n    ];\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './app-config.service';\nexport * from './app-config.pipe';\nexport * from './app-config-storage-prefix.factory';\n\nexport * from './provide-app-config';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n    selector: 'adf-toolbar-divider',\n    template: '<div></div>',\n    host: { class: 'adf-toolbar-divider' },\n    styles: [\n        `\n            .adf-toolbar-divider > div {\n                height: 24px;\n                width: 1px;\n                background: rgba(0, 0, 0, 0.26);\n                margin-left: 5px;\n                margin-right: 5px;\n            }\n        `\n    ],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ToolbarDividerComponent {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component } from '@angular/core';\n\n@Component({\n    selector: 'adf-toolbar-title',\n    template: '<ng-content />',\n    host: { class: 'adf-toolbar-title' }\n})\nexport class ToolbarTitleComponent {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { NgIf } from '@angular/common';\n\n@Component({\n    selector: 'adf-toolbar',\n    templateUrl: './toolbar.component.html',\n    styleUrls: ['./toolbar.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    imports: [MatToolbarModule, TranslatePipe, NgIf],\n    host: { class: 'adf-toolbar' }\n})\nexport class ToolbarComponent {\n    /** Toolbar title. */\n    @Input()\n    title: string = '';\n\n    /** Toolbar color. Can be changed to empty value (default), `primary`, `accent` or `warn`. */\n    @Input()\n    color: ThemePalette;\n}\n","<mat-toolbar class=\"adf-toolbar-container adf-toolbar-container-row\" [color]=\"color\">\n    <span class=\"adf-toolbar-title\" *ngIf=\"title\">{{ title | translate }}</span>\n    <ng-content select=\"adf-toolbar-title\" />\n    <ng-content />\n</mat-toolbar>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NgModule } from '@angular/core';\nimport { ToolbarDividerComponent } from './toolbar-divider.component';\nimport { ToolbarTitleComponent } from './toolbar-title.component';\nimport { ToolbarComponent } from './toolbar.component';\n\nexport const TOOLBAR_DIRECTIVES = [ToolbarComponent, ToolbarTitleComponent, ToolbarDividerComponent] as const;\n\n/** @deprecated use `...TOOLBAR_DIRECTIVES` or import standalone components */\n@NgModule({\n    imports: [...TOOLBAR_DIRECTIVES],\n    exports: [...TOOLBAR_DIRECTIVES]\n})\nexport class ToolbarModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './toolbar-divider.component';\nexport * from './toolbar-title.component';\nexport * from './toolbar.component';\n\nexport * from './toolbar.module';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { InjectionToken } from '@angular/core';\nimport { IconAliasMap } from './icon-alias-map.type';\n\nexport const ICON_ALIAS_MAP_TOKEN = new InjectionToken<IconAliasMap>('icon_alias_map');\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Directive, ElementRef, inject, Input, OnChanges } from '@angular/core';\nimport { MatIcon } from '@angular/material/icon';\nimport { ICON_ALIAS_MAP_TOKEN } from './icon-alias-map.token';\n\n@Directive({\n    selector: 'mat-icon[adf-icon]',\n    standalone: false\n})\nexport class IconDirective implements OnChanges {\n    private readonly matIcon = inject(MatIcon);\n    private readonly elementRef: ElementRef<HTMLElement> = inject(ElementRef);\n    private readonly aliasMap = inject(ICON_ALIAS_MAP_TOKEN, { optional: true });\n\n    @Input('adf-icon') name: string;\n\n    ngOnChanges() {\n        const iconAlias = this.aliasMap?.[this.name];\n\n        iconAlias ? this.setSvgIcon(iconAlias) : this.appendLigatureText();\n    }\n\n    private setSvgIcon(icon: string) {\n        this.matIcon.svgIcon = icon;\n    }\n\n    private appendLigatureText() {\n        this.resetSvgIcon();\n\n        const element = this.elementRef.nativeElement;\n        const textNode = this.findTextNode(element);\n\n        if (textNode) {\n            textNode.nodeValue = this.name;\n        } else {\n            this.elementRef.nativeElement.appendChild(document.createTextNode(this.name));\n        }\n    }\n\n    private findTextNode(element: HTMLElement): ChildNode | undefined {\n        return Array.from(element.childNodes).find((node: ChildNode) => node.nodeType === Node.TEXT_NODE);\n    }\n\n    private resetSvgIcon() {\n        this.matIcon.svgIcon = null;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NgModule } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { IconDirective } from './icon.directive';\n\n@NgModule({\n    declarations: [IconDirective],\n    imports: [MatIconModule],\n    exports: [MatIconModule, IconDirective]\n})\nexport class IconModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NgIf } from '@angular/common';\nimport {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    EventEmitter,\n    HostListener,\n    Input,\n    OnChanges,\n    OnDestroy,\n    Output,\n    SimpleChanges,\n    ViewChild,\n    ViewEncapsulation,\n    inject\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport Cropper from 'cropperjs';\nimport { AppConfigService } from '../../../app-config';\nimport { UrlService } from '../../../common';\nimport { ToolbarComponent } from '../../../toolbar';\nimport { IconModule } from '../../../icon/icon.module';\n\n@Component({\n    selector: 'adf-img-viewer',\n    templateUrl: './img-viewer.component.html',\n    styleUrls: ['./img-viewer.component.scss'],\n    host: { class: 'adf-image-viewer' },\n    imports: [ToolbarComponent, TranslatePipe, IconModule, MatButtonModule, NgIf],\n    encapsulation: ViewEncapsulation.None\n})\nexport class ImgViewerComponent implements AfterViewInit, OnChanges, OnDestroy {\n    private readonly appConfigService = inject(AppConfigService);\n    private readonly urlService = inject(UrlService);\n\n    @Input()\n    showToolbar = true;\n\n    @Input()\n    readOnly = true;\n\n    @Input()\n    allowedEditActions: { [key: string]: boolean } = {\n        rotate: true,\n        crop: true\n    };\n\n    @Input()\n    urlFile: string;\n\n    @Input()\n    blobFile: Blob;\n\n    @Input()\n    fileName: string;\n\n    // eslint-disable-next-line @angular-eslint/no-output-native\n    @Output()\n    error = new EventEmitter<void>();\n\n    // eslint-disable-next-line @angular-eslint/no-output-native\n    @Output()\n    submit = new EventEmitter<Blob>();\n\n    @Output()\n    isSaving = new EventEmitter<boolean>();\n\n    @Output()\n    imageLoaded = new EventEmitter<void>();\n\n    @ViewChild('image', { static: false })\n    imageElement: ElementRef;\n\n    @HostListener('document:keyup', ['$event'])\n    onKeyDown(event: KeyboardEvent) {\n        if (this.destroyed || !this.cropper) {\n            return;\n        }\n        switch (event.key) {\n            case 'ArrowLeft': {\n                this.handleArrowLeftKey(event);\n                break;\n            }\n            case 'ArrowUp': {\n                this.handleArrowUpKey(event);\n                break;\n            }\n            case 'ArrowRight': {\n                this.handleArrowRightKey(event);\n                break;\n            }\n            case 'ArrowDown': {\n                this.handleArrowDownKey(event);\n                break;\n            }\n            case 'i': {\n                this.zoomIn();\n                break;\n            }\n            case 'o': {\n                this.zoomOut();\n                break;\n            }\n            case 'r': {\n                this.rotateImage();\n                break;\n            }\n            default:\n        }\n    }\n\n    @HostListener('document:fullscreenchange')\n    fullScreenChangeHandler() {\n        if (document.fullscreenElement) {\n            this.reset();\n        }\n    }\n\n    scale: number = 1.0;\n    cropper: Cropper;\n    isEditing: boolean = false;\n    private destroyed: boolean = false;\n\n    get currentScaleText(): string {\n        return Math.round(this.scale * 100) + '%';\n    }\n\n    constructor() {\n        this.initializeScaling();\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        const blobFile = changes['blobFile'];\n        if (blobFile?.currentValue) {\n            this.urlFile = this.urlService.createTrustedUrl(this.blobFile);\n            return;\n        }\n\n        if (!changes['urlFile'].firstChange) {\n            if (changes['urlFile'].previousValue !== changes['urlFile'].currentValue) {\n                this.cropper.replace(changes['urlFile'].currentValue);\n            }\n        }\n\n        if (!this.urlFile && !this.blobFile) {\n            throw new Error('Attribute urlFile or blobFile is required');\n        }\n    }\n\n    ngAfterViewInit() {\n        this.cropper = new Cropper(this.imageElement.nativeElement, {\n            autoCrop: false,\n            checkOrientation: false,\n            dragMode: 'move',\n            background: false,\n            scalable: true,\n            zoomOnWheel: true,\n            toggleDragModeOnDblclick: false,\n            viewMode: 1,\n            checkCrossOrigin: false,\n            ready: () => {\n                this.updateCanvasContainer();\n            }\n        });\n    }\n\n    ngOnDestroy() {\n        this.destroyed = true;\n        if (this.cropper) {\n            this.cropper.destroy();\n            this.cropper = null;\n        }\n    }\n\n    initializeScaling() {\n        const scaling = this.appConfigService.get<number>('adf-viewer-render.image-viewer-scaling', undefined) / 100;\n        if (scaling) {\n            this.scale = scaling;\n        }\n    }\n\n    zoomIn() {\n        if (this.destroyed || !this.cropper) {\n            return;\n        }\n        this.cropper.zoom(0.2);\n        this.scale = +(this.scale + 0.2).toFixed(1);\n    }\n\n    zoomOut() {\n        if (this.destroyed || !this.cropper) {\n            return;\n        }\n        if (this.scale > 0.2) {\n            this.cropper.zoom(-0.2);\n            this.scale = +(this.scale - 0.2).toFixed(1);\n        }\n    }\n\n    rotateImage() {\n        if (this.destroyed || !this.cropper) {\n            return;\n        }\n        this.isEditing = true;\n        this.cropper.rotate(-90);\n    }\n\n    cropImage() {\n        this.isEditing = true;\n        this.cropper.setDragMode('crop');\n        this.cropper.crop();\n    }\n\n    save() {\n        this.isSaving.emit(true);\n        this.isEditing = false;\n        this.cropper.setDragMode('move');\n        this.cropper.getCroppedCanvas().toBlob((blob) => {\n            this.submit.emit(blob);\n            this.cropper.replace(this.cropper.getCroppedCanvas().toDataURL());\n            this.cropper.clear();\n            this.isSaving.emit(false);\n        });\n    }\n\n    reset() {\n        this.isEditing = false;\n        this.cropper.clear();\n        this.cropper.reset();\n        this.cropper.setDragMode('move');\n        this.scale = 1;\n        this.updateCanvasContainer();\n    }\n\n    updateCanvasContainer() {\n        if (this.imageElement.nativeElement.width < this.cropper.getContainerData().width) {\n            const width = this.imageElement.nativeElement.width;\n            const height = this.imageElement.nativeElement.height;\n            const top = (this.cropper.getContainerData().height - this.imageElement.nativeElement.height) / 2;\n            const left = (this.cropper.getContainerData().width - this.imageElement.nativeElement.width) / 2;\n\n            this.cropper.setCanvasData({\n                width,\n                height,\n                top,\n                left\n            });\n        }\n    }\n\n    onImageError() {\n        this.error.emit();\n    }\n\n    private handleArrowLeftKey(event: KeyboardEvent) {\n        event.preventDefault();\n        if (event.shiftKey) {\n            this.changeCropBoxArea(-3, 3, 0, 0);\n        } else if (event.altKey) {\n            this.changeCropBoxArea(3, -3, 0, 0);\n        } else {\n            this.cropper.move(-3, 0);\n        }\n    }\n\n    private handleArrowUpKey(event: KeyboardEvent) {\n        event.preventDefault();\n        if (event.shiftKey) {\n            this.changeCropBoxArea(0, 0, -3, 3);\n        } else if (event.altKey) {\n            this.changeCropBoxArea(0, 0, 3, -3);\n        } else {\n            this.cropper.move(0, -3);\n        }\n    }\n\n    private handleArrowRightKey(event: KeyboardEvent) {\n        event.preventDefault();\n        if (event.shiftKey) {\n            this.changeCropBoxArea(0, 3, 0, 0);\n        } else if (event.altKey) {\n            this.changeCropBoxArea(0, -3, 0, 0);\n        } else {\n            this.cropper.move(3, 0);\n        }\n    }\n\n    private handleArrowDownKey(event: KeyboardEvent) {\n        event.preventDefault();\n        if (event.shiftKey) {\n            this.changeCropBoxArea(0, 0, 0, 3);\n        } else if (event.altKey) {\n            this.changeCropBoxArea(0, 0, 0, -3);\n        } else {\n            this.cropper.move(0, 3);\n        }\n    }\n\n    private changeCropBoxArea(left: number, width: number, top: number, height: number) {\n        const cropBoxData = this.cropper.getCropBoxData();\n        cropBoxData.left += left;\n        cropBoxData.width += width;\n        cropBoxData.top += top;\n        cropBoxData.height += height;\n        this.cropper.setCropBoxData(cropBoxData);\n    }\n}\n","<div id=\"adf-image-container\"\n     (keydown)=\"onKeyDown($event)\"\n     class=\"adf-image-container\"\n     tabindex=\"0\"\n     role=\"img\"\n     [attr.aria-label]=\"fileName\"\n     data-automation-id=\"adf-image-container\">\n    <img #image id=\"viewer-image\"\n         [src]=\"urlFile\"\n         [alt]=\"fileName\"\n         (load)=\"imageLoaded.emit()\"\n         (error)=\"onImageError()\" />\n</div>\n\n<div class=\"adf-image-viewer__toolbar\" *ngIf=\"showToolbar\">\n    <adf-toolbar class=\"adf-main-toolbar\">\n        <button id=\"viewer-zoom-out-button\"\n                title=\"{{ 'ADF_VIEWER.ARIA.ZOOM_OUT' | translate }}\"\n                attr.aria-label=\"{{ 'ADF_VIEWER.ARIA.ZOOM_OUT' | translate }}\"\n                mat-icon-button\n                (click)=\"zoomOut()\">\n            <mat-icon adf-icon=\"zoom_out\" />\n        </button>\n\n        <div class=\"adf-image-viewer__toolbar-page-scale\" data-automation-id=\"adf-page-scale\">\n            {{ currentScaleText }}\n        </div>\n\n        <button id=\"viewer-zoom-in-button\"\n                mat-icon-button\n                title=\"{{ 'ADF_VIEWER.ARIA.ZOOM_IN' | translate }}\"\n                attr.aria-label=\"{{ 'ADF_VIEWER.ARIA.ZOOM_IN' | translate }}\"\n                (click)=\"zoomIn()\">\n            <mat-icon adf-icon=\"zoom_in\" />\n        </button>\n\n        <button *ngIf=\"!readOnly && allowedEditActions.rotate\" id=\"viewer-rotate-button\"\n                title=\"{{ 'ADF_VIEWER.ARIA.ROTATE' | translate }}\"\n                attr.aria-label=\"{{ 'ADF_VIEWER.ARIA.ROTATE' | translate }}\"\n                mat-icon-button\n                (click)=\"rotateImage()\">\n            <mat-icon adf-icon=\"rotate_left\" />\n        </button>\n        <button *ngIf=\"!readOnly && allowedEditActions.crop\" id=\"viewer-crop-button\"\n                title=\"{{ 'ADF_VIEWER.ARIA.CROP' | translate }}\"\n                attr.aria-label=\"{{ 'ADF_VIEWER.ARIA.CROP' | translate }}\"\n                mat-icon-button\n                (click)=\"cropImage()\">\n            <mat-icon adf-icon=\"crop\" />\n        </button>\n\n        <button id=\"viewer-reset-button\"\n                title=\"{{ 'ADF_VIEWER.ARIA.RESET' | translate }}\"\n                attr.aria-label=\"{{ 'ADF_VIEWER.ARIA.RESET' | translate }}\"\n                mat-icon-button\n                (click)=\"reset()\">\n            <mat-icon adf-icon=\"zoom_out_map\" />\n        </button>\n\n    </adf-toolbar>\n\n    <adf-toolbar class=\"adf-secondary-toolbar\" *ngIf=\"isEditing && !readOnly\">\n        <button id=\"viewer-cancel-button\"\n                title=\"{{ 'ADF_VIEWER.ARIA.CANCEL' | translate }}\"\n                attr.aria-label=\"{{ 'ADF_VIEWER.ARIA.CANCEL' | translate }}\"\n                mat-icon-button\n                (click)=\"reset()\">\n            <mat-icon adf-icon=\"close\" />\n        </button>\n\n        <button id=\"viewer-save-button\"\n                title=\"{{ 'ADF_VIEWER.ARIA.SAVE' | translate }}\"\n                attr.aria-label=\"{{ 'ADF_VIEWER.ARIA.SAVE' | translate }}\"\n                mat-icon-button\n                (click)=\"save()\">\n            <mat-icon adf-icon=\"check\" />\n        </button>\n\n    </adf-toolbar>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NgClass, NgForOf } from '@angular/common';\nimport { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges, ViewEncapsulation, inject } from '@angular/core';\nimport { UrlService } from '../../../common';\nimport { Track } from '../../models/viewer.model';\n\n@Component({\n    selector: 'adf-media-player',\n    templateUrl: './media-player.component.html',\n    styleUrls: ['./media-player.component.scss'],\n    host: { class: 'adf-media-player' },\n    imports: [NgClass, NgForOf],\n    encapsulation: ViewEncapsulation.None\n})\nexport class MediaPlayerComponent implements OnChanges {\n    private readonly urlService = inject(UrlService);\n\n    @Input()\n    urlFile: string;\n\n    @Input()\n    blobFile: Blob;\n\n    @Input()\n    mimeType: string;\n\n    @Input()\n    fileName: string;\n\n    /** media subtitles for the media player*/\n    @Input()\n    tracks: Track[] = [];\n\n    @Output()\n    error = new EventEmitter<Event>();\n\n    @Output()\n    canPlay = new EventEmitter<void>();\n\n    ngOnChanges(changes: SimpleChanges) {\n        const blobFile = changes['blobFile'];\n\n        if (blobFile?.currentValue) {\n            this.urlFile = this.urlService.createTrustedUrl(this.blobFile);\n            return;\n        }\n\n        if (!this.urlFile && !this.blobFile) {\n            throw new Error('Attribute urlFile or blobFile is required');\n        }\n    }\n\n    onMediaPlayerError(event: Event) {\n        this.error.emit(event);\n    }\n}\n","<video controls class=\"adf-video-player\" (canplay)=\"canPlay.emit()\"\n       [ngClass]=\"{ 'adf-audio-file': mimeType && mimeType.startsWith('audio') }\">\n    <source [src]=\"urlFile\"\n            [type]=\"mimeType\"\n            (error)=\"onMediaPlayerError($event)\" />\n    <track *ngFor=\"let track of tracks\"\n           [kind]=\"track.kind\"\n           [label]=\"track.label\"\n           [srclang]=\"track.srclang\"\n           [src]=\"track.src\" />\n</video>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NgIf } from '@angular/common';\nimport { Component, OnInit, ViewEncapsulation, inject } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';\nimport { ReactiveFormsModule, UntypedFormControl, Validators } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { IconModule } from '../../../icon/icon.module';\n\ndeclare const pdfjsLib: { PasswordResponses: { NEED_PASSWORD: number; INCORRECT_PASSWORD: number } };\n\n@Component({\n    selector: 'adf-pdf-viewer-password-dialog',\n    templateUrl: './pdf-viewer-password-dialog.html',\n    styleUrls: ['./pdf-viewer-password-dialog.scss'],\n    imports: [MatDialogModule, IconModule, MatFormFieldModule, MatInputModule, ReactiveFormsModule, TranslatePipe, NgIf, MatButtonModule],\n    encapsulation: ViewEncapsulation.None\n})\nexport class PdfPasswordDialogComponent implements OnInit {\n    private readonly dialogRef = inject<MatDialogRef<PdfPasswordDialogComponent>>(MatDialogRef);\n    data = inject(MAT_DIALOG_DATA);\n\n    passwordFormControl: UntypedFormControl;\n\n    ngOnInit() {\n        this.passwordFormControl = new UntypedFormControl('', [Validators.required]);\n    }\n\n    isError(): boolean {\n        return this.data.reason === pdfjsLib.PasswordResponses.INCORRECT_PASSWORD;\n    }\n\n    isValid(): boolean {\n        return !this.passwordFormControl.hasError('required');\n    }\n\n    submit(): void {\n        this.dialogRef.close(this.passwordFormControl.value);\n    }\n}\n","<div mat-dialog-title>\n    <mat-icon adf-icon=\"lock\" />\n</div>\n\n<mat-dialog-content>\n    <form (submit)=\"submit()\">\n        <mat-form-field class=\"adf-full-width\">\n            <input matInput\n                   data-automation-id='adf-password-dialog-input'\n                   type=\"password\"\n                   placeholder=\"{{ 'ADF_VIEWER.PDF_DIALOG.PLACEHOLDER' | translate }}\"\n                   [formControl]=\"passwordFormControl\" />\n        </mat-form-field>\n\n        <mat-error *ngIf=\"isError()\" data-automation-id='adf-password-dialog-error'>{{ 'ADF_VIEWER.PDF_DIALOG.ERROR' | translate }}</mat-error>\n    </form>\n</mat-dialog-content>\n\n<mat-dialog-actions class=\"adf-dialog-buttons\">\n    <span class=\"adf-fill-remaining-space\"></span>\n\n    <button mat-button mat-dialog-close data-automation-id='adf-password-dialog-close'>{{ 'ADF_VIEWER.PDF_DIALOG.CLOSE' | translate }}</button>\n\n    <button mat-button\n            data-automation-id='adf-password-dialog-submit'\n            class=\"adf-dialog-action-button\"\n            [disabled]=\"!isValid()\"\n            (click)=\"submit()\">\n        {{ 'ADF_VIEWER.PDF_DIALOG.SUBMIT' | translate }}\n    </button>\n</mat-dialog-actions>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable } from '@angular/core';\nimport type { PDFViewer } from 'pdfjs-dist/types/web/pdf_viewer';\nimport type { PDFThumbnailViewer } from 'pdfjs-dist/types/web/pdf_thumbnail_viewer';\nimport type { PDFPageView } from 'pdfjs-dist/types/web/pdf_page_view';\n\ninterface VisiblePage {\n    id: number;\n}\n\ninterface VisiblePages {\n    first?: VisiblePage;\n    last?: VisiblePage;\n    views?: Array<{ view: PDFPageView }>;\n}\n\n/**\n * Type helper for accessing the resume method on PDFPageView.\n * PDFPageView implements IRenderableView which includes a resume method,\n * but the TypeScript definitions don't properly expose it.\n */\n// cspell:ignore Renderable\ninterface ResumableView {\n    resume?: () => void;\n}\n\n/**\n *\n * RenderingQueueServices rendering of the views for pages and thumbnails.\n *\n */\n@Injectable()\nexport class RenderingQueueServices {\n    renderingStates = {\n        INITIAL: 0,\n        RUNNING: 1,\n        PAUSED: 2,\n        FINISHED: 3\n    };\n\n    CLEANUP_TIMEOUT: number = 30_000;\n\n    pdfViewer: PDFViewer | null = null;\n    pdfThumbnailViewer: PDFThumbnailViewer | null = null;\n    onIdle: (() => void) | null = null;\n\n    highestPriorityPage: string | null = null;\n    idleTimeout: number | null = null;\n    printing = false;\n    isThumbnailViewEnabled = false;\n\n    /**\n     * Set the instance of the PDF Viewer\n     *\n     * @param pdfViewer viewer instance\n     */\n    setViewer(pdfViewer: PDFViewer): void {\n        this.pdfViewer = pdfViewer;\n    }\n\n    /**\n     * Sets the instance of the PDF Thumbnail Viewer\n     *\n     * @param pdfThumbnailViewer viewer instance\n     */\n    setThumbnailViewer(pdfThumbnailViewer: PDFThumbnailViewer): void {\n        this.pdfThumbnailViewer = pdfThumbnailViewer;\n    }\n\n    /**\n     * Check if the view has highest rendering priority\n     *\n     * @param view view to render\n     * @returns `true` if the view has higher priority, otherwise `false`\n     */\n    isHighestPriority(view: PDFPageView): boolean {\n        return this.highestPriorityPage === view.renderingId;\n    }\n\n    renderHighestPriority(currentlyVisiblePages?: unknown): void {\n        if (this.idleTimeout) {\n            clearTimeout(this.idleTimeout);\n            this.idleTimeout = null;\n        }\n\n        // Pages have a higher priority than thumbnails, so check them first.\n        if (this.pdfViewer?.forceRendering(currentlyVisiblePages)) {\n            return;\n        }\n        // No pages needed rendering so check thumbnails.\n        if (this.pdfThumbnailViewer && this.isThumbnailViewEnabled && this.pdfThumbnailViewer.forceRendering()) {\n            return;\n        }\n\n        if (this.printing) {\n            // If printing is currently ongoing do not reschedule cleanup.\n            return;\n        }\n\n        if (this.onIdle) {\n            // Type assertion needed: setTimeout returns NodeJS.Timeout in Node types,\n            // but returns number at runtime in browser (where this code executes).\n            // PDFRenderingQueue interface requires idleTimeout to be number.\n            this.idleTimeout = setTimeout(this.onIdle.bind(this), this.CLEANUP_TIMEOUT) as unknown as number;\n        }\n    }\n\n    /**\n     * Gets the highest priority page to render from the visible pages\n     * This method is part of the PDFRenderingQueue interface compatibility\n     *\n     * @param visible visible pages information\n     * @param views array of page views\n     * @param scrolledDown whether the user scrolled down\n     * @returns the highest priority page view to render, null if all done, or false if no visible pages\n     */\n    getHighestPriority(visible: VisiblePages, views: PDFPageView[], scrolledDown: boolean): PDFPageView | null | false {\n        // The state has changed figure out which page has the highest priority to\n        // render next (if any).\n        // Priority:\n        // 1 visible pages\n        // 2 if last scrolled down page after the visible pages\n        // 2 if last scrolled up page before the visible pages\n        const visibleViews = visible.views;\n\n        if (!visibleViews) {\n            return false;\n        }\n\n        const numberVisible = visibleViews.length;\n        if (numberVisible === 0) {\n            return false;\n        }\n        for (let i = 0; i < numberVisible; ++i) {\n            const view = visibleViews[i].view;\n            if (!this.isViewFinished(view)) {\n                return view;\n            }\n        }\n\n        // All the visible views have rendered, try to render next/previous pages.\n        if (scrolledDown && visible.last) {\n            const nextPageIndex = visible.last.id;\n            // ID's start at 1 so no need to add 1.\n            if (views[nextPageIndex] && !this.isViewFinished(views[nextPageIndex])) {\n                return views[nextPageIndex];\n            }\n        } else if (visible.first) {\n            const previousPageIndex = visible.first.id - 2;\n            if (views[previousPageIndex] && !this.isViewFinished(views[previousPageIndex])) {\n                return views[previousPageIndex];\n            }\n        }\n        // Everything that needs to be rendered has been.\n        return null;\n    }\n\n    hasViewer(): boolean {\n        return !!this.pdfViewer;\n    }\n\n    /**\n     * Checks if the view rendering is finished\n     *\n     * @param view the View instance to check\n     * @returns `true` if rendering is finished, otherwise `false`\n     */\n    isViewFinished(view: PDFPageView): boolean {\n        return view.renderingState === this.renderingStates.FINISHED;\n    }\n\n    /**\n     * Render a page or thumbnail view. This calls the appropriate function\n     * based on the views state. If the view is already rendered it will return\n     * false.\n     *\n     * @param view View instance to render\n     * @returns the rendered state of the view\n     */\n    renderView(view: PDFPageView): boolean {\n        const state = view.renderingState;\n        switch (state) {\n            case this.renderingStates.FINISHED: {\n                return false;\n            }\n            case this.renderingStates.PAUSED: {\n                this.highestPriorityPage = view.renderingId;\n                const resumableView = view as unknown as ResumableView;\n                if (resumableView.resume) {\n                    resumableView.resume();\n                }\n                break;\n            }\n            case this.renderingStates.RUNNING: {\n                this.highestPriorityPage = view.renderingId;\n                break;\n            }\n            case this.renderingStates.INITIAL: {\n                this.highestPriorityPage = view.renderingId;\n                const continueRendering = () => {\n                    this.renderHighestPriority();\n                };\n                view.draw().then(continueRendering, continueRendering);\n                break;\n            }\n            default: {\n                break;\n            }\n        }\n        return true;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FocusableOption } from '@angular/cdk/a11y';\nimport { AsyncPipe, NgIf } from '@angular/common';\nimport { Component, ElementRef, Input, OnInit, ViewEncapsulation, inject } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n@Component({\n    selector: 'adf-pdf-thumb',\n    templateUrl: './pdf-viewer-thumb.component.html',\n    encapsulation: ViewEncapsulation.None,\n    imports: [AsyncPipe, TranslatePipe, NgIf],\n    host: { tabindex: '0' }\n})\nexport class PdfThumbComponent implements OnInit, FocusableOption {\n    private readonly sanitizer = inject(DomSanitizer);\n    private readonly element = inject(ElementRef);\n\n    @Input()\n    page: any;\n\n    image$: Promise<string>;\n\n    ngOnInit() {\n        this.image$ = this.page.getPage().then((page) => this.getThumb(page));\n    }\n\n    focus() {\n        this.element.nativeElement.focus();\n    }\n\n    private getThumb(page): Promise<string> {\n        const viewport = page.getViewport({ scale: 1 });\n\n        const canvas = this.getCanvas();\n        const scale = Math.min(canvas.height / viewport.height, canvas.width / viewport.width);\n\n        return page\n            .render({\n                canvasContext: canvas.getContext('2d'),\n                viewport: page.getViewport({ scale })\n            })\n            .promise.then(() => {\n                const imageSource = canvas.toDataURL();\n                return this.sanitizer.bypassSecurityTrustUrl(imageSource);\n            });\n    }\n\n    private getCanvas(): HTMLCanvasElement {\n        const canvas = document.createElement('canvas');\n        canvas.width = this.page.getWidth();\n        canvas.height = this.page.getHeight();\n        return canvas;\n    }\n}\n","<ng-container *ngIf=\"image$ | async as image\">\n    <img [src]=\"image\" role=\"button\"\n         [alt]=\"'ADF_VIEWER.SIDEBAR.THUMBNAILS.PAGE' | translate: { pageNum: page.id }\"\n         title=\"{{ 'ADF_VIEWER.SIDEBAR.THUMBNAILS.PAGE' | translate: { pageNum: page.id } }}\"\n         [attr.aria-label]=\"'ADF_VIEWER.SIDEBAR.THUMBNAILS.PAGE' | translate: { pageNum: page.id }\">\n</ng-container>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FocusKeyManager } from '@angular/cdk/a11y';\nimport { DOWN_ARROW, ESCAPE, TAB, UP_ARROW } from '@angular/cdk/keycodes';\nimport { DOCUMENT, NgClass } from '@angular/common';\nimport {\n    AfterViewInit,\n    Component,\n    ContentChild,\n    ElementRef,\n    EventEmitter,\n    HostListener,\n    Input,\n    OnDestroy,\n    OnInit,\n    Output,\n    QueryList,\n    TemplateRef,\n    ViewChildren,\n    ViewEncapsulation,\n    inject\n} from '@angular/core';\nimport { delay } from 'rxjs/operators';\nimport { PdfThumbComponent } from '../pdf-viewer-thumb/pdf-viewer-thumb.component';\n\n@Component({\n    selector: 'adf-pdf-thumbnails',\n    templateUrl: './pdf-viewer-thumbnails.component.html',\n    styleUrls: ['./pdf-viewer-thumbnails.component.scss'],\n    host: { class: 'adf-pdf-thumbnails' },\n    imports: [PdfThumbComponent, NgClass],\n    encapsulation: ViewEncapsulation.None\n})\nexport class PdfThumbListComponent implements OnInit, AfterViewInit, OnDestroy {\n    private readonly element = inject(ElementRef);\n    private readonly document = inject(DOCUMENT);\n\n    @Input({ required: true }) pdfViewer: any;\n\n    @Output()\n    close = new EventEmitter<void>();\n\n    virtualHeight: number = 0;\n    translateY: number = 0;\n    renderItems: any[] = [];\n    width: number = 91;\n    currentHeight: number = 0;\n\n    private items: any[] = [];\n    private readonly margin: number = 15;\n    private itemHeight: number = 114 + this.margin;\n    private previouslyFocusedElement: HTMLElement | null = null;\n    private keyManager: FocusKeyManager<PdfThumbComponent>;\n\n    @ContentChild(TemplateRef)\n    template: TemplateRef<unknown>;\n\n    @ViewChildren(PdfThumbComponent)\n    thumbsList: QueryList<PdfThumbComponent>;\n\n    @HostListener('keydown', ['$event'])\n    onKeydown(event: KeyboardEvent): void {\n        const keyCode = event.keyCode;\n\n        if (keyCode === UP_ARROW && this.canSelectPreviousItem()) {\n            this.pdfViewer.currentPageNumber -= 1;\n        }\n\n        if (keyCode === DOWN_ARROW && this.canSelectNextItem()) {\n            this.pdfViewer.currentPageNumber += 1;\n        }\n\n        if (keyCode === TAB) {\n            if (this.canSelectNextItem()) {\n                this.pdfViewer.currentPageNumber += 1;\n            } else {\n                this.close.emit();\n            }\n        }\n\n        if (keyCode === ESCAPE) {\n            this.close.emit();\n        }\n\n        this.keyManager.setFocusOrigin('keyboard');\n        event.preventDefault();\n    }\n\n    @HostListener('window:resize')\n    onResize() {\n        this.calculateItems();\n    }\n\n    constructor() {\n        this.calculateItems = this.calculateItems.bind(this);\n        this.onPageChange = this.onPageChange.bind(this);\n    }\n\n    ngOnInit() {\n        /* cspell:disable-next-line */\n        this.pdfViewer.eventBus.on('pagechanging', this.onPageChange);\n        this.element.nativeElement.addEventListener('scroll', this.calculateItems, true);\n\n        this.setHeight(this.pdfViewer.currentPageNumber);\n        this.items = this.getPages();\n        this.calculateItems();\n\n        this.previouslyFocusedElement = this.document.activeElement as HTMLElement;\n    }\n\n    ngAfterViewInit() {\n        this.keyManager = new FocusKeyManager(this.thumbsList);\n\n        this.thumbsList.changes.pipe(delay(0)).subscribe(() => this.keyManager.setActiveItem(this.getPageIndex(this.pdfViewer.currentPageNumber)));\n\n        setTimeout(() => {\n            this.scrollInto(this.pdfViewer.currentPageNumber);\n            this.keyManager.setActiveItem(this.getPageIndex(this.pdfViewer.currentPageNumber));\n        }, 0);\n    }\n\n    ngOnDestroy() {\n        this.element.nativeElement.removeEventListener('scroll', this.calculateItems, true);\n        /* cspell:disable-next-line */\n        this.pdfViewer.eventBus.on('pagechanging', this.onPageChange);\n\n        if (this.previouslyFocusedElement) {\n            this.previouslyFocusedElement.focus();\n            this.previouslyFocusedElement = null;\n        }\n    }\n\n    isSelected(pageNumber: number) {\n        return this.pdfViewer.currentPageNumber === pageNumber;\n    }\n\n    goTo(pageNumber: number) {\n        this.pdfViewer.currentPageNumber = pageNumber;\n    }\n\n    scrollInto(pageNumber: number) {\n        if (this.items.length) {\n            const index: number = this.items.findIndex((element) => element.id === pageNumber);\n\n            if (index < 0 || index >= this.items.length) {\n                return;\n            }\n\n            this.element.nativeElement.scrollTop = index * this.itemHeight;\n\n            this.calculateItems();\n        }\n    }\n\n    getPages(): any[] {\n        // eslint-disable-next-line no-underscore-dangle\n        return this.pdfViewer._pages.map((page) => ({\n            id: page.id,\n            getWidth: () => this.width,\n            getHeight: () => this.currentHeight,\n            getPage: () => this.pdfViewer.pdfDocument.getPage(page.id)\n        }));\n    }\n\n    private setHeight(id: number): Promise<void> {\n        return this.pdfViewer.pdfDocument.getPage(id).then((page) => this.calculateHeight(page));\n    }\n\n    private calculateHeight(page) {\n        const viewport = page.getViewport({ scale: 1 });\n        const pageRatio = viewport.width / viewport.height;\n        const height = Math.floor(this.width / pageRatio);\n\n        this.currentHeight = height;\n        this.itemHeight = height + this.margin;\n    }\n\n    private calculateItems() {\n        const { element, viewPort, itemsInView } = this.getContainerSetup();\n\n        const indexByScrollTop = ((element.scrollTop / viewPort) * this.items.length) / itemsInView;\n\n        const start = Math.floor(indexByScrollTop);\n\n        const end = Math.ceil(indexByScrollTop) + itemsInView;\n\n        this.translateY = this.itemHeight * Math.ceil(start);\n        this.virtualHeight = this.itemHeight * this.items.length - this.translateY;\n        this.renderItems = this.items.slice(start, end);\n    }\n\n    private getContainerSetup() {\n        const element = this.element.nativeElement;\n        const elementRec = element.getBoundingClientRect();\n        const itemsInView = Math.ceil(elementRec.height / this.itemHeight);\n        const viewPort = (this.itemHeight * this.items.length) / itemsInView;\n\n        return {\n            element,\n            viewPort,\n            itemsInView\n        };\n    }\n\n    private onPageChange(event: any) {\n        const index = this.renderItems.findIndex((element) => element.id === event.pageNumber);\n\n        if (index < 0) {\n            this.scrollInto(event.pageNumber);\n        }\n\n        if (index >= this.renderItems.length - 1) {\n            this.element.nativeElement.scrollTop += this.itemHeight;\n        }\n\n        this.keyManager.setActiveItem(this.getPageIndex(event.pageNumber));\n    }\n\n    private getPageIndex(pageNumber: number): number {\n        const thumbsListArray = this.thumbsList.toArray();\n        return thumbsListArray.findIndex((el) => el.page.id === pageNumber);\n    }\n\n    private canSelectNextItem(): boolean {\n        return this.pdfViewer.currentPageNumber !== this.pdfViewer.pagesCount;\n    }\n\n    private canSelectPreviousItem(): boolean {\n        return this.pdfViewer.currentPageNumber !== 1;\n    }\n}\n","<div class=\"adf-pdf-thumbnails__content\"\n     data-automation-id='adf-thumbnails-content'\n     [style.height.px]=\"virtualHeight\"\n     [style.transform]=\"'translate(-50%, ' + translateY + 'px)'\">\n     @for (page of renderItems; track page.id) {\n        <adf-pdf-thumb\n            class=\"adf-pdf-thumbnails__thumb\"\n            [id]=\"page.id\"\n            [ngClass]=\"{'adf-pdf-thumbnails__thumb--selected' : isSelected(page.id)}\"\n            [page]=\"page\"\n            (click)=\"goTo(page.id)\" />\n    }\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @typescript-eslint/naming-convention */\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable @angular-eslint/no-output-native */\n\nimport { NgIf, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport {\n    Component,\n    EventEmitter,\n    HostListener,\n    inject,\n    InjectionToken,\n    Input,\n    OnChanges,\n    OnDestroy,\n    Output,\n    SimpleChanges,\n    TemplateRef,\n    ViewEncapsulation\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { TranslatePipe, TranslateService } from '@ngx-translate/core';\nimport { from, Subject, switchMap } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { AppConfigService } from '../../../app-config';\nimport { ToolbarComponent, ToolbarDividerComponent } from '../../../toolbar';\nimport { RenderingQueueServices } from '../../services/rendering-queue.services';\nimport { PdfPasswordDialogComponent } from '../pdf-viewer-password-dialog/pdf-viewer-password-dialog';\nimport { PdfThumbListComponent } from '../pdf-viewer-thumbnails/pdf-viewer-thumbnails.component';\nimport * as pdfjsLib from 'pdfjs-dist/build/pdf.min.mjs';\nimport { PDFDateString } from 'pdfjs-dist/build/pdf.min.mjs';\nimport { EventBus, PDFViewer } from 'pdfjs-dist/web/pdf_viewer.mjs';\nimport { OnProgressParameters, PDFDocumentLoadingTask, PDFDocumentProxy, PDFPageProxy } from 'pdfjs-dist/types/src/display/api';\nimport { IconModule } from '../../../icon/icon.module';\n\nexport type PdfScaleMode = 'init' | 'page-actual' | 'page-width' | 'page-height' | 'page-fit' | 'auto';\n\nexport interface PageChangingEvent {\n    pageNumber: number;\n    source?: {\n        container?: {\n            id?: string;\n        };\n    };\n}\n\nexport interface PdfThumbnailPage {\n    id: number;\n    getWidth: () => number;\n    getHeight: () => number;\n    getPage: () => Promise<PDFPageProxy>;\n}\n\nexport interface PdfAnnotationData {\n    titleObj?: {\n        str?: string;\n    };\n    modificationDate?: string;\n}\n\nexport interface PdfAnnotationWithTitle extends PdfAnnotationData {\n    titleObj: {\n        str: string;\n    };\n}\n\nexport const PDFJS_MODULE = new InjectionToken('PDFJS_MODULE', { factory: () => pdfjsLib });\nexport const PDFJS_VIEWER_MODULE = new InjectionToken('PDFJS_VIEWER_MODULE', { factory: () => PDFViewer });\n\n@Component({\n    selector: 'adf-pdf-viewer',\n    templateUrl: './pdf-viewer.component.html',\n    styleUrls: ['./pdf-viewer-host.component.scss', './pdf-viewer.component.scss'],\n    providers: [RenderingQueueServices],\n    host: { class: 'adf-pdf-viewer' },\n    imports: [\n        MatButtonModule,\n        IconModule,\n        TranslatePipe,\n        PdfThumbListComponent,\n        NgIf,\n        NgTemplateOutlet,\n        MatProgressBarModule,\n        NgStyle,\n        ToolbarComponent,\n        ToolbarDividerComponent\n    ],\n    encapsulation: ViewEncapsulation.None\n})\nexport class PdfViewerComponent implements OnChanges, OnDestroy {\n    @Input()\n    urlFile: string;\n\n    @Input()\n    blobFile: Blob;\n\n    @Input()\n    fileName: string;\n\n    @Input()\n    showToolbar: boolean = true;\n\n    @Input()\n    allowThumbnails = false;\n\n    @Input()\n    thumbnailsTemplate: TemplateRef<unknown> = null;\n\n    @Input()\n    cacheType: string = '';\n\n    @Output()\n    rendered = new EventEmitter<void>();\n\n    @Output()\n    error = new EventEmitter<void>();\n\n    @Output()\n    close = new EventEmitter<void>();\n\n    @Output()\n    pagesLoaded = new EventEmitter<void>();\n\n    page: number;\n    displayPage: number;\n    totalPages: number;\n    loadingPercent: number;\n    pdfViewer: PDFViewer;\n    pdfJsWorkerUrl: string;\n    pdfJsWorkerInstance: Worker;\n    currentScaleMode: PdfScaleMode = 'init';\n\n    MAX_AUTO_SCALE: number = 1.25;\n    DEFAULT_SCALE_DELTA: number = 1.1;\n    MIN_SCALE: number = 0.25;\n    MAX_SCALE: number = 10.0;\n\n    loadingTask: PDFDocumentLoadingTask;\n    isPanelDisabled = true;\n    showThumbnails: boolean = false;\n    pdfThumbnailsContext: { viewer: PDFViewer | null } = { viewer: null };\n    randomPdfId: string;\n    documentOverflow = false;\n\n    get currentScaleText(): string {\n        const currentScaleValueStr = this.pdfViewer?.currentScaleValue;\n        const scaleNumber = Number(currentScaleValueStr);\n\n        const currentScaleText = scaleNumber ? `${Math.round(scaleNumber * 100)}%` : '';\n\n        return currentScaleText;\n    }\n\n    private readonly pdfjsLib = inject(PDFJS_MODULE);\n    private readonly pdfjsViewer = inject(PDFJS_VIEWER_MODULE);\n\n    private readonly eventBus = new EventBus();\n    private readonly pdfjsDefaultOptions = {\n        disableAutoFetch: true,\n        disableStream: true,\n        cMapUrl: './cmaps/',\n        cMapPacked: true,\n        wasmUrl: './wasm/'\n    };\n    private readonly pdfjsWorkerDestroy$ = new Subject<boolean>();\n\n    private readonly dialog = inject(MatDialog);\n    private readonly renderingQueueServices = inject(RenderingQueueServices);\n    private readonly appConfigService = inject(AppConfigService);\n\n    private readonly translateService = inject(TranslateService);\n\n    constructor() {\n        // needed to preserve \"this\" context\n        this.onPageChange = this.onPageChange.bind(this);\n        this.onPagesLoaded = this.onPagesLoaded.bind(this);\n        this.onPageRendered = this.onPageRendered.bind(this);\n\n        this.randomPdfId = Date.now().toString();\n        this.pdfjsWorkerDestroy$\n            .pipe(\n                catchError(() => null),\n                switchMap(() => from(this.destroyPfdJsWorker()))\n            )\n            .subscribe(() => {});\n    }\n\n    getUserScaling(): number {\n        let scaleConfig = this.appConfigService.get<number>('adf-viewer.pdf-viewer-scaling', undefined);\n\n        if (scaleConfig) {\n            scaleConfig = scaleConfig / 100;\n            scaleConfig = this.checkLimits(scaleConfig);\n        }\n\n        return scaleConfig;\n    }\n\n    checkLimits(scaleConfig: number): number {\n        if (scaleConfig > this.MAX_SCALE) {\n            return this.MAX_SCALE;\n        } else if (scaleConfig < this.MIN_SCALE) {\n            return this.MIN_SCALE;\n        } else {\n            return scaleConfig;\n        }\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        const blobFile = changes['blobFile'];\n\n        if (blobFile?.currentValue) {\n            const reader = new FileReader();\n            reader.onload = async () => {\n                const pdfOptions = {\n                    ...this.pdfjsDefaultOptions,\n                    data: reader.result,\n                    withCredentials: this.appConfigService.get<boolean>('auth.withCredentials', undefined),\n                    isEvalSupported: false\n                };\n                this.executePdf(pdfOptions);\n            };\n            reader.readAsArrayBuffer(blobFile.currentValue);\n        }\n\n        const urlFile = changes['urlFile'];\n        if (urlFile?.currentValue) {\n            const pdfOptions: {\n                url: string;\n                withCredentials: boolean | undefined;\n                isEvalSupported: boolean;\n                httpHeaders?: { 'Cache-Control': string };\n            } & typeof this.pdfjsDefaultOptions = {\n                ...this.pdfjsDefaultOptions,\n                url: urlFile.currentValue,\n                withCredentials: this.appConfigService.get<boolean>('auth.withCredentials', undefined),\n                isEvalSupported: false\n            };\n            if (this.cacheType) {\n                pdfOptions.httpHeaders = {\n                    'Cache-Control': this.cacheType\n                };\n            }\n            this.executePdf(pdfOptions);\n        }\n\n        if (!this.urlFile && !this.blobFile) {\n            throw new Error('Attribute urlFile or blobFile is required');\n        }\n    }\n\n    executePdf(pdfOptions: Parameters<typeof this.pdfjsLib.getDocument>[0]) {\n        this.setupPdfJsWorker().then(() => {\n            this.loadingTask = this.pdfjsLib.getDocument(pdfOptions);\n\n            this.loadingTask.onPassword = (callback, reason) => {\n                this.onPdfPassword(callback, reason);\n            };\n\n            this.loadingTask.onProgress = (progressData: OnProgressParameters) => {\n                const level = progressData.loaded / progressData.total;\n                this.loadingPercent = Math.round(level * 100);\n            };\n\n            this.isPanelDisabled = true;\n\n            this.loadingTask.promise\n                .then((pdfDocument) => {\n                    this.totalPages = pdfDocument.numPages;\n                    this.page = 1;\n                    this.displayPage = 1;\n                    this.initPDFViewer(pdfDocument);\n\n                    return pdfDocument.getPage(1);\n                })\n                .then(() => {\n                    setTimeout(() => this.scalePage('init'));\n                })\n                .catch(() => this.error.emit());\n        });\n    }\n\n    private async setupPdfJsWorker(): Promise<void> {\n        if (this.pdfJsWorkerInstance) {\n            await this.destroyPfdJsWorker();\n        } else if (!this.pdfJsWorkerUrl) {\n            this.pdfJsWorkerUrl = await this.getPdfJsWorker();\n        }\n        this.pdfJsWorkerInstance = new Worker(this.pdfJsWorkerUrl, { type: 'module' });\n        this.pdfjsLib.GlobalWorkerOptions.workerPort = this.pdfJsWorkerInstance;\n    }\n\n    private async getPdfJsWorker(): Promise<string> {\n        const response = await fetch('./pdf.worker.min.mjs');\n        const workerScript = await response.text();\n        const blob = new Blob([workerScript], { type: 'application/javascript' });\n        return URL.createObjectURL(blob);\n    }\n\n    initPDFViewer(pdfDocument: PDFDocumentProxy) {\n        const viewer: HTMLDivElement = this.getViewer();\n        const container = this.getDocumentContainer();\n\n        if (viewer && container) {\n            this.pdfViewer = new this.pdfjsViewer({\n                container,\n                viewer,\n                renderingQueue: this.renderingQueueServices,\n                eventBus: this.eventBus,\n                annotationMode: 1\n            });\n\n            // cspell: disable-next\n            this.eventBus.on('pagechanging', this.onPageChange);\n            // cspell: disable-next\n            this.eventBus.on('pagesloaded', this.onPagesLoaded);\n            // cspell: disable-next\n            this.eventBus.on('textlayerrendered', () => {\n                this.onPageRendered();\n            });\n            this.eventBus.on('pagerendered', () => {\n                this.onPageRendered();\n            });\n            this.eventBus.on('annotationlayerrendered', (event) =>\n                this.handleNotRecognizedAnnotations(pdfDocument, event.source.div, event.pageNumber)\n            );\n\n            this.renderingQueueServices.setViewer(this.pdfViewer);\n            this.pdfViewer.setDocument(pdfDocument);\n            this.pdfThumbnailsContext.viewer = this.pdfViewer;\n        }\n    }\n\n    ngOnDestroy() {\n        if (this.pdfViewer) {\n            // cspell: disable-next\n            this.eventBus.off('pagechanging', () => {});\n            // cspell: disable-next\n            this.eventBus.off('pagesloaded', () => {});\n            // cspell: disable-next\n            this.eventBus.off('textlayerrendered', () => {});\n        }\n\n        if (this.loadingTask) {\n            this.pdfjsWorkerDestroy$.next(true);\n        }\n        this.pdfjsWorkerDestroy$.complete();\n        this.revokePdfJsWorkerUrl();\n    }\n\n    private async destroyPfdJsWorker() {\n        if (this.loadingTask.destroy) {\n            await this.loadingTask.destroy();\n        }\n        if (this.pdfJsWorkerInstance) {\n            this.pdfJsWorkerInstance.terminate();\n        }\n        this.loadingTask = null;\n    }\n\n    private revokePdfJsWorkerUrl(): void {\n        URL.revokeObjectURL(this.pdfJsWorkerUrl);\n    }\n\n    toggleThumbnails() {\n        this.showThumbnails = !this.showThumbnails;\n    }\n\n    /**\n     * Method to scale the page current support implementation\n     *\n     * @param scaleMode - new scale mode\n     */\n    scalePage(scaleMode: PdfScaleMode) {\n        this.currentScaleMode = scaleMode;\n\n        const viewerContainer = this.getMainContainer();\n        const documentContainer = this.getDocumentContainer();\n\n        if (this.pdfViewer && documentContainer) {\n            let widthContainer: number;\n            let heightContainer: number;\n\n            if (viewerContainer && viewerContainer.clientWidth <= documentContainer.clientWidth) {\n                widthContainer = viewerContainer.clientWidth;\n                heightContainer = viewerContainer.clientHeight;\n            } else {\n                widthContainer = documentContainer.clientWidth;\n                heightContainer = documentContainer.clientHeight;\n            }\n\n            const currentPage = this.pdfViewer._pages[this.pdfViewer._currentPageNumber - 1];\n\n            const padding = 20;\n            const pageWidthScale = ((widthContainer - padding) / currentPage.width) * currentPage.scale;\n            const pageHeightScale = ((heightContainer - padding) / currentPage.width) * currentPage.scale;\n\n            let scale: number;\n            switch (this.currentScaleMode) {\n                case 'init':\n                case 'page-fit': {\n                    scale = this.getUserScaling();\n                    if (!scale) {\n                        scale = this.autoScaling(pageHeightScale, pageWidthScale);\n                    }\n                    break;\n                }\n                case 'page-actual': {\n                    scale = 1;\n                    break;\n                }\n                case 'page-width': {\n                    scale = pageWidthScale;\n                    break;\n                }\n                case 'page-height': {\n                    scale = pageHeightScale;\n                    break;\n                }\n                case 'auto': {\n                    scale = this.autoScaling(pageHeightScale, pageWidthScale);\n                    break;\n                }\n                default:\n                    return;\n            }\n\n            this.setScaleUpdatePages(scale);\n        }\n    }\n\n    private autoScaling(pageHeightScale: number, pageWidthScale: number) {\n        let horizontalScale: number;\n        if (this.isLandscape) {\n            horizontalScale = Math.min(pageHeightScale, pageWidthScale);\n        } else {\n            horizontalScale = pageWidthScale;\n        }\n        horizontalScale = Math.round(horizontalScale);\n        const scale = Math.min(this.MAX_AUTO_SCALE, horizontalScale);\n        return this.checkPageFitInContainer(scale);\n    }\n\n    private getMainContainer(): HTMLElement {\n        return document.getElementById(`${this.randomPdfId}-viewer-main-container`);\n    }\n\n    private getDocumentContainer(): HTMLDivElement {\n        return document.getElementById(`${this.randomPdfId}-viewer-pdf-viewer`) as HTMLDivElement;\n    }\n\n    private getViewer(): HTMLDivElement {\n        return document.getElementById(`${this.randomPdfId}-viewer-viewerPdf`) as HTMLDivElement;\n    }\n\n    checkPageFitInContainer(scale: number): number {\n        const documentContainerSize = this.getDocumentContainer();\n        const page = this.pdfViewer._pages[this.pdfViewer._currentPageNumber - 1];\n\n        if (page.width > documentContainerSize.clientWidth) {\n            scale = Math.fround((documentContainerSize.clientWidth - 20) / page.width);\n            if (scale < this.MIN_SCALE) {\n                scale = this.MIN_SCALE;\n            }\n        }\n\n        return scale;\n    }\n\n    setDocumentOverflow() {\n        const documentContainerSize = this.getDocumentContainer();\n        const page = this.pdfViewer._pages[this.pdfViewer._currentPageNumber - 1];\n\n        this.documentOverflow = page.width > documentContainerSize.clientWidth;\n    }\n\n    /**\n     * Update all the pages with the newScale scale\n     *\n     * @param newScale - new scale page\n     */\n    setScaleUpdatePages(newScale: number) {\n        if (this.pdfViewer) {\n            if (!this.isSameScale(this.pdfViewer.currentScaleValue, newScale.toString())) {\n                this.pdfViewer.currentScaleValue = newScale.toString();\n            }\n            this.pdfViewer.update();\n        }\n        this.setDocumentOverflow();\n    }\n\n    /**\n     * Check if the request scale of the page is the same for avoid useless re-rendering\n     *\n     * @param oldScale - old scale page\n     * @param newScale - new scale page\n     * @returns `true` if the scale is the same, otherwise `false`\n     */\n    isSameScale(oldScale: string, newScale: string): boolean {\n        return newScale === oldScale;\n    }\n\n    /**\n     * Check if is a land scape view\n     *\n     * @param width target width\n     * @param height target height\n     * @returns `true` if the target is in the landscape mode, otherwise `false`\n     */\n    isLandscape(width: number, height: number): boolean {\n        return width > height;\n    }\n\n    /**\n     * Method triggered when the page is resized\n     */\n    onResize() {\n        this.scalePage(this.currentScaleMode);\n    }\n\n    /**\n     * toggle the fit page pdf\n     */\n    pageFit() {\n        if (this.currentScaleMode !== 'page-fit') {\n            this.scalePage('page-fit');\n        } else {\n            this.scalePage('auto');\n        }\n    }\n\n    /**\n     * zoom in page pdf\n     *\n     * @param ticks number of ticks to zoom\n     */\n    zoomIn(ticks?: number): void {\n        let newScale: number = Number(this.pdfViewer.currentScaleValue);\n        do {\n            newScale = Number((newScale * this.DEFAULT_SCALE_DELTA).toFixed(2));\n            newScale = Math.ceil(newScale * 10) / 10;\n            newScale = Math.min(this.MAX_SCALE, newScale);\n        } while (--ticks > 0 && newScale < this.MAX_SCALE);\n        this.currentScaleMode = 'auto';\n        this.setScaleUpdatePages(newScale);\n    }\n\n    /**\n     * zoom out page pdf\n     *\n     * @param ticks number of ticks to scale\n     */\n    zoomOut(ticks?: number): void {\n        let newScale: number = Number(this.pdfViewer.currentScaleValue);\n        do {\n            newScale = Number((newScale / this.DEFAULT_SCALE_DELTA).toFixed(2));\n            newScale = Math.floor(newScale * 10) / 10;\n            newScale = Math.max(this.MIN_SCALE, newScale);\n        } while (--ticks > 0 && newScale > this.MIN_SCALE);\n        this.currentScaleMode = 'auto';\n        this.setScaleUpdatePages(newScale);\n    }\n\n    /**\n     * load the previous page\n     */\n    previousPage() {\n        if (this.pdfViewer && this.page > 1) {\n            this.page--;\n            this.displayPage = this.page;\n\n            this.pdfViewer.currentPageNumber = this.page;\n        }\n    }\n\n    /**\n     * load the next page\n     */\n    nextPage() {\n        if (this.pdfViewer && this.page < this.totalPages) {\n            this.page++;\n            this.displayPage = this.page;\n\n            this.pdfViewer.currentPageNumber = this.page;\n        }\n    }\n\n    /**\n     * load the page in input\n     *\n     * @param page to load\n     */\n    inputPage(page: string) {\n        const pageInput = parseInt(page, 10);\n\n        if (!isNaN(pageInput) && pageInput > 0 && pageInput <= this.totalPages) {\n            this.page = pageInput;\n            this.displayPage = this.page;\n            this.pdfViewer.currentPageNumber = this.page;\n        } else {\n            this.displayPage = this.page;\n        }\n    }\n\n    /**\n     * Page Change Event\n     *\n     * @param event - page change event\n     * @param event.pageNumber - the new page number\n     * @param event.source - the source object\n     * @param event.source.container - the container element\n     * @param event.source.container.id - the container id\n     */\n    onPageChange(event: PageChangingEvent) {\n        if (event.source && event.source.container.id === `${this.randomPdfId}-viewer-pdf-viewer`) {\n            this.page = event.pageNumber;\n            this.displayPage = event.pageNumber;\n        }\n    }\n\n    onPdfPassword(callback, reason) {\n        this.dialog\n            .open(PdfPasswordDialogComponent, {\n                width: '400px',\n                data: { reason }\n            })\n            .afterClosed()\n            .subscribe((password) => {\n                if (password) {\n                    callback(password);\n                } else {\n                    this.close.emit();\n                }\n            });\n    }\n\n    /**\n     * Page Rendered Event\n     */\n    onPageRendered() {\n        this.rendered.emit();\n    }\n\n    /**\n     * Pages Loaded Event\n     *\n     */\n    onPagesLoaded() {\n        this.isPanelDisabled = false;\n        this.pagesLoaded.emit();\n    }\n\n    /**\n     * Keyboard Event Listener\n     *\n     * @param event KeyboardEvent\n     */\n    @HostListener('document:keydown', ['$event'])\n    handleKeyboardEvent(event: KeyboardEvent) {\n        const key = event.keyCode;\n        if (key === 39) {\n            // right arrow\n            this.nextPage();\n        } else if (key === 37) {\n            // left arrow\n            this.previousPage();\n        }\n    }\n\n    private async handleNotRecognizedAnnotations(\n        pdfDocument: PDFDocumentProxy,\n        documentContainer: HTMLDivElement,\n        pageNumber: number\n    ): Promise<void> {\n        const page = await pdfDocument.getPage(pageNumber);\n        const annotations = await page.getAnnotations();\n        annotations.forEach((annotation) => {\n            if (annotation.subtype !== 'Text' || annotation.name !== 'NoIcon') {\n                return;\n            }\n            const annotationElement = documentContainer.querySelector<HTMLElement>(`[data-annotation-id=\"${annotation.id}\"]`);\n            if (!annotationElement) {\n                return;\n            }\n            this.correctAnnotationImage(annotationElement);\n            const text: string = annotation.contentsObj?.str?.trim();\n            if (!text || (annotation.popupRef && documentContainer.querySelector(`[data-annotation-id=\"${annotation.popupRef}\"]`))) {\n                return;\n            }\n            this.createAnnotationPopup(annotation, text, annotationElement);\n        });\n    }\n\n    private correctAnnotationImage(annotationElement: HTMLElement): void {\n        const annotationImageElement = annotationElement.querySelector('img');\n        if (annotationImageElement) {\n            annotationImageElement.src =\n                'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGV' +\n                'pZ2h0PSIyNCI+PHBhdGggZD0iTTIgMmgxNHYxNEgyeiIgZmlsbD0iI2ZmZiIvPjxwYXRoIGQ9Ik0zIDNoMTJ2MTJIM3oiIGZpbGw9Ii' +\n                'NmZmRiMDAiLz48cGF0aCBkPSJNNSA1aDh2OGgtOHoiIGZpbGw9IiNmZmJiMDAiLz48L3N2Zz4=';\n            annotationImageElement.alt = this.translateService.instant('ADF_VIEWER.ARIA.NOTE_ANNOTATION_IMG');\n        }\n    }\n\n    private createAnnotationPopup(annotation: PdfAnnotationData, text: string, annotationElement: HTMLElement): void {\n        const popupElement = document.createElement('div');\n        let headerElement: HTMLSpanElement;\n        if (annotation.titleObj?.str) {\n            headerElement = this.createAnnotationPopupHeader(annotation as PdfAnnotationWithTitle);\n        }\n        const contentElement = this.createAnnotationPopupContent(text);\n        popupElement.classList.add('popup', 'adf-pdf-viewer-annotation-tooltip');\n        headerElement ? popupElement.append(headerElement, contentElement) : popupElement.append(contentElement);\n        annotationElement.appendChild(popupElement);\n    }\n\n    private createAnnotationPopupHeader(annotation: PdfAnnotationWithTitle): HTMLSpanElement {\n        const headerElement = document.createElement('span');\n        const titleElement = document.createElement('span');\n        let dateElement: HTMLTimeElement;\n        titleElement.innerText = annotation.titleObj.str;\n        titleElement.classList.add('title');\n        headerElement.classList.add('header');\n        if (annotation.modificationDate) {\n            dateElement = document.createElement('time');\n            dateElement.innerText = PDFDateString.toDateObject(annotation.modificationDate).toLocaleString();\n            dateElement.classList.add('popupDate');\n            headerElement.append(titleElement, dateElement);\n        } else {\n            headerElement.append(titleElement);\n        }\n        return headerElement;\n    }\n\n    private createAnnotationPopupContent(text: string): HTMLSpanElement {\n        const contentElement = document.createElement('span');\n        contentElement.innerText = text;\n        contentElement.classList.add('popupContent');\n        return contentElement;\n    }\n}\n","<div class=\"adf-pdf-viewer__container\">\n    <ng-container *ngIf=\"showThumbnails\">\n        <div class=\"adf-pdf-viewer__thumbnails\">\n            <div class=\"adf-thumbnails-template__container\">\n                <div class=\"adf-thumbnails-template__buttons\">\n                    <button mat-icon-button\n                            data-automation-id='adf-thumbnails-close'\n                            (click)=\"toggleThumbnails()\"\n                            [attr.aria-label]=\"'ADF_VIEWER.ARIA.THUMBNAILS_PANLEL_CLOSE' | translate\"\n                            title=\"{{ 'ADF_VIEWER.ACTIONS.CLOSE' | translate }}\">\n                        <mat-icon adf-icon=\"close\" />\n                    </button>\n                </div>\n\n                <ng-container *ngIf=\"thumbnailsTemplate\">\n                    <ng-container *ngTemplateOutlet=\"thumbnailsTemplate;context:pdfThumbnailsContext\" />\n                </ng-container>\n                <adf-pdf-thumbnails *ngIf=\"!thumbnailsTemplate && !isPanelDisabled\"\n                                    (close)=\"toggleThumbnails()\"\n                                    [pdfViewer]=\"pdfViewer\" />\n            </div>\n        </div>\n    </ng-container>\n\n    <div class=\"adf-pdf-viewer__content\">\n        <div [id]=\"randomPdfId + '-viewer-pdf-viewer'\"\n             class=\"adf-viewer-pdf-viewer\"\n             (window:resize)=\"onResize()\">\n            <div [id]=\"randomPdfId + '-viewer-viewerPdf'\"\n                 class=\"adf-pdfViewer pdfViewer\"\n                 role=\"document\"\n                 tabindex=\"0\"\n                 aria-expanded=\"true\">\n                <div id=\"loader-container\" class=\"adf-loader-container\">\n                    <div class=\"adf-loader-item\">\n                        <mat-progress-bar [attr.aria-label]=\"'ADF_VIEWER.ARIA.LOADING' | translate\"\n                                          class=\"adf-loader-item-progress-bar\" mode=\"indeterminate\" />\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n\n<div class=\"adf-pdf-viewer__toolbar\" *ngIf=\"showToolbar\" [ngStyle]=\"documentOverflow && {bottom: '25px'}\">\n    <adf-toolbar>\n\n        <ng-container *ngIf=\"allowThumbnails\">\n            <button mat-icon-button\n                    [attr.aria-label]=\"'ADF_VIEWER.ARIA.THUMBNAILS' | translate\"\n                    [attr.aria-expanded]=\"showThumbnails\"\n                    data-automation-id=\"adf-thumbnails-button\"\n                    [disabled]=\"isPanelDisabled\"\n                    (click)=\"toggleThumbnails()\">\n                <mat-icon adf-icon=\"dashboard\" />\n            </button>\n            <adf-toolbar-divider />\n        </ng-container>\n\n        <button id=\"viewer-previous-page-button\"\n                title=\"{{ 'ADF_VIEWER.ARIA.PREVIOUS_PAGE' | translate }}\"\n                attr.aria-label=\"{{ 'ADF_VIEWER.ARIA.PREVIOUS_PAGE' | translate }}\"\n                mat-icon-button\n                (click)=\"previousPage()\">\n            <mat-icon adf-icon=\"keyboard_arrow_up\" />\n        </button>\n\n        <button id=\"viewer-next-page-button\"\n                title=\"{{ 'ADF_VIEWER.ARIA.NEXT_PAGE' | translate }}\"\n                attr.aria-label=\"{{ 'ADF_VIEWER.ARIA.NEXT_PAGE' | translate }}\"\n                mat-icon-button\n                (click)=\"nextPage()\">\n            <mat-icon adf-icon=\"keyboard_arrow_down\" />\n        </button>\n\n        <div class=\"adf-pdf-viewer__toolbar-page-selector\">\n            <label for=\"page-selector\">{{ 'ADF_VIEWER.PAGE_LABEL.SHOWING' | translate }}</label>\n            <input #page\n                   id=\"page-selector\"\n                   type=\"text\"\n                   data-automation-id=\"adf-page-selector\"\n                   pattern=\"-?[0-9]*(\\.[0-9]+)?\"\n                   value=\"{{ displayPage }}\"\n                   [attr.aria-label]=\"'ADF_VIEWER.PAGE_LABEL.PAGE_SELECTOR_LABEL' | translate\"\n                   (keyup.enter)=\"inputPage(page.value)\">\n            <span>{{ 'ADF_VIEWER.PAGE_LABEL.OF' | translate }} {{ totalPages }}</span>\n        </div>\n\n        <div class=\"adf-pdf-viewer__toolbar-page-scale\" data-automation-id=\"adf-page-scale\">\n            {{ currentScaleText }}\n        </div>\n\n        <button id=\"viewer-zoom-in-button\"\n                title=\"{{ 'ADF_VIEWER.ARIA.ZOOM_IN' | translate }}\"\n                attr.aria-label=\"{{ 'ADF_VIEWER.ARIA.ZOOM_IN' | translate }}\"\n                mat-icon-button\n                (click)=\"zoomIn()\">\n            <mat-icon adf-icon=\"zoom_in\" />\n        </button>\n\n        <button id=\"viewer-zoom-out-button\"\n                title=\"{{ 'ADF_VIEWER.ARIA.ZOOM_OUT' | translate }}\"\n                attr.aria-label=\"{{ 'ADF_VIEWER.ARIA.ZOOM_OUT' | translate }}\"\n                mat-icon-button\n                (click)=\"zoomOut()\">\n            <mat-icon adf-icon=\"zoom_out\" />\n        </button>\n\n        <button id=\"viewer-scale-page-button\"\n                role=\"button\" aria-pressed=\"true\"\n                title=\"{{ 'ADF_VIEWER.ARIA.FIT_PAGE' | translate }}\"\n                attr.aria-label=\"{{ 'ADF_VIEWER.ARIA.FIT_PAGE' | translate }}\"\n                mat-icon-button\n                (click)=\"pageFit()\">\n            <mat-icon adf-icon=\"zoom_out_map\" />\n        </button>\n\n    </adf-toolbar>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { HttpClient } from '@angular/common/http';\nimport { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges, ViewEncapsulation, inject } from '@angular/core';\nimport { AppConfigService } from '../../../app-config';\n\n@Component({\n    selector: 'adf-txt-viewer',\n    templateUrl: './txt-viewer.component.html',\n    styleUrls: ['./txt-viewer.component.scss'],\n    host: { class: 'adf-txt-viewer' },\n    encapsulation: ViewEncapsulation.None\n})\nexport class TxtViewerComponent implements OnChanges {\n    private readonly http = inject(HttpClient);\n    private readonly appConfigService = inject(AppConfigService);\n\n    @Input()\n    urlFile: string;\n\n    @Input()\n    blobFile: Blob;\n\n    @Output()\n    contentLoaded = new EventEmitter<void>();\n\n    content: string | ArrayBuffer;\n\n    ngOnChanges(changes: SimpleChanges): Promise<void> {\n        const blobFile = changes['blobFile'];\n        if (blobFile?.currentValue) {\n            return this.readBlob(blobFile.currentValue);\n        }\n\n        const urlFile = changes['urlFile'];\n        if (urlFile?.currentValue) {\n            return this.getUrlContent(urlFile.currentValue);\n        }\n\n        if (!this.urlFile && !this.blobFile) {\n            throw new Error('Attribute urlFile or blobFile is required');\n        }\n\n        return Promise.resolve();\n    }\n\n    private getUrlContent(url: string): Promise<void> {\n        const withCredentialsMode = this.appConfigService.get<boolean>('auth.withCredentials', false);\n\n        return new Promise((resolve, reject) => {\n            this.http.get(url, { responseType: 'text', withCredentials: withCredentialsMode }).subscribe(\n                (res) => {\n                    this.content = res;\n                    resolve();\n                },\n                (event) => {\n                    reject(event);\n                },\n                () => {\n                    this.contentLoaded.emit();\n                }\n            );\n        });\n    }\n\n    private readBlob(blob: Blob): Promise<void> {\n        return new Promise((resolve, reject) => {\n            const reader = new FileReader();\n\n            reader.onload = () => {\n                this.content = reader.result;\n            };\n\n            reader.onerror = (error: ProgressEvent<FileReader>) => {\n                reject(error);\n            };\n\n            reader.onloadend = () => {\n                this.contentLoaded.emit();\n                resolve();\n            };\n\n            reader.readAsText(blob);\n        });\n    }\n}\n","<pre class=\"adf-txt-viewer-content\">\n    {{content}}\n</pre>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { IconModule } from '../../../icon/icon.module';\n\n@Component({\n    selector: 'adf-viewer-unknown-format',\n    templateUrl: './unknown-format.component.html',\n    styleUrls: ['./unknown-format.component.scss'],\n    imports: [IconModule, TranslatePipe],\n    encapsulation: ViewEncapsulation.None\n})\nexport class UnknownFormatComponent {\n    /** Custom error message to be displayed . */\n    @Input()\n    customError: string;\n}\n","<div class=\"adf-viewer__unknown-format-view\">\n    <div>\n        <mat-icon class=\"icon\" adf-icon=\"error\" />\n        <div class=\"adf-viewer__unknown-label\">{{ customError || 'ADF_VIEWER.UNKNOWN_FORMAT' | translate }}</div>\n    </div>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n    selector: 'adf-viewer-more-actions',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: { class: 'adf-viewer-more-actions' },\n    template: `<ng-content />`\n})\nexport class ViewerMoreActionsComponent {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n    selector: 'adf-viewer-open-with',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: { class: 'adf-viewer-open-with' },\n    template: `<ng-content />`\n})\nexport class ViewerOpenWithComponent {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChangeDetectionStrategy, Component, HostListener, ViewEncapsulation } from '@angular/core';\n\n@Component({\n    selector: 'adf-viewer-sidebar',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: { class: 'adf-viewer-sidebar' },\n    template: `<ng-content />`\n})\nexport class ViewerSidebarComponent {\n    @HostListener('keydown', ['$event'])\n    onKeyDown(event: KeyboardEvent): void {\n        event.stopPropagation();\n    }\n\n    @HostListener('keyup', ['$event'])\n    onKeyUp(event: KeyboardEvent): void {\n        event.stopPropagation();\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n    selector: 'adf-viewer-toolbar',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: { class: 'adf-viewer-toolbar' },\n    template: `<ng-content />`\n})\nexport class ViewerToolbarComponent {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n    selector: 'adf-viewer-toolbar-actions',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: { class: 'adf-viewer-toolbar-actions' },\n    template: `<ng-content />`\n})\nexport class ViewerToolbarActionsComponent {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n    selector: 'adf-viewer-toolbar-custom-actions',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: { class: 'adf-viewer-toolbar-custom-actions' },\n    template: `<ng-content />`\n})\nexport class ViewerToolbarCustomActionsComponent {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AppExtensionService, ExtensionsModule, ViewerExtensionRef, PreviewExtensionComponent } from '@alfresco/adf-extensions';\nimport { NgForOf, NgTemplateOutlet } from '@angular/common';\nimport {\n    Component,\n    EventEmitter,\n    Injector,\n    Input,\n    OnChanges,\n    OnInit,\n    Output,\n    TemplateRef,\n    ViewChild,\n    ViewEncapsulation,\n    inject\n} from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { Track } from '../../models/viewer.model';\nimport { ViewUtilService } from '../../services/view-util.service';\nimport { ImgViewerComponent } from '../img-viewer/img-viewer.component';\nimport { MediaPlayerComponent } from '../media-player/media-player.component';\nimport { PdfViewerComponent } from '../pdf-viewer/pdf-viewer.component';\nimport { TxtViewerComponent } from '../txt-viewer/txt-viewer.component';\nimport { UnknownFormatComponent } from '../unknown-format/unknown-format.component';\n\n@Component({\n    selector: 'adf-viewer-render',\n    templateUrl: './viewer-render.component.html',\n    styleUrls: ['./viewer-render.component.scss'],\n    host: { class: 'adf-viewer-render' },\n    encapsulation: ViewEncapsulation.None,\n    imports: [\n        TranslatePipe,\n        MatProgressSpinnerModule,\n        PdfViewerComponent,\n        ImgViewerComponent,\n        MediaPlayerComponent,\n        TxtViewerComponent,\n        NgTemplateOutlet,\n        UnknownFormatComponent,\n        ExtensionsModule,\n        NgForOf,\n        PreviewExtensionComponent\n    ],\n    providers: [ViewUtilService]\n})\nexport class ViewerRenderComponent implements OnChanges, OnInit {\n    private readonly viewUtilService = inject(ViewUtilService);\n    private readonly extensionService = inject(AppExtensionService);\n    dialog = inject(MatDialog);\n    readonly injector = inject(Injector);\n\n    /**\n     * If you want to load an external file that does not come from ACS you\n     * can use this URL to specify where to load the file from.\n     */\n    @Input()\n    urlFile = '';\n\n    /** Loads a Blob File */\n    @Input()\n    blobFile: Blob;\n\n    /** Toggles the 'Full Screen' feature. */\n    @Input()\n    allowFullScreen = true;\n\n    /** Toggles PDF thumbnails. */\n    @Input()\n    allowThumbnails = true;\n\n    /** The template for the pdf thumbnails. */\n    @Input()\n    thumbnailsTemplate: TemplateRef<unknown> = null;\n\n    /** MIME type of the file content (when not determined by the filename extension). */\n    @Input()\n    mimeType: string;\n\n    /** Override Content filename. */\n    @Input()\n    fileName: string;\n\n    /** Enable when where is possible the editing functionalities  */\n    @Input()\n    readOnly = true;\n\n    /**\n     * Controls which actions are enabled in the viewer.\n     * Example:\n     * { rotate: true, crop: false } will enable rotation but disable cropping.\n     */\n    @Input()\n    allowedEditActions: { [key: string]: boolean } = {\n        rotate: true,\n        crop: true\n    };\n\n    /** media subtitles for the media player*/\n    @Input()\n    tracks: Track[] = [];\n\n    /** Identifier of a node that is opened by the viewer. */\n    @Input()\n    nodeId: string = null;\n\n    /** Template containing ViewerExtensionDirective instances providing different viewer extensions based on supported file extension. */\n    @Input()\n    viewerTemplateExtensions: TemplateRef<unknown>;\n\n    /** Custom error message to be displayed in the viewer. */\n    @Input()\n    customError: string = undefined;\n\n    /** Emitted when the filename extension changes. */\n    @Output()\n    extensionChange = new EventEmitter<string>();\n\n    /** Emitted when the img is submitted in the img viewer. */\n    @Output()\n    submitFile = new EventEmitter<Blob>();\n\n    /** Emitted when the img is submitted in the img viewer. */\n    @Output()\n    close = new EventEmitter<boolean>();\n\n    /** Emitted when the img is saving. */\n    @Output()\n    isSaving = new EventEmitter<boolean>();\n\n    @ViewChild(ImgViewerComponent)\n    imgViewer: ImgViewerComponent;\n\n    extensionTemplates: { template: TemplateRef<unknown>; isVisible: boolean }[] = [];\n    extensionsSupportedByTemplates: string[] = [];\n    extension: string;\n    internalFileName: string;\n    viewerType: string = 'unknown';\n    isLoading = false;\n\n    /**\n     * Returns a list of the active Viewer content extensions.\n     *\n     * @returns list of extension references\n     */\n    get viewerExtensions(): ViewerExtensionRef[] {\n        return this.extensionService.getViewerExtensions();\n    }\n\n    /**\n     * Provides a list of file extensions supported by external plugins.\n     *\n     * @returns list of extensions\n     */\n    get externalExtensions(): string[] {\n        return this.viewerExtensions.map((ext) => ext.fileExtension);\n    }\n\n    private _externalViewer: ViewerExtensionRef;\n    get externalViewer(): ViewerExtensionRef {\n        if (!this._externalViewer) {\n            this._externalViewer = this.viewerExtensions.find((ext) => ext.fileExtension === '*');\n        }\n\n        return this._externalViewer;\n    }\n\n    cacheTypeForContent = 'no-cache';\n\n    ngOnInit() {\n        this.cacheTypeForContent = 'no-cache';\n        this.isLoading = true;\n    }\n\n    ngOnChanges() {\n        this.isLoading = true;\n        if (this.blobFile) {\n            this.setUpBlobData();\n        } else if (this.urlFile) {\n            this.setUpUrlFile();\n        }\n    }\n\n    markAsLoaded() {\n        this.isLoading = false;\n    }\n\n    private setUpBlobData() {\n        this.internalFileName = this.fileName;\n        this.viewerType = this.viewUtilService.getViewerTypeByMimeType(this.blobFile.type);\n        if (this.viewerType === 'unknown') {\n            this.isLoading = false;\n        }\n\n        this.extensionChange.emit(this.blobFile.type);\n        this.scrollTop();\n    }\n\n    private setUpUrlFile() {\n        this.internalFileName = this.fileName ? this.fileName : this.viewUtilService.getFilenameFromUrl(this.urlFile);\n        this.extension = this.viewUtilService.getFileExtension(this.internalFileName);\n        this.viewerType = this.viewUtilService.getViewerType(this.extension, this.mimeType, this.extensionsSupportedByTemplates);\n        if (this.viewerType === 'unknown') {\n            this.isLoading = false;\n        }\n\n        this.extensionChange.emit(this.extension);\n        this.scrollTop();\n    }\n\n    scrollTop() {\n        window.scrollTo(0, 1);\n    }\n\n    checkExtensions(extensionAllowed) {\n        if (typeof extensionAllowed === 'string') {\n            return this.extension.toLowerCase() === extensionAllowed.toLowerCase();\n        } else if (extensionAllowed.length > 0) {\n            return extensionAllowed.find((currentExtension) => this.extension.toLowerCase() === currentExtension.toLowerCase());\n        }\n    }\n\n    onSubmitFile(newImageBlob: Blob) {\n        this.submitFile.next(newImageBlob);\n    }\n\n    onUnsupportedFile() {\n        this.viewerType = 'unknown';\n        this.isLoading = false;\n    }\n\n    onClose() {\n        this.close.next(true);\n    }\n}\n","@if (isLoading) {\n    <div class=\"adf-viewer-render-main-loader\">\n        <div class=\"adf-viewer-render-layout-content adf-viewer__fullscreen-container\">\n            <div class=\"adf-viewer-render-content-container\">\n                <div class=\"adf-viewer-render__loading-screen\">\n                    <h2 id=\"loading-spinner-label\">{{ 'ADF_VIEWER.LOADING' | translate }}</h2>\n                    <div>\n                        <mat-spinner aria-labelledby=\"loading-spinner-label\" class=\"adf-viewer-render__loading-screen__spinner\" />\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n}\n\n@if (urlFile || blobFile) {\n    <div [style.visibility]=\"isLoading ? 'hidden' : 'visible'\" class=\"adf-viewer-render-main\">\n        <div class=\"adf-viewer-render-layout-content adf-viewer__fullscreen-container\">\n            <div class=\"adf-viewer-render-content-container\">\n                @switch (viewerType) {\n                    @case ('external') {\n                        @if (!!externalViewer) {\n                            <adf-preview-extension\n                                [id]=\"externalViewer.component\"\n                                [url]=\"urlFile\"\n                                [extension]=\"externalViewer.fileExtension\"\n                                [nodeId]=\"nodeId\"\n                                [attr.data-automation-id]=\"externalViewer.component\"\n                                (contentLoaded)=\"markAsLoaded()\"\n                            />\n                        }\n                    }\n\n                    @case ('pdf') {\n                        <adf-pdf-viewer\n                            [thumbnailsTemplate]=\"thumbnailsTemplate\"\n                            [allowThumbnails]=\"allowThumbnails\"\n                            [blobFile]=\"blobFile\"\n                            [urlFile]=\"urlFile\"\n                            [fileName]=\"internalFileName\"\n                            [cacheType]=\"cacheTypeForContent\"\n                            (pagesLoaded)=\"markAsLoaded()\"\n                            (close)=\"onClose()\"\n                            (error)=\"onUnsupportedFile()\"\n                        />\n                    }\n\n                    @case ('image') {\n                        <adf-img-viewer\n                            [urlFile]=\"urlFile\"\n                            [readOnly]=\"readOnly\"\n                            [fileName]=\"internalFileName\"\n                            [allowedEditActions]=\"allowedEditActions\"\n                            [blobFile]=\"blobFile\"\n                            (error)=\"onUnsupportedFile()\"\n                            (submit)=\"onSubmitFile($event)\"\n                            (imageLoaded)=\"markAsLoaded()\"\n                            (isSaving)=\"isSaving.emit($event)\"\n                        />\n                    }\n\n                    @case ('media') {\n                        <adf-media-player\n                            id=\"adf-mdedia-player\"\n                            [urlFile]=\"urlFile\"\n                            [tracks]=\"tracks\"\n                            [mimeType]=\"mimeType\"\n                            [blobFile]=\"blobFile\"\n                            [fileName]=\"internalFileName\"\n                            (error)=\"onUnsupportedFile()\"\n                            (canPlay)=\"markAsLoaded()\"\n                        />\n                    }\n\n                    @case ('text') {\n                        <adf-txt-viewer [urlFile]=\"urlFile\" [blobFile]=\"blobFile\" (contentLoaded)=\"markAsLoaded()\" />\n                    }\n\n                    @case ('custom') {\n                        @for (ext of viewerExtensions; track ext.id) {\n                            @if (checkExtensions(ext.fileExtension)) {\n                                <adf-preview-extension\n                                    [id]=\"ext.component\"\n                                    [url]=\"urlFile\"\n                                    [extension]=\"extension\"\n                                    [nodeId]=\"nodeId\"\n                                    [attr.data-automation-id]=\"ext.component\"\n                                    (contentLoaded)=\"markAsLoaded()\"\n                                />\n                            }\n                        }\n\n                        <ng-container *ngFor=\"let extensionTemplate of extensionTemplates\">\n                            @if (extensionTemplate.isVisible) {\n                                <span class=\"adf-viewer-render-custom-content\">\n                                    <ng-template\n                                        [ngTemplateOutlet]=\"extensionTemplate.template\"\n                                        [ngTemplateOutletContext]=\"{ urlFile: urlFile, extension: extension, markAsLoaded: markAsLoaded.bind(this) }\"\n                                    />\n                                </span>\n                            }\n                        </ng-container>\n                    }\n\n                    @default {\n                        <adf-viewer-unknown-format [customError]=\"customError\" />\n                    }\n                }\n            </div>\n        </div>\n    </div>\n}\n\n@if (viewerTemplateExtensions) {\n    <ng-template [ngTemplateOutlet]=\"viewerTemplateExtensions\"\n                 [ngTemplateOutletContext]=\"{ urlFile: urlFile, extension: extension, markAsLoaded: markAsLoaded.bind(this) }\"\n                 [ngTemplateOutletInjector]=\"injector\" />\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* Enum listing the allowed actions that can be emitted from the NonResponsivePreview dialog component */\nexport const DownloadPromptActions = {\n    WAIT: 'WAIT',\n    DOWNLOAD: 'DOWNLOAD'\n} as const;\n\nexport type DownloadPromptActions = (typeof DownloadPromptActions)[keyof typeof DownloadPromptActions];\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const CloseButtonPosition = {\n    Right: 'right',\n    Left: 'left'\n} as const;\n\nexport type CloseButtonPosition = (typeof CloseButtonPosition)[keyof typeof CloseButtonPosition];\n\nexport interface Track {\n    src: string;\n    label?: string;\n    kind?: string;\n    srclang?: string;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { DownloadPromptActions } from '../../models/download-prompt.actions';\n\n@Component({\n    selector: 'adf-download-prompt-dialog',\n    imports: [MatDialogModule, TranslatePipe, MatButtonModule],\n    templateUrl: './download-prompt-dialog.component.html'\n})\nexport class DownloadPromptDialogComponent {\n    DownloadPromptActions = DownloadPromptActions;\n}\n","<div mat-dialog-title>\n    <h3>{{ 'ADF_VIEWER.NON_RESPONSIVE_DIALOG.HEADER' | translate }}</h3>\n</div>\n<mat-dialog-content>\n    {{ 'ADF_VIEWER.NON_RESPONSIVE_DIALOG.LABEL' | translate }}\n</mat-dialog-content>\n<mat-dialog-actions align=\"end\">\n    <button\n        mat-button\n        id=\"downloadButton\"\n        [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.DOWNLOAD' | translate\"\n        [mat-dialog-close]=\"DownloadPromptActions.DOWNLOAD\">\n        {{ 'ADF_VIEWER.ACTIONS.DOWNLOAD' | translate }}\n    </button>\n    <button\n        mat-button\n        id=\"waitButton\"\n        color=\"primary\"\n        [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.WAIT' | translate\"\n        [mat-dialog-close]=\"DownloadPromptActions.WAIT\">\n        {{ 'ADF_VIEWER.ACTIONS.WAIT' | translate }}\n    </button>\n</mat-dialog-actions>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n    Component,\n    ContentChild,\n    DestroyRef,\n    ElementRef,\n    EventEmitter,\n    HostBinding,\n    HostListener,\n    inject,\n    Input,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    Output,\n    SimpleChanges,\n    TemplateRef,\n    ViewChild,\n    ViewEncapsulation\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { fromEvent } from 'rxjs';\nimport { filter, first, skipWhile } from 'rxjs/operators';\nimport { AppConfigService } from '../../app-config';\nimport { ToolbarComponent, ToolbarDividerComponent, ToolbarTitleComponent } from '../../toolbar';\nimport { DownloadPromptActions } from '../models/download-prompt.actions';\nimport { CloseButtonPosition, Track } from '../models/viewer.model';\nimport { ViewUtilService } from '../services/view-util.service';\nimport { DownloadPromptDialogComponent } from './download-prompt-dialog/download-prompt-dialog.component';\nimport { ViewerMoreActionsComponent } from './viewer-more-actions.component';\nimport { ViewerOpenWithComponent } from './viewer-open-with.component';\nimport { ViewerRenderComponent } from './viewer-render/viewer-render.component';\nimport { ViewerSidebarComponent } from './viewer-sidebar.component';\nimport { ViewerToolbarComponent } from './viewer-toolbar.component';\nimport { ViewerToolbarActionsComponent } from './viewer-toolbar-actions.component';\nimport { ViewerToolbarCustomActionsComponent } from './viewer-toolbar-custom-actions.component';\nimport { ThumbnailService } from '../../common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { IconModule } from '../../icon/icon.module';\n\nconst DEFAULT_NON_PREVIEW_CONFIG = {\n    enableDownloadPrompt: false,\n    enableDownloadPromptReminder: false,\n    downloadPromptDelay: 50,\n    downloadPromptReminderDelay: 30\n};\n\n@Component({\n    selector: 'adf-viewer',\n    templateUrl: './viewer.component.html',\n    styleUrls: ['./viewer.component.scss'],\n    host: { class: 'adf-viewer' },\n    encapsulation: ViewEncapsulation.None,\n    imports: [\n        NgIf,\n        A11yModule,\n        ToolbarComponent,\n        ToolbarTitleComponent,\n        MatButtonModule,\n        TranslatePipe,\n        IconModule,\n        MatMenuModule,\n        ToolbarDividerComponent,\n        ViewerRenderComponent,\n        NgTemplateOutlet,\n        ViewerToolbarComponent,\n        ViewerSidebarComponent,\n        ViewerToolbarActionsComponent,\n        ViewerToolbarCustomActionsComponent\n    ],\n    providers: [ViewUtilService]\n})\nexport class ViewerComponent<T> implements OnDestroy, OnInit, OnChanges {\n    private readonly el = inject(ElementRef);\n    dialog = inject(MatDialog);\n    private readonly viewUtilsService = inject(ViewUtilService);\n    private readonly appConfigService = inject(AppConfigService);\n\n    private readonly thumbnailService = inject(ThumbnailService);\n\n    @HostBinding('class.adf-viewer-inline')\n    get isInline() {\n        return !this.overlayMode;\n    }\n\n    @ContentChild(ViewerToolbarComponent)\n    toolbar: ViewerToolbarComponent;\n\n    @ContentChild(ViewerSidebarComponent)\n    sidebar: ViewerSidebarComponent;\n\n    @ContentChild(ViewerOpenWithComponent)\n    mnuOpenWith: ViewerOpenWithComponent;\n\n    @ContentChild(ViewerMoreActionsComponent)\n    mnuMoreActions: ViewerMoreActionsComponent;\n\n    @ContentChild('viewerExtensions', { static: false })\n    viewerTemplateExtensions: TemplateRef<unknown>;\n\n    get CloseButtonPosition() {\n        return CloseButtonPosition;\n    }\n\n    /**\n     * If you want to load an external file that does not come from ACS you\n     * can use this URL to specify where to load the file from.\n     */\n    @Input()\n    urlFile = '';\n\n    /** Loads a Blob File */\n    @Input()\n    blobFile: Blob;\n\n    /** Hide or show the viewer */\n    @Input()\n    showViewer = true;\n\n    /** Allows `back` navigation */\n    @Input()\n    allowGoBack = true;\n\n    /** Toggles the 'Full Screen' feature. */\n    @Input()\n    allowFullScreen = true;\n\n    /** Hide or show the toolbar */\n    @Input()\n    showToolbar = true;\n\n    /**\n     * If `true` then show the Viewer as a full page over the current content.\n     * Otherwise, fit inside the parent div.\n     */\n    @Input()\n    overlayMode = false;\n\n    /**\n     * Toggles before/next navigation. You can use the arrow buttons to navigate\n     * between documents in the collection.\n     */\n    @Input()\n    allowNavigate = false;\n\n    /** Toggles the \"before\" (\"<\") button. Requires `allowNavigate` to be enabled. */\n    @Input()\n    canNavigateBefore = true;\n\n    /** Toggles the next (\">\") button. Requires `allowNavigate` to be enabled. */\n    @Input()\n    canNavigateNext = true;\n\n    /** Allow the left the sidebar. */\n    @Input()\n    allowLeftSidebar = false;\n\n    /** Allow the right sidebar. */\n    @Input()\n    allowRightSidebar = false;\n\n    /** Toggles right sidebar visibility. Requires `allowRightSidebar` to be set to `true`. */\n    @Input()\n    showRightSidebar = false;\n\n    /** Toggles left sidebar visibility. Requires `allowLeftSidebar` to be set to `true`. */\n    @Input()\n    showLeftSidebar = false;\n\n    /** The template for the right sidebar. The template context contains the loaded node data. */\n    @Input()\n    sidebarRightTemplate: TemplateRef<unknown> = null;\n\n    /** The template for the left sidebar. The template context contains the loaded node data. */\n    @Input()\n    sidebarLeftTemplate: TemplateRef<unknown> = null;\n\n    /** Enable when where is possible the editing functionalities  */\n    @Input()\n    readOnly = true;\n\n    /**\n     * Controls which actions are enabled in the viewer.\n     * Example:\n     * { rotate: true, crop: false } will enable rotation but disable cropping.\n     */\n    @Input()\n    allowedEditActions: { [key: string]: boolean } = {\n        rotate: true,\n        crop: true\n    };\n\n    /** media subtitles for the media player*/\n    @Input()\n    tracks: Track[] = [];\n\n    /** Overload mimeType*/\n    @Input()\n    mimeType: string;\n\n    /**\n     * Context object available for binding by the local sidebarRightTemplate with let declarations.\n     */\n    @Input()\n    sidebarRightTemplateContext: T = null;\n\n    /**\n     * Context object available for binding by the local sidebarLeftTemplate with let declarations.\n     */\n    @Input()\n    sidebarLeftTemplateContext: T = null;\n\n    /**\n     * Change the close button position Right/Left.\n     */\n    @Input()\n    closeButtonPosition: CloseButtonPosition = CloseButtonPosition.Left;\n\n    /** Toggles the 'Info Button' */\n    @Input()\n    hideInfoButton = false;\n\n    /** Template containing ViewerExtensionDirective instances providing different viewer extensions based on supported file extension. */\n    @Input()\n    viewerExtensions: TemplateRef<unknown>;\n\n    /** Identifier of a node that is opened by the viewer. */\n    @Input()\n    nodeId: string = null;\n\n    /** Original node mime type, should be provided when renditions mime type is different. */\n    @Input()\n    nodeMimeType: string = undefined;\n\n    /** Custom error message to be displayed in the viewer. */\n    @Input()\n    customError: string = undefined;\n\n    /** Toggles dividers visibility */\n    @Input()\n    showToolbarDividers = true;\n\n    /**\n     * Enable dialog box to allow user to download the previewed file, in case the preview is not responding for a set period of time.\n     */\n    enableDownloadPrompt: boolean = false;\n\n    /**\n     * Enable reminder dialogs to prompt user to download the file, in case the preview is not responding for a set period of time.\n     */\n    enableDownloadPromptReminder: boolean = false;\n\n    /**\n     * Initial time in seconds to wait before giving the first prompt to user to download the file\n     */\n    downloadPromptDelay: number = 50;\n\n    /**\n     * Time in seconds to wait before giving the second and consequent reminders to the user to download the file.\n     */\n    downloadPromptReminderDelay: number = 15;\n\n    /**\n     * Emitted when user clicks on download button on download prompt dialog.\n     */\n    @Output()\n    downloadFile = new EventEmitter<void>();\n\n    /** Emitted when user clicks 'Navigate Before' (\"<\") button. */\n    @Output()\n    navigateBefore = new EventEmitter<MouseEvent | KeyboardEvent>();\n\n    /** Emitted when user clicks 'Navigate Next' (\">\") button. */\n    @Output()\n    navigateNext = new EventEmitter<MouseEvent | KeyboardEvent>();\n\n    /** Emitted when the viewer close */\n    @Output()\n    showViewerChange = new EventEmitter<boolean>();\n\n    /** Emitted when the img is submitted in the img viewer. */\n    @Output()\n    submitFile = new EventEmitter<Blob>();\n\n    @ViewChild(ViewerRenderComponent)\n    viewerRenderer: ViewerRenderComponent;\n\n    private closeViewer = true;\n    private readonly keyDown$ = fromEvent<KeyboardEvent>(document, 'keydown');\n    private isDialogVisible = false;\n    private _fileName: string;\n    private _fileNameWithoutExtension: string;\n    private _fileExtension: string;\n\n    public displayName: string;\n    public displayTitle: string;\n    public downloadPromptTimer: number;\n    public downloadPromptReminderTimer: number;\n    public mimeTypeIconUrl: string;\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    /** Override Content title. */\n    @Input()\n    set title(title: string) {\n        this.displayTitle = title ? this.getDisplayTruncatedValue(title) : '';\n    }\n\n    /** Override Content filename. */\n    @Input()\n    set fileName(fileName: string) {\n        this._fileName = fileName;\n        this._fileExtension = this.viewUtilsService.getFileExtension(this.fileName);\n        this._fileNameWithoutExtension = this.fileName?.replace(new RegExp(`${this.fileExtension}$`), '') || '';\n        const value = (this.fileNameWithoutExtension || '') + (this.fileExtension || '');\n        this.displayName = this.getDisplayTruncatedValue(value);\n    }\n\n    get fileName(): string {\n        return this._fileName;\n    }\n\n    get fileExtension(): string {\n        return this._fileExtension;\n    }\n\n    get fileNameWithoutExtension(): string {\n        return this._fileNameWithoutExtension;\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        const { blobFile, urlFile, mimeType, nodeMimeType } = changes;\n\n        if (blobFile?.currentValue) {\n            this.mimeType = blobFile.currentValue.type;\n            this.mimeTypeIconUrl = this.thumbnailService.getMimeTypeIcon(blobFile.currentValue.type);\n        }\n\n        if (urlFile?.currentValue) {\n            this.fileName ||= this.viewUtilsService.getFilenameFromUrl(urlFile.currentValue);\n        }\n\n        if (mimeType?.currentValue && !nodeMimeType?.currentValue) {\n            this.mimeTypeIconUrl = this.thumbnailService.getMimeTypeIcon(mimeType.currentValue);\n        }\n\n        if (nodeMimeType?.currentValue) {\n            this.mimeTypeIconUrl = this.thumbnailService.getMimeTypeIcon(nodeMimeType.currentValue);\n        }\n    }\n\n    ngOnInit(): void {\n        this.closeOverlayManager();\n        this.configureAndInitDownloadPrompt();\n    }\n\n    private closeOverlayManager() {\n        this.dialog.afterOpened\n            .pipe(\n                skipWhile(() => !this.overlayMode),\n                takeUntilDestroyed(this.destroyRef)\n            )\n            .subscribe(() => (this.closeViewer = false));\n\n        this.dialog.afterAllClosed\n            .pipe(\n                skipWhile(() => !this.overlayMode),\n                takeUntilDestroyed(this.destroyRef)\n            )\n            .subscribe(() => (this.closeViewer = true));\n\n        this.keyDown$\n            .pipe(\n                skipWhile(() => !this.overlayMode),\n                filter((e: KeyboardEvent) => e.keyCode === 27),\n                takeUntilDestroyed(this.destroyRef)\n            )\n            .subscribe((event: KeyboardEvent) => {\n                event.preventDefault();\n\n                if (this.closeViewer) {\n                    this.onClose();\n                }\n            });\n    }\n\n    onNavigateBeforeClick(event: MouseEvent | KeyboardEvent) {\n        this.resetLoadingSpinner();\n        this.navigateBefore.next(event);\n    }\n\n    onNavigateNextClick(event: MouseEvent | KeyboardEvent) {\n        this.resetLoadingSpinner();\n        this.navigateNext.next(event);\n    }\n\n    /**\n     * close the viewer\n     */\n    onClose() {\n        this.showViewer = false;\n        this.showViewerChange.emit(this.showViewer);\n    }\n\n    toggleRightSidebar() {\n        this.showRightSidebar = !this.showRightSidebar;\n    }\n\n    toggleLeftSidebar() {\n        this.showLeftSidebar = !this.showLeftSidebar;\n    }\n\n    @HostListener('document:keyup', ['$event'])\n    handleKeyboardEvent(event: KeyboardEvent) {\n        if (event?.defaultPrevented) {\n            return;\n        }\n\n        if (!this.viewerRenderer?.imgViewer?.isEditing) {\n            if (event.key === 'ArrowLeft' && this.canNavigateBefore) {\n                event.preventDefault();\n                this.onNavigateBeforeClick(event);\n            }\n\n            if (event.key === 'ArrowRight' && this.canNavigateNext) {\n                event.preventDefault();\n                this.onNavigateNextClick(event);\n            }\n        }\n\n        if (event.code === 'KeyF' && event.ctrlKey) {\n            event.preventDefault();\n            this.enterFullScreen();\n        }\n    }\n\n    /**\n     * Triggers full screen mode with a main content area displayed.\n     */\n    enterFullScreen(): void {\n        if (this.allowFullScreen) {\n            const container = this.el.nativeElement.querySelector('.adf-viewer__fullscreen-container');\n            if (container) {\n                if (container.requestFullscreen) {\n                    container.requestFullscreen();\n                } else if (container.webkitRequestFullscreen) {\n                    container.webkitRequestFullscreen();\n                } else if (container.mozRequestFullScreen) {\n                    container.mozRequestFullScreen();\n                } else if (container.msRequestFullscreen) {\n                    container.msRequestFullscreen();\n                }\n            }\n        }\n    }\n\n    onSubmitFile(newImageBlob: Blob) {\n        this.submitFile.emit(newImageBlob);\n    }\n\n    ngOnDestroy() {\n        this.clearDownloadPromptTimeouts();\n    }\n\n    getDisplayTruncatedValue(value: string): string {\n        const maxLength = 50;\n\n        if (value.length <= maxLength) {\n            return value;\n        }\n\n        const amountOfTruncateDots = 5;\n        const availableSpace = maxLength - amountOfTruncateDots;\n        const endLength = 8;\n        const startLength = availableSpace - endLength;\n\n        const start = value.substring(0, startLength);\n        const end = value.substring(value.length - endLength);\n        return start + '.....' + end;\n    }\n\n    private configureAndInitDownloadPrompt() {\n        this.configureDownloadPromptProperties();\n        if (this.enableDownloadPrompt) {\n            this.initDownloadPrompt();\n        }\n    }\n\n    private configureDownloadPromptProperties() {\n        const nonResponsivePreviewConfig = this.appConfigService.get('viewer', DEFAULT_NON_PREVIEW_CONFIG);\n\n        this.enableDownloadPrompt = nonResponsivePreviewConfig.enableDownloadPrompt;\n        this.enableDownloadPromptReminder = nonResponsivePreviewConfig.enableDownloadPromptReminder;\n        this.downloadPromptDelay = nonResponsivePreviewConfig.downloadPromptDelay;\n        this.downloadPromptReminderDelay = nonResponsivePreviewConfig.downloadPromptReminderDelay;\n    }\n\n    private initDownloadPrompt() {\n        this.downloadPromptTimer = window.setTimeout(() => {\n            this.showOrClearDownloadPrompt();\n        }, this.downloadPromptDelay * 1000);\n    }\n\n    private showOrClearDownloadPrompt() {\n        if (!this.urlFile && !this.blobFile) {\n            this.showDownloadPrompt();\n        } else {\n            this.clearDownloadPromptTimeouts();\n        }\n    }\n\n    public clearDownloadPromptTimeouts() {\n        if (this.downloadPromptTimer) {\n            clearTimeout(this.downloadPromptTimer);\n        }\n        if (this.downloadPromptReminderTimer) {\n            clearTimeout(this.downloadPromptReminderTimer);\n        }\n    }\n\n    private showDownloadPrompt() {\n        if (!this.isDialogVisible) {\n            this.isDialogVisible = true;\n            this.dialog\n                .open(DownloadPromptDialogComponent, { disableClose: true })\n                .afterClosed()\n                .pipe(first())\n                .subscribe((result: DownloadPromptActions) => {\n                    this.isDialogVisible = false;\n                    if (result === DownloadPromptActions.DOWNLOAD) {\n                        this.downloadFile.emit();\n                        this.onClose();\n                    } else if (result === DownloadPromptActions.WAIT) {\n                        if (this.enableDownloadPromptReminder) {\n                            this.clearDownloadPromptTimeouts();\n                            this.downloadPromptReminderTimer = window.setTimeout(() => {\n                                this.showOrClearDownloadPrompt();\n                            }, this.downloadPromptReminderDelay * 1000);\n                        }\n                    }\n                });\n        }\n    }\n\n    private resetLoadingSpinner() {\n        this.urlFile = '';\n        this.blobFile = null;\n    }\n}\n","<div *ngIf=\"showViewer\"\n     class=\"adf-viewer-container\"\n     [class.adf-viewer-overlay-container]=\"overlayMode\"\n     [class.adf-viewer-inline-container]=\"!overlayMode\">\n\n    <div class=\"adf-viewer-content\"\n         [cdkTrapFocus]=\"overlayMode\"\n         cdkTrapFocusAutoCapture>\n        <ng-content select=\"adf-viewer-toolbar\" />\n        <ng-container *ngIf=\"showToolbar && !toolbar\">\n            <adf-toolbar id=\"adf-viewer-toolbar\" class=\"adf-viewer-toolbar\">\n                <adf-toolbar-title>\n                    <ng-container *ngIf=\"allowLeftSidebar\">\n                        <button mat-icon-button\n                                [attr.aria-expanded]=\"showLeftSidebar\"\n                                [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.INFO' | translate\"\n                                title=\"{{ 'ADF_VIEWER.ACTIONS.INFO' | translate }}\"\n                                data-automation-id=\"adf-toolbar-left-sidebar\"\n                                [color]=\"showLeftSidebar ? 'accent' : null\"\n                                (click)=\"toggleLeftSidebar()\">\n                            <mat-icon adf-icon=\"info_outline\" />\n                        </button>\n                    </ng-container>\n\n                    <button *ngIf=\"allowGoBack && closeButtonPosition === CloseButtonPosition.Left\"\n                            class=\"adf-viewer-close-button\"\n                            data-automation-id=\"adf-toolbar-left-back\"\n                            [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.CLOSE' | translate\"\n                            mat-icon-button\n                            title=\"{{ 'ADF_VIEWER.ACTIONS.CLOSE' | translate }}\"\n                            (click)=\"onClose()\">\n                        <mat-icon adf-icon=\"close\" />\n                    </button>\n                </adf-toolbar-title>\n\n                <div class=\"adf-viewer__file-title\">\n                    <button *ngIf=\"allowNavigate && canNavigateBefore\"\n                            data-automation-id=\"adf-toolbar-pref-file\"\n                            mat-icon-button\n                            [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.PREV_FILE' | translate\"\n                            title=\"{{ 'ADF_VIEWER.ACTIONS.PREV_FILE' | translate }}\"\n                            (click)=\"onNavigateBeforeClick($event)\">\n                        <mat-icon adf-icon=\"navigate_before\" />\n                    </button>\n                    <img class=\"adf-viewer__mimeicon\"\n                         [alt]=\"'ADF_VIEWER.ARIA.MIME_TYPE_ICON' | translate\"\n                         [src]=\"mimeTypeIconUrl\"\n                         data-automation-id=\"adf-file-thumbnail\">\n                    @if (displayTitle) {\n                        <div class=\"adf-viewer__title-display-name-container\"\n                             id=\"adf-viewer-title-display-name\"\n                             [title]=\"displayTitle\">\n                            <p class=\"adf-viewer__title-value\">{{ displayTitle }}</p>\n                            <p class=\"adf-viewer__display-name-value\">{{ displayName }}</p>\n                        </div>\n                    } @else {\n                        <div class=\"adf-viewer__display-name\"\n                             id=\"adf-viewer-display-name\"\n                             [title]=\"fileName\">\n                            <span>{{ displayName }}</span>\n                        </div>\n                    }\n                    <button *ngIf=\"allowNavigate && canNavigateNext\"\n                            data-automation-id=\"adf-toolbar-next-file\"\n                            mat-icon-button\n                            [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.NEXT_FILE' | translate\"\n                            title=\"{{ 'ADF_VIEWER.ACTIONS.NEXT_FILE' | translate }}\"\n                            (click)=\"onNavigateNextClick($event)\">\n                        <mat-icon adf-icon=\"navigate_next\" />\n                    </button>\n                </div>\n\n                <ng-content select=\"adf-viewer-toolbar-actions\" />\n\n                <ng-container *ngIf=\"mnuOpenWith\"\n                              data-automation-id='adf-toolbar-custom-btn'>\n                    <button id=\"adf-viewer-openwith\"\n                            mat-button\n                            [matMenuTriggerFor]=\"mnuOpenWith\"\n                            data-automation-id=\"adf-toolbar-open-with\">\n                        <span>{{ 'ADF_VIEWER.ACTIONS.OPEN_WITH' | translate }}</span>\n                        <mat-icon adf-icon=\"arrow_drop_down\" />\n                    </button>\n                    <mat-menu #mnuOpenWith=\"matMenu\"\n                              [overlapTrigger]=\"false\">\n                        <ng-content select=\"adf-viewer-open-with\" />\n                    </mat-menu>\n                </ng-container>\n\n                @if (showToolbarDividers) {\n                    <adf-toolbar-divider />\n                }\n\n                <ng-content select=\"adf-viewer-toolbar-custom-actions\" />\n\n                <button id=\"adf-viewer-fullscreen\"\n                        *ngIf=\"allowFullScreen\"\n                        mat-icon-button\n                        [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.FULLSCREEN' | translate\"\n                        title=\"{{ 'ADF_VIEWER.ACTIONS.FULLSCREEN' | translate }}\"\n                        data-automation-id=\"adf-toolbar-fullscreen\"\n                        (click)=\"enterFullScreen()\">\n                    <mat-icon adf-icon=\"fullscreen\" />\n                </button>\n\n                <ng-container *ngIf=\"allowRightSidebar && !hideInfoButton\">\n                    <adf-toolbar-divider />\n\n                    <button mat-icon-button\n                            [attr.aria-expanded]=\"showRightSidebar\"\n                            [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.INFO' | translate\"\n                            title=\"{{ 'ADF_VIEWER.ACTIONS.INFO' | translate }}\"\n                            data-automation-id=\"adf-toolbar-sidebar\"\n                            [color]=\"showRightSidebar ? 'accent' : null\"\n                            (click)=\"toggleRightSidebar()\">\n                        <mat-icon adf-icon=\"info_outline\" />\n                    </button>\n\n                </ng-container>\n\n                <ng-container *ngIf=\"mnuMoreActions\">\n                    <button id=\"adf-viewer-moreactions\"\n                            mat-icon-button\n                            [matMenuTriggerFor]=\"mnuMoreActions\"\n                            [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.MORE_ACTIONS' | translate\"\n                            title=\"{{ 'ADF_VIEWER.ACTIONS.MORE_ACTIONS' | translate }}\"\n                            data-automation-id=\"adf-toolbar-more-actions\">\n                        <mat-icon adf-icon=\"more_vert\" />\n                    </button>\n                    <mat-menu #mnuMoreActions=\"matMenu\"\n                              [overlapTrigger]=\"false\">\n                        <ng-content select=\"adf-viewer-more-actions\" />\n                    </mat-menu>\n                </ng-container>\n\n                <ng-container *ngIf=\"allowGoBack && closeButtonPosition === CloseButtonPosition.Right\">\n                    @if (showToolbarDividers) {\n                        <adf-toolbar-divider />\n                    }\n                    <button class=\"adf-viewer-close-button\"\n                            data-automation-id=\"adf-toolbar-right-back\"\n                            [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.CLOSE' | translate\"\n                            mat-icon-button\n                            title=\"{{ 'ADF_VIEWER.ACTIONS.CLOSE' | translate }}\"\n                            (click)=\"onClose()\">\n                        <mat-icon adf-icon=\"close\" />\n                    </button>\n                </ng-container>\n\n            </adf-toolbar>\n        </ng-container>\n\n        <div class=\"adf-viewer-sidebars\">\n\n            <ng-container *ngIf=\"allowRightSidebar && showRightSidebar\">\n                <div class=\"adf-viewer__sidebar adf-viewer__sidebar__right\"\n                     id=\"adf-right-sidebar\">\n                    <ng-container *ngIf=\"sidebarRightTemplate\">\n                        <ng-container *ngTemplateOutlet=\"sidebarRightTemplate;context:sidebarRightTemplateContext\" />\n                    </ng-container>\n                    <ng-content *ngIf=\"!sidebarRightTemplate\"\n                                select=\"adf-viewer-sidebar\" />\n                </div>\n            </ng-container>\n\n            <ng-container *ngIf=\"allowLeftSidebar && showLeftSidebar\">\n                <div class=\"adf-viewer__sidebar adf-viewer__sidebar__left\"\n                     id=\"adf-left-sidebar\">\n                    <ng-container *ngIf=\"sidebarLeftTemplate\">\n                        <ng-container *ngTemplateOutlet=\"sidebarLeftTemplate;context:sidebarLeftTemplateContext\" />\n                    </ng-container>\n                    <ng-content *ngIf=\"!sidebarLeftTemplate\"\n                                select=\"adf-viewer-sidebar\" />\n                </div>\n            </ng-container>\n\n            <adf-viewer-render (close)=\"onClose()\"\n                               [mimeType]=\"mimeType\"\n                               [fileName]=\"fileName\"\n                               [blobFile]=\"blobFile\"\n                               [readOnly]=\"readOnly\"\n                               (submitFile)=\"onSubmitFile($event)\"\n                               [allowedEditActions]=\"allowedEditActions\"\n                               [urlFile]=\"urlFile\"\n                               (isSaving)=\"allowNavigate = !$event\"\n                               [tracks]=\"tracks\"\n                               [viewerTemplateExtensions]=\"viewerExtensions ?? viewerTemplateExtensions\"\n                               [nodeId]=\"nodeId\"\n                               [customError]=\"customError\" />\n\n        </div>\n    </div>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AfterContentInit, ContentChild, DestroyRef, Directive, inject, Input, TemplateRef } from '@angular/core';\nimport { ViewerRenderComponent } from '../components/viewer-render/viewer-render.component';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Directive({\n    selector: 'adf-viewer-extension'\n})\nexport class ViewerExtensionDirective implements AfterContentInit {\n    private readonly viewerComponent = inject(ViewerRenderComponent);\n\n    @ContentChild(TemplateRef)\n    template: TemplateRef<unknown>;\n\n    @Input()\n    urlFileContent: string;\n\n    @Input()\n    extension: string;\n\n    @Input()\n    supportedExtensions: string[];\n\n    templateModel: { template: TemplateRef<unknown>; isVisible: boolean };\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    ngAfterContentInit() {\n        this.templateModel = { template: this.template, isVisible: false };\n        this.viewerComponent.extensionsSupportedByTemplates.push(...this.supportedExtensions);\n        this.viewerComponent.extensionTemplates.push(this.templateModel);\n\n        this.viewerComponent.extensionChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((fileExtension) => {\n            this.templateModel.isVisible = this.isVisible(fileExtension);\n        });\n    }\n\n    /**\n     * Check if the current extension in the viewer is compatible with this extension checking against `supportedExtensions`\n     *\n     * @param fileExtension file extension to check\n     * @returns `true` if file extension is compatible, otherwise `false`\n     */\n    isVisible(fileExtension: string): boolean {\n        let supportedExtension: string;\n\n        if (Array.isArray(this.supportedExtensions)) {\n            supportedExtension = this.supportedExtensions.find((extension) => extension.toLowerCase() === fileExtension);\n        }\n\n        return !!supportedExtension;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NgModule } from '@angular/core';\nimport { DownloadPromptDialogComponent } from './components/download-prompt-dialog/download-prompt-dialog.component';\nimport { ImgViewerComponent } from './components/img-viewer/img-viewer.component';\nimport { MediaPlayerComponent } from './components/media-player/media-player.component';\nimport { PdfPasswordDialogComponent } from './components/pdf-viewer-password-dialog/pdf-viewer-password-dialog';\nimport { PdfThumbComponent } from './components/pdf-viewer-thumb/pdf-viewer-thumb.component';\nimport { PdfThumbListComponent } from './components/pdf-viewer-thumbnails/pdf-viewer-thumbnails.component';\nimport { PdfViewerComponent } from './components/pdf-viewer/pdf-viewer.component';\nimport { TxtViewerComponent } from './components/txt-viewer/txt-viewer.component';\nimport { UnknownFormatComponent } from './components/unknown-format/unknown-format.component';\nimport { ViewerMoreActionsComponent } from './components/viewer-more-actions.component';\nimport { ViewerOpenWithComponent } from './components/viewer-open-with.component';\nimport { ViewerRenderComponent } from './components/viewer-render/viewer-render.component';\nimport { ViewerSidebarComponent } from './components/viewer-sidebar.component';\nimport { ViewerToolbarActionsComponent } from './components/viewer-toolbar-actions.component';\nimport { ViewerToolbarCustomActionsComponent } from './components/viewer-toolbar-custom-actions.component';\nimport { ViewerToolbarComponent } from './components/viewer-toolbar.component';\nimport { ViewerComponent } from './components/viewer.component';\nimport { ViewerExtensionDirective } from './directives/viewer-extension.directive';\n\nexport const VIEWER_DIRECTIVES = [\n    PdfPasswordDialogComponent,\n    ViewerRenderComponent,\n    ImgViewerComponent,\n    TxtViewerComponent,\n    MediaPlayerComponent,\n    PdfViewerComponent,\n    PdfThumbComponent,\n    PdfThumbListComponent,\n    ViewerExtensionDirective,\n    UnknownFormatComponent,\n    ViewerToolbarComponent,\n    ViewerSidebarComponent,\n    ViewerOpenWithComponent,\n    ViewerMoreActionsComponent,\n    ViewerToolbarActionsComponent,\n    ViewerComponent,\n    ViewerToolbarCustomActionsComponent,\n    DownloadPromptDialogComponent\n] as const;\n\n/** @deprecated use `...VIEWER_DIRECTIVES` or import standalone directives */\n@NgModule({\n    imports: [...VIEWER_DIRECTIVES],\n    exports: [...VIEWER_DIRECTIVES]\n})\nexport class ViewerModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './services/view-util.service';\nexport * from './components/img-viewer/img-viewer.component';\nexport * from './components/media-player/media-player.component';\nexport * from './components/pdf-viewer-password-dialog/pdf-viewer-password-dialog';\nexport * from './components/pdf-viewer/pdf-viewer.component';\nexport * from './components/pdf-viewer-thumbnails/pdf-viewer-thumbnails.component';\nexport * from './components/pdf-viewer-thumb/pdf-viewer-thumb.component';\nexport * from './components/pdf-viewer-thumbnails/pdf-viewer-thumbnails.component';\nexport * from './components/txt-viewer/txt-viewer.component';\nexport * from './components/unknown-format/unknown-format.component';\nexport * from './components/viewer-more-actions.component';\nexport * from './components/viewer-open-with.component';\nexport * from './components/viewer-sidebar.component';\nexport * from './components/viewer-toolbar.component';\nexport * from './components/viewer-toolbar-actions.component';\nexport * from './components/viewer-toolbar-custom-actions.component';\nexport * from './components/viewer-render/viewer-render.component';\nexport * from './components/viewer.component';\nexport * from './components/download-prompt-dialog/download-prompt-dialog.component';\n\nexport * from './directives/viewer-extension.directive';\n\nexport * from './viewer.module';\n\nexport * from './models/viewer.model';\nexport * from './models/download-prompt.actions';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\n\nexport interface NavbarItem {\n    label: string;\n    routerLink?: string;\n}\n\n@Component({\n    selector: 'adf-navbar-item',\n    templateUrl: 'navbar-item.component.html',\n    styleUrls: ['./navbar-item.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    imports: [MatButtonModule, CommonModule, RouterModule],\n    host: { class: 'adf-navbar-item' }\n})\nexport class NavbarItemComponent {\n    @Input() label: string;\n    @Input() routerLink?: string;\n}\n","<button *ngIf=\"routerLink; else noRouterLink\" class=\"adf-navbar-item-btn\"\n        [routerLink]=\"routerLink\"\n        routerLinkActive=\"adf-navbar-item-active\"\n        mat-button>{{ label }}\n</button>\n<ng-template #noRouterLink>\n    <button class=\"adf-navbar-item-btn\" mat-button>\n        {{ label }}\n    </button>\n</ng-template>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { CommonModule } from '@angular/common';\nimport { NavbarItem, NavbarItemComponent } from './navbar-item.component';\n\n@Component({\n    selector: 'adf-navbar',\n    templateUrl: './navbar.component.html',\n    styleUrls: ['./navbar.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    imports: [MatToolbarModule, CommonModule, NavbarItemComponent],\n    host: { class: 'adf-navbar' }\n})\nexport class NavbarComponent {\n    @Input()\n    items: NavbarItem[] = [];\n}\n","<adf-navbar-item *ngFor=\"let item of items\"\n                 [routerLink]=\"item.routerLink\"\n                 [label]=\"item.label\" />\n<ng-content />\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, HostBinding, Input, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ThemePalette } from '@angular/material/core';\nimport { TOOLBAR_DIRECTIVES } from '../toolbar';\nimport { NavbarItem } from './navbar/navbar-item.component';\nimport { NavbarComponent } from './navbar/navbar.component';\n\nexport type HeaderVariant = 'minimal' | 'extended';\n\n@Component({\n    selector: 'adf-header',\n    imports: [CommonModule, ...TOOLBAR_DIRECTIVES, NavbarComponent],\n    templateUrl: './header.component.html',\n    styleUrls: ['./header.component.scss'],\n    host: { class: 'adf-header' },\n    encapsulation: ViewEncapsulation.None\n})\nexport class HeaderComponent {\n    @Input() variant: HeaderVariant = 'minimal';\n\n    @HostBinding('style.--adf-toolbar-title-width')\n    get width() {\n        return this.variant === 'extended' ? '100%' : 'auto';\n    }\n\n    @HostBinding('style.--adf-header-height')\n    @Input()\n    headerHeight = getComputedStyle(document.documentElement).getPropertyValue('--adf-header-height');\n\n    @Input()\n    logoSrc: string;\n\n    @Input()\n    logoAlt: string;\n\n    @HostBinding('style.--adf-header-logo-height')\n    @Input()\n    logoHeight = getComputedStyle(document.documentElement).getPropertyValue('--adf-header-logo-height');\n\n    @HostBinding('style.--adf-header-logo-width')\n    @Input()\n    logoWidth = getComputedStyle(document.documentElement).getPropertyValue('--adf-header-logo-width');\n\n    @Input()\n    title: string;\n\n    @Input()\n    color: ThemePalette;\n\n    @Input()\n    navbarItems: NavbarItem[] = [];\n}\n","<ng-container [ngSwitch]=\"variant\">\n    <ng-container *ngSwitchCase=\"'minimal'\">\n        <adf-toolbar [color]=\"color\">\n            <adf-toolbar-title>\n                <ng-container *ngTemplateOutlet=\"toolbarTitleContent\" />\n            </adf-toolbar-title>\n            <ng-container *ngTemplateOutlet=\"navbarTemplate\" />\n            <div class=\"adf-toolbar--spacer\"></div>\n            <ng-container *ngTemplateOutlet=\"toolbarActions\" />\n        </adf-toolbar>\n    </ng-container>\n\n    <ng-container *ngSwitchCase=\"'extended'\">\n        <adf-toolbar [color]=\"color\">\n            <adf-toolbar-title>\n                <ng-container *ngTemplateOutlet=\"toolbarTitleContent\" />\n            </adf-toolbar-title>\n            <ng-container *ngTemplateOutlet=\"toolbarActions\" />\n        </adf-toolbar>\n        <adf-toolbar [color]=\"color\">\n            <ng-container *ngTemplateOutlet=\"navbarTemplate\" />\n        </adf-toolbar>\n    </ng-container>\n</ng-container>\n\n<ng-template #toolbarTitleContent>\n    <img *ngIf=\"logoSrc\" [src]=\"logoSrc\" [alt]=\"logoAlt\" class=\"adf-toolbar-logo\"/>\n    <span *ngIf=\"variant==='extended'\">{{ title }}</span>\n</ng-template>\n\n<ng-template #toolbarActions>\n    <div class=\"adf-toolbar-actions\">\n        <ng-content select=\"[adf-toolbar-actions]\" />\n    </div>\n</ng-template>\n\n<ng-template #navbarTemplate>\n    <adf-navbar [items]=\"navbarItems\">\n        <ng-content select=\"adf-navbar-item\" />\n    </adf-navbar>\n</ng-template>\n\n\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './header.component';\nexport * from './navbar/navbar.component';\nexport * from './navbar/navbar-item.component';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport class PaginationModel {\n    merge?: boolean;\n    count?: number;\n    hasMoreItems?: boolean;\n    totalItems?: number;\n    skipCount?: number;\n    maxItems?: number;\n\n    constructor(input?: any) {\n        if (input) {\n            this.count = input.count;\n            this.hasMoreItems = input.hasMoreItems ? input.hasMoreItems : false;\n            this.merge = input.merge ? input.merge : false;\n            this.totalItems = input.totalItems;\n            this.skipCount = input.skipCount;\n            this.maxItems = input.maxItems;\n        }\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    DestroyRef,\n    ElementRef,\n    EventEmitter,\n    inject,\n    Input,\n    OnInit,\n    Output,\n    Renderer2,\n    ViewEncapsulation\n} from '@angular/core';\nimport { PaginatedComponent } from './paginated-component.interface';\nimport { PaginationComponentInterface } from './pagination-component.interface';\nimport { PaginationModel } from '../models/pagination.model';\nimport { UserPreferencesService, UserPreferenceValues } from '../common/services/user-preferences.service';\nimport { TranslatePipe, TranslateService } from '@ngx-translate/core';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { IconModule } from '../icon/icon.module';\n\nexport type PaginationAction = 'NEXT_PAGE' | 'PREV_PAGE' | 'CHANGE_PAGE_SIZE' | 'CHANGE_PAGE_NUMBER';\n\nexport const DEFAULT_PAGINATION: PaginationModel = {\n    skipCount: 0,\n    maxItems: 25,\n    totalItems: 0,\n    count: 0,\n    hasMoreItems: false\n};\n\n@Component({\n    selector: 'adf-pagination',\n    host: { class: 'adf-pagination' },\n    templateUrl: './pagination.component.html',\n    styleUrls: ['./pagination.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    imports: [CommonModule, TranslatePipe, MatButtonModule, IconModule, MatMenuModule]\n})\nexport class PaginationComponent implements OnInit, PaginationComponentInterface {\n    private readonly elementRef = inject(ElementRef);\n    private readonly renderer = inject(Renderer2);\n    private readonly cdr = inject(ChangeDetectorRef);\n    private readonly userPreferencesService = inject(UserPreferencesService);\n    private readonly translate = inject(TranslateService);\n\n    private _pagination: PaginationModel;\n    private _isEmpty = true;\n    private _hasItems = false;\n\n    /** Component that provides custom pagination support. */\n    @Input()\n    target: PaginatedComponent;\n\n    /** An array of page sizes. */\n    @Input()\n    supportedPageSizes: number[];\n\n    get pagination(): PaginationModel {\n        return this._pagination;\n    }\n\n    /** Pagination object. */\n    @Input()\n    set pagination(value: PaginationModel) {\n        value = value || DEFAULT_PAGINATION;\n\n        this._pagination = value;\n        this._hasItems = value && value.count > 0;\n        this._isEmpty = !this.hasItems;\n\n        // TODO: Angular 10 workaround for HostBinding bug\n        if (this._isEmpty) {\n            this.renderer.addClass(this.elementRef.nativeElement, 'adf-pagination__empty');\n        } else {\n            this.renderer.removeClass(this.elementRef.nativeElement, 'adf-pagination__empty');\n        }\n\n        this.cdr.detectChanges();\n    }\n\n    /** Emitted when pagination changes in any way. */\n    // eslint-disable-next-line @angular-eslint/no-output-native\n    @Output()\n    change = new EventEmitter<PaginationModel>();\n\n    /** Emitted when the page number changes. */\n    @Output()\n    changePageNumber = new EventEmitter<PaginationModel>();\n\n    /** Emitted when the page size changes. */\n    @Output()\n    changePageSize = new EventEmitter<PaginationModel>();\n\n    /** Emitted when the next page is requested. */\n    @Output()\n    nextPage = new EventEmitter<PaginationModel>();\n\n    /** Emitted when the previous page is requested. */\n    @Output()\n    prevPage = new EventEmitter<PaginationModel>();\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    ngOnInit() {\n        this.userPreferencesService\n            .select(UserPreferenceValues.PaginationSize)\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe((maxItems) => {\n                this.pagination = {\n                    ...DEFAULT_PAGINATION,\n                    ...this.pagination,\n                    maxItems\n                };\n            });\n\n        if (!this.supportedPageSizes) {\n            this.supportedPageSizes = this.userPreferencesService.supportedPageSizes;\n        }\n\n        if (this.target) {\n            this.target.pagination.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((pagination) => {\n                if (pagination.count === 0 && !this.isFirstPage) {\n                    this.goPrevious();\n                }\n\n                this.pagination = {\n                    ...pagination\n                };\n            });\n        }\n\n        if (!this.pagination) {\n            this.pagination = {\n                ...DEFAULT_PAGINATION\n            };\n        }\n    }\n\n    get lastPage(): number {\n        const { maxItems, totalItems } = this.pagination;\n\n        return totalItems && maxItems ? Math.ceil(totalItems / maxItems) : 1;\n    }\n\n    get current(): number {\n        const { maxItems, skipCount } = this.pagination;\n\n        return skipCount && maxItems ? Math.floor(skipCount / maxItems) + 1 : 1;\n    }\n\n    get isLastPage(): boolean {\n        if (!this.pagination.totalItems && this.pagination.hasMoreItems) {\n            return false;\n        }\n        return this.current === this.lastPage;\n    }\n\n    get isFirstPage(): boolean {\n        return this.current === 1;\n    }\n\n    get next(): number {\n        return this.isLastPage ? this.current : this.current + 1;\n    }\n\n    get previous(): number {\n        return this.isFirstPage ? 1 : this.current - 1;\n    }\n\n    get hasItems(): boolean {\n        return this._hasItems;\n    }\n\n    // TODO: not working correctly in Angular 10\n    // @HostBinding('class.adf-pagination__empty')\n    get isEmpty(): boolean {\n        return this._isEmpty;\n    }\n\n    get range(): number[] {\n        const { skipCount, maxItems, totalItems } = this.pagination;\n\n        let start = 0;\n        if (totalItems || totalItems !== 0) {\n            start = skipCount + 1;\n        }\n\n        const end = this.isLastPage ? totalItems : skipCount + maxItems;\n\n        return [start, end];\n    }\n\n    get pages(): number[] {\n        return Array(this.lastPage)\n            .fill('n')\n            .map((_, index) => index + 1);\n    }\n\n    get limitedPages(): number[] {\n        if (this.lastPage <= 100) {\n            return this.pages;\n        }\n        const twentyItems = Array.from(Array(20));\n        return [\n            1,\n            ...twentyItems.map((_, i) => this.current - i - 1).reverse(),\n            this.current,\n            ...twentyItems.map((_, i) => this.current + i + 1),\n            this.lastPage\n        ].filter((value: number, index: number, array: number[]) => value > 0 && value <= this.lastPage && !array.slice(0, index).includes(value));\n    }\n\n    get itemRangeText(): string {\n        const rangeString = this.range.join('-');\n\n        let translation = this.translate.instant('CORE.PAGINATION.ITEMS_RANGE', {\n            range: rangeString,\n            total: this.pagination.totalItems\n        });\n\n        if (!this.pagination.totalItems) {\n            translation = translation.substr(0, translation.indexOf(rangeString) + rangeString.length);\n        }\n\n        return translation;\n    }\n\n    goNext() {\n        if (this.hasItems) {\n            const maxItems = this.pagination.maxItems;\n            const skipCount = (this.next - 1) * maxItems;\n\n            this.pagination = {\n                ...this.pagination,\n                skipCount\n            };\n\n            this.handlePaginationEvent('NEXT_PAGE');\n        }\n    }\n\n    goPrevious() {\n        if (this.hasItems) {\n            const maxItems = this.pagination.maxItems;\n            const skipCount = (this.previous - 1) * maxItems;\n\n            this.pagination = {\n                ...this.pagination,\n                skipCount\n            };\n\n            this.handlePaginationEvent('PREV_PAGE');\n        }\n    }\n\n    onChangePageNumber(pageNumber: number) {\n        if (this.hasItems) {\n            const maxItems = this.pagination.maxItems;\n            const skipCount = (pageNumber - 1) * maxItems;\n\n            this.pagination = {\n                ...this.pagination,\n                skipCount\n            };\n\n            this.handlePaginationEvent('CHANGE_PAGE_NUMBER');\n        }\n    }\n\n    onChangePageSize(maxItems: number) {\n        this.pagination = {\n            ...this.pagination,\n            skipCount: 0,\n            maxItems\n        };\n\n        this.userPreferencesService.paginationSize = maxItems;\n        this.handlePaginationEvent('CHANGE_PAGE_SIZE');\n    }\n    handlePaginationEvent(action: PaginationAction) {\n        const paginationModel = { ...this.pagination };\n\n        if (action === 'NEXT_PAGE') {\n            this.nextPage.emit(paginationModel);\n        }\n\n        if (action === 'PREV_PAGE') {\n            this.prevPage.emit(paginationModel);\n        }\n\n        if (action === 'CHANGE_PAGE_NUMBER') {\n            this.changePageNumber.emit(paginationModel);\n        }\n\n        if (action === 'CHANGE_PAGE_SIZE') {\n            this.changePageSize.emit(paginationModel);\n        }\n\n        this.change.emit(paginationModel);\n\n        if (this.target) {\n            this.target.updatePagination(paginationModel);\n        }\n    }\n}\n","<ng-container *ngIf=\"hasItems\">\n    <div class=\"adf-pagination__block adf-pagination__range-block\" aria-live=\"polite\">\n        <span class=\"adf-pagination__range\">\n            {{ itemRangeText }}\n        </span>\n    </div>\n\n    <div class=\"adf-pagination__block adf-pagination__perpage-block\">\n        <span>\n            {{ 'CORE.PAGINATION.ITEMS_PER_PAGE' | translate }}\n        </span>\n\n        <span class=\"adf-pagination__max-items\">\n            {{ pagination.maxItems }}\n        </span>\n\n        <button\n            mat-icon-button\n            [attr.aria-label]=\"'CORE.PAGINATION.ARIA.ITEMS_PER_PAGE' | translate\"\n            [matMenuTriggerFor]=\"pageSizeMenu\">\n            <mat-icon adf-icon=\"arrow_drop_down\" />\n        </button>\n\n        <mat-menu #pageSizeMenu=\"matMenu\" class=\"adf-pagination__page-selector\">\n            <button\n                mat-menu-item\n                *ngFor=\"let pageSize of supportedPageSizes\"\n                (click)=\"onChangePageSize(pageSize)\">\n                {{ pageSize }}\n            </button>\n        </mat-menu>\n    </div>\n\n    <div class=\"adf-pagination__block adf-pagination__actualinfo-block\">\n        <span class=\"adf-pagination__current-page\">\n            {{ 'CORE.PAGINATION.CURRENT_PAGE' | translate: { number: current } }}\n        </span>\n\n        <button\n            mat-icon-button\n            data-automation-id=\"page-selector\"\n            [attr.aria-label]=\"'CORE.PAGINATION.ARIA.CURRENT_PAGE' | translate\"\n            [matMenuTriggerFor]=\"pagesMenu\"\n            *ngIf=\"lastPage > 1\">\n            <mat-icon adf-icon=\"arrow_drop_down\" />\n        </button>\n\n        <div *ngIf=\"pagination.totalItems\">\n            <span class=\"adf-pagination__total-pages\">\n                {{ 'CORE.PAGINATION.TOTAL_PAGES' | translate: { total: lastPage } }}\n            </span>\n        </div>\n\n        <mat-menu #pagesMenu=\"matMenu\" class=\"adf-pagination__page-selector\">\n            <button\n                mat-menu-item\n                *ngFor=\"let pageNumber of limitedPages\"\n                (click)=\"onChangePageNumber(pageNumber)\">\n                {{ pageNumber }}\n            </button>\n        </mat-menu>\n    </div>\n\n    <div class=\"adf-pagination__block adf-pagination__controls-block\">\n        <button\n            class=\"adf-pagination__previous-button\"\n            mat-icon-button\n            [attr.aria-label]=\"'CORE.PAGINATION.ARIA.PREVIOUS_PAGE' | translate\"\n            [disabled]=\"isFirstPage\"\n            (click)=\"goPrevious()\">\n            <mat-icon adf-icon=\"keyboard_arrow_left\" />\n        </button>\n\n        <button\n            class=\"adf-pagination__next-button\"\n            mat-icon-button\n            [attr.aria-label]=\"'CORE.PAGINATION.ARIA.NEXT_PAGE' | translate\"\n            [disabled]=\"isLastPage\"\n            (click)=\"goNext()\">\n            <mat-icon adf-icon=\"keyboard_arrow_right\" />\n        </button>\n    </div>\n</ng-container>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/no-input-rename */\n/* eslint-disable rxjs/no-subject-value */\n\nimport {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    DestroyRef,\n    EventEmitter,\n    inject,\n    Input,\n    OnInit,\n    Output,\n    ViewEncapsulation\n} from '@angular/core';\n\nimport { PaginatedComponent } from './paginated-component.interface';\nimport { PaginationComponentInterface } from './pagination-component.interface';\nimport { RequestPaginationModel } from '../models/request-pagination.model';\nimport { UserPreferencesService, UserPreferenceValues } from '../common/services/user-preferences.service';\nimport { PaginationModel } from '../models/pagination.model';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n    selector: 'adf-infinite-pagination',\n    host: { class: 'infinite-adf-pagination' },\n    templateUrl: './infinite-pagination.component.html',\n    styleUrls: ['./infinite-pagination.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    imports: [CommonModule, MatButtonModule, MatProgressBarModule, TranslatePipe]\n})\nexport class InfinitePaginationComponent implements OnInit, PaginationComponentInterface {\n    private readonly cdr = inject(ChangeDetectorRef);\n    private readonly userPreferencesService = inject(UserPreferencesService);\n\n    static DEFAULT_PAGINATION: PaginationModel = new PaginationModel({\n        skipCount: 0,\n        maxItems: 25,\n        totalItems: 0\n    });\n\n    _target: PaginatedComponent;\n\n    /** Component that provides custom pagination support. */\n    @Input()\n    set target(target: PaginatedComponent) {\n        if (target) {\n            this._target = target;\n            target.pagination.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((pagination) => {\n                this.isLoading = false;\n                this.pagination = pagination;\n\n                if (!this.pagination.hasMoreItems) {\n                    this.pagination.hasMoreItems = false;\n                }\n\n                this.cdr.detectChanges();\n            });\n        }\n    }\n\n    get target() {\n        return this._target;\n    }\n\n    /** Number of items that are added with each \"load more\" event. */\n    @Input()\n    pageSize: number;\n\n    /** Is a new page loading? */\n    @Input('loading')\n    isLoading: boolean = false;\n\n    /** Emitted when the \"Load More\" button is clicked. */\n    @Output()\n    loadMore: EventEmitter<RequestPaginationModel> = new EventEmitter<RequestPaginationModel>();\n\n    pagination: PaginationModel = InfinitePaginationComponent.DEFAULT_PAGINATION;\n\n    requestPaginationModel: RequestPaginationModel = {\n        skipCount: 0,\n        merge: true\n    };\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    ngOnInit() {\n        this.userPreferencesService\n            .select(UserPreferenceValues.PaginationSize)\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe((pageSize: number) => {\n                this.pageSize = this.pageSize || pageSize;\n                this.requestPaginationModel.maxItems = this.pageSize;\n            });\n    }\n\n    onLoadMore() {\n        this.requestPaginationModel.skipCount = 0;\n        this.requestPaginationModel.merge = true;\n\n        this.requestPaginationModel.maxItems += this.pageSize;\n\n        this.loadMore.next(this.requestPaginationModel);\n\n        if (this._target) {\n            this.isLoading = true;\n            this._target.updatePagination(this.requestPaginationModel);\n        }\n    }\n\n    reset() {\n        this.pagination.skipCount = 0;\n        this.pagination.maxItems = this.pageSize;\n\n        if (this._target) {\n            this._target.updatePagination(this.pagination);\n        }\n    }\n}\n","<div *ngIf=\"pagination?.hasMoreItems || isLoading\" class=\"adf-infinite-pagination\">\n\n    <button mat-button\n        *ngIf=\"!isLoading\"\n        class=\"adf-infinite-pagination-load-more\"\n        (click)=\"onLoadMore()\"\n        data-automation-id=\"adf-infinite-pagination-button\">\n            <ng-content />\n    </button>\n\n    <mat-progress-bar *ngIf=\"isLoading\"\n        mode=\"indeterminate\"\n        class=\"adf-infinite-pagination-spinner\"\n        data-automation-id=\"adf-infinite-pagination-spinner\"\n        [attr.aria-label]=\"'DATA_LOADING' | translate\" />\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { PaginationModel } from '../models/pagination.model';\nimport { BehaviorSubject } from 'rxjs';\nimport { RequestPaginationModel } from '../models/request-pagination.model';\n\nexport interface PaginatedComponent {\n    pagination: BehaviorSubject<PaginationModel>;\n    updatePagination(requestPaginationModel: RequestPaginationModel);\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { PaginatedComponent } from './paginated-component.interface';\nimport { PaginationModel } from '../models/pagination.model';\n\nexport interface PaginationComponentInterface {\n    target: PaginatedComponent;\n    pagination: PaginationModel;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NgModule } from '@angular/core';\nimport { InfinitePaginationComponent } from './infinite-pagination.component';\nimport { PaginationComponent } from './pagination.component';\n\nexport const PAGINATION_DIRECTIVES = [InfinitePaginationComponent, PaginationComponent];\n\n/** @deprecated use `...PAGINATION_DIRECTIVES` or import standalone components */\n@NgModule({\n    imports: [...PAGINATION_DIRECTIVES],\n    exports: [...PAGINATION_DIRECTIVES]\n})\nexport class PaginationModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './pagination.component';\nexport * from './infinite-pagination.component';\nexport * from './paginated-component.interface';\nexport * from './pagination-component.interface';\n\nexport * from './pagination.module';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { HttpHeaders } from '@angular/common/http';\nimport { RedirectionModel } from '../models/redirection.model';\nimport { Observable, Observer, ReplaySubject, throwError } from 'rxjs';\nimport { AppConfigService, AppConfigValues } from '../../app-config/app-config.service';\nimport { CookieService } from '../../common/services/cookie.service';\nimport { AuthenticationServiceInterface } from '../interfaces/authentication-service.interface';\nimport { EventEmitterInstance } from '@alfresco/js-api';\nexport abstract class BaseAuthenticationService implements AuthenticationServiceInterface {\n    on: EventEmitterInstance['on'];\n    off: EventEmitterInstance['off'];\n    once: EventEmitterInstance['once'];\n    emit: EventEmitterInstance['emit'];\n\n    protected redirectUrl: RedirectionModel = null;\n\n    onError = new ReplaySubject<any>(1);\n    onLogin = new ReplaySubject<any>(1);\n    onLogout = new ReplaySubject<any>(1);\n\n    protected constructor(\n        protected appConfig: AppConfigService,\n        protected cookie: CookieService\n    ) {}\n\n    abstract getAuthHeaders(requestUrl: string, header: HttpHeaders): HttpHeaders;\n    abstract getToken(): string;\n    abstract isLoggedIn(): boolean;\n    abstract logout(): any;\n    abstract reset(): void;\n    abstract getUsername(): string;\n\n    /**\n     * Adds the auth token to an HTTP header using the 'bearer' scheme.\n     *\n     * @param requestUrl the request url\n     * @param headersArg Header that will receive the token\n     * @returns The new header with the token added\n     */\n    addTokenToHeader(requestUrl: string, headersArg?: HttpHeaders): Observable<HttpHeaders> {\n        return new Observable((observer: Observer<any>) => {\n            let headers = headersArg;\n            if (!headers) {\n                headers = new HttpHeaders();\n            }\n            try {\n                const header = this.getAuthHeaders(requestUrl, headers);\n\n                observer.next(header);\n                observer.complete();\n            } catch (error) {\n                observer.error(error);\n            }\n        });\n    }\n\n    isECMProvider(): boolean {\n        const provider = this.appConfig.get('providers') as string;\n        return provider && provider.toUpperCase() === 'ECM';\n    }\n\n    /**\n     * Does the provider support BPM?\n     *\n     * @returns True if supported, false otherwise\n     */\n    isBPMProvider(): boolean {\n        const provider = this.appConfig.get('providers');\n        if (provider && (typeof provider === 'string' || provider instanceof String)) {\n            return provider.toUpperCase() === 'BPM';\n        } else {\n            return false;\n        }\n    }\n\n    /**\n     * Does the provider support both ECM and BPM?\n     *\n     * @returns True if both are supported, false otherwise\n     */\n    isALLProvider(): boolean {\n        const provider = this.appConfig.get('providers') as string;\n        return provider && provider.toUpperCase() === 'ALL';\n    }\n\n    /**\n     * Prints an error message in the console browser\n     *\n     * @param error Error message\n     * @returns Object representing the error message\n     */\n    handleError(error: any): Observable<any> {\n        this.onError.next(error || 'Server error');\n        return throwError(() => error || 'Server error');\n    }\n\n    isOauth(): boolean {\n        return this.appConfig.get(AppConfigValues.AUTHTYPE) === 'OAUTH';\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { inject, Injectable } from '@angular/core';\nimport { OAuthStorage } from 'angular-oauth2-oidc';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class JwtHelperService {\n    static USER_NAME = 'name';\n    static FAMILY_NAME = 'family_name';\n    static GIVEN_NAME = 'given_name';\n    static USER_EMAIL = 'email';\n    static USER_ACCESS_TOKEN = 'access_token';\n    static USER_ID_TOKEN = 'id_token';\n    static REALM_ACCESS = 'realm_access';\n    static RESOURCE_ACCESS = 'resource_access';\n    static USER_PREFERRED_USERNAME = 'preferred_username';\n    static HXP_AUTHORIZATION = 'hxp_authorization';\n\n    private readonly storageService: OAuthStorage = inject(OAuthStorage);\n\n    /**\n     * Decodes a JSON web token into a JS object.\n     *\n     * @param token Token in encoded form\n     * @returns Decoded token data object\n     */\n    decodeToken(token): any {\n        const parts = token.split('.');\n\n        if (parts.length !== 3) {\n            throw new Error('JWT must have 3 parts');\n        }\n\n        const decoded = this.urlBase64Decode(parts[1]);\n        if (!decoded) {\n            throw new Error('Cannot decode the token');\n        }\n\n        return JSON.parse(decoded);\n    }\n\n    private urlBase64Decode(token): string {\n        let output = token.replace(/-/g, '+').replace(/_/g, '/');\n        switch (output.length % 4) {\n            case 0: {\n                break;\n            }\n            case 2: {\n                output += '==';\n                break;\n            }\n            case 3: {\n                output += '=';\n                break;\n            }\n            default: {\n                throw new Error('Illegal base64url string!');\n            }\n        }\n        return decodeURIComponent(escape(window.atob(output)));\n    }\n\n    /**\n     * Gets a named value from the user access or id token.\n     *\n     * @param key Key name of the field to retrieve\n     * @returns Value from the token\n     */\n    getValueFromLocalToken<T>(key: string): T {\n        return this.getValueFromToken(this.getAccessToken(), key) || this.getValueFromToken(this.getIdToken(), key);\n    }\n\n    /**\n     * Gets a named value from the user access token.\n     *\n     * @param key Key name of the field to retrieve\n     * @returns Value from the token\n     */\n    getValueFromLocalAccessToken<T>(key: string): T {\n        return this.getValueFromToken(this.getAccessToken(), key);\n    }\n\n    /**\n     * Gets access token\n     *\n     * @returns access token\n     */\n    getAccessToken(): string {\n        return this.storageService.getItem(JwtHelperService.USER_ACCESS_TOKEN);\n    }\n\n    /**\n     * Gets a named value from the user id token.\n     *\n     * @param key Key name of the field to retrieve\n     * @returns Value from the token\n     */\n    getValueFromLocalIdToken<T>(key: string): T {\n        return this.getValueFromToken(this.getIdToken(), key);\n    }\n\n    /**\n     * Gets id token\n     *\n     * @returns id token\n     */\n    getIdToken(): string {\n        return this.storageService.getItem(JwtHelperService.USER_ID_TOKEN);\n    }\n\n    /**\n     * Gets a named value from the user access token.\n     *\n     * @param token your SSO access token where the value is encode\n     * @param key Key name of the field to retrieve\n     * @returns Value from the token\n     */\n    getValueFromToken<T>(token: string, key: string): T {\n        let value: T;\n\n        if (token) {\n            const tokenPayload = this.decodeToken(token);\n            value = tokenPayload[key];\n        }\n        return value;\n    }\n\n    /**\n     * Gets realm roles.\n     *\n     * @returns Array of realm roles\n     */\n    getRealmRoles(): string[] {\n        const access = this.getValueFromLocalAccessToken<any>(JwtHelperService.REALM_ACCESS);\n        return access ? access['roles'] : [];\n    }\n\n    /**\n     * Gets Client roles.\n     *\n     * @param clientName client name\n     * @returns Array of client roles\n     */\n    getClientRoles(clientName: string): string[] {\n        const clientRole = this.getValueFromLocalAccessToken<any>(JwtHelperService.RESOURCE_ACCESS)[clientName];\n        return clientRole ? clientRole['roles'] : [];\n    }\n\n    /**\n     * Checks for single realm role.\n     *\n     * @param role Role name to check\n     * @returns True if it contains given role, false otherwise\n     */\n    hasRealmRole(role: string): boolean {\n        let hasRole = false;\n        if (this.getAccessToken()) {\n            const realmRoles = this.getRealmRoles();\n            hasRole = realmRoles.some((currentRole) => currentRole === role);\n        }\n        return hasRole;\n    }\n\n    /**\n     * Checks for realm roles.\n     *\n     * @param rolesToCheck List of role names to check\n     * @returns True if it contains at least one of the given roles, false otherwise\n     */\n    hasRealmRoles(rolesToCheck: string[]): boolean {\n        return rolesToCheck.some((currentRole) => this.hasRealmRole(currentRole));\n    }\n\n    /**\n     * Checks for client roles.\n     *\n     * @param clientName Targeted client name\n     * @param rolesToCheck List of role names to check\n     * @returns True if it contains at least one of the given roles, false otherwise\n     */\n    hasRealmRolesForClientRole(clientName: string, rolesToCheck: string[]): boolean {\n        return rolesToCheck.some((currentRole) => this.hasClientRole(clientName, currentRole));\n    }\n\n    /**\n     * Checks for client role.\n     *\n     * @param clientName Targeted client name\n     * @param role Role name to check\n     * @returns True if it contains given role, false otherwise\n     */\n    hasClientRole(clientName: string, role: string): boolean {\n        let hasRole = false;\n        if (this.getAccessToken()) {\n            const clientRoles = this.getClientRoles(clientName);\n            hasRole = clientRoles.some((currentRole) => currentRole === role);\n        }\n        return hasRole;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { InjectionToken } from '@angular/core';\n\nexport interface AuthModuleConfig {\n    readonly useHash: boolean;\n    preventClearHashAfterLogin?: boolean;\n}\n\nexport const AUTH_MODULE_CONFIG = new InjectionToken<AuthModuleConfig>('AUTH_MODULE_CONFIG');\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable, inject } from '@angular/core';\nimport { AuthConfig } from 'angular-oauth2-oidc';\nimport { take } from 'rxjs/operators';\nimport { AppConfigService } from '../../app-config/app-config.service';\nimport { AUTH_MODULE_CONFIG, AuthModuleConfig } from './auth-config';\nimport { OauthConfigModel } from '../models/oauth-config.model';\nimport { firstValueFrom } from 'rxjs';\n\n/**\n * Create auth configuration factory\n *\n * @param authConfigService auth config service\n * @returns factory function\n */\nexport function authConfigFactory(authConfigService: AuthConfigService): Promise<AuthConfig> {\n    return authConfigService.loadConfig();\n}\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class AuthConfigService {\n    private readonly appConfigService = inject(AppConfigService);\n    private readonly authModuleConfig = inject<AuthModuleConfig>(AUTH_MODULE_CONFIG);\n\n    private readonly _authConfig!: AuthConfig;\n    get authConfig(): AuthConfig {\n        return this._authConfig;\n    }\n\n    loadConfig(): Promise<AuthConfig> {\n        return firstValueFrom(this.appConfigService.onLoad.pipe(take(1))).then(this.loadAppConfig.bind(this));\n    }\n\n    loadAppConfig(): AuthConfig {\n        const oauth2 = this.appConfigService.oauth2;\n        const origin = this.getLocationOrigin();\n        const redirectUri = this.getRedirectUri();\n        const customQueryParams = oauth2.audience ? { audience: oauth2.audience } : {};\n        const clockSkewInSec = this.getClockSkewInSec(oauth2);\n        const sessionChecksEnabled = this.getSessionCheckEnabled(oauth2);\n\n        return new AuthConfig({\n            ...oauth2,\n            oidc: oauth2.implicitFlow || oauth2.codeFlow || false,\n            issuer: oauth2.host,\n            nonceStateSeparator: '~',\n            redirectUri,\n            silentRefreshRedirectUri: oauth2.redirectSilentIframeUri,\n            postLogoutRedirectUri: this.generatePostLogoutUri(origin, oauth2.redirectUriLogout),\n            clientId: oauth2.clientId,\n            scope: oauth2.scope,\n            dummyClientSecret: 'dummyClientSecret',\n            logoutUrl: oauth2.logoutUrl,\n            customQueryParams,\n            ...(oauth2.codeFlow && { responseType: 'code' }),\n            ...clockSkewInSec,\n            ...sessionChecksEnabled\n        });\n    }\n\n    getSessionCheckEnabled(oauth2: OauthConfigModel) {\n        return typeof oauth2.sessionChecksEnabled === 'boolean' ? { sessionChecksEnabled: oauth2.sessionChecksEnabled } : {};\n    }\n\n    getClockSkewInSec(oauth2: OauthConfigModel) {\n        return typeof oauth2.clockSkewInSec === 'number' ? { clockSkewInSec: oauth2.clockSkewInSec } : {};\n    }\n\n    getRedirectUri(): string {\n        // required for this package as we handle the returned token on this view, with is provided by the AuthModule\n        const viewUrl = `view/authentication-confirmation`;\n        const useHash = this.authModuleConfig.useHash;\n\n        const oauth2 = this.appConfigService.oauth2;\n\n        const directUrl = oauth2.redirectUri?.startsWith('http');\n        if (directUrl) {\n            return oauth2.redirectUri;\n        }\n\n        const locationOrigin =\n            oauth2.redirectUri && oauth2.redirectUri !== '/' ? this.getLocationOrigin() + '' + oauth2.redirectUri : this.getLocationOrigin();\n\n        const redirectUri = useHash ? `${locationOrigin}/#/${viewUrl}` : `${locationOrigin}/${viewUrl}`;\n\n        // handle issue from the OIDC library with hashStrategy and implicitFlow, with would append &state to the url with would lead to error\n        // `cannot match any routes`, and displaying the wildcard ** error page\n        return (oauth2.codeFlow || oauth2.implicitFlow) && useHash ? `${redirectUri}/?` : redirectUri;\n    }\n\n    private getLocationOrigin() {\n        return window.location.origin;\n    }\n\n    private generatePostLogoutUri(hostUri: string = '', redirectUriLogout: string = ''): string {\n        const hostUriWithoutSlash = hostUri.endsWith('/') ? hostUri.substring(0, hostUri.length - 1) : hostUri;\n        const redirectUriLogoutWithoutSlash = redirectUriLogout.startsWith('/') ? redirectUriLogout.substring(1) : redirectUriLogout;\n\n        return `${hostUriWithoutSlash}/${redirectUriLogoutWithoutSlash}`;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { LoginOptions, TokenResponse } from 'angular-oauth2-oidc';\nimport { Observable } from 'rxjs';\n\n/**\n * Provide authentication/authorization through OAuth2/OIDC protocol.\n */\nexport abstract class AuthService {\n    abstract onLogin: Observable<any>;\n\n    /**\n     * An observable that emits a value when a logout event occurs.\n     * Implement this observable to handle any necessary cleanup or state updates\n     * when a user logs out of the application.\n     */\n    abstract onLogout$: Observable<void>;\n\n    abstract onTokenReceived: Observable<any>;\n\n    /**\n     * An abstract observable that emits a boolean value indicating whether the discovery document\n     * has been successfully loaded.\n     */\n    abstract isDiscoveryDocumentLoaded$: Observable<boolean>;\n\n    /** Subscribe to whether the user has valid Id/Access tokens.  */\n    abstract authenticated$: Observable<boolean>;\n\n    /** Get whether the user has valid Id/Access tokens. */\n    abstract authenticated: boolean;\n\n    /** Subscribe to errors reaching the IdP. */\n    abstract idpUnreachable$: Observable<Error>;\n\n    /**\n     * Initiate the IdP login flow.\n     */\n    abstract login(currentUrl?: string): Promise<void> | void;\n\n    abstract baseAuthLogin(username: string, password: string): Observable<TokenResponse>;\n\n    /**\n     * Disconnect from IdP.\n     *\n     * @returns Promise may be returned depending on implementation\n     */\n    abstract logout(): Promise<void> | void;\n\n    /**\n     * Complete the login flow.\n     *\n     * In browsers, checks URL for auth and stored state. Call this once the application returns from IdP.\n     *\n     * @returns Promise, resolve with stored state, reject if unable to reach IdP\n     */\n    abstract loginCallback(loginOptions?: LoginOptions): Promise<string | undefined>;\n    abstract updateIDPConfiguration(...args: any[]): void;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable, inject } from '@angular/core';\nimport { OAuthService, OAuthStorage } from 'angular-oauth2-oidc';\nimport { Observable, defer, EMPTY, combineLatest } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { AppConfigService, AppConfigValues } from '../../app-config/app-config.service';\nimport { OauthConfigModel } from '../models/oauth-config.model';\nimport { BaseAuthenticationService } from '../services/base-authentication.service';\nimport { CookieService } from '../../common/services/cookie.service';\nimport { JwtHelperService } from '../services/jwt-helper.service';\nimport { AuthConfigService } from './auth-config.service';\nimport { AuthService } from './auth.service';\nimport { Minimatch } from 'minimatch';\nimport { HttpHeaders } from '@angular/common/http';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class OidcAuthenticationService extends BaseAuthenticationService {\n    private readonly jwtHelperService = inject(JwtHelperService);\n    private readonly authStorage = inject(OAuthStorage);\n    private readonly oauthService = inject(OAuthService);\n    private readonly authConfig = inject(AuthConfigService);\n\n    private readonly auth = inject(AuthService);\n\n    /**\n     * Observable that determines whether an SSO login should be performed.\n     *\n     * This observable combines the authentication status and the discovery document load status\n     * to decide if an SSO login is necessary. It emits `true` if the user is not authenticated\n     * and the discovery document is loaded, otherwise it emits `false`.\n     */\n    shouldPerformSsoLogin$: Observable<boolean> = combineLatest([this.auth.authenticated$, this.auth.isDiscoveryDocumentLoaded$]).pipe(\n        map(([authenticated, isDiscoveryDocumentLoaded]) => !authenticated && isDiscoveryDocumentLoaded)\n    );\n\n    constructor() {\n        const appConfig = inject(AppConfigService);\n        const cookie = inject(CookieService);\n\n        super(appConfig, cookie);\n    }\n\n    isLoggedIn(): boolean {\n        return this.oauthService.hasValidAccessToken() && this.oauthService.hasValidIdToken();\n    }\n\n    hasValidAccessToken(): boolean {\n        return this.oauthService.hasValidAccessToken();\n    }\n\n    hasValidIdToken(): boolean {\n        return this.oauthService.hasValidIdToken();\n    }\n\n    login(username: string, password: string): Observable<{ type: string; ticket: any }> {\n        return this.auth.baseAuthLogin(username, password).pipe(\n            map((response) => {\n                this.onLogin.next(response);\n                return {\n                    type: this.appConfig.get(AppConfigValues.PROVIDERS),\n                    ticket: response\n                };\n            }),\n            catchError((err) => this.handleError(err))\n        );\n    }\n\n    loginWithPassword(username: string, password: string): Observable<{ type: string; ticket: any }> {\n        return defer(async () => {\n            try {\n                await this.authConfig.loadConfig();\n                await this.oauthService.loadDiscoveryDocument();\n                await this.oauthService.fetchTokenUsingPasswordFlowAndLoadUserProfile(username, password);\n                await this.oauthService.refreshToken();\n                const accessToken = this.oauthService.getAccessToken();\n                this.onLogin.next(accessToken);\n\n                return {\n                    type: this.appConfig.get(AppConfigValues.PROVIDERS) as string,\n                    ticket: accessToken\n                };\n            } catch (err) {\n                throw this.handleError(err);\n            }\n        });\n    }\n\n    /**\n     * Gets the username of the authenticated user.\n     *\n     * @returns the logged username\n     */\n    getUsername() {\n        return this.jwtHelperService.getValueFromLocalToken<string>(JwtHelperService.USER_PREFERRED_USERNAME);\n    }\n\n    ssoLogin(redirectUrl?: string) {\n        this.auth.login(redirectUrl);\n    }\n\n    isRememberMeSet(): boolean {\n        return true;\n    }\n\n    logout() {\n        const logoutOptions = this.getLogoutOptions();\n        this.oauthService.logOut(logoutOptions);\n        return EMPTY;\n    }\n\n    getToken(): string {\n        return this.authStorage.getItem(JwtHelperService.USER_ACCESS_TOKEN);\n    }\n\n    reset(): void {\n        const config = this.authConfig.loadAppConfig();\n        this.auth.updateIDPConfiguration(config);\n    }\n\n    isPublicUrl(): boolean {\n        const oauth2 = this.appConfig.get<OauthConfigModel>(AppConfigValues.OAUTHCONFIG, null);\n\n        if (Array.isArray(oauth2.publicUrls)) {\n            return (\n                oauth2.publicUrls.length > 0 &&\n                oauth2.publicUrls.some((urlPattern: string) => {\n                    const minimatch = new Minimatch(urlPattern);\n                    return minimatch.match(window.location.href);\n                })\n            );\n        }\n        return false;\n    }\n\n    getAuthHeaders(_requestUrl: string, header: HttpHeaders): HttpHeaders {\n        return this.addBearerToken(header);\n    }\n\n    private addBearerToken(header: HttpHeaders): HttpHeaders {\n        const token: string = this.getToken();\n\n        if (!token) {\n            return header;\n        }\n\n        return header.set('Authorization', 'bearer ' + token);\n    }\n\n    private getLogoutOptions(): object {\n        const oauth2Config = this.appConfig.get<OauthConfigModel>(AppConfigValues.OAUTHCONFIG, null);\n        const logoutParamsList = oauth2Config?.logoutParameters || [];\n\n        return logoutParamsList.reduce((options, param) => {\n            const value = this.getLogoutParamValue(param);\n            if (value !== undefined) {\n                options[param] = value;\n            }\n            return options;\n        }, {});\n    }\n\n    private getLogoutParamValue(param: string): string | undefined {\n        switch (param) {\n            case 'client_id':\n                return this.oauthService.clientId;\n            case 'returnTo':\n                return this.oauthService.redirectUri;\n            case 'redirect_uri':\n                return this.oauthService.redirectUri;\n            case 'response_type':\n                return 'code';\n            default:\n                return undefined;\n        }\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable, inject } from '@angular/core';\nimport { AdfHttpClient } from '@alfresco/adf-core/api';\nimport { AppConfigService, AppConfigValues } from '../../app-config/app-config.service';\nimport { StorageService } from '../../common/services/storage.service';\nimport { ReplaySubject, Subject } from 'rxjs';\nimport { Authentication } from '../interfaces/authentication.interface';\n\nexport interface TicketBody {\n    userId?: string;\n    password?: string;\n}\n\nexport interface TicketEntry {\n    entry: {\n        id?: string;\n        userId?: string;\n    };\n}\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class ContentAuth {\n    private readonly appConfigService = inject(AppConfigService);\n    private readonly adfHttpClient = inject(AdfHttpClient);\n    private readonly storageService = inject(StorageService);\n\n    onLogin = new ReplaySubject<any>(1);\n    onLogout = new ReplaySubject<any>(1);\n    onError = new Subject<any>();\n\n    ticket: string;\n    config = {\n        ticketEcm: null\n    };\n\n    authentications: Authentication = {\n        basicAuth: {\n            ticket: ''\n        },\n        type: 'basic'\n    };\n\n    get basePath(): string {\n        const contextRootEcm = this.appConfigService.get<string>(AppConfigValues.CONTEXTROOTECM) || 'alfresco';\n        return this.appConfigService.get<string>(AppConfigValues.ECMHOST) + '/' + contextRootEcm + '/api/-default-/public/authentication/versions/1';\n    }\n\n    constructor() {\n        this.appConfigService.onLoad.subscribe(() => {\n            this.setConfig();\n        });\n    }\n\n    private setConfig() {\n        if (this.storageService.getItem(AppConfigValues.CONTENT_TICKET_STORAGE_LABEL)) {\n            this.setTicket(this.storageService.getItem(AppConfigValues.CONTENT_TICKET_STORAGE_LABEL));\n        }\n    }\n\n    saveUsername(username: string) {\n        this.storageService.setItem('ACS_USERNAME', username);\n    }\n\n    getUsername() {\n        return this.storageService.getItem('ACS_USERNAME');\n    }\n\n    /**\n     * login Alfresco API\n     *\n     * @param username username to login\n     * @param password password to login\n     * @returns A promise that returns {new authentication ticket} if resolved and {error} if rejected.\n     */\n    login(username: string, password: string): Promise<any> {\n        this.authentications.basicAuth.username = username;\n        this.authentications.basicAuth.password = password;\n\n        const loginRequest: any = {};\n\n        loginRequest.userId = this.authentications.basicAuth.username;\n        loginRequest.password = this.authentications.basicAuth.password;\n\n        return new Promise((resolve, reject) => {\n            this.createTicket(loginRequest)\n                .then((data: any) => {\n                    this.saveUsername(username);\n                    this.setTicket(data.entry.id);\n                    this.adfHttpClient.emit('success');\n                    this.onLogin.next('success');\n                    resolve(data.entry.id);\n                })\n                .catch((error) => {\n                    this.saveUsername('');\n                    if (error.status === 401) {\n                        this.adfHttpClient.emit('unauthorized', error);\n                        this.onError.next('unauthorized');\n                    } else if (error.status === 403) {\n                        this.adfHttpClient.emit('forbidden', error);\n                        this.onError.next('forbidden');\n                    } else {\n                        this.adfHttpClient.emit('error', error);\n                        this.onError.next('error');\n                    }\n                    reject(error);\n                });\n        });\n    }\n\n    /**\n     * logout Alfresco API\n     *\n     * @returns A promise that returns { authentication ticket} if resolved and {error} if rejected.\n     */\n    logout(): Promise<any> {\n        this.saveUsername('');\n        return new Promise((resolve, reject) => {\n            this.deleteTicket().then(\n                () => {\n                    this.invalidateSession();\n                    this.adfHttpClient.emit('logout');\n                    this.onLogout.next('logout');\n                    resolve('logout');\n                },\n                (error) => {\n                    if (error.status === 401) {\n                        this.adfHttpClient.emit('unauthorized');\n                        this.onError.next('unauthorized');\n                    }\n                    this.adfHttpClient.emit('error');\n                    this.onError.next('error');\n                    reject(error);\n                }\n            );\n        });\n    }\n\n    /**\n     * Set the current Ticket\n     *\n     * @param ticket a string representing the ticket\n     */\n    setTicket(ticket: string) {\n        this.authentications.basicAuth.username = 'ROLE_TICKET';\n        this.authentications.basicAuth.password = ticket;\n        this.config.ticketEcm = ticket;\n        this.storageService.setItem(AppConfigValues.CONTENT_TICKET_STORAGE_LABEL, ticket);\n        this.ticket = ticket;\n    }\n\n    /**\n     * @returns the current Ticket\n     */\n    getToken(): string {\n        if (!this.ticket) {\n            this.onError.next('error');\n        }\n\n        return this.ticket;\n    }\n\n    invalidateSession() {\n        this.storageService.removeItem(AppConfigValues.CONTENT_TICKET_STORAGE_LABEL);\n        this.authentications.basicAuth.username = null;\n        this.authentications.basicAuth.password = null;\n        this.config.ticketEcm = null;\n        this.ticket = null;\n    }\n\n    /**\n     * @returns If the client is logged in return true\n     */\n    isLoggedIn(): boolean {\n        return !!this.ticket;\n    }\n\n    /**\n     * @returns return the Authentication\n     */\n    getAuthentication() {\n        return this.authentications;\n    }\n\n    createTicket(ticketBodyCreate: TicketBody): Promise<TicketEntry> {\n        if (ticketBodyCreate === null || ticketBodyCreate === undefined) {\n            this.onError.next(`Missing param ticketBodyCreate`);\n\n            throw new Error(`Missing param ticketBodyCreate`);\n        }\n\n        return this.adfHttpClient.post(this.basePath + '/tickets', { bodyParam: ticketBodyCreate });\n    }\n\n    async requireAlfTicket(): Promise<void> {\n        const ticket = await this.adfHttpClient.get(this.basePath + '/tickets/-me-');\n        this.setTicket(ticket.entry.id);\n    }\n\n    deleteTicket(): Promise<any> {\n        return this.adfHttpClient.delete(this.basePath + '/tickets/-me-');\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable, inject } from '@angular/core';\nimport { AdfHttpClient } from '@alfresco/adf-core/api';\nimport { Authentication } from '../interfaces/authentication.interface';\nimport { AppConfigService, AppConfigValues } from '../../app-config/app-config.service';\nimport { StorageService } from '../../common/services/storage.service';\nimport { ReplaySubject, Subject } from 'rxjs';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class ProcessAuth {\n    private readonly appConfigService = inject(AppConfigService);\n    private readonly adfHttpClient = inject(AdfHttpClient);\n    private readonly storageService = inject(StorageService);\n\n    onLogin = new ReplaySubject<any>(1);\n    onLogout = new ReplaySubject<any>(1);\n    onError = new Subject<any>();\n\n    ticket: string;\n    config = {\n        ticketBpm: null\n    };\n\n    authentications: Authentication = {\n        basicAuth: { ticket: '' },\n        type: 'activiti'\n    };\n\n    get basePath(): string {\n        const contextRootBpm = this.appConfigService.get<string>(AppConfigValues.CONTEXTROOTBPM) || 'activiti-app';\n        return this.appConfigService.get<string>(AppConfigValues.BPMHOST) + '/' + contextRootBpm;\n    }\n\n    constructor() {\n        this.appConfigService.onLoad.subscribe(() => {\n            this.setConfig();\n        });\n    }\n\n    private setConfig() {\n        this.ticket = undefined;\n\n        this.setTicket(this.storageService.getItem(AppConfigValues.PROCESS_TICKET_STORAGE_LABEL));\n    }\n\n    saveUsername(username: string) {\n        this.storageService.setItem('APS_USERNAME', username);\n    }\n\n    getUsername() {\n        return this.storageService.getItem('APS_USERNAME');\n    }\n\n    /**\n     * login Activiti API\n     *\n     * @param username Username to login\n     * @param password Password to login\n     * @returns A promise that returns {new authentication ticket} if resolved and {error} if rejected.\n     */\n    login(username: string, password: string): Promise<any> {\n        this.authentications.basicAuth.username = username;\n        this.authentications.basicAuth.password = password;\n\n        const options = {\n            headerParams: {\n                'Content-Type': 'application/x-www-form-urlencoded',\n                'Cache-Control': 'no-cache'\n            },\n            formParams: {\n                j_username: this.authentications.basicAuth.username,\n                j_password: this.authentications.basicAuth.password,\n                _spring_security_remember_me: true,\n                submit: 'Login'\n            },\n            contentType: 'application/x-www-form-urlencoded',\n            accept: 'application/json'\n        };\n\n        const promise: any = new Promise((resolve, reject) => {\n            this.adfHttpClient.post(this.basePath + '/app/authentication', options).then(\n                () => {\n                    this.saveUsername(username);\n                    const ticket = this.basicAuth(this.authentications.basicAuth.username, this.authentications.basicAuth.password);\n                    this.setTicket(ticket);\n                    this.onLogin.next('success');\n                    this.adfHttpClient.emit('success');\n                    this.adfHttpClient.emit('logged-in');\n                    resolve(ticket);\n                },\n                (error) => {\n                    this.saveUsername('');\n                    if (error.status === 401) {\n                        this.adfHttpClient.emit('unauthorized', error);\n                        this.onError.next('unauthorized');\n                    } else if (error.status === 403) {\n                        this.adfHttpClient.emit('forbidden', error);\n                        this.onError.next('forbidden');\n                    } else {\n                        this.adfHttpClient.emit('error', error);\n                        this.onError.next('error');\n                    }\n                    reject(error);\n                }\n            );\n        });\n\n        return promise;\n    }\n\n    /**\n     * logout Alfresco API\n     *\n     * @returns A promise that returns {new authentication ticket} if resolved and {error} if rejected.\n     */\n    async logout(): Promise<any> {\n        this.saveUsername('');\n        return new Promise((resolve, reject) => {\n            this.adfHttpClient.get(this.basePath + `/app/logout`, {}).then(\n                () => {\n                    this.invalidateSession();\n                    this.onLogout.next('logout');\n                    this.adfHttpClient.emit('logout');\n                    resolve('logout');\n                },\n                (error) => {\n                    if (error.status === 401) {\n                        this.adfHttpClient.emit('unauthorized');\n                        this.onError.next('unauthorized');\n                    }\n                    this.adfHttpClient.emit('error');\n                    this.onError.next('error');\n                    reject(error);\n                }\n            );\n        });\n    }\n\n    basicAuth(username: string, password: string): string {\n        const str: any = username + ':' + password;\n\n        let base64;\n\n        if (typeof Buffer === 'function') {\n            base64 = Buffer.from(str.toString(), 'binary').toString('base64');\n        } else {\n            base64 = btoa(str);\n        }\n\n        return `Basic ${base64}`;\n    }\n\n    /**\n     * Set the current Ticket\n     *\n     * @param ticket a string representing the ticket\n     */\n    setTicket(ticket: string) {\n        if (ticket && ticket !== 'null') {\n            this.authentications.basicAuth.ticket = ticket;\n            this.authentications.basicAuth.password = null;\n            this.config.ticketBpm = ticket;\n            this.storageService.setItem(AppConfigValues.PROCESS_TICKET_STORAGE_LABEL, ticket);\n            this.ticket = ticket;\n        }\n    }\n\n    invalidateSession() {\n        this.storageService.removeItem(AppConfigValues.PROCESS_TICKET_STORAGE_LABEL);\n        this.authentications.basicAuth.ticket = null;\n        this.authentications.basicAuth.password = null;\n        this.authentications.basicAuth.username = null;\n        this.config.ticketBpm = null;\n        this.ticket = null;\n    }\n\n    /**\n     * @returns the current Ticket\n     */\n    getToken(): string {\n        if (!this.ticket) {\n            this.onError.next('error');\n            return null;\n        }\n\n        return this.ticket;\n    }\n\n    /**\n     * @returns If the client is logged in return true\n     */\n    isLoggedIn(): boolean {\n        return !!this.ticket;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable, inject } from '@angular/core';\nimport { AppConfigService, AppConfigValues } from '../../app-config/app-config.service';\nimport { Authentication } from '../interfaces/authentication.interface';\nimport { CookieService } from '../../common/services/cookie.service';\nimport { ContentAuth } from './content-auth';\nimport { ProcessAuth } from './process-auth';\nimport { catchError, map } from 'rxjs/operators';\nimport { from, Observable } from 'rxjs';\nimport { RedirectionModel } from '../models/redirection.model';\nimport { BaseAuthenticationService } from '../services/base-authentication.service';\nimport { HttpHeaders } from '@angular/common/http';\n\nconst REMEMBER_ME_COOKIE_KEY = 'ALFRESCO_REMEMBER_ME';\nconst REMEMBER_ME_UNTIL = 1000 * 60 * 60 * 24 * 30;\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class BasicAlfrescoAuthService extends BaseAuthenticationService {\n    private readonly contentAuth = inject(ContentAuth);\n    private readonly processAuth = inject(ProcessAuth);\n\n    protected redirectUrl: RedirectionModel = null;\n\n    authentications: Authentication = {\n        basicAuth: {\n            ticket: ''\n        },\n        type: 'basic'\n    };\n\n    constructor() {\n        const appConfig = inject(AppConfigService);\n        const cookie = inject(CookieService);\n\n        super(appConfig, cookie);\n\n        this.appConfig.onLoad.subscribe(() => {\n            if (!this.isOauth() && this.isLoggedIn()) {\n                this.requireAlfTicket()\n                    .then(() => {\n                        this.onLogin.next('logged-in');\n                    })\n                    .catch(() => {\n                        this.contentAuth.invalidateSession();\n                        this.onLogout.next('logout');\n                    });\n            }\n        });\n\n        this.contentAuth.onLogout.pipe(\n            map((event) => {\n                this.onLogout.next(event);\n            })\n        );\n        this.contentAuth.onLogin.pipe(\n            map((event) => {\n                this.onLogin.next(event);\n            })\n        );\n        this.contentAuth.onError.pipe(\n            map((event) => {\n                this.onError.next(event);\n            })\n        );\n        this.processAuth.onLogout.pipe(\n            map((event) => {\n                this.onLogout.next(event);\n            })\n        );\n        this.processAuth.onLogin.pipe(\n            map((event) => {\n                this.onLogin.next(event);\n            })\n        );\n        this.processAuth.onError.pipe(\n            map((event) => {\n                this.onError.next(event);\n            })\n        );\n    }\n\n    /**\n     * Logs the user in.\n     *\n     * @param username Username for the login\n     * @param password Password for the login\n     * @param rememberMe Stores the user's login details if true\n     * @returns Object with auth type (\"ECM\", \"BPM\" or \"ALL\") and auth ticket\n     */\n    login(username: string, password: string, rememberMe: boolean = false): Observable<{ type: string; ticket: any }> {\n        return from(this.executeLogin(username, password)).pipe(\n            map((response: any) => {\n                this.saveRememberMeCookie(rememberMe);\n                this.onLogin.next(response);\n                return {\n                    type: this.appConfig.get(AppConfigValues.PROVIDERS),\n                    ticket: response\n                };\n            }),\n            catchError((err) => this.handleError(err))\n        );\n    }\n\n    /**\n     * login Alfresco API\n     *\n     * @param username username to login\n     * @param password password to login\n     * @returns A promise that returns {new authentication ticket} if resolved and {error} if rejected.\n     */\n    async executeLogin(username: string, password: string): Promise<any> {\n        if (!this.isCredentialValid(username) || !this.isCredentialValid(password)) {\n            return Promise.reject(new Error('missing username or password'));\n        }\n\n        if (username) {\n            username = username.trim();\n        }\n\n        if (this.isBPMProvider()) {\n            try {\n                return await this.processAuth.login(username, password);\n            } catch (e) {\n                return Promise.reject(e);\n            }\n        } else if (this.isECMProvider()) {\n            try {\n                return await this.contentAuth.login(username, password);\n            } catch (e) {\n                return Promise.reject(e);\n            }\n        } else if (this.isALLProvider()) {\n            return this.loginBPMECM(username, password);\n        } else {\n            return Promise.reject(new Error('Unknown configuration'));\n        }\n    }\n\n    private loginBPMECM(username: string, password: string): Promise<any> {\n        const contentPromise = this.contentAuth.login(username, password);\n        const processPromise = this.processAuth.login(username, password);\n\n        return new Promise((resolve, reject) => {\n            Promise.all([contentPromise, processPromise]).then(\n                (data) => {\n                    this.onLogin.next('success');\n                    resolve(data);\n                },\n                (error) => {\n                    this.contentAuth.invalidateSession();\n                    this.processAuth.invalidateSession();\n\n                    if (error.status === 401) {\n                        this.onError.next('unauthorized');\n                    }\n                    this.onError.next('error');\n                    reject(error);\n                }\n            );\n        });\n    }\n\n    /**\n     * Checks whether the \"remember me\" cookie was set or not.\n     *\n     * @returns True if set, false otherwise\n     */\n    isRememberMeSet(): boolean {\n        return this.cookie.getItem(REMEMBER_ME_COOKIE_KEY) !== null;\n    }\n\n    /**\n     * Saves the \"remember me\" cookie as either a long-life cookie or a session cookie.\n     *\n     * @param rememberMe Enables a long-life cookie\n     */\n    saveRememberMeCookie(rememberMe: boolean): void {\n        let expiration = null;\n\n        if (rememberMe) {\n            expiration = new Date();\n            const time = expiration.getTime();\n            const expireTime = time + REMEMBER_ME_UNTIL;\n            expiration.setTime(expireTime);\n        }\n        this.cookie.setItem(REMEMBER_ME_COOKIE_KEY, '1', expiration, null);\n    }\n\n    isCredentialValid(credential: string): boolean {\n        return credential !== undefined && credential !== null && credential !== '';\n    }\n\n    getToken(): string {\n        if (this.isBPMProvider()) {\n            return this.processAuth.getToken();\n        } else if (this.isECMProvider()) {\n            return this.contentAuth.getToken();\n        } else if (this.isALLProvider()) {\n            return this.contentAuth.getToken();\n        } else {\n            return '';\n        }\n    }\n\n    isLoggedIn(): boolean {\n        const authWithCredentials = this.isKerberosEnabled();\n\n        if (this.isBPMProvider()) {\n            return this.processAuth.isLoggedIn();\n        } else if (this.isECMProvider()) {\n            return authWithCredentials ? true : this.contentAuth.isLoggedIn();\n        } else if (this.isALLProvider()) {\n            return authWithCredentials ? true : this.contentAuth.isLoggedIn() && this.processAuth.isLoggedIn();\n        } else {\n            return false;\n        }\n    }\n\n    /**\n     * logout Alfresco API\n     *\n     * @returns A promise that returns {logout} if resolved and {error} if rejected.\n     */\n    async logout(): Promise<any> {\n        if (this.isBPMProvider()) {\n            return this.processAuth.logout();\n        } else if (this.isECMProvider()) {\n            return this.contentAuth.logout();\n        } else if (this.isALLProvider()) {\n            return this.logoutBPMECM();\n        }\n        return Promise.resolve();\n    }\n\n    private logoutBPMECM(): Promise<any> {\n        const contentPromise = this.contentAuth.logout();\n        const processPromise = this.processAuth.logout();\n\n        return new Promise((resolve, reject) => {\n            Promise.all([contentPromise, processPromise]).then(\n                () => {\n                    this.contentAuth.ticket = undefined;\n                    this.processAuth.ticket = undefined;\n                    this.onLogout.next('logout');\n                    resolve('logout');\n                },\n                (error) => {\n                    if (error.status === 401) {\n                        this.onError.next('unauthorized');\n                    }\n                    this.onError.next('error');\n                    reject(error);\n                }\n            );\n        });\n    }\n\n    reset(): void {\n        // do nothing\n    }\n\n    /**\n     * Gets the URL to redirect to after login.\n     *\n     * @returns The redirect URL\n     */\n    getRedirect(): string {\n        const provider = this.appConfig.get<string>(AppConfigValues.PROVIDERS);\n        return this.hasValidRedirection(provider) ? this.redirectUrl.url : null;\n    }\n\n    setRedirect(url?: RedirectionModel) {\n        this.redirectUrl = url;\n    }\n\n    private hasValidRedirection(provider: string): boolean {\n        return this.redirectUrl && (this.redirectUrl.provider === provider || this.hasSelectedProviderAll(provider));\n    }\n\n    private hasSelectedProviderAll(provider: string): boolean {\n        return this.redirectUrl && (this.redirectUrl.provider === 'ALL' || provider === 'ALL');\n    }\n\n    /**\n     * Gets the username of the authenticated user.\n     *\n     * @returns the username of the authenticated user\n     */\n    getUsername(): string {\n        if (this.isBPMProvider()) {\n            return this.processAuth.getUsername();\n        } else if (this.isECMProvider()) {\n            return this.contentAuth.getUsername();\n        } else {\n            return this.contentAuth.getUsername();\n        }\n    }\n\n    /**\n     * Does kerberos enabled?\n     *\n     * @returns True if enabled, false otherwise\n     */\n    isKerberosEnabled(): boolean {\n        return this.appConfig.get<boolean>(AppConfigValues.AUTH_WITH_CREDENTIALS, false);\n    }\n\n    getAuthHeaders(requestUrl: string, header: HttpHeaders): HttpHeaders {\n        return this.addBasicAuth(requestUrl, header);\n    }\n\n    private addBasicAuth(requestUrl: string, header: HttpHeaders): HttpHeaders {\n        if (this.isKerberosEnabled()) {\n            return header;\n        }\n\n        const ticket = this.getTicketEcmBase64(requestUrl);\n\n        if (!ticket) {\n            return header;\n        }\n\n        return header.set('Authorization', ticket);\n    }\n\n    async requireAlfTicket(): Promise<void> {\n        return this.contentAuth.requireAlfTicket();\n    }\n\n    /**\n     * Gets the BPM ticket from the Storage in Base 64 format.\n     *\n     * @param requestUrl the request url\n     * @returns The ticket or `null` if none was found\n     */\n    getTicketEcmBase64(requestUrl: string): string {\n        let ticket = null;\n        const bpmRoot = `/${this.appConfig.get<string>(AppConfigValues.CONTEXTROOTBPM) || 'activiti-app'}/`;\n        const ecmRoot = `/${this.appConfig.get<string>(AppConfigValues.CONTEXTROOTECM) || 'alfresco'}/`;\n        const ooiServiceRootUrl = `/${this.appConfig.get<string>(AppConfigValues.OOI_CONNECTOR_URL) || 'ooi-service'}/`;\n\n        if (requestUrl?.includes(ecmRoot) && !requestUrl.includes(bpmRoot)) {\n            ticket = this.getContentServicesTicket();\n        } else if (requestUrl?.includes(bpmRoot) && !requestUrl.includes(ecmRoot)) {\n            ticket = this.getProcessServicesTicket();\n        } else if (requestUrl?.includes(ecmRoot) && requestUrl.includes(bpmRoot)) {\n            ticket = requestUrl.indexOf(ecmRoot) < requestUrl.indexOf(bpmRoot) ? this.getContentServicesTicket() : this.getProcessServicesTicket();\n        } else if (requestUrl.includes(ooiServiceRootUrl)) {\n            ticket = this.getContentServicesTicket();\n        }\n\n        return ticket;\n    }\n\n    private getProcessServicesTicket(): string {\n        return this.processAuth.getToken()?.startsWith('Basic ') ? this.processAuth.getToken() : 'Basic ' + this.processAuth.getToken();\n    }\n\n    private getContentServicesTicket(): string {\n        return 'Basic ' + btoa(this.contentAuth.getToken());\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { inject, Injectable } from '@angular/core';\nimport { LoginOptions, OAuthErrorEvent, OAuthService } from 'angular-oauth2-oidc';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class RetryLoginService {\n    private readonly oauthService = inject(OAuthService);\n\n    /**\n     * Attempts to log in a specified number of times if the initial login attempt fails.\n     *\n     * @param loginOptions - The options to be used for the login attempt.\n     * @param maxLoginAttempts - The maximum number of login attempts. Defaults to 3.\n     * @returns A promise that resolves to `true` if the login is successful, or rejects with an error if all attempts fail.\n     */\n    tryToLoginTimes(loginOptions: LoginOptions, maxLoginAttempts = 3): Promise<boolean> {\n        let retryCount = 0;\n        const maxRetries = maxLoginAttempts - 1;\n\n        const attemptLogin = (): Promise<boolean> =>\n            this.oauthService.tryLogin({ ...loginOptions }).catch((error) => {\n                if (retryCount < maxRetries) {\n                    console.error(\n                        `Login attempt ${retryCount + 1} of ${maxLoginAttempts} failed. ${retryCount < maxLoginAttempts - 1 ? 'Retrying...' : ''}`\n                    );\n                    retryCount++;\n                    return attemptLogin();\n                } else {\n                    const errorMessage = this.getErrorMessage(error, maxLoginAttempts);\n                    throw new Error(errorMessage);\n                }\n            });\n\n        return attemptLogin();\n    }\n\n    private getErrorMessage(error: any, maxLoginAttempts: number) {\n        const isOAuthErrorEvent = error instanceof OAuthErrorEvent;\n        let oAuthErrorMessage: string;\n        if (isOAuthErrorEvent) {\n            oAuthErrorMessage = (error.reason as any)?.reason || error.type.toString();\n        }\n        const errorDescription = oAuthErrorMessage || error;\n        const errorMessage = `Login failed after ${maxLoginAttempts} attempts. caused by: ${errorDescription}`;\n        return errorMessage;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, Injector, inject } from '@angular/core';\nimport { AppConfigService } from '../../app-config/app-config.service';\nimport { from, Observable, throwError } from 'rxjs';\nimport { catchError, map, timeout } from 'rxjs/operators';\n\nexport interface TimeSync {\n    outOfSync: boolean;\n    timeOutOfSyncInSec?: number;\n    localDateTimeISO: string;\n    serverDateTimeISO: string;\n}\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class TimeSyncService {\n    private readonly _injector = inject(Injector);\n    private readonly _appConfigService = inject(AppConfigService);\n\n    private readonly _http: HttpClient;\n\n    constructor() {\n        this._http = this._injector.get(HttpClient);\n    }\n\n    checkTimeSync(maxAllowedClockSkewInSec: number): Observable<TimeSync> {\n        const startTime = Date.now();\n\n        return this.getServerTime().pipe(\n            map((serverTimeResponse: number) => {\n                let serverTimeInMs: number;\n\n                const endTime = Date.now();\n                const roundTripTimeInMs = endTime - startTime;\n\n                const isServerTimeResponseInMs = serverTimeResponse.toString().length === 13;\n                if (!isServerTimeResponseInMs) {\n                    serverTimeInMs = serverTimeResponse * 1000;\n                } else {\n                    serverTimeInMs = serverTimeResponse;\n                }\n\n                const adjustedServerTimeInMs = serverTimeInMs + roundTripTimeInMs / 2;\n                const localCurrentTimeInMs = Date.now();\n                const timeOffsetInMs = Math.abs(localCurrentTimeInMs - adjustedServerTimeInMs);\n                const maxAllowedClockSkewInMs = maxAllowedClockSkewInSec * 1000;\n\n                return {\n                    outOfSync: timeOffsetInMs > maxAllowedClockSkewInMs,\n                    timeOffsetInSec: timeOffsetInMs / 1000,\n                    localDateTimeISO: new Date(localCurrentTimeInMs).toISOString(),\n                    serverDateTimeISO: new Date(adjustedServerTimeInMs).toISOString()\n                };\n            }),\n            catchError((error) => throwError(() => new Error(error)))\n        );\n    }\n\n    /**\n     * Checks if the local time is out of sync with the server time.\n     *\n     * @param maxAllowedClockSkewInSec - The maximum allowed clock skew in seconds.\n     * @returns An Observable that emits a boolean indicating whether the local time is out of sync.\n     */\n    isLocalTimeOutOfSync(maxAllowedClockSkewInSec: number): Observable<boolean> {\n        return this.checkTimeSync(maxAllowedClockSkewInSec).pipe(map((sync) => sync.outOfSync));\n    }\n\n    private getServerTime(): Observable<number> {\n        return from(this._http.get<number>(this.getServerTimeUrl())).pipe(\n            timeout(5000),\n            catchError(() => throwError(() => new Error('Failed to get server time')))\n        );\n    }\n\n    private getServerTimeUrl(): string {\n        const serverTimeUrl = this._appConfigService.get('serverTimeUrl', '');\n        if (!serverTimeUrl) {\n            throw new Error('serverTimeUrl is not configured.');\n        }\n        return serverTimeUrl;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable, inject } from '@angular/core';\nimport {\n    AuthConfig,\n    AUTH_CONFIG,\n    OAuthErrorEvent,\n    OAuthEvent,\n    OAuthService,\n    OAuthStorage,\n    TokenResponse,\n    LoginOptions,\n    OAuthSuccessEvent,\n    OAuthLogger\n} from 'angular-oauth2-oidc';\nimport { JwksValidationHandler } from 'angular-oauth2-oidc-jwks';\nimport { from, Observable, race, ReplaySubject } from 'rxjs';\nimport { distinctUntilChanged, filter, map, shareReplay, switchMap, take } from 'rxjs/operators';\nimport { AuthService } from './auth.service';\nimport { AUTH_MODULE_CONFIG, AuthModuleConfig } from './auth-config';\nimport { RetryLoginService } from './retry-login.service';\nimport { TimeSyncService } from '../services/time-sync.service';\n\nconst isPromise = <T>(value: T | Promise<T>): value is Promise<T> => value && typeof (value as Promise<T>).then === 'function';\n\n@Injectable()\nexport class RedirectAuthService extends AuthService {\n    private readonly oauthService = inject(OAuthService);\n    private readonly _oauthStorage = inject(OAuthStorage);\n\n    readonly authModuleConfig: AuthModuleConfig = inject(AUTH_MODULE_CONFIG);\n    private readonly _retryLoginService: RetryLoginService = inject(RetryLoginService);\n    private readonly _oauthLogger: OAuthLogger = inject(OAuthLogger);\n    private readonly _timeSyncService: TimeSyncService = inject(TimeSyncService);\n\n    private readonly _isDiscoveryDocumentLoadedSubject$ = new ReplaySubject<boolean>();\n    public isDiscoveryDocumentLoaded$ = this._isDiscoveryDocumentLoadedSubject$.asObservable();\n\n    onLogin: Observable<any>;\n\n    onTokenReceived: Observable<any>;\n\n    private _loadDiscoveryDocumentPromise = Promise.resolve(false);\n\n    /**\n     * Observable stream that emits when the user logs out.\n     *\n     * This observable listens to the events emitted by the OAuth service and filters\n     * them to only include instances of OAuthSuccessEvent with the type `logout`.\n     */\n    onLogout$: Observable<void>;\n\n    /**\n     * Observable stream that emits OAuthErrorEvent instances.\n     *\n     * This observable listens to the events emitted by the OAuth service and filters\n     * them to only include instances of OAuthErrorEvent. It then maps these events\n     * to the correct type.\n     */\n    oauthErrorEvent$: Observable<OAuthErrorEvent>;\n\n    /**\n     * Observable stream that emits the first OAuth error event that occurs.\n     */\n    firstOauthErrorEventOccur$: Observable<OAuthErrorEvent>;\n\n    /**\n     * Observable stream that emits the first OAuth error event that occurs, excluding token refresh errors.\n     */\n    firstOauthErrorEventExcludingTokenRefreshError$: Observable<OAuthErrorEvent>;\n\n    /**\n     * Observable stream that emits the second OAuth token refresh error event that occurs.\n     */\n    secondTokenRefreshErrorEventOccur$: Observable<OAuthErrorEvent>;\n\n    /**\n     * Observable that emits an error when the token has expired due to\n     * the local machine clock being out of sync with the server time.\n     */\n    tokenHasExpiredDueToClockOutOfSync$: Observable<Error>;\n\n    /**\n     * Observable that emits an error when the OAuth error event occurs due to\n     * the local machine clock being out of sync with the server time.\n     */\n    oauthErrorEventOccurDueToClockOutOfSync$: Observable<Error>;\n\n    /**\n     * Observable stream that emits either OAuthErrorEvent or Error.\n     * This stream combines multiple OAuth error sources into a single observable.\n     */\n    combinedOAuthErrorsStream$: Observable<OAuthErrorEvent | Error>;\n\n    /** Subscribe to whether the user has valid Id/Access tokens.  */\n    authenticated$!: Observable<boolean>;\n\n    /** Subscribe to errors reaching the IdP. */\n    idpUnreachable$!: Observable<Error>;\n\n    /**\n     * Get whether the user has valid Id/Access tokens.\n     *\n     * @returns `true` if the user is authenticated, otherwise `false`\n     */\n    get authenticated(): boolean {\n        return this.oauthService.hasValidIdToken() && this.oauthService.hasValidAccessToken();\n    }\n\n    private readonly authConfig!: AuthConfig | Promise<AuthConfig>;\n\n    private readonly AUTH_STORAGE_ITEMS: string[] = [\n        'access_token',\n        'access_token_stored_at',\n        'expires_at',\n        'granted_scopes',\n        'id_token',\n        'id_token_claims_obj',\n        'id_token_expires_at',\n        'id_token_stored_at',\n        'nonce',\n        'PKCE_verifier',\n        'refresh_token',\n        'session_state'\n    ];\n\n    constructor() {\n        const authConfig = inject<AuthConfig>(AUTH_CONFIG);\n\n        super();\n        const oauthService = this.oauthService;\n\n        this.authConfig = authConfig;\n\n        this.oauthService.clearHashAfterLogin = true;\n\n        this.oauthService.events.pipe(filter(() => oauthService.showDebugInformation)).subscribe((event) => {\n            if (event instanceof OAuthErrorEvent) {\n                this._oauthLogger.error('OAuthErrorEvent Object:', event);\n            } else {\n                this._oauthLogger.info('OAuthEvent Object:', event);\n            }\n        });\n\n        this.oauthErrorEvent$ = this.oauthService.events.pipe(\n            filter((event) => event instanceof OAuthErrorEvent),\n            map((event) => event as OAuthErrorEvent)\n        );\n\n        this.firstOauthErrorEventOccur$ = this.oauthErrorEvent$.pipe(take(1));\n\n        this.firstOauthErrorEventExcludingTokenRefreshError$ = this.oauthErrorEvent$.pipe(\n            filter((event) => event instanceof OAuthErrorEvent && event.type !== 'token_refresh_error'),\n            take(1)\n        );\n\n        this.secondTokenRefreshErrorEventOccur$ = this.oauthErrorEvent$.pipe(\n            filter((event) => event.type === 'token_refresh_error'),\n            take(2),\n            filter((_, index) => index === 1)\n        );\n\n        this.oauthErrorEventOccurDueToClockOutOfSync$ = this.oauthErrorEvent$.pipe(\n            switchMap(() => this._timeSyncService.checkTimeSync(this.oauthService.clockSkewInSec)),\n            filter((timeSync) => timeSync?.outOfSync),\n            map(\n                (timeSync) =>\n                    new Error(\n                        `OAuth error occurred due to local machine clock ${timeSync.localDateTimeISO} being out of sync with server time ${timeSync.serverDateTimeISO}`\n                    )\n            ),\n            take(1)\n        );\n\n        this.authenticated$ = this.oauthService.events.pipe(\n            map(() => this.authenticated),\n            distinctUntilChanged(),\n            shareReplay(1)\n        );\n\n        this.tokenHasExpiredDueToClockOutOfSync$ = this.oauthService.events.pipe(\n            map(() => !!this.oauthService.getIdentityClaims() && this.tokenHasExpired()),\n            filter((hasExpired) => hasExpired),\n            switchMap(() => this._timeSyncService.checkTimeSync(this.oauthService.clockSkewInSec)),\n            filter((timeSync) => timeSync?.outOfSync),\n            map(\n                (timeSync) =>\n                    new Error(\n                        `Token has expired due to local machine clock ${timeSync.localDateTimeISO} being out of sync with server time ${timeSync.serverDateTimeISO}`\n                    )\n            ),\n            take(1)\n        );\n\n        this.onLogout$ = this.oauthService.events.pipe(\n            filter((event) => event.type === 'logout'),\n            map(() => undefined)\n        );\n\n        this.combinedOAuthErrorsStream$ = race([\n            this.oauthErrorEventOccurDueToClockOutOfSync$,\n            this.firstOauthErrorEventExcludingTokenRefreshError$,\n            this.tokenHasExpiredDueToClockOutOfSync$,\n            this.secondTokenRefreshErrorEventOccur$\n        ]);\n\n        this.combinedOAuthErrorsStream$.subscribe({\n            next: (res) => {\n                this._oauthLogger.error(res);\n                this.logout();\n            },\n            error: () => {}\n        });\n\n        this.oauthService.events.pipe(take(1)).subscribe(() => {\n            if (this.oauthService.getAccessToken() && !this.oauthService.hasValidAccessToken()) {\n                if (this.oauthService.showDebugInformation) {\n                    this._oauthLogger.warn('Access token not valid. Removing all auth items from storage');\n                }\n                this.AUTH_STORAGE_ITEMS.map((item: string) => this._oauthStorage.removeItem(item));\n            }\n        });\n\n        this.onLogin = this.authenticated$.pipe(\n            filter((authenticated) => authenticated),\n            map(() => undefined)\n        );\n\n        this.onTokenReceived = this.oauthService.events.pipe(\n            filter((event: OAuthEvent) => event.type === 'token_received'),\n            map(() => undefined)\n        );\n\n        this.idpUnreachable$ = this.oauthService.events.pipe(\n            filter((event): event is OAuthErrorEvent => event.type === 'discovery_document_load_error'),\n            map((event) => event.reason as Error)\n        );\n    }\n\n    init(): Promise<boolean> {\n        if (isPromise(this.authConfig)) {\n            return this.authConfig.then((config) => this.configureAuth(config));\n        }\n\n        return this.configureAuth(this.authConfig);\n    }\n\n    logout() {\n        this.oauthService.logOut();\n    }\n\n    ensureDiscoveryDocument(): Promise<boolean> {\n        this._loadDiscoveryDocumentPromise = this._loadDiscoveryDocumentPromise\n            .catch(() => false)\n            .then((loaded) => {\n                if (!loaded) {\n                    return this.oauthService.loadDiscoveryDocument().then(() => true);\n                }\n                return true;\n            });\n        return this._loadDiscoveryDocumentPromise;\n    }\n\n    login(currentUrl?: string): void {\n        let stateKey: string | undefined;\n\n        if (currentUrl) {\n            const randomValue = window.crypto.getRandomValues(new Uint32Array(1))[0];\n            stateKey = `auth_state_${randomValue}${Date.now()}`;\n            this._oauthStorage.setItem(stateKey, JSON.stringify(currentUrl || {}));\n        }\n\n        // initLoginFlow will initialize the login flow in either code or implicit depending on the configuration\n        this.ensureDiscoveryDocument().then(() => void this.oauthService.initLoginFlow(stateKey));\n    }\n\n    baseAuthLogin(username: string, password: string): Observable<TokenResponse> {\n        this.oauthService.useHttpBasicAuth = true;\n\n        return from(this.oauthService.fetchTokenUsingPasswordFlow(username, password)).pipe(\n            map((response) => {\n                const props = new Map<string, string>();\n                props.set('id_token', response.id_token);\n                // for backward compatibility we need to set the response in our storage\n                this.oauthService['storeAccessTokenResponse'](\n                    response.access_token,\n                    response.refresh_token,\n                    response.expires_in,\n                    response.scope,\n                    props\n                );\n                return response;\n            })\n        );\n    }\n\n    async loginCallback(loginOptions?: LoginOptions): Promise<string | undefined> {\n        return this.ensureDiscoveryDocument()\n            .then(() =>\n                this._retryLoginService.tryToLoginTimes({\n                    ...loginOptions,\n                    preventClearHashAfterLogin: this.authModuleConfig.preventClearHashAfterLogin\n                })\n            )\n            .then(() => this._getRedirectUrl());\n    }\n\n    private _getRedirectUrl() {\n        const DEFAULT_REDIRECT = '/';\n        const stateKey = this.oauthService.state;\n\n        if (stateKey) {\n            const stateStringified = this._oauthStorage.getItem(stateKey);\n            if (stateStringified) {\n                // cleanup state from storage\n                this._oauthStorage.removeItem(stateKey);\n                return JSON.parse(stateStringified);\n            }\n        }\n\n        return DEFAULT_REDIRECT;\n    }\n\n    private configureAuth(config: AuthConfig): Promise<boolean> {\n        this.oauthService.configure(config);\n        this.oauthService.tokenValidationHandler = new JwksValidationHandler();\n\n        if (config.sessionChecksEnabled) {\n            this.oauthService.events.pipe(filter((event) => event.type === 'session_terminated')).subscribe(() => {\n                this.oauthService.logOut();\n            });\n        }\n\n        return this.ensureDiscoveryDocument()\n            .then(() => {\n                this._isDiscoveryDocumentLoadedSubject$.next(true);\n                this.oauthService.setupAutomaticSilentRefresh();\n                return void this.allowRefreshTokenAndSilentRefreshOnMultipleTabs();\n            })\n            .catch(() => {\n                // catch error to prevent the app from crashing when trying to access unprotected routes\n            });\n    }\n\n    /**\n     * Fix a known issue (https://github.com/manfredsteyer/angular-oauth2-oidc/issues/850)\n     * where multiple tabs can cause the token refresh and the silent refresh to fail.\n     * This patch is based on the solutions provided in the following comments:\n     * https://github.com/manfredsteyer/angular-oauth2-oidc/issues/850#issuecomment-889921776 fix silent refresh for the implicit flow\n     * https://github.com/manfredsteyer/angular-oauth2-oidc/issues/850#issuecomment-1557286966 fix refresh token for the code flow\n     */\n    private allowRefreshTokenAndSilentRefreshOnMultipleTabs() {\n        let lastUpdatedAccessToken: string | undefined;\n\n        if (this.oauthService.hasValidAccessToken()) {\n            lastUpdatedAccessToken = this.oauthService.getAccessToken();\n        }\n\n        const originalRefreshToken = this.oauthService.refreshToken.bind(this.oauthService);\n        this.oauthService.refreshToken = (): Promise<TokenResponse> =>\n            navigator.locks.request(`refresh_tokens_${location.origin}`, () => {\n                if (!!lastUpdatedAccessToken && lastUpdatedAccessToken !== this.oauthService.getAccessToken()) {\n                    (this.oauthService as any).eventsSubject.next(new OAuthSuccessEvent('token_received'));\n                    (this.oauthService as any).eventsSubject.next(new OAuthSuccessEvent('token_refreshed'));\n                    lastUpdatedAccessToken = this.oauthService.getAccessToken();\n                    return;\n                }\n\n                return originalRefreshToken().then((resp) => (lastUpdatedAccessToken = resp.access_token));\n            });\n\n        const originalSilentRefresh = this.oauthService.silentRefresh.bind(this.oauthService);\n        this.oauthService.silentRefresh = async (params: any = {}, noPrompt = true): Promise<OAuthEvent> =>\n            navigator.locks.request(`silent_refresh_${location.origin}`, async (): Promise<OAuthEvent> => {\n                if (lastUpdatedAccessToken !== this.oauthService.getAccessToken()) {\n                    (this.oauthService as any).eventsSubject.next(new OAuthSuccessEvent('token_received'));\n                    (this.oauthService as any).eventsSubject.next(new OAuthSuccessEvent('token_refreshed'));\n                    const event = new OAuthSuccessEvent('silently_refreshed');\n                    (this.oauthService as any).eventsSubject.next(event);\n                    lastUpdatedAccessToken = this.oauthService.getAccessToken();\n                    return event;\n                } else {\n                    return originalSilentRefresh(params, noPrompt);\n                }\n            });\n    }\n\n    updateIDPConfiguration(config: AuthConfig) {\n        this.oauthService.configure(config);\n    }\n\n    /**\n     * Checks if the token has expired.\n     *\n     * This method retrieves the identity claims from the OAuth service and calculates\n     * the token's issued and expiration times. It then compares the current time with\n     * these values, considering a clock skew and a configurable expiration decrease.\n     *\n     * @returns - Returns `true` if the token has expired, otherwise `false`.\n     */\n    tokenHasExpired() {\n        const claims = this.oauthService.getIdentityClaims();\n        if (!claims) {\n            this._oauthLogger.warn('No claims found in the token');\n            return false;\n        }\n        const now = Date.now();\n        const issuedAtMSec = claims.iat * 1000;\n        const expiresAtMSec = claims.exp * 1000;\n        const clockSkewInMSec = this.oauthService.clockSkewInSec * 1000;\n\n        this.showTokenExpiredDebugInformations(now, issuedAtMSec, expiresAtMSec, clockSkewInMSec);\n        return issuedAtMSec - clockSkewInMSec >= now || expiresAtMSec + clockSkewInMSec - this.oauthService.decreaseExpirationBySec <= now;\n    }\n\n    private showTokenExpiredDebugInformations(now: number, issuedAtMSec: number, expiresAtMSec: number, clockSkewInMSec: number) {\n        if (this.oauthService.showDebugInformation) {\n            this._oauthLogger.warn('now: ', new Date(now));\n            this._oauthLogger.warn('issuedAt: ', new Date(issuedAtMSec));\n            this._oauthLogger.warn('expiresAt: ', new Date(expiresAtMSec));\n            this._oauthLogger.warn('clockSkewInMSec: ', clockSkewInMSec);\n            this._oauthLogger.warn('this.oauthService.decreaseExpirationBySec: ', this.oauthService.decreaseExpirationBySec);\n            this._oauthLogger.warn('issuedAtMSec - clockSkewInMSec >= now: ', issuedAtMSec - clockSkewInMSec >= now);\n            this._oauthLogger.warn(\n                'expiresAtMSec + clockSkewInMSec - this.oauthService.decreaseExpirationBySec <= now: ',\n                expiresAtMSec + clockSkewInMSec - this.oauthService.decreaseExpirationBySec <= now\n            );\n        }\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable, Injector, inject } from '@angular/core';\nimport { OidcAuthenticationService } from '../oidc/oidc-authentication.service';\nimport { BasicAlfrescoAuthService } from '../basic-auth/basic-alfresco-auth.service';\nimport { Observable, Subject, from } from 'rxjs';\nimport { HttpHeaders } from '@angular/common/http';\nimport { AuthenticationServiceInterface } from '../interfaces/authentication-service.interface';\nimport { RedirectAuthService } from '../oidc/redirect-auth.service';\nimport { EventEmitter } from 'eventemitter3';\ntype EventEmitterInstance = InstanceType<typeof EventEmitter>;\n@Injectable({\n    providedIn: 'root'\n})\nexport class AuthenticationService implements AuthenticationServiceInterface {\n    private readonly injector = inject(Injector);\n    private readonly redirectAuthService = inject(RedirectAuthService);\n\n    onLogin: Subject<any> = new Subject<any>();\n    onLogout: Subject<any> = new Subject<any>();\n    onTokenReceived: Subject<any> = new Subject<any>();\n\n    constructor() {\n        this.redirectAuthService.onLogin.subscribe((value) => this.onLogin.next(value));\n\n        this.redirectAuthService.onTokenReceived.subscribe((value) => this.onTokenReceived.next(value));\n\n        this.basicAlfrescoAuthService.onLogin.subscribe((value) => this.onLogin.next(value));\n\n        if (this.isOauth()) {\n            this.oidcAuthenticationService.onLogout.subscribe((value) => this.onLogout.next(value));\n        } else {\n            this.basicAlfrescoAuthService.onLogout.subscribe((value) => this.onLogout.next(value));\n        }\n    }\n\n    get on(): EventEmitterInstance['on'] {\n        return this.isOauth() ? this.oidcAuthenticationService.on : this.basicAlfrescoAuthService.on;\n    }\n\n    get off(): EventEmitterInstance['off'] {\n        return this.isOauth() ? this.oidcAuthenticationService.off : this.basicAlfrescoAuthService.off;\n    }\n\n    get once(): EventEmitterInstance['once'] {\n        return this.isOauth() ? this.oidcAuthenticationService.once : this.basicAlfrescoAuthService.once;\n    }\n\n    get emit(): EventEmitterInstance['emit'] {\n        return this.isOauth() ? this.oidcAuthenticationService.emit : this.basicAlfrescoAuthService.emit;\n    }\n\n    get onError(): Observable<any> {\n        return this.isOauth() ? this.oidcAuthenticationService.onError : this.basicAlfrescoAuthService.onError;\n    }\n\n    addTokenToHeader(requestUrl: string, headersArg?: HttpHeaders): Observable<HttpHeaders> {\n        return this.isOauth()\n            ? this.oidcAuthenticationService.addTokenToHeader(requestUrl, headersArg)\n            : this.basicAlfrescoAuthService.addTokenToHeader(requestUrl, headersArg);\n    }\n\n    isECMProvider(): boolean {\n        return this.isOauth() ? this.oidcAuthenticationService.isECMProvider() : this.basicAlfrescoAuthService.isECMProvider();\n    }\n\n    isBPMProvider(): boolean {\n        return this.isOauth() ? this.oidcAuthenticationService.isBPMProvider() : this.basicAlfrescoAuthService.isBPMProvider();\n    }\n\n    isALLProvider(): boolean {\n        return this.isOauth() ? this.oidcAuthenticationService.isALLProvider() : this.basicAlfrescoAuthService.isALLProvider();\n    }\n\n    private get oidcAuthenticationService(): OidcAuthenticationService {\n        return this.injector.get(OidcAuthenticationService);\n    }\n\n    private get basicAlfrescoAuthService(): BasicAlfrescoAuthService {\n        return this.injector.get(BasicAlfrescoAuthService);\n    }\n\n    getToken(): string {\n        if (this.isOauth()) {\n            return this.oidcAuthenticationService.getToken();\n        } else {\n            return this.basicAlfrescoAuthService.getToken();\n        }\n    }\n\n    isLoggedIn(): boolean {\n        if (this.isOauth()) {\n            return this.oidcAuthenticationService.isLoggedIn();\n        } else {\n            return this.basicAlfrescoAuthService.isLoggedIn();\n        }\n    }\n\n    logout(): Observable<any> {\n        if (this.isOauth()) {\n            return this.oidcAuthenticationService.logout();\n        } else {\n            return from(this.basicAlfrescoAuthService.logout());\n        }\n    }\n\n    reset(): void {\n        if (this.isOauth()) {\n            return this.oidcAuthenticationService.reset();\n        } else {\n            return this.basicAlfrescoAuthService.reset();\n        }\n    }\n\n    login(username: string, password: string, rememberMe?: boolean): Observable<{ type: string; ticket: any }> {\n        if (this.isOauth()) {\n            return this.oidcAuthenticationService.loginWithPassword(username, password);\n        } else {\n            return this.basicAlfrescoAuthService.login(username, password, rememberMe);\n        }\n    }\n\n    /**\n     * Gets the username of the authenticated user.\n     *\n     * @returns the username of the authenticated user\n     */\n    getUsername(): string {\n        if (this.isOauth()) {\n            return this.oidcAuthenticationService.getUsername();\n        } else {\n            return this.basicAlfrescoAuthService.getUsername();\n        }\n    }\n\n    getAuthHeaders(requestUrl: string, headers: HttpHeaders): HttpHeaders {\n        if (this.isOauth()) {\n            return this.oidcAuthenticationService.getAuthHeaders(requestUrl, headers);\n        } else {\n            return this.basicAlfrescoAuthService.getAuthHeaders(requestUrl, headers);\n        }\n    }\n\n    isOauth(): boolean {\n        return this.basicAlfrescoAuthService.isOauth();\n    }\n\n    isKerberosEnabled(): boolean {\n        return !this.isOauth() ? this.basicAlfrescoAuthService.isKerberosEnabled() : false;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { throwError as observableThrowError, Observable } from 'rxjs';\nimport { Injectable, inject } from '@angular/core';\nimport {\n    HttpHandler,\n    HttpInterceptor,\n    HttpRequest,\n    HttpSentEvent,\n    HttpHeaderResponse,\n    HttpProgressEvent,\n    HttpResponse,\n    HttpUserEvent,\n    HttpHeaders\n} from '@angular/common/http';\nimport { catchError, mergeMap } from 'rxjs/operators';\nimport { AuthenticationService } from '../services/authentication.service';\n\n@Injectable()\nexport class AuthBearerInterceptor implements HttpInterceptor {\n    private readonly authenticationService = inject(AuthenticationService);\n\n    private readonly _bearerExcludedUrls: readonly string[] = ['resources/', 'assets/', 'auth/realms', 'idp/'];\n\n    private excludedUrlsRegex: RegExp[];\n\n    private loadExcludedUrlsRegex() {\n        const excludedUrls = this.bearerExcludedUrls;\n        this.excludedUrlsRegex = excludedUrls.map((urlPattern) => new RegExp(`^https?://[^/]+/${urlPattern}`, 'i')) || [];\n    }\n\n    intercept(\n        req: HttpRequest<any>,\n        next: HttpHandler\n    ): Observable<HttpSentEvent | HttpHeaderResponse | HttpProgressEvent | HttpResponse<any> | HttpUserEvent<any>> {\n        if (!this.excludedUrlsRegex) {\n            this.loadExcludedUrlsRegex();\n        }\n\n        const requestUrl = req.url;\n        const shallPass: boolean = this.excludedUrlsRegex.some((regex) => regex.test(requestUrl));\n        if (shallPass) {\n            return next.handle(req).pipe(catchError((error) => observableThrowError(error)));\n        }\n\n        return this.authenticationService.addTokenToHeader(requestUrl, req.headers).pipe(\n            mergeMap((headersWithBearer) => {\n                const headerWithContentType = this.appendJsonContentType(headersWithBearer, req.body);\n                const kcReq = req.clone({ headers: headerWithContentType });\n                return next.handle(kcReq).pipe(catchError((error) => observableThrowError(error)));\n            })\n        );\n    }\n\n    private appendJsonContentType(headers: HttpHeaders, reqBody: any): HttpHeaders {\n        // prevent adding any content type, to properly handle formData with boundary browser generated value,\n        // as adding any Content-Type its going to break the upload functionality\n\n        if (headers.get('Content-Type') === 'multipart/form-data' && !(reqBody instanceof FormData)) {\n            return headers.delete('Content-Type');\n        }\n\n        if (!headers.get('Content-Type') && !(reqBody instanceof FormData)) {\n            return headers.set('Content-Type', 'application/json;charset=UTF-8');\n        }\n\n        return headers;\n    }\n\n    protected get bearerExcludedUrls(): readonly string[] {\n        return this._bearerExcludedUrls;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Router } from '@angular/router';\nimport { AuthenticationService } from '../services/authentication.service';\nimport { AppConfigService, AppConfigValues } from '../../app-config/app-config.service';\nimport { OauthConfigModel } from '../models/oauth-config.model';\nimport { MatDialog } from '@angular/material/dialog';\nimport { StorageService } from '../../common/services/storage.service';\nimport { BasicAlfrescoAuthService } from '../basic-auth/basic-alfresco-auth.service';\nimport { OidcAuthenticationService } from '../oidc/oidc-authentication.service';\nimport { Injectable, inject } from '@angular/core';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class AuthGuardService {\n    private readonly authenticationService = inject(AuthenticationService);\n    private readonly basicAlfrescoAuthService = inject(BasicAlfrescoAuthService);\n    private readonly oidcAuthenticationService = inject(OidcAuthenticationService);\n    private readonly router = inject(Router);\n    private readonly appConfigService = inject(AppConfigService);\n    private readonly dialog = inject(MatDialog);\n    private readonly storageService = inject(StorageService);\n\n    get withCredentials(): boolean {\n        return this.appConfigService.get<boolean>('auth.withCredentials', false);\n    }\n\n    async redirectSSOSuccessURL(): Promise<boolean> {\n        const redirectFragment = this.storageService.getItem('loginFragment');\n\n        if (redirectFragment && this.getLoginRoute() !== redirectFragment) {\n            await this.navigate(redirectFragment);\n            this.storageService.removeItem('loginFragment');\n            return false;\n        }\n\n        return true;\n    }\n\n    isLoginFragmentPresent(): boolean {\n        return !!this.storageService.getItem('loginFragment');\n    }\n\n    async redirectToUrl(url: string): Promise<boolean> {\n        let urlToRedirect = `/${this.getLoginRoute()}`;\n\n        if (!this.authenticationService.isOauth()) {\n            this.basicAlfrescoAuthService.setRedirect({\n                provider: this.getProvider(),\n                url\n            });\n            this.basicAlfrescoAuthService.onLogout.next(true);\n            urlToRedirect = `${urlToRedirect}?redirectUrl=${url}`;\n            return this.navigate(urlToRedirect);\n        } else if (this.getOauthConfig().silentLogin && !this.oidcAuthenticationService.isPublicUrl()) {\n            const shouldPerformSsoLogin = await new Promise((resolve) => {\n                this.oidcAuthenticationService.shouldPerformSsoLogin$.subscribe((value) => resolve(value));\n            });\n            if (shouldPerformSsoLogin) {\n                this.oidcAuthenticationService.ssoLogin(url);\n            }\n        } else {\n            return this.navigate(urlToRedirect);\n        }\n\n        return false;\n    }\n\n    async navigate(url: string): Promise<boolean> {\n        this.dialog.closeAll();\n        await this.router.navigateByUrl(this.router.parseUrl(url));\n        return false;\n    }\n\n    private getOauthConfig(): OauthConfigModel {\n        return this.appConfigService?.get<OauthConfigModel>(AppConfigValues.OAUTHCONFIG, null);\n    }\n\n    private getLoginRoute(): string {\n        return this.appConfigService.get<string>(AppConfigValues.LOGIN_ROUTE, 'login');\n    }\n\n    private getProvider(): string {\n        return this.appConfigService.get<string>(AppConfigValues.PROVIDERS, 'ALL');\n    }\n\n    isOAuthWithoutSilentLogin(): boolean {\n        const oauth = this.appConfigService.get<OauthConfigModel>(AppConfigValues.OAUTHCONFIG, null);\n        return this.authenticationService.isOauth() && !!oauth && !oauth.silentLogin;\n    }\n\n    isSilentLogin(): boolean {\n        const oauth = this.appConfigService.get<OauthConfigModel>(AppConfigValues.OAUTHCONFIG, null);\n\n        return this.authenticationService.isOauth() && oauth && oauth.silentLogin;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { inject } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivateFn, Router, RouterStateSnapshot } from '@angular/router';\nimport { AuthenticationService } from '../services/authentication.service';\nimport { AuthGuardService } from './auth-guard.service';\nimport { JwtHelperService } from '../services/jwt-helper.service';\n\nconst ticketChangeRedirect = (event: StorageEvent, authGuardBaseService: AuthGuardService, url: string): void => {\n    if (event.newValue) {\n        authGuardBaseService.navigate(url);\n    } else {\n        window.location.reload();\n    }\n};\n\nconst ticketChangeHandler = (event: StorageEvent, authGuardBaseService: AuthGuardService, jwtHelperService: JwtHelperService, url: string): void => {\n    if (event.newValue !== event.oldValue) {\n        if (event.key.includes('ticket-ECM') || event.key.includes('ticket-BPM')) {\n            ticketChangeRedirect(event, authGuardBaseService, url);\n        }\n    }\n\n    if (\n        event.key.endsWith(JwtHelperService.USER_ACCESS_TOKEN) &&\n        jwtHelperService.getValueFromToken(event.newValue, JwtHelperService.USER_PREFERRED_USERNAME) !==\n            jwtHelperService.getValueFromToken(event.oldValue, JwtHelperService.USER_PREFERRED_USERNAME)\n    ) {\n        ticketChangeRedirect(event, authGuardBaseService, url);\n    }\n};\n\nexport const AuthGuard: CanActivateFn = async (_: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean> => {\n    const router = inject(Router);\n    const jwtHelperService = inject(JwtHelperService);\n    const authGuardBaseService = inject(AuthGuardService);\n    const authenticationService = inject(AuthenticationService);\n\n    window.addEventListener('storage', (event: StorageEvent) => ticketChangeHandler(event, authGuardBaseService, jwtHelperService, router.url));\n\n    if (authenticationService.isLoggedIn() || authGuardBaseService.withCredentials) {\n        return true;\n    }\n\n    return authGuardBaseService.redirectToUrl(state.url);\n};\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ActivatedRouteSnapshot, CanActivateFn, RouterStateSnapshot } from '@angular/router';\nimport { AuthenticationService } from '../services/authentication.service';\nimport { AuthGuardService } from './auth-guard.service';\nimport { inject } from '@angular/core';\n\nexport const AuthGuardEcm: CanActivateFn = async (_: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean> => {\n    const authGuardBaseService = inject(AuthGuardService);\n    const authenticationService = inject(AuthenticationService);\n\n    if (authenticationService.isLoggedIn() && authenticationService.isOauth() && authGuardBaseService.isLoginFragmentPresent()) {\n        return authGuardBaseService.redirectSSOSuccessURL();\n    }\n\n    if (authenticationService.isLoggedIn() || authGuardBaseService.withCredentials) {\n        return true;\n    }\n\n    return authGuardBaseService.redirectToUrl(state.url);\n};\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { inject } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivateFn, RouterStateSnapshot } from '@angular/router';\nimport { AuthenticationService } from '../services/authentication.service';\nimport { AuthGuardService } from './auth-guard.service';\n\nexport const AuthGuardBpm: CanActivateFn = async (_: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean> => {\n    const authGuardBaseService = inject(AuthGuardService);\n    const authenticationService = inject(AuthenticationService);\n\n    if (authenticationService.isLoggedIn() && authenticationService.isOauth() && authGuardBaseService.isLoginFragmentPresent()) {\n        return authGuardBaseService.redirectSSOSuccessURL();\n    }\n\n    if (authenticationService.isLoggedIn() || authGuardBaseService.withCredentials) {\n        return true;\n    }\n\n    return authGuardBaseService.redirectToUrl(state.url);\n};\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable, inject } from '@angular/core';\nimport { JwtHelperService } from './jwt-helper.service';\nimport { ApplicationAccessModel } from '../models/application-access.model';\nimport { AppConfigService } from '../../app-config/app-config.service';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class UserAccessService {\n    private readonly jwtHelperService = inject(JwtHelperService);\n    private readonly appConfigService = inject(AppConfigService);\n\n    private globalAccess: string[];\n    private applicationAccess: ApplicationAccessModel[];\n\n    fetchUserAccess() {\n        if (this.hasRolesInRealmAccess()) {\n            this.fetchAccessFromRealmAccess();\n        } else if (this.hasRolesInHxpAuthorization()) {\n            this.fetchAccessFromHxpAuthorization();\n        }\n    }\n\n    private fetchAccessFromRealmAccess() {\n        this.globalAccess = this.jwtHelperService.getValueFromLocalToken<any>(JwtHelperService.REALM_ACCESS).roles;\n        this.applicationAccess = this.jwtHelperService.getValueFromLocalToken<any>(JwtHelperService.RESOURCE_ACCESS);\n    }\n\n    private fetchAccessFromHxpAuthorization() {\n        this.globalAccess = [];\n        const hxpAuthorization = this.jwtHelperService.getValueFromLocalToken<any>(JwtHelperService.HXP_AUTHORIZATION);\n        if (hxpAuthorization?.appkey && hxpAuthorization?.role) {\n            this.applicationAccess = [\n                {\n                    name: hxpAuthorization.appkey,\n                    roles: hxpAuthorization.role\n                }\n            ];\n        } else {\n            this.applicationAccess = [];\n        }\n    }\n\n    private hasRolesInRealmAccess(): boolean {\n        return !!this.jwtHelperService.getValueFromLocalToken(JwtHelperService.REALM_ACCESS);\n    }\n\n    private hasRolesInHxpAuthorization(): boolean {\n        return !!this.jwtHelperService.getValueFromLocalToken(JwtHelperService.HXP_AUTHORIZATION);\n    }\n\n    /**\n     * Checks for global roles access.\n     *\n     * @param rolesToCheck List of the roles to check\n     * @returns True if it contains at least one of the given roles, false otherwise\n     */\n    hasGlobalAccess(rolesToCheck: string[]): boolean {\n        if (rolesToCheck?.length > 0) {\n            if (this.hasRolesInRealmAccess()) {\n                return this.globalAccess ? this.globalAccess.some((role: string) => rolesToCheck.includes(role)) : false;\n            } else if (this.hasRolesInHxpAuthorization()) {\n                return this.isCurrentAppKeyInToken() ? this.applicationAccess[0]?.roles.some((role: string) => rolesToCheck.includes(role)) : false;\n            }\n        } else {\n            return true;\n        }\n        return false;\n    }\n\n    private isCurrentAppKeyInToken(): boolean {\n        const currentAppKey = this.appConfigService.get('application.key');\n        return this.applicationAccess?.length ? currentAppKey === this.applicationAccess[0]?.name : false;\n    }\n\n    /**\n     * Checks for global roles access.\n     *\n     * @param appName The app name\n     * @param rolesToCheck List of the roles to check\n     * @returns True if it contains at least one of the given roles, false otherwise\n     */\n    hasApplicationAccess(appName: string, rolesToCheck: string[]): boolean {\n        if (rolesToCheck?.length > 0) {\n            const appAccess = this.hasRolesInRealmAccess()\n                ? this.applicationAccess[appName]\n                : this.applicationAccess.find((app: ApplicationAccessModel) => app.name === appName);\n            return appAccess ? appAccess.roles.some((appRole) => rolesToCheck.includes(appRole)) : false;\n        }\n        return true;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { inject } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivateFn, Router } from '@angular/router';\nimport { MatDialog } from '@angular/material/dialog';\nimport { UserAccessService } from '../services/user-access.service';\n\nexport const AuthGuardSsoRoleService: CanActivateFn = (route: ActivatedRouteSnapshot): boolean => {\n    const userAccessService = inject(UserAccessService);\n    userAccessService.fetchUserAccess();\n\n    let hasRealmRole = false;\n    let hasClientRole = true;\n    if (route.data) {\n        if (route.data['roles']) {\n            const rolesToCheck: string[] = route.data['roles'];\n            if (rolesToCheck.length === 0) {\n                hasRealmRole = true;\n            } else {\n                const excludedRoles = route.data['excludedRoles'] || [];\n                if (excludedRoles?.length > 0) {\n                    hasRealmRole = userAccessService.hasGlobalAccess(rolesToCheck) && !userAccessService.hasGlobalAccess(excludedRoles);\n                }\n                hasRealmRole = userAccessService.hasGlobalAccess(rolesToCheck);\n            }\n        }\n\n        if (route.data['clientRoles']) {\n            const clientRoleName = route.params[route.data['clientRoles']];\n            const rolesToCheck = route.data['roles'];\n            hasClientRole = userAccessService.hasApplicationAccess(clientRoleName, rolesToCheck);\n        }\n    }\n    const hasRole = hasRealmRole && hasClientRole;\n\n    if (!hasRole && route?.data?.['redirectUrl']) {\n        const router = inject(Router);\n        router.navigate(['/' + route.data['redirectUrl']]);\n    }\n\n    if (!hasRole) {\n        const dialog = inject(MatDialog);\n        dialog.closeAll();\n    }\n\n    return hasRole;\n};\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable, inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { PaginationModel } from '../../models/pagination.model';\nimport { IdentityRoleModel } from '../models/identity-role.model';\nimport { AppConfigService } from '../../app-config/app-config.service';\n\nexport interface IdentityRoleResponseModel {\n    entries: IdentityRoleModel[];\n    pagination: PaginationModel;\n}\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class IdentityRoleService {\n    protected http = inject(HttpClient);\n    protected appConfig = inject(AppConfigService);\n\n    contextRoot = '';\n    identityHost = '';\n\n    constructor() {\n        this.contextRoot = this.appConfig.get('apiHost', '');\n        this.identityHost = this.appConfig.get('identityHost');\n    }\n\n    /**\n     * Ret all roles\n     *\n     * @param skipCount skip count\n     * @param size page size\n     * @returns List of roles\n     */\n    getRoles(skipCount: number = 0, size: number = 5): Observable<IdentityRoleResponseModel> {\n        return this.http.get<any>(`${this.identityHost}/roles`).pipe(map((res) => this.preparePaginationWithRoles(res, skipCount, size)));\n    }\n\n    private preparePaginationWithRoles(roles: IdentityRoleModel[], skipCount: number = 0, size: number = 5): IdentityRoleResponseModel {\n        return {\n            entries: roles.slice(skipCount, skipCount + size),\n            pagination: {\n                skipCount,\n                maxItems: size,\n                count: roles.length,\n                hasMoreItems: false,\n                totalItems: roles.length\n            }\n        };\n    }\n\n    /**\n     * Add new role\n     *\n     * @param newRole Role model\n     * @returns Server result payload\n     */\n    addRole(newRole: IdentityRoleModel): Observable<any> {\n        if (newRole) {\n            return this.http.post(`${this.identityHost}/roles`, newRole);\n        }\n        return of();\n    }\n\n    /**\n     * Delete existing role\n     *\n     * @param deletedRole Role model\n     * @returns Server result payload\n     */\n    deleteRole(deletedRole: IdentityRoleModel): Observable<any> {\n        return this.http.delete(`${this.identityHost}/roles-by-id/${deletedRole.id}`);\n    }\n\n    /**\n     * Update existing role\n     *\n     * @param updatedRole Role model\n     * @param roleId Role id\n     * @returns Server result payload\n     */\n    updateRole(updatedRole: IdentityRoleModel, roleId: string): Observable<any> {\n        if (updatedRole && roleId) {\n            return this.http.put(`${this.identityHost}/roles-by-id/${roleId}`, updatedRole);\n        }\n        return of();\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable, inject } from '@angular/core';\nimport { Observable, from } from 'rxjs';\nimport { AdfHttpClient } from '@alfresco/adf-core/api';\n\nexport const JSON_TYPE = ['application/json'];\n\nexport interface OAuth2RequestParams {\n    url: string;\n    httpMethod?: string;\n    pathParams?: any;\n    queryParams?: any;\n    bodyParam?: any;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class OAuth2Service {\n    private readonly adfHttpClient = inject(AdfHttpClient);\n\n    request<T>(opts: OAuth2RequestParams): Observable<T> {\n        const { httpMethod, url, bodyParam, queryParams } = opts;\n        return from(\n            this.adfHttpClient.request(url, {\n                httpMethod,\n                queryParams,\n                headerParams: {},\n                formParams: {},\n                bodyParam,\n                returnType: Object\n            })\n        );\n    }\n\n    get<T>(opts: OAuth2RequestParams): Observable<T> {\n        return this.request({\n            ...opts,\n            httpMethod: 'GET'\n        });\n    }\n\n    put<T>(opts: OAuth2RequestParams): Observable<T> {\n        return this.request({\n            ...opts,\n            httpMethod: 'PUT'\n        });\n    }\n\n    post<T>(opts: OAuth2RequestParams): Observable<T> {\n        return this.request({\n            ...opts,\n            httpMethod: 'POST'\n        });\n    }\n\n    delete<T>(opts: OAuth2RequestParams): Observable<T> {\n        return this.request({\n            ...opts,\n            httpMethod: 'DELETE'\n        });\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable, inject } from '@angular/core';\nimport { firstValueFrom, Observable, of } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\nimport { AppConfigService } from '../../app-config/app-config.service';\nimport { IdentityGroupModel } from '../models/identity-group.model';\nimport { IdentityRoleModel } from '../models/identity-role.model';\nimport { IdentityUserModel } from '../models/identity-user.model';\nimport {\n    IdentityJoinGroupRequestModel,\n    IdentityUserServiceInterface,\n    IdentityUserPasswordModel,\n    IdentityUserQueryCloudRequestModel,\n    IdentityUserQueryResponse\n} from '../interfaces/identity-user.service.interface';\nimport { JwtHelperService } from './jwt-helper.service';\nimport { OAuth2Service } from './oauth2.service';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class IdentityUserService implements IdentityUserServiceInterface {\n    private readonly jwtHelperService = inject(JwtHelperService);\n    private readonly oAuth2Service = inject(OAuth2Service);\n    private readonly appConfigService = inject(AppConfigService);\n\n    private get identityHost(): string {\n        return `${this.appConfigService.get('identityHost')}`;\n    }\n\n    private buildUserUrl(): string {\n        return `${this.identityHost}/users`;\n    }\n\n    /**\n     * Gets the name and other basic details of the current user.\n     *\n     * @returns The user's details\n     */\n    getCurrentUserInfo(): IdentityUserModel {\n        const familyName = this.jwtHelperService.getValueFromLocalToken<string>(JwtHelperService.FAMILY_NAME);\n        const givenName = this.jwtHelperService.getValueFromLocalToken<string>(JwtHelperService.GIVEN_NAME);\n        const email = this.jwtHelperService.getValueFromLocalToken<string>(JwtHelperService.USER_EMAIL);\n        const username = this.jwtHelperService.getValueFromLocalToken<string>(JwtHelperService.USER_PREFERRED_USERNAME);\n        return { firstName: givenName, lastName: familyName, email, username };\n    }\n\n    /**\n     * Find users based on search input.\n     *\n     * @param search Search query string\n     * @returns List of users\n     */\n    findUsersByName(search: string): Observable<IdentityUserModel[]> {\n        if (search === '') {\n            return of([]);\n        }\n        const url = this.buildUserUrl();\n        const queryParams = { search };\n\n        return this.oAuth2Service.get({ url, queryParams });\n    }\n\n    /**\n     * Find users based on username input.\n     *\n     * @param username Search query string\n     * @returns List of users\n     */\n    findUserByUsername(username: string): Observable<IdentityUserModel[]> {\n        if (username === '') {\n            return of([]);\n        }\n        const url = this.buildUserUrl();\n        const queryParams = { username };\n\n        return this.oAuth2Service.get({ url, queryParams });\n    }\n\n    /**\n     * Find users based on email input.\n     *\n     * @param email Search query string\n     * @returns List of users\n     */\n    findUserByEmail(email: string): Observable<IdentityUserModel[]> {\n        if (email === '') {\n            return of([]);\n        }\n        const url = this.buildUserUrl();\n        const queryParams = { email };\n\n        return this.oAuth2Service.get({ url, queryParams });\n    }\n\n    /**\n     * Find users based on id input.\n     *\n     * @param id Search query string\n     * @returns users object\n     */\n    findUserById(id: string): Observable<any> {\n        if (id === '') {\n            return of([]);\n        }\n        const url = this.buildUserUrl() + '/' + id;\n        return this.oAuth2Service.get({ url });\n    }\n\n    /**\n     * Get client roles of a user for a particular client.\n     *\n     * @param userId ID of the target user\n     * @param clientId ID of the client app\n     * @returns List of client roles\n     */\n    getClientRoles(userId: string, clientId: string): Observable<any[]> {\n        const url = `${this.identityHost}/users/${userId}/role-mappings/clients/${clientId}/composite`;\n        return this.oAuth2Service.get({ url });\n    }\n\n    /**\n     * Checks whether user has access to a client app.\n     *\n     * @param userId ID of the target user\n     * @param clientId ID of the client app\n     * @returns True if the user has access, false otherwise\n     */\n    checkUserHasClientApp(userId: string, clientId: string): Observable<boolean> {\n        return this.getClientRoles(userId, clientId).pipe(map((clientRoles) => clientRoles.length > 0));\n    }\n\n    /**\n     * Checks whether a user has any of the client app roles.\n     *\n     * @param userId ID of the target user\n     * @param clientId ID of the client app\n     * @param roleNames List of role names to check for\n     * @returns True if the user has one or more of the roles, false otherwise\n     */\n    checkUserHasAnyClientAppRole(userId: string, clientId: string, roleNames: string[]): Observable<boolean> {\n        return this.getClientRoles(userId, clientId).pipe(\n            map((clientRoles: any[]) => {\n                let hasRole = false;\n                if (clientRoles.length > 0) {\n                    roleNames.forEach((roleName) => {\n                        const role = clientRoles.find(({ name }) => name === roleName);\n\n                        if (role) {\n                            hasRole = true;\n                            return;\n                        }\n                    });\n                }\n                return hasRole;\n            })\n        );\n    }\n\n    /**\n     * Gets the client ID for an application.\n     *\n     * @param applicationName Name of the application\n     * @returns Client ID string\n     */\n    getClientIdByApplicationName(applicationName: string): Observable<string> {\n        const url = `${this.identityHost}/clients`;\n        const queryParams = { clientId: applicationName };\n\n        return this.oAuth2Service.get<any[]>({ url, queryParams }).pipe(map((response) => (response && response.length > 0 ? response[0].id : '')));\n    }\n\n    /**\n     * Checks if a user has access to an application.\n     *\n     * @param userId ID of the user\n     * @param applicationName Name of the application\n     * @returns True if the user has access, false otherwise\n     */\n    checkUserHasApplicationAccess(userId: string, applicationName: string): Observable<boolean> {\n        return this.getClientIdByApplicationName(applicationName).pipe(switchMap((clientId: string) => this.checkUserHasClientApp(userId, clientId)));\n    }\n\n    /**\n     * Checks if a user has any application role.\n     *\n     * @param userId ID of the target user\n     * @param applicationName Name of the application\n     * @param roleNames List of role names to check for\n     * @returns True if the user has one or more of the roles, false otherwise\n     */\n    checkUserHasAnyApplicationRole(userId: string, applicationName: string, roleNames: string[]): Observable<boolean> {\n        return this.getClientIdByApplicationName(applicationName).pipe(\n            switchMap((clientId: string) => this.checkUserHasAnyClientAppRole(userId, clientId, roleNames))\n        );\n    }\n\n    /**\n     * Gets details for all users.\n     *\n     * @returns Array of user info objects\n     */\n    getUsers(): Observable<IdentityUserModel[]> {\n        const url = this.buildUserUrl();\n        return this.oAuth2Service.get({ url });\n    }\n\n    /**\n     * Gets a list of roles for a user.\n     *\n     * @param userId ID of the user\n     * @returns Array of role info objects\n     */\n    getUserRoles(userId: string): Observable<IdentityRoleModel[]> {\n        const url = `${this.identityHost}/users/${userId}/role-mappings/realm/composite`;\n        return this.oAuth2Service.get({ url });\n    }\n\n    /**\n     * Gets an array of users (including the current user) who have any of the roles in the supplied list.\n     *\n     * @param roleNames List of role names to look for\n     * @returns Array of user info objects\n     */\n    async getUsersByRolesWithCurrentUser(roleNames: string[]): Promise<IdentityUserModel[]> {\n        const filteredUsers: IdentityUserModel[] = [];\n        if (roleNames && roleNames.length > 0) {\n            const users = await firstValueFrom(this.getUsers());\n\n            for (let i = 0; i < users.length; i++) {\n                const hasAnyRole = await this.userHasAnyRole(users[i].id, roleNames);\n                if (hasAnyRole) {\n                    filteredUsers.push(users[i]);\n                }\n            }\n        }\n\n        return filteredUsers;\n    }\n\n    /**\n     * Gets an array of users (not including the current user) who have any of the roles in the supplied list.\n     *\n     * @param roleNames List of role names to look for\n     * @returns Array of user info objects\n     */\n    async getUsersByRolesWithoutCurrentUser(roleNames: string[]): Promise<IdentityUserModel[]> {\n        const filteredUsers: IdentityUserModel[] = [];\n        if (roleNames && roleNames.length > 0) {\n            const currentUser = this.getCurrentUserInfo();\n            let users = await firstValueFrom(this.getUsers());\n\n            users = users.filter(({ username }) => username !== currentUser.username);\n\n            for (let i = 0; i < users.length; i++) {\n                const hasAnyRole = await this.userHasAnyRole(users[i].id, roleNames);\n                if (hasAnyRole) {\n                    filteredUsers.push(users[i]);\n                }\n            }\n        }\n\n        return filteredUsers;\n    }\n\n    private async userHasAnyRole(userId: string, roleNames: string[]): Promise<boolean> {\n        const userRoles = await firstValueFrom(this.getUserRoles(userId));\n        const hasAnyRole = roleNames.some((roleName) => {\n            const filteredRoles = userRoles.filter((userRole) => userRole.name.toLocaleLowerCase() === roleName.toLocaleLowerCase());\n\n            return filteredRoles.length > 0;\n        });\n\n        return hasAnyRole;\n    }\n\n    /**\n     * Checks if a user has one of the roles from a list.\n     *\n     * @param userId ID of the target user\n     * @param roleNames Array of roles to check for\n     * @returns True if the user has one of the roles, false otherwise\n     */\n    checkUserHasRole(userId: string, roleNames: string[]): Observable<boolean> {\n        return this.getUserRoles(userId).pipe(\n            map((userRoles: IdentityRoleModel[]) => {\n                let hasRole = false;\n                if (userRoles && userRoles.length > 0) {\n                    roleNames.forEach((roleName: string) => {\n                        const role = userRoles.find(({ name }) => roleName === name);\n                        if (role) {\n                            hasRole = true;\n                            return;\n                        }\n                    });\n                }\n                return hasRole;\n            })\n        );\n    }\n\n    /**\n     * Gets details for all users.\n     *\n     * @param requestQuery query model\n     * @returns Array of user information objects.\n     */\n    queryUsers(requestQuery: IdentityUserQueryCloudRequestModel): Observable<IdentityUserQueryResponse> {\n        const url = this.buildUserUrl();\n        const queryParams = { first: requestQuery.first, max: requestQuery.max };\n\n        return this.getTotalUsersCount().pipe(\n            switchMap((totalCount) =>\n                this.oAuth2Service.get<IdentityUserModel[]>({ url, queryParams }).pipe(\n                    map(\n                        (response) =>\n                            ({\n                                entries: response,\n                                pagination: {\n                                    skipCount: requestQuery.first,\n                                    maxItems: requestQuery.max,\n                                    count: totalCount,\n                                    hasMoreItems: false,\n                                    totalItems: totalCount\n                                }\n                            }) as IdentityUserQueryResponse\n                    )\n                )\n            )\n        );\n    }\n\n    /**\n     * Gets users total count.\n     *\n     * @returns Number of users count.\n     */\n    getTotalUsersCount(): Observable<number> {\n        const url = this.buildUserUrl() + `/count`;\n        return this.oAuth2Service.get({ url });\n    }\n\n    /**\n     * Creates new user.\n     *\n     * @param newUser Object containing the new user details.\n     * @returns Empty response when the user created.\n     */\n    createUser(newUser: IdentityUserModel): Observable<any> {\n        const url = this.buildUserUrl();\n        const bodyParam = JSON.stringify(newUser);\n\n        return this.oAuth2Service.post({ url, bodyParam });\n    }\n\n    /**\n     * Updates user details.\n     *\n     * @param userId Id of the user.\n     * @param updatedUser Object containing the user details.\n     * @returns Empty response when the user updated.\n     */\n    updateUser(userId: string, updatedUser: IdentityUserModel): Observable<any> {\n        const url = this.buildUserUrl() + '/' + userId;\n        const bodyParam = JSON.stringify(updatedUser);\n\n        return this.oAuth2Service.put({ url, bodyParam });\n    }\n\n    /**\n     * Deletes User.\n     *\n     * @param userId Id of the  user.\n     * @returns Empty response when the user deleted.\n     */\n    deleteUser(userId: string): Observable<any> {\n        const url = this.buildUserUrl() + '/' + userId;\n        return this.oAuth2Service.delete({ url });\n    }\n\n    /**\n     * Changes user password.\n     *\n     * @param userId Id of the user.\n     * @param newPassword Details of user Credentials.\n     * @returns Empty response when the password changed.\n     */\n    changePassword(userId: string, newPassword: IdentityUserPasswordModel): Observable<any> {\n        const url = this.buildUserUrl() + '/' + userId + '/reset-password';\n        const bodyParam = JSON.stringify(newPassword);\n\n        return this.oAuth2Service.put({ url, bodyParam });\n    }\n\n    /**\n     * Gets involved groups.\n     *\n     * @param userId Id of the user.\n     * @returns Array of involved groups information objects.\n     */\n    getInvolvedGroups(userId: string): Observable<IdentityGroupModel[]> {\n        const url = this.buildUserUrl() + '/' + userId + '/groups/';\n        const pathParams = { id: userId };\n\n        return this.oAuth2Service.get({ url, pathParams });\n    }\n\n    /**\n     * Joins group.\n     *\n     * @param joinGroupRequest Details of join group request (IdentityJoinGroupRequestModel).\n     * @returns Empty response when the user joined the group.\n     */\n    joinGroup(joinGroupRequest: IdentityJoinGroupRequestModel): Observable<any> {\n        const url = this.buildUserUrl() + '/' + joinGroupRequest.userId + '/groups/' + joinGroupRequest.groupId;\n        const bodyParam = JSON.stringify(joinGroupRequest);\n\n        return this.oAuth2Service.put({ url, bodyParam });\n    }\n\n    /**\n     * Leaves group.\n     *\n     * @param userId Id of the user.\n     * @param groupId Id of the  group.\n     * @returns Empty response when the user left the group.\n     */\n    leaveGroup(userId: any, groupId: string): Observable<any> {\n        const url = this.buildUserUrl() + '/' + userId + '/groups/' + groupId;\n        return this.oAuth2Service.delete({ url });\n    }\n\n    /**\n     * Gets available roles\n     *\n     * @param userId Id of the user.\n     * @returns Array of available roles information objects\n     */\n    getAvailableRoles(userId: string): Observable<IdentityRoleModel[]> {\n        const url = this.buildUserUrl() + '/' + userId + '/role-mappings/realm/available';\n        return this.oAuth2Service.get({ url });\n    }\n\n    /**\n     * Gets assigned roles.\n     *\n     * @param userId Id of the user.\n     * @returns Array of assigned roles information objects\n     */\n    getAssignedRoles(userId: string): Observable<IdentityRoleModel[]> {\n        const url = this.buildUserUrl() + '/' + userId + '/role-mappings/realm';\n        const pathParams = { id: userId };\n\n        return this.oAuth2Service.get({ url, pathParams });\n    }\n\n    /**\n     * Gets effective roles.\n     *\n     * @param userId Id of the user.\n     * @returns Array of composite roles information objects\n     */\n    getEffectiveRoles(userId: string): Observable<IdentityRoleModel[]> {\n        const url = this.buildUserUrl() + '/' + userId + '/role-mappings/realm/composite';\n        const pathParams = { id: userId };\n\n        return this.oAuth2Service.get({ url, pathParams });\n    }\n\n    /**\n     * Assigns roles to the user.\n     *\n     * @param userId Id of the user.\n     * @param roles Array of roles.\n     * @returns Empty response when the role assigned.\n     */\n    assignRoles(userId: string, roles: IdentityRoleModel[]): Observable<any> {\n        const url = this.buildUserUrl() + '/' + userId + '/role-mappings/realm';\n        const bodyParam = JSON.stringify(roles);\n\n        return this.oAuth2Service.post({ url, bodyParam });\n    }\n\n    /**\n     * Removes assigned roles.\n     *\n     * @param userId Id of the user.\n     * @param removedRoles Array of roles.\n     * @returns Empty response when the role removed.\n     */\n    removeRoles(userId: string, removedRoles: IdentityRoleModel[]): Observable<any> {\n        const url = this.buildUserUrl() + '/' + userId + '/role-mappings/realm';\n        const bodyParam = JSON.stringify(removedRoles);\n\n        return this.oAuth2Service.delete({ url, bodyParam });\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable, inject } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\nimport { AppConfigService } from '../../app-config/app-config.service';\nimport {\n    IdentityGroupSearchParam,\n    IdentityGroupQueryCloudRequestModel,\n    IdentityGroupModel,\n    IdentityGroupQueryResponse,\n    IdentityGroupCountModel\n} from '../models/identity-group.model';\nimport { IdentityRoleModel } from '../models/identity-role.model';\nimport { IdentityGroupServiceInterface } from '../interfaces/identity-group.interface';\nimport { OAuth2Service } from './oauth2.service';\n\n@Injectable({ providedIn: 'root' })\nexport class IdentityGroupService implements IdentityGroupServiceInterface {\n    private readonly oAuth2Service = inject(OAuth2Service);\n    private readonly appConfigService = inject(AppConfigService);\n\n    private get identityHost(): string {\n        return `${this.appConfigService.get('identityHost')}`;\n    }\n\n    /**\n     * Gets all groups.\n     *\n     * @returns Array of group information objects\n     */\n    getGroups(): Observable<IdentityGroupModel[]> {\n        const url = `${this.identityHost}/groups`;\n        return this.oAuth2Service.get({ url });\n    }\n\n    /**\n     * Gets available roles\n     *\n     * @param groupId Id of the group.\n     * @returns Array of available roles information objects\n     */\n    getAvailableRoles(groupId: string): Observable<IdentityRoleModel[]> {\n        const url = `${this.identityHost}/groups/${groupId}/role-mappings/realm/available`;\n        return this.oAuth2Service.get({ url });\n    }\n\n    /**\n     * Gets assigned roles\n     *\n     * @param groupId Id of the group.\n     * @returns Array of available roles\n     */\n    getAssignedRoles(groupId: string): Observable<IdentityRoleModel[]> {\n        const url = `${this.identityHost}/groups/${groupId}/role-mappings/realm`;\n        return this.oAuth2Service.get({ url });\n    }\n\n    /**\n     * Assigns roles to the group\n     *\n     * @param groupId The ID of the group\n     * @param roles Array of roles to assign\n     * @returns request result\n     */\n    assignRoles(groupId: string, roles: IdentityRoleModel[]): Observable<any> {\n        const url = `${this.identityHost}/groups/${groupId}/role-mappings/realm`;\n        const bodyParam = JSON.stringify(roles);\n\n        return this.oAuth2Service.post({ url, bodyParam });\n    }\n\n    /**\n     * Removes roles from the group\n     *\n     * @param groupId The ID of the group\n     * @param roles Array of roles to remove\n     * @returns request result\n     */\n    removeRoles(groupId: string, roles: IdentityRoleModel[]): Observable<any> {\n        const url = `${this.identityHost}/groups/${groupId}/role-mappings/realm`;\n        const bodyParam = JSON.stringify(roles);\n\n        return this.oAuth2Service.delete({ url, bodyParam });\n    }\n\n    /**\n     * Get effective roles\n     *\n     * @param groupId Id of the group\n     * @returns Array of effective roles\n     */\n    getEffectiveRoles(groupId: string): Observable<IdentityRoleModel[]> {\n        const url = `${this.identityHost}/groups/${groupId}/role-mappings/realm/composite`;\n        return this.oAuth2Service.get({ url });\n    }\n\n    /**\n     * Queries groups.\n     *\n     * @param requestQuery query settings\n     * @returns Array of user information objects\n     */\n    queryGroups(requestQuery: IdentityGroupQueryCloudRequestModel): Observable<IdentityGroupQueryResponse> {\n        const url = `${this.identityHost}/groups`;\n        const queryParams = { first: requestQuery.first || 0, max: requestQuery.max || 5 };\n\n        return this.getTotalGroupsCount().pipe(\n            switchMap((totalCount: IdentityGroupCountModel) =>\n                this.oAuth2Service.get<any[]>({ url, queryParams }).pipe(\n                    map(\n                        (response) =>\n                            ({\n                                entries: response,\n                                pagination: {\n                                    skipCount: requestQuery.first,\n                                    maxItems: requestQuery.max,\n                                    count: totalCount.count,\n                                    hasMoreItems: false,\n                                    totalItems: totalCount.count\n                                }\n                            }) as IdentityGroupQueryResponse\n                    )\n                )\n            )\n        );\n    }\n\n    /**\n     * Gets groups total count.\n     *\n     * @returns Number of groups count.\n     */\n    getTotalGroupsCount(): Observable<IdentityGroupCountModel> {\n        const url = `${this.identityHost}/groups/count`;\n        return this.oAuth2Service.get({ url });\n    }\n\n    /**\n     * Creates new group.\n     *\n     * @param newGroup Object of containing the new group details.\n     * @returns Empty response when the group created.\n     */\n    createGroup(newGroup: IdentityGroupModel): Observable<any> {\n        const url = `${this.identityHost}/groups`;\n        const bodyParam = newGroup;\n\n        return this.oAuth2Service.post({ url, bodyParam });\n    }\n\n    /**\n     * Updates group details.\n     *\n     * @param groupId Id of the targeted group.\n     * @param updatedGroup Object of containing the group details\n     * @returns Empty response when the group updated.\n     */\n    updateGroup(groupId: string, updatedGroup: IdentityGroupModel): Observable<any> {\n        const url = `${this.identityHost}/groups/${groupId}`;\n        const bodyParam = JSON.stringify(updatedGroup);\n\n        return this.oAuth2Service.put({ url, bodyParam });\n    }\n\n    /**\n     * Deletes Group.\n     *\n     * @param groupId Id of the group.\n     * @returns Empty response when the group deleted.\n     */\n    deleteGroup(groupId: string): Observable<any> {\n        const url = `${this.identityHost}/groups/${groupId}`;\n        return this.oAuth2Service.delete({ url });\n    }\n\n    /**\n     * Finds groups filtered by name.\n     *\n     * @param searchParams Object containing the name filter string\n     * @returns List of group information\n     */\n    findGroupsByName(searchParams: IdentityGroupSearchParam): Observable<IdentityGroupModel[]> {\n        if (searchParams.name === '') {\n            return of([]);\n        }\n        const url = `${this.identityHost}/groups`;\n        const queryParams = { search: searchParams.name };\n\n        return this.oAuth2Service.get({ url, queryParams });\n    }\n\n    /**\n     * Gets details for a specified group.\n     *\n     * @param groupId Id of the target group\n     * @returns Group details\n     */\n    getGroupRoles(groupId: string): Observable<IdentityRoleModel[]> {\n        const url = this.buildRolesUrl(groupId);\n        return this.oAuth2Service.get({ url });\n    }\n\n    /**\n     * Check that a group has one or more roles from the supplied list.\n     *\n     * @param groupId Id of the target group\n     * @param roleNames Array of role names\n     * @returns True if the group has one or more of the roles, false otherwise\n     */\n    checkGroupHasRole(groupId: string, roleNames: string[]): Observable<boolean> {\n        return this.getGroupRoles(groupId).pipe(\n            map((groupRoles) => {\n                let hasRole = false;\n                if (groupRoles?.length > 0) {\n                    roleNames.forEach((roleName: string) => {\n                        const role = groupRoles.find(({ name }) => roleName === name);\n                        if (role) {\n                            hasRole = true;\n                            return;\n                        }\n                    });\n                }\n                return hasRole;\n            })\n        );\n    }\n\n    /**\n     * Gets the client Id using the app name.\n     *\n     * @param applicationName Name of the app\n     * @returns client Id string\n     */\n    getClientIdByApplicationName(applicationName: string): Observable<string> {\n        const url = `${this.identityHost}/clients`;\n        const queryParams = { clientId: applicationName };\n\n        return this.oAuth2Service.get<any[]>({ url, queryParams }).pipe(map((response) => (response && response.length > 0 ? response[0].id : '')));\n    }\n\n    /**\n     * Gets client roles.\n     *\n     * @param groupId Id of the target group\n     * @param clientId Id of the client\n     * @returns List of roles\n     */\n    getClientRoles(groupId: string, clientId: string): Observable<IdentityRoleModel[]> {\n        const url = `${this.identityHost}/groups/${groupId}/role-mappings/clients/${clientId}`;\n        return this.oAuth2Service.get({ url });\n    }\n\n    /**\n     * Checks if a group has a client app.\n     *\n     * @param groupId Id of the target group\n     * @param clientId Id of the client\n     * @returns True if the group has the client app, false otherwise\n     */\n    checkGroupHasClientApp(groupId: string, clientId: string): Observable<boolean> {\n        return this.getClientRoles(groupId, clientId).pipe(map((response) => response && response.length > 0));\n    }\n\n    /**\n     * Check if a group has any of the client app roles in the supplied list.\n     *\n     * @param groupId Id of the target group\n     * @param clientId Id of the client\n     * @param roleNames Array of role names to check\n     * @returns True if the group has one or more of the roles, false otherwise\n     */\n    checkGroupHasAnyClientAppRole(groupId: string, clientId: string, roleNames: string[]): Observable<boolean> {\n        return this.getClientRoles(groupId, clientId).pipe(\n            map((clientRoles: any[]) => {\n                let hasRole = false;\n                if (clientRoles.length > 0) {\n                    roleNames.forEach((roleName) => {\n                        const role = clientRoles.find(({ name }) => name === roleName);\n\n                        if (role) {\n                            hasRole = true;\n                            return;\n                        }\n                    });\n                }\n                return hasRole;\n            })\n        );\n    }\n\n    private buildRolesUrl(groupId: string): string {\n        return `${this.identityHost}/groups/${groupId}/role-mappings/realm/composite`;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Observable } from 'rxjs';\nimport { IdentityGroupModel } from '../models/identity-group.model';\nimport { IdentityRoleModel } from '../models/identity-role.model';\nimport { IdentityUserModel } from '../models/identity-user.model';\nimport { PaginationModel } from '../../models/pagination.model';\n\nexport interface IdentityUserQueryResponse {\n\n    entries: IdentityUserModel[];\n    pagination: PaginationModel;\n}\n\nexport interface IdentityUserPasswordModel {\n    type?: string;\n    value?: string;\n    temporary?: boolean;\n}\n\nexport interface IdentityUserQueryCloudRequestModel {\n    first: number;\n    max: number;\n}\n\nexport interface IdentityJoinGroupRequestModel {\n    realm: string;\n    userId: string;\n    groupId: string;\n}\n\nexport interface IdentityUserServiceInterface {\n    getCurrentUserInfo(): IdentityUserModel;\n    findUserById(id: string): Observable<any>;\n    findUsersByName(search: string): Observable<IdentityUserModel[]>;\n    findUserByUsername(username: string): Observable<IdentityUserModel[]>;\n    findUserByEmail(email: string): Observable<IdentityUserModel[]>;\n    getClientRoles(userId: string, clientId: string): Observable<any[]>;\n    checkUserHasClientApp(userId: string, clientId: string): Observable<boolean>;\n    checkUserHasAnyClientAppRole(userId: string, clientId: string, roleNames: string[]): Observable<boolean>;\n    getClientIdByApplicationName(applicationName: string): Observable<string>;\n    checkUserHasApplicationAccess(userId: string, applicationName: string): Observable<boolean>;\n    checkUserHasAnyApplicationRole(userId: string, applicationName: string, roleNames: string[]): Observable<boolean>;\n    getUsers(): Observable<IdentityUserModel[]>;\n    getUserRoles(userId: string): Observable<IdentityRoleModel[]>;\n    getUsersByRolesWithCurrentUser(roleNames: string[]): Promise<IdentityUserModel[]>;\n    getUsersByRolesWithoutCurrentUser(roleNames: string[]): Promise<IdentityUserModel[]>;\n    checkUserHasRole(userId: string, roleNames: string[]): Observable<boolean>;\n    queryUsers(requestQuery: IdentityUserQueryCloudRequestModel): Observable<IdentityUserQueryResponse>;\n    getTotalUsersCount(): Observable<number>;\n    createUser(newUser: IdentityUserModel): Observable<any>;\n    updateUser(userId: string, updatedUser: IdentityUserModel): Observable<any>;\n    deleteUser(userId: string): Observable<any>;\n    changePassword(userId: string, newPassword: IdentityUserPasswordModel): Observable<any>;\n    getInvolvedGroups(userId: string): Observable<IdentityGroupModel[]>;\n    joinGroup(joinGroupRequest: IdentityJoinGroupRequestModel): Observable<any>;\n    leaveGroup(userId: any, groupId: string): Observable<any>;\n    getAvailableRoles(userId: string): Observable<IdentityRoleModel[]>;\n    getAssignedRoles(userId: string): Observable<IdentityRoleModel[]>;\n    getEffectiveRoles(userId: string): Observable<IdentityRoleModel[]>;\n    assignRoles(userId: string, roles: IdentityRoleModel[]): Observable<any>;\n    removeRoles(userId: string, removedRoles: IdentityRoleModel[]): Observable<any>;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Observable } from 'rxjs';\nimport {\n    IdentityGroupModel,\n    IdentityGroupQueryResponse,\n    IdentityGroupCountModel,\n    IdentityGroupQueryCloudRequestModel,\n    IdentityGroupSearchParam\n} from '../models/identity-group.model';\nimport { IdentityRoleModel } from '../models/identity-role.model';\n\nexport interface IdentityGroupServiceInterface {\n\n    getGroups(): Observable<IdentityGroupModel[]>;\n    getAvailableRoles(groupId: string): Observable<IdentityRoleModel[]>;\n    getAssignedRoles(groupId: string): Observable<IdentityRoleModel[]>;\n    assignRoles(groupId: string, roles: IdentityRoleModel[]): Observable<any>;\n    removeRoles(groupId: string, roles: IdentityRoleModel[]): Observable<any>;\n    getEffectiveRoles(groupId: string): Observable<IdentityRoleModel[]>;\n    queryGroups(requestQuery: IdentityGroupQueryCloudRequestModel): Observable<IdentityGroupQueryResponse>;\n    getTotalGroupsCount(): Observable<IdentityGroupCountModel>;\n    createGroup(newGroup: IdentityGroupModel): Observable<any>;\n    updateGroup(groupId: string, updatedGroup: IdentityGroupModel);\n    deleteGroup(groupId: string): Observable<any>;\n    findGroupsByName(searchParams: IdentityGroupSearchParam): Observable<IdentityGroupModel[]>;\n    getGroupRoles(groupId: string): Observable<IdentityRoleModel[]>;\n    checkGroupHasRole(groupId: string, roleNames: string[]): Observable<boolean>;\n    getClientIdByApplicationName(applicationName: string): Observable<string>;\n    getClientRoles(groupId: string, clientId: string): Observable<IdentityRoleModel[]>;\n    checkGroupHasClientApp(groupId: string, clientId: string): Observable<boolean>;\n    checkGroupHasAnyClientAppRole(groupId: string, clientId: string, roleNames: string[]): Observable<boolean>;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface OpenidConfiguration {\n    authorization_endpoint: string;\n    token_endpoint: string;\n    userinfo_endpoint: string;\n    end_session_endpoint: string;\n    check_session_iframe: string;\n    revocation_endpoint: string;\n    introspection_endpoint: string;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface OauthConfigModel {\n    host: string;\n    clientId: string;\n    scope: string;\n    implicitFlow: boolean;\n    codeFlow?: boolean;\n    redirectUri: string;\n    silentLogin?: boolean;\n    redirectUriLogout?: string;\n    logoutUrl?: string;\n    audience?: string;\n    logoutParameters?: Array<string>;\n    redirectSilentIframeUri?: string;\n    refreshTokenTimeout?: number;\n    publicUrls: string[];\n    clockSkewInSec?: number;\n    sessionChecksEnabled?: boolean;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * This object represent the user redirection guard.*\n */\n\nexport class RedirectionModel {\n    provider: string;\n    url?: string;\n\n    constructor(obj?: any) {\n        if (obj) {\n            this.provider = obj.provider;\n            this.url = obj.url || null;\n        }\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { PaginationModel } from '../../models/pagination.model';\n\nexport interface IdentityGroupModel {\n    id?: string;\n    name?: string;\n    path?: string;\n    realmRoles?: string[];\n    clientRoles?: any;\n    access?: any;\n    attributes?: any;\n    readonly?: boolean;\n}\n\nexport interface IdentityGroupSearchParam {\n    name?: string;\n}\n\nexport interface IdentityGroupQueryResponse {\n\n    entries: IdentityGroupModel[];\n    pagination: PaginationModel;\n}\n\nexport interface IdentityGroupQueryCloudRequestModel {\n    first: number;\n    max: number;\n}\n\nexport interface IdentityGroupCountModel {\n    count: number;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface IdentityUserModel {\n    id?: string;\n    firstName?: string;\n    lastName?: string;\n    email?: string;\n    username?: string;\n    createdTimestamp?: any;\n    emailVerified?: boolean;\n    enabled?: boolean;\n    readonly?: boolean;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport class IdentityRoleModel {\n    id: string;\n    name: string;\n    description?: string;\n    clientRole?: boolean;\n    composite?: boolean;\n    containerId?: string;\n    scopeParamRequired?: boolean;\n\n    constructor(obj?: any) {\n        if (obj) {\n            this.id = obj.id || null;\n            this.name = obj.name || null;\n            this.description = obj.description || null;\n            this.clientRole = obj.clientRole || null;\n            this.composite = obj.composite || null;\n            this.containerId = obj.containerId || null;\n            this.scopeParamRequired = obj.scopeParamRequired || null;\n        }\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ApplicationAccessModel } from './application-access.model';\n\nexport interface UserAccessModel {\n    globalAccess: { roles: string[] };\n    applicationAccess: ApplicationAccessModel[];\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface ApplicationAccessModel {\n    name: string;\n    roles: string[];\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { inject, Injectable } from '@angular/core';\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { tap } from 'rxjs/operators';\nimport { OAuthService, OAuthStorage } from 'angular-oauth2-oidc';\n\n@Injectable()\n/**\n * TokenInterceptor is an HTTP interceptor that processes HTTP requests and responses\n * to handle the id_token. It checks if the request URL matches the token endpoint\n * and processes the response to store the `id_token` in the OAuth storage if it is\n * not already set.\n * The purpose of this interceptor is to fix the missing `id_token_hint` required by the Idp to complete the logout.\n * `id_token_hint` is set by the `angular-oauth2-oidc` library only when the `id_token` is set in the storage.\n * https://github.com/manfredsteyer/angular-oauth2-oidc/blob/15.0.0/projects/lib/src/oauth-service.ts#L2555\n *\n * See the related issue: https://github.com/manfredsteyer/angular-oauth2-oidc/issues/1443\n *\n * @function intercept\n * @param {HttpRequest<unknown>} request - The outgoing HTTP request.\n * @param {HttpHandler} next - The next handler in the HTTP request chain.\n * @returns {Observable<HttpEvent<unknown>>} An observable of the HTTP event.\n */\nexport class TokenInterceptor implements HttpInterceptor {\n    private readonly _oauthStorage = inject(OAuthStorage);\n    private readonly _oauthService = inject(OAuthService);\n\n    intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\n        const tokenEndpoint = this._oauthService.tokenEndpoint;\n        if (tokenEndpoint && request.url === tokenEndpoint) {\n            return next.handle(request).pipe(\n                tap((event) => {\n                    if (event instanceof HttpResponse) {\n                        if (!this._oauthService.getIdToken() && event?.body?.id_token) {\n                            this._oauthStorage.setItem('id_token', event.body.id_token);\n                        }\n                    }\n                })\n            );\n        }\n        return next.handle(request);\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n    template: '<div data-automation-id=\"auth-confirmation\"></div>',\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AuthenticationConfirmationComponent {\n    constructor() {}\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { inject } from '@angular/core';\nimport { CanActivateFn, Router } from '@angular/router';\nimport { AuthService } from './auth.service';\n\nconst ROUTE_DEFAULT = '/';\n\nexport const OidcAuthGuard: CanActivateFn = async (): Promise<boolean> => {\n    let onLogoutEmitted = false;\n\n    const authService = inject(AuthService);\n    const router = inject(Router);\n\n    authService.onLogout$.subscribe(() => (onLogoutEmitted = true));\n\n    try {\n        const route = await authService.loginCallback({ customHashFragment: window.location.search });\n        return router.navigateByUrl(route, { replaceUrl: true });\n    } catch (error) {\n        if (onLogoutEmitted) {\n            throw error;\n        }\n        return router.navigateByUrl(ROUTE_DEFAULT, { replaceUrl: true });\n    }\n};\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Routes } from '@angular/router';\nimport { AuthenticationConfirmationComponent } from './view/authentication-confirmation/authentication-confirmation.component';\nimport { OidcAuthGuard } from './oidc-auth.guard';\n\nexport const AUTH_ROUTES: Routes = [\n    { path: 'view/authentication-confirmation', component: AuthenticationConfirmationComponent, canActivate: [OidcAuthGuard] }\n];\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { inject, ModuleWithProviders, NgModule, InjectionToken, provideAppInitializer, EnvironmentProviders, Provider } from '@angular/core';\nimport { AUTH_CONFIG, OAuthStorage, provideOAuthClient } from 'angular-oauth2-oidc';\nimport { AuthenticationService } from '../services/authentication.service';\nimport { AuthModuleConfig, AUTH_MODULE_CONFIG } from './auth-config';\nimport { authConfigFactory, AuthConfigService } from './auth-config.service';\nimport { AuthService } from './auth.service';\nimport { RedirectAuthService } from './redirect-auth.service';\nimport { HTTP_INTERCEPTORS, provideHttpClient, withInterceptorsFromDi, withXsrfConfiguration } from '@angular/common/http';\nimport { TokenInterceptor } from './token.interceptor';\nimport { StorageService } from '../../common/services/storage.service';\nimport { provideRouter } from '@angular/router';\nimport { AUTH_ROUTES } from './auth.routes';\nimport { Authentication, AuthenticationInterceptor } from '@alfresco/adf-core/auth';\n\nexport const JWT_STORAGE_SERVICE = new InjectionToken<OAuthStorage>('JWT_STORAGE_SERVICE', {\n    providedIn: 'root',\n    factory: () => inject(StorageService)\n});\n\n/**\n *  @returns current instance of OAuthStorage\n */\nexport function oauthStorageFactory(): OAuthStorage {\n    return inject(JWT_STORAGE_SERVICE);\n}\n\n/**\n * Provides core authentication api\n *\n * @param config Optional configuration parameters\n * @returns Angular providers\n */\nexport function provideCoreAuth(config: AuthModuleConfig = { useHash: false }): (Provider | EnvironmentProviders)[] {\n    config.preventClearHashAfterLogin = config.preventClearHashAfterLogin ?? true;\n    return [\n        provideHttpClient(withInterceptorsFromDi(), withXsrfConfiguration({ cookieName: 'CSRF-TOKEN', headerName: 'X-CSRF-TOKEN' })),\n        provideOAuthClient(),\n        provideRouter(AUTH_ROUTES),\n        { provide: OAuthStorage, useFactory: oauthStorageFactory },\n        AuthenticationService,\n        {\n            provide: AUTH_CONFIG,\n            useFactory: authConfigFactory,\n            deps: [AuthConfigService]\n        },\n        RedirectAuthService,\n        { provide: AuthService, useExisting: RedirectAuthService },\n        provideAppInitializer(() => {\n            const redirectService = inject(RedirectAuthService);\n            return redirectService.init();\n        }),\n        { provide: HTTP_INTERCEPTORS, useClass: TokenInterceptor, multi: true },\n        { provide: HTTP_INTERCEPTORS, useClass: AuthenticationInterceptor, multi: true },\n        { provide: AUTH_MODULE_CONFIG, useValue: config },\n        { provide: Authentication, useClass: AuthenticationService }\n    ];\n}\n\n/** @deprecated use `provideCoreAuth()` provider api instead */\n@NgModule({\n    providers: [...provideCoreAuth()]\n})\nexport class AuthModule {\n    /* @deprecated use `provideCoreAuth()` provider api instead */\n    static forRoot(config: AuthModuleConfig = { useHash: false }): ModuleWithProviders<AuthModule> {\n        config.preventClearHashAfterLogin = config.preventClearHashAfterLogin ?? true;\n        return {\n            ngModule: AuthModule,\n            providers: [{ provide: AUTH_MODULE_CONFIG, useValue: config }]\n        };\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './auth.module';\nexport * from './auth.service';\nexport * from './oidc-auth.guard';\nexport * from './redirect-auth.service';\nexport * from './view/authentication-confirmation/authentication-confirmation.component';\nexport * from './oidc-authentication.service';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './authentication-interceptor/auth-bearer.interceptor';\n\nexport * from './guard/auth-guard.service';\nexport * from './guard/auth-guard';\nexport * from './guard/auth-guard-ecm.service';\nexport * from './guard/auth-guard-bpm.service';\nexport * from './guard/auth-guard-sso-role.service';\n\nexport * from './services/authentication.service';\nexport * from './services/identity-role.service';\nexport * from './services/identity-user.service';\nexport * from './services/identity-group.service';\nexport * from './services/jwt-helper.service';\nexport * from './services/oauth2.service';\nexport * from './services/user-access.service';\n\nexport * from './basic-auth/basic-alfresco-auth.service';\nexport * from './basic-auth/process-auth';\nexport * from './basic-auth/content-auth';\n\nexport * from './interfaces/identity-user.service.interface';\nexport * from './interfaces/identity-group.interface';\nexport * from './interfaces/openid-configuration.interface';\n\nexport * from './models/oauth-config.model';\nexport * from './models/redirection.model';\n\nexport * from './models/identity-group.model';\nexport * from './models/identity-user.model';\nexport * from './models/identity-role.model';\n\nexport * from './models/user-access.model';\nexport * from './models/application-access.model';\n\nexport * from './oidc/public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport class ComponentTranslationModel {\n    name: string;\n    path: string;\n    json: string[];\n\n    constructor(obj?: any) {\n        this.name = obj?.name;\n        this.path = obj?.path;\n        this.json = obj?.json || [];\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { TranslateLoader } from '@ngx-translate/core';\nimport { Observable, forkJoin, throwError, of } from 'rxjs';\nimport { ComponentTranslationModel } from '../models/component.model';\nimport { ObjectUtils } from '../common/utils/object-utils';\nimport { map, catchError, retry } from 'rxjs/operators';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class TranslateLoaderService implements TranslateLoader {\n    private readonly http = inject(HttpClient);\n\n    private readonly prefix: string = 'i18n';\n    private readonly suffix: string = '.json';\n    private readonly providers: ComponentTranslationModel[] = [\n        new ComponentTranslationModel({\n            name: 'adf-core',\n            path: 'assets/adf-core'\n        })\n    ];\n    private queue: string[][] = [];\n    private defaultLang: string = 'en';\n\n    setDefaultLang(value: string) {\n        this.defaultLang = value || 'en';\n    }\n\n    registerProvider(name: string, path: string) {\n        const registered = this.providers.find((provider) => provider.name === name);\n        if (registered) {\n            registered.path = path;\n        } else {\n            this.providers.push(new ComponentTranslationModel({ name, path }));\n        }\n    }\n\n    providerRegistered(name: string): boolean {\n        return this.providers.some((x) => x.name === name);\n    }\n\n    fetchLanguageFile(lang: string, component: ComponentTranslationModel, fallbackUrl?: string): Observable<void> {\n        const translationUrl = fallbackUrl || `${component.path}/${this.prefix}/${lang}${this.suffix}?v=${Date.now()}`;\n\n        return this.http.get(translationUrl).pipe(\n            map((res: any) => {\n                component.json[lang] = res;\n            }),\n            retry(3),\n            catchError(() => {\n                if (!fallbackUrl && lang.includes('-')) {\n                    const [langId] = lang.split('-');\n\n                    if (langId && langId !== this.defaultLang) {\n                        const url = `${component.path}/${this.prefix}/${langId}${this.suffix}?v=${Date.now()}`;\n\n                        return this.fetchLanguageFile(lang, component, url);\n                    }\n                }\n                return throwError(() => new Error(`Failed to load ${translationUrl}`));\n            })\n        );\n    }\n\n    getComponentToFetch(lang: string): Array<Observable<any>> {\n        const observableBatch = [];\n        if (!this.queue[lang]) {\n            this.queue[lang] = [];\n        }\n        for (const component of this.providers) {\n            if (!this.isComponentInQueue(lang, component.name)) {\n                this.queue[lang].push(component.name);\n\n                observableBatch.push(this.fetchLanguageFile(lang, component));\n            }\n        }\n\n        return observableBatch;\n    }\n\n    init(lang: string) {\n        if (this.queue[lang] === undefined) {\n            this.queue[lang] = [];\n        }\n    }\n\n    isComponentInQueue(lang: string, name: string): boolean {\n        return (this.queue[lang] || []).some((x) => x === name);\n    }\n\n    getFullTranslationJSON(lang: string): any {\n        let result = {};\n\n        this.providers\n            .slice(0)\n            .sort((a, b) => {\n                if (a.name === 'app') {\n                    return 1;\n                }\n                if (b.name === 'app') {\n                    return -1;\n                }\n                return a.name.localeCompare(b.name);\n            })\n            .forEach((model) => {\n                if (model.json?.[lang]) {\n                    result = ObjectUtils.merge(result, model.json[lang]);\n                }\n            });\n\n        return result;\n    }\n\n    getTranslation(lang: string): Observable<any> {\n        let hasFailures = false;\n        const batch = [\n            ...this.getComponentToFetch(lang).map((observable) =>\n                observable.pipe(\n                    catchError((error) => {\n                        hasFailures = true;\n                        return of(error);\n                    })\n                )\n            )\n        ];\n\n        return new Observable((observer) => {\n            if (batch.length > 0) {\n                forkJoin(batch).subscribe({\n                    next: () => {\n                        const fullTranslation = this.getFullTranslationJSON(lang);\n                        if (fullTranslation) {\n                            observer.next(fullTranslation);\n                        }\n                        if (hasFailures) {\n                            observer.error('Failed to load some resources');\n                        } else {\n                            observer.complete();\n                        }\n                    },\n                    error: () => {\n                        observer.error('Failed to load some resources');\n                    }\n                });\n            } else {\n                const fullTranslation = this.getFullTranslationJSON(lang);\n                if (fullTranslation) {\n                    observer.next(fullTranslation);\n                    observer.complete();\n                }\n            }\n        });\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { EnvironmentProviders, inject, provideAppInitializer, Provider } from '@angular/core';\nimport { provideTranslateService, TranslateLoader, TranslateService } from '@ngx-translate/core';\nimport { TranslateLoaderService } from './translate-loader.service';\nimport { HttpClient } from '@angular/common/http';\nimport { provideTranslations } from './translation.service';\n\nexport interface ProvideI18NConfig {\n    /**\n     * The default language to use for translations.\n     * If not provided, it defaults to 'en'.\n     */\n    defaultLanguage?: string;\n    /**\n     * An array of assets to be used for i18n, where each asset is a tuple containing an identifier and a path.\n     * Example: [['adf-core', 'assets/adf-core'], ['my-translations', 'assets/my-translations']]\n     */\n    assets?: [string, string][];\n\n    /**\n     * An object of translations to be used for i18n for the default language.\n     * Example: { 'WELCOME_MESSAGE': 'Welcome!' }\n     */\n    translations?: Record<string, string>;\n}\n\n/**\n * Provides the i18n service.\n * This function is used to provide the i18n service in the application.\n * It is recommended to use this function in the top-level `AppModule` to ensure that the i18n service is available throughout the application.\n *\n * @param config - Configuration for the i18n service.\n * @param config.assets - An array of assets to be used for i18n, where each asset is a tuple containing an identifier and a path.\n * @returns An array of providers for the i18n service.\n */\nexport function provideI18N(config?: ProvideI18NConfig): (Provider | EnvironmentProviders)[] {\n    const defaultLanguage = config?.defaultLanguage || 'en';\n\n    const result: (Provider | EnvironmentProviders)[] = [\n        provideTranslateService({\n            loader: {\n                provide: TranslateLoader,\n                useExisting: TranslateLoaderService,\n                deps: [HttpClient]\n            },\n            defaultLanguage\n        })\n    ];\n\n    if (config?.assets) {\n        config.assets.forEach(([id, path]) => {\n            result.push(provideTranslations(id, path));\n        });\n    }\n\n    if (config?.translations) {\n        result.push(\n            provideAppInitializer(() => {\n                const translateService = inject(TranslateService);\n                translateService.setTranslation(defaultLanguage, config.translations, true);\n                return Promise.resolve();\n            })\n        );\n    }\n\n    return result;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './translation.service';\nexport * from './translate-loader.service';\nexport * from './provide-i18n';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport class LoginErrorEvent {\n    constructor(public err: any) {}\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport class LoginSubmitEvent {\n    private readonly _values: any;\n    private _defaultPrevented: boolean = false;\n\n    get values(): any {\n        return this._values;\n    }\n\n    get defaultPrevented() {\n        return this._defaultPrevented;\n    }\n\n    constructor(_values: any) {\n        this._values = _values;\n    }\n\n    preventDefault() {\n        this._defaultPrevented = true;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport class LoginSuccessEvent {\n    constructor(public token: any, public username: string, public password: string) {}\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { Component, DestroyRef, EventEmitter, inject, Input, OnInit, Output, TemplateRef, ViewEncapsulation } from '@angular/core';\nimport { AbstractControl, ReactiveFormsModule, UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { ActivatedRoute, Params, Router } from '@angular/router';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { AppConfigService, AppConfigValues } from '../../../app-config';\nimport { AuthenticationService, BasicAlfrescoAuthService } from '../../../auth';\nimport { OidcAuthenticationService } from '../../../auth/oidc/oidc-authentication.service';\nimport { UserPreferencesService } from '../../../common';\nimport { TranslationService } from '../../../translation';\n\nimport { LoginErrorEvent } from '../../models/login-error.event';\nimport { LoginSubmitEvent } from '../../models/login-submit.event';\nimport { LoginSuccessEvent } from '../../models/login-success.event';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { IconModule } from '../../../icon/icon.module';\n\n// eslint-disable-next-line no-shadow\nenum LoginSteps {\n    Landing = 0,\n    Checking = 1,\n    Welcome = 2\n}\n\ninterface ValidationMessage {\n    value: string;\n    params?: any;\n}\n\ninterface LoginFormValues {\n    username: string;\n    password: string;\n}\n\n@Component({\n    selector: 'adf-login',\n    templateUrl: './login.component.html',\n    styleUrls: ['./login.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    imports: [\n        CommonModule,\n        MatCardModule,\n        ReactiveFormsModule,\n        TranslatePipe,\n        IconModule,\n        MatFormFieldModule,\n        MatInputModule,\n        MatButtonModule,\n        MatProgressSpinnerModule,\n        MatCheckboxModule\n    ],\n    host: { class: 'adf-login' }\n})\nexport class LoginComponent implements OnInit {\n    private readonly _fb = inject(UntypedFormBuilder);\n    private readonly authService = inject(AuthenticationService);\n    private readonly basicAlfrescoAuthService = inject(BasicAlfrescoAuthService);\n    private readonly oidcAuthenticationService = inject(OidcAuthenticationService);\n    private readonly translateService = inject(TranslationService);\n    private readonly router = inject(Router);\n    private readonly appConfig = inject(AppConfigService);\n    private readonly userPreferences = inject(UserPreferencesService);\n    private readonly route = inject(ActivatedRoute);\n\n    isPasswordShow: boolean = false;\n\n    /**\n     * Should the `Remember me` checkbox be shown? When selected, this\n     * option will remember the logged-in user after the browser is closed\n     * to avoid logging in repeatedly.\n     */\n    @Input()\n    showRememberMe: boolean = true;\n\n    /** Should the extra actions (`Need Help`, `Register`, etc) be shown? */\n    @Input()\n    showLoginActions: boolean = true;\n\n    /** Sets the URL of the NEED HELP link in the footer. */\n    @Input()\n    needHelpLink: string = '';\n\n    /** Sets the URL of the REGISTER link in the footer. */\n    @Input()\n    registerLink: string = '';\n\n    /** Path to a custom logo image. */\n    @Input()\n    logoImageUrl: string = './assets/images/alfresco-logo.svg';\n\n    /** Path to a custom background image. */\n    @Input()\n    backgroundImageUrl: string = './assets/images/background.svg';\n\n    /** The copyright text below the login box. */\n    @Input()\n    copyrightText: string = '\\u00A9 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.';\n\n    /** Custom validation rules for the login form. */\n    @Input()\n    fieldsValidation: any;\n\n    /** Route to redirect to on successful login. */\n    @Input()\n    successRoute: string = null;\n\n    /** Emitted when the login is successful. */\n    @Output()\n    success = new EventEmitter<LoginSuccessEvent>();\n\n    /** Emitted when the login fails. */\n    @Output()\n    error = new EventEmitter<LoginErrorEvent>();\n\n    /** Emitted when the login form is submitted. */\n    @Output()\n    executeSubmit = new EventEmitter<LoginSubmitEvent>();\n\n    ssoLogin: boolean = false;\n\n    form: UntypedFormGroup;\n    isError: boolean = false;\n    errorMsg: string;\n    actualLoginStep: any = LoginSteps.Landing;\n    LoginSteps = LoginSteps;\n    rememberMe: boolean = true;\n    formError: { [id: string]: string };\n    minLength: number = 2;\n    footerTemplate: TemplateRef<any>;\n    headerTemplate: TemplateRef<any>;\n    data: any;\n\n    private _message: { [id: string]: { [id: string]: ValidationMessage } };\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    ngOnInit() {\n        this.initFormError();\n        this.initFormFieldsDefault();\n        this.initFormFieldsMessages();\n\n        this.successRoute = this.appConfig.get<string>('successRoute', this.successRoute);\n\n        if (this.authService.isLoggedIn()) {\n            this.router.navigate([this.successRoute]);\n        } else {\n            if (this.authService.isOauth()) {\n                const oauth = this.appConfig.oauth2;\n                if (oauth?.silentLogin) {\n                    this.redirectToSSOLogin();\n                } else if (oauth?.implicitFlow || oauth?.codeFlow) {\n                    this.ssoLogin = true;\n                }\n            }\n\n            this.route.queryParams.subscribe((params: Params) => {\n                const url = params['redirectUrl'];\n                const provider = this.appConfig.get<string>(AppConfigValues.PROVIDERS);\n\n                this.basicAlfrescoAuthService.setRedirect({ provider, url });\n            });\n        }\n\n        if (this.fieldsValidation) {\n            this.form = this._fb.group(this.fieldsValidation);\n        }\n\n        this.form.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((data) => this.onValueChanged(data));\n    }\n\n    submit() {\n        this.onSubmit(this.form.value);\n    }\n\n    redirectToSSOLogin() {\n        this.oidcAuthenticationService.ssoLogin();\n    }\n\n    /**\n     * Method called on submit form\n     *\n     * @param values login form values\n     */\n    onSubmit(values: LoginFormValues): void {\n        this.disableError();\n\n        const args = new LoginSubmitEvent({\n            controls: { username: this.form.controls.username }\n        });\n        this.executeSubmit.emit(args);\n\n        if (!args.defaultPrevented) {\n            this.actualLoginStep = LoginSteps.Checking;\n\n            this.performLogin(values);\n        }\n    }\n\n    implicitLogin() {\n        if (this.authService.isLoggedIn()) {\n            this.router.navigate([this.successRoute]);\n        }\n        this.oidcAuthenticationService.ssoLogin();\n    }\n\n    /**\n     * The method check the error in the form and push the error in the formError object\n     *\n     * @param data form data\n     */\n    onValueChanged(data: any) {\n        this.disableError();\n        for (const field in this.formError) {\n            if (field) {\n                this.formError[field] = '';\n                const hasError =\n                    (this.form.controls[field].errors && data[field] !== '') || (this.form.controls[field].dirty && !this.form.controls[field].valid);\n                if (hasError) {\n                    for (const key in this.form.controls[field].errors) {\n                        if (key) {\n                            const message = this._message[field][key];\n                            if (message?.value) {\n                                const translated = this.translateService.instant(message.value, message.params);\n                                this.formError[field] += translated;\n                            }\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    performLogin(values: { username: string; password: string }) {\n        this.authService.login(values.username, values.password, this.rememberMe).subscribe(\n            async (token: any) => {\n                const redirectUrl = this.basicAlfrescoAuthService.getRedirect();\n\n                this.actualLoginStep = LoginSteps.Welcome;\n                this.userPreferences.setStoragePrefix(values.username);\n                values.password = null;\n                this.success.emit(new LoginSuccessEvent(token, values.username, null));\n\n                if (redirectUrl) {\n                    this.basicAlfrescoAuthService.setRedirect(null);\n                    await this.router.navigateByUrl(redirectUrl);\n                } else if (this.successRoute) {\n                    await this.router.navigate([this.successRoute]);\n                }\n            },\n            (err: any) => {\n                this.actualLoginStep = LoginSteps.Landing;\n                this.displayErrorMessage(err);\n                this.isError = true;\n                this.error.emit(new LoginErrorEvent(err));\n            }\n        );\n    }\n\n    /**\n     * Check and display the right error message in the UI\n     *\n     * @param err error object\n     */\n    private displayErrorMessage(err: any): void {\n        if (err.error?.crossDomain && err.error.message.indexOf('Access-Control-Allow-Origin') !== -1) {\n            this.errorMsg = err.error.message;\n        } else if (err.status === 403 && err.message.indexOf('Invalid CSRF-token') !== -1) {\n            this.errorMsg = 'LOGIN.MESSAGES.LOGIN-ERROR-CSRF';\n        } else if (err.status === 403 && err.message.indexOf('The system is currently in read-only mode') !== -1) {\n            this.errorMsg = 'LOGIN.MESSAGES.LOGIN-ECM-LICENSE';\n        } else {\n            this.errorMsg = 'LOGIN.MESSAGES.LOGIN-ERROR-CREDENTIALS';\n        }\n    }\n\n    /**\n     * Add a custom form error for a field\n     *\n     * @param field field\n     * @param msg error message\n     */\n    public addCustomFormError(field: string, msg: string) {\n        this.formError[field] += msg;\n    }\n\n    /**\n     * Add a custom validation rule error for a field\n     *\n     * @param field field\n     * @param ruleId - i.e. required | minlength | maxlength\n     * @param msg message\n     * @param params parameters\n     */\n    addCustomValidationError(field: string, ruleId: string, msg: string, params?: any) {\n        if (field !== '__proto__' && field !== 'constructor' && field !== 'prototype') {\n            this._message[field][ruleId] = {\n                value: msg,\n                params\n            };\n        }\n    }\n\n    /**\n     * Display and hide the password value.\n     *\n     * @param event input event\n     */\n    toggleShowPassword(event: Event) {\n        event.stopPropagation();\n        this.isPasswordShow = !this.isPasswordShow;\n    }\n\n    /**\n     * The method return if a field is valid or not\n     *\n     * @param field form field to check\n     * @returns `true` if form field should display an error, otherwise `false`\n     */\n    isErrorStyle(field: AbstractControl): boolean {\n        return !field.valid && field.dirty && !field.pristine;\n    }\n\n    /**\n     * Trim username\n     *\n     * @param event event\n     */\n    trimUsername(event: any) {\n        event.target.value = event.target.value.trim();\n    }\n\n    /**\n     * Default formError values\n     */\n    private initFormError() {\n        this.formError = {\n            username: '',\n            password: ''\n        };\n    }\n\n    /**\n     * Init form fields messages\n     */\n    private initFormFieldsMessages() {\n        this._message = {\n            username: {\n                required: {\n                    value: 'LOGIN.MESSAGES.USERNAME-REQUIRED'\n                },\n                minlength: {\n                    value: 'LOGIN.MESSAGES.USERNAME-MIN',\n                    params: {\n                        minLength: this.minLength\n                    }\n                }\n            },\n            password: {\n                required: {\n                    value: 'LOGIN.MESSAGES.PASSWORD-REQUIRED'\n                }\n            }\n        };\n    }\n\n    private initFormFieldsDefault() {\n        this.form = this._fb.group({\n            username: ['', Validators.compose([Validators.required, Validators.minLength(this.minLength)])],\n            password: ['', Validators.required]\n        });\n    }\n\n    /**\n     * Disable the error flag\n     */\n    private disableError() {\n        this.isError = false;\n        this.initFormError();\n    }\n}\n","<div class=\"adf-login-content\" [style.background-image]=\"'url(' + backgroundImageUrl + ')'\">\n    <div class=\"adf-ie11FixerParent\">\n        <div class=\"adf-ie11FixerChild\">\n\n            <mat-card class=\"adf-login-card-wide\">\n                <form id=\"adf-login-form\"\n                      [formGroup]=\"form\"\n                      autocomplete=\"off\"\n                      (submit)=\"onSubmit(form.value)\">\n                    <mat-card-header class=\"adf-login-card-header-text\">\n                        <mat-card-title>\n                            <div class=\"adf-alfresco-logo\">\n                                <!--HEADER TEMPLATE-->\n                                <ng-template *ngIf=\"headerTemplate\"\n                                             ngFor\n                                             [ngForOf]=\"[data]\"\n                                             [ngForTemplate]=\"headerTemplate\" />\n                                <img *ngIf=\"!headerTemplate\"\n                                     id=\"adf-login-img-logo\"\n                                     class=\"adf-img-logo\"\n                                     [src]=\"logoImageUrl\"\n                                     alt=\"{{ 'LOGIN.LOGO' | translate }}\">\n                            </div>\n                        </mat-card-title>\n                    </mat-card-header>\n\n                    <mat-card-content class=\"adf-login-controls\">\n\n                        <!--ERRORS AREA-->\n                        <div class=\"adf-error-container\">\n                            <div *ngIf=\"isError\"\n                                 id=\"login-error\"\n                                 data-automation-id=\"login-error\"\n                                 class=\"adf-error  adf-error-message\">\n                                <mat-icon class=\"adf-error-icon\" adf-icon=\"warning\" />\n                                <span class=\"adf-login-error-message\">\n                                    {{ errorMsg | translate }}\n                                </span>\n                            </div>\n                        </div>\n\n                        <div *ngIf=\"!ssoLogin\">\n\n                            <!--USERNAME FIELD-->\n                            <div class=\"adf-login__field adf-login-container\"\n                                 [ngClass]=\"{'adf-is-invalid': isErrorStyle(form.controls.username)}\">\n                                <mat-form-field class=\"adf-full-width adf-login-form-field\"\n                                                floatPlaceholder=\"never\"\n                                                color=\"primary\">\n                                    <mat-label class=\"adf-login-form-input-label\">\n                                        {{'LOGIN.LABEL.USERNAME' | translate }}\n                                    </mat-label>\n                                    <input matInput\n                                           type=\"text\"\n                                           class=\"adf-login-input\"\n                                           formControlName=\"username\"\n                                           id=\"username\"\n                                           data-automation-id=\"username\"\n                                           autocapitalize=\"none\"\n                                           (blur)=\"trimUsername($event)\">\n                                </mat-form-field>\n                                <span *ngIf=\"formError['username']\"\n                                      class=\"adf-login-validation\"\n                                      for=\"username\">\n                                    <span id=\"username-error\"\n                                          class=\"adf-login-error\"\n                                          data-automation-id=\"username-error\">\n                                        {{ formError['username'] | translate }}\n                                    </span>\n                                </span>\n                            </div>\n\n                            <!--PASSWORD FIELD-->\n                            <div class=\"adf-login__field\">\n                                <mat-form-field class=\"adf-full-width adf-login-form-field\"\n                                                floatPlaceholder=\"never\"\n                                                color=\"primary\">\n                                    <mat-label class=\"adf-login-form-input-label\">\n                                        {{'LOGIN.LABEL.PASSWORD' | translate }}\n                                    </mat-label>\n                                    <input matInput\n                                           [type]=\"isPasswordShow ? 'text' : 'password'\"\n                                           formControlName=\"password\"\n                                           class=\"adf-login-input\"\n                                           id=\"password\"\n                                           data-automation-id=\"password\">\n                                    <button matSuffix\n                                            mat-icon-button\n                                            type=\"button\"\n                                            [attr.aria-label]=\"(isPasswordShow ? 'LOGIN.ARIA-LABEL.HIDE-PASSWORD' : 'LOGIN.ARIA-LABEL.SHOW-PASSWORD') | translate\"\n                                            (click)=\"toggleShowPassword($event)\"\n                                            (keyup.enter)=\"toggleShowPassword($event)\"\n                                            [attr.data-automation-id]=\"isPasswordShow ? 'hide_password' : 'show_password'\">\n                                        <mat-icon class=\"adf-login-form-password-icon adf-login-password-icon\" [adf-icon]=\"isPasswordShow ? 'visibility' : 'visibility_off'\" />\n                                    </button>\n                                </mat-form-field>\n                                <span class=\"adf-login-validation\"\n                                      for=\"password\"\n                                      *ngIf=\"formError['password']\">\n                                    <span id=\"password-required\"\n                                          class=\"adf-login-error\"\n                                          data-automation-id=\"password-required\">\n                                        {{ formError['password'] | translate }}\n                                    </span>\n                                </span>\n                            </div>\n\n                            <!--CUSTOM CONTENT-->\n                            <ng-content />\n\n                            <br>\n                            <button type=\"submit\"\n                                    id=\"login-button\"\n                                    class=\"adf-login-button\"\n                                    mat-raised-button\n                                    color=\"accent\"\n                                    [class.adf-isChecking]=\"actualLoginStep === LoginSteps.Checking\"\n                                    [class.adf-isWelcome]=\"actualLoginStep === LoginSteps.Welcome\"\n                                    data-automation-id=\"login-button\"\n                                    [disabled]=\"!form.valid\"\n                                    [attr.aria-label]=\"'LOGIN.BUTTON.LOGIN' | translate\">\n                                <span *ngIf=\"actualLoginStep === LoginSteps.Landing\"\n                                      class=\"adf-login-button-label\">\n                                    {{ 'LOGIN.BUTTON.LOGIN' | translate }}\n                                </span>\n                                <div *ngIf=\"actualLoginStep === LoginSteps.Checking\"\n                                     class=\"adf-interactive-login-label\">\n                                    <span class=\"adf-login-button-label\">\n                                        {{ 'LOGIN.BUTTON.CHECKING' | translate }}\n                                    </span>\n                                    <div class=\"adf-login-spinner-container\">\n                                        <mat-spinner id=\"checking-spinner\"\n                                                     class=\"adf-login-checking-spinner\"\n                                                     [strokeWidth]=\"4\"\n                                                     [diameter]=\"25\" />\n                                    </div>\n                                </div>\n                                <div *ngIf=\"actualLoginStep === LoginSteps.Welcome\"\n                                     class=\"adf-interactive-login-label\">\n                                    <span class=\"adf-login-button-label\">\n                                        {{ 'LOGIN.BUTTON.WELCOME' | translate }}\n                                    </span>\n                                    <mat-icon class=\"adf-welcome-icon\" adf-icon=\"done\" />\n                                </div>\n                            </button>\n                            <div *ngIf=\"showRememberMe\" class=\"adf-login__remember-me\">\n                                <mat-checkbox id=\"adf-login-remember\"\n                                              color=\"primary\"\n                                              class=\"adf-login-remember-me\"\n                                              [checked]=\"rememberMe\"\n                                              (change)=\"rememberMe = !rememberMe\">\n                                    <div class=\"adf-login-remember-me-label\">\n                                        {{ 'LOGIN.LABEL.REMEMBER' | translate }}\n                                    </div>\n                                </mat-checkbox>\n                            </div>\n                        </div>\n                        <div *ngIf=\"ssoLogin\">\n                            <button type=\"button\"\n                                    (click)=\"implicitLogin()\"\n                                    id=\"login-button-sso\"\n                                    [attr.aria-label]=\"'LOGIN.BUTTON.SSO' | translate\"\n                                    class=\"adf-login-button\"\n                                    mat-raised-button color=\"primary\"\n                                    data-automation-id=\"login-button-sso\">\n                                <span class=\"adf-login-button-label\">\n                                  {{ 'LOGIN.BUTTON.SSO' | translate }}\n                                </span>\n                            </button>\n                        </div>\n                    </mat-card-content>\n\n                    <mat-card-actions *ngIf=\"footerTemplate || showLoginActions\">\n\n                        <div class=\"adf-login-action-container\">\n                            <!--FOOTER TEMPLATE-->\n                            <ng-template *ngIf=\"footerTemplate\"\n                                         ngFor\n                                         [ngForOf]=\"[data]\"\n                                         [ngForTemplate]=\"footerTemplate\" />\n                            <div class=\"adf-login-action\" *ngIf=\"!footerTemplate && showLoginActions\">\n                                <div id=\"adf-login-action-left\" class=\"adf-login-action-left\">\n                                    <a href=\"{{ needHelpLink }}\">{{ 'LOGIN.ACTION.HELP' | translate }}</a>\n                                </div>\n                                <div id=\"adf-login-action-right\" class=\"adf-login-action-right\">\n                                    <a href=\"{{ registerLink }}\">{{ 'LOGIN.ACTION.REGISTER' | translate }}</a>\n                                </div>\n                            </div>\n                        </div>\n                    </mat-card-actions>\n                </form>\n            </mat-card>\n\n            <div class=\"adf-copyright\" data-automation-id=\"login-copyright\">\n                {{ copyrightText }}\n            </div>\n\n        </div>\n    </div>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AfterContentInit, ContentChild, Directive, TemplateRef, inject } from '@angular/core';\nimport { LoginComponent } from '../components/login/login.component';\n\n@Directive({\n    selector: 'adf-login-header'\n})\nexport class LoginHeaderDirective implements AfterContentInit {\n    private readonly alfrescoLoginComponent = inject(LoginComponent);\n\n    @ContentChild(TemplateRef)\n    template: any;\n\n    ngAfterContentInit() {\n        this.alfrescoLoginComponent.headerTemplate = this.template;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AfterContentInit, ContentChild, Directive, TemplateRef, inject } from '@angular/core';\nimport { LoginComponent } from '../components/login/login.component';\n\n@Directive({\n    selector: 'adf-login-footer'\n})\nexport class LoginFooterDirective implements AfterContentInit {\n    private readonly alfrescoLoginComponent = inject(LoginComponent);\n\n    @ContentChild(TemplateRef)\n    template: any;\n\n    ngAfterContentInit() {\n        this.alfrescoLoginComponent.footerTemplate = this.template;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, EventEmitter, Output, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { LoginFooterDirective } from '../../directives/login-footer.directive';\nimport { LoginHeaderDirective } from '../../directives/login-header.directive';\nimport { LoginSuccessEvent } from '../../models/login-success.event';\nimport { LoginComponent } from '../login/login.component';\n\n@Component({\n    selector: 'adf-login-dialog-panel',\n    templateUrl: './login-dialog-panel.component.html',\n    styleUrls: ['./login-dialog-panel.component.scss'],\n    imports: [LoginComponent, LoginHeaderDirective, LoginFooterDirective],\n    encapsulation: ViewEncapsulation.None\n})\nexport class LoginDialogPanelComponent {\n    /** Emitted when the login succeeds. */\n    @Output()\n    success = new EventEmitter<LoginSuccessEvent>();\n\n    @ViewChild('adfLogin', { static: true })\n    login: LoginComponent;\n\n    submitForm(): void {\n        this.login.submit();\n    }\n\n    onLoginSuccess(event: LoginSuccessEvent) {\n        this.success.emit(event);\n    }\n\n    isValid() {\n        return this.login?.form ? this.login.form.valid : false;\n    }\n}\n","<div>\n    <adf-login #adfLogin\n               class=\"adf-panel-login-dialog-component\"\n               [showRememberMe]=\"false\"\n               [showLoginActions]=\"false\"\n               [backgroundImageUrl]=\"''\"\n               (success)=\"onLoginSuccess($event)\">\n        <adf-login-header>\n            <ng-template />\n        </adf-login-header>\n        <adf-login-footer>\n            <ng-template />\n        </adf-login-footer>\n    </adf-login>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NgModule } from '@angular/core';\nimport { LoginDialogPanelComponent } from './components/login-dialog-panel/login-dialog-panel.component';\n\nimport { LoginComponent } from './components/login/login.component';\nimport { LoginFooterDirective } from './directives/login-footer.directive';\nimport { LoginHeaderDirective } from './directives/login-header.directive';\n\nexport const LOGIN_DIRECTIVES = [LoginComponent, LoginFooterDirective, LoginHeaderDirective, LoginDialogPanelComponent] as const;\n\n/** @deprecated use `...LOGIN_DIRECTIVES` or import the standalone directives directly */\n@NgModule({\n    imports: [...LOGIN_DIRECTIVES],\n    exports: [...LOGIN_DIRECTIVES]\n})\nexport class LoginModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './directives/login-header.directive';\nexport * from './directives/login-footer.directive';\n\nexport * from './components/login/login.component';\nexport * from './components/login-dialog-panel/login-dialog-panel.component';\n\nexport * from './models/login-error.event';\nexport * from './models/login-submit.event';\nexport * from './models/login-success.event';\n\nexport * from './login.module';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { LanguageServiceInterface } from './language.service.interface';\nimport { Injectable, inject } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { AppConfigService, AppConfigValues } from '../../app-config/app-config.service';\nimport { LanguageItem } from '../../common/services/language-item.interface';\nimport { UserPreferencesService } from '../../common/services/user-preferences.service';\nimport { DEFAULT_LANGUAGE_LIST } from '../../common/models/default-languages.model';\n\n@Injectable({ providedIn: 'root' })\nexport class LanguageService implements LanguageServiceInterface {\n    private readonly userPreferencesService = inject(UserPreferencesService);\n\n    private readonly languages = new BehaviorSubject<LanguageItem[]>(DEFAULT_LANGUAGE_LIST);\n\n    languages$ = this.languages.asObservable();\n\n    constructor() {\n        const appConfigService = inject(AppConfigService);\n\n        const customLanguages = appConfigService.get<Array<LanguageItem>>(AppConfigValues.APP_CONFIG_LANGUAGES_KEY);\n        this.setLanguages(customLanguages);\n    }\n\n    changeLanguage(language: LanguageItem) {\n        this.userPreferencesService.locale = language.key;\n        this.userPreferencesService.set('textOrientation', language.direction || 'ltr');\n        document.documentElement.setAttribute('lang', language.key);\n    }\n\n    setLanguages(items: LanguageItem[]) {\n        if (items?.length > 0) {\n            this.languages.next(items);\n        }\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, EventEmitter, Output, QueryList, ViewChildren, inject } from '@angular/core';\nimport { LanguageService } from './service/language.service';\nimport { Observable } from 'rxjs';\nimport { LanguageItem } from '../common/services/language-item.interface';\nimport { CommonModule } from '@angular/common';\nimport { MatMenuItem, MatMenuModule } from '@angular/material/menu';\n\n@Component({\n    selector: 'adf-language-menu',\n    imports: [CommonModule, MatMenuModule],\n    template: `\n        <button mat-menu-item *ngFor=\"let language of languages$ | async\" [attr.lang]=\"language.key\" (click)=\"changeLanguage(language)\">\n            {{ language.label }}\n        </button>\n    `\n})\nexport class LanguageMenuComponent {\n    private readonly languageService = inject(LanguageService);\n\n    /** Emitted when the language change */\n    @Output()\n    changedLanguage: EventEmitter<LanguageItem> = new EventEmitter<LanguageItem>();\n\n    @ViewChildren(MatMenuItem)\n    menuItems: QueryList<MatMenuItem>;\n\n    languages$: Observable<LanguageItem[]>;\n\n    constructor() {\n        const languageService = this.languageService;\n\n        this.languages$ = languageService.languages$;\n    }\n\n    changeLanguage(language: LanguageItem) {\n        this.changedLanguage.emit(language);\n        this.languageService.changeLanguage(language);\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AfterViewInit, Component, EventEmitter, Output, QueryList, ViewChild } from '@angular/core';\nimport { LanguageItem } from '../common/services/language-item.interface';\nimport { CommonModule } from '@angular/common';\nimport { MatMenu, MatMenuItem, MatMenuModule } from '@angular/material/menu';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { LanguageMenuComponent } from './language-menu.component';\nimport { IconModule } from '../icon/icon.module';\n\n@Component({\n    selector: 'adf-picker-button',\n    imports: [CommonModule, MatMenuModule, TranslatePipe, LanguageMenuComponent, IconModule],\n    template: `\n        <button mat-menu-item [matMenuTriggerFor]=\"langMenu\">\n            <mat-icon adf-icon=\"language\" />\n            {{ 'ADF.LANGUAGE' | translate }}\n        </button>\n        <mat-menu #langMenu=\"matMenu\">\n            <adf-language-menu (changedLanguage)=\"changedLanguage.emit($event)\" />\n        </mat-menu>\n    `\n})\nexport class LanguagePickerComponent implements AfterViewInit {\n    @Output()\n    public changedLanguage = new EventEmitter<LanguageItem>();\n\n    @ViewChild('langMenu')\n    menu: MatMenu;\n\n    @ViewChild(MatMenuItem)\n    menuItem: MatMenuItem;\n\n    @ViewChild(LanguageMenuComponent)\n    languageMenuComponent: LanguageMenuComponent;\n\n    ngAfterViewInit() {\n        const menuItems = this.languageMenuComponent.menuItems.filter((menuItem) => menuItem !== undefined);\n        const menuItemsQueryList = new QueryList<MatMenuItem>();\n        menuItemsQueryList.reset(menuItems);\n        // eslint-disable-next-line no-underscore-dangle\n        this.menu._allItems = menuItemsQueryList;\n        this.menu.ngAfterContentInit();\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NgModule } from '@angular/core';\nimport { LanguageMenuComponent } from './language-menu.component';\nimport { LanguagePickerComponent } from './language-picker.component';\n\nexport const LANGUAGE_MENU_DIRECTIVES = [LanguageMenuComponent, LanguagePickerComponent] as const;\n\n/** @deprecated use `...LANGUAGE_MENU_DIRECTIVES` or import components directly instead. */\n@NgModule({\n    imports: [...LANGUAGE_MENU_DIRECTIVES],\n    exports: [...LANGUAGE_MENU_DIRECTIVES]\n})\nexport class LanguageMenuModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './service/language.service';\n\nexport * from './language-menu.component';\nexport * from './language-menu.module';\nexport * from './language-picker.component';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, Directive, Input, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n    selector: 'adf-info-drawer-layout',\n    imports: [CommonModule],\n    templateUrl: './info-drawer-layout.component.html',\n    styleUrls: ['./info-drawer-layout.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    host: { class: 'adf-info-drawer-layout' }\n})\nexport class InfoDrawerLayoutComponent {\n    /** The visibility of the header. */\n    @Input()\n    showHeader: boolean = true;\n}\n\n/**\n * Directive selectors without adf- prefix will be deprecated on 3.0.0\n */\n@Directive({\n    selector: '[adf-info-drawer-title], [info-drawer-title]'\n})\nexport class InfoDrawerTitleDirective {}\n\n@Directive({\n    selector: '[adf-info-drawer-buttons], [info-drawer-buttons]'\n})\nexport class InfoDrawerButtonsDirective {}\n\n@Directive({\n    selector: '[adf-info-drawer-content], [info-drawer-content]'\n})\nexport class InfoDrawerContentDirective {}\n","<div *ngIf=\"showHeader\" class=\"adf-info-drawer-layout-header\">\n    <div class=\"adf-info-drawer-layout-header-title\">\n        <ng-content select=\"[info-drawer-node-icon]\" />\n        <ng-content select=\"[info-drawer-title]\" />\n    </div>\n    <div class=\"adf-info-drawer-layout-header-buttons\">\n        <ng-content select=\"[info-drawer-buttons]\" />\n    </div>\n</div>\n<div class=\"adf-info-drawer-layout-content\">\n    <ng-content select=\"[info-drawer-content]\" />\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n    Component,\n    ContentChildren,\n    EventEmitter,\n    HostListener,\n    Input,\n    Output,\n    QueryList,\n    TemplateRef,\n    ViewChild,\n    ViewEncapsulation\n} from '@angular/core';\nimport { MatTabChangeEvent, MatTabsModule } from '@angular/material/tabs';\nimport { CommonModule } from '@angular/common';\nimport {\n    InfoDrawerButtonsDirective,\n    InfoDrawerContentDirective,\n    InfoDrawerLayoutComponent,\n    InfoDrawerTitleDirective\n} from './info-drawer-layout.component';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { IconModule } from '../icon/icon.module';\n\n@Component({\n    selector: 'adf-info-drawer-tab',\n    template: '<ng-template><ng-content /></ng-template>',\n    encapsulation: ViewEncapsulation.None\n})\nexport class InfoDrawerTabComponent {\n    /** The title of the tab (string or translation key). */\n    @Input()\n    label: string = '';\n\n    /** Icon to render for the tab. */\n    @Input()\n    icon: string = null;\n\n    @ViewChild(TemplateRef, { static: true })\n    content: TemplateRef<any>;\n}\n\n@Component({\n    selector: 'adf-info-drawer',\n    imports: [\n        CommonModule,\n        InfoDrawerLayoutComponent,\n        TranslatePipe,\n        MatTabsModule,\n        IconModule,\n        InfoDrawerButtonsDirective,\n        InfoDrawerTitleDirective,\n        InfoDrawerContentDirective,\n        InfoDrawerTabComponent\n    ],\n    templateUrl: './info-drawer.component.html',\n    styleUrls: ['./info-drawer.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    host: { class: 'adf-info-drawer' }\n})\nexport class InfoDrawerComponent {\n    /** The title of the info drawer (string or translation key). */\n    @Input()\n    title: string | null = null;\n\n    @Input()\n    icon: string | null = null;\n\n    /** The selected index tab. */\n    @Input()\n    selectedIndex: number = 0;\n\n    /** The visibility of the header. */\n    @Input()\n    showHeader: boolean = true;\n\n    /** Emitted when the currently active tab changes. */\n    @Output()\n    currentTab: EventEmitter<number> = new EventEmitter<number>();\n\n    @ContentChildren(InfoDrawerTabComponent)\n    contentBlocks: QueryList<InfoDrawerTabComponent>;\n\n    @HostListener('keydown', ['$event'])\n    onKeyDown(event: KeyboardEvent): void {\n        event.stopPropagation();\n    }\n\n    @HostListener('keyup', ['$event'])\n    onKeyUp(event: KeyboardEvent): void {\n        event.stopPropagation();\n    }\n\n    showTabLayout(): boolean {\n        return this.contentBlocks.length > 0;\n    }\n\n    onTabChange(event: MatTabChangeEvent) {\n        this.currentTab.emit(event.index);\n    }\n}\n","<adf-info-drawer-layout [showHeader]=\"showHeader\">\n    <img *ngIf=\"icon\" class=\"adf-info-drawer-icon\" alt=\"{{ 'INFO_DRAWER.ICON' | translate }}\" src=\"{{ icon }}\" info-drawer-node-icon aria-hidden=\"true\">\n    <div *ngIf=\"title\" role=\"heading\" aria-level=\"1\" title=\"{{ title | translate }}\" info-drawer-title>{{ title | translate }}</div>\n\n    <ng-content *ngIf=\"!title\" info-drawer-title select=\"[info-drawer-title]\" />\n    <ng-content info-drawer-buttons select=\"[info-drawer-buttons]\" />\n    <ng-container info-drawer-content *ngIf=\"showTabLayout(); then tabLayout else singleLayout\" />\n\n    <ng-template #tabLayout>\n        <mat-tab-group [(selectedIndex)]=\"selectedIndex\" class=\"adf-info-drawer-tabs\" (selectedTabChange)=\"onTabChange($event)\" [animationDuration]=\"0\">\n            <mat-tab *ngFor=\"let contentBlock of contentBlocks\"\n                #tab\n                [labelClass]=\"[\n                    'adf-info-drawer-tab',\n                    tab.isActive ? 'adf-info-drawer-tab--active' : '',\n                ]\"\n                [label]=\"contentBlock.label | translate\"\n                class=\"adf-info-drawer-tab\">\n\n                <ng-template mat-tab-label>\n                    <mat-icon *ngIf=\"contentBlock.icon\" [adf-icon]=\"contentBlock.icon\" />\n                    <span *ngIf=\"contentBlock.label\">{{ contentBlock.label | translate }}</span>\n                </ng-template>\n\n                <ng-container *ngTemplateOutlet=\"contentBlock.content\" />\n            </mat-tab>\n        </mat-tab-group>\n    </ng-template>\n\n    <ng-template #singleLayout>\n        <ng-content select=\"[info-drawer-content]\" />\n    </ng-template>\n</adf-info-drawer-layout>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NgModule } from '@angular/core';\nimport {\n    InfoDrawerLayoutComponent,\n    InfoDrawerTitleDirective,\n    InfoDrawerButtonsDirective,\n    InfoDrawerContentDirective\n} from './info-drawer-layout.component';\nimport { InfoDrawerComponent, InfoDrawerTabComponent } from './info-drawer.component';\n\nexport const INFO_DRAWER_DIRECTIVES = [\n    InfoDrawerLayoutComponent,\n    InfoDrawerTabComponent,\n    InfoDrawerComponent,\n    InfoDrawerTitleDirective,\n    InfoDrawerButtonsDirective,\n    InfoDrawerContentDirective\n] as const;\n\n/** @deprecated use `...INFO_DRAWER_DIRECTIVES` or import standalone directives directly */\n@NgModule({\n    imports: [...INFO_DRAWER_DIRECTIVES],\n    exports: [...INFO_DRAWER_DIRECTIVES]\n})\nexport class InfoDrawerModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './info-drawer-layout.component';\nexport * from './info-drawer.component';\n\nexport * from './info-drawer.module';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecimalPipe } from '@angular/common';\nimport { Pipe, PipeTransform, inject } from '@angular/core';\nimport { AppConfigService } from '../app-config/app-config.service';\nimport { UserPreferencesService } from '../common/services/user-preferences.service';\n\nexport interface DecimalNumberModel {\n    minIntegerDigits?: number;\n    minFractionDigits?: number;\n    maxFractionDigits?: number;\n}\n\n@Pipe({\n    name: 'adfDecimalNumber',\n    pure: false\n})\nexport class DecimalNumberPipe implements PipeTransform {\n    userPreferenceService? = inject(UserPreferencesService);\n    appConfig? = inject(AppConfigService);\n\n    static DEFAULT_LOCALE = 'en-US';\n    static DEFAULT_MIN_INTEGER_DIGITS = 1;\n    static DEFAULT_MIN_FRACTION_DIGITS = 0;\n    static DEFAULT_MAX_FRACTION_DIGITS = 2;\n\n    defaultMinIntegerDigits: number = DecimalNumberPipe.DEFAULT_MIN_INTEGER_DIGITS;\n    defaultMinFractionDigits: number = DecimalNumberPipe.DEFAULT_MIN_FRACTION_DIGITS;\n    defaultMaxFractionDigits: number = DecimalNumberPipe.DEFAULT_MAX_FRACTION_DIGITS;\n\n    constructor() {\n        if (this.appConfig) {\n            this.defaultMinIntegerDigits = this.appConfig.get<number>('decimalValues.minIntegerDigits', DecimalNumberPipe.DEFAULT_MIN_INTEGER_DIGITS);\n            this.defaultMinFractionDigits = this.appConfig.get<number>(\n                'decimalValues.minFractionDigits',\n                DecimalNumberPipe.DEFAULT_MIN_FRACTION_DIGITS\n            );\n            this.defaultMaxFractionDigits = this.appConfig.get<number>(\n                'decimalValues.maxFractionDigits',\n                DecimalNumberPipe.DEFAULT_MAX_FRACTION_DIGITS\n            );\n        }\n    }\n\n    transform(value: any, digitsInfo?: DecimalNumberModel, locale?: string): any {\n        const actualMinIntegerDigits: number = digitsInfo?.minIntegerDigits ? digitsInfo.minIntegerDigits : this.defaultMinIntegerDigits;\n        const actualMinFractionDigits: number = digitsInfo?.minFractionDigits ? digitsInfo.minFractionDigits : this.defaultMinFractionDigits;\n        const actualMaxFractionDigits: number = digitsInfo?.maxFractionDigits ? digitsInfo.maxFractionDigits : this.defaultMaxFractionDigits;\n\n        const actualDigitsInfo = `${actualMinIntegerDigits}.${actualMinFractionDigits}-${actualMaxFractionDigits}`;\n        // Use signal directly - no subscription needed!\n        const defaultLocale = this.userPreferenceService?.localeSignal() || DecimalNumberPipe.DEFAULT_LOCALE;\n        const actualLocale = locale || defaultLocale;\n\n        const decimalPipe: DecimalPipe = new DecimalPipe(actualLocale);\n\n        if (value instanceof Array) {\n            return value.map((val) => decimalPipe.transform(val, actualDigitsInfo));\n        } else {\n            return decimalPipe.transform(value, actualDigitsInfo);\n        }\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Pipe, PipeTransform, inject } from '@angular/core';\nimport { TranslationService } from '../translation/translation.service';\n\n@Pipe({\n    name: 'adfFileSize',\n    pure: false\n})\nexport class FileSizePipe implements PipeTransform {\n    private readonly translation = inject(TranslationService);\n\n    transform(paramByte: number | string | null, decimals: number = 2): string {\n        if (paramByte == null) {\n            return '';\n        }\n\n        const bytes = typeof paramByte === 'number' ? paramByte : parseInt(paramByte as string, 10);\n        if (isNaN(bytes)) {\n            return '';\n        }\n\n        if (bytes === 0) {\n            return '0 ' + this.translation.instant('CORE.FILE_SIZE.BYTES');\n        }\n\n        const k = 1024;\n        const dm = decimals || 2;\n        const sizes = ['BYTES', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n        const i = Math.floor(Math.log(bytes) / Math.log(k));\n        const i18nSize = this.translation.instant(`CORE.FILE_SIZE.${sizes[i]}`);\n\n        return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + i18nSize;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { PipeTransform, Pipe } from '@angular/core';\n\n@Pipe({\n    name: 'fileType',\n    pure: true\n})\nexport class FileTypePipe implements PipeTransform {\n    transform(value: string) {\n        if (value == null) {\n            return '';\n        } else {\n            const fileInfo = value.substring(value.lastIndexOf('/') + 1).replace(/\\.[a-z]+/, '');\n            return fileInfo.split('_').pop();\n        }\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n    name: 'formatSpace'\n})\nexport class FormatSpacePipe implements PipeTransform {\n    transform(inputValue: string, replaceChar: string = '_', lowerCase: boolean = true): string {\n        let transformedString = '';\n        if (inputValue) {\n            transformedString = lowerCase\n                ? inputValue.trim().split(' ').join(replaceChar).toLocaleLowerCase()\n                : inputValue.trim().split(' ').join(replaceChar);\n        }\n        return transformedString;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { UserLike } from './user-like.interface';\n\n@Pipe({\n    name: 'fullName'\n})\nexport class FullNamePipe implements PipeTransform {\n    transform(user: UserLike, emailDisplayed?: boolean): string {\n        const fullName = this.buildFullName(user) ? this.buildFullName(user) : this.buildFromUsernameOrEmail(user);\n        return `${fullName} ${emailDisplayed ? '<' + user?.email + '>' : ''}`.trim();\n    }\n\n    buildFullName(user: UserLike): string {\n        const fullName: string[] = [];\n\n        fullName.push(user?.firstName);\n        fullName.push(user?.lastName);\n\n        return fullName.join(' ').trim();\n    }\n\n    buildFromUsernameOrEmail(user: UserLike): string {\n        return (user?.username || user?.email) ?? '';\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DatePipe } from '@angular/common';\nimport { Pipe, PipeTransform, inject } from '@angular/core';\nimport { AppConfigService } from '../app-config/app-config.service';\nimport { UserPreferencesService } from '../common/services/user-preferences.service';\n\n@Pipe({\n    standalone: true,\n    name: 'adfLocalizedDate',\n    pure: false\n})\nexport class LocalizedDatePipe implements PipeTransform {\n    userPreferenceService? = inject(UserPreferencesService);\n    appConfig? = inject(AppConfigService);\n\n    static DEFAULT_LOCALE = 'en-US';\n    static DEFAULT_DATE_FORMAT = 'mediumDate';\n\n    defaultFormat: string = LocalizedDatePipe.DEFAULT_DATE_FORMAT;\n\n    constructor() {\n        if (this.appConfig) {\n            this.defaultFormat = this.appConfig.get<string>('dateValues.defaultDateFormat', LocalizedDatePipe.DEFAULT_DATE_FORMAT);\n        }\n    }\n\n    transform(value: Date | string | number, format?: string, locale?: string, timezone?: string): string {\n        const actualFormat = format || this.defaultFormat;\n        // Use signal directly - no subscription needed!\n        const defaultLocale = this.userPreferenceService?.localeSignal() || LocalizedDatePipe.DEFAULT_LOCALE;\n        const actualLocale = locale || defaultLocale;\n        const datePipe = timezone ? new DatePipe(actualLocale, timezone) : new DatePipe(actualLocale);\n        return datePipe.transform(value, actualFormat);\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Pipe, PipeTransform, inject } from '@angular/core';\nimport { HighlightTransformService, HighlightTransformResult } from '../common/services/highlight-transform.service';\n\n@Pipe({\n    name: 'highlight'\n})\nexport class HighlightPipe implements PipeTransform {\n    private readonly highlightTransformService = inject(HighlightTransformService);\n\n    transform(text: string, search: string): string {\n        const highlightTransformResult: HighlightTransformResult = this.highlightTransformService.highlight(text, search);\n        return highlightTransformResult.text;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Pipe, PipeTransform, inject } from '@angular/core';\nimport { AppConfigService } from '../app-config/app-config.service';\nimport { UserPreferencesService } from '../common/services/user-preferences.service';\nimport { DatePipe } from '@angular/common';\nimport { differenceInDays, formatDistance } from 'date-fns';\nimport { DateFnsUtils } from '../common/utils/date-fns-utils';\n\n@Pipe({\n    standalone: true,\n    name: 'adfTimeAgo',\n    pure: false\n})\nexport class TimeAgoPipe implements PipeTransform {\n    userPreferenceService = inject(UserPreferencesService);\n    appConfig = inject(AppConfigService);\n\n    static DEFAULT_LOCALE = 'en-US';\n    static DEFAULT_DATE_TIME_FORMAT = 'dd/MM/yyyy HH:mm';\n\n    defaultDateTimeFormat: string;\n\n    constructor() {\n        this.defaultDateTimeFormat = this.appConfig.get<string>('dateValues.defaultDateTimeFormat', TimeAgoPipe.DEFAULT_DATE_TIME_FORMAT);\n    }\n\n    transform(value: Date, locale?: string) {\n        if (value !== null && value !== undefined) {\n            // Use signal directly - no subscription needed!\n            const defaultLocale = this.userPreferenceService.localeSignal() || TimeAgoPipe.DEFAULT_LOCALE;\n            const actualLocale = locale || defaultLocale;\n            const diff = differenceInDays(new Date(), new Date(value));\n            if (diff > 7) {\n                const datePipe: DatePipe = new DatePipe(actualLocale);\n                return datePipe.transform(value, this.defaultDateTimeFormat);\n            } else {\n                const dateFnsLocale = DateFnsUtils.getLocaleFromString(actualLocale);\n                return formatDistance(new Date(value), new Date(), { addSuffix: true, locale: dateFnsLocale });\n            }\n        }\n        return '';\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Pipe, PipeTransform, inject } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { UserLike } from './user-like.interface';\n\n@Pipe({\n    name: 'usernameInitials'\n})\nexport class InitialUsernamePipe implements PipeTransform {\n    private readonly sanitized = inject(DomSanitizer);\n\n    transform(user: UserLike & { displayName?: string }, className: string = '', delimiter: string = ''): SafeHtml {\n        let safeHtml: SafeHtml = '';\n        if (user) {\n            const initialResult = this.getInitialUserName(user.firstName || user.displayName || user.username, user.lastName, delimiter);\n            const div = document.createElement('div');\n            div.textContent = initialResult;\n            div.dataset.automationId = 'user-initials-image';\n            div.ariaLabel = user.firstName && user.lastName ? `${user.firstName} ${user.lastName}` : user.displayName || user.username || '';\n            div.className = className;\n\n            safeHtml = this.sanitized.bypassSecurityTrustHtml(div.outerHTML);\n        }\n        return safeHtml;\n    }\n\n    getInitialUserName(firstName: string, lastName: string, delimiter: string): string {\n        firstName = firstName ? firstName[0] : '';\n        lastName = lastName ? lastName[0] : '';\n        return firstName + delimiter + lastName;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { addMinutes, fromUnixTime, parse } from 'date-fns';\n\n@Pipe({\n    name: 'adfDateTime'\n})\nexport class DateTimePipe implements PipeTransform {\n    transform(value: string | Date | number, dateFormat: string): Date {\n        let parsedValue: Date;\n\n        if (typeof value === 'string') {\n            parsedValue = parse(value, dateFormat, new Date());\n        } else if (value instanceof Date) {\n            parsedValue = value;\n        } else {\n            parsedValue = fromUnixTime(value);\n        }\n\n        const offsetMinutes = parsedValue.getTimezoneOffset();\n        const adjustedDate = addMinutes(parsedValue, offsetMinutes);\n        return adjustedDate;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n    standalone: true,\n    name: 'truncate'\n})\nexport class TruncatePipe implements PipeTransform {\n    transform(value: string, maxTextLength = 250, ellipsis = '...') {\n        return value?.length > maxTextLength ? value.slice(0, maxTextLength) + ellipsis : value;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { FileSizePipe } from './file-size.pipe';\nimport { HighlightPipe } from './text-highlight.pipe';\nimport { TimeAgoPipe } from './time-ago.pipe';\nimport { InitialUsernamePipe } from './user-initial.pipe';\nimport { FullNamePipe } from './full-name.pipe';\nimport { FormatSpacePipe } from './format-space.pipe';\nimport { FileTypePipe } from './file-type.pipe';\nimport { LocalizedDatePipe } from './localized-date.pipe';\nimport { DecimalNumberPipe } from './decimal-number.pipe';\nimport { DateTimePipe } from './date-time.pipe';\nimport { TruncatePipe } from './truncate.pipe';\n\nexport const CORE_PIPES = [\n    LocalizedDatePipe,\n    TimeAgoPipe,\n    FileSizePipe,\n    HighlightPipe,\n    FullNamePipe,\n    FormatSpacePipe,\n    FileTypePipe,\n    DecimalNumberPipe,\n    DateTimePipe,\n    InitialUsernamePipe,\n    TruncatePipe\n] as const;\n\n/**\n * @deprecated this Module is deprecated and should no longer be used.\n * Consider importing CORE_PIPES or individual pipes directly.\n */\n@NgModule({\n    imports: [...CORE_PIPES],\n    exports: [...CORE_PIPES]\n})\nexport class PipeModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './decimal-number.pipe';\nexport * from './file-size.pipe';\nexport * from './file-type.pipe';\nexport * from './format-space.pipe';\nexport * from './full-name.pipe';\nexport * from './localized-date.pipe';\nexport * from './text-highlight.pipe';\nexport * from './time-ago.pipe';\nexport * from './user-initial.pipe';\nexport * from './pipe.module';\nexport * from './date-time.pipe';\nexport * from './truncate.pipe';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, Input, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { MatMenuModule, MatMenuTrigger, MenuPositionX, MenuPositionY } from '@angular/material/menu';\nimport { IdentityUserModel } from '../auth/models/identity-user.model';\nimport { CommonModule } from '@angular/common';\nimport { FullNamePipe, InitialUsernamePipe } from '../pipes';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n@Component({\n    selector: 'adf-identity-user-info',\n    imports: [CommonModule, FullNamePipe, MatMenuModule, InitialUsernamePipe, MatButtonModule, MatCardModule, TranslatePipe],\n    templateUrl: './identity-user-info.component.html',\n    styleUrls: ['./identity-user-info.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class IdentityUserInfoComponent {\n    @ViewChild(MatMenuTrigger) trigger: MatMenuTrigger;\n\n    /** Is the user logged in */\n    @Input()\n    isLoggedIn: boolean;\n\n    /** User */\n    @Input()\n    identityUser: IdentityUserModel;\n\n    /** Custom path for the background banner image for APS users. */\n    @Input()\n    bpmBackgroundImage: string = './assets/images/bpm-background.png';\n\n    /** Custom choice for opening the menu at the bottom. Can be `before` or `after`. */\n    @Input()\n    menuPositionX: MenuPositionX = 'after';\n\n    /** Custom choice for opening the menu at the bottom. Can be `above` or `below`. */\n    @Input()\n    menuPositionY: MenuPositionY = 'below';\n\n    /** Shows/hides the username next to the user info button. */\n    @Input()\n    showName: boolean = true;\n\n    /**\n     * When the username is shown, this defines its position relative to the user info button.\n     * Can be `right` or `left`.\n     */\n    @Input()\n    namePosition: 'right' | 'left' = 'right';\n\n    onKeyPress(event: KeyboardEvent) {\n        this.closeUserModal(event);\n    }\n\n    private closeUserModal($event: KeyboardEvent) {\n        if ($event.keyCode === 27) {\n            this.trigger.closeMenu();\n        }\n    }\n\n    stopClosing(event: Event) {\n        event.stopPropagation();\n    }\n\n    get showOnRight(): boolean {\n        return this.namePosition === 'right';\n    }\n\n    get canShow(): boolean {\n        return this.isLoggedIn && !!this.identityUser;\n    }\n}\n","<div\n    *ngIf=\"isLoggedIn\"\n    id=\"userinfo_container\"\n    [class.adf-userinfo-name-right]=\"showOnRight\"\n    (keyup)=\"onKeyPress($event)\"\n    tabindex=\"0\"\n    role=\"button\"\n    class=\"adf-userinfo-container\"\n>\n    <span *ngIf=\"showName\" id=\"adf-userinfo-identity-name-display\" class=\"adf-userinfo-name\">\n        {{ identityUser | fullName }}\n    </span>\n    <button mat-button [matMenuTriggerFor]=\"menu\" class=\"adf-userinfo-menu_button adf-identity-userinfo-button\" data-automation-id=\"adf-user-profile\">\n        <div class=\"adf-userinfo-button-profile\" id=\"user-profile\">\n            <div id=\"identity-user-image\">\n                <div [innerHTML]=\"identityUser | usernameInitials : 'adf-userinfo-pic'\"></div>\n            </div>\n        </div>\n    </button>\n    <mat-menu\n        #menu=\"matMenu\"\n        id=\"user-profile-lists\"\n        [xPosition]=\"menuPositionX\"\n        [yPosition]=\"menuPositionY\"\n        [overlapTrigger]=\"false\"\n        class=\"adf-userinfo-menu adf-identity-userinfo-menu\"\n    >\n        <mat-card class=\"adf-userinfo-card adf-identity-userinfo-card\">\n            <mat-card-header class=\"adf-userinfo-card-header\" [style.background-image]=\"'url(' + bpmBackgroundImage + ')'\">\n                <div class=\"mat-headline-6\" id=\"identity-username\">{{ identityUser | fullName }}</div>\n            </mat-card-header>\n            <mat-card-content>\n                <div class=\"adf-userinfo-supporting-text\">\n                    <h2 id=\"identity-full-name\" class=\"adf-userinfo__detail-title\">{{ identityUser | fullName }}</h2>\n                    <span id=\"identity-email\"> {{ identityUser.email }} </span>\n                    <a href=\"#/profile\"> {{ 'USER_PROFILE.LABELS.MY_PROFILE' | translate }}</a>\n                </div>\n            </mat-card-content>\n        </mat-card>\n    </mat-menu>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NgModule } from '@angular/core';\nimport { IdentityUserInfoComponent } from './identity-user-info.component';\n\n/** @deprecated import `IdentityUserInfoComponent` directly */\n@NgModule({\n    imports: [IdentityUserInfoComponent],\n    exports: [IdentityUserInfoComponent]\n})\nexport class IdentityUserInfoModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './identity-user-info.component';\n\nexport * from './identity-user-info.module';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector, @angular-eslint/no-input-rename */\n\nimport { Component, ContentChild, Input, OnInit, TemplateRef } from '@angular/core';\nimport { DataColumnType } from '@alfresco/adf-extensions';\nimport { CurrencyConfig, DateConfig, DecimalConfig } from '../data/data-column.model';\n\n@Component({\n    selector: 'data-column',\n    template: ''\n})\nexport class DataColumnComponent implements OnInit {\n    /** Id of the Column */\n    @Input()\n    id: string = '';\n\n    /**\n     * Data source key. Can be either a column/property key like `title`\n     * or a property path like `createdBy.name`.\n     */\n    @Input({ required: true })\n    key: string;\n\n    /** You can specify any custom data which can be used by any specific feature */\n    @Input()\n    customData: any;\n\n    /**\n     * Value type for the column. Possible settings are defined via DataColumnType.\n     * Example types: `text`, `date`, `image`, `icon`, `boolean`.\n     */\n    @Input()\n    type: DataColumnType = 'text';\n\n    /** Value format (if supported by the parent component), for example format of the date. */\n    @Input()\n    format: string;\n\n    /** Toggles ability to sort by this column, for example by clicking the column header. */\n    @Input()\n    sortable: boolean = true;\n\n    /** Enable drag and drop for header column */\n    @Input()\n    draggable: boolean = false;\n\n    /** Enable resize for column */\n    @Input()\n    resizable = true;\n\n    /** Hide column */\n    @Input()\n    isHidden: boolean = false;\n\n    /**\n     * Display title of the column, typically used for column headers. You can use the\n     * i18n resource key to get it translated automatically.\n     */\n    @Input()\n    title: string = '';\n\n    @Input()\n    subtitle: string = '';\n\n    @ContentChild(TemplateRef)\n    template: any;\n\n    /** Custom tooltip formatter function. */\n    @Input()\n    formatTooltip: (...args) => string;\n\n    /** Title to be used for screen readers. */\n    @Input('sr-title')\n    srTitle: string;\n\n    /** Additional CSS class to be applied to column (header and cells). */\n    @Input('class')\n    cssClass: string;\n\n    /** Enables/disables a Clipboard directive to allow copying of cell contents. */\n    @Input()\n    copyContent: boolean;\n\n    /**  Toggles the editing support of the column data. */\n    @Input()\n    editable: boolean = false;\n\n    /**  Enable or disable cell focus */\n    @Input()\n    focus: boolean = true;\n\n    /** When using server side sorting the column used by the api call where the sorting will be performed */\n    @Input()\n    sortingKey: string;\n\n    /** Sets position of column. */\n    @Input()\n    order?: number;\n\n    /** Allows you to customize the formatting and display of currency values within the component. */\n    @Input()\n    currencyConfig?: CurrencyConfig;\n\n    /** The decimalConfig input allows you to customize the formatting and display of decimal values within the component. */\n    @Input()\n    decimalConfig?: DecimalConfig;\n\n    /** The decimalConfig input allows you to customize the formatting and display of decimal values within the component. */\n    @Input()\n    dateConfig?: DateConfig;\n\n    /** Data column header template */\n    header?: TemplateRef<any>;\n\n    ngOnInit() {\n        if (!this.srTitle && this.key === '$thumbnail') {\n            this.srTitle = 'ADF-DOCUMENT-LIST.LAYOUT.THUMBNAIL';\n        }\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { Component, ContentChildren, QueryList } from '@angular/core';\nimport { DataColumnComponent } from './data-column.component';\n\n@Component({\n    selector: 'data-columns',\n    template: ''\n})\nexport class DataColumnListComponent {\n    @ContentChildren(DataColumnComponent) columns: QueryList<DataColumnComponent>;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector, @angular-eslint/no-input-rename */\n\nimport { AfterContentInit, Component, ContentChild, TemplateRef, inject } from '@angular/core';\nimport { DataColumnComponent } from './data-column.component';\n\n@Component({\n    selector: 'adf-data-column-header',\n    template: ''\n})\nexport class DateColumnHeaderComponent implements AfterContentInit {\n    private readonly columnComponent = inject(DataColumnComponent);\n\n    @ContentChild(TemplateRef)\n    public header: TemplateRef<any>;\n\n    ngAfterContentInit() {\n        if (this.columnComponent) {\n            this.columnComponent.header = this.header;\n        }\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './data-column-list.component';\nexport * from './data-column.component';\nexport * from './data-column-header.component';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { DataRowUpdateModel } from '../data/data-row-update.model';\n\n@Injectable()\nexport class DataTableService {\n\n    /**\n     * Publish/subscribe to events related to row updates.\n     */\n    rowUpdate = new Subject<DataRowUpdateModel>();\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const NOTIFICATION_TYPE = {\n    INFO: 'info',\n    WARN: 'warning',\n    ERROR: 'error',\n    RECURSIVE: 'recursive'\n} as const;\n\nexport type NOTIFICATION_TYPE = (typeof NOTIFICATION_TYPE)[keyof typeof NOTIFICATION_TYPE];\n\nexport interface NotificationInitiator {\n    key: string | symbol;\n    displayName: string;\n    firstName?: string;\n    lastName?: string;\n    extra?: any;\n}\n\nexport interface NotificationModel {\n    type: NOTIFICATION_TYPE;\n    initiator: NotificationInitiator;\n    datetime: Date;\n    messages: string[];\n    icon?: string;\n    clickCallBack?: any;\n    args?: any;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NotificationInitiator, NOTIFICATION_TYPE, NotificationModel } from '../models/notification.model';\n\nexport const rootInitiator: NotificationInitiator = {\n    key: '*',\n    displayName: 'SYSTEM'\n};\n\nexport const info = (messages: string | string[], initiator: NotificationInitiator = rootInitiator): NotificationModel => ({\n    type: NOTIFICATION_TYPE.INFO,\n    icon: 'info',\n    datetime: new Date(),\n    initiator,\n    messages: [].concat(messages)\n});\n\nexport const warning = (messages: string | string[], initiator: NotificationInitiator = rootInitiator): NotificationModel => ({\n    type: NOTIFICATION_TYPE.WARN,\n    icon: 'warning',\n    datetime: new Date(),\n    initiator,\n    messages: [].concat(messages)\n});\n\nexport const error = (messages: string | string[], initiator: NotificationInitiator = rootInitiator): NotificationModel => ({\n    type: NOTIFICATION_TYPE.ERROR,\n    icon: 'error',\n    datetime: new Date(),\n    initiator,\n    messages: [].concat(messages)\n});\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, inject } from '@angular/core';\nimport { MAT_SNACK_BAR_DATA, MatSnackBarRef } from '@angular/material/snack-bar';\nimport { SnackBarData } from './snack-bar-data';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { IconModule } from '../icon/icon.module';\n\n@Component({\n    selector: 'adf-snackbar-content',\n    imports: [IconModule, TranslatePipe, MatButtonModule],\n    templateUrl: './snackbar-content.component.html',\n    styleUrls: ['./snackbar-content.component.scss'],\n    host: {\n        class: 'mat-simple-snackbar'\n    }\n})\nexport class SnackbarContentComponent {\n    snackBarRef = inject<MatSnackBarRef<SnackbarContentComponent>>(MatSnackBarRef);\n    data = inject<SnackBarData>(MAT_SNACK_BAR_DATA);\n\n    constructor() {\n        const data = this.data;\n\n        if (!data) {\n            this.data = { message: '' };\n        }\n    }\n\n    onIconClicked(): void {\n        this.data.callActionOnIconClick ? this.snackBarRef.dismissWithAction() : this.snackBarRef.dismiss();\n    }\n}\n","<p class=\"adf-snackbar-message-content\" data-automation-id=\"adf-snackbar-message-content\">\n    @if (data.decorativeIcon) {\n        <mat-icon data-automation-id=\"adf-snackbar-decorative-icon\" [adf-icon]=\"data.decorativeIcon\" />\n    }\n    {{ data.message }}\n</p>\n\n@if (data.showAction) {\n    <div class=\"adf-snackbar-message-content-action\">\n        @if (data.actionLabel) {\n            <button mat-button (click)=\"snackBarRef.dismissWithAction()\" class=\"adf-snackbar-message-content-action-button\"\n                    data-automation-id=\"adf-snackbar-message-content-action-button\">\n                {{data.actionLabel}}\n            </button>\n        }\n        @if (data.actionIcon) {\n            <button mat-button (click)=\"onIconClicked()\" class=\"adf-snackbar-message-content-action-icon\"\n                    [attr.aria-label]=\"data.actionIconAriaLabel | translate\">\n                <mat-icon [adf-icon]=\"data.actionIcon\" />\n            </button>\n        }\n    </div>\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NgModule } from '@angular/core';\nimport { SnackbarContentComponent } from './snackbar-content.component';\n\n/** @deprecated use `SnackbarContentComponent` directly instead */\n@NgModule({\n    imports: [SnackbarContentComponent],\n    exports: [SnackbarContentComponent]\n})\nexport class SnackbarContentModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface SnackBarData {\n    actionLabel?: string;\n    actionIcon?: string;\n    actionIconAriaLabel?: string;\n    message: string;\n    showAction?: boolean;\n    callActionOnIconClick?: boolean;\n    decorativeIcon?: string;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './snackbar-content.component';\nexport * from './snackbar-content.module';\nexport * from './snack-bar-data';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable, inject } from '@angular/core';\nimport { MatSnackBar, MatSnackBarRef, MatSnackBarConfig } from '@angular/material/snack-bar';\nimport { TranslationService } from '../../translation/translation.service';\nimport { Subject } from 'rxjs';\nimport { NotificationModel } from '../models/notification.model';\nimport { info, warning, error } from '../helpers/notification.factory';\nimport { SnackbarContentComponent } from '../../snackbar-content';\nimport type { SnackBarData } from '../../snackbar-content/snack-bar-data';\n\nconst INFO_SNACK_CLASS = 'adf-info-snackbar';\nconst WARN_SNACK_CLASS = 'adf-warning-snackbar';\nconst ERROR_SNACK_CLASS = 'adf-error-snackbar';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class NotificationService {\n    private readonly snackBar = inject(MatSnackBar);\n    private readonly translationService = inject(TranslationService);\n\n    notifications$: Subject<NotificationModel> = new Subject();\n\n    /**\n     * Opens a SnackBar notification to show a message.\n     *\n     * @param message The message (or resource key) to show.\n     * @param config Time before notification disappears after being shown or MatSnackBarConfig object\n     * @param interpolateArgs The interpolation parameters to add for the translation\n     * @returns Information/control object for the SnackBar\n     */\n    openSnackMessage(\n        message: string,\n        config?: number | MatSnackBarConfig<Omit<SnackBarData, 'actionLabel' | 'message'>>,\n        interpolateArgs?: any\n    ): MatSnackBarRef<any> {\n        return this.dispatchNotification(message, null, config, interpolateArgs);\n    }\n\n    /**\n     * Opens a SnackBar notification with a message and a response button.\n     *\n     * @param message The message (or resource key) to show.\n     * @param action Caption for the response button\n     * @param config Time before notification disappears after being shown or MatSnackBarConfig object\n     * @param interpolateArgs The interpolation parameters to add for the translation\n     * @returns Information/control object for the SnackBar\n     */\n    openSnackMessageAction(\n        message: string,\n        action: string,\n        config?: number | MatSnackBarConfig<Omit<SnackBarData, 'actionLabel' | 'message'>>,\n        interpolateArgs?: any\n    ): MatSnackBarRef<any> {\n        return this.dispatchNotification(message, action, config, interpolateArgs);\n    }\n\n    /**\n     * Rase error message\n     *\n     * @param message Text message or translation key for the message.\n     * @param action Action name\n     * @param interpolateArgs The interpolation parameters to add for the translation\n     * @param showAction True if action should be visible, false if not. Default: true.\n     * @returns snackbar reference\n     */\n    showError(message: string, action?: string, interpolateArgs?: any, showAction = true): MatSnackBarRef<any> {\n        return this.dispatchNotification(\n            message,\n            action,\n            {\n                panelClass: ERROR_SNACK_CLASS,\n                data: {\n                    showAction\n                }\n            },\n            interpolateArgs\n        );\n    }\n\n    /**\n     * Rase info message\n     *\n     * @param message Text message or translation key for the message.\n     * @param action Action name\n     * @param interpolateArgs The interpolation parameters to add for the translation\n     * @param showAction True if action should be visible, false if not. Default: true.\n     * @returns snackbar reference\n     */\n    showInfo(message: string, action?: string, interpolateArgs?: any, showAction = true): MatSnackBarRef<any> {\n        return this.dispatchNotification(\n            message,\n            action,\n            {\n                panelClass: INFO_SNACK_CLASS,\n                data: {\n                    showAction\n                }\n            },\n            interpolateArgs\n        );\n    }\n\n    /**\n     * Rase warning message\n     *\n     * @param message Text message or translation key for the message.\n     * @param action Action name\n     * @param interpolateArgs The interpolation parameters to add for the translation\n     * @param showAction True if action should be visible, false if not. Default: true.\n     * @returns snackbar reference\n     */\n    showWarning(message: string, action?: string, interpolateArgs?: any, showAction = true): MatSnackBarRef<any> {\n        return this.dispatchNotification(\n            message,\n            action,\n            {\n                panelClass: WARN_SNACK_CLASS,\n                data: {\n                    showAction\n                }\n            },\n            interpolateArgs\n        );\n    }\n\n    /**\n     *  dismiss the notification snackbar\n     */\n    dismissSnackMessageAction(): void {\n        this.snackBar.dismiss();\n    }\n\n    /**\n     * Push new notification to Notification History\n     *\n     * @param notification - Notification model to be pushed.\n     */\n    pushToNotificationHistory(notification: NotificationModel) {\n        this.notifications$.next(notification);\n    }\n\n    private dispatchNotification(\n        message: string,\n        action?: string,\n        config?: number | MatSnackBarConfig<Omit<SnackBarData, 'actionLabel' | 'message'>>,\n        interpolateArgs?: any\n    ): MatSnackBarRef<any> {\n        const translatedMessage: string = this.translationService.instant(message, interpolateArgs);\n        const translatedAction: string = this.translationService.instant(action, interpolateArgs);\n        const createNotification = this.getNotificationCreator(config);\n        this.notifications$.next(createNotification(translatedMessage));\n        return this.snackBar.openFromComponent<SnackbarContentComponent, SnackBarData>(SnackbarContentComponent, {\n            ...(typeof config === 'number' && { duration: config }),\n            panelClass: INFO_SNACK_CLASS,\n            ...(typeof config === 'object' ? config : {}),\n            data: {\n                actionLabel: translatedAction,\n                actionIcon: 'close',\n                actionIconAriaLabel: 'CLOSE',\n                message: translatedMessage,\n                showAction: true,\n                callActionOnIconClick: false,\n                ...(typeof config === 'object' ? config.data : {})\n            }\n        });\n    }\n\n    private getNotificationCreator(config?: number | MatSnackBarConfig<Omit<SnackBarData, 'actionLabel' | 'message'>>) {\n        let panelClass: string = null;\n        if (typeof config === 'object') {\n            panelClass = Array.isArray(config.panelClass) ? config.panelClass[0] : config.panelClass;\n        }\n\n        switch (panelClass) {\n            case ERROR_SNACK_CLASS:\n                return error;\n            case WARN_SNACK_CLASS:\n                return warning;\n            default:\n                return info;\n        }\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable, inject } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { NotificationService } from '../notifications/services/notification.service';\n\n@Injectable({ providedIn: 'root' })\nexport class ClipboardService {\n    private readonly document = inject(DOCUMENT);\n    private readonly notificationService = inject(NotificationService);\n\n    /**\n     * Checks if the target element can have its text copied.\n     *\n     * @param target Target HTML element\n     * @returns True if the text can be copied, false otherwise\n     */\n    isTargetValid(target: HTMLInputElement | HTMLTextAreaElement) {\n        if (target instanceof HTMLInputElement || target instanceof HTMLTextAreaElement) {\n            return !target.hasAttribute('disabled');\n        }\n        return false;\n    }\n\n    /**\n     * Copies text from an HTML element to the clipboard.\n     *\n     * @param target HTML element to be copied\n     * @param message Snackbar message to alert when copying happens\n     */\n    copyToClipboard(target: HTMLInputElement | HTMLTextAreaElement, message?: string) {\n        if (this.isTargetValid(target)) {\n            try {\n                if (navigator.clipboard) {\n                    navigator.clipboard.writeText(target.value);\n                } else {\n                    this.document.execCommand('copy');\n                }\n                this.notify(message);\n            } catch {\n                /* empty */\n            }\n        }\n    }\n\n    /**\n     * Copies a text string to the clipboard.\n     *\n     * @param content Text to copy\n     * @param message Snackbar message to alert when copying happens\n     */\n    copyContentToClipboard(content: string, message: string) {\n        try {\n            if (navigator.clipboard) {\n                navigator.clipboard.writeText(content);\n            } else {\n                document.addEventListener('copy', (e: ClipboardEvent) => {\n                    e.clipboardData.setData('text/plain', content);\n                    e.preventDefault();\n                    document.removeEventListener('copy', null);\n                });\n                document.execCommand('copy');\n            }\n            this.notify(message);\n        } catch {\n            /* empty */\n        }\n    }\n\n    private notify(message) {\n        if (message) {\n            this.notificationService.openSnackMessage(message);\n        }\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Directive, Input, HostListener, ViewContainerRef, inject } from '@angular/core';\nimport { ClipboardService } from './clipboard.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { MatTooltip } from '@angular/material/tooltip';\n\n@Directive({\n    selector: '[adf-clipboard]',\n    exportAs: 'adfClipboard',\n    standalone: true,\n    hostDirectives: [MatTooltip]\n})\nexport class ClipboardDirective {\n    private readonly clipboardService = inject(ClipboardService);\n    viewContainerRef = inject(ViewContainerRef);\n    private readonly matTooltip = inject(MatTooltip, { self: true });\n    private readonly translate = inject(TranslateService, { optional: true });\n\n    /** Translation key or message for the tooltip. */\n    // eslint-disable-next-line @angular-eslint/no-input-rename\n    @Input('adf-clipboard')\n    placeholder: string;\n\n    /** Reference to the HTML element containing the text to copy. */\n    @Input()\n    target: HTMLInputElement | HTMLTextAreaElement;\n\n    /** Translation key or message for snackbar notification. */\n    // eslint-disable-next-line @angular-eslint/no-input-rename\n    @Input('clipboard-notification') message: string;\n\n    @HostListener('mouseenter')\n    showTooltip() {\n        const messageKey = this.placeholder || 'CLIPBOARD.CLICK_TO_COPY';\n        const translated = this.translate ? this.translate.instant(messageKey) : messageKey;\n        this.matTooltip.message = translated;\n        this.matTooltip.position = 'below';\n        this.matTooltip.show();\n    }\n\n    @HostListener('mouseleave')\n    closeTooltip() {\n        this.matTooltip.hide();\n    }\n\n    @HostListener('keydown.enter', ['$event'])\n    @HostListener('click', ['$event'])\n    copyToClipboard(event: KeyboardEvent | MouseEvent): void {\n        event.preventDefault();\n        event.stopPropagation();\n\n        const isValidTarget = this.clipboardService.isTargetValid(this.target);\n\n        if (isValidTarget) {\n            this.clipboardService.copyToClipboard(this.target, this.message);\n        } else {\n            this.copyContentToClipboard(this.viewContainerRef.element.nativeElement.innerHTML);\n        }\n    }\n\n    private copyContentToClipboard(content: string) {\n        this.clipboardService.copyContentToClipboard(content, this.message);\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChangeDetectionStrategy, Component, DestroyRef, inject, Input, OnInit, ViewEncapsulation, signal, computed, effect } from '@angular/core';\nimport { DataColumn } from '../../data/data-column.model';\nimport { DataRow } from '../../data/data-row.model';\nimport { DataTableAdapter } from '../../data/datatable-adapter';\nimport { BehaviorSubject } from 'rxjs';\nimport { DataTableService } from '../../services/datatable.service';\nimport { AsyncPipe } from '@angular/common';\nimport { ClipboardDirective } from '../../../clipboard/clipboard.directive';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { TruncatePipe } from '../../../pipes/truncate.pipe';\nimport { UserPreferencesService } from '../../../common/services/user-preferences.service';\n\n@Component({\n    selector: 'adf-datatable-cell',\n    imports: [ClipboardDirective, TruncatePipe, AsyncPipe],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template: `\n        @let value = value$ | async;\n        @let displayValue = column?.maxTextLength ? (value | truncate: column?.maxTextLength) : value;\n\n        @if (copyContent) {\n            <span\n                adf-clipboard=\"CLIPBOARD.CLICK_TO_COPY\"\n                [clipboard-notification]=\"'CLIPBOARD.SUCCESS_COPY'\"\n                [attr.aria-label]=\"value\"\n                [title]=\"title()\"\n                class=\"adf-datatable-cell-value\"\n                >{{ displayValue }}</span\n            >\n        } @else {\n            <span [title]=\"title()\" class=\"adf-datatable-cell-value\">{{ displayValue }}</span>\n        }\n    `,\n    encapsulation: ViewEncapsulation.None,\n    host: { class: 'adf-datatable-content-cell' }\n})\nexport class DataTableCellComponent implements OnInit {\n    /** Data table adapter instance. */\n    @Input({ required: true })\n    data: DataTableAdapter;\n\n    /** Data that defines the column. */\n    @Input({ required: true })\n    column: DataColumn;\n\n    /** Data that defines the row. */\n    @Input({ required: true })\n    row: DataRow;\n\n    /** Enables/disables a Clipboard directive to allow copying of the cell's content. */\n    @Input()\n    copyContent: boolean;\n\n    /** Text for the cell's tooltip. */\n    @Input()\n    tooltip: string;\n\n    /** Custom resolver function which is used to parse dynamic column objects */\n    @Input()\n    resolverFn: (row: DataRow, col: DataColumn) => any = null;\n\n    protected destroyRef = inject(DestroyRef);\n    protected dataTableService = inject(DataTableService, { optional: true });\n    protected readonly userPreferencesService = inject(UserPreferencesService);\n    value$ = new BehaviorSubject<any>('');\n\n    // Signal to track the raw computed title (without tooltip override)\n    protected rawComputedTitle = signal<string>('');\n\n    // Computed signal that automatically combines tooltip input with computed title\n    title = computed(() => this.tooltip || this.rawComputedTitle());\n\n    // Store the latest value for locale change re-computation\n    private latestValue: any = null;\n\n    constructor() {\n        // Listen to locale changes and re-compute the title with the latest value\n        effect(() => {\n            // Read the signal value to track changes\n            this.userPreferencesService.localeSignal?.();\n            // When locale changes, re-compute title using the stored latest value\n            this.recomputeTitle();\n        });\n    }\n\n    ngOnInit() {\n        this.updateValue();\n        this.subscribeToRowUpdates();\n    }\n\n    protected updateValue() {\n        if (this.column?.key && this.row && this.data) {\n            const value = this.data.getValue(this.row, this.column, this.resolverFn);\n            this.value$.next(value);\n            // Store the value for locale change re-computation and update the title\n            this.latestValue = value;\n            this.recomputeTitle();\n        }\n    }\n\n    /**\n     * Re-computes the title based on the current latestValue.\n     * This is called both when the value changes (via updateValue) and when the locale changes (via effect).\n     */\n    private recomputeTitle(): void {\n        this.rawComputedTitle.set(this.computeTitle(this.latestValue));\n    }\n\n    private subscribeToRowUpdates() {\n        if (!this.dataTableService || !this.row.obj) {\n            return;\n        }\n\n        this.dataTableService.rowUpdate.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((data) => {\n            if (data?.id === this.row?.id && data.obj) {\n                this.row.obj = data.obj;\n                this.row['cache'][this.column.key] = this.getNestedPropertyValue(data.obj, this.column.key);\n\n                this.updateValue();\n            }\n        });\n    }\n\n    private getNestedPropertyValue(obj: any, path: string) {\n        return path.split('.').reduce((source, key) => (source ? source[key] : ''), obj);\n    }\n\n    /**\n     * Computes the title/tooltip for the cell based on the value.\n     * Override this in derived classes to provide custom tooltip logic.\n     * Note: The tooltip input always takes precedence (handled by title signal).\n     *\n     * @param value - The cell value to compute the title for\n     * @returns The computed title string, or empty string if no title should be shown\n     */\n    protected computeTitle(value: string): string {\n        const rawValue = value;\n        const max = this.column?.maxTextLength;\n\n        if (typeof max === 'number' && max > 0 && rawValue?.length > max) {\n            return rawValue;\n        }\n        return '';\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation, Input, DEFAULT_CURRENCY_CODE, inject, computed } from '@angular/core';\nimport { DataTableCellComponent } from '../datatable-cell/datatable-cell.component';\nimport { CurrencyConfig } from '../../data/data-column.model';\nimport { CurrencyPipe } from '@angular/common';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\n@Component({\n    imports: [CurrencyPipe],\n    selector: 'adf-amount-cell',\n    templateUrl: './amount-cell.component.html',\n    host: { class: 'adf-datatable-content-cell' },\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AmountCellComponent extends DataTableCellComponent {\n    @Input()\n    currencyConfig: CurrencyConfig;\n\n    private readonly defaultCurrencyCode: string = inject(DEFAULT_CURRENCY_CODE);\n    readonly defaultCurrencyConfig: CurrencyConfig = {\n        code: this.defaultCurrencyCode,\n        display: 'symbol',\n        digitsInfo: undefined,\n        locale: undefined\n    };\n\n    private readonly rawAmountValue = toSignal(this.value$);\n\n    readonly amountValue = computed<number | null>(() => {\n        const value = this.rawAmountValue();\n\n        if (value == null || value === '') {\n            return null;\n        }\n\n        const numericValue = Number(value);\n\n        return Number.isFinite(numericValue) ? numericValue : null;\n    });\n}\n","@let amount = amountValue();\n@if (amount) {\n    <span [title]=\"amount\">\n        {{ amount | currency:\n            (currencyConfig?.code || defaultCurrencyConfig.code):\n            (currencyConfig?.display || defaultCurrencyConfig.display):\n            (currencyConfig?.digitsInfo || defaultCurrencyConfig.digitsInfo):\n            (currencyConfig?.locale || defaultCurrencyConfig.locale)\n        }}\n    </span>\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation, computed } from '@angular/core';\nimport { DataTableCellComponent } from '../datatable-cell/datatable-cell.component';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\n@Component({\n    selector: 'adf-boolean-cell',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template: ` <span [title]=\"title()\">{{ boolValue() }}</span> `,\n    encapsulation: ViewEncapsulation.None,\n    host: { class: 'adf-datatable-content-cell' }\n})\nexport class BooleanCellComponent extends DataTableCellComponent {\n    private readonly booleanValue = toSignal(this.value$);\n\n    readonly boolValue = computed(() => {\n        const value = this.booleanValue();\n        return this.transformBoolean(value);\n    });\n\n    private transformBoolean(value: unknown): string {\n        if (value === true || value === 'true') {\n            return 'true';\n        }\n        if (value === false || value === 'false') {\n            return 'false';\n        }\n        return '';\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { inject, Pipe, PipeTransform } from '@angular/core';\nimport { DataColumn } from '../../data/data-column.model';\nimport { TranslationService } from '../../../translation';\n\n@Pipe({\n    name: 'columnsSearchFilter'\n})\nexport class ColumnsSearchFilterPipe implements PipeTransform {\n    private readonly translationService = inject(TranslationService);\n\n    transform(columns: DataColumn[], searchByName: string): DataColumn[] {\n        const result = [];\n\n        for (const column of columns) {\n            if (!column.title) {\n                continue;\n            }\n\n            if (!searchByName) {\n                result.push(column);\n                continue;\n            }\n\n            const title = this.translationService.instant(column.title);\n\n            if (this.filterString(title, searchByName)) {\n                result.push(column);\n            }\n        }\n\n        return result;\n    }\n\n    private filterString(value: string = '', filterBy: string = ''): string {\n        const testResult = filterBy ? value.toLowerCase().indexOf(filterBy.toLowerCase()) > -1 : true;\n        return testResult ? value : '';\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, DestroyRef, EventEmitter, inject, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport { ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\nimport { MatMenuTrigger } from '@angular/material/menu';\nimport { debounceTime } from 'rxjs/operators';\nimport { DataColumn } from '../../data/data-column.model';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ColumnsSearchFilterPipe } from './columns-search-filter.pipe';\nimport { MatListOption, MatSelectionList, MatSelectionListChange } from '@angular/material/list';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { IconModule } from '../../../icon/icon.module';\n\n@Component({\n    selector: 'adf-datatable-column-selector',\n    imports: [\n        CommonModule,\n        TranslatePipe,\n        MatButtonModule,\n        IconModule,\n        MatDividerModule,\n        ReactiveFormsModule,\n        MatCheckboxModule,\n        ColumnsSearchFilterPipe,\n        MatSelectionList,\n        MatListOption,\n        MatFormFieldModule,\n        MatInputModule\n    ],\n    templateUrl: './columns-selector.component.html',\n    styleUrls: ['./columns-selector.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class ColumnsSelectorComponent implements OnInit {\n    @Input()\n    columns: DataColumn[] = [];\n\n    @Input({ required: true })\n    mainMenuTrigger: MatMenuTrigger;\n\n    @Input()\n    columnsSorting = true;\n\n    @Input()\n    maxColumnsVisible?: number;\n\n    @Output()\n    submitColumnsVisibility = new EventEmitter<DataColumn[]>();\n\n    columnItems: DataColumn[] = [];\n    searchInputControl = new UntypedFormControl('');\n    searchQuery = '';\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    ngOnInit(): void {\n        this.mainMenuTrigger.menuOpened.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n            this.updateColumnItems();\n        });\n\n        this.mainMenuTrigger.menuClosed.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n            this.searchInputControl.setValue('');\n        });\n\n        this.searchInputControl.valueChanges.pipe(debounceTime(300), takeUntilDestroyed(this.destroyRef)).subscribe((searchQuery) => {\n            this.searchQuery = searchQuery;\n        });\n    }\n\n    closeMenu(): void {\n        this.mainMenuTrigger.closeMenu();\n    }\n\n    changeColumnVisibility(event: MatSelectionListChange): void {\n        const selectedColumn = this.columnItems.find((column) => column.id === event.options[0].value);\n        selectedColumn.isHidden = !selectedColumn.isHidden;\n    }\n\n    apply(): void {\n        this.submitColumnsVisibility.emit(this.columnItems);\n        this.closeMenu();\n    }\n\n    isCheckboxDisabled(column: DataColumn): boolean {\n        return (\n            this.maxColumnsVisible &&\n            column.isHidden &&\n            this.maxColumnsVisible >= this.columnItems.filter((dataColumn) => !dataColumn.isHidden).length\n        );\n    }\n\n    private updateColumnItems(): void {\n        let columns = this.columns.map((column) => ({ ...column }));\n        columns = this.sortColumns(columns);\n        this.columnItems = columns;\n    }\n\n    private sortColumns(columns: DataColumn[]): DataColumn[] {\n        if (this.columnsSorting) {\n            const shownColumns = columns.filter((column) => !column.isHidden);\n            const hiddenColumns = columns.filter((column) => column.isHidden);\n\n            return [...shownColumns, ...hiddenColumns];\n        }\n        return columns;\n    }\n}\n","<div\n    class=\"adf-columns-selector\"\n    role=\"presentation\"\n    data-automation-id=\"adf-columns-selector\"\n    (keyup.enter)=\"$event.stopPropagation()\"\n    (click)=\"$event.stopPropagation();\"\n>\n    <div class=\"adf-columns-selector-header\">\n        <span class=\"adf-columns-selector-header-label\">\n            {{\"ADF-DATATABLE.COLUMNS_SELECTOR.COLUMNS\" | translate}}\n        </span>\n\n        <button\n            data-automation-id=\"adf-columns-selector-close-button\"\n            mat-icon-button\n            [attr.aria-label]=\"'CLOSE' | translate\"\n            (click)=\"closeMenu()\"\n        >\n            <mat-icon adf-icon=\"close\" />\n        </button>\n    </div>\n\n    <mat-divider class=\"adf-columns-selector-divider\" aria-hidden=\"true\" />\n\n    <mat-form-field class=\"adf-columns-selector-search-input-form\">\n        <mat-label>{{ 'ADF-DATATABLE.COLUMNS_SELECTOR.SEARCH' | translate }}</mat-label>\n        <input\n            matInput\n            type=\"text\"\n            data-automation-id=\"adf-columns-selector-search-input\"\n            [placeholder]=\"'ADF-DATATABLE.COLUMNS_SELECTOR.SEARCH' | translate\"\n            [formControl]=\"searchInputControl\"/>\n        <mat-icon adf-icon=\"search\" matSuffix />\n    </mat-form-field>\n\n    <mat-selection-list\n        class=\"adf-columns-selector-list-container\"\n        (selectionChange)=\"changeColumnVisibility($event)\"\n        [attr.aria-label]='\"ADF-DATATABLE.COLUMNS_SELECTOR.COLUMNS_VISIBILITY\" | translate'>\n        <div *ngFor=\"let column of (columnItems | columnsSearchFilter: searchQuery)\" class=\"adf-columns-selector-list-item\">\n            <mat-list-option\n                color=\"primary\"\n                class=\"adf-columns-selector-column-checkbox\"\n                [attr.data-automation-id]=\"'adf-columns-selector-column-checkbox-' + column.title\"\n                [selected]=\"!column.isHidden\"\n                [disabled]=\"isCheckboxDisabled(column)\"\n                [value]=\"column.id\">\n                <div class=\"adf-columns-selector-list-content\">\n                    {{column.title | translate}}\n                </div>\n                <div\n                    *ngIf=\"column.subtitle\"\n                    class=\"\n                        adf-columns-selector-list-content\n                        adf-columns-selector-subtitle\n                    \"\n                >\n                    <span>\n                        {{column.subtitle | translate}}\n                    </span>\n                </div>\n            </mat-list-option>\n        </div>\n    </mat-selection-list>\n\n    <mat-divider class=\"adf-columns-selector-divider\" aria-hidden=\"true\" />\n\n    <div class=\"adf-columns-selector-footer\">\n        <button\n            mat-flat-button\n            data-automation-id=\"adf-columns-selector-apply-button\"\n            color=\"primary\"\n            (click)=\"apply()\">\n            {{\"ADF-DATATABLE.COLUMNS_SELECTOR.APPLY\" | translate}}\n        </button>\n    </div>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** Base cancellable event implementation */\nexport class BaseEvent<T> {\n    private isDefaultPrevented: boolean = false;\n\n    value: T;\n\n    get defaultPrevented() {\n        return this.isDefaultPrevented;\n    }\n\n    preventDefault() {\n        this.isDefaultPrevented = true;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseEvent } from './base.event';\n\n/** Base container for any event which takes place in the DOM  */\nexport class BaseUIEvent<T> extends BaseEvent<T> {\n\n    /** Original DOM event */\n    event: Event;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './base.event';\nexport * from './base-ui.event';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseUIEvent } from '../../events';\nimport { DataRow } from './data-row.model';\n\nexport class DataRowEvent extends BaseUIEvent<DataRow> {\n    sender: any;\n\n    constructor(value: DataRow, domEvent: Event, sender?: any) {\n        super();\n        this.value = value;\n        this.event = domEvent;\n        this.sender = sender;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport class DataSorting {\n    constructor(public key?: string, public direction?: string, public options?: Intl.CollatorOptions) {}\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, ElementRef, EventEmitter, HostBinding, HostListener, Input, Output, ViewEncapsulation, inject } from '@angular/core';\nimport { FocusableOption } from '@angular/cdk/a11y';\nimport { DataRow } from '../../data/data-row.model';\n\n@Component({\n    selector: 'adf-datatable-row',\n    template: `<ng-content />`,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        class: 'adf-datatable-row',\n        role: 'row'\n    }\n})\nexport class DataTableRowComponent implements FocusableOption {\n    private readonly element = inject(ElementRef);\n\n    @Input() row: DataRow;\n\n    @Input() disabled = true;\n\n    @Output()\n    select: EventEmitter<any> = new EventEmitter<any>();\n\n    @HostBinding('class.adf-is-selected')\n    get isSelected(): boolean {\n        if (!this.row) {\n            return false;\n        }\n        return this.row.isSelected;\n    }\n\n    @HostBinding('attr.aria-selected')\n    get isAriaSelected(): boolean {\n        if (!this.row) {\n            return false;\n        }\n        return this.row.isSelected;\n    }\n\n    @HostBinding('attr.aria-label')\n    get ariaLabel(): string | null {\n        if (!this.row) {\n            return null;\n        }\n        const label = this.row.getValue('name') || this.row.getValue('title') || '';\n        return this.row.isSelected && label ? `${label} selected` : label;\n    }\n\n    @HostBinding('attr.tabindex')\n    get tabindex(): number | null {\n        return this.disabled ? null : 0;\n    }\n\n    @HostListener('keydown.space', ['$event'])\n    onKeyDown(event: KeyboardEvent) {\n        if ((event.target as Element).tagName === this.element.nativeElement.tagName) {\n            event.preventDefault();\n            this.select.emit(event);\n        }\n    }\n\n    focus() {\n        this.element.nativeElement.focus();\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ObjectUtils } from '../../common/utils';\nimport { DataRow } from './data-row.model';\n\n// Simple implementation of the DataRow interface.\nexport class ObjectDataRow implements DataRow {\n    constructor(\n        private readonly obj: any,\n        public isSelected: boolean = false,\n        public isSelectable: boolean = true\n    ) {\n        if (!obj) {\n            throw new Error('Object source not found');\n        }\n    }\n\n    getSourceObject(): any {\n        return this.obj;\n    }\n\n    getValue(key: string): any {\n        return ObjectUtils.getValue(this.obj, key);\n    }\n\n    hasValue(key: string): boolean {\n        return this.getValue(key) !== undefined;\n    }\n\n    imageErrorResolver(): string {\n        return '';\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { TemplateRef } from '@angular/core';\nimport { DataColumnType } from '@alfresco/adf-extensions';\nimport { CurrencyConfig, DataColumn, DecimalConfig, DateConfig } from './data-column.model';\n\n// Simple implementation of the DataColumn interface.\nexport class ObjectDataColumn<T = unknown> implements DataColumn<T> {\n    id?: string;\n    key: string;\n    type: DataColumnType;\n    format: string;\n    sortable: boolean;\n    title: string;\n    subtitle?: string;\n    srTitle: string;\n    cssClass: string;\n    template?: TemplateRef<any>;\n    copyContent?: boolean;\n    focus?: boolean;\n    sortingKey?: string;\n    header?: TemplateRef<any>;\n    draggable: boolean;\n    resizable: boolean;\n    isHidden: boolean;\n    customData?: T;\n    width?: number;\n    order?: number;\n    currencyConfig?: CurrencyConfig;\n    decimalConfig?: DecimalConfig;\n    dateConfig?: DateConfig;\n    maxTextLength?: number;\n\n    constructor(input: any) {\n        this.id = input.id ?? '';\n        this.key = input.key;\n        this.type = input.type || 'text';\n        this.format = input.format;\n        this.sortable = input.sortable;\n        this.title = input.title;\n        this.subtitle = input.subtitle;\n        this.srTitle = input.srTitle;\n        this.cssClass = input.cssClass;\n        this.template = input.template;\n        this.copyContent = input.copyContent;\n        this.focus = input.focus;\n        this.sortingKey = input.sortingKey;\n        this.header = input.header;\n        this.draggable = input.draggable ?? false;\n        this.resizable = input.resizable ?? true;\n        this.isHidden = input.isHidden ?? false;\n        this.customData = input.customData;\n        this.width = input.width;\n        this.order = input.order;\n        this.currencyConfig = input.currencyConfig;\n        this.decimalConfig = input.decimalConfig;\n        this.dateConfig = input.dateConfig;\n        this.maxTextLength = input.maxTextLength;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DataColumn } from './data-column.model';\nimport { DataRow } from './data-row.model';\nimport { ObjectDataRow } from './object-datarow.model';\nimport { ObjectDataColumn } from './object-datacolumn.model';\nimport { DataSorting } from './data-sorting.model';\nimport { DataTableAdapter } from './datatable-adapter';\nimport { Subject } from 'rxjs';\n\nexport type SortingMode = 'client' | 'server';\n\n// Simple implementation of the DataTableAdapter interface.\nexport class ObjectDataTableAdapter implements DataTableAdapter {\n    private _sorting: DataSorting;\n    private _rows: DataRow[];\n    private _columns: DataColumn[];\n    private _sortingMode: SortingMode;\n\n    selectedRow: DataRow;\n    rowsChanged: Subject<Array<DataRow>>;\n\n    static generateSchema(data: any[]) {\n        const schema = [];\n\n        if (data?.length) {\n            const rowToExamine = data[0];\n\n            if (typeof rowToExamine === 'object') {\n                for (const key in rowToExamine) {\n                    if (Object.prototype.hasOwnProperty.call(rowToExamine, key)) {\n                        schema.push({\n                            type: 'text',\n                            key,\n                            title: key,\n                            sortable: false\n                        });\n                    }\n                }\n            }\n        }\n        return schema;\n    }\n\n    get sortingMode(): SortingMode {\n        return this._sortingMode;\n    }\n    set sortingMode(sortingMode: SortingMode) {\n        if (!sortingMode) {\n            sortingMode = 'client';\n        }\n\n        this._sortingMode = sortingMode;\n    }\n\n    constructor(data: any[] = [], schema: DataColumn[] = [], sortingMode: SortingMode = 'client') {\n        this._rows = [];\n        this._columns = [];\n        this.sortingMode = sortingMode;\n\n        if (data && data.length > 0) {\n            this._rows = data.map((item) => new ObjectDataRow(item));\n        }\n\n        if (schema && schema.length > 0) {\n            this._columns = schema.map((item) => new ObjectDataColumn(item));\n\n            // Sort by first sortable or just first column\n            const sortable = this._columns.filter((column) => column.sortable);\n            if (sortable.length > 0) {\n                this.sort(sortable[0].key, 'asc');\n            }\n        }\n\n        this.rowsChanged = new Subject<Array<DataRow>>();\n    }\n\n    getColumnType(_row: DataRow, col: DataColumn): string {\n        return col.type;\n    }\n\n    getRows(): Array<DataRow> {\n        return this._rows;\n    }\n\n    setRows(rows: Array<DataRow>) {\n        this._rows = rows || [];\n        this.sort();\n        this.rowsChanged.next(this._rows);\n    }\n\n    getColumns(): Array<DataColumn> {\n        return this._columns;\n    }\n\n    setColumns(columns: Array<DataColumn>) {\n        this._columns = columns || [];\n    }\n\n    getValue(row: DataRow, col: DataColumn, resolver?: (_row: DataRow, _col: DataColumn) => any): any {\n        if (!row) {\n            throw new Error('Row not found');\n        }\n        if (!col) {\n            throw new Error('Column not found');\n        }\n\n        if (resolver) {\n            return resolver(row, col);\n        }\n\n        return row.getValue(col.key);\n    }\n\n    getSorting(): DataSorting {\n        return this._sorting;\n    }\n\n    setSorting(sorting: DataSorting): void {\n        this._sorting = sorting;\n\n        if (this._sortingMode === 'server') {\n            return;\n        }\n\n        if (sorting?.key) {\n            this._rows.sort((a: DataRow, b: DataRow) => {\n                let left = a.getValue(sorting.key) ?? '';\n                let right = b.getValue(sorting.key) ?? '';\n\n                if (typeof left !== 'string') {\n                    left = left.valueOf().toString();\n                }\n\n                if (typeof right !== 'string') {\n                    right = right.valueOf().toString();\n                }\n\n                return sorting.direction === 'asc'\n                    ? left.localeCompare(right, undefined, sorting.options)\n                    : right.localeCompare(left, undefined, sorting.options);\n            });\n        }\n    }\n\n    sort(key?: string, direction?: string, options?: Intl.CollatorOptions): void {\n        const sorting = this._sorting || new DataSorting();\n        if (key) {\n            sorting.key = key;\n            sorting.direction = direction || 'asc';\n            sorting.options = {\n                numeric: true,\n                ...options\n            };\n        }\n        this.setSorting(sorting);\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseEvent } from '../../events';\nimport { DataColumn } from '../data/data-column.model';\nimport { DataRow } from '../data/data-row.model';\n\nexport class DataCellEventModel {\n    readonly row: DataRow;\n    readonly col: DataColumn;\n    actions: any[];\n\n    constructor(row: DataRow, col: DataColumn, actions: any[]) {\n        this.row = row;\n        this.col = col;\n        this.actions = actions || [];\n    }\n}\n\nexport class DataCellEvent extends BaseEvent<DataCellEventModel> {\n    constructor(row: DataRow, col: DataColumn, actions: any[]) {\n        super();\n        this.value = new DataCellEventModel(row, col, actions);\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseEvent } from '../../events';\nimport { DataRow } from '../data/data-row.model';\n\nexport class DataRowActionModel {\n    row: DataRow;\n    action: any;\n\n    constructor(row: DataRow, action: any) {\n        this.row = row;\n        this.action = action;\n    }\n}\n\nexport class DataRowActionEvent extends BaseEvent<DataRowActionModel> {\n    // backwards compatibility with 1.2.0 and earlier\n    get args(): DataRowActionModel {\n        return this.value;\n    }\n\n    constructor(row: DataRow, action: any) {\n        super();\n        this.value = new DataRowActionModel(row, action);\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Directive, Input, ElementRef, NgZone, OnInit, OnDestroy, inject } from '@angular/core';\nimport { DataRow } from '../data/data-row.model';\nimport { DataColumn } from '../data/data-column.model';\n\n@Directive({\n    selector: '[adf-drop-zone]'\n})\nexport class DropZoneDirective implements OnInit, OnDestroy {\n    private readonly ngZone = inject(NgZone);\n\n    private readonly element: HTMLElement;\n\n    @Input()\n    dropTarget: 'header' | 'cell' = 'cell';\n\n    @Input()\n    dropRow: DataRow;\n\n    @Input()\n    dropColumn: DataColumn;\n\n    constructor() {\n        const elementRef = inject(ElementRef);\n\n        this.element = elementRef.nativeElement;\n    }\n\n    ngOnInit() {\n        this.ngZone.runOutsideAngular(() => {\n            this.element.addEventListener('dragenter', this.onDragEnter.bind(this));\n            this.element.addEventListener('dragover', this.onDragOver.bind(this));\n            this.element.addEventListener('drop', this.onDrop.bind(this));\n        });\n    }\n\n    ngOnDestroy() {\n        this.element.removeEventListener('dragenter', this.onDragEnter);\n        this.element.removeEventListener('dragover', this.onDragOver);\n        this.element.removeEventListener('drop', this.onDrop);\n    }\n\n    onDragEnter(event: DragEvent) {\n        const domEvent = this.dispatchDomEvent(event, 'dragenter');\n\n        if (domEvent.defaultPrevented) {\n            event.dataTransfer.dropEffect = 'copy';\n            event.preventDefault();\n            event.stopPropagation();\n        }\n    }\n\n    onDragOver(event: DragEvent) {\n        const domEvent = this.dispatchDomEvent(event, 'dragover');\n\n        if (domEvent.defaultPrevented) {\n            event.dataTransfer.dropEffect = 'copy';\n            event.preventDefault();\n            event.stopPropagation();\n        }\n    }\n\n    onDrop(event: Event) {\n        const domEvent = this.dispatchDomEvent(event, 'drop');\n\n        if (domEvent.defaultPrevented) {\n            event.preventDefault();\n            event.stopPropagation();\n        }\n    }\n\n    private dispatchDomEvent(originalEvent: Event, eventName: string): CustomEvent {\n        const domEvent = new CustomEvent(`${this.dropTarget}-${eventName}`, {\n            detail: {\n                target: this.dropTarget,\n                event: originalEvent,\n                column: this.dropColumn,\n                row: this.dropRow\n            },\n            bubbles: true\n        });\n\n        this.element.dispatchEvent(domEvent);\n        return domEvent;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { merge, Observable, Observer, Subject } from 'rxjs';\nimport { BoundingRectangle, ICoordinateX, IResizeMouseEvent, ResizeEvent } from './types';\nimport { filter, map, mergeMap, pairwise, share, take, takeUntil } from 'rxjs/operators';\nimport { DestroyRef, Directive, ElementRef, EventEmitter, inject, Input, NgZone, OnDestroy, OnInit, Output, Renderer2 } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Directive({\n    selector: '[adf-resizable]',\n    exportAs: 'adf-resizable'\n})\nexport class ResizableDirective implements OnInit, OnDestroy {\n    private readonly renderer = inject(Renderer2);\n    private readonly element = inject<ElementRef<HTMLElement>>(ElementRef);\n    private readonly zone = inject(NgZone);\n\n    /**\n     * Emitted when the mouse is pressed and a resize event is about to begin.\n     */\n    @Output() resizeStart = new EventEmitter<ResizeEvent>();\n\n    /**\n     * Emitted when the mouse is dragged after a resize event has started.\n     */\n    @Output() resizing = new EventEmitter<ResizeEvent>();\n\n    /**\n     * Emitted when the mouse is released after a resize event.\n     */\n    @Output() resizeEnd = new EventEmitter<ResizeEvent>();\n\n    /**\n     * Emitted when keyboard resize is triggered.\n     */\n    @Output() keyboardResizing = new EventEmitter<ResizeEvent>();\n\n    /**\n     * This is to cover sum of the left and right padding between resize handler and its parent.\n     */\n    @Input() coverPadding = 0;\n\n    mouseup = new Subject<IResizeMouseEvent>();\n\n    mousedown = new Subject<IResizeMouseEvent>();\n\n    mousemove = new Subject<IResizeMouseEvent>();\n\n    private readonly pointerDown: Observable<IResizeMouseEvent>;\n    private readonly pointerMove: Observable<IResizeMouseEvent>;\n    private readonly pointerUp: Observable<IResizeMouseEvent>;\n\n    private startingRect: BoundingRectangle;\n\n    private currentRect: BoundingRectangle;\n\n    private unsubscribeMouseDown?: () => void;\n    private unsubscribeMouseMove?: () => void;\n    private unsubscribeMouseUp?: () => void;\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    constructor() {\n        const renderer = this.renderer;\n        const zone = this.zone;\n\n        this.pointerDown = new Observable((observer: Observer<IResizeMouseEvent>) => {\n            zone.runOutsideAngular(() => {\n                this.unsubscribeMouseDown = renderer.listen('document', 'mousedown', (event: MouseEvent) => {\n                    observer.next(event);\n                });\n            });\n        }).pipe(share());\n\n        this.pointerMove = new Observable((observer: Observer<IResizeMouseEvent>) => {\n            zone.runOutsideAngular(() => {\n                this.unsubscribeMouseMove = renderer.listen('document', 'mousemove', (event: MouseEvent) => {\n                    observer.next(event);\n                });\n            });\n        }).pipe(share());\n\n        this.pointerUp = new Observable((observer: Observer<IResizeMouseEvent>) => {\n            zone.runOutsideAngular(() => {\n                this.unsubscribeMouseUp = renderer.listen('document', 'mouseup', (event: MouseEvent) => {\n                    observer.next(event);\n                });\n            });\n        }).pipe(share());\n    }\n\n    ngOnInit(): void {\n        const mousedown$ = merge(this.pointerDown, this.mousedown);\n        const mousemove$ = merge(this.pointerMove, this.mousemove);\n        const mouseup$ = merge(this.pointerUp, this.mouseup);\n\n        const mouseDrag: Observable<IResizeMouseEvent | ICoordinateX> = mousedown$\n            .pipe(\n                mergeMap(({ clientX = 0 }) =>\n                    merge(mousemove$.pipe(take(1)).pipe(map((coords) => [undefined, coords])), mousemove$.pipe(pairwise()))\n                        .pipe(\n                            map(([previousCoords = {}, newCoords = {}]) => [\n                                { clientX: previousCoords.clientX - clientX },\n                                { clientX: newCoords.clientX - clientX }\n                            ])\n                        )\n                        .pipe(filter(([previousCoords = {}, newCoords = {}]) => Math.ceil(previousCoords.clientX) !== Math.ceil(newCoords.clientX)))\n                        .pipe(\n                            map(([, newCoords]) => ({\n                                clientX: Math.round(newCoords.clientX)\n                            }))\n                        )\n                        .pipe(takeUntil(merge(mouseup$, mousedown$)))\n                )\n            )\n            .pipe(filter(() => !!this.currentRect));\n\n        mouseDrag\n            .pipe(map(({ clientX }) => this.getNewBoundingRectangle(this.startingRect, clientX + this.coverPadding)))\n            .subscribe((rectangle: BoundingRectangle) => {\n                if (this.resizing.observers.length > 0) {\n                    this.zone.run(() => {\n                        this.resizing.emit({ rectangle });\n                    });\n                }\n                this.currentRect = rectangle;\n            });\n\n        mousedown$\n            .pipe(\n                map(({ resize = false }) => resize),\n                filter((resize) => resize),\n                takeUntilDestroyed(this.destroyRef)\n            )\n            .subscribe(() => {\n                const startingRect: BoundingRectangle = this.getElementRect(this.element);\n\n                this.startingRect = startingRect;\n                this.currentRect = startingRect;\n\n                this.renderer.setStyle(document.body, 'cursor', 'col-resize');\n                if (this.resizeStart.observers.length > 0) {\n                    this.zone.run(() => {\n                        this.resizeStart.emit({\n                            rectangle: this.getNewBoundingRectangle(this.startingRect, 0)\n                        });\n                    });\n                }\n            });\n\n        mouseup$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n            if (this.currentRect) {\n                this.renderer.setStyle(document.body, 'cursor', '');\n                if (this.resizeEnd.observers.length > 0) {\n                    this.zone.run(() => {\n                        this.resizeEnd.emit({ rectangle: this.currentRect });\n                    });\n                }\n                this.startingRect = null;\n                this.currentRect = null;\n            }\n        });\n    }\n\n    ngOnDestroy(): void {\n        this.mousedown.complete();\n        this.mousemove.complete();\n        this.mouseup.complete();\n        this.unsubscribeMouseDown?.();\n        this.unsubscribeMouseMove?.();\n        this.unsubscribeMouseUp?.();\n    }\n\n    resizeByKeyboard(delta: number): void {\n        const currentRect = this.getElementRect(this.element);\n        const rectangle = this.getNewBoundingRectangle(currentRect, delta);\n        this.zone.run(() => {\n            this.keyboardResizing.emit({ rectangle });\n        });\n    }\n\n    private getNewBoundingRectangle({ top, bottom, left, right }: BoundingRectangle, clientX: number): BoundingRectangle {\n        const updatedRight = Math.round(right + clientX);\n\n        return {\n            top,\n            left,\n            bottom,\n            right: updatedRight,\n            width: updatedRight - left\n        };\n    }\n\n    private getElementRect({ nativeElement }: ElementRef): BoundingRectangle {\n        const { height = 0, width = 0, top = 0, bottom = 0, right = 0, left = 0 }: BoundingRectangle = nativeElement.getBoundingClientRect();\n\n        return {\n            top,\n            left,\n            right,\n            width,\n            height,\n            bottom,\n            scrollTop: nativeElement.scrollTop,\n            scrollLeft: nativeElement.scrollLeft\n        };\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ResizableDirective } from './resizable.directive';\nimport { Directive, ElementRef, HostListener, Input, NgZone, OnDestroy, OnInit, Renderer2, inject } from '@angular/core';\n\n@Directive({\n    selector: '[adf-resize-handle]'\n})\nexport class ResizeHandleDirective implements OnInit, OnDestroy {\n    private readonly renderer = inject(Renderer2);\n    private readonly element = inject(ElementRef);\n    private readonly zone = inject(NgZone);\n\n    /**\n     * Reference to ResizableDirective\n     */\n    @Input() resizableContainer: ResizableDirective;\n\n    private unlistenMouseDown?: () => void;\n    private unlistenMouseMove?: () => void;\n    private unlistenMouseUp?: () => void;\n\n    @HostListener('keydown', ['$event'])\n    onKeydown(event: KeyboardEvent): void {\n        const shiftDelta = 40;\n        const rightStepBaseValue = 20;\n        const shiftModifier = event.shiftKey ? shiftDelta : 0;\n\n        let delta: number | null = null;\n\n        switch (event.key) {\n            case 'ArrowRight':\n            case 'ArrowUp':\n                delta = shiftModifier + rightStepBaseValue;\n                break;\n            case 'ArrowLeft':\n            case 'ArrowDown':\n                delta = -shiftModifier;\n                break;\n            default:\n                return;\n        }\n\n        event.preventDefault();\n        event.stopPropagation();\n        this.resizableContainer.resizeByKeyboard(delta);\n    }\n\n    ngOnInit(): void {\n        this.zone.runOutsideAngular(() => {\n            this.unlistenMouseDown = this.renderer.listen(this.element.nativeElement, 'mousedown', (mouseDownEvent: MouseEvent) => {\n                this.onMousedown(mouseDownEvent);\n            });\n        });\n    }\n\n    ngOnDestroy(): void {\n        this.unlistenMouseDown?.();\n        this.unlistenMouseMove?.();\n        this.unlistenMouseUp?.();\n    }\n\n    private onMousedown(event: MouseEvent): void {\n        if (event.cancelable) {\n            event.preventDefault();\n        }\n\n        if (!this.unlistenMouseMove) {\n            this.unlistenMouseMove = this.renderer.listen(this.element.nativeElement, 'mousemove', (mouseMoveEvent: MouseEvent) => {\n                this.onMousemove(mouseMoveEvent);\n            });\n        }\n\n        this.unlistenMouseUp = this.renderer.listen('document', 'mouseup', (mouseUpEvent: MouseEvent) => {\n            this.onMouseup(mouseUpEvent);\n        });\n\n        this.resizableContainer.mousedown.next({ ...event, resize: true });\n    }\n\n    private onMouseup(event: MouseEvent): void {\n        this.unlistenMouseMove?.();\n        this.unlistenMouseMove = undefined;\n        this.unlistenMouseUp();\n        this.resizableContainer.mouseup.next(event);\n    }\n\n    private onMousemove(event: MouseEvent): void {\n        this.resizableContainer.mousemove.next(event);\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, Input, SecurityContext, inject } from '@angular/core';\nimport { animate, style, transition, trigger } from '@angular/animations';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n    selector: 'adf-tooltip-card-component',\n    imports: [CommonModule],\n    templateUrl: './tooltip-card.component.html',\n    styleUrls: ['./tooltip-card.component.scss'],\n    animations: [\n        trigger('tooltip', [\n            transition(':enter', [style({ opacity: 0 }), animate(200, style({ opacity: 1 }))]),\n            transition(':leave', [animate(200, style({ opacity: 0 }))])\n        ])\n    ]\n})\nexport class TooltipCardComponent {\n    private readonly sanitizer = inject(DomSanitizer);\n\n    @Input() image = '';\n    @Input() text = '';\n    @Input() htmlContent = '';\n    @Input() width = '300';\n\n    sanitizedHtmlContent(): string {\n        return this.sanitizer.sanitize(SecurityContext.HTML, this.htmlContent);\n    }\n}\n","<div @tooltip class=\"adf-tooltip-card\" [style.width.px]=\"width\">\n    <img *ngIf=\"image \" [src]=\"image\" [width]=\"width\" alt=\"{{text}}\">\n    <hr *ngIf=\"image\" />\n    <p *ngIf=\"text\">{{text}}</p>\n    <div *ngIf=\"htmlContent\" [innerHTML]=\"sanitizedHtmlContent()\" class=\"adf-tooltip-card-content\"></div>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ComponentRef, Directive, ElementRef, HostListener, Input, OnDestroy, OnInit, inject } from '@angular/core';\nimport { Overlay, OverlayPositionBuilder, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { TooltipCardComponent } from './tooltip-card.component';\n\n@Directive({\n    selector: '[adf-tooltip-card]'\n})\nexport class TooltipCardDirective implements OnInit, OnDestroy {\n    private readonly overlay = inject(Overlay);\n    private readonly overlayPositionBuilder = inject(OverlayPositionBuilder);\n    private readonly elementRef = inject(ElementRef);\n\n    @Input('adf-tooltip-card') text = '';\n    @Input() image = '';\n    @Input() width = '300';\n    @Input() htmlContent = '';\n    @Input() originX: 'start' | 'center' | 'end' = 'start';\n    @Input() originY: 'top' | 'center' | 'bottom' = 'top';\n    @Input() overlayX: 'start' | 'center' | 'end' = 'start';\n    @Input() overlayY: 'top' | 'center' | 'bottom' = 'bottom';\n    @Input() offsetX = 0;\n    @Input() offsetY = -8;\n\n    private overlayRef: OverlayRef;\n\n    ngOnDestroy(): void {\n        if (this.overlayRef) {\n            this.hide();\n        }\n    }\n\n    ngOnInit(): void {\n        const positionStrategy = this.overlayPositionBuilder.flexibleConnectedTo(this.elementRef).withPositions([\n            {\n                originX: this.originX,\n                originY: this.originY,\n                overlayX: this.overlayX,\n                overlayY: this.overlayY,\n                offsetY: this.offsetY,\n                offsetX: this.offsetX\n            }\n        ]);\n\n        this.overlayRef = this.overlay.create({ positionStrategy });\n    }\n\n    @HostListener('mouseenter')\n    show() {\n        const tooltipRef: ComponentRef<TooltipCardComponent> = this.overlayRef?.attach(new ComponentPortal(TooltipCardComponent));\n        tooltipRef.instance.text = this.text;\n        tooltipRef.instance.image = this.image;\n        tooltipRef.instance.width = this.width;\n        tooltipRef.instance.htmlContent = this.htmlContent;\n    }\n\n    @HostListener('mouseleave')\n    @HostListener('click')\n    hide() {\n        this.overlayRef?.detach();\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/no-input-rename */\n\nimport { Directive, ElementRef, Input, Renderer2, AfterViewChecked, inject } from '@angular/core';\nimport { HighlightTransformService, HighlightTransformResult } from '../common/services/highlight-transform.service';\n\n@Directive({\n    selector: '[adf-highlight]'\n})\nexport class HighlightDirective implements AfterViewChecked {\n    private readonly el = inject(ElementRef);\n    private readonly renderer = inject(Renderer2);\n    private readonly highlightTransformService = inject(HighlightTransformService);\n\n    /** Class selector for highlightable elements. */\n    @Input('adf-highlight-selector')\n    selector: string = '';\n\n    /** Text to highlight. */\n    @Input('adf-highlight')\n    search: string = '';\n\n    /** CSS class used to apply highlighting. */\n    @Input('adf-highlight-class')\n    classToApply: string = 'adf-highlight';\n\n    ngAfterViewChecked() {\n        this.highlight();\n    }\n\n    public highlight(search = this.search, selector = this.selector, classToApply = this.classToApply) {\n        if (search && selector) {\n            const elements = this.el.nativeElement.querySelectorAll(selector);\n\n            elements.forEach((element) => {\n                const highlightTransformResult: HighlightTransformResult = this.highlightTransformService.highlight(\n                    element.innerHTML,\n                    search,\n                    classToApply\n                );\n                if (highlightTransformResult.changed) {\n                    this.renderer.setProperty(element, 'innerHTML', highlightTransformResult.text);\n                }\n            });\n        }\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AfterViewInit, DestroyRef, Directive, EventEmitter, inject, Output } from '@angular/core';\nimport { MatSelect } from '@angular/material/select';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nconst SELECT_ITEM_HEIGHT_EM = 3;\n\n@Directive({\n    selector: '[adf-infinite-select-scroll]'\n})\nexport class InfiniteSelectScrollDirective implements AfterViewInit {\n    private readonly matSelect = inject<MatSelect>(MatSelect);\n\n    static readonly MAX_ITEMS = 50;\n\n    /** Emitted when scroll reaches the last item. */\n    @Output() scrollEnd = new EventEmitter<Event>();\n\n    private readonly destroyRef = inject(DestroyRef);\n    private itemHeightToWaitBeforeLoadNext = 0;\n\n    ngAfterViewInit() {\n        this.matSelect.openedChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((opened: boolean) => {\n            if (opened) {\n                this.itemHeightToWaitBeforeLoadNext = this.getItemHeight() * (InfiniteSelectScrollDirective.MAX_ITEMS / 2);\n                this.matSelect.panel.nativeElement.addEventListener('scroll', (event: Event) => this.handleScrollEvent(event));\n            }\n        });\n    }\n\n    private handleScrollEvent(event: Event) {\n        if (this.isScrollInNextFetchArea(event)) {\n            this.scrollEnd.emit(event);\n        }\n    }\n\n    private isScrollInNextFetchArea(event: Event): boolean {\n        const target = event.target as HTMLElement;\n        return target.scrollTop >= target.scrollHeight - target.offsetHeight - this.itemHeightToWaitBeforeLoadNext;\n    }\n\n    private getItemHeight(): number {\n        return parseFloat(getComputedStyle(this.matSelect.panel.nativeElement).fontSize || '0') * SELECT_ITEM_HEIGHT_EM;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Input, Directive, ElementRef, OnInit, Renderer2, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AppConfigService } from '../app-config/app-config.service';\nimport { AuthenticationService } from '../auth/services/authentication.service';\n\n@Directive({\n    selector: '[adf-logout]'\n})\nexport class LogoutDirective implements OnInit {\n    private readonly elementRef = inject(ElementRef);\n    private readonly renderer = inject(Renderer2);\n    private readonly router = inject(Router);\n    private readonly appConfig = inject(AppConfigService);\n    private readonly authenticationService = inject(AuthenticationService);\n\n    /** URI to redirect to after logging out. */\n    @Input()\n    redirectUri: string;\n\n    /** Enable redirecting after logout */\n    @Input()\n    enableRedirect: boolean = true;\n\n    ngOnInit() {\n        if (this.elementRef.nativeElement) {\n            this.renderer.listen(this.elementRef.nativeElement, 'click', (evt) => {\n                evt.preventDefault();\n                this.logout();\n            });\n        }\n    }\n\n    getRedirectUri() {\n        if (this.redirectUri === undefined) {\n            return this.appConfig.get<string>('loginRoute', '/login');\n        }\n        return this.redirectUri;\n    }\n\n    logout() {\n        this.authenticationService.logout().subscribe(\n            () => this.redirectToUri(),\n            () => this.redirectToUri()\n        );\n    }\n\n    redirectToUri() {\n        if (this.enableRedirect && !this.authenticationService.isOauth()) {\n            const redirectRoute = this.getRedirectUri();\n            this.router.navigate([redirectRoute]);\n        }\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/no-input-rename */\n\nimport { Directive, ElementRef, HostListener, Input, NgZone, OnDestroy, OnInit, Renderer2, inject } from '@angular/core';\nimport { FileInfo, FileUtils } from '../common/utils/file-utils';\n\n@Directive({\n    selector: '[adf-upload]'\n})\nexport class UploadDirective implements OnInit, OnDestroy {\n    private readonly el = inject(ElementRef);\n    private readonly renderer = inject(Renderer2);\n    private readonly ngZone = inject(NgZone);\n\n    /** Enables/disables uploading. */\n    @Input('adf-upload')\n    enabled: boolean = true;\n\n    /** Data to upload. */\n    @Input('adf-upload-data')\n    data: any;\n\n    /**\n     * Upload mode. Can be \"drop\" (receives dropped files) or \"click\"\n     * (clicking opens a file dialog). Both modes can be active at once.\n     */\n    @Input()\n    mode: string[] = ['drop']; // click|drop\n\n    /** Toggles multiple file uploads. */\n    @Input()\n    multiple: boolean;\n\n    /** (Click mode only) MIME type filter for files to accept. */\n    @Input()\n    accept: string;\n\n    /** (Click mode only) Toggles uploading of directories. */\n    @Input()\n    directory: boolean;\n\n    isDragging: boolean = false;\n\n    private readonly cssClassName: string = 'adf-upload__dragging';\n    private upload: HTMLInputElement;\n    private readonly element: HTMLElement;\n\n    constructor() {\n        const el = this.el;\n\n        this.element = el.nativeElement;\n    }\n\n    ngOnInit() {\n        if (this.isClickMode() && this.renderer) {\n            const inputUpload = this.renderer.createElement('input');\n            this.upload = this.el.nativeElement.parentElement.appendChild(inputUpload);\n\n            this.upload.type = 'file';\n            this.upload.style.display = 'none';\n            this.upload.addEventListener('change', (event) => this.onSelectFiles(event));\n\n            if (this.multiple) {\n                this.upload.setAttribute('multiple', '');\n            }\n\n            if (this.accept) {\n                this.upload.setAttribute('accept', this.accept);\n            }\n\n            if (this.directory) {\n                this.upload.setAttribute('webkitdirectory', '');\n            }\n        }\n\n        if (this.isDropMode()) {\n            this.ngZone.runOutsideAngular(() => {\n                this.element.addEventListener('dragenter', this.onDragEnter.bind(this));\n                this.element.addEventListener('dragover', this.onDragOver.bind(this));\n                this.element.addEventListener('dragleave', this.onDragLeave.bind(this));\n                this.element.addEventListener('drop', this.onDrop.bind(this));\n            });\n        }\n    }\n\n    ngOnDestroy() {\n        this.element.removeEventListener('dragenter', this.onDragEnter);\n        this.element.removeEventListener('dragover', this.onDragOver);\n        this.element.removeEventListener('dragleave', this.onDragLeave);\n        this.element.removeEventListener('drop', this.onDrop);\n    }\n\n    @HostListener('click', ['$event'])\n    onClick(event: Event) {\n        if (this.isClickMode() && this.upload) {\n            event.preventDefault();\n            this.upload.click();\n        }\n    }\n\n    onDragEnter(event: DragEvent) {\n        if (this.isDropMode()) {\n            event.dataTransfer.dropEffect = 'copy';\n            this.element.classList.add(this.cssClassName);\n            this.isDragging = true;\n        }\n    }\n\n    onDragOver(event: DragEvent) {\n        event.preventDefault();\n        if (this.isDropMode()) {\n            event.dataTransfer.dropEffect = 'copy';\n            this.element.classList.add(this.cssClassName);\n            this.isDragging = true;\n        }\n        return false;\n    }\n\n    onDragLeave() {\n        if (this.isDropMode()) {\n            this.element.classList.remove(this.cssClassName);\n            this.isDragging = false;\n        }\n    }\n\n    onDrop(event: Event) {\n        if (this.isDropMode()) {\n            event.stopPropagation();\n            event.preventDefault();\n\n            this.element.classList.remove(this.cssClassName);\n            this.isDragging = false;\n\n            const dataTransfer = this.getDataTransfer(event);\n            if (dataTransfer) {\n                this.getFilesDropped(dataTransfer).then((files) => {\n                    this.onUploadFiles(files);\n                });\n            }\n        }\n        return false;\n    }\n\n    onUploadFiles(files: FileInfo[]) {\n        if (this.enabled && files.length > 0) {\n            const customEvent = new CustomEvent('upload-files', {\n                detail: {\n                    sender: this,\n                    data: this.data,\n                    files\n                },\n                bubbles: true\n            });\n\n            this.el.nativeElement.dispatchEvent(customEvent);\n        }\n    }\n\n    protected hasMode(mode: string): boolean {\n        return this.enabled && mode && this.mode && this.mode.indexOf(mode) > -1;\n    }\n\n    protected isDropMode(): boolean {\n        return this.hasMode('drop');\n    }\n\n    protected isClickMode(): boolean {\n        return this.hasMode('click');\n    }\n\n    getDataTransfer(event: Event | any): DataTransfer {\n        if (event?.dataTransfer) {\n            return event.dataTransfer;\n        }\n        if (event?.originalEvent?.dataTransfer) {\n            return event.originalEvent.dataTransfer;\n        }\n        return null;\n    }\n\n    /**\n     * Extract files from the DataTransfer object used to hold the data that is being dragged during a drag and drop operation.\n     *\n     * @param dataTransfer DataTransfer object\n     * @returns a list of file info objects\n     */\n    getFilesDropped(dataTransfer: DataTransfer): Promise<FileInfo[]> {\n        return new Promise((resolve) => {\n            const iterations = [];\n\n            if (dataTransfer) {\n                const items = dataTransfer.items;\n                if (items) {\n                    for (let i = 0; i < items.length; i++) {\n                        if (typeof items[i].webkitGetAsEntry !== 'undefined') {\n                            const item = items[i].webkitGetAsEntry();\n                            if (item) {\n                                if (item.isFile) {\n                                    iterations.push(\n                                        Promise.resolve({\n                                            entry: item,\n                                            file: items[i].getAsFile(),\n                                            relativeFolder: '/'\n                                        })\n                                    );\n                                } else if (item.isDirectory) {\n                                    iterations.push(\n                                        new Promise((resolveFolder) => {\n                                            FileUtils.flatten(item).then((files) => resolveFolder(files));\n                                        })\n                                    );\n                                }\n                            }\n                        } else {\n                            iterations.push(\n                                Promise.resolve({\n                                    entry: null,\n                                    file: items[i].getAsFile(),\n                                    relativeFolder: '/'\n                                })\n                            );\n                        }\n                    }\n                } else {\n                    // safari or FF\n                    const files = FileUtils.toFileArray(dataTransfer.files).map((file) => ({\n                        entry: null,\n                        file,\n                        relativeFolder: '/'\n                    }));\n\n                    iterations.push(Promise.resolve(files));\n                }\n            }\n\n            Promise.all(iterations).then((result) => {\n                resolve(result.reduce((a, b) => a.concat(b), []));\n            });\n        });\n    }\n\n    /**\n     * Invoked when user selects files or folders by means of File Dialog\n     *\n     * @param event DOM event\n     */\n    onSelectFiles(event: any): void {\n        if (this.isClickMode()) {\n            const input = event.currentTarget;\n            const files = FileUtils.toFileArray(input.files);\n            this.onUploadFiles(\n                files.map((file) => ({\n                    entry: null,\n                    file,\n                    relativeFolder: '/'\n                }))\n            );\n            event.target.value = '';\n        }\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NgModule } from '@angular/core';\nimport { HighlightDirective } from './highlight.directive';\nimport { InfiniteSelectScrollDirective } from './infinite-select-scroll.directive';\nimport { LogoutDirective } from './logout.directive';\nimport { TooltipCardComponent } from './tooltip-card/tooltip-card.component';\nimport { TooltipCardDirective } from './tooltip-card/tooltip-card.directive';\nimport { UploadDirective } from './upload.directive';\n\nexport const CORE_DIRECTIVES = [\n    HighlightDirective,\n    LogoutDirective,\n    UploadDirective,\n    TooltipCardDirective,\n    TooltipCardComponent,\n    InfiniteSelectScrollDirective\n];\n\n/** @deprecated use `...CORE_DIRECTIVES` or import standalone directives directly  */\n@NgModule({\n    imports: [...CORE_DIRECTIVES],\n    exports: [...CORE_DIRECTIVES]\n})\nexport class DirectiveModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './tooltip-card/tooltip-card.directive';\nexport * from './tooltip-card/tooltip-card.component';\n\nexport * from './highlight.directive';\nexport * from './infinite-select-scroll.directive';\nexport * from './logout.directive';\nexport * from './upload.directive';\n\nexport * from './directive.module';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { OverlayRef } from '@angular/cdk/overlay';\n\nexport class ContextMenuOverlayRef {\n    constructor(private readonly overlayRef: OverlayRef) {}\n\n    close(): void {\n        this.overlayRef.dispose();\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { state, style, animate, transition, query, group, sequence, AnimationStateMetadata, AnimationTransitionMetadata } from '@angular/animations';\n\nexport const contextMenuAnimation: (AnimationStateMetadata | AnimationTransitionMetadata)[] = [\n    state(\n        'void',\n        style({\n            opacity: 0,\n            transform: 'scale(0.01, 0.01)'\n        })\n    ),\n    transition(\n        'void => *',\n        sequence([\n            query('.mat-mdc-menu-content', style({ opacity: 0 })),\n            animate('100ms linear', style({ opacity: 1, transform: 'scale(1, 0.5)' })),\n            group([\n                query('.mat-mdc-menu-content', animate('400ms cubic-bezier(0.55, 0, 0.55, 0.2)', style({ opacity: 1 }))),\n                animate('300ms cubic-bezier(0.25, 0.8, 0.25, 1)', style({ transform: 'scale(1, 1)' }))\n            ])\n        ])\n    ),\n    transition('* => void', animate('150ms 50ms linear', style({ opacity: 0 })))\n];\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { InjectionToken } from '@angular/core';\nimport { ContextMenuItem } from './interfaces';\n\nexport const CONTEXT_MENU_DATA = new InjectionToken<ContextMenuItem[]>('CONTEXT_MENU_DATA');\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { trigger } from '@angular/animations';\nimport { FocusKeyManager } from '@angular/cdk/a11y';\nimport { MatMenuItem, MatMenuModule } from '@angular/material/menu';\nimport { ContextMenuOverlayRef } from './context-menu-overlay';\nimport { contextMenuAnimation } from './animations';\nimport { CONTEXT_MENU_DATA } from './context-menu.tokens';\nimport { AfterViewInit, Component, HostListener, QueryList, ViewChildren, ViewEncapsulation, inject } from '@angular/core';\nimport { NgForOf, NgIf } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { DOWN_ARROW, UP_ARROW } from '@angular/cdk/keycodes';\nimport { IconModule } from '../icon/icon.module';\nimport { ContextMenuItem } from './interfaces';\n\n@Component({\n    selector: 'adf-context-menu',\n    templateUrl: './context-menu-list.component.html',\n    styleUrls: ['./context-menu-list.component.scss'],\n    host: {\n        role: 'menu',\n        class: 'adf-context-menu'\n    },\n    encapsulation: ViewEncapsulation.None,\n    imports: [IconModule, MatMenuModule, NgForOf, NgIf, TranslatePipe],\n    animations: [trigger('panelAnimation', contextMenuAnimation)]\n})\nexport class ContextMenuListComponent implements AfterViewInit {\n    private readonly contextMenuOverlayRef = inject<ContextMenuOverlayRef>(ContextMenuOverlayRef);\n    private readonly data = inject(CONTEXT_MENU_DATA, { optional: true });\n\n    private keyManager: FocusKeyManager<MatMenuItem>;\n    @ViewChildren(MatMenuItem) items: QueryList<MatMenuItem>;\n    links: ContextMenuItem[];\n\n    @HostListener('document:keydown.Escape', ['$event'])\n    handleKeydownEscape(event: Event) {\n        if (event) {\n            this.contextMenuOverlayRef.close();\n        }\n    }\n\n    @HostListener('document:keydown', ['$event'])\n    handleKeydownEvent(event: KeyboardEvent) {\n        if (event) {\n            const keyCode = event.keyCode;\n            if (keyCode === UP_ARROW || keyCode === DOWN_ARROW) {\n                this.keyManager.onKeydown(event);\n            }\n        }\n    }\n\n    constructor() {\n        this.links = this.data;\n    }\n\n    onMenuItemClick(event: Event, menuItem: ContextMenuItem) {\n        if (menuItem?.model?.disabled) {\n            event.preventDefault();\n            event.stopImmediatePropagation();\n            return;\n        }\n\n        menuItem.subject.next(menuItem);\n        this.contextMenuOverlayRef.close();\n    }\n\n    ngAfterViewInit() {\n        this.keyManager = new FocusKeyManager<MatMenuItem>(this.items);\n        this.keyManager.setFirstItemActive();\n    }\n}\n","<div mat-menu class=\"mat-mdc-menu-panel mdc-menu-surface mdc-menu-surface--open\" @panelAnimation>\n    <div id=\"adf-context-menu-content\" class=\"mat-mdc-menu-content\">\n        <ng-container *ngFor=\"let link of links\">\n            <button *ngIf=\"link.model?.visible\"\n                    [attr.data-automation-id]=\"'context-' + (link.title || link.model?.title | translate)\"\n                    mat-menu-item\n                    [disabled]=\"link.model?.disabled\"\n                    [title]=\"link.model?.tooltip | translate\"\n                    (click)=\"onMenuItemClick($event, link)\">\n                <mat-icon *ngIf=\"link.model?.icon\" [adf-icon]=\"link.model.icon\" />\n                <span>{{ link.title || link.model?.title | translate }}</span>\n            </button>\n        </ng-container>\n    </div>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable, Injector, ElementRef, ComponentRef, inject } from '@angular/core';\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ContextMenuOverlayRef } from './context-menu-overlay';\nimport { ContextMenuOverlayConfig } from './interfaces';\nimport { CONTEXT_MENU_DATA } from './context-menu.tokens';\nimport { ContextMenuListComponent } from './context-menu-list.component';\n\nconst DEFAULT_CONFIG: ContextMenuOverlayConfig = {\n    panelClass: 'cdk-overlay-pane',\n    backdropClass: 'cdk-overlay-transparent-backdrop',\n    hasBackdrop: true\n};\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class ContextMenuOverlayService {\n    private readonly injector = inject(Injector);\n    private readonly overlay = inject(Overlay);\n\n    open(config: ContextMenuOverlayConfig): ContextMenuOverlayRef {\n        const overlayConfig = { ...DEFAULT_CONFIG, ...config };\n\n        const overlay = this.createOverlay(overlayConfig);\n\n        const overlayRef = new ContextMenuOverlayRef(overlay);\n\n        this.attachDialogContainer(overlay, config, overlayRef);\n\n        overlay.backdropClick().subscribe(() => overlayRef.close());\n\n        // prevent native contextmenu on overlay element if config.hasBackdrop is true\n        if (overlayConfig.hasBackdrop && overlay.backdropElement) {\n            overlay.backdropElement.addEventListener(\n                'contextmenu',\n                (event) => {\n                    event.preventDefault();\n                    overlayRef.close();\n                },\n                true\n            );\n        }\n\n        return overlayRef;\n    }\n\n    private createOverlay(config: ContextMenuOverlayConfig): OverlayRef {\n        const overlayConfig = this.getOverlayConfig(config);\n        return this.overlay.create(overlayConfig);\n    }\n\n    private attachDialogContainer(overlay: OverlayRef, config: ContextMenuOverlayConfig, contextMenuOverlayRef: ContextMenuOverlayRef) {\n        const injector = this.createInjector(config, contextMenuOverlayRef);\n\n        const containerPortal = new ComponentPortal(ContextMenuListComponent, null, injector);\n        const containerRef: ComponentRef<ContextMenuListComponent> = overlay.attach(containerPortal);\n\n        return containerRef.instance;\n    }\n\n    private createInjector(config: ContextMenuOverlayConfig, contextMenuOverlayRef: ContextMenuOverlayRef): Injector {\n        return Injector.create({\n            parent: this.injector,\n            providers: [\n                { provide: ContextMenuOverlayRef, useValue: contextMenuOverlayRef },\n                { provide: CONTEXT_MENU_DATA, useValue: config.data }\n            ]\n        });\n    }\n\n    private getOverlayConfig(config: ContextMenuOverlayConfig): OverlayConfig {\n        const { clientY, clientX } = config.source;\n\n        const fakeElement: Pick<HTMLElement, 'getBoundingClientRect'> = {\n            getBoundingClientRect: (): DOMRect =>\n                ({\n                    bottom: clientY,\n                    height: 0,\n                    left: clientX,\n                    right: clientX,\n                    top: clientY,\n                    width: 0,\n                    x: clientX,\n                    y: clientY,\n                    toJSON: () => ({})\n                }) as DOMRect\n        };\n\n        const positionStrategy = this.overlay\n            .position()\n            .flexibleConnectedTo(new ElementRef(fakeElement))\n            .withPositions([\n                {\n                    originX: 'start',\n                    originY: 'bottom',\n                    overlayX: 'start',\n                    overlayY: 'top'\n                }\n            ]);\n\n        const overlayConfig = new OverlayConfig({\n            hasBackdrop: config.hasBackdrop,\n            backdropClass: config.backdropClass,\n            panelClass: config.panelClass,\n            scrollStrategy: this.overlay.scrollStrategies.close(),\n            positionStrategy\n        });\n\n        return overlayConfig;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/no-input-rename */\n\nimport { Directive, HostListener, Input, inject } from '@angular/core';\nimport { ContextMenuOverlayService } from './context-menu-overlay.service';\n\n@Directive({\n    selector: '[adf-context-menu]'\n})\nexport class ContextMenuDirective {\n    private readonly contextMenuService = inject(ContextMenuOverlayService);\n\n    /** Items for the menu. */\n    @Input('adf-context-menu')\n    links: any[] | (() => any[]);\n\n    /** Is the menu enabled? */\n    @Input('adf-context-menu-enabled')\n    enabled: boolean = false;\n\n    @HostListener('contextmenu', ['$event'])\n    onShowContextMenu(event?: MouseEvent) {\n        if (this.enabled) {\n            if (event) {\n                event.preventDefault();\n            }\n\n            if (this.links) {\n                const actions = typeof this.links === 'function' ? this.links() : this.links;\n                if (actions.length > 0) {\n                    this.contextMenuService.open({\n                        source: event,\n                        data: actions\n                    });\n                }\n            }\n        }\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NgModule } from '@angular/core';\nimport { ContextMenuDirective } from './context-menu.directive';\nimport { ContextMenuListComponent } from './context-menu-list.component';\n\nexport const CONTEXT_MENU_DIRECTIVES = [ContextMenuListComponent, ContextMenuDirective] as const;\n\n/** @deprecated use `...CONTEXT_MENU_DIRECTIVES` or import standalone directives */\n@NgModule({\n    imports: [...CONTEXT_MENU_DIRECTIVES],\n    exports: [...CONTEXT_MENU_DIRECTIVES]\n})\nexport class ContextMenuModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './context-menu-list.component';\nexport * from './context-menu.directive';\nexport * from './context-menu-overlay.service';\nexport * from './context-menu.module';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation, computed } from '@angular/core';\nimport { DataTableCellComponent } from '../datatable-cell/datatable-cell.component';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { IconModule } from '../../../icon/icon.module';\n\n@Component({\n    imports: [IconModule],\n    selector: 'adf-icon-cell',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template: `\n        @if (icon()) {\n            <mat-icon [title]=\"title()\" aria-hidden=\"true\" [adf-icon]=\"icon()\" />\n        }\n    `,\n    encapsulation: ViewEncapsulation.None,\n    host: { class: 'adf-datatable-content-cell' }\n})\nexport class IconCellComponent extends DataTableCellComponent {\n    private readonly iconValue = toSignal(this.value$);\n\n    readonly icon = computed(() => {\n        const value = this.iconValue();\n        return this.validateIconValue(value) ? value : '';\n    });\n\n    private validateIconValue(value: unknown): boolean {\n        return typeof value === 'string';\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChangeDetectionStrategy, Component, Input, OnInit, ViewEncapsulation, inject, effect, signal, computed } from '@angular/core';\nimport { DataTableCellComponent } from '../datatable-cell/datatable-cell.component';\nimport { AppConfigService } from '../../../app-config/app-config.service';\nimport { DateConfig } from '../../data/data-column.model';\nimport { LocalizedDatePipe, TimeAgoPipe } from '../../../pipes';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\n@Component({\n    selector: 'adf-date-cell',\n    template: `\n        @if (formattedDate()) {\n            <span [title]=\"title()\" class=\"adf-datatable-cell-value\">{{ formattedDate() }}</span>\n        }\n    `,\n    encapsulation: ViewEncapsulation.None,\n    host: { class: 'adf-datatable-content-cell' },\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [LocalizedDatePipe, TimeAgoPipe]\n})\nexport class DateCellComponent extends DataTableCellComponent implements OnInit {\n    @Input()\n    dateConfig: DateConfig;\n\n    config = signal<DateConfig>({});\n\n    private readonly appConfig = inject(AppConfigService);\n    private readonly localizedDatePipe = inject(LocalizedDatePipe);\n    private readonly timeAgoPipe = inject(TimeAgoPipe);\n\n    private userLocale: string = 'en';\n\n    readonly defaultDateConfig: DateConfig = {\n        format: 'medium',\n        tooltipFormat: 'medium',\n        locale: undefined\n    };\n\n    // Convert value$ observable to signal for reactive computation\n    private readonly dateValue = toSignal(this.value$);\n\n    // Computed signal that automatically formats the date based on value and config\n    protected readonly formattedDate = computed(() => {\n        const date = this.dateValue();\n        const currentConfig = this.config();\n\n        if (!date) {\n            return '';\n        }\n        if (currentConfig.format === 'timeAgo') {\n            return this.timeAgoPipe.transform(date, currentConfig.locale) || '';\n        }\n\n        return this.localizedDatePipe.transform(date, currentConfig.format, currentConfig.locale) || '';\n    });\n\n    constructor() {\n        super();\n        // Use effect to react to locale signal changes (must be in injection context)\n        effect(() => {\n            this.userLocale = this.userPreferencesService.localeSignal() || 'en';\n            this.setConfig();\n        });\n    }\n\n    ngOnInit(): void {\n        super.ngOnInit();\n    }\n\n    protected override computeTitle(value: any): string {\n        if (value) {\n            const currentConfig = this.config();\n            return this.localizedDatePipe.transform(value, currentConfig.tooltipFormat, currentConfig.locale) || '';\n        }\n        return '';\n    }\n\n    private setConfig(): void {\n        if (this.dateConfig) {\n            this.setCustomConfig();\n        } else {\n            this.setDefaultConfig();\n        }\n    }\n\n    private setCustomConfig(): void {\n        this.config.set({\n            format: this.dateConfig?.format || this.getDefaultFormat(),\n            tooltipFormat: this.dateConfig?.tooltipFormat || this.getDefaultTooltipFormat(),\n            locale: this.normalizeLocale(this.dateConfig?.locale || this.userLocale)\n        });\n    }\n\n    private setDefaultConfig(): void {\n        this.config.set({\n            format: this.getDefaultFormat(),\n            tooltipFormat: this.getDefaultTooltipFormat(),\n            locale: this.normalizeLocale(this.userLocale)\n        });\n    }\n\n    private normalizeLocale(locale: string): string {\n        if (!locale) {\n            return locale;\n        }\n        // Extract language code from locale like 'fr-FR' -> 'fr', 'en-US' -> 'en'\n        // but keep special cases like 'pt-BR' and 'zh-CN' intact\n        if (locale === 'pt-BR' || locale === 'zh-CN') {\n            return locale;\n        }\n        return locale.split('-')[0];\n    }\n\n    private getDefaultFormat(): string {\n        return this.column?.format || this.getAppConfigPropertyValue('dateValues.defaultDateFormat', this.defaultDateConfig.format);\n    }\n\n    private getDefaultTooltipFormat(): string {\n        return this.getAppConfigPropertyValue('dateValues.defaultTooltipDateFormat', this.defaultDateConfig.tooltipFormat);\n    }\n\n    private getAppConfigPropertyValue(key: string, defaultValue: string): string {\n        return this.appConfig.get(key, defaultValue);\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { DataTableCellComponent } from '../datatable-cell/datatable-cell.component';\nimport { RouterModule } from '@angular/router';\nimport { PathInfo } from '../../../models/path.model';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\n@Component({\n    imports: [RouterModule],\n    selector: 'adf-location-cell',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template: `\n        <a [title]=\"tooltip\" [routerLink]=\"link\">\n            {{ locationValue() }}\n        </a>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    host: { class: 'adf-location-cell adf-datatable-content-cell' }\n})\nexport class LocationCellComponent extends DataTableCellComponent {\n    @Input()\n    link: (string | number)[];\n\n    readonly locationValue = toSignal(this.value$);\n\n    protected updateValue(): void {\n        if (this.column?.key && this.column?.format && this.row && this.data) {\n            const path: PathInfo = this.data.getValue(this.row, this.column, this.resolverFn);\n\n            if (path?.name && path?.elements) {\n                this.value$.next(path.name.split('/').pop());\n\n                if (!this.tooltip) {\n                    this.tooltip = path.name;\n                }\n\n                const parent = path.elements[path.elements.length - 1];\n                this.link = [this.column.format, parent.id];\n            }\n        }\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, ViewEncapsulation } from '@angular/core';\nimport { DataTableCellComponent } from '../datatable-cell/datatable-cell.component';\nimport { FileSizePipe } from '../../../pipes';\nimport { AsyncPipe } from '@angular/common';\n\n@Component({\n    selector: 'adf-filesize-cell',\n    imports: [FileSizePipe, AsyncPipe],\n    template: `\n        @let value = value$ | async;\n        <span [title]=\"value | adfFileSize\" class=\"adf-datatable-cell-value\">{{ value | adfFileSize }}</span>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    host: { class: 'adf-filesize-cell' },\n    providers: [FileSizePipe]\n})\nexport class FileSizeCellComponent extends DataTableCellComponent {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, OnInit, Input, ViewEncapsulation, inject } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslatePipe } from '@ngx-translate/core';\n\nexport interface EditJsonDialogSettings {\n    title?: string;\n    editable?: boolean;\n    value?: string;\n}\n\n@Component({\n    standalone: true,\n    imports: [MatDialogModule, FormsModule, MatButtonModule, TranslatePipe],\n    templateUrl: './edit-json.dialog.html',\n    styleUrls: ['./edit-json.dialog.scss'],\n    encapsulation: ViewEncapsulation.None,\n    host: { class: 'adf-edit-json-dialog' }\n})\nexport class EditJsonDialogComponent implements OnInit {\n    private readonly settings = inject<EditJsonDialogSettings>(MAT_DIALOG_DATA);\n\n    editable: boolean = false;\n    title: string = 'JSON';\n\n    @Input()\n    value: string = '';\n\n    ngOnInit() {\n        if (this.settings) {\n            this.editable = this.settings.editable;\n            this.value = this.settings.value || '';\n            this.title = this.settings.title || 'JSON';\n        }\n    }\n}\n","<h1 mat-dialog-title>{{ title | translate }}</h1>\n<mat-dialog-content class=\"adf-edit-json-dialog-content\">\n    <textarea [(ngModel)]=\"value\" [attr.readonly]=\"!editable ? true : null\"></textarea>\n</mat-dialog-content>\n\n<mat-dialog-actions align=\"end\">\n    <button mat-button mat-dialog-close cdkFocusInitial>\n        {{ 'CORE.DIALOG.EDIT_JSON.CLOSE' | translate }}\n    </button>\n    <button *ngIf=\"editable\" mat-button [mat-dialog-close]=\"value\">\n        {{ 'CORE.DIALOG.EDIT_JSON.UPDATE' | translate }}\n    </button>\n</mat-dialog-actions>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation, Input, computed, inject } from '@angular/core';\nimport { DataTableCellComponent } from '../datatable-cell/datatable-cell.component';\nimport { MatDialog, MatDialogModule } from '@angular/material/dialog';\nimport { EditJsonDialogComponent, EditJsonDialogSettings } from '../../../dialogs/edit-json/edit-json.dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\n@Component({\n    selector: 'adf-json-cell',\n    imports: [MatButtonModule, MatDialogModule],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template: `\n        @if (shouldShowButton()) {\n            <button mat-button (click)=\"view()\">json</button>\n        }\n    `,\n    styleUrls: ['./json-cell.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    host: { class: 'adf-datatable-content-cell' }\n})\nexport class JsonCellComponent extends DataTableCellComponent {\n    private readonly dialog = inject(MatDialog);\n\n    /** Editable JSON. */\n    @Input()\n    editable: boolean = false;\n\n    private readonly jsonValue = toSignal(this.value$);\n\n    readonly shouldShowButton = computed(() => {\n        const value = this.jsonValue();\n        return !!value || this.editable;\n    });\n\n    view() {\n        const rawValue = this.data.getValue(this.row, this.column, this.resolverFn);\n        const value = typeof rawValue === 'object' ? JSON.stringify(rawValue || {}, null, 2) : String(rawValue ?? '');\n\n        const settings: EditJsonDialogSettings = {\n            title: this.column.title,\n            editable: this.editable,\n            value\n        };\n\n        this.dialog\n            .open(EditJsonDialogComponent, {\n                data: settings,\n                minWidth: '50%',\n                minHeight: '50%'\n            })\n            .afterClosed()\n            .subscribe();\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation, Input, computed } from '@angular/core';\nimport { DataTableCellComponent } from '../datatable-cell/datatable-cell.component';\nimport { DecimalConfig } from '../../data/data-column.model';\nimport { CommonModule } from '@angular/common';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\n@Component({\n    imports: [CommonModule],\n    selector: 'adf-number-cell',\n    templateUrl: './number-cell.component.html',\n    host: { class: 'adf-datatable-content-cell' },\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NumberCellComponent extends DataTableCellComponent {\n    @Input()\n    decimalConfig: DecimalConfig;\n\n    readonly defaultDecimalConfig: DecimalConfig = {\n        digitsInfo: undefined,\n        locale: undefined\n    };\n\n    private readonly rawNumberValue = toSignal(this.value$);\n\n    readonly numberValue = computed<number | null>(() => {\n        const value = this.rawNumberValue();\n\n        if (value == null || value === '' || typeof value === 'boolean') {\n            return null;\n        }\n\n        const numericValue = Number(value);\n\n        return Number.isFinite(numericValue) ? numericValue : null;\n    });\n}\n","@let number = numberValue();\n@if (number) {\n    <span [title]=\"number\">\n        {{ number | number:\n            (decimalConfig?.digitsInfo || defaultDecimalConfig.digitsInfo):\n            (decimalConfig?.locale || defaultDecimalConfig.locale)\n        }}\n    </span>\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/no-conflicting-lifecycle */\n\nimport {\n    AfterContentInit,\n    AfterViewInit,\n    Component,\n    ContentChild,\n    DestroyRef,\n    DoCheck,\n    ElementRef,\n    EventEmitter,\n    HostListener,\n    inject,\n    Input,\n    IterableDiffers,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    Output,\n    QueryList,\n    SimpleChange,\n    SimpleChanges,\n    TemplateRef,\n    ViewChild,\n    ViewChildren,\n    ViewEncapsulation\n} from '@angular/core';\nimport { ConfigurableFocusTrap, ConfigurableFocusTrapFactory, FocusKeyManager } from '@angular/cdk/a11y';\nimport { MatCheckboxChange, MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatMenuModule, MatMenuTrigger } from '@angular/material/menu';\nimport { Observable, Observer, Subscription } from 'rxjs';\nimport { DataColumnListComponent } from '../../data-column/data-column-list.component';\nimport { DataColumn } from '../../data/data-column.model';\nimport { DataRowEvent } from '../../data/data-row-event.model';\nimport { DataRow } from '../../data/data-row.model';\nimport { DataSorting } from '../../data/data-sorting.model';\nimport { DataTableAdapter } from '../../data/datatable-adapter';\nimport { DataTableRowComponent } from '../datatable-row/datatable-row.component';\nimport { ObjectDataRow } from '../../data/object-datarow.model';\nimport { ObjectDataColumn } from '../../data/object-datacolumn.model';\nimport { ObjectDataTableAdapter } from '../../data/object-datatable-adapter';\nimport { DataCellEvent } from '../data-cell.event';\nimport { DataRowActionEvent } from '../data-row-action.event';\nimport { buffer, debounceTime, filter, map, share } from 'rxjs/operators';\nimport { CdkDrag, CdkDragDrop, CdkDragHandle, CdkDropList, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { ResizeEvent } from '../../directives/resizable/types';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { FileTypePipe, LocalizedDatePipe } from '../../../pipes';\nimport { DropZoneDirective } from '../../directives/drop-zone.directive';\nimport { ResizableDirective } from '../../directives/resizable/resizable.directive';\nimport { ResizeHandleDirective } from '../../directives/resizable/resize-handle.directive';\nimport { MatButtonModule } from '@angular/material/button';\nimport { UploadDirective } from '../../../directives';\nimport { ContextMenuDirective } from '../../../context-menu';\nimport { IconCellComponent } from '../icon-cell/icon-cell.component';\nimport { DateCellComponent } from '../date-cell/date-cell.component';\nimport { LocationCellComponent } from '../location-cell/location-cell.component';\nimport { FileSizeCellComponent } from '../filesize-cell/filesize-cell.component';\nimport { DataTableCellComponent } from '../datatable-cell/datatable-cell.component';\nimport { BooleanCellComponent } from '../boolean-cell/boolean-cell.component';\nimport { JsonCellComponent } from '../json-cell/json-cell.component';\nimport { AmountCellComponent } from '../amount-cell/amount-cell.component';\nimport { NumberCellComponent } from '../number-cell/number-cell.component';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { IconModule } from '../../../icon/icon.module';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nexport const ShowHeaderMode = {\n    Never: 'never',\n    Always: 'always',\n    Data: 'data'\n} as const;\n\nexport type ShowHeaderMode = (typeof ShowHeaderMode)[keyof typeof ShowHeaderMode];\n\n@Component({\n    selector: 'adf-datatable',\n    imports: [\n        CommonModule,\n        DataTableRowComponent,\n        CdkDropList,\n        TranslatePipe,\n        MatCheckboxModule,\n        CdkDrag,\n        DropZoneDirective,\n        ResizableDirective,\n        CdkDragHandle,\n        ResizeHandleDirective,\n        MatButtonModule,\n        MatMenuModule,\n        IconModule,\n        UploadDirective,\n        ContextMenuDirective,\n        FileTypePipe,\n        IconCellComponent,\n        LocalizedDatePipe,\n        DateCellComponent,\n        LocationCellComponent,\n        FileSizeCellComponent,\n        DataTableCellComponent,\n        BooleanCellComponent,\n        JsonCellComponent,\n        AmountCellComponent,\n        NumberCellComponent,\n        MatTooltipModule\n    ],\n    templateUrl: './datatable.component.html',\n    styleUrls: ['./datatable.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    host: { class: 'adf-datatable' }\n})\nexport class DataTableComponent implements OnInit, AfterContentInit, OnChanges, DoCheck, OnDestroy, AfterViewInit {\n    private readonly elementRef = inject(ElementRef);\n    private readonly matIconRegistry = inject(MatIconRegistry);\n    private readonly sanitizer = inject(DomSanitizer);\n    private readonly focusTrapFactory = inject(ConfigurableFocusTrapFactory);\n\n    private static readonly MINIMUM_COLUMN_SIZE = 100;\n\n    @ViewChildren(DataTableRowComponent)\n    rowsList: QueryList<DataTableRowComponent>;\n\n    @ViewChild('mainMenuTemplate')\n    mainMenuTemplate: ElementRef;\n\n    @ContentChild(DataColumnListComponent)\n    columnList: DataColumnListComponent;\n\n    /** Data source for the table */\n    @Input()\n    data: DataTableAdapter;\n\n    /** The rows that the datatable will show. */\n    @Input()\n    rows: any[] = [];\n\n    /**\n     * Define the sort order of the datatable. Possible values are :\n     * [`created`, `desc`], [`created`, `asc`], [`due`, `desc`], [`due`, `asc`]\n     */\n    @Input()\n    sorting: any[] = [];\n\n    /** The columns that the datatable will show. */\n    @Input()\n    columns: any[] = [];\n\n    /**\n     * Row selection mode. Can be none, `single` or `multiple`. For `multiple` mode,\n     * you can use Cmd (macOS) or Ctrl (Win) modifier key to toggle selection for multiple rows.\n     */\n    @Input()\n    selectionMode: string = 'single'; // none|single|multiple\n\n    /** Toggles multiple row selection, which renders checkboxes at the beginning of each row. */\n    @Input()\n    multiselect: boolean = false;\n\n    /** Toggles main data table action column. */\n    @Input()\n    mainTableAction: boolean = true;\n\n    /** Toggles the data actions column. */\n    @Input()\n    actions: boolean = false;\n\n    /** Toggles the main datatable action. */\n    @Input()\n    showMainDatatableActions: boolean = false;\n\n    /** Toggles the provided actions. */\n    @Input()\n    showProvidedActions: boolean = false;\n\n    /** Position of the actions dropdown menu. Can be \"left\" or \"right\". */\n    @Input()\n    actionsPosition: string = 'right'; // left|right\n\n    /** Toggles whether the actions dropdown should only be visible if the row is hovered over or the dropdown menu is open. */\n    @Input()\n    actionsVisibleOnHover: boolean = false;\n\n    /** Fallback image for rows where the thumbnail is missing. */\n    @Input()\n    fallbackThumbnail: string;\n\n    /** Toggles custom context menu for the component. */\n    @Input()\n    contextMenu: boolean = false;\n\n    /**\n     * The inline style to apply to every row. See\n     * [NgStyle](https://angular.io/docs/ts/latest/api/common/index/NgStyle-directive.html)\n     * docs for more details and usage examples.\n     */\n    @Input()\n    rowStyle: { [key: string]: any };\n\n    /** The CSS class to apply to every row. */\n    @Input()\n    rowStyleClass: string = '';\n\n    /** Toggles the header. */\n    @Input()\n    showHeader: ShowHeaderMode = ShowHeaderMode.Data;\n\n    /** Toggles the sticky header mode. */\n    @Input()\n    stickyHeader: boolean = false;\n\n    /** Emitted when the user clicks a row. */\n    @Output()\n    rowClick = new EventEmitter<DataRowEvent>();\n\n    /** Emitted when the user double-clicks a row. */\n    @Output()\n    rowDblClick = new EventEmitter<DataRowEvent>();\n\n    /** Emitted before the context menu is displayed for a row. */\n    @Output()\n    showRowContextMenu = new EventEmitter<DataCellEvent>();\n\n    /** Emitted before the actions menu is displayed for a row. */\n    @Output()\n    showRowActionsMenu = new EventEmitter<DataCellEvent>();\n\n    /** Emitted when the user executes a row action. */\n    @Output()\n    executeRowAction = new EventEmitter<DataRowActionEvent>();\n\n    /** Emitted when the column order is changed. */\n    @Output()\n    columnOrderChanged = new EventEmitter<DataColumn[]>();\n\n    /** Emitted when the column width is changed. */\n    @Output()\n    columnsWidthChanged = new EventEmitter<DataColumn[]>();\n\n    /** Emitted when the selected row items count in the table changed. */\n    @Output()\n    selectedItemsCountChanged = new EventEmitter<number>();\n\n    /**\n     * Flag that indicates if the datatable is in loading state and needs to show the\n     * loading template (see the docs to learn how to configure a loading template).\n     */\n    @Input()\n    loading: boolean = false;\n\n    /** Flag that indicates if the datatable should show the \"no permission\" template. */\n    @Input()\n    noPermission: boolean = false;\n\n    /**\n     * Should the items for the row actions menu be cached for reuse after they are loaded\n     * the first time?\n     */\n    @Input()\n    rowMenuCacheEnabled = true;\n\n    /**\n     * Custom resolver function which is used to parse dynamic column objects\n     * see the docs to learn how to configure a resolverFn.\n     */\n    @Input()\n    resolverFn: (row: DataRow, col: DataColumn) => any = null;\n\n    /**\n     * Flag that indicate if the datatable allow the use facet widget search for filtering.\n     */\n    @Input()\n    allowFiltering: boolean = false;\n\n    /**\n     * Flag that indicates if the datatable allows column resizing.\n     */\n    @Input()\n    isResizingEnabled = false;\n\n    /**\n     * Flag that indicates if the datatable should be blurred when resizing.\n     */\n    @Input()\n    blurOnResize = true;\n\n    /**\n     * Flag that indicates if selection checkboxes inside row should be displayed on hover only.\n     */\n    @Input()\n    displayCheckboxesOnHover = false;\n\n    /**\n     * Flag that enables dragging rows\n     */\n    @Input()\n    enableDragRows = false;\n\n    /** Emitted when dragged row is dropped. */\n    @Output()\n    dragDropped = new EventEmitter<{ previousIndex: number; currentIndex: number }>();\n\n    headerFilterTemplate: TemplateRef<any>;\n    noContentTemplate: TemplateRef<any>;\n    noPermissionTemplate: TemplateRef<any>;\n    loadingTemplate: TemplateRef<any>;\n    mainActionTemplate: TemplateRef<any>;\n\n    isSelectAllIndeterminate: boolean = false;\n    isSelectAllChecked: boolean = false;\n    selection = new Array<DataRow>();\n    selectedRowId: string = '';\n\n    isDraggingHeaderColumn = false;\n    hoveredHeaderColumnIndex = -1;\n    resizingColumnIndex = -1;\n    isDraggingRow = false;\n    focusTrap: ConfigurableFocusTrap;\n\n    private keyManager: FocusKeyManager<DataTableRowComponent>;\n    private clickObserver: Observer<DataRowEvent>;\n    private readonly click$: Observable<DataRowEvent>;\n\n    private readonly differ: any;\n    private rowMenuCache: any = {};\n\n    private singleClickStreamSub: Subscription;\n    private multiClickStreamSub: Subscription;\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    @HostListener('keyup', ['$event'])\n    onKeydown(event: KeyboardEvent): void {\n        if (event.shiftKey && this.enableDragRows) {\n            switch (event.key) {\n                case 'ArrowUp': {\n                    if (this.keyManager.activeItemIndex > 1) {\n                        this.dragDropped.emit({\n                            previousIndex: this.keyManager.activeItemIndex - 1,\n                            currentIndex: this.keyManager.activeItemIndex - 2\n                        });\n                        setTimeout(() => {\n                            this.keyManager.setActiveItem(this.keyManager.activeItemIndex - 1);\n                        });\n                    }\n                    break;\n                }\n                case 'ArrowDown': {\n                    if (this.keyManager.activeItemIndex < this.rowsList.length - 1) {\n                        this.dragDropped.emit({ previousIndex: this.keyManager.activeItemIndex - 1, currentIndex: this.keyManager.activeItemIndex });\n                        setTimeout(() => {\n                            this.keyManager.setActiveItem(this.keyManager.activeItemIndex + 1);\n                        });\n                    }\n                    break;\n                }\n                default:\n                    break;\n            }\n        } else {\n            this.keyManager.onKeydown(event);\n        }\n    }\n\n    constructor() {\n        const differs = inject(IterableDiffers);\n\n        if (differs) {\n            this.differ = differs.find([]).create(null);\n        }\n\n        this.click$ = new Observable<DataRowEvent>((observer) => (this.clickObserver = observer)).pipe(share());\n    }\n\n    ngOnInit(): void {\n        this.registerDragHandleIcon();\n    }\n\n    ngAfterContentInit() {\n        if (this.columnList) {\n            this.columnList.columns.changes.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n                this.setTableSchema();\n            });\n        }\n        this.setTableSchema();\n    }\n\n    ngAfterViewInit() {\n        this.keyManager = new FocusKeyManager(this.rowsList).withWrap().skipPredicate((item) => item.disabled);\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        this.initAndSubscribeClickStream();\n        if (this.selectedRowId) {\n            this.setRowAsContextSource();\n        }\n\n        const dataChanges = changes['data'];\n        const rowChanges = changes['rows'];\n        const columnChanges = changes['columns'];\n        const multiselectChanges = changes['multiselect'];\n\n        if (this.isPropertyChanged(dataChanges) || this.isPropertyChanged(rowChanges) || this.isPropertyChanged(columnChanges)) {\n            if (this.isTableEmpty()) {\n                this.initTable();\n            } else {\n                if (dataChanges) {\n                    this.data = changes['data'].currentValue;\n                    this.resetSelection();\n                }\n\n                if (rowChanges) {\n                    this.setTableRows(changes['rows'].currentValue);\n                    this.setTableSorting(this.sorting);\n                }\n\n                if (columnChanges) {\n                    this.setTableColumns(changes['columns'].currentValue);\n                }\n            }\n\n            return;\n        }\n\n        if (changes.selectionMode && !changes.selectionMode.isFirstChange()) {\n            this.resetSelection();\n            this.emitRowSelectionEvent('row-unselect', null);\n        }\n\n        if (this.isPropertyChanged(changes['sorting'])) {\n            this.setTableSorting(changes['sorting'].currentValue);\n        }\n\n        if (multiselectChanges?.currentValue === false) {\n            this.resetSelection();\n        }\n    }\n\n    isColumnSortActive(column: DataColumn): boolean {\n        const sorting = this.data.getSorting();\n        if (!column || !sorting) {\n            return false;\n        }\n        return column.key === sorting.key || column.sortingKey === sorting.key;\n    }\n\n    getVisibleColumns(): DataColumn[] {\n        return this.data.getColumns().filter((column) => !column.isHidden);\n    }\n\n    onDropHeaderColumn(event: CdkDragDrop<unknown>): void {\n        const allColumns = this.data.getColumns();\n        const shownColumns = allColumns.filter((column) => !column.isHidden);\n        const hiddenColumns = allColumns.filter((column) => column.isHidden);\n\n        moveItemInArray(shownColumns, event.previousIndex, event.currentIndex);\n        const allColumnsWithNewOrder = [...shownColumns, ...hiddenColumns];\n\n        this.setTableColumns(allColumnsWithNewOrder);\n        this.columnOrderChanged.emit(allColumnsWithNewOrder);\n\n        this.isDraggingHeaderColumn = false;\n    }\n\n    ngDoCheck() {\n        const changes = this.differ.diff(this.rows);\n        if (changes) {\n            this.setTableRows(this.rows);\n        }\n    }\n\n    isPropertyChanged(property: SimpleChange): boolean {\n        return !!property?.currentValue;\n    }\n\n    convertToRowsData(rows: any[]): ObjectDataRow[] {\n        if (!Array.isArray(rows)) {\n            return [];\n        }\n        return rows.map((row) => new ObjectDataRow(row, row.isSelected, row?.isSelectable));\n    }\n\n    convertToColumnsData(columns: any[]): ObjectDataColumn[] {\n        if (!Array.isArray(columns)) {\n            return [];\n        }\n        return columns.map((column) => new ObjectDataColumn(column));\n    }\n\n    convertToDataSorting(sorting: any[]): DataSorting | null {\n        if (sorting && sorting.length > 0) {\n            return new DataSorting(sorting[0], sorting[1], sorting[2]);\n        }\n        return null;\n    }\n\n    onMainMenuOpen() {\n        if (this.mainMenuTemplate && !this.focusTrap) {\n            this.focusTrap = this.focusTrapFactory.create(this.mainMenuTemplate.nativeElement);\n            this.focusTrap.focusInitialElement();\n        }\n    }\n\n    onMainMenuClosed() {\n        if (this.focusTrap) {\n            this.focusTrap.destroy();\n            this.focusTrap = null;\n        }\n    }\n\n    private initAndSubscribeClickStream() {\n        this.unsubscribeClickStream();\n        const singleClickStream = this.click$.pipe(\n            buffer(this.click$.pipe(debounceTime(250))),\n            map((list) => list),\n            filter((x) => x.length === 1)\n        );\n\n        this.singleClickStreamSub = singleClickStream.subscribe((dataRowEvents: DataRowEvent[]) => {\n            const event: DataRowEvent = dataRowEvents[0];\n            this.handleRowSelection(event.value, event.event as any);\n            this.rowClick.emit(event);\n            if (!event.defaultPrevented) {\n                this.elementRef.nativeElement.dispatchEvent(\n                    new CustomEvent('row-click', {\n                        detail: event,\n                        bubbles: true\n                    })\n                );\n            }\n        });\n\n        const multiClickStream = this.click$.pipe(\n            buffer(this.click$.pipe(debounceTime(250))),\n            map((list) => list),\n            filter((x) => x.length >= 2)\n        );\n\n        this.multiClickStreamSub = multiClickStream.subscribe((dataRowEvents: DataRowEvent[]) => {\n            const event: DataRowEvent = dataRowEvents[0];\n            this.rowDblClick.emit(event);\n            if (!event.defaultPrevented) {\n                this.elementRef.nativeElement.dispatchEvent(\n                    new CustomEvent('row-dblclick', {\n                        detail: event,\n                        bubbles: true\n                    })\n                );\n            }\n        });\n    }\n\n    private unsubscribeClickStream() {\n        if (this.singleClickStreamSub) {\n            this.singleClickStreamSub.unsubscribe();\n            this.singleClickStreamSub = null;\n        }\n        if (this.multiClickStreamSub) {\n            this.multiClickStreamSub.unsubscribe();\n            this.multiClickStreamSub = null;\n        }\n    }\n\n    private initTable() {\n        const runtimeColumns = this.getRuntimeColumns();\n        this.data = new ObjectDataTableAdapter(this.rows, runtimeColumns);\n\n        this.setTableSorting(this.sorting);\n        this.resetSelection();\n        this.rowMenuCache = {};\n    }\n\n    isTableEmpty(): boolean {\n        return this.data === undefined || this.data === null;\n    }\n\n    private setTableRows(rows: any[]) {\n        if (this.data) {\n            this.resetSelection();\n            const rowsData = this.convertToRowsData(rows);\n            this.data.setRows(rowsData);\n        }\n    }\n\n    private setTableColumns(columns: any[]) {\n        if (this.data) {\n            this.resetSelection();\n            const columnsData = this.convertToColumnsData(columns);\n            this.data.setColumns(columnsData);\n        }\n    }\n\n    private getRuntimeColumns(): any[] {\n        return [...(this.columns || []), ...this.getSchemaFromHtml()];\n    }\n\n    private setTableSchema() {\n        const columns = this.getRuntimeColumns();\n\n        if (this.data && columns.length > 0) {\n            this.data.setColumns(columns);\n        }\n    }\n\n    private setTableSorting(sorting: any[]) {\n        if (this.data) {\n            this.data.setSorting(this.convertToDataSorting(sorting));\n        }\n    }\n\n    public getSchemaFromHtml(): any {\n        let schema = [];\n        if (this.columnList?.columns?.length > 0) {\n            schema = this.columnList.columns.map((c) => c as DataColumn);\n        }\n        return schema;\n    }\n\n    onRowClick(row: DataRow, mouseEvent: MouseEvent) {\n        if (mouseEvent) {\n            mouseEvent.preventDefault();\n        }\n\n        if (row) {\n            const rowIndex = this.data.getRows().indexOf(row) + (this.isHeaderVisible() ? 1 : 0);\n            this.keyManager.setActiveItem(rowIndex);\n\n            const dataRowEvent = new DataRowEvent(row, mouseEvent, this);\n            this.clickObserver.next(dataRowEvent);\n        }\n    }\n\n    onEnterKeyPressed(row: DataRow, e: KeyboardEvent) {\n        if (row) {\n            this.handleRowSelection(row, e);\n        }\n    }\n\n    private handleRowSelection(row: DataRow, e: KeyboardEvent | MouseEvent) {\n        if (!this.data || !row?.isSelectable) {\n            return;\n        }\n\n        if (this.isSingleSelectionMode()) {\n            if (row.isSelected) {\n                this.resetSelection();\n                this.emitRowSelectionEvent('row-unselect', null);\n            } else {\n                this.resetSelection();\n                this.selectRow(row, true);\n                this.emitRowSelectionEvent('row-select', row);\n            }\n        }\n\n        if (this.isMultiSelectionMode()) {\n            const modifier = e && (e.metaKey || e.ctrlKey);\n            let newValue: boolean;\n            if (this.selection.length === 1) {\n                newValue = !row.isSelected;\n            } else {\n                newValue = modifier ? !row.isSelected : true;\n            }\n            const domEventName = newValue ? 'row-select' : 'row-unselect';\n\n            if (!modifier) {\n                this.resetSelection();\n            }\n            this.selectRow(row, newValue);\n            this.emitRowSelectionEvent(domEventName, row);\n            this.checkSelectAllCheckboxState();\n        }\n    }\n\n    resetSelection(): void {\n        if (this.data) {\n            const rows = this.data.getRows();\n            if (rows && rows.length > 0) {\n                rows.forEach((r) => (r.isSelected = false));\n            }\n            this.selection = [];\n        }\n        this.isSelectAllChecked = false;\n        this.isSelectAllIndeterminate = false;\n        this.selectedItemsCountChanged.emit(0);\n    }\n\n    onRowDblClick(row: DataRow, event?: Event) {\n        if (event) {\n            event.preventDefault();\n        }\n        const dataRowEvent = new DataRowEvent(row, event, this);\n        this.clickObserver.next(dataRowEvent);\n    }\n\n    onRowEnterKeyDown(row: DataRow, keyboardEvent: KeyboardEvent) {\n        if (keyboardEvent.key === 'Enter') {\n            this.onKeyboardNavigate(row, keyboardEvent);\n        }\n    }\n\n    onRowKeyUp(row: DataRow, keyboardEvent: KeyboardEvent) {\n        const event = new CustomEvent('row-keyup', {\n            detail: {\n                row,\n                keyboardEvent,\n                sender: this\n            },\n            bubbles: true\n        });\n\n        this.elementRef.nativeElement.dispatchEvent(event);\n\n        if (event.defaultPrevented) {\n            keyboardEvent.preventDefault();\n        }\n    }\n\n    private onKeyboardNavigate(row: DataRow, keyboardEvent: KeyboardEvent) {\n        if (keyboardEvent) {\n            keyboardEvent.preventDefault();\n        }\n\n        const event = new DataRowEvent(row, keyboardEvent, this);\n\n        this.rowDblClick.emit(event);\n        this.elementRef.nativeElement.dispatchEvent(\n            new CustomEvent('row-dblclick', {\n                detail: event,\n                bubbles: true\n            })\n        );\n    }\n\n    private isValidClickEvent(event: Event): boolean {\n        if (event instanceof MouseEvent) {\n            return event.eventPhase === event.AT_TARGET || event.eventPhase === event.BUBBLING_PHASE;\n        } else if (event instanceof KeyboardEvent) {\n            return event.eventPhase === event.AT_TARGET;\n        }\n\n        return false;\n    }\n\n    onColumnHeaderClick(column: DataColumn, event: Event) {\n        if (this.isValidClickEvent(event) && column && column.sortable) {\n            const current = this.data.getSorting();\n            let newDirection = 'asc';\n            if ((column.sortingKey || column.key) === current?.key) {\n                newDirection = current.direction?.toLowerCase() === 'asc' ? 'desc' : 'asc';\n            }\n            this.sorting = [column.key, newDirection, { numeric: true }];\n            this.data.setSorting(new DataSorting(column.key, newDirection, { numeric: true }));\n            this.emitSortingChangedEvent(column.key, column.sortingKey, newDirection);\n        }\n\n        this.keyManager.updateActiveItem(0);\n    }\n\n    onSelectAllClick(matCheckboxChange: MatCheckboxChange) {\n        this.isSelectAllChecked = matCheckboxChange.checked;\n        this.isSelectAllIndeterminate = false;\n\n        if (this.multiselect) {\n            const selectableRows = this.data.getRows().filter((row) => row?.isSelectable);\n            if (selectableRows && selectableRows.length > 0) {\n                for (let i = 0; i < selectableRows.length; i++) {\n                    this.selectRow(selectableRows[i], matCheckboxChange.checked);\n                }\n            }\n\n            const domEventName = matCheckboxChange.checked ? 'row-select' : 'row-unselect';\n            const row = this.selection.length > 0 ? this.selection[0] : null;\n\n            this.emitRowSelectionEvent(domEventName, row);\n        }\n    }\n\n    onCheckboxLabelClick(row: DataRow, event: MouseEvent) {\n        const target = event.target as HTMLElement;\n        if (!(target.hasAttribute('data-adf-datatable-row-checkbox') || target.closest('[data-adf-datatable-row-checkbox]'))) {\n            this.onRowClick(row, event);\n        }\n    }\n\n    onCheckboxChange(row: DataRow, event: MatCheckboxChange) {\n        const newValue = event.checked;\n\n        this.selectRow(row, newValue);\n\n        const domEventName = newValue ? 'row-select' : 'row-unselect';\n        this.emitRowSelectionEvent(domEventName, row);\n        this.checkSelectAllCheckboxState();\n    }\n\n    checkSelectAllCheckboxState() {\n        if (this.multiselect) {\n            let numberOfSelectedRows: number = 0;\n            const rows = this.data.getRows();\n            rows.forEach((row) => {\n                if (row.isSelected) {\n                    numberOfSelectedRows++;\n                }\n            });\n            if (numberOfSelectedRows === rows.length) {\n                this.isSelectAllChecked = true;\n                this.isSelectAllIndeterminate = false;\n            } else if (numberOfSelectedRows > 0 && numberOfSelectedRows < rows.length) {\n                this.isSelectAllChecked = false;\n                this.isSelectAllIndeterminate = true;\n            } else {\n                this.isSelectAllChecked = false;\n                this.isSelectAllIndeterminate = false;\n            }\n        }\n    }\n\n    onImageLoadingError(event: Event, row: DataRow) {\n        if (event) {\n            const element = event.target as any;\n\n            if (this.fallbackThumbnail) {\n                element.src = this.fallbackThumbnail;\n            } else {\n                element.src = row.imageErrorResolver(event);\n            }\n        }\n    }\n\n    isIconValue(row: DataRow, col: DataColumn): boolean {\n        if (row && col) {\n            const value = this.data.getValue(row, col);\n            return value?.startsWith('material-icons://');\n        }\n        return false;\n    }\n\n    asIconValue(row: DataRow, col: DataColumn): string {\n        if (this.isIconValue(row, col)) {\n            const value = this.data.getValue(row, col) || '';\n            return value.replace('material-icons://', '');\n        }\n        return null;\n    }\n\n    isColumnSorted(col: DataColumn, direction: string): boolean {\n        if (col && direction) {\n            const sorting = this.data.getSorting();\n            return this.isSortingEqual(col, direction, sorting);\n        }\n        return false;\n    }\n\n    getContextMenuActions(row: DataRow, col: DataColumn): () => any[] {\n        return () => {\n            const event = new DataCellEvent(row, col, []);\n            this.showRowContextMenu.emit(event);\n            return event.value.actions;\n        };\n    }\n\n    getRowActions(row: DataRow, col?: DataColumn): any[] {\n        const id = row.getValue('id');\n\n        if (!this.rowMenuCache[id]) {\n            const event = new DataCellEvent(row, col, []);\n            this.showRowActionsMenu.emit(event);\n            if (!this.rowMenuCacheEnabled) {\n                return this.getVisibleActions(event.value.actions);\n            }\n            this.rowMenuCache[id] = event.value.actions;\n        }\n\n        return this.getVisibleActions(this.rowMenuCache[id]);\n    }\n\n    getVisibleActions(actions: any[]): any[] {\n        return actions.filter((action) => action.visible || action.visible === undefined);\n    }\n\n    onExecuteRowAction(row: DataRow, action: any) {\n        if (action.disabled || action.disabled) {\n            event.stopPropagation();\n        } else {\n            this.executeRowAction.emit(new DataRowActionEvent(row, action));\n        }\n    }\n\n    getHideActionsWithoutHoverClass(actionsMenuTrigger: MatMenuTrigger) {\n        return { 'adf-datatable-hide-actions-without-hover': this.actionsVisibleOnHover && !actionsMenuTrigger.menuOpen };\n    }\n\n    rowAllowsDrop(row: DataRow): boolean {\n        return row.isDropTarget === true;\n    }\n\n    isSingleSelectionMode(): boolean {\n        return this.selectionMode && this.selectionMode.toLowerCase() === 'single';\n    }\n\n    isMultiSelectionMode(): boolean {\n        return this.selectionMode && this.selectionMode.toLowerCase() === 'multiple';\n    }\n\n    getRowStyle(row: DataRow): string {\n        row.cssClass = row.cssClass ? row.cssClass : '';\n        this.rowStyleClass = this.rowStyleClass ? this.rowStyleClass : '';\n        const contextMenuSourceClass = row.isContextMenuSource ? 'adf-context-menu-source' : '';\n        const isDragEnabled = this.enableDragRows ? 'adf-drag-row' : '';\n        return `${row.cssClass} ${this.rowStyleClass} ${contextMenuSourceClass} ${isDragEnabled}`;\n    }\n\n    markRowAsContextMenuSource(selectedRow: DataRow): void {\n        this.selectedRowId = selectedRow.id ? selectedRow.id : '';\n        this.data.getRows().forEach((row) => (row.isContextMenuSource = false));\n        selectedRow.isContextMenuSource = true;\n    }\n\n    private setRowAsContextSource(): void {\n        const selectedRow = this.data.getRows().find((row) => this.selectedRowId === row.id);\n        if (selectedRow) {\n            selectedRow.isContextMenuSource = true;\n        }\n    }\n\n    selectRow(row: DataRow, value: boolean) {\n        if (row) {\n            row.isSelected = value;\n            const idx = row?.id ? this.findSelectionById(row.id) : this.selection.indexOf(row);\n            if (value) {\n                if (idx < 0) {\n                    this.selection.push(row);\n                }\n            } else {\n                if (idx > -1) {\n                    this.selection.splice(idx, 1);\n                }\n            }\n\n            this.selectedItemsCountChanged.emit(this.selection.length);\n        }\n    }\n\n    findSelectionById(id: string): number {\n        return this.selection.findIndex((selection) => selection?.id === id);\n    }\n\n    getCellTooltip(row: DataRow, col: DataColumn): string {\n        if (row && col?.formatTooltip) {\n            const result: string = col.formatTooltip(row, col);\n            if (result) {\n                return result;\n            }\n        }\n        return null;\n    }\n\n    getSortableColumns() {\n        return this.data.getColumns().filter((column) => column.sortable === true);\n    }\n\n    isEmpty() {\n        return this.data.getRows().length === 0;\n    }\n\n    isHeaderVisible() {\n        let headerVisibility: boolean;\n\n        if (this.showHeader === ShowHeaderMode.Data) {\n            headerVisibility = !this.loading && !this.noPermission && !this.isEmpty();\n        } else if (this.showHeader === ShowHeaderMode.Always) {\n            headerVisibility = !this.loading && !this.noPermission;\n        } else if (this.showHeader === ShowHeaderMode.Never) {\n            headerVisibility = false;\n        }\n        return headerVisibility;\n    }\n\n    isStickyHeaderEnabled() {\n        return this.stickyHeader && this.isHeaderVisible();\n    }\n\n    private emitRowSelectionEvent(name: string, row: DataRow) {\n        const domEvent = new CustomEvent(name, {\n            detail: {\n                row,\n                selection: this.selection\n            },\n            bubbles: true\n        });\n        this.elementRef.nativeElement.dispatchEvent(domEvent);\n    }\n\n    private emitSortingChangedEvent(key: string, sortingKey: string, direction: string) {\n        const domEvent = new CustomEvent('sorting-changed', {\n            detail: {\n                key,\n                sortingKey,\n                direction\n            },\n            bubbles: true\n        });\n        this.elementRef.nativeElement.dispatchEvent(domEvent);\n    }\n\n    ngOnDestroy() {\n        this.unsubscribeClickStream();\n    }\n\n    getNameColumnValue() {\n        return this.data.getColumns().find((el: any) => el.key.includes('name'));\n    }\n\n    getAutomationValue(row: DataRow): any {\n        const name = this.getNameColumnValue();\n        return name ? row.getValue(name.key) : '';\n    }\n\n    getAriaSort(column: DataColumn): string {\n        if (!this.isColumnSortActive(column)) {\n            return 'ADF-DATATABLE.ACCESSIBILITY.SORT_NONE';\n        }\n\n        return this.isColumnSorted(column, 'asc') ? 'ADF-DATATABLE.ACCESSIBILITY.SORT_ASCENDING' : 'ADF-DATATABLE.ACCESSIBILITY.SORT_DESCENDING';\n    }\n\n    getSortLiveAnnouncement(column: DataColumn): string {\n        if (!this.isColumnSortActive(column)) {\n            return 'ADF-DATATABLE.ACCESSIBILITY.SORT_DEFAULT';\n        }\n        return this.isColumnSorted(column, 'asc')\n            ? 'ADF-DATATABLE.ACCESSIBILITY.SORT_ASCENDING_BY'\n            : 'ADF-DATATABLE.ACCESSIBILITY.SORT_DESCENDING_BY';\n    }\n\n    private registerDragHandleIcon(): void {\n        const iconUrl = this.sanitizer.bypassSecurityTrustResourceUrl('./assets/images/drag_indicator_24px.svg');\n\n        this.matIconRegistry.addSvgIconInNamespace('adf', 'drag_indicator', iconUrl);\n    }\n\n    onResizing({ rectangle: { width } }: ResizeEvent, colIndex: number): void {\n        const timeoutId = setTimeout(() => {\n            const allColumns = this.getVisibleColumns();\n            allColumns[colIndex].width = width;\n            this.data.setColumns(allColumns);\n\n            if (!this.isResizing) {\n                clearTimeout(timeoutId);\n            }\n        });\n    }\n\n    onResizingEnd(): void {\n        this.resizingColumnIndex = -1;\n\n        this.updateColumnsWidths();\n    }\n\n    getFlexValue({ width = 0 }: DataColumn): string {\n        return `0 1 ${width < DataTableComponent.MINIMUM_COLUMN_SIZE ? DataTableComponent.MINIMUM_COLUMN_SIZE : width}px`;\n    }\n\n    filterDisabledColumns(index: number, _drag: CdkDrag, drop: CdkDropList): boolean {\n        return !drop.getSortedItems()[index].disabled;\n    }\n\n    onDragDrop(droppedEvent: CdkDragDrop<any>): void {\n        if (this.enableDragRows) {\n            this.dragDropped.emit({ previousIndex: droppedEvent.previousIndex, currentIndex: droppedEvent.currentIndex });\n        }\n    }\n\n    onDragStart(): void {\n        this.isDraggingRow = true;\n    }\n\n    onDragEnd(): void {\n        this.isDraggingRow = false;\n    }\n\n    private updateColumnsWidths(): void {\n        const allColumns = this.data.getColumns();\n\n        const headerContainer: HTMLElement = document.querySelector('.adf-datatable-header');\n\n        if (headerContainer) {\n            const headerContainerColumns = headerContainer.querySelectorAll('.adf-datatable-cell-header:not(.adf-datatable-checkbox)');\n\n            headerContainerColumns.forEach((column: HTMLElement, index: number): void => {\n                if (allColumns[index]) {\n                    if (index === 0) {\n                        allColumns[index].width = column.clientWidth - parseInt(window.getComputedStyle(column).paddingLeft, 10);\n                    } else if (index === headerContainerColumns.length - 1) {\n                        allColumns[index].width = column.clientWidth - parseInt(window.getComputedStyle(column).paddingRight, 10);\n                    } else {\n                        allColumns[index].width = column.clientWidth;\n                    }\n                }\n            });\n        }\n        this.data.setColumns(allColumns);\n\n        this.columnsWidthChanged.emit(allColumns);\n    }\n\n    private isSortingEqual(col: DataColumn, direction: string, sorting: DataSorting): boolean {\n        return sorting && (sorting.key === col.key || sorting.key === col.sortingKey) && sorting.direction?.toLocaleLowerCase() === direction;\n    }\n\n    get isResizing(): boolean {\n        return this.resizingColumnIndex >= 0;\n    }\n}\n\nexport interface DataTableDropEvent {\n    detail: {\n        target: 'cell' | 'header';\n        event: Event;\n        column: DataColumn;\n        row?: DataRow;\n    };\n\n    preventDefault(): void;\n}\n","<div\n    role=\"grid\"\n    *ngIf=\"data\"\n    class=\"adf-datatable-list\"\n    [class.adf-sticky-header]=\"isStickyHeaderEnabled()\"\n    [class.adf-datatable--empty]=\"(isEmpty() && !isHeaderVisible()) || loading\"\n    [class.adf-datatable--empty--header-visible]=\"isEmpty() && isHeaderVisible()\"\n>\n    <div *ngIf=\"isHeaderVisible()\" class=\"adf-datatable-header\" role=\"rowgroup\" [ngClass]=\"{ 'adf-sr-only': !isHeaderVisible() }\">\n        <adf-datatable-row\n            cdkDropList\n            cdkDropListOrientation=\"horizontal\"\n            [cdkDropListSortPredicate]=\"filterDisabledColumns\"\n            data-automation-id=\"datatable-row-header\"\n            class=\"adf-datatable-row\"\n            role=\"row\">\n\n\n            <!-- Drag -->\n            <div *ngIf=\"enableDragRows\" class=\"adf-datatable-cell-header adf-drag-column\">\n                <span class=\"adf-sr-only\">{{ 'ADF-DATATABLE.ACCESSIBILITY.DRAG' | translate }}</span>\n            </div>\n\n            <!-- Actions (left) -->\n            <div *ngIf=\"actions && actionsPosition === 'left'\" class=\"adf-actions-column adf-datatable-cell-header\">\n                <span class=\"adf-sr-only\">{{ 'ADF-DATATABLE.ACCESSIBILITY.ACTIONS' | translate }}</span>\n            </div>\n\n            <!-- Columns -->\n            <div *ngIf=\"multiselect\" class=\"adf-datatable-cell-header adf-datatable-checkbox\">\n                <mat-checkbox\n                    [indeterminate]=\"isSelectAllIndeterminate\"\n                    [checked]=\"isSelectAllChecked\"\n                    (change)=\"onSelectAllClick($event)\"\n                    class=\"adf-checkbox-sr-only\"\n                    [aria-label]=\"'ADF-DATATABLE.ACCESSIBILITY.SELECT_ALL' | translate\"\n                    [matTooltip]=\"'ADF-DATATABLE.ACCESSIBILITY.SELECT_ALL' | translate\"\n                    #tooltip=\"matTooltip\"\n                    (focusin)=\"tooltip.show()\"\n                    (focusout)=\"tooltip.hide()\"\n                >\n                    {{ 'ADF-DATATABLE.ACCESSIBILITY.SELECT_ALL' | translate }}\n                </mat-checkbox>\n            </div>\n\n            <ng-container\n                *ngFor=\"\n                let col of getVisibleColumns();\n                let columnIndex = index\n                let lastColumn = last\"\n            >\n            <div\n                class=\"adf-datatable-cell--{{col.type || 'text'}} {{col.cssClass}} adf-datatable-cell-header adf-datatable-cell-data\"\n                *ngIf=\"col.title || !showProvidedActions\"\n                [attr.data-automation-id]=\"'auto_id_' + col.key\"\n                [ngClass]=\"{\n                    'adf-sortable': col.sortable,\n                    'adf-datatable__cursor--pointer': !isResizing,\n                    'adf-datatable__header--sorted-asc': isColumnSorted(col, 'asc'),\n                    'adf-datatable__header--sorted-desc': isColumnSorted(col, 'desc')}\"\n                [ngStyle]=\"(col.width) && !lastColumn && {'flex': getFlexValue(col)}\"\n                role=\"columnheader\"\n                [attr.aria-label]=\"col.srTitle ? (col.srTitle | translate) : (col.title | translate) + (col.subtitle ? ' ' + (col.subtitle | translate) : '')\"\n                [attr.aria-sort]=\"col.sortable ? (getAriaSort(col) | translate) : null\"\n                cdkDrag\n                cdkDragLockAxis=\"x\"\n                (cdkDragStarted)=\"isDraggingHeaderColumn = true\"\n                (cdkDragDropped)=\"onDropHeaderColumn($event)\"\n                [cdkDragDisabled]=\"!col.draggable\"\n                (mouseenter)=\"hoveredHeaderColumnIndex = columnIndex\"\n                (mouseleave)=\"hoveredHeaderColumnIndex = -1\"\n                adf-drop-zone dropTarget=\"header\"\n                [dropColumn]=\"col\"\n            >\n\n            <div\n                adf-resizable\n                #resizableElement=\"adf-resizable\"\n                [attr.tabindex]=\"col.sortable ? 0 : null\"\n                [attr.role]=\"col.sortable ? 'button' : null\"\n                [attr.aria-description]=\"\n                    isColumnSortActive(col) ? (getSortLiveAnnouncement(col) | translate: { string: col.title | translate }) : null\n                \"\n                 [attr.aria-label]=\"\n                    col.srTitle\n                        ? (col.srTitle | translate)\n                        : ('ADF-DATATABLE.ACCESSIBILITY.SORT_DEFAULT' | translate) +\n                            ' ' +\n                            (col.title | translate) +\n                            (col.subtitle ? ' ' + (col.subtitle | translate) : '')\n                \"\n                (click)=\"onColumnHeaderClick(col, $event)\"\n                (keyup.enter)=\"onColumnHeaderClick(col, $event)\"\n                [coverPadding]=\"10\"\n                (resizing)=\"onResizing($event, columnIndex)\"\n                (keyboardResizing)=\"onResizing($event, columnIndex)\"\n                (resizeStart)=\"resizingColumnIndex = columnIndex\"\n                (resizeEnd)=\"onResizingEnd()\"\n                [attr.data-automation-id]=\"'auto_header_content_id_' + col.key\"\n                class=\"adf-datatable-cell-header-content\"\n                [ngClass]=\"{ 'adf-datatable-cell-header-content--hovered':\n                    hoveredHeaderColumnIndex === columnIndex &&\n                    !isDraggingHeaderColumn &&\n                    !isResizing && col.sortable}\"\n            >\n                <ng-container *ngIf=\"!col.header\">\n                    <span\n                        *ngIf=\"col.title\"\n                        title=\"{{col.title | translate}}\"\n                        class=\"adf-datatable-cell-value\"\n                    >\n                        {{col.title | translate}}\n                    </span>\n\n                    <span\n                        *ngIf=\"col.subtitle\"\n                        title=\"{{col.subtitle | translate}}\"\n                        class=\"adf-datatable-cell-value adf-datatable-cell-header_subtitle\"\n                    >\n                        ({{col.subtitle | translate}})\n                    </span>\n\n                    <span *ngIf=\"col.title && col.sortable && isDraggingHeaderColumn\" class=\"adf-sr-only\" aria-live=\"polite\">\n                        {{ getSortLiveAnnouncement(col) | translate: { string: col.title | translate } }}\n                    </span>\n\n                    <span *ngIf=\"!col.title && !col.sortable && !headerFilterTemplate\" [attr.title]=\"'ADF-DATATABLE.ACCESSIBILITY.EMPTY_HEADER' | translate\"></span>\n                </ng-container>\n\n                <div *ngIf=\"col.header\" class=\"adf-datatable-cell-value\">\n                    <ng-template [ngTemplateOutlet]=\"col.header\" [ngTemplateOutletContext]=\"{$implicit: col}\" />\n                </div>\n\n                <span\n                    [class.adf-datatable__header--sorted-asc]=\"isColumnSorted(col, 'asc')\"\n                    [class.adf-datatable__header--sorted-desc]=\"isColumnSorted(col, 'desc')\">\n                </span>\n\n                <ng-template *ngIf=\"allowFiltering\" [ngTemplateOutlet]=\"headerFilterTemplate\" [ngTemplateOutletContext]=\"{$implicit: col}\" />\n\n                <span\n                    *ngIf=\"col.draggable\"\n                    cdkDragHandle\n                    [ngClass]=\"{ 'adf-datatable-cell-header-drag-icon': !isResizing }\"\n                >\n                    <mat-icon\n                        *ngIf=\"hoveredHeaderColumnIndex === columnIndex && !isResizing\"\n                        svgIcon=\"adf:drag_indicator\"\n                        class=\"adf-datatable-cell-header-drag-icon-visible\"\n                        [attr.data-automation-id]=\"'adf-datatable-cell-header-drag-icon-'+col.key\"\n                        aria-hidden=\"true\"\n                    />\n                </span>\n            </div>\n                <div\n                    *ngIf=\"isResizingEnabled && col.resizable && !lastColumn\"\n                    [ngClass]=\"hoveredHeaderColumnIndex === columnIndex && !isResizing || resizingColumnIndex === columnIndex ? 'adf-datatable__resize-handle-visible' : 'adf-datatable__resize-handle-hidden'\"\n                    adf-resize-handle\n                    tabindex=\"0\"\n                    role=\"slider\"\n                    [attr.aria-valuenow]=\"col.width ?? 100\"\n                    [attr.aria-label]=\"'ADF-DATATABLE.ACCESSIBILITY.RESIZE_COLUMN' | translate: { column: col.title | translate }\"\n                    [attr.aria-valuemin]=\"100\"\n                    [attr.aria-valuemax]=\"500\"\n                    (click)=\"$event.stopPropagation()\"\n                    (keydown)=\"$event.stopPropagation()\"\n                    class=\"adf-datatable__resize-handle\"\n                    [resizableContainer]=\"resizableElement\">\n                    <div class=\"adf-datatable__resize-handle--divider\"></div>\n                </div>\n            <div class=\"adf-drop-header-cell-placeholder\" *cdkDragPlaceholder></div>\n        </div>\n            </ng-container>\n\n            <!-- Header actions (right) -->\n            <div\n                *ngIf=\"(actions && actionsPosition === 'right') ||\n                       (mainActionTemplate && showMainDatatableActions)\"\n                class=\"adf-actions-column adf-datatable-actions-menu adf-datatable-cell-header adf-datatable__actions-cell\"\n                [class.adf-datatable-actions-menu-provided]=\"showProvidedActions\"\n            >\n                <ng-container *ngIf=\"mainActionTemplate\">\n                    <button\n                        data-automation-id=\"adf-datatable-main-menu-button\"\n                        title=\"{{ 'ADF-DATATABLE.CONTENT-ACTIONS.SELECT_COLUMNS' | translate }}\"\n                        mat-icon-button\n                        #mainMenuTrigger=\"matMenuTrigger\"\n                        (click)=\"onMainMenuOpen()\"\n                        [matMenuTriggerFor]=\"mainMenu\">\n                        <mat-icon adf-icon=\"view_week_outline\" />\n                    </button>\n                    <mat-menu #mainMenu (closed)=\"onMainMenuClosed()\">\n                        <div #mainMenuTemplate role=\"presentation\" (keydown.tab)=\"$event.stopPropagation()\">\n                            <ng-container\n                                [ngTemplateOutlet]=\"mainActionTemplate\"\n                                [ngTemplateOutletContext]=\"{\n                                    $implicit: mainMenuTrigger\n                                }\" />\n                        </div>\n                    </mat-menu>\n                    <span class=\"adf-sr-only\">{{ 'ADF-DATATABLE.ACCESSIBILITY.ACTIONS' | translate }}</span>\n                </ng-container>\n            </div>\n\n        </adf-datatable-row>\n    </div>\n\n    <div\n        *ngIf=\"!loading; else loadingRowTemplate\"\n        class=\"adf-datatable-body\"\n        [ngClass]=\"{ 'adf-blur-datatable-body': blurOnResize && (isDraggingHeaderColumn || isResizing), 'adf-datatable-body__draggable': enableDragRows && !isDraggingRow, 'adf-datatable-body__dragging': isDraggingRow }\"\n        cdkDropList\n        [cdkDropListDisabled]=\"!enableDragRows\"\n        role=\"rowgroup\">\n        <ng-container *ngIf=\"!noPermission; else noPermissionsRowTemplate\">\n            <adf-datatable-row *ngFor=\"let row of data.getRows(); let idx = index\"\n                cdkDrag\n                [cdkDragDisabled]=\"!enableDragRows\"\n                (cdkDragDropped)=\"onDragDrop($event)\"\n                (cdkDragStarted)=\"onDragStart()\"\n                (cdkDragEnded)=\"onDragEnd()\"\n                [cdkDragBoundary]=\"'.adf-datatable-body'\"\n                [row]=\"row\"\n                (select)=\"onEnterKeyPressed(row, $event)\"\n                (keyup)=\"onRowKeyUp(row, $event)\"\n                (keydown)=\"onRowEnterKeyDown(row, $event)\"\n                [adf-upload]=\"rowAllowsDrop(row)\"\n                [adf-upload-data]=\"row\"\n                [ngStyle]=\"rowStyle\"\n                [ngClass]=\"getRowStyle(row)\"\n                [class.adf-datatable-row__dragging]=\"isDraggingRow\"\n                [attr.data-automation-id]=\"'datatable-row-' + idx\"\n                (contextmenu)=\"markRowAsContextMenuSource(row)\"\n                [disabled]=\"!(data?.allowFocusOnRows ?? true)\"\n            >\n                <!-- Drag button -->\n                <div *ngIf=\"enableDragRows\"\n                        role=\"gridcell\"\n                        class=\"adf-datatable-cell adf-datatable__actions-cell adf-datatable-hover-only\">\n                    <button mat-icon-button\n                            [attr.aria-label]=\"'ADF-DATATABLE.ACCESSIBILITY.DRAG' | translate\">\n                        <mat-icon adf-icon=\"drag_indicator\" />\n                    </button>\n                </div>\n\n                <!-- Actions (left) -->\n                <div *ngIf=\"actions && actionsPosition === 'left'\" role=\"gridcell\" class=\"adf-datatable-cell\">\n                    <button mat-icon-button [matMenuTriggerFor]=\"menu\" #actionsMenuTrigger=\"matMenuTrigger\"\n                            [ngClass]=\"getHideActionsWithoutHoverClass(actionsMenuTrigger)\"\n                            [title]=\"'ADF-DATATABLE.CONTENT-ACTIONS.TOOLTIP' | translate\"\n                            [attr.id]=\"'action_menu_left_' + idx\"\n                            [attr.data-automation-id]=\"'action_menu_' + idx\">\n                        <mat-icon adf-icon=\"more_vert\" />\n                    </button>\n                    <mat-menu #menu=\"matMenu\">\n                        <button mat-menu-item *ngFor=\"let action of getRowActions(row)\"\n                                [attr.data-automation-id]=\"action.title\"\n                                [disabled]=\"action.disabled\"\n                                (click)=\"onExecuteRowAction(row, action)\">\n                            <mat-icon *ngIf=\"action.icon\" [adf-icon]=\"action.icon\" />\n                            <span>{{ action.title | translate }}</span>\n                        </button>\n                    </mat-menu>\n                </div>\n\n                <label *ngIf=\"multiselect\"\n                        (keydown.enter)=\"onEnterKeyPressed(row, $any($event))\"\n                        (click)=\"onCheckboxLabelClick(row, $event)\"\n                        [for]=\"'select-file-' + idx\"\n                        class=\"adf-datatable-cell adf-datatable-checkbox adf-datatable-checkbox-single\"\n                        [attr.tabindex]=\"null\">\n                    <mat-checkbox\n                        [id]=\"'select-file-' + idx\"\n                        [disabled]=\"!row?.isSelectable\"\n                        [class.adf-datatable-checkbox-selected]=\"row.isSelected\"\n                        [class.adf-datatable-hover-only]=\"displayCheckboxesOnHover\"\n                        [checked]=\"row.isSelected\"\n                        [attr.aria-checked]=\"row.isSelected\"\n                        [aria-label]=\"'ADF-DATATABLE.ACCESSIBILITY.SELECT_FILE' | translate\"\n                        data-adf-datatable-row-checkbox\n                        (change)=\"onCheckboxChange(row, $event)\"\n                        (keydown.enter)=\"$event.stopPropagation()\"\n                        class=\"adf-checkbox-sr-only\"\n                    >\n                        {{ 'ADF-DATATABLE.ACCESSIBILITY.SELECT_FILE' | translate }}\n                    </mat-checkbox>\n                </label>\n\n                <div\n                    *ngFor=\"let col of getVisibleColumns(); let lastColumn = last;\"\n                    role=\"gridcell\"\n                    class=\"adf-datatable-cell adf-datatable-cell--{{col.type || 'text'}} {{col.cssClass}} adf-datatable-cell-data adf-datatable-cell--{{getAutomationValue(row)}}\"\n                    [attr.title]=\"col.title | translate\"\n                    [attr.data-automation-id]=\"getAutomationValue(row)\"\n                    [attr.aria-selected]=\"row.isSelected\"\n                    [attr.aria-label]=\"col.title ? (col.title | translate) : null\"\n                    (click)=\"onRowClick(row, $event)\"\n                    [attr.tabindex]=\"null\"\n                    (keydown.enter)=\"onEnterKeyPressed(row, $any($event))\"\n                    [adf-context-menu]=\"getContextMenuActions(row, col)\"\n                    [adf-context-menu-enabled]=\"contextMenu\"\n                    adf-drop-zone dropTarget=\"cell\" [dropColumn]=\"col\" [dropRow]=\"row\"\n                    [ngStyle]=\"(col.width) && !lastColumn && {'flex': getFlexValue(col)}\"\n                >\n                    <div *ngIf=\"!col.template\" class=\"adf-datatable-cell-container\">\n                        <ng-container [ngSwitch]=\"data.getColumnType(row, col)\">\n                            <div *ngSwitchCase=\"'image'\" class=\"adf-cell-value\">\n                                <mat-icon\n                                    [attr.aria-label]=\"col.srTitle? (col.srTitle | translate) : null\"\n                                    [attr.aria-hidden]=\"!asIconValue(row, col)\"\n                                    *ngIf=\"isIconValue(row, col); else no_iconvalue\"\n                                    [adf-icon]=\"asIconValue(row, col)\"\n                                />\n                                <ng-template #no_iconvalue>\n                                    <mat-icon class=\"adf-datatable-selected\"\n                                                *ngIf=\"row.isSelected && !multiselect; else no_selected_row\" svgIcon=\"selected\" />\n                                    <ng-template #no_selected_row>\n                                        <img class=\"adf-datatable-center-img-ie\"\n                                            [attr.aria-label]=\"(data.getValue(row, col) | fileType) === 'disable' ?\n                                                ('ADF-DATATABLE.ACCESSIBILITY.ICON_DISABLED' | translate) :\n                                                'ADF-DATATABLE.ACCESSIBILITY.ICON_TEXT' | translate:{\n                                                    type: 'ADF-DATATABLE.FILE_TYPE.' + (data.getValue(row, col) | fileType | uppercase) | translate\n                                                }\"\n                                            [attr.alt]=\"(data.getValue(row, col) | fileType) === 'disable' ?\n                                                ('ADF-DATATABLE.ACCESSIBILITY.ICON_DISABLED' | translate) :\n                                                'ADF-DATATABLE.ACCESSIBILITY.ICON_TEXT' | translate:{\n                                                        type: 'ADF-DATATABLE.FILE_TYPE.' + (data.getValue(row, col) | fileType | uppercase) | translate\n                                                }\"\n                                            src=\"{{ data.getValue(row, col) }}\"\n                                            (error)=\"onImageLoadingError($event, row)\">\n                                    </ng-template>\n                                </ng-template>\n                            </div>\n\n                            <div *ngSwitchCase=\"'icon'\" class=\"adf-cell-value\">\n                                <adf-icon-cell\n                                    [data]=\"data\"\n                                    [column]=\"col\"\n                                    [row]=\"row\"\n                                    [resolverFn]=\"resolverFn\"\n                                    [tooltip]=\"getCellTooltip(row, col)\"\n                                />\n                            </div>\n                            <div\n                                *ngSwitchCase=\"'date'\"\n                                class=\"adf-cell-value adf-cell-date\"\n    \n                                [attr.data-automation-id]=\"'date_' + (data.getValue(row, col, resolverFn) | adfLocalizedDate: 'medium') \">\n                                <adf-date-cell class=\"adf-datatable-center-date-column-ie\"\n                                    [data]=\"data\"\n                                    [column]=\"col\"\n                                    [row]=\"row\"\n                                    [resolverFn]=\"resolverFn\"\n                                    [tooltip]=\"getCellTooltip(row, col)\"\n                                    [dateConfig]=\"col.dateConfig\" />\n                            </div>\n\n                            <div *ngSwitchCase=\"'location'\" class=\"adf-cell-value\"\n                                    [attr.data-automation-id]=\"'location' + data.getValue(row, col, resolverFn)\">\n                                <adf-location-cell\n                                    [data]=\"data\"\n                                    [column]=\"col\"\n                                    [row]=\"row\"\n                                    [resolverFn]=\"resolverFn\"\n                                    [tooltip]=\"getCellTooltip(row, col)\" />\n                            </div>\n                            <div *ngSwitchCase=\"'fileSize'\" class=\"adf-cell-value\"\n                                    [attr.data-automation-id]=\"'fileSize_' + data.getValue(row, col, resolverFn)\">\n                                <adf-filesize-cell class=\"adf-datatable-center-size-column-ie\"\n                                    [data]=\"data\"\n                                    [column]=\"col\"\n                                    [row]=\"row\"\n                                    [resolverFn]=\"resolverFn\"\n                                    [tooltip]=\"getCellTooltip(row, col)\" />\n                            </div>\n                            <div *ngSwitchCase=\"'text'\" class=\"adf-cell-value\"\n                                    [attr.data-automation-id]=\"'text_' + data.getValue(row, col, resolverFn)\">\n                                <adf-datatable-cell\n                                    [copyContent]=\"col.copyContent\"\n                                    [data]=\"data\"\n                                    [column]=\"col\"\n                                    [row]=\"row\"\n                                    [resolverFn]=\"resolverFn\"\n                                    [tooltip]=\"getCellTooltip(row, col)\" />\n                            </div>\n                            <div *ngSwitchCase=\"'boolean'\" class=\"adf-cell-value\"\n                                    [attr.data-automation-id]=\"'boolean_' + data.getValue(row, col, resolverFn)\">\n                                <adf-boolean-cell\n                                    [data]=\"data\"\n                                    [column]=\"col\"\n                                    [row]=\"row\"\n                                    [resolverFn]=\"resolverFn\"\n                                    [tooltip]=\"getCellTooltip(row, col)\" />\n                            </div>\n                            <div *ngSwitchCase=\"'json'\" class=\"adf-cell-value\">\n                                <adf-json-cell\n                                    [editable]=\"col.editable\"\n                                    [data]=\"data\"\n                                    [column]=\"col\"\n                                    [resolverFn]=\"resolverFn\"\n                                    [row]=\"row\" />\n                            </div>\n                            <div *ngSwitchCase=\"'amount'\"\n                                class=\"adf-cell-value\"\n                                [attr.data-automation-id]=\"'amount_' + data.getValue(row, col, resolverFn)\">\n                                <adf-amount-cell\n                                    [data]=\"data\"\n                                    [column]=\"col\"\n                                    [resolverFn]=\"resolverFn\"\n                                    [row]=\"row\"\n                                    [currencyConfig]=\"col.currencyConfig\" />\n                            </div>\n                            <div *ngSwitchCase=\"'number'\"\n                                class=\"adf-cell-value\"\n                                [attr.data-automation-id]=\"'number_' + data.getValue(row, col, resolverFn)\">\n                                <adf-number-cell\n                                    [data]=\"data\"\n                                    [column]=\"col\"\n                                    [resolverFn]=\"resolverFn\"\n                                    [row]=\"row\"\n                                    [decimalConfig]=\"col.decimalConfig\" />\n                            </div>\n                            <span *ngSwitchDefault class=\"adf-cell-value\">\n                    <!-- empty cell for unknown column type -->\n                    </span>\n                        </ng-container>\n                    </div>\n                    <div *ngIf=\"col.template\" class=\"adf-datatable-cell-container\">\n                        <div class=\"adf-cell-value\">\n                            <ng-container\n                                [ngTemplateOutlet]=\"col.template\"\n                                [ngTemplateOutletContext]=\"{ $implicit: { data: data, row: row, col: col }, value: data.getValue(row, col, resolverFn) }\" />\n                        </div>\n                    </div>\n                </div>\n\n                <!-- Row actions (right) -->\n                <div *ngIf=\"\n                        !showProvidedActions &&\n                        ((actions && actionsPosition === 'right') ||\n                        (mainActionTemplate && showMainDatatableActions))\"\n                        role=\"gridcell\"\n                        class=\"adf-datatable-cell adf-datatable__actions-cell adf-datatable-center-actions-column-ie adf-datatable-actions-menu\">\n\n                    <ng-container *ngIf=\"(actions && actionsPosition === 'right')\">\n                        <button mat-icon-button [matMenuTriggerFor]=\"menu\" #actionsMenuTrigger=\"matMenuTrigger\"\n                                [ngClass]=\"getHideActionsWithoutHoverClass(actionsMenuTrigger)\"\n                                [attr.aria-label]=\"'ADF-DATATABLE.ACCESSIBILITY.ROW_OPTION_BUTTON' | translate\"\n                                [title]=\"'ADF-DATATABLE.CONTENT-ACTIONS.TOOLTIP' | translate\"\n                                [attr.id]=\"'action_menu_right_' + idx\"\n                                [attr.data-automation-id]=\"'action_menu_' + idx\"\n                                (keydown.enter)=\"actionsMenuTrigger.openMenu()\">\n                            <mat-icon adf-icon=\"more_vert\" />\n                        </button>\n                        <mat-menu #menu=\"matMenu\">\n                            <button mat-menu-item *ngFor=\"let action of getRowActions(row)\"\n                                    [attr.data-automation-id]=\"action.title\"\n                                    [attr.aria-label]=\"action.title | translate\"\n                                    [disabled]=\"action.disabled\"\n                                    (click)=\"onExecuteRowAction(row, action)\">\n                                <mat-icon *ngIf=\"action.icon\" [adf-icon]=\"action.icon\" />\n                                <span>{{ action.title | translate }}</span>\n                            </button>\n                        </mat-menu>\n                    </ng-container>\n                </div>\n            </adf-datatable-row>\n            <div *ngIf=\"isEmpty()\" role=\"row\" class=\"adf-datatable-row\">\n                <div class=\"adf-no-content-container adf-datatable-cell\" role=\"gridcell\">\n                    <ng-template *ngIf=\"noContentTemplate\"\n                                    ngFor [ngForOf]=\"[data]\"\n                                    [ngForTemplate]=\"noContentTemplate\" />\n                    <ng-content select=\"adf-empty-list\" />\n                </div>\n            </div>\n        </ng-container>\n\n        <ng-template #noPermissionsRowTemplate>\n            <div\n                role=\"row\"\n                class=\"adf-datatable-row adf-no-permission__row\">\n                <div class=\"adf-no-permission__cell adf-no-content-container adf-datatable-cell\">\n                    <ng-template *ngIf=\"noPermissionTemplate\"\n                                ngFor [ngForOf]=\"[data]\"\n                                [ngForTemplate]=\"noPermissionTemplate\" />\n                </div>\n            </div>\n        </ng-template>\n    </div>\n    <ng-template #loadingRowTemplate>\n        <div class=\"adf-datatable-row adf-datatable-data-loading\">\n            <div class=\"adf-no-content-container adf-datatable-cell\">\n                <ng-template *ngIf=\"loadingTemplate\"\n                             ngFor [ngForOf]=\"[data]\"\n                             [ngForTemplate]=\"loadingTemplate\" />\n            </div>\n        </div>\n    </ng-template>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, Directive, ViewEncapsulation } from '@angular/core';\n\n@Component({\n    selector: 'adf-empty-list',\n    styleUrls: ['./empty-list.component.scss'],\n    templateUrl: './empty-list.component.html',\n    encapsulation: ViewEncapsulation.None\n})\nexport class EmptyListComponent {}\n\n@Directive({\n    selector: '[adf-empty-list-header]'\n})\nexport class EmptyListHeaderDirective {}\n\n@Directive({\n    selector: '[adf-empty-list-body]'\n})\nexport class EmptyListBodyDirective {}\n\n@Directive({\n    selector: '[adf-empty-list-footer]'\n})\nexport class EmptyListFooterDirective {}\n","<div class=\"adf-empty-list_template\">\n    <ng-content select=\"[adf-empty-list-header]\" />\n    <ng-content select=\"[adf-empty-list-body]\" />\n    <ng-content select=\"[adf-empty-list-footer]\" />\n    <ng-content />\n</div>","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DataColumn } from './data-column.model';\nimport { DataRow } from './data-row.model';\nimport { DataSorting } from './data-sorting.model';\nimport { Subject } from 'rxjs';\n\nexport interface DataTableAdapter {\n    rowsChanged?: Subject<Array<DataRow>>;\n    allowFocusOnRows?: boolean;\n\n    selectedRow: DataRow;\n    getRows(): Array<DataRow>;\n    setRows(rows: Array<DataRow>): void;\n    getColumns(): Array<DataColumn>;\n    setColumns(columns: Array<DataColumn>): void;\n    getValue(row: DataRow, col: DataColumn, resolverFn?: (_row: DataRow, _col: DataColumn) => any): any;\n    getColumnType(row: DataRow, col: DataColumn): string;\n    getSorting(): DataSorting;\n    setSorting(sorting: DataSorting): void;\n    sort(key?: string, direction?: string): void;\n    setAllowFocusOnTableRows?(allow: boolean): void;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface DataRow {\n    [key: string]: any;\n\n    isSelected: boolean;\n    isSelectable?: boolean;\n    isDropTarget?: boolean;\n    cssClass?: string;\n    id?: string;\n    isContextMenuSource?: boolean;\n\n    hasValue(key: string): boolean;\n\n    getValue(key: string): any;\n\n    imageErrorResolver?(event: Event): any;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable id-blacklist */\n\nimport { TemplateRef } from '@angular/core';\nimport { DataColumnType } from '@alfresco/adf-extensions';\n\nexport interface DataColumn<T = unknown> {\n    id?: string;\n    key: string;\n    type: DataColumnType;\n    format?: string;\n    sortable?: boolean;\n    title?: string;\n    subtitle?: string;\n    srTitle?: string;\n    cssClass?: string;\n    template?: TemplateRef<any>;\n    formatTooltip?: (...args) => string;\n    copyContent?: boolean;\n    editable?: boolean;\n    focus?: boolean;\n    sortingKey?: string;\n    header?: TemplateRef<any>;\n    draggable?: boolean;\n    resizable?: boolean;\n    isHidden?: boolean;\n    width?: number;\n    customData?: T;\n    order?: number;\n    currencyConfig?: CurrencyConfig;\n    decimalConfig?: DecimalConfig;\n    dateConfig?: DateConfig;\n    maxTextLength?: number;\n}\n\nexport interface LocaleConfig {\n    locale?: string;\n}\n\nexport interface DecimalConfig extends LocaleConfig {\n    digitsInfo?: string;\n}\n\nexport interface CurrencyConfig extends DecimalConfig {\n    code?: string;\n    display?: string;\n}\n\nexport interface DateConfig extends LocaleConfig {\n    format?: string;\n    tooltipFormat?: string;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ContentChild, Input, Directive, inject } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { AppConfigService } from '../../app-config/app-config.service';\nimport { DataColumnListComponent } from '../data-column/data-column-list.component';\nimport { DataColumn } from './data-column.model';\nimport { ObjectDataColumn } from './object-datacolumn.model';\n\n@Directive()\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport abstract class DataTableSchema<T = unknown> {\n    @ContentChild(DataColumnListComponent)\n    columnList: DataColumnListComponent;\n\n    /** Custom preset column schema in JSON format. */\n    @Input()\n    presetColumn: string;\n\n    columns: DataColumn<T>[];\n\n    protected columnsOrder: string[] | undefined;\n    protected columnsOrderedByKey: string = 'id';\n\n    protected columnsVisibility: { [columnId: string]: boolean } | undefined;\n    protected columnsWidths: { [columnId: string]: number } | undefined;\n\n    private layoutPresets = {};\n\n    protected columnsSchemaSubject$ = new BehaviorSubject<boolean>(false);\n    isColumnSchemaCreated$ = this.columnsSchemaSubject$.asObservable();\n\n    protected presetKey: string;\n    protected presetsModel: any;\n\n    protected readonly appConfigService = inject(AppConfigService);\n\n    constructor(presetKey: string, presetsModel: any) {\n        this.presetKey = presetKey;\n        this.presetsModel = presetsModel;\n    }\n\n    public createDatatableSchema(): void {\n        this.loadLayoutPresets();\n\n        if (!this.columns || this.columns.length === 0) {\n            this.createColumns();\n        }\n        this.columnsSchemaSubject$.next(true);\n    }\n\n    public createColumns(): void {\n        const allColumns = this.mergeJsonAndHtmlSchema();\n        const allColumnsWithWidth = this.setColumnsWidth(allColumns);\n        const columns = this.setHiddenColumns(allColumnsWithWidth);\n        this.columns = this.sortColumnsByKey(columns);\n    }\n\n    public loadLayoutPresets(): void {\n        const externalSettings = this.appConfigService.get(this.presetKey, null);\n        if (externalSettings) {\n            this.layoutPresets = Object.assign({}, this.presetsModel, externalSettings);\n        } else {\n            this.layoutPresets = this.presetsModel;\n        }\n    }\n\n    public mergeJsonAndHtmlSchema(): any {\n        const configSchemaColumns = this.getSchemaFromConfig(this.presetColumn);\n        const htmlSchemaColumns = this.getSchemaFromHtml(this.columnList);\n\n        let customSchemaColumns = [...configSchemaColumns, ...htmlSchemaColumns];\n\n        if (customSchemaColumns.length === 0) {\n            customSchemaColumns = this.getDefaultLayoutPreset();\n        } else {\n            customSchemaColumns.sort((col1, col2) => (col1.order || 0) - (col2.order || 0));\n        }\n\n        return customSchemaColumns;\n    }\n\n    public getSchemaFromHtml(columnList: DataColumnListComponent): DataColumn[] {\n        let schema = [];\n        if (columnList?.columns?.length > 0) {\n            schema = columnList.columns.map((c) => c as DataColumn);\n        }\n        return schema;\n    }\n\n    public getSchemaFromConfig(presetColumn: string): DataColumn[] {\n        return presetColumn && this.layoutPresets[presetColumn] ? this.layoutPresets[presetColumn].map((col) => new ObjectDataColumn(col)) : [];\n    }\n\n    private getDefaultLayoutPreset(): DataColumn[] {\n        return this.layoutPresets['default'].map((col) => new ObjectDataColumn(col));\n    }\n\n    public setPresetKey(presetKey: string) {\n        this.presetKey = presetKey;\n    }\n\n    public setPresetsModel(presetsModel: any) {\n        this.presetsModel = presetsModel;\n    }\n\n    private sortColumnsByKey(columns: any[]): any[] {\n        const defaultColumns = [...columns];\n        const columnsWithProperOrder = [];\n\n        (this.columnsOrder ?? []).forEach((columnKey) => {\n            const originalColumnIndex = defaultColumns.findIndex((defaultColumn) => defaultColumn[this.columnsOrderedByKey] === columnKey);\n\n            if (originalColumnIndex > -1) {\n                columnsWithProperOrder.push(defaultColumns[originalColumnIndex]);\n                defaultColumns.splice(originalColumnIndex, 1);\n            }\n        });\n\n        return [...columnsWithProperOrder, ...defaultColumns];\n    }\n\n    private setHiddenColumns(columns: DataColumn[]): DataColumn[] {\n        if (this.columnsVisibility) {\n            return columns.map((column) => {\n                const isColumnVisible = this.columnsVisibility[column.id];\n\n                return isColumnVisible === undefined ? column : { ...column, isHidden: !isColumnVisible };\n            });\n        }\n\n        return columns;\n    }\n\n    private setColumnsWidth(columns: DataColumn[]): DataColumn[] {\n        if (this.columnsWidths) {\n            return columns.map((column) => {\n                const columnWidth = this.columnsWidths[column.id];\n                return columnWidth === undefined ? column : { ...column, width: columnWidth };\n            });\n        }\n        return columns;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AfterContentInit, ContentChild, Directive, TemplateRef, inject } from '@angular/core';\nimport { DataTableComponent } from '../components/datatable/datatable.component';\n\n/**\n * Directive selectors without adf- prefix will be deprecated on 3.0.0\n */\n@Directive({\n    selector: 'adf-loading-content-template, loading-content-template'\n})\nexport class LoadingContentTemplateDirective implements AfterContentInit {\n    private readonly dataTable = inject(DataTableComponent);\n\n    @ContentChild(TemplateRef)\n    template: any;\n\n    ngAfterContentInit() {\n        if (this.dataTable) {\n            this.dataTable.loadingTemplate = this.template;\n        }\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AfterContentInit, ContentChild, Directive, TemplateRef, inject } from '@angular/core';\nimport { DataTableComponent } from '../components/datatable/datatable.component';\n\n/**\n * Directive selectors without adf- prefix will be deprecated on 3.0.0\n */\n@Directive({\n    selector: 'adf-no-content-template, no-content-template'\n})\nexport class NoContentTemplateDirective implements AfterContentInit {\n    private readonly dataTable = inject(DataTableComponent);\n\n    @ContentChild(TemplateRef)\n    template: any;\n\n    ngAfterContentInit() {\n        if (this.dataTable) {\n            this.dataTable.noContentTemplate = this.template;\n        }\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AfterContentInit, ContentChild, Directive, TemplateRef, inject } from '@angular/core';\nimport { DataTableComponent } from '../components/datatable/datatable.component';\n\n/**\n * Directive selectors without adf- prefix will be deprecated on 3.0.0\n */\n@Directive({\n    selector: 'adf-no-permission-template, no-permission-template'\n})\nexport class NoPermissionTemplateDirective implements AfterContentInit {\n    private readonly dataTable = inject(DataTableComponent);\n\n    @ContentChild(TemplateRef)\n    template: any;\n\n    ngAfterContentInit() {\n        if (this.dataTable) {\n            this.dataTable.noPermissionTemplate = this.template;\n        }\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AfterContentInit, ContentChild, Directive, TemplateRef, inject } from '@angular/core';\nimport { DataTableComponent } from '../components/datatable/datatable.component';\n\n@Directive({\n    selector: 'adf-header-filter-template'\n})\nexport class HeaderFilterTemplateDirective implements AfterContentInit {\n    private readonly dataTable = inject(DataTableComponent, { optional: true });\n\n    @ContentChild(TemplateRef)\n    template: any;\n\n    ngAfterContentInit() {\n        if (this.dataTable) {\n            this.dataTable.headerFilterTemplate = this.template;\n        }\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Directive } from '@angular/core';\n\n/**\n * Directive selectors without adf- prefix will be deprecated on 3.0.0.\n * The empty-folder-content selector will be deprecated as it has been replace by\n * adf-custom-empty-content-template.\n */\n@Directive({\n    selector: 'adf-custom-empty-content-template, empty-folder-content'\n})\nexport class CustomEmptyContentTemplateDirective {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Directive } from '@angular/core';\n\n@Directive({\n    selector: 'adf-custom-loading-content-template'\n})\nexport class CustomLoadingContentTemplateDirective {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Directive } from '@angular/core';\n\n/**\n * Directive selectors without adf- prefix will be deprecated on 3.0.0.\n * The no-permission-content selector will be deprecated as it has been replace by\n * adf-custom-no-permission-template.\n */\n@Directive({\n    selector: 'adf-custom-no-permission-template, no-permission-content'\n})\nexport class CustomNoPermissionTemplateDirective {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AfterContentInit, ContentChild, Directive, TemplateRef, inject } from '@angular/core';\nimport { DataTableComponent } from '../components/datatable/datatable.component';\n\n@Directive({\n    selector: 'adf-main-menu-datatable-template'\n})\nexport class MainMenuDataTableTemplateDirective implements AfterContentInit {\n    private readonly dataTable = inject(DataTableComponent);\n\n    @ContentChild(TemplateRef)\n    template: any;\n\n    ngAfterContentInit() {\n        if (this.dataTable) {\n            this.dataTable.mainActionTemplate = this.template;\n        }\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NgModule } from '@angular/core';\nimport { DataTableCellComponent } from './components/datatable-cell/datatable-cell.component';\nimport { DataTableRowComponent } from './components/datatable-row/datatable-row.component';\nimport { DataTableComponent } from './components/datatable/datatable.component';\nimport { DateCellComponent } from './components/date-cell/date-cell.component';\nimport { ColumnsSelectorComponent } from './components/columns-selector/columns-selector.component';\nimport {\n    EmptyListBodyDirective,\n    EmptyListComponent,\n    EmptyListFooterDirective,\n    EmptyListHeaderDirective\n} from './components/empty-list/empty-list.component';\nimport { FileSizeCellComponent } from './components/filesize-cell/filesize-cell.component';\nimport { LocationCellComponent } from './components/location-cell/location-cell.component';\nimport { LoadingContentTemplateDirective } from './directives/loading-template.directive';\nimport { NoContentTemplateDirective } from './directives/no-content-template.directive';\nimport { NoPermissionTemplateDirective } from './directives/no-permission-template.directive';\nimport { HeaderFilterTemplateDirective } from './directives/header-filter-template.directive';\nimport { CustomEmptyContentTemplateDirective } from './directives/custom-empty-content-template.directive';\nimport { CustomLoadingContentTemplateDirective } from './directives/custom-loading-template.directive';\nimport { CustomNoPermissionTemplateDirective } from './directives/custom-no-permission-template.directive';\nimport { MainMenuDataTableTemplateDirective } from './directives/main-data-table-action-template.directive';\nimport { JsonCellComponent } from './components/json-cell/json-cell.component';\nimport { DropZoneDirective } from './directives/drop-zone.directive';\nimport { DataColumnComponent, DataColumnListComponent, DateColumnHeaderComponent } from './data-column';\nimport { BooleanCellComponent } from './components/boolean-cell/boolean-cell.component';\nimport { AmountCellComponent } from './components/amount-cell/amount-cell.component';\nimport { NumberCellComponent } from './components/number-cell/number-cell.component';\nimport { LocalizedDatePipe } from '../pipes';\nimport { IconCellComponent } from './components/icon-cell/icon-cell.component';\nimport { ResizableDirective } from './directives/resizable/resizable.directive';\nimport { ResizeHandleDirective } from './directives/resizable/resize-handle.directive';\n\nexport const DATATABLE_DIRECTIVES = [\n    BooleanCellComponent,\n    AmountCellComponent,\n    NumberCellComponent,\n    LocationCellComponent,\n    DateCellComponent,\n    IconCellComponent,\n    ColumnsSelectorComponent,\n    DataColumnComponent,\n    DataColumnListComponent,\n    DateColumnHeaderComponent,\n    LocalizedDatePipe,\n    ResizableDirective,\n    ResizeHandleDirective,\n    DropZoneDirective,\n    EmptyListComponent,\n    EmptyListHeaderDirective,\n    EmptyListBodyDirective,\n    EmptyListFooterDirective,\n    FileSizeCellComponent,\n    JsonCellComponent,\n    NoContentTemplateDirective,\n    NoPermissionTemplateDirective,\n    LoadingContentTemplateDirective,\n    HeaderFilterTemplateDirective,\n    CustomEmptyContentTemplateDirective,\n    CustomLoadingContentTemplateDirective,\n    CustomNoPermissionTemplateDirective,\n    MainMenuDataTableTemplateDirective,\n    DataTableRowComponent,\n    DataTableCellComponent,\n    DataTableComponent\n] as const;\n\n/** @deprecated use `...DATATABLE_DIRECTIVES` instead, or import standalone components directly */\n@NgModule({\n    imports: [...DATATABLE_DIRECTIVES],\n    exports: [...DATATABLE_DIRECTIVES]\n})\nexport class DataTableModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './components/amount-cell/amount-cell.component';\nexport * from './components/boolean-cell/boolean-cell.component';\nexport * from './components/columns-selector/columns-selector.component';\nexport * from './components/datatable/datatable.component';\nexport * from './components/datatable-cell/datatable-cell.component';\nexport * from './components/datatable-row/datatable-row.component';\nexport * from './components/date-cell/date-cell.component';\nexport * from './components/empty-list/empty-list.component';\nexport * from './components/filesize-cell/filesize-cell.component';\nexport * from './components/icon-cell/icon-cell.component';\nexport * from './components/json-cell/json-cell.component';\nexport * from './components/location-cell/location-cell.component';\nexport * from './components/number-cell/number-cell.component';\nexport * from './components/data-row-action.event';\nexport * from './components/data-cell.event';\n\nexport * from './data/datatable-adapter';\nexport * from './data/data-row.model';\nexport * from './data/data-row-event.model';\nexport * from './data/data-column.model';\nexport * from './data/data-sorting.model';\nexport * from './data/object-datarow.model';\nexport * from './data/object-datatable-adapter';\nexport * from './data/object-datacolumn.model';\nexport * from './data/data-table.schema';\n\nexport * from './data-column';\n\nexport * from './directives/resizable/resizable.directive';\nexport * from './directives/resizable/resize-handle.directive';\nexport * from './directives/drop-zone.directive';\nexport * from './directives/loading-template.directive';\nexport * from './directives/no-content-template.directive';\nexport * from './directives/no-permission-template.directive';\nexport * from './directives/header-filter-template.directive';\nexport * from './directives/custom-empty-content-template.directive';\nexport * from './directives/custom-loading-template.directive';\nexport * from './directives/custom-no-permission-template.directive';\nexport * from './directives/main-data-table-action-template.directive';\n\nexport * from './services/datatable.service';\n\nexport * from './datatable.module';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { BaseCardViewUpdate } from '../interfaces/base-card-view-update.interface';\nimport { ClickNotification } from '../interfaces/click-notification.interface';\nimport { UpdateNotification } from '../interfaces/update-notification.interface';\nimport { CardViewBaseItemModel } from '../models/card-view-baseitem.model';\n\nexport const transformKeyToObject = (key: string, value): any => {\n    const objectLevels: string[] = key.split('.').reverse();\n\n    return objectLevels.reduce<any>((previousValue, currentValue) => ({ [currentValue]: previousValue }), value);\n};\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class CardViewUpdateService implements BaseCardViewUpdate {\n    itemUpdated$ = new Subject<UpdateNotification>();\n    itemClicked$ = new Subject<ClickNotification>();\n    updateItem$ = new Subject<CardViewBaseItemModel>();\n    autocompleteInputValue$ = new Subject<string>();\n\n    update(property: CardViewBaseItemModel, newValue: any) {\n        this.itemUpdated$.next({\n            target: property,\n            changed: transformKeyToObject(property.key, newValue)\n        });\n    }\n\n    clicked(property: CardViewBaseItemModel) {\n        this.itemClicked$.next({\n            target: property\n        });\n    }\n\n    /**\n     * Updates the cardview items property\n     *\n     * @param notification notification value\n     */\n    updateElement(notification: CardViewBaseItemModel) {\n        this.updateItem$.next(notification);\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Directive, inject, Input } from '@angular/core';\nimport { CardViewUpdateService } from '../services/card-view-update.service';\nimport { CardViewItem } from '../interfaces/card-view.interfaces';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Directive()\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport abstract class BaseCardView<T extends CardViewItem> {\n    protected cardViewUpdateService = inject(CardViewUpdateService);\n\n    @Input()\n    editable = false;\n\n    @Input()\n    property: T;\n\n    constructor() {\n        this.cardViewUpdateService.updateItem$.pipe(takeUntilDestroyed()).subscribe((itemModel) => {\n            if (this.property.key === itemModel.key) {\n                this.property.value = itemModel.value;\n            }\n        });\n    }\n\n    get isEditable(): boolean {\n        return this.editable && this.property.editable;\n    }\n\n    get isReadonlyProperty(): boolean {\n        return !this.property.editable;\n    }\n\n    get hasIcon(): boolean {\n        return !!this.property.icon;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChangeDetectorRef, Component, DestroyRef, inject, Input, OnChanges, SimpleChanges, ViewEncapsulation } from '@angular/core';\nimport { CardViewTextItemModel } from '../../models/card-view-textitem.model';\nimport { BaseCardView } from '../base-card-view';\nimport { MatChipInputEvent, MatChipsModule } from '@angular/material/chips';\nimport { ClipboardService } from '../../../clipboard/clipboard.service';\nimport { TranslationService } from '../../../translation/translation.service';\nimport { CardViewItemValidator } from '../../interfaces/card-view-item-validator.interface';\nimport { FormsModule, ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\nimport { debounceTime, filter } from 'rxjs/operators';\nimport { CommonModule } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { IconModule } from '../../../icon/icon.module';\n\nexport const DEFAULT_SEPARATOR = ', ';\nconst templateTypes = {\n    clickableTemplate: 'clickableTemplate',\n    multilineTemplate: 'multilineTemplate',\n    chipsTemplate: 'chipsTemplate',\n    defaultTemplate: 'defaultTemplate'\n};\n\n@Component({\n    selector: 'adf-card-view-textitem',\n    imports: [\n        CommonModule,\n        MatFormFieldModule,\n        TranslatePipe,\n        MatInputModule,\n        ReactiveFormsModule,\n        MatChipsModule,\n        IconModule,\n        FormsModule,\n        MatButtonModule,\n        MatSnackBarModule\n    ],\n    templateUrl: './card-view-textitem.component.html',\n    styleUrls: ['./card-view-textitem.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    host: { class: 'adf-card-view-textitem' }\n})\nexport class CardViewTextItemComponent extends BaseCardView<CardViewTextItemModel> implements OnChanges {\n    private readonly clipboardService = inject(ClipboardService);\n    private readonly translateService = inject(TranslationService);\n    private readonly cd = inject(ChangeDetectorRef);\n\n    @Input()\n    displayEmpty = true;\n\n    @Input()\n    copyToClipboardAction = true;\n\n    @Input()\n    useChipsForMultiValueProperty = true;\n\n    @Input()\n    multiValueSeparator: string = DEFAULT_SEPARATOR;\n\n    editedValue: string | string[];\n    errors: CardViewItemValidator[];\n    templateType: string;\n    textInput = new UntypedFormControl();\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes.property?.firstChange) {\n            this.textInput.valueChanges\n                .pipe(\n                    filter((textInputValue) => textInputValue !== this.editedValue && textInputValue !== null),\n                    debounceTime(50),\n                    takeUntilDestroyed(this.destroyRef)\n                )\n                .subscribe((textInputValue) => {\n                    this.editedValue = textInputValue;\n                    this.update();\n                });\n        }\n\n        this.resetValue();\n        this.setTemplateType();\n\n        if (changes.editable) {\n            if (this.isEditable) {\n                this.textInput.enable();\n            } else {\n                this.textInput.disable();\n            }\n        }\n    }\n\n    private setTemplateType() {\n        if (this.showProperty || this.isEditable) {\n            if (this.isClickable) {\n                this.templateType = templateTypes.clickableTemplate;\n            } else if (this.isChipViewEnabled) {\n                this.templateType = templateTypes.chipsTemplate;\n            } else {\n                this.templateType = templateTypes.defaultTemplate;\n            }\n        } else {\n            this.templateType = templateTypes.defaultTemplate;\n        }\n    }\n\n    resetValue() {\n        if (this.isChipViewEnabled) {\n            this.editedValue = this.property.value ? Array.from(this.property.value) : [];\n        } else {\n            this.editedValue = this.property.displayValue;\n            this.textInput.setValue(this.editedValue);\n        }\n\n        this.resetErrorMessages();\n    }\n\n    private resetErrorMessages() {\n        this.errors = [];\n        this.textInput.setErrors(null);\n        this.textInput.markAsUntouched();\n    }\n\n    update(): void {\n        if (this.isEditable) {\n            this.resetErrorMessages();\n            if (this.property.isValid(this.editedValue)) {\n                this.property.value = this.prepareValueForUpload(this.property, this.editedValue);\n                this.cardViewUpdateService.update({ ...this.property, isValidValue: true } as CardViewTextItemModel, this.property.value);\n            } else {\n                this.errors = this.property.getValidationErrors(this.editedValue);\n                this.textInput.setErrors({ customError: true });\n                this.textInput.markAsTouched();\n                this.cardViewUpdateService.update({ ...this.property, isValidValue: false } as CardViewTextItemModel, this.editedValue);\n            }\n        }\n    }\n\n    prepareValueForUpload(property: CardViewTextItemModel, value: string | string[]): string | string[] {\n        if (typeof value === 'string') {\n            if (property.multivalued) {\n                return value.split(this.multiValueSeparator.trim()).map((item) => item.trim());\n            } else if (property.type === 'int' || property.type === 'long') {\n                return this.prepareIntLongValue(value);\n            }\n        }\n        return value;\n    }\n\n    removeValueFromList(itemIndex: number) {\n        if (Array.isArray(this.editedValue)) {\n            this.editedValue.splice(itemIndex, 1);\n            this.update();\n            this.cd.detectChanges();\n        }\n    }\n\n    addValueToList(newListItem: MatChipInputEvent) {\n        const chipInput = newListItem.chipInput.inputElement;\n        let chipValue = newListItem.value.trim() || '';\n\n        if (typeof this.editedValue !== 'string') {\n            if (this.property.isValid(chipValue)) {\n                if (chipValue) {\n                    if (this.property.type === 'int' || this.property.type === 'long') {\n                        chipValue = this.prepareIntLongValue(chipValue);\n                    }\n                    this.editedValue.push(chipValue);\n                    this.update();\n                }\n\n                if (chipInput) {\n                    chipInput.value = '';\n                }\n            } else {\n                this.errors = this.property.getValidationErrors(chipValue);\n            }\n        }\n    }\n\n    clicked(): void {\n        if (typeof this.property.clickCallBack === 'function') {\n            this.property.clickCallBack();\n        } else {\n            this.cardViewUpdateService.clicked(this.property);\n        }\n    }\n\n    clearValue() {\n        this.editedValue = '';\n        this.textInput.setValue('');\n        this.update();\n    }\n\n    copyToClipboard(valueToCopy: string) {\n        if (this.copyToClipboardAction) {\n            const clipboardMessage = this.translateService.instant('CORE.METADATA.ACCESSIBILITY.COPY_TO_CLIPBOARD_MESSAGE');\n            this.clipboardService.copyContentToClipboard(valueToCopy, clipboardMessage);\n        }\n    }\n\n    undoText(event: KeyboardEvent) {\n        if ((event.ctrlKey || event.metaKey) && event.code === 'KeyZ' && this.textInput.value) {\n            this.textInput.setValue('');\n        }\n    }\n\n    get showProperty(): boolean {\n        return this.displayEmpty || !this.property.isEmpty();\n    }\n\n    get showClickableIcon(): boolean {\n        return this.hasIcon && this.editable;\n    }\n\n    get isClickable(): boolean {\n        return this.property.clickable;\n    }\n\n    get hasErrors(): boolean {\n        return !!this.errors?.length;\n    }\n\n    get isChipViewEnabled(): boolean {\n        return this.property.multivalued && this.useChipsForMultiValueProperty;\n    }\n\n    private prepareIntLongValue(value: string): string {\n        return String(Math.trunc(Number(value)));\n    }\n}\n","@if (showProperty || isEditable) {\n    <div class=\"adf-card-textitem-field-container\" [ngSwitch]=\"templateType\">\n        <div *ngSwitchDefault>\n            <mat-form-field\n                class=\"adf-property-field adf-card-textitem-field\"\n                [ngClass]=\"{\n                    'adf-property-read-only': isReadonlyProperty\n                }\"\n                (dblclick)=\"copyToClipboard(property.displayValue)\"\n                [attr.data-automation-id]=\"'card-textitem-field-' + property.key\"\n                [title]=\"'CORE.METADATA.ACTIONS.COPY_TO_CLIPBOARD' | translate\"\n            >\n                <mat-label\n                    [attr.data-automation-id]=\"'card-textitem-label-' + property.key\"\n                    class=\"adf-property-label\"\n                    [ngClass]=\"{\n                        'adf-property-value-editable': editable,\n                        'adf-property-readonly-value': isReadonlyProperty || !editable\n                    }\"\n                >\n                    {{ property.label | translate }}\n                </mat-label>\n\n                <input\n                    matInput\n                    *ngIf=\"!property.multiline\"\n                    class=\"adf-property-value\"\n                    [ngClass]=\"{\n                        'adf-property-value-editable': editable,\n                        'adf-property-readonly-value': isReadonlyProperty || !editable,\n                        'adf-property-value-has-error': isEditable && hasErrors,\n                        'adf-property-value-not-editable': !editable\n                    }\"\n                    title=\"{{ property.label | translate }}\"\n                    [placeholder]=\"property.default\"\n                    [attr.aria-label]=\"property.label | translate\"\n                    [formControl]=\"textInput\"\n                    [attr.data-automation-id]=\"'card-textitem-value-' + property.key\"\n                    (keydown)=\"undoText($event)\"\n                    (blur)=\"update()\"\n                    [aria-describedby]=\"'adf-card-textitem-error-' + property.key\"\n                />\n                <textarea\n                    matInput\n                    *ngIf=\"property.multiline\"\n                    title=\"{{ property.label | translate }}\"\n                    [cdkTextareaAutosize]=\"true\"\n                    [cdkAutosizeMinRows]=\"1\"\n                    [cdkAutosizeMaxRows]=\"5\"\n                    class=\"adf-property-value\"\n                    [ngClass]=\"{\n                        'adf-property-value-editable': editable,\n                        'adf-property-readonly-value': isReadonlyProperty || !editable,\n                    }\"\n                    [placeholder]=\"property.default\"\n                    [attr.aria-label]=\"property.label | translate\"\n                    [formControl]=\"textInput\"\n                    [attr.data-automation-id]=\"'card-textitem-value-' + property.key\"\n                >\n                </textarea>\n            </mat-form-field>\n        </div>\n\n        <div\n            *ngSwitchCase=\"'chipsTemplate'\"\n            class=\"adf-property-field adf-textitem-chip-list-container\"\n            [ngClass]=\"{ 'adf-property-read-only': isReadonlyProperty }\"\n        >\n            <mat-form-field\n                class=\"adf-property-field adf-textitem-chip-list-input\"\n                [ngClass]=\"{ 'adf-property-read-only': isReadonlyProperty }\"\n            >\n                <mat-label\n                    [attr.data-automation-id]=\"'card-textitem-label-' + property.key\"\n                    class=\"adf-property-label\"\n                    [ngClass]=\"{ 'adf-property-value-editable': editable }\"\n                >\n                    {{ property.label | translate }}\n                </mat-label>\n                <mat-chip-grid #chipElement class=\"adf-textitem-chip-list\">\n                    <mat-chip-row *ngFor=\"let propertyValue of editedValue; let idx = index\" [removable]=\"isEditable\" (removed)=\"removeValueFromList(idx)\">\n                        {{ propertyValue }}\n                        <mat-icon *ngIf=\"isEditable\" matChipRemove adf-icon=\"cancel\" />\n                    </mat-chip-row>\n                </mat-chip-grid>\n                <input\n                    matInput\n                    class=\"adf-property-value\"\n                    [ngClass]=\"{\n                        'adf-property-value-editable': editable,\n                        'adf-property-readonly-value': isReadonlyProperty || !editable\n                    }\"\n                    title=\"{{ property.label | translate }}\"\n                    [placeholder]=\"editedValue ? '' : (property.default | translate)\"\n                    [attr.aria-label]=\"property.label | translate\"\n                    [matChipInputFor]=\"chipElement\"\n                    [matChipInputAddOnBlur]=\"true\"\n                    (matChipInputTokenEnd)=\"addValueToList($event)\"\n                    [attr.data-automation-id]=\"'card-textitem-editchipinput-' + property.key\"\n                />\n            </mat-form-field>\n        </div>\n        <button\n            type=\"button\"\n            *ngSwitchCase=\"'clickableTemplate'\"\n            class=\"adf-textitem-clickable\"\n            [ngClass]=\"{ 'adf-property-read-only': isReadonlyProperty }\"\n            [attr.data-automation-id]=\"'card-textitem-toggle-' + property.key\"\n            (click)=\"clicked()\"\n        >\n            <mat-form-field class=\"adf-property-field adf-card-textitem-field\">\n                <mat-label\n                    [attr.data-automation-id]=\"'card-textitem-label-' + property.key\"\n                    class=\"adf-property-label\"\n                    [ngClass]=\"{ 'adf-property-value-editable': editable }\"\n                >\n                    {{ property.label | translate }}\n                </mat-label>\n                <input\n                    matInput\n                    [type]=\"property.inputType\"\n                    class=\"adf-property-value\"\n                    title=\"{{ property.label | translate }}\"\n                    [ngClass]=\"{\n                        'adf-property-value-editable': editable,\n                        'adf-textitem-clickable-value': isClickable,\n                        'adf-property-readonly-value': isReadonlyProperty || !editable,\n                        'adf-property-value-has-error': isEditable && hasErrors,\n                        'adf-property-value-has-icon-suffix': showClickableIcon\n                    }\"\n                    [placeholder]=\"property.default\"\n                    aria-hidden=\"true\"\n                    [attr.aria-label]=\"property.label | translate\"\n                    [(ngModel)]=\"editedValue\"\n                    (blur)=\"update()\"\n                    (keydown.enter)=\"update()\"\n                    [disabled]=\"isReadonlyProperty || !editable\"\n                    tabindex=\"-1\"\n                    [attr.data-automation-id]=\"'card-textitem-value-' + property.key\"\n                    [aria-describedby]=\"'adf-card-textitem-error-' + property.key\"\n                />\n                <button\n                    mat-icon-button\n                    matSuffix\n                    *ngIf=\"showClickableIcon\"\n                    class=\"adf-textitem-action\"\n                    [attr.title]=\"'CORE.METADATA.ACTIONS.EDIT' | translate\"\n                    [attr.data-automation-id]=\"'card-textitem-clickable-icon-' + property.key\"\n                >\n                    <mat-icon class=\"adf-textitem-icon\" [adf-icon]=\"property?.icon\" />\n                </button>\n            </mat-form-field>\n        </button>\n\n    <mat-error\n        *ngIf=\"isEditable && hasErrors\"\n        class=\"adf-textitem-error\"\n        [attr.data-automation-id]=\"'card-textitem-error-' + property.key\"\n        [id]=\"'adf-card-textitem-error-' + property.key\"\n        role=\"alert\"\n        aria-live=\"polite\">\n        <ul>\n            <li *ngFor=\"let error of errors\">{{ error.message | translate : error }}</li>\n        </ul>\n    </mat-error>\n</div>\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, effect, Input, OnInit, ViewChild, ViewEncapsulation, inject } from '@angular/core';\nimport { DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';\nimport {\n    DatetimeAdapter,\n    MAT_DATETIME_FORMATS,\n    MatDatetimepickerComponent,\n    MatDatetimepickerInputEvent,\n    MatDatetimepickerModule\n} from '@mat-datetimepicker/core';\nimport { CardViewDateItemModel } from '../../models/card-view-dateitem.model';\nimport { UserPreferencesService } from '../../../common/services/user-preferences.service';\nimport { BaseCardView } from '../base-card-view';\nimport { ClipboardService } from '../../../clipboard/clipboard.service';\nimport { TranslationService } from '../../../translation/translation.service';\nimport { ADF_DATE_FORMATS, AdfDateFnsAdapter } from '../../../common/utils/date-fns-adapter';\nimport { ADF_DATETIME_FORMATS, AdfDateTimeFnsAdapter } from '../../../common/utils/datetime-fns-adapter';\nimport { isValid } from 'date-fns';\nimport { DateFnsUtils } from '../../../common/utils/date-fns-utils';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { IconModule } from '../../../icon/icon.module';\n\n@Component({\n    providers: [\n        { provide: MAT_DATE_FORMATS, useValue: ADF_DATE_FORMATS },\n        { provide: MAT_DATETIME_FORMATS, useValue: ADF_DATETIME_FORMATS },\n        { provide: DateAdapter, useClass: AdfDateFnsAdapter },\n        { provide: DatetimeAdapter, useClass: AdfDateTimeFnsAdapter }\n    ],\n    selector: 'adf-card-view-dateitem',\n    imports: [\n        CommonModule,\n        TranslatePipe,\n        IconModule,\n        MatDatetimepickerModule,\n        MatChipsModule,\n        MatInputModule,\n        MatFormFieldModule,\n        MatDatepickerModule,\n        MatSnackBarModule,\n        ReactiveFormsModule\n    ],\n    templateUrl: './card-view-dateitem.component.html',\n    styleUrls: ['./card-view-dateitem.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    host: { class: 'adf-card-view-dateitem' }\n})\nexport class CardViewDateItemComponent extends BaseCardView<CardViewDateItemModel> implements OnInit {\n    private readonly dateAdapter = inject<DateAdapter<Date>>(DateAdapter);\n    private readonly userPreferencesService = inject(UserPreferencesService);\n    private readonly clipboardService = inject(ClipboardService);\n    private readonly translateService = inject(TranslationService);\n\n    @Input()\n    displayEmpty = true;\n\n    @Input()\n    displayClearAction = true;\n\n    @ViewChild('datetimePicker')\n    public datepicker: MatDatetimepickerComponent<any>;\n\n    valueDate: Date;\n\n    cardViewDateTimeControl: FormControl<Date> = new FormControl<Date>(null);\n\n    constructor() {\n        super();\n        // Use effect to react to locale signal changes (must be in injection context)\n        effect(() => {\n            this.property.locale = this.userPreferencesService.localeSignal();\n        });\n    }\n\n    ngOnInit() {\n        (this.dateAdapter as AdfDateFnsAdapter).displayFormat = 'MMM DD';\n\n        if (this.property.multivalued) {\n            this.initMultivaluedProperty();\n        } else {\n            this.initSingleValueProperty();\n        }\n    }\n\n    get showProperty(): boolean {\n        return this.displayEmpty || !this.property.isEmpty();\n    }\n\n    get showClearAction(): boolean {\n        return this.displayClearAction && (!this.property.isEmpty() || !!this.property.default);\n    }\n\n    showDatePicker(): void {\n        this.datepicker.open();\n    }\n\n    onDateChanged(event: MatDatetimepickerInputEvent<Date>) {\n        if (event.value) {\n            if (isValid(event.value)) {\n                this.property.value = new Date(event.value);\n                this.valueDate = new Date(event.value);\n                if (this.property.type === 'date') {\n                    this.property.value = DateFnsUtils.forceUtc(event.value);\n                    this.valueDate = DateFnsUtils.forceLocal(event.value);\n                }\n                this.update();\n            }\n        }\n    }\n\n    onDateClear() {\n        this.valueDate = null;\n        this.cardViewUpdateService.update({ ...this.property } as CardViewDateItemModel, null);\n        this.property.value = null;\n        this.property.default = null;\n    }\n\n    copyToClipboard(valueToCopy: string | string[]) {\n        if (typeof valueToCopy === 'string') {\n            const clipboardMessage = this.translateService.instant('CORE.METADATA.ACCESSIBILITY.COPY_TO_CLIPBOARD_MESSAGE');\n            this.clipboardService.copyContentToClipboard(valueToCopy, clipboardMessage);\n        }\n    }\n\n    addDateToList(event: MatDatetimepickerInputEvent<Date>) {\n        if (event.value) {\n            if (isValid(event.value) && this.property.multivalued && Array.isArray(this.property.value)) {\n                let localDate = new Date(event.value);\n                if (this.property.type === 'date') {\n                    localDate = DateFnsUtils.forceUtc(event.value);\n                }\n                this.property.value.push(localDate);\n                this.update();\n            }\n        }\n    }\n\n    removeValueFromList(itemIndex: number) {\n        if (this.property.multivalued && Array.isArray(this.property.value)) {\n            this.property.value.splice(itemIndex, 1);\n            this.update();\n        }\n    }\n\n    update() {\n        this.cardViewUpdateService.update({ ...this.property } as CardViewDateItemModel, this.property.value);\n    }\n\n    private initSingleValueProperty() {\n        if (this.property.value && !Array.isArray(this.property.value)) {\n            const date = new Date(this.property.value);\n            this.property.value = date;\n            this.valueDate = this.property.type === 'date' ? DateFnsUtils.forceLocal(date) : date;\n        }\n    }\n\n    private initMultivaluedProperty() {\n        if (!this.property.value) {\n            this.property.value = [];\n        }\n        if (Array.isArray(this.property.value) && this.property.value.length > 0) {\n            this.property.value = this.property.value.map((date: Date | string) => new Date(date));\n            this.valueDate = this.property.type === 'date' ? DateFnsUtils.forceLocal(this.property.value[0]) : this.property.value[0];\n        }\n    }\n}\n","<div class=\"adf-property-value\" [ngClass]=\"{ 'adf-property-value-editable': editable, 'adf-property-readonly-value': isReadonlyProperty || !editable }\">\n    @if (!property.multivalued) {\n        <mat-form-field class=\"adf-property-field adf-dateitem-editable\" [floatLabel]=\"property.default ? 'always' : null\">\n            <mat-label\n                class=\"adf-property-label\"\n                [attr.data-automation-id]=\"'card-dateitem-label-' + property.key\"\n                [attr.for]=\"'card-view-dateitem-' + property.key\"\n                [ngClass]=\"{ 'adf-property-readonly-value': isReadonlyProperty || !editable, 'adf-property-value-editable': editable }\"\n                [title]=\"'CORE.METADATA.ACTIONS.COPY_TO_CLIPBOARD' | translate\"\n            >\n                {{ property.label | translate }}\n            </mat-label>\n            <div class=\"adf-dateitem-editable-controls\">\n                <span\n                    class=\"adf-datepicker-span-button\"\n                    [attr.data-automation-id]=\"'datepicker-label-toggle-' + property.key\"\n                    (click)=\"showDatePicker()\"\n                    (dblclick)=\"copyToClipboard(property.displayValue)\"\n                    tabindex=\"0\"\n                    role=\"button\"\n                    (keyup.enter)=\"showDatePicker()\"\n                >\n                    <span [attr.data-automation-id]=\"'card-' + property.type + '-value-' + property.key\">\n                        @if (showProperty) {\n                            {{ property.displayValue }}\n                        } @else {\n                            {{ property.default | translate }}\n                        }\n\n                    </span>\n                </span>\n            </div>\n            <input\n                matInput\n                [disabled]=\"isReadonlyProperty || !editable\"\n                class=\"adf-invisible-date-input\"\n                [attr.tabIndex]=\"-1\"\n                [matDatetimepicker]=\"datetimePicker\"\n                [value]=\"valueDate\"\n                (dateChange)=\"onDateChanged($event)\"\n                [attr.id]=\"'card-view-dateitem-' + property.key\"\n            />\n                @if (showClearAction) {\n                    <mat-icon\n                        matIconSuffix\n                        class=\"adf-date-reset-icon\"\n                        [ngClass]=\"{ 'cdk-visually-hidden': !editable || isReadonlyProperty}\"\n                        (click)=\"onDateClear()\"\n                        [attr.title]=\"'CORE.METADATA.ACTIONS.CLEAR' | translate\"\n                        [attr.data-automation-id]=\"'datepicker-date-clear-' + property.key\"\n                        adf-icon=\"clear\"\n                    />\n                }\n                <mat-datetimepicker-toggle\n                    matIconSuffix\n                    [attr.tabindex]=\"-1\"\n                    [attr.title]=\"'CORE.METADATA.ACTIONS.EDIT' | translate\"\n                    [attr.data-automation-id]=\"'datepickertoggle-' + property.key\"\n                    [for]=\"datetimePicker\"\n                    class=\"adf-dateitem-picker-toggle\"\n                    [ngClass]=\"{ 'cdk-visually-hidden': !editable || isReadonlyProperty}\"\n                />\n\n                <mat-datetimepicker\n                    #datetimePicker\n                    [type]=\"$any(property).type\"\n                    [timeInterval]=\"5\"\n                    [disabled]=\"isReadonlyProperty || !editable\"\n                    [attr.data-automation-id]=\"'datepicker-' + property.key\"\n                    [startAt]=\"valueDate\"\n                    [ngClass]=\"{ 'cdk-visually-hidden': !editable || isReadonlyProperty}\"\n                />\n        </mat-form-field>\n    } @else {\n        <mat-form-field class=\"adf-property-field adf-dateitem-editable\" [floatLabel]=\"property.default ? 'always' : null\">\n            <mat-label\n                class=\"adf-property-label\"\n                [attr.data-automation-id]=\"'card-dateitem-label-' + property.key\"\n                [attr.for]=\"'card-view-dateitem-' + property.key\"\n                [ngClass]=\"{ 'adf-property-readonly-value': isReadonlyProperty || !editable, 'adf-property-value-editable': editable }\"\n                [title]=\"'CORE.METADATA.ACTIONS.COPY_TO_CLIPBOARD' | translate\"\n            >\n                {{ property.label | translate }}\n            </mat-label>\n            <mat-chip-listbox #chipList class=\"adf-textitem-chip-list\" [disabled]=\"isReadonlyProperty || !editable\">\n                <mat-chip-option\n                    *ngFor=\"let propertyValue of property.displayValue; let idx = index\"\n                    [removable]=\"isEditable\"\n                    (removed)=\"removeValueFromList(idx)\"\n                >\n                    {{ propertyValue }}\n                    @if (isEditable) {\n                        <mat-icon matChipRemove adf-icon=\"cancel\" />\n                    }\n                </mat-chip-option>\n            </mat-chip-listbox>\n            <div class=\"adf-dateitem-editable-controls\">\n                <span\n                    class=\"adf-datepicker-span-button\"\n                    [attr.data-automation-id]=\"'datepicker-label-toggle-' + property.key\"\n                    (click)=\"showDatePicker()\"\n                    (dblclick)=\"copyToClipboard(property.displayValue)\"\n                    tabindex=\"0\"\n                    role=\"button\"\n                    (keyup.enter)=\"showDatePicker()\"\n                ></span>\n            </div>\n            <input\n                matInput\n                [disabled]=\"isReadonlyProperty || !editable\"\n                class=\"adf-invisible-date-input\"\n                [attr.tabIndex]=\"-1\"\n                [matDatetimepicker]=\"datetimePicker\"\n                (dateChange)=\"addDateToList($event)\"\n                [attr.id]=\"'card-view-dateitem-' + property.key\"\n            />\n            <mat-datetimepicker-toggle\n                [attr.tabindex]=\"-1\"\n                matSuffix\n                [attr.title]=\"'CORE.METADATA.ACTIONS.EDIT' | translate\"\n                [attr.data-automation-id]=\"'datepickertoggle-' + property.key\"\n                [for]=\"datetimePicker\"\n                [ngClass]=\"{ 'cdk-visually-hidden': !editable || isReadonlyProperty}\"\n            />\n            <mat-datetimepicker\n                #datetimePicker\n                [type]=\"$any(property).type\"\n                [timeInterval]=\"5\"\n                [attr.data-automation-id]=\"'datepicker-' + property.key\"\n                [startAt]=\"valueDate\"\n                [disabled]=\"isReadonlyProperty || !editable\"\n                [ngClass]=\"{ 'cdk-visually-hidden': !editable || isReadonlyProperty}\"\n            />\n        </mat-form-field>\n    }\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, Input } from '@angular/core';\nimport { CardViewMapItemModel } from '../../models/card-view-mapitem.model';\nimport { BaseCardView } from '../base-card-view';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n@Component({\n    selector: 'adf-card-view-mapitem',\n    imports: [CommonModule, TranslatePipe],\n    templateUrl: './card-view-mapitem.component.html',\n    styleUrls: ['./card-view-mapitem.component.scss']\n})\nexport class CardViewMapItemComponent extends BaseCardView<CardViewMapItemModel> {\n    @Input()\n    displayEmpty: boolean = true;\n\n    get showProperty(): boolean {\n        return this.displayEmpty || !this.property.isEmpty();\n    }\n\n    get isClickable(): boolean {\n        return this.property.clickable;\n    }\n\n    clicked(): void {\n        this.cardViewUpdateService.clicked(this.property);\n    }\n}\n","<div [attr.data-automation-id]=\"'card-mapitem-label-' + property.key\"\n     class=\"adf-property-label\"\n     *ngIf=\"showProperty\">{{ property.label | translate }}</div>\n<div class=\"adf-property-value adf-map-item-padding\">\n    <div>\n        <span *ngIf=\"!isClickable; else clickableTemplate\"\n              [attr.data-automation-id]=\"'card-mapitem-value-' + property.key\">\n            <span *ngIf=\"showProperty;\">{{ property.displayValue }}</span>\n        </span>\n    </div>\n    <ng-template #clickableTemplate>\n        <span class=\"adf-mapitem-clickable-value\"\n              (click)=\"clicked()\"\n              tabindex=\"0\"\n              role=\"button\"\n              (keyup.enter)=\"clicked()\"\n              [attr.data-automation-id]=\"'card-mapitem-value-' + property.key\">\n            <span *ngIf=\"showProperty; else emptyValueTemplate\">{{ property.displayValue }}</span>\n        </span>\n    </ng-template>\n    <ng-template #emptyValueTemplate>\n        {{ property.default | translate }}\n    </ng-template>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, DestroyRef, ElementRef, EventEmitter, inject, OnInit, Output, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { MatSelect } from '@angular/material/select';\nimport { CommonModule } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { IconModule } from '../../../../icon/icon.module';\n\n@Component({\n    selector: 'adf-select-filter-input',\n    imports: [CommonModule, MatFormFieldModule, MatInputModule, FormsModule, MatButtonModule, IconModule, TranslatePipe],\n    templateUrl: './select-filter-input.component.html',\n    styleUrls: ['./select-filter-input.component.scss'],\n    host: { class: 'adf-select-filter-input' },\n    encapsulation: ViewEncapsulation.None\n})\nexport class SelectFilterInputComponent implements OnInit {\n    private readonly matSelect = inject<MatSelect>(MatSelect);\n\n    @ViewChild('selectFilterInput', { read: ElementRef, static: false }) selectFilterInput: ElementRef;\n    @Output() change = new EventEmitter<string>();\n\n    term = '';\n    previousSelected: any[];\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    onModelChange(value: string) {\n        this.change.next(value);\n    }\n\n    ngOnInit() {\n        this.change.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((val: string) => (this.term = val));\n\n        this.matSelect.openedChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((isOpened: boolean) => {\n            if (isOpened) {\n                this.selectFilterInput.nativeElement.focus();\n            } else {\n                this.change.next('');\n            }\n        });\n\n        if (this.matSelect.ngControl) {\n            this.previousSelected = this.matSelect.ngControl.value;\n            this.matSelect.ngControl.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((values) => {\n                let restoreSelection = false;\n                if (this.matSelect.multiple && Array.isArray(this.previousSelected)) {\n                    if (!Array.isArray(values)) {\n                        values = [];\n                    }\n                    const options = this.matSelect.options.map((option) => option.value);\n                    this.previousSelected.forEach((previous) => {\n                        const isSelected = [...values, ...options].some((current) => this.matSelect.compareWith(current, previous));\n                        if (!isSelected) {\n                            values.push(previous);\n                            restoreSelection = true;\n                        }\n                    });\n                }\n\n                this.previousSelected = values;\n                if (restoreSelection) {\n                    // eslint-disable-next-line no-underscore-dangle\n                    this.matSelect._onChange(values);\n                }\n            });\n        }\n    }\n\n    reset(event?: Event) {\n        if (event) {\n            event.stopPropagation();\n        }\n\n        this.change.next('');\n        this.selectFilterInput.nativeElement.focus();\n    }\n\n    handleKeydown($event: KeyboardEvent) {\n        if (this.term) {\n            if ($event.code === 'Escape') {\n                $event.stopPropagation();\n                this.change.next('');\n            }\n\n            if (($event.target as HTMLInputElement).tagName === 'INPUT' && $event.code === 'Tab') {\n                $event.stopPropagation();\n            }\n        }\n    }\n}\n","\n<div class=\"adf-select-filter-input-container\">\n    <mat-form-field>\n        <input matInput\n            autocomplete=\"off\"\n            (keydown)=\"handleKeydown($event)\"\n            [placeholder]=\"'SELECT_FILTER.INPUT.PLACEHOLDER' | translate\"\n            #selectFilterInput\n            [ngModel]=\"term\"\n            (ngModelChange)=\"onModelChange($event)\"\n            [attr.aria-label]=\"'SELECT_FILTER.INPUT.ARIA_LABEL' | translate\"\n            (change)=\"$event.stopPropagation()\"\n        />\n\n        <button\n            matSuffix\n            mat-icon-button\n            class=\"adf-select-filter-clear-button\"\n            [attr.aria-label]=\"'SELECT_FILTER.BUTTON.ARIA_LABEL' | translate\"\n            *ngIf=\"term\"\n            (keydown.enter)=\"reset($event)\"\n            (click)=\"reset()\">\n            <mat-icon adf-icon=\"close\" />\n        </button>\n    </mat-form-field>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CardViewItemValidator } from '../interfaces/card-view.interfaces';\n\nexport interface MatchValidatorParams {\n    expression: string;\n    flags?: string;\n    requiresMatch?: boolean;\n}\n\nexport class CardViewItemMatchValidator implements CardViewItemValidator {\n    message = 'CORE.CARDVIEW.VALIDATORS.MATCH_VALIDATION_ERROR';\n\n    constructor(\n        private readonly expression: string,\n        private readonly flags?: string,\n        private readonly requiresMatch?: boolean\n    ) {}\n\n    isValid(value: string | string[]): boolean {\n        const regex = new RegExp(this.expression, this?.flags);\n\n        if (Array.isArray(value)) {\n            return value.every((val) => (this.requiresMatch ? this.matchRegex(val, regex) : !this.matchRegex(val, regex)));\n        }\n\n        return value === '' || (this.requiresMatch ? this.matchRegex(value, regex) : !this.matchRegex(value, regex));\n    }\n\n    private matchRegex(value: string, regex: RegExp): boolean {\n        return regex.test(value);\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CardViewItemValidator } from '../interfaces/card-view.interfaces';\n\nexport class CardViewItemIntValidator implements CardViewItemValidator {\n    message = 'CORE.CARDVIEW.VALIDATORS.INT_VALIDATION_ERROR';\n\n    isValid(value: any | any[]): boolean {\n        if (Array.isArray(value)) {\n            return value.every(this.isIntegerNumber);\n        }\n\n        return value === '' || (!isNaN(value) && this.isIntegerNumber(value) && this.isNotOnlySpace(value));\n    }\n\n    isIntegerNumber(value: any): boolean {\n        const parsedNumber = Number(value);\n        return (parsedNumber | 0) === parsedNumber;\n    }\n\n    isNotOnlySpace(value: any): boolean {\n        return String(value).trim() !== '';\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CardViewItemValidator } from '../interfaces/card-view.interfaces';\nimport { CardViewItemIntValidator } from './card-view-item-int.validator';\n\nexport interface MinMaxValidatorParams {\n    minValue: number;\n    maxValue: number;\n}\n\nexport class CardViewItemMinMaxValidator implements CardViewItemValidator {\n    message = 'CORE.CARDVIEW.VALIDATORS.MINMAX_VALIDATION_ERROR';\n    private readonly intValidator: CardViewItemIntValidator;\n\n    constructor(\n        private readonly minValue: number,\n        private readonly maxValue: number\n    ) {\n        this.intValidator = new CardViewItemIntValidator();\n    }\n\n    isValid(value: number | number[] | ''): boolean {\n        if (Array.isArray(value)) {\n            return value.every((val) => this.isInRange(val, this.minValue, this.maxValue));\n        }\n\n        return value === '' || (this.intValidator.isValid(value) && this.isInRange(value, this.minValue, this.maxValue));\n    }\n\n    private isInRange(value: number, min: number, max: number): boolean {\n        return value >= min && value <= max;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CardViewItemValidator } from '../interfaces/card-view.interfaces';\n\nexport interface LengthValidatorParams {\n    minLength: number;\n    maxLength: number;\n}\n\nexport class CardViewItemLengthValidator implements CardViewItemValidator {\n    message = 'CORE.CARDVIEW.VALIDATORS.LENGTH_VALIDATION_ERROR';\n\n    constructor(\n        private readonly minLength: number,\n        private readonly maxLength: number\n    ) {}\n\n    isValid(value: string | string[]): boolean {\n        if (Array.isArray(value)) {\n            return value.every((val) => this.isCorrectLength(val, this.minLength, this.maxLength));\n        }\n\n        return value === '' || this.isCorrectLength(value, this.minLength, this.maxLength);\n    }\n\n    private isCorrectLength(value: string, min: number, max: number): boolean {\n        const length = value.length;\n        return length >= min && length <= max;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CardViewItemMatchValidator, MatchValidatorParams } from './card-view-item-match.validator';\nimport { CardViewItemMinMaxValidator, MinMaxValidatorParams } from './card-view-item-minmax.validator';\nimport { CardViewItemLengthValidator, LengthValidatorParams } from './card-view-item-length.validator';\n\nconst validators = {\n    minmax: (parameters: MinMaxValidatorParams) => new CardViewItemMinMaxValidator(parameters.minValue, parameters.maxValue),\n    regex: (parameters: MatchValidatorParams) => new CardViewItemMatchValidator(parameters.expression, parameters.flags, parameters.requiresMatch),\n    length: (parameters: LengthValidatorParams) => new CardViewItemLengthValidator(parameters.minLength, parameters.maxLength)\n};\nexport default validators;\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CardViewItemProperties, CardViewItemValidator } from '../interfaces/card-view.interfaces';\nimport validatorsMap from '../validators/validators.map';\n\nexport abstract class CardViewBaseItemModel<T = any> {\n    label: string;\n    value: T;\n    key: any;\n    default: any;\n    editable: boolean;\n    clickable: boolean;\n    icon?: string;\n    hint?: string;\n    validators?: CardViewItemValidator[];\n    data?: any;\n    type?: string;\n    multivalued?: boolean;\n    isValidValue?: boolean;\n\n    constructor(props: CardViewItemProperties) {\n        this.label = props.label || '';\n        this.value = props.value?.displayName || props.value;\n        this.key = props.key;\n        this.default = props.default;\n        this.editable = !!props.editable;\n        this.clickable = !!props.clickable;\n        this.icon = props.icon || '';\n        this.hint = props.hint || '';\n        this.validators = props.validators || [];\n        this.data = props.data || null;\n        this.multivalued = !!props.multivalued;\n\n        if (props?.constraints?.length ?? 0) {\n            for (const constraint of props.constraints) {\n                if (constraint.type !== 'LIST') {\n                    const validatorFactory = validatorsMap[constraint.type.toLowerCase()];\n                    if (validatorFactory !== undefined) {\n                        this.validators.push(validatorFactory(constraint.parameters));\n                    } else {\n                        console.warn(`Validator for type ${constraint.type} is not supported`);\n                    }\n                }\n            }\n        }\n    }\n\n    isEmpty(): boolean {\n        return (\n            this.value === undefined ||\n            this.value === null ||\n            (typeof this.value === 'string' && this.value.length === 0) ||\n            (Array.isArray(this.value) && this.value.length === 0)\n        );\n    }\n\n    isValid(newValue: T): boolean {\n        if (!this.validators.length) {\n            return true;\n        }\n\n        return this.validators.map((validator) => validator.isValid(newValue)).reduce((isValidUntilNow, isValid) => isValidUntilNow && isValid, true);\n    }\n\n    getValidationErrors(value: T): CardViewItemValidator[] {\n        if (!this.validators.length) {\n            return [];\n        }\n\n        return this.validators.filter((validator) => !validator.isValid(value)).map((validator) => validator);\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Directive, EventEmitter, forwardRef, Input, Output, inject } from '@angular/core';\nimport { AbstractControl, NG_VALIDATORS, ValidationErrors } from '@angular/forms';\nimport { CardViewBaseItemModel } from '../models/card-view-baseitem.model';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Directive({\n    selector: '[adf-card-view-property-validator]',\n    providers: [\n        {\n            provide: NG_VALIDATORS,\n            useExisting: forwardRef(() => CardViewPropertyValidatorDirective),\n            multi: true\n        }\n    ]\n})\nexport class CardViewPropertyValidatorDirective {\n    private readonly translateService = inject(TranslateService);\n\n    @Input()\n    property: CardViewBaseItemModel;\n\n    @Output()\n    validated = new EventEmitter<string[]>();\n\n    validate(control: AbstractControl): ValidationErrors | null {\n        const errors: ValidationErrors | null = this.property.isValid(control.value)\n            ? null\n            : Object.fromEntries(this.property.validators.map((validator) => [validator.message, this.translateService.instant(validator.message)]));\n        this.validated.emit(errors ? Object.values(errors) : []);\n        return errors;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, Input, OnChanges, OnInit, inject, ViewEncapsulation, SimpleChanges, DestroyRef } from '@angular/core';\nimport { CardViewSelectItemModel } from '../../models/card-view-selectitem.model';\nimport { BehaviorSubject, combineLatest, Observable } from 'rxjs';\nimport { CardViewSelectItemOption } from '../../interfaces/card-view.interfaces';\nimport { MatSelectChange, MatSelectModule } from '@angular/material/select';\nimport { BaseCardView } from '../base-card-view';\nimport { AppConfigService } from '../../../app-config/app-config.service';\nimport { map, debounceTime, filter, first } from 'rxjs/operators';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { SelectFilterInputComponent } from './select-filter-input/select-filter-input.component';\nimport { MatAutocompleteModule, MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\nimport { MatInputModule } from '@angular/material/input';\nimport { FormsModule, ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CardViewPropertyValidatorDirective } from '../../directives/card-view-property-validator.directive';\n\n@Component({\n    selector: 'adf-card-view-selectitem',\n    imports: [\n        CommonModule,\n        TranslatePipe,\n        MatFormFieldModule,\n        MatSelectModule,\n        SelectFilterInputComponent,\n        MatAutocompleteModule,\n        MatInputModule,\n        ReactiveFormsModule,\n        CardViewPropertyValidatorDirective,\n        FormsModule\n    ],\n    templateUrl: './card-view-selectitem.component.html',\n    styleUrls: ['./card-view-selectitem.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    host: { class: 'adf-card-view-selectitem' }\n})\nexport class CardViewSelectItemComponent extends BaseCardView<CardViewSelectItemModel<string | number>> implements OnInit, OnChanges {\n    static HIDE_FILTER_LIMIT = 5;\n\n    @Input() options$: Observable<CardViewSelectItemOption<string | number>[]>;\n\n    @Input()\n    displayNoneOption: boolean = true;\n\n    @Input()\n    displayEmpty: boolean = true;\n\n    value: string | number;\n    filter$ = new BehaviorSubject<string>('');\n    showInputFilter: boolean = false;\n    list$: Observable<CardViewSelectItemOption<string | number>[]> = null;\n    templateType = '';\n    autocompleteControl = new UntypedFormControl();\n    editedValue: string | number;\n\n    private readonly destroyRef = inject(DestroyRef);\n    private readonly appConfig = inject(AppConfigService);\n\n    private _error = '';\n\n    get error(): string {\n        return this._error;\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        this.value = this.property.value;\n        if (changes.property?.firstChange) {\n            this.autocompleteControl.valueChanges\n                .pipe(\n                    filter((textInputValue) => textInputValue !== this.editedValue && textInputValue !== null),\n                    debounceTime(50),\n                    takeUntilDestroyed(this.destroyRef)\n                )\n                .subscribe((textInputValue) => {\n                    this.editedValue = textInputValue;\n                    this.cardViewUpdateService.autocompleteInputValue$.next(textInputValue);\n                });\n        }\n\n        if (changes.editable) {\n            if (this.isEditable) {\n                this.autocompleteControl.enable();\n            } else {\n                this.autocompleteControl.disable();\n            }\n        }\n    }\n\n    ngOnInit() {\n        if (this.property.autocompleteBased) {\n            this.templateType = 'autocompleteBased';\n        }\n\n        this.getOptions()\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe((options) => {\n                this.showInputFilter = options.length > this.optionsLimit;\n            });\n\n        this.list$ = this.getList();\n        this.autocompleteControl.setValue(this.property.value);\n    }\n\n    onFilterInputChange(value: string) {\n        this.filter$.next(value.toString());\n    }\n\n    private getOptions(): Observable<CardViewSelectItemOption<string | number>[]> {\n        return this.options$ || this.property.options$;\n    }\n\n    getList(): Observable<CardViewSelectItemOption<string | number>[]> {\n        return combineLatest([this.getOptions(), this.filter$]).pipe(\n            map(([items, searchTerm]) => items.filter((item) => (filter ? item.label.toLowerCase().includes(searchTerm.toLowerCase()) : true)))\n        );\n    }\n\n    onOptionSelected(event: MatAutocompleteSelectedEvent) {\n        this.getOptions()\n            .pipe(first())\n            .subscribe((options) => {\n                const selectedOption = options.find((option) => option.key === event.option.value);\n                if (selectedOption) {\n                    this.autocompleteControl.setValue(selectedOption.label);\n                    this.cardViewUpdateService.update({ ...this.property } as CardViewSelectItemModel<string>, selectedOption.key);\n                }\n            });\n    }\n\n    onChange(event: MatSelectChange): void {\n        const selectedOption = event.value !== undefined ? event.value : null;\n        this.cardViewUpdateService.update({ ...this.property } as CardViewSelectItemModel<string>, selectedOption);\n        this.property.value = selectedOption;\n    }\n\n    onValidation(errors: string[]): void {\n        this._error = errors.join('<br>');\n    }\n\n    get showProperty(): boolean {\n        return this.displayEmpty || !this.property.isEmpty();\n    }\n\n    private get optionsLimit(): number {\n        return this.appConfig.get<number>('content-metadata.selectFilterLimit', CardViewSelectItemComponent.HIDE_FILTER_LIMIT);\n    }\n}\n","<ng-container *ngIf=\"showProperty || isEditable\">\n    <div [ngSwitch]=\"templateType\">\n        <div *ngSwitchDefault>\n            <div class=\"adf-property-field\">\n                <mat-form-field class=\"adf-property-value\">\n                    <mat-label\n                        [attr.data-automation-id]=\"'card-select-label-' + property.key\"\n                        class=\"adf-property-label\"\n                        [ngClass]=\"{\n                            'adf-property-value-editable': isEditable,\n                            'adf-property-readonly-value': isReadonlyProperty\n                        }\"\n                        >{{ property.label | translate }}\n                    </mat-label>\n                    <mat-select\n                        [(ngModel)]=\"value\"\n                        [disabled]=\"isReadonlyProperty || !editable\"\n                        [ngClass]=\"{ 'adf-property-readonly-value': isReadonlyProperty || !editable }\"\n                        panelClass=\"adf-select-filter\"\n                        (selectionChange)=\"onChange($event)\"\n                        data-automation-id=\"select-box\"\n                        [aria-label]=\"property.label | translate\"\n                        adf-card-view-property-validator\n                        [property]=\"property\"\n                        (validated)=\"onValidation($event)\"\n                    >\n                        <adf-select-filter-input *ngIf=\"showInputFilter\" (change)=\"onFilterInputChange($event)\" />\n                        <mat-option *ngIf=\"displayNoneOption\">{{ 'CORE.CARDVIEW.NONE' | translate }}</mat-option>\n                        <mat-option *ngFor=\"let option of list$ | async\" [value]=\"option.key\">\n                            {{ option.label | translate }}\n                        </mat-option>\n                    </mat-select>\n                    <mat-error [innerHTML]=\"error\" />\n                </mat-form-field>\n            </div>\n        </div>\n        <div *ngSwitchCase=\"'autocompleteBased'\">\n            <mat-form-field\n                class=\"adf-property-field adf-card-selectitem-autocomplete  \"\n                [ngClass]=\"{ 'adf-property-read-only': isReadonlyProperty || !editable }\"\n                [floatLabel]=\"property.default ? 'always' : null\"\n            >\n                <mat-label\n                    [attr.data-automation-id]=\"'card-autocomplete-based-selectitem-label-' + property.key\"\n                    class=\"adf-property-label\"\n                    [ngClass]=\"{\n                        'adf-property-value-editable': isEditable,\n                        'adf-property-readonly-value': isReadonlyProperty || !editable\n                    }\"\n                >\n                    {{ property.label | translate }}\n                </mat-label>\n                <input\n                    matInput\n                    [matAutocomplete]=\"auto\"\n                    class=\"adf-property-value\"\n                    [ngClass]=\"{\n                        'adf-property-value-editable': isEditable,\n                        'adf-property-readonly-value': isReadonlyProperty || !editable\n                    }\"\n                    title=\"{{ property.label | translate }}\"\n                    [placeholder]=\"property.default\"\n                    [attr.aria-label]=\"property.label | translate\"\n                    [formControl]=\"autocompleteControl\"\n                    [title]=\"'CORE.METADATA.ACTIONS.COPY_TO_CLIPBOARD' | translate\"\n                    [attr.data-automation-id]=\"'card-autocomplete-based-selectitem-value-' + property.key\"\n                />\n                <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\" (optionSelected)=\"onOptionSelected($event)\">\n                    <mat-option\n                        *ngFor=\"let option of property.options$ | async\"\n                        [value]=\"option.key\"\n                        [attr.data-automation-id]=\"'card-autocomplete-based-selectitem-option-' + property.key\"\n                    >\n                        {{ option.label }}\n                    </mat-option>\n                </mat-autocomplete>\n            </mat-form-field>\n        </div>\n    </div>\n</ng-container>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, Input } from '@angular/core';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { CardViewBoolItemModel } from '../../models/card-view-boolitem.model';\nimport { BaseCardView } from '../base-card-view';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { CardViewPropertyValidatorDirective } from '../../directives/card-view-property-validator.directive';\nimport { FormsModule } from '@angular/forms';\nimport { MatError } from '@angular/material/form-field';\n\n@Component({\n    selector: 'adf-card-view-boolitem',\n    imports: [CommonModule, MatCheckboxModule, TranslatePipe, CardViewPropertyValidatorDirective, FormsModule, MatError],\n    templateUrl: './card-view-boolitem.component.html',\n    styles: [\n        `\n            .adf-property-value {\n                padding: 15px 0;\n            }\n        `\n    ]\n})\nexport class CardViewBoolItemComponent extends BaseCardView<CardViewBoolItemModel> {\n    @Input()\n    declare editable: boolean;\n\n    private _error: string;\n\n    get error(): string {\n        return this._error;\n    }\n\n    changed(checked: boolean) {\n        this.cardViewUpdateService.update({ ...this.property } as CardViewBoolItemModel, checked);\n        this.property.value = checked;\n    }\n\n    onValidation(errors: string[]): void {\n        this._error = errors.join('<br>');\n    }\n}\n","<ng-container *ngIf=\"!property.isEmpty() || isEditable\">\n    <div class=\"adf-property-value\">\n        <mat-checkbox\n            #checkbox=\"ngModel\"\n            adf-card-view-property-validator\n            [attr.data-automation-id]=\"'card-boolean-' + property.key\"\n            [attr.title]=\"'CORE.METADATA.ACTIONS.TOGGLE' | translate\"\n            [checked]=\"property.displayValue\"\n            [disabled]=\"!isEditable\"\n            [ngModel]=\"property.displayValue\"\n            [property]=\"property\"\n            (ngModelChange)=\"changed($event)\"\n            (validated)=\"onValidation($event)\"\n        >\n            <div\n                [attr.data-automation-id]=\"'card-boolean-label-' + property.key\"\n                 class=\"adf-property-label\"\n            >{{ property.label | translate }}</div>\n            @if(checkbox.touched && error){\n                <mat-error [innerHTML]=\"error\" />\n            }\n        </mat-checkbox>\n    </div>\n</ng-container>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, OnChanges, ViewEncapsulation } from '@angular/core';\nimport { CardViewKeyValuePairsItemModel } from '../../models/card-view.models';\nimport { CardViewKeyValuePairsItemType } from '../../interfaces/card-view.interfaces';\nimport { MatTableDataSource, MatTableModule } from '@angular/material/table';\nimport { BaseCardView } from '../base-card-view';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatInputModule } from '@angular/material/input';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { IconModule } from '../../../icon/icon.module';\n\n@Component({\n    selector: 'adf-card-view-key-value-pairs-item',\n    imports: [CommonModule, TranslatePipe, MatTableModule, MatInputModule, FormsModule, MatButtonModule, IconModule],\n    templateUrl: './card-view-keyvaluepairsitem.component.html',\n    styleUrls: ['./card-view-keyvaluepairsitem.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    host: { class: 'adf-card-view-key-value-pairs-item' }\n})\nexport class CardViewKeyValuePairsItemComponent extends BaseCardView<CardViewKeyValuePairsItemModel> implements OnChanges {\n    values: CardViewKeyValuePairsItemType[];\n    matTableValues: MatTableDataSource<CardViewKeyValuePairsItemType>;\n\n    ngOnChanges() {\n        this.values = this.property.value || [];\n        this.matTableValues = new MatTableDataSource(this.values);\n    }\n\n    add(): void {\n        this.values.push({ name: '', value: '' });\n    }\n\n    remove(index: number): void {\n        this.values.splice(index, 1);\n        this.save(true);\n    }\n\n    onBlur(value: any): void {\n        if (value?.length) {\n            this.save();\n        }\n    }\n\n    save(remove?: boolean): void {\n        const validValues = this.values.filter((i) => i.name.length && i.value.length);\n\n        if (remove || validValues.length) {\n            this.cardViewUpdateService.update({ ...this.property } as CardViewKeyValuePairsItemModel, validValues);\n            this.property.value = validValues;\n        }\n    }\n}\n","<div [attr.data-automation-id]=\"'card-key-value-pairs-label-' + property.key\"\n     class=\"adf-property-label\">{{ property.label | translate }}</div>\n<div class=\"adf-property-field\">\n\n    <div *ngIf=\"!isEditable\" class=\"adf-card-view__key-value-pairs__read-only adf-property-value\">\n        <mat-table #table [dataSource]=\"matTableValues\" class=\"mat-elevation-z8\">\n            <ng-container matColumnDef=\"name\">\n                <mat-header-cell *matHeaderCellDef>{{ 'CORE.CARDVIEW.KEYVALUEPAIRS.NAME' | translate }}\n                </mat-header-cell>\n                <mat-cell *matCellDef=\"let item\">{{item.name}}</mat-cell>\n            </ng-container>\n            <ng-container matColumnDef=\"value\">\n                <mat-header-cell *matHeaderCellDef>{{ 'CORE.CARDVIEW.KEYVALUEPAIRS.VALUE' | translate }}\n                </mat-header-cell>\n                <mat-cell *matCellDef=\"let item\">{{item.value}}</mat-cell>\n            </ng-container>\n\n            <mat-header-row *matHeaderRowDef=\"['name', 'value']\" />\n            <mat-row *matRowDef=\"let row; columns: ['name', 'value'];\" />\n        </mat-table>\n    </div>\n\n    <div class=\"adf-card-view__key-value-pairs adf-property-value\" *ngIf=\"isEditable && values && values.length\">\n        <div class=\"adf-card-view__key-value-pairs__row\">\n            <div class=\"adf-property-col-key\">{{ 'CORE.CARDVIEW.KEYVALUEPAIRS.NAME' | translate }}</div>\n            <div class=\"adf-property-col-value\">{{ 'CORE.CARDVIEW.KEYVALUEPAIRS.VALUE' | translate }}</div>\n        </div>\n\n        <div class=\"adf-card-view__key-value-pairs__row\" *ngFor=\"let item of values; let i = index\">\n            <input\n                matInput\n                class=\"adf-property-col-key adf-property-value-input\"\n                placeholder=\"{{ 'CORE.CARDVIEW.KEYVALUEPAIRS.NAME' | translate }}\"\n                (blur)=\"onBlur(item.value)\"\n                [attr.data-automation-id]=\"'card-'+ property.key +'-name-input-' + i\"\n                [(ngModel)]=\"values[i].name\">\n\n            <input\n                matInput\n                class=\"adf-property-col-value adf-property-value-input\"\n                placeholder=\"{{ 'CORE.CARDVIEW.KEYVALUEPAIRS.VALUE' | translate }}\"\n                (blur)=\"onBlur(item.value)\"\n                [attr.data-automation-id]=\"'card-'+ property.key +'-value-input-' + i\"\n                [(ngModel)]=\"values[i].value\">\n\n            <button\n                mat-icon-button\n                (click)=\"remove(i)\"\n                class=\"adf-property-col-delete\">\n                <mat-icon adf-icon=\"close\" />\n            </button>\n        </div>\n    </div>\n    <div *ngIf=\"isEditable\" class=\"adf-property-value adf-card-view__key-value-pairs__add-btn-container\">\n        <button (click)=\"add()\"\n                mat-button\n                class=\"adf-card-view__key-value-pairs__add-btn\"\n                [attr.data-automation-id]=\"'card-key-value-pairs-button-' + property.key\">\n                {{ 'CORE.CARDVIEW.KEYVALUEPAIRS.ADD' | translate }}\n                <mat-icon adf-icon=\"add\" />\n        </button>\n    </div>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, ViewEncapsulation } from '@angular/core';\nimport { CardViewArrayItemModel } from '../../models/card-view-arrayitem.model';\nimport { BaseCardView } from '../base-card-view';\nimport { CommonModule } from '@angular/common';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatButtonModule } from '@angular/material/button';\nimport { IconModule } from '../../../icon/icon.module';\n\n@Component({\n    selector: 'adf-card-view-arrayitem',\n    imports: [CommonModule, MatChipsModule, TranslatePipe, IconModule, MatMenuModule, MatCardModule, MatButtonModule],\n    templateUrl: './card-view-arrayitem.component.html',\n    styleUrls: ['./card-view-arrayitem.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class CardViewArrayItemComponent extends BaseCardView<CardViewArrayItemModel> {\n    clicked(): void {\n        if (this.isClickable) {\n            this.cardViewUpdateService.clicked(this.property);\n        }\n    }\n\n    get showClickableIcon(): boolean {\n        return this.hasIcon && this.isClickable;\n    }\n\n    get displayCount(): number {\n        return this.property.noOfItemsToDisplay ? this.property.noOfItemsToDisplay : 0;\n    }\n\n    get isClickable(): boolean {\n        return !!this.property.clickable;\n    }\n}\n","<div [attr.data-automation-id]=\"'card-array-label-' + property.key\" class=\"adf-property-label\">{{ property.label | translate }}</div>\n<div class=\"adf-property-value adf-card-view-array-item-container\">\n    <ng-container *ngIf=\"(property.displayValue | async) as items; else elseEmptyValueBlock\">\n        <mat-chip-listbox *ngIf=\"items.length > 0; else elseEmptyValueBlock\" data-automation-id=\"card-arrayitem-chip-list-container\">\n            <ng-container *ngIf=\"displayCount > 0; else withOutDisplayCount\" >\n                <mat-chip\n                    *ngFor=\"let item of items.slice(0, displayCount)\"\n                    (keyup.enter)=\"clicked()\"\n                    (click)=\"clicked()\"\n                    [attr.data-automation-id]=\"'card-arrayitem-chip-' + item.value\">\n                    <div class=\"adf-card-view-array-chip-content\">\n                        <mat-icon *ngIf=\"item?.icon\" class=\"adf-array-item-icon\" [adf-icon]=\"item.icon\" />\n                        <span>{{item?.value}}</span>\n                    </div>\n                </mat-chip>\n                <mat-chip\n                    *ngIf=\"items.length > displayCount\"\n                    data-automation-id=\"card-arrayitem-more-chip\"\n                    [matMenuTriggerFor]=\"menu\">\n                    <span>{{items.length - displayCount}} {{'CORE.CARDVIEW.MORE' | translate}}</span>\n                </mat-chip>\n            </ng-container>\n            <ng-template #withOutDisplayCount>\n                <mat-chip\n                    *ngFor=\"let item of items\"\n                    (keyup.enter)=\"clicked()\"\n                    (click)=\"clicked()\"\n                    [attr.data-automation-id]=\"'card-arrayitem-chip-' + item.value\">\n                    <div class=\"adf-card-view-array-chip-content\">\n                        <mat-icon *ngIf=\"item?.icon\" class=\"adf-array-item-icon\" [adf-icon]=\"item.icon\" />\n                        <span>{{item?.value}}</span>\n                    </div>\n                </mat-chip>\n            </ng-template>\n        </mat-chip-listbox>\n        <mat-menu #menu=\"matMenu\">\n            <mat-card appearance=\"outlined\" class=\"adf-array-item-more-chip-container\">\n                <mat-card-content>\n                    <mat-chip-listbox>\n                        <mat-chip (click)=\"clicked()\" (keyup.enter)=\"clicked()\"\n                            *ngFor=\"let item of items.slice(displayCount, items.length)\"\n                            [attr.data-automation-id]=\"'card-arrayitem-chip-' + item.value\">\n                            <div class=\"adf-card-view-array-chip-content\">\n                                <mat-icon *ngIf=\"item?.icon\" class=\"adf-array-item-icon\" [adf-icon]=\"item.icon\" />\n                                <span>{{item?.value}}</span>\n                            </div>\n                        </mat-chip>\n                    </mat-chip-listbox>\n                </mat-card-content>\n            </mat-card>\n        </mat-menu>\n    </ng-container>\n    <ng-template #elseEmptyValueBlock>\n        <span class=\"adf-card-array-item-default\" data-automation-id=\"card-arrayitem-default\">{{ property?.default | translate }}</span>\n    </ng-template>\n    @if (showClickableIcon) {\n        <button mat-icon-button\n            (click)=\"clicked()\"\n            (keydown.enter)=\"clicked()\"\n            [attr.aria-label]=\"'CORE.METADATA.ACTIONS.EDIT' | translate\"\n            [attr.title]=\"'CORE.METADATA.ACTIONS.EDIT' | translate\"\n            [attr.data-automation-id]=\"'card-array-item-clickable-icon-' + property.key\">\n            <mat-icon class=\"adf-array-item-button-icon\" [adf-icon]=\"property.icon\" />\n        </button>\n    }\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable, Type } from '@angular/core';\nimport { CardViewDateItemComponent } from '../components/card-view-dateitem/card-view-dateitem.component';\nimport { CardViewMapItemComponent } from '../components/card-view-mapitem/card-view-mapitem.component';\nimport { CardViewTextItemComponent } from '../components/card-view-textitem/card-view-textitem.component';\nimport { CardViewSelectItemComponent } from '../components/card-view-selectitem/card-view-selectitem.component';\nimport { CardViewBoolItemComponent } from '../components/card-view-boolitem/card-view-boolitem.component';\nimport { CardViewKeyValuePairsItemComponent } from '../components/card-view-keyvaluepairsitem/card-view-keyvaluepairsitem.component';\nimport {\n    DynamicComponentMapper,\n    DynamicComponentResolveFunction,\n    DynamicComponentResolver\n} from '../../common/services/dynamic-component-mapper.service';\nimport { CardViewArrayItemComponent } from '../components/card-view-arrayitem/card-view-arrayitem.component';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class CardItemTypeService extends DynamicComponentMapper {\n    protected defaultValue: Type<any> = CardViewTextItemComponent;\n\n    protected types: { [key: string]: DynamicComponentResolveFunction } = {\n        text: DynamicComponentResolver.fromType(CardViewTextItemComponent),\n        select: DynamicComponentResolver.fromType(CardViewSelectItemComponent),\n        int: DynamicComponentResolver.fromType(CardViewTextItemComponent),\n        float: DynamicComponentResolver.fromType(CardViewTextItemComponent),\n        long: DynamicComponentResolver.fromType(CardViewTextItemComponent),\n        date: DynamicComponentResolver.fromType(CardViewDateItemComponent),\n        datetime: DynamicComponentResolver.fromType(CardViewDateItemComponent),\n        bool: DynamicComponentResolver.fromType(CardViewBoolItemComponent),\n        map: DynamicComponentResolver.fromType(CardViewMapItemComponent),\n        keyvaluepairs: DynamicComponentResolver.fromType(CardViewKeyValuePairsItemComponent),\n        array: DynamicComponentResolver.fromType(CardViewArrayItemComponent)\n    };\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, Input, OnChanges, SimpleChange, SimpleChanges, ViewChild, ViewContainerRef, inject } from '@angular/core';\nimport { CardViewItem } from '../../interfaces/card-view-item.interface';\nimport { CardItemTypeService } from '../../services/card-item-types.service';\nimport { DEFAULT_SEPARATOR } from '../card-view-textitem/card-view-textitem.component';\n\n@Component({\n    selector: 'adf-card-view-item-dispatcher',\n    template: '<ng-template #content />'\n})\nexport class CardViewItemDispatcherComponent implements OnChanges {\n    private readonly cardItemTypeService = inject(CardItemTypeService);\n\n    @Input()\n    property: CardViewItem;\n\n    @Input()\n    editable: boolean;\n\n    @Input()\n    displayEmpty: boolean = true;\n\n    @Input()\n    displayNoneOption: boolean = true;\n\n    @Input()\n    displayClearAction: boolean = true;\n\n    @Input()\n    copyToClipboardAction: boolean = true;\n\n    @Input()\n    useChipsForMultiValueProperty: boolean = true;\n\n    @Input()\n    multiValueSeparator: string = DEFAULT_SEPARATOR;\n\n    private loaded: boolean = false;\n    private componentReference: any = null;\n\n    public ngOnInit;\n    public ngDoCheck;\n\n    @ViewChild('content', { read: ViewContainerRef, static: true })\n    content!: ViewContainerRef;\n\n    constructor() {\n        const dynamicLifeCycleMethods = [\n            'ngOnInit',\n            'ngDoCheck',\n            'ngAfterContentInit',\n            'ngAfterContentChecked',\n            'ngAfterViewInit',\n            'ngAfterViewChecked',\n            'ngOnDestroy'\n        ];\n\n        dynamicLifeCycleMethods.forEach((method) => {\n            this[method] = this.proxy.bind(this, method);\n        });\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        if (!this.loaded) {\n            this.loadComponent();\n            this.loaded = true;\n        }\n\n        Object.entries(changes).forEach(([changeName, change]: [string, SimpleChange]) => {\n            this.componentReference.instance[changeName] = change.currentValue;\n        });\n\n        this.proxy('ngOnChanges', changes);\n    }\n\n    private loadComponent() {\n        const factoryClass = this.cardItemTypeService.resolveComponentType(this.property);\n\n        this.componentReference = this.content.createComponent(factoryClass);\n\n        this.componentReference.instance.editable = this.editable;\n        this.componentReference.instance.property = this.property;\n        this.componentReference.instance.displayEmpty = this.displayEmpty;\n        this.componentReference.instance.displayNoneOption = this.displayNoneOption;\n        this.componentReference.instance.displayClearAction = this.displayClearAction;\n        this.componentReference.instance.copyToClipboardAction = this.copyToClipboardAction;\n        this.componentReference.instance.useChipsForMultiValueProperty = this.useChipsForMultiValueProperty;\n        this.componentReference.instance.multiValueSeparator = this.multiValueSeparator;\n    }\n\n    private proxy(methodName, ...args) {\n        if (this.componentReference.instance[methodName]) {\n            // eslint-disable-next-line prefer-spread\n            this.componentReference.instance[methodName].apply(this.componentReference.instance, args);\n        }\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { CardViewItem } from '../../interfaces/card-view-item.interface';\nimport { DEFAULT_SEPARATOR } from '../card-view-textitem/card-view-textitem.component';\nimport { CommonModule } from '@angular/common';\nimport { CardViewItemDispatcherComponent } from '../card-view-item-dispatcher/card-view-item-dispatcher.component';\n\n@Component({\n    selector: 'adf-card-view',\n    imports: [CommonModule, CardViewItemDispatcherComponent],\n    templateUrl: './card-view.component.html',\n    styleUrls: ['./card-view.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class CardViewComponent {\n    /** (**required**) Items to show in the card view. */\n    @Input({ required: true })\n    properties: CardViewItem[];\n\n    /** Toggles whether or not the items can be edited. */\n    @Input()\n    editable: boolean;\n\n    /** Toggles whether or not to show empty items in non-editable mode. */\n    @Input()\n    displayEmpty: boolean = true;\n\n    /** Toggles whether or not to display none option. */\n    @Input()\n    displayNoneOption: boolean = true;\n\n    /** Toggles whether or not to display clear action. */\n    @Input()\n    displayClearAction: boolean = true;\n\n    /** Toggles whether or not to enable copy to clipboard action. */\n    @Input()\n    copyToClipboardAction: boolean = true;\n\n    /** Toggles whether or not to enable chips for multivalued properties. */\n    @Input()\n    useChipsForMultiValueProperty: boolean = true;\n\n    /** String separator between multi-value property items. */\n    @Input()\n    multiValueSeparator: string = DEFAULT_SEPARATOR;\n}\n","<div class=\"adf-property-list\">\n    <div *ngFor=\"let property of properties\" class=\"adf-property-container\">\n        <div [attr.data-automation-id]=\"'header-'+property.key\" class=\"adf-property\">\n            <adf-card-view-item-dispatcher\n                [property]=\"property\"\n                [editable]=\"editable\"\n                [displayEmpty]=\"displayEmpty\"\n                [displayNoneOption]=\"property['displayNoneOption'] !== undefined ? property['displayNoneOption'] : displayNoneOption\"\n                [displayClearAction]=\"displayClearAction\"\n                [copyToClipboardAction]=\"copyToClipboardAction\"\n                [useChipsForMultiValueProperty]=\"useChipsForMultiValueProperty\"\n                [multiValueSeparator]=\"multiValueSeparator\" />\n        </div>\n    </div>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './base-card-view';\nexport * from './card-view/card-view.component';\nexport * from './card-view-boolitem/card-view-boolitem.component';\nexport * from './card-view-dateitem/card-view-dateitem.component';\nexport * from './card-view-item-dispatcher/card-view-item-dispatcher.component';\nexport * from './card-view-mapitem/card-view-mapitem.component';\nexport * from './card-view-textitem/card-view-textitem.component';\nexport * from './card-view-selectitem/card-view-selectitem.component';\nexport * from './card-view-selectitem/select-filter-input/select-filter-input.component';\nexport * from './card-view-keyvaluepairsitem/card-view-keyvaluepairsitem.component';\nexport * from './card-view-arrayitem/card-view-arrayitem.component';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CardViewItemValidator } from './card-view-item-validator.interface';\n\nexport interface CardViewItemProperties {\n    label: string;\n    value: any;\n    key: any;\n    default?: any;\n    editable?: boolean;\n    clickable?: any;\n    icon?: string;\n    hint?: string;\n    validators?: CardViewItemValidator[];\n    data?: any;\n    constraints?: Array<{\n        id: string;\n        type?: string;\n        title?: string;\n        description?: string;\n        parameters?: { [key: string]: any };\n    }>;\n    multivalued?: boolean;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface CardViewItemValidator {\n    message: string;\n    isValid(value: any): boolean;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface CardViewItem {\n    label: string;\n    value: any;\n    key: string;\n    default?: any;\n    type: string;\n    displayValue: any;\n    editable?: boolean;\n    icon?: string;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CardViewItemProperties } from './card-view-item-properties.interface';\nimport { CardViewTextItemPipeProperty } from './card-view-textitem-pipe-property.interface';\n\nexport interface CardViewTextItemProperties extends CardViewItemProperties {\n    multiline?: boolean;\n    multivalued?: boolean;\n    pipes?: CardViewTextItemPipeProperty[];\n    clickCallBack?: any;\n}\n\nexport interface CardViewIntItemProperties extends CardViewTextItemProperties {\n    allowOnlyPositiveNumbers?: boolean;\n}\n\nexport interface CardViewFloatItemProperties extends CardViewTextItemProperties {\n    precision?: number;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CardViewItemProperties } from './card-view-item-properties.interface';\n\nexport interface CardViewDateItemProperties extends CardViewItemProperties {\n    format?: string;\n    locale?: string;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CardViewItemProperties } from './card-view-item-properties.interface';\n\nexport interface CardViewBoolItemProperties extends CardViewItemProperties {\n    value: any;\n    default?: boolean;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { PipeTransform } from '@angular/core';\n\nexport interface CardViewTextItemPipeProperty {\n    pipe: PipeTransform;\n    params?: any[];\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CardViewItemProperties } from './card-view-item-properties.interface';\n\nexport interface CardViewKeyValuePairsItemType {\n    name: string;\n    value: string;\n}\n\nexport interface CardViewKeyValuePairsItemProperties extends CardViewItemProperties {\n    value: CardViewKeyValuePairsItemType[];\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CardViewItemProperties } from './card-view-item-properties.interface';\nimport { Observable } from 'rxjs';\n\nexport interface CardViewSelectItemOption<T> {\n    label: string;\n    key: T;\n}\n\nexport interface CardViewSelectItemProperties<T> extends CardViewItemProperties {\n    value: string | number;\n    options$: Observable<CardViewSelectItemOption<T>[]>;\n    displayNoneOption?: boolean;\n    autocompleteBased?: boolean;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Subject } from 'rxjs';\nimport { CardViewBaseItemModel } from '../models/card-view-baseitem.model';\nimport { UpdateNotification } from './update-notification.interface';\nimport { ClickNotification } from './click-notification.interface';\n\nexport interface BaseCardViewUpdate {\n    itemUpdated$: Subject<UpdateNotification>;\n    itemClicked$: Subject<ClickNotification>;\n    updateItem$: Subject<CardViewBaseItemModel>;\n\n    update(property: CardViewBaseItemModel, newValue: any);\n    clicked(property: CardViewBaseItemModel);\n    updateElement(notification: CardViewBaseItemModel);\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface ClickNotification {\n    target: any;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CardViewBaseItemModel } from '../models/card-view-baseitem.model';\n\nexport interface UpdateNotification {\n    target: CardViewBaseItemModel;\n    changed: any;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './card-view-item-properties.interface';\nexport * from './card-view-item-validator.interface';\nexport * from './card-view-item.interface';\nexport * from './card-view-textitem-properties.interface';\nexport * from './card-view-dateitem-properties.interface';\nexport * from './card-view-boolitem-properties.interface';\nexport * from './card-view-textitem-pipe-property.interface';\nexport * from './card-view-keyvaluepairsitem-properties.interface';\nexport * from './card-view-selectitem-properties.interface';\nexport * from './base-card-view-update.interface';\nexport * from './click-notification.interface';\nexport * from './update-notification.interface';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CardViewItemValidator } from '../interfaces/card-view.interfaces';\n\nexport class CardViewItemPositiveIntValidator implements CardViewItemValidator {\n    message = 'CORE.CARDVIEW.VALIDATORS.ONLY_POSITIVE_NUMBER';\n\n    isValid(value: any | any[]): boolean {\n        if (Array.isArray(value)) {\n            return value.every(this.isPositiveNumber);\n        }\n\n        const valueIsNotSet = value === '';\n\n        return valueIsNotSet || (!isNaN(value) && this.isPositiveNumber(value));\n    }\n\n    private isPositiveNumber(value: any): boolean {\n        return parseInt(value, 10) >= 0;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CardViewItemValidator } from '../interfaces/card-view.interfaces';\n\nexport class CardViewItemFloatValidator implements CardViewItemValidator {\n    message = 'CORE.CARDVIEW.VALIDATORS.FLOAT_VALIDATION_ERROR';\n\n    isValid(value: any | any[]): boolean {\n        if (Array.isArray(value)) {\n            return value.every(this.isDecimalNumber);\n        }\n        return value === '' || this.isDecimalNumber(value);\n    }\n\n    isDecimalNumber(value: any): boolean {\n        return !isNaN(parseFloat(value)) && isFinite(value);\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CardViewItemValidator } from '../interfaces/card-view.interfaces';\n\nexport class CardViewItemLongValidator implements CardViewItemValidator {\n    message = 'CORE.CARDVIEW.VALIDATORS.LONG_VALIDATION_ERROR';\n\n    isValid(value: number | number[] | ''): boolean {\n        if (Array.isArray(value)) {\n            return value.every(this.isLongNumber);\n        }\n\n        return value === '' || (!isNaN(value) && this.isLongNumber(value) && this.isNotSpaceOnly(value));\n    }\n\n    private isLongNumber(value: number): boolean {\n        const longNumber = Number(value);\n        return Math.trunc(longNumber) === longNumber && longNumber >= Number.MIN_SAFE_INTEGER && longNumber <= Number.MAX_SAFE_INTEGER;\n    }\n\n    private isNotSpaceOnly(value: number): boolean {\n        return String(value).trim() !== '';\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CardViewItemValidator } from '../interfaces/card-view.interfaces';\n\nexport class CardViewItemPositiveLongValidator implements CardViewItemValidator {\n    message = 'CORE.CARDVIEW.VALIDATORS.ONLY_POSITIVE_NUMBER';\n\n    isValid(value: number | number[] | ''): boolean {\n        if (Array.isArray(value)) {\n            return value.every(this.isPositiveNumber);\n        }\n\n        return value === '' || (!isNaN(value) && this.isPositiveNumber(value));\n    }\n\n    private isPositiveNumber(value: number): boolean {\n        return Number(value) >= 0;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './card-view-item-int.validator';\nexport * from './card-view-item-only-positive-int.validator';\nexport * from './card-view-item-float.validator';\nexport * from './card-view-item-long.validator';\nexport * from './card-view-item-only-positive-long.validator';\nexport * from './card-view-item-match.validator';\nexport * from './card-view-item-minmax.validator';\nexport * from './card-view-item-length.validator';\nexport * from './validators.map';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CardViewItem } from '../interfaces/card-view-item.interface';\nimport { DynamicComponentModel } from '../../common/services/dynamic-component-mapper.service';\nimport { CardViewBaseItemModel } from './card-view-baseitem.model';\nimport { CardViewBoolItemProperties } from '../interfaces/card-view.interfaces';\n\nexport class CardViewBoolItemModel extends CardViewBaseItemModel implements CardViewItem, DynamicComponentModel {\n    type = 'bool';\n    value = false;\n    declare default: boolean;\n\n    constructor(cardViewBoolItemProperties: CardViewBoolItemProperties) {\n        super(cardViewBoolItemProperties);\n\n        if (cardViewBoolItemProperties.value !== undefined) {\n            this.value = !!JSON.parse(cardViewBoolItemProperties.value);\n        }\n    }\n\n    get displayValue() {\n        if (this.isEmpty()) {\n            return this.default;\n        } else {\n            return this.value;\n        }\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CardViewItem } from '../interfaces/card-view-item.interface';\nimport { DynamicComponentModel } from '../../common/services/dynamic-component-mapper.service';\nimport { CardViewBaseItemModel } from './card-view-baseitem.model';\nimport { CardViewDateItemProperties } from '../interfaces/card-view.interfaces';\nimport { DatePipe } from '@angular/common';\nimport { DateFnsUtils } from '../../common/utils/date-fns-utils';\n\ntype DateItemType = Date | Date[] | null;\n\nexport class CardViewDateItemModel extends CardViewBaseItemModel<DateItemType> implements CardViewItem, DynamicComponentModel {\n    type = 'date';\n    format: string;\n    locale: string;\n\n    constructor(cardViewDateItemProperties: CardViewDateItemProperties) {\n        super(cardViewDateItemProperties);\n\n        if (cardViewDateItemProperties.format) {\n            this.format = cardViewDateItemProperties.format;\n        }\n\n        if (cardViewDateItemProperties.locale) {\n            this.locale = cardViewDateItemProperties.locale;\n        }\n    }\n\n    get displayValue(): string | string[] {\n        if (this.multivalued) {\n            if (this.value && Array.isArray(this.value)) {\n                return this.value.map((date) => this.transformDate(this.prepareDate(date)));\n            } else {\n                return this.default ? [this.default] : [];\n            }\n        } else {\n            return this.value && !Array.isArray(this.value) ? this.transformDate(this.prepareDate(this.value)) : this.default;\n        }\n    }\n\n    transformDate(value: Date | string | number): string {\n        const actualFormat = this.format || 'mediumDate';\n        const actualLocale = this.locale || 'en-US';\n        const datePipe = new DatePipe(actualLocale);\n        return datePipe.transform(value, actualFormat);\n    }\n\n    private prepareDate(date: Date): Date {\n        if (this.type === 'date') {\n            const dateInstance = date instanceof Date ? date : new Date(date);\n            return DateFnsUtils.forceLocal(dateInstance);\n        } else {\n            return date;\n        }\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CardViewItem } from '../interfaces/card-view-item.interface';\nimport { DynamicComponentModel } from '../../common/services/dynamic-component-mapper.service';\nimport { CardViewDateItemModel } from './card-view-dateitem.model';\nimport { CardViewDateItemProperties } from '../interfaces/card-view.interfaces';\n\nexport class CardViewDatetimeItemModel extends CardViewDateItemModel implements CardViewItem, DynamicComponentModel {\n    type = 'datetime';\n    format = 'MMM d, y, H:mm';\n\n    constructor(cardViewDateItemProperties: CardViewDateItemProperties) {\n        super(cardViewDateItemProperties);\n\n        if (cardViewDateItemProperties.format) {\n            this.format = cardViewDateItemProperties.format;\n        }\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CardViewItem } from '../interfaces/card-view-item.interface';\nimport { DynamicComponentModel } from '../../common/services/dynamic-component-mapper.service';\nimport { CardViewBaseItemModel } from './card-view-baseitem.model';\nimport { CardViewTextItemPipeProperty, CardViewTextItemProperties } from '../interfaces/card-view.interfaces';\n\nexport class CardViewTextItemModel extends CardViewBaseItemModel implements CardViewItem, DynamicComponentModel {\n    type = 'text';\n    inputType = 'text';\n    multiline?: boolean;\n    pipes?: CardViewTextItemPipeProperty[];\n    clickCallBack?: any;\n\n    constructor(cardViewTextItemProperties: CardViewTextItemProperties) {\n        super(cardViewTextItemProperties);\n        this.multiline = !!cardViewTextItemProperties.multiline;\n        this.pipes = cardViewTextItemProperties.pipes || [];\n        this.clickCallBack = cardViewTextItemProperties.clickCallBack ? cardViewTextItemProperties.clickCallBack : null;\n\n        if (this.default && this.isEmpty()) {\n            this.value = this.default;\n        }\n    }\n\n    get displayValue(): string {\n        return this.applyPipes(this.value);\n    }\n\n    applyPipes(displayValue) {\n        if (this.pipes.length) {\n            displayValue = this.pipes.reduce((accumulator, { pipe, params = [] }) => pipe.transform(accumulator, ...params), displayValue);\n        }\n\n        return displayValue;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CardViewItem } from '../interfaces/card-view-item.interface';\nimport { DynamicComponentModel } from '../../common/services/dynamic-component-mapper.service';\nimport { CardViewTextItemModel } from './card-view-textitem.model';\nimport { CardViewTextItemProperties } from '../interfaces/card-view.interfaces';\nimport { CardViewItemFloatValidator } from '../validators/card-view.validators';\n\nexport class CardViewFloatItemModel extends CardViewTextItemModel implements CardViewItem, DynamicComponentModel {\n    type = 'float';\n    inputType = 'number';\n\n    constructor(cardViewTextItemProperties: CardViewTextItemProperties) {\n        super(cardViewTextItemProperties);\n\n        this.validators.push(new CardViewItemFloatValidator());\n\n        if (cardViewTextItemProperties.value && !cardViewTextItemProperties.multivalued) {\n            this.value = parseFloat(cardViewTextItemProperties.value);\n        }\n    }\n\n    get displayValue(): string {\n        return this.applyPipes(this.value);\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CardViewItem } from '../interfaces/card-view-item.interface';\nimport { DynamicComponentModel } from '../../common/services/dynamic-component-mapper.service';\nimport { CardViewTextItemModel } from './card-view-textitem.model';\nimport { CardViewIntItemProperties } from '../interfaces/card-view.interfaces';\nimport { CardViewItemIntValidator, CardViewItemPositiveIntValidator } from '../validators/card-view.validators';\n\nexport class CardViewIntItemModel extends CardViewTextItemModel implements CardViewItem, DynamicComponentModel {\n    type = 'int';\n    inputType = 'number';\n\n    constructor(cardViewIntItemProperties: CardViewIntItemProperties) {\n        super(cardViewIntItemProperties);\n\n        this.validators.push(new CardViewItemIntValidator());\n\n        if (cardViewIntItemProperties.allowOnlyPositiveNumbers) {\n            this.validators.push(new CardViewItemPositiveIntValidator());\n        }\n\n        if (cardViewIntItemProperties.value && !cardViewIntItemProperties.multivalued) {\n            this.value = parseInt(cardViewIntItemProperties.value, 10);\n        }\n    }\n\n    get displayValue(): string {\n        return this.applyPipes(this.value);\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CardViewItem } from '../interfaces/card-view-item.interface';\nimport { DynamicComponentModel } from '../../common/services/dynamic-component-mapper.service';\nimport { CardViewTextItemModel } from './card-view-textitem.model';\nimport { CardViewIntItemProperties } from '../interfaces/card-view.interfaces';\nimport { CardViewItemLongValidator, CardViewItemPositiveLongValidator } from '../validators/card-view.validators';\n\nexport class CardViewLongItemModel extends CardViewTextItemModel implements CardViewItem, DynamicComponentModel {\n    type = 'long';\n    inputType = 'number';\n\n    constructor(cardViewIntItemProperties: CardViewIntItemProperties) {\n        super(cardViewIntItemProperties);\n\n        this.validators.push(new CardViewItemLongValidator());\n\n        if (cardViewIntItemProperties.allowOnlyPositiveNumbers) {\n            this.validators.push(new CardViewItemPositiveLongValidator());\n        }\n\n        if (cardViewIntItemProperties.value && !cardViewIntItemProperties.multivalued) {\n            this.value = Number(cardViewIntItemProperties.value);\n        }\n    }\n\n    get displayValue(): string {\n        return this.applyPipes(this.value);\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CardViewItem } from '../interfaces/card-view-item.interface';\nimport { DynamicComponentModel } from '../../common/services/dynamic-component-mapper.service';\nimport { CardViewBaseItemModel } from './card-view-baseitem.model';\n\nexport class CardViewMapItemModel extends CardViewBaseItemModel implements CardViewItem, DynamicComponentModel {\n    type = 'map';\n    declare value: Map<string, string>;\n\n    get displayValue() {\n        if (this.value && this.value.size > 0) {\n            return this.value.values().next().value;\n        } else {\n            return this.default;\n        }\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CardViewItem } from '../interfaces/card-view-item.interface';\nimport { DynamicComponentModel } from '../../common/services/dynamic-component-mapper.service';\nimport { CardViewBaseItemModel } from './card-view-baseitem.model';\nimport { CardViewKeyValuePairsItemProperties } from '../interfaces/card-view.interfaces';\n\nexport class CardViewKeyValuePairsItemModel extends CardViewBaseItemModel implements CardViewItem, DynamicComponentModel {\n    type = 'keyvaluepairs';\n\n    constructor(cardViewKeyValuePairsItemProperties: CardViewKeyValuePairsItemProperties) {\n        super(cardViewKeyValuePairsItemProperties);\n    }\n\n    get displayValue() {\n        return this.value;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CardViewItem } from '../interfaces/card-view-item.interface';\nimport { DynamicComponentModel } from '../../common/services/dynamic-component-mapper.service';\nimport { CardViewBaseItemModel } from './card-view-baseitem.model';\nimport { CardViewSelectItemProperties, CardViewSelectItemOption } from '../interfaces/card-view.interfaces';\nimport { Observable, of } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\n\nexport class CardViewSelectItemModel<T> extends CardViewBaseItemModel implements CardViewItem, DynamicComponentModel {\n    type = 'select';\n    options$: Observable<CardViewSelectItemOption<T>[]>;\n    displayNoneOption: boolean;\n    autocompleteBased = false;\n\n    valueFetch$: Observable<string> = null;\n\n    constructor(cardViewSelectItemProperties: CardViewSelectItemProperties<T>) {\n        super(cardViewSelectItemProperties);\n\n        this.displayNoneOption = cardViewSelectItemProperties.displayNoneOption !== undefined ? cardViewSelectItemProperties.displayNoneOption : true;\n\n        this.options$ = cardViewSelectItemProperties.options$;\n        this.autocompleteBased = cardViewSelectItemProperties.autocompleteBased || false;\n\n        this.valueFetch$ = this.options$.pipe(\n            switchMap((options) => {\n                const option = options.find((o) => o.key === this.value?.toString());\n                return of(option ? option.label : '');\n            })\n        );\n    }\n\n    get displayValue() {\n        return this.valueFetch$;\n    }\n\n    setValue(value: any) {\n        this.value = value;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CardViewItem } from '../interfaces/card-view-item.interface';\nimport { DynamicComponentModel } from '../../common/services/dynamic-component-mapper.service';\nimport { CardViewBaseItemModel } from './card-view-baseitem.model';\nimport { Observable } from 'rxjs';\nimport { CardViewArrayItemProperties } from '../interfaces/card-view-arrayitem-properties.interface';\n\nexport interface CardViewArrayItem {\n    icon: string;\n    value: string;\n}\n\nexport class CardViewArrayItemModel extends CardViewBaseItemModel implements CardViewItem, DynamicComponentModel {\n    type: string = 'array';\n    declare value: Observable<CardViewArrayItem[]>;\n    noOfItemsToDisplay: number;\n\n    constructor(cardViewArrayItemProperties: CardViewArrayItemProperties) {\n        super(cardViewArrayItemProperties);\n        this.noOfItemsToDisplay = cardViewArrayItemProperties.noOfItemsToDisplay;\n    }\n\n    get displayValue(): Observable<CardViewArrayItem[]> {\n        return this.value;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './card-view-baseitem.model';\nexport * from './card-view-boolitem.model';\nexport * from './card-view-dateitem.model';\nexport * from './card-view-datetimeitem.model';\nexport * from './card-view-floatitem.model';\nexport * from './card-view-intitem.model';\nexport * from './card-view-longitem.model';\nexport * from './card-view-mapitem.model';\nexport * from './card-view-textitem.model';\nexport * from './card-view-keyvaluepairs.model';\nexport * from './card-view-selectitem.model';\nexport * from './card-view-arrayitem.model';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './card-item-types.service';\nexport * from './card-view-update.service';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NgModule } from '@angular/core';\nimport { CardViewComponent } from './components/card-view/card-view.component';\nimport { CardViewBoolItemComponent } from './components/card-view-boolitem/card-view-boolitem.component';\nimport { CardViewDateItemComponent } from './components/card-view-dateitem/card-view-dateitem.component';\nimport { CardViewItemDispatcherComponent } from './components/card-view-item-dispatcher/card-view-item-dispatcher.component';\nimport { CardViewMapItemComponent } from './components/card-view-mapitem/card-view-mapitem.component';\nimport { CardViewTextItemComponent } from './components/card-view-textitem/card-view-textitem.component';\nimport { CardViewKeyValuePairsItemComponent } from './components/card-view-keyvaluepairsitem/card-view-keyvaluepairsitem.component';\nimport { CardViewSelectItemComponent } from './components/card-view-selectitem/card-view-selectitem.component';\nimport { CardViewArrayItemComponent } from './components/card-view-arrayitem/card-view-arrayitem.component';\nimport { SelectFilterInputComponent } from './components/card-view-selectitem/select-filter-input/select-filter-input.component';\n\nexport const CARD_VIEW_DIRECTIVES = [\n    CardViewComponent,\n    CardViewBoolItemComponent,\n    CardViewDateItemComponent,\n    CardViewMapItemComponent,\n    CardViewTextItemComponent,\n    CardViewKeyValuePairsItemComponent,\n    CardViewSelectItemComponent,\n    CardViewItemDispatcherComponent,\n    CardViewArrayItemComponent,\n    SelectFilterInputComponent\n] as const;\n\n/** @deprecated use `...CARD_VIEW_DIRECTIVES` or import standalone components directly */\n@NgModule({\n    imports: [...CARD_VIEW_DIRECTIVES],\n    exports: [...CARD_VIEW_DIRECTIVES]\n})\nexport class CardViewModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport {\n    CardViewComponent,\n    CardViewBoolItemComponent,\n    CardViewDateItemComponent,\n    CardViewMapItemComponent,\n    CardViewTextItemComponent,\n    CardViewSelectItemComponent,\n    CardViewKeyValuePairsItemComponent,\n    CardViewArrayItemComponent,\n    SelectFilterInputComponent\n} from './components/card-view.components';\n\nexport * from './interfaces/card-view.interfaces';\nexport * from './validators/card-view.validators';\nexport * from './models/card-view.models';\nexport * from './services/card-view.services';\nexport * from './card-view.module';\nexport * from './components/card-view-item-dispatcher/card-view-item-dispatcher.component';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport class FormEvent {\n    private isDefaultPrevented: boolean = false;\n\n    readonly form: any;\n\n    constructor(form: any) {\n        this.form = form;\n    }\n\n    get defaultPrevented() {\n        return this.isDefaultPrevented;\n    }\n\n    preventDefault() {\n        this.isDefaultPrevented = true;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FormModel } from '../components/widgets/core/form.model';\nimport { FormEvent } from './form.event';\n\nexport class FormErrorEvent extends FormEvent {\n    readonly error: any;\n\n    constructor(form: FormModel, error: any) {\n        super(form);\n        this.error = error;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FormFieldModel } from '../components/widgets/core/form-field.model';\nimport { FormEvent } from './form.event';\n\nexport class FormFieldEvent extends FormEvent {\n    readonly field: FormFieldModel;\n\n    constructor(form: any, field: FormFieldModel) {\n        super(form);\n        this.field = field;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FormFieldModel } from '../components/widgets/core/form-field.model';\nimport { FormFieldEvent } from './form-field.event';\n\nexport class ValidateFormFieldEvent extends FormFieldEvent {\n    isValid = true;\n\n    constructor(form: any, field: FormFieldModel) {\n        super(form, field);\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FormEvent } from './form.event';\nimport { FormFieldModel } from '../components/widgets/core/form-field.model';\n\nexport class ValidateFormEvent extends FormEvent {\n    isValid = true;\n    errorsField: FormFieldModel[] = [];\n\n    constructor(form: any) {\n        super(form);\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FormFieldEvent } from './form-field.event';\nimport { FormEvent } from './form.event';\n\nexport class FormRulesEvent extends FormFieldEvent {\n    readonly type: string;\n    readonly event: Event;\n\n    constructor(type: string, formEvent: FormEvent, event?: Event) {\n        super(formEvent.form, formEvent['field']);\n        this.type = type;\n        this.event = event;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface FormSpinnerEventPayload {\n    showSpinner: boolean;\n    message?: string;\n}\n\nexport class FormSpinnerEvent {\n    constructor(public type: string, public payload: FormSpinnerEventPayload) {}\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './form.event';\nexport * from './form-error.event';\nexport * from './form-field.event';\nexport * from './validate-form-field.event';\nexport * from './validate-form.event';\nexport * from './form-rules.event';\nexport * from './form-spinner.event';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nexport abstract class FormWidgetModel {\n    readonly fieldType: string;\n    readonly id: string;\n    readonly name: string;\n    readonly type: string;\n    readonly tab: string;\n    readonly style?: string;\n\n    readonly form: any;\n    readonly json: any;\n    readonly field: any;\n\n    protected constructor(form: any, json: any) {\n        this.form = form;\n        this.json = json;\n\n        if (json) {\n            this.fieldType = json.fieldType;\n            this.id = json.id;\n            this.name = json.name;\n            this.type = json.type;\n            this.tab = json.tab;\n            this.field = json.field;\n            this.style = json.style;\n        }\n    }\n}\n\nexport interface FormWidgetModelCache<T extends FormWidgetModel> {\n    [key: string]: T;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { MaybeReactiveFormWidget, ReactiveFormWidget } from '../reactive-widget.interface';\n\n/* eslint-disable @angular-eslint/component-selector */\n\nexport class FormFieldTypes {\n    static CONTAINER: string = 'container';\n    static GROUP: string = 'group';\n    static REPEATABLE_SECTION: string = 'repeatable-section';\n    static SECTION: string = 'section';\n    static DYNAMIC_TABLE: string = 'dynamic-table';\n    static TEXT: string = 'text';\n    static STRING: string = 'string';\n    static INTEGER: string = 'integer';\n    static DECIMAL: string = 'bigdecimal';\n    static MULTILINE_TEXT: string = 'multi-line-text';\n    static DROPDOWN: string = 'dropdown';\n    static HYPERLINK: string = 'hyperlink';\n    static RADIO_BUTTONS: string = 'radio-buttons';\n    static DISPLAY_VALUE: string = 'readonly';\n    static READONLY_TEXT: string = 'readonly-text';\n    static UPLOAD: string = 'upload';\n    static TYPEAHEAD: string = 'typeahead';\n    static FUNCTIONAL_GROUP: string = 'functional-group';\n    static PEOPLE: string = 'people';\n    static BOOLEAN: string = 'boolean';\n    static NUMBER: string = 'integer';\n    static DATE: string = 'date';\n    static AMOUNT: string = 'amount';\n    static DOCUMENT: string = 'document';\n    static DATETIME: string = 'datetime';\n    static ATTACH_FOLDER: string = 'select-folder';\n    static PROPERTIES_VIEWER: string = 'properties-viewer';\n    static ALFRESCO_FILE_VIEWER: string = 'file-viewer';\n    static VIEWER: string = 'base-viewer';\n    static DISPLAY_RICH_TEXT: string = 'display-rich-text';\n    static JSON: string = 'json';\n    static DATA_TABLE: string = 'data-table';\n    static DISPLAY_EXTERNAL_PROPERTY: string = 'display-external-property';\n    static BUTTON: string = 'button';\n\n    static READONLY_TYPES: string[] = [FormFieldTypes.HYPERLINK, FormFieldTypes.DISPLAY_VALUE, FormFieldTypes.READONLY_TEXT, FormFieldTypes.GROUP];\n\n    static VALIDATABLE_TYPES: string[] = [FormFieldTypes.DISPLAY_EXTERNAL_PROPERTY];\n\n    static REACTIVE_TYPES: string[] = [FormFieldTypes.DATE, FormFieldTypes.DATETIME, FormFieldTypes.DROPDOWN];\n\n    static CONSTANT_VALUE_TYPES: string[] = [FormFieldTypes.DISPLAY_EXTERNAL_PROPERTY];\n\n    static isReadOnlyType(type: string): boolean {\n        return FormFieldTypes.READONLY_TYPES.includes(type);\n    }\n\n    static isValidatableType(type: string): boolean {\n        return FormFieldTypes.VALIDATABLE_TYPES.includes(type);\n    }\n\n    static isReactiveType(type: string): boolean {\n        return FormFieldTypes.REACTIVE_TYPES.includes(type);\n    }\n\n    static isReactiveWidget(instance: MaybeReactiveFormWidget): instance is ReactiveFormWidget {\n        return FormFieldTypes.REACTIVE_TYPES.includes(instance?.field?.type);\n    }\n\n    static isConstantValueType(type: string): boolean {\n        return FormFieldTypes.CONSTANT_VALUE_TYPES.includes(type);\n    }\n\n    static isContainerType(type: string): boolean {\n        return type === FormFieldTypes.CONTAINER || type === FormFieldTypes.GROUP;\n    }\n\n    static isSectionType(type: string): boolean {\n        return type === FormFieldTypes.SECTION;\n    }\n\n    static isRepeatableSectionType(type: string): boolean {\n        return type === FormFieldTypes.REPEATABLE_SECTION;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { FormFieldModel } from './form-field.model';\nimport { FormWidgetModel } from './form-widget.model';\nimport { ContainerColumnModel } from './container-column.model';\nimport { FormFieldTypes } from './form-field-types';\n\nexport class ContainerModel extends FormWidgetModel {\n    declare field: FormFieldModel;\n\n    readonly columns: ContainerColumnModel[] = [];\n    isExpanded: boolean = true;\n    readonly rowspan: number = 1;\n    readonly colspan: number = 1;\n\n    constructor(field: FormFieldModel) {\n        super(field.form, field.json);\n\n        if (field) {\n            this.field = field;\n            this.columns = field.columns || [];\n            this.isExpanded = !this.isCollapsedByDefault;\n            this.colspan = field.colspan;\n            this.rowspan = field.rowspan;\n        }\n    }\n\n    get isVisible(): boolean {\n        return this.field.isVisible;\n    }\n\n    get isTypeFieldGroup(): boolean {\n        return this.type === FormFieldTypes.GROUP;\n    }\n\n    get isCollapsible(): boolean {\n        return this.isTypeFieldGroup && (this.field.params?.allowCollapse ?? false);\n    }\n\n    get isCollapsedByDefault(): boolean {\n        return this.isTypeFieldGroup && (this.field.params?.collapseByDefault ?? false);\n    }\n\n    get hideHeader(): boolean {\n        return this.isTypeFieldGroup && (this.field.params?.hideHeader ?? false);\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FormFieldModel } from './form-field.model';\n\nexport class ContainerColumnModel {\n    id: string;\n    size: number = 12;\n    fields: FormFieldModel[] = [];\n    colspan: number = 1;\n    rowspan: number = 1;\n\n    constructor() {\n        this.id = window.crypto.getRandomValues(new Uint32Array(1))[0].toString();\n    }\n\n    hasFields(): boolean {\n        return !!this.fields?.length;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nexport class ErrorMessageModel {\n    message: string = '';\n    attributes: Map<string, string> = null;\n\n    constructor(obj?: any) {\n        this.message = obj?.message || '';\n        this.attributes = obj?.attributes || new Map();\n    }\n\n    isActive(): boolean {\n        return !!this.message;\n    }\n\n    getAttributesAsJsonObj() {\n        const result = {};\n        if (this.attributes.size > 0) {\n            this.attributes.forEach((value, key) => {\n                result[key] = typeof value === 'string' ? value : JSON.stringify(value);\n            });\n        }\n        return result;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const isNumberValue = (value: any): boolean => {\n    if (value === null || value === undefined || value === '') {\n        return false;\n    }\n\n    return !isNaN(+value);\n};\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ContainerColumnModel } from './container-column.model';\n\nexport class ContainerRowModel {\n    id: string;\n    isInitial: boolean;\n    columns: ContainerColumnModel[] = [];\n\n    size: number = 12;\n    colspan: number = 1;\n    rowspan: number = 1;\n\n    constructor(isInitial: boolean = false) {\n        this.isInitial = isInitial;\n        this.id = window.crypto.getRandomValues(new Uint32Array(1))[0].toString();\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const ROW_ID_PREFIX = '-Row';\n\nexport interface RepeatableSectionModel {\n    id: string;\n    uid: string;\n    fields: any;\n    rowIndex: number;\n    value?: any;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FormFieldRule } from '../form-field-rule';\nimport { FormFieldTypes } from '../form-field-types';\nimport { RepeatableSectionModel, ROW_ID_PREFIX } from '../repeatable-section.model';\n\nconst getRule = (id: string, rule?: FormFieldRule, parent?: RepeatableSectionModel): FormFieldRule =>\n    rule?.ruleOn && parent?.fields\n        ? ({\n              ...rule,\n              ruleOn: getRuleOn(id, rule.ruleOn, parent.fields)\n          } as FormFieldRule)\n        : rule;\n\nconst getRuleOn = (id: string, ruleOn: string, fields: any): string => {\n    for (const column of Object.values(fields)) {\n        for (const field of column as any) {\n            if (field.type === FormFieldTypes.SECTION) {\n                return getRuleOn(id, ruleOn, field.fields);\n            }\n\n            if (field.id === ruleOn) {\n                return getRepeatableSectionChildRuleOn(id, ruleOn);\n            }\n        }\n    }\n\n    return ruleOn;\n};\n\nconst getRepeatableSectionChildRuleOn = (id: string, ruleOn: string): string => ruleOn + ROW_ID_PREFIX + getRowId(id);\n\nconst getRowId = (id: string): string => {\n    const split = id.split(ROW_ID_PREFIX);\n\n    return split.length > 1 ? split[1] : '';\n};\n\nexport const formFieldRuleHandler = {\n    getRule\n};\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport class WidgetVisibilityModel {\n    rightRestResponseId?: string;\n    rightFormFieldId?: string;\n    leftRestResponseId?: string;\n    leftFormFieldId?: string;\n    operator: string;\n    nextCondition?: WidgetVisibilityModel;\n    nextConditionOperator: string;\n\n    constructor(private readonly json?: any) {\n        if (json) {\n            this.operator = json.operator;\n            this.nextCondition = new WidgetVisibilityModel(json.nextCondition);\n            this.nextConditionOperator = json.nextConditionOperator;\n            this.rightRestResponseId = json.rightRestResponseId;\n            this.rightFormFieldId = json.rightFormFieldId;\n            this.leftFormFieldId = json.leftFormFieldId;\n            this.leftRestResponseId = json.leftRestResponseId;\n        } else {\n            this.json = {};\n        }\n    }\n\n    get leftType(): string | null {\n        if (this.leftFormFieldId) {\n            return WidgetTypeEnum.field;\n        } else if (this.leftRestResponseId) {\n            return WidgetTypeEnum.variable;\n        } else if (this.json.leftType) {\n            return this.json.leftType;\n        }\n        return null;\n    }\n\n    set leftType(leftType: string) {\n        this.json.leftType = leftType;\n    }\n\n    get leftValue(): any {\n        if (this.json.leftValue?.toString()) {\n            return this.json.leftValue;\n        } else if (this.leftFormFieldId) {\n            return this.leftFormFieldId;\n        } else if (this.leftRestResponseId) {\n            return this.leftRestResponseId;\n        }\n        return null;\n    }\n\n    set leftValue(leftValue: any) {\n        this.json.leftValue = leftValue;\n    }\n\n    get rightType(): string | null {\n        if (this.json.rightType) {\n            return this.json.rightType;\n        } else if (this.json.rightValue) {\n            return WidgetTypeEnum.value;\n        } else if (this.rightRestResponseId) {\n            return WidgetTypeEnum.variable;\n        } else if (this.rightFormFieldId) {\n            return WidgetTypeEnum.field;\n        }\n\n        return null;\n    }\n\n    set rightType(rightType: string | null) {\n        this.json.rightType = rightType;\n    }\n\n    get rightValue(): any {\n        if (this.json.rightValue?.toString()) {\n            return this.json.rightValue;\n        } else if (this.rightFormFieldId) {\n            return this.rightFormFieldId;\n        } else if (this.rightRestResponseId) {\n            return this.rightRestResponseId;\n        }\n        return null;\n    }\n\n    set rightValue(rightValue: any) {\n        this.json.rightValue = rightValue;\n    }\n}\n\nexport const WidgetTypeEnum = {\n    field: 'field',\n    variable: 'variable',\n    value: 'value'\n} as const;\n\nexport type WidgetTypeEnum = (typeof WidgetTypeEnum)[keyof typeof WidgetTypeEnum];\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { RepeatableSectionModel, ROW_ID_PREFIX } from '../repeatable-section.model';\nimport { WidgetTypeEnum, WidgetVisibilityModel } from '../../../../models/widget-visibility.model';\nimport { FormFieldTypes } from '../form-field-types';\n\nconst getVisibilityCondition = (id: string, json?: any, parent?: RepeatableSectionModel): WidgetVisibilityModel | undefined => {\n    if (!json) {\n        return undefined;\n    }\n\n    return new WidgetVisibilityModel(\n        parent?.fields\n            ? {\n                  ...json,\n                  ...(shouldUpdateValue(json.leftType, json.leftValue) && {\n                      leftValue: getValue(id, json.leftValue, parent.fields)\n                  }),\n                  ...(shouldUpdateValue(json.rightType, json.rightValue) && {\n                      rightValue: getValue(id, json.rightValue, parent.fields)\n                  })\n              }\n            : json\n    );\n};\n\nconst shouldUpdateValue = (type: WidgetTypeEnum, value: string): boolean => type === WidgetTypeEnum.field && !!value;\n\nconst getValue = (id: string, value: string, fields: any): string => {\n    for (const column of Object.values(fields)) {\n        for (const field of column as any) {\n            if (field.type === FormFieldTypes.SECTION) {\n                return getValue(id, value, field.fields);\n            }\n\n            if (field.id === value) {\n                return getRepeatableSectionChildValue(id, value);\n            }\n        }\n    }\n\n    return value;\n};\n\nconst getRepeatableSectionChildValue = (id: string, value: string): string => value + ROW_ID_PREFIX + getRowId(id);\n\nconst getRowId = (id: string) => {\n    const split = id.split(ROW_ID_PREFIX);\n\n    return split.length > 1 ? split[1] : '';\n};\n\nexport const formFieldVisibilityConditionHandler = {\n    getVisibilityCondition\n};\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\nimport { WidgetVisibilityModel } from '../../../models/widget-visibility.model';\nimport { ContainerColumnModel } from './container-column.model';\nimport { ErrorMessageModel } from './error-message.model';\nimport { FormFieldMetadata } from './form-field-metadata';\nimport { FormFieldOption } from './form-field-option';\nimport { FormFieldTypes } from './form-field-types';\nimport { FormWidgetModel } from './form-widget.model';\nimport { FormFieldRule } from './form-field-rule';\nimport { ProcessFormModel } from './process-form-model.interface';\nimport { isNumberValue } from './form-field-utils';\nimport { VariableConfig } from './form-field-variable-options';\nimport { DataColumn } from '../../../../datatable/data/data-column.model';\nimport { DateFnsUtils } from '../../../../common';\nimport { isValid as isValidDate } from 'date-fns';\nimport { ContainerRowModel } from './container-row.model';\nimport { RepeatableSectionModel, ROW_ID_PREFIX } from './repeatable-section.model';\nimport { formFieldRuleHandler } from './handlers/form-field-rule.handler';\nimport { formFieldVisibilityConditionHandler } from './handlers/form-field-visibility-condition.handler';\n\nexport type FieldOptionType = 'rest' | 'manual' | 'variable';\nexport type FieldSelectionType = 'single' | 'multiple';\nexport type FieldAlignmentType = 'vertical' | 'horizontal';\n\n// Maps to FormFieldRepresentation\nexport class FormFieldModel extends FormWidgetModel {\n    private _value: string;\n    private _readOnly: boolean = false;\n    private _isValid: boolean = true;\n    private _required: boolean = false;\n\n    readonly defaultDateFormat: string = 'D-M-YYYY';\n    readonly defaultDateTimeFormat: string = 'D-M-YYYY hh:mm A';\n    private readonly defaultEmptyOptionId = 'empty';\n    private readonly defaultEmptyOptionName = 'Choose one...';\n\n    // model members\n    declare fieldType: string;\n    declare id: string;\n    declare name: string;\n    declare type: string;\n    overrideId: boolean;\n    declare tab: string;\n    rowspan: number = 1;\n    colspan: number = 1;\n    placeholder: string = null;\n    tooltip: string = null;\n    minLength: number = 0;\n    maxLength: number = 0;\n    minValue: string;\n    maxValue: string;\n    maxDateRangeValue: number = 0;\n    minDateRangeValue: number = 0;\n    precision: number;\n    dynamicDateRangeSelection: boolean;\n    regexPattern: string;\n    customValidationMessage?: string;\n    enableCustomValidationMessage?: boolean;\n    options: FormFieldOption[] = [];\n    restUrl: string;\n    roles: string[];\n    restResponsePath: string;\n    restIdProperty: string;\n    restLabelProperty: string;\n    hasEmptyValue: boolean;\n    className: string;\n    optionType: FieldOptionType;\n    params: FormFieldMetadata = {};\n    hyperlinkUrl: string;\n    displayText: string;\n    isVisible: boolean = true;\n    visibilityCondition: WidgetVisibilityModel = null;\n    checkParentVisibilityForValidation: boolean = false;\n    enableFractions: boolean = false;\n    currency: string = null;\n    dateDisplayFormat: string = this.defaultDateFormat;\n    selectionType: FieldSelectionType;\n    alignmentType: FieldAlignmentType;\n    rule?: FormFieldRule;\n    selectLoggedUser: boolean;\n    groupsRestriction: string[];\n    leftLabels: boolean = false;\n    variableConfig: VariableConfig;\n    schemaDefinition: DataColumn[];\n    externalProperty?: string;\n    declare style?: string;\n    parent?: RepeatableSectionModel;\n\n    // container model members\n    numberOfColumns: number = 1;\n    fields: FormFieldModel[] = [];\n    columns: ContainerColumnModel[] = [];\n    rows: ContainerRowModel[] = [];\n\n    // util members\n    emptyOption: FormFieldOption;\n    validationSummary: ErrorMessageModel;\n\n    get value(): any {\n        return this._value;\n    }\n\n    set value(v: any) {\n        if (v !== this._value) {\n            this._value = v;\n            this.updateForm();\n        }\n    }\n\n    get readOnly(): boolean {\n        if (this.form?.readOnly) {\n            return true;\n        }\n        return this._readOnly;\n    }\n\n    set readOnly(readOnly: boolean) {\n        this._readOnly = readOnly;\n\n        if (this.type === FormFieldTypes.REPEATABLE_SECTION) {\n            this.updateRepeatableSectionReadOnlyState(readOnly);\n            return;\n        }\n\n        this.updateForm();\n    }\n\n    get required(): boolean {\n        return this._required;\n    }\n\n    set required(value: boolean) {\n        this._required = value;\n        this.updateForm();\n    }\n\n    get isValid(): boolean {\n        return this._isValid;\n    }\n\n    get hasMultipleValues() {\n        return this.selectionType === 'multiple' || this.params.multiple;\n    }\n\n    markAsInvalid() {\n        this._isValid = false;\n    }\n\n    markAsValid() {\n        this._isValid = true;\n    }\n\n    validate(): boolean {\n        this.validationSummary = new ErrorMessageModel();\n\n        if (this.isFieldValidatable()) {\n            const validators = this.form.fieldValidators || [];\n            for (const validator of validators) {\n                if (!validator.validate(this)) {\n                    this._isValid = false;\n                    return this._isValid;\n                }\n            }\n        }\n        this._isValid = true;\n        return this._isValid;\n    }\n\n    private isFieldValidatable(): boolean {\n        return !this.readOnly || FormFieldTypes.isValidatableType(this.type);\n    }\n\n    constructor(form: any, json?: any, parent?: RepeatableSectionModel) {\n        super(form, json);\n        if (json) {\n            this.fieldType = json.fieldType;\n            this.id = this.getId(json.id, parent);\n            this.name = json.name;\n            this.type = json.type;\n            this.roles = json.roles;\n            this._required = json.required;\n            this._readOnly = json.readOnly || json.type === 'readonly';\n            this.overrideId = json.overrideId;\n            this.tab = json.tab;\n            this.restUrl = json.restUrl;\n            this.restResponsePath = json.restResponsePath;\n            this.restIdProperty = json.restIdProperty;\n            this.restLabelProperty = json.restLabelProperty;\n            this.colspan = json.colspan;\n            this.rowspan = json.rowspan;\n            this.minLength = json.minLength || 0;\n            this.maxLength = json.maxLength || 0;\n            this.minValue = json.minValue;\n            this.maxValue = json.maxValue;\n            this.minDateRangeValue = json.minDateRangeValue;\n            this.maxDateRangeValue = json.maxDateRangeValue;\n            this.dynamicDateRangeSelection = json.dynamicDateRangeSelection;\n            this.regexPattern = json.regexPattern;\n            this.customValidationMessage = json.customValidationMessage;\n            this.options = this.parseOptions(json.options, json.optionType);\n            this.emptyOption = this.getEmptyOption(this.options);\n            this.hasEmptyValue = json?.hasEmptyValue ?? !!this.emptyOption;\n            this.className = json.className;\n            this.optionType = json.optionType;\n            this.params = json.params || {};\n            this.hyperlinkUrl = json.hyperlinkUrl;\n            this.displayText = json.displayText;\n            this.visibilityCondition = formFieldVisibilityConditionHandler.getVisibilityCondition(this.id, json.visibilityCondition, parent);\n            this.checkParentVisibilityForValidation = json.checkParentVisibilityForValidation ?? false;\n            this.enableFractions = json.enableFractions;\n            this.currency = json.currency;\n            this.dateDisplayFormat = json.dateDisplayFormat || this.getDefaultDateFormat(json);\n            this.validationSummary = new ErrorMessageModel();\n            this.tooltip = json.tooltip || '';\n            this.selectionType = json.selectionType;\n            this.alignmentType = json.alignmentType;\n            this.rule = formFieldRuleHandler.getRule(this.id, json.rule, parent);\n            this.selectLoggedUser = json.selectLoggedUser;\n            this.groupsRestriction = json.groupsRestriction?.groups;\n            this.variableConfig = json.variableConfig;\n            this.schemaDefinition = json.schemaDefinition;\n            this.precision = json.precision;\n            this.externalProperty = json.externalProperty;\n            this._value = this.parseValue(json, parent?.value);\n            this.style = json.style;\n            this.parent = parent;\n\n            if (json.placeholder && json.placeholder !== '' && json.placeholder !== 'null') {\n                this.placeholder = json.placeholder;\n            }\n\n            if (FormFieldTypes.isReadOnlyType(this.type)) {\n                if (this.params?.field) {\n                    this.setValueForReadonlyType(form);\n                }\n            }\n\n            if (FormFieldTypes.isContainerType(this.type) || FormFieldTypes.isSectionType(this.type)) {\n                this.containerFactory(json, form);\n            }\n\n            if (FormFieldTypes.isRepeatableSectionType(this.type)) {\n                this.repeatableSectionFactory(json, form);\n            }\n        }\n\n        if (form?.json) {\n            this.leftLabels = form.json.leftLabels || false;\n        }\n\n        this.updateForm();\n    }\n\n    private getEmptyOption(options: FormFieldOption[]): FormFieldOption {\n        return options.find((option) => option?.id === this.defaultEmptyOptionId);\n    }\n\n    private setValueForReadonlyType(form: any) {\n        const value = this.getProcessVariableValue(this.params.field, form);\n        if (value) {\n            this.value = value;\n        }\n    }\n\n    private getDefaultDateFormat(jsonField: any): string {\n        let originalType = jsonField.type;\n        if (FormFieldTypes.isReadOnlyType(jsonField.type) && jsonField.params?.field) {\n            originalType = jsonField.params.field.type;\n        }\n        return originalType === FormFieldTypes.DATETIME ? this.defaultDateTimeFormat : this.defaultDateFormat;\n    }\n\n    private getId(id: string, parent?: RepeatableSectionModel): string {\n        return parent ? parent.uid : id;\n    }\n\n    private isTypeaheadFieldType(type: string): boolean {\n        return type === 'typeahead';\n    }\n\n    private getFieldNameWithLabel(name: string): string {\n        return name + '_LABEL';\n    }\n\n    private getProcessVariableValue(field: any, form: ProcessFormModel): any {\n        let fieldName = field.name;\n        if (this.isTypeaheadFieldType(field.type)) {\n            fieldName = this.getFieldNameWithLabel(field.id);\n        }\n        return form.getProcessVariableValue(fieldName);\n    }\n\n    private containerFactory(json: any, form: any): void {\n        const { numberOfColumns = 1, fields = {} } = json;\n        this.numberOfColumns = numberOfColumns;\n        this.fields = fields;\n        this.rowspan = 1;\n        this.colspan = 1;\n\n        Object.keys(fields).forEach((currentField) => {\n            if (!Object.prototype.hasOwnProperty.call(fields, currentField)) {\n                return;\n            }\n\n            const col = new ContainerColumnModel();\n            col.fields = (fields[currentField] || []).map((field: any) => new FormFieldModel(form, field, this.setupParentConfig(field)));\n            col.rowspan = fields[currentField].length;\n\n            if (!FormFieldTypes.isSectionType(this.type)) {\n                this.updateContainerColspan(col.fields);\n            }\n\n            this.rowspan = Math.max(this.rowspan, col.rowspan);\n            this.columns.push(col);\n        });\n    }\n\n    private setupParentConfig(field: any) {\n        if (this.parent) {\n            return {\n                ...this.parent,\n                uid: this.getUniqueId(field, this.parent.uid.split(ROW_ID_PREFIX)[1]),\n                value: this.parent.value?.[field.id]\n            };\n        }\n\n        return undefined;\n    }\n\n    private repeatableSectionFactory(json: any, form: any): void {\n        const { numberOfColumns = 1, params, value, fields = {} } = json;\n\n        this.numberOfColumns = numberOfColumns;\n        this.fields = fields;\n        this.rowspan = 1;\n        this.colspan = 1;\n        this.rows = [];\n\n        for (let i = 0; i < this.getNumberOfRows(params.initialNumberOfRows, params.maxNumberOfRows, value); i++) {\n            this.rows.push(this.createRow(fields, form, i, value?.[i], i < params?.initialNumberOfRows));\n        }\n\n        this.columns = this.rows[0].columns;\n    }\n\n    private getNumberOfRows(initialNrRows: number = 1, maxNrRows: number | null = null, value?: any) {\n        return value?.length ? (maxNrRows ? Math.min(value.length, maxNrRows) : value.length) : initialNrRows;\n    }\n\n    private createRow(fields: any, form: any, index: number, value?: any, isInitial: boolean = false) {\n        const row = new ContainerRowModel(isInitial);\n\n        row.columns.push(...this.createColumns(fields, form, row.id, index, value));\n\n        return row;\n    }\n\n    private createColumns(fields: any, form: any, rowId: string, index?: number, value?: any) {\n        const columns: ContainerColumnModel[] = [];\n\n        Object.keys(fields).forEach((currentField) => {\n            if (!Object.prototype.hasOwnProperty.call(fields, currentField)) {\n                return;\n            }\n\n            const col = new ContainerColumnModel();\n            col.fields = (fields[currentField] || []).map(\n                (field: any) =>\n                    new FormFieldModel(form, field, {\n                        id: this.id,\n                        uid: this.getUniqueId(field, rowId),\n                        fields: this.fields,\n                        rowIndex: index ?? 0,\n                        value: field.type === FormFieldTypes.SECTION ? value : value?.[field.id]\n                    })\n            );\n            col.rowspan = fields[currentField].length;\n\n            if (!FormFieldTypes.isSectionType(this.type)) {\n                this.updateContainerColspan(col.fields);\n            }\n\n            this.rowspan = Math.max(this.rowspan, col.rowspan);\n            columns.push(col);\n        });\n\n        return columns;\n    }\n\n    private updateRepeatableSectionReadOnlyState(state: boolean) {\n        for (const row of this.rows) {\n            for (const column of row.columns) {\n                for (const field of column.fields) {\n                    if (field.type === FormFieldTypes.SECTION) {\n                        this.updateInnerSectionReadOnlyState(field, state);\n                    }\n\n                    field.readOnly = this.getRepeatableSectionFieldReadOnlyState(field, state);\n                }\n            }\n        }\n    }\n\n    private updateInnerSectionReadOnlyState(section: FormFieldModel, state: boolean) {\n        for (const column of section.columns) {\n            for (const field of column.fields) {\n                field.readOnly = this.getRepeatableSectionFieldReadOnlyState(field, state);\n            }\n        }\n    }\n\n    private getRepeatableSectionFieldReadOnlyState(field: FormFieldModel, state: boolean): boolean {\n        return state || field.json.readOnly;\n    }\n\n    private getUniqueId(field: FormFieldModel, rowId: string): string {\n        return field.id + ROW_ID_PREFIX + rowId;\n    }\n\n    private updateChildrenFieldsRowIndex() {\n        this.rows.forEach((row: ContainerRowModel, index: number) => {\n            for (const column of row.columns) {\n                for (const field of column.fields) {\n                    field.parent.rowIndex = index;\n                }\n            }\n        });\n    }\n\n    private createInitialValue(fields: any) {\n        return Object.keys(fields)\n            .map((currentField) => (fields[currentField] || []).map((field) => this.getFieldId(field)))\n            .flat(2)\n            .reduce((acc, curr) => ((acc[curr] = null), acc), {});\n    }\n\n    private getFieldId(field: any) {\n        if (field.type === FormFieldTypes.SECTION) {\n            const fields = field.fields;\n\n            return Object.keys(fields)\n                .map((currentField) => (fields[currentField] || []).map((e) => e.id))\n                .flat(1);\n        }\n\n        return field.id;\n    }\n\n    private updateContainerColspan(fields: FormFieldModel[]): void {\n        fields.forEach((colField: FormFieldModel) => {\n            this.colspan = Math.max(this.colspan, colField.colspan);\n        });\n    }\n\n    addRow(fields: any, form: any) {\n        if (!this.shouldAddRow()) {\n            return;\n        }\n\n        this.rows.push(this.createRow(fields, form, this.rows.length));\n        this.form.onRepeatableSectionChanged();\n    }\n\n    private shouldAddRow(): boolean {\n        return !this.params.maxNumberOfRows || this.rows.length < this.params.maxNumberOfRows;\n    }\n\n    removeRow(index: number) {\n        if (!this.shouldRemoveRow(index)) {\n            return;\n        }\n\n        this.rows.splice(index, 1);\n        this.updateChildrenFieldsRowIndex();\n        this.form.onRepeatableSectionChanged();\n\n        if (!this.form.values[this.id]) {\n            return;\n        }\n\n        this.form.values[this.id].splice(index, 1);\n        this.form.onFormFieldChanged(this);\n    }\n\n    private shouldRemoveRow(index: number): boolean {\n        return this.rows.length > index;\n    }\n\n    parseValue(json: any, initialValue?: any): any {\n        const value = initialValue ?? (Object.prototype.hasOwnProperty.call(json, 'value') && json.value !== undefined ? json.value : null);\n\n        /*\n         This is needed due to Activiti issue related to reading dropdown values as value string\n         but saving back as object: { id: <id>, name: <name> }\n         */\n        if (json.type === FormFieldTypes.DROPDOWN) {\n            if (this.hasEmptyValue) {\n                if (!this.emptyOption) {\n                    this.emptyOption = {\n                        id: this.defaultEmptyOptionId,\n                        name: this.defaultEmptyOptionName\n                    };\n                    this.options.unshift(this.emptyOption);\n                }\n\n                const isEmptyValue = !value || [this.emptyOption.id, this.emptyOption.name].includes(value);\n                if (isEmptyValue) {\n                    return this.emptyOption;\n                }\n            }\n\n            if (this.isValidOption(value)) {\n                this.addOption({ id: value.id, name: value.name });\n                return value;\n            }\n\n            if (this.hasMultipleValues) {\n                const validSelectedOptions = (Array.isArray(json.value) ? json.value : []).filter((option) => this.isValidOption(option));\n\n                this.addOptions(validSelectedOptions);\n                return validSelectedOptions;\n            }\n\n            return value;\n        }\n\n        /*\n         This is needed due to Activiti issue related to reading radio button values as value string\n         but saving back as object: { id: <id>, name: <name> }\n         */\n        if (json.type === FormFieldTypes.RADIO_BUTTONS) {\n            if (json.value?.options) {\n                this.options = this.parseValidOptions(json.value.options);\n            }\n\n            // Activiti has a bug with default radio button value where initial selection passed as `name` value\n            // so try resolving current one with a fallback to first entry via name or id\n            // TODO: needs to be reported and fixed at Activiti side\n            const matchingOption = this.options.find(\n                (opt) => opt.id === value || opt.name === value || (value && (opt.id === value.id || opt.name === value.name))\n            );\n\n            if (matchingOption) {\n                return matchingOption.id;\n            }\n\n            if (this.isValidOption(value)) {\n                this.addOption({ id: value.id, name: value.name });\n                return value.id;\n            }\n\n            return value;\n        }\n\n        if (this.isDateField(json) || this.isDateTimeField(json)) {\n            if (value) {\n                let dateValue: Date;\n\n                if (isNumberValue(value)) {\n                    dateValue = new Date(value);\n                } else {\n                    dateValue = this.isDateTimeField(json)\n                        ? DateFnsUtils.parseDate(value, 'YYYY-MM-DD hh:mm A')\n                        : DateFnsUtils.parseDate(value.split('T')[0], 'YYYY-M-D');\n                }\n\n                if (isValidDate(dateValue)) {\n                    return dateValue;\n                }\n            }\n\n            return value;\n        }\n\n        if (this.isCheckboxField(json)) {\n            return json.value === 'true' || json.value === true || initialValue === true || initialValue === 'true';\n        }\n\n        return value;\n    }\n\n    updateForm() {\n        if (!this.form) {\n            return;\n        }\n\n        const formValue = this.getFormValue();\n\n        if (this.parent) {\n            this.updateRepeatableSectionValue(formValue);\n        } else {\n            this.updateValue(formValue);\n        }\n\n        this.form.onFormFieldChanged(this);\n    }\n\n    getFormValue() {\n        switch (this.type) {\n            case FormFieldTypes.DROPDOWN: {\n                if (!this.value) {\n                    return null;\n                }\n\n                /*\n                 This is needed due to Activiti reading dropdown values as string\n                 but saving back as object: { id: <id>, name: <name> }\n                 */\n                if (Array.isArray(this.value)) {\n                    return this.value;\n                }\n\n                if (typeof this.value === 'string') {\n                    if (this.value === 'empty' || this.value === '') {\n                        return null;\n                    }\n\n                    const matchingOption: FormFieldOption = this.options.find((opt) => opt.id === this.value);\n\n                    return matchingOption || null;\n                }\n\n                if (typeof this.value === 'object') {\n                    if (this.value.id === 'empty' || this.value.id === '') {\n                        return null;\n                    }\n\n                    const matchingOption: FormFieldOption = this.options.find((opt) => opt.id === this.value.id);\n\n                    return matchingOption;\n                }\n\n                return null;\n            }\n            case FormFieldTypes.RADIO_BUTTONS: {\n                const radioButton: FormFieldOption = this.options.find((opt) => opt.id === this.value);\n\n                if (this.optionType === 'rest') {\n                    return radioButton ? { ...radioButton, options: this.options } : { id: null, name: null, options: this.options };\n                }\n\n                return radioButton ? { ...radioButton } : null;\n            }\n            case FormFieldTypes.UPLOAD: {\n                this.form.hasUpload = true;\n\n                if (this.value && this.value.length > 0) {\n                    return Array.isArray(this.value) ? this.value.map((elem) => elem.id).join(',') : [this.value];\n                }\n\n                return null;\n            }\n            case FormFieldTypes.TYPEAHEAD: {\n                const typeAheadEntry: FormFieldOption[] = this.options.filter((opt) => opt.id === this.value || opt.name === this.value);\n\n                if (typeAheadEntry.length > 0) {\n                    return typeAheadEntry[0];\n                }\n\n                return null;\n            }\n            case FormFieldTypes.DATE: {\n                if (typeof this.value === 'string' && this.value === 'today') {\n                    this.value = new Date();\n                }\n\n                let dateValue;\n\n                try {\n                    let dateWithProperFormat: string | Date;\n\n                    if (typeof this.value === 'string') {\n                        dateWithProperFormat = DateFnsUtils.formatDate(this.value, this.dateDisplayFormat);\n                    } else {\n                        dateWithProperFormat = this.value;\n                    }\n\n                    dateValue = DateFnsUtils.parseDate(dateWithProperFormat, this.dateDisplayFormat);\n                } catch {\n                    dateValue = new Date('error');\n                }\n\n                if (isValidDate(dateValue)) {\n                    const datePart = DateFnsUtils.formatDate(dateValue, 'yyyy-MM-dd');\n\n                    return `${datePart}T00:00:00.000Z`;\n                }\n\n                this._value = this.value;\n\n                return null;\n            }\n            case FormFieldTypes.DATETIME: {\n                if (typeof this.value === 'string' && this.value === 'now') {\n                    this.value = new Date();\n                }\n\n                const dateTimeValue = this.value !== null ? DateFnsUtils.getDate(this.value) : null;\n\n                if (isValidDate(dateTimeValue)) {\n                    return dateTimeValue.toISOString();\n                }\n\n                this._value = this.value;\n\n                return null;\n            }\n            case FormFieldTypes.NUMBER: {\n                return this.enableFractions ? parseFloat(this.value) : parseInt(this.value, 10);\n            }\n            case FormFieldTypes.AMOUNT: {\n                return this.enableFractions ? parseFloat(this.value) : parseInt(this.value, 10);\n            }\n            case FormFieldTypes.DECIMAL: {\n                return parseFloat(this.value);\n            }\n            case FormFieldTypes.BOOLEAN: {\n                return this.value !== null && this.value !== undefined ? this.value : false;\n            }\n            case FormFieldTypes.PEOPLE: {\n                return this.value ? this.value : null;\n            }\n            case FormFieldTypes.FUNCTIONAL_GROUP: {\n                return this.value ? this.value : null;\n            }\n            case FormFieldTypes.REPEATABLE_SECTION: {\n                this.repeatableSectionFactory(\n                    {\n                        ...this.json,\n                        value: this.value\n                    },\n                    this.form\n                );\n\n                return this.value ? this.value : this.form.values[this.id];\n            }\n            default:\n                if (this.shouldUpdateFormValues(this.type)) {\n                    return this.value;\n                }\n\n                return undefined;\n        }\n    }\n\n    private updateValue(value: any) {\n        if (value === undefined) {\n            return;\n        }\n\n        this.form.values[this.id] = value;\n    }\n\n    private updateRepeatableSectionValue(value: string) {\n        if (this.type === FormFieldTypes.SECTION) {\n            return;\n        }\n\n        if (!this.form.values[this.parent.id]) {\n            this.form.values[this.parent.id] = [];\n        }\n\n        if (!this.form.values[this.parent.id][this.parent.rowIndex]) {\n            this.form.values[this.parent.id][this.parent.rowIndex] = this.createInitialValue(this.parent.fields);\n        }\n\n        this.form.values[this.parent.id][this.parent.rowIndex][this.id.split(ROW_ID_PREFIX)[0]] = value;\n    }\n\n    /**\n     * Check if the field type is invalid, requires a type to be a `container`\n     *\n     * @param type field type\n     * @returns `true` if type is a `container`, otherwise `false`\n     */\n    isInvalidFieldType(type: string): boolean {\n        return type === 'container';\n    }\n\n    getOptionName(): string {\n        const option: FormFieldOption = this.options.find((opt) => opt.id === this.value);\n        return option ? option.name : null;\n    }\n\n    hasOptions() {\n        return this.options?.length > 0;\n    }\n\n    isEmptyValueOption(option: FormFieldOption): boolean {\n        return this.hasEmptyValue && option?.id === this.defaultEmptyOptionId;\n    }\n\n    private shouldUpdateFormValues(type): boolean {\n        return !FormFieldTypes.isReadOnlyType(type) && !this.isInvalidFieldType(type) && !FormFieldTypes.isSectionType(type);\n    }\n\n    private addOptions(options: FormFieldOption[]) {\n        options.forEach((option) => this.addOption(option));\n    }\n\n    private addOption(option: FormFieldOption) {\n        const alreadyExists = this.options.find((opt) => opt?.id === option?.id);\n        if (!alreadyExists) {\n            this.options.push(option);\n        }\n    }\n\n    private parseValidOptions(options: any): FormFieldOption[] {\n        return Array.isArray(options) ? options.filter((option) => this.isValidOption(option)) : [];\n    }\n\n    private parseOptions(options: any, optionType: FieldOptionType): FormFieldOption[] {\n        return optionType === 'rest' ? [] : this.parseValidOptions(options);\n    }\n\n    private isValidOption(option: any): boolean {\n        return typeof option === 'object' && !Array.isArray(option) && option?.id && option?.name;\n    }\n\n    private isDateField(json: any) {\n        return json.params?.field?.type === FormFieldTypes.DATE || json.type === FormFieldTypes.DATE;\n    }\n\n    private isDateTimeField(json: any): boolean {\n        return json.params?.field?.type === FormFieldTypes.DATETIME || json.type === FormFieldTypes.DATETIME;\n    }\n\n    private isCheckboxField(json: any): boolean {\n        return json.params?.field?.type === FormFieldTypes.BOOLEAN || json.type === FormFieldTypes.BOOLEAN;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { WidgetVisibilityModel } from '../../../models/widget-visibility.model';\nimport { FormWidgetModel } from './form-widget.model';\n\nexport class TabModel extends FormWidgetModel {\n    title: string;\n    isVisible: boolean = true;\n    visibilityCondition: WidgetVisibilityModel;\n\n    fields: FormWidgetModel[] = [];\n\n    hasContent(): boolean {\n        return this.fields && this.fields.length > 0;\n    }\n\n    constructor(form: any, json?: any) {\n        super(form, json);\n\n        if (json) {\n            this.title = json.title;\n            this.visibilityCondition = new WidgetVisibilityModel(json.visibilityCondition);\n        }\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { FormWidgetModel } from './form-widget.model';\nimport { WidgetVisibilityModel } from '../../../models/widget-visibility.model';\n\nexport class FormOutcomeModel extends FormWidgetModel {\n    static readonly SAVE_ACTION: string = 'SAVE'; // Activiti 'Save' action name\n    static readonly COMPLETE_ACTION: string = 'COMPLETE'; // Activiti 'Complete' action name\n    static readonly START_PROCESS_ACTION: string = 'START PROCESS'; // Activiti 'Start Process' action name\n\n    isSystem: boolean = false;\n    isSelected: boolean = false;\n    isVisible: boolean = true;\n    skipValidation: boolean = false;\n    visibilityCondition: WidgetVisibilityModel;\n\n    constructor(form: any, json?: any) {\n        super(form, json);\n\n        if (json) {\n            this.isSystem = json.isSystem ? true : false;\n            this.skipValidation = json.skipValidation ?? false;\n            this.isSelected = form && json.name === form.selectedOutcome ? true : false;\n            this.visibilityCondition = new WidgetVisibilityModel(json.visibilityCondition);\n        }\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { FormFieldTypes } from './form-field-types';\nimport { isNumberValue } from './form-field-utils';\nimport { FormFieldModel } from './form-field.model';\n\nexport interface FormFieldValidator {\n    isSupported(field: FormFieldModel): boolean;\n    validate(field: FormFieldModel): boolean;\n}\n\nexport class RequiredFieldValidator implements FormFieldValidator {\n    private readonly supportedTypes = [\n        FormFieldTypes.TEXT,\n        FormFieldTypes.MULTILINE_TEXT,\n        FormFieldTypes.NUMBER,\n        FormFieldTypes.BOOLEAN,\n        FormFieldTypes.TYPEAHEAD,\n        FormFieldTypes.PEOPLE,\n        FormFieldTypes.FUNCTIONAL_GROUP,\n        FormFieldTypes.RADIO_BUTTONS,\n        FormFieldTypes.UPLOAD,\n        FormFieldTypes.AMOUNT,\n        FormFieldTypes.DYNAMIC_TABLE,\n        FormFieldTypes.ATTACH_FOLDER,\n        FormFieldTypes.DECIMAL,\n        FormFieldTypes.DISPLAY_EXTERNAL_PROPERTY,\n        FormFieldTypes.ALFRESCO_FILE_VIEWER,\n        FormFieldTypes.PROPERTIES_VIEWER\n    ];\n\n    isSupported(field: FormFieldModel): boolean {\n        return field && this.supportedTypes.indexOf(field.type) > -1 && field.required;\n    }\n\n    validate(field: FormFieldModel): boolean {\n        if (this.isSupported(field) && field.form && !field.form.isFieldOrParentHidden(field)) {\n            if (field.type === FormFieldTypes.RADIO_BUTTONS) {\n                const option = field.options.find((opt) => opt.id === field.value);\n                return !!option;\n            }\n\n            if (field.type === FormFieldTypes.UPLOAD) {\n                return !!field.value && field.value.length > 0;\n            }\n\n            if (field.type === FormFieldTypes.DYNAMIC_TABLE) {\n                return !!field.value && field.value instanceof Array && field.value.length > 0;\n            }\n\n            if (field.type === FormFieldTypes.BOOLEAN) {\n                return !!field.value;\n            }\n\n            if (field.value === null || field.value === undefined || field.value === '') {\n                return false;\n            }\n        }\n        return true;\n    }\n}\n\nexport class NumberFieldValidator implements FormFieldValidator {\n    private readonly supportedTypes = [FormFieldTypes.NUMBER, FormFieldTypes.AMOUNT];\n\n    static isNumber(value: any): boolean {\n        return isNumberValue(value);\n    }\n\n    isSupported(field: FormFieldModel): boolean {\n        return field && this.supportedTypes.indexOf(field.type) > -1;\n    }\n\n    validate(field: FormFieldModel): boolean {\n        if (this.isSupported(field) && field.form && !field.form.isFieldOrParentHidden(field)) {\n            if (field.value === null || field.value === undefined || field.value === '') {\n                return true;\n            }\n            const valueStr = '' + field.value;\n            let pattern = new RegExp(/^-?\\d+$/);\n            if (field.enableFractions) {\n                pattern = new RegExp(/^-?[0-9]+(\\.[0-9]{1,2})?$/);\n            }\n            if (valueStr.match(pattern)) {\n                return true;\n            }\n            field.validationSummary.message = 'FORM.FIELD.VALIDATOR.INVALID_NUMBER';\n            return false;\n        }\n        return true;\n    }\n}\n\nexport class MinLengthFieldValidator implements FormFieldValidator {\n    private readonly supportedTypes = [FormFieldTypes.TEXT, FormFieldTypes.MULTILINE_TEXT];\n\n    isSupported(field: FormFieldModel): boolean {\n        return field && this.supportedTypes.indexOf(field.type) > -1 && field.minLength > 0;\n    }\n\n    validate(field: FormFieldModel): boolean {\n        if (this.isSupported(field) && field.value && field.form && !field.form.isFieldOrParentHidden(field)) {\n            if (field.value.length >= field.minLength) {\n                return true;\n            }\n            field.validationSummary.message = `FORM.FIELD.VALIDATOR.AT_LEAST_LONG`;\n            field.validationSummary.attributes.set('minLength', field.minLength.toLocaleString());\n            return false;\n        }\n        return true;\n    }\n}\n\nexport class MaxLengthFieldValidator implements FormFieldValidator {\n    constructor(\n        private readonly supportedTypes: FormFieldTypes[] = [FormFieldTypes.TEXT, FormFieldTypes.MULTILINE_TEXT],\n        private readonly maxLength?: number\n    ) {}\n\n    isSupported(field: FormFieldModel): boolean {\n        return field && this.supportedTypes.indexOf(field.type) > -1 && this.getMaxLength(field) > 0;\n    }\n\n    validate(field: FormFieldModel): boolean {\n        if (this.isSupported(field) && field.value && field.form && !field.form.isFieldOrParentHidden(field)) {\n            if (field.value.toString().length <= this.getMaxLength(field)) {\n                return true;\n            }\n\n            field.validationSummary.message = `FORM.FIELD.VALIDATOR.NO_LONGER_THAN`;\n            field.validationSummary.attributes.set('maxLength', this.getMaxLength(field).toLocaleString());\n\n            return false;\n        }\n\n        return true;\n    }\n\n    getMaxLength(field: FormFieldModel): number | undefined {\n        return this.maxLength ?? field.maxLength;\n    }\n}\n\nexport class MinValueFieldValidator implements FormFieldValidator {\n    private readonly supportedTypes = [FormFieldTypes.NUMBER, FormFieldTypes.DECIMAL, FormFieldTypes.AMOUNT];\n\n    isSupported(field: FormFieldModel): boolean {\n        return field && this.supportedTypes.indexOf(field.type) > -1 && NumberFieldValidator.isNumber(field.minValue);\n    }\n\n    validate(field: FormFieldModel): boolean {\n        if (this.isSupported(field) && field.value && field.form && !field.form.isFieldOrParentHidden(field)) {\n            const value: number = +field.value;\n            const minValue: number = +field.minValue;\n\n            if (value >= minValue) {\n                return true;\n            }\n            field.validationSummary.message = `FORM.FIELD.VALIDATOR.NOT_LESS_THAN`;\n            field.validationSummary.attributes.set('minValue', field.minValue.toLocaleString());\n            return false;\n        }\n\n        return true;\n    }\n}\n\nexport class MaxValueFieldValidator implements FormFieldValidator {\n    private readonly supportedTypes = [FormFieldTypes.NUMBER, FormFieldTypes.DECIMAL, FormFieldTypes.AMOUNT];\n\n    isSupported(field: FormFieldModel): boolean {\n        return field && this.supportedTypes.indexOf(field.type) > -1 && NumberFieldValidator.isNumber(field.maxValue);\n    }\n\n    validate(field: FormFieldModel): boolean {\n        if (this.isSupported(field) && field.value && field.form && !field.form.isFieldOrParentHidden(field)) {\n            const value: number = +field.value;\n            const maxValue: number = +field.maxValue;\n\n            if (value <= maxValue) {\n                return true;\n            }\n            field.validationSummary.message = `FORM.FIELD.VALIDATOR.NOT_GREATER_THAN`;\n            field.validationSummary.attributes.set('maxValue', field.maxValue.toLocaleString());\n            return false;\n        }\n\n        return true;\n    }\n}\n\nexport class RegExFieldValidator implements FormFieldValidator {\n    private readonly supportedTypes = [FormFieldTypes.TEXT, FormFieldTypes.MULTILINE_TEXT];\n\n    isSupported(field: FormFieldModel): boolean {\n        return field && this.supportedTypes.indexOf(field.type) > -1 && !!field.regexPattern;\n    }\n\n    validate(field: FormFieldModel): boolean {\n        if (this.isSupported(field) && field.value && field.form && !field.form.isFieldOrParentHidden(field)) {\n            if (field.value.length > 0 && field.value.match(new RegExp('^' + field.regexPattern + '$'))) {\n                return true;\n            }\n\n            if (field.enableCustomValidationMessage === true && !!field.customValidationMessage) {\n                field.validationSummary.message = field.customValidationMessage;\n            } else {\n                field.validationSummary.message = 'FORM.FIELD.VALIDATOR.INVALID_VALUE';\n            }\n            return false;\n        }\n        return true;\n    }\n}\n\nexport class FixedValueFieldValidator implements FormFieldValidator {\n    private readonly supportedTypes = [FormFieldTypes.TYPEAHEAD];\n\n    isSupported(field: FormFieldModel): boolean {\n        return field && this.supportedTypes.indexOf(field.type) > -1;\n    }\n\n    hasValidNameOrValidId(field: FormFieldModel): boolean {\n        return this.hasValidName(field) || this.hasValidId(field);\n    }\n\n    hasValidName(field: FormFieldModel) {\n        return field.options.find((item) => item.name && item.name.toLocaleLowerCase() === field.value.toLocaleLowerCase()) ? true : false;\n    }\n\n    hasValidId(field: FormFieldModel): boolean {\n        return field.options.find((item) => item.id === field.value) ? true : false;\n    }\n\n    hasStringValue(field: FormFieldModel) {\n        return field.value && typeof field.value === 'string';\n    }\n\n    hasOptions(field: FormFieldModel) {\n        return field.options && field.options.length > 0;\n    }\n\n    validate(field: FormFieldModel): boolean {\n        if (this.isSupported(field) && field.form && !field.form.isFieldOrParentHidden(field)) {\n            if (this.hasStringValue(field) && this.hasOptions(field) && !this.hasValidNameOrValidId(field)) {\n                field.validationSummary.message = 'FORM.FIELD.VALIDATOR.INVALID_VALUE';\n                return false;\n            }\n        }\n        return true;\n    }\n}\n\nexport class DecimalFieldValidator implements FormFieldValidator {\n    private readonly supportedTypes = [FormFieldTypes.DECIMAL];\n\n    isSupported(field: FormFieldModel): boolean {\n        return field && this.supportedTypes.indexOf(field.type) > -1 && !!field.value;\n    }\n\n    validate(field: FormFieldModel): boolean {\n        const shouldValidateField = this.isSupported(field) && field.form && !field.form.isFieldOrParentHidden(field);\n\n        if (!shouldValidateField) {\n            return true;\n        }\n\n        const precision = field.precision;\n        const fieldValue = field.value;\n\n        if (!isNumberValue(fieldValue)) {\n            field.validationSummary.message = 'FORM.FIELD.VALIDATOR.INVALID_DECIMAL_NUMBER';\n            return false;\n        }\n\n        const value = typeof fieldValue === 'string' ? fieldValue : fieldValue.toString();\n        const valueParts = value.split('.');\n        const decimalPart = valueParts[1];\n\n        if (decimalPart === undefined) {\n            return true;\n        }\n\n        if (decimalPart.length > precision) {\n            field.validationSummary.message = 'FORM.FIELD.VALIDATOR.INVALID_DECIMAL_PRECISION';\n            field.validationSummary.attributes.set('precision', precision.toString());\n\n            return false;\n        }\n\n        return true;\n    }\n}\n\nexport const FORM_FIELD_VALIDATORS = [\n    new RequiredFieldValidator(),\n    new NumberFieldValidator(),\n    new MinLengthFieldValidator(),\n    new MaxLengthFieldValidator(),\n    new MaxLengthFieldValidator([FormFieldTypes.NUMBER], 10),\n    new MinValueFieldValidator(),\n    new MaxValueFieldValidator(),\n    new RegExFieldValidator(),\n    new FixedValueFieldValidator(),\n    new DecimalFieldValidator()\n];\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FormFieldEvent } from '../../../events/form-field.event';\nimport { ValidateFormFieldEvent } from '../../../events/validate-form-field.event';\nimport { ValidateFormEvent } from '../../../events/validate-form.event';\nimport { ContainerModel } from './container.model';\nimport { ContainerColumnModel } from './container-column.model';\nimport { FormFieldTypes } from './form-field-types';\nimport { FormFieldModel } from './form-field.model';\nimport { FormValues } from './form-values';\nimport { TabModel } from './tab.model';\n\nimport { FormVariableModel } from './form-variable.model';\nimport { ProcessVariableModel } from './process-variable.model';\nimport { FormOutcomeModel } from './form-outcome.model';\nimport { FormFieldValidator, FORM_FIELD_VALIDATORS } from './form-field-validator';\nimport { FormFieldTemplates } from './form-field-templates';\nimport { UploadWidgetContentLinkModel } from './upload-widget-content-link.model';\nimport { FormValidationService } from '../../../services/form-validation-service.interface';\nimport { ProcessFormModel } from './process-form-model.interface';\nimport { WidgetTypeEnum, WidgetVisibilityModel } from '../../../models/widget-visibility.model';\nimport { ThemeModel } from './theme.model';\n\nexport interface ConfirmMessage {\n    show: boolean;\n    message: string;\n}\nexport interface FormRepresentationModel {\n    [key: string]: any;\n\n    id?: string | number;\n    name?: string;\n    taskId?: string;\n    taskName?: string;\n    processDefinitionId?: string;\n    customFieldTemplates?: {\n        [key: string]: string;\n    };\n    selectedOutcome?: string;\n    fields?: any[];\n    tabs?: any[];\n    outcomes?: any[];\n    formDefinition?: {\n        [key: string]: any;\n        fields?: any[];\n    };\n    displayMode: string;\n    theme?: ThemeModel;\n}\nexport class FormModel implements ProcessFormModel {\n    static readonly UNSET_TASK_NAME: string = 'Nameless task';\n    static readonly SAVE_OUTCOME: string = '$save';\n    static readonly COMPLETE_OUTCOME: string = '$complete';\n    static readonly START_PROCESS_OUTCOME: string = '$startProcess';\n\n    readonly id: string | number;\n    readonly name: string;\n    readonly taskId: string;\n    readonly confirmMessage: ConfirmMessage;\n    readonly taskName = FormModel.UNSET_TASK_NAME;\n    readonly processDefinitionId: string;\n    readonly enableFixedSpace: boolean;\n    readonly displayMode: any;\n\n    fieldsCache: FormFieldModel[] = [];\n\n    json: any;\n    nodeId: string;\n    values: FormValues = {};\n    tabs: TabModel[] = [];\n    fields: (ContainerModel | FormFieldModel)[] = [];\n    outcomes: FormOutcomeModel[] = [];\n    fieldValidators: FormFieldValidator[] = [];\n    customFieldTemplates: FormFieldTemplates = {};\n    theme?: ThemeModel;\n    selectedOutcomeId?: string;\n    selectedOutcome: string;\n\n    className: string;\n    readOnly = false;\n    isValid = true;\n    processVariables: ProcessVariableModel[] = [];\n    variables: FormVariableModel[] = [];\n    enableParentVisibilityCheck: boolean = false;\n\n    constructor(\n        json?: any,\n        formValues?: FormValues,\n        readOnly: boolean = false,\n        protected formService?: FormValidationService,\n        enableFixedSpace?: boolean,\n        injectedFieldValidators?: FormFieldValidator[]\n    ) {\n        this.readOnly = readOnly;\n        this.json = json;\n\n        if (json) {\n            this.id = json.id;\n            this.name = json.name;\n            this.taskId = json.taskId;\n            this.taskName = json.taskName || json.name || FormModel.UNSET_TASK_NAME;\n            this.processDefinitionId = json.processDefinitionId;\n            this.customFieldTemplates = json.customFieldTemplates || {};\n            this.selectedOutcome = json.selectedOutcome;\n            this.className = json.className || '';\n            this.variables = json.variables || json.formDefinition?.variables || [];\n            this.processVariables = json.processVariables || [];\n            this.enableFixedSpace = enableFixedSpace;\n            this.confirmMessage = json.confirmMessage || {};\n            this.displayMode = json.displayMode;\n            this.theme = json.theme || json.formDefinition?.theme;\n\n            this.tabs = (json.tabs || []).map((tabJson) => new TabModel(this, tabJson));\n\n            this.fields = this.parseRootFields(json);\n            this.fieldsCache = this.getFormFields();\n\n            if (formValues) {\n                this.loadData(formValues);\n            }\n\n            this.parseOutcomes();\n        }\n\n        this.loadInjectedFieldValidators(injectedFieldValidators);\n        this.validateForm();\n    }\n\n    onFormFieldChanged(field: FormFieldModel) {\n        this.validateField(field);\n\n        if (this.formService) {\n            this.formService.formFieldValueChanged.next(new FormFieldEvent(this, field));\n        }\n    }\n\n    onRepeatableSectionChanged() {\n        this.fieldsCache = this.getFormFields([], true);\n    }\n\n    /**\n     * Validates entire form and all form fields.\n     */\n    validateForm(): void {\n        const validateFormEvent: any = new ValidateFormEvent(this);\n\n        const errorsField: FormFieldModel[] = this.fieldsCache.filter((field) => {\n            if (!FormFieldTypes.isReactiveType(field.type)) {\n                return !field.validate();\n            } else {\n                return field.validationSummary.isActive();\n            }\n        });\n\n        this.isValid = errorsField.length <= 0;\n\n        if (this.formService) {\n            validateFormEvent.isValid = this.isValid;\n            validateFormEvent.errorsField = errorsField;\n            this.formService.validateForm.next(validateFormEvent);\n        }\n    }\n\n    /**\n     * Validates a specific form field, triggers form validation.\n     *\n     * @param field Form field to validate.\n     */\n    validateField(field: FormFieldModel): void {\n        if (!field) {\n            return;\n        }\n\n        const validateFieldEvent = new ValidateFormFieldEvent(this, field);\n\n        if (this.formService) {\n            this.formService.validateFormField.next(validateFieldEvent);\n        }\n\n        if (!validateFieldEvent.isValid) {\n            this.markAsInvalid();\n            return;\n        }\n\n        if (validateFieldEvent.defaultPrevented) {\n            return;\n        }\n\n        if (!FormFieldTypes.isReactiveType(field.type) && !field.validate()) {\n            this.markAsInvalid();\n        }\n\n        this.validateForm();\n    }\n\n    // Activiti supports 4 types of root fields: container|group|dynamic-table|section\n    private parseRootFields(json: any): (ContainerModel | FormFieldModel)[] {\n        let fields = [];\n\n        if (json.fields) {\n            fields = json.fields;\n        } else if (json.formDefinition?.fields) {\n            fields = json.formDefinition.fields;\n        }\n\n        const rootElements: (ContainerModel | FormFieldModel)[] = [];\n        let currentRootElement;\n        for (const field of fields) {\n            if (field?.type === FormFieldTypes.DYNAMIC_TABLE) {\n                currentRootElement = new FormFieldModel(this, field);\n            } else {\n                currentRootElement = new ContainerModel(new FormFieldModel(this, field));\n            }\n\n            if (field.tab) {\n                const tab = this.tabs.find((currentTab) => field.tab === currentTab.id);\n                if (tab) {\n                    tab.fields.push(currentRootElement);\n                }\n            }\n\n            rootElements.push(currentRootElement);\n        }\n\n        return rootElements;\n    }\n\n    // Loads external data and overrides field values\n    // Typically used when form definition and form data coming from different sources\n    private loadData(formValues: FormValues) {\n        for (const field of this.fieldsCache) {\n            const variableId = `variables.${field.name}`;\n\n            if (this.canOverrideFieldValueWithProcessValue(field, variableId, formValues)) {\n                field.json.value = formValues[variableId] || formValues[field.id];\n                field.value = field.parseValue(field.json);\n            }\n        }\n    }\n\n    private canOverrideFieldValueWithProcessValue(field: FormFieldModel, variableId: string, formValues: FormValues): boolean {\n        return !FormFieldTypes.isConstantValueType(field.type) && (this.isDefined(formValues[variableId]) || this.isDefined(formValues[field.id]));\n    }\n\n    private isDefined(value: string): boolean {\n        return value !== undefined && value !== null;\n    }\n\n    /**\n     * Returns a form variable that matches the identifier.\n     *\n     * @param identifier The `name` or `id` value.\n     * @returns form variable model\n     */\n    getFormVariable(identifier: string): FormVariableModel {\n        if (identifier) {\n            return this.variables.find((variable) => variable.name === identifier || variable.id === identifier);\n        }\n        return undefined;\n    }\n\n    /**\n     * Returns a value of the form variable that matches the identifier.\n     * Provides additional conversion of types (date, boolean).\n     *\n     * @param identifier The `name` or `id` value\n     * @returns form variable value\n     */\n    getDefaultFormVariableValue(identifier: string): any {\n        const variable = this.getFormVariable(identifier);\n\n        if (variable && Object.prototype.hasOwnProperty.call(variable, 'value')) {\n            return this.parseValue(variable.type, variable.value);\n        }\n\n        return undefined;\n    }\n\n    /**\n     * Returns a process variable value.\n     * When mapping a process variable with a form variable the mapping\n     * is already resolved by the rest API with the name of variables.formVariableName\n     *\n     * @param name Variable name\n     * @returns process variable value\n     */\n    getProcessVariableValue(name: string): any {\n        let value;\n        if (this.processVariables?.length) {\n            const names = [`variables.${name}`, name];\n\n            const processVariable = this.processVariables.find((entry) => names.includes(entry.name));\n\n            if (processVariable) {\n                value = this.parseValue(processVariable.type, processVariable.value);\n            }\n        }\n\n        if (!value) {\n            value = this.getDefaultFormVariableValue(name);\n        }\n\n        return value;\n    }\n\n    protected parseValue(type: string, value: any): any {\n        if (type && value) {\n            switch (type) {\n                case 'date':\n                    return value.toString().includes('T') ? value : `${value}T00:00:00.000Z`;\n                case 'boolean':\n                    return typeof value === 'string' ? JSON.parse(value) : value;\n                default:\n                    return value;\n            }\n        }\n\n        return value;\n    }\n\n    hasTabs(): boolean {\n        return this.tabs && this.tabs.length > 0;\n    }\n\n    hasFields(): boolean {\n        return this.fields && this.fields.length > 0;\n    }\n\n    hasOutcomes(): boolean {\n        return this.outcomes && this.outcomes.length > 0;\n    }\n\n    getFieldById(fieldId: string): FormFieldModel {\n        return this.fieldsCache.find((field) => field.id === fieldId);\n    }\n\n    getFormFields(filterTypes?: string[], isDynamic: boolean = false): FormFieldModel[] {\n        if (this.fieldsCache?.length && !isDynamic) {\n            return this.filterFieldsByType(this.fieldsCache, filterTypes);\n        }\n\n        const formFieldModel: FormFieldModel[] = [];\n        this.processFields(this.fields, formFieldModel);\n        return this.filterFieldsByType(formFieldModel, filterTypes);\n    }\n\n    private processFields(fields: (ContainerModel | FormFieldModel)[], formFieldModel: FormFieldModel[]): void {\n        fields.forEach((field) => {\n            if (this.isRepeatableSectionField(field)) {\n                this.handleRepeatableSectionField(field, formFieldModel);\n            } else if (this.isContainerField(field)) {\n                this.handleContainerField(field, formFieldModel);\n            } else if (this.isSectionField(field)) {\n                this.handleSectionField(field, formFieldModel);\n            } else if (this.isFormField(field)) {\n                this.handleSingleField(field, formFieldModel);\n            }\n        });\n    }\n\n    private isContainerField(field: ContainerModel | FormFieldModel): field is ContainerModel {\n        return field instanceof ContainerModel;\n    }\n\n    private isFormField(field: ContainerModel | FormFieldModel): field is FormFieldModel {\n        return field instanceof FormFieldModel;\n    }\n\n    private isSectionField(field: ContainerModel | FormFieldModel): field is FormFieldModel {\n        return field.type === FormFieldTypes.SECTION;\n    }\n\n    private isRepeatableSectionField(field: ContainerModel | FormFieldModel): field is ContainerModel {\n        return field.type === FormFieldTypes.REPEATABLE_SECTION;\n    }\n\n    private handleSectionField(section: FormFieldModel, formFieldModel: FormFieldModel[]): void {\n        formFieldModel.push(section);\n        section.columns.forEach((column) => {\n            this.processFields(column.fields, formFieldModel);\n        });\n    }\n\n    private handleRepeatableSectionField(repeatableSection: ContainerModel, formFieldModel: FormFieldModel[]): void {\n        formFieldModel.push(repeatableSection.field);\n        for (const row of repeatableSection.field.rows) {\n            for (const column of row.columns) {\n                this.processFields(column.fields, formFieldModel);\n            }\n        }\n    }\n\n    private handleContainerField(container: ContainerModel, formFieldModel: FormFieldModel[]): void {\n        formFieldModel.push(container.field);\n        container.field.columns.forEach((column) => {\n            this.processFields(column.fields, formFieldModel);\n        });\n    }\n\n    private handleSingleField(field: FormFieldModel, formFieldModel: FormFieldModel[]): void {\n        formFieldModel.push(field);\n        if (field.fields) {\n            this.processFields(Object.values(field.fields), formFieldModel);\n        }\n    }\n\n    private filterFieldsByType(fields: FormFieldModel[], types?: string[]): FormFieldModel[] {\n        if (!types?.length) {\n            return fields;\n        }\n\n        return fields.filter((field) => types.includes(field?.type));\n    }\n\n    markAsInvalid(): void {\n        this.isValid = false;\n    }\n\n    protected parseOutcomes() {\n        if (!this.json.fields) return;\n\n        const saveOutcome = new FormOutcomeModel(this, {\n            id: FormModel.SAVE_OUTCOME,\n            name: FormOutcomeModel.SAVE_ACTION,\n            isSystem: true\n        });\n\n        const completeOutcome = new FormOutcomeModel(this, {\n            id: FormModel.COMPLETE_OUTCOME,\n            name: FormOutcomeModel.COMPLETE_ACTION,\n            isSystem: true\n        });\n\n        const startProcessOutcome = new FormOutcomeModel(this, {\n            id: FormModel.START_PROCESS_OUTCOME,\n            name: FormOutcomeModel.START_PROCESS_ACTION,\n            isSystem: true\n        });\n\n        const customOutcomes = (this.json.outcomes ?? ([] as FormModel[])).map((formModel: FormModel) => new FormOutcomeModel(this, formModel));\n        this.outcomes = [saveOutcome].concat(customOutcomes.length > 0 ? customOutcomes : [completeOutcome, startProcessOutcome]);\n    }\n\n    addValuesNotPresent(valuesToSetIfNotPresent: FormValues) {\n        this.fieldsCache.forEach((field) => {\n            if (valuesToSetIfNotPresent[field.id] && (!this.values[field.id] || this.isValidDropDown(field.id))) {\n                this.values[field.id] = valuesToSetIfNotPresent[field.id];\n                field.json.value = this.values[field.id];\n                field.value = field.parseValue(field.json);\n            }\n        });\n    }\n\n    private isValidDropDown(key: string): boolean {\n        const field = this.getFieldById(key);\n        if (field.type === FormFieldTypes.DROPDOWN) {\n            if (field.hasMultipleValues) {\n                return Array.isArray(this.values[key]);\n            }\n            return typeof this.values[key] === 'string' ? this.values[key] === 'empty' : Object.keys(this.values[key]).length === 0;\n        }\n        return false;\n    }\n\n    setNodeIdValueForViewersLinkedToUploadWidget(linkedUploadWidgetContentSelected: UploadWidgetContentLinkModel) {\n        const linkedWidgetType = linkedUploadWidgetContentSelected?.options?.linkedWidgetType ?? 'uploadWidget';\n\n        const subscribedViewers = this.fieldsCache.filter(\n            (field) => linkedUploadWidgetContentSelected.uploadWidgetId === field.params[linkedWidgetType]\n        );\n\n        subscribedViewers.forEach((viewer) => {\n            this.values[viewer.id] = linkedUploadWidgetContentSelected.id;\n            viewer.json.value = this.values[viewer.id];\n            viewer.value = viewer.parseValue(viewer.json);\n        });\n    }\n\n    changeFieldVisibility(fieldId: string, visibility: boolean): void {\n        const visibilityRule: WidgetVisibilityModel = new WidgetVisibilityModel();\n\n        const field = this.getFieldById(fieldId);\n        if (field) {\n            visibilityRule.operator = visibility ? 'empty' : '!empty';\n            visibilityRule.leftType = WidgetTypeEnum.field;\n            field.visibilityCondition = visibilityRule;\n            field.isVisible = visibility;\n        }\n    }\n\n    changeFieldDisabled(fieldId: string, disabled: boolean): void {\n        const field = this.getFieldById(fieldId);\n        if (field) {\n            field.readOnly = this.readOnly || disabled;\n        }\n    }\n\n    changeFieldRequired(fieldId: string, required: boolean): void {\n        const field = this.getFieldById(fieldId);\n        if (field) {\n            field.required = required;\n        }\n    }\n\n    changeFieldValue(fieldId: string, value: any): void {\n        const field = this.getFieldById(fieldId);\n        if (field) {\n            field.value = value;\n        }\n    }\n\n    changeVariableValue(variableId: string, value: any): void {\n        const variable = this.getFormVariable(variableId);\n        if (variable) {\n            variable.value = value;\n        }\n    }\n\n    private loadInjectedFieldValidators(injectedFieldValidators: FormFieldValidator[]): void {\n        this.fieldValidators = injectedFieldValidators ? [...FORM_FIELD_VALIDATORS, ...injectedFieldValidators] : [...FORM_FIELD_VALIDATORS];\n    }\n\n    /**\n     * Checks if a field or any of its parent containers/groups/sections is hidden.\n     * Returns true if the field should skip validation (field or parent is hidden).\n     *\n     * Parent visibility is only checked if:\n     * - `enableParentVisibilityCheck` is true\n     * - `field.checkParentVisibilityForValidation` is true (field opt-in enabled)\n     *\n     * @param field The form field to check\n     * @returns true if field or parent is hidden, false otherwise\n     */\n    isFieldOrParentHidden(field: FormFieldModel): boolean {\n        if (!field) {\n            return false;\n        }\n\n        if (!field.isVisible) {\n            return true;\n        }\n\n        if (this.enableParentVisibilityCheck && field.checkParentVisibilityForValidation) {\n            return this.hasHiddenParent(field);\n        }\n\n        return false;\n    }\n\n    /**\n     * Checks if the given field has a hidden parent container/group/section.\n     *\n     * @param targetField The form field to check\n     * @returns true if field has a hidden parent, false otherwise\n     */\n    private hasHiddenParent(targetField: FormFieldModel): boolean {\n        if (!targetField || !this.fields || this.fields.length === 0) {\n            return false;\n        }\n\n        for (const rootElement of this.fields) {\n            const parent = this.findParentInElement(rootElement, targetField);\n            if (parent && !parent.isVisible) {\n                return true;\n            }\n        }\n\n        return false;\n    }\n\n    /**\n     * Recursively searches for a field within an element (container/group/section).\n     * Returns the parent element if field is found within it, null otherwise.\n     *\n     * @param element The container/group/section to search in\n     * @param targetField The form field to find\n     * @returns Parent element if field found, null otherwise\n     */\n    private findParentInElement(element: ContainerModel | FormFieldModel, targetField: FormFieldModel): ContainerModel | FormFieldModel | null {\n        if (!element || !targetField) {\n            return null;\n        }\n\n        const columns = this.getColumnsFromElement(element);\n        if (!columns || columns.length === 0) {\n            return null;\n        }\n\n        return this.searchFieldsInColumns(columns, element, targetField);\n    }\n\n    private getColumnsFromElement(element: ContainerModel | FormFieldModel): ContainerColumnModel[] | null {\n        if (element instanceof ContainerModel) {\n            return element.field?.columns || null;\n        } else if (element instanceof FormFieldModel && element.type === FormFieldTypes.SECTION) {\n            return element.columns || null;\n        }\n        return null;\n    }\n\n    private searchFieldsInColumns(\n        columns: ContainerColumnModel[],\n        parentElement: ContainerModel | FormFieldModel,\n        targetField: FormFieldModel\n    ): ContainerModel | FormFieldModel | null {\n        for (const column of columns) {\n            if (!column?.fields || column.fields.length === 0) {\n                continue;\n            }\n\n            const result = this.searchFieldsInColumn(column.fields, parentElement, targetField);\n            if (result) {\n                return result;\n            }\n        }\n\n        return null;\n    }\n\n    private searchFieldsInColumn(\n        fields: FormFieldModel[],\n        parentElement: ContainerModel | FormFieldModel,\n        targetField: FormFieldModel\n    ): ContainerModel | FormFieldModel | null {\n        for (const field of fields) {\n            if (!field) {\n                continue;\n            }\n\n            if (field.id === targetField.id) {\n                return parentElement;\n            }\n\n            if (field.type === FormFieldTypes.SECTION) {\n                const nestedParent = this.findParentInElement(field, targetField);\n                if (nestedParent) {\n                    return !parentElement.isVisible ? parentElement : nestedParent;\n                }\n            }\n        }\n\n        return null;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable, InjectionToken, inject } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { ContentLinkModel } from '../components/widgets/core/content-link.model';\nimport { FormOutcomeEvent } from '../components/widgets/core/form-outcome-event.model';\nimport { FormValues } from '../components/widgets/core/form-values';\nimport { FormModel } from '../components/widgets/core/form.model';\nimport { FormOutcomeModel } from '../components/widgets/core/form-outcome.model';\nimport { FormEvent } from '../events/form.event';\nimport { FormFieldEvent } from '../events/form-field.event';\nimport { FormErrorEvent } from '../events/form-error.event';\nimport { ValidateFormEvent } from '../events/validate-form.event';\nimport { ValidateFormFieldEvent } from '../events/validate-form-field.event';\nimport { FormValidationService } from './form-validation-service.interface';\nimport { FormRulesEvent } from '../events/form-rules.event';\nimport { FormSpinnerEvent } from '../events';\nimport { FormFieldModel, FormFieldValidator } from '../components/widgets';\n\nexport const FORM_SERVICE_FIELD_VALIDATORS_TOKEN = new InjectionToken<FormFieldValidator[]>('FORM_SERVICE_FIELD_VALIDATORS_TOKEN');\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class FormService implements FormValidationService {\n    private readonly fieldValidators: FormFieldValidator[];\n    formLoaded = new Subject<FormEvent>();\n    formDataRefreshed = new Subject<FormEvent>();\n    formFieldValueChanged = new Subject<FormFieldEvent>();\n    formEvents = new Subject<Event>();\n    taskCompleted = new Subject<FormEvent>();\n    taskCompletedError = new Subject<FormErrorEvent>();\n    taskSaved = new Subject<FormEvent>();\n    taskSavedError = new Subject<FormErrorEvent>();\n    formContentClicked = new Subject<ContentLinkModel>();\n    toggleFormSpinner = new Subject<FormSpinnerEvent>();\n\n    onFormVariableChanged = new Subject<{ field: FormFieldModel; data?: any }>();\n\n    validateForm = new Subject<ValidateFormEvent>();\n    validateFormField = new Subject<ValidateFormFieldEvent>();\n    validateDynamicTableRow = new Subject<FormFieldEvent>();\n\n    executeOutcome = new Subject<FormOutcomeEvent>();\n\n    updateFormValuesRequested = new Subject<FormValues>();\n\n    formRulesEvent = new Subject<FormRulesEvent>();\n\n    constructor() {\n        const injectedFieldValidators = inject(FORM_SERVICE_FIELD_VALIDATORS_TOKEN, { optional: true });\n\n        this.fieldValidators = injectedFieldValidators || [];\n    }\n\n    /**\n     * Parses JSON data to create a corresponding Form model.\n     *\n     * @param json JSON to create the form\n     * @param data Values for the form fields\n     * @param readOnly Should the form fields be read-only?\n     * @param fixedSpace use fixed space\n     * @returns Form model created from input data\n     */\n    parseForm(json: any, data?: FormValues, readOnly: boolean = false, fixedSpace?: boolean): FormModel {\n        if (json) {\n            const form = new FormModel(json, data, readOnly, this, fixedSpace, this.fieldValidators);\n            if (!json.fields) {\n                form.outcomes = [\n                    new FormOutcomeModel(form, {\n                        id: FormModel.SAVE_OUTCOME,\n                        name: FormOutcomeModel.SAVE_ACTION,\n                        isSystem: true\n                    })\n                ];\n            }\n            return form;\n        }\n        return null;\n    }\n\n    getPreviewState(): boolean {\n        return false;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n /* eslint-disable @angular-eslint/component-selector */\n\nimport { DisplayableCMProperties } from './displayable-cm-properties.model';\nimport { FormFieldFileSource } from './form-field-file-source';\n\nexport interface FormFieldMetadata {\n    [key: string]: any;\n    fileSource?: FormFieldFileSource;\n    link?: boolean;\n    field?: {\n        id: string;\n        name: string;\n        type: string;\n    };\n    responseVariable?: boolean;\n    menuOptions?: {\n        show?: boolean;\n        download?: boolean;\n        retrieveMetadata?: boolean;\n        remove?: boolean;\n    };\n    displayableCMProperties?: DisplayableCMProperties[];\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n /* eslint-disable @angular-eslint/component-selector */\n\n/* eslint-disable */\nimport { FormFieldMetadata } from './form-field-metadata';\n\nexport interface FormValues extends FormFieldMetadata {\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n /* eslint-disable @angular-eslint/component-selector */\n\nexport interface FormFieldOption {\n    id: string;\n    name: string;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n /* eslint-disable @angular-eslint/component-selector */\n\nexport interface FormFieldTemplates {\n     [key: string]: string;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface ProcessFormModel {\n    getProcessVariableValue(name: string): any;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { FormOutcomeModel } from './form-outcome.model';\n\nexport class FormOutcomeEvent {\n    private readonly _outcome: FormOutcomeModel;\n    private _defaultPrevented: boolean = false;\n\n    get outcome(): FormOutcomeModel {\n        return this._outcome;\n    }\n\n    get defaultPrevented() {\n        return this._defaultPrevented;\n    }\n\n    constructor(outcome: FormOutcomeModel) {\n        this._outcome = outcome;\n    }\n\n    preventDefault() {\n        this._defaultPrevented = true;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nexport const ADF_CUSTOM_MESSAGE = new InjectionToken<Observable<boolean> | boolean>('adf-custom-validation-message');\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nexport class ContentLinkModel {\n    contentAvailable: boolean;\n    created: Date;\n    createdBy: any;\n    id: number;\n    nodeId: string;\n    link: boolean;\n    mimeType: string;\n    name: string;\n    previewStatus: string;\n    relatedContent: boolean;\n    simpleType: string;\n    thumbnailUrl: string;\n    contentRawUrl: string;\n    contentBlob: Blob;\n    thumbnailStatus: string;\n    sourceId: string;\n\n    constructor(obj?: any) {\n        this.contentAvailable = obj?.contentAvailable;\n        this.created = obj?.created;\n        this.createdBy = obj?.createdBy || {};\n        this.id = obj?.id;\n        this.link = obj?.link;\n        this.mimeType = obj?.mimeType;\n        this.name = obj?.name;\n        this.previewStatus = obj?.previewStatus;\n        this.relatedContent = obj?.relatedContent;\n        this.simpleType = obj?.simpleType;\n        this.thumbnailStatus = obj?.thumbnailStatus;\n        this.nodeId = obj?.nodeId;\n    }\n\n    hasPreviewStatus(): boolean {\n        return this.previewStatus === 'supported';\n    }\n\n    isTypeImage(): boolean {\n        return this.simpleType === 'image';\n    }\n\n    isTypePdf(): boolean {\n        return this.simpleType === 'pdf';\n    }\n\n    isTypeDoc(): boolean {\n        return this.simpleType === 'word' || this.simpleType === 'content';\n    }\n\n    isThumbnailReady(): boolean {\n        return this.thumbnailStatus === 'created';\n    }\n\n    isThumbnailSupported(): boolean {\n        return this.isTypeImage() || ((this.isTypePdf() || this.isTypeDoc()) && this.isThumbnailReady());\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n /* eslint-disable @angular-eslint/component-selector */\n\nexport interface ExternalContent {\n    folder: boolean;\n    id: string;\n    simpleType: string;\n    title: string;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n /* eslint-disable @angular-eslint/component-selector */\n\nexport interface ExternalContentLink {\n    contentAvailable: boolean;\n    created: string;\n    createdBy: any;\n    id: number;\n    link: boolean;\n    mimeType: string;\n    name: string;\n    previewStatus: string;\n    relatedContent: boolean;\n    simpleType: string;\n    source: string;\n    sourceId: string;\n    thumbnailStatus: string;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface GroupModel {\n    externalId?: string;\n    groups?: any;\n    id?: string;\n    name?: string;\n    status?: string;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface FormVariableModel {\n    id: string;\n    name: string;\n    type: string;\n    value?: any;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface ProcessVariableModel {\n    serviceName?: string;\n    serviceFullName?: string;\n    serviceVersion?: string;\n    appName?: string;\n    appVersion?: string;\n    serviceType?: string;\n    id?: number;\n    type?: string;\n    name?: string;\n    createTime?: number;\n    lastUpdatedTime?: number;\n    executionId?: string;\n    value?: any;\n    markedAsDeleted?: boolean;\n    processInstanceId?: string;\n    taskId?: string;\n    taskVariable?: boolean;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ContentLinkModel } from './content-link.model';\nexport class UploadWidgetContentLinkModelOptions {\n    linkedWidgetType: string;\n}\nexport class UploadWidgetContentLinkModel extends ContentLinkModel {\n    uploadWidgetId: string;\n\n    constructor(obj?: any, uploadWidgetId?: string, public options?: UploadWidgetContentLinkModelOptions) {\n        super(obj);\n        this.uploadWidgetId = uploadWidgetId;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { FormFieldSelectedFolder } from './form-field-selected-folder';\n\nexport interface DestinationFolderPath {\n    id?: string;\n    name?: string;\n    type: string;\n    value: string;\n}\n\nexport interface FormFieldFileSource {\n    metadataAllowed: boolean;\n    name: string;\n    selectedFolder: FormFieldSelectedFolder;\n    serviceId: string;\n    destinationFolderPath: DestinationFolderPath;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FormFieldOption } from './form-field-option';\n\nexport interface FormFieldRule {\n    ruleOn: string;\n    entries: RuleEntry[];\n}\n\nexport interface RuleEntry {\n    key: string;\n    options: FormFieldOption[];\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface VariableConfig {\n    variableName: string;\n    optionsPath?: string;\n    optionsId?: string;\n    optionsLabel?: string;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FormThemeVariable } from './theme.model';\n\nexport type WidgetStylePropertySelector = 'number' | 'options' | 'colorOptions';\n\nexport interface WidgetSchemaModel<TFieldVariable extends string, TFormVariable = FormThemeVariable> {\n    themeProperties: WidgetSchemaThemeProperty<TFieldVariable, TFormVariable>[];\n}\n\nexport interface WidgetSchemaThemeProperty<TFieldVariable, TFormVariable = FormThemeVariable> {\n    name: string;\n    cssPropertyName: string;\n    fieldVariableName: TFieldVariable;\n    formVariableName: TFormVariable;\n    type: WidgetStylePropertySelector;\n    options?: {\n        name: string;\n        value: string;\n    }[];\n    unit?: string;\n    defaultValue: string;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport type FormThemeVariable =\n    | '--adf-form-label-font-size'\n    | '--adf-form-label-font-weight'\n    | '--adf-form-label-color'\n    | '--adf-header-font-size'\n    | '--adf-header-font-weight'\n    | '--adf-header-color';\n\nexport type ReadonlyTextThemeVariable = '--adf-readonly-text-font-size' | '--adf-readonly-text-font-weight' | '--adf-readonly-text-color';\nexport type HeaderThemeVariable = '--adf-header-font-size' | '--adf-header-font-weight' | '--adf-header-color';\nexport type RadioButtonsThemeVariable = '--adf-radio-buttons-font-size' | '--adf-radio-buttons-font-weight' | '--adf-radio-buttons-color';\n\nexport type SupportedWidgetType = 'radio-buttons' | 'group' | 'readonly-text';\n\nexport interface ThemeModel {\n    form?: {\n        [variable in FormThemeVariable]?: string;\n    };\n    widgets?: {\n        ['readonly-text']?: {\n            [styleKey: string]: {\n                name: string;\n                styles: { [variable in ReadonlyTextThemeVariable]?: string };\n            };\n        };\n        ['group']?: {\n            [styleKey: string]: {\n                name: string;\n                styles: { [variable in HeaderThemeVariable]?: string };\n            };\n        };\n        ['radio-buttons']?: {\n            [styleKey: string]: {\n                name: string;\n                styles: { [variable in RadioButtonsThemeVariable]?: string };\n            };\n        };\n    };\n    defaults?: {\n        [widgetType in SupportedWidgetType]?: string;\n    };\n}\n\nexport interface WidgetSchemaPredefinedStyle<TFieldVariable extends string> {\n    [styleKey: string]: {\n        name: string;\n        styles: { [key in TFieldVariable]?: string };\n    };\n}\n\nexport interface PredefinedThemeModel {\n    widgets?: {\n        ['readonly-text']?: WidgetSchemaPredefinedStyle<ReadonlyTextThemeVariable>;\n        ['group']?: WidgetSchemaPredefinedStyle<HeaderThemeVariable>;\n        ['radio-buttons']?: WidgetSchemaPredefinedStyle<RadioButtonsThemeVariable>;\n    };\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { PredefinedThemeModel } from './theme.model';\n\nexport const predefinedTheme: PredefinedThemeModel = {\n    widgets: {\n        'readonly-text': {\n            normal: {\n                name: 'FORM.FIELD_STYLE.PREDEFINED.READONLY_TEXT.NORMAL',\n                styles: {\n                    '--adf-readonly-text-font-size': '16px',\n                    '--adf-readonly-text-font-weight': 'normal',\n                    '--adf-readonly-text-color': 'inherit'\n                }\n            },\n            strong: {\n                name: 'FORM.FIELD_STYLE.PREDEFINED.READONLY_TEXT.STRONG',\n                styles: {\n                    '--adf-readonly-text-font-size': '16px',\n                    '--adf-readonly-text-font-weight': 'bold',\n                    '--adf-readonly-text-color': 'inherit'\n                }\n            },\n            heading: {\n                name: 'FORM.FIELD_STYLE.PREDEFINED.READONLY_TEXT.HEADING',\n                styles: {\n                    '--adf-readonly-text-font-size': '20px',\n                    '--adf-readonly-text-font-weight': 'normal',\n                    '--adf-readonly-text-color': 'inherit'\n                }\n            },\n            title: {\n                name: 'FORM.FIELD_STYLE.PREDEFINED.READONLY_TEXT.TITLE',\n                styles: {\n                    '--adf-readonly-text-font-size': '24px',\n                    '--adf-readonly-text-font-weight': 'normal',\n                    '--adf-readonly-text-color': 'inherit'\n                }\n            },\n            annotation: {\n                name: 'FORM.FIELD_STYLE.PREDEFINED.READONLY_TEXT.ANNOTATION',\n                styles: {\n                    '--adf-readonly-text-font-size': '12px',\n                    '--adf-readonly-text-font-weight': 'normal',\n                    '--adf-readonly-text-color': 'inherit'\n                }\n            }\n        },\n        group: {\n            normal: {\n                name: 'FORM.FIELD_STYLE.PREDEFINED.HEADER.NORMAL',\n                styles: {\n                    '--adf-header-font-size': '16px',\n                    '--adf-header-font-weight': 'normal',\n                    '--adf-header-color': 'inherit'\n                }\n            },\n            heading: {\n                name: 'FORM.FIELD_STYLE.PREDEFINED.HEADER.HEADING',\n                styles: {\n                    '--adf-header-font-size': '20px',\n                    '--adf-header-font-weight': 'normal',\n                    '--adf-header-color': 'inherit'\n                }\n            },\n            title: {\n                name: 'FORM.FIELD_STYLE.PREDEFINED.HEADER.TITLE',\n                styles: {\n                    '--adf-header-font-size': '24px',\n                    '--adf-header-font-weight': 'normal',\n                    '--adf-header-color': 'inherit'\n                }\n            }\n        },\n        'radio-buttons': {\n            normal: {\n                name: 'FORM.FIELD_STYLE.PREDEFINED.RADIO_BUTTONS.NORMAL',\n                styles: {\n                    '--adf-radio-buttons-font-size': '16px',\n                    '--adf-radio-buttons-font-weight': 'normal',\n                    '--adf-radio-buttons-color': 'inherit'\n                }\n            },\n            strong: {\n                name: 'FORM.FIELD_STYLE.PREDEFINED.RADIO_BUTTONS.STRONG',\n                styles: {\n                    '--adf-radio-buttons-font-size': '16px',\n                    '--adf-radio-buttons-font-weight': 'bold',\n                    '--adf-radio-buttons-color': 'inherit'\n                }\n            },\n            heading: {\n                name: 'FORM.FIELD_STYLE.PREDEFINED.RADIO_BUTTONS.HEADING',\n                styles: {\n                    '--adf-radio-buttons-font-size': '20px',\n                    '--adf-radio-buttons-font-weight': 'normal',\n                    '--adf-radio-buttons-color': 'inherit'\n                }\n            }\n        }\n    }\n};\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nexport interface DisplayableCMProperties {\n    name?: string;\n    prefixedName?: string;\n    title?: string;\n    dataType?: string;\n    defaultValue?: string;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nexport * from './form-field-metadata';\nexport * from './form-values';\nexport * from './form-field-types';\nexport * from './form-field-option';\nexport * from './form-field-templates';\nexport * from './form-widget.model';\nexport * from './form-field.model';\nexport * from './form.model';\nexport * from './process-form-model.interface';\nexport * from './container.model';\nexport * from './container-column.model';\nexport * from './tab.model';\nexport * from './form-outcome.model';\nexport * from './form-outcome-event.model';\nexport * from './form-field-validator';\nexport * from './custom-validation-message.token';\nexport * from './content-link.model';\nexport * from './error-message.model';\nexport * from './external-content';\nexport * from './external-content-link';\nexport * from './group.model';\nexport * from './form-variable.model';\nexport * from './process-variable.model';\nexport * from './upload-widget-content-link.model';\nexport * from './form-field-file-source';\nexport * from './form-field-rule';\nexport * from './form-field-utils';\nexport * from './form-field-variable-options';\nexport * from './widget-schema.model';\nexport * from './theme.model';\nexport * from './predefined-theme';\nexport * from './displayable-cm-properties.model';\nexport * from './repeatable-section.model';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { AfterViewInit, Component, EventEmitter, Input, Output, ViewEncapsulation, inject } from '@angular/core';\nimport { FormFieldEvent, FormRulesEvent } from '../../events';\nimport { FormService } from '../../services/form.service';\nimport { FormFieldModel } from './core';\n\n/**\n * Base widget component.\n */\n@Component({\n    selector: 'base-widget',\n    template: '',\n    host: {\n        '(blur)': 'event($event)',\n        '(change)': 'event($event)',\n        '(focus)': 'event($event)',\n        '(focusin)': 'event($event)',\n        '(focusout)': 'event($event)',\n        '(input)': 'event($event)',\n        '(invalid)': 'event($event)',\n        '(select)': 'event($event)'\n    },\n    encapsulation: ViewEncapsulation.None\n})\nexport class WidgetComponent implements AfterViewInit {\n    /** Does the widget show a read-only value? (ie, can't be edited) */\n    @Input()\n    readOnly: boolean = false;\n\n    /** Data to be displayed in the field */\n    @Input()\n    field: FormFieldModel;\n\n    /**\n     * Emitted when a field value changes.\n     */\n    @Output()\n    fieldChanged = new EventEmitter<FormFieldModel>();\n\n    @Output()\n    widgetError = new EventEmitter<any>();\n\n    touched: boolean = false;\n\n    protected formService = inject(FormService);\n\n    hasField(): boolean {\n        return !!this.field;\n    }\n\n    // Note for developers:\n    // returns <any> object to be able binding it to the <element required=\"required\"> attribute\n    isRequired(): boolean {\n        if (this.field?.required) {\n            return true;\n        }\n        return false;\n    }\n\n    isValid(): boolean {\n        return !!this.field.validationSummary;\n    }\n\n    isTouched(): boolean {\n        return this.touched;\n    }\n\n    hasValue(): boolean {\n        return this.field?.value !== null && this.field?.value !== undefined;\n    }\n\n    isInvalidFieldRequired() {\n        return !this.field.isValid && (!this.field.validationSummary || !this.field.value) && this.isRequired();\n    }\n\n    ngAfterViewInit() {\n        this.fieldChanged.emit(this.field);\n    }\n\n    checkVisibility(field: FormFieldModel) {\n        this.fieldChanged.emit(field);\n    }\n\n    onFieldChanged(field: FormFieldModel) {\n        this.fieldChanged.emit(field);\n        this.formService.formRulesEvent.next(new FormRulesEvent('fieldValueChanged', new FormFieldEvent(this.field?.form, this.field), null));\n    }\n\n    event(event: Event): void {\n        this.formService.formEvents.next(event);\n        this.formService.formRulesEvent.next(new FormRulesEvent(event?.type, new FormFieldEvent(this.field?.form, this.field), event));\n    }\n\n    markAsTouched() {\n        this.touched = true;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { Component, ViewEncapsulation } from '@angular/core';\nimport { MatListModule } from '@angular/material/list';\nimport { WidgetComponent } from '../widget.component';\nimport { IconModule } from '../../../../icon/icon.module';\n\n@Component({\n    selector: 'unknown-widget',\n    template: `\n        <mat-list class=\"adf-unknown-widget\">\n            <mat-list-item>\n                <mat-icon class=\"mat-24\" adf-icon=\"error_outline\" />\n                <span class=\"adf-unknown-text\">Unknown type: {{ field.type }}</span>\n            </mat-list-item>\n        </mat-list>\n    `,\n    styleUrls: ['./unknown.widget.scss'],\n    host: {\n        '(click)': 'event($event)',\n        '(blur)': 'event($event)',\n        '(change)': 'event($event)',\n        '(focus)': 'event($event)',\n        '(focusin)': 'event($event)',\n        '(focusout)': 'event($event)',\n        '(input)': 'event($event)',\n        '(invalid)': 'event($event)',\n        '(select)': 'event($event)'\n    },\n    imports: [MatListModule, IconModule],\n    encapsulation: ViewEncapsulation.None\n})\nexport class UnknownWidgetComponent extends WidgetComponent {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { NgIf } from '@angular/common';\nimport { Component, Input, OnChanges, SimpleChanges, ViewEncapsulation } from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { ErrorMessageModel } from '../core';\nimport { WidgetComponent } from '../widget.component';\nimport { IconModule } from '../../../../icon/icon.module';\n\n@Component({\n    selector: 'error-widget',\n    templateUrl: './error.component.html',\n    styleUrls: ['./error.component.scss'],\n    animations: [\n        trigger('transitionMessages', [\n            state('enter', style({ opacity: 1, transform: 'translateY(0%)' })),\n            transition('void => enter', [\n                style({\n                    opacity: 0,\n                    transform: 'translateY(-100%)'\n                }),\n                animate('300ms cubic-bezier(0.55, 0, 0.55, 0.2)')\n            ])\n        ])\n    ],\n    host: {\n        '(click)': 'event($event)',\n        '(blur)': 'event($event)',\n        '(change)': 'event($event)',\n        '(focus)': 'event($event)',\n        '(focusin)': 'event($event)',\n        '(focusout)': 'event($event)',\n        '(input)': 'event($event)',\n        '(invalid)': 'event($event)',\n        '(select)': 'event($event)'\n    },\n    imports: [NgIf, IconModule, TranslatePipe],\n    encapsulation: ViewEncapsulation.None\n})\nexport class ErrorWidgetComponent extends WidgetComponent implements OnChanges {\n    @Input()\n    error: ErrorMessageModel;\n\n    @Input()\n    required: string;\n\n    translateParameters: any = null;\n    subscriptAnimationState: string = '';\n\n    ngOnChanges(changes: SimpleChanges) {\n        if (changes['required']) {\n            this.required = changes.required.currentValue;\n            this.subscriptAnimationState = 'enter';\n        }\n        if (changes['error']?.currentValue) {\n            if (changes.error.currentValue.isActive()) {\n                this.error = changes.error.currentValue;\n                this.translateParameters = this.error.getAttributesAsJsonObj();\n                this.subscriptAnimationState = 'enter';\n            }\n        }\n    }\n}\n","<div class=\"adf-error-container adf-error-widget-container\">\n    <div *ngIf=\"error?.isActive()\" [@transitionMessages]=\"subscriptAnimationState\" class=\"adf-error\">\n        <mat-icon class=\"adf-error-icon\" adf-icon=\"error_outline\" />\n        <div class=\"adf-error-text\">{{ error.message | translate:translateParameters }}</div>\n    </div>\n    <div *ngIf=\"required\" [@transitionMessages]=\"subscriptAnimationState\" class=\"adf-error\">\n        <mat-icon class=\"adf-error-icon\" adf-icon=\"error_outline\" />\n        <div class=\"adf-error-text\">{{ required }}</div>\n    </div>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { CurrencyPipe, NgIf } from '@angular/common';\nimport { Component, OnInit, ViewEncapsulation, InjectionToken, inject, DestroyRef } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { ErrorWidgetComponent } from '../error/error.component';\nimport { WidgetComponent } from '../widget.component';\nimport { filter, isObservable, Observable } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormFieldEvent } from '../../../events/form-field.event';\nimport { TranslationService } from '../../../../translation/translation.service';\n\nexport interface AmountWidgetSettings {\n    showReadonlyPlaceholder: boolean;\n    enableDisplayBasedOnLocale: boolean;\n}\n\nexport const ADF_AMOUNT_SETTINGS = new InjectionToken<Observable<AmountWidgetSettings> | AmountWidgetSettings>('adf-amount-settings');\n\n@Component({\n    selector: 'amount-widget',\n    templateUrl: './amount.widget.html',\n    styleUrls: ['./amount.widget.scss'],\n    host: {\n        '(click)': 'event($event)',\n        '(blur)': 'event($event)',\n        '(change)': 'event($event)',\n        '(focus)': 'event($event)',\n        '(focusin)': 'event($event)',\n        '(focusout)': 'event($event)',\n        '(input)': 'event($event)',\n        '(invalid)': 'event($event)',\n        '(select)': 'event($event)'\n    },\n    imports: [MatFormFieldModule, MatInputModule, FormsModule, ErrorWidgetComponent, TranslatePipe, NgIf],\n    providers: [CurrencyPipe],\n    encapsulation: ViewEncapsulation.None\n})\nexport class AmountWidgetComponent extends WidgetComponent implements OnInit {\n    private readonly currencyPipe = inject(CurrencyPipe);\n    private readonly translationService = inject(TranslationService);\n\n    static DEFAULT_CURRENCY: string = '$';\n    private showPlaceholder = true;\n    private readonly destroyRef = inject(DestroyRef);\n\n    amountWidgetValue: string;\n    currency: string = AmountWidgetComponent.DEFAULT_CURRENCY;\n    currencyDisplay: string | boolean = 'symbol';\n    decimalProperty: string;\n    enableDisplayBasedOnLocale: boolean;\n    isInputInFocus = false;\n    locale: string;\n    notShowDecimalDigits = '1.0-0';\n    showDecimalDigits = '1.2-2';\n    showReadonlyPlaceholder: boolean;\n    valueAsNumber: number;\n\n    get placeholder(): string {\n        if (!this.showPlaceholder) return '';\n        if (!this.enableDisplayBasedOnLocale) return this.field.placeholder;\n        if (this.checkIfEmptyStringOrOnlySpaces(this.field.placeholder)) return this.field.placeholder;\n\n        const stringConvertedToNumber = Number(this.field.placeholder);\n        if (isNaN(stringConvertedToNumber)) {\n            return this.field.placeholder;\n        }\n        return this.currencyPipe.transform(this.field.placeholder, this.currency, this.currencyDisplay, this.decimalProperty, this.locale);\n    }\n\n    constructor() {\n        const settings = inject<Observable<AmountWidgetSettings> | AmountWidgetSettings>(ADF_AMOUNT_SETTINGS, { optional: true });\n\n        super();\n        if (isObservable(settings)) {\n            settings.pipe(takeUntilDestroyed()).subscribe((data: AmountWidgetSettings) => {\n                this.updateSettingsBasedProperties(data);\n            });\n        } else {\n            this.updateSettingsBasedProperties(settings);\n        }\n    }\n\n    ngOnInit() {\n        if (this.field) {\n            if (this.field.currency) {\n                this.currency = this.field.currency;\n            } else {\n                if (this.enableDisplayBasedOnLocale) {\n                    this.currency = '';\n                    this.currencyDisplay = '';\n                }\n            }\n\n            if (this.field.readOnly) {\n                this.showPlaceholder = this.showReadonlyPlaceholder;\n            }\n            this.subscribeToFieldChanges();\n            this.setInitialValues();\n        }\n    }\n\n    amountWidgetOnBlur(): void {\n        this.isInputInFocus = false;\n        if (this.enableDisplayBasedOnLocale) {\n            if (this.amountWidgetValue) {\n                this.valueAsNumber = parseFloat(this.amountWidgetValue);\n                this.amountWidgetValue = this.currencyPipe.transform(\n                    this.amountWidgetValue,\n                    this.currency,\n                    this.currencyDisplay,\n                    this.decimalProperty,\n                    this.locale\n                );\n            } else {\n                this.valueAsNumber = null;\n                this.amountWidgetValue = null;\n            }\n        }\n        this.markAsTouched();\n    }\n\n    amountWidgetOnFocus(): void {\n        this.isInputInFocus = true;\n        if (this.enableDisplayBasedOnLocale) {\n            const hasValue = this.valueAsNumber === 0 || this.valueAsNumber;\n            this.amountWidgetValue = hasValue ? this.valueAsNumber.toString() : null;\n        }\n    }\n\n    checkIfEmptyStringOrOnlySpaces(placeholder: string): boolean {\n        const regexpOnlySpaces = /^\\s*$/;\n        return !placeholder || regexpOnlySpaces.test(placeholder);\n    }\n\n    onFieldChangedAmountWidget(): void {\n        this.field.value = this.amountWidgetValue;\n        super.onFieldChanged(this.field);\n    }\n\n    setInitialValues(): void {\n        if (this.enableDisplayBasedOnLocale) {\n            this.decimalProperty = this.field.enableFractions ? this.showDecimalDigits : this.notShowDecimalDigits;\n            this.locale = this.translationService.getLocale();\n            this.updateValue(this.field.value);\n        } else {\n            this.amountWidgetValue = this.field.value;\n        }\n    }\n\n    subscribeToFieldChanges(): void {\n        this.formService.formFieldValueChanged\n            .pipe(\n                filter((ev: FormFieldEvent) => ev.field.id === this.field.id),\n                takeUntilDestroyed(this.destroyRef)\n            )\n            .subscribe((ev: FormFieldEvent) => {\n                if (!this.isInputInFocus && this.enableDisplayBasedOnLocale) {\n                    this.updateValue(ev.field.value);\n                } else if (!this.isInputInFocus) {\n                    this.amountWidgetValue = ev.field.value;\n                }\n            });\n    }\n\n    updateValue(value: any): void {\n        this.valueAsNumber = value;\n        this.amountWidgetValue = this.currencyPipe.transform(value, this.currency, this.currencyDisplay, this.decimalProperty, this.locale);\n    }\n\n    updateSettingsBasedProperties(data: AmountWidgetSettings): void {\n        this.enableDisplayBasedOnLocale = data?.enableDisplayBasedOnLocale ?? false;\n        this.showReadonlyPlaceholder = data?.showReadonlyPlaceholder;\n    }\n}\n","<div\n    class=\"adf-amount-widget__container adf-amount-widget {{field.className}}\"\n    [class.adf-invalid]=\"!field.isValid && isTouched()\"\n    [class.adf-readonly]=\"field.readOnly\"\n    [class.adf-left-label-input-container]=\"field.leftLabels\"\n>\n    <div *ngIf=\"field.leftLabels\">\n        <label class=\"adf-label adf-left-label\" [attr.for]=\"field.id\"\n            >{{field.name | translate }}<span class=\"adf-asterisk\" [style.visibility]=\"isRequired() ? 'visible' : 'hidden'\">*</span></label\n        >\n    </div>\n    <div class=\"adf-amount-widget-container\">\n        <mat-form-field class=\"adf-amount-widget__input adf-form-field-input\" [floatLabel]=\"placeholder ? 'always' : null\">\n            @if ( (field.name || field?.required) && !field.leftLabels) { <mat-label class=\"adf-label\" [attr.for]=\"field.id\">{{field.name | translate }}</mat-label> }\n            @if(!enableDisplayBasedOnLocale) {\n                <span matTextPrefix class=\"adf-amount-widget__prefix-spacing\">{{ currency }}&nbsp;</span>\n            }\n            <input\n                matInput\n                [title]=\"field.tooltip\"\n                class=\"adf-input\"\n                type=\"text\"\n                [id]=\"field.id\"\n                [required]=\"field.required && field.isVisible\"\n                [placeholder]=\"placeholder\"\n                [value]=\"amountWidgetValue\"\n                [(ngModel)]=\"amountWidgetValue\"\n                (ngModelChange)=\"onFieldChangedAmountWidget()\"\n                [disabled]=\"field.readOnly\"\n                (focus)=\"amountWidgetOnFocus()\"\n                (blur)=\"amountWidgetOnBlur()\"\n                />\n        </mat-form-field>\n        <div class=\"adf-error-messages-container\">\n            <error-widget [error]=\"field.validationSummary\" />\n            <error-widget\n                *ngIf=\"isInvalidFieldRequired() && isTouched()\"\n                required=\"{{ 'FORM.FIELD.REQUIRED' | translate }}\"\n            />\n        </div>\n    </div>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector, @angular-eslint/no-input-rename */\n\nimport { NgClass, NgIf } from '@angular/common';\nimport { Component, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { ErrorWidgetComponent } from '../error/error.component';\nimport { WidgetComponent } from '../widget.component';\n\n@Component({\n    selector: 'checkbox-widget',\n    templateUrl: './checkbox.widget.html',\n    styleUrl: './checkbox.widget.scss',\n    styles: [\n        `\n            .adf-checkbox {\n                word-break: break-word;\n            }\n        `\n    ],\n    host: {\n        '(click)': 'event($event)',\n        '(blur)': 'event($event)',\n        '(change)': 'event($event)',\n        '(focus)': 'event($event)',\n        '(focusin)': 'event($event)',\n        '(focusout)': 'event($event)',\n        '(input)': 'event($event)',\n        '(invalid)': 'event($event)',\n        '(select)': 'event($event)'\n    },\n    imports: [NgClass, MatCheckboxModule, FormsModule, TranslatePipe, ErrorWidgetComponent, NgIf],\n    encapsulation: ViewEncapsulation.None\n})\nexport class CheckboxWidgetComponent extends WidgetComponent {}\n","<div [ngClass]=\"field.className\"\n     [class.adf-invalid]=\"!field.isValid && isTouched()\" class=\"adf-checkbox-widget-container\"\n>\n    <mat-checkbox [id]=\"field.id\"\n                  color=\"primary\"\n                  class=\"adf-checkbox\"\n                  [required]=\"isRequired()\"\n                  [disabled]=\"field.readOnly || readOnly\"\n                  [(ngModel)]=\"field.value\"\n                  (ngModelChange)=\"onFieldChanged(field)\"\n                  [title]=\"field.tooltip\"\n                  (click)=\"markAsTouched()\"\n                  >\n        {{ field.name | translate }}\n        <span class=\"adf-asterisk\" [style.visibility]=\"isRequired() ? 'visible' : 'hidden'\">*</span>\n    </mat-checkbox>\n    <div class=\"adf-error-messages-container\">\n        <error-widget [error]=\"field.validationSummary\" />\n        <error-widget\n            *ngIf=\"isInvalidFieldRequired() && isTouched()\"\n            required=\"{{ 'FORM.FIELD.REQUIRED' | translate }}\"\n        />\n    </div>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { NgIf } from '@angular/common';\nimport { Component, DestroyRef, inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { FormControl, ReactiveFormsModule, ValidationErrors, Validators } from '@angular/forms';\nimport { DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { ADF_DATE_FORMATS, AdfDateFnsAdapter, DateFnsUtils, DEFAULT_DATE_FORMAT } from '../../../../common';\nimport { FormService } from '../../../services/form.service';\nimport { ErrorWidgetComponent } from '../error/error.component';\nimport { WidgetComponent } from '../widget.component';\nimport { ErrorMessageModel } from '../core/error-message.model';\nimport { parseISO } from 'date-fns';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ReactiveFormWidget } from '../reactive-widget.interface';\n\n@Component({\n    selector: 'date-widget',\n    providers: [\n        { provide: MAT_DATE_FORMATS, useValue: ADF_DATE_FORMATS },\n        { provide: DateAdapter, useClass: AdfDateFnsAdapter }\n    ],\n    templateUrl: './date.widget.html',\n    styleUrl: './date.widget.scss',\n    host: {\n        '(click)': 'event($event)',\n        '(blur)': 'event($event)',\n        '(change)': 'event($event)',\n        '(focus)': 'event($event)',\n        '(focusin)': 'event($event)',\n        '(focusout)': 'event($event)',\n        '(input)': 'event($event)',\n        '(invalid)': 'event($event)',\n        '(select)': 'event($event)'\n    },\n    imports: [MatFormFieldModule, TranslatePipe, MatInputModule, MatDatepickerModule, ReactiveFormsModule, ErrorWidgetComponent, NgIf],\n    encapsulation: ViewEncapsulation.None\n})\nexport class DateWidgetComponent extends WidgetComponent implements OnInit, ReactiveFormWidget {\n    minDate: Date;\n    maxDate: Date;\n    startAt: Date;\n\n    dateInputControl: FormControl<Date> = new FormControl<Date>(null);\n\n    public readonly formService = inject(FormService);\n\n    private readonly dateAdapter = inject(DateAdapter);\n    private readonly destroyRef = inject(DestroyRef);\n\n    ngOnInit(): void {\n        this.setFormControlValue();\n        this.updateFormControlState();\n        this.initDateAdapter();\n        this.initDateRange();\n        this.initStartAt();\n        this.subscribeToDateChanges();\n        this.validateField();\n    }\n\n    updateReactiveFormControl(): void {\n        this.updateFormControlState();\n        this.validateField();\n    }\n\n    private setFormControlValue(): void {\n        this.dateInputControl.setValue(this.field.value, { emitEvent: false });\n    }\n\n    private updateFormControlState(): void {\n        this.dateInputControl.setValidators(this.isRequired() && this.field?.isVisible ? [Validators.required] : []);\n        this.field?.readOnly || this.readOnly\n            ? this.dateInputControl.disable({ emitEvent: false })\n            : this.dateInputControl.enable({ emitEvent: false });\n\n        this.dateInputControl.updateValueAndValidity({ emitEvent: false });\n    }\n\n    private subscribeToDateChanges(): void {\n        this.dateInputControl.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((newDate: Date) => {\n            this.field.value = newDate;\n            this.updateField();\n        });\n    }\n\n    private updateField(): void {\n        this.validateField();\n        this.onFieldChanged(this.field);\n    }\n\n    private validateField(): void {\n        if (this.dateInputControl.invalid) {\n            this.handleErrors(this.dateInputControl.errors);\n            this.field.markAsInvalid();\n        } else {\n            this.resetErrors();\n            this.field.markAsValid();\n        }\n    }\n\n    private handleErrors(errors: ValidationErrors): void {\n        const errorAttributes = new Map<string, string>();\n        switch (true) {\n            case !!errors.matDatepickerParse:\n                this.updateValidationSummary(this.field.dateDisplayFormat || this.field.defaultDateTimeFormat);\n                break;\n            case !!errors.required:\n                this.updateValidationSummary('FORM.FIELD.REQUIRED');\n                break;\n            case !!errors.matDatepickerMin: {\n                const minValue = DateFnsUtils.formatDate(errors.matDatepickerMin.min, this.field.dateDisplayFormat).toLocaleUpperCase();\n                errorAttributes.set('minValue', minValue);\n                this.updateValidationSummary('FORM.FIELD.VALIDATOR.NOT_LESS_THAN', errorAttributes);\n                break;\n            }\n            case !!errors.matDatepickerMax: {\n                const maxValue = DateFnsUtils.formatDate(errors.matDatepickerMax.max, this.field.dateDisplayFormat).toLocaleUpperCase();\n                errorAttributes.set('maxValue', maxValue);\n                this.updateValidationSummary('FORM.FIELD.VALIDATOR.NOT_GREATER_THAN', errorAttributes);\n                break;\n            }\n            default:\n                break;\n        }\n    }\n\n    private updateValidationSummary(message: string, attributes?: Map<string, string>): void {\n        this.field.validationSummary = new ErrorMessageModel({ message, attributes });\n    }\n\n    private resetErrors(): void {\n        this.updateValidationSummary('');\n    }\n\n    private initDateAdapter(): void {\n        if (this.field?.dateDisplayFormat) {\n            const adapter = this.dateAdapter as AdfDateFnsAdapter;\n            adapter.displayFormat = this.field.dateDisplayFormat;\n        }\n    }\n\n    private initDateRange(): void {\n        if (this.field?.minValue) {\n            this.minDate = parseISO(this.field.minValue);\n        }\n\n        if (this.field?.maxValue) {\n            this.maxDate = parseISO(this.field.maxValue);\n        }\n    }\n\n    private initStartAt(): void {\n        if (this.field?.value) {\n            this.startAt = this.dateAdapter.parse(this.field.value, DEFAULT_DATE_FORMAT);\n        }\n    }\n}\n","<div class=\"{{ field.className }} date-widget-container\" id=\"data-widget\" [class.adf-invalid]=\"dateInputControl.invalid && dateInputControl.touched\">\n    <mat-form-field class=\"adf-date-widget adf-form-field-input\" [floatLabel]=\"field.placeholder ? 'always' : null\">\n        <mat-label class=\"adf-label\"\n                   [id]=\"field.id + '-label'\"\n                   [attr.for]=\"field.id\">\n            {{ field.name | translate }} ({{ field.dateDisplayFormat }})\n        </mat-label>\n        <input matInput\n               [matDatepicker]=\"datePicker\"\n               [id]=\"field.id\"\n               [formControl]=\"dateInputControl\"\n               [placeholder]=\"field.placeholder\"\n               [min]=\"minDate\"\n               [max]=\"maxDate\"\n               [required]=\"field.required && field.isVisible\"\n               [readonly]=\"field.readOnly\"\n        />\n        <mat-datepicker-toggle matSuffix [for]=\"datePicker\" [disabled]=\"field.readOnly\" />\n        <mat-datepicker #datePicker\n                        [startAt]=\"startAt\"\n                        [disabled]=\"field.readOnly\" />\n    </mat-form-field>\n    <div class=\"adf-error-messages-container\">\n        <error-widget\n            *ngIf=\"dateInputControl.invalid && dateInputControl.touched\"\n            [error]=\"field.validationSummary\"\n        />\n    </div>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable } from '@angular/core';\nimport { FormModel } from '../components/widgets/core';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class FormExpressionService {\n    private readonly GLOBAL_EXPRESSION_REGEX = /\\$\\{[a-zA-Z0-9_.]+\\}/g;\n    private readonly FIELD_PREFIX = 'field.';\n    private readonly VARIABLE_PREFIX = 'variable.';\n    private readonly VARIABLES_REGEX = /(?:field|variable)\\.[a-zA-Z_$][a-zA-Z0-9_$]*/g;\n\n    resolveExpressions(form: FormModel, formField: string, escapeHtml?: boolean): string {\n        let result = formField || '';\n\n        const matches = result.match(this.GLOBAL_EXPRESSION_REGEX);\n\n        if (!matches) {\n            return result;\n        }\n\n        for (const match of matches) {\n            let expressionResult = this.resolveExpression(form, match);\n            if (expressionResult === null || expressionResult === undefined) {\n                expressionResult = '';\n            } else if (typeof expressionResult !== 'string') {\n                expressionResult = JSON.stringify(expressionResult);\n            }\n            if (escapeHtml) {\n                expressionResult = expressionResult\n                    .split('&')\n                    .join('&amp;')\n                    .split('<')\n                    .join('&lt;')\n                    .split('>')\n                    .join('&gt;')\n                    .split('\"')\n                    .join('&quot;')\n                    .split(\"'\")\n                    .join('&#039;');\n            }\n            result = result.replace(match, expressionResult);\n        }\n\n        return result;\n    }\n\n    private resolveExpression(form: FormModel, expression: any): any {\n        if (expression === undefined || expression === null) {\n            return expression;\n        }\n\n        const expressionString = String(expression).trim();\n        if (!expressionString.startsWith('${') || !expressionString.endsWith('}')) {\n            return expressionString;\n        }\n\n        const variableNames = expressionString.match(this.VARIABLES_REGEX);\n        if (!variableNames || variableNames.length === 0) {\n            return expressionString;\n        }\n\n        if (variableNames.length === 1 && variableNames[0].length === expressionString.length - 3) {\n            return this.resolveVariable(form, variableNames[0]);\n        }\n\n        return expressionString;\n    }\n\n    private resolveVariable(form: FormModel, variableName: string): any {\n        if (variableName.startsWith(this.FIELD_PREFIX)) {\n            const field = variableName.slice(this.FIELD_PREFIX.length);\n            return form.getFieldById(field)?.value;\n        } else if (variableName.startsWith(this.VARIABLE_PREFIX)) {\n            const variable = variableName.slice(this.VARIABLE_PREFIX.length);\n            return form.getProcessVariableValue(variable);\n        } else {\n            return '';\n        }\n    }\n\n    getFieldDependencies(expression: string): string[] {\n        const dependencies: string[] = [];\n        const matches = expression.match(this.GLOBAL_EXPRESSION_REGEX);\n\n        if (!matches) {\n            return dependencies;\n        }\n\n        for (const match of matches) {\n            const variableNames = match.match(this.VARIABLES_REGEX);\n            if (variableNames) {\n                for (const variableName of variableNames) {\n                    if (variableName.startsWith(this.FIELD_PREFIX)) {\n                        const fieldId = variableName.slice(this.FIELD_PREFIX.length);\n                        if (!dependencies.includes(fieldId)) {\n                            dependencies.push(fieldId);\n                        }\n                    }\n                }\n            }\n        }\n\n        return dependencies;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChangeDetectorRef, Component, inject, AfterViewInit, DestroyRef, InjectionToken } from '@angular/core';\nimport { debounceTime, filter, isObservable, Observable } from 'rxjs';\nimport { FormRulesEvent } from '../../../events';\nimport { FormExpressionService } from '../../../services/form-expression.service';\nimport { WidgetComponent } from '../widget.component';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nexport interface DisplayTextWidgetSettings {\n    enableExpressionEvaluation: boolean;\n    // a setting for a /juel API can be added here for full expression support\n}\n\nexport const ADF_DISPLAY_TEXT_SETTINGS = new InjectionToken<DisplayTextWidgetSettings>('adf-display-text-settings');\n\n@Component({\n    template: '',\n    standalone: true\n})\nexport abstract class BaseDisplayTextWidgetComponent extends WidgetComponent implements AfterViewInit {\n    private readonly formExpressionService = inject(FormExpressionService);\n    private readonly cdr = inject(ChangeDetectorRef);\n    private enableExpressionEvaluation: boolean = false;\n    protected originalFieldValue?: string;\n\n    private readonly settings = inject<Observable<DisplayTextWidgetSettings> | DisplayTextWidgetSettings>(ADF_DISPLAY_TEXT_SETTINGS, {\n        optional: true\n    });\n\n    constructor() {\n        super();\n        if (isObservable(this.settings)) {\n            this.settings.pipe(takeUntilDestroyed()).subscribe((data: DisplayTextWidgetSettings) => {\n                this.updateSettingsBasedProperties(data);\n            });\n        } else {\n            this.updateSettingsBasedProperties(this.settings);\n        }\n    }\n\n    override ngAfterViewInit() {\n        if (this.enableExpressionEvaluation) {\n            this.storeOriginalValue();\n            this.setupFieldDependencies();\n            this.applyExpressions();\n        }\n        super.ngAfterViewInit();\n    }\n\n    protected abstract storeOriginalValue(): void;\n    protected abstract evaluateExpressions(): void;\n    protected abstract reevaluateExpressions(): void;\n    private readonly destroyRef = inject(DestroyRef);\n\n    protected resolveExpressions(text: string, escapeHtml?: boolean): string {\n        return this.formExpressionService.resolveExpressions(this.field.form, text, escapeHtml);\n    }\n\n    private applyExpressions() {\n        if (!this.field) {\n            return;\n        }\n\n        this.evaluateExpressions();\n        this.cdr.detectChanges();\n    }\n\n    private setupFieldDependencies() {\n        if (!this.field?.form || !this.originalFieldValue) {\n            return;\n        }\n\n        const dependencies = this.formExpressionService.getFieldDependencies(this.originalFieldValue);\n        if (dependencies.length === 0) {\n            return;\n        }\n\n        this.formService.formRulesEvent\n            .pipe(\n                filter((event: FormRulesEvent) => event.type === 'fieldValueChanged' && event.field && dependencies.includes(event.field.id)),\n                debounceTime(300),\n                takeUntilDestroyed(this.destroyRef)\n            )\n            .subscribe(() => {\n                this.reapplyExpressions();\n            });\n    }\n\n    private reapplyExpressions() {\n        if (!this.field || !this.originalFieldValue) {\n            return;\n        }\n\n        this.reevaluateExpressions();\n        this.fieldChanged.emit(this.field);\n        this.cdr.detectChanges();\n    }\n\n    private updateSettingsBasedProperties(data: DisplayTextWidgetSettings): void {\n        this.enableExpressionEvaluation = data?.enableExpressionEvaluation ?? false;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { Component, ViewEncapsulation } from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { BaseDisplayTextWidgetComponent } from '../base-display-text/base-display-text.widget';\n\n@Component({\n    selector: 'display-text-widget',\n    templateUrl: './display-text.widget.html',\n    styleUrls: ['./display-text.widget.scss'],\n    host: {\n        '(click)': 'event($event)',\n        '(blur)': 'event($event)',\n        '(change)': 'event($event)',\n        '(focus)': 'event($event)',\n        '(focusin)': 'event($event)',\n        '(focusout)': 'event($event)',\n        '(input)': 'event($event)',\n        '(invalid)': 'event($event)',\n        '(select)': 'event($event)'\n    },\n    imports: [TranslatePipe],\n    encapsulation: ViewEncapsulation.None\n})\nexport class DisplayTextWidgetComponent extends BaseDisplayTextWidgetComponent {\n    protected storeOriginalValue(): void {\n        if (this.field) {\n            this.originalFieldValue = this.field.value;\n        }\n    }\n\n    protected evaluateExpressions(): void {\n        if (this.field) {\n            this.field.value = this.resolveExpressions(this.field.value);\n        }\n    }\n\n    protected reevaluateExpressions(): void {\n        if (this.field && this.originalFieldValue) {\n            this.field.value = this.resolveExpressions(this.originalFieldValue);\n        }\n    }\n}\n","<div [title]=\"field.tooltip\" [class]=\"'adf-display-text-widget '+ field.className\">{{ field.value | translate }}</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { Component, OnInit, ViewEncapsulation } from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { FormFieldModel } from '../core';\nimport { WidgetComponent } from '../widget.component';\n\n@Component({\n    selector: 'hyperlink-widget',\n    templateUrl: './hyperlink.widget.html',\n    styleUrls: ['./hyperlink.widget.scss'],\n    host: {\n        '(click)': 'event($event)',\n        '(blur)': 'event($event)',\n        '(change)': 'event($event)',\n        '(focus)': 'event($event)',\n        '(focusin)': 'event($event)',\n        '(focusout)': 'event($event)',\n        '(input)': 'event($event)',\n        '(invalid)': 'event($event)',\n        '(select)': 'event($event)'\n    },\n    imports: [TranslatePipe],\n    encapsulation: ViewEncapsulation.None\n})\nexport class HyperlinkWidgetComponent extends WidgetComponent implements OnInit {\n    static DEFAULT_HYPERLINK_URL: string = '#';\n    static DEFAULT_HYPERLINK_SCHEME: string = 'http://';\n\n    linkUrl: string = '#';\n    linkText: string = null;\n\n    ngOnInit() {\n        if (this.field) {\n            this.linkUrl = this.getHyperlinkUrl(this.field);\n            this.linkText = this.getHyperlinkText(this.field);\n        }\n    }\n\n    protected getHyperlinkUrl(field: FormFieldModel) {\n        let value = field.value || field.hyperlinkUrl;\n\n        if (value && !/^https?:\\/\\//i.test(value)) {\n            value = `${HyperlinkWidgetComponent.DEFAULT_HYPERLINK_SCHEME}${value}`;\n        }\n\n        return value || HyperlinkWidgetComponent.DEFAULT_HYPERLINK_URL;\n    }\n\n    protected getHyperlinkText(field: FormFieldModel) {\n        if (field) {\n            return field.displayText || field.hyperlinkUrl || field.value;\n        }\n        return null;\n    }\n}\n","<div class=\"adf-hyperlink-widget {{field.className}}\">\n    <label class=\"adf-label\" [attr.for]=\"field.id\">\n        {{ field.name | translate }}<span class=\"adf-asterisk\" [style.visibility]=\"isRequired() ? 'visible' : 'hidden'\">*</span>\n    </label>\n    <div [title]=\"field.tooltip\">\n        <a [href]=\"linkUrl\" target=\"_blank\" rel=\"nofollow\">{{ linkText }}</a>\n    </div>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { NgIf } from '@angular/common';\nimport { Component, DestroyRef, inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { isObservable } from 'rxjs';\nimport { ADF_CUSTOM_MESSAGE } from '../core/custom-validation-message.token';\nimport { ErrorWidgetComponent } from '../error/error.component';\nimport { WidgetComponent } from '../widget.component';\n\n@Component({\n    selector: 'multiline-text-widget',\n    templateUrl: './multiline-text.widget.html',\n    styleUrls: ['./multiline-text.widget.scss'],\n    host: {\n        '(click)': 'event($event)',\n        '(blur)': 'event($event)',\n        '(change)': 'event($event)',\n        '(focus)': 'event($event)',\n        '(focusin)': 'event($event)',\n        '(focusout)': 'event($event)',\n        '(input)': 'event($event)',\n        '(invalid)': 'event($event)',\n        '(select)': 'event($event)'\n    },\n    imports: [MatFormFieldModule, NgIf, TranslatePipe, MatInputModule, FormsModule, ErrorWidgetComponent],\n    encapsulation: ViewEncapsulation.None\n})\nexport class MultilineTextWidgetComponentComponent extends WidgetComponent implements OnInit {\n    private readonly destroyRef = inject(DestroyRef);\n    private readonly enableCustomMessage = inject(ADF_CUSTOM_MESSAGE, { optional: true });\n\n    ngOnInit(): void {\n        if (this.enableCustomMessage != null) {\n            if (isObservable(this.enableCustomMessage)) {\n                this.enableCustomMessage.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((enabled: boolean) => {\n                    if (this.field) {\n                        this.field.enableCustomValidationMessage = enabled ?? false;\n                    }\n                });\n            } else {\n                this.field.enableCustomValidationMessage = this.enableCustomMessage;\n            }\n        } else {\n            this.field.enableCustomValidationMessage = false;\n        }\n    }\n}\n","<div\n    class=\"adf-multiline-text-widget {{ field.className }}\"\n    [class.adf-invalid]=\"!field.isValid && isTouched()\"\n    [class.adf-readonly]=\"field.readOnly\"\n>\n    <mat-form-field\n        floatPlaceholder=\"never\"\n        class=\"adf-form-field-input\"\n        [floatLabel]=\"field.placeholder ? 'always' : null\"\n    >\n        @if(field.name || field.required) {\n        <mat-label class=\"adf-label\" [attr.for]=\"field.id\"> {{ field.name | translate }} </mat-label>\n        }\n        <textarea\n            matInput\n            class=\"adf-input\"\n            [cdkTextareaAutosize]=\"true\"\n            type=\"text\"\n            rows=\"3\"\n            [id]=\"field.id\"\n            [required]=\"field.required\"\n            [(ngModel)]=\"field.value\"\n            (ngModelChange)=\"onFieldChanged(field)\"\n            [disabled]=\"field.readOnly || readOnly\"\n            [placeholder]=\"field.placeholder\"\n            [title]=\"field.tooltip\"\n            (blur)=\"markAsTouched()\"\n        >\n        </textarea>\n    </mat-form-field>\n    <div *ngIf=\"field.maxLength > 0\" class=\"adf-multiline-word-counter\">\n        <span class=\"adf-multiline-word-counter-value\">{{ field?.value?.length || 0 }}/{{ field.maxLength }}</span>\n    </div>\n    <div class=\"adf-error-messages-container\">\n        <error-widget [error]=\"field.validationSummary\" />\n        <error-widget\n            *ngIf=\"isInvalidFieldRequired() && isTouched()\"\n            class=\"adf-multiline-required-message\"\n            required=\"{{ 'FORM.FIELD.REQUIRED' | translate }}\"\n        />\n    </div>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector, @angular-eslint/no-input-rename */\n\nimport { NgIf } from '@angular/common';\nimport { Component, inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { DecimalNumberPipe } from '../../../../pipes';\nimport { ErrorWidgetComponent } from '../error/error.component';\nimport { WidgetComponent } from '../widget.component';\n\n@Component({\n    selector: 'number-widget',\n    templateUrl: './number.widget.html',\n    styleUrls: ['./number.widget.scss'],\n    host: {\n        '(click)': 'event($event)',\n        '(blur)': 'event($event)',\n        '(change)': 'event($event)',\n        '(focus)': 'event($event)',\n        '(focusin)': 'event($event)',\n        '(focusout)': 'event($event)',\n        '(input)': 'event($event)',\n        '(invalid)': 'event($event)',\n        '(select)': 'event($event)'\n    },\n    imports: [NgIf, TranslatePipe, MatFormFieldModule, MatInputModule, FormsModule, ErrorWidgetComponent],\n    providers: [DecimalNumberPipe],\n    encapsulation: ViewEncapsulation.None\n})\nexport class NumberWidgetComponent extends WidgetComponent implements OnInit {\n    displayValue: number;\n\n    private readonly decimalNumberPipe = inject(DecimalNumberPipe);\n\n    ngOnInit() {\n        if (this.field.readOnly) {\n            this.displayValue = this.decimalNumberPipe.transform(this.field.value);\n        } else {\n            this.displayValue = this.field.value;\n        }\n    }\n\n    protected onNumberChange(value: string) {\n        if (value === null || value === undefined || value === '') {\n            this.field.value = null;\n        }\n\n        this.onFieldChanged(this.field);\n    }\n}\n","<div class=\"adf-textfield adf-number-widget {{ field.className }}\"\n     [class.adf-invalid]=\"!field.isValid && isTouched()\"\n     [class.adf-readonly]=\"field.readOnly\"\n     [class.adf-left-label-input-container]=\"field.leftLabels\">\n    <div *ngIf=\"field.leftLabels\">\n        <label class=\"adf-label adf-left-label\"\n               [attr.for]=\"field.id\">\n            {{ field.name | translate }}<span class=\"adf-asterisk\" [style.visibility]=\"isRequired() ? 'visible' : 'hidden'\">*</span>\n        </label>\n    </div>\n    <div class=\"adf-number-widget-container\">\n        <mat-form-field class=\"adf-form-field-input\" [floatLabel]=\"field.placeholder ? 'always' : null\">\n            @if( (field.name || this.field?.required) && !field.leftLabels) {\n            <mat-label class=\"adf-label\" [attr.for]=\"field.id\">\n                {{ field.name | translate }}\n            </mat-label>\n            }\n            <input matInput\n                   class=\"adf-input\"\n                   type=\"text\"\n                   pattern=\"-?[0-9]*(\\.[0-9]+)?\"\n                   [id]=\"field.id\"\n                   [required]=\"field.required\"\n                   [value]=\"displayValue\"\n                   [(ngModel)]=\"field.value\"\n                   (ngModelChange)=\"onNumberChange($event)\"\n                   [disabled]=\"field.readOnly\"\n                   [placeholder]=\"field.placeholder\"\n                   [title]=\"field.tooltip\"\n                   (blur)=\"markAsTouched()\">\n        </mat-form-field>\n        <div class=\"adf-error-messages-container\">\n            <error-widget [error]=\"field.validationSummary\" />\n            <error-widget\n                *ngIf=\"isInvalidFieldRequired() && isTouched()\"\n                required=\"{{ 'FORM.FIELD.REQUIRED' | translate }}\"\n            />\n        </div>\n    </div>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector, @typescript-eslint/no-use-before-define, @angular-eslint/no-input-rename */\n\nimport { Directive, ElementRef, forwardRef, HostListener, Input, OnChanges, Renderer2, SimpleChanges, inject } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport const CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR: any = {\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => InputMaskDirective),\n    multi: true\n};\n\n/**\n * Directive selectors without adf- prefix will be deprecated on 3.0.0\n */\n@Directive({\n    selector: '[adf-text-mask], [textMask]',\n    providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR]\n})\nexport class InputMaskDirective implements OnChanges, ControlValueAccessor {\n    private readonly el = inject(ElementRef);\n    private readonly render = inject(Renderer2);\n\n    /** Object defining mask and \"reversed\" status. */\n    @Input('textMask') inputMask: {\n        mask: string;\n        isReversed: boolean;\n    };\n\n    private readonly translationMask = {\n        '0': { pattern: /\\d/ },\n        '9': { pattern: /\\d/, optional: true },\n        '#': { pattern: /\\d/, recursive: true },\n        A: { pattern: /[a-zA-Z0-9]/ },\n        S: { pattern: /[a-zA-Z]/ }\n    };\n\n    private readonly byPassKeys = [9, 16, 17, 18, 36, 37, 38, 39, 40, 91];\n    private value;\n    private readonly invalidCharacters = [];\n\n    _onChange = (_: any) => {};\n\n    _onTouched = () => {};\n\n    @HostListener('input', ['$event'])\n    @HostListener('keyup', ['$event'])\n    onTextInput(event: KeyboardEvent) {\n        if (this.inputMask?.mask) {\n            this.maskValue(\n                this.el.nativeElement.value,\n                this.el.nativeElement.selectionStart,\n                this.inputMask.mask,\n                this.inputMask.isReversed,\n                event.keyCode\n            );\n        } else {\n            this._onChange(this.el.nativeElement.value);\n        }\n    }\n\n    @HostListener('blur')\n    onBlur() {\n        this._onTouched();\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        if (changes['inputMask']?.currentValue['mask']) {\n            this.inputMask = changes['inputMask'].currentValue;\n        }\n    }\n\n    writeValue(value: any) {\n        this.el.nativeElement.value = value;\n    }\n\n    registerOnChange(fn: any) {\n        this._onChange = fn;\n    }\n\n    registerOnTouched(fn: () => any): void {\n        this._onTouched = fn;\n    }\n\n    private maskValue(actualValue: string, startCaret: number, maskToApply: string, isMaskReversed: boolean, keyCode: number) {\n        if (this.byPassKeys.indexOf(keyCode) === -1) {\n            const value = this.getMasked(false, actualValue, maskToApply, isMaskReversed);\n            const calculatedCaret = this.calculateCaretPosition(startCaret, actualValue, keyCode);\n            this.render.setAttribute(this.el.nativeElement, 'value', value);\n            this.el.nativeElement.value = value;\n            this.setValue(value);\n            this._onChange(value);\n            this.setCaretPosition(calculatedCaret);\n        }\n    }\n\n    private setCaretPosition(caretPosition: number) {\n        this.el.nativeElement.moveStart = caretPosition;\n        this.el.nativeElement.moveEnd = caretPosition;\n    }\n\n    calculateCaretPosition(caretPosition: number, newValue: string, keyCode: number): number {\n        const newValueLength = newValue.length;\n        const oldValue = this.getValue() || '';\n        const oldValueLength = oldValue.length;\n\n        if (keyCode === 8 && oldValue !== newValue) {\n            caretPosition = caretPosition - (newValue.slice(0, caretPosition).length - oldValue.slice(0, caretPosition).length);\n        } else if (oldValue !== newValue) {\n            if (caretPosition >= oldValueLength) {\n                caretPosition = newValueLength;\n            } else {\n                caretPosition = caretPosition + (newValue.slice(0, caretPosition).length - oldValue.slice(0, caretPosition).length);\n            }\n        }\n        return caretPosition;\n    }\n\n    getMasked(skipMaskChars: boolean, val: string, mask: string, isReversed = false) {\n        const buf = [];\n        const value = val;\n        let maskIndex = 0;\n        const maskLen = mask.length;\n        let valueIndex = 0;\n        const valueLength = value.length;\n        let offset = 1;\n        let addMethod = 'push';\n        let resetPos = -1;\n        let lastMaskChar: number;\n        let lastUntranslatedMaskChar: string;\n        let check: boolean;\n\n        if (isReversed) {\n            addMethod = 'unshift';\n            offset = -1;\n            lastMaskChar = 0;\n            maskIndex = maskLen - 1;\n            valueIndex = valueLength - 1;\n        } else {\n            lastMaskChar = maskLen - 1;\n        }\n        check = this.isToCheck(isReversed, maskIndex, maskLen, valueIndex, valueLength);\n        while (check) {\n            const maskDigit = mask.charAt(maskIndex);\n            const valDigit = value.charAt(valueIndex);\n            const translation = this.translationMask[maskDigit];\n\n            if (translation) {\n                if (valDigit.match(translation.pattern)) {\n                    buf[addMethod](valDigit);\n                    if (translation.recursive) {\n                        if (resetPos === -1) {\n                            resetPos = maskIndex;\n                        } else if (maskIndex === lastMaskChar) {\n                            maskIndex = resetPos - offset;\n                        }\n                        if (lastMaskChar === resetPos) {\n                            maskIndex -= offset;\n                        }\n                    }\n                    maskIndex += offset;\n                } else if (valDigit === lastUntranslatedMaskChar) {\n                    lastUntranslatedMaskChar = undefined;\n                } else if (translation.optional) {\n                    maskIndex += offset;\n                    valueIndex -= offset;\n                } else {\n                    this.invalidCharacters.push({\n                        index: valueIndex,\n                        digit: valDigit,\n                        translated: translation.pattern\n                    });\n                }\n                valueIndex += offset;\n            } else {\n                if (!skipMaskChars) {\n                    buf[addMethod](maskDigit);\n                }\n                if (valDigit === maskDigit) {\n                    valueIndex += offset;\n                } else {\n                    lastUntranslatedMaskChar = maskDigit;\n                }\n                maskIndex += offset;\n            }\n            check = this.isToCheck(isReversed, maskIndex, maskLen, valueIndex, valueLength);\n        }\n\n        const lastMaskCharDigit = mask.charAt(lastMaskChar);\n        if (maskLen === valueLength + 1 && !this.translationMask[lastMaskCharDigit]) {\n            buf.push(lastMaskCharDigit);\n        }\n\n        return buf.join('');\n    }\n\n    private isToCheck(isReversed: boolean, maskIndex: number, maskLen: number, valueIndex: number, valueLength: number): boolean {\n        let check = false;\n        if (isReversed) {\n            check = maskIndex > -1 && valueIndex > -1;\n        } else {\n            check = maskIndex < maskLen && valueIndex < valueLength;\n        }\n        return check;\n    }\n\n    private setValue(value) {\n        this.value = value;\n    }\n\n    private getValue() {\n        return this.value;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { NgIf, NgTemplateOutlet } from '@angular/common';\nimport { Component, DestroyRef, Directive, inject, InjectionToken, Input, OnInit, TemplateRef, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { isObservable } from 'rxjs';\nimport { ADF_CUSTOM_MESSAGE } from '../core/custom-validation-message.token';\nimport { ErrorWidgetComponent } from '../error/error.component';\nimport { WidgetComponent } from '../widget.component';\nimport { InputMaskDirective } from './text-mask.component';\n\ntype FieldStatusTemplate = TemplateRef<{ $implicit: WidgetComponent }>;\nconst FIELD_STATUS_TEMPLATE = new InjectionToken<FieldStatusTemplate>('FIELD_STATUS_TEMPLATE');\n\n@Directive({\n    selector: '[adf-field-status-template]',\n    providers: [\n        {\n            provide: FIELD_STATUS_TEMPLATE,\n            useFactory: (directive: FieldStatusTemplateDirective) => directive.template,\n            deps: [FieldStatusTemplateDirective]\n        }\n    ]\n})\nexport class FieldStatusTemplateDirective {\n    @Input('adf-field-status-template')\n    template?: FieldStatusTemplate;\n}\n\n@Component({\n    selector: 'text-widget',\n    templateUrl: './text.widget.html',\n    styleUrls: ['./text.widget.scss'],\n    host: {\n        '(click)': 'event($event)',\n        '(blur)': 'event($event)',\n        '(change)': 'event($event)',\n        '(focus)': 'event($event)',\n        '(focusin)': 'event($event)',\n        '(focusout)': 'event($event)',\n        '(input)': 'event($event)',\n        '(invalid)': 'event($event)',\n        '(select)': 'event($event)'\n    },\n    imports: [NgIf, TranslatePipe, MatFormFieldModule, MatInputModule, FormsModule, ErrorWidgetComponent, InputMaskDirective, NgTemplateOutlet],\n    encapsulation: ViewEncapsulation.None\n})\nexport class TextWidgetComponent extends WidgetComponent implements OnInit {\n    mask: string;\n    placeholder: string;\n    isMaskReversed: boolean;\n    fieldStatusTemplate = inject(FIELD_STATUS_TEMPLATE, { optional: true });\n\n    private readonly destroyRef = inject(DestroyRef);\n    private readonly enableCustomMessage = inject(ADF_CUSTOM_MESSAGE, { optional: true });\n\n    ngOnInit() {\n        if (this.enableCustomMessage != null) {\n            if (isObservable(this.enableCustomMessage)) {\n                this.enableCustomMessage.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((enabled: boolean) => {\n                    if (this.field) {\n                        this.field.enableCustomValidationMessage = enabled ?? false;\n                    }\n                });\n            } else {\n                this.field.enableCustomValidationMessage = this.enableCustomMessage;\n            }\n        } else {\n            this.field.enableCustomValidationMessage = false;\n        }\n\n        if (this.field.params) {\n            this.mask = this.field.params['inputMask'];\n            this.placeholder =\n                this.field.params['inputMask'] && this.field.params['inputMaskPlaceholder']\n                    ? this.field.params['inputMaskPlaceholder']\n                    : this.field.placeholder;\n            this.isMaskReversed = this.field.params['inputMaskReversed'] ? this.field.params['inputMaskReversed'] : false;\n        }\n    }\n}\n","<div class=\"adf-textfield adf-text-widget {{ field.className }}\"\n     [class.adf-invalid]=\"!field.isValid && isTouched()\"\n     [class.adf-readonly]=\"field.readOnly\"\n     [class.adf-left-label-input-container]=\"field.leftLabels\">\n    <div *ngIf=\"field.leftLabels\">\n        <label class=\"adf-label adf-left-label\" [attr.for]=\"field.id\">\n            {{ field.name | translate }}<span class=\"adf-asterisk\" [style.visibility]=\"isRequired() ? 'visible' : 'hidden'\">*</span>\n        </label>\n    </div>\n    <div class=\"adf-text-widget-container\">\n        <mat-form-field class=\"adf-form-field-input\" [floatLabel]=\"placeholder ? 'always' : null\">\n            @if ( (field.name || this.field?.required) && !field.leftLabels) { <mat-label class=\"adf-label\" [attr.for]=\"field.id\">\n                {{ field.name | translate }}\n            </mat-label>\n        }\n            <input matInput\n                   class=\"adf-input\"\n                   type=\"text\"\n                   [id]=\"field.id\"\n                   [required]=\"field.required\"\n                   [value]=\"field.value\"\n                   [(ngModel)]=\"field.value\"\n                   (ngModelChange)=\"onFieldChanged(field)\"\n                   [disabled]=\"field.readOnly || readOnly\"\n                   [textMask]=\"{mask: mask, isReversed: isMaskReversed}\"\n                   [placeholder]=\"placeholder\"\n                   [title]=\"field.tooltip\"\n                   (blur)=\"markAsTouched()\">\n        </mat-form-field>\n        <ng-container *ngTemplateOutlet=\"fieldStatusTemplate ?? defaultErrorMessageTemplate; context: { $implicit: this }\" />\n        <ng-template #defaultErrorMessageTemplate>\n            <div class=\"adf-error-messages-container\">\n                <error-widget [error]=\"field.validationSummary\" />\n                <error-widget *ngIf=\"isInvalidFieldRequired() && isTouched()\"\n                              required=\"{{ 'FORM.FIELD.REQUIRED' | translate }}\" />\n            </div>\n        </ng-template>\n    </div>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { NgIf } from '@angular/common';\nimport { Component, DestroyRef, inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { FormControl, ReactiveFormsModule, ValidationErrors, Validators } from '@angular/forms';\nimport { DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { DatetimeAdapter, MAT_DATETIME_FORMATS, MatDatetimepickerModule } from '@mat-datetimepicker/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { ADF_DATE_FORMATS, ADF_DATETIME_FORMATS, AdfDateFnsAdapter, AdfDateTimeFnsAdapter, DateFnsUtils } from '../../../../common';\nimport { FormService } from '../../../services/form.service';\nimport { ErrorWidgetComponent } from '../error/error.component';\nimport { WidgetComponent } from '../widget.component';\nimport { ErrorMessageModel } from '../core/error-message.model';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ReactiveFormWidget } from '../reactive-widget.interface';\n\n@Component({\n    selector: 'date-time-widget',\n    providers: [\n        { provide: MAT_DATE_FORMATS, useValue: ADF_DATE_FORMATS },\n        { provide: MAT_DATETIME_FORMATS, useValue: ADF_DATETIME_FORMATS },\n        { provide: DateAdapter, useClass: AdfDateFnsAdapter },\n        { provide: DatetimeAdapter, useClass: AdfDateTimeFnsAdapter }\n    ],\n    templateUrl: './date-time.widget.html',\n    styleUrls: ['./date-time.widget.scss'],\n    host: {\n        '(click)': 'event($event)'\n    },\n    imports: [NgIf, TranslatePipe, MatFormFieldModule, MatInputModule, MatDatetimepickerModule, ReactiveFormsModule, ErrorWidgetComponent],\n    encapsulation: ViewEncapsulation.None\n})\nexport class DateTimeWidgetComponent extends WidgetComponent implements OnInit, ReactiveFormWidget {\n    minDate: Date;\n    maxDate: Date;\n    datetimeInputControl: FormControl<Date> = new FormControl<Date>(null);\n\n    public readonly formService = inject(FormService);\n    private readonly destroyRef = inject(DestroyRef);\n    private readonly dateAdapter = inject(DateAdapter);\n    private readonly dateTimeAdapter = inject(DatetimeAdapter);\n\n    ngOnInit(): void {\n        this.setFormControlValue();\n        this.updateFormControlState();\n        this.initDateAdapter();\n        this.initDateRange();\n        this.subscribeToDateChanges();\n        this.validateField();\n    }\n\n    updateReactiveFormControl(): void {\n        this.setFormControlValue();\n        this.updateFormControlState();\n        this.validateField();\n    }\n\n    private setFormControlValue(): void {\n        this.datetimeInputControl.setValue(this.field.value, { emitEvent: false });\n    }\n\n    private updateFormControlState(): void {\n        this.datetimeInputControl.setValidators(this.isRequired() && this.field?.isVisible ? [Validators.required] : []);\n        this.field?.readOnly || this.readOnly\n            ? this.datetimeInputControl.disable({ emitEvent: false })\n            : this.datetimeInputControl.enable({ emitEvent: false });\n\n        this.datetimeInputControl.updateValueAndValidity({ emitEvent: false });\n    }\n\n    private subscribeToDateChanges(): void {\n        this.datetimeInputControl.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((newDate: Date) => {\n            this.field.value = newDate;\n            this.updateField();\n        });\n    }\n\n    private updateField(): void {\n        this.validateField();\n        this.onFieldChanged(this.field);\n    }\n\n    private validateField(): void {\n        if (this.datetimeInputControl?.invalid) {\n            this.handleErrors(this.datetimeInputControl.errors);\n            this.field.markAsInvalid();\n        } else {\n            this.resetErrors();\n            this.field.markAsValid();\n        }\n    }\n\n    private handleErrors(errors: ValidationErrors): void {\n        const errorAttributes = new Map<string, string>();\n        switch (true) {\n            case !!errors.matDatepickerParse:\n                this.updateValidationSummary(this.field.dateDisplayFormat || this.field.defaultDateTimeFormat);\n                break;\n            case !!errors.required:\n                this.updateValidationSummary('FORM.FIELD.REQUIRED');\n                break;\n            case !!errors.matDatepickerMin: {\n                const minValue = DateFnsUtils.formatDate(errors.matDatepickerMin.min, this.field.dateDisplayFormat).toLocaleUpperCase();\n                errorAttributes.set('minValue', minValue);\n                this.updateValidationSummary('FORM.FIELD.VALIDATOR.NOT_LESS_THAN', errorAttributes);\n                break;\n            }\n            case !!errors.matDatepickerMax: {\n                const maxValue = DateFnsUtils.formatDate(errors.matDatepickerMax.max, this.field.dateDisplayFormat).toLocaleUpperCase();\n                errorAttributes.set('maxValue', maxValue);\n                this.updateValidationSummary('FORM.FIELD.VALIDATOR.NOT_GREATER_THAN', errorAttributes);\n                break;\n            }\n            default:\n                break;\n        }\n    }\n\n    private updateValidationSummary(message: string, attributes?: Map<string, string>): void {\n        this.field.validationSummary = new ErrorMessageModel({ message, attributes });\n    }\n\n    private resetErrors(): void {\n        this.updateValidationSummary('');\n    }\n\n    private initDateAdapter(): void {\n        if (this.field?.dateDisplayFormat) {\n            const dateAdapter = this.dateAdapter as AdfDateFnsAdapter;\n            dateAdapter.displayFormat = this.field.dateDisplayFormat;\n\n            const dateTimeAdapter = this.dateTimeAdapter as AdfDateTimeFnsAdapter;\n            dateTimeAdapter.displayFormat = this.field.dateDisplayFormat;\n        }\n    }\n\n    private initDateRange(): void {\n        if (this.field?.minValue) {\n            this.minDate = DateFnsUtils.getDate(this.field.minValue);\n        }\n\n        if (this.field?.maxValue) {\n            this.maxDate = DateFnsUtils.getDate(this.field.maxValue);\n        }\n    }\n}\n","<div class=\"{{ field.className }}\"\n     id=\"data-time-widget\"\n     [class.adf-invalid]=\"datetimeInputControl.invalid && datetimeInputControl.touched\"\n     [class.adf-left-label-input-container]=\"field.leftLabels\">\n    <div *ngIf=\"field.leftLabels\">\n        <label class=\"adf-label adf-left-label\" [attr.for]=\"field.id\">\n            {{ field.name | translate }} ({{ field.dateDisplayFormat }})<span class=\"adf-asterisk\" [style.visibility]=\"isRequired() ? 'visible' : 'hidden'\">*</span>\n        </label>\n    </div>\n    <div class=\"adf-date-time-widget-container\">\n        <mat-form-field class=\"adf-date-time-widget adf-form-field-input\"\n                        [class.adf-left-label-input-datepicker]=\"field.leftLabels\"\n                        [floatLabel]=\"field.placeholder ? 'always' : null\">\n            @if( (field.name || field?.required) && !field.leftLabels) {\n            <mat-label class=\"adf-label\" [attr.for]=\"field.id\">\n                {{ field.name | translate }} ({{ field.dateDisplayFormat }})\n            </mat-label>\n            }\n            <input matInput\n                   class=\"adf-input\"\n                   [matDatetimepicker]=\"datetimePicker\"\n                   [readonly]=\"field.readOnly\"\n                   [required]=\"field.required && field.isVisible\"\n                   [id]=\"field.id\"\n                   [formControl]=\"datetimeInputControl\"\n                   (keydown.enter)=\"datetimePicker.open()\"\n                   [placeholder]=\"field.placeholder\"\n                   [title]=\"field.tooltip\"\n                   [min]=\"minDate\"\n                   [max]=\"maxDate\">\n            <mat-datetimepicker-toggle matSuffix [for]=\"datetimePicker\"\n                                       [disabled]=\"field.readOnly\" />\n            <mat-datetimepicker #datetimePicker\n                data-automation-id=\"adf-date-time-widget-picker\"\n                type=\"datetime\"\n                [touchUi]=\"true\"\n                [timeInterval]=\"5\"\n                [disabled]=\"field.readOnly\" />\n        </mat-form-field>\n        <div class=\"adf-error-messages-container\">\n            <error-widget *ngIf=\"datetimeInputControl.invalid && datetimeInputControl.touched\" [error]=\"field.validationSummary\" />\n        </div>\n    </div>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, inject, ViewEncapsulation } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialog } from '@angular/material/dialog';\nimport { EditJsonDialogSettings, EditJsonDialogComponent } from '../../../../dialogs/edit-json/edit-json.dialog';\nimport { WidgetComponent } from '../widget.component';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n@Component({\n    templateUrl: './json.widget.html',\n    styleUrls: ['./json.widget.scss'],\n    host: {\n        '(click)': 'event($event)',\n        '(blur)': 'event($event)',\n        '(change)': 'event($event)',\n        '(focus)': 'event($event)',\n        '(focusin)': 'event($event)',\n        '(focusout)': 'event($event)',\n        '(input)': 'event($event)',\n        '(invalid)': 'event($event)',\n        '(select)': 'event($event)'\n    },\n    imports: [TranslatePipe, MatFormFieldModule, MatButtonModule],\n    encapsulation: ViewEncapsulation.None\n})\nexport class JsonWidgetComponent extends WidgetComponent {\n    private readonly dialog = inject(MatDialog);\n\n    view() {\n        const rawValue = this.field.value;\n        const value = typeof rawValue === 'object' ? JSON.stringify(rawValue || {}, null, 2) : rawValue;\n\n        const settings: EditJsonDialogSettings = {\n            title: this.field.name,\n            editable: false,\n            value\n        };\n\n        this.dialog.open(EditJsonDialogComponent, {\n            data: settings,\n            minWidth: '50%',\n            minHeight: '50%'\n        });\n    }\n}\n","<div class=\"adf-json-widget\">\n    <div class=\"adf-json-widget-label\">\n        <label class=\"adf-label\" [attr.for]=\"field.id\">\n            {{ field.name | translate }}\n        </label>\n    </div>\n    <button mat-flat-button (click)=\"view()\">json</button>\n</div>","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, OnInit, ViewEncapsulation } from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { ViewerComponent } from '../../../../viewer';\nimport { ErrorWidgetComponent } from '../error/error.component';\nimport { WidgetComponent } from '../widget.component';\n\n/* eslint-disable @angular-eslint/component-selector */\n\n@Component({\n    selector: 'base-viewer-widget',\n    templateUrl: './base-viewer.widget.html',\n    styleUrls: ['./base-viewer.widget.scss'],\n    host: {\n        '(click)': 'event($event)'\n    },\n    imports: [TranslatePipe, ViewerComponent, ErrorWidgetComponent],\n    encapsulation: ViewEncapsulation.None\n})\nexport class BaseViewerWidgetComponent extends WidgetComponent implements OnInit {\n    ngOnInit(): void {\n        if (this.field?.value) {\n            if (Array.isArray(this.field.value) && this.field.value.length > 0) {\n                const file = this.field.value[0];\n                this.field.value = file.id;\n            } else if (typeof this.field.value === 'object' && this.field.value.id) {\n                this.field.value = this.field.value.id;\n            }\n        }\n    }\n}\n","<div class=\"adf-base-viewer-widget {{ field.className }}\"\n     [class.adf-invalid]=\"!field.isValid\"\n     [class.adf-readonly]=\"field.readOnly\">\n    <label class=\"adf-label\" [attr.for]=\"field.id\">\n        {{ field.name | translate }}\n        <span class=\"adf-asterisk\" [style.visibility]=\"isRequired() ? 'visible' : 'hidden'\">*</span></label>\n    <adf-viewer [urlFile]=\"field.value.urlFile\"\n                [blobFile]=\"field.value.blobFile\"\n                [fileName]=\"field.value.fileName\"\n                [showViewer]=\"field.value?.blobFile || field.value?.urlFile\"\n                [allowGoBack]=\"false\" />\n    <div class=\"adf-error-messages-container\">\n        <error-widget [error]=\"field.validationSummary\" />\n    </div>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NgIf } from '@angular/common';\nimport { Component, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { ErrorWidgetComponent } from '../error/error.component';\nimport { WidgetComponent } from '../widget.component';\n\n@Component({\n    selector: 'adf-decimal',\n    templateUrl: './decimal.component.html',\n    styleUrls: ['./decimal.component.scss'],\n    host: {\n        '(click)': 'event($event)',\n        '(blur)': 'event($event)',\n        '(change)': 'event($event)',\n        '(focus)': 'event($event)',\n        '(focusin)': 'event($event)',\n        '(focusout)': 'event($event)',\n        '(input)': 'event($event)',\n        '(invalid)': 'event($event)',\n        '(select)': 'event($event)'\n    },\n    imports: [NgIf, TranslatePipe, MatFormFieldModule, MatInputModule, FormsModule, ErrorWidgetComponent],\n    encapsulation: ViewEncapsulation.None\n})\nexport class DecimalWidgetComponent extends WidgetComponent {}\n","<div class=\"adf-textfield adf-decimal-widget {{ field.className }}\"\n     [class.adf-invalid]=\"!field.isValid && isTouched()\"\n     [class.adf-readonly]=\"field.readOnly\"\n     [class.adf-left-label-input-container]=\"field.leftLabels\">\n    <div *ngIf=\"field.leftLabels\">\n        <label class=\"adf-label adf-left-label\" [attr.for]=\"field.id\">\n            {{ field.name | translate }}<span class=\"adf-asterisk\" [style.visibility]=\"isRequired() ? 'visible' : 'hidden'\">*</span>\n        </label>\n    </div>\n\n    <div class=\"adf-decimal-widget-container\">\n        <mat-form-field class=\"adf-form-field-input\" [floatLabel]=\"field.placeholder ? 'always' : null\">\n           @if ( (field.name || field?.required) && !field.leftLabels) { <mat-label class=\"adf-label\" [attr.for]=\"field.id\">{{ field.name | translate }}</mat-label> }\n            <input matInput\n                   class=\"adf-input\"\n                   type=\"text\"\n                   pattern=\"-?[0-9]*(\\.[0-9]*)?\"\n                   [id]=\"field.id\"\n                   [required]=\"field.required && field.isVisible\"\n                   [(ngModel)]=\"field.value\"\n                   (ngModelChange)=\"onFieldChanged(field)\"\n                   [disabled]=\"field.readOnly\"\n                   [placeholder]=\"field.placeholder\"\n                   [title]=\"field.tooltip\"\n                   (blur)=\"markAsTouched()\" />\n        </mat-form-field>\n\n        <div class=\"adf-error-messages-container\">\n            <error-widget [error]=\"field.validationSummary\" />\n            <error-widget\n                *ngIf=\"isInvalidFieldRequired() && isTouched()\"\n                required=\"{{ 'FORM.FIELD.REQUIRED' | translate }}\"\n            />\n        </div>\n    </div>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { Component, ViewEncapsulation } from '@angular/core';\nimport { WidgetComponent } from '../widget.component';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n    selector: 'button-widget',\n    templateUrl: './button.widget.html',\n    styleUrl: './button.widget.scss',\n    host: {\n        '[class]': 'hostClasses'\n    },\n    encapsulation: ViewEncapsulation.None,\n    imports: [TranslatePipe, MatButtonModule, MatTooltipModule]\n})\nexport class ButtonWidgetComponent extends WidgetComponent {\n    readonly tooltipShowDelay: number = 500;\n\n    get hostClasses(): string {\n        return `adf-button-widget ${this.field?.className || ''}`;\n    }\n\n    onClick(event: Event): void {\n        this.event(event);\n    }\n}\n","<button\n    mat-flat-button\n    class=\"adf-button-widget__button\"\n    [color]=\"'primary'\"\n    [matTooltip]=\"field?.tooltip\"\n    [matTooltipShowDelay]=\"tooltipShowDelay\"\n    [disabled]=\"field?.readOnly ?? false\"\n    (click)=\"onClick($event)\"\n>\n    {{ field?.name | translate }}\n</button>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FormService } from '../../services/form.service';\nimport { FormFieldModel } from './core/form-field.model';\nimport { WidgetComponent } from './widget.component';\n\nexport interface ReactiveFormWidget {\n    updateReactiveFormControl(): void;\n    formService: FormService;\n    field: FormFieldModel;\n}\n\nexport type MaybeReactiveFormWidget = WidgetComponent | ReactiveFormWidget;\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ReadonlyTextThemeVariable } from '../core/theme.model';\nimport { WidgetSchemaModel } from '../core/widget-schema.model';\n\nexport const displayTextSchema: WidgetSchemaModel<ReadonlyTextThemeVariable> = {\n    themeProperties: [\n        {\n            name: 'FORM.FIELD_STYLE.FONT_SIZE',\n            cssPropertyName: 'font-size',\n            fieldVariableName: '--adf-readonly-text-font-size',\n            formVariableName: '--adf-form-label-font-size',\n            type: 'number',\n            unit: 'px',\n            defaultValue: '16px'\n        },\n        {\n            name: 'FORM.FIELD_STYLE.FONT_WEIGHT',\n            cssPropertyName: 'font-weight',\n            fieldVariableName: '--adf-readonly-text-font-weight',\n            formVariableName: '--adf-form-label-font-weight',\n            type: 'options',\n            options: [\n                {\n                    name: 'FORM.FIELD_STYLE.FONT_WEIGHTS.REGULAR',\n                    value: 'normal'\n                },\n                {\n                    name: 'FORM.FIELD_STYLE.FONT_WEIGHTS.BOLD',\n                    value: 'bold'\n                }\n            ],\n            defaultValue: 'normal'\n        },\n        {\n            name: 'FORM.FIELD_STYLE.FONT_COLOR',\n            cssPropertyName: 'color',\n            fieldVariableName: '--adf-readonly-text-color',\n            formVariableName: '--adf-form-label-color',\n            type: 'colorOptions',\n            options: [\n                {\n                    name: 'FORM.FIELD_STYLE.COLORS.SYSTEM_COLOR',\n                    value: 'inherit'\n                },\n                {\n                    name: 'FORM.FIELD_STYLE.COLORS.BLACK',\n                    value: '#000000'\n                },\n                {\n                    name: 'FORM.FIELD_STYLE.COLORS.GREY',\n                    value: '#9CA3AF'\n                },\n                {\n                    name: 'FORM.FIELD_STYLE.COLORS.RED',\n                    value: '#DA1500'\n                },\n                {\n                    name: 'FORM.FIELD_STYLE.COLORS.GREEN',\n                    value: '#04A003'\n                },\n                {\n                    name: 'FORM.FIELD_STYLE.COLORS.BLUE',\n                    value: '#0A60CE'\n                },\n                {\n                    name: 'FORM.FIELD_STYLE.COLORS.YELLOW',\n                    value: '#FACC15'\n                }\n            ],\n            defaultValue: 'inherit'\n        }\n    ]\n};\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './display-text.schema';\nexport * from './display-text.widget';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { HeaderThemeVariable } from '../core/theme.model';\nimport { WidgetSchemaModel } from '../core/widget-schema.model';\n\nexport const headerSchema: WidgetSchemaModel<HeaderThemeVariable> = {\n    themeProperties: [\n        {\n            name: 'FORM.FIELD_STYLE.FONT_SIZE',\n            cssPropertyName: 'font-size',\n            fieldVariableName: '--adf-header-font-size',\n            formVariableName: '--adf-header-font-size',\n            type: 'number',\n            unit: 'px',\n            defaultValue: '16px'\n        },\n        {\n            name: 'FORM.FIELD_STYLE.FONT_WEIGHT',\n            cssPropertyName: 'font-weight',\n            fieldVariableName: '--adf-header-font-weight',\n            formVariableName: '--adf-header-font-weight',\n            type: 'options',\n            options: [\n                {\n                    name: 'FORM.FIELD_STYLE.FONT_WEIGHTS.REGULAR',\n                    value: 'normal'\n                },\n                {\n                    name: 'FORM.FIELD_STYLE.FONT_WEIGHTS.BOLD',\n                    value: 'bold'\n                }\n            ],\n            defaultValue: 'normal'\n        },\n        {\n            name: 'FORM.FIELD_STYLE.FONT_COLOR',\n            cssPropertyName: 'color',\n            fieldVariableName: '--adf-header-color',\n            formVariableName: '--adf-header-color',\n            type: 'colorOptions',\n            options: [\n                {\n                    name: 'FORM.FIELD_STYLE.COLORS.SYSTEM_COLOR',\n                    value: 'inherit'\n                },\n                {\n                    name: 'FORM.FIELD_STYLE.COLORS.BLACK',\n                    value: '#000000'\n                },\n                {\n                    name: 'FORM.FIELD_STYLE.COLORS.GREY',\n                    value: '#9CA3AF'\n                },\n                {\n                    name: 'FORM.FIELD_STYLE.COLORS.RED',\n                    value: '#DA1500'\n                },\n                {\n                    name: 'FORM.FIELD_STYLE.COLORS.GREEN',\n                    value: '#04A003'\n                },\n                {\n                    name: 'FORM.FIELD_STYLE.COLORS.BLUE',\n                    value: '#0A60CE'\n                },\n                {\n                    name: 'FORM.FIELD_STYLE.COLORS.YELLOW',\n                    value: '#FACC15'\n                }\n            ],\n            defaultValue: 'inherit'\n        }\n    ]\n};\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { FormFieldModel } from '../components/widgets/core/form-field.model';\nimport { ContainerModel } from '../components/widgets/core/container.model';\nimport { predefinedTheme } from '../components/widgets/core/predefined-theme';\n\n@Pipe({\n    name: 'adfFieldStyle'\n})\nexport class FieldStylePipe implements PipeTransform {\n    transform(field: FormFieldModel | ContainerModel): string {\n        if (!field.style) {\n            return '';\n        }\n\n        const themeStyle = field.form?.theme?.widgets[field.type]?.[field.style];\n        const predefinedThemeStyle = predefinedTheme.widgets[field.type]?.[field.style];\n        const styles = (themeStyle || predefinedThemeStyle)?.styles;\n\n        return styles ? this.flattenStyles(styles) : '';\n    }\n\n    private flattenStyles(styles: { [key: string]: string }): string {\n        return Object.entries(styles)\n            .map(([key, value]) => `${key}:${value};`)\n            .join('');\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { ContainerModel } from '../core/container.model';\nimport { FieldStylePipe } from './../../../pipes/field-style.pipe';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { IconModule } from '../../../../icon/icon.module';\n\n@Component({\n    selector: 'adf-header-widget',\n    templateUrl: './header.widget.html',\n    styleUrls: ['./header.widget.scss'],\n    encapsulation: ViewEncapsulation.None,\n    imports: [FieldStylePipe, IconModule, MatButtonModule, TranslatePipe, NgTemplateOutlet]\n})\nexport class HeaderWidgetComponent {\n    @Input() element: ContainerModel;\n\n    onExpanderClicked(content: ContainerModel) {\n        if (content?.isCollapsible) {\n            content.isExpanded = !content.isExpanded;\n        }\n    }\n}\n","@if (element?.isTypeFieldGroup) {\n    <div [style]=\"element | adfFieldStyle\" class=\"adf-container-widget-header\">\n        @if (element?.hideHeader) {\n            <div>\n                <ng-container *ngTemplateOutlet=\"expandButton; context: { $implicit: element }\" />\n            </div>\n        } @else {\n            <h4\n                id=\"container-header\"\n                class=\"adf-container-widget-header__text\"\n                [class.adf-collapsible]=\"element?.isCollapsible\"\n            >\n                <ng-container *ngTemplateOutlet=\"expandButton; context: { $implicit: element }\" />\n                <span\n                    [id]=\"'container-header-label-' + element?.id\"\n                    role=\"button\"\n                    tabindex=\"0\"\n                    (keyup.enter)=\"onExpanderClicked(element)\"\n                    (click)=\"onExpanderClicked(element)\"\n                >\n                    {{ element.name | translate }}\n                </span>\n            </h4>\n        }\n\n        <ng-template #expandButton let-element>\n            @if (element?.isCollapsible) {\n                <button\n                    mat-icon-button\n                    class=\"mdl-button--icon\"\n                    (click)=\"onExpanderClicked(element)\"\n                >\n                    <mat-icon [adf-icon]=\"element?.isExpanded ? 'expand_more' : 'expand_less'\" />\n                </button>\n            }\n        </ng-template>\n    </div>\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './header.schema';\nexport * from './header.widget';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { FieldStylePipe } from '../../../pipes/field-style.pipe';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { ContainerModel } from '../core/container.model';\nimport { IconModule } from '../../../../icon/icon.module';\n\n@Component({\n    selector: 'adf-repeat-widget',\n    templateUrl: './repeat.widget.html',\n    styleUrls: ['./repeat.widget.scss'],\n    encapsulation: ViewEncapsulation.None,\n    imports: [FieldStylePipe, IconModule, MatButtonModule, TranslatePipe]\n})\nexport class RepeatWidgetComponent {\n    @Input() element: ContainerModel;\n    @Input() isEditor: boolean = true;\n\n    addRow() {\n        this.element.field.addRow(this.element.json.fields, this.element.form);\n    }\n}\n","<div [style]=\"element | adfFieldStyle\" class=\"adf-container-widget-repeat\" [class.adf-readonly]=\"element.field.readOnly\">\n    <h4\n        id=\"container-repeat\"\n        class=\"adf-container-widget-repeat__text\"\n    >\n        <span [id]=\"'container-repeat-label-' + element?.id\" role=\"button\" tabindex=\"0\">\n            {{ element.name | translate }}\n        </span>\n    </h4>\n\n    <ng-content />\n\n    @if (!isEditor) {\n        @let shouldDisplayAddRowButton = !element.field.params.maxNumberOfRows || (element.field.params.maxNumberOfRows > element.field.rows.length);\n        @if (shouldDisplayAddRowButton) {\n            <button \n                mat-flat-button\n                class=\"adf-container-widget-row-action\"\n                [disabled]=\"element.field.readOnly\"\n                (click)=\"addRow()\"\n            >\n                <mat-icon adf-icon=\"add\" /> {{ 'FORM.FIELD.REPEATABLE_SECTION.ADD_ROW' | translate }}\n            </button>\n        } @else {\n            <span class=\"adf-container-widget-row-action adf-container-widget-row-limit\">{{ 'FORM.FIELD.REPEATABLE_SECTION.ROW_LIMIT_REACHED' | translate: { limit: element.field.params.maxNumberOfRows } }}</span>\n        }\n    }\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { UnknownWidgetComponent } from './unknown/unknown.widget';\n\nimport { AmountWidgetComponent } from './amount/amount.widget';\nimport { CheckboxWidgetComponent } from './checkbox/checkbox.widget';\nimport { DateWidgetComponent } from './date/date.widget';\nimport { DisplayTextWidgetComponent } from './display-text/display-text.widget';\nimport { ErrorWidgetComponent } from './error/error.component';\nimport { HyperlinkWidgetComponent } from './hyperlink/hyperlink.widget';\nimport { MultilineTextWidgetComponentComponent } from './multiline-text/multiline-text.widget';\nimport { NumberWidgetComponent } from './number/number.widget';\nimport { InputMaskDirective } from './text/text-mask.component';\nimport { TextWidgetComponent } from './text/text.widget';\nimport { DateTimeWidgetComponent } from './date-time/date-time.widget';\nimport { JsonWidgetComponent } from './json/json.widget';\nimport { BaseViewerWidgetComponent } from './base-viewer/base-viewer.widget';\nimport { DecimalWidgetComponent } from './decimal/decimal.component';\nimport { ButtonWidgetComponent } from './button/button.widget';\n\n// core\nexport * from './widget.component';\nexport * from './reactive-widget.interface';\nexport * from './base-display-text/base-display-text.widget';\nexport * from './core';\n\n// primitives\nexport * from './unknown/unknown.widget';\nexport * from './text/text.widget';\nexport * from './number/number.widget';\nexport * from './decimal/decimal.component';\nexport * from './checkbox/checkbox.widget';\nexport * from './multiline-text/multiline-text.widget';\nexport * from './hyperlink/hyperlink.widget';\nexport * from './date/date.widget';\nexport * from './amount/amount.widget';\nexport * from './error/error.component';\nexport * from './date-time/date-time.widget';\nexport * from './json/json.widget';\nexport * from './base-viewer/base-viewer.widget';\nexport * from './text/text-mask.component';\nexport * from './button/button.widget';\n\n// widgets with schema\nexport * from './display-text';\nexport * from './header';\nexport * from './repeat/repeat.widget';\n\nexport const WIDGET_DIRECTIVES = [\n    UnknownWidgetComponent,\n    TextWidgetComponent,\n    NumberWidgetComponent,\n    DecimalWidgetComponent,\n    CheckboxWidgetComponent,\n    MultilineTextWidgetComponentComponent,\n    HyperlinkWidgetComponent,\n    DisplayTextWidgetComponent,\n    DateWidgetComponent,\n    AmountWidgetComponent,\n    ErrorWidgetComponent,\n    DateTimeWidgetComponent,\n    JsonWidgetComponent,\n    BaseViewerWidgetComponent,\n    ButtonWidgetComponent\n] as const;\n\nexport const MASK_DIRECTIVE = [InputMaskDirective] as const;\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n    DynamicComponentMapper,\n    DynamicComponentResolveFunction,\n    DynamicComponentResolver\n} from '../../common/services/dynamic-component-mapper.service';\nimport { Injectable, Type } from '@angular/core';\nimport * as widgets from '../components/widgets';\nimport { FormFieldTypes } from '../components/widgets';\n\n/* eslint-disable id-blacklist */\n@Injectable({\n    providedIn: 'root'\n})\nexport class FormRenderingService extends DynamicComponentMapper {\n    protected defaultValue: Type<any> = widgets.UnknownWidgetComponent;\n    protected types: { [key: string]: DynamicComponentResolveFunction } = {\n        [FormFieldTypes.TEXT]: DynamicComponentResolver.fromType(widgets.TextWidgetComponent),\n        [FormFieldTypes.STRING]: DynamicComponentResolver.fromType(widgets.TextWidgetComponent),\n        [FormFieldTypes.INTEGER]: DynamicComponentResolver.fromType(widgets.NumberWidgetComponent),\n        [FormFieldTypes.DECIMAL]: DynamicComponentResolver.fromType(widgets.DecimalWidgetComponent),\n        [FormFieldTypes.MULTILINE_TEXT]: DynamicComponentResolver.fromType(widgets.MultilineTextWidgetComponentComponent),\n        [FormFieldTypes.BOOLEAN]: DynamicComponentResolver.fromType(widgets.CheckboxWidgetComponent),\n        [FormFieldTypes.DATE]: DynamicComponentResolver.fromType(widgets.DateWidgetComponent),\n        [FormFieldTypes.AMOUNT]: DynamicComponentResolver.fromType(widgets.AmountWidgetComponent),\n        [FormFieldTypes.HYPERLINK]: DynamicComponentResolver.fromType(widgets.HyperlinkWidgetComponent),\n        [FormFieldTypes.READONLY_TEXT]: DynamicComponentResolver.fromType(widgets.DisplayTextWidgetComponent),\n        [FormFieldTypes.JSON]: DynamicComponentResolver.fromType(widgets.JsonWidgetComponent),\n        [FormFieldTypes.DISPLAY_VALUE]: DynamicComponentResolver.fromType(widgets.TextWidgetComponent),\n        [FormFieldTypes.DATETIME]: DynamicComponentResolver.fromType(widgets.DateTimeWidgetComponent),\n        [FormFieldTypes.VIEWER]: DynamicComponentResolver.fromType(widgets.BaseViewerWidgetComponent),\n        [FormFieldTypes.BUTTON]: DynamicComponentResolver.fromType(widgets.ButtonWidgetComponent)\n    };\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable } from '@angular/core';\nimport { FormFieldModel, FormModel, TabModel, ContainerModel, FormOutcomeModel } from '../components/widgets/core';\nimport { TaskProcessVariableModel } from '../models/task-process-variable.model';\nimport { WidgetVisibilityModel, WidgetTypeEnum } from '../models/widget-visibility.model';\nimport { format, isValid, parse } from 'date-fns';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class WidgetVisibilityService {\n    private processVarList: TaskProcessVariableModel[];\n    private form: FormModel;\n\n    public refreshVisibility(form: FormModel, processVarList?: TaskProcessVariableModel[]) {\n        this.form = form;\n\n        if (processVarList) {\n            this.processVarList = processVarList;\n        }\n\n        if (form) {\n            if (form.tabs?.length > 0) {\n                form.tabs.map((tabModel) => this.refreshEntityVisibility(tabModel));\n            }\n\n            if (form.outcomes?.length > 0) {\n                form.outcomes.map((outcomeModel) => this.refreshOutcomeVisibility(outcomeModel));\n            }\n\n            form.getFormFields().map((field) => this.refreshEntityVisibility(field));\n        }\n    }\n\n    public refreshEntityVisibility(element: FormFieldModel | TabModel) {\n        element.isVisible = this.isParentTabVisible(this.form, element) && this.evaluateVisibility(element.form, element.visibilityCondition);\n    }\n\n    private refreshOutcomeVisibility(element: FormOutcomeModel) {\n        element.isVisible = this.evaluateVisibility(element.form, element.visibilityCondition);\n    }\n\n    public evaluateVisibility(form: FormModel, visibilityObj: WidgetVisibilityModel): boolean {\n        const isLeftFieldPresent = visibilityObj && (visibilityObj.leftType || visibilityObj.leftValue);\n        if (!isLeftFieldPresent || isLeftFieldPresent === 'null') {\n            return true;\n        } else {\n            return this.isFieldVisible(form, visibilityObj);\n        }\n    }\n\n    public isFieldVisible(form: FormModel, visibilityObj: WidgetVisibilityModel, accumulator: any[] = [], result?: boolean): boolean {\n        const leftValue = this.getLeftValue(form, visibilityObj);\n        const rightValue = this.getRightValue(form, visibilityObj);\n        const actualResult = this.evaluateCondition(leftValue, rightValue, visibilityObj.operator);\n\n        accumulator.push({ value: actualResult, operator: visibilityObj.nextConditionOperator });\n\n        if (this.isValidCondition(visibilityObj.nextCondition)) {\n            result = this.isFieldVisible(form, visibilityObj.nextCondition, accumulator);\n        } else if (accumulator[0] !== undefined) {\n            result = Function(\n                '\"use strict\";return (' + accumulator.map((expression) => this.transformToLiteralExpression(expression)).join('') + ')'\n            )();\n        } else {\n            result = actualResult;\n        }\n        return !!result;\n    }\n\n    private transformToLiteralExpression(currentExpression: { value: any; operator: string }): string {\n        const currentTransformedValue = currentExpression.value ? 'true' : 'false';\n        return currentTransformedValue.concat(this.transformToLiteralOperator(currentExpression.operator));\n    }\n\n    private transformToLiteralOperator(currentOperator: string): string {\n        switch (currentOperator) {\n            case 'and':\n                return '&&';\n            case 'or':\n                return '||';\n            case 'and-not':\n                return '&& !';\n            case 'or-not':\n                return '|| !';\n            default:\n                return '';\n        }\n    }\n\n    getLeftValue(form: FormModel, visibilityObj: WidgetVisibilityModel): string {\n        let leftValue = '';\n        if (visibilityObj.leftType === WidgetTypeEnum.variable) {\n            leftValue = this.getVariableValue(form, visibilityObj.leftValue, this.processVarList);\n        } else if (visibilityObj.leftType === WidgetTypeEnum.field) {\n            leftValue = this.getFormValue(form, visibilityObj.leftValue);\n            if (leftValue === undefined || leftValue === '') {\n                const variableValue = this.getVariableValue(form, visibilityObj.leftValue, this.processVarList);\n                leftValue = !this.isInvalidValue(variableValue) ? variableValue : leftValue;\n            }\n        }\n        return leftValue;\n    }\n\n    getRightValue(form: FormModel, visibilityObj: WidgetVisibilityModel): string {\n        let valueFound = '';\n\n        if (visibilityObj.rightType === WidgetTypeEnum.variable) {\n            valueFound = this.getVariableValue(form, visibilityObj.rightValue, this.processVarList);\n        } else if (visibilityObj.rightType === WidgetTypeEnum.field) {\n            valueFound = this.getFormValue(form, visibilityObj.rightValue);\n        } else {\n            const value = parse(`${visibilityObj.rightValue}`, 'yyyy-mm-dd', new Date());\n            if (isValid(value)) {\n                valueFound = `${format(value, 'yyyy-mm-dd')}T00:00:00.000Z`;\n            } else {\n                valueFound = visibilityObj.rightValue;\n            }\n        }\n\n        return valueFound;\n    }\n\n    public getFormValue(form: FormModel, fieldId: string): any {\n        const formField = this.getFormFieldById(form, fieldId);\n        let value;\n\n        if (this.isFormFieldValid(formField)) {\n            value = this.getFieldValue(form.values, fieldId);\n\n            if (this.isInvalidValue(value)) {\n                value = this.searchValueInForm(formField, fieldId);\n            }\n        }\n        return value;\n    }\n\n    public isFormFieldValid(formField: FormFieldModel): boolean {\n        return formField?.isValid;\n    }\n\n    public getFieldValue(valueList: any, fieldId: string): any {\n        let labelFilterByName: string;\n        let valueFound: any;\n        if (fieldId && fieldId.indexOf('_LABEL') > 0) {\n            labelFilterByName = fieldId.substring(0, fieldId.length - 6);\n            if (valueList[labelFilterByName]) {\n                if (Array.isArray(valueList[labelFilterByName])) {\n                    valueFound = valueList[labelFilterByName].map(({ name }) => name);\n                } else {\n                    valueFound = valueList[labelFilterByName].name;\n                }\n            }\n        } else if (valueList[fieldId]?.id) {\n            valueFound = valueList[fieldId].id;\n        } else if (valueList[fieldId] && Array.isArray(valueList[fieldId])) {\n            valueFound = valueList[fieldId].map(({ id }) => id);\n        } else {\n            valueFound = valueList[fieldId];\n        }\n        return valueFound;\n    }\n\n    private isInvalidValue(value: any): boolean {\n        return value === undefined || value === null;\n    }\n\n    public getFormFieldById(form: FormModel, fieldId: string): FormFieldModel {\n        return form.getFormFields().find((formField: FormFieldModel) => this.isSearchedField(formField, fieldId));\n    }\n\n    public searchValueInForm(formField: FormFieldModel, fieldId: string): string {\n        let fieldValue = '';\n\n        if (formField) {\n            fieldValue = this.getObjectValue(formField, fieldId);\n\n            if (!fieldValue) {\n                if (formField.value?.id) {\n                    fieldValue = formField.value.id;\n                } else if (!this.isInvalidValue(formField.value)) {\n                    fieldValue = formField.value;\n                }\n            }\n        }\n        return fieldValue;\n    }\n\n    private isParentTabVisible(form: FormModel, currentFormField: FormFieldModel | TabModel): boolean {\n        const containers = this.getFormTabContainers(form);\n        let isVisible: boolean = true;\n        containers.map((container: ContainerModel) => {\n            if (this.getCurrentFieldFromTabById(container, currentFormField.id)) {\n                const currentTab = form.tabs.find((tab: TabModel) => tab.id === container.tab);\n                if (currentTab) {\n                    isVisible = currentTab.isVisible;\n                }\n            }\n        });\n        return isVisible;\n    }\n\n    private getCurrentFieldFromTabById(container: ContainerModel, fieldId: string): FormFieldModel {\n        const tabFields: FormFieldModel[][] = Object.keys(container.field.fields).map((key) => container.field.fields[key]);\n        let currentField: FormFieldModel;\n\n        for (const tabField of tabFields) {\n            currentField = tabField.find((tab: FormFieldModel) => tab.id === fieldId);\n            if (currentField) {\n                return currentField;\n            }\n        }\n        return null;\n    }\n\n    private getFormTabContainers(form: FormModel): ContainerModel[] {\n        if (form) {\n            return form.fields.filter((field) => field.type === 'container' && field.tab) as ContainerModel[];\n        }\n        return [];\n    }\n\n    private getObjectValue(field: FormFieldModel, fieldId: string): string {\n        let value = '';\n        if (field.value?.name) {\n            value = field.value.name;\n        } else if (field.options) {\n            const option = field.options.find((opt) => opt.id === field.value);\n            if (option) {\n                value = this.getValueFromOption(fieldId, option);\n            }\n        }\n        return value;\n    }\n\n    private getValueFromOption(fieldId: string, option): string {\n        let optionValue = '';\n        if (fieldId && fieldId.indexOf('_LABEL') > 0) {\n            optionValue = option.name;\n        } else {\n            optionValue = option.id;\n        }\n        return optionValue;\n    }\n\n    private isSearchedField(field: FormFieldModel, fieldId: string): boolean {\n        const fieldToFind = fieldId?.indexOf('_LABEL') > 0 ? fieldId.replace('_LABEL', '') : fieldId;\n        return field.id && fieldToFind ? field.id.toUpperCase() === fieldToFind.toUpperCase() : false;\n    }\n\n    public getVariableValue(form: FormModel, name: string, processVarList: TaskProcessVariableModel[]): string {\n        const processVariableValue = this.getProcessVariableValue(name, processVarList);\n        const variableDefaultValue = form.getDefaultFormVariableValue(name);\n\n        return processVariableValue === undefined ? variableDefaultValue : processVariableValue;\n    }\n\n    private getProcessVariableValue(name: string, processVarList: TaskProcessVariableModel[]): string {\n        if (processVarList) {\n            const processVariable = processVarList.find((variable) => variable.id === name || variable.id === `variables.${name}`);\n\n            if (processVariable) {\n                return processVariable.value;\n            }\n        }\n        return undefined;\n    }\n\n    public evaluateCondition(leftValue: any, rightValue: any, operator: string): boolean | undefined {\n        switch (operator) {\n            case '==':\n                return leftValue + '' === rightValue + '';\n            case '<':\n                return leftValue < rightValue;\n            case '!=':\n                return leftValue + '' !== rightValue + '';\n            case '>':\n                return leftValue > rightValue;\n            case '>=':\n                return leftValue >= rightValue;\n            case '<=':\n                return leftValue <= rightValue;\n            case 'empty':\n                return leftValue ? leftValue === '' : true;\n            case '!empty':\n                return leftValue ? leftValue !== '' : false;\n            case 'contains':\n                return this.contains(leftValue, rightValue);\n            case '!contains':\n                return !this.contains(leftValue, rightValue);\n            default:\n                return undefined;\n        }\n    }\n\n    private contains(leftValue: any, rightValue: any) {\n        return Array.isArray(leftValue) && Array.isArray(rightValue) && rightValue.every((element) => leftValue.includes(element));\n    }\n\n    cleanProcessVariable() {\n        this.processVarList = [];\n    }\n\n    private isValidCondition(condition: WidgetVisibilityModel): boolean {\n        return !!condition?.operator;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n    Compiler,\n    Component,\n    ComponentFactory,\n    ComponentRef,\n    DestroyRef,\n    inject,\n    Input,\n    NgModule,\n    OnDestroy,\n    OnInit,\n    ViewChild,\n    ViewContainerRef,\n    ViewEncapsulation\n} from '@angular/core';\nimport { FormRenderingService } from '../../services/form-rendering.service';\nimport { WidgetVisibilityService } from '../../services/widget-visibility.service';\nimport { FormFieldModel } from '../widgets/core/form-field.model';\nimport { FieldStylePipe } from '../../pipes/field-style.pipe';\nimport { FormFieldTypes } from '../widgets/core/form-field-types';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ReactiveFormWidget } from '../widgets/reactive-widget.interface';\n\ndeclare const adf: any;\n\n/**\n * Component is a wrapper for widget components.\n * It is responsible for instantiating the correct widget component\n * based on the field type.\n */\n@Component({\n    selector: 'adf-form-field',\n    templateUrl: './form-field.component.html',\n    encapsulation: ViewEncapsulation.None,\n    imports: [FieldStylePipe]\n})\nexport class FormFieldComponent implements OnInit, OnDestroy {\n    @ViewChild('container', { read: ViewContainerRef, static: true })\n    container: ViewContainerRef;\n\n    /**\n     * Contains all the necessary data needed to determine what UI Widget\n     * to use when rendering the field in the form. You would typically not\n     * create this data manually but instead create the form in APS and export\n     * it to get to all the `FormFieldModel` definitions.\n     */\n    @Input()\n    field: FormFieldModel = null;\n\n    componentRef: ComponentRef<any>;\n\n    focus: boolean = false;\n\n    private readonly formRenderingService = inject(FormRenderingService);\n    private readonly visibilityService = inject(WidgetVisibilityService);\n    private readonly destroyRef = inject(DestroyRef);\n    private readonly compiler = inject(Compiler);\n\n    ngOnInit() {\n        const w: any = window;\n        if (w.adf === undefined) {\n            w.adf = {};\n        }\n\n        const originalField = this.getField();\n        if (originalField) {\n            const customTemplate = this.field.form.customFieldTemplates[originalField.type];\n            if (customTemplate && this.hasController(originalField.type)) {\n                const factory = this.getComponentFactorySync(originalField.type, customTemplate);\n                this.componentRef = this.container.createComponent(factory);\n                const instance: any = this.componentRef.instance;\n                if (instance) {\n                    instance.field = originalField;\n                }\n            } else {\n                const componentType = this.formRenderingService.resolveComponentType(originalField);\n                if (componentType) {\n                    this.componentRef = this.container.createComponent(componentType);\n\n                    const instance = this.componentRef.instance;\n                    instance.field = this.field;\n\n                    instance.fieldChanged.subscribe((field) => {\n                        if (field && this.field.form) {\n                            this.visibilityService.refreshVisibility(field.form);\n                            this.triggerFormFieldChanged(field);\n                        }\n                    });\n\n                    if (FormFieldTypes.isReactiveWidget(instance)) {\n                        this.updateReactiveFormControlOnFormRulesEvent(instance);\n                    }\n                }\n            }\n        }\n    }\n\n    private updateReactiveFormControlOnFormRulesEvent(instance: ReactiveFormWidget): void {\n        instance?.formService.formRulesEvent.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n            instance?.updateReactiveFormControl();\n            instance?.field?.form.validateForm(instance?.field);\n        });\n    }\n\n    private triggerFormFieldChanged(field: FormFieldModel): void {\n        field.form.onFormFieldChanged(field);\n    }\n\n    ngOnDestroy() {\n        if (this.componentRef) {\n            this.componentRef.destroy();\n            this.componentRef = null;\n        }\n    }\n\n    focusToggle() {\n        setTimeout(() => {\n            this.focus = !this.focus;\n        });\n    }\n\n    private getField(): FormFieldModel {\n        if (this.field?.params) {\n            const wrappedField = this.field.params.field;\n            if (wrappedField?.type) {\n                return wrappedField as FormFieldModel;\n            }\n        }\n        return this.field;\n    }\n\n    private hasController(type: string): boolean {\n        return adf?.components?.[type];\n    }\n\n    private getComponentFactorySync(type: string, template: string): ComponentFactory<any> {\n        const componentInfo = adf.components[type];\n\n        if (componentInfo.factory) {\n            return componentInfo.factory;\n        }\n\n        const metadata = {\n            selector: `runtime-component-${type}`,\n            template\n        };\n\n        const factory = this.createComponentFactorySync(this.compiler, metadata, componentInfo.class);\n        componentInfo.factory = factory;\n        return factory;\n    }\n\n    private createComponentFactorySync(compiler: Compiler, metadata: Component, componentClass: any): ComponentFactory<any> {\n        const cmpClass = componentClass || class RuntimeComponent {};\n        const decoratedCmp = Component(metadata)(cmpClass);\n        const moduleClass = class RuntimeComponentModule {};\n        const decoratedNgModule = NgModule({ imports: [], declarations: [decoratedCmp] })(moduleClass);\n        const module = compiler.compileModuleAndAllComponentsSync(decoratedNgModule);\n\n        return module.componentFactories.find((x) => x.componentType === decoratedCmp);\n    }\n}\n","<div [id]=\"'field-' + field?.id + '-container'\"\n     [style.display]=\"field?.isVisible ? 'block' : 'none'\"\n     [style]=\"field | adfFieldStyle\"\n     [class.adf-focus]=\"focus\"\n     (focusin)=\"focusToggle()\"\n     (focusout)=\"focusToggle()\">\n    <div #container></div>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FormOutcomeModel } from '../widgets';\n\ninterface IsOutcomeButtonVisibleProps {\n    isFormReadOnly: boolean;\n    showCompleteButton: boolean;\n    showSaveButton: boolean;\n}\n\nexport const isOutcomeButtonVisible = (outcome: FormOutcomeModel, props: IsOutcomeButtonVisibleProps): boolean => {\n    const { isFormReadOnly, showCompleteButton, showSaveButton } = props;\n\n    if (outcome?.name) {\n        if (outcome.name === FormOutcomeModel.COMPLETE_ACTION) {\n            return showCompleteButton;\n        }\n        if (isFormReadOnly) {\n            return outcome.isSelected;\n        }\n        if (outcome.name === FormOutcomeModel.SAVE_ACTION) {\n            return showSaveButton;\n        }\n        if (outcome.name === FormOutcomeModel.START_PROCESS_ACTION) {\n            return false;\n        }\n        return true;\n    }\n    return false;\n};\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Directive, EventEmitter, Input, Output } from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport { FormFieldModel, FormFieldValidator, FormModel, FormOutcomeEvent, FormOutcomeModel } from './widgets';\nimport { isOutcomeButtonVisible } from './helpers/buttons-visibility';\n\n@Directive({\n    standalone: true\n})\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport abstract class FormBaseComponent {\n    protected _form: FormModel;\n\n    /**\n     * @deprecated Use {@link FormModel.SAVE_OUTCOME} instead.\n     */\n    static readonly SAVE_OUTCOME_ID: string = FormModel.SAVE_OUTCOME;\n\n    /**\n     * @deprecated Use {@link FormModel.COMPLETE_OUTCOME} instead.\n     */\n    static readonly COMPLETE_OUTCOME_ID: string = FormModel.COMPLETE_OUTCOME;\n\n    /**\n     * @deprecated Use {@link FormModel.START_PROCESS_OUTCOME} instead.\n     */\n    static readonly START_PROCESS_OUTCOME_ID: string = FormModel.START_PROCESS_OUTCOME;\n\n    static readonly CUSTOM_OUTCOME_ID: string = '$custom';\n    static readonly COMPLETE_BUTTON_COLOR: ThemePalette = 'primary';\n\n    /**\n     * @deprecated Use {@link FormOutcomeModel.COMPLETE_ACTION} instead.\n     */\n    static readonly COMPLETE_OUTCOME_NAME: string = FormOutcomeModel.COMPLETE_ACTION;\n\n    /** Path of the folder where the metadata will be stored. */\n    @Input()\n    path: string;\n\n    /** Name to assign to the new node where the metadata are stored. */\n    @Input()\n    nameNode: string;\n\n    /** Toggle rendering of the form title. */\n    @Input()\n    showTitle: boolean = true;\n\n    /** Toggle rendering of the `Complete` outcome button. */\n    @Input()\n    showCompleteButton: boolean = true;\n\n    /** If true then the `Complete` outcome button is shown, but it will be disabled. */\n    @Input()\n    disableCompleteButton: boolean = false;\n\n    /** If true then the `Save` outcome button is shown but will be disabled. */\n    @Input()\n    disableSaveButton: boolean = false;\n\n    /** If true then the `Start Process` outcome button is shown but it will be disabled. */\n    @Input()\n    disableStartProcessButton: boolean = false;\n\n    /** Toggle rendering of the `Save` outcome button. */\n    @Input()\n    showSaveButton: boolean = true;\n\n    /** Toggle readonly state of the form. Forces all form widgets to render as readonly if enabled. */\n    @Input()\n    readOnly: boolean = false;\n\n    /** Toggle rendering of the `Refresh` button. */\n    @Input()\n    showRefreshButton: boolean = true;\n\n    /** Toggle rendering of the validation icon next to the form title. */\n    @Input()\n    showValidationIcon: boolean = true;\n\n    /** Contains a list of form field validator instances. */\n    @Input()\n    fieldValidators: FormFieldValidator[];\n\n    /** Emitted when the supplied form values have a validation error. */\n    @Output()\n    formError = new EventEmitter<FormFieldModel[]>();\n\n    /**\n     * Emitted when any outcome is executed. Default behaviour can be prevented\n     * via `event.preventDefault()`.\n     */\n    @Output()\n    executeOutcome = new EventEmitter<FormOutcomeEvent>();\n\n    /**\n     * Emitted when any error occurs.\n     */\n    @Output()\n    error = new EventEmitter<any>();\n\n    /**\n     * Custom style that is backed by the form.theme.\n     */\n    formStyle: string = '';\n\n    get form(): FormModel {\n        return this._form;\n    }\n\n    /** Underlying form model instance. */\n    @Input()\n    set form(form: FormModel) {\n        this._form = form;\n\n        if (form) {\n            const theme = form.theme?.form;\n            this.formStyle = theme ? this.flattenStyles(theme) : '';\n        } else {\n            this.formStyle = '';\n        }\n    }\n\n    getParsedFormDefinition(): FormBaseComponent {\n        return this;\n    }\n\n    hasForm(): boolean {\n        return !!this.form;\n    }\n\n    isTitleEnabled(): boolean {\n        let titleEnabled = false;\n        if (this.showTitle && this.form) {\n            titleEnabled = true;\n        }\n        return titleEnabled;\n    }\n\n    getColorForOutcome(outcomeName: string): ThemePalette {\n        return outcomeName === FormOutcomeModel.COMPLETE_ACTION ? FormBaseComponent.COMPLETE_BUTTON_COLOR : null;\n    }\n\n    isOutcomeButtonEnabled(outcome?: FormOutcomeModel): boolean {\n        if (this.form.readOnly) {\n            return false;\n        }\n\n        if (outcome) {\n            if (outcome.skipValidation) {\n                return true;\n            }\n            if (outcome.name === FormOutcomeModel.SAVE_ACTION) {\n                return !this.disableSaveButton;\n            }\n            if (outcome.name === FormOutcomeModel.COMPLETE_ACTION) {\n                return this.disableCompleteButton ? false : this.form.isValid;\n            }\n            if (outcome.name === FormOutcomeModel.START_PROCESS_ACTION) {\n                return this.disableStartProcessButton ? false : this.form.isValid;\n            }\n            return this.form.isValid;\n        }\n\n        return false;\n    }\n\n    isOutcomeButtonVisible(outcome: FormOutcomeModel, isFormReadOnly: boolean): boolean {\n        return isOutcomeButtonVisible(outcome, { isFormReadOnly, showCompleteButton: this.showCompleteButton, showSaveButton: this.showSaveButton });\n    }\n\n    /**\n     * Invoked when user clicks outcome button.\n     *\n     * @param outcome Form outcome model\n     * @returns `true` if outcome button was clicked, otherwise `false`\n     */\n    onOutcomeClicked(outcome: FormOutcomeModel): boolean {\n        if (!this.readOnly && outcome && this.form) {\n            if (!this.onExecuteOutcome(outcome)) {\n                return false;\n            }\n\n            if (outcome.isSystem) {\n                if (outcome.id === FormModel.SAVE_OUTCOME) {\n                    this.disableSaveButton = true;\n                    this.saveTaskForm();\n                    return true;\n                }\n\n                if (outcome.id === FormModel.COMPLETE_OUTCOME) {\n                    this.disableSaveButton = true;\n                    this.disableCompleteButton = true;\n                    this.completeTaskForm();\n                    return true;\n                }\n\n                if (outcome.id === FormModel.START_PROCESS_OUTCOME) {\n                    this.completeTaskForm();\n                    return true;\n                }\n\n                if (outcome.id === FormBaseComponent.CUSTOM_OUTCOME_ID) {\n                    this.onTaskSaved(this.form);\n                    this.storeFormAsMetadata();\n                    return true;\n                }\n            } else {\n                // Note: Activiti is using NAME field rather than ID for outcomes\n                if (outcome.name) {\n                    this.completeTaskForm(outcome.name, outcome.id);\n                    return true;\n                }\n            }\n        }\n\n        return false;\n    }\n\n    handleError(err: any): any {\n        this.disableSaveButton = false;\n        this.disableCompleteButton = false;\n        this.error.emit(err);\n    }\n\n    abstract onRefreshClicked(): void;\n\n    abstract saveTaskForm(): void;\n\n    abstract completeTaskForm(outcome?: string, outcomeId?: string): void;\n\n    protected abstract onTaskSaved(form: FormModel): void;\n\n    protected abstract storeFormAsMetadata(): void;\n\n    protected abstract onExecuteOutcome(outcome: FormOutcomeModel): boolean;\n\n    private flattenStyles(styles: { [key: string]: string }): string {\n        return Object.entries(styles)\n            .map(([key, value]) => `${key}: ${value}`)\n            .join(';');\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NgClass } from '@angular/common';\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\n@Component({\n    selector: 'adf-inplace-form-input',\n    templateUrl: './inplace-form-input.component.html',\n    styleUrls: ['./inplace-form-input.component.scss'],\n    imports: [MatFormFieldModule, ReactiveFormsModule, MatInputModule, NgClass],\n    encapsulation: ViewEncapsulation.None\n})\nexport class InplaceFormInputComponent {\n    @Input({ required: true })\n    control: UntypedFormControl;\n}\n","<div class=\"adf-inplace-input-container\"\n     [ngClass]=\"{'adf-inplace-input-container-error': control.invalid && control.touched}\">\n    <mat-form-field class=\"adf-inplace-input-mat-form-field adf-form-field-input\" [appearance]=\"'fill'\">\n        <input matInput\n               [formControl]=\"control\"\n               class=\"adf-inplace-input\"\n               data-automation-id=\"adf-inplace-input\">\n\n        <mat-label data-automation-id=\"adf-inplace-input-label\">\n            <ng-content select=\"[label]\" />\n        </mat-label>\n\n        <mat-error data-automation-id=\"adf-inplace-input-error\">\n            <ng-content select=\"[error]\" />\n        </mat-error>\n    </mat-form-field>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Directive } from '@angular/core';\n\n@Directive({\n    selector: '[adf-form-custom-button]'\n})\nexport class StartFormCustomButtonDirective {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { InjectionToken, Injector } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { FormEvent } from '../events';\nimport { FormRulesEvent } from '../events/form-rules.event';\nimport { FormModel, FormService } from '../public-api';\n\nexport const FORM_RULES_MANAGER = new InjectionToken<FormRulesManager<any>>('form.rule.manager');\n\n/**\n * A factory for forms rule manager\n *\n * @param injector Angular injector\n * @returns FormsRuleManager instance\n */\nexport function formRulesManagerFactory<T>(injector: Injector): FormRulesManager<T> {\n    try {\n        return injector.get(FORM_RULES_MANAGER);\n    } catch {\n        return new ByPassFormRuleManager<T>(null);\n    }\n}\n\nexport abstract class FormRulesManager<T> {\n    constructor(protected formService: FormService) {}\n\n    protected formModel: FormModel;\n    protected onDestroy$ = new Subject<boolean>();\n    private initialized = false;\n\n    initialize(formModel: FormModel) {\n        if (this.initialized) {\n            this.destroy();\n            this.onDestroy$ = new Subject<boolean>();\n        }\n\n        this.formModel = formModel;\n\n        if (!this.formModel.readOnly) {\n            const rules = this.getRules();\n\n            if (rules) {\n                this.formService.formRulesEvent\n                    .pipe(\n                        filter((event) => !!event?.form?.id && event.form.id === this.formModel?.id),\n                        takeUntil(this.onDestroy$)\n                    )\n                    .subscribe((event) => {\n                        this.handleRuleEvent(event, rules);\n                    });\n\n                const onFormLoadedEvent = new FormEvent(this.formModel);\n                const formRules = new FormRulesEvent('formLoaded', onFormLoadedEvent);\n                this.formService.formRulesEvent.next(formRules);\n            }\n        }\n\n        this.initialized = true;\n    }\n\n    protected abstract getRules(): T;\n    protected abstract handleRuleEvent(event: FormRulesEvent, rules: T): void;\n\n    destroy() {\n        this.onDestroy$.next(true);\n        this.onDestroy$.complete();\n    }\n}\n\nexport class ByPassFormRuleManager<T> extends FormRulesManager<T> {\n    protected getRules(): T {\n        return null;\n    }\n\n    protected handleRuleEvent(): void {\n        return;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { InjectionToken } from '@angular/core';\nimport { FormFieldModel } from '../widgets';\n\nexport interface FormFieldModelRenderMiddleware {\n    type: string;\n\n    getParsedField(field: FormFieldModel): FormFieldModel;\n}\n\nexport const FORM_FIELD_MODEL_RENDER_MIDDLEWARE = new InjectionToken('RENDER_FORM_FIELD_MODEL_MIDDLEWARE');\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, inject, Input, OnInit, ViewEncapsulation } from '@angular/core';\nimport { WidgetVisibilityService } from '../../services/widget-visibility.service';\nimport { FormFieldModel } from '../widgets/core/form-field.model';\nimport { FormFieldComponent } from '../form-field/form-field.component';\nimport { NgFor } from '@angular/common';\n\n@Component({\n    selector: 'adf-form-section',\n    templateUrl: './form-section.component.html',\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./form-section.component.scss'],\n    imports: [NgFor, FormFieldComponent]\n})\nexport class FormSectionComponent implements OnInit {\n    @Input()\n    field: FormFieldModel = null;\n\n    private readonly visibilityService = inject(WidgetVisibilityService);\n\n    ngOnInit(): void {\n        this.visibilityService.refreshVisibility(this.field.form);\n    }\n\n    getSectionColumnWidth(numberOfColumns: number, columnFields: FormFieldModel[]): string {\n        const firstColumnFieldIndex = 0;\n        const defaultColspan = 1;\n        const fieldColspan = columnFields[firstColumnFieldIndex]?.colspan ?? defaultColspan;\n\n        if (typeof numberOfColumns !== 'number' || !numberOfColumns || numberOfColumns <= 0) {\n            numberOfColumns = 1;\n        }\n\n        return Math.min(100, (100 / numberOfColumns) * fieldColspan) + '';\n    }\n}\n","<div class=\"adf-grid-list-section-single-column\"\n    [id]=\"'field-' + field?.id + '-container'\"\n    [style.display]=\"field?.isVisible ? 'flex' : 'none'\">\n    <div *ngFor=\"let sectionColumn of field.columns\"\n        [style.width.%]=\"getSectionColumnWidth(field.numberOfColumns, sectionColumn.fields)\"\n    >\n        <div *ngFor=\"let sectionField of sectionColumn.fields\" class=\"adf-grid-list-section-column-view-item\">\n            <adf-form-field [field]=\"sectionField\"/>\n        </div>\n    </div>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable } from '@angular/core';\nimport { FormFieldModelRenderMiddleware } from './middleware';\nimport { FormFieldModel, FormFieldTypes } from '../widgets';\n\n@Injectable()\nexport class DecimalRenderMiddlewareService implements FormFieldModelRenderMiddleware {\n    type = FormFieldTypes.DECIMAL;\n\n    getParsedField(field: FormFieldModel): FormFieldModel {\n        const allowedMaxPrecision = field.precision;\n        const value = field.value;\n\n        field.value = this.forceMaxPrecisionIfNeeded(value, allowedMaxPrecision);\n\n        return field;\n    }\n\n    private forceMaxPrecisionIfNeeded(value: string | number, allowedMaxPrecision: number): string | number {\n        let numberOfDecimalDigits = 0;\n        const stringValue = typeof value === 'string' ? value : `${value}`;\n        const numberChunks = stringValue.split('.');\n\n        if (numberChunks.length === 2) {\n            numberOfDecimalDigits = numberChunks[1].length;\n        }\n\n        if (numberOfDecimalDigits > allowedMaxPrecision) {\n            return parseFloat(value.toString()).toFixed(allowedMaxPrecision);\n        }\n\n        return value;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, SecurityContext, ViewEncapsulation, inject } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { NgIf } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\n\nexport interface ConfirmDialogComponentProps {\n    title?: string;\n    message?: string;\n    yesLabel?: string;\n    thirdOptionLabel?: string;\n    noLabel?: string;\n    htmlContent?: string;\n}\n\n@Component({\n    selector: 'adf-confirm-dialog',\n    templateUrl: './confirm.dialog.html',\n    styleUrls: ['./confirm.dialog.scss'],\n    host: { class: 'adf-confirm-dialog' },\n    encapsulation: ViewEncapsulation.None,\n    standalone: true,\n    imports: [TranslatePipe, MatDialogModule, NgIf, MatButtonModule]\n})\nexport class ConfirmDialogComponent {\n    private readonly sanitizer = inject(DomSanitizer);\n    private readonly data = inject<ConfirmDialogComponentProps>(MAT_DIALOG_DATA) ?? {};\n\n    title: string;\n    message: string;\n    yesLabel: string;\n    noLabel: string;\n    thirdOptionLabel: string;\n    htmlContent: string;\n\n    constructor() {\n        this.title = this.data.title || 'ADF_CONFIRM_DIALOG.TITLE';\n        this.message = this.data.message || 'ADF_CONFIRM_DIALOG.MESSAGE';\n        this.yesLabel = this.data.yesLabel || 'ADF_CONFIRM_DIALOG.YES_LABEL';\n        this.thirdOptionLabel = this.data.thirdOptionLabel;\n        this.noLabel = this.data.noLabel || 'ADF_CONFIRM_DIALOG.NO_LABEL';\n        this.htmlContent = this.data.htmlContent;\n    }\n\n    sanitizedHtmlContent(): string {\n        return this.sanitizer.sanitize(SecurityContext.HTML, this.htmlContent);\n    }\n}\n","<h1 mat-dialog-title data-automation-id=\"adf-confirm-dialog-title\">{{ title | translate }}</h1>\n<mat-dialog-content>\n    <div class=\"adf-confirm-dialog-content\">\n        <p *ngIf=\"!htmlContent; else customContent\" data-automation-id=\"adf-confirm-dialog-base-message\">{{ message | translate }}</p>\n        <ng-template #customContent>\n            <span [innerHTML]=\"sanitizedHtmlContent()\" data-automation-id=\"adf-confirm-dialog-custom-content\"></span>\n        </ng-template>\n    </div>\n</mat-dialog-content>\n<mat-dialog-actions>\n    <span class=\"adf-dialog-spacer\" data-automation-id=\"adf-confirm-dialog-spacer\"></span>\n    <button\n        id=\"adf-confirm-cancel\"\n        class=\"adf-confirm-dialog-button\"\n        mat-button\n        [mat-dialog-close]=\"false\"\n        data-automation-id=\"adf-confirm-dialog-reject\"\n    >\n        {{ noLabel | translate }}\n    </button>\n    <button\n        *ngIf=\"thirdOptionLabel\"\n        id=\"adf-confirm-all\"\n        class=\"adf-confirm-dialog-button\"\n        mat-button\n        [mat-dialog-close]=\"thirdOptionLabel\"\n        data-automation-id=\"adf-confirm-dialog-confirm-all\"\n    >\n        {{ thirdOptionLabel | translate }}\n    </button>\n    <button\n        id=\"adf-confirm-accept\"\n        class=\"adf-confirm-dialog-button\"\n        mat-button\n        color=\"primary\"\n        data-automation-id=\"adf-confirm-dialog-confirmation\"\n        [mat-dialog-close]=\"true\"\n        cdkFocusInitial\n    >\n        {{ yesLabel | translate }}\n    </button>\n</mat-dialog-actions>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NgClass, NgForOf, NgIf, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectorRef, Component, inject, Injector, Input, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { FormRulesManager, formRulesManagerFactory } from '../models/form-rules.model';\nimport { FormService } from '../services/form.service';\nimport { FormFieldComponent } from './form-field/form-field.component';\nimport { FORM_FIELD_MODEL_RENDER_MIDDLEWARE, FormFieldModelRenderMiddleware } from './middlewares/middleware';\nimport { ContainerModel, FormFieldModel, FormModel, TabModel, RepeatWidgetComponent } from './widgets';\nimport { HeaderWidgetComponent } from './widgets/header/header.widget';\nimport { FormSectionComponent } from './form-section/form-section.component';\nimport { DecimalRenderMiddlewareService } from './middlewares/decimal-middleware.service';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ConfirmDialogComponent } from '../../../lib/dialogs/confirm-dialog/confirm.dialog';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { IconModule } from '../../icon/icon.module';\n\n@Component({\n    selector: 'adf-form-renderer',\n    templateUrl: './form-renderer.component.html',\n    styleUrls: ['./form-renderer.component.scss'],\n    providers: [\n        {\n            provide: FormRulesManager,\n            useFactory: formRulesManagerFactory,\n            deps: [Injector]\n        },\n        {\n            provide: FORM_FIELD_MODEL_RENDER_MIDDLEWARE,\n            useClass: DecimalRenderMiddlewareService,\n            multi: true\n        }\n    ],\n    imports: [\n        NgIf,\n        MatTabsModule,\n        NgForOf,\n        NgTemplateOutlet,\n        TranslatePipe,\n        MatButtonModule,\n        IconModule,\n        NgStyle,\n        FormFieldComponent,\n        FormsModule,\n        NgClass,\n        HeaderWidgetComponent,\n        FormSectionComponent,\n        RepeatWidgetComponent,\n        MatTooltipModule\n    ],\n    encapsulation: ViewEncapsulation.None\n})\nexport class FormRendererComponent<T> implements OnInit, OnDestroy {\n    private readonly middlewareServices = inject<FormFieldModelRenderMiddleware[]>(FORM_FIELD_MODEL_RENDER_MIDDLEWARE, { optional: true }) ?? [];\n\n    public readonly formService = inject(FormService);\n    private readonly formRulesManager = inject(FormRulesManager<T>);\n    private readonly dialog = inject(MatDialog);\n    private readonly cdr = inject(ChangeDetectorRef);\n\n    @Input({ required: true })\n    formDefinition: FormModel;\n\n    @Input()\n    readOnly = false;\n\n    debugMode: boolean;\n\n    fields: FormFieldModel[];\n\n    ngOnInit(): void {\n        this.runMiddlewareServices();\n        if (!this.readOnly) {\n            this.formRulesManager.initialize(this.formDefinition);\n        }\n    }\n\n    ngOnDestroy() {\n        this.formRulesManager.destroy();\n    }\n\n    hasTabs(): boolean {\n        return this.formDefinition.tabs && this.formDefinition.tabs.length > 0;\n    }\n\n    visibleTabs(): TabModel[] {\n        return this.formDefinition.tabs.filter((tab) => tab.isVisible);\n    }\n\n    getNumberOfColumns(content: ContainerModel): number {\n        return (content.json?.numberOfColumns || 1) > (content.columns?.length || 1)\n            ? content.json?.numberOfColumns || 1\n            : content.columns?.length || 1;\n    }\n\n    /**\n     * Serializes column fields\n     *\n     * @param content container model\n     * @returns a list of form field models\n     */\n    getContainerFields(content: ContainerModel): FormFieldModel[] {\n        const serialisedFormFields: FormFieldModel[] = [];\n        const maxColumnFieldsSize = this.getMaxColumnFieldSize(content);\n        for (let rowIndex = 0; rowIndex < maxColumnFieldsSize; rowIndex++) {\n            content?.columns.flatMap((currentColumn) => {\n                if (currentColumn?.fields[rowIndex]) {\n                    serialisedFormFields.push(currentColumn?.fields[rowIndex]);\n                } else {\n                    const firstRowElementColSpan = currentColumn?.fields[0]?.colspan;\n                    if (!!firstRowElementColSpan && rowIndex > 0) {\n                        for (let i = 0; i < firstRowElementColSpan; i++) {\n                            serialisedFormFields.push(null);\n                        }\n                    }\n                }\n            });\n        }\n\n        return serialisedFormFields;\n    }\n\n    private getMaxColumnFieldSize(content: ContainerModel): number {\n        let maxFieldSize = 0;\n        if (content?.columns?.length > 0) {\n            maxFieldSize = content?.columns?.reduce((prevColumn, currentColumn) =>\n                currentColumn.fields.length > prevColumn?.fields?.length ? currentColumn : prevColumn\n            )?.fields?.length;\n        }\n        return maxFieldSize;\n    }\n\n    displayDialogToRemoveRow(field: FormFieldModel, rowIndex: number) {\n        this.dialog\n            .open(ConfirmDialogComponent, {\n                data: {\n                    title: 'FORM.FORM_RENDERER.REMOVE_ROW_DIALOG.TITLE',\n                    message: 'FORM.FORM_RENDERER.REMOVE_ROW_DIALOG.MESSAGE',\n                    yesLabel: 'FORM.FORM_RENDERER.REMOVE_ROW_DIALOG.YES_LABEL',\n                    noLabel: 'FORM.FORM_RENDERER.REMOVE_ROW_DIALOG.NO_LABEL'\n                },\n                minWidth: '500px',\n                closeOnNavigation: true\n            })\n            .beforeClosed()\n            .subscribe((shouldRemove) => {\n                if (shouldRemove) {\n                    field.removeRow(rowIndex);\n                    this.cdr.detectChanges();\n                }\n            });\n    }\n\n    /**\n     * Calculate the column width based on the numberOfColumns and current field's colspan property\n     *\n     * @param container container model\n     * @returns the column width for the given model\n     */\n    getColumnWidth(container: ContainerModel): string {\n        const { field } = container;\n        const colspan = field ? field.colspan : 1;\n        return (100 / field.numberOfColumns) * colspan + '';\n    }\n\n    private runMiddlewareServices(): void {\n        if (this.middlewareServices && this.middlewareServices.length > 0) {\n            const formFields = this.formDefinition.getFormFields();\n\n            formFields.forEach((field) => {\n                this.middlewareServices.forEach((middlewareService) => {\n                    if (middlewareService.type === field.type) {\n                        field = middlewareService.getParsedField(field);\n                    }\n                });\n            });\n        }\n    }\n}\n","<div id=\"adf-form-renderer\" class=\"{{ formDefinition.className }} adf-form-renderer\"\n     [ngClass]=\"{ 'adf-readonly-form': formDefinition.readOnly }\">\n    <div *ngIf=\"formDefinition.hasTabs()\">\n        <div *ngIf=\"hasTabs()\" class=\"alfresco-tabs-widget\">\n            <mat-tab-group [preserveContent]=\"true\">\n                <mat-tab *ngFor=\"let tab of visibleTabs()\" [label]=\"tab.title | translate \">\n                    <ng-template matTabContent>\n                        <div class=\"adf-form-tab-content\">\n                            <ng-template *ngTemplateOutlet=\"render; context: { fieldToRender: tab.fields }\" />\n                        </div>\n                    </ng-template>\n                </mat-tab>\n            </mat-tab-group>\n        </div>\n    </div>\n\n    <div *ngIf=\"!formDefinition.hasTabs() && formDefinition.hasFields()\">\n        <ng-template *ngTemplateOutlet=\"render; context: { fieldToRender: formDefinition.fields }\" />\n    </div>\n</div>\n\n<ng-template #render let-fieldToRender=\"fieldToRender\">\n    <div *ngFor=\"let currentRootElement of fieldToRender\">\n        <div *ngIf=\"currentRootElement.type === 'section'\" [id]=\"'field-' + currentRootElement?.id + '-container'\" class=\"adf-container-widget\">\n            <adf-form-section [field]=\"currentRootElement\" />\n        </div>\n\n        <div *ngIf=\"currentRootElement.type === 'container' || currentRootElement.type === 'group'\"\n             [id]=\"'field-' + currentRootElement?.id + '-container'\"\n             class=\"adf-container-widget\"\n             [hidden]=\"!currentRootElement?.isVisible\">\n            <adf-header-widget [element]=\"currentRootElement\" />\n            <div *ngIf=\"currentRootElement?.form?.enableFixedSpace; else fixingTemplate\">\n                <div class=\"adf-grid-list\"\n                     [ngStyle]=\"{ 'grid-template-columns': 'repeat(' + getNumberOfColumns(currentRootElement) + ', 1fr)' }\"\n                     *ngIf=\"currentRootElement?.isExpanded\">\n                    <div class=\"adf-grid-list-item\"\n                         *ngFor=\"let field of getContainerFields(currentRootElement)\"\n                         [ngStyle]=\"{ 'grid-area': 'auto / auto / span ' + (field?.rowspan || 1) + ' / span ' + (field?.colspan || 1) }\">\n                        <adf-form-field *ngIf=\"field\" [field]=\"field\" />\n                    </div>\n                </div>\n            </div>\n\n            <ng-template #fixingTemplate>\n                <section class=\"adf-grid-list-column-view\" *ngIf=\"currentRootElement?.isExpanded\">\n                    <div class=\"adf-grid-list-single-column\"\n                         *ngFor=\"let column of currentRootElement?.columns\"\n                         [style.width.%]=\"getColumnWidth(currentRootElement)\"\n                    >\n                        <ng-container *ngFor=\"let field of column?.fields\">\n                            <ng-container *ngIf=\"field.type === 'section'; else formField\">\n                                <adf-form-section [field]=\"field\"/>\n                            </ng-container>\n                            <ng-template #formField>\n                                <div class=\"adf-grid-list-column-view-item\">\n                                    <adf-form-field [field]=\"field\"/>\n                                </div>\n                            </ng-template>\n                        </ng-container>\n                    </div>\n                </section>\n            </ng-template>\n\n            <ng-template #columnViewItem let-column=\"column\">\n                <div class=\"adf-grid-list-column-view-item\" *ngFor=\"let field of column?.fields\">\n                    <adf-form-field *ngIf=\"field\" [field]=\"field\" />\n                </div>\n            </ng-template>\n        </div>\n\n        @if (currentRootElement.type === 'repeatable-section') {\n            <div \n                [id]=\"'field-' + currentRootElement?.id + '-container'\"\n                class=\"adf-container-widget\"\n                [hidden]=\"!currentRootElement?.isVisible\"\n            >\n                <adf-repeat-widget [element]=\"currentRootElement\" [isEditor]=\"false\">\n                    @for (row of currentRootElement.field.rows; track row.id; let rowIndex = $index) {\n                        @let hasMultipleRows = currentRootElement.field.rows.length > 1;\n                        <div \n                            class=\"adf-grid-list-container\"\n                            [class.adf-grid-list-container-multiple]=\"hasMultipleRows\"\n                            [class.adf-grid-list-container-disabled]=\"currentRootElement.field.readOnly\"\n                        >   \n                            <div class=\"adf-grid-list-row\">\n                                <span  class=\"adf-grid-list-row-label\">{{ 'FORM.FORM_RENDERER.ROW_LABEL' | translate: {number: rowIndex + 1} }}</span>\n\n                                @let shouldDisplayRemoveRowButton = !currentRootElement.field.rows[rowIndex].isInitial || (currentRootElement.field.rows[rowIndex].isInitial && currentRootElement.field.params.allowInitialRowsDelete);\n                                @if (shouldDisplayRemoveRowButton) {\n                                    <button \n                                        mat-icon-button\n                                        class=\"adf-grid-list-row-remove-button\"\n                                        [disabled]=\"currentRootElement.field.readOnly\"\n                                        [matTooltip]=\"'FORM.FORM_RENDERER.DELETE_ROW' | translate\"\n                                        (click)=\"displayDialogToRemoveRow(currentRootElement.field, rowIndex)\"\n                                    >\n                                        <mat-icon adf-icon=\"close\" />\n                                    </button>\n                                }\n                            </div>\n                            <section  class=\"adf-grid-list-column-view\">\n                                @for (column of row.columns; track $index) {\n                                    <div \n                                        class=\"adf-grid-list-single-column\"\n                                        [style.width.%]=\"getColumnWidth(currentRootElement)\"\n                                    >\n                                        @for (field of column?.fields; track $index) {\n                                            @if (field.type === 'section') {\n                                                <adf-form-section [field]=\"field\"/>\n                                            } @else {\n                                                <div class=\"adf-grid-list-column-view-item\">\n                                                    <adf-form-field [field]=\"field\"/>\n                                                </div>\n                                            }\n                                        }\n                                    </div>\n                                }\n                            </section>\n                        </div>\n                    }\n                </adf-repeat-widget>\n            </div>\n        }\n\n        <div *ngIf=\"currentRootElement.type === 'dynamic-table'\" class=\"adf-container-widget\">\n            <adf-form-field [field]=\"currentRootElement\" />\n        </div>\n\n        <div class=\"adf-container-widget\"\n             *ngIf=\"currentRootElement.type === 'readonly' && currentRootElement.field.params.field.type === 'dynamic-table'\">\n            <adf-form-field [field]=\"currentRootElement.field\"/>\n        </div>\n    </div>\n</ng-template>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Subject } from 'rxjs';\nimport { FormFieldEvent } from '../events/form-field.event';\nimport { ValidateFormFieldEvent } from '../events/validate-form-field.event';\nimport { ValidateFormEvent } from '../events/validate-form.event';\n\nexport interface FormValidationService {\n    formFieldValueChanged: Subject<FormFieldEvent>;\n    validateForm: Subject<ValidateFormEvent>;\n    validateFormField: Subject<ValidateFormFieldEvent>;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './field-style.pipe';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NgModule } from '@angular/core';\nimport { StartFormCustomButtonDirective } from './components/form-custom-button.directive';\nimport { FormFieldComponent } from './components/form-field/form-field.component';\nimport { FormRendererComponent } from './components/form-renderer.component';\nimport { InplaceFormInputComponent } from './components/inplace-form-input/inplace-form-input.component';\nimport { MASK_DIRECTIVE, WIDGET_DIRECTIVES, WidgetComponent } from './components/widgets';\n\n/** @deprecated This module is deprecated and will be removed in a future release. Use standalone components instead. */\n@NgModule({\n    imports: [\n        FormFieldComponent,\n        FormRendererComponent,\n        WidgetComponent,\n        StartFormCustomButtonDirective,\n        InplaceFormInputComponent,\n        ...WIDGET_DIRECTIVES,\n        ...MASK_DIRECTIVE\n    ],\n    exports: [\n        FormFieldComponent,\n        FormRendererComponent,\n        StartFormCustomButtonDirective,\n        ...WIDGET_DIRECTIVES,\n        InplaceFormInputComponent,\n        WidgetComponent\n    ]\n})\nexport class FormBaseModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport class TaskProcessVariableModel {\n    id?: string;\n    type?: string;\n    value: string;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './components/form-field/form-field.component';\nexport * from './components/form-base.component';\nexport * from './components/inplace-form-input/inplace-form-input.component';\nexport * from './components/form-custom-button.directive';\nexport * from './components/form-renderer.component';\nexport * from './components/widgets';\nexport * from './components/middlewares/middleware';\nexport * from './components/middlewares/decimal-middleware.service';\nexport * from './components/helpers/buttons-visibility';\n\nexport * from './services/form-rendering.service';\nexport * from './services/form.service';\nexport * from './services/form-expression.service';\nexport * from './services/form-validation-service.interface';\nexport * from './services/widget-visibility.service';\n\nexport * from './pipes';\n\nexport * from './events';\n\nexport * from './form-base.module';\n\nexport * from './models/form-rules.model';\nexport * from './models/task-process-variable.model';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, Input, Output, EventEmitter, ViewEncapsulation, OnInit, inject } from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport { AppConfigService } from '../../../app-config/app-config.service';\nimport { CommonModule } from '@angular/common';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatButtonModule } from '@angular/material/button';\nimport { RouterModule } from '@angular/router';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { IconModule } from '../../../icon/icon.module';\n\n@Component({\n    selector: 'adf-layout-header',\n    imports: [CommonModule, MatToolbarModule, MatButtonModule, IconModule, RouterModule, TranslatePipe],\n    templateUrl: './header.component.html',\n    styleUrls: ['./header.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    host: { class: 'adf-layout-header' }\n})\nexport class HeaderLayoutComponent implements OnInit {\n    private readonly appConfigService = inject(AppConfigService);\n\n    /** Title of the application. */\n    @Input() title: string;\n\n    /** Path to an image file for the application logo. */\n    @Input() logo: string;\n\n    /** Toggles whether the logo will be displayed inside the header or not. */\n    @Input() showLogo: boolean = true;\n\n    /** The router link for the application logo, when clicked. */\n    @Input() redirectUrl: string | any[] = '/';\n\n    /** The tooltip text for the application logo. */\n    @Input() tooltip: string;\n\n    /**\n     * Background color for the header. It can be any hex color code or one\n     * of the Material theme colors: 'primary', 'accent' or 'warn'.\n     */\n    @Input() color: ThemePalette | string;\n\n    /** Path to a background image for the header. */\n    @Input() backgroundImage = '';\n\n    /**\n     * Toggles whether the sidenav button will be displayed in the header\n     * or not.\n     */\n    @Input() showSidenavToggle: boolean = true;\n\n    /** The toggle icon that will be used inside header. */\n    @Input() toggleIcon = 'menu';\n\n    /** Emitted when the sidenav button is clicked. */\n    @Output() clicked = new EventEmitter<boolean>();\n\n    /** expandedSidenav: Toggles the expanded state of the component. */\n    @Input() expandedSidenav: boolean = true;\n\n    /** The side of the page that the drawer is attached to (can be 'start' or 'end') */\n    @Input() position = 'start';\n\n    toggleMenu() {\n        this.clicked.emit(true);\n        this.expandedSidenav = !this.expandedSidenav;\n    }\n\n    ngOnInit() {\n        const textColor = this.appConfigService.get<string | undefined>('headerTextColor');\n        if (textColor) {\n            document.documentElement.style.setProperty('--theme-header-text-color', textColor);\n        }\n\n        if (!this.logo) {\n            this.logo = './assets/images/logo.png';\n        }\n    }\n}\n","<mat-toolbar\n    class=\"adf-toolbar-container-row\"\n    [color]=\"color\"\n    [style.background-color]=\"color\"\n    [style.background-image]=\"backgroundImage ? 'url(' + backgroundImage + ')' : 'none'\">\n    <button\n        *ngIf=\"showSidenavToggle && position === 'start'\"\n        id=\"adf-sidebar-toggle-start\"\n        data-automation-id=\"adf-menu-icon\"\n        class=\"adf-menu-icon adf-header-icon-button\"\n        mat-icon-button\n        (click)=\"toggleMenu()\"\n        [attr.aria-expanded]=\"expandedSidenav\"\n        [attr.aria-label]=\"'CORE.HEADER.ACCESSIBILITY.SIDEBAR_TOGGLE_BUTTON_ARIA_LABEL' | translate\">\n        <mat-icon class=\"adf-menu-icon-header\" role=\"img\" aria-hidden=\"true\" [adf-icon]=\"toggleIcon\" />\n    </button>\n\n    <a *ngIf=\"showLogo\" [routerLink]=\"redirectUrl\" title=\"{{ tooltip }}\">\n        <img\n            src=\"{{ logo }}\"\n            class=\"adf-app-logo\"\n            alt=\"{{ 'CORE.HEADER.LOGO_ARIA' | translate }}\"\n        />\n    </a>\n\n    <h1\n        role=\"link\"\n        [attr.aria-label]=\"title | translate\"\n        [routerLink]=\"redirectUrl\"\n        class=\"adf-app-title\"\n        >\n        {{ title }}\n    </h1>\n\n    <ng-content />\n\n    <button\n        *ngIf=\"showSidenavToggle && position === 'end'\"\n        id=\"adf-sidebar-toggle-end\"\n        data-automation-id=\"adf-menu-icon\"\n        class=\"adf-menu-icon adf-header-icon-button\"\n        mat-icon-button\n        (click)=\"toggleMenu()\"\n        [attr.aria-expanded]=\"expandedSidenav\"\n        [attr.aria-label]=\"'CORE.HEADER.ACCESSIBILITY.SIDEBAR_TOGGLE_BUTTON_ARIA_LABEL' | translate\">\n        <mat-icon class=\"adf-menu-icon-header\" role=\"img\" aria-hidden=\"true\" [adf-icon]=\"toggleIcon\" />\n    </button>\n</mat-toolbar>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, Input, ViewChild, OnInit, OnDestroy, ViewEncapsulation, OnChanges, SimpleChanges } from '@angular/core';\nimport { MatSidenav, MatSidenavModule } from '@angular/material/sidenav';\nimport { Direction } from '@angular/cdk/bidi';\nimport { CommonModule } from '@angular/common';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\n\n@Component({\n    selector: 'adf-layout-container',\n    imports: [CommonModule, MatSidenavModule],\n    templateUrl: './layout-container.component.html',\n    styleUrls: ['./layout-container.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    animations: [\n        trigger('sidenavAnimation', [\n            state('expanded', style({ width: '{{ width }}px' }), { params: { width: 0 } }),\n            state('compact', style({ width: '{{ width }}px' }), { params: { width: 0 } }),\n            transition('compact <=> expanded', animate('0.4s cubic-bezier(0.25, 0.8, 0.25, 1)'))\n        ]),\n        trigger('contentAnimationLeft', [\n            state(\n                'expanded',\n                style({\n                    'margin-left': '{{ margin-left }}px',\n                    'margin-right': '{{ margin-right }}px'\n                }),\n                { params: { 'margin-left': 0, 'margin-right': 0 } }\n            ),\n            state(\n                'compact',\n                style({\n                    'margin-left': '{{ margin-left }}px',\n                    'margin-right': '{{ margin-right }}px'\n                }),\n                { params: { 'margin-left': 0, 'margin-right': 0 } }\n            ),\n            transition('expanded <=> compact', animate('400ms cubic-bezier(0.25, 0.8, 0.25, 1)'))\n        ])\n    ]\n})\nexport class LayoutContainerComponent implements OnInit, OnDestroy, OnChanges {\n    @Input() sidenavMin: number;\n    @Input() sidenavMax: number;\n\n    // \" | any\", because Safari throws an error otherwise...\n    @Input() mediaQueryList: MediaQueryList | any;\n\n    @Input() hideSidenav = false;\n    @Input() expandedSidenav = true;\n\n    /** The side that the drawer is attached to 'start' | 'end' page */\n    @Input() position: 'start' | 'end' = 'start';\n\n    /** Layout text orientation 'ltr' | 'rtl' */\n    @Input() direction: Direction = 'ltr';\n\n    @ViewChild(MatSidenav, { static: true }) sidenav: MatSidenav;\n\n    sidenavAnimationState: any;\n    contentAnimationState: any;\n\n    SIDENAV_STATES = { MOBILE: {}, EXPANDED: {}, COMPACT: {} };\n    CONTENT_STATES = { MOBILE: {}, EXPANDED: {}, COMPACT: {} };\n\n    constructor() {\n        this.onMediaQueryChange = this.onMediaQueryChange.bind(this);\n    }\n\n    ngOnInit() {\n        this.SIDENAV_STATES.MOBILE = { value: 'expanded', params: { width: this.sidenavMax } };\n        this.SIDENAV_STATES.EXPANDED = { value: 'expanded', params: { width: this.sidenavMax } };\n        this.SIDENAV_STATES.COMPACT = { value: 'compact', params: { width: this.sidenavMin } };\n\n        this.CONTENT_STATES.MOBILE = { value: 'expanded' };\n\n        this.mediaQueryList?.addListener(this.onMediaQueryChange);\n\n        this.updateSidenavState();\n    }\n\n    ngOnDestroy(): void {\n        this.mediaQueryList?.removeListener(this.onMediaQueryChange);\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        if (changes?.direction) {\n            this.contentAnimationState = this.toggledContentAnimation;\n        }\n    }\n\n    toggleMenu(): void {\n        if (this.isMobileScreenSize) {\n            this.sidenav.toggle();\n        } else {\n            this.sidenavAnimationState = this.toggledSidenavAnimation;\n            this.contentAnimationState = this.toggledContentAnimation;\n        }\n    }\n\n    get isMobileScreenSize(): boolean {\n        return !!this.mediaQueryList?.matches;\n    }\n\n    getContentAnimationState(): any {\n        return this.contentAnimationState;\n    }\n\n    private get toggledSidenavAnimation(): any {\n        return this.sidenavAnimationState === this.SIDENAV_STATES.EXPANDED ? this.SIDENAV_STATES.COMPACT : this.SIDENAV_STATES.EXPANDED;\n    }\n\n    private get toggledContentAnimation(): any {\n        if (this.isMobileScreenSize) {\n            return this.CONTENT_STATES.MOBILE;\n        }\n\n        if (this.sidenavAnimationState === this.SIDENAV_STATES.EXPANDED) {\n            if (this.position === 'start' && this.direction === 'ltr') {\n                return { value: 'compact', params: { 'margin-left': this.sidenavMax } };\n            }\n\n            if (this.position === 'start' && this.direction === 'rtl') {\n                return { value: 'compact', params: { 'margin-right': this.sidenavMax } };\n            }\n\n            if (this.position === 'end' && this.direction === 'ltr') {\n                return { value: 'compact', params: { 'margin-right': this.sidenavMax } };\n            }\n\n            if (this.position === 'end' && this.direction === 'rtl') {\n                return { value: 'compact', params: { 'margin-left': this.sidenavMax } };\n            }\n        } else {\n            if (this.position === 'start' && this.direction === 'ltr') {\n                return { value: 'expanded', params: { 'margin-left': this.sidenavMin } };\n            }\n\n            if (this.position === 'start' && this.direction === 'rtl') {\n                return { value: 'expanded', params: { 'margin-right': this.sidenavMin } };\n            }\n\n            if (this.position === 'end' && this.direction === 'ltr') {\n                return { value: 'expanded', params: { 'margin-right': this.sidenavMin } };\n            }\n\n            if (this.position === 'end' && this.direction === 'rtl') {\n                return { value: 'expanded', params: { 'margin-left': this.sidenavMin } };\n            }\n        }\n    }\n\n    private onMediaQueryChange(): void {\n        this.updateSidenavState();\n    }\n\n    private updateSidenavState(): void {\n        if (this.isMobileScreenSize) {\n            this.sidenavAnimationState = this.SIDENAV_STATES.MOBILE;\n            this.contentAnimationState = this.CONTENT_STATES.MOBILE;\n        } else {\n            if (this.expandedSidenav && !this.hideSidenav) {\n                this.sidenavAnimationState = this.SIDENAV_STATES.EXPANDED;\n                this.contentAnimationState = this.toggledContentAnimation;\n                this.sidenav.open();\n            } else {\n                this.sidenavAnimationState = this.SIDENAV_STATES.COMPACT;\n                this.contentAnimationState = this.toggledContentAnimation;\n            }\n        }\n    }\n}\n","<mat-sidenav-container class=\"adf-layout-container\" autosize>\n    <mat-sidenav\n        class=\"adf-layout-container-sidenav\"\n        [position]=\"position\"\n        [disableClose]=\"!isMobileScreenSize\"\n        [@sidenavAnimation]=\"sidenavAnimationState\"\n        [opened]=\"!isMobileScreenSize || !hideSidenav\"\n        [mode]=\"isMobileScreenSize ? 'over' : 'side'\">\n        <ng-content sidenav select=\"[app-layout-navigation]\" />\n    </mat-sidenav>\n\n    <div>\n        <div class=\"adf-container-full-width\" [@contentAnimationLeft]=\"getContentAnimationState()\">\n            <ng-content select=\"[app-layout-content]\" />\n        </div>\n    </div>\n</mat-sidenav-container>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChangeDetectionStrategy, Component, Directive, Input, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\n\n@Component({\n    selector: 'adf-sidebar-action-menu',\n    imports: [CommonModule, MatButtonModule, MatMenuModule],\n    templateUrl: './sidebar-action-menu.component.html',\n    styleUrls: ['./sidebar-action-menu.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: { class: 'adf-sidebar-action-menu' }\n})\nexport class SidebarActionMenuComponent {\n    /** The title of the sidebar action. */\n    @Input()\n    title: string;\n\n    /** Toggle the sidebar action menu on expand. */\n    @Input()\n    expanded: boolean;\n\n    /** Width in pixels for sidebar action menu options. */\n    @Input()\n    width: number = 272;\n\n    isExpanded(): boolean {\n        return this.expanded;\n    }\n}\n\n/**\n * Directive selectors without adf- prefix will be deprecated on 3.0.0\n */\n@Directive({\n    selector: '[adf-sidebar-menu-options], [sidebar-menu-options]'\n})\nexport class SidebarMenuDirective {}\n\n@Directive({\n    selector: '[adf-sidebar-menu-title-icon], [sidebar-menu-title-icon]'\n})\nexport class SidebarMenuTitleIconDirective {}\n\n@Directive({\n    selector: '[adf-sidebar-menu-expand-icon], [sidebar-menu-expand-icon]'\n})\nexport class SidebarMenuExpandIconDirective {}\n","<div class=\"adf-sidebar-action-menu\">\n    <button *ngIf=\"isExpanded()\" mat-raised-button class=\"adf-sidebar-action-menu-button\" data-automation-id=\"create-button\" [matMenuTriggerFor]=\"adfSidebarMenu\">\n        <span *ngIf=\"title\" class=\"adf-sidebar-action-menu-text\">{{ title }}</span>\n        <ng-content select=\"[adf-sidebar-menu-title-icon], [sidebar-menu-title-icon]\" />\n    </button>\n\n    <div *ngIf=\"!isExpanded()\" class=\"adf-sidebar-action-menu-icon\" [matMenuTriggerFor]=\"adfSidebarMenu\">\n        <ng-content select=\"[adf-sidebar-menu-expand-icon], [sidebar-menu-expand-icon]\" />\n    </div>\n\n    <mat-menu #adfSidebarMenu=\"matMenu\" class=\"adf-sidebar-action-menu-panel\" [overlapTrigger]=\"false\" yPosition=\"below\">\n        <div class=\"adf-sidebar-action-menu-options\" [style.width.px]=\"width\">\n            <ng-content select=\"[adf-sidebar-menu-options], [sidebar-menu-options]\" />\n        </div>\n    </mat-menu>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ContentChild, Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n    selector: 'adf-sidenav-layout-content'\n})\nexport class SidenavLayoutContentDirective {\n    @ContentChild(TemplateRef)\n    public template: TemplateRef<any>;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ContentChild, Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n    selector: 'adf-sidenav-layout-header'\n})\nexport class SidenavLayoutHeaderDirective {\n    @ContentChild(TemplateRef)\n    public template: TemplateRef<any>;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ContentChild, Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n    selector: 'adf-sidenav-layout-navigation'\n})\nexport class SidenavLayoutNavigationDirective {\n    @ContentChild(TemplateRef)\n    public template: TemplateRef<any>;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n    AfterViewInit,\n    ChangeDetectorRef,\n    Component,\n    ContentChild,\n    DestroyRef,\n    EventEmitter,\n    inject,\n    Input,\n    OnDestroy,\n    OnInit,\n    Output,\n    TemplateRef,\n    ViewChild,\n    ViewEncapsulation\n} from '@angular/core';\nimport { MediaMatcher } from '@angular/cdk/layout';\nimport { UserPreferencesService } from '../../../common/services/user-preferences.service';\nimport { SidenavLayoutContentDirective } from '../../directives/sidenav-layout-content.directive';\nimport { SidenavLayoutHeaderDirective } from '../../directives/sidenav-layout-header.directive';\nimport { SidenavLayoutNavigationDirective } from '../../directives/sidenav-layout-navigation.directive';\nimport { BehaviorSubject } from 'rxjs';\nimport { Direction } from '@angular/cdk/bidi';\nimport { CommonModule } from '@angular/common';\nimport { LayoutContainerComponent } from '../layout-container/layout-container.component';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n    selector: 'adf-sidenav-layout',\n    imports: [CommonModule, LayoutContainerComponent],\n    templateUrl: './sidenav-layout.component.html',\n    styleUrls: ['./sidenav-layout.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    host: { class: 'adf-sidenav-layout' }\n})\nexport class SidenavLayoutComponent implements OnInit, AfterViewInit, OnDestroy {\n    private readonly mediaMatcher = inject(MediaMatcher);\n    private readonly userPreferencesService = inject(UserPreferencesService);\n    private readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n    static STEP_OVER = 600;\n\n    /** The direction of the layout. 'ltr' or 'rtl' */\n    dir: Direction = 'ltr';\n\n    /** The side that the drawer is attached to. Possible values are 'start' and 'end'. */\n    @Input() position: 'start' | 'end' = 'start';\n\n    /** Minimum size of the navigation region. */\n    @Input() sidenavMin: number;\n\n    /** Maximum size of the navigation region. */\n    @Input() sidenavMax: number;\n\n    /** Screen size at which display switches from small screen to large screen configuration. */\n    @Input() stepOver: number;\n\n    /** Toggles showing/hiding the navigation region. */\n    @Input() hideSidenav = false;\n\n    /** Should the navigation region be expanded initially? */\n    @Input() expandedSidenav = true;\n\n    /** Emitted when the menu toggle and the collapsed/expanded state of the sideNav changes. */\n    @Output() expanded = new EventEmitter<boolean>();\n\n    @ContentChild(SidenavLayoutHeaderDirective)\n    headerDirective: SidenavLayoutHeaderDirective;\n\n    @ContentChild(SidenavLayoutNavigationDirective)\n    navigationDirective: SidenavLayoutNavigationDirective;\n\n    @ContentChild(SidenavLayoutContentDirective)\n    contentDirective: SidenavLayoutContentDirective;\n\n    private readonly menuOpenStateSubject = new BehaviorSubject<boolean>(false);\n    public menuOpenState$ = this.menuOpenStateSubject.asObservable();\n\n    @ViewChild('container', { static: true }) container: any;\n    @ViewChild('emptyTemplate', { static: true }) emptyTemplate: any;\n\n    mediaQueryList: MediaQueryList;\n    _isMenuMinimized;\n\n    templateContext = {\n        toggleMenu: () => {},\n        isMenuMinimized: () => this.isMenuMinimized\n    };\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    constructor() {\n        this.onMediaQueryChange = this.onMediaQueryChange.bind(this);\n    }\n\n    ngOnInit() {\n        const initialMenuState = !this.expandedSidenav;\n\n        const stepOver = this.stepOver || SidenavLayoutComponent.STEP_OVER;\n        this.isMenuMinimized = initialMenuState;\n\n        this.mediaQueryList = this.mediaMatcher.matchMedia(`(max-width: ${stepOver}px)`);\n        this.mediaQueryList.addListener(this.onMediaQueryChange);\n\n        this.userPreferencesService\n            .select('textOrientation')\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe((direction: Direction) => {\n                this.dir = direction;\n            });\n    }\n\n    ngAfterViewInit() {\n        this.templateContext.toggleMenu = this.toggleMenu.bind(this);\n    }\n\n    ngOnDestroy(): void {\n        this.mediaQueryList.removeListener(this.onMediaQueryChange);\n    }\n\n    toggleMenu() {\n        if (!this.mediaQueryList.matches) {\n            this.isMenuMinimized = !this.isMenuMinimized;\n        } else {\n            this.isMenuMinimized = false;\n        }\n        this.changeDetectorRef.detectChanges();\n\n        this.container.toggleMenu();\n        this.expanded.emit(!this.isMenuMinimized);\n    }\n\n    get isMenuMinimized() {\n        return this._isMenuMinimized;\n    }\n\n    set isMenuMinimized(menuState: boolean) {\n        this._isMenuMinimized = menuState;\n        this.menuOpenStateSubject.next(!menuState);\n    }\n\n    get isHeaderInside() {\n        return this.mediaQueryList.matches;\n    }\n\n    get headerTemplate(): TemplateRef<any> {\n        return this?.headerDirective?.template || this.emptyTemplate;\n    }\n\n    get navigationTemplate(): TemplateRef<any> {\n        return this?.navigationDirective?.template || this.emptyTemplate;\n    }\n\n    get contentTemplate(): TemplateRef<any> {\n        return this?.contentDirective?.template || this.emptyTemplate;\n    }\n\n    onMediaQueryChange() {\n        this.isMenuMinimized = false;\n        this.expanded.emit(!this.isMenuMinimized);\n    }\n}\n","<div class=\"adf-sidenav-layout-full-space\">\n    <ng-container *ngIf=\"!isHeaderInside\">\n        <ng-container class=\"adf-sidenav-layout-outer-header\"\n                      *ngTemplateOutlet=\"headerTemplate; context:templateContext\" />\n    </ng-container>\n\n    <adf-layout-container #container\n                          [direction]=\"dir\"\n                          [position]=\"position\"\n                          [sidenavMin]=\"sidenavMin\"\n                          [sidenavMax]=\"sidenavMax\"\n                          [mediaQueryList]=\"mediaQueryList\"\n                          [hideSidenav]=\"hideSidenav\"\n                          [expandedSidenav]=\"expandedSidenav\"\n                          data-automation-id=\"adf-layout-container\"\n                          class=\"adf-layout__content\">\n\n        <ng-container app-layout-navigation\n                      *ngTemplateOutlet=\"navigationTemplate; context:templateContext\" />\n\n        <ng-container app-layout-content>\n            <ng-container *ngIf=\"isHeaderInside\">\n                <ng-container *ngTemplateOutlet=\"headerTemplate; context:templateContext\" />\n            </ng-container>\n            <ng-container *ngTemplateOutlet=\"contentTemplate; context:templateContext\" />\n        </ng-container>\n    </adf-layout-container>\n\n    <ng-template #emptyTemplate />\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NgModule } from '@angular/core';\nimport { SidenavLayoutContentDirective } from './directives/sidenav-layout-content.directive';\nimport { SidenavLayoutHeaderDirective } from './directives/sidenav-layout-header.directive';\nimport { SidenavLayoutNavigationDirective } from './directives/sidenav-layout-navigation.directive';\nimport { SidenavLayoutComponent } from './components/sidenav-layout/sidenav-layout.component';\nimport { LayoutContainerComponent } from './components/layout-container/layout-container.component';\nimport {\n    SidebarActionMenuComponent,\n    SidebarMenuDirective,\n    SidebarMenuExpandIconDirective,\n    SidebarMenuTitleIconDirective\n} from './components/sidebar-action/sidebar-action-menu.component';\nimport { HeaderLayoutComponent } from './components/header/header.component';\n\nexport const LAYOUT_DIRECTIVES = [\n    SidenavLayoutHeaderDirective,\n    SidenavLayoutContentDirective,\n    SidenavLayoutNavigationDirective,\n    SidebarMenuDirective,\n    SidebarMenuExpandIconDirective,\n    SidebarMenuTitleIconDirective,\n    HeaderLayoutComponent,\n    SidebarActionMenuComponent,\n    LayoutContainerComponent,\n    SidenavLayoutComponent\n] as const;\n\n/** @deprecated Use `...LAYOUT_DIRECTIVES` instead, or import standalone components directly */\n@NgModule({\n    imports: [...LAYOUT_DIRECTIVES],\n    exports: [...LAYOUT_DIRECTIVES]\n})\nexport class SidenavLayoutModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './components/header/header.component';\nexport * from './components/layout-container/layout-container.component';\nexport * from './components/sidebar-action/sidebar-action-menu.component';\nexport * from './components/sidenav-layout/sidenav-layout.component';\n\nexport * from './directives/sidenav-layout-content.directive';\nexport * from './directives/sidenav-layout-header.directive';\nexport * from './directives/sidenav-layout-navigation.directive';\n\nexport * from './layout.module';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { InjectionToken } from '@angular/core';\n\nexport const ADF_COMMENTS_SERVICE = new InjectionToken('ADF_COMMENTS_SERVICE');\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, EventEmitter, inject, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { CommentModel } from '../../models/comment.model';\nimport { CommentsService } from '../interfaces/comments-service.interface';\nimport { ADF_COMMENTS_SERVICE } from '../interfaces/comments.token';\nimport { CommonModule } from '@angular/common';\nimport { MatListModule } from '@angular/material/list';\nimport { MatLineModule } from '@angular/material/core';\nimport { TimeAgoPipe } from '../../pipes';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n@Component({\n    selector: 'adf-comment-list',\n    imports: [CommonModule, MatListModule, MatLineModule, TimeAgoPipe, TranslatePipe],\n    templateUrl: './comment-list.component.html',\n    styleUrls: ['./comment-list.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class CommentListComponent {\n    /** The comments data used to populate the list. */\n    @Input({ required: true })\n    comments: CommentModel[];\n\n    /** Emitted when the user clicks on one of the comment rows. */\n    @Output()\n    clickRow = new EventEmitter<CommentModel>();\n\n    private readonly commentsService = inject<CommentsService>(ADF_COMMENTS_SERVICE);\n\n    selectComment(comment: CommentModel): void {\n        this.clickRow.emit(comment);\n    }\n\n    getUserImage(userId: string): string {\n        return this.commentsService.getUserImage(userId);\n    }\n}\n"," <mat-list class=\"adf-comment-list\">\n    <mat-list-item *ngFor=\"let comment of comments\"\n                  (click)=\"selectComment(comment)\"\n                  class=\"adf-comment-list-item\">\n        <div class=\"adf-comment-img-container\">\n            <div *ngIf=\"!comment.hasAvatarPicture\" class=\"adf-comment-user-icon\">{{ comment.userInitials }}</div>\n            <img *ngIf=\"comment.hasAvatarPicture\" class=\"adf-people-img\"\n                 [alt]=\"'COMMENTS.PROFILE_IMAGE' | translate\"\n                 [src]=\"getUserImage(comment.createdBy.id.toString())\" />\n        </div>\n        <div class=\"adf-comment-contents\">\n            <div matLine class=\"adf-comment-user-name\">{{ comment.userDisplayName }}</div>\n            <div matLine class=\"adf-comment-message\">{{ comment.message }}</div>\n            <div matLine class=\"adf-comment-message-time\">{{ comment.created | adfTimeAgo }}</div>\n        </div>\n    </mat-list-item>\n</mat-list>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NgModule } from '@angular/core';\nimport { CommentListComponent } from './comment-list.component';\n\n/** @deprecated import `CommentListComponent` standalone component directly */\n@NgModule({\n    imports: [CommentListComponent],\n    exports: [CommentListComponent]\n})\nexport class CommentListModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './comment-list.component';\n\nexport * from './comment-list.module';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CommentModel } from '../models/comment.model';\nimport { Component, ElementRef, EventEmitter, inject, Input, OnChanges, Output, SimpleChanges, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { ADF_COMMENTS_SERVICE } from './interfaces/comments.token';\nimport { CommentsService } from './interfaces/comments-service.interface';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { FormControl, FormsModule, ReactiveFormsModule, ValidationErrors } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { CommentListComponent } from './comment-list';\n\n@Component({\n    selector: 'adf-comments',\n    imports: [\n        CommonModule,\n        TranslatePipe,\n        MatFormFieldModule,\n        MatInputModule,\n        FormsModule,\n        MatButtonModule,\n        CommentListComponent,\n        ReactiveFormsModule\n    ],\n    templateUrl: './comments.component.html',\n    styleUrls: ['./comments.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class CommentsComponent implements OnChanges {\n    @ViewChild('commentInput') commentInput: ElementRef<HTMLTextAreaElement>;\n\n    /** The numeric ID of the task. */\n    @Input()\n    id: string;\n\n    /** Are the comments read only? */\n    @Input()\n    readOnly: boolean = false;\n\n    /** Emitted when an error occurs while displaying/adding a comment. */\n    @Output()\n    error = new EventEmitter<any>();\n\n    /** Emits when a new comment is added */\n    @Output()\n    commentAdded = new EventEmitter<CommentModel>();\n\n    comments: CommentModel[] = [];\n    beingAdded: boolean = false;\n\n    private readonly commentsService = inject<CommentsService>(ADF_COMMENTS_SERVICE);\n\n    private readonly _commentControl = new FormControl('', [this.validateEmptyComment]);\n\n    get commentControl(): FormControl<string> {\n        return this._commentControl;\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        this.id = null;\n\n        this.id = changes['id'] ? changes['id'].currentValue : null;\n\n        if (this.id) {\n            this.loadComments();\n        } else {\n            this.resetComments();\n        }\n    }\n\n    loadComments() {\n        this.resetComments();\n\n        if (!this.hasId()) {\n            return;\n        }\n\n        this.commentsService.get(this.id).subscribe({\n            next: (comments) => {\n                if (!this.isArrayInstance(comments)) {\n                    return;\n                }\n\n                comments = this.sortedComments(comments);\n                this.comments.push(...comments);\n            },\n            error: (err) => {\n                this.error.emit(err);\n            }\n        });\n    }\n\n    addComment() {\n        if (!this.canAddComment()) {\n            return;\n        }\n\n        this.beingAdded = true;\n\n        this.commentsService.add(this.id, this.commentControl.value).subscribe({\n            next: (res) => {\n                this.addToComments(res);\n                this.commentControl.reset();\n                this.commentAdded.emit(res);\n                this.commentInput?.nativeElement?.focus();\n            },\n            error: (err) => {\n                this.error.emit(err);\n            },\n            complete: () => {\n                this.beingAdded = false;\n            }\n        });\n    }\n\n    clearMessage(event: Event): void {\n        event.stopPropagation();\n        this.commentControl.reset();\n    }\n\n    private addToComments(comment: CommentModel): void {\n        this.comments.unshift(comment);\n    }\n\n    private canAddComment(): boolean {\n        return this.hasId() && this.commentControl.value?.trim() && !this.beingAdded;\n    }\n\n    private hasId(): boolean {\n        return !!this.id;\n    }\n\n    private isArrayInstance(entity: any): boolean {\n        return entity && entity instanceof Array;\n    }\n\n    private sortedComments(comments: CommentModel[]): CommentModel[] {\n        return comments.sort((comment1, comment2) => {\n            const date1 = new Date(comment1.created);\n            const date2 = new Date(comment2.created);\n\n            return date1 > date2 ? -1 : date1 < date2 ? 1 : 0;\n        });\n    }\n\n    private resetComments(): void {\n        this.comments = [];\n    }\n\n    private validateEmptyComment(commentControl: FormControl<string>): ValidationErrors {\n        return commentControl.value?.trim() ? null : { emptyComment: true };\n    }\n}\n","<div class=\"adf-comments-container\">\n    <div id=\"comment-header\" class=\"adf-comments-header adf-comments-divider\">\n        {{'COMMENTS.HEADER' | translate: { count: comments?.length } }}\n    </div>\n    <div *ngIf=\"!readOnly\" class=\"adf-comments-input-container adf-comments-divider\">\n            <mat-form-field class=\"adf-comments-input-form-field\">\n                <mat-label>{{ 'COMMENTS.ADD' | translate }}</mat-label>\n                <textarea\n                    #commentInput\n                    matInput\n                    id=\"comment-input\"\n                    class=\"adf-text-text-area\"\n                    [attr.aria-label]='(\"COMMENTS.ADD\" | translate) + \"*\"'\n                    [formControl]=\"commentControl\"\n                    (keydown.escape)=\"clearMessage($event)\"\n                >\n                </textarea>\n                <mat-error *ngIf=\"commentControl.invalid && commentControl.touched\">{{ 'COMMENTS.EMPTY_ERROR' | translate }}</mat-error>\n            </mat-form-field>\n\n            <div class=\"adf-comments-input-actions\">\n                <button\n                    mat-button\n                    data-automation-id=\"comments-input-add\"\n                    color=\"primary\"\n                    (click)=\"addComment()\"\n                    [disabled]=\"commentControl.invalid\"\n                >\n                    {{ 'COMMENTS.ADD' | translate }}\n                </button>\n            </div>\n    </div>\n\n    <adf-comment-list *ngIf=\"comments?.length > 0\" [comments]=\"comments\" />\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Observable } from 'rxjs';\nimport { CommentModel } from '../../models/comment.model';\n\nexport interface CommentsService {\n    get(id: string): Observable<CommentModel[]>;\n    add(id: string, message: string): Observable<CommentModel>;\n    getUserImage(userId: string): string;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NgModule } from '@angular/core';\nimport { CommentsComponent } from './comments.component';\n\n/** @deprecated import standalone `CommentsComponent` directly */\n@NgModule({\n    imports: [CommentsComponent],\n    exports: [CommentsComponent]\n})\nexport class CommentsModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './comments.component';\n\nexport * from './interfaces/comments-service.interface';\nexport * from './interfaces/comments.token';\n\nexport * from './comments.module';\n\nexport * from './comment-list/index';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, ChangeDetectionStrategy, Input, ViewEncapsulation, OnInit, inject } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { TranslationService } from '../../translation/translation.service';\nimport { Observable } from 'rxjs';\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { map } from 'rxjs/operators';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n@Component({\n    selector: 'adf-error-content',\n    imports: [CommonModule, TranslatePipe],\n    templateUrl: './error-content.component.html',\n    styleUrls: ['./error-content.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: { class: 'adf-error-content' }\n})\nexport class ErrorContentComponent implements OnInit {\n    private readonly route = inject(ActivatedRoute);\n    private readonly translateService = inject(TranslationService);\n    private readonly breakpointObserver = inject(BreakpointObserver);\n\n    static UNKNOWN_ERROR = 'UNKNOWN';\n\n    /** Error code associated with this error. */\n    @Input()\n    errorCode: string = ErrorContentComponent.UNKNOWN_ERROR;\n\n    errorCodeTranslated: string;\n    isSmallScreen$: Observable<boolean>;\n\n    ngOnInit() {\n        if (this.route) {\n            this.route.params.subscribe((params) => {\n                const code = params['id'] || this.errorCode;\n                const errorHasTranslation = this.checkErrorExists(code);\n                this.errorCodeTranslated = errorHasTranslation ? code : ErrorContentComponent.UNKNOWN_ERROR;\n            });\n        }\n\n        this.isSmallScreen$ = this.breakpointObserver.observe([Breakpoints.XSmall, Breakpoints.Small]).pipe(map(({ matches }) => matches));\n    }\n\n    checkErrorExists(errorCode: string) {\n        const errorMessage = this.translateService.instant('ERROR_CONTENT.' + errorCode);\n        return errorMessage !== 'ERROR_CONTENT.' + errorCode;\n    }\n}\n","<ng-container *ngIf=\"{ isSmallScreen: isSmallScreen$ | async } as screenSize\">\n    <div class=\"adf-error-content\">\n        <p class=\"adf-error-content-code {{ screenSize.isSmallScreen ? 'adf-error-content-code--small mat-headline-2': 'mat-headline-1' }}\">\n            {{ errorCodeTranslated }}\n        </p>\n        <div class=\"adf-error-content-shadow {{ screenSize.isSmallScreen ? 'adf-error-content-shadow--small': '' }}\"></div>\n        <p class=\"adf-error-content-title {{ screenSize.isSmallScreen ? 'mat-headline-5': 'mat-headline-3' }}\">\n            {{ 'ERROR_CONTENT.' + errorCodeTranslated + '.TITLE' | translate }}\n        </p>\n        <p class=\"adf-error-content-description {{ screenSize.isSmallScreen ? 'mat-subtitle-1': 'mat-headline-5' }}\">\n            {{ 'ERROR_CONTENT.' + errorCodeTranslated + '.DESCRIPTION' | translate }}\n        </p>\n        <ng-content select=\"[adf-error-content-actions]\" />\n    </div>\n</ng-container>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, Input, ViewEncapsulation, ChangeDetectionStrategy, inject, ElementRef, AfterContentInit } from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { ICON_ALIAS_MAP_TOKEN } from './icon-alias-map.token';\n\nexport const DEFAULT_ICON_VALUE = 'settings';\n\n/** @deprecated Use material icon with aria-hidden=\"true\" attribute instead. */\n\n@Component({\n    selector: 'adf-icon',\n    imports: [MatIconModule],\n    templateUrl: './icon.component.html',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: { class: 'adf-icon' }\n})\nexport class IconComponent implements AfterContentInit {\n    private readonly ALIAS_MAP = inject(ICON_ALIAS_MAP_TOKEN, { optional: true });\n    private readonly elementRef = inject(ElementRef);\n\n    private _value = DEFAULT_ICON_VALUE;\n    private _isSvg = false;\n\n    /** Theme color palette for the component. */\n    @Input()\n    color: ThemePalette;\n\n    /** Icon font set */\n    @Input()\n    fontSet: string;\n\n    get value(): string {\n        return this._value;\n    }\n\n    /** Icon value, which can be either a ligature name or a custom icon in the format `[namespace]:[name]`. */\n    @Input()\n    set value(value: string) {\n        this._value = this.hasMappedAlias(value) ? this.ALIAS_MAP[value] : value;\n        this._isSvg = this.hasMappedAlias(value) || this.isCustom(value);\n    }\n\n    get isSvg() {\n        return this._isSvg;\n    }\n\n    /** Is icon of svg type */\n    @Input()\n    set isSvg(isSvg: boolean) {\n        this._isSvg = isSvg;\n    }\n\n    ngAfterContentInit(): void {\n        const textNode = this.getTextNode();\n\n        if (textNode) {\n            this.value = textNode.textContent.trim();\n            textNode.remove();\n        }\n    }\n\n    private hasMappedAlias(value: string): boolean {\n        return !!this.ALIAS_MAP?.[value];\n    }\n\n    private isCustom(value: string): boolean {\n        return value.includes(':');\n    }\n\n    private getTextNode(): Text | undefined {\n        return Array.from(this.elementRef.nativeElement.childNodes).find(\n            (node: Node) => node.nodeType === Node.TEXT_NODE && node.textContent?.trim()\n        ) as Text | undefined;\n    }\n}\n","<ng-content />\n\n@if (isSvg) {\n  <mat-icon [color]=\"color\" [svgIcon]=\"value\" aria-hidden=\"true\" />\n} @else {\n  <mat-icon [fontSet]=\"fontSet\" [color]=\"color\" aria-hidden=\"true\">{{ value }}</mat-icon>\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport type IconAliasMap = Record<string, string>;\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './icon.component';\nexport * from './icon-alias-map.token';\nexport * from './icon-alias-map.type';\nexport * from './icon.directive';\nexport * from './icon.module';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, ChangeDetectionStrategy, ViewEncapsulation, Input } from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { IconModule } from '../../icon';\n\n@Component({\n    selector: 'adf-empty-content',\n    imports: [TranslatePipe, IconModule],\n    templateUrl: './empty-content.component.html',\n    styleUrls: ['./empty-content.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: { class: 'adf-empty-content' }\n})\nexport class EmptyContentComponent {\n    /** Material Icon to use. */\n    @Input()\n    icon = 'cake';\n\n    /** String or Resource Key for the title. */\n    @Input()\n    title = '';\n\n    /** String or Resource Key for the subtitle. */\n    @Input()\n    subtitle = '';\n}\n","<div class=\"adf-empty-content\" [title]=\"title | translate\">\n    <mat-icon class=\"adf-empty-content__icon\" [adf-icon]=\"icon\" aria-hidden=\"true\" />\n    <div class=\"adf-empty-content__title\">{{ title | translate }}</div>\n    <div class=\"adf-empty-content__subtitle\">{{ subtitle | translate }}</div>\n    <ng-content />\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NgModule } from '@angular/core';\nimport { ErrorContentComponent } from './error-content/error-content.component';\nimport { EmptyContentComponent } from './empty-content/empty-content.component';\n\nexport const TEMPLATE_DIRECTIVES = [ErrorContentComponent, EmptyContentComponent] as const;\n\n/**\n * @deprecated this Module is deprecated and should no longer be used.\n * Consider using `...TEMPLATE_DIRECTIVES` or importing components directly instead.\n */\n@NgModule({\n    imports: [...TEMPLATE_DIRECTIVES],\n    exports: [...TEMPLATE_DIRECTIVES]\n})\nexport class TemplateModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './error-content/error-content.component';\nexport * from './empty-content/empty-content.component';\n\nexport * from './template.module';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Pagination } from '@alfresco/js-api';\nimport { NgForOf, NgIf } from '@angular/common';\nimport {\n    AfterViewInit,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    EventEmitter,\n    Input,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    Output,\n    QueryList,\n    SimpleChanges,\n    ViewChild,\n    ViewChildren,\n    ViewEncapsulation,\n    inject\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatChip, MatChipsModule } from '@angular/material/chips';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { Chip } from './chip';\nimport { IconModule } from '../icon/icon.module';\n\n/**\n * This component shows dynamic list of chips which render depending on free space.\n */\n@Component({\n    selector: 'adf-dynamic-chip-list',\n    templateUrl: './dynamic-chip-list.component.html',\n    styleUrls: ['./dynamic-chip-list.component.scss'],\n    imports: [MatChipsModule, TranslatePipe, NgForOf, IconModule, NgIf, MatButtonModule],\n    encapsulation: ViewEncapsulation.None\n})\nexport class DynamicChipListComponent implements OnChanges, OnInit, AfterViewInit, OnDestroy {\n    private readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n    /* eslint no-underscore-dangle: [\"error\", { \"allow\": [\"_elementRef\"] }]*/\n    /** Provide if you want to use paginated chips. */\n    @Input()\n    pagination: Pagination;\n\n    /** List of chips to display. */\n    @Input({ required: true })\n    chips: Chip[];\n\n    /** Show delete button. */\n    @Input()\n    showDelete = true;\n\n    /** Disable delete button. */\n    @Input()\n    disableDelete = false;\n\n    /** Should limit number of chips displayed. */\n    @Input()\n    limitChipsDisplayed = false;\n\n    /** Round up chips */\n    @Input()\n    roundUpChips = false;\n\n    /** Emitted when button for view more is clicked. */\n    @Output()\n    displayNext = new EventEmitter<void>();\n\n    /** Emitted when any chip is removed. */\n    @Output()\n    removedChip = new EventEmitter<string>();\n\n    @ViewChild('nodeListContainer')\n    containerView: ElementRef;\n\n    @ViewChildren(MatChip)\n    matChips: QueryList<MatChip>;\n\n    chipsToDisplay: Chip[] = [];\n    calculationsDone = false;\n    columnFlexDirection = false;\n    moveLoadMoreButtonToNextRow = false;\n    undisplayedChipsCount = 0;\n    viewMoreButtonLeftOffset: number;\n    viewMoreButtonTop = 0;\n    paginationData: Pagination;\n\n    private initialChips: Chip[] = [];\n    private initialLimitChipsDisplayed: boolean;\n    private viewMoreButtonLeftOffsetBeforeFlexDirection: number;\n    private requestedDisplayingAllChips = false;\n    private readonly resizeObserver = new ResizeObserver(() => {\n        if (this.initialLimitChipsDisplayed && this.chipsToDisplay.length) {\n            this.calculateChipsToDisplay();\n            this.changeDetectorRef.detectChanges();\n        }\n    });\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes.pagination) {\n            this.limitChipsDisplayed = this.pagination?.hasMoreItems;\n            this.paginationData = this.pagination;\n            this.initialLimitChipsDisplayed = this.limitChipsDisplayed;\n        }\n        if (changes.chips) {\n            this.initialChips = this.chips;\n            this.chipsToDisplay = this.initialChips;\n            if (this.limitChipsDisplayed && this.chipsToDisplay.length) {\n                this.calculateChipsToDisplay();\n                this.changeDetectorRef.detectChanges();\n            }\n        }\n    }\n\n    ngOnInit(): void {\n        if (this.paginationData) {\n            this.limitChipsDisplayed = this.paginationData.hasMoreItems;\n        }\n        this.initialLimitChipsDisplayed = this.limitChipsDisplayed;\n    }\n\n    ngAfterViewInit(): void {\n        this.resizeObserver.observe(this.containerView.nativeElement);\n    }\n\n    ngOnDestroy(): void {\n        this.resizeObserver.unobserve(this.containerView.nativeElement);\n    }\n\n    displayNextChips(event: Event): void {\n        event.preventDefault();\n        event.stopPropagation();\n        if (this.paginationData) {\n            this.requestedDisplayingAllChips = !this.paginationData.hasMoreItems;\n        } else {\n            this.limitChipsDisplayed = false;\n            this.requestedDisplayingAllChips = true;\n        }\n        if (this.requestedDisplayingAllChips) {\n            this.resizeObserver.unobserve(this.containerView.nativeElement);\n        }\n        this.displayNext.emit();\n    }\n\n    private calculateChipsToDisplay(): void {\n        if (this.requestedDisplayingAllChips || !this.chips.length) {\n            return;\n        }\n        this.chipsToDisplay = this.initialChips;\n        this.changeDetectorRef.detectChanges();\n        this.undisplayedChipsCount = 0;\n        let chipsToDisplay = 1;\n        const containerWidth: number = this.containerView.nativeElement.clientWidth;\n        const viewMoreButton: HTMLButtonElement = this.containerView.nativeElement.children[1];\n        const viewMoreBtnWidth: number = viewMoreButton.getBoundingClientRect().width;\n        const firstChip = this.matChips.get(0);\n        const chipMargin = firstChip ? this.getChipMargin(firstChip) : 0;\n        let chipsWidth = 0;\n        const chips = this.matChips.toArray();\n        let lastIndex = 0;\n        do {\n            chipsWidth = Math.max(\n                chips.reduce((width, val, index) => {\n                    width += val._elementRef.nativeElement.getBoundingClientRect().width + chipMargin;\n                    const availableSpace =\n                        (index === chips.length - 1 && width <= containerWidth) || this.paginationData\n                            ? containerWidth\n                            : containerWidth - viewMoreBtnWidth;\n                    if (availableSpace >= width - chipMargin) {\n                        chipsToDisplay = (this.paginationData ? chipsToDisplay : index) + 1;\n                        lastIndex++;\n                        this.viewMoreButtonLeftOffset = width;\n                        this.viewMoreButtonLeftOffsetBeforeFlexDirection = width;\n                    }\n                    return width;\n                }, 0),\n                chipsWidth\n            );\n            chips.splice(0, lastIndex);\n            lastIndex = 0;\n        } while ((chips.length || (chipsToDisplay < this.matChips.length && this.matChips.length)) && this.paginationData);\n        this.arrangeElements(containerWidth, chipsWidth, viewMoreBtnWidth, chipsToDisplay, viewMoreButton);\n        this.calculationsDone = true;\n    }\n\n    private getChipMargin(chip: MatChip): number {\n        const chipStyles = window.getComputedStyle(chip._elementRef.nativeElement);\n        return parseInt(chipStyles.marginLeft, 10) + parseInt(chipStyles.marginRight, 10);\n    }\n\n    private arrangeElements(\n        containerWidth: number,\n        chipsWidth: number,\n        viewMoreBtnWidth: number,\n        chipsToDisplay: number,\n        viewMoreButton: HTMLButtonElement\n    ): void {\n        if (containerWidth - chipsWidth - viewMoreBtnWidth <= 0) {\n            const chip = this.paginationData ? this.matChips.last : this.matChips.first;\n            const hasNotEnoughSpaceForMoreButton =\n                containerWidth < chip?._elementRef.nativeElement.offsetWidth + chip?._elementRef.nativeElement.offsetLeft + viewMoreBtnWidth;\n            this.columnFlexDirection = chipsToDisplay === 1 && !this.paginationData && hasNotEnoughSpaceForMoreButton;\n            this.moveLoadMoreButtonToNextRow = this.paginationData && hasNotEnoughSpaceForMoreButton;\n            this.undisplayedChipsCount = this.chipsToDisplay.length - chipsToDisplay;\n            this.chipsToDisplay = this.chipsToDisplay.slice(0, chipsToDisplay);\n        } else {\n            this.moveLoadMoreButtonToNextRow = false;\n        }\n        this.limitChipsDisplayed = this.undisplayedChipsCount ? this.initialLimitChipsDisplayed : this.paginationData?.hasMoreItems;\n        if (this.paginationData?.hasMoreItems) {\n            const lastChipTop = this.matChips.last._elementRef.nativeElement.offsetTop;\n            if (this.moveLoadMoreButtonToNextRow) {\n                const buttonTopHeightCorrection = 5;\n                this.viewMoreButtonLeftOffset = 0;\n                this.viewMoreButtonTop = lastChipTop + viewMoreButton.offsetHeight + buttonTopHeightCorrection;\n            } else {\n                const buttonTopHeightCorrection = 3;\n                this.viewMoreButtonLeftOffset = this.viewMoreButtonLeftOffsetBeforeFlexDirection;\n                this.viewMoreButtonTop = lastChipTop - buttonTopHeightCorrection;\n            }\n        } else {\n            this.viewMoreButtonLeftOffset = this.columnFlexDirection ? 0 : this.viewMoreButtonLeftOffsetBeforeFlexDirection;\n        }\n\n        if (!this.pagination) {\n            this.viewMoreButtonTop = null;\n        }\n    }\n}\n","<div\n    class=\"adf-dynamic-chip-list-container\"\n    [class.adf-dynamic-chip-list-flex-column]=\"limitChipsDisplayed && (!calculationsDone || columnFlexDirection)\"\n    [class.adf-dynamic-chip-list-button-in-next-line]=\"moveLoadMoreButtonToNextRow\"\n    [class.adf-dynamic-chip-list-paginated]=\"paginationData\"\n    #nodeListContainer>\n    <mat-chip-set\n        [class.adf-dynamic-chip-list-full-width]=\"limitChipsDisplayed && !calculationsDone\"\n        role=\"list\"\n        [attr.aria-label]=\"'METADATA.BASIC.TAGS' | translate\">\n        <mat-chip\n            *ngFor=\"let chip of chipsToDisplay; let idx = index\"\n            class=\"adf-dynamic-chip-list-chip\"\n            [style.border-radius]=\"roundUpChips ? '20px' : '10px'\"\n            [style.font-weight]=\"'bold'\"\n            role=\"listitem\"\n            [attr.aria-label]=\"chip.name\"\n            (removed)=\"removedChip.emit(chip.id)\">\n            <span id=\"adf-dynamic-chip-list-chip-name-{{ idx }}\">{{ chip.name }}</span>\n            <mat-icon \n                *ngIf=\"showDelete\"\n                id=\"adf-dynamic-chip-list-delete-{{ chip.name }}\"\n                class=\"adf-dynamic-chip-list-delete-icon\"\n                [disabled]=\"disableDelete\"\n                adf-icon=\"close\"\n                matChipRemove\n            />\n        </mat-chip>\n    </mat-chip-set>\n    <button\n        data-automation-id=\"adf-dynamic-chip-list-view-more-button\"\n        mat-button\n        [hidden]=\"chipsToDisplay?.length === 0 || !limitChipsDisplayed\"\n        [style.left.px]=\"viewMoreButtonLeftOffset\"\n        [style.top.px]=\"!!pagination ? viewMoreButtonTop : ''\"\n        class=\"adf-dynamic-chip-list-view-more-button\"\n        [class.adf-dynamic-chip-list-hidden-btn]=\"!calculationsDone\"\n        (click)=\"displayNextChips($event)\">\n        {{\n            paginationData ? ('DYNAMIC_CHIP_LIST.LOAD_MORE' | translate) :\n                ('TAG_NODE_LIST.VIEW_MORE' | translate: { count: undisplayedChipsCount })\n        }}\n    </button>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NgModule } from '@angular/core';\nimport { DynamicChipListComponent } from './dynamic-chip-list.component';\n\n/** @deprecated use `DynamicChipListComponent` or import standalone components directly  */\n@NgModule({\n    imports: [DynamicChipListComponent],\n    exports: [DynamicChipListComponent]\n})\nexport class DynamicChipListModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface Chip {\n    name: string;\n    id: string;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './dynamic-chip-list.component';\nexport * from './dynamic-chip-list.module';\nexport * from './chip';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NgModule } from '@angular/core';\nimport { ClipboardDirective } from './clipboard.directive';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nexport const CLIPBOARD_DIRECTIVES = [ClipboardDirective] as const;\n\n/** @deprecated use `...CLIPBOARD_DIRECTIVES` or import standalone directives */\n@NgModule({\n    imports: [MatTooltipModule, ...CLIPBOARD_DIRECTIVES],\n    exports: [MatTooltipModule, ...CLIPBOARD_DIRECTIVES]\n})\nexport class ClipboardModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// export * from './accordion-group.component';\nexport * from './clipboard.directive';\nexport * from './clipboard.service';\n\nexport * from './clipboard.module';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NgModule } from '@angular/core';\nimport { EditJsonDialogComponent } from './edit-json.dialog';\n\n/* @deprecated Use EditJsonDialogComponent directly */\n@NgModule({\n    declarations: [],\n    imports: [EditJsonDialogComponent],\n    exports: [EditJsonDialogComponent]\n})\nexport class EditJsonDialogModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, OnInit, ViewEncapsulation, inject } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';\nimport { UnsavedChangesDialogData } from './unsaved-changes-dialog.model';\nimport { MatCheckboxChange, MatCheckboxModule } from '@angular/material/checkbox';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { CommonModule } from '@angular/common';\nimport { UserPreferencesService } from '../../common';\nimport { AppConfigValues } from '../../app-config';\nimport { IconModule } from '../../icon/icon.module';\n\n/**\n * Dialog which informs about unsaved changes. Allows discard them and proceed or close dialog and stop proceeding.\n * Can be customized with data object - UnsavedChangesDialogData.\n * If data.checkboxText is provided, checkbox will be displayed with the checkbox description.\n * If data.confirmButtonText is provided, it will be displayed on the confirm button.\n * If data.headerText is provided, it will be displayed as the header.\n * If data.descriptionText is provided, it will be displayed as dialog content.\n */\n@Component({\n    selector: 'adf-unsaved-changes-dialog',\n    encapsulation: ViewEncapsulation.None,\n    templateUrl: './unsaved-changes-dialog.component.html',\n    styleUrls: ['./unsaved-changes-dialog.component.scss'],\n    host: { class: 'adf-unsaved-changes-dialog' },\n    imports: [MatDialogModule, TranslatePipe, MatButtonModule, IconModule, CommonModule, MatCheckboxModule, ReactiveFormsModule]\n})\nexport class UnsavedChangesDialogComponent implements OnInit {\n    data = inject<UnsavedChangesDialogData>(MAT_DIALOG_DATA);\n    private readonly userPreferencesService = inject(UserPreferencesService);\n\n    dialogData: UnsavedChangesDialogData;\n\n    ngOnInit() {\n        this.dialogData = {\n            headerText: this.data?.headerText ?? 'CORE.DIALOG.UNSAVED_CHANGES.TITLE',\n            descriptionText: this.data?.descriptionText ?? 'CORE.DIALOG.UNSAVED_CHANGES.DESCRIPTION',\n            confirmButtonText: this.data?.confirmButtonText ?? 'CORE.DIALOG.UNSAVED_CHANGES.DISCARD_CHANGES_BUTTON',\n            checkboxText: this.data?.checkboxText ?? ''\n        };\n    }\n\n    /**\n     * Sets 'unsaved_changes__modal_visible' checked state (true or false string) as new item in local storage.\n     *\n     * @param savePreferences - MatCheckboxChange object with information about checkbox state.\n     */\n    onToggleCheckboxPreferences(savePreferences: MatCheckboxChange) {\n        this.userPreferencesService.set(AppConfigValues.UNSAVED_CHANGES_MODAL_HIDDEN, savePreferences.checked.toString());\n    }\n}\n","<h1 mat-dialog-title class=\"adf-unsaved-changes-dialog-header\">\n    {{ dialogData.headerText | translate }}\n    <button\n        data-automation-id=\"adf-unsaved-changes-dialog-close-button\"\n        class=\"adf-unsaved-changes-dialog-header-close-button\"\n        mat-icon-button\n        [title]=\"'CLOSE' | translate\"\n        [mat-dialog-close]=\"false\">\n        <mat-icon adf-icon=\"close\" />\n    </button>\n</h1>\n<mat-dialog-content class=\"adf-unsaved-changes-dialog-content\">\n    {{ dialogData.descriptionText | translate }}\n    <div class=\"adf-unsaved-changes-dialog-content-checkbox\" *ngIf=\"dialogData.checkboxText.length\">\n        <mat-checkbox data-automation-id=\"adf-unsaved-changes-dialog-content-checkbox\"\n                      (change)=\"onToggleCheckboxPreferences($event)\"\n        >{{ dialogData.checkboxText | translate }}</mat-checkbox>\n    </div>\n</mat-dialog-content>\n<mat-dialog-actions align=\"end\" class=\"adf-unsaved-changes-dialog-actions\">\n    <button\n        data-automation-id=\"adf-unsaved-changes-dialog-cancel-button\"\n        mat-button\n        [mat-dialog-close]=\"false\"\n        class=\"adf-unsaved-changes-dialog-actions-cancel-button\">\n        {{ 'CANCEL' | translate | titlecase }}\n    </button>\n    <button\n        data-automation-id=\"adf-unsaved-changes-dialog-discard-changes-button\"\n        mat-button\n        [mat-dialog-close]=\"true\"\n        class=\"adf-unsaved-changes-dialog-actions-discard-changes-button\">\n        {{ dialogData.confirmButtonText | translate }}\n    </button>\n</mat-dialog-actions>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NgModule } from '@angular/core';\nimport { UnsavedChangesDialogComponent } from './unsaved-changes-dialog.component';\n\n/** @deprecated import `UnsavedChangesDialogComponent` instead */\n@NgModule({\n    imports: [UnsavedChangesDialogComponent],\n    exports: [UnsavedChangesDialogComponent]\n})\nexport class UnsavedChangesDialogModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable, inject } from '@angular/core';\nimport { CanDeactivate } from '@angular/router';\nimport { Observable, of } from 'rxjs';\nimport { MatDialog } from '@angular/material/dialog';\nimport { UnsavedChangesDialogComponent } from './unsaved-changes-dialog.component';\nimport { map, tap } from 'rxjs/operators';\nimport { UnsavedChangesDialogData } from './unsaved-changes-dialog.model';\nimport { AuthenticationService, AuthGuardService } from '../../auth';\n\n/**\n * Guard responsible for protecting leaving page with unsaved changes.\n */\n@Injectable({\n    providedIn: 'root'\n})\nexport class UnsavedChangesGuard implements CanDeactivate<any> {\n    private readonly dialog = inject(MatDialog);\n    private readonly authenticationService = inject(AuthenticationService);\n    private readonly authGuardBaseService = inject(AuthGuardService);\n\n    unsaved = false;\n    data: UnsavedChangesDialogData;\n\n    /**\n     * Allows to deactivate route when there is no unsaved changes, otherwise displays dialog to confirm discarding changes.\n     *\n     * @returns boolean | Observable<boolean> true when there is no unsaved changes or changes can be discarded, false otherwise.\n     */\n    canDeactivate(): boolean | Observable<boolean> {\n        if (!this.authenticationService.isLoggedIn() && !this.authGuardBaseService.withCredentials) {\n            return of(true);\n        }\n\n        return this.unsaved\n            ? this.dialog\n                  .open<UnsavedChangesDialogComponent>(UnsavedChangesDialogComponent, {\n                      maxWidth: this.data?.maxWidth ?? 346,\n                      data: this.data\n                  })\n                  .afterClosed()\n                  .pipe(\n                      tap((confirmed) => (this.unsaved = !confirmed)),\n                      map((confirmed) => !!confirmed)\n                  )\n            : true;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NgModule } from '@angular/core';\nimport { ConfirmDialogComponent } from './confirm.dialog';\n\n/** @deprecated use `ConfirmDialogComponent` directly instead of importing this module */\n@NgModule({\n    declarations: [],\n    imports: [ConfirmDialogComponent],\n    exports: [ConfirmDialogComponent]\n})\nexport class ConfirmDialogModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { TemplateRef, Type } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { DialogSizes } from './dialog.model';\n\nexport interface DialogData {\n    title: string;\n    description?: string;\n    confirmButtonTitle?: string;\n    cancelButtonTitle?: string;\n    isConfirmButtonDisabled$?: Subject<boolean>;\n    isCloseButtonHidden?: boolean;\n    isCancelButtonHidden?: boolean;\n    dialogSize?: DialogSizes;\n    contentText?: string;\n    contentComponent?: Type<any>;\n    contentTemplate?: TemplateRef<any>;\n    actionsTemplate?: TemplateRef<any>;\n    descriptionTemplate?: TemplateRef<any>;\n    headerIcon?: string;\n    additionalActionButtons?: AdditionalDialogActionButton[];\n    componentData?: any;\n    dataOnConfirm$?: Subject<any>;\n}\n\nexport interface AdditionalDialogActionButton {\n    title: string;\n    onClick: (args?: any) => void;\n    class?: string;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const DialogSize = {\n    Large: 'adf-large',\n    Medium: 'adf-medium',\n    Alert: 'adf-alert'\n} as const;\n\nexport type DialogSizes = (typeof DialogSize)[keyof typeof DialogSize];\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, InjectionToken, Injector, ViewEncapsulation, inject } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { AdditionalDialogActionButton, DialogData } from './dialog-data.interface';\nimport { BehaviorSubject } from 'rxjs';\nimport { DialogSize, DialogSizes } from './dialog.model';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { IconModule } from '../../icon/icon.module';\n\nexport const DIALOG_COMPONENT_DATA = new InjectionToken<any>('dialog component data');\n\n@Component({\n    selector: 'adf-dialog',\n    templateUrl: './dialog.component.html',\n    styleUrls: ['./dialog.component.scss'],\n    imports: [CommonModule, TranslatePipe, IconModule, MatDialogModule, MatButtonModule],\n    encapsulation: ViewEncapsulation.None\n})\nexport class DialogComponent {\n    data = inject<DialogData>(MAT_DIALOG_DATA);\n    dialogRef = inject<MatDialogRef<DialogComponent>>(MatDialogRef);\n\n    isConfirmButtonDisabled$ = new BehaviorSubject<boolean>(false);\n    isCloseButtonHidden: boolean;\n    isCancelButtonHidden: boolean;\n    confirmButtonTitle: string;\n    cancelButtonTitle: string;\n    dialogSize: DialogSizes;\n    additionalActionButtons: AdditionalDialogActionButton[];\n    dataOnConfirm: any;\n\n    dataInjector: Injector;\n\n    constructor() {\n        const data = this.data;\n\n        if (data) {\n            this.isCancelButtonHidden = data.isCancelButtonHidden || false;\n            this.isCloseButtonHidden = data.isCloseButtonHidden || false;\n            this.dialogSize = data.dialogSize || DialogSize.Medium;\n            this.confirmButtonTitle = data.confirmButtonTitle || 'COMMON.APPLY';\n            this.cancelButtonTitle = data.cancelButtonTitle || 'COMMON.CANCEL';\n            this.additionalActionButtons = data.additionalActionButtons;\n            this.dialogRef.addPanelClass(`${this.dialogSize}-dialog-panel`);\n            this.dataInjector = Injector.create({\n                providers: [{ provide: DIALOG_COMPONENT_DATA, useValue: data.componentData }]\n            });\n\n            if (data.isConfirmButtonDisabled$) {\n                data.isConfirmButtonDisabled$.pipe(takeUntilDestroyed()).subscribe((value) => this.isConfirmButtonDisabled$.next(value));\n            }\n\n            if (data.dataOnConfirm$) {\n                data.dataOnConfirm$.pipe(takeUntilDestroyed()).subscribe((value) => (this.dataOnConfirm = value));\n            }\n        }\n    }\n\n    onConfirm() {\n        this.isConfirmButtonDisabled$.next(true);\n        this.dialogRef.close(this.dataOnConfirm || true);\n    }\n}\n","<div\n    data-automation-id=\"adf-dialog-container\"\n    class=\"adf-dialog-container {{ dialogSize }}\"\n>\n    <div\n        mat-dialog-title\n        data-automation-id=\"adf-dialog-header\"\n        class=\"adf-dialog-header\"\n        [ngClass]=\"{ 'adf-centered-header': data.headerIcon }\"\n    >\n        <div class=\"adf-dialog-title-container\" [ngClass]=\"{ 'adf-centered-title': data.headerIcon }\">\n            <mat-icon\n                *ngIf=\"data.headerIcon\"\n                color=\"primary\"\n                class=\"adf-dialog-header-icon\"\n                [adf-icon]=\"data.headerIcon\"\n            />\n            <h2 class=\"adf-dialog-title\">{{ data.title | translate }}</h2>\n        </div>\n        <button\n            *ngIf=\"!isCloseButtonHidden\"\n            mat-icon-button\n            mat-dialog-close\n            title=\"{{'CLOSE' | translate }}\"\n            data-automation-id=\"adf-dialog-close-button\"\n        >\n            <mat-icon adf-icon=\"close\" />\n        </button>\n    </div>\n\n    <div\n        [ngTemplateOutlet]=\"data.descriptionTemplate\"\n        [ngClass]=\"{ 'adf-description': data.description || data.descriptionTemplate }\"\n    >\n        <ng-container>{{ data.description | translate }}</ng-container>\n    </div>\n\n    <mat-dialog-content *ngIf=\"data.contentTemplate || data.contentComponent || data.contentText\" class=\"adf-dialog-content\">\n        <ng-container [ngTemplateOutlet]=\"data.contentTemplate\" />\n        <ng-container *ngComponentOutlet=\"data.contentComponent; injector: dataInjector\" />\n        <ng-container>{{ data.contentText | translate }}</ng-container>\n    </mat-dialog-content>\n\n    <mat-dialog-actions\n        class=\"adf-dialog-actions\"\n        [ngClass]=\"{ 'adf-additional-actions': data.actionsTemplate || additionalActionButtons }\"\n    >\n        <div class=\"adf-additional-actions-container\">\n            <ng-container *ngIf=\"!additionalActionButtons && data.actionsTemplate\">\n                <ng-container [ngTemplateOutlet]=\"data.actionsTemplate\" />\n            </ng-container>\n\n            <ng-container *ngIf=\"!data.actionsTemplate && additionalActionButtons\">\n                <button\n                    *ngFor=\"let additionalButton of additionalActionButtons\"\n                    mat-button\n                    color=\"primary\"\n                    class=\"{{ additionalButton.class }}\"\n                    (click)=\"additionalButton.onClick()\"\n                >\n                    {{ additionalButton.title | translate }}\n                </button>\n            </ng-container>\n        </div>\n\n        <div class=\"adf-main-actions-container\">\n            <button\n                *ngIf=\"!isCancelButtonHidden\"\n                mat-stroked-button\n                color=\"primary\"\n                mat-dialog-close\n                data-automation-id=\"adf-dialog-actions-cancel\"\n            >\n                {{ cancelButtonTitle | translate }}\n            </button>\n\n            <button\n                mat-flat-button\n                color=\"primary\"\n                data-automation-id=\"adf-dialog-actions-confirm\"\n                [disabled]=\"isConfirmButtonDisabled$ | async\"\n                (click)=\"onConfirm()\"\n            >\n                {{ confirmButtonTitle | translate }}\n            </button>\n        </div>\n    </mat-dialog-actions>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './dialog-data.interface';\nexport * from './dialog.model';\nexport * from './dialog.component';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './edit-json/edit-json.dialog';\nexport * from './edit-json/edit-json.dialog.module';\n\nexport * from './unsaved-changes-dialog/unsaved-changes-dialog.component';\nexport * from './unsaved-changes-dialog/unsaved-changes-dialog.module';\nexport * from './unsaved-changes-dialog/unsaved-changes.guard';\n\nexport * from './confirm-dialog/confirm.dialog';\nexport * from './confirm-dialog/confirm.dialog.module';\n\nexport * from './dialog';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n    AfterViewInit,\n    ChangeDetectorRef,\n    Component,\n    DestroyRef,\n    inject,\n    Input,\n    OnInit,\n    QueryList,\n    ViewChild,\n    ViewChildren,\n    ViewEncapsulation\n} from '@angular/core';\nimport { NotificationService } from '../services/notification.service';\nimport { NOTIFICATION_TYPE, NotificationModel } from '../models/notification.model';\nimport { MatMenuItem, MatMenuModule, MatMenuTrigger, MenuPositionX, MenuPositionY } from '@angular/material/menu';\nimport { StorageService } from '../../common/services/storage.service';\nimport { PaginationModel } from '../../models/pagination.model';\nimport { MatButton, MatButtonModule, MatIconButton } from '@angular/material/button';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { MatListModule } from '@angular/material/list';\nimport { NgForOf, NgIf } from '@angular/common';\nimport { InitialUsernamePipe, TimeAgoPipe } from '../../pipes';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FocusKeyManager } from '@angular/cdk/a11y';\nimport { IconModule } from '../../icon/icon.module';\n\n@Component({\n    selector: 'adf-notification-history',\n    templateUrl: 'notification-history.component.html',\n    styleUrls: ['./notification-history.component.scss'],\n    imports: [\n        MatButtonModule,\n        MatMenuModule,\n        TranslatePipe,\n        IconModule,\n        MatBadgeModule,\n        MatListModule,\n        NgIf,\n        NgForOf,\n        TimeAgoPipe,\n        InitialUsernamePipe,\n        MatSnackBarModule\n    ],\n    encapsulation: ViewEncapsulation.None\n})\nexport class NotificationHistoryComponent implements OnInit, AfterViewInit {\n    private readonly notificationService = inject(NotificationService);\n    private readonly storageService = inject(StorageService);\n    private readonly cd = inject(ChangeDetectorRef);\n\n    public static MAX_NOTIFICATION_STACK_LENGTH = 100;\n    public static NOTIFICATION_STORAGE = 'notification-history';\n\n    @ViewChild(MatMenuTrigger, { static: true })\n    trigger: MatMenuTrigger;\n\n    /** Custom choice for opening the menu at the bottom. Can be `before` or `after`. */\n    @Input()\n    menuPositionX: MenuPositionX = 'after';\n\n    /** Custom choice for opening the menu at the bottom. Can be `above` or `below`. */\n    @Input()\n    menuPositionY: MenuPositionY = 'below';\n\n    /** Maximum number of notifications to display. The rest will remain hidden until load more is clicked */\n    @Input()\n    maxNotifications: number = 5;\n\n    notifications: NotificationModel[] = [];\n    paginatedNotifications: NotificationModel[] = [];\n    pagination: PaginationModel;\n\n    @ViewChild('markAsReadButton')\n    private readonly markAsReadButton: MatIconButton;\n\n    @ViewChild('loadMoreButton')\n    private readonly loadMoreButton: MatButton;\n\n    @ViewChildren(MatMenuItem)\n    private readonly menuItems: QueryList<MatMenuItem>;\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    private focusKeyManager: FocusKeyManager<MatIconButton | MatMenuItem | MatButton>;\n\n    ngOnInit() {\n        this.notifications = JSON.parse(this.storageService.getItem(NotificationHistoryComponent.NOTIFICATION_STORAGE)) || [];\n    }\n\n    ngAfterViewInit(): void {\n        this.notificationService.notifications$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((notification: NotificationModel) => {\n            this.addNewNotification(notification);\n            this.cd.detectChanges();\n        });\n    }\n\n    addNewNotification(notification: NotificationModel) {\n        this.notifications.unshift(notification);\n\n        if (this.notifications.length > NotificationHistoryComponent.MAX_NOTIFICATION_STACK_LENGTH) {\n            this.notifications.shift();\n        }\n\n        this.saveNotifications();\n        this.createPagination();\n    }\n\n    saveNotifications() {\n        this.storageService.setItem(\n            NotificationHistoryComponent.NOTIFICATION_STORAGE,\n            JSON.stringify(this.notifications.filter((notification) => notification.type !== NOTIFICATION_TYPE.RECURSIVE))\n        );\n    }\n\n    onMenuOpened() {\n        this.createPagination();\n        setTimeout(() => this.initializeFocusManager(0));\n    }\n\n    markAsRead() {\n        this.notifications = [];\n        this.paginatedNotifications = [];\n        this.storageService.removeItem(NotificationHistoryComponent.NOTIFICATION_STORAGE);\n        this.createPagination();\n    }\n\n    createPagination() {\n        this.pagination = {\n            skipCount: this.maxNotifications,\n            maxItems: this.maxNotifications,\n            totalItems: this.notifications.length,\n            hasMoreItems: this.notifications.length > this.maxNotifications\n        };\n        this.paginatedNotifications = this.notifications.slice(0, this.pagination.skipCount);\n    }\n\n    loadMore($event: MouseEvent) {\n        $event.stopPropagation();\n        this.pagination.skipCount = this.pagination.maxItems + this.pagination.skipCount;\n        this.pagination.hasMoreItems = this.notifications.length > this.pagination.skipCount;\n        this.paginatedNotifications = this.notifications.slice(0, this.pagination.skipCount);\n        setTimeout(() => this.initializeFocusManager(this.focusKeyManager.activeItemIndex));\n    }\n\n    hasMoreNotifications(): boolean {\n        return this.pagination?.hasMoreItems;\n    }\n\n    onNotificationClick(notification: NotificationModel, $event: MouseEvent) {\n        $event.stopPropagation();\n        if (notification.clickCallBack) {\n            notification.clickCallBack(notification.args);\n            this.trigger.closeMenu();\n        }\n    }\n\n    manageFocus(event: KeyboardEvent): void {\n        if (event.key === 'ArrowUp') {\n            this.focusKeyManager.setPreviousItemActive();\n            event.stopPropagation();\n        } else if (event.key === 'ArrowDown') {\n            event.stopPropagation();\n            this.focusKeyManager.setNextItemActive();\n        }\n    }\n\n    private initializeFocusManager(activeIndex: number): void {\n        this.focusKeyManager = new FocusKeyManager([\n            this.markAsReadButton,\n            ...this.menuItems,\n            ...(this.hasMoreNotifications() ? [this.loadMoreButton] : [])\n        ]).withWrap();\n        this.focusKeyManager.setActiveItem(activeIndex);\n    }\n}\n","<button\n    mat-button\n    [matMenuTriggerFor]=\"menu\"\n    aria-hidden=\"false\"\n    [attr.aria-label]=\"('NOTIFICATIONS.' + (notifications.length ? 'UNREAD_MESSAGES' : 'NO_MESSAGE') | translate) + ' ' + ('NOTIFICATIONS.OPEN_HISTORY' | translate)\"\n    title=\"{{ 'NOTIFICATIONS.OPEN_HISTORY' | translate }}\"\n    class=\"adf-notification-history-menu_button\"\n    id=\"adf-notification-history-open-button\"\n    (menuOpened)=\"onMenuOpened()\"\n>\n    <mat-icon aria-hidden=\"false\" matBadge=\"&#8288;\" [matBadgeHidden]=\"!notifications.length\" class=\"adf-notification-history-menu_button-icon\" matBadgeColor=\"accent\" matBadgeSize=\"small\" adf-icon=\"notifications\" />\n</button>\n\n<mat-menu #menu=\"matMenu\"\n          [xPosition]=\"menuPositionX\"\n          [yPosition]=\"menuPositionY\"\n          id=\"adf-notification-history-menu\"\n          class=\"adf-notification-history-menu adf-notification-history-menu-panel\">\n    <div class=\"adf-notification-history-list-header\" aria-hidden=\"true\">\n        <span class=\"adf-notification-history-menu-title\">{{ 'NOTIFICATIONS.TITLE' | translate }}</span>\n        <button mat-icon-button\n                *ngIf=\"notifications.length\"\n                data-automation-id=\"adf-notification-history-mark-as-read\"\n                class=\"adf-notification-history-mark-as-read\"\n                title=\"{{ 'NOTIFICATIONS.MARK_AS_READ' | translate }}\"\n                (click)=\"markAsRead()\"\n                #markAsReadButton\n                (keydown)=\"manageFocus($event)\">\n            <mat-icon class=\"adf-notification-history-mark-as-read-icon\" adf-icon=\"done_all\" />\n        </button>\n    </div>\n\n    <mat-divider aria-hidden=\"true\" />\n\n    <div class=\"adf-notification-history-item-list\">\n        <ng-container *ngIf=\"notifications.length; else empty_list_template\">\n            <button mat-menu-item\n                    *ngFor=\"let notification of paginatedNotifications\"\n                    (click)=\"onNotificationClick(notification, $event)\"\n                    class=\"adf-notification-history-menu-item\"\n                    (keydown)=\"manageFocus($event)\">\n                <div class=\"adf-notification-history-menu-item-content\">\n                    <div *ngIf=\"notification.initiator; else no_avatar\"\n                         [outerHTML]=\"notification.initiator | usernameInitials : 'adf-notification-initiator-pic'\"></div>\n                    <ng-template #no_avatar>\n                        <mat-icon class=\"adf-notification-history-menu-initiator\" [adf-icon]=\"notification.icon\" />\n                    </ng-template>\n                    <div class=\"adf-notification-history-menu-item-content-message\">\n                        <p class=\"adf-notification-history-menu-text adf-notification-history-menu-message\"\n                           *ngFor=\"let message of notification.messages\"\n                           [title]=\"message\">{{ message }}</p>\n                        <p class=\"adf-notification-history-menu-text adf-notification-history-menu-date\"\n                        > {{ notification.datetime | adfTimeAgo }} </p>\n                    </div>\n                </div>\n            </button>\n        </ng-container>\n        <ng-template #empty_list_template>\n            <p id=\"adf-notification-history-component-no-message\"\n               class=\"adf-notification-history-menu-no-message-text\">\n                {{ 'NOTIFICATIONS.NO_MESSAGE' | translate }}\n            </p>\n        </ng-template>\n    </div>\n\n    <mat-divider aria-hidden=\"true\" />\n\n    <div\n        class=\"adf-notification-history-load-more\"\n        *ngIf=\"hasMoreNotifications()\"\n        aria-hidden=\"true\">\n        <button\n            data-automation-id=\"adf-notification-history-load-more\"\n            mat-button\n            (click)=\"loadMore($event)\"\n            #loadMoreButton\n            (keydown)=\"manageFocus($event)\">\n            {{ 'NOTIFICATIONS.LOAD_MORE' | translate }}\n        </button>\n    </div>\n</mat-menu>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NgModule } from '@angular/core';\nimport { NotificationHistoryComponent } from './components/notification-history.component';\n\nexport const NOTIFICATION_HISTORY_DIRECTIVES = [NotificationHistoryComponent] as const;\n\n/** @deprecated use `...NOTIFICATION_HISTORY_DIRECTIVES` or import the individual directives */\n@NgModule({\n    imports: [...NOTIFICATION_HISTORY_DIRECTIVES],\n    exports: [...NOTIFICATION_HISTORY_DIRECTIVES]\n})\nexport class NotificationHistoryModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './components/notification-history.component';\nexport * from './helpers/notification.factory';\nexport * from './models/notification.model';\nexport * from './services/notification.service';\nexport * from './notification-history.module';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { trigger, transition, animate, style, state, AnimationTriggerMetadata } from '@angular/animations';\n\nexport const searchAnimation: AnimationTriggerMetadata = trigger('transitionMessages', [\n    state(\n        'active',\n        style({\n            'margin-left': '{{ margin-left }}px',\n            'margin-right': '{{ margin-right }}px',\n            transform: '{{ transform }}'\n        }),\n        { params: { 'margin-left': 0, 'margin-right': 0, transform: 'translateX(0%)' } }\n    ),\n    state(\n        'inactive',\n        style({\n            'margin-left': '{{ margin-left }}px',\n            'margin-right': '{{ margin-right }}px',\n            transform: '{{ transform }}'\n        }),\n        { params: { 'margin-left': 0, 'margin-right': 0, transform: 'translateX(0%)' } }\n    ),\n    state('no-animation', style({ transform: 'translateX(0%)', width: '100%' })),\n    transition('active <=> inactive', animate('400ms cubic-bezier(0.25, 0.8, 0.25, 1)'))\n]);\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const SearchTextStateEnum = {\n    expanded: 'expanded',\n    collapsed: 'collapsed'\n} as const;\nexport type SearchTextStateEnum = (typeof SearchTextStateEnum)[keyof typeof SearchTextStateEnum];\n\nexport interface SearchAnimationState {\n    value: string;\n    params?: any;\n}\n\nexport interface SearchAnimationControl {\n    active: SearchAnimationState;\n    inactive: SearchAnimationState;\n}\n\nexport interface SearchAnimationDirection {\n    ltr: SearchAnimationControl;\n    rtl: SearchAnimationControl;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @angular-eslint/no-input-rename, @typescript-eslint/no-use-before-define, @angular-eslint/no-input-rename */\n\nimport { ENTER, ESCAPE } from '@angular/cdk/keycodes';\nimport { ChangeDetectorRef, DestroyRef, Directive, ElementRef, forwardRef, inject, Input, NgZone, OnDestroy } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DOCUMENT } from '@angular/common';\nimport { fromEvent, merge, Observable, of, Subject, Subscription } from 'rxjs';\nimport { filter, switchMap } from 'rxjs/operators';\nimport { SearchComponentInterface } from '../common/interface/search-component.interface';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nexport const SEARCH_AUTOCOMPLETE_VALUE_ACCESSOR: any = {\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => SearchTriggerDirective),\n    multi: true\n};\n\n/**\n * Directive selectors without adf- prefix will be deprecated on 3.0.0\n */\n@Directive({\n    // eslint-disable-next-line @angular-eslint/directive-selector\n    selector: `input[searchAutocomplete], textarea[searchAutocomplete]`,\n    host: {\n        role: 'combobox',\n        '[attr.autocomplete]': 'autocomplete',\n        'aria-autocomplete': 'list',\n        '[attr.aria-expanded]': 'panelOpen.toString()',\n        '(blur)': 'onTouched()',\n        '(input)': 'handleInput($event)',\n        '(keydown)': 'handleKeydown($event)'\n    },\n    providers: [SEARCH_AUTOCOMPLETE_VALUE_ACCESSOR]\n})\nexport class SearchTriggerDirective implements ControlValueAccessor, OnDestroy {\n    private readonly element = inject(ElementRef);\n    private readonly ngZone = inject(NgZone);\n    private readonly changeDetectorRef = inject(ChangeDetectorRef);\n    private readonly document = inject(DOCUMENT, { optional: true });\n\n    @Input('searchAutocomplete')\n    searchPanel: SearchComponentInterface;\n\n    @Input()\n    autocomplete: string = 'off';\n\n    private _panelOpen: boolean = false;\n    private closingActionsSubscription: Subscription;\n    private escapeEventStream = new Subject<void>();\n\n    onChange: (value: any) => void = () => {};\n\n    onTouched = () => {};\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    ngOnDestroy() {\n        if (this.escapeEventStream) {\n            this.escapeEventStream = null;\n        }\n        if (this.closingActionsSubscription) {\n            this.closingActionsSubscription.unsubscribe();\n        }\n    }\n\n    get panelOpen(): boolean {\n        return this._panelOpen && this.searchPanel.showPanel;\n    }\n\n    openPanel(): void {\n        this.searchPanel.isOpen = this._panelOpen = true;\n        this.closingActionsSubscription = this.subscribeToClosingActions();\n    }\n\n    closePanel(): void {\n        if (this._panelOpen) {\n            this.closingActionsSubscription.unsubscribe();\n            this._panelOpen = false;\n            this.searchPanel.resetResults();\n            this.searchPanel.hidePanel();\n            this.changeDetectorRef.detectChanges();\n        }\n    }\n\n    get panelClosingActions(): Observable<any> {\n        return merge(this.escapeEventStream, this.outsideClickStream);\n    }\n\n    private get outsideClickStream(): Observable<any> {\n        if (!this.document) {\n            return of(null);\n        }\n\n        return merge(fromEvent(this.document, 'click'), fromEvent(this.document, 'touchend')).pipe(\n            filter((event: MouseEvent | TouchEvent) => {\n                const clickTarget = event.target as HTMLElement;\n                return this._panelOpen && clickTarget !== this.element.nativeElement;\n            }),\n            takeUntilDestroyed(this.destroyRef)\n        );\n    }\n\n    writeValue(value: any): void {\n        Promise.resolve(null).then(() => this.setTriggerValue(value));\n    }\n\n    registerOnChange(fn: (value: any) => any): void {\n        this.onChange = fn;\n    }\n\n    registerOnTouched(fn: () => any) {\n        this.onTouched = fn;\n    }\n\n    handleKeydown(event: KeyboardEvent): void {\n        const keyCode = event.keyCode;\n\n        if (keyCode === ESCAPE && this.panelOpen) {\n            this.escapeEventStream.next();\n            event.stopPropagation();\n        } else if (keyCode === ENTER) {\n            this.escapeEventStream.next();\n            event.preventDefault();\n        }\n    }\n\n    handleInput(event: KeyboardEvent): void {\n        if (document.activeElement === event.target) {\n            const inputValue: string = (event.target as HTMLInputElement).value;\n            this.onChange(inputValue);\n            if (inputValue && this.searchPanel) {\n                this.searchPanel.keyPressedStream.next(inputValue);\n                this.openPanel();\n            } else if (this.searchPanel) {\n                this.searchPanel.resetResults();\n                this.closePanel();\n            }\n        }\n    }\n\n    private isPanelOptionClicked(event: MouseEvent) {\n        let isPanelOption: boolean = false;\n        if (event && this.searchPanel) {\n            const clickTarget = event.target as HTMLElement;\n            isPanelOption = !this.isNoResultOption() && !!this.searchPanel.panel && !!this.searchPanel.panel.nativeElement.contains(clickTarget);\n        }\n        return isPanelOption;\n    }\n\n    private isNoResultOption(): boolean {\n        return this.searchPanel?.results?.list ? this.searchPanel.results.list.entries.length === 0 : true;\n    }\n\n    private subscribeToClosingActions(): Subscription {\n        const firstStable = this.ngZone.onStable.asObservable();\n        const optionChanges = this.searchPanel.keyPressedStream.asObservable();\n\n        return merge(firstStable, optionChanges)\n            .pipe(\n                switchMap(() => {\n                    this.searchPanel.setVisibility();\n                    return this.panelClosingActions;\n                }),\n                takeUntilDestroyed(this.destroyRef)\n            )\n            .subscribe((event) => this.setValueAndClose(event));\n    }\n\n    private setTriggerValue(value: any): void {\n        const toDisplay = this.searchPanel?.displayWith ? this.searchPanel.displayWith(value) : value;\n        this.element.nativeElement.value = toDisplay != null ? toDisplay : '';\n    }\n\n    private setValueAndClose(event: any | null): void {\n        if (this.isPanelOptionClicked(event) && !event.defaultPrevented) {\n            this.setTriggerValue(event.target.textContent.trim());\n            this.onChange(event.target.textContent.trim());\n            this.element.nativeElement.focus();\n        }\n        this.closePanel();\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Direction } from '@angular/cdk/bidi';\nimport { NgClass, NgIf } from '@angular/common';\nimport {\n    Component,\n    DestroyRef,\n    ElementRef,\n    EventEmitter,\n    inject,\n    Input,\n    OnDestroy,\n    OnInit,\n    Output,\n    ViewChild,\n    ViewEncapsulation\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport { debounceTime, filter } from 'rxjs/operators';\nimport { UserPreferencesService } from '../common';\nimport { searchAnimation } from './animations';\nimport { SearchAnimationDirection, SearchAnimationState, SearchTextStateEnum } from './models/search-text-input.model';\nimport { SearchTriggerDirective } from './search-trigger.directive';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { IconModule } from '../icon/icon.module';\n\n@Component({\n    selector: 'adf-search-text-input',\n    templateUrl: './search-text-input.component.html',\n    styleUrls: ['./search-text-input.component.scss'],\n    animations: [searchAnimation],\n    encapsulation: ViewEncapsulation.None,\n    imports: [MatButtonModule, IconModule, TranslatePipe, MatFormFieldModule, MatInputModule, FormsModule, SearchTriggerDirective, NgIf, NgClass],\n    host: {\n        class: 'adf-search-text-input'\n    }\n})\nexport class SearchTextInputComponent implements OnInit, OnDestroy {\n    private readonly userPreferencesService = inject(UserPreferencesService);\n\n    /** Toggles auto-completion of the search input field. */\n    @Input()\n    autocomplete: boolean = false;\n\n    /**\n     * Toggles whether to use an expanding search control. If false\n     * then a regular input is used.\n     */\n    @Input()\n    expandable: boolean = true;\n\n    /** Type of the input field to render, e.g. \"search\" or \"text\" (default). */\n    @Input()\n    inputType: string = 'text';\n\n    /** Toggles \"find-as-you-type\" suggestions for possible matches. */\n    @Input()\n    liveSearchEnabled: boolean = true;\n\n    /** Trigger autocomplete results on input change. */\n    @Input()\n    searchAutocomplete: any = false;\n\n    /** Search term preselected */\n    @Input()\n    searchTerm: string = '';\n\n    /** Debounce time in milliseconds. */\n    @Input()\n    debounceTime: number = 0;\n\n    /** Listener for results-list events (focus, blur and focusout). */\n    @Input()\n    focusListener: Observable<FocusEvent>;\n\n    /** Collapse search bar on submit. */\n    @Input()\n    collapseOnSubmit: boolean = true;\n\n    /** Default state expanded or Collapsed. */\n    @Input()\n    defaultState: SearchTextStateEnum = SearchTextStateEnum.collapsed;\n\n    /** Toggles whether to collapse the search on blur. */\n    @Input()\n    collapseOnBlur: boolean = true;\n\n    /** Toggles whether to show a clear button that closes the search */\n    @Input()\n    showClearButton: boolean = false;\n\n    /** Placeholder text to show in the input field */\n    @Input()\n    placeholder: string = '';\n\n    /** Label text to show over the input field */\n    @Input()\n    label: string = '';\n\n    /** Hint label */\n    @Input()\n    hintLabel = '';\n\n    /**\n     * Emitted when the search term is changed. The search term is provided\n     * in the 'value' property of the returned object.  If the term is less\n     * than three characters in length then it is truncated to an empty\n     * string.\n     */\n    @Output()\n    searchChange = new EventEmitter<string>();\n\n    /**\n     * Emitted when the search is submitted by pressing the ENTER key.\n     * The search term is provided as the value of the event.\n     */\n    @Output()\n    submit = new EventEmitter<any>();\n\n    /**  Emitted when the result list is selected */\n    @Output()\n    selectResult: EventEmitter<any> = new EventEmitter();\n\n    /**  Emitted when the result list is reset */\n    @Output()\n    reset: EventEmitter<boolean> = new EventEmitter();\n\n    /** Emitted when the search visibility changes. True when the search is active, false when it is inactive */\n    @Output()\n    searchVisibility: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n    @ViewChild('searchInput', { static: true })\n    searchInput: ElementRef;\n\n    subscriptAnimationState: any;\n\n    animationStates: SearchAnimationDirection = {\n        ltr: {\n            active: { value: 'active', params: { 'margin-left': 13 } },\n            inactive: { value: 'inactive', params: { transform: 'translateX(100%)' } }\n        },\n        rtl: {\n            active: { value: 'active', params: { 'margin-right': 13 } },\n            inactive: { value: 'inactive', params: { transform: 'translateX(-100%)' } }\n        }\n    };\n\n    private dir = 'ltr';\n    private toggleSearch = new Subject<any>();\n    private focusSubscription: Subscription;\n    private readonly valueChange = new Subject<string>();\n    private readonly toggleSubscription: Subscription;\n\n    toggle$ = this.toggleSearch.asObservable();\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    constructor() {\n        this.toggleSubscription = this.toggle$.pipe(debounceTime(200), takeUntilDestroyed()).subscribe(() => {\n            if (this.expandable) {\n                this.subscriptAnimationState = this.toggleAnimation();\n                if (this.subscriptAnimationState.value === 'inactive') {\n                    this.searchTerm = '';\n                    this.reset.emit(true);\n                    if (document.activeElement.id === this.searchInput.nativeElement.id) {\n                        this.searchInput.nativeElement.blur();\n                    }\n                }\n                this.emitVisibilitySearch();\n            }\n        });\n    }\n\n    ngOnInit() {\n        this.userPreferencesService\n            .select('textOrientation')\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe((direction: Direction) => {\n                this.dir = direction;\n                this.subscriptAnimationState = this.getDefaultState(this.dir);\n            });\n\n        this.subscriptAnimationState = this.getDefaultState(this.dir);\n        this.setValueChangeHandler();\n        this.setupFocusEventHandlers();\n    }\n\n    applySearchFocus(animationDoneEvent) {\n        if (animationDoneEvent.toState === 'active' && this.isDefaultStateCollapsed()) {\n            this.searchInput.nativeElement.focus();\n        }\n    }\n\n    getAutoComplete(): string {\n        return this.autocomplete ? 'on' : 'off';\n    }\n\n    private toggleAnimation() {\n        if (this.dir === 'ltr') {\n            return this.subscriptAnimationState.value === 'inactive'\n                ? { value: 'active', params: { 'margin-left': 0 } }\n                : { value: 'inactive', params: { transform: 'translateX(100%)' } };\n        } else {\n            return this.subscriptAnimationState.value === 'inactive'\n                ? { value: 'active', params: { 'margin-right': 0 } }\n                : { value: 'inactive', params: { transform: 'translateX(-100%)' } };\n        }\n    }\n\n    private getDefaultState(dir: string): SearchAnimationState {\n        if (this.dir) {\n            return this.getAnimationState(dir);\n        }\n        return this.animationStates.ltr.inactive;\n    }\n\n    private getAnimationState(dir: string): SearchAnimationState {\n        if (this.expandable && this.isDefaultStateExpanded()) {\n            return this.animationStates[dir].active;\n        } else if (this.expandable) {\n            return this.animationStates[dir].inactive;\n        } else {\n            return { value: 'no-animation' };\n        }\n    }\n\n    private setupFocusEventHandlers() {\n        if (this.focusListener) {\n            const focusEvents: Observable<FocusEvent> = this.focusListener.pipe(\n                debounceTime(50),\n                filter(\n                    ($event: any) => this.isSearchBarActive() && ($event.type === 'blur' || $event.type === 'focusout' || $event.type === 'focus')\n                ),\n                takeUntilDestroyed(this.destroyRef)\n            );\n\n            this.focusSubscription = focusEvents.subscribe((event: FocusEvent) => {\n                if (event.type === 'focus') {\n                    this.searchInput.nativeElement.focus();\n                } else {\n                    this.toggleSearchBar();\n                }\n            });\n        }\n    }\n\n    private setValueChangeHandler() {\n        this.valueChange.pipe(debounceTime(this.debounceTime), takeUntilDestroyed(this.destroyRef)).subscribe((value: string) => {\n            this.searchChange.emit(value);\n        });\n    }\n\n    selectFirstResult($event) {\n        this.selectResult.emit($event);\n    }\n\n    onBlur($event) {\n        if (this.collapseOnBlur && !$event.relatedTarget) {\n            this.resetSearch();\n        }\n    }\n\n    inputChange($event: any) {\n        this.valueChange.next($event);\n    }\n\n    toggleSearchBar() {\n        if (this.toggleSearch) {\n            this.toggleSearch.next({});\n        }\n    }\n\n    searchSubmit(event: any) {\n        this.submit.emit(event);\n        if (this.collapseOnSubmit) {\n            this.toggleSearchBar();\n        }\n    }\n\n    activateToolbar(): boolean {\n        if (!this.isSearchBarActive()) {\n            this.toggleSearchBar();\n        }\n        return false;\n    }\n\n    isSearchBarActive(): boolean {\n        return this.subscriptAnimationState.value === 'active';\n    }\n\n    ngOnDestroy() {\n        if (this.toggleSearch) {\n            this.toggleSubscription.unsubscribe();\n            this.toggleSearch.complete();\n            this.toggleSearch = null;\n        }\n\n        if (this.focusSubscription) {\n            this.focusSubscription.unsubscribe();\n            this.focusSubscription = null;\n            this.focusListener = null;\n        }\n    }\n\n    canShowClearSearch(): boolean {\n        return this.showClearButton && this.isSearchBarActive();\n    }\n\n    resetSearch() {\n        if (this.isSearchBarActive()) {\n            this.toggleSearchBar();\n        }\n    }\n\n    private isDefaultStateCollapsed(): boolean {\n        return this.defaultState === SearchTextStateEnum.collapsed;\n    }\n\n    private isDefaultStateExpanded(): boolean {\n        return this.defaultState === SearchTextStateEnum.expanded;\n    }\n\n    private emitVisibilitySearch() {\n        this.searchVisibility.emit(this.isSearchBarActive());\n    }\n}\n","<div class=\"adf-search-container\" [attr.state]=\"subscriptAnimationState.value\">\n    <div class=\"adf-search-container-transition\"\n        [@transitionMessages]=\"subscriptAnimationState\"\n        (@transitionMessages.done)=\"applySearchFocus($event)\">\n        <button mat-icon-button\n                *ngIf=\"expandable && !isSearchBarActive()\"\n                id=\"adf-search-button\"\n                class=\"adf-search-button\"\n                [ngClass]=\"{'adf-search-button-inactive': subscriptAnimationState.value === 'inactive'}\"\n                [title]=\"'CORE.SEARCH.BUTTON.TOOLTIP' | translate\"\n                (click)=\"toggleSearchBar()\"\n                (keyup.enter)=\"toggleSearchBar()\">\n            <mat-icon [attr.aria-label]=\"'CORE.SEARCH.BUTTON.ARIA-LABEL' | translate\" adf-icon=\"search\" />\n        </button>\n        <mat-form-field class=\"adf-input-form-field-divider\" [hintLabel]=\"hintLabel\">\n            <mat-label *ngIf='label'>{{label}}</mat-label>\n            <input matInput\n                   #searchInput\n                   [attr.aria-label]=\"'CORE.SEARCH.INPUT.ARIA-LABEL' | translate\"\n                   [attr.type]=\"inputType\"\n                   [autocomplete]=\"getAutoComplete()\"\n                   id=\"adf-control-input\"\n                   [(ngModel)]=\"searchTerm\"\n                   [placeholder]=\"placeholder\"\n                   (focus)=\"activateToolbar()\"\n                   (blur)=\"onBlur($event)\"\n                   (keyup.escape)=\"toggleSearchBar()\"\n                   (keyup.arrowdown)=\"selectFirstResult($event)\"\n                   (ngModelChange)=\"inputChange($event)\"\n                   [searchAutocomplete]=\"searchAutocomplete ? searchAutocomplete : null\"\n                   (keyup.enter)=\"searchSubmit($event)\">\n                <button mat-icon-button\n                    *ngIf=\"canShowClearSearch()\"\n                    matSuffix\n                    data-automation-id=\"adf-clear-search-button\"\n                    class=\"adf-clear-search-button\"\n                    [title]=\"'CORE.SEARCH.FILTER.BUTTONS.CLOSE' | translate\"\n                    (click)=\"resetSearch()\"\n                    (keyup.enter)=\"resetSearch()\">\n                    <mat-icon adf-icon=\"close\" />\n                </button>\n        </mat-form-field>\n    </div>\n</div>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NgModule } from '@angular/core';\nimport { SearchTextInputComponent } from './search-text-input.component';\nimport { SearchTriggerDirective } from './search-trigger.directive';\n\nexport const SEARCH_TEXT_INPUT_DIRECTIVES = [SearchTextInputComponent, SearchTriggerDirective] as const;\n\n/** @deprecated use `...SEARCH_TEXT_INPUT_DIRECTIVES` or import the individual directives */\n@NgModule({\n    imports: [...SEARCH_TEXT_INPUT_DIRECTIVES],\n    exports: [...SEARCH_TEXT_INPUT_DIRECTIVES]\n})\nexport class SearchTextModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './animations';\nexport * from './search-text-input.component';\nexport * from './search-trigger.directive';\nexport * from './search-text-input.module';\nexport * from './models/search-text-input.model';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport class User {\n    displayName?: string;\n    username?: string;\n    id?: string | number;\n    firstName?: string;\n    lastName?: string;\n    email?: string;\n    createdTimestamp?: any;\n    emailVerified?: boolean;\n    enabled?: boolean;\n    readonly?: boolean;\n    pictureId?: number;\n    avatarId: string;\n\n    constructor(user?: Partial<User>) {\n        if (user) {\n            Object.assign(this, user);\n        }\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { User } from './general-user.model';\n\nexport class CommentModel {\n    id: string | number;\n    message: string;\n    created: Date;\n    createdBy: User;\n    isSelected: boolean;\n\n    get hasAvatarPicture(): boolean {\n        return !!this.createdBy && !!(this.createdBy['pictureId'] || this.createdBy['avatarId']);\n    }\n\n    get userDisplayName(): string {\n        let result = '';\n\n        if (this.createdBy) {\n            result = `${this.createdBy.firstName || ''} ${this.createdBy.lastName || ''}`;\n        }\n\n        return result.trim();\n    }\n\n    get userInitials(): string {\n        let result = '';\n        if (this.createdBy) {\n            if (this.createdBy.firstName) {\n                result = this.createdBy.firstName[0];\n            }\n            if (this.createdBy.lastName) {\n                result += this.createdBy.lastName[0];\n            }\n        }\n        return result.toUpperCase();\n    }\n\n    constructor(obj?: any) {\n        if (obj) {\n            this.id = obj.id;\n            this.message = obj.message;\n            this.created = obj.created;\n            this.createdBy = new User(obj.createdBy);\n            this.isSelected = obj.isSelected ? obj.isSelected : false;\n        }\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport class RequestPaginationModel {\n    skipCount?: number;\n\n    maxItems?: number;\n\n    merge?: boolean = false;\n\n    constructor(input?: any) {\n        if (input) {\n            Object.assign(this, input);\n        }\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport class PathInfo {\n    elements?: PathElement[];\n    name?: string;\n    isComplete?: boolean;\n\n    constructor(input?: Partial<PathInfo>) {\n        if (input) {\n            Object.assign(this, input);\n        }\n    }\n}\n\nexport interface PathElement {\n    id?: string;\n    name?: string;\n    nodeType?: string;\n    aspectNames?: string[];\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './comment.model';\nexport * from './pagination.model';\nexport * from './request-pagination.model';\nexport * from './general-user.model';\nexport * from './path.model';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable } from '@angular/core';\nimport { CookieService } from '../common/services/cookie.service';\n\n@Injectable()\nexport class CookieServiceMock extends CookieService {\n    isEnabled(): boolean {\n        return true;\n    }\n\n    getItem(key: string): string | null {\n        return this[key]?.data || null;\n    }\n\n    setItem(key: string, data: string, expiration: Date | null, path: string | null): void {\n        this[key] = { data, expiration, path };\n    }\n\n    clear() {\n        Object.keys(this).forEach((key) => {\n            if (Object.prototype.hasOwnProperty.call(this, key) && typeof this[key] !== 'function') {\n                this[key] = undefined;\n            }\n        });\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport class EventMock {\n    static keyDown(key: any) {\n        const event: any = document.createEvent('Event');\n        event.keyCode = key;\n        event.initEvent('keydown');\n        document.dispatchEvent(event);\n    }\n\n    static keyUp(key: any) {\n        const event: any = document.createEvent('Event');\n        event.keyCode = key;\n        event.initEvent('keyup');\n        document.dispatchEvent(event);\n    }\n\n    static resizeMobileView() {\n        // todo: no longer compiles with TS 2.0.2 as innerWidth/innerHeight are readonly fields\n        /*\n        window.innerWidth = 320;\n        window.innerHeight = 568;\n        */\n        window.dispatchEvent(new Event('resize'));\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { EventEmitter, Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\n\nexport interface LangChangeEvent {\n    lang: string;\n    translations: any;\n}\n\n/** @deprecated use `NoopTranslateModule` instead */\n@Injectable()\nexport class TranslationMock {\n    defaultLang: string = 'en';\n    userLang: string;\n    customLoader: any;\n\n    translate: any = {\n        onLangChange: new EventEmitter<LangChangeEvent>()\n    };\n\n    addTranslationFolder() {}\n\n    onTranslationChanged() {}\n\n    use(): any {}\n\n    loadTranslation() {}\n\n    get(key: string | Array<string>): Observable<string | any> {\n        return of(key);\n    }\n\n    getLocale(): any {}\n\n    instant(key: string | Array<string>): string | any {\n        return key;\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const formModelTabs: any = {\n    formRepresentation: {\n        id: 16,\n        name: 'start event',\n        description: '',\n        version: 2,\n        lastUpdatedBy: 4,\n        lastUpdatedByFullName: 'User Test',\n        lastUpdated: '2017-10-04T13:00:03.030+0000',\n        stencilSetId: null,\n        referenceId: null,\n        formDefinition: {\n            tabs: [],\n            fields: [\n                {\n                    fieldType: 'ContainerRepresentation',\n                    id: '1507037668653',\n                    name: 'Label',\n                    type: 'container',\n                    value: null,\n                    required: false,\n                    readOnly: false,\n                    overrideId: false,\n                    colspan: 1,\n                    placeholder: null,\n                    minLength: 0,\n                    maxLength: 0,\n                    minValue: null,\n                    maxValue: null,\n                    regexPattern: null,\n                    optionType: null,\n                    hasEmptyValue: null,\n                    options: null,\n                    restUrl: null,\n                    restResponsePath: null,\n                    restIdProperty: null,\n                    restLabelProperty: null,\n                    tab: null,\n                    className: null,\n                    dateDisplayFormat: null,\n                    layout: null,\n                    sizeX: 2,\n                    sizeY: 1,\n                    row: -1,\n                    col: -1,\n                    visibilityCondition: null,\n                    numberOfColumns: 2,\n                    fields: {\n                        '1': [\n                            {\n                                fieldType: 'AmountFieldRepresentation',\n                                id: 'label',\n                                name: 'Label',\n                                type: 'amount',\n                                value: null,\n                                required: false,\n                                readOnly: false,\n                                overrideId: false,\n                                colspan: 1,\n                                placeholder: null,\n                                minLength: 0,\n                                maxLength: 0,\n                                minValue: null,\n                                maxValue: null,\n                                regexPattern: null,\n                                optionType: null,\n                                hasEmptyValue: null,\n                                options: null,\n                                restUrl: null,\n                                restResponsePath: null,\n                                restIdProperty: null,\n                                restLabelProperty: null,\n                                tab: null,\n                                className: null,\n                                params: {\n                                    existingColspan: 1,\n                                    maxColspan: 2\n                                },\n                                dateDisplayFormat: null,\n                                layout: {\n                                    row: -1,\n                                    column: -1,\n                                    colspan: 1\n                                },\n                                sizeX: 1,\n                                sizeY: 1,\n                                row: -1,\n                                col: -1,\n                                visibilityCondition: null,\n                                enableFractions: false,\n                                currency: null\n                            }\n                        ],\n                        '2': [\n                            {\n                                fieldType: 'FormFieldRepresentation',\n                                id: 'label1',\n                                name: 'Label1',\n                                type: 'date',\n                                value: null,\n                                required: false,\n                                readOnly: false,\n                                overrideId: false,\n                                colspan: 1,\n                                placeholder: null,\n                                minLength: 0,\n                                maxLength: 0,\n                                minValue: null,\n                                maxValue: null,\n                                regexPattern: null,\n                                optionType: null,\n                                hasEmptyValue: null,\n                                options: null,\n                                restUrl: null,\n                                restResponsePath: null,\n                                restIdProperty: null,\n                                restLabelProperty: null,\n                                tab: null,\n                                className: null,\n                                params: {\n                                    existingColspan: 1,\n                                    maxColspan: 1\n                                },\n                                dateDisplayFormat: null,\n                                layout: {\n                                    row: -1,\n                                    column: -1,\n                                    colspan: 1\n                                },\n                                sizeX: 1,\n                                sizeY: 1,\n                                row: -1,\n                                col: -1,\n                                visibilityCondition: null\n                            }\n                        ]\n                    }\n                },\n                {\n                    fieldType: 'ContainerRepresentation',\n                    id: '1507037670167',\n                    name: 'Label',\n                    type: 'container',\n                    value: null,\n                    required: false,\n                    readOnly: false,\n                    overrideId: false,\n                    colspan: 1,\n                    placeholder: null,\n                    minLength: 0,\n                    maxLength: 0,\n                    minValue: null,\n                    maxValue: null,\n                    regexPattern: null,\n                    optionType: null,\n                    hasEmptyValue: null,\n                    options: null,\n                    restUrl: null,\n                    restResponsePath: null,\n                    restIdProperty: null,\n                    restLabelProperty: null,\n                    tab: null,\n                    className: null,\n                    dateDisplayFormat: null,\n                    layout: null,\n                    sizeX: 2,\n                    sizeY: 1,\n                    row: -1,\n                    col: -1,\n                    visibilityCondition: null,\n                    numberOfColumns: 2,\n                    fields: {\n                        '1': [\n                            {\n                                fieldType: 'FormFieldRepresentation',\n                                id: 'label2',\n                                name: 'Label2',\n                                type: 'boolean',\n                                value: null,\n                                required: false,\n                                readOnly: false,\n                                overrideId: false,\n                                colspan: 1,\n                                placeholder: null,\n                                minLength: 0,\n                                maxLength: 0,\n                                minValue: null,\n                                maxValue: null,\n                                regexPattern: null,\n                                optionType: null,\n                                hasEmptyValue: null,\n                                options: null,\n                                restUrl: null,\n                                restResponsePath: null,\n                                restIdProperty: null,\n                                restLabelProperty: null,\n                                tab: null,\n                                className: null,\n                                params: {\n                                    existingColspan: 1,\n                                    maxColspan: 2\n                                },\n                                dateDisplayFormat: null,\n                                layout: {\n                                    row: -1,\n                                    column: -1,\n                                    colspan: 1\n                                },\n                                sizeX: 1,\n                                sizeY: 1,\n                                row: -1,\n                                col: -1,\n                                visibilityCondition: null\n                            }\n                        ],\n                        '2': []\n                    }\n                }\n            ],\n            outcomes: [],\n            javascriptEvents: [],\n            className: '',\n            style: '',\n            customFieldTemplates: {},\n            metadata: {},\n            variables: [],\n            customFieldsValueInfo: {},\n            gridsterForm: false\n        }\n    }\n};\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FormModel, FormValues } from '../../form/components/widgets/core';\n\nexport const formTest = new FormModel({});\n\nexport const formValues: FormValues = {\n    test_1: 'value_1',\n    test_2: 'value_2',\n    test_3: 'value_1',\n    test_4: 'dropdown_id',\n    test_5: 'dropdown_label',\n    dropdown: { id: 'dropdown_id', name: 'dropdown_label' }\n};\n\nexport const fakeFormJson: any = {\n    id: '9999',\n    name: 'FORM_VISIBILITY',\n    processDefinitionId: 'PROCESS_TEST:  9:  9999',\n    processDefinitionName: 'PROCESS_TEST',\n    processDefinitionKey: 'PROCESS_TEST',\n    taskId: '999',\n    taskName: 'TEST',\n    fields: [\n        {\n            fieldType: 'ContainerRepresentation',\n            id: '000000000000000000',\n            name: 'Label',\n            type: 'container',\n            value: null,\n            numberOfColumns: 2,\n            fields: {\n                '1': [\n                    {\n                        fieldType: 'FormFieldRepresentation',\n                        id: 'FIELD_TEST',\n                        name: 'FIELD_TEST',\n                        type: 'text',\n                        value: 'RIGHT_FORM_FIELD_VALUE',\n                        visibilityCondition: null,\n                        isVisible: true\n                    },\n                    {\n                        fieldType: 'FormFieldRepresentation',\n                        id: 'FIELD_WITH_CONDITION',\n                        name: 'FIELD_WITH_CONDITION',\n                        type: 'text',\n                        value: 'field_with_condition_value',\n                        visibilityCondition: null,\n                        isVisible: true\n                    },\n                    {\n                        fieldType: 'FormFieldRepresentation',\n                        id: 'LEFT_FORM_FIELD_ID',\n                        name: 'LEFT_FORM_FIELD_NAME',\n                        type: 'text',\n                        value: 'LEFT_FORM_FIELD_VALUE',\n                        visibilityCondition: null,\n                        isVisible: true\n                    }\n                ],\n                '2': [\n                    {\n                        fieldType: 'FormFieldRepresentation',\n                        id: 'RIGHT_FORM_FIELD_ID',\n                        name: 'RIGHT_FORM_FIELD_NAME',\n                        type: 'text',\n                        value: 'RIGHT_FORM_FIELD_VALUE',\n                        visibilityCondition: null,\n                        isVisible: true\n                    }\n                ]\n            }\n        }\n    ],\n    variables: [\n        {\n            id: 'e621e8ff-42a6-499c-8121-33c7c35d8641',\n            name: 'age',\n            type: 'integer',\n            value: 11\n        },\n        {\n            id: '4f8aa99e-8526-429c-9d99-809978489d96',\n            name: 'name',\n            type: 'string',\n            value: 'abc'\n        },\n        {\n            id: '0207b649-ff07-4f3a-a589-d10afa507b9b',\n            name: 'dob',\n            type: 'date',\n            value: '2019-05-13'\n        }\n    ]\n};\n\nexport const fakeFormCheckBoxVisibilityJson: any = {\n    referenceId: '33033',\n    name: 'test_condition_form',\n    description: '',\n    tabs: [],\n    fields: [\n        {\n            fieldType: 'ContainerRepresentation',\n            id: '1623514352532',\n            name: 'Label',\n            type: 'container',\n            value: 'null',\n            required: 'false',\n            readOnly: 'false',\n            overrideId: 'false',\n            colspan: '1',\n            placeholder: 'null',\n            minLength: '0',\n            maxLength: '0',\n            minValue: 'null',\n            maxValue: 'null',\n            regexPattern: 'null',\n            optionType: 'null',\n            hasEmptyValue: 'null',\n            options: 'null',\n            restUrl: 'null',\n            restResponsePath: 'null',\n            restIdProperty: 'null',\n            restLabelProperty: 'null',\n            tab: 'null',\n            className: 'null',\n            dateDisplayFormat: 'null',\n            layout: 'null',\n            sizeX: '2',\n            sizeY: '1',\n            row: '-1',\n            col: '-1',\n            visibilityCondition: 'null',\n            numberOfColumns: '2',\n            fields: {\n                '1': [\n                    {\n                        fieldType: 'FormFieldRepresentation',\n                        id: 'a',\n                        name: 'A',\n                        type: 'boolean',\n                        value: 'null',\n                        required: 'false',\n                        readOnly: 'false',\n                        overrideId: 'false',\n                        colspan: '1',\n                        placeholder: 'null',\n                        minLength: '0',\n                        maxLength: '0',\n                        minValue: 'null',\n                        maxValue: 'null',\n                        regexPattern: 'null',\n                        optionType: 'null',\n                        hasEmptyValue: 'null',\n                        options: 'null',\n                        restUrl: 'null',\n                        restResponsePath: 'null',\n                        restIdProperty: 'null',\n                        restLabelProperty: 'null',\n                        tab: 'null',\n                        className: 'null',\n                        params: {\n                            existingColspan: '1',\n                            maxColspan: '2'\n                        },\n                        dateDisplayFormat: 'null',\n                        layout: {\n                            row: '-1',\n                            column: '-1',\n                            colspan: '1'\n                        },\n                        sizeX: '1',\n                        sizeY: '1',\n                        row: '-1',\n                        col: '-1',\n                        visibilityCondition: 'null'\n                    }\n                ],\n                '2': [\n                    {\n                        fieldType: 'FormFieldRepresentation',\n                        id: 'b',\n                        name: 'B',\n                        type: 'boolean',\n                        value: 'null',\n                        required: 'false',\n                        readOnly: 'false',\n                        overrideId: 'false',\n                        colspan: '1',\n                        placeholder: 'null',\n                        minLength: '0',\n                        maxLength: '0',\n                        minValue: 'null',\n                        maxValue: 'null',\n                        regexPattern: 'null',\n                        optionType: 'null',\n                        hasEmptyValue: 'null',\n                        options: 'null',\n                        restUrl: 'null',\n                        restResponsePath: 'null',\n                        restIdProperty: 'null',\n                        restLabelProperty: 'null',\n                        tab: 'null',\n                        className: 'null',\n                        params: {\n                            existingColspan: '1',\n                            maxColspan: '1'\n                        },\n                        dateDisplayFormat: 'null',\n                        layout: {\n                            row: '-1',\n                            column: '-1',\n                            colspan: '1'\n                        },\n                        sizeX: '1',\n                        sizeY: '1',\n                        row: '-1',\n                        col: '-1',\n                        visibilityCondition: 'null'\n                    }\n                ]\n            }\n        },\n        {\n            fieldType: 'ContainerRepresentation',\n            id: '1623514356352',\n            name: 'Label',\n            type: 'container',\n            value: 'null',\n            required: 'false',\n            readOnly: 'false',\n            overrideId: 'false',\n            colspan: '1',\n            placeholder: 'null',\n            minLength: '0',\n            maxLength: '0',\n            minValue: 'null',\n            maxValue: 'null',\n            regexPattern: 'null',\n            optionType: 'null',\n            hasEmptyValue: 'null',\n            options: 'null',\n            restUrl: 'null',\n            restResponsePath: 'null',\n            restIdProperty: 'null',\n            restLabelProperty: 'null',\n            tab: 'null',\n            className: 'null',\n            dateDisplayFormat: 'null',\n            layout: 'null',\n            sizeX: '2',\n            sizeY: '1',\n            row: '-1',\n            col: '-1',\n            visibilityCondition: 'null',\n            numberOfColumns: '2',\n            fields: {\n                '1': [\n                    {\n                        fieldType: 'FormFieldRepresentation',\n                        id: 'c',\n                        name: 'C',\n                        type: 'boolean',\n                        value: 'null',\n                        required: 'false',\n                        readOnly: 'false',\n                        overrideId: 'false',\n                        colspan: '1',\n                        placeholder: 'null',\n                        minLength: '0',\n                        maxLength: '0',\n                        minValue: 'null',\n                        maxValue: 'null',\n                        regexPattern: 'null',\n                        optionType: 'null',\n                        hasEmptyValue: 'null',\n                        options: 'null',\n                        restUrl: 'null',\n                        restResponsePath: 'null',\n                        restIdProperty: 'null',\n                        restLabelProperty: 'null',\n                        tab: 'null',\n                        className: 'null',\n                        params: {\n                            existingColspan: '1',\n                            maxColspan: '2'\n                        },\n                        dateDisplayFormat: 'null',\n                        layout: {\n                            row: '-1',\n                            column: '-1',\n                            colspan: '1'\n                        },\n                        sizeX: '1',\n                        sizeY: '1',\n                        row: '-1',\n                        col: '-1',\n                        visibilityCondition: 'null'\n                    }\n                ],\n                '2': [\n                    {\n                        fieldType: 'FormFieldRepresentation',\n                        id: 'd',\n                        name: 'D',\n                        type: 'boolean',\n                        value: 'null',\n                        required: 'false',\n                        readOnly: 'false',\n                        overrideId: 'false',\n                        colspan: '1',\n                        placeholder: 'null',\n                        minLength: '0',\n                        maxLength: '0',\n                        minValue: 'null',\n                        maxValue: 'null',\n                        regexPattern: 'null',\n                        optionType: 'null',\n                        hasEmptyValue: 'null',\n                        options: 'null',\n                        restUrl: 'null',\n                        restResponsePath: 'null',\n                        restIdProperty: 'null',\n                        restLabelProperty: 'null',\n                        tab: 'null',\n                        className: 'null',\n                        params: {\n                            existingColspan: '1',\n                            maxColspan: '1'\n                        },\n                        dateDisplayFormat: 'null',\n                        layout: {\n                            row: '-1',\n                            column: '-1',\n                            colspan: '1'\n                        },\n                        sizeX: '1',\n                        sizeY: '1',\n                        row: '-1',\n                        col: '-1',\n                        visibilityCondition: 'null'\n                    }\n                ]\n            }\n        },\n        {\n            fieldType: 'ContainerRepresentation',\n            id: '1623514409166',\n            name: 'Label',\n            type: 'container',\n            value: 'null',\n            required: 'false',\n            readOnly: 'false',\n            overrideId: 'false',\n            colspan: '1',\n            placeholder: 'null',\n            minLength: '0',\n            maxLength: '0',\n            minValue: 'null',\n            maxValue: 'null',\n            regexPattern: 'null',\n            optionType: 'null',\n            hasEmptyValue: 'null',\n            options: 'null',\n            restUrl: 'null',\n            restResponsePath: 'null',\n            restIdProperty: 'null',\n            restLabelProperty: 'null',\n            tab: 'null',\n            className: 'null',\n            dateDisplayFormat: 'null',\n            layout: 'null',\n            sizeX: '2',\n            sizeY: '1',\n            row: '-1',\n            col: '-1',\n            visibilityCondition: 'null',\n            numberOfColumns: '2',\n            fields: {\n                '1': [\n                    {\n                        fieldType: 'FormFieldRepresentation',\n                        id: 'a_b_c_d',\n                        name: 'Textfield ( A && B || C && D)',\n                        type: 'text',\n                        value: 'null',\n                        required: 'false',\n                        readOnly: 'false',\n                        overrideId: 'true',\n                        colspan: '1',\n                        placeholder: 'null',\n                        minLength: '0',\n                        maxLength: '0',\n                        minValue: 'null',\n                        maxValue: 'null',\n                        regexPattern: 'null',\n                        optionType: 'null',\n                        hasEmptyValue: 'null',\n                        options: 'null',\n                        restUrl: 'null',\n                        restResponsePath: 'null',\n                        restIdProperty: 'null',\n                        restLabelProperty: 'null',\n                        tab: 'null',\n                        className: 'null',\n                        params: {\n                            existingColspan: '1',\n                            maxColspan: '2'\n                        },\n                        dateDisplayFormat: 'null',\n                        layout: {\n                            row: '-1',\n                            column: '-1',\n                            colspan: '1'\n                        },\n                        sizeX: '1',\n                        sizeY: '1',\n                        row: '-1',\n                        col: '-1',\n                        visibilityCondition: {\n                            leftFormFieldId: 'a',\n                            leftRestResponseId: 'null',\n                            operator: '==',\n                            rightValue: 'true',\n                            rightType: 'null',\n                            rightFormFieldId: '',\n                            rightRestResponseId: '',\n                            nextConditionOperator: 'and',\n                            nextCondition: {\n                                leftFormFieldId: 'b',\n                                leftRestResponseId: 'null',\n                                operator: '==',\n                                rightValue: 'true',\n                                rightType: 'null',\n                                rightFormFieldId: '',\n                                rightRestResponseId: '',\n                                nextConditionOperator: 'or',\n                                nextCondition: {\n                                    leftFormFieldId: 'c',\n                                    leftRestResponseId: 'null',\n                                    operator: '==',\n                                    rightValue: 'true',\n                                    rightType: 'null',\n                                    rightFormFieldId: '',\n                                    rightRestResponseId: '',\n                                    nextConditionOperator: 'and',\n                                    nextCondition: {\n                                        leftFormFieldId: 'd',\n                                        leftRestResponseId: 'null',\n                                        operator: '==',\n                                        rightValue: 'true',\n                                        rightType: 'null',\n                                        rightFormFieldId: '',\n                                        rightRestResponseId: '',\n                                        nextConditionOperator: '',\n                                        nextCondition: 'null'\n                                    }\n                                }\n                            }\n                        }\n                    }\n                ],\n                '2': []\n            }\n        }\n    ],\n    outcomes: [],\n    javascriptEvents: [],\n    className: '',\n    style: '',\n    customFieldTemplates: {},\n    metadata: {},\n    variables: [],\n    customFieldsValueInfo: {},\n    gridsterForm: 'false'\n};\n\nexport const fakeFormChainedVisibilityJson: any = {\n    id: '8800',\n    name: 'FORM_VISIBILITYl_CHAIN',\n    processDefinitionId: 'PROCESS_TEST:  9:  9999',\n    processDefinitionName: 'PROCESS_TEST',\n    processDefinitionKey: 'PROCESS_TEST',\n    taskId: '999',\n    taskName: 'TEST',\n    fields: [\n        {\n            fieldType: 'ContainerRepresentation',\n            id: '1615506402205',\n            name: 'Label',\n            type: 'container',\n            value: null,\n            required: false,\n            readOnly: false,\n            overrideId: false,\n            colspan: 1,\n            placeholder: null,\n            minLength: 0,\n            maxLength: 0,\n            minValue: null,\n            maxValue: null,\n            regexPattern: null,\n            optionType: null,\n            hasEmptyValue: null,\n            options: null,\n            restUrl: null,\n            restResponsePath: null,\n            restIdProperty: null,\n            restLabelProperty: null,\n            tab: null,\n            className: null,\n            dateDisplayFormat: null,\n            layout: null,\n            sizeX: 2,\n            sizeY: 1,\n            row: -1,\n            col: -1,\n            visibilityCondition: null,\n            numberOfColumns: 2,\n            fields: {\n                '1': [\n                    {\n                        fieldType: 'FormFieldRepresentation',\n                        id: 'installments',\n                        name: 'Installments',\n                        type: 'integer',\n                        value: null,\n                        required: true,\n                        readOnly: false,\n                        overrideId: false,\n                        colspan: 1,\n                        placeholder: null,\n                        minLength: 0,\n                        maxLength: 0,\n                        minValue: null,\n                        maxValue: null,\n                        regexPattern: null,\n                        optionType: null,\n                        hasEmptyValue: null,\n                        options: null,\n                        restUrl: null,\n                        restResponsePath: null,\n                        restIdProperty: null,\n                        restLabelProperty: null,\n                        tab: null,\n                        className: null,\n                        params: {\n                            existingColspan: 1,\n                            maxColspan: 2\n                        },\n                        dateDisplayFormat: null,\n                        layout: {\n                            row: -1,\n                            column: -1,\n                            colspan: 1\n                        },\n                        sizeX: 1,\n                        sizeY: 1,\n                        row: -1,\n                        col: -1,\n                        visibilityCondition: null\n                    }\n                ],\n                '2': [\n                    {\n                        fieldType: 'RestFieldRepresentation',\n                        id: 'schedule',\n                        name: 'Schedule',\n                        type: 'dropdown',\n                        value: 'Choose one...',\n                        required: false,\n                        readOnly: false,\n                        overrideId: false,\n                        colspan: 1,\n                        placeholder: null,\n                        minLength: 0,\n                        maxLength: 0,\n                        minValue: null,\n                        maxValue: null,\n                        regexPattern: null,\n                        optionType: null,\n                        hasEmptyValue: true,\n                        options: [\n                            {\n                                id: 'empty',\n                                name: 'Choose one...'\n                            },\n                            {\n                                id: 'ANNUAL',\n                                name: 'Annual'\n                            },\n                            {\n                                id: 'QUARTERLY',\n                                name: 'Quarterly'\n                            },\n                            {\n                                id: 'MONTHLY',\n                                name: 'Monthly'\n                            }\n                        ],\n                        restUrl: null,\n                        restResponsePath: null,\n                        restIdProperty: null,\n                        restLabelProperty: null,\n                        tab: null,\n                        className: null,\n                        params: {\n                            existingColspan: 1,\n                            maxColspan: 1\n                        },\n                        dateDisplayFormat: null,\n                        layout: {\n                            row: -1,\n                            column: -1,\n                            colspan: 1\n                        },\n                        sizeX: 1,\n                        sizeY: 1,\n                        row: -1,\n                        col: -1,\n                        visibilityCondition: null,\n                        endpoint: null,\n                        requestHeaders: null\n                    }\n                ]\n            }\n        },\n        {\n            fieldType: 'ContainerRepresentation',\n            id: 1615506384790,\n            name: 'Label',\n            type: 'container',\n            value: null,\n            required: false,\n            readOnly: false,\n            overrideId: false,\n            colspan: 1,\n            placeholder: null,\n            minLength: 0,\n            maxLength: 0,\n            minValue: null,\n            maxValue: null,\n            regexPattern: null,\n            optionType: null,\n            hasEmptyValue: null,\n            options: null,\n            restUrl: null,\n            restResponsePath: null,\n            restIdProperty: null,\n            restLabelProperty: null,\n            tab: null,\n            className: null,\n            dateDisplayFormat: null,\n            layout: null,\n            sizeX: 2,\n            sizeY: 1,\n            row: -1,\n            col: -1,\n            visibilityCondition: null,\n            numberOfColumns: 2,\n            fields: {\n                '1': [\n                    {\n                        fieldType: 'FormFieldRepresentation',\n                        id: 'showtext',\n                        name: 'Show text',\n                        type: 'readonly-text',\n                        value: 'This test is shown when the visibility logic is displayed.\\nThis should only show under the following conditions:\\nAnnual and installment > 5\\nQuarterly and installment > 20\\nMonthly and installment > 60',\n                        required: false,\n                        readOnly: false,\n                        overrideId: false,\n                        colspan: 1,\n                        placeholder: null,\n                        minLength: 0,\n                        maxLength: 0,\n                        minValue: null,\n                        maxValue: null,\n                        regexPattern: null,\n                        optionType: null,\n                        hasEmptyValue: null,\n                        options: null,\n                        restUrl: null,\n                        restResponsePath: null,\n                        restIdProperty: null,\n                        restLabelProperty: null,\n                        tab: null,\n                        className: null,\n                        params: {\n                            existingColspan: 1,\n                            maxColspan: 2\n                        },\n                        dateDisplayFormat: null,\n                        layout: {\n                            row: -1,\n                            column: -1,\n                            colspan: 1\n                        },\n                        sizeX: 1,\n                        sizeY: 1,\n                        row: -1,\n                        col: -1,\n                        visibilityCondition: {\n                            leftFormFieldId: 'schedule',\n                            leftRestResponseId: null,\n                            operator: '==',\n                            rightValue: 'ANNUAL',\n                            rightType: null,\n                            rightFormFieldId: '',\n                            rightRestResponseId: '',\n                            nextConditionOperator: 'and',\n                            nextCondition: {\n                                leftFormFieldId: 'installments',\n                                leftRestResponseId: null,\n                                operator: '>',\n                                rightValue: 5,\n                                rightType: null,\n                                rightFormFieldId: '',\n                                rightRestResponseId: '',\n                                nextConditionOperator: 'or',\n                                nextCondition: {\n                                    leftFormFieldId: 'schedule',\n                                    leftRestResponseId: null,\n                                    operator: '==',\n                                    rightValue: 'QUARTERLY',\n                                    rightType: null,\n                                    rightFormFieldId: '',\n                                    rightRestResponseId: '',\n                                    nextConditionOperator: 'and',\n                                    nextCondition: {\n                                        leftFormFieldId: 'installments',\n                                        leftRestResponseId: null,\n                                        operator: '>',\n                                        rightValue: 20,\n                                        rightType: null,\n                                        rightFormFieldId: '',\n                                        rightRestResponseId: '',\n                                        nextConditionOperator: 'or',\n                                        nextCondition: {\n                                            leftFormFieldId: 'schedule',\n                                            leftRestResponseId: null,\n                                            operator: '==',\n                                            rightValue: 'MONTHLY',\n                                            rightType: null,\n                                            rightFormFieldId: '',\n                                            rightRestResponseId: '',\n                                            nextConditionOperator: 'and',\n                                            nextCondition: {\n                                                leftFormFieldId: 'installments',\n                                                leftRestResponseId: null,\n                                                operator: '>',\n                                                rightValue: 60,\n                                                rightType: null,\n                                                rightFormFieldId: '',\n                                                rightRestResponseId: '',\n                                                nextConditionOperator: '',\n                                                nextCondition: null\n                                            }\n                                        }\n                                    }\n                                }\n                            }\n                        }\n                    }\n                ],\n                '2': []\n            }\n        }\n    ],\n    variables: [\n        {\n            id: 'e621e8ff-42a6-499c-8121-33c7c35d8641',\n            name: 'age',\n            type: 'integer',\n            value: 11\n        },\n        {\n            id: '4f8aa99e-8526-429c-9d99-809978489d96',\n            name: 'name',\n            type: 'string',\n            value: 'abc'\n        },\n        {\n            id: '0207b649-ff07-4f3a-a589-d10afa507b9b',\n            name: 'dob',\n            type: 'date',\n            value: '2019-05-13'\n        }\n    ]\n};\n\nexport const complexVisibilityJsonVisible: any = {\n    id: 47591,\n    name: 'Test-visibility',\n    description: '',\n    version: 4,\n    lastUpdatedBy: 13,\n    lastUpdatedByFullName: 'romano romano',\n    lastUpdated: '2019-06-11T11:  04:  36.870+0000',\n    stencilSetId: 0,\n    referenceId: null,\n    formDefinition: {\n        tabs: [],\n        fields: [\n            {\n                fieldType: 'ContainerRepresentation',\n                id: '1560246123312',\n                name: 'Label',\n                type: 'container',\n                value: null,\n                required: false,\n                readOnly: false,\n                overrideId: false,\n                colspan: 1,\n                placeholder: null,\n                minLength: 0,\n                maxLength: 0,\n                minValue: null,\n                maxValue: null,\n                regexPattern: null,\n                optionType: null,\n                hasEmptyValue: null,\n                options: null,\n                restUrl: null,\n                restResponsePath: null,\n                restIdProperty: null,\n                restLabelProperty: null,\n                tab: null,\n                className: null,\n                dateDisplayFormat: null,\n                layout: null,\n                sizeX: 2,\n                sizeY: 1,\n                row: -1,\n                col: -1,\n                visibilityCondition: null,\n                numberOfColumns: 2,\n                fields: {\n                    '1': [\n                        {\n                            fieldType: 'FormFieldRepresentation',\n                            id: 'label',\n                            name: 'Label',\n                            type: 'text',\n                            value: null,\n                            required: false,\n                            readOnly: false,\n                            overrideId: false,\n                            colspan: 1,\n                            placeholder: null,\n                            minLength: 0,\n                            maxLength: 0,\n                            minValue: null,\n                            maxValue: null,\n                            regexPattern: null,\n                            optionType: null,\n                            hasEmptyValue: null,\n                            options: null,\n                            restUrl: null,\n                            restResponsePath: null,\n                            restIdProperty: null,\n                            restLabelProperty: null,\n                            tab: null,\n                            className: null,\n                            params: { existingColspan: 1, maxColspan: 2 },\n                            dateDisplayFormat: null,\n                            layout: { row: -1, column: -1, colspan: 1 },\n                            sizeX: 1,\n                            sizeY: 1,\n                            row: -1,\n                            col: -1,\n                            visibilityCondition: null\n                        }\n                    ],\n                    '2': [\n                        {\n                            fieldType: 'FormFieldRepresentation',\n                            id: 'label1',\n                            name: 'Label1',\n                            type: 'text',\n                            value: null,\n                            required: false,\n                            readOnly: false,\n                            overrideId: false,\n                            colspan: 1,\n                            placeholder: null,\n                            minLength: 0,\n                            maxLength: 0,\n                            minValue: null,\n                            maxValue: null,\n                            regexPattern: null,\n                            optionType: null,\n                            hasEmptyValue: null,\n                            options: null,\n                            restUrl: null,\n                            restResponsePath: null,\n                            restIdProperty: null,\n                            restLabelProperty: null,\n                            tab: null,\n                            className: null,\n                            params: { existingColspan: 1, maxColspan: 1 },\n                            dateDisplayFormat: null,\n                            layout: { row: -1, column: -1, colspan: 1 },\n                            sizeX: 1,\n                            sizeY: 1,\n                            row: -1,\n                            col: -1,\n                            visibilityCondition: null\n                        }\n                    ]\n                }\n            },\n            {\n                fieldType: 'ContainerRepresentation',\n                id: '1560246128696',\n                name: 'Label',\n                type: 'container',\n                value: null,\n                required: false,\n                readOnly: false,\n                overrideId: false,\n                colspan: 1,\n                placeholder: null,\n                minLength: 0,\n                maxLength: 0,\n                minValue: null,\n                maxValue: null,\n                regexPattern: null,\n                optionType: null,\n                hasEmptyValue: null,\n                options: null,\n                restUrl: null,\n                restResponsePath: null,\n                restIdProperty: null,\n                restLabelProperty: null,\n                tab: null,\n                className: null,\n                dateDisplayFormat: null,\n                layout: null,\n                sizeX: 2,\n                sizeY: 1,\n                row: -1,\n                col: -1,\n                visibilityCondition: null,\n                numberOfColumns: 2,\n                fields: {\n                    '1': [\n                        {\n                            fieldType: 'FormFieldRepresentation',\n                            id: 'label4',\n                            name: 'Label4',\n                            type: 'text',\n                            value: null,\n                            required: false,\n                            readOnly: false,\n                            overrideId: false,\n                            colspan: 1,\n                            placeholder: null,\n                            minLength: 0,\n                            maxLength: 0,\n                            minValue: null,\n                            maxValue: null,\n                            regexPattern: null,\n                            optionType: null,\n                            hasEmptyValue: null,\n                            options: null,\n                            restUrl: null,\n                            restResponsePath: null,\n                            restIdProperty: null,\n                            restLabelProperty: null,\n                            tab: null,\n                            className: null,\n                            params: { existingColspan: 1, maxColspan: 2 },\n                            dateDisplayFormat: null,\n                            layout: { row: -1, column: -1, colspan: 1 },\n                            sizeX: 1,\n                            sizeY: 1,\n                            row: -1,\n                            col: -1,\n                            visibilityCondition: null\n                        }\n                    ],\n                    '2': [\n                        {\n                            fieldType: 'FormFieldRepresentation',\n                            id: 'label3',\n                            name: 'Label3',\n                            type: 'text',\n                            value: '',\n                            required: false,\n                            readOnly: false,\n                            overrideId: false,\n                            colspan: 1,\n                            placeholder: null,\n                            minLength: 0,\n                            maxLength: 0,\n                            minValue: null,\n                            maxValue: null,\n                            regexPattern: null,\n                            optionType: null,\n                            hasEmptyValue: null,\n                            options: null,\n                            restUrl: null,\n                            restResponsePath: null,\n                            restIdProperty: null,\n                            restLabelProperty: null,\n                            tab: null,\n                            className: null,\n                            params: { existingColspan: 1, maxColspan: 1 },\n                            dateDisplayFormat: null,\n                            layout: { row: -1, column: -1, colspan: 1 },\n                            sizeX: 1,\n                            sizeY: 1,\n                            row: -1,\n                            col: -1,\n                            visibilityCondition: null\n                        }\n                    ]\n                }\n            },\n            {\n                fieldType: 'ContainerRepresentation',\n                id: '1560246126964',\n                name: 'Label',\n                type: 'container',\n                value: null,\n                required: false,\n                readOnly: false,\n                overrideId: false,\n                colspan: 1,\n                placeholder: null,\n                minLength: 0,\n                maxLength: 0,\n                minValue: null,\n                maxValue: null,\n                regexPattern: null,\n                optionType: null,\n                hasEmptyValue: null,\n                options: null,\n                restUrl: null,\n                restResponsePath: null,\n                restIdProperty: null,\n                restLabelProperty: null,\n                tab: null,\n                className: null,\n                dateDisplayFormat: null,\n                layout: null,\n                sizeX: 2,\n                sizeY: 1,\n                row: -1,\n                col: -1,\n                visibilityCondition: null,\n                numberOfColumns: 2,\n                fields: {\n                    '1': [\n                        {\n                            fieldType: 'FormFieldRepresentation',\n                            id: 'label2',\n                            name: 'Label2',\n                            type: 'text',\n                            value: null,\n                            required: false,\n                            readOnly: false,\n                            overrideId: false,\n                            colspan: 1,\n                            placeholder: null,\n                            minLength: 0,\n                            maxLength: 0,\n                            minValue: null,\n                            maxValue: null,\n                            regexPattern: null,\n                            optionType: null,\n                            hasEmptyValue: null,\n                            options: null,\n                            restUrl: null,\n                            restResponsePath: null,\n                            restIdProperty: null,\n                            restLabelProperty: null,\n                            tab: null,\n                            className: null,\n                            params: { existingColspan: 1, maxColspan: 2 },\n                            dateDisplayFormat: null,\n                            layout: { row: -1, column: -1, colspan: 1 },\n                            sizeX: 1,\n                            sizeY: 1,\n                            row: -1,\n                            col: -1,\n                            visibilityCondition: null\n                        }\n                    ],\n                    '2': [\n                        {\n                            fieldType: 'FormFieldRepresentation',\n                            id: 'label5',\n                            name: 'Label5',\n                            type: 'boolean',\n                            value: null,\n                            required: false,\n                            readOnly: false,\n                            overrideId: false,\n                            colspan: 1,\n                            placeholder: null,\n                            minLength: 0,\n                            maxLength: 0,\n                            minValue: null,\n                            maxValue: null,\n                            regexPattern: null,\n                            optionType: null,\n                            hasEmptyValue: null,\n                            options: null,\n                            restUrl: null,\n                            restResponsePath: null,\n                            restIdProperty: null,\n                            restLabelProperty: null,\n                            tab: null,\n                            className: null,\n                            params: { existingColspan: 1, maxColspan: 1 },\n                            dateDisplayFormat: null,\n                            layout: { row: -1, column: -1, colspan: 1 },\n                            sizeX: 1,\n                            sizeY: 1,\n                            row: -1,\n                            col: -1,\n                            visibilityCondition: {\n                                leftFormFieldId: 'label',\n                                leftRestResponseId: null,\n                                operator: '==',\n                                rightValue: 'aaa',\n                                rightType: null,\n                                rightFormFieldId: '',\n                                rightRestResponseId: '',\n                                nextConditionOperator: 'and',\n                                nextCondition: {\n                                    leftFormFieldId: 'label1',\n                                    leftRestResponseId: null,\n                                    operator: '!=',\n                                    rightValue: 'aaa',\n                                    rightType: null,\n                                    rightFormFieldId: '',\n                                    rightRestResponseId: '',\n                                    nextConditionOperator: 'and',\n                                    nextCondition: {\n                                        leftFormFieldId: 'label2',\n                                        leftRestResponseId: null,\n                                        operator: '!empty',\n                                        rightValue: null,\n                                        rightType: null,\n                                        rightFormFieldId: '',\n                                        rightRestResponseId: '',\n                                        nextConditionOperator: 'or',\n                                        nextCondition: {\n                                            leftFormFieldId: 'label3',\n                                            leftRestResponseId: null,\n                                            operator: 'empty',\n                                            rightValue: null,\n                                            rightType: null,\n                                            rightFormFieldId: '',\n                                            rightRestResponseId: '',\n                                            nextConditionOperator: null,\n                                            nextCondition: null\n                                        }\n                                    }\n                                }\n                            }\n                        }\n                    ]\n                }\n            }\n        ],\n        outcomes: [],\n        javascriptEvents: [],\n        className: '',\n        style: '',\n        customFieldTemplates: {},\n        metadata: {},\n        variables: [],\n        customFieldsValueInfo: {},\n        gridsterForm: false\n    }\n};\n\nexport const complexVisibilityJsonNotVisible: any = {\n    id: 47591,\n    name: 'Test-visibility',\n    description: '',\n    version: 4,\n    lastUpdatedBy: 13,\n    lastUpdatedByFullName: 'romano romano',\n    lastUpdated: '2019-06-11T11:  04:  36.870+0000',\n    stencilSetId: 0,\n    referenceId: null,\n    formDefinition: {\n        tabs: [],\n        fields: [\n            {\n                fieldType: 'ContainerRepresentation',\n                id: '1560246123312',\n                name: 'Label',\n                type: 'container',\n                value: null,\n                required: false,\n                readOnly: false,\n                overrideId: false,\n                colspan: 1,\n                placeholder: null,\n                minLength: 0,\n                maxLength: 0,\n                minValue: null,\n                maxValue: null,\n                regexPattern: null,\n                optionType: null,\n                hasEmptyValue: null,\n                options: null,\n                restUrl: null,\n                restResponsePath: null,\n                restIdProperty: null,\n                restLabelProperty: null,\n                tab: null,\n                className: null,\n                dateDisplayFormat: null,\n                layout: null,\n                sizeX: 2,\n                sizeY: 1,\n                row: -1,\n                col: -1,\n                visibilityCondition: null,\n                numberOfColumns: 2,\n                fields: {\n                    '1': [\n                        {\n                            fieldType: 'FormFieldRepresentation',\n                            id: 'label',\n                            name: 'Label',\n                            type: 'text',\n                            value: null,\n                            required: false,\n                            readOnly: false,\n                            overrideId: false,\n                            colspan: 1,\n                            placeholder: null,\n                            minLength: 0,\n                            maxLength: 0,\n                            minValue: null,\n                            maxValue: null,\n                            regexPattern: null,\n                            optionType: null,\n                            hasEmptyValue: null,\n                            options: null,\n                            restUrl: null,\n                            restResponsePath: null,\n                            restIdProperty: null,\n                            restLabelProperty: null,\n                            tab: null,\n                            className: null,\n                            params: { existingColspan: 1, maxColspan: 2 },\n                            dateDisplayFormat: null,\n                            layout: { row: -1, column: -1, colspan: 1 },\n                            sizeX: 1,\n                            sizeY: 1,\n                            row: -1,\n                            col: -1,\n                            visibilityCondition: null\n                        }\n                    ],\n                    '2': [\n                        {\n                            fieldType: 'FormFieldRepresentation',\n                            id: 'label1',\n                            name: 'Label1',\n                            type: 'text',\n                            value: null,\n                            required: false,\n                            readOnly: false,\n                            overrideId: false,\n                            colspan: 1,\n                            placeholder: null,\n                            minLength: 0,\n                            maxLength: 0,\n                            minValue: null,\n                            maxValue: null,\n                            regexPattern: null,\n                            optionType: null,\n                            hasEmptyValue: null,\n                            options: null,\n                            restUrl: null,\n                            restResponsePath: null,\n                            restIdProperty: null,\n                            restLabelProperty: null,\n                            tab: null,\n                            className: null,\n                            params: { existingColspan: 1, maxColspan: 1 },\n                            dateDisplayFormat: null,\n                            layout: { row: -1, column: -1, colspan: 1 },\n                            sizeX: 1,\n                            sizeY: 1,\n                            row: -1,\n                            col: -1,\n                            visibilityCondition: null\n                        }\n                    ]\n                }\n            },\n            {\n                fieldType: 'ContainerRepresentation',\n                id: '1560246128696',\n                name: 'Label',\n                type: 'container',\n                value: null,\n                required: false,\n                readOnly: false,\n                overrideId: false,\n                colspan: 1,\n                placeholder: null,\n                minLength: 0,\n                maxLength: 0,\n                minValue: null,\n                maxValue: null,\n                regexPattern: null,\n                optionType: null,\n                hasEmptyValue: null,\n                options: null,\n                restUrl: null,\n                restResponsePath: null,\n                restIdProperty: null,\n                restLabelProperty: null,\n                tab: null,\n                className: null,\n                dateDisplayFormat: null,\n                layout: null,\n                sizeX: 2,\n                sizeY: 1,\n                row: -1,\n                col: -1,\n                visibilityCondition: null,\n                numberOfColumns: 2,\n                fields: {\n                    '1': [\n                        {\n                            fieldType: 'FormFieldRepresentation',\n                            id: 'label4',\n                            name: 'Label4',\n                            type: 'text',\n                            value: null,\n                            required: false,\n                            readOnly: false,\n                            overrideId: false,\n                            colspan: 1,\n                            placeholder: null,\n                            minLength: 0,\n                            maxLength: 0,\n                            minValue: null,\n                            maxValue: null,\n                            regexPattern: null,\n                            optionType: null,\n                            hasEmptyValue: null,\n                            options: null,\n                            restUrl: null,\n                            restResponsePath: null,\n                            restIdProperty: null,\n                            restLabelProperty: null,\n                            tab: null,\n                            className: null,\n                            params: { existingColspan: 1, maxColspan: 2 },\n                            dateDisplayFormat: null,\n                            layout: { row: -1, column: -1, colspan: 1 },\n                            sizeX: 1,\n                            sizeY: 1,\n                            row: -1,\n                            col: -1,\n                            visibilityCondition: null\n                        }\n                    ],\n                    '2': [\n                        {\n                            fieldType: 'FormFieldRepresentation',\n                            id: 'label3',\n                            name: 'Label3',\n                            type: 'text',\n                            value: 'OPSSS',\n                            required: false,\n                            readOnly: false,\n                            overrideId: false,\n                            colspan: 1,\n                            placeholder: null,\n                            minLength: 0,\n                            maxLength: 0,\n                            minValue: null,\n                            maxValue: null,\n                            regexPattern: null,\n                            optionType: null,\n                            hasEmptyValue: null,\n                            options: null,\n                            restUrl: null,\n                            restResponsePath: null,\n                            restIdProperty: null,\n                            restLabelProperty: null,\n                            tab: null,\n                            className: null,\n                            params: { existingColspan: 1, maxColspan: 1 },\n                            dateDisplayFormat: null,\n                            layout: { row: -1, column: -1, colspan: 1 },\n                            sizeX: 1,\n                            sizeY: 1,\n                            row: -1,\n                            col: -1,\n                            visibilityCondition: null\n                        }\n                    ]\n                }\n            },\n            {\n                fieldType: 'ContainerRepresentation',\n                id: '1560246126964',\n                name: 'Label',\n                type: 'container',\n                value: null,\n                required: false,\n                readOnly: false,\n                overrideId: false,\n                colspan: 1,\n                placeholder: null,\n                minLength: 0,\n                maxLength: 0,\n                minValue: null,\n                maxValue: null,\n                regexPattern: null,\n                optionType: null,\n                hasEmptyValue: null,\n                options: null,\n                restUrl: null,\n                restResponsePath: null,\n                restIdProperty: null,\n                restLabelProperty: null,\n                tab: null,\n                className: null,\n                dateDisplayFormat: null,\n                layout: null,\n                sizeX: 2,\n                sizeY: 1,\n                row: -1,\n                col: -1,\n                visibilityCondition: null,\n                numberOfColumns: 2,\n                fields: {\n                    '1': [\n                        {\n                            fieldType: 'FormFieldRepresentation',\n                            id: 'label2',\n                            name: 'Label2',\n                            type: 'text',\n                            value: null,\n                            required: false,\n                            readOnly: false,\n                            overrideId: false,\n                            colspan: 1,\n                            placeholder: null,\n                            minLength: 0,\n                            maxLength: 0,\n                            minValue: null,\n                            maxValue: null,\n                            regexPattern: null,\n                            optionType: null,\n                            hasEmptyValue: null,\n                            options: null,\n                            restUrl: null,\n                            restResponsePath: null,\n                            restIdProperty: null,\n                            restLabelProperty: null,\n                            tab: null,\n                            className: null,\n                            params: { existingColspan: 1, maxColspan: 2 },\n                            dateDisplayFormat: null,\n                            layout: { row: -1, column: -1, colspan: 1 },\n                            sizeX: 1,\n                            sizeY: 1,\n                            row: -1,\n                            col: -1,\n                            visibilityCondition: null\n                        }\n                    ],\n                    '2': [\n                        {\n                            fieldType: 'FormFieldRepresentation',\n                            id: 'label5',\n                            name: 'Label5',\n                            type: 'boolean',\n                            value: null,\n                            required: false,\n                            readOnly: false,\n                            overrideId: false,\n                            colspan: 1,\n                            placeholder: null,\n                            minLength: 0,\n                            maxLength: 0,\n                            minValue: null,\n                            maxValue: null,\n                            regexPattern: null,\n                            optionType: null,\n                            hasEmptyValue: null,\n                            options: null,\n                            restUrl: null,\n                            restResponsePath: null,\n                            restIdProperty: null,\n                            restLabelProperty: null,\n                            tab: null,\n                            className: null,\n                            params: { existingColspan: 1, maxColspan: 1 },\n                            dateDisplayFormat: null,\n                            layout: { row: -1, column: -1, colspan: 1 },\n                            sizeX: 1,\n                            sizeY: 1,\n                            row: -1,\n                            col: -1,\n                            visibilityCondition: {\n                                leftFormFieldId: 'label',\n                                leftRestResponseId: null,\n                                operator: '==',\n                                rightValue: 'aaa',\n                                rightFormFieldId: '',\n                                rightRestResponseId: '',\n                                nextConditionOperator: 'and',\n                                nextCondition: {\n                                    leftFormFieldId: 'label1',\n                                    leftRestResponseId: null,\n                                    operator: '!=',\n                                    rightValue: 'aaa',\n                                    rightFormFieldId: '',\n                                    rightRestResponseId: '',\n                                    nextConditionOperator: 'and',\n                                    nextCondition: {\n                                        leftFormFieldId: 'label2',\n                                        leftRestResponseId: null,\n                                        operator: '!empty',\n                                        rightValue: null,\n                                        rightFormFieldId: '',\n                                        rightRestResponseId: '',\n                                        nextConditionOperator: 'or',\n                                        nextCondition: {\n                                            leftFormFieldId: 'label3',\n                                            leftRestResponseId: null,\n                                            operator: 'empty',\n                                            rightValue: null,\n                                            rightFormFieldId: '',\n                                            rightRestResponseId: '',\n                                            nextConditionOperator: null,\n                                            nextCondition: null\n                                        }\n                                    }\n                                }\n                            }\n                        }\n                    ]\n                }\n            }\n        ],\n        outcomes: [],\n        javascriptEvents: [],\n        className: '',\n        style: '',\n        customFieldTemplates: {},\n        metadata: {},\n        variables: [],\n        customFieldsValueInfo: {},\n        gridsterForm: false\n    }\n};\n\nexport const tabVisibilityJsonMock: any = {\n    id: 45231,\n    name: 'visibility-form',\n    description: '',\n    version: 2,\n    lastUpdatedBy: 4255,\n    lastUpdatedByFullName: 'first last',\n    lastUpdated: '2019-08-26T08: 04: 02.091+0000',\n    stencilSetId: null,\n    referenceId: null,\n    tabs: [\n        {\n            id: 'tab1',\n            title: 'tab1',\n            visibilityCondition: null\n        },\n        {\n            id: 'tab2',\n            title: 'Tab2',\n            visibilityCondition: {\n                leftFormFieldId: 'label',\n                leftRestResponseId: null,\n                operator: '==',\n                rightValue: 'text',\n                rightType: null,\n                rightFormFieldId: '',\n                rightRestResponseId: '',\n                nextConditionOperator: '',\n                nextCondition: null\n            }\n        }\n    ],\n    formDefinition: {\n        fields: [\n            {\n                fieldType: 'ContainerRepresentation',\n                id: '1566806229182',\n                name: 'Label',\n                type: 'container',\n                value: null,\n                required: false,\n                readOnly: false,\n                overrideId: false,\n                colspan: 1,\n                placeholder: null,\n                minLength: 0,\n                maxLength: 0,\n                minValue: null,\n                maxValue: null,\n                regexPattern: null,\n                optionType: null,\n                hasEmptyValue: null,\n                options: null,\n                restUrl: null,\n                restResponsePath: null,\n                restIdProperty: null,\n                restLabelProperty: null,\n                tab: 'tab1',\n                className: null,\n                dateDisplayFormat: null,\n                layout: null,\n                sizeX: 2,\n                sizeY: 1,\n                row: -1,\n                col: -1,\n                visibilityCondition: null,\n                numberOfColumns: 2,\n                fields: {\n                    '1': [\n                        {\n                            fieldType: 'FormFieldRepresentation',\n                            id: 'label',\n                            name: 'Label',\n                            type: 'text',\n                            value: null,\n                            required: false,\n                            readOnly: false,\n                            overrideId: false,\n                            colspan: 1,\n                            placeholder: null,\n                            minLength: 0,\n                            maxLength: 0,\n                            minValue: null,\n                            maxValue: null,\n                            regexPattern: null,\n                            optionType: null,\n                            hasEmptyValue: null,\n                            options: null,\n                            restUrl: null,\n                            restResponsePath: null,\n                            restIdProperty: null,\n                            restLabelProperty: null,\n                            tab: 'tab1',\n                            className: null,\n                            params: {\n                                existingColspan: 1,\n                                maxColspan: 2\n                            },\n                            dateDisplayFormat: null,\n                            layout: {\n                                row: -1,\n                                column: -1,\n                                colspan: 1\n                            },\n                            sizeX: 1,\n                            sizeY: 1,\n                            row: -1,\n                            col: -1,\n                            visibilityCondition: null\n                        }\n                    ],\n                    '2': []\n                }\n            }\n        ],\n        outcomes: [],\n        javascriptEvents: [],\n        className: '',\n        style: '',\n        customFieldTemplates: {},\n        metadata: {},\n        variables: [],\n        customFieldsValueInfo: {},\n        gridsterForm: false\n    }\n};\n\nexport const tabInvalidFormVisibility: any = {\n    id: 'form-0668939d-34b2-440c-ab4d-01ab8b05a881',\n    name: 'tab-visibility',\n    description: '',\n    version: 0,\n    tabs: [\n        {\n            id: 'a8a4718d-5019-4852-9645-bba9b8253d86',\n            title: 'tab1',\n            visibilityCondition: {\n                leftType: 'field',\n                leftValue: 'Text1',\n                operator: '==',\n                rightValue: 'showtab',\n                rightType: 'value',\n                nextConditionOperator: '',\n                nextCondition: null\n            }\n        },\n        {\n            id: 'bb9033ca-55ef-432a-8120-bffc8a179ebb',\n            title: 'tab2',\n            visibilityCondition: null\n        }\n    ],\n    formDefinition: {\n        fields: [\n            {\n                id: '093270a5-6e28-4cf0-a72a-09731c0d59fd',\n                name: 'Label',\n                type: 'container',\n                tab: 'a8a4718d-5019-4852-9645-bba9b8253d86',\n                numberOfColumns: 2,\n                fields: {\n                    '1': [\n                        {\n                            id: 'Number1',\n                            name: 'Number1',\n                            type: 'integer',\n                            colspan: 1,\n                            placeholder: null,\n                            minValue: null,\n                            maxValue: null,\n                            required: false,\n                            visibilityCondition: null,\n                            params: {\n                                existingColspan: 1,\n                                maxColspan: 2\n                            }\n                        },\n                        {\n                            id: 'Number2',\n                            name: 'Number2',\n                            type: 'integer',\n                            colspan: 1,\n                            placeholder: null,\n                            minValue: null,\n                            maxValue: null,\n                            required: false,\n                            visibilityCondition: {\n                                leftType: 'field',\n                                leftValue: 'Text2',\n                                operator: '==',\n                                rightValue: 'shownumber',\n                                rightType: 'value',\n                                nextConditionOperator: '',\n                                nextCondition: null\n                            },\n                            params: {\n                                existingColspan: 1,\n                                maxColspan: 2\n                            }\n                        }\n                    ],\n                    '2': [\n                        {\n                            id: 'Text2',\n                            name: 'Text2',\n                            type: 'text',\n                            required: false,\n                            colspan: 1,\n                            placeholder: null,\n                            minLength: 0,\n                            maxLength: 0,\n                            regexPattern: null,\n                            visibilityCondition: null,\n                            params: {\n                                existingColspan: 1,\n                                maxColspan: 2\n                            }\n                        }\n                    ]\n                }\n            },\n            {\n                id: 'c33579eb-3514-42cc-832d-2998d06a3eab',\n                name: 'Label',\n                type: 'container',\n                tab: 'bb9033ca-55ef-432a-8120-bffc8a179ebb',\n                numberOfColumns: 2,\n                fields: {\n                    '1': [\n                        {\n                            id: 'Text1',\n                            name: 'Text1',\n                            type: 'text',\n                            required: false,\n                            colspan: 1,\n                            placeholder: null,\n                            minLength: 0,\n                            maxLength: 0,\n                            regexPattern: null,\n                            visibilityCondition: null,\n                            params: {\n                                existingColspan: 1,\n                                maxColspan: 2\n                            }\n                        }\n                    ],\n                    '2': []\n                }\n            }\n        ],\n        outcomes: [],\n        metadata: {},\n        variables: []\n    }\n};\n\nexport const repeatableSectionFormVisibility: any = {\n    id: 'orm-875b6fe8-a84d-475b-a7e1-a3647955a0a6',\n    name: 'repeatable-section',\n    description: '',\n    version: 0,\n    tabs: [],\n    formDefinition: {\n        fields: [\n            {\n                id: 'RepeatableSection0009v6',\n                name: 'Repeatable Section',\n                type: 'repeatable-section',\n                tab: null,\n                params: {\n                    initialNumberOfRows: 1,\n                    allowInitialRowsDelete: true,\n                    maxNumberOfRows: null\n                },\n                numberOfColumns: 2,\n                fields: {\n                    '1': [\n                        {\n                            id: 'text1',\n                            name: 'Text',\n                            type: 'text',\n                            readOnly: false,\n                            required: false,\n                            colspan: 1,\n                            rowspan: 1,\n                            placeholder: null,\n                            minLength: 0,\n                            maxLength: 0,\n                            regexPattern: null,\n                            visibilityCondition: null,\n                            params: {\n                                existingColspan: 1,\n                                maxColspan: 2\n                            }\n                        }\n                    ],\n                    '2': [\n                        {\n                            id: 'text2',\n                            name: 'Text',\n                            type: 'text',\n                            readOnly: false,\n                            required: false,\n                            colspan: 1,\n                            rowspan: 1,\n                            placeholder: null,\n                            minLength: 0,\n                            maxLength: 0,\n                            regexPattern: null,\n                            visibilityCondition: {\n                                leftType: 'field',\n                                leftValue: 'text4',\n                                operator: '!empty',\n                                rightValue: null,\n                                rightType: null,\n                                nextConditionOperator: '',\n                                nextCondition: null\n                            },\n                            params: {\n                                existingColspan: 1,\n                                maxColspan: 2\n                            }\n                        }\n                    ]\n                }\n            },\n            {\n                id: '5a3474a8-22e1-4408-8a43-2eb1fc8300ac',\n                name: 'Section',\n                tab: null,\n                type: 'section',\n                numberOfColumns: 2,\n                fields: {\n                    '1': [\n                        {\n                            id: 'text3',\n                            name: 'Text',\n                            type: 'text',\n                            readOnly: false,\n                            required: false,\n                            colspan: 1,\n                            rowspan: 1,\n                            placeholder: null,\n                            minLength: 0,\n                            maxLength: 0,\n                            regexPattern: null,\n                            visibilityCondition: null,\n                            params: {\n                                existingColspan: 1,\n                                maxColspan: 2\n                            }\n                        }\n                    ],\n                    '2': [\n                        {\n                            id: 'text4',\n                            name: 'Text',\n                            type: 'text',\n                            readOnly: false,\n                            required: false,\n                            colspan: 1,\n                            rowspan: 1,\n                            placeholder: null,\n                            minLength: 0,\n                            maxLength: 0,\n                            regexPattern: null,\n                            visibilityCondition: null,\n                            params: {\n                                existingColspan: 1,\n                                maxColspan: 2\n                            }\n                        }\n                    ]\n                }\n            }\n        ],\n        outcomes: [],\n        metadata: {},\n        variables: []\n    }\n};\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './cookie.service.mock';\nexport * from './event.mock';\nexport * from './translation.service.mock';\n\nexport * from './form/form.service.mock';\nexport * from './form/widget-visibility.service.mock';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './public-api';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { EventEmitter, Injectable, NgModule } from '@angular/core';\nimport { provideHttpClient } from '@angular/common/http';\nimport { provideHttpClientTesting } from '@angular/common/http/testing';\nimport { provideTranslateService, TranslateLoader } from '@ngx-translate/core';\nimport { TranslationService } from '../translation/translation.service';\nimport { LangChangeEvent } from '../mock';\nimport { Observable, of } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class NoopTranslationService {\n    defaultLang: string = 'en';\n    userLang: string;\n    customLoader: any;\n\n    translate: any = {\n        onLangChange: new EventEmitter<LangChangeEvent>()\n    };\n\n    addTranslationFolder() {}\n    onTranslationChanged() {}\n    use(): any {}\n    loadTranslation() {}\n\n    get(key: string | Array<string>): Observable<string | any> {\n        return of(key);\n    }\n\n    getLocale(): any {}\n\n    instant(key: string | Array<string>): string | any {\n        return key;\n    }\n}\n\n@NgModule({\n    providers: [\n        provideHttpClient(),\n        provideHttpClientTesting(),\n        { provide: TranslationService, useClass: NoopTranslationService },\n        provideTranslateService({\n            loader: {\n                provide: TranslateLoader,\n                useClass: NoopTranslationService\n            }\n        })\n    ]\n})\nexport class NoopTranslateModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { EnvironmentProviders, Injectable, NgModule, Provider } from '@angular/core';\nimport { JWT_STORAGE_SERVICE, provideCoreAuth } from '../auth/oidc/auth.module';\nimport { RedirectAuthService } from '../auth/oidc/redirect-auth.service';\nimport { AppConfigService, provideAppConfig } from '../app-config';\nimport { AppConfigServiceMock, CookieService, StorageService } from '../common';\nimport { CookieServiceMock } from '../mock';\nimport { EMPTY, of } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class NoopRedirectAuthService extends RedirectAuthService {\n    onLogin = EMPTY;\n    onTokenReceived = of();\n\n    init(): Promise<boolean> {\n        return Promise.resolve(true);\n    }\n}\n\n/**\n * Provides testing api for Core Auth layer\n *\n * Example:\n * ```typescript\n * TestBed.configureTestingModule({\n *     providers: [provideCoreAuthTesting()]\n * });\n * ```\n *\n * @returns list of Angular providers\n */\nexport function provideCoreAuthTesting(): (Provider | EnvironmentProviders)[] {\n    return [\n        provideCoreAuth({ useHash: true }),\n        { provide: AppConfigService, useClass: AppConfigServiceMock },\n        { provide: CookieService, useClass: CookieServiceMock },\n        { provide: RedirectAuthService, useClass: NoopRedirectAuthService },\n        provideAppConfig(),\n        { provide: JWT_STORAGE_SERVICE, useClass: StorageService }\n    ];\n}\n\n/* @deprecated use `provideCoreAuthTesting()` instead */\n@NgModule({\n    providers: [...provideCoreAuthTesting()]\n})\nexport class NoopAuthModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { HarnessLoader, TestElement, TestKey } from '@angular/cdk/testing';\nimport { DebugElement, Type } from '@angular/core';\nimport { By } from '@angular/platform-browser';\nimport { MatSelectHarness } from '@angular/material/select/testing';\nimport { MatOptionHarness } from '@angular/material/core/testing';\nimport { MatChipGridHarness, MatChipHarness, MatChipListboxHarness } from '@angular/material/chips/testing';\nimport { MatButtonHarness } from '@angular/material/button/testing';\nimport { MatIconHarness } from '@angular/material/icon/testing';\nimport { MatCheckboxHarness } from '@angular/material/checkbox/testing';\nimport { MatFormFieldHarness } from '@angular/material/form-field/testing';\nimport { MatInputHarness } from '@angular/material/input/testing';\nimport { MatAutocompleteHarness } from '@angular/material/autocomplete/testing';\nimport { ComponentFixture } from '@angular/core/testing';\nimport { MatTabGroupHarness, MatTabHarness } from '@angular/material/tabs/testing';\nimport { MatToolbarHarness } from '@angular/material/toolbar/testing';\nimport { MatSnackBarHarness } from '@angular/material/snack-bar/testing';\nimport { MatProgressBarHarness } from '@angular/material/progress-bar/testing';\nimport { MatListOptionHarness } from '@angular/material/list/testing';\nimport { MatCellHarness } from '@angular/material/table/testing';\n\nexport class UnitTestingUtils {\n    constructor(\n        private debugElement?: DebugElement,\n        private loader?: HarnessLoader\n    ) {\n        this.debugElement = debugElement;\n        this.loader = loader;\n    }\n\n    setDebugElement(debugElement: DebugElement): void {\n        this.debugElement = debugElement;\n    }\n\n    setLoader(loader: HarnessLoader): void {\n        this.loader = loader;\n    }\n\n    getByCSS(selector: string): DebugElement {\n        return this.debugElement.query(By.css(selector));\n    }\n\n    getAllByCSS(selector: string): DebugElement[] {\n        return this.debugElement.queryAll(By.css(selector));\n    }\n\n    getInnerTextByCSS(selector: string): string {\n        return this.getByCSS(selector).nativeElement.innerText;\n    }\n\n    getByDataAutomationId(dataAutomationId: string): DebugElement {\n        return this.getByCSS(`[data-automation-id=\"${dataAutomationId}\"]`);\n    }\n\n    getByDataAutomationClass(dataAutomationClass: string): DebugElement {\n        return this.getByCSS(`[data-automation-class=\"${dataAutomationClass}\"]`);\n    }\n\n    getAllByDataAutomationId(dataAutomationId: string): DebugElement[] {\n        return this.debugElement.queryAll(By.css(`[data-automation-id=\"${dataAutomationId}\"]`));\n    }\n\n    getInnerTextByDataAutomationId(dataAutomationId: string): string {\n        return this.getByDataAutomationId(dataAutomationId).nativeElement.innerText;\n    }\n\n    getByDirective(directive: Type<any>): DebugElement {\n        return this.debugElement.query(By.directive(directive));\n    }\n\n    getAllByDirective(directive: Type<any>): DebugElement[] {\n        return this.debugElement.queryAll(By.directive(directive));\n    }\n\n    /** Perform actions */\n\n    clickByCSS(selector: string): void {\n        const element = this.getByCSS(selector);\n        element.triggerEventHandler('click', new MouseEvent('click'));\n    }\n\n    clickByDataAutomationId(dataAutomationId: string): void {\n        this.getByDataAutomationId(dataAutomationId).nativeElement.click();\n    }\n\n    doubleClickByDataAutomationId(dataAutomationId: string): void {\n        const element = this.getByDataAutomationId(dataAutomationId);\n        element.triggerEventHandler('dblclick', new MouseEvent('dblclick'));\n    }\n\n    doubleClickByCSS(selector: string): void {\n        const element = this.getByCSS(selector);\n        element.triggerEventHandler('dblclick', new MouseEvent('dblclick'));\n    }\n\n    blurByCSS(selector: string): void {\n        const element = this.getByCSS(selector);\n        element.triggerEventHandler('blur', new FocusEvent('blur'));\n    }\n\n    hoverOverByCSS(selector: string): void {\n        const element = this.getByCSS(selector);\n        element.triggerEventHandler('mouseenter', new MouseEvent('mouseenter'));\n    }\n\n    hoverOverByDataAutomationId(dataAutomationId: string): void {\n        const element = this.getByDataAutomationId(dataAutomationId);\n        element.triggerEventHandler('mouseenter', new MouseEvent('mouseenter'));\n    }\n\n    mouseLeaveByCSS(selector: string): void {\n        const element = this.getByCSS(selector);\n        element.triggerEventHandler('mouseleave', new MouseEvent('mouseleave'));\n    }\n\n    mouseLeaveByDataAutomationId(dataAutomationId: string): void {\n        const element = this.getByDataAutomationId(dataAutomationId);\n        element.triggerEventHandler('mouseleave', new MouseEvent('mouseleave'));\n    }\n\n    keyBoardEventByCSS(selector: string, event: 'keyup' | 'keydown', code: string, key: string): void {\n        const element = this.getByCSS(selector);\n        element.nativeElement.dispatchEvent(new KeyboardEvent(event, { code, key }));\n    }\n\n    dispatchCustomEventByCSS(selector: string, eventName: string): void {\n        const element = this.getByCSS(selector);\n        element.nativeElement.dispatchEvent(new CustomEvent(eventName));\n    }\n\n    /** Input related methods */\n\n    getInputByCSS(selector: string): HTMLInputElement {\n        return this.getByCSS(selector)?.nativeElement;\n    }\n\n    getInputByDataAutomationId(dataAutomationId: string): HTMLInputElement {\n        return this.getByDataAutomationId(dataAutomationId)?.nativeElement;\n    }\n\n    fillInputByCSS(selector: string, value: string): void {\n        const input = this.getInputByCSS(selector);\n        input.value = value;\n        input.dispatchEvent(new Event('input'));\n    }\n\n    fillInputByDataAutomationId(dataAutomationId: string, value: any): void {\n        const input = this.getInputByDataAutomationId(dataAutomationId);\n        input.value = value;\n        input.dispatchEvent(new Event('input'));\n    }\n\n    /** MatButton related methods */\n\n    async getMatButton(): Promise<MatButtonHarness> {\n        return this.loader.getHarness(MatButtonHarness);\n    }\n\n    async getMatButtonByCSS(selector: string): Promise<MatButtonHarness> {\n        return this.loader.getHarness(MatButtonHarness.with({ selector }));\n    }\n\n    async getMatButtonByDataAutomationId(dataAutomationId: string): Promise<MatButtonHarness> {\n        return this.loader.getHarness(MatButtonHarness.with({ selector: `[data-automation-id=\"${dataAutomationId}\"]` }));\n    }\n\n    async checkIfMatButtonExists(): Promise<boolean> {\n        return this.loader.hasHarness(MatButtonHarness);\n    }\n\n    async checkIfMatButtonExistsWithDataAutomationId(dataAutomationId: string): Promise<boolean> {\n        return this.loader.hasHarness(MatButtonHarness.with({ selector: `[data-automation-id=\"${dataAutomationId}\"]` }));\n    }\n\n    async clickMatButton(): Promise<void> {\n        const button = await this.getMatButton();\n        await button.click();\n    }\n\n    async clickMatButtonByCSS(selector: string): Promise<void> {\n        const button = await this.getMatButtonByCSS(selector);\n        await button.click();\n    }\n\n    async clickMatButtonByDataAutomationId(dataAutomationId: string): Promise<void> {\n        const button = await this.getMatButtonByDataAutomationId(dataAutomationId);\n        await button.click();\n    }\n\n    async sendKeysToMatButton(keys: (string | TestKey)[]): Promise<void> {\n        const button = await this.getMatButton();\n        const host = await button.host();\n        await host.sendKeys(...keys);\n    }\n\n    /** MatCheckbox related methods */\n\n    async getMatCheckbox(): Promise<MatCheckboxHarness> {\n        return this.loader.getHarness(MatCheckboxHarness);\n    }\n\n    async getMatCheckboxByDataAutomationId(dataAutomationId: string): Promise<MatCheckboxHarness> {\n        return this.loader.getHarness(MatCheckboxHarness.with({ selector: `[data-automation-id=\"${dataAutomationId}\"]` }));\n    }\n\n    async getMatCheckboxHost(): Promise<TestElement> {\n        const checkbox = await this.getMatCheckbox();\n        return checkbox.host();\n    }\n\n    async getAllMatCheckboxes(): Promise<MatCheckboxHarness[]> {\n        return this.loader.getAllHarnesses(MatCheckboxHarness);\n    }\n\n    async checkIfMatCheckboxIsChecked(): Promise<boolean> {\n        const checkbox = await this.getMatCheckbox();\n        return checkbox.isChecked();\n    }\n\n    async checkIfMatCheckboxesHaveClass(className: string): Promise<boolean> {\n        const checkboxes = await this.getAllMatCheckboxes();\n        return checkboxes.every(async (checkbox) => (await checkbox.host()).hasClass(className));\n    }\n\n    async hoverOverMatCheckbox(): Promise<void> {\n        const host = await this.getMatCheckboxHost();\n        await host.hover();\n    }\n\n    /** MatIcon related methods */\n\n    async getMatIconOrNull(): Promise<MatIconHarness> {\n        return this.loader.getHarnessOrNull(MatIconHarness);\n    }\n\n    async getMatIconWithAncestorByDataAutomationId(dataAutomationId: string): Promise<MatIconHarness> {\n        return this.loader.getHarness(MatIconHarness.with({ ancestor: `[data-automation-id=\"${dataAutomationId}\"]` }));\n    }\n\n    async getMatIconWithAncestorByCSS(selector: string): Promise<MatIconHarness> {\n        return this.loader.getHarness(MatIconHarness.with({ ancestor: selector }));\n    }\n\n    async checkIfMatIconExistsWithAncestorByDataAutomationId(dataAutomationId: string): Promise<boolean> {\n        return this.loader.hasHarness(MatIconHarness.with({ ancestor: `[data-automation-id=\"${dataAutomationId}\"]` }));\n    }\n\n    async checkIfMatIconExistsWithAncestorByCSSAndName(selector: string, name: string): Promise<boolean> {\n        return this.loader.hasHarness(MatIconHarness.with({ ancestor: selector, name }));\n    }\n\n    async clickMatIconWithAncestorByDataAutomationId(dataAutomationId: string): Promise<void> {\n        const icon = await this.getMatIconWithAncestorByDataAutomationId(dataAutomationId);\n        const host = await icon.host();\n        await host.click();\n    }\n\n    /** MatSelect related methods */\n\n    async getMatSelectOptions(isOpened = false): Promise<MatOptionHarness[]> {\n        const select = await this.loader.getHarness(MatSelectHarness);\n        if (!isOpened) {\n            await select.open();\n        }\n        return select.getOptions();\n    }\n\n    async getMatSelect(): Promise<MatSelectHarness> {\n        return this.loader.getHarness(MatSelectHarness);\n    }\n\n    async getMatSelectByDataAutomationId(dataAutomationId: string): Promise<MatSelectHarness> {\n        return this.loader.getHarness(MatSelectHarness.with({ selector: `[data-automation-id=\"${dataAutomationId}\"]` }));\n    }\n\n    async getMatSelectHost(): Promise<TestElement> {\n        const select = await this.loader.getHarness(MatSelectHarness);\n        return select.host();\n    }\n\n    async checkIfMatSelectExists(): Promise<boolean> {\n        return this.loader.hasHarness(MatSelectHarness);\n    }\n\n    async openMatSelect(): Promise<void> {\n        const select = await this.loader.getHarness(MatSelectHarness);\n        await select.open();\n    }\n\n    /** MatChips related methods */\n\n    async getMatChipByDataAutomationId(dataAutomationId: string): Promise<MatChipHarness> {\n        return this.loader.getHarness(MatChipHarness.with({ selector: `[data-automation-id=\"${dataAutomationId}\"]` }));\n    }\n\n    async checkIfMatChipExistsWithDataAutomationId(dataAutomationId: string): Promise<boolean> {\n        return this.loader.hasHarness(MatChipHarness.with({ selector: `[data-automation-id=\"${dataAutomationId}\"]` }));\n    }\n\n    async clickMatChip(dataAutomationId: string): Promise<void> {\n        const chip = await this.getMatChipByDataAutomationId(dataAutomationId);\n        const host = await chip.host();\n        await host.click();\n    }\n\n    async getMatChips(): Promise<MatChipHarness[]> {\n        return this.loader.getAllHarnesses(MatChipHarness);\n    }\n\n    /** MatChipListbox related methods */\n\n    async getMatChipListboxByDataAutomationId(dataAutomationId: string): Promise<MatChipListboxHarness> {\n        return this.loader.getHarness(MatChipListboxHarness.with({ selector: `[data-automation-id=\"${dataAutomationId}\"]` }));\n    }\n\n    async clickMatChipListbox(dataAutomationId: string): Promise<void> {\n        const chipList = await this.getMatChipListboxByDataAutomationId(dataAutomationId);\n        const host = await chipList.host();\n        await host.click();\n    }\n\n    /** MatChipGrid related methods */\n\n    async checkIfMatChipGridExists(): Promise<boolean> {\n        return this.loader.hasHarness(MatChipGridHarness);\n    }\n\n    /** MatFromField related methods */\n\n    async getMatFormField(): Promise<MatFormFieldHarness> {\n        return this.loader.getHarness(MatFormFieldHarness);\n    }\n\n    async getMatFormFieldByCSS(selector: string): Promise<MatFormFieldHarness> {\n        return this.loader.getHarness(MatFormFieldHarness.with({ selector }));\n    }\n\n    /** MatInput related methods */\n\n    async getMatInput(): Promise<MatInputHarness> {\n        return this.loader.getHarness(MatInputHarness);\n    }\n\n    async getMatInputByDataAutomationId(dataAutomationId: string): Promise<MatInputHarness> {\n        return this.loader.getHarness(MatInputHarness.with({ selector: `[data-automation-id=\"${dataAutomationId}\"]` }));\n    }\n\n    async getMatInputByPlaceholder(placeholder: string): Promise<MatInputHarness> {\n        return this.loader.getHarness(MatInputHarness.with({ placeholder }));\n    }\n\n    async getMatInputHost(): Promise<TestElement> {\n        const input = await this.getMatInput();\n        return input.host();\n    }\n\n    async checkIfMatInputExists(): Promise<boolean> {\n        return this.loader.hasHarness(MatInputHarness);\n    }\n\n    async checkIfMatInputExistsWithPlaceholder(placeholder: string): Promise<boolean> {\n        return this.loader.hasHarness(MatInputHarness.with({ placeholder }));\n    }\n\n    async clickMatInput(): Promise<void> {\n        const input = await this.getMatInput();\n        const host = await input.host();\n        await host.click();\n    }\n\n    async fillMatInput(value: string): Promise<void> {\n        const input = await this.getMatInput();\n        await input.setValue(value);\n    }\n\n    async fillMatInputByDataAutomationId(dataAutomationId: string, value: string): Promise<void> {\n        const input = await this.getMatInputByDataAutomationId(dataAutomationId);\n        await input.setValue(value);\n        await (await input.host()).dispatchEvent('input');\n    }\n\n    async focusMatInput(): Promise<void> {\n        const input = await this.getMatInput();\n        await input.focus();\n    }\n\n    async blurMatInput(): Promise<void> {\n        const input = await this.getMatInput();\n        await input.blur();\n    }\n\n    async getMatInputValue(): Promise<string> {\n        const input = await this.getMatInput();\n        return input.getValue();\n    }\n\n    async getMatInputValueByDataAutomationId(dataAutomationId: string): Promise<string> {\n        const input = await this.getMatInputByDataAutomationId(dataAutomationId);\n        return input.getValue();\n    }\n\n    async sendKeysToMatInput(keys: (string | TestKey)[]): Promise<void> {\n        const input = await this.getMatInput();\n        const host = await input.host();\n        await host.sendKeys(...keys);\n    }\n\n    /** MatAutoComplete related methods */\n\n    async typeAndGetOptionsForMatAutoComplete(fixture: ComponentFixture<any>, value: string): Promise<MatOptionHarness[]> {\n        const autocomplete = await this.loader.getHarness(MatAutocompleteHarness);\n        await autocomplete.enterText(value);\n        fixture.detectChanges();\n\n        return autocomplete.getOptions();\n    }\n\n    /** MatTabGroup related methods */\n\n    async getSelectedTabFromMatTabGroup(): Promise<MatTabHarness> {\n        const tabs = await this.loader.getHarness(MatTabGroupHarness);\n        return tabs.getSelectedTab();\n    }\n\n    async getSelectedTabLabelFromMatTabGroup(): Promise<string> {\n        const tab = await this.getSelectedTabFromMatTabGroup();\n        return tab.getLabel();\n    }\n\n    /** MatToolbar related methods */\n\n    async getMatToolbarHost(): Promise<TestElement> {\n        const toolbar = await this.loader.getHarness(MatToolbarHarness);\n        return toolbar.host();\n    }\n\n    /** MatSnackbar related methods */\n\n    async checkIfMatSnackbarExists(): Promise<boolean> {\n        return this.loader.hasHarness(MatSnackBarHarness);\n    }\n\n    /** MatProgressBar related methods */\n\n    async getMatProgressBarHost(): Promise<TestElement> {\n        const progress = await this.loader.getHarness(MatProgressBarHarness);\n        return progress.host();\n    }\n\n    /** MatListOption related methods */\n\n    async getMatListOption(): Promise<MatListOptionHarness> {\n        return this.loader.getHarness(MatListOptionHarness);\n    }\n\n    async getAllMatListOptions(): Promise<MatListOptionHarness[]> {\n        return this.loader.getAllHarnesses(MatListOptionHarness);\n    }\n\n    /** MatCell related methods */\n\n    async getMatCellByColumnName(columnName: string): Promise<MatCellHarness> {\n        return this.loader.getHarness(MatCellHarness.with({ columnName }));\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { EnvironmentProviders, inject, provideAppInitializer, Provider } from '@angular/core';\nimport { AppConfigService, Status } from '../app-config';\n\n/**\n * Provides testing api for application config.\n *\n * @param config Custom application configuration data\n * @returns Angular providers\n */\nexport function provideAppConfigTesting(config?: any): (Provider | EnvironmentProviders)[] {\n    config = config ?? {\n        application: {\n            name: 'Alfresco ADF Application',\n            storagePrefix: 'ADF_APP'\n        },\n        ecmHost: 'http://{hostname}{:port}/ecm',\n        bpmHost: 'http://{hostname}{:port}/bpm',\n        logLevel: 'silent'\n    };\n\n    return [\n        provideAppInitializer(() => {\n            const service = inject(AppConfigService);\n            service.config = config;\n            service.status = Status.LOADED;\n            return Promise.resolve();\n        })\n    ];\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './noop-translate.module';\nexport * from './noop-auth.module';\nexport * from './unit-testing-utils';\nexport * from './app-config-testing';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Provider, EnvironmentProviders, provideAppInitializer, inject } from '@angular/core';\nimport { provideAnimations } from '@angular/platform-browser/animations';\nimport { provideCoreAuthTesting } from '../testing/noop-auth.module';\nimport { provideAppConfig } from '../app-config/provide-app-config';\nimport { AppConfigService } from '../app-config/app-config.service';\nimport { provideI18N } from '../translation';\nimport { provideRouter, withHashLocation } from '@angular/router';\n\n/**\n * Provides the core providers for the storybook.\n *\n * @returns An array of providers for the core module.\n */\nexport function provideStoryCore(): (Provider | EnvironmentProviders)[] {\n    return [\n        provideAppConfig(),\n        provideI18N({\n            assets: [\n                ['adf-core', 'assets/adf-core'],\n                ['adf-process-services', 'assets/adf-process-services'],\n                ['adf-process-services-cloud', 'assets/adf-process-services-cloud']\n            ]\n        }),\n        provideAnimations(),\n        provideCoreAuthTesting(),\n        provideAppInitializer(() => {\n            const appConfig = inject(AppConfigService);\n            appConfig.config = { ...appConfig.config, locale: 'en' };\n        }),\n        provideRouter([], withHashLocation())\n    ];\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './core-story.providers';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatDatetimepickerModule, MatNativeDatetimeModule } from '@mat-datetimepicker/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatNativeDateModule, MatRippleModule, MatOptionModule } from '@angular/material/core';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatGridListModule } from '@angular/material/grid-list';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatListModule } from '@angular/material/list';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { CommonModule } from '@angular/common';\n\n/** @deprecated This module is deprecated and will be removed in a future release. */\n@NgModule({\n    imports: [\n        CommonModule,\n        FormsModule,\n        ReactiveFormsModule,\n        MatAutocompleteModule,\n        MatButtonModule,\n        MatCardModule,\n        MatCheckboxModule,\n        MatChipsModule,\n        MatDatepickerModule,\n        MatDialogModule,\n        MatGridListModule,\n        MatIconModule,\n        MatInputModule,\n        MatListModule,\n        MatNativeDateModule,\n        MatOptionModule,\n        MatProgressSpinnerModule,\n        MatRadioModule,\n        MatRippleModule,\n        MatSelectModule,\n        MatSlideToggleModule,\n        MatTableModule,\n        MatTabsModule,\n        MatMenuModule,\n        MatProgressBarModule,\n        MatSidenavModule,\n        MatSnackBarModule,\n        MatToolbarModule,\n        MatDatetimepickerModule,\n        MatNativeDatetimeModule,\n        MatExpansionModule,\n        MatBadgeModule,\n        MatFormFieldModule\n    ],\n    exports: [\n        CommonModule,\n        FormsModule,\n        ReactiveFormsModule,\n        MatAutocompleteModule,\n        MatButtonModule,\n        MatCardModule,\n        MatCheckboxModule,\n        MatChipsModule,\n        MatDatepickerModule,\n        MatDialogModule,\n        MatGridListModule,\n        MatIconModule,\n        MatInputModule,\n        MatListModule,\n        MatNativeDateModule,\n        MatOptionModule,\n        MatProgressSpinnerModule,\n        MatRadioModule,\n        MatRippleModule,\n        MatSelectModule,\n        MatSlideToggleModule,\n        MatTableModule,\n        MatTabsModule,\n        MatMenuModule,\n        MatProgressBarModule,\n        MatSidenavModule,\n        MatSnackBarModule,\n        MatToolbarModule,\n        MatDatetimepickerModule,\n        MatNativeDatetimeModule,\n        MatExpansionModule,\n        MatBadgeModule\n    ]\n})\nexport class MaterialModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NgModule, ModuleWithProviders } from '@angular/core';\nimport { TranslateLoader, provideTranslateService } from '@ngx-translate/core';\nimport { ABOUT_DIRECTIVES } from './about/about.module';\nimport { CARD_VIEW_DIRECTIVES } from './card-view/card-view.module';\nimport { CONTEXT_MENU_DIRECTIVES } from './context-menu/context-menu.module';\nimport { DATATABLE_DIRECTIVES } from './datatable/datatable.module';\nimport { INFO_DRAWER_DIRECTIVES } from './info-drawer/info-drawer.module';\nimport { LANGUAGE_MENU_DIRECTIVES } from './language-menu/language-menu.module';\nimport { LOGIN_DIRECTIVES } from './login/login.module';\nimport { PAGINATION_DIRECTIVES } from './pagination/pagination.module';\nimport { TOOLBAR_DIRECTIVES } from './toolbar/toolbar.module';\nimport { VIEWER_DIRECTIVES } from './viewer/viewer.module';\nimport { FormBaseModule } from './form/form-base.module';\nimport { LAYOUT_DIRECTIVES } from './layout/layout.module';\nimport { CommentsComponent } from './comments/comments.component';\nimport { CommentListComponent } from './comments/comment-list/comment-list.component';\nimport { TEMPLATE_DIRECTIVES } from './templates/template.module';\nimport { CLIPBOARD_DIRECTIVES } from './clipboard/clipboard.module';\nimport { NOTIFICATION_HISTORY_DIRECTIVES } from './notifications/notification-history.module';\nimport { CORE_DIRECTIVES } from './directives/directive.module';\nimport { CORE_PIPES } from './pipes/pipe.module';\nimport { TranslateLoaderService } from './translation/translate-loader.service';\nimport { SEARCH_TEXT_INPUT_DIRECTIVES } from './search-text/search-text-input.module';\nimport { HttpClient } from '@angular/common/http';\nimport { AppConfigPipe } from './app-config';\nimport { IconComponent } from './icon';\nimport { DynamicChipListComponent } from './dynamic-chip-list';\nimport { IdentityUserInfoComponent } from './identity-user-info';\nimport { UnsavedChangesDialogComponent } from './dialogs';\nimport { MaterialModule } from './material.module';\nimport { provideAppConfig } from './app-config/provide-app-config';\n\n/**\n * @deprecated this module is deprecated and will be removed\n * Use the following combination instead:\n * ```typescript\n * providers: [\n *  provideI18N(...),\n *  provideAppConfig(),\n *  provideCoreAuth(...)\n * ]\n * ```\n */\n@NgModule({\n    imports: [\n        ...ABOUT_DIRECTIVES,\n        ...VIEWER_DIRECTIVES,\n        ...LAYOUT_DIRECTIVES,\n        ...CORE_PIPES,\n        IdentityUserInfoComponent,\n        ...CORE_DIRECTIVES,\n        AppConfigPipe,\n        ...PAGINATION_DIRECTIVES,\n        ...TOOLBAR_DIRECTIVES,\n        ...CONTEXT_MENU_DIRECTIVES,\n        ...CARD_VIEW_DIRECTIVES,\n        FormBaseModule,\n        CommentsComponent,\n        CommentListComponent,\n        ...CLIPBOARD_DIRECTIVES,\n        ...LOGIN_DIRECTIVES,\n        ...LANGUAGE_MENU_DIRECTIVES,\n        ...INFO_DRAWER_DIRECTIVES,\n        ...DATATABLE_DIRECTIVES,\n        ...TEMPLATE_DIRECTIVES,\n        IconComponent,\n        ...NOTIFICATION_HISTORY_DIRECTIVES,\n        ...SEARCH_TEXT_INPUT_DIRECTIVES,\n        UnsavedChangesDialogComponent,\n        DynamicChipListComponent,\n        MaterialModule\n    ],\n    providers: [...CORE_PIPES],\n    exports: [\n        ...ABOUT_DIRECTIVES,\n        ...VIEWER_DIRECTIVES,\n        ...LAYOUT_DIRECTIVES,\n        ...CORE_PIPES,\n        ...CORE_DIRECTIVES,\n        ...CLIPBOARD_DIRECTIVES,\n        IdentityUserInfoComponent,\n        AppConfigPipe,\n        ...PAGINATION_DIRECTIVES,\n        ...TOOLBAR_DIRECTIVES,\n        ...CONTEXT_MENU_DIRECTIVES,\n        ...CARD_VIEW_DIRECTIVES,\n        FormBaseModule,\n        CommentsComponent,\n        CommentListComponent,\n        ...LOGIN_DIRECTIVES,\n        ...LANGUAGE_MENU_DIRECTIVES,\n        ...INFO_DRAWER_DIRECTIVES,\n        ...DATATABLE_DIRECTIVES,\n        ...TEMPLATE_DIRECTIVES,\n        IconComponent,\n        ...NOTIFICATION_HISTORY_DIRECTIVES,\n        ...SEARCH_TEXT_INPUT_DIRECTIVES,\n        UnsavedChangesDialogComponent,\n        DynamicChipListComponent,\n        MaterialModule\n    ]\n})\nexport class CoreModule {\n    static forRoot(): ModuleWithProviders<CoreModule> {\n        return {\n            ngModule: CoreModule,\n            providers: [\n                provideTranslateService({\n                    loader: {\n                        provide: TranslateLoader,\n                        useClass: TranslateLoaderService,\n                        deps: [HttpClient]\n                    },\n                    defaultLanguage: 'en'\n                }),\n                provideAppConfig()\n            ]\n        };\n    }\n\n    /**\n     * @deprecated this api is deprecated, import `CoreModule` instead\n     * @returns ModuleWithProviders<CoreModule>\n     */\n    static forChild(): ModuleWithProviders<CoreModule> {\n        return {\n            ngModule: CoreModule\n        };\n    }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './lib/about/index';\nexport * from './lib/avatar/avatar.component';\nexport * from './lib/viewer/index';\nexport * from './lib/toolbar/index';\nexport * from './lib/header/index';\nexport * from './lib/pagination/index';\nexport * from './lib/login/index';\nexport * from './lib/language-menu/index';\nexport * from './lib/info-drawer/index';\nexport * from './lib/identity-user-info/index';\nexport * from './lib/datatable/data-column/index';\nexport * from './lib/datatable/index';\nexport * from './lib/context-menu/index';\nexport * from './lib/card-view/index';\nexport * from './lib/app-config/index';\nexport * from './lib/form/index';\nexport * from './lib/layout/index';\nexport * from './lib/comments/index';\nexport * from './lib/templates/index';\nexport * from './lib/pipes/index';\nexport * from './lib/directives/index';\nexport * from './lib/dynamic-chip-list/index';\nexport * from './lib/clipboard/index';\nexport * from './lib/dialogs/index';\nexport * from './lib/icon/index';\nexport * from './lib/notifications/index';\nexport * from './lib/search-text/index';\nexport * from './lib/snackbar-content/index';\nexport * from './lib/translation/index';\nexport * from './lib/common/utils/index';\nexport * from './lib/models/index';\nexport * from './lib/events/index';\nexport * from './lib/mock/index';\nexport * from './lib/testing';\nexport * from './lib/stories/index';\n\nexport * from './lib/auth';\nexport * from './lib/common';\n\nexport * from './lib/core.module';\nexport * from './lib/material.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i2.IconDirective","i3","i3.IconDirective","i4","i6","i7","pdfjsLib","switchMap","i4.IconDirective","observableThrowError","i5.IconDirective","i8","i9","i10","i5","i6.IconDirective","validatorsMap","i7.IconDirective","getRowId","isValidDate","filter","debounceTime","widgets.UnknownWidgetComponent","widgets.TextWidgetComponent","widgets.NumberWidgetComponent","widgets.DecimalWidgetComponent","widgets.MultilineTextWidgetComponentComponent","widgets.CheckboxWidgetComponent","widgets.DateWidgetComponent","widgets.AmountWidgetComponent","widgets.HyperlinkWidgetComponent","widgets.DisplayTextWidgetComponent","widgets.JsonWidgetComponent","widgets.DateTimeWidgetComponent","widgets.BaseViewerWidgetComponent","widgets.ButtonWidgetComponent","i1.UnknownWidgetComponent","i2.TextWidgetComponent","i3.NumberWidgetComponent","i4.DecimalWidgetComponent","i5.CheckboxWidgetComponent","i6.MultilineTextWidgetComponentComponent","i9.DateWidgetComponent","i10.AmountWidgetComponent","i11.ErrorWidgetComponent","i12.DateTimeWidgetComponent","i13.JsonWidgetComponent","i14.BaseViewerWidgetComponent","i15.ButtonWidgetComponent","i1.AboutExtensionListComponent","i2.AboutLicenseListComponent","i3.ModuleListComponent","i4.AboutRepositoryInfoComponent","i5.PackageListComponent","i6.AboutStatusListComponent","i7.AboutServerSettingsComponent","i8.AboutPanelDirective","i9.AboutComponent","i10.PdfPasswordDialogComponent","i11.ViewerRenderComponent","i12.ImgViewerComponent","i13.TxtViewerComponent","i14.MediaPlayerComponent","i15.PdfViewerComponent","i16.PdfThumbComponent","i17.PdfThumbListComponent","i18.ViewerExtensionDirective","i19.UnknownFormatComponent","i20.ViewerToolbarComponent","i21.ViewerSidebarComponent","i22.ViewerOpenWithComponent","i23.ViewerMoreActionsComponent","i24.ViewerToolbarActionsComponent","i25.ViewerComponent","i26.ViewerToolbarCustomActionsComponent","i27.DownloadPromptDialogComponent","i28.SidenavLayoutHeaderDirective","i29.SidenavLayoutContentDirective","i30.SidenavLayoutNavigationDirective","i31.SidebarMenuDirective","i31.SidebarMenuExpandIconDirective","i31.SidebarMenuTitleIconDirective","i32.HeaderLayoutComponent","i31.SidebarActionMenuComponent","i33.LayoutContainerComponent","i34.SidenavLayoutComponent","i35.LocalizedDatePipe","i36.TimeAgoPipe","i37.FileSizePipe","i38.HighlightPipe","i39.FullNamePipe","i40.FormatSpacePipe","i41.FileTypePipe","i42.DecimalNumberPipe","i43.DateTimePipe","i44.InitialUsernamePipe","i45.TruncatePipe","i46.HighlightDirective","i47.LogoutDirective","i48.UploadDirective","i49.TooltipCardDirective","i50.TooltipCardComponent","i51.InfiniteSelectScrollDirective","i69.ClipboardDirective","i70.LoginComponent","i71.LoginFooterDirective","i72.LoginHeaderDirective","i73.LoginDialogPanelComponent","i74.LanguageMenuComponent","i75.LanguagePickerComponent","i76.InfoDrawerLayoutComponent","i77.InfoDrawerTabComponent","i77.InfoDrawerComponent","i76.InfoDrawerTitleDirective","i76.InfoDrawerButtonsDirective","i76.InfoDrawerContentDirective","i78.BooleanCellComponent","i79.AmountCellComponent","i80.NumberCellComponent","i81.LocationCellComponent","i82.DateCellComponent","i83.IconCellComponent","i84.ColumnsSelectorComponent","i85.DataColumnComponent","i86.DataColumnListComponent","i87.DateColumnHeaderComponent","i88.ResizableDirective","i89.ResizeHandleDirective","i90.DropZoneDirective","i91.EmptyListComponent","i91.EmptyListHeaderDirective","i91.EmptyListBodyDirective","i91.EmptyListFooterDirective","i92.FileSizeCellComponent","i93.JsonCellComponent","i94.NoContentTemplateDirective","i95.NoPermissionTemplateDirective","i96.LoadingContentTemplateDirective","i97.HeaderFilterTemplateDirective","i98.CustomEmptyContentTemplateDirective","i99.CustomLoadingContentTemplateDirective","i100.CustomNoPermissionTemplateDirective","i101.MainMenuDataTableTemplateDirective","i102.DataTableRowComponent","i103.DataTableCellComponent","i104.DataTableComponent","i105.ErrorContentComponent","i106.EmptyContentComponent","i107.NotificationHistoryComponent","i108.SearchTextInputComponent","i109.SearchTriggerDirective","i54.ToolbarComponent","i57.ContextMenuListComponent","i59.CardViewComponent","i60.CardViewBoolItemComponent","i61.CardViewDateItemComponent","i62.CardViewMapItemComponent","i63.CardViewTextItemComponent","i64.CardViewKeyValuePairsItemComponent","i65.CardViewSelectItemComponent","i67.CardViewArrayItemComponent","i68.SelectFilterInputComponent"],"mappings":"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"}