{"version":3,"file":"adf-content-services.mjs","sources":["../../../../lib/content-services/src/lib/alfresco-icon/alfresco-icon.component.ts","../../../../lib/content-services/src/lib/alfresco-icon/alfresco-icon-component.svg","../../../../lib/content-services/src/lib/common/models/permissions.enum.ts","../../../../lib/content-services/src/lib/common/models/allowable-operations.enum.ts","../../../../lib/content-services/src/lib/services/alfresco-api.service.ts","../../../../lib/content-services/src/lib/common/services/content.service.ts","../../../../lib/content-services/src/lib/common/models/node-metadata.model.ts","../../../../lib/content-services/src/lib/common/services/nodes-api.service.ts","../../../../lib/content-services/src/lib/document-list/models/document-folder.model.ts","../../../../lib/content-services/src/lib/document-list/services/custom-resources.service.ts","../../../../lib/content-services/src/lib/document-list/services/document-list.service.ts","../../../../lib/content-services/src/lib/common/models/file.model.ts","../../../../lib/content-services/src/lib/common/events/file.event.ts","../../../../lib/content-services/src/lib/common/services/discovery-api.service.ts","../../../../lib/content-services/src/lib/common/services/upload.service.ts","../../../../lib/content-services/src/lib/document-list/models/node-action.enum.ts","../../../../lib/content-services/src/lib/common/services/favorites-api.service.ts","../../../../lib/content-services/src/lib/common/services/card-view-content-update.service.ts","../../../../lib/content-services/src/lib/common/services/sites.service.ts","../../../../lib/content-services/src/lib/common/services/rendition.service.ts","../../../../lib/content-services/src/lib/common/models/ecm-user.model.ts","../../../../lib/content-services/src/lib/common/services/people-content.service.ts","../../../../lib/content-services/src/lib/common/services/saved-searches.service.ts","../../../../lib/content-services/src/lib/common/models/ecm-company.model.ts","../../../../lib/content-services/src/lib/common/interfaces/search-configuration.interface.ts","../../../../lib/content-services/src/lib/common/interfaces/saved-search.interface.ts","../../../../lib/content-services/src/lib/common/mocks/ecm-user.service.mock.ts","../../../../lib/content-services/src/lib/common/public-api.ts","../../../../lib/content-services/src/lib/common/index.ts","../../../../lib/content-services/src/lib/document-list/data/share-data-row.model.ts","../../../../lib/content-services/src/lib/document-list/data/share-datatable-adapter.ts","../../../../lib/content-services/src/lib/document-list/models/content-action.model.ts","../../../../lib/content-services/src/lib/document-list/models/preset.model.ts","../../../../lib/content-services/src/lib/document-list/services/lock.service.ts","../../../../lib/content-services/src/lib/document-list/components/document-list.token.ts","../../../../lib/content-services/src/lib/dialogs/download-zip/services/download-zip.service.ts","../../../../lib/content-services/src/lib/dialogs/download-zip/download-zip.dialog.ts","../../../../lib/content-services/src/lib/dialogs/download-zip/download-zip.dialog.html","../../../../lib/content-services/src/lib/directives/node-download.directive.ts","../../../../lib/content-services/src/lib/document-list/components/file-auto-download/file-auto-download.component.ts","../../../../lib/content-services/src/lib/document-list/components/file-auto-download/file-auto-download.component.html","../../../../lib/content-services/src/lib/document-list/components/node.event.ts","../../../../lib/content-services/src/lib/search/services/base-query-builder.service.ts","../../../../lib/content-services/src/lib/search/services/search-header-query-builder.service.ts","../../../../lib/content-services/src/lib/search/components/search-text/search-text.component.ts","../../../../lib/content-services/src/lib/search/components/search-text/search-text.component.html","../../../../lib/content-services/src/lib/search/models/search-filter-list.model.ts","../../../../lib/content-services/src/lib/search/components/search-radio/search-radio.component.ts","../../../../lib/content-services/src/lib/search/components/search-radio/search-radio.component.html","../../../../lib/content-services/src/lib/search/components/search-slider/search-slider.component.ts","../../../../lib/content-services/src/lib/search/components/search-slider/search-slider.component.html","../../../../lib/content-services/src/lib/search/forms/live-error-state-matcher.ts","../../../../lib/content-services/src/lib/search/components/search-number-range/search-number-range.component.ts","../../../../lib/content-services/src/lib/search/components/search-number-range/search-number-range.component.html","../../../../lib/content-services/src/lib/search/components/search-check-list/search-check-list.component.ts","../../../../lib/content-services/src/lib/search/components/search-check-list/search-check-list.component.html","../../../../lib/content-services/src/lib/search/components/search-datetime-range/search-datetime-range.component.ts","../../../../lib/content-services/src/lib/search/components/search-datetime-range/search-datetime-range.component.html","../../../../lib/content-services/src/lib/search/components/search-logical-filter/search-logical-filter.component.ts","../../../../lib/content-services/src/lib/search/components/search-logical-filter/search-logical-filter.component.html","../../../../lib/content-services/src/lib/tag/services/tag.service.ts","../../../../lib/content-services/src/lib/category/services/category.service.ts","../../../../lib/content-services/src/lib/search/models/autocomplete-option.interface.ts","../../../../lib/content-services/src/lib/search/components/search-chip-autocomplete-input/search-chip-autocomplete-input.component.ts","../../../../lib/content-services/src/lib/search/components/search-chip-autocomplete-input/search-chip-autocomplete-input.component.html","../../../../lib/content-services/src/lib/search/components/search-chip-autocomplete-input/index.ts","../../../../lib/content-services/src/lib/search/components/search-filter-autocomplete-chips/search-filter-autocomplete-chips.component.ts","../../../../lib/content-services/src/lib/search/components/search-filter-autocomplete-chips/search-filter-autocomplete-chips.component.html","../../../../lib/content-services/src/lib/search/components/search-properties/file-size-operator.enum.ts","../../../../lib/content-services/src/lib/search/components/search-properties/file-size-unit.enum.ts","../../../../lib/content-services/src/lib/search/components/search-properties/search-properties.component.ts","../../../../lib/content-services/src/lib/search/components/search-properties/search-properties.component.html","../../../../lib/content-services/src/lib/search/components/search-date-range-tabbed/search-date-range/date-range-type.ts","../../../../lib/content-services/src/lib/search/components/search-date-range-tabbed/search-date-range/in-last-date-type.ts","../../../../lib/content-services/src/lib/search/components/search-filter-tabbed/search-filter-tab.directive.ts","../../../../lib/content-services/src/lib/search/components/search-filter-tabbed/search-filter-tabbed.component.ts","../../../../lib/content-services/src/lib/search/components/search-filter-tabbed/search-filter-tabbed.component.html","../../../../lib/content-services/src/lib/search/components/search-date-range-tabbed/search-date-range/search-date-range.component.ts","../../../../lib/content-services/src/lib/search/components/search-date-range-tabbed/search-date-range/search-date-range.component.html","../../../../lib/content-services/src/lib/search/components/search-date-range-tabbed/search-date-range-tabbed.component.ts","../../../../lib/content-services/src/lib/search/components/search-date-range-tabbed/search-date-range-tabbed.component.html","../../../../lib/content-services/src/lib/search/services/search-filter.service.ts","../../../../lib/content-services/src/lib/search/services/search-configuration.service.ts","../../../../lib/content-services/src/lib/search/models/facet-field.interface.ts","../../../../lib/content-services/src/lib/search/search-configuration.token.ts","../../../../lib/content-services/src/lib/search/services/search-query-builder.service.ts","../../../../lib/content-services/src/lib/search/services/search.service.ts","../../../../lib/content-services/src/lib/search/services/search-facet-filters.service.ts","../../../../lib/content-services/src/lib/search/services/index.ts","../../../../lib/content-services/src/lib/search/components/search-widget-container/search-widget-container.component.ts","../../../../lib/content-services/src/lib/search/components/search-filter-container/search-filter-container.component.ts","../../../../lib/content-services/src/lib/search/components/search-filter-container/search-filter-container.component.html","../../../../lib/content-services/src/lib/document-list/components/filter-header/filter-header.component.ts","../../../../lib/content-services/src/lib/document-list/components/filter-header/filter-header.component.html","../../../../lib/content-services/src/lib/document-list/components/document-list.component.ts","../../../../lib/content-services/src/lib/document-list/components/document-list.component.html","../../../../lib/content-services/src/lib/breadcrumb/breadcrumb.component.ts","../../../../lib/content-services/src/lib/breadcrumb/breadcrumb.component.html","../../../../lib/content-services/src/lib/breadcrumb/dropdown-breadcrumb.component.ts","../../../../lib/content-services/src/lib/breadcrumb/dropdown-breadcrumb.component.html","../../../../lib/content-services/src/lib/directives/node-counter.directive.ts","../../../../lib/content-services/src/lib/upload/components/upload-files.event.ts","../../../../lib/content-services/src/lib/upload/components/base-upload/upload-base.ts","../../../../lib/content-services/src/lib/upload/directives/file-draggable.directive.ts","../../../../lib/content-services/src/lib/upload/components/upload-drag-area.component.ts","../../../../lib/content-services/src/lib/upload/components/upload-drag-area.component.html","../../../../lib/content-services/src/lib/upload/components/file-uploading-list.component.ts","../../../../lib/content-services/src/lib/upload/components/file-uploading-list.component.html","../../../../lib/content-services/src/lib/upload/directives/toggle-icon.directive.ts","../../../../lib/content-services/src/lib/upload/pipes/file-upload-error.pipe.ts","../../../../lib/content-services/src/lib/upload/components/file-uploading-list-row.component.ts","../../../../lib/content-services/src/lib/upload/components/file-uploading-list-row.component.html","../../../../lib/content-services/src/lib/upload/components/file-uploading-dialog.component.ts","../../../../lib/content-services/src/lib/upload/components/file-uploading-dialog.component.html","../../../../lib/content-services/src/lib/content-node-selector/content-node-selector-panel/content-node-selector-panel.service.ts","../../../../lib/content-services/src/lib/directives/auto-focus.directive.ts","../../../../lib/content-services/src/lib/content-node-selector/site-dropdown/sites-dropdown.component.ts","../../../../lib/content-services/src/lib/content-node-selector/site-dropdown/sites-dropdown.component.html","../../../../lib/content-services/src/lib/content-node-selector/name-location-cell/name-location-cell.component.ts","../../../../lib/content-services/src/lib/search/components/search-filter/search-filter-card/search-filter-card.component.ts","../../../../lib/content-services/src/lib/search/components/search-filter/search-filter-card/search-filter-card.component.html","../../../../lib/content-services/src/lib/search/components/reset-search.directive.ts","../../../../lib/content-services/src/lib/search/components/search-facet-field/search-facet-field.component.ts","../../../../lib/content-services/src/lib/search/components/search-facet-field/search-facet-field.component.html","../../../../lib/content-services/src/lib/search/components/search-facet-field/index.ts","../../../../lib/content-services/src/lib/search/components/search-filter-chips/search-filter-menu-card/search-filter-menu-card.component.ts","../../../../lib/content-services/src/lib/search/components/search-filter-chips/search-filter-menu-card/search-filter-menu-card.component.html","../../../../lib/content-services/src/lib/search/components/search-filter-chips/search-facet-chip/search-facet-chip.component.ts","../../../../lib/content-services/src/lib/search/components/search-filter-chips/search-facet-chip/search-facet-chip.component.html","../../../../lib/content-services/src/lib/search/components/search-filter-tabbed/index.ts","../../../../lib/content-services/src/lib/search/components/search-filter-chips/search-facet-chip-tabbed/search-facet-tabbed-content.component.ts","../../../../lib/content-services/src/lib/search/components/search-filter-chips/search-facet-chip-tabbed/search-facet-tabbed-content.component.html","../../../../lib/content-services/src/lib/search/components/search-filter-chips/search-facet-chip-tabbed/search-facet-chip-tabbed.component.ts","../../../../lib/content-services/src/lib/search/components/search-filter-chips/search-facet-chip-tabbed/search-facet-chip-tabbed.component.html","../../../../lib/content-services/src/lib/search/components/search-filter-chips/search-widget-chip/search-widget-chip.component.ts","../../../../lib/content-services/src/lib/search/components/search-filter-chips/search-widget-chip/search-widget-chip.component.html","../../../../lib/content-services/src/lib/search/components/search-filter-chips/search-filter-chips.component.ts","../../../../lib/content-services/src/lib/search/components/search-filter-chips/search-filter-chips.component.html","../../../../lib/content-services/src/lib/search/components/search-filter-chips/index.ts","../../../../lib/content-services/src/lib/search/components/search-filter/search-filter.component.ts","../../../../lib/content-services/src/lib/search/components/search-filter/search-filter.component.html","../../../../lib/content-services/src/lib/search/components/search-filter/index.ts","../../../../lib/content-services/src/lib/search/components/search-panel/search-panel.component.ts","../../../../lib/content-services/src/lib/search/components/search-panel/search-panel.component.html","../../../../lib/content-services/src/lib/content-node-selector/content-node-selector-panel/content-node-selector-panel.component.ts","../../../../lib/content-services/src/lib/content-node-selector/content-node-selector-panel/content-node-selector-panel.component.html","../../../../lib/content-services/src/lib/document-list/models/permissions.model.ts","../../../../lib/content-services/src/lib/upload/components/upload-button.component.ts","../../../../lib/content-services/src/lib/upload/components/upload-button.component.html","../../../../lib/content-services/src/lib/content-node-selector/content-node-selector.component.ts","../../../../lib/content-services/src/lib/content-node-selector/content-node-selector.component.html","../../../../lib/content-services/src/lib/dialogs/node-lock/node-lock.dialog.ts","../../../../lib/content-services/src/lib/dialogs/node-lock/node-lock.dialog.html","../../../../lib/content-services/src/lib/content-node-selector/content-node-dialog.service.ts","../../../../lib/content-services/src/lib/directives/node-lock.directive.ts","../../../../lib/content-services/src/lib/directives/check-allowable-operation.directive.ts","../../../../lib/content-services/src/lib/directives/library-favorite.directive.ts","../../../../lib/content-services/src/lib/version-compatibility/version-compatibility.service.ts","../../../../lib/content-services/src/lib/directives/library-membership.directive.ts","../../../../lib/content-services/src/lib/directives/node-delete.directive.ts","../../../../lib/content-services/src/lib/directives/node-favorite.directive.ts","../../../../lib/content-services/src/lib/directives/node-restore.directive.ts","../../../../lib/content-services/src/lib/directives/content-directive.module.ts","../../../../lib/content-services/src/lib/directives/public-api.ts","../../../../lib/content-services/src/lib/directives/index.ts","../../../../lib/content-services/src/lib/tag/tag-actions/tag-actions.component.ts","../../../../lib/content-services/src/lib/tag/tag-actions/tag-actions.component.html","../../../../lib/content-services/src/lib/tag/tag-list/tag-list.component.ts","../../../../lib/content-services/src/lib/tag/tag-list/tag-list.component.html","../../../../lib/content-services/src/lib/tag/tag-node-list/tag-node-list.component.ts","../../../../lib/content-services/src/lib/tag/tag-node-list/tag-node-list.component.html","../../../../lib/content-services/src/lib/tag/tags-creator/tags-creator-mode.ts","../../../../lib/content-services/src/lib/tag/tags-creator/tags-creator.component.ts","../../../../lib/content-services/src/lib/tag/tags-creator/tags-creator.component.html","../../../../lib/content-services/src/lib/tag/tag.module.ts","../../../../lib/content-services/src/lib/tag/public-api.ts","../../../../lib/content-services/src/lib/tag/index.ts","../../../../lib/content-services/src/lib/document-list/services/node-actions.service.ts","../../../../lib/content-services/src/lib/document-list/services/document-actions.service.ts","../../../../lib/content-services/src/lib/document-list/services/folder-actions.service.ts","../../../../lib/content-services/src/lib/document-list/components/content-action/content-action-list.component.ts","../../../../lib/content-services/src/lib/document-list/components/content-action/content-action.component.ts","../../../../lib/content-services/src/lib/document-list/components/library-name-column/library-name-column.component.ts","../../../../lib/content-services/src/lib/document-list/components/library-role-column/library-role-column.component.ts","../../../../lib/content-services/src/lib/document-list/components/library-status-column/library-status-column.component.ts","../../../../lib/content-services/src/lib/pipes/node-name-tooltip.pipe.ts","../../../../lib/content-services/src/lib/document-list/components/name-column/name-column.component.ts","../../../../lib/content-services/src/lib/document-list/components/trashcan-name-column/trashcan-name-column.component.ts","../../../../lib/content-services/src/lib/document-list/data/image-resolver.model.ts","../../../../lib/content-services/src/lib/document-list/data/row-filter.model.ts","../../../../lib/content-services/src/lib/document-list/models/permissions-style.model.ts","../../../../lib/content-services/src/lib/document-list/interfaces/document-list-loader.interface.ts","../../../../lib/content-services/src/lib/document-list/document-list.module.ts","../../../../lib/content-services/src/lib/document-list/public-api.ts","../../../../lib/content-services/src/lib/document-list/index.ts","../../../../lib/content-services/src/lib/upload/components/upload-version-button.component.ts","../../../../lib/content-services/src/lib/upload/upload.module.ts","../../../../lib/content-services/src/lib/upload/public-api.ts","../../../../lib/content-services/src/lib/upload/index.ts","../../../../lib/content-services/src/lib/search/components/search-check-list/index.ts","../../../../lib/content-services/src/lib/search/components/search-chip-list/search-chip-list.component.ts","../../../../lib/content-services/src/lib/search/components/search-chip-list/search-chip-list.component.html","../../../../lib/content-services/src/lib/search/components/search-date-range-tabbed/search-date-range/search-date-range.ts","../../../../lib/content-services/src/lib/search/components/search-date-range-tabbed/index.ts","../../../../lib/content-services/src/lib/search/components/search-datetime-range/index.ts","../../../../lib/content-services/src/lib/search/components/search-filter-autocomplete-chips/index.ts","../../../../lib/content-services/src/lib/search/components/search-filter-container/index.ts","../../../../lib/content-services/src/lib/search/components/search-form/search-form.component.ts","../../../../lib/content-services/src/lib/search/components/search-form/search-form.component.html","../../../../lib/content-services/src/lib/search/components/search-form/index.ts","../../../../lib/content-services/src/lib/search/components/search-input/search-input.component.ts","../../../../lib/content-services/src/lib/search/components/search-input/search-input.component.html","../../../../lib/content-services/src/lib/search/components/search-input/index.ts","../../../../lib/content-services/src/lib/search/components/search-logical-filter/index.ts","../../../../lib/content-services/src/lib/search/components/search-number-range/index.ts","../../../../lib/content-services/src/lib/search/components/search-panel/index.ts","../../../../lib/content-services/src/lib/search/components/search-properties/file-size-condition.ts","../../../../lib/content-services/src/lib/search/components/search-properties/search-properties.ts","../../../../lib/content-services/src/lib/search/components/search-properties/index.ts","../../../../lib/content-services/src/lib/search/components/search-radio/index.ts","../../../../lib/content-services/src/lib/search/components/search-slider/index.ts","../../../../lib/content-services/src/lib/search/components/search-sorting-picker/search-sorting-picker.component.ts","../../../../lib/content-services/src/lib/search/components/search-sorting-picker/search-sorting-picker.component.html","../../../../lib/content-services/src/lib/search/components/search-sorting-picker/index.ts","../../../../lib/content-services/src/lib/search/components/search-text/index.ts","../../../../lib/content-services/src/lib/search/components/search-widget-container/index.ts","../../../../lib/content-services/src/lib/search/components/empty-search-result.component.ts","../../../../lib/content-services/src/lib/search/components/empty-search-result.component.html","../../../../lib/content-services/src/lib/search/components/search.component.ts","../../../../lib/content-services/src/lib/search/components/search.component.html","../../../../lib/content-services/src/lib/search/components/search-control.component.ts","../../../../lib/content-services/src/lib/search/components/search-control.component.html","../../../../lib/content-services/src/lib/search/components/index.ts","../../../../lib/content-services/src/lib/search/forms/search-term-validator.ts","../../../../lib/content-services/src/lib/search/forms/index.ts","../../../../lib/content-services/src/lib/search/mocks/search.service.mock.ts","../../../../lib/content-services/src/lib/search/mocks/index.ts","../../../../lib/content-services/src/lib/search/models/facet-field-bucket.interface.ts","../../../../lib/content-services/src/lib/search/models/facet-query.interface.ts","../../../../lib/content-services/src/lib/search/models/facet-widget.interface.ts","../../../../lib/content-services/src/lib/search/models/filter-query.interface.ts","../../../../lib/content-services/src/lib/search/models/filter-search.interface.ts","../../../../lib/content-services/src/lib/search/models/response-facet-query-list.model.ts","../../../../lib/content-services/src/lib/search/models/search-category.interface.ts","../../../../lib/content-services/src/lib/search/models/search-configuration.interface.ts","../../../../lib/content-services/src/lib/search/models/search-form.interface.ts","../../../../lib/content-services/src/lib/search/models/search-range.interface.ts","../../../../lib/content-services/src/lib/search/models/search-sorting-definition.interface.ts","../../../../lib/content-services/src/lib/search/models/search-widget-settings.interface.ts","../../../../lib/content-services/src/lib/search/models/search-widget.interface.ts","../../../../lib/content-services/src/lib/search/models/tabbed-facet-field.interface.ts","../../../../lib/content-services/src/lib/search/models/index.ts","../../../../lib/content-services/src/lib/search/search.module.ts","../../../../lib/content-services/src/lib/search/public-api.ts","../../../../lib/content-services/src/lib/search/index.ts","../../../../lib/content-services/src/lib/breadcrumb/breadcrumb.module.ts","../../../../lib/content-services/src/lib/breadcrumb/public-api.ts","../../../../lib/content-services/src/lib/breadcrumb/index.ts","../../../../lib/content-services/src/lib/version-manager/content-version.service.ts","../../../../lib/content-services/src/lib/infinite-scroll-datasource/infinite-scroll-datasource.ts","../../../../lib/content-services/src/lib/infinite-scroll-datasource/public-api.ts","../../../../lib/content-services/src/lib/infinite-scroll-datasource/index.ts","../../../../lib/content-services/src/lib/version-compatibility/version-compatibility.directive.ts","../../../../lib/content-services/src/lib/version-compatibility/version-compatibility.module.ts","../../../../lib/content-services/src/lib/version-compatibility/public-api.ts","../../../../lib/content-services/src/lib/version-compatibility/index.ts","../../../../lib/content-services/src/lib/version-manager/version-list.component.ts","../../../../lib/content-services/src/lib/version-manager/version-list.component.html","../../../../lib/content-services/src/lib/version-manager/version-comparison.component.ts","../../../../lib/content-services/src/lib/version-manager/version-comparison.component.html","../../../../lib/content-services/src/lib/version-manager/version-upload.component.ts","../../../../lib/content-services/src/lib/version-manager/version-upload.component.html","../../../../lib/content-services/src/lib/version-manager/version-manager.component.ts","../../../../lib/content-services/src/lib/version-manager/version-manager.component.html","../../../../lib/content-services/src/lib/version-manager/version-manager.module.ts","../../../../lib/content-services/src/lib/version-manager/public-api.ts","../../../../lib/content-services/src/lib/version-manager/index.ts","../../../../lib/content-services/src/lib/content-node-selector/content-node-selector.component-data.interface.ts","../../../../lib/content-services/src/lib/content-node-selector/content-node-selector.module.ts","../../../../lib/content-services/src/lib/content-node-selector/public-api.ts","../../../../lib/content-services/src/lib/content-node-selector/index.ts","../../../../lib/content-services/src/lib/dialogs/folder/folder-name.validators.ts","../../../../lib/content-services/src/lib/dialogs/folder/folder.dialog.ts","../../../../lib/content-services/src/lib/dialogs/folder/folder.dialog.html","../../../../lib/content-services/src/lib/tree/models/tree-node.interface.ts","../../../../lib/content-services/src/lib/tree/services/tree.service.ts","../../../../lib/content-services/src/lib/tree/components/tree.component.ts","../../../../lib/content-services/src/lib/tree/components/tree.component.html","../../../../lib/content-services/src/lib/tree/tree.module.ts","../../../../lib/content-services/src/lib/tree/models/tree-response.interface.ts","../../../../lib/content-services/src/lib/tree/models/tree-context-menu-result.interface.ts","../../../../lib/content-services/src/lib/tree/public-api.ts","../../../../lib/content-services/src/lib/tree/index.ts","../../../../lib/content-services/src/lib/category/services/category-tree-datasource.service.ts","../../../../lib/content-services/src/lib/category/models/category-node.interface.ts","../../../../lib/content-services/src/lib/category/categories-management/categories-management-mode.ts","../../../../lib/content-services/src/lib/category/categories-management/categories-management.component.ts","../../../../lib/content-services/src/lib/category/categories-management/categories-management.component.html","../../../../lib/content-services/src/lib/category/category.module.ts","../../../../lib/content-services/src/lib/category/public-api.ts","../../../../lib/content-services/src/lib/category/index.ts","../../../../lib/content-services/src/lib/dialogs/category-selector/category-selector.dialog.ts","../../../../lib/content-services/src/lib/dialogs/category-selector/category-selector.dialog.html","../../../../lib/content-services/src/lib/services/public-api.ts","../../../../lib/content-services/src/lib/services/index.ts","../../../../lib/content-services/src/lib/dialogs/library/library.dialog.ts","../../../../lib/content-services/src/lib/dialogs/library/library.dialog.html","../../../../lib/content-services/src/lib/dialogs/download-zip/download-zip.dialog.module.ts","../../../../lib/content-services/src/lib/dialogs/dialog.module.ts","../../../../lib/content-services/src/lib/dialogs/public-api.ts","../../../../lib/content-services/src/lib/dialogs/index.ts","../../../../lib/content-services/src/lib/content-metadata/services/basic-properties.service.ts","../../../../lib/content-services/src/lib/content-metadata/services/property-groups-translator.service.ts","../../../../lib/content-services/src/lib/content-metadata/services/config/property-group-reader.ts","../../../../lib/content-services/src/lib/content-metadata/services/config/aspect-oriented-config.service.ts","../../../../lib/content-services/src/lib/content-metadata/services/config/indifferent-config.service.ts","../../../../lib/content-services/src/lib/content-metadata/services/config/layout-oriented-config.service.ts","../../../../lib/content-services/src/lib/content-metadata/services/config/content-metadata-config.factory.ts","../../../../lib/content-services/src/lib/content-metadata/services/property-descriptors.service.ts","../../../../lib/content-services/src/lib/content-type/content-type.service.ts","../../../../lib/content-services/src/lib/content-type/content-type-dialog.component.ts","../../../../lib/content-services/src/lib/content-type/content-type-dialog.component.html","../../../../lib/content-services/src/lib/content-metadata/services/content-type-property.service.ts","../../../../lib/content-services/src/lib/content-metadata/services/content-metadata.service.ts","../../../../lib/content-services/src/lib/content-metadata/components/content-metadata/content-metadata-header.component.ts","../../../../lib/content-services/src/lib/content-metadata/components/content-metadata/content-metadata.component.ts","../../../../lib/content-services/src/lib/content-metadata/components/content-metadata/content-metadata.component.html","../../../../lib/content-services/src/lib/aspect-list/services/aspect-list.service.ts","../../../../lib/content-services/src/lib/aspect-list/aspect-list.component.ts","../../../../lib/content-services/src/lib/aspect-list/aspect-list.component.html","../../../../lib/content-services/src/lib/aspect-list/aspect-list-dialog.component.ts","../../../../lib/content-services/src/lib/aspect-list/aspect-list-dialog.component.html","../../../../lib/content-services/src/lib/aspect-list/services/dialog-aspect-list.service.ts","../../../../lib/content-services/src/lib/aspect-list/services/node-aspect.service.ts","../../../../lib/content-services/src/lib/content-metadata/components/content-metadata-card/content-metadata-card.component.ts","../../../../lib/content-services/src/lib/content-metadata/components/content-metadata-card/content-metadata-card.component.html","../../../../lib/content-services/src/lib/content-metadata/interfaces/aspect-oriented-config.interface.ts","../../../../lib/content-services/src/lib/content-metadata/interfaces/property.interface.ts","../../../../lib/content-services/src/lib/content-metadata/interfaces/property-group.interface.ts","../../../../lib/content-services/src/lib/content-metadata/interfaces/organised-property-group.interface.ts","../../../../lib/content-services/src/lib/content-metadata/interfaces/card-view-group.interface.ts","../../../../lib/content-services/src/lib/content-metadata/interfaces/content-metadata-config.interface.ts","../../../../lib/content-services/src/lib/content-metadata/interfaces/indifferent-config.interface.ts","../../../../lib/content-services/src/lib/content-metadata/interfaces/layout-oriented-config.interface.ts","../../../../lib/content-services/src/lib/content-metadata/interfaces/preset-config.interface.ts","../../../../lib/content-services/src/lib/content-metadata/interfaces/content-metadata-custom-panel.interface.ts","../../../../lib/content-services/src/lib/content-metadata/interfaces/content-metadata-panel.interface.ts","../../../../lib/content-services/src/lib/content-metadata/interfaces/content-metadata.interfaces.ts","../../../../lib/content-services/src/lib/content-metadata/content-metadata.module.ts","../../../../lib/content-services/src/lib/content-metadata/public-api.ts","../../../../lib/content-services/src/lib/content-metadata/index.ts","../../../../lib/content-services/src/lib/permission-manager/models/permission.model.ts","../../../../lib/content-services/src/lib/permission-manager/services/node-permission.service.ts","../../../../lib/content-services/src/lib/permission-manager/models/member.model.ts","../../../../lib/content-services/src/lib/permission-manager/components/add-permission/search-config-permission.service.ts","../../../../lib/content-services/src/lib/permission-manager/components/user-icon-column/user-icon-column.component.ts","../../../../lib/content-services/src/lib/permission-manager/components/add-permission/add-permission-panel.component.ts","../../../../lib/content-services/src/lib/permission-manager/components/add-permission/add-permission-panel.component.html","../../../../lib/content-services/src/lib/permission-manager/components/user-name-column/user-name-column.component.ts","../../../../lib/content-services/src/lib/permission-manager/components/user-role-column/user-role-column.component.ts","../../../../lib/content-services/src/lib/permission-manager/components/add-permission/add-permission-dialog.component.ts","../../../../lib/content-services/src/lib/permission-manager/components/add-permission/add-permission-dialog.component.html","../../../../lib/content-services/src/lib/permission-manager/services/node-permission-dialog.service.ts","../../../../lib/content-services/src/lib/permission-manager/components/permission-list/permission-list.service.ts","../../../../lib/content-services/src/lib/permission-manager/components/node-path-column/node-path-column.component.ts","../../../../lib/content-services/src/lib/permission-manager/components/permission-container/permission-container.component.ts","../../../../lib/content-services/src/lib/permission-manager/components/permission-container/permission-container.component.html","../../../../lib/content-services/src/lib/permission-manager/components/pop-over.directive.ts","../../../../lib/content-services/src/lib/permission-manager/components/permission-list/permission-list.component.ts","../../../../lib/content-services/src/lib/permission-manager/components/permission-list/permission-list.component.html","../../../../lib/content-services/src/lib/permission-manager/components/inherited-button.directive.ts","../../../../lib/content-services/src/lib/permission-manager/components/add-permission/add-permission-dialog-data.interface.ts","../../../../lib/content-services/src/lib/permission-manager/components/add-permission/add-permission.component.ts","../../../../lib/content-services/src/lib/permission-manager/components/add-permission/add-permission.component.html","../../../../lib/content-services/src/lib/permission-manager/models/role.model.ts","../../../../lib/content-services/src/lib/permission-manager/permission-manager.module.ts","../../../../lib/content-services/src/lib/permission-manager/public-api.ts","../../../../lib/content-services/src/lib/permission-manager/index.ts","../../../../lib/content-services/src/lib/content-node-share/content-node-share.settings.ts","../../../../lib/content-services/src/lib/content-node-share/services/shared-links-api.service.ts","../../../../lib/content-services/src/lib/content-node-share/content-node-share.dialog.ts","../../../../lib/content-services/src/lib/content-node-share/content-node-share.dialog.html","../../../../lib/content-services/src/lib/content-node-share/content-node-share.directive.ts","../../../../lib/content-services/src/lib/content-node-share/content-node-share.module.ts","../../../../lib/content-services/src/lib/content-node-share/public-api.ts","../../../../lib/content-services/src/lib/content-node-share/index.ts","../../../../lib/content-services/src/lib/tree-view/models/tree-view.model.ts","../../../../lib/content-services/src/lib/tree-view/services/tree-view.service.ts","../../../../lib/content-services/src/lib/tree-view/data/tree-view-datasource.ts","../../../../lib/content-services/src/lib/tree-view/components/tree-view.component.ts","../../../../lib/content-services/src/lib/tree-view/components/tree-view.component.html","../../../../lib/content-services/src/lib/tree-view/tree-view.module.ts","../../../../lib/content-services/src/lib/tree-view/public-api.ts","../../../../lib/content-services/src/lib/tree-view/index.ts","../../../../lib/content-services/src/lib/group/services/group.service.ts","../../../../lib/content-services/src/lib/group/public-api.ts","../../../../lib/content-services/src/lib/group/index.ts","../../../../lib/content-services/src/lib/aspect-list/aspect-list-dialog-data.interface.ts","../../../../lib/content-services/src/lib/aspect-list/aspect-list.module.ts","../../../../lib/content-services/src/lib/aspect-list/public-api.ts","../../../../lib/content-services/src/lib/aspect-list/index.ts","../../../../lib/content-services/src/lib/content-type/content-type-metadata.interface.ts","../../../../lib/content-services/src/lib/content-type/index.ts","../../../../lib/content-services/src/lib/node-comments/services/node-comments.service.ts","../../../../lib/content-services/src/lib/node-comments/node-comments.component.ts","../../../../lib/content-services/src/lib/node-comments/node-comments.component.html","../../../../lib/content-services/src/lib/node-comments/node-comments.module.ts","../../../../lib/content-services/src/lib/node-comments/public-api.ts","../../../../lib/content-services/src/lib/node-comments/index.ts","../../../../lib/content-services/src/lib/new-version-uploader/models/new-version-uploader.model.ts","../../../../lib/content-services/src/lib/new-version-uploader/models/index.ts","../../../../lib/content-services/src/lib/new-version-uploader/new-version-uploader.dialog.ts","../../../../lib/content-services/src/lib/new-version-uploader/new-version-uploader.dialog.html","../../../../lib/content-services/src/lib/new-version-uploader/new-version-uploader.module.ts","../../../../lib/content-services/src/lib/new-version-uploader/new-version-uploader.service.ts","../../../../lib/content-services/src/lib/new-version-uploader/public-api.ts","../../../../lib/content-services/src/lib/new-version-uploader/index.ts","../../../../lib/content-services/src/lib/interfaces/node-allowable-operation-subject.interface.ts","../../../../lib/content-services/src/lib/interfaces/library-entity.interface.ts","../../../../lib/content-services/src/lib/interfaces/restore-message-model.interface.ts","../../../../lib/content-services/src/lib/interfaces/library-membership-error-event.interface.ts","../../../../lib/content-services/src/lib/interfaces/library-membership-toggle-event.interface.ts","../../../../lib/content-services/src/lib/interfaces/base-card-view-content-update.interface.ts","../../../../lib/content-services/src/lib/interfaces/public-api.ts","../../../../lib/content-services/src/lib/interfaces/index.ts","../../../../lib/content-services/src/lib/pipes/content-pipe.module.ts","../../../../lib/content-services/src/lib/pipes/public-api.ts","../../../../lib/content-services/src/lib/pipes/index.ts","../../../../lib/content-services/src/lib/viewer/components/alfresco-viewer.component.ts","../../../../lib/content-services/src/lib/viewer/components/alfresco-viewer.component.html","../../../../lib/content-services/src/lib/viewer/alfresco-viewer.module.ts","../../../../lib/content-services/src/lib/viewer/public-api.ts","../../../../lib/content-services/src/lib/viewer/index.ts","../../../../lib/content-services/src/lib/security/services/security-controls-groups-marks-security.service.ts","../../../../lib/content-services/src/lib/security/public-api.ts","../../../../lib/content-services/src/lib/security/index.ts","../../../../lib/content-services/src/lib/api-factories/alfresco-api-no-auth.service.ts","../../../../lib/content-services/src/lib/security-options-loader/security-options-loader.service.ts","../../../../lib/content-services/src/lib/api-factories/alfresco-api-v2-loader.service.ts","../../../../lib/content-services/src/lib/api-factories/public-api.ts","../../../../lib/content-services/src/lib/api-factories/index.ts","../../../../lib/content-services/src/lib/prediction/services/prediction.service.ts","../../../../lib/content-services/src/lib/prediction/services/index.ts","../../../../lib/content-services/src/lib/prediction/public-api.ts","../../../../lib/content-services/src/lib/prediction/index.ts","../../../../lib/content-services/src/lib/legal-hold/services/legal-hold.service.ts","../../../../lib/content-services/src/lib/legal-hold/public-api.ts","../../../../lib/content-services/src/lib/legal-hold/index.ts","../../../../lib/content-services/src/lib/mock/alfresco-api.service.mock.ts","../../../../lib/content-services/src/lib/agent/services/agent.service.ts","../../../../lib/content-services/src/lib/agent/public-api.ts","../../../../lib/content-services/src/lib/agent/index.ts","../../../../lib/content-services/src/lib/search-ai/services/search-ai.service.ts","../../../../lib/content-services/src/lib/search-ai/models/search-ai-input-state.ts","../../../../lib/content-services/src/lib/search-ai/public-api.ts","../../../../lib/content-services/src/lib/search-ai/index.ts","../../../../lib/content-services/src/lib/version-compatibility/version-compatibility-factory.ts","../../../../lib/content-services/src/lib/auth-loader/content-auth-loader-factory.ts","../../../../lib/content-services/src/lib/auth-loader/content-auth-loader.service.ts","../../../../lib/content-services/src/lib/material.module.ts","../../../../lib/content-services/src/lib/content.module.ts","../../../../lib/content-services/src/lib/mock/document-library.model.mock.ts","../../../../lib/content-services/src/lib/mock/document-list.component.mock.ts","../../../../lib/content-services/src/lib/mock/search.component.mock.ts","../../../../lib/content-services/src/lib/mock/search.service.mock.ts","../../../../lib/content-services/src/lib/mock/search-filter-mock.ts","../../../../lib/content-services/src/lib/mock/sites-dropdown.component.mock.ts","../../../../lib/content-services/src/lib/mock/search-query.mock.ts","../../../../lib/content-services/src/lib/mock/new-version-uploader.service.mock.ts","../../../../lib/content-services/src/lib/mock/date-range-search-filter.mock.ts","../../../../lib/content-services/src/lib/mock/public-api.ts","../../../../lib/content-services/src/lib/mock/index.ts","../../../../lib/content-services/src/lib/testing/content.testing.module.ts","../../../../lib/content-services/src/public-api.ts","../../../../lib/content-services/src/adf-content-services.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 { Component } from '@angular/core';\n\n@Component({\n    selector: 'adf-alfresco-icon',\n    standalone: true,\n    templateUrl: './alfresco-icon-component.svg'\n})\nexport class AlfrescoIconComponent {}\n","<svg xmlns=\"http://www.w3.org/2000/svg\" x=\"0\" y=\"0\" viewBox=\"17.2 134.6 562 573.1\"><path fill=\"#FFF\" d=\"M298.2,421.3L219,340.4l-2.9-2.9c-45.4-46.5-119.5-46.5-164.7-0.2c-45.6,46.3-45.6,121.5,0,167.8\tc45.2,46.4,119,46.4,164.4,0L298.2,421.3z\"/><path fill=\"#FFF\" d=\"M298.2,421.2v114.3l0.2,4.2c0,65.5-52.2,119-116.5,119c-64.3,0-116.5-53.1-116.5-118.6\tc0-65.6,52.4-118.8,116.5-118.8H298.2z\"/><path fill=\"#FFF\" d=\"M298.2,421.2v114.3l0.2,4.2c0,65.5-52.2,119-116.5,119c-64.3,0-116.5-53.1-116.5-118.6\tc0-65.6,52.4-118.8,116.5-118.8H298.2z\"/><path fill=\"#FFF\" d=\"M298.2,421.2v114.3l0.2,4.2c0,65.5-52.2,119-116.5,119c-64.3,0-116.5-53.1-116.5-118.6\tc0-7.3,0.8-14.4,2-21.2c45.4,32.2,108.2,27.7,148.6-13.7l82.4-83.8V421.2z\"/><path fill=\"#8ABF42\" d=\"M181.9,436.1c-56.1,0-101.6,46.5-101.6,103.8c0,57.1,45.6,103.5,101.6,103.5c56.2,0,101.7-46.4,101.7-103.5\tv-4.5v-99.3H182.1H181.9z\"/><path fill=\"#FFF\" d=\"M298.2,421.2l79.2,80.8l3.3,2.9c45.2,46.4,45.5,121.8,0,168.1c-45.6,46.3-119.2,46.3-164.8,0\tc-45.4-46.3-45.4-121.5,0-168L298.2,421.2z\"/><path fill=\"#8ABF42\" d=\"M226.5,515.6c-39.8,40.5-39.8,106.2,0,146.6c39.6,40.5,104,40.5,143.8,0c39.6-40.4,39.6-106.1,0-146.6\tl-3.3-3l-68.7-70.2l-71.7,73.1V515.6z\"/><path fill=\"#FFF\" d=\"M298.2,421.2h112.2l4.1-0.2c64.4,0,116.5,53.2,116.5,118.8c0,65.6-52,118.6-116.3,118.6\tc-64.3,0-116.5-53.1-116.5-118.6V421.2z\"/><path fill=\"#8ABF42\" d=\"M313.1,539.8c0,57.3,45.4,103.7,101.6,103.7c56,0,101.4-46.4,101.4-103.7c0-57.3-45.4-103.6-101.4-103.6\th-4.3h-97.4v103.3V539.8z\"/><path fill=\"#FFF\" d=\"M298.2,421.2l79.2-80.9l3.1-3.1c45.4-46.3,119.2-46.5,164.6-0.2c45.4,46.4,45.4,121.5,0,167.9\tc-45.4,46.4-119.2,46.4-164.6,0L298.2,421.2z\"/><path fill=\"#8ABF42\" d=\"M391.1,494.3c39.4,40.6,103.8,40.6,143.6,0c39.8-40.4,39.8-106,0-146.5c-39.8-40.5-104.1-40.5-143.6,0\tl-3.3,3.2l-68.6,70.3l71.5,73L391.1,494.3z\"/><path fill=\"#FFF\" d=\"M298.2,421.2V306.8v-4.3c0-65.5,51.9-118.8,116.5-118.8c64.2,0,116.1,52.9,116.1,118.6\tc0,65.6-52,118.8-116.1,118.8H298.2z\"/><path fill=\"#F89F31\" d=\"M414.7,406.1c56,0,101.4-46.4,101.4-103.7c0-57.1-45.4-103.6-101.4-103.6c-56.3,0-101.8,46.5-101.8,103.6\tl0.2,4.4v99.3h101.1H414.7z\"/><path fill=\"#FFF\" d=\"M298.2,421.2L219,340.3l-3.1-2.9c-45.4-46.5-45.4-121.8,0-168.1c45.2-46.4,119.1-46.4,164.6,0\tc45.4,46.3,45.4,121.6,0,167.9L298.2,421.2z\"/><path fill=\"#0080C5\" d=\"M370.1,327.6c39.6-40.5,39.6-106.2,0-146.6c-39.8-40.5-104-40.5-143.7,0c-39.8,40.4-39.8,106.1,0,146.6\tl2.9,3.1l69,70.1l71.6-73L370.1,327.6z\"/><path fill=\"#FFF\" d=\"M298.2,422.1H186.1l-4.2,0.1c-64.1,0-116.5-53.2-116.5-118.8c0-65.5,52.2-118.7,116.3-118.7\tc64.3,0,116.6,53.2,116.6,118.8V422.1z\"/><path fill=\"#0080C5\" d=\"M283.5,303.5c0-57.3-45.4-103.6-101.8-103.6c-56,0-101.6,46.3-101.6,103.5c0,57.2,45.6,103.7,101.6,103.7\tl4.4-0.1h97.4V303.8V303.5z\"/><path fill=\"#FFF\" d=\"M298.2,422.1l-281,0.1c0-30.4,11.2-60.8,34.2-84c45.2-46.3,119-46.3,164.4,0L298.2,422.1z\"/><path fill=\"#0080C5\" d=\"M205.4,348.9l71.9,73.3h-95.5c-51.6,0-95.5,34.3-110.7,81.9c-3.1-2.7-6.4-5.5-9.3-8.7\tc-39.8-40.5-39.8-106,0-146.5C101.3,308.4,165.8,308.4,205.4,348.9\"/><path fill=\"#005DA9\" d=\"M205.6,349l56.9,58l-80.9,0.2c-46.6,0-85.8-31.9-97.8-75.5c38.6-22.1,89.2-16.8,121.6,17.1L205.6,349z\"/><path fill=\"#005DA9\" d=\"M283.5,303.7l-0.1,82.1l-57.1-58.2c-32.9-33.6-38.7-84.4-17-123.8c42.7,12.2,74.2,52.2,74.2,99.8V303.7z\"/><path fill=\"#005DA9\" d=\"M312.6,386v-82.4c0-47.5,31.5-87.5,74.2-99.8c21.6,39.5,17.6,89-16.4,123.3L312.6,386z\"/><path fill=\"#FFDE4F\" d=\"M333.9,406.1l57.1-58.3c32.9-33.6,82.8-39.3,121.4-17.2c-12.2,43.5-49.4,74.8-95.3,75.6L333.9,406.1z\"/><path fill=\"#48A64A\" d=\"M333.8,436.1h80.8c46.6,0,85.8,31.7,97.8,75.4c-38.9,22.2-88.7,16.3-121.8-17.2L333.8,436.1z\"/><path fill=\"#48A64A\" d=\"M313.1,539.2v-82l57.2,58.2c32.9,33.7,38.5,84.7,16.8,124.1c-42.7-12.2-74-52.4-74-99.9V539.2z\"/><path fill=\"#48A64A\" d=\"M226.6,515.4l56.9-58l0.1,82.4c0,47.5-31.3,87.4-74,99.7c-21.6-39.5-15.8-90.4,17-123.9V515.4z\"/><path fill=\"#48A64A\" d=\"M182.4,436.1h80.4l-57,58.2c-32.8,33.5-83.1,39.3-121.7,17.3c12.1-43.7,51.4-75.5,98-75.5H182.4z\"/></svg>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 */\nexport class PermissionsEnum extends String {\n    static CONTRIBUTOR: string = 'Contributor';\n    static CONSUMER: string = 'Consumer';\n    static COLLABORATOR: string = 'Collaborator';\n    static MANAGER: string = 'Manager';\n    static EDITOR: string = 'Editor';\n    static COORDINATOR: string = 'Coordinator';\n    static NOT_CONTRIBUTOR: string = '!Contributor';\n    static NOT_CONSUMER: string = '!Consumer';\n    static NOT_COLLABORATOR: string = '!Collaborator';\n    static NOT_MANAGER: string = '!Manager';\n    static NOT_EDITOR: string = '!Editor';\n    static NOT_COORDINATOR: string = '!Coordinator';\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 */\nexport class AllowableOperationsEnum extends String {\n    static DELETE: string = 'delete';\n    static UPDATE: string = 'update';\n    static CREATE: string = 'create';\n    static COPY: string = 'copy';\n    static LOCK: string = 'lock';\n    static UPDATEPERMISSIONS: string = 'updatePermissions';\n    static NOT_DELETE: string = '!delete';\n    static NOT_UPDATE: string = '!update';\n    static NOT_CREATE: string = '!create';\n    static NOT_UPDATEPERMISSIONS: string = '!updatePermissions';\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY 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, InjectionToken, Optional } from '@angular/core';\nimport { AlfrescoApi, AlfrescoApiConfig } from '@alfresco/js-api';\nimport { ReplaySubject } from 'rxjs';\nimport { AlfrescoApiFactory } from './alfresco-api.interface';\nimport { AppConfigService, AppConfigValues, OauthConfigModel, OpenidConfiguration, StorageService } from '@alfresco/adf-core';\n\nexport const ALFRESCO_API_FACTORY = new InjectionToken('ALFRESCO_API_FACTORY');\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class AlfrescoApiService {\n    alfrescoApiInitialized = new ReplaySubject<boolean>(1);\n\n    protected alfrescoApi: AlfrescoApi;\n\n    lastConfig: AlfrescoApiConfig;\n    currentAppConfig: AlfrescoApiConfig;\n\n    idpConfig: OpenidConfiguration;\n\n    private excludedErrorUrl: string[] = ['api/enterprise/system/properties'];\n\n    getInstance(): AlfrescoApi {\n        return this.alfrescoApi;\n    }\n\n    constructor(\n        protected appConfig: AppConfigService,\n        protected storageService: StorageService,\n        @Optional()\n        @Inject(ALFRESCO_API_FACTORY)\n        private alfrescoApiFactory?: AlfrescoApiFactory\n    ) {}\n\n    async load(config: AlfrescoApiConfig): Promise<void> {\n        this.currentAppConfig = config;\n\n        if (config.authType === 'OAUTH') {\n            await this.mapAlfrescoApiOpenIdConfig();\n        }\n\n        this.initAlfrescoApi();\n        this.alfrescoApiInitialized.next(true);\n    }\n\n    async reset() {\n        this.getCurrentAppConfig();\n        if (this.currentAppConfig.authType === 'OAUTH') {\n            await this.mapAlfrescoApiOpenIdConfig();\n        }\n        this.initAlfrescoApiWithConfig();\n    }\n\n    private getAuthWithFixedOriginLocation(): OauthConfigModel {\n        const oauth = this.appConfig.oauth2;\n\n        if (oauth) {\n            oauth.redirectUri = window.location.origin + window.location.pathname;\n            oauth.redirectUriLogout = window.location.origin + window.location.pathname;\n        }\n        return oauth;\n    }\n\n    private async mapAlfrescoApiOpenIdConfig() {\n        this.idpConfig = await this.appConfig.loadWellKnown(this.currentAppConfig.oauth2.host);\n        this.currentAppConfig.oauth2.tokenUrl = this.idpConfig.token_endpoint;\n        this.currentAppConfig.oauth2.authorizationUrl = this.idpConfig.authorization_endpoint;\n        this.currentAppConfig.oauth2.logoutUrl = this.idpConfig.end_session_endpoint;\n        this.currentAppConfig.oauth2.userinfoEndpoint = this.idpConfig.userinfo_endpoint;\n    }\n\n    private getCurrentAppConfig() {\n        const oauth = this.getAuthWithFixedOriginLocation();\n\n        this.currentAppConfig = new AlfrescoApiConfig({\n            provider: this.appConfig.get<string>(AppConfigValues.PROVIDERS),\n            hostEcm: this.appConfig.get<string>(AppConfigValues.ECMHOST),\n            hostBpm: this.appConfig.get<string>(AppConfigValues.BPMHOST),\n            authType: this.appConfig.get<string>(AppConfigValues.AUTHTYPE, 'BASIC'),\n            contextRootBpm: this.appConfig.get<string>(AppConfigValues.CONTEXTROOTBPM),\n            contextRoot: this.appConfig.get<string>(AppConfigValues.CONTEXTROOTECM),\n            disableCsrf: this.appConfig.get<boolean>(AppConfigValues.DISABLECSRF),\n            withCredentials: this.appConfig.get<boolean>(AppConfigValues.AUTH_WITH_CREDENTIALS, false),\n            domainPrefix: this.appConfig.get<string>(AppConfigValues.STORAGE_PREFIX),\n            oauth2: oauth\n        });\n    }\n\n    protected initAlfrescoApi() {\n        this.getCurrentAppConfig();\n        this.initAlfrescoApiWithConfig();\n    }\n\n    private initAlfrescoApiWithConfig() {\n        if (this.alfrescoApi && this.isDifferentConfig(this.lastConfig, this.currentAppConfig)) {\n            this.alfrescoApi.setConfig(this.currentAppConfig);\n        } else {\n            this.alfrescoApi = this.createInstance(this.currentAppConfig);\n        }\n        this.lastConfig = this.currentAppConfig;\n    }\n\n    createInstance(config: AlfrescoApiConfig): AlfrescoApi {\n        if (this.alfrescoApiFactory) {\n            return this.alfrescoApiFactory.createAlfrescoApi(config);\n        }\n        return new AlfrescoApi(config);\n    }\n\n    isDifferentConfig(lastConfig: AlfrescoApiConfig, newConfig: AlfrescoApiConfig) {\n        return JSON.stringify(lastConfig) !== JSON.stringify(newConfig);\n    }\n\n    isExcludedErrorListener(currentFullPath: string): boolean {\n        const formattedPath = currentFullPath.replace(this.lastConfig.hostBpm + '/' + this.lastConfig.contextRootBpm, '');\n        return this.excludedErrorUrl.includes(formattedPath);\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 { ContentApi, Node, NodeEntry } from '@alfresco/js-api';\nimport { Subject } from 'rxjs';\nimport { AuthenticationService, ThumbnailService } from '@alfresco/adf-core';\nimport { PermissionsEnum } from '../models/permissions.enum';\nimport { AllowableOperationsEnum } from '../models/allowable-operations.enum';\nimport { AlfrescoApiService } from '../../services/alfresco-api.service';\n\nexport interface FolderCreatedEvent {\n    name: string;\n    relativePath?: string;\n    parentId?: string;\n    node?: NodeEntry;\n}\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class ContentService {\n    folderCreated = new Subject<FolderCreatedEvent>();\n    folderCreate = new Subject<Node>();\n    folderEdit = new Subject<Node>();\n\n    private _contentApi: ContentApi;\n    get contentApi(): ContentApi {\n        this._contentApi = this._contentApi ?? new ContentApi(this.apiService.getInstance());\n        return this._contentApi;\n    }\n\n    constructor(public authService: AuthenticationService, public apiService: AlfrescoApiService, private thumbnailService?: ThumbnailService) {}\n\n    /**\n     * Gets a content URL for the given node.\n     *\n     * @param node Node or Node ID to get URL for.\n     * @param attachment Toggles whether to retrieve content as an attachment for download\n     * @param ticket Custom ticket to use for authentication\n     * @returns URL string or `null`\n     */\n    getContentUrl(node: NodeEntry | string, attachment?: boolean, ticket?: string): string {\n        if (node) {\n            let nodeId: string;\n\n            if (typeof node === 'string') {\n                nodeId = node;\n            } else if (node.entry) {\n                nodeId = node.entry.id;\n            }\n\n            return this.contentApi.getContentUrl(nodeId, attachment, ticket);\n        }\n\n        return null;\n    }\n\n    getDocumentThumbnailUrl(nodeId: string, attachment?: boolean, ticket?: string): string {\n        return this.contentApi.getDocumentThumbnailUrl(nodeId, attachment, ticket);\n    }\n\n    /**\n     * Checks if the user has permission on that node\n     *\n     * @param node Node to check permissions\n     * @param permission Required permission type\n     * @param userId Optional current user id will be taken by default\n     * @returns True if the user has the required permissions, false otherwise\n     */\n    hasPermissions(node: Node, permission: PermissionsEnum | string, userId?: string): boolean {\n        let hasPermissions = false;\n        userId = userId ?? this.authService.getEcmUsername();\n\n        const permissions = [...(node.permissions?.locallySet || []), ...(node.permissions?.inherited || [])].filter(\n            (currentPermission) => currentPermission.authorityId === userId\n        );\n        if (permissions.length) {\n            if (permission?.startsWith('!')) {\n                hasPermissions = !permissions.find((currentPermission) => currentPermission.name === permission.replace('!', ''));\n            } else {\n                hasPermissions = !!permissions.find((currentPermission) => currentPermission.name === permission);\n            }\n        } else {\n            if (permission === PermissionsEnum.CONSUMER) {\n                hasPermissions = true;\n            } else if (permission === PermissionsEnum.NOT_CONSUMER) {\n                hasPermissions = false;\n            } else if (permission?.startsWith('!')) {\n                hasPermissions = true;\n            }\n        }\n\n        return hasPermissions;\n    }\n\n    /**\n     * Checks if the user has permissions on that node\n     *\n     * @param node Node to check allowableOperations\n     * @param allowableOperation Create, delete, update, updatePermissions, !create, !delete, !update, !updatePermissions\n     * @returns True if the user has the required permissions, false otherwise\n     */\n    hasAllowableOperations(node: Node, allowableOperation: AllowableOperationsEnum | string): boolean {\n        let hasAllowableOperations = false;\n\n        if (node?.allowableOperations) {\n            if (allowableOperation?.startsWith('!')) {\n                hasAllowableOperations = !node.allowableOperations.find(\n                    (currentOperation) => currentOperation === allowableOperation.replace('!', '')\n                );\n            } else {\n                hasAllowableOperations = !!node.allowableOperations.find((currentOperation) => currentOperation === allowableOperation);\n            }\n        } else {\n            if (allowableOperation?.startsWith('!')) {\n                hasAllowableOperations = true;\n            }\n        }\n\n        if (allowableOperation === AllowableOperationsEnum.COPY) {\n            hasAllowableOperations = true;\n        }\n\n        if (allowableOperation === AllowableOperationsEnum.LOCK) {\n            hasAllowableOperations = node.isFile;\n\n            if (node.isLocked && node.allowableOperations) {\n                hasAllowableOperations = !!~node.allowableOperations.indexOf('updatePermissions');\n            }\n        }\n\n        return hasAllowableOperations;\n    }\n\n    getNodeIcon(node: Node): string {\n        if (node?.isFolder) {\n            return this.getFolderIcon(node);\n        }\n        if (node?.isFile) {\n            return this.thumbnailService.getMimeTypeIcon(node?.content?.mimeType);\n        }\n        return this.thumbnailService.getDefaultMimeTypeIcon();\n    }\n\n    private getFolderIcon(node: Node): string {\n        if (this.isSmartFolder(node)) {\n            return this.thumbnailService.getMimeTypeIcon('smartFolder');\n        } else if (this.isRuleFolder(node)) {\n            return this.thumbnailService.getMimeTypeIcon('ruleFolder');\n        } else if (this.isLinkFolder(node)) {\n            return this.thumbnailService.getMimeTypeIcon('linkFolder');\n        } else {\n            return this.thumbnailService.getMimeTypeIcon('folder');\n        }\n    }\n\n    isSmartFolder(node: Node): boolean {\n        if (node) {\n            return this.hasAspect(node, 'smf:customConfigSmartFolder') || this.hasAspect(node, 'smf:systemConfigSmartFolder');\n        }\n        return false;\n    }\n\n    isRuleFolder(node: Node): boolean {\n        if (node) {\n            return this.hasAspect(node, 'rule:rules');\n        }\n        return false;\n    }\n\n    isLinkFolder(node: Node): boolean {\n        return node?.nodeType === 'app:folderlink';\n    }\n\n    private hasAspect(node: Node, aspectName: string): boolean {\n        return node?.aspectNames?.includes(aspectName);\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 NodeMetadata {\n    metadata: any;\n    nodeType: string;\n\n    constructor(metadata: any, nodeType: string) {\n        this.metadata = metadata;\n        this.nodeType = nodeType;\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 { UserPreferencesService } from '@alfresco/adf-core';\nimport {\n    ContentPagingQuery,\n    Node,\n    NodeAssignedHold,\n    NodeEntry,\n    NodePaging,\n    NodesApi,\n    NodesIncludeQuery,\n    TrashcanApi,\n    SizeDetailsEntry,\n    JobIdBodyEntry\n} from '@alfresco/js-api';\nimport { Injectable } from '@angular/core';\nimport { from, Observable, Subject, throwError } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { NodeMetadata } from '../models/node-metadata.model';\nimport { AlfrescoApiService } from '../../services/alfresco-api.service';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class NodesApiService {\n    /**\n     * Publish/subscribe to events related to node updates.\n     */\n    nodeUpdated = new Subject<Node>();\n\n    private _trashcanApi: TrashcanApi;\n    get trashcanApi(): TrashcanApi {\n        this._trashcanApi = this._trashcanApi ?? new TrashcanApi(this.apiService.getInstance());\n        return this._trashcanApi;\n    }\n\n    private _nodesApi: NodesApi;\n    get nodesApi(): NodesApi {\n        this._nodesApi = this._nodesApi ?? new NodesApi(this.apiService.getInstance());\n        return this._nodesApi;\n    }\n\n    constructor(private apiService: AlfrescoApiService, private preferences: UserPreferencesService) {}\n\n    private getEntryFromEntity(entity: NodeEntry): Node {\n        return entity.entry;\n    }\n\n    /**\n     * Gets the stored information about a node.\n     *\n     * @param nodeId ID of the target node\n     * @param options Optional parameters supported by JS-API\n     * @returns Node information\n     */\n    getNode(nodeId: string, options: any = {}): Observable<Node> {\n        const defaults = {\n            include: ['path', 'properties', 'allowableOperations', 'permissions']\n        };\n        const queryOptions = Object.assign(defaults, options);\n\n        return from(this.nodesApi.getNode(nodeId, queryOptions)).pipe(\n            map(this.getEntryFromEntity),\n            catchError((err) => throwError(err))\n        );\n    }\n\n    /**\n     * Gets the items contained in a folder node.\n     *\n     * @param nodeId ID of the target node\n     * @param options Optional parameters supported by JS-API\n     * @returns List of child items from the folder\n     */\n    getNodeChildren(nodeId: string, options: any = {}): Observable<NodePaging> {\n        const defaults = {\n            maxItems: this.preferences.paginationSize,\n            skipCount: 0,\n            include: ['path', 'properties', 'allowableOperations', 'permissions']\n        };\n        const queryOptions = Object.assign(defaults, options);\n\n        return from(this.nodesApi.listNodeChildren(nodeId, queryOptions)).pipe(catchError((err) => throwError(err)));\n    }\n\n    /**\n     * Creates a new document node inside a folder.\n     *\n     * @param parentNodeId ID of the parent folder node\n     * @param nodeBody Data for the new node\n     * @param options Optional parameters supported by JS-API\n     * @returns Details of the new node\n     */\n    createNode(parentNodeId: string, nodeBody: any, options: any = {}): Observable<Node> {\n        return from(this.nodesApi.createNode(parentNodeId, nodeBody, options)).pipe(\n            map(this.getEntryFromEntity),\n            catchError((err) => throwError(err))\n        );\n    }\n\n    /**\n     * Creates a new folder node inside a parent folder.\n     *\n     * @param parentNodeId ID of the parent folder node\n     * @param nodeBody Data for the new folder\n     * @param options Optional parameters supported by JS-API\n     * @returns Details of the new folder\n     */\n    createFolder(parentNodeId: string, nodeBody: any, options: any = {}): Observable<Node> {\n        const body = Object.assign({ nodeType: 'cm:folder' }, nodeBody);\n        return this.createNode(parentNodeId, body, options);\n    }\n\n    /**\n     * Updates the information about a node.\n     *\n     * @param nodeId ID of the target node\n     * @param nodeBody New data for the node\n     * @param options Optional parameters supported by JS-API\n     * @returns Updated node information\n     */\n    updateNode(nodeId: string, nodeBody: any, options: any = {}): Observable<Node> {\n        const defaults = {\n            include: ['path', 'properties', 'allowableOperations', 'permissions', 'definition']\n        };\n        const queryOptions = Object.assign(defaults, options);\n\n        return from(this.nodesApi.updateNode(nodeId, nodeBody, queryOptions)).pipe(\n            map(this.getEntryFromEntity),\n            catchError((err) => throwError(err))\n        );\n    }\n\n    /**\n     * Moves a node to the trashcan.\n     *\n     * @param nodeId ID of the target node\n     * @param options Optional parameters supported by JS-API\n     * @returns Empty result that notifies when the deletion is complete\n     */\n    deleteNode(nodeId: string, options: any = {}): Observable<any> {\n        return from(this.nodesApi.deleteNode(nodeId, options)).pipe(catchError((err) => throwError(err)));\n    }\n\n    /**\n     * Restores a node previously moved to the trashcan.\n     *\n     * @param nodeId ID of the node to restore\n     * @returns Details of the restored node\n     */\n    restoreNode(nodeId: string): Observable<Node> {\n        return from(this.trashcanApi.restoreDeletedNode(nodeId)).pipe(\n            map(this.getEntryFromEntity),\n            catchError((err) => throwError(err))\n        );\n    }\n\n    /**\n     * Get the metadata and the nodeType for a nodeId cleaned by the prefix.\n     *\n     * @param nodeId ID of the target node\n     * @returns Node metadata\n     */\n    getNodeMetadata(nodeId: string): Observable<NodeMetadata> {\n        return from(this.nodesApi.getNode(nodeId)).pipe(map(this.cleanMetadataFromSemicolon));\n    }\n\n    /**\n     * Gets the list of holds assigned to the node.\n     *\n     * @param nodeId ID of the target node\n     * @param options Optional parameters supported by JS-API\n     * @param options.includeSource Also include **source** (in addition to **entries**) with folder information on **nodeId**\n     * @returns List of assigned holds Observable<Hold[]>\n     */\n    getNodeAssignedHolds(\n        nodeId: string,\n        options?: {\n            includeSource?: boolean;\n        } & NodesIncludeQuery &\n            ContentPagingQuery\n    ): Observable<NodeAssignedHold[]> {\n        const queryOptions = Object.assign({ where: `(assocType='rma:frozenContent')` }, options);\n\n        return from(this.nodesApi.listParents(nodeId, queryOptions)).pipe(\n            map(({ list }) =>\n                list.entries?.map(({ entry }) => ({\n                    id: entry.id,\n                    name: entry.name\n                }))\n            )\n        );\n    }\n\n    /**\n     * Gets content for the given node.\n     *\n     * @param nodeId ID of the target node\n     * @returns Content data\n     */\n    getNodeContent(nodeId: string): Observable<any> {\n        return from(this.nodesApi.getNodeContent(nodeId)).pipe(catchError((err) => throwError(err)));\n    }\n\n    /**\n     * Create a new Node inside `-root-` folder\n     *\n     * @param name Node name\n     * @param nodeType Node type\n     * @param properties Node body properties\n     * @param path Path to the node\n     * @returns The created node\n     */\n    createNodeInsideRoot(name: string, nodeType: string, properties: any, path: string): Observable<NodeEntry> {\n        const body = {\n            name,\n            nodeType,\n            properties,\n            relativePath: path\n        };\n        return from(this.nodesApi.createNode('-root-', body, {}));\n    }\n\n    /**\n     * Create a new Node from form metadata.\n     *\n     * @param nodeType Node type\n     * @param nameSpace Namespace for properties\n     * @param data Property data to store in the node under namespace\n     * @param path Path to the node\n     * @param name Node name\n     * @returns The created node\n     */\n    createNodeMetadata(nodeType: string, nameSpace: any, data: any, path: string, name?: string): Observable<NodeEntry> {\n        const properties = {};\n        for (const key in data) {\n            if (data[key]) {\n                properties[nameSpace + ':' + key] = data[key];\n            }\n        }\n\n        return this.createNodeInsideRoot(name || this.randomNodeName(), nodeType, properties, path);\n    }\n\n    /**\n     * Initiate a new request to calculate folder size.\n     *\n     * @param nodeId Node Id\n     * @returns The job id which can be used to track request status\n     */\n    initiateFolderSizeCalculation(nodeId: string): Observable<JobIdBodyEntry> {\n        return from(this.nodesApi.initiateFolderSizeCalculation(nodeId));\n    }\n\n    /**\n     * Gets the size of a folder.\n     *\n     * @param nodeId Node Id\n     * @param jobId Job Id\n     * @returns Folder details\n     */\n    getFolderSizeInfo(nodeId: string, jobId: string): Observable<SizeDetailsEntry> {\n        return from(this.nodesApi.getFolderSizeInfo(nodeId, jobId));\n    }\n\n    private randomNodeName(): string {\n        return `node_${Date.now()}`;\n    }\n\n    private cleanMetadataFromSemicolon(nodeEntry: NodeEntry): NodeMetadata {\n        const metadata = {};\n\n        if (nodeEntry?.entry.properties) {\n            for (const key in nodeEntry.entry.properties) {\n                if (key) {\n                    if (key.indexOf(':') !== -1) {\n                        metadata[key.split(':')[1]] = nodeEntry.entry.properties[key];\n                    } else {\n                        metadata[key] = nodeEntry.entry.properties[key];\n                    }\n                }\n            }\n        }\n\n        return new NodeMetadata(metadata, nodeEntry.entry.nodeType);\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 { NodeEntry, NodePaging } from '@alfresco/js-api';\n\nexport class DocumentLoaderNode {\n    currentNode: NodeEntry;\n    children: NodePaging;\n\n    constructor(currentNode: NodeEntry, children: NodePaging) {\n        this.currentNode = currentNode;\n        this.children = children;\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 '@alfresco/adf-core';\nimport { AlfrescoApiService } from '../../services/alfresco-api.service';\nimport {\n    DeletedNodesPaging,\n    SearchRequest,\n    SharedLinkPaging,\n    FavoritePaging,\n    SiteMemberPaging,\n    SiteRolePaging,\n    PeopleApi,\n    SitesApi,\n    SearchApi,\n    FavoritesApi,\n    SharedlinksApi,\n    TrashcanApi,\n    NodesApi,\n    SitePaging,\n    ResultSetPaging,\n    SEARCH_LANGUAGE\n} from '@alfresco/js-api';\nimport { Injectable } from '@angular/core';\nimport { Observable, from, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nconst CREATE_PERMISSION: string = 'create';\n\n@Injectable({ providedIn: 'root' })\nexport class CustomResourcesService {\n    private _peopleApi: PeopleApi;\n    get peopleApi(): PeopleApi {\n        this._peopleApi = this._peopleApi ?? new PeopleApi(this.apiService.getInstance());\n        return this._peopleApi;\n    }\n\n    private _sitesApi: SitesApi;\n    get sitesApi(): SitesApi {\n        this._sitesApi = this._sitesApi ?? new SitesApi(this.apiService.getInstance());\n        return this._sitesApi;\n    }\n\n    private _trashcanApi: TrashcanApi;\n    get trashcanApi(): TrashcanApi {\n        this._trashcanApi = this._trashcanApi ?? new TrashcanApi(this.apiService.getInstance());\n        return this._trashcanApi;\n    }\n\n    private _searchApi: SearchApi;\n    get searchApi(): SearchApi {\n        this._searchApi = this._searchApi ?? new SearchApi(this.apiService.getInstance());\n        return this._searchApi;\n    }\n\n    private _sharedLinksApi: SharedlinksApi;\n    get sharedLinksApi(): SharedlinksApi {\n        this._sharedLinksApi = this._sharedLinksApi ?? new SharedlinksApi(this.apiService.getInstance());\n        return this._sharedLinksApi;\n    }\n\n    private _favoritesApi: FavoritesApi;\n    get favoritesApi(): FavoritesApi {\n        this._favoritesApi = this._favoritesApi ?? new FavoritesApi(this.apiService.getInstance());\n        return this._favoritesApi;\n    }\n\n    private _nodesApi: NodesApi;\n    get nodesApi(): NodesApi {\n        this._nodesApi = this._nodesApi ?? new NodesApi(this.apiService.getInstance());\n        return this._nodesApi;\n    }\n\n    constructor(private apiService: AlfrescoApiService) {}\n\n    /**\n     * Gets files recently accessed by a user.\n     *\n     * @param personId ID of the user\n     * @param pagination Specifies how to paginate the results\n     * @param filters Specifies additional filters to apply (joined with **AND**)\n     * @returns List of nodes for the recently used files\n     */\n    getRecentFiles(personId: string, pagination: PaginationModel, filters?: string[]): Observable<ResultSetPaging> {\n        const defaultFilter = [\n            'TYPE:\"content\"',\n            '-PATH:\"//cm:wiki/*\"',\n            '-TYPE:\"app:filelink\"',\n            '-TYPE:\"cm:thumbnail\"',\n            '-TYPE:\"cm:failedThumbnail\"',\n            '-TYPE:\"cm:rating\"',\n            '-TYPE:\"dl:dataList\"',\n            '-TYPE:\"dl:todoList\"',\n            '-TYPE:\"dl:issue\"',\n            '-TYPE:\"dl:contact\"',\n            '-TYPE:\"dl:eventAgenda\"',\n            '-TYPE:\"dl:event\"',\n            '-TYPE:\"dl:task\"',\n            '-TYPE:\"dl:simpletask\"',\n            '-TYPE:\"dl:meetingAgenda\"',\n            '-TYPE:\"dl:location\"',\n            '-TYPE:\"fm:topic\"',\n            '-TYPE:\"fm:post\"',\n            '-TYPE:\"ia:calendarEvent\"',\n            '-TYPE:\"lnk:link\"'\n        ];\n\n        return new Observable((observer) => {\n            this.peopleApi.getPerson(personId).then(\n                (person) => {\n                    const username = person.entry.id;\n                    const filterQueries = [\n                        { query: `cm:modified:[NOW/DAY-30DAYS TO NOW/DAY+1DAY]` },\n                        { query: `cm:modifier:'${username}' OR cm:creator:'${username}'` },\n                        { query: defaultFilter.join(' AND ') }\n                    ];\n\n                    if (filters && filters.length > 0) {\n                        filterQueries.push({\n                            query: filters.join()\n                        });\n                    }\n\n                    const query: SearchRequest = {\n                        query: {\n                            query: '*',\n                            language: SEARCH_LANGUAGE.AFTS\n                        },\n                        filterQueries,\n                        include: ['path', 'properties', 'allowableOperations', 'aspectNames'],\n                        sort: [\n                            {\n                                type: 'FIELD',\n                                field: 'cm:modified',\n                                ascending: false\n                            }\n                        ],\n                        paging: {\n                            maxItems: pagination.maxItems,\n                            skipCount: pagination.skipCount\n                        }\n                    };\n\n                    return this.searchApi.search(query).then(\n                        (searchResult) => {\n                            observer.next(searchResult);\n                            observer.complete();\n                        },\n                        (err) => {\n                            observer.error(err);\n                            observer.complete();\n                        }\n                    );\n                },\n                (err) => {\n                    observer.error(err);\n                    observer.complete();\n                }\n            );\n        });\n    }\n\n    /**\n     * Gets favorite files for the current user.\n     *\n     * @param pagination Specifies how to paginate the results\n     * @param includeFields List of data field names to include in the results\n     * @param where A string to restrict the returned objects by using a predicate\n     * @returns List of favorite files\n     */\n    loadFavorites(pagination: PaginationModel, includeFields: string[] = [], where?: string): Observable<FavoritePaging> {\n        const includeFieldsRequest = this.getIncludesFields(includeFields);\n        const defaultPredicate = '(EXISTS(target/file) OR EXISTS(target/folder))';\n\n        const options = {\n            maxItems: pagination.maxItems,\n            skipCount: pagination.skipCount,\n            where: where ? `${where} AND ${defaultPredicate}` : defaultPredicate,\n            include: includeFieldsRequest\n        };\n\n        return new Observable((observer) => {\n            this.favoritesApi.listFavorites('-me-', options).then(\n                (result) => {\n                    const page: FavoritePaging = {\n                        list: {\n                            entries: result.list.entries.map(({ entry }: any) => {\n                                const target = entry.target.file || entry.target.folder;\n                                target.properties = {\n                                    ...(target.properties || {\n                                        'cm:title': entry.title || target.title,\n                                        'cm:description': entry.description || target.description\n                                    }),\n                                    ...(entry.properties || {})\n                                };\n                                target.aspectNames = entry?.aspectNames ?? [];\n                                target.allowableOperations = entry?.allowableOperations ?? [];\n\n                                return {\n                                    entry: target\n                                };\n                            }),\n                            pagination: result.list.pagination\n                        }\n                    };\n\n                    observer.next(page);\n                    observer.complete();\n                },\n                (err) => {\n                    observer.error(err);\n                    observer.complete();\n                }\n            );\n        });\n    }\n\n    /**\n     * Gets sites that the current user is a member of.\n     *\n     * @param pagination Specifies how to paginate the results\n     * @param where A string to restrict the returned objects by using a predicate\n     * @returns List of sites\n     */\n    loadMemberSites(pagination: PaginationModel, where?: string): Observable<SiteMemberPaging> {\n        const options = {\n            include: ['properties'],\n            maxItems: pagination.maxItems,\n            skipCount: pagination.skipCount,\n            where\n        };\n\n        return new Observable((observer) => {\n            this.sitesApi.listSiteMembershipsForPerson('-me-', options).then(\n                (result: SiteRolePaging) => {\n                    const page: SiteMemberPaging = new SiteMemberPaging({\n                        list: {\n                            entries: result.list.entries.map(({ entry: { site } }: any) => {\n                                site.allowableOperations = site.allowableOperations ? site.allowableOperations : [CREATE_PERMISSION];\n                                site.name = site.name || site.title;\n                                return {\n                                    entry: site\n                                };\n                            }),\n                            pagination: result.list.pagination\n                        }\n                    });\n\n                    observer.next(page);\n                    observer.complete();\n                },\n                (err) => {\n                    observer.error(err);\n                    observer.complete();\n                }\n            );\n        });\n    }\n\n    /**\n     * Gets all sites in the repository.\n     *\n     * @param pagination Specifies how to paginate the results\n     * @param where A string to restrict the returned objects by using a predicate\n     * @returns List of sites\n     */\n    loadSites(pagination: PaginationModel, where?: string): Observable<SitePaging> {\n        const options = {\n            include: ['properties', 'aspectNames'],\n            maxItems: pagination.maxItems,\n            skipCount: pagination.skipCount,\n            where\n        };\n\n        return new Observable((observer) => {\n            this.sitesApi.listSites(options).then(\n                (page) => {\n                    page.list.entries.map(({ entry }: any) => {\n                        entry.name = entry.name || entry.title;\n                        return { entry };\n                    });\n                    observer.next(page);\n                    observer.complete();\n                },\n                (err) => {\n                    observer.error(err);\n                    observer.complete();\n                }\n            );\n        });\n    }\n\n    /**\n     * Gets all items currently in the trash.\n     *\n     * @param pagination Specifies how to paginate the results\n     * @param includeFields List of data field names to include in the results\n     * @returns List of deleted items\n     */\n    loadTrashcan(pagination: PaginationModel, includeFields: string[] = []): Observable<DeletedNodesPaging> {\n        const includeFieldsRequest = this.getIncludesFields(includeFields);\n\n        const options = {\n            include: includeFieldsRequest,\n            maxItems: pagination.maxItems,\n            skipCount: pagination.skipCount\n        };\n\n        return from(this.trashcanApi.listDeletedNodes(options));\n    }\n\n    /**\n     * Gets shared links for the current user.\n     *\n     * @param pagination Specifies how to paginate the results\n     * @param includeFields List of data field names to include in the results\n     * @param where A string to restrict the returned objects by using a predicate\n     * @returns List of shared links\n     */\n    loadSharedLinks(pagination: PaginationModel, includeFields: string[] = [], where?: string): Observable<SharedLinkPaging> {\n        const includeFieldsRequest = this.getIncludesFields(includeFields);\n\n        const options = {\n            include: includeFieldsRequest,\n            maxItems: pagination.maxItems,\n            skipCount: pagination.skipCount,\n            where\n        };\n\n        return from(this.sharedLinksApi.listSharedLinks(options));\n    }\n\n    /**\n     * Is the folder ID one of the well-known aliases?\n     *\n     * @param folderId Folder ID name to check\n     * @returns True if the ID is a well-known name, false otherwise\n     */\n    isCustomSource(folderId: string): boolean {\n        let isCustomSources = false;\n        const sources = ['-trashcan-', '-sharedlinks-', '-sites-', '-mysites-', '-favorites-', '-recent-'];\n\n        if (sources.indexOf(folderId) > -1) {\n            isCustomSources = true;\n        }\n\n        return isCustomSources;\n    }\n\n    /**\n     * Is the folder ID a \"-my\", \"-root-\", or \"-shared-\" alias?\n     *\n     * @param folderId Folder ID name to check\n     * @returns True if the ID is one of the supported sources, false otherwise\n     */\n    isSupportedSource(folderId: string): boolean {\n        let isSupportedSources = false;\n        const sources = ['-my-', '-root-', '-shared-'];\n\n        if (sources.indexOf(folderId) > -1) {\n            isSupportedSources = true;\n        }\n\n        return isSupportedSources;\n    }\n\n    /**\n     * Gets a folder's contents.\n     *\n     * @param nodeId ID of the target folder node\n     * @param pagination Specifies how to paginate the results\n     * @param includeFields List of data field names to include in the results\n     * @param where  Filters the Node list using the *where* condition of the REST API (for example, isFolder=true). See the REST API documentation for more information.\n     * @returns List of items contained in the folder\n     */\n    loadFolderByNodeId(nodeId: string, pagination: PaginationModel, includeFields: string[] = [], where?: string): any {\n        if (nodeId === '-trashcan-') {\n            return this.loadTrashcan(pagination, includeFields);\n        } else if (nodeId === '-sharedlinks-') {\n            return this.loadSharedLinks(pagination, includeFields, where);\n        } else if (nodeId === '-sites-') {\n            return this.loadSites(pagination, where);\n        } else if (nodeId === '-mysites-') {\n            return this.loadMemberSites(pagination, where);\n        } else if (nodeId === '-favorites-') {\n            return this.loadFavorites(pagination, includeFields, where);\n        } else if (nodeId === '-recent-') {\n            return this.getRecentFiles('-me-', pagination);\n        }\n    }\n\n    // TODO: remove it from here\n\n    /**\n     * Gets the contents of one of the well-known aliases in the form of node ID strings.\n     *\n     * @param nodeId ID of the target folder node\n     * @param pagination Specifies how to paginate the results\n     * @returns List of node IDs\n     */\n    getCorrespondingNodeIds(nodeId: string, pagination: PaginationModel = {}): Observable<string[]> {\n        if (this.isCustomSource(nodeId)) {\n            return this.loadFolderByNodeId(nodeId, pagination).pipe(\n                map((result: any): string[] => result.list.entries.map((node: any): string => this.getIdFromEntry(node, nodeId)))\n            );\n        } else if (nodeId) {\n            // cases when nodeId is '-my-', '-root-' or '-shared-'\n            return from(this.nodesApi.getNode(nodeId).then((node) => [node.entry.id]));\n        }\n\n        return of([]);\n    }\n\n    /**\n     * Chooses the correct ID for a node entry.\n     *\n     * @param node Node object\n     * @param nodeId ID of the node object\n     * @returns ID value\n     */\n    getIdFromEntry(node: any, nodeId: string): string {\n        if (nodeId === '-sharedlinks-') {\n            return node.entry.nodeId;\n        } else if (nodeId === '-sites-' || nodeId === '-mysites-') {\n            return node.entry.guid;\n        } else if (nodeId === '-favorites-') {\n            return node.entry.targetGuid;\n        } else {\n            return node.entry.id;\n        }\n    }\n\n    /**\n     * Does the well-known alias have a corresponding node ID?\n     *\n     * @param nodeId Node to check\n     * @returns True if the alias has a corresponding node ID, false otherwise\n     */\n    hasCorrespondingNodeIds(nodeId: string): boolean {\n        return this.isCustomSource(nodeId) || this.isSupportedSource(nodeId);\n    }\n\n    private getIncludesFields(includeFields: string[]): string[] {\n        return ['path', 'properties', 'allowableOperations', 'permissions', 'aspectNames', ...includeFields].filter(\n            (element, index, array) => index === array.indexOf(element)\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 '@alfresco/adf-core';\nimport { NodesApiService } from '../../common/services/nodes-api.service';\nimport { inject, Injectable } from '@angular/core';\nimport { Node, NodeEntry, NodePaging, NodesApi } from '@alfresco/js-api';\nimport { DocumentLoaderNode } from '../models/document-folder.model';\nimport { Observable, from, forkJoin, Subject } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { DocumentListLoader } from '../interfaces/document-list-loader.interface';\nimport { CustomResourcesService } from './custom-resources.service';\nimport { AlfrescoApiService } from '../../services/alfresco-api.service';\n\nconst ROOT_ID = '-root-';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class DocumentListService implements DocumentListLoader {\n    private nodesApiService = inject(NodesApiService);\n    private apiService = inject(AlfrescoApiService);\n    private customResourcesService = inject(CustomResourcesService);\n\n    private _nodesApi: NodesApi;\n    get nodes(): NodesApi {\n        this._nodesApi = this._nodesApi ?? new NodesApi(this.apiService.getInstance());\n        return this._nodesApi;\n    }\n\n    private _reload = new Subject<void>();\n    private _resetSelection = new Subject<void>();\n\n    /** Gets an observable that emits when the document list should be reloaded. */\n    reload$ = this._reload.asObservable();\n\n    /** Gets an observable that emits when the selection should be reset. */\n    resetSelection$ = this._resetSelection.asObservable();\n\n    /** Reloads the document list. */\n    reload() {\n        this._reload.next();\n    }\n\n    /** Resets the selection. */\n    resetSelection() {\n        this._resetSelection.next();\n    }\n\n    /**\n     * Deletes a node.\n     *\n     * @param nodeId ID of the node to delete\n     * @returns Empty response when the operation is complete\n     */\n    deleteNode(nodeId: string): Observable<any> {\n        return from(this.nodes.deleteNode(nodeId));\n    }\n\n    /**\n     * Copy a node to destination node\n     *\n     * @param nodeId The id of the node to be copied\n     * @param targetParentId The id of the folder where the node will be copied\n     * @returns NodeEntry for the copied node\n     */\n    copyNode(nodeId: string, targetParentId: string): Observable<NodeEntry> {\n        return from(this.nodes.copyNode(nodeId, { targetParentId }));\n    }\n\n    /**\n     * Moves a node to destination node.\n     *\n     * @param nodeId The id of the node to be moved\n     * @param targetParentId The id of the folder where the node will be moved\n     * @returns NodeEntry for the moved node\n     */\n    moveNode(nodeId: string, targetParentId: string): Observable<NodeEntry> {\n        return from(this.nodes.moveNode(nodeId, { targetParentId }));\n    }\n\n    /**\n     * Gets the folder node with the specified relative name path below the root node.\n     *\n     * @param folder Path to folder.\n     * @param opts Options.\n     * @param includeFields Extra information to include (available options are \"aspectNames\", \"isLink\" and \"association\")\n     * @returns Details of the folder\n     */\n    getFolder(folder: string, opts?: any, includeFields: string[] = []): Observable<NodePaging> {\n        let rootNodeId = ROOT_ID;\n        if (opts?.rootFolderId) {\n            rootNodeId = opts.rootFolderId;\n        }\n\n        const includeFieldsRequest = ['path', 'properties', 'allowableOperations', 'permissions', 'aspectNames', ...includeFields].filter(\n            (element, index, array) => index === array.indexOf(element)\n        );\n\n        const params: any = {\n            includeSource: true,\n            include: includeFieldsRequest\n        };\n\n        if (folder) {\n            params.relativePath = folder;\n        }\n\n        if (opts) {\n            if (opts.maxItems) {\n                params.maxItems = opts.maxItems;\n            }\n            if (opts.skipCount) {\n                params.skipCount = opts.skipCount;\n            }\n            if (opts.where) {\n                params.where = opts.where;\n            }\n            if (opts.orderBy) {\n                params.orderBy = opts.orderBy;\n            }\n        }\n\n        return from(this.nodes.listNodeChildren(rootNodeId, params));\n    }\n\n    /**\n     * Gets a node via its node ID.\n     *\n     * @param nodeId ID of the target node\n     * @param includeFields Extra information to include (available options are \"aspectNames\", \"isLink\" and \"association\")\n     * @returns Details of the folder\n     */\n    getNode(nodeId: string, includeFields: string[] = []): Observable<Node> {\n        const includeFieldsRequest = ['path', 'properties', 'allowableOperations', 'permissions', 'definition', ...includeFields].filter(\n            (element, index, array) => index === array.indexOf(element)\n        );\n\n        const opts: any = {\n            includeSource: true,\n            include: includeFieldsRequest\n        };\n\n        return this.nodesApiService.getNode(nodeId, opts);\n    }\n\n    /**\n     * Gets a folder node via its node ID.\n     *\n     * @param nodeId ID of the folder node\n     * @param includeFields Extra information to include (available options are \"aspectNames\", \"isLink\" and \"association\")\n     * @returns Details of the folder\n     */\n    getFolderNode(nodeId: string, includeFields: string[] = []): Observable<NodeEntry> {\n        const includeFieldsRequest = ['path', 'properties', 'allowableOperations', 'permissions', 'aspectNames', ...includeFields].filter(\n            (element, index, array) => index === array.indexOf(element)\n        );\n\n        const opts: any = {\n            includeSource: true,\n            include: includeFieldsRequest\n        };\n\n        return from(this.nodes.getNode(nodeId, opts));\n    }\n\n    isCustomSourceService(nodeId: string): boolean {\n        return this.customResourcesService.isCustomSource(nodeId);\n    }\n\n    /**\n     * Load a folder by Node Id.\n     *\n     * @param nodeId ID of the folder node\n     * @param pagination pagination model\n     * @param includeFields List of data field names to include in the results\n     * @param where  Optionally filter the list\n     * @param orderBy order by node property\n     * @returns Details of the folder\n     */\n    loadFolderByNodeId(\n        nodeId: string,\n        pagination: PaginationModel,\n        includeFields: string[],\n        where?: string,\n        orderBy?: string[]\n    ): Observable<DocumentLoaderNode> {\n        if (this.customResourcesService.isCustomSource(nodeId)) {\n            return this.customResourcesService\n                .loadFolderByNodeId(nodeId, pagination, includeFields, where)\n                .pipe(map((result: any) => new DocumentLoaderNode(null, result)));\n        } else {\n            return this.retrieveDocumentNode(nodeId, pagination, includeFields, where, orderBy);\n        }\n    }\n\n    private retrieveDocumentNode(\n        nodeId: string,\n        pagination: PaginationModel,\n        includeFields: string[],\n        where?: string,\n        orderBy?: string[]\n    ): Observable<DocumentLoaderNode> {\n        return forkJoin([\n            this.getFolderNode(nodeId, includeFields),\n            this.getFolder(\n                null,\n                {\n                    maxItems: pagination.maxItems,\n                    skipCount: pagination.skipCount,\n                    orderBy,\n                    rootFolderId: nodeId,\n                    where\n                },\n                includeFields\n            )\n        ]).pipe(map((results) => new DocumentLoaderNode(results[0], results[1])));\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 { ChildAssociationBody, AssociationBody } from '@alfresco/js-api';\n\nexport interface FileUploadProgress {\n    loaded: number;\n    total: number;\n    percent: number;\n}\n\nexport class FileUploadOptions {\n    /**\n     * Add a version comment which will appear in version history.\n     * Setting this parameter also enables versioning of this node, if it is not already versioned.\n     */\n    comment?: string;\n    /**\n     * Overwrite the content of the node with a new version.\n     */\n    newVersion?: boolean;\n    /**\n     * If true, then created node will be version 1.0 MAJOR. If false, then created node will be version 0.1 MINOR.\n     */\n    majorVersion?: boolean;\n    /**\n     * Root folder id.\n     */\n    parentId?: string;\n    /**\n     * Defines the **relativePath** value.\n     * The relativePath specifies the folder structure to create relative to the node nodeId.\n     * Folders in the relativePath that do not exist are created before the node is created.\n     */\n    path?: string;\n    /**\n     * You can use the nodeType field to create a specific type. The default is **cm:content**.\n     */\n    nodeType?: string;\n    /**\n     * You can set multi-value properties when you create a new node which supports properties of type multiple.\n     */\n    properties?: any;\n    /**\n     * If the content model allows then it is also possible to create primary children with a different assoc type.\n     */\n    association?: any;\n    /**\n     * You can optionally specify an array of **secondaryChildren** to create one or more secondary child associations,\n     * such that the newly created node acts as a parent node.\n     */\n    secondaryChildren?: ChildAssociationBody[];\n    /**\n     * You can optionally specify an array of **targets** to create one or more peer associations such that the newly created node acts as a source node.\n     */\n    targets?: AssociationBody[];\n    /**\n     * If true, then created node will be versioned. If false, then created node will be unversioned and auto-versioning disabled.\n     */\n    versioningEnabled?: boolean;\n}\n\n// eslint-disable-next-line no-shadow\nexport enum FileUploadStatus {\n    Pending = 0,\n    Complete = 1,\n    Starting = 2,\n    Progress = 3,\n    Cancelled = 4,\n    Aborted = 5,\n    Error = 6,\n    Deleted = 7\n}\n\nexport class FileModel {\n    readonly name: string;\n    readonly size: number;\n    readonly file: File;\n\n    id: string;\n    status: FileUploadStatus = FileUploadStatus.Pending;\n    errorCode: number;\n    progress: FileUploadProgress;\n    options: FileUploadOptions;\n    data: any;\n\n    constructor(file: File, options?: FileUploadOptions, id?: string) {\n        this.file = file;\n        this.id = id;\n        this.name = file.name;\n        this.size = file.size;\n        this.data = null;\n        this.errorCode = null;\n\n        this.progress = {\n            loaded: 0,\n            total: 0,\n            percent: 0\n        };\n\n        this.options = Object.assign(\n            {},\n            {\n                newVersion: false\n            },\n            options\n        );\n    }\n\n    get extension(): string {\n        return this.name.slice((Math.max(0, this.name.lastIndexOf('.')) || Infinity) + 1);\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 { FileModel, FileUploadStatus } from '../models/file.model';\n\nexport class FileUploadEvent {\n    constructor(\n        public readonly file: FileModel,\n        public readonly status: FileUploadStatus = FileUploadStatus.Pending,\n        public readonly error: any = null\n    ) {}\n}\n\nexport class FileUploadCompleteEvent extends FileUploadEvent {\n    constructor(file: FileModel, public totalComplete: number = 0, public data?: any, public totalAborted: number = 0) {\n        super(file, FileUploadStatus.Complete);\n    }\n}\n\nexport class FileUploadDeleteEvent extends FileUploadEvent {\n    constructor(file: FileModel, public totalComplete: number = 0) {\n        super(file, FileUploadStatus.Deleted);\n    }\n}\n\nexport class FileUploadErrorEvent extends FileUploadEvent {\n    constructor(file: FileModel, public error: any, public totalError: number = 0) {\n        super(file, FileUploadStatus.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 { Injectable } from '@angular/core';\nimport { from, Observable, throwError, Subject } from 'rxjs';\nimport { catchError, map, switchMap, filter, take } from 'rxjs/operators';\nimport { RepositoryInfo, SystemPropertiesRepresentation, DiscoveryApi, AboutApi, SystemPropertiesApi } from '@alfresco/js-api';\n\nimport { AlfrescoApiService } from '../../services/alfresco-api.service';\nimport { BpmProductVersionModel, AuthenticationService } from '@alfresco/adf-core';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class DiscoveryApiService {\n    private _discoveryApi: DiscoveryApi;\n    get discoveryApi(): DiscoveryApi {\n        this._discoveryApi = this._discoveryApi ?? new DiscoveryApi(this.alfrescoApiService.getInstance());\n        return this._discoveryApi;\n    }\n\n    /**\n     * Gets product information for Content Services.\n     */\n    ecmProductInfo$ = new Subject<RepositoryInfo>();\n\n    constructor(private authenticationService: AuthenticationService, private alfrescoApiService: AlfrescoApiService) {\n        this.authenticationService.onLogin.subscribe(() => {\n            this.alfrescoApiService.alfrescoApiInitialized\n                .pipe(\n                    filter(() => this.authenticationService.isEcmLoggedIn()),\n                    take(1),\n                    switchMap(() => this.getEcmProductInfo())\n                )\n                .subscribe((info) => this.ecmProductInfo$.next(info));\n        });\n    }\n\n    /**\n     * Gets product information for Content Services.\n     *\n     * @returns ProductVersionModel containing product details\n     */\n    getEcmProductInfo(): Observable<RepositoryInfo> {\n        return from(this.discoveryApi.getRepositoryInformation()).pipe(\n            map((res) => res.entry.repository),\n            catchError((err) => throwError(err))\n        );\n    }\n\n    /**\n     * Gets product information for Process Services.\n     *\n     * @returns ProductVersionModel containing product details\n     */\n    getBpmProductInfo(): Observable<BpmProductVersionModel> {\n        const aboutApi = new AboutApi(this.alfrescoApiService.getInstance());\n\n        return from(aboutApi.getAppVersion()).pipe(\n            map((res) => new BpmProductVersionModel(res)),\n            catchError((err) => throwError(err))\n        );\n    }\n\n    getBPMSystemProperties(): Observable<SystemPropertiesRepresentation> {\n        const systemPropertiesApi = new SystemPropertiesApi(this.alfrescoApiService.getInstance());\n\n        return from(systemPropertiesApi.getProperties()).pipe(\n            map((res: any) => {\n                if ('string' === typeof res) {\n                    throw new Error('Not valid response');\n                }\n                return res;\n            }),\n            catchError((err) => throwError(err.error))\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 { EventEmitter, inject, Injectable } from '@angular/core';\nimport { Minimatch } from 'minimatch';\nimport { Subject } from 'rxjs';\nimport { FileUploadCompleteEvent, FileUploadDeleteEvent, FileUploadErrorEvent, FileUploadEvent } from '../events/file.event';\nimport { FileModel, FileUploadProgress, FileUploadStatus } from '../models/file.model';\nimport { AppConfigService } from '@alfresco/adf-core';\nimport { filter } from 'rxjs/operators';\nimport { DiscoveryApiService } from '../../common/services/discovery-api.service';\nimport { NodeBodyCreate, NodesApi, UploadApi, VersionsApi } from '@alfresco/js-api';\nimport { AlfrescoApiService } from '../../services/alfresco-api.service';\n\nconst MIN_CANCELLABLE_FILE_SIZE = 1000000;\nconst MAX_CANCELLABLE_FILE_PERCENTAGE = 50;\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class UploadService {\n    queue: FileModel[] = [];\n    queueChanged: Subject<FileModel[]> = new Subject<FileModel[]>();\n    fileUpload: Subject<FileUploadEvent> = new Subject<FileUploadEvent>();\n    fileUploadStarting: Subject<FileUploadEvent> = new Subject<FileUploadEvent>();\n    fileUploadCancelled: Subject<FileUploadEvent> = new Subject<FileUploadEvent>();\n    fileUploadProgress: Subject<FileUploadEvent> = new Subject<FileUploadEvent>();\n    fileUploadAborted: Subject<FileUploadEvent> = new Subject<FileUploadEvent>();\n    fileUploadError: Subject<FileUploadErrorEvent> = new Subject<FileUploadErrorEvent>();\n    fileUploadComplete: Subject<FileUploadCompleteEvent> = new Subject<FileUploadCompleteEvent>();\n    fileUploadDeleted: Subject<FileUploadDeleteEvent> = new Subject<FileUploadDeleteEvent>();\n    fileDeleted: Subject<string> = new Subject<string>();\n\n    private cache: { [key: string]: any } = {};\n    private totalComplete: number = 0;\n    private totalAborted: number = 0;\n    private totalError: number = 0;\n    private excludedFileList: string[] = [];\n    private excludedFoldersList: string[] = [];\n    private matchingOptions: any = null;\n    private folderMatchingOptions: any = null;\n    private abortedFile: string;\n    private isThumbnailGenerationEnabled: boolean;\n\n    private _uploadApi: UploadApi;\n    get uploadApi(): UploadApi {\n        this._uploadApi = this._uploadApi ?? new UploadApi(this.apiService.getInstance());\n        return this._uploadApi;\n    }\n\n    private _nodesApi: NodesApi;\n    get nodesApi(): NodesApi {\n        this._nodesApi = this._nodesApi ?? new NodesApi(this.apiService.getInstance());\n        return this._nodesApi;\n    }\n\n    private _versionsApi: VersionsApi;\n    get versionsApi(): VersionsApi {\n        this._versionsApi = this._versionsApi ?? new VersionsApi(this.apiService.getInstance());\n        return this._versionsApi;\n    }\n\n    protected apiService = inject(AlfrescoApiService);\n    protected appConfigService = inject(AppConfigService);\n    protected discoveryApiService = inject(DiscoveryApiService);\n\n    constructor() {\n        this.discoveryApiService.ecmProductInfo$.pipe(filter((info) => !!info)).subscribe(({ status }) => {\n            this.isThumbnailGenerationEnabled = status.isThumbnailGenerationEnabled;\n        });\n    }\n\n    clearCache() {\n        this.cache = {};\n    }\n\n    /**\n     * Returns the number of concurrent threads for uploading.\n     *\n     * @returns Number of concurrent threads (default 1)\n     */\n    getThreadsCount(): number {\n        return this.appConfigService.get<number>('upload.threads', 1);\n    }\n\n    /**\n     * Checks whether the service still has files uploading or awaiting upload.\n     *\n     * @returns True if files in the queue are still uploading, false otherwise\n     */\n    isUploading(): boolean {\n        const finishedFileStates = [\n            FileUploadStatus.Complete,\n            FileUploadStatus.Cancelled,\n            FileUploadStatus.Aborted,\n            FileUploadStatus.Error,\n            FileUploadStatus.Deleted\n        ];\n        return this.queue.reduce(\n            (stillUploading: boolean, currentFile: FileModel) => stillUploading || finishedFileStates.indexOf(currentFile.status) === -1,\n            false\n        );\n    }\n\n    /**\n     * Gets the file Queue\n     *\n     * @returns Array of files that form the queue\n     */\n    getQueue(): FileModel[] {\n        return this.queue;\n    }\n\n    /**\n     * Adds files to the uploading queue to be uploaded\n     *\n     * @param files One or more separate parameters or an array of files to queue\n     * @returns Array of files that were not blocked from upload by the ignore list\n     */\n    addToQueue(...files: FileModel[]): FileModel[] {\n        const allowedFiles = files.filter((currentFile) => this.filterElement(currentFile));\n        this.queue = this.queue.concat(allowedFiles);\n        this.queueChanged.next(this.queue);\n        return allowedFiles;\n    }\n\n    /**\n     * Finds all the files in the queue that are not yet uploaded and uploads them into the directory folder.\n     *\n     * @param successEmitter Emitter to invoke on file success status change\n     * @param errorEmitter Emitter to invoke on file error status change\n     */\n    uploadFilesInTheQueue(successEmitter?: EventEmitter<any>, errorEmitter?: EventEmitter<any>): void {\n        const files = this.getFilesToUpload();\n\n        if (files && files.length > 0) {\n            for (const file of files) {\n                this.onUploadStarting(file);\n\n                const promise = this.beginUpload(file, successEmitter, errorEmitter);\n                this.cache[file.name] = promise;\n\n                const next = () => {\n                    setTimeout(() => this.uploadFilesInTheQueue(successEmitter, errorEmitter), 100);\n                };\n\n                promise.next = next;\n\n                promise.then(\n                    () => next(),\n                    () => next()\n                );\n            }\n        }\n    }\n\n    /**\n     * Cancels uploading of files.\n     * If the file is smaller than 1 MB the file will be uploaded and then the node deleted\n     * to prevent having files that were aborted but still uploaded.\n     *\n     * @param files One or more separate parameters or an array of files specifying uploads to cancel\n     */\n    cancelUpload(...files: FileModel[]) {\n        files.forEach((file) => {\n            const promise = this.cache[file.name];\n            if (promise) {\n                if (this.isSaveToAbortFile(file)) {\n                    promise.abort();\n                } else {\n                    this.abortedFile = file.name;\n                }\n                delete this.cache[file.name];\n                promise.next();\n            } else {\n                const performAction = this.getAction(file);\n\n                if (performAction) {\n                    performAction();\n                }\n            }\n        });\n    }\n\n    /** Clears the upload queue */\n    clearQueue() {\n        this.queue = [];\n        this.totalComplete = 0;\n        this.totalAborted = 0;\n        this.totalError = 0;\n    }\n\n    /**\n     * Gets an upload promise for a file.\n     *\n     * @param file The target file\n     * @returns Promise that is resolved if the upload is successful or error otherwise\n     */\n    getUploadPromise(file: FileModel): any {\n        const opts: any = {\n            include: ['allowableOperations']\n        };\n\n        if (this.isThumbnailGenerationEnabled) {\n            opts.renditions = 'doclib';\n        }\n\n        if (file.options?.versioningEnabled !== undefined) {\n            opts.versioningEnabled = file.options.versioningEnabled;\n        }\n\n        if (file.options.newVersion === true) {\n            opts.overwrite = true;\n            opts.majorVersion = file.options.majorVersion;\n            opts.comment = file.options.comment;\n            opts.name = file.name;\n        } else {\n            opts.autoRename = true;\n        }\n\n        if (file.options.nodeType) {\n            opts.nodeType = file.options.nodeType;\n        }\n\n        if (file.id) {\n            return this.nodesApi.updateNodeContent(file.id, file.file as any, opts);\n        } else {\n            const nodeBody: NodeBodyCreate = { ...file.options, name: file.name, nodeType: file.options.nodeType };\n            delete nodeBody['versioningEnabled'];\n\n            return this.uploadApi.uploadFile(file.file, file.options.path, file.options.parentId, nodeBody, opts);\n        }\n    }\n\n    private getFilesToUpload(): FileModel[] {\n        const cached = Object.keys(this.cache);\n        const threadsCount = this.getThreadsCount();\n\n        if (cached.length >= threadsCount) {\n            return [];\n        }\n\n        const files = this.queue\n            .filter((toUpload) => !cached.includes(toUpload.name) && toUpload.status === FileUploadStatus.Pending)\n            .slice(0, threadsCount);\n\n        return files;\n    }\n\n    private beginUpload(file: FileModel, successEmitter?: EventEmitter<any>, errorEmitter?: EventEmitter<any>): any {\n        const promise = this.getUploadPromise(file);\n        promise\n            .on('progress', (progress: FileUploadProgress) => {\n                this.onUploadProgress(file, progress);\n            })\n            .on('abort', () => {\n                this.onUploadAborted(file);\n                if (successEmitter) {\n                    successEmitter.emit({ value: 'File aborted' });\n                }\n            })\n            .on('error', (err) => {\n                this.onUploadError(file, err);\n                if (errorEmitter) {\n                    errorEmitter.emit({ value: 'Error file uploaded' });\n                }\n            })\n            .on('success', (data) => {\n                if (this.abortedFile === file.name) {\n                    this.onUploadAborted(file);\n                    if (file.id === undefined) {\n                        this.deleteAbortedNode(data.entry.id);\n                    } else {\n                        this.deleteAbortedNodeVersion(data.entry.id, data.entry.properties['cm:versionLabel']);\n                    }\n                    if (successEmitter) {\n                        successEmitter.emit({ value: 'File deleted' });\n                    }\n                } else {\n                    this.onUploadComplete(file, data);\n                    if (successEmitter) {\n                        successEmitter.emit({ value: data });\n                    }\n                }\n            })\n            .catch(() => {});\n\n        return promise;\n    }\n\n    private onUploadStarting(file: FileModel): void {\n        if (file) {\n            file.status = FileUploadStatus.Starting;\n            const event = new FileUploadEvent(file, FileUploadStatus.Starting);\n            this.fileUpload.next(event);\n            this.fileUploadStarting.next(event);\n        }\n    }\n\n    private onUploadProgress(file: FileModel, progress: FileUploadProgress): void {\n        if (file) {\n            file.progress = progress;\n            file.status = FileUploadStatus.Progress;\n\n            const event = new FileUploadEvent(file, FileUploadStatus.Progress);\n            this.fileUpload.next(event);\n            this.fileUploadProgress.next(event);\n        }\n    }\n\n    private onUploadError(file: FileModel, error: { status?: number }): void {\n        if (file) {\n            file.errorCode = error?.status;\n            file.status = FileUploadStatus.Error;\n            this.totalError++;\n\n            const promise = this.cache[file.name];\n            if (promise) {\n                delete this.cache[file.name];\n            }\n\n            const event = new FileUploadErrorEvent(file, error, this.totalError);\n            this.fileUpload.next(event);\n            this.fileUploadError.next(event);\n        }\n    }\n\n    private onUploadComplete(file: FileModel, data: any): void {\n        if (file) {\n            file.status = FileUploadStatus.Complete;\n            file.data = data;\n            this.totalComplete++;\n            const promise = this.cache[file.name];\n            if (promise) {\n                delete this.cache[file.name];\n            }\n\n            const event = new FileUploadCompleteEvent(file, this.totalComplete, data, this.totalAborted);\n            this.fileUpload.next(event);\n            this.fileUploadComplete.next(event);\n        }\n    }\n\n    private onUploadAborted(file: FileModel): void {\n        if (file) {\n            file.status = FileUploadStatus.Aborted;\n            this.totalAborted++;\n\n            const event = new FileUploadEvent(file, FileUploadStatus.Aborted);\n            this.fileUpload.next(event);\n            this.fileUploadAborted.next(event);\n        }\n    }\n\n    private onUploadCancelled(file: FileModel): void {\n        if (file) {\n            file.status = FileUploadStatus.Cancelled;\n\n            const event = new FileUploadEvent(file, FileUploadStatus.Cancelled);\n            this.fileUpload.next(event);\n            this.fileUploadCancelled.next(event);\n        }\n    }\n\n    private onUploadDeleted(file: FileModel): void {\n        if (file) {\n            file.status = FileUploadStatus.Deleted;\n            this.totalComplete--;\n\n            const event = new FileUploadDeleteEvent(file, this.totalComplete);\n            this.fileUpload.next(event);\n            this.fileUploadDeleted.next(event);\n        }\n    }\n\n    private getAction(file: FileModel) {\n        const actions = {\n            [FileUploadStatus.Pending]: () => this.onUploadCancelled(file),\n            [FileUploadStatus.Deleted]: () => this.onUploadDeleted(file),\n            [FileUploadStatus.Error]: () => this.onUploadError(file, null)\n        };\n\n        return actions[file.status];\n    }\n\n    private deleteAbortedNode(nodeId: string) {\n        this.nodesApi.deleteNode(nodeId, { permanent: true }).then(() => (this.abortedFile = undefined));\n    }\n\n    private deleteAbortedNodeVersion(nodeId: string, versionId: string) {\n        this.versionsApi.deleteVersion(nodeId, versionId).then(() => (this.abortedFile = undefined));\n    }\n\n    private isSaveToAbortFile(file: FileModel): boolean {\n        return file.size > MIN_CANCELLABLE_FILE_SIZE && file.progress.percent < MAX_CANCELLABLE_FILE_PERCENTAGE;\n    }\n\n    private filterElement(file: FileModel) {\n        this.excludedFileList = this.appConfigService.get<string[]>('files.excluded');\n        this.excludedFoldersList = this.appConfigService.get<string[]>('folders.excluded');\n        let isAllowed = true;\n\n        if (this.excludedFileList) {\n            this.matchingOptions = this.appConfigService.get('files.match-options');\n            isAllowed = this.isFileNameAllowed(file);\n        }\n\n        if (isAllowed && this.excludedFoldersList) {\n            this.folderMatchingOptions = this.appConfigService.get('folders.match-options');\n            isAllowed = this.isParentFolderAllowed(file);\n        }\n        return isAllowed;\n    }\n\n    private isParentFolderAllowed(file: FileModel): boolean {\n        let isAllowed: boolean = true;\n        const currentFile: any = file.file;\n        const fileRelativePath = currentFile.webkitRelativePath ? currentFile.webkitRelativePath : file.options.path;\n        if (currentFile && fileRelativePath) {\n            isAllowed =\n                this.excludedFoldersList.filter((folderToExclude) =>\n                    fileRelativePath.split('/').some((pathElement) => {\n                        const minimatch = new Minimatch(folderToExclude, this.folderMatchingOptions);\n                        return minimatch.match(pathElement);\n                    })\n                ).length === 0;\n        }\n        return isAllowed;\n    }\n\n    private isFileNameAllowed(file: FileModel): boolean {\n        return (\n            this.excludedFileList.filter((pattern) => {\n                const minimatch = new Minimatch(pattern, this.matchingOptions);\n                return minimatch.match(file.name);\n            }).length === 0\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 no-shadow */\n/* eslint-disable @typescript-eslint/naming-convention */\n\nexport enum NodeAction {\n    ATTACH = 'ATTACH',\n    CHOOSE = 'CHOOSE',\n    COPY = 'COPY',\n    MOVE = 'MOVE',\n    NEXT = 'NEXT'\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY 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 { FavoritesApi, NodePaging, FavoritePaging } from '@alfresco/js-api';\nimport { Observable, from, of } from 'rxjs';\nimport { AlfrescoApiService } from '../../services/alfresco-api.service';\nimport { UserPreferencesService } from '@alfresco/adf-core';\nimport { catchError } from 'rxjs/operators';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class FavoritesApiService {\n    private _favoritesApi: FavoritesApi;\n    get favoritesApi(): FavoritesApi {\n        this._favoritesApi = this._favoritesApi ?? new FavoritesApi(this.apiService.getInstance());\n        return this._favoritesApi;\n    }\n\n    static remapEntry({ entry }: any): any {\n        entry.properties = {\n            'cm:title': entry.title,\n            'cm:description': entry.description\n        };\n\n        return { entry };\n    }\n\n    constructor(private apiService: AlfrescoApiService, private preferences: UserPreferencesService) {}\n\n    remapFavoritesData(data: FavoritePaging = {}): NodePaging {\n        const pagination = data?.list?.pagination || {};\n        const entries: any[] = this.remapFavoriteEntries(data?.list?.entries || []);\n\n        return {\n            list: { entries, pagination }\n        };\n    }\n\n    remapFavoriteEntries(entries: any[]) {\n        return entries\n            .map(({ entry: { target } }: any) => ({\n                entry: target.file || target.folder\n            }))\n            .filter(({ entry }) => !!entry)\n            .map(FavoritesApiService.remapEntry);\n    }\n\n    /**\n     * Gets the favorites for a user.\n     *\n     * @param personId ID of the user\n     * @param options Options supported by JS-API\n     * @returns List of favorites\n     */\n    getFavorites(personId: string, options?: any): Observable<NodePaging> {\n        const defaultOptions = {\n            maxItems: this.preferences.paginationSize,\n            skipCount: 0,\n            where: '(EXISTS(target/file) OR EXISTS(target/folder))',\n            include: ['properties', 'allowableOperations']\n        };\n        const queryOptions = Object.assign(defaultOptions, options);\n        const promise = this.favoritesApi.listFavorites(personId, queryOptions).then(this.remapFavoritesData);\n\n        return from(promise).pipe(catchError((err) => of(err)));\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 { UpdateNotification, CardViewBaseItemModel, CardViewUpdateService } from '@alfresco/adf-core';\nimport { Node } from '@alfresco/js-api';\nimport { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { BaseCardViewContentUpdate } from '../../interfaces/base-card-view-content-update.interface';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class CardViewContentUpdateService implements BaseCardViewContentUpdate {\n    itemUpdated$ = new Subject<UpdateNotification>();\n    updatedAspect$ = new Subject<Node>();\n\n    constructor(private cardViewUpdateService: CardViewUpdateService) {\n        this.linkVariables();\n    }\n\n    update(property: CardViewBaseItemModel, newValue: any) {\n        this.cardViewUpdateService.update(property, newValue);\n    }\n\n    updateElement(notification: CardViewBaseItemModel) {\n        this.cardViewUpdateService.updateElement(notification);\n    }\n\n    updateNodeAspect(node: Node) {\n        this.updatedAspect$.next(node);\n    }\n\n    private linkVariables() {\n        this.linkItemUpdated();\n    }\n\n    private linkItemUpdated() {\n        this.cardViewUpdateService.itemUpdated$.subscribe((res) => {\n            this.itemUpdated$.next(res);\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 } from '@angular/core';\nimport { from, Observable } from 'rxjs';\nimport {\n    Node,\n    SiteBodyCreate,\n    SiteEntry,\n    SiteGroupEntry,\n    SiteGroupPaging,\n    SiteMemberEntry,\n    SiteMemberPaging,\n    SiteMembershipBodyCreate,\n    SiteMembershipBodyUpdate,\n    SiteMembershipRequestWithPersonPaging,\n    SitePaging,\n    SitesApi\n} from '@alfresco/js-api';\nimport { AlfrescoApiService } from '../../services/alfresco-api.service';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class SitesService {\n    private _sitesApi: SitesApi;\n    get sitesApi(): SitesApi {\n        this._sitesApi = this._sitesApi ?? new SitesApi(this.apiService.getInstance());\n        return this._sitesApi;\n    }\n\n    constructor(private apiService: AlfrescoApiService) {}\n\n    /**\n     * Create a site\n     *\n     * @param siteBody SiteBodyCreate to create site\n     * @returns site SiteEntry\n     */\n    createSite(siteBody: SiteBodyCreate): Observable<SiteEntry> {\n        return from(this.sitesApi.createSite(siteBody));\n    }\n\n    /**\n     * Gets a list of all sites in the repository.\n     *\n     * @param opts Options supported by JS-API\n     * @returns List of sites\n     */\n    getSites(opts: any = {}): Observable<SitePaging> {\n        const defaultOptions = {\n            skipCount: 0,\n            include: ['properties']\n        };\n        const queryOptions = Object.assign({}, defaultOptions, opts);\n        return from(this.sitesApi.listSites(queryOptions));\n    }\n\n    /**\n     * Gets the details for a site.\n     *\n     * @param siteId ID of the target site\n     * @param opts Options supported by JS-API\n     * @returns Information about the site\n     */\n    getSite(siteId: string, opts?: any): Observable<SiteEntry | any> {\n        return from(this.sitesApi.getSite(siteId, opts));\n    }\n\n    /**\n     * Deletes a site.\n     *\n     * @param siteId Site to delete\n     * @param permanentFlag True: deletion is permanent; False: site is moved to the trash\n     * @returns Null response notifying when the operation is complete\n     */\n    deleteSite(siteId: string, permanentFlag: boolean = true): Observable<any> {\n        const options: any = {};\n        options.permanent = permanentFlag;\n        return from(this.sitesApi.deleteSite(siteId, options));\n    }\n\n    /**\n     * Gets a site's content.\n     *\n     * @param siteId ID of the target site\n     * @returns Site content\n     */\n    getSiteContent(siteId: string): Observable<SiteEntry | any> {\n        return this.getSite(siteId, { relations: ['containers'] });\n    }\n\n    /**\n     * Gets a list of all a site's members.\n     *\n     * @param siteId ID of the target site\n     * @returns Site members\n     */\n    getSiteMembers(siteId: string): Observable<SiteEntry | any> {\n        return this.getSite(siteId, { relations: ['members'] });\n    }\n\n    /**\n     * Gets a list of all a site's members.\n     *\n     * @param siteId ID of the target site\n     * @param opts Optional parameters supported by JS-API\n     * @returns Observable<SiteMemberPaging>\n     */\n    listSiteMemberships(siteId: string, opts: any): Observable<SiteMemberPaging> {\n        return from(this.sitesApi.listSiteMemberships(siteId, opts));\n    }\n\n    /**\n     * Looks for a site inside the path of a Node and returns its guid if it finds one.\n     * (return an empty string if no site is found)\n     *\n     * @param node Node to look for parent site\n     * @returns Site guid\n     */\n    getSiteNameFromNodePath(node: Node): string {\n        let siteName = '';\n        if (node.path?.elements) {\n            const foundNode = node.path.elements.find((pathNode) => pathNode.nodeType === 'st:site' && pathNode.name !== 'Sites');\n            siteName = foundNode ? foundNode.name : '';\n        }\n        return siteName.toLocaleLowerCase();\n    }\n\n    /**\n     * Gets a list of site membership requests.\n     *\n     * @param opts Options supported by JS-API\n     * @returns Site membership requests\n     */\n    getSiteMembershipRequests(opts?: any): Observable<SiteMembershipRequestWithPersonPaging> {\n        return from(this.sitesApi.getSiteMembershipRequests(opts));\n    }\n\n    /**\n     * Creates a site membership for person **personId** on site **siteId**.\n     *\n     * @param siteId The identifier of a site\n     * @param siteMembershipBodyCreate The person to add and their role\n     * @param opts Optional parameters\n     * @returns Observable<SiteMemberEntry>\n     */\n    createSiteMembership(siteId: string, siteMembershipBodyCreate: SiteMembershipBodyCreate, opts?: any): Observable<SiteMemberEntry> {\n        return from(this.sitesApi.createSiteMembership(siteId, siteMembershipBodyCreate, opts));\n    }\n\n    /**\n     * Update a site membership\n     *\n     * @param siteId The identifier of a site.\n     * @param personId The identifier of a person.\n     * @param siteMembershipBodyUpdate The persons new role\n     * @param opts Optional parameters\n     * @returns Observable<SiteMemberEntry>\n     */\n    updateSiteMembership(\n        siteId: string,\n        personId: string,\n        siteMembershipBodyUpdate: SiteMembershipBodyUpdate,\n        opts?: any\n    ): Observable<SiteMemberEntry> {\n        return from(this.sitesApi.updateSiteMembership(siteId, personId, siteMembershipBodyUpdate, opts));\n    }\n\n    /**\n     * Delete a site membership\n     *\n     * @param siteId The identifier of a site.\n     * @param personId The identifier of a person.\n     * @returns Null response notifying when the operation is complete\n     */\n    deleteSiteMembership(siteId: string, personId: string): Observable<void> {\n        return from(this.sitesApi.deleteSiteMembership(siteId, personId));\n    }\n\n    /**\n     * Accept site membership requests.\n     *\n     * @param siteId The identifier of a site.\n     * @param inviteeId The invitee user name.\n     * @param opts Options supported by JS-API\n     * @returns  Null response notifying when the operation is complete\n     */\n    approveSiteMembershipRequest(siteId: string, inviteeId: string, opts?: any): Observable<SiteMembershipRequestWithPersonPaging> {\n        return from(this.sitesApi.approveSiteMembershipRequest(siteId, inviteeId, opts));\n    }\n\n    /**\n     * Reject site membership requests.\n     *\n     * @param siteId The identifier of a site.\n     * @param inviteeId The invitee user name.\n     * @param opts Options supported by JS-API\n     * @returns  Null response notifying when the operation is complete\n     */\n    rejectSiteMembershipRequest(siteId: string, inviteeId: string, opts?: any): Observable<SiteMembershipRequestWithPersonPaging> {\n        return from(this.sitesApi.rejectSiteMembershipRequest(siteId, inviteeId, opts));\n    }\n\n    /**\n     * List group membership for site\n     *\n     * @param siteId The identifier of a site.\n     * @param opts Options supported by JS-API\n     * @returns  Observable<SiteGroupPaging>\n     */\n    listSiteGroups(siteId: string, opts?: any): Observable<SiteGroupPaging> {\n        return from(this.sitesApi.listSiteGroups(siteId, opts));\n    }\n\n    /**\n     * Create a site membership for group\n     *\n     * @param siteId The identifier of a site.\n     * @param siteMembershipBodyCreate The Group to add and its role\n     * @returns Observable<SiteGroupEntry>\n     */\n    createSiteGroupMembership(siteId: string, siteMembershipBodyCreate: SiteMembershipBodyCreate): Observable<SiteGroupEntry> {\n        return from(this.sitesApi.createSiteGroupMembership(siteId, siteMembershipBodyCreate));\n    }\n\n    /**\n     * Get information about site membership of group\n     *\n     * @param siteId The identifier of a site.\n     * @param groupId The authorityId of a group.\n     * @returns Observable<SiteGroupEntry>\n     */\n    getSiteGroupMembership(siteId: string, groupId: string): Observable<SiteGroupEntry> {\n        return from(this.sitesApi.getSiteGroupMembership(siteId, groupId));\n    }\n\n    /**\n     * Update site membership of group\n     *\n     * @param siteId The identifier of a site.\n     * @param groupId The authorityId of a group.\n     * @param siteMembershipBodyUpdate The group new role\n     * @returns Observable<SiteGroupEntry>\n     */\n    updateSiteGroupMembership(siteId: string, groupId: string, siteMembershipBodyUpdate: SiteMembershipBodyUpdate): Observable<SiteGroupEntry> {\n        return from(this.sitesApi.updateSiteGroupMembership(siteId, groupId, siteMembershipBodyUpdate));\n    }\n\n    /**\n     * Delete a group membership for site\n     *\n     * @param siteId The identifier of a site.\n     * @param groupId The authorityId of a group.\n     * @returns Observable<void>\n     */\n    deleteSiteGroupMembership(siteId: string, groupId: string): Observable<void> {\n        return from(this.sitesApi.deleteSiteGroupMembership(siteId, groupId));\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 { ContentApi, RenditionEntry, RenditionPaging, RenditionsApi, VersionsApi } from '@alfresco/js-api';\nimport { Track, TranslationService, ViewUtilService } from '@alfresco/adf-core';\nimport { AlfrescoApiService } from '../../services/alfresco-api.service';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class RenditionService {\n    static TARGET = '_new';\n\n    /**\n     * Content groups based on categorization of files that can be viewed in the web browser. This\n     * implementation or grouping is tied to the definition the ng component: ViewerRenderComponent\n     */\n    static ContentGroup = {\n        IMAGE: 'image',\n        MEDIA: 'media',\n        PDF: 'pdf',\n        TEXT: 'text'\n    };\n\n    /**\n     * The name of the rendition with the media subtitles in the supported format\n     */\n    static SUBTITLES_RENDITION_NAME = 'webvtt';\n\n    /**\n     * Based on ViewerRenderComponent Implementation, this value is used to determine how many times we try\n     * to get the rendition of a file for preview, or printing.\n     */\n    maxRetries = 5;\n\n    /**\n     * Timeout used for setInterval.\n     */\n    private TRY_TIMEOUT: number = 10000;\n\n    _renditionsApi: RenditionsApi;\n    get renditionsApi(): RenditionsApi {\n        this._renditionsApi = this._renditionsApi ?? new RenditionsApi(this.apiService.getInstance());\n        return this._renditionsApi;\n    }\n\n    _contentApi: ContentApi;\n    get contentApi(): ContentApi {\n        this._contentApi = this._contentApi ?? new ContentApi(this.apiService.getInstance());\n        return this._contentApi;\n    }\n\n    _versionsApi: VersionsApi;\n    private DEFAULT_RENDITION: string = 'imgpreview';\n\n    get versionsApi(): VersionsApi {\n        this._versionsApi = this._versionsApi ?? new VersionsApi(this.apiService.getInstance());\n        return this._versionsApi;\n    }\n\n    constructor(private apiService: AlfrescoApiService, private translateService: TranslationService, private viewUtilsService: ViewUtilService) {}\n\n    getRenditionUrl(nodeId: string, type: string, renditionExists: boolean): string {\n        return renditionExists && type !== RenditionService.ContentGroup.IMAGE\n            ? this.contentApi.getRenditionUrl(nodeId, RenditionService.ContentGroup.PDF)\n            : this.contentApi.getContentUrl(nodeId, false);\n    }\n\n    private async waitRendition(nodeId: string, renditionId: string, retries: number): Promise<RenditionEntry> {\n        if (this.maxRetries > retries) {\n            const rendition = await this.renditionsApi.getRendition(nodeId, renditionId);\n            const status = rendition.entry.status.toString();\n\n            if (status === 'CREATED') {\n                return rendition;\n            } else {\n                retries += 1;\n                await this.wait(1000);\n                return this.waitRendition(nodeId, renditionId, retries);\n            }\n        }\n\n        return Promise.resolve(null);\n    }\n\n    private wait(ms: number): Promise<any> {\n        return new Promise((resolve) => setTimeout(resolve, ms));\n    }\n\n    async getRendition(nodeId: string, renditionId: string): Promise<RenditionEntry> {\n        const renditionPaging: RenditionPaging = await this.renditionsApi.listRenditions(nodeId);\n        let rendition: RenditionEntry = renditionPaging.list.entries.find(\n            (renditionEntry: RenditionEntry) => renditionEntry.entry.id.toLowerCase() === renditionId\n        );\n\n        if (rendition) {\n            const status = rendition.entry.status.toString();\n\n            if (status === 'NOT_CREATED') {\n                try {\n                    await this.renditionsApi.createRendition(nodeId, { id: renditionId });\n                    rendition = await this.waitRendition(nodeId, renditionId, 0);\n                } catch {\n                    return null;\n                }\n            }\n        }\n        return new Promise<RenditionEntry>((resolve) => resolve(rendition));\n    }\n\n    async getNodeRendition(nodeId: string, versionId?: string): Promise<{ url: string; mimeType: string }> {\n        try {\n            return versionId ? await this.resolveNodeRendition(nodeId, 'pdf', versionId) : await this.resolveNodeRendition(nodeId, 'pdf');\n        } catch {\n            return null;\n        }\n    }\n\n    private async resolveNodeRendition(nodeId: string, renditionId: string, versionId?: string): Promise<{ url: string; mimeType: string }> {\n        renditionId = renditionId.toLowerCase();\n\n        const supportedRendition: RenditionPaging = versionId\n            ? await this.versionsApi.listVersionRenditions(nodeId, versionId)\n            : await this.renditionsApi.listRenditions(nodeId);\n\n        let rendition = this.findRenditionById(supportedRendition, renditionId);\n        if (!rendition) {\n            renditionId = this.DEFAULT_RENDITION;\n            rendition = this.findRenditionById(supportedRendition, this.DEFAULT_RENDITION);\n        }\n\n        if (rendition) {\n            const status: string = rendition.entry.status.toString();\n            const mimeType: string = rendition.entry.content.mimeType;\n\n            if (status === 'NOT_CREATED') {\n                return { url: await this.requestCreateRendition(nodeId, renditionId, versionId), mimeType };\n            } else {\n                return { url: await this.handleNodeRendition(nodeId, renditionId, versionId), mimeType };\n            }\n        }\n\n        return null;\n    }\n\n    private async requestCreateRendition(nodeId: string, renditionId: string, versionId: string): Promise<string> {\n        try {\n            if (versionId) {\n                await this.versionsApi.createVersionRendition(nodeId, versionId, { id: renditionId });\n            } else {\n                await this.renditionsApi.createRendition(nodeId, { id: renditionId });\n            }\n            try {\n                return versionId ? await this.waitNodeRendition(nodeId, renditionId, versionId) : await this.waitNodeRendition(nodeId, renditionId);\n            } catch (e) {\n                return null;\n            }\n        } catch {\n            return null;\n        }\n    }\n\n    private findRenditionById(supportedRendition: RenditionPaging, renditionId: string) {\n        return supportedRendition.list.entries.find((renditionEntry: RenditionEntry) => renditionEntry.entry.id.toLowerCase() === renditionId);\n    }\n\n    private async waitNodeRendition(nodeId: string, renditionId: string, versionId?: string): Promise<string> {\n        let currentRetry: number = 0;\n        return new Promise<string>((resolve, reject) => {\n            const intervalId = setInterval(() => {\n                currentRetry++;\n                if (this.maxRetries >= currentRetry) {\n                    if (versionId) {\n                        this.versionsApi.getVersionRendition(nodeId, versionId, renditionId).then(\n                            (rendition: RenditionEntry) => {\n                                const status: string = rendition.entry.status.toString();\n\n                                if (status === 'CREATED') {\n                                    clearInterval(intervalId);\n                                    return resolve(this.handleNodeRendition(nodeId, rendition.entry.content.mimeType, versionId));\n                                }\n                            },\n                            () => reject(new Error('Error geting version rendition'))\n                        );\n                    } else {\n                        this.renditionsApi.getRendition(nodeId, renditionId).then(\n                            (rendition: RenditionEntry) => {\n                                const status: string = rendition.entry.status.toString();\n\n                                if (status === 'CREATED') {\n                                    clearInterval(intervalId);\n                                    return resolve(this.handleNodeRendition(nodeId, renditionId, versionId));\n                                }\n                            },\n                            () => reject(new Error('Error getting rendition'))\n                        );\n                    }\n                } else {\n                    clearInterval(intervalId);\n                    return reject(new Error('Error getting rendition'));\n                }\n            }, this.TRY_TIMEOUT);\n        });\n    }\n\n    private async handleNodeRendition(nodeId: string, renditionId: string, versionId?: string): Promise<string> {\n        return versionId\n            ? this.contentApi.getVersionRenditionUrl(nodeId, versionId, renditionId)\n            : this.contentApi.getRenditionUrl(nodeId, renditionId);\n    }\n\n    async generateMediaTracksRendition(nodeId: string): Promise<Track[]> {\n        return this.isRenditionAvailable(nodeId, RenditionService.SUBTITLES_RENDITION_NAME)\n            .then((value) => {\n                const tracks = [];\n                if (value) {\n                    tracks.push({\n                        kind: 'subtitles',\n                        src: this.contentApi.getRenditionUrl(nodeId, RenditionService.SUBTITLES_RENDITION_NAME),\n                        label: this.translateService.instant('ADF_VIEWER.SUBTITLES')\n                    });\n                }\n                return tracks;\n            })\n            .catch(() => []);\n    }\n\n    private async isRenditionAvailable(nodeId: string, renditionId: string): Promise<boolean> {\n        const renditionPaging: RenditionPaging = await this.renditionsApi.listRenditions(nodeId);\n        const rendition: RenditionEntry = renditionPaging.list.entries.find(\n            (renditionEntry: RenditionEntry) => renditionEntry.entry.id.toLowerCase() === renditionId\n        );\n\n        return rendition?.entry?.status?.toString() === 'CREATED' || false;\n    }\n\n    /**\n     * This method takes a url to trigger the print dialog against, and the type of artifact that it\n     * is.\n     * This URL should be one that can be rendered in the browser, for example PDF, Image, or Text\n     *\n     * @param url url to print\n     * @param type type of the rendition\n     */\n    printFile(url: string, type: string): void {\n        const pwa = window.open(url, RenditionService.TARGET);\n        if (pwa) {\n            pwa.onload = () => {\n                pwa.print();\n                if (type === RenditionService.ContentGroup.IMAGE) {\n                    // Because of the way chrome focus and close image window vs. pdf preview window\n                    setTimeout(() => {\n                        pwa.close();\n                    }, 500);\n                }\n            };\n        }\n    }\n\n    /**\n     * Launch the File Print dialog from anywhere other than the preview service, which resolves the\n     * rendition of the object that can be printed from a web browser.\n     * These are: images, PDF files, or PDF rendition of files.\n     * We also force PDF rendition for TEXT type objects, otherwise the default URL is to download.\n     * TODO there are different TEXT type objects, (HTML, plaintext, xml, etc. we should determine how these are handled)\n     *\n     * @param objectId object it\n     * @param mimeType mime type\n     */\n    printFileGeneric(objectId: string, mimeType: string): void {\n        const nodeId = objectId;\n        const type: string = this.viewUtilsService.getViewerTypeByMimeType(mimeType);\n\n        this.getRendition(nodeId, RenditionService.ContentGroup.PDF)\n            .then((value) => {\n                const url: string = this.getRenditionUrl(nodeId, type, !!value);\n                const printType =\n                    type === RenditionService.ContentGroup.PDF || type === RenditionService.ContentGroup.TEXT\n                        ? RenditionService.ContentGroup.PDF\n                        : type;\n                this.printFile(url, printType);\n            })\n            .catch(() => {});\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 { Capabilities } from '@alfresco/js-api';\nimport { EcmCompanyModel } from './ecm-company.model';\n\nexport class EcmUserModel {\n    id: string;\n    firstName: string;\n    lastName?: string;\n    displayName?: string;\n    description?: string;\n    avatarId?: string;\n    email: string;\n    skypeId?: string;\n    googleId?: string;\n    instantMessageId?: string;\n    jobTitle?: string;\n    location?: string;\n    company: EcmCompanyModel;\n    mobile?: string;\n    telephone?: string;\n    statusUpdatedAt?: Date;\n    userStatus?: string;\n    enabled: boolean;\n    emailNotificationsEnabled?: boolean;\n    aspectNames?: string[];\n    properties?: { [key: string]: string };\n    capabilities?: Capabilities;\n\n    constructor(obj?: any) {\n        this.id = obj?.id || null;\n        this.firstName = obj?.firstName;\n        this.lastName = obj?.lastName;\n        this.description = obj?.description || null;\n        this.avatarId = obj?.avatarId || null;\n        this.email = obj?.email || null;\n        this.skypeId = obj?.skypeId;\n        this.googleId = obj?.googleId;\n        this.instantMessageId = obj?.instantMessageId;\n        this.jobTitle = obj?.jobTitle || null;\n        this.location = obj?.location || null;\n        this.company = obj?.company;\n        this.mobile = obj?.mobile;\n        this.telephone = obj?.telephone;\n        this.statusUpdatedAt = obj?.statusUpdatedAt;\n        this.userStatus = obj?.userStatus;\n        this.enabled = obj?.enabled;\n        this.emailNotificationsEnabled = obj?.emailNotificationsEnabled;\n        this.aspectNames = obj?.aspectNames;\n        this.properties = obj?.properties;\n        this.capabilities = obj?.capabilities;\n    }\n\n    isAdmin(): boolean {\n        return this.capabilities?.isAdmin;\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 { from, Observable, of } from 'rxjs';\nimport { AuthenticationService } from '@alfresco/adf-core';\nimport { map, tap } from 'rxjs/operators';\nimport { Pagination, PeopleApi, PersonBodyCreate, PersonBodyUpdate } from '@alfresco/js-api';\nimport { EcmUserModel } from '../models/ecm-user.model';\nimport { ContentService } from './content.service';\nimport { AlfrescoApiService } from '../../services/alfresco-api.service';\n\nexport interface PeopleContentQueryResponse {\n    pagination: Pagination;\n    entries: EcmUserModel[];\n}\n\nexport interface PeopleContentSortingModel {\n    orderBy: string;\n    direction: string;\n}\n\nexport interface PeopleContentQueryRequestModel {\n    skipCount?: number;\n    maxItems?: number;\n    sorting?: PeopleContentSortingModel;\n}\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class PeopleContentService {\n    private currentUser: EcmUserModel;\n\n    private _peopleApi: PeopleApi;\n    get peopleApi(): PeopleApi {\n        this._peopleApi = this._peopleApi ?? new PeopleApi(this.apiService.getInstance());\n        return this._peopleApi;\n    }\n\n    constructor(private apiService: AlfrescoApiService, authenticationService: AuthenticationService, private contentService: ContentService) {\n        authenticationService.onLogout.subscribe(() => {\n            this.resetLocalCurrentUser();\n        });\n    }\n\n    /**\n     * Gets information about a user identified by their username.\n     *\n     * @param personId ID of the target user\n     * @returns User information\n     */\n    getPerson(personId: string): Observable<EcmUserModel> {\n        return from(this.peopleApi.getPerson(personId)).pipe(map((personEntry) => new EcmUserModel(personEntry.entry)));\n    }\n\n    getCurrentPerson(): Observable<EcmUserModel> {\n        return this.getCurrentUserInfo();\n    }\n\n    /**\n     * Gets information about the current user alias -me-\n     *\n     * @returns User information\n     */\n    getCurrentUserInfo(): Observable<EcmUserModel> {\n        if (this.currentUser) {\n            return of(this.currentUser);\n        }\n        return this.getPerson('-me-').pipe(tap((user) => (this.currentUser = user)));\n    }\n\n    /**\n     * Used to know if the current user has the admin capability\n     *\n     * @returns true or false\n     */\n    isCurrentUserAdmin(): boolean {\n        return this.currentUser?.isAdmin() ?? false;\n    }\n\n    /**\n     * Reset the local current user object\n     */\n    resetLocalCurrentUser() {\n        this.currentUser = undefined;\n    }\n\n    /**\n     * Gets a list of people.\n     *\n     * @param requestQuery maxItems and skipCount parameters supported by JS-API\n     * @returns Response containing pagination and list of entries\n     */\n    listPeople(requestQuery?: PeopleContentQueryRequestModel): Observable<PeopleContentQueryResponse> {\n        const requestQueryParams = { skipCount: requestQuery?.skipCount, maxItems: requestQuery?.maxItems };\n        const orderBy = this.buildOrderArray(requestQuery?.sorting);\n        if (orderBy.length) {\n            requestQueryParams['orderBy'] = orderBy;\n        }\n\n        const promise = this.peopleApi.listPeople(requestQueryParams);\n        return from(promise).pipe(\n            map((response) => ({\n                pagination: response.list.pagination,\n                entries: response.list.entries.map((person) => person.entry as EcmUserModel)\n            }))\n        );\n    }\n\n    /**\n     * Creates new person.\n     *\n     * @param newPerson Object containing the new person details.\n     * @param opts Optional parameters\n     * @returns Created new person\n     */\n    createPerson(newPerson: PersonBodyCreate, opts?: any): Observable<EcmUserModel> {\n        return from(this.peopleApi.createPerson(newPerson, opts)).pipe(map((res) => res?.entry as EcmUserModel));\n    }\n\n    /**\n     * Updates the person details\n     *\n     * @param personId The identifier of a person\n     * @param details The person details\n     * @param opts Optional parameters\n     * @returns Updated person model\n     */\n    updatePerson(personId: string, details: PersonBodyUpdate, opts?: any): Observable<EcmUserModel> {\n        return from(this.peopleApi.updatePerson(personId, details, opts)).pipe(map((res) => res?.entry as EcmUserModel));\n    }\n\n    /**\n     * Returns a profile image as a URL.\n     *\n     * @param avatarId Target avatar\n     * @returns Image URL\n     */\n    getUserProfileImage(avatarId: string): string {\n        return this.contentService.getContentUrl(avatarId);\n    }\n\n    private buildOrderArray(sorting: PeopleContentSortingModel): string[] {\n        return sorting?.orderBy && sorting?.direction ? [`${sorting.orderBy} ${sorting.direction.toUpperCase()}`] : [];\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 { NodesApi, NodeEntry, PreferencesApi, ContentFieldsQuery, PreferenceEntry } from '@alfresco/js-api';\nimport { inject, Injectable, InjectionToken } from '@angular/core';\nimport { Observable, of, from, ReplaySubject, throwError } from 'rxjs';\nimport { catchError, concatMap, first, map, switchMap, take, tap } from 'rxjs/operators';\nimport { AlfrescoApiService } from '../../services/alfresco-api.service';\nimport { SavedSearch } from '../interfaces/saved-search.interface';\nimport { AuthenticationService } from '@alfresco/adf-core';\n\nexport interface SavedSearchesPreferencesApiService {\n    getPreference: (personId: string, preferenceName: string, opts?: ContentFieldsQuery) => Promise<PreferenceEntry> | Observable<PreferenceEntry>;\n    updatePreference: (personId: string, preferenceName: string, preferenceValue: string) => Promise<PreferenceEntry> | Observable<PreferenceEntry>;\n}\n\nexport const SAVED_SEARCHES_SERVICE_PREFERENCES = new InjectionToken<SavedSearchesPreferencesApiService>('SAVED_SEARCHES_SERVICE_PREFERENCES');\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class SavedSearchesService {\n    private savedSearchFileNodeId: string;\n    private _nodesApi: NodesApi;\n    private _preferencesApi: SavedSearchesPreferencesApiService;\n    private preferencesService = inject(SAVED_SEARCHES_SERVICE_PREFERENCES, { optional: true });\n\n    get nodesApi(): NodesApi {\n        this._nodesApi = this._nodesApi ?? new NodesApi(this.apiService.getInstance());\n        return this._nodesApi;\n    }\n\n    get preferencesApi(): SavedSearchesPreferencesApiService {\n        if (this.preferencesService) {\n            this._preferencesApi = this.preferencesService;\n            return this._preferencesApi;\n        }\n\n        this._preferencesApi = this._preferencesApi ?? new PreferencesApi(this.apiService.getInstance());\n        return this._preferencesApi;\n    }\n\n    readonly savedSearches$ = new ReplaySubject<SavedSearch[]>(1);\n\n    constructor(private readonly apiService: AlfrescoApiService, private readonly authService: AuthenticationService) {}\n\n    init(): void {\n        this.fetchSavedSearches();\n    }\n\n    /**\n     * Gets a list of saved searches by user.\n     *\n     * @returns SavedSearch list containing user saved searches\n     */\n    getSavedSearches(): Observable<SavedSearch[]> {\n        const savedSearchesMigrated = localStorage.getItem(this.getLocalStorageKey()) ?? '';\n        if (savedSearchesMigrated === 'true') {\n            return from(this.preferencesApi.getPreference('-me-', 'saved-searches')).pipe(\n                map((preference) => JSON.parse(preference.entry.value)),\n                catchError(() => of([]))\n            );\n        } else {\n            return this.getSavedSearchesNodeId().pipe(\n                take(1),\n                concatMap(() => {\n                    if (this.savedSearchFileNodeId !== '') {\n                        return this.migrateSavedSearches();\n                    } else {\n                        return from(this.preferencesApi.getPreference('-me-', 'saved-searches')).pipe(\n                            map((preference) => JSON.parse(preference.entry.value)),\n                            catchError(() => of([]))\n                        );\n                    }\n                })\n            );\n        }\n    }\n\n    /**\n     * Saves a new search into state and updates state. If there are less than 5 searches,\n     * it will be pushed on first place, if more it will be pushed to 6th place.\n     *\n     * @param newSaveSearch object { name: string, description: string, encodedUrl: string }\n     * @returns NodeEntry\n     */\n    saveSearch(newSaveSearch: Pick<SavedSearch, 'name' | 'description' | 'encodedUrl'>): Observable<NodeEntry> {\n        return this.getSavedSearches().pipe(\n            take(1),\n            switchMap((savedSearches: SavedSearch[]) => {\n                let updatedSavedSearches: SavedSearch[] = [];\n\n                if (savedSearches.length < 5) {\n                    updatedSavedSearches = [{ ...newSaveSearch, order: 0 }, ...savedSearches];\n                } else {\n                    const firstFiveSearches = savedSearches.slice(0, 5);\n                    const restOfSearches = savedSearches.slice(5);\n\n                    updatedSavedSearches = [...firstFiveSearches, { ...newSaveSearch, order: 5 }, ...restOfSearches];\n                }\n\n                updatedSavedSearches = updatedSavedSearches.map((search, index) => ({\n                    ...search,\n                    order: index\n                }));\n\n                return from(this.preferencesApi.updatePreference('-me-', 'saved-searches', JSON.stringify(updatedSavedSearches))).pipe(\n                    map((preference) => JSON.parse(preference.entry.value)),\n                    tap(() => this.savedSearches$.next(updatedSavedSearches))\n                );\n            }),\n            catchError((error) => {\n                console.error('Error saving new search:', error);\n                return throwError(() => error);\n            })\n        );\n    }\n\n    /**\n     * Replace Save Search with new one and also updates the state.\n     *\n     * @param updatedSavedSearch - updated Save Search\n     * @returns NodeEntry\n     */\n    editSavedSearch(updatedSavedSearch: SavedSearch): Observable<NodeEntry> {\n        let previousSavedSearches: SavedSearch[];\n        return this.savedSearches$.pipe(\n            take(1),\n            map((savedSearches: SavedSearch[]) => {\n                previousSavedSearches = [...savedSearches];\n                return savedSearches.map((search) => (search.order === updatedSavedSearch.order ? updatedSavedSearch : search));\n            }),\n            tap((updatedSearches: SavedSearch[]) => {\n                this.savedSearches$.next(updatedSearches);\n            }),\n            switchMap((updatedSearches: SavedSearch[]) =>\n                from(this.preferencesApi.updatePreference('-me-', 'saved-searches', JSON.stringify(updatedSearches))).pipe(\n                    map((preference) => JSON.parse(preference.entry.value))\n                )\n            ),\n            catchError((error) => {\n                this.savedSearches$.next(previousSavedSearches);\n                return throwError(() => error);\n            })\n        );\n    }\n\n    /**\n     * Deletes Save Search and update state.\n     *\n     * @param deletedSavedSearch - Save Search to delete\n     * @returns NodeEntry\n     */\n    deleteSavedSearch(deletedSavedSearch: SavedSearch): Observable<NodeEntry> {\n        let previousSavedSearchesOrder: SavedSearch[];\n        return this.savedSearches$.pipe(\n            take(1),\n            map((savedSearches: SavedSearch[]) => {\n                previousSavedSearchesOrder = [...savedSearches];\n                const updatedSearches = savedSearches.filter((search) => search.order !== deletedSavedSearch.order);\n                return updatedSearches.map((search, index) => ({\n                    ...search,\n                    order: index\n                }));\n            }),\n            tap((updatedSearches: SavedSearch[]) => {\n                this.savedSearches$.next(updatedSearches);\n            }),\n            switchMap((updatedSearches: SavedSearch[]) =>\n                from(this.preferencesApi.updatePreference('-me-', 'saved-searches', JSON.stringify(updatedSearches))).pipe(\n                    map((preference) => JSON.parse(preference.entry.value))\n                )\n            ),\n            catchError((error) => {\n                this.savedSearches$.next(previousSavedSearchesOrder);\n                return throwError(() => error);\n            })\n        );\n    }\n\n    /**\n     * Reorders saved search place\n     *\n     * @param previousIndex - previous index of saved search\n     * @param currentIndex - new index of saved search\n     */\n    changeOrder(previousIndex: number, currentIndex: number): void {\n        let previousSavedSearchesOrder: SavedSearch[];\n        this.savedSearches$\n            .pipe(\n                take(1),\n                map((savedSearches: SavedSearch[]) => {\n                    previousSavedSearchesOrder = [...savedSearches];\n                    const [movedSearch] = savedSearches.splice(previousIndex, 1);\n                    savedSearches.splice(currentIndex, 0, movedSearch);\n                    return savedSearches.map((search, index) => ({\n                        ...search,\n                        order: index\n                    }));\n                }),\n                tap((savedSearches: SavedSearch[]) => this.savedSearches$.next(savedSearches)),\n                switchMap((updatedSearches: SavedSearch[]) =>\n                    from(this.preferencesApi.updatePreference('-me-', 'saved-searches', JSON.stringify(updatedSearches))).pipe(\n                        map((preference) => JSON.parse(preference.entry.value))\n                    )\n                ),\n                catchError((error) => {\n                    this.savedSearches$.next(previousSavedSearchesOrder);\n                    return throwError(() => error);\n                })\n            )\n            .subscribe();\n    }\n\n    private getSavedSearchesNodeId(): Observable<string> {\n        return from(this.nodesApi.getNode('-my-', { relativePath: 'config.json' })).pipe(\n            first(),\n            concatMap((configNode) => {\n                this.savedSearchFileNodeId = configNode.entry.id;\n                return configNode.entry.id;\n            }),\n            catchError((error) => {\n                const errorStatusCode = JSON.parse(error.message).error.statusCode;\n                if (errorStatusCode === 404) {\n                    localStorage.setItem(this.getLocalStorageKey(), 'true');\n                    return '';\n                } else {\n                    return throwError(() => error);\n                }\n            })\n        );\n    }\n\n    private async mapFileContentToSavedSearches(blob: Blob): Promise<Array<SavedSearch>> {\n        return blob\n            .text()\n            .then((content) => (content ? JSON.parse(content) : []))\n            .catch(() => []);\n    }\n\n    private getLocalStorageKey(): string {\n        return `saved-searches-${this.authService.getUsername()}-migrated`;\n    }\n\n    private fetchSavedSearches(): void {\n        this.getSavedSearches()\n            .pipe(take(1))\n            .subscribe((searches) => this.savedSearches$.next(searches));\n    }\n\n    private migrateSavedSearches(): Observable<SavedSearch[]> {\n        return from(this.nodesApi.getNodeContent(this.savedSearchFileNodeId).then((content) => this.mapFileContentToSavedSearches(content))).pipe(\n            tap((savedSearches) => {\n                this.preferencesApi.updatePreference('-me-', 'saved-searches', JSON.stringify(savedSearches));\n                localStorage.setItem(this.getLocalStorageKey(), 'true');\n                this.nodesApi.deleteNode(this.savedSearchFileNodeId, { permanent: true });\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 EcmCompanyModel {\n      organization: string;\n      address1: string;\n      address2: string;\n      address3: string;\n      postcode: string;\n      telephone: string;\n      fax: string;\n      email: 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 { SearchRequest } from '@alfresco/js-api';\n\nexport interface SearchConfigurationInterface {\n    /**\n     * Generates a query object with custom search parameters.\n     *\n     * @param searchTerm Term text to search for\n     * @param maxResults Maximum number of search results to show in a page\n     * @param skipCount The offset of the start of the page within the results list\n     * @returns Query body defined by the parameters\n     */\n    generateQueryBody(searchTerm: string, maxResults: number, skipCount: number): SearchRequest;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 SavedSearch {\n    name: string;\n    description?: string;\n    encodedUrl: string;\n    order: 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 { Person } from '@alfresco/js-api';\n\nexport const fakeEcmUser: Person = {\n    id: 'fake-id',\n    firstName: 'fake-ecm-first-name',\n    lastName: 'fake-ecm-last-name',\n    description: 'i am a fake user for test',\n    avatarId: 'fake-avatar-id',\n    email: 'fakeEcm@ecmUser.com',\n    skypeId: 'fake-skype-id',\n    googleId: 'fake-googleId-id',\n    instantMessageId: 'fake-instantMessageId-id',\n    company: null,\n    jobTitle: 'job-ecm-test',\n    location: 'fake location',\n    mobile: '000000000',\n    telephone: '11111111',\n    statusUpdatedAt: new Date(),\n    userStatus: 'active',\n    enabled: true,\n    emailNotificationsEnabled: true\n};\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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/favorites-api.service';\nexport * from './services/card-view-content-update.service';\nexport * from './services/sites.service';\nexport * from './services/rendition.service';\nexport * from './services/upload.service';\nexport * from './services/nodes-api.service';\nexport * from './services/discovery-api.service';\nexport * from './services/people-content.service';\nexport * from './services/content.service';\nexport * from './services/saved-searches.service';\n\nexport * from './events/file.event';\n\nexport * from './models/ecm-user.model';\nexport * from './models/ecm-company.model';\nexport * from './models/file.model';\nexport * from './models/node-metadata.model';\n\nexport * from './models/permissions.enum';\nexport * from './models/allowable-operations.enum';\n\nexport * from './interfaces/search-configuration.interface';\nexport * from './interfaces/saved-search.interface';\nexport * from './mocks/ecm-user.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 { DataRow, ObjectUtils, ThumbnailService } from '@alfresco/adf-core';\nimport { Node, NodeEntry } from '@alfresco/js-api';\nimport { PermissionStyleModel } from './../models/permissions-style.model';\nimport { ContentService } from './../../common/services/content.service';\n\nexport const ERR_OBJECT_NOT_FOUND: string = 'Object source not found';\n\nexport class ShareDataRow implements DataRow {\n    cache: { [key: string]: any } = {};\n    isSelected: boolean = false;\n    isSelectable: boolean = true;\n    isDropTarget: boolean;\n    cssClass: string = '';\n    id: string;\n\n    get node(): NodeEntry {\n        return this.obj;\n    }\n\n    set node(value: NodeEntry) {\n        this.obj = value;\n        this.cache = {};\n    }\n\n    constructor(\n        private obj: NodeEntry,\n        private contentService: ContentService,\n        private permissionsStyle: PermissionStyleModel[],\n        private thumbnailService?: ThumbnailService,\n        private allowDropFiles?: boolean\n    ) {\n        if (!obj) {\n            throw new Error(ERR_OBJECT_NOT_FOUND);\n        }\n\n        this.isDropTarget =\n            allowDropFiles !== undefined ? this.allowDropFiles && this.checkNodeTypeAndPermissions(obj) : this.checkNodeTypeAndPermissions(obj);\n        if (permissionsStyle) {\n            this.cssClass = this.getPermissionClass(obj);\n        }\n        this.id = this.getId();\n    }\n\n    checkNodeTypeAndPermissions(nodeEntry: NodeEntry) {\n        return this.isFolderAndHasPermissionToUpload(nodeEntry) || this.isFileAndHasParentFolderPermissionToUpload(nodeEntry);\n    }\n\n    getPermissionClass(nodeEntity: NodeEntry): string {\n        let permissionsClasses = '';\n\n        this.permissionsStyle.forEach((currentPermissionsStyle: PermissionStyleModel) => {\n            if (\n                this.applyPermissionStyleToFolder(nodeEntity.entry, currentPermissionsStyle) ||\n                this.applyPermissionStyleToFile(nodeEntity.entry, currentPermissionsStyle)\n            ) {\n                if (this.contentService.hasAllowableOperations(nodeEntity.entry, currentPermissionsStyle.permission)) {\n                    permissionsClasses += ` ${currentPermissionsStyle.css}`;\n                }\n            }\n        });\n\n        return permissionsClasses;\n    }\n\n    private applyPermissionStyleToFile(node: Node, currentPermissionsStyle: PermissionStyleModel): boolean {\n        return currentPermissionsStyle.isFile && node.isFile;\n    }\n\n    private applyPermissionStyleToFolder(node: Node, currentPermissionsStyle: PermissionStyleModel): boolean {\n        return currentPermissionsStyle.isFolder && node.isFolder;\n    }\n\n    isFolderAndHasPermissionToUpload(nodeEntry: NodeEntry): boolean {\n        return this.isFolder(nodeEntry) && this.contentService.hasAllowableOperations(nodeEntry.entry, 'create');\n    }\n\n    isFileAndHasParentFolderPermissionToUpload(nodeEntry: NodeEntry): boolean {\n        return this.isFile(nodeEntry) && this.contentService.hasAllowableOperations(nodeEntry.entry, 'update');\n    }\n\n    isFile(nodeEntry: NodeEntry): boolean {\n        return nodeEntry.entry?.isFile;\n    }\n\n    isFolder(nodeEntry: NodeEntry): boolean {\n        return nodeEntry.entry?.isFolder;\n    }\n\n    cacheValue(key: string, value: any): any {\n        this.cache[key] = value;\n        return value;\n    }\n\n    getValue(key: string): any {\n        if (this.cache[key]) {\n            return this.cache[key];\n        }\n        return ObjectUtils.getValue(this.obj.entry, key);\n    }\n\n    imageErrorResolver(): any {\n        if (this.obj.entry.content) {\n            return this.thumbnailService.getMimeTypeIcon(this.obj.entry.content.mimeType);\n        }\n    }\n\n    hasValue(key: string): boolean {\n        return this.getValue(key) !== undefined;\n    }\n\n    getId(): string {\n        return this.obj.entry.id || undefined;\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, DataRow, DataSorting, DataTableAdapter, ThumbnailService } from '@alfresco/adf-core';\nimport { NodePaging, NodeEntry } from '@alfresco/js-api';\nimport { PermissionStyleModel } from './../models/permissions-style.model';\nimport { ShareDataRow } from './share-data-row.model';\nimport { RowFilter } from './row-filter.model';\nimport { ContentService } from '../../common/services/content.service';\n\nexport const ERR_ROW_NOT_FOUND: string = 'Row not found';\nexport const ERR_COL_NOT_FOUND: string = 'Column not found';\n\nexport class ShareDataTableAdapter implements DataTableAdapter {\n    private _sortingMode: string;\n    private sorting: DataSorting;\n    private rows: DataRow[];\n    private columns: DataColumn[];\n\n    private filter: RowFilter;\n    private imageResolver: any;\n\n    thumbnails: boolean = false;\n    permissionsStyle: PermissionStyleModel[];\n    selectedRow: DataRow;\n    allowDropFiles: boolean;\n\n    set sortingMode(value: string) {\n        let newValue = (value || 'client').toLowerCase();\n        if (newValue !== 'client' && newValue !== 'server') {\n            newValue = 'client';\n        }\n        this._sortingMode = newValue;\n    }\n\n    get sortingMode(): string {\n        return this._sortingMode;\n    }\n\n    constructor(\n        private thumbnailService: ThumbnailService,\n        private contentService: ContentService,\n        schema: DataColumn[] = [],\n        sorting?: DataSorting,\n        sortingMode: string = 'client',\n        allowDropFiles: boolean = false\n    ) {\n        this.rows = [];\n        this.columns = schema || [];\n        this.sorting = sorting;\n        this.sortingMode = sortingMode;\n        this.allowDropFiles = allowDropFiles;\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    // TODO: disable this api\n    setRows(rows: Array<DataRow>) {\n        this.rows = rows || [];\n        this.sort();\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): any {\n        if (!row) {\n            throw new Error(ERR_ROW_NOT_FOUND);\n        }\n        if (!col) {\n            throw new Error(ERR_COL_NOT_FOUND);\n        }\n        const dataRow = row as ShareDataRow;\n        const value: any = row.getValue(col.key);\n        if (dataRow.cache[col.key]) {\n            return dataRow.cache[col.key];\n        }\n\n        if (col.key === '$thumbnail') {\n            if (this.imageResolver) {\n                const resolved = this.imageResolver(row, col);\n                if (resolved) {\n                    return resolved;\n                }\n            }\n\n            const node = row.node;\n\n            if (node.entry.isFolder) {\n                return this.getFolderIcon(node);\n            }\n\n            if (node.entry.isFile) {\n                if (this.thumbnails) {\n                    return this.getDocumentThumbnailUrl(node);\n                }\n            }\n\n            if (node.entry.content) {\n                const mimeType = node.entry.content.mimeType;\n                if (mimeType) {\n                    return this.thumbnailService.getMimeTypeIcon(mimeType);\n                }\n            }\n\n            return this.thumbnailService.getDefaultMimeTypeIcon();\n        }\n\n        if (col.type === 'image') {\n            if (this.imageResolver) {\n                const resolved = this.imageResolver(row, col);\n                if (resolved) {\n                    return resolved;\n                }\n            }\n        }\n\n        return dataRow.cacheValue(col.key, value);\n    }\n\n    /**\n     * Gets a thumbnail URL for the given document node.\n     *\n     * @param node Node or Node ID to get URL for.\n     * @param attachment Toggles whether to retrieve content as an attachment for download\n     * @param ticket Custom ticket to use for authentication\n     * @returns URL string\n     */\n    private getDocumentThumbnailUrl(node: NodeEntry, attachment?: boolean, ticket?: string): string {\n        let resultUrl: string;\n\n        if (node) {\n            let nodeId: string;\n\n            if (typeof node === 'string') {\n                nodeId = node;\n            } else if (node.entry) {\n                nodeId = node.entry.id;\n            }\n\n            resultUrl = this.contentService.getDocumentThumbnailUrl(nodeId, attachment, ticket);\n        }\n\n        return resultUrl || this.thumbnailService.getMimeTypeIcon(node.entry.content.mimeType);\n    }\n\n    getSorting(): DataSorting {\n        return this.sorting;\n    }\n\n    setSorting(sorting: DataSorting): void {\n        this.sorting = sorting;\n\n        this.sortRows(this.rows, this.sorting);\n    }\n\n    sort(key?: string, direction?: string): void {\n        const sorting = this.sorting || new DataSorting();\n        if (key) {\n            sorting.key = key;\n            sorting.direction = direction || 'asc';\n        }\n        this.setSorting(sorting);\n    }\n\n    setFilter(filter: RowFilter) {\n        this.filter = filter;\n    }\n\n    setImageResolver(resolver: any) {\n        this.imageResolver = resolver;\n    }\n\n    private getFolderIcon(node: any) {\n        if (this.isSmartFolder(node)) {\n            return this.thumbnailService.getMimeTypeIcon('smartFolder');\n        } else if (this.isRuleFolder(node)) {\n            return this.thumbnailService.getMimeTypeIcon('ruleFolder');\n        } else if (this.isALinkFolder(node)) {\n            return this.thumbnailService.getMimeTypeIcon('linkFolder');\n        } else {\n            return this.thumbnailService.getMimeTypeIcon('folder');\n        }\n    }\n\n    isSmartFolder(node: any) {\n        const nodeAspects = this.getNodeAspectNames(node);\n        return nodeAspects.indexOf('smf:customConfigSmartFolder') > -1 || nodeAspects.indexOf('smf:systemConfigSmartFolder') > -1;\n    }\n\n    isRuleFolder(node: any) {\n        const nodeAspects = this.getNodeAspectNames(node);\n        return nodeAspects.indexOf('rule:rules') > -1;\n    }\n\n    isALinkFolder(node: any) {\n        const nodeType = node.entry ? node.entry.nodeType : node.nodeType;\n        return nodeType === 'app:folderlink';\n    }\n\n    private getNodeAspectNames(node: any): any[] {\n        return node.entry?.aspectNames ? node.entry.aspectNames : node.aspectNames ? node.aspectNames : [];\n    }\n\n    private sortRows(rows: DataRow[], sorting: DataSorting) {\n        if (this.sortingMode === 'server') {\n            return;\n        }\n\n        const options: Intl.CollatorOptions = {};\n\n        if (sorting?.key && rows?.length) {\n            if (sorting.key.includes('sizeInBytes') || sorting.key === 'name') {\n                options.numeric = true;\n            }\n\n            rows.sort((a: ShareDataRow, b: ShareDataRow) => {\n                if (a.node.entry.isFolder !== b.node.entry.isFolder) {\n                    return a.node.entry.isFolder ? -1 : 1;\n                }\n\n                let left = a.getValue(sorting.key);\n                if (left) {\n                    left = left instanceof Date ? left.valueOf().toString() : left.toString();\n                } else {\n                    left = '';\n                }\n\n                let right = b.getValue(sorting.key);\n                if (right) {\n                    right = right instanceof Date ? right.valueOf().toString() : right.toString();\n                } else {\n                    right = '';\n                }\n\n                return sorting.direction === 'asc' ? left.localeCompare(right, undefined, options) : right.localeCompare(left, undefined, options);\n            });\n        }\n    }\n\n    public loadPage(nodePaging: NodePaging, merge: boolean = false, allowDropFiles?: boolean) {\n        let shareDataRows: ShareDataRow[] = [];\n        if (allowDropFiles !== undefined) {\n            this.allowDropFiles = allowDropFiles;\n        }\n        if (nodePaging?.list) {\n            const nodeEntries: NodeEntry[] = nodePaging.list.entries;\n            if (nodeEntries?.length) {\n                shareDataRows = nodeEntries.map(\n                    (item) => new ShareDataRow(item, this.contentService, this.permissionsStyle, this.thumbnailService, this.allowDropFiles)\n                );\n\n                if (this.filter) {\n                    shareDataRows = shareDataRows.filter(this.filter);\n                }\n\n                if (this.sortingMode !== 'server') {\n                    // Sort by first sortable or just first column\n                    if (this.columns?.length) {\n                        const sorting = this.getSorting();\n                        if (sorting) {\n                            this.sortRows(shareDataRows, sorting);\n                        } else {\n                            const sortable = this.columns.filter((c) => c.sortable);\n                            if (sortable.length > 0) {\n                                this.sort(sortable[0].key, 'asc');\n                            } else {\n                                this.sort(this.columns[0].key, 'asc');\n                            }\n                        }\n                    }\n                }\n            }\n        }\n\n        if (merge) {\n            const listPrunedDuplicate = shareDataRows.filter((elementToFilter: any) => {\n                const isPresent = this.rows.find((currentRow: any) => currentRow.obj.entry.id === elementToFilter.obj.entry.id);\n\n                return !isPresent;\n            });\n\n            this.rows = this.rows.concat(listPrunedDuplicate);\n        } else {\n            this.rows = shareDataRows;\n        }\n    }\n\n    getSelectedRows(): DataRow[] {\n        return this.rows.filter((row: DataRow) => row.isSelected);\n    }\n\n    getRowByNodeId(nodeId: string): DataRow {\n        return this.rows.find((row: DataRow) => row.node.entry.id === nodeId);\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 no-shadow */\n/* eslint-disable @typescript-eslint/naming-convention */\n\nexport class ContentActionModel {\n    icon: string;\n    title: string;\n    handler: ContentActionHandler;\n    execute: (...args) => void;\n    target: string;\n    permission: string;\n    disableWithNoPermission: boolean = false;\n    disabled: boolean | ((...args) => boolean) = false;\n    visible: boolean | ((...args) => boolean) = true;\n\n    constructor(obj?: any) {\n        if (obj) {\n            this.icon = obj.icon;\n            this.title = obj.title;\n            this.handler = obj.handler;\n            this.execute = obj.execute;\n            this.target = obj.target;\n            this.permission = obj.permission;\n            this.disableWithNoPermission = obj.disableWithNoPermission;\n\n            if (Object.prototype.hasOwnProperty.call(obj, 'disabled')) {\n                this.disabled = obj.disabled;\n            }\n\n            if (Object.prototype.hasOwnProperty.call(obj, 'visible')) {\n                this.visible = obj.visible;\n            }\n        }\n    }\n}\n\nexport enum ContentActionTarget {\n    Document = 'document',\n    Folder = 'folder',\n    All = 'all'\n}\n\nexport type ContentActionHandler = (obj: any, target?: any, permission?: string) => any;\n\nexport class DocumentActionModel extends ContentActionModel {\n    constructor(json?: any) {\n        super(json);\n        this.target = 'document';\n    }\n}\n\nexport class FolderActionModel extends ContentActionModel {\n    constructor(json?: any) {\n        super(json);\n        this.target = 'folder';\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 presetsDefaultModel = {\n    '-trashcan-': [\n        {\n            key: '$thumbnail',\n            type: 'image',\n            srTitle: 'ADF-DOCUMENT-LIST.LAYOUT.THUMBNAIL',\n            sortable: false\n        },\n        {\n            key: 'name',\n            type: 'text',\n            title: 'ADF-DOCUMENT-LIST.LAYOUT.NAME',\n            cssClass: 'full-width ellipsis-cell',\n            sortable: true\n        },\n        {\n            key: 'path',\n            type: 'location',\n            title: 'ADF-DOCUMENT-LIST.LAYOUT.LOCATION',\n            sortable: true\n        },\n        {\n            key: 'content.sizeInBytes',\n            type: 'fileSize',\n            title: 'ADF-DOCUMENT-LIST.LAYOUT.SIZE',\n            sortable: true\n        },\n        {\n            key: 'archivedAt',\n            type: 'date',\n            title: 'ADF-DOCUMENT-LIST.LAYOUT.DELETED_ON',\n            format: 'timeAgo',\n            sortable: true\n        },\n        {\n            key: 'archivedByUser.displayName',\n            type: 'text',\n            title: 'ADF-DOCUMENT-LIST.LAYOUT.DELETED_BY',\n            sortable: true\n        }\n    ],\n    '-sites-': [\n        {\n            key: '$thumbnail',\n            type: 'image',\n            srTitle: 'ADF-DOCUMENT-LIST.LAYOUT.THUMBNAIL',\n            sortable: false\n        },\n        {\n            key: 'title',\n            type: 'text',\n            title: 'ADF-DOCUMENT-LIST.LAYOUT.NAME',\n            cssClass: 'full-width ellipsis-cell',\n            sortable: true\n        },\n        {\n            key: 'visibility',\n            type: 'text',\n            title: 'ADF-DOCUMENT-LIST.LAYOUT.STATUS',\n            sortable: true\n        }\n    ],\n    '-mysites-': [\n        {\n            key: '$thumbnail',\n            type: 'image',\n            srTitle: 'ADF-DOCUMENT-LIST.LAYOUT.THUMBNAIL',\n            sortable: false\n        },\n        {\n            key: 'title',\n            type: 'text',\n            title: 'ADF-DOCUMENT-LIST.LAYOUT.NAME',\n            cssClass: 'full-width ellipsis-cell',\n            sortable: true\n        },\n        {\n            key: 'visibility',\n            type: 'text',\n            title: 'ADF-DOCUMENT-LIST.LAYOUT.STATUS',\n            sortable: true\n        }\n    ],\n    '-favorites-': [\n        {\n            key: '$thumbnail',\n            type: 'image',\n            srTitle: 'ADF-DOCUMENT-LIST.LAYOUT.THUMBNAIL',\n            sortable: false\n        },\n        {\n            key: 'name',\n            type: 'text',\n            title: 'ADF-DOCUMENT-LIST.LAYOUT.NAME',\n            cssClass: 'full-width ellipsis-cell',\n            sortable: true\n        },\n        {\n            key: 'path',\n            type: 'location',\n            title: 'ADF-DOCUMENT-LIST.LAYOUT.LOCATION',\n            sortable: true\n        },\n        {\n            key: 'content.sizeInBytes',\n            type: 'fileSize',\n            title: 'ADF-DOCUMENT-LIST.LAYOUT.SIZE',\n            sortable: true\n        },\n        {\n            key: 'modifiedAt',\n            type: 'date',\n            title: 'ADF-DOCUMENT-LIST.LAYOUT.MODIFIED_ON',\n            format: 'timeAgo',\n            sortable: true\n        },\n        {\n            key: 'modifiedByUser.displayName',\n            type: 'text',\n            title: 'ADF-DOCUMENT-LIST.LAYOUT.MODIFIED_BY',\n            sortable: true\n        }\n    ],\n    '-recent-': [\n        {\n            key: '$thumbnail',\n            type: 'image',\n            srTitle: 'ADF-DOCUMENT-LIST.LAYOUT.THUMBNAIL',\n            sortable: false\n        },\n        {\n            key: 'name',\n            type: 'text',\n            title: 'ADF-DOCUMENT-LIST.LAYOUT.NAME',\n            cssClass: 'full-width ellipsis-cell',\n            sortable: true\n        },\n        {\n            key: 'path',\n            type: 'location',\n            title: 'ADF-DOCUMENT-LIST.LAYOUT.LOCATION',\n            cssClass: 'ellipsis-cell',\n            sortable: true\n        },\n        {\n            key: 'content.sizeInBytes',\n            type: 'fileSize',\n            title: 'ADF-DOCUMENT-LIST.LAYOUT.SIZE',\n            sortable: true\n        },\n        {\n            key: 'modifiedAt',\n            type: 'date',\n            title: 'ADF-DOCUMENT-LIST.LAYOUT.MODIFIED_ON',\n            format: 'timeAgo',\n            sortable: true\n        }\n    ],\n    '-sharedlinks-': [\n        {\n            key: '$thumbnail',\n            type: 'image',\n            srTitle: 'ADF-DOCUMENT-LIST.LAYOUT.THUMBNAIL',\n            sortable: false\n        },\n        {\n            key: 'name',\n            type: 'text',\n            title: 'ADF-DOCUMENT-LIST.LAYOUT.NAME',\n            cssClass: 'full-width ellipsis-cell',\n            sortable: true\n        },\n        {\n            key: 'path',\n            type: 'location',\n            title: 'ADF-DOCUMENT-LIST.LAYOUT.LOCATION',\n            cssClass: 'ellipsis-cell',\n            sortable: true\n        },\n        {\n            key: 'content.sizeInBytes',\n            type: 'fileSize',\n            title: 'ADF-DOCUMENT-LIST.LAYOUT.SIZE',\n            sortable: true\n        },\n        {\n            key: 'modifiedAt',\n            type: 'date',\n            title: 'ADF-DOCUMENT-LIST.LAYOUT.MODIFIED_ON',\n            format: 'timeAgo',\n            sortable: true\n        },\n        {\n            key: 'modifiedByUser.displayName',\n            type: 'text',\n            title: 'ADF-DOCUMENT-LIST.LAYOUT.MODIFIED_BY',\n            sortable: true\n        },\n        {\n            key: 'sharedByUser.displayName',\n            type: 'text',\n            title: 'ADF-DOCUMENT-LIST.LAYOUT.SHARED_BY',\n            sortable: true\n        }\n    ],\n    default: [\n        {\n            key: '$thumbnail',\n            type: 'image',\n            srTitle: 'ADF-DOCUMENT-LIST.LAYOUT.THUMBNAIL',\n            sortable: false\n        },\n        {\n            key: 'name',\n            type: 'text',\n            title: 'ADF-DOCUMENT-LIST.LAYOUT.NAME',\n            cssClass: 'full-width ellipsis-cell',\n            sortable: true\n        },\n        {\n            key: 'content.sizeInBytes',\n            type: 'fileSize',\n            title: 'ADF-DOCUMENT-LIST.LAYOUT.SIZE',\n            sortable: true\n        },\n        {\n            key: 'modifiedAt',\n            type: 'date',\n            title: 'ADF-DOCUMENT-LIST.LAYOUT.MODIFIED_ON',\n            format: 'timeAgo',\n            sortable: true\n        },\n        {\n            key: 'modifiedByUser.displayName',\n            type: 'text',\n            title: 'ADF-DOCUMENT-LIST.LAYOUT.MODIFIED_BY',\n            sortable: true\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 } from '@angular/core';\nimport { Node } from '@alfresco/js-api';\nimport { AuthenticationService } from '@alfresco/adf-core';\nimport { isAfter } from 'date-fns';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class LockService {\n    constructor(private authService: AuthenticationService) {}\n\n    isLocked(node: Node): boolean {\n        let isLocked = false;\n        if (this.hasLockConfigured(node)) {\n            if (this.isReadOnlyLock(node)) {\n                isLocked = !this.isLockExpired(node);\n            } else if (this.isLockOwnerAllowed(node)) {\n                isLocked = this.authService.getEcmUsername() !== node.properties['cm:lockOwner'].id;\n                if (this.isLockExpired(node)) {\n                    isLocked = false;\n                }\n            }\n        }\n        return isLocked;\n    }\n\n    private hasLockConfigured(node: Node): boolean {\n        return node.isFile && node.isLocked && node.properties['cm:lockType'];\n    }\n\n    private isReadOnlyLock(node: Node): boolean {\n        return node.properties['cm:lockType'] === 'READ_ONLY_LOCK' && node.properties['cm:lockLifetime'] === 'PERSISTENT';\n    }\n\n    private isLockOwnerAllowed(node: Node): boolean {\n        return node.properties['cm:lockType'] === 'WRITE_LOCK' && node.properties['cm:lockLifetime'] === 'PERSISTENT';\n    }\n\n    private getLockExpiryTime(node: Node): Date | undefined {\n        if (node.properties['cm:expiryDate']) {\n            return new Date(node.properties['cm:expiryDate']);\n        }\n        return undefined;\n    }\n\n    private isLockExpired(node: Node): boolean {\n        const expiryLockTime = this.getLockExpiryTime(node);\n        if (expiryLockTime) {\n            return isAfter(new Date(), expiryLockTime);\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\n/* eslint-disable rxjs/no-subject-value */\n/* eslint-disable @typescript-eslint/naming-convention */\n\nimport { InjectionToken } from '@angular/core';\n\nexport const ADF_DOCUMENT_PARENT_COMPONENT = new InjectionToken(\n    'ADF_DOCUMENT_PARENT_COMPONENT'\n);\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DownloadEntry, DownloadBodyCreate, DownloadsApi } from '@alfresco/js-api';\nimport { Injectable } from '@angular/core';\nimport { Observable, from } from 'rxjs';\nimport { AlfrescoApiService } from '../../../services/alfresco-api.service';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class DownloadZipService {\n    private _downloadsApi: DownloadsApi;\n    get downloadsApi(): DownloadsApi {\n        this._downloadsApi = this._downloadsApi ?? new DownloadsApi(this.apiService.getInstance());\n        return this._downloadsApi;\n    }\n\n    constructor(private apiService: AlfrescoApiService) {}\n\n    /**\n     * Creates a new download.\n     *\n     * @param payload Object containing the node IDs of the items to add to the ZIP file\n     * @returns Status object for the download\n     */\n    createDownload(payload: DownloadBodyCreate): Observable<DownloadEntry> {\n        return from(this.downloadsApi.createDownload(payload));\n    }\n\n    /**\n     * Gets status information for a download node.\n     *\n     * @param downloadId ID of the download node\n     * @returns Status object for the download\n     */\n    getDownload(downloadId: string): Observable<DownloadEntry> {\n        return from(this.downloadsApi.getDownload(downloadId));\n    }\n\n    /**\n     * Cancels a download.\n     *\n     * @param downloadId ID of the target download node\n     */\n    cancelDownload(downloadId: string) {\n        this.downloadsApi.cancelDownload(downloadId);\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, Inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { NodesApiService } from '../../common/services/nodes-api.service';\nimport { DownloadZipService } from './services/download-zip.service';\nimport { ContentService } from '../../common/services/content.service';\nimport { FileDownloadStatus } from '@alfresco/js-api';\n\n@Component({\n    selector: 'adf-download-zip-dialog',\n    templateUrl: './download-zip.dialog.html',\n    styleUrls: ['./download-zip.dialog.scss'],\n    host: { class: 'adf-download-zip-dialog' },\n    encapsulation: ViewEncapsulation.None\n})\nexport class DownloadZipDialogComponent implements OnInit {\n    // flag for async threads\n    cancelled = false;\n    downloadId: string;\n    percentageDone = 0;\n\n    constructor(\n        private dialogRef: MatDialogRef<DownloadZipDialogComponent>,\n        @Inject(MAT_DIALOG_DATA)\n        public data: any,\n        private downloadZipService: DownloadZipService,\n        private nodeService: NodesApiService,\n        private contentService: ContentService\n    ) {}\n\n    ngOnInit() {\n        if (this.data?.nodeIds?.length > 0) {\n            if (!this.cancelled) {\n                this.downloadZip(this.data.nodeIds);\n            }\n        }\n    }\n\n    cancelDownload() {\n        this.cancelled = true;\n        this.downloadZipService.cancelDownload(this.downloadId);\n        this.dialogRef.close(false);\n    }\n\n    downloadZip(nodeIds: string[]) {\n        if (nodeIds && nodeIds.length > 0) {\n            this.downloadZipService.createDownload({ nodeIds }).subscribe((data) => {\n                if (data?.entry?.id) {\n                    const url = this.contentService.getContentUrl(data.entry.id, true);\n\n                    this.nodeService.getNode(data.entry.id).subscribe((downloadNode) => {\n                        const fileName = downloadNode.name;\n                        this.downloadId = data.entry.id;\n                        this.waitAndDownload(data.entry.id, url, fileName);\n                    });\n                }\n            });\n        }\n    }\n\n    waitAndDownload(downloadId: string, url: string, fileName: string) {\n        if (this.cancelled) {\n            return;\n        }\n\n        this.downloadZipService.getDownload(downloadId).subscribe((downloadEntry) => {\n            if (downloadEntry.entry) {\n                if (downloadEntry.entry.status === FileDownloadStatus.IN_PROGRESS) {\n                    this.percentageDone = Number(((downloadEntry.entry.bytesAdded * 100) / downloadEntry.entry.totalBytes).toFixed(2));\n                }\n\n                if (downloadEntry.entry.status === FileDownloadStatus.DONE) {\n                    this.percentageDone = 100;\n                    this.download(url, fileName);\n                } else {\n                    setTimeout(() => {\n                        this.waitAndDownload(downloadId, url, fileName);\n                    }, 1000);\n                }\n            }\n        });\n    }\n\n    download(url: string, fileName: string) {\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        this.dialogRef.close(true);\n    }\n}\n","<h1 matDialogTitle>{{ 'CORE.DIALOG.DOWNLOAD_ZIP.TITLE' | translate }}</h1>\n<div mat-dialog-content class=\"adf-dialog-content\">\n    <mat-progress-bar value=\"{{ percentageDone }}\" color=\"primary\" mode=\"determinate\" />\n    <div class=\"adf-dialog-content-progress-text\">\n        <span class=\"adf-dialog-content-progress-text-percentage\">\n            {{ percentageDone }}%\n        </span>\n        {{ 'CORE.DIALOG.DOWNLOAD_ZIP.COMPLETE' | translate }}\n    </div>\n</div>\n<mat-dialog-actions align=\"end\">\n    <button class=\"adf-download-zip-dialog-button\" mat-button color=\"primary\" id=\"cancel-button\" (click)=\"cancelDownload()\">\n        {{ 'CORE.DIALOG.DOWNLOAD_ZIP.ACTIONS.CANCEL' | 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 { Directive, Input, HostListener } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { DownloadService } from '@alfresco/adf-core';\nimport { DownloadZipDialogComponent } from '../dialogs/download-zip/download-zip.dialog';\nimport { ContentApi, NodeEntry, VersionEntry } from '@alfresco/js-api';\nimport { AlfrescoApiService } from '../services/alfresco-api.service';\n\n/**\n * Directive selectors without adf- prefix will be deprecated on 3.0.0\n */\n@Directive({\n    standalone: true,\n    // eslint-disable-next-line @angular-eslint/directive-selector\n    selector: '[adfNodeDownload]'\n})\nexport class NodeDownloadDirective {\n    private _contentApi: ContentApi;\n    get contentApi(): ContentApi {\n        this._contentApi = this._contentApi ?? new ContentApi(this.apiService.getInstance());\n        return this._contentApi;\n    }\n\n    /** Nodes to download. */\n    @Input('adfNodeDownload')\n    nodes: NodeEntry | NodeEntry[];\n\n    /** Node's version to download. */\n    @Input()\n    version: VersionEntry;\n\n    @HostListener('click')\n    onClick() {\n        this.downloadNodes(this.nodes);\n    }\n\n    constructor(private apiService: AlfrescoApiService, private downloadService: DownloadService, private dialog: MatDialog) {}\n\n    /**\n     * Downloads multiple selected nodes.\n     * Packs result into a .ZIP archive if there is more than one node selected.\n     *\n     * @param selection Multiple selected nodes to download\n     */\n    downloadNodes(selection: NodeEntry | Array<NodeEntry>) {\n        if (!this.isSelectionValid(selection)) {\n            return;\n        }\n        if (selection instanceof Array) {\n            if (selection.length === 1) {\n                this.downloadNode(selection[0]);\n            } else {\n                this.downloadZip(selection);\n            }\n        } else {\n            this.downloadNode(selection);\n        }\n    }\n\n    /**\n     * Downloads a single node.\n     * Packs result into a .ZIP archive is the node is a Folder.\n     *\n     * @param node Node to download\n     */\n    downloadNode(node: NodeEntry) {\n        if (node?.entry) {\n            const entry = node.entry;\n\n            if (entry.isFile) {\n                this.downloadFile(node);\n            }\n\n            if (entry.isFolder) {\n                this.downloadZip([node]);\n            }\n\n            // Check if there's nodeId for Shared Files\n            if (!entry.isFile && !entry.isFolder && (entry as any).nodeId) {\n                this.downloadFile(node);\n            }\n        }\n    }\n\n    private isSelectionValid(selection: NodeEntry | Array<NodeEntry>) {\n        return selection || (selection instanceof Array && selection.length > 0);\n    }\n\n    private downloadFile(node: NodeEntry) {\n        if (node?.entry) {\n            // nodeId for Shared node\n            const id = (node.entry as any).nodeId || node.entry.id;\n\n            let url: string;\n            let fileName: string;\n            if (this.version) {\n                url = this.contentApi.getVersionContentUrl(id, this.version.entry.id, true);\n                fileName = this.version.entry.name;\n            } else {\n                url = this.contentApi.getContentUrl(id, true);\n                fileName = node.entry.name;\n            }\n\n            this.downloadService.downloadUrl(url, fileName);\n        }\n    }\n\n    private downloadZip(selection: Array<NodeEntry>) {\n        if (selection && selection.length > 0) {\n            // nodeId for Shared node\n            const nodeIds = selection.map((node: any) => node.entry.nodeId || node.entry.id);\n\n            this.dialog.open(DownloadZipDialogComponent, {\n                width: '600px',\n                disableClose: true,\n                data: {\n                    nodeIds\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 { Component, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';\nimport { NodeEntry } from '@alfresco/js-api';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { NodeDownloadDirective } from '../../../directives/node-download.directive';\n\n@Component({\n    selector: 'adf-file-auto-download',\n    standalone: true,\n    imports: [CommonModule, MatDialogModule, TranslateModule, MatButtonModule, NodeDownloadDirective],\n    templateUrl: './file-auto-download.component.html'\n})\nexport class FileAutoDownloadComponent {\n    constructor(@Inject(MAT_DIALOG_DATA) public node: NodeEntry) {}\n}\n","<div mat-dialog-title>\n    <h3>{{ 'ADF-DOCUMENT-LIST.FILE_AUTO_DOWNLOAD_DIALOG.HEADER' | translate }}</h3>\n</div>\n<mat-dialog-content>\n    {{ 'ADF-DOCUMENT-LIST.FILE_AUTO_DOWNLOAD_DIALOG.LABEL' | translate }}\n</mat-dialog-content>\n<mat-dialog-actions align=\"end\">\n    <button\n        mat-button\n        mat-dialog-close\n        id=\"cancelButton\"\n        [attr.aria-label]=\"'ADF-DOCUMENT-LIST.FILE_AUTO_DOWNLOAD_DIALOG.ACTIONS.CANCEL' | translate\">\n        {{ 'ADF-DOCUMENT-LIST.FILE_AUTO_DOWNLOAD_DIALOG.ACTIONS.CANCEL' | translate }}\n    </button>\n    <button\n        mat-button\n        mat-dialog-close\n        id=\"downloadButton\"\n        color=\"primary\"\n        [attr.aria-label]=\"'ADF-DOCUMENT-LIST.FILE_AUTO_DOWNLOAD_DIALOG.ACTIONS.DOWNLOAD' | translate\"\n        [adfNodeDownload]=\"node\">\n        {{ 'ADF-DOCUMENT-LIST.FILE_AUTO_DOWNLOAD_DIALOG.ACTIONS.DOWNLOAD' | 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 { BaseEvent } from '@alfresco/adf-core';\nimport { NodeEntry, Node } from '@alfresco/js-api';\n\nexport class NodeEntityEvent extends BaseEvent<NodeEntry> {\n    constructor(nodeEntry: NodeEntry) {\n        super();\n        this.value = nodeEntry;\n    }\n}\n\nexport class NodeEntryEvent extends BaseEvent<Node> {\n    constructor(node: Node) {\n        super();\n        this.value = node;\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 { BehaviorSubject, from, Observable, ReplaySubject, Subject } from 'rxjs';\nimport { AppConfigService } from '@alfresco/adf-core';\nimport {\n    RequestFacetFields,\n    RequestHighlight,\n    RequestScope,\n    RequestSortDefinitionInner,\n    ResultSetPaging,\n    SEARCH_LANGUAGE,\n    SearchApi,\n    SearchRequest\n} from '@alfresco/js-api';\nimport { SearchCategory } from '../models/search-category.interface';\nimport { FilterQuery } from '../models/filter-query.interface';\nimport { SearchRange } from '../models/search-range.interface';\nimport { SearchConfiguration } from '../models/search-configuration.interface';\nimport { FacetQuery } from '../models/facet-query.interface';\nimport { SearchSortingDefinition } from '../models/search-sorting-definition.interface';\nimport { FacetField } from '../models/facet-field.interface';\nimport { FacetFieldBucket } from '../models/facet-field-bucket.interface';\nimport { SearchForm } from '../models/search-form.interface';\nimport { AlfrescoApiService } from '../../services/alfresco-api.service';\nimport { Buffer } from 'buffer';\nimport { inject } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nexport abstract class BaseQueryBuilderService {\n    private readonly router = inject(Router);\n    private readonly activatedRoute = inject(ActivatedRoute);\n    private _searchApi: SearchApi;\n    get searchApi(): SearchApi {\n        this._searchApi = this._searchApi ?? new SearchApi(this.alfrescoApiService.getInstance());\n        return this._searchApi;\n    }\n\n    /*  Stream that emits the search configuration whenever the user change the search forms */\n    configUpdated = new Subject<SearchConfiguration>();\n\n    /*  Stream that emits the event each time when search filter finishes loading initial value */\n    filterLoaded = new Subject<void>();\n\n    /*  Stream that emits the query before search whenever user search  */\n    updated = new Subject<SearchRequest>();\n\n    /*  Stream that emits the results whenever user search  */\n    executed = new Subject<ResultSetPaging>();\n\n    /*  Stream that emits the error whenever user search  */\n    error = new Subject();\n\n    /*  Stream that emits search forms  */\n    searchForms = new ReplaySubject<SearchForm[]>(1);\n\n    /*  Stream that emits void when change in filterQueries  */\n    filterQueryUpdate = new Subject<void>();\n\n    /*  Stream that emits the initial value for some or all search filters */\n    populateFilters = new BehaviorSubject<{ [key: string]: any }>({});\n\n    categories: SearchCategory[] = [];\n    queryFragments: { [id: string]: string } = {};\n    filterQueries: FilterQuery[] = [];\n    filterRawParams: { [key: string]: any } = {};\n    paging: { maxItems?: number; skipCount?: number } = null;\n    sorting: SearchSortingDefinition[] = [];\n    sortingOptions: SearchSortingDefinition[] = [];\n    private encodedQuery: string;\n    private scope: RequestScope;\n    private selectedConfiguration: number;\n    private _userQuery = '';\n\n    protected userFacetBuckets: { [key: string]: FacetFieldBucket[] } = {};\n\n    get userQuery(): string {\n        return this._userQuery;\n    }\n\n    set userQuery(value: string) {\n        value = (value || '').trim();\n        this._userQuery = value ? `(${value})` : '';\n    }\n\n    config: SearchConfiguration = {\n        categories: []\n    };\n\n    // TODO: to be supported in future iterations\n    ranges: { [id: string]: SearchRange } = {};\n\n    protected constructor(protected readonly appConfig: AppConfigService, protected readonly alfrescoApiService: AlfrescoApiService) {\n        this.resetToDefaults();\n    }\n\n    public abstract loadConfiguration(): SearchConfiguration | SearchConfiguration[];\n\n    public abstract isFilterServiceActive(): boolean;\n\n    public resetToDefaults(withNavigate = false) {\n        if (withNavigate) {\n            this.router.navigate([], {\n                queryParams: { q: null },\n                relativeTo: this.activatedRoute,\n                queryParamsHandling: 'merge'\n            });\n        }\n        const currentConfig = this.getDefaultConfiguration();\n        this.resetSearchOptions();\n        this.configUpdated.next(currentConfig);\n        this.searchForms.next(this.getSearchFormDetails());\n        this.setUpSearchConfiguration(currentConfig);\n    }\n\n    public getDefaultConfiguration(): SearchConfiguration | undefined {\n        const configurations = this.loadConfiguration();\n\n        if (Array.isArray(configurations)) {\n            if (this.selectedConfiguration !== undefined) {\n                return configurations[this.selectedConfiguration];\n            }\n\n            return configurations.find((configuration) => configuration.default);\n        }\n        return configurations;\n    }\n\n    public updateSelectedConfiguration(index: number): void {\n        const currentConfig = this.loadConfiguration();\n        if (Array.isArray(currentConfig) && currentConfig[index] !== undefined) {\n            this.selectedConfiguration = index;\n            this.configUpdated.next(currentConfig[index]);\n            this.searchForms.next(this.getSearchFormDetails());\n            this.resetSearchOptions();\n            this.setUpSearchConfiguration(currentConfig[index]);\n            this.update();\n        }\n    }\n\n    private resetSearchOptions(): void {\n        this.categories = [];\n        this.queryFragments = {};\n        this.filterQueries = [];\n        this.sorting = [];\n        this.sortingOptions = [];\n        this.userFacetBuckets = {};\n        this.scope = null;\n        this.filterRawParams = {};\n        this._userQuery = '';\n        this.populateFilters.next({});\n    }\n\n    public getSearchFormDetails(): SearchForm[] {\n        const configurations = this.loadConfiguration();\n        if (Array.isArray(configurations)) {\n            return configurations.map((configuration, index) => ({\n                index,\n                name: configuration.name || 'SEARCH.UNKNOWN_CONFIGURATION',\n                default: configuration.default || false,\n                selected: this.selectedConfiguration !== undefined ? index === this.selectedConfiguration : configuration.default\n            }));\n        } else if (configurations) {\n            return [\n                {\n                    index: 0,\n                    name: configurations.name || 'SEARCH.UNKNOWN_CONFIGURATION',\n                    default: true,\n                    selected: true\n                }\n            ];\n        }\n        return [];\n    }\n\n    private setUpSearchConfiguration(currentConfiguration: SearchConfiguration) {\n        if (currentConfiguration) {\n            this.config = JSON.parse(JSON.stringify(currentConfiguration));\n            this.categories = (this.config.categories || []).filter((category) => category.enabled);\n            this.filterQueries = this.config.filterQueries || [];\n            this.userFacetBuckets = {};\n            if (this.config.sorting) {\n                this.sorting = this.config.sorting.defaults || [];\n                this.sortingOptions = this.config.sorting.options || [];\n            }\n        }\n    }\n\n    /**\n     * Adds a facet bucket to a field.\n     *\n     * @param field The target field\n     * @param bucket Bucket to add\n     */\n    addUserFacetBucket(field: string, bucket: FacetFieldBucket) {\n        if (field && bucket) {\n            const buckets = this.userFacetBuckets[field] || [];\n            const existing = buckets.find((facetBucket) => facetBucket.label === bucket.label);\n            if (!existing) {\n                buckets.push(bucket);\n            }\n            this.userFacetBuckets[field] = buckets;\n        }\n    }\n\n    /**\n     * Gets the buckets currently added to a field\n     *\n     * @param field The target fields\n     * @returns Bucket array\n     */\n    getUserFacetBuckets(field: string) {\n        return this.userFacetBuckets[field] || [];\n    }\n\n    /**\n     * Removes an existing bucket from a field.\n     *\n     * @param field The target field\n     * @param bucket Bucket to remove\n     */\n    removeUserFacetBucket(field: string, bucket: FacetFieldBucket) {\n        if (field && bucket) {\n            const buckets = this.userFacetBuckets[field] || [];\n            this.userFacetBuckets[field] = buckets.filter((facetBucket) => facetBucket.label !== bucket.label);\n        }\n    }\n\n    /**\n     * Adds a filter query to the current query.\n     *\n     * @param query Query string to add\n     */\n    addFilterQuery(query: string): void {\n        if (query) {\n            const existing = this.filterQueries.find((filterQuery) => filterQuery.query === query);\n            if (!existing) {\n                this.filterQueries.push({ query });\n                this.filterQueryUpdate.next();\n            }\n        }\n    }\n\n    /**\n     * Removes an existing filter query.\n     *\n     * @param query The query to remove\n     */\n    removeFilterQuery(query: string): void {\n        if (query) {\n            this.filterQueries = this.filterQueries.filter((filterQuery) => filterQuery.query !== query);\n            this.filterQueryUpdate.next();\n        }\n    }\n\n    /**\n     * Gets a facet query by label.\n     *\n     * @param label Label of the query\n     * @returns Facet query data\n     */\n    getFacetQuery(label: string): FacetQuery {\n        if (label && this.hasFacetQueries) {\n            const result = this.config.facetQueries.queries.find((query) => query.label === label);\n            if (result) {\n                return { ...result };\n            }\n        }\n        return null;\n    }\n\n    /**\n     * Gets a facet field by label.\n     *\n     * @param label Label of the facet field\n     * @returns Facet field data\n     */\n    getFacetField(label: string): FacetField {\n        if (label) {\n            const fields = this.config.facetFields.fields || [];\n            const result = fields.find((field) => field.label === label);\n            if (result) {\n                result.label = this.getSupportedLabel(result.label);\n                return { ...result };\n            }\n        }\n        return null;\n    }\n\n    setScope(scope: RequestScope) {\n        this.scope = scope;\n    }\n\n    getScope(): RequestScope {\n        return this.scope;\n    }\n\n    /**\n     * Builds the current query and triggers the `updated` event.\n     *\n     * @param queryBody query settings\n     */\n    update(queryBody?: SearchRequest): void {\n        const query = queryBody ? queryBody : this.buildQuery();\n        this.updated.next(query);\n    }\n\n    /**\n     * Builds and executes the current query.\n     *\n     * @param updateQueryParams whether query params should be updated with encoded query\n     * @param queryBody query settings\n     */\n    async execute(updateQueryParams = true, queryBody?: SearchRequest) {\n        try {\n            const query = queryBody ? queryBody : this.buildQuery();\n            if (query) {\n                if (updateQueryParams) {\n                    this.updateSearchQueryParams();\n                }\n                const resultSetPaging: ResultSetPaging = await this.searchApi.search(query);\n                this.executed.next(resultSetPaging);\n            }\n        } catch (error) {\n            this.error.next(error);\n\n            this.executed.next({\n                list: {\n                    pagination: {\n                        totalItems: 0\n                    },\n                    entries: []\n                }\n            });\n        }\n    }\n\n    search(queryBody: SearchRequest): Observable<ResultSetPaging> {\n        const promise = this.searchApi.search(queryBody);\n\n        promise.then((resultSetPaging) => {\n            this.executed.next(resultSetPaging);\n        });\n\n        return from(promise);\n    }\n\n    /**\n     * Builds the current query.\n     *\n     * @returns The finished query\n     */\n    buildQuery(): SearchRequest {\n        const query = this.getFinalQuery();\n\n        const include = this.config.include || [];\n        if (include.length === 0) {\n            include.push('path', 'allowableOperations');\n        }\n\n        if (query) {\n            const result: SearchRequest = {\n                query: {\n                    query,\n                    language: SEARCH_LANGUAGE.AFTS\n                },\n                include,\n                paging: this.paging,\n                fields: this.config.fields,\n                filterQueries: this.filterQueries,\n                facetQueries: this.facetQueries,\n                facetIntervals: this.facetIntervals,\n                facetFields: this.facetFields,\n                sort: this.sort,\n                highlight: this.highlight\n            };\n\n            if (this.scope) {\n                result.scope = this.scope;\n            }\n\n            result['facetFormat'] = 'V2';\n            return result;\n        }\n\n        return null;\n    }\n\n    /**\n     * Gets the primary sorting definition.\n     *\n     * @returns The primary sorting definition\n     */\n    getPrimarySorting(): SearchSortingDefinition {\n        if (this.sorting?.length > 0) {\n            return this.sorting[0];\n        }\n        return null;\n    }\n\n    /**\n     * Gets all pre-configured sorting options that users can choose from.\n     *\n     * @returns Pre-configured sorting options\n     */\n    getSortingOptions(): SearchSortingDefinition[] {\n        return this.config?.sorting?.options || [];\n    }\n\n    /**\n     * Gets the query group.\n     *\n     * @param query Target query\n     * @returns Query group\n     */\n    getQueryGroup(query: FacetQuery): string {\n        return query.group || this.config.facetQueries.label || 'Facet Queries';\n    }\n\n    /**\n     * Checks if FacetQueries has been defined\n     *\n     * @returns True if defined, false otherwise\n     */\n    get hasFacetQueries(): boolean {\n        return this.config?.facetQueries?.queries?.length > 0;\n    }\n\n    /**\n     * Checks if FacetIntervals has been defined\n     *\n     * @returns True if defined, false otherwise\n     */\n    get hasFacetIntervals(): boolean {\n        return this.config?.facetIntervals?.intervals?.length > 0;\n    }\n\n    get hasFacetHighlight(): boolean {\n        return !!this.config?.highlight;\n    }\n\n    protected get sort(): RequestSortDefinitionInner[] {\n        return this.sorting.map((def) => ({\n            type: def.type,\n            field: def.field,\n            ascending: def.ascending\n        }));\n    }\n\n    protected get facetQueries(): FacetQuery[] {\n        if (this.hasFacetQueries) {\n            return this.config.facetQueries.queries.map((query) => {\n                query.group = this.getQueryGroup(query);\n                return { ...query };\n            });\n        }\n\n        return null;\n    }\n\n    protected get facetIntervals(): any {\n        if (this.hasFacetIntervals) {\n            const configIntervals = this.config.facetIntervals;\n\n            return {\n                intervals: configIntervals.intervals.map(\n                    (interval) =>\n                        ({\n                            label: this.getSupportedLabel(interval.label),\n                            field: interval.field,\n                            sets: interval.sets.map(\n                                (set) =>\n                                    ({\n                                        label: this.getSupportedLabel(set.label),\n                                        start: set.start,\n                                        end: set.end,\n                                        startInclusive: set.startInclusive,\n                                        endInclusive: set.endInclusive\n                                    } as any)\n                            )\n                        } as any)\n                )\n            };\n        }\n\n        return null;\n    }\n\n    protected get highlight(): RequestHighlight {\n        return this.hasFacetHighlight ? this.config.highlight : null;\n    }\n\n    protected getFinalQuery(): string {\n        let query = '';\n        if (this.userQuery) {\n            this.filterRawParams['userQuery'] = this.userQuery;\n        }\n        this.categories.forEach((facet) => {\n            const customQuery = this.queryFragments[facet.id];\n            if (customQuery) {\n                if (query.length > 0) {\n                    query += ' AND ';\n                }\n                query += `(${customQuery})`;\n            }\n        });\n\n        let result = [this.userQuery, query].filter((entry) => entry).join(' AND ');\n\n        if (this.userFacetBuckets) {\n            Object.keys(this.userFacetBuckets).forEach((key) => {\n                const subQuery = (this.userFacetBuckets[key] || [])\n                    .filter((bucket) => bucket.filterQuery)\n                    .map((bucket) => bucket.filterQuery)\n                    .join(' OR ');\n                if (subQuery) {\n                    if (result.length > 0) {\n                        result += ' AND ';\n                    }\n                    result += `(${subQuery})`;\n                }\n            });\n        }\n\n        return result;\n    }\n\n    protected get facetFields(): RequestFacetFields {\n        const facetFields = this.config.facetFields?.fields;\n\n        if (facetFields?.length > 0) {\n            return {\n                facets: facetFields.map(\n                    (facet) =>\n                        ({\n                            field: facet.field,\n                            mincount: facet.mincount,\n                            label: this.getSupportedLabel(facet.label),\n                            limit: facet.limit,\n                            offset: facet.offset,\n                            prefix: facet.prefix\n                        } as any)\n                )\n            };\n        }\n\n        return null;\n    }\n\n    /**\n     * Encloses a label name with double quotes if it contains whitespace characters.\n     *\n     * @param configLabel Original label text\n     * @returns Label, possibly with quotes if it contains spaces\n     */\n    getSupportedLabel(configLabel: string): string {\n        const spaceInsideLabelIndex = configLabel.search(/\\s/g);\n        if (spaceInsideLabelIndex > -1) {\n            return `\"${configLabel}\"`;\n        }\n        return configLabel;\n    }\n\n    /**\n     * Encodes filter configuration stored in filterRawParams object.\n     */\n    encodeQuery() {\n        this.encodedQuery = Buffer.from(JSON.stringify(this.filterRawParams)).toString('base64');\n    }\n\n    /**\n     * Encodes existing filters configuration and updates search query param value.\n     */\n    updateSearchQueryParams() {\n        this.encodeQuery();\n        this.router.navigate([], {\n            relativeTo: this.activatedRoute,\n            queryParams: { q: this.encodedQuery },\n            queryParamsHandling: 'merge'\n        });\n    }\n\n    /**\n     * Builds search query with provided user query, executes query, encodes latest filter config and navigates to search.\n     *\n     * @param query user query to search for\n     * @param searchUrl search url to navigate to\n     */\n    async navigateToSearch(query: string, searchUrl: string) {\n        this.userQuery = query;\n        await this.execute();\n        await this.router.navigate([searchUrl], {\n            queryParams: { q: this.encodedQuery },\n            queryParamsHandling: 'merge'\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 } from '@angular/core';\nimport { AppConfigService, DataSorting } from '@alfresco/adf-core';\nimport { SearchConfiguration } from '../models/search-configuration.interface';\nimport { BaseQueryBuilderService } from './base-query-builder.service';\nimport { SearchCategory } from '../models/search-category.interface';\nimport { Node } from '@alfresco/js-api';\nimport { filter } from 'rxjs/operators';\nimport { Observable } from 'rxjs';\nimport { SearchSortingDefinition } from '../models/search-sorting-definition.interface';\nimport { FilterSearch } from '../models/filter-search.interface';\nimport { NodesApiService } from '../../common/services/nodes-api.service';\nimport { AlfrescoApiService } from '../../services/alfresco-api.service';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class SearchHeaderQueryBuilderService extends BaseQueryBuilderService {\n    private customSources = ['-trashcan-', '-sharedlinks-', '-sites-', '-mysites-', '-favorites-', '-recent-', '-my-'];\n\n    activeFilters: FilterSearch[] = [];\n\n    constructor(appConfig: AppConfigService, alfrescoApiService: AlfrescoApiService, private nodeApiService: NodesApiService) {\n        super(appConfig, alfrescoApiService);\n\n        this.updated.pipe(filter((query) => !!query)).subscribe(() => {\n            this.execute();\n        });\n    }\n\n    public isFilterServiceActive(): boolean {\n        return true;\n    }\n\n    loadConfiguration(): SearchConfiguration {\n        return this.appConfig.get<SearchConfiguration>('search-headers');\n    }\n\n    setupCurrentPagination(maxItems: number, skipCount: number) {\n        if (!this.paging || (this.paging && this.paging.maxItems !== maxItems) || this.paging.skipCount !== skipCount) {\n            this.paging = { maxItems, skipCount };\n            this.execute();\n        }\n    }\n\n    setActiveFilter(columnActivated: string, filterValue: string) {\n        const selectedFilter = this.activeFilters.find((activeFilter) => activeFilter.key === columnActivated);\n        if (!selectedFilter) {\n            this.activeFilters.push({\n                key: columnActivated,\n                value: filterValue\n            });\n        } else {\n            selectedFilter.value = filterValue;\n        }\n    }\n\n    resetActiveFilters() {\n        this.activeFilters = [];\n    }\n\n    getActiveFilters(): FilterSearch[] {\n        return this.activeFilters;\n    }\n\n    isNoFilterActive(): boolean {\n        return this.activeFilters.length === 0;\n    }\n\n    removeActiveFilter(columnRemoved: string) {\n        const filterIndex = this.activeFilters.map((activeFilter) => activeFilter.key).indexOf(columnRemoved);\n        if (filterIndex >= 0) {\n            this.activeFilters.splice(filterIndex, 1);\n        }\n    }\n\n    setSorting(dataSorting: DataSorting[]) {\n        this.sorting = [];\n        dataSorting.forEach((columnSorting: DataSorting) => {\n            const fieldValue = this.getSortingFieldFromColumnName(columnSorting.key);\n            if (fieldValue) {\n                const optionAscending = columnSorting.direction.toLocaleLowerCase() === 'asc';\n                const type = fieldValue === 'score' ? 'SCORE' : 'FIELD';\n                const currentSort: SearchSortingDefinition = {\n                    key: columnSorting.key,\n                    label: 'current',\n                    type,\n                    field: fieldValue,\n                    ascending: optionAscending\n                };\n                this.sorting.push(currentSort);\n            }\n        });\n\n        this.execute();\n    }\n\n    private getSortingFieldFromColumnName(columnName: string) {\n        if (this.sortingOptions.length > 0) {\n            const sortOption = this.sortingOptions.find((option) => option.key === columnName);\n            return sortOption ? sortOption.field : '';\n        }\n        return '';\n    }\n\n    getCategoryForColumn(columnKey: string): SearchCategory {\n        let foundCategory = null;\n        if (this.categories !== null) {\n            foundCategory = this.categories.find((category) => category.columnKey === columnKey);\n        }\n        return foundCategory;\n    }\n\n    setCurrentRootFolderId(currentFolderId: string) {\n        const alreadyAddedFilter = this.filterQueries.find((filterQueries) => filterQueries.query.includes(currentFolderId));\n\n        if (alreadyAddedFilter !== undefined) {\n            this.filterQueries = [];\n        }\n\n        this.filterQueries = [\n            {\n                query: `PARENT:\"workspace://SpacesStore/${currentFolderId}\"`\n            }\n        ];\n\n        this.execute();\n    }\n\n    isCustomSourceNode(currentNodeId: string): boolean {\n        return this.customSources.includes(currentNodeId);\n    }\n\n    getNodeIdForCustomSource(customSourceId: string): Observable<Node> {\n        return this.nodeApiService.getNode(customSourceId);\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, inject, Input, OnInit, ViewEncapsulation } from '@angular/core';\nimport { SearchWidget } from '../../models/search-widget.interface';\nimport { SearchWidgetSettings } from '../../models/search-widget-settings.interface';\nimport { SearchQueryBuilderService } from '../../services/search-query-builder.service';\nimport { ReplaySubject } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { CommonModule } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatButtonModule } from '@angular/material/button';\nimport { FormsModule } from '@angular/forms';\nimport { MatIconModule } from '@angular/material/icon';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n    selector: 'adf-search-text',\n    standalone: true,\n    imports: [CommonModule, MatFormFieldModule, TranslateModule, MatInputModule, MatButtonModule, FormsModule, MatIconModule],\n    templateUrl: './search-text.component.html',\n    styleUrls: ['./search-text.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    host: { class: 'adf-search-text' }\n})\nexport class SearchTextComponent implements SearchWidget, OnInit {\n    /** The content of the text box. */\n    @Input()\n    value = '';\n\n    id: string;\n    settings: SearchWidgetSettings;\n    context: SearchQueryBuilderService;\n    startValue: string;\n    isActive = false;\n    enableChangeUpdate = true;\n    displayValue$ = new ReplaySubject<string>(1);\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    ngOnInit() {\n        if (this.context && this.settings?.pattern) {\n            const pattern = new RegExp(this.settings.pattern, 'g');\n            const match = pattern.exec(this.context.queryFragments[this.id] || '');\n            if (this.settings.allowUpdateOnChange !== undefined && this.settings.allowUpdateOnChange !== null) {\n                this.enableChangeUpdate = this.settings.allowUpdateOnChange;\n            }\n\n            if (match && match.length > 1) {\n                this.value = match[1];\n            }\n\n            if (this.startValue) {\n                this.setValue(this.startValue);\n            } else {\n                if (this.context?.queryFragments) {\n                    this.context.queryFragments[this.id] = '';\n                }\n            }\n        }\n        this.context.populateFilters\n            .asObservable()\n            .pipe(\n                map((filtersQueries) => filtersQueries[this.id]),\n                takeUntilDestroyed(this.destroyRef)\n            )\n            .subscribe((filterQuery) => {\n                if (filterQuery) {\n                    this.value = filterQuery;\n                    this.updateQuery(this.value, false);\n                } else {\n                    this.reset(false);\n                }\n                this.context.filterLoaded.next();\n            });\n    }\n    clear() {\n        this.isActive = false;\n        this.value = '';\n        if (this.enableChangeUpdate) {\n            this.updateQuery(null);\n        }\n    }\n\n    reset(updateContext = true) {\n        this.value = '';\n        this.updateQuery(null, updateContext);\n    }\n\n    onChangedHandler(event) {\n        this.value = event.target.value;\n        this.isActive = !!this.value;\n        if (this.enableChangeUpdate) {\n            this.updateQuery(this.value);\n        }\n    }\n\n    private updateQuery(value: string, updateContext = true) {\n        this.context.filterRawParams[this.id] = value;\n        this.displayValue$.next(value);\n        if (this.context && this.settings && this.settings.field) {\n            this.context.queryFragments[this.id] = value ? `${this.settings.field}:'${this.getSearchPrefix()}${value}${this.getSearchSuffix()}'` : '';\n            if (updateContext) {\n                this.context.update();\n            }\n        }\n    }\n\n    submitValues() {\n        this.updateQuery(this.value);\n    }\n\n    hasValidValue() {\n        return !!this.value;\n    }\n\n    getCurrentValue() {\n        return this.value;\n    }\n\n    setValue(value: string) {\n        this.value = value;\n        this.displayValue$.next(this.value);\n        this.submitValues();\n    }\n\n    private getSearchPrefix(): string {\n        return this.settings.searchPrefix ? this.settings.searchPrefix : '';\n    }\n\n    private getSearchSuffix(): string {\n        return this.settings.searchSuffix ? this.settings.searchSuffix : '';\n    }\n}\n","<mat-form-field\n    class=\"adf-search-text-form-field\"\n    appearance=\"fill\">\n    <mat-label>{{ settings?.placeholder | translate }}</mat-label>\n    <input\n        matInput\n        [(ngModel)]=\"value\"\n        (change)=\"onChangedHandler($event)\">\n    <button\n        mat-icon-button\n        *ngIf=\"value\"\n        matSuffix\n        (click)=\"clear()\"\n        class=\"adf-search-text-form-field-clear-button\">\n        <mat-icon>close</mat-icon>\n    </button>\n</mat-form-field>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst DEFAULT_PAGE_SIZE = 5;\n\nexport class SearchFilterList<T> implements Iterable<T> {\n    private filteredItems: T[] = [];\n    private _filterText: string = '';\n\n    items: T[] = [];\n    pageSize: number = DEFAULT_PAGE_SIZE;\n    currentPageSize: number = DEFAULT_PAGE_SIZE;\n\n    get filterText(): string {\n        return this._filterText;\n    }\n\n    set filterText(value: string) {\n        this._filterText = value;\n        this.applyFilter();\n    }\n\n    private _filter: (item: T) => boolean = () => true;\n\n    get filter(): (item: T) => boolean {\n        return this._filter;\n    }\n\n    set filter(value: (item: T) => boolean) {\n        this._filter = value;\n        this.applyFilter();\n    }\n\n    private applyFilter() {\n        if (this.filter) {\n            this.filteredItems = this.items.filter(this.filter);\n        } else {\n            this.filteredItems = this.items;\n        }\n        this.currentPageSize = this.pageSize;\n    }\n\n    /**\n     * Returns visible portion of the items.\n     *\n     * @returns list of items\n     */\n    get visibleItems(): T[] {\n        return this.filteredItems.slice(0, this.currentPageSize);\n    }\n\n    /**\n     * Get items length\n     *\n     * @returns entire collection length including items not displayed on the page\n     */\n    get length(): number {\n        return this.items.length;\n    }\n\n    /**\n     * Detect whether more items can be displayed.\n     *\n     * @returns `true` if can show more items, otherwise `false`\n     */\n    get canShowMoreItems(): boolean {\n        return this.filteredItems.length > this.currentPageSize;\n    }\n\n    /**\n     * Detect whether less items can be displayed.\n     *\n     * @returns `true` if can show less items, otherwise `false`\n     */\n    get canShowLessItems(): boolean {\n        return this.currentPageSize > this.pageSize;\n    }\n\n    /**\n     * Detect whether content fits single page.\n     *\n     * @returns `true` if content fits single page, otherwise `false`.\n     */\n    get fitsPage(): boolean {\n        return this.pageSize >= this.filteredItems.length;\n    }\n\n    constructor(items: T[] = [], pageSize?: number) {\n        this.items = items;\n        this.filteredItems = items;\n        this.pageSize = pageSize || DEFAULT_PAGE_SIZE;\n        this.currentPageSize = pageSize || DEFAULT_PAGE_SIZE;\n    }\n\n    /** Display more items. */\n    showMoreItems() {\n        if (this.canShowMoreItems) {\n            this.currentPageSize += this.pageSize;\n        }\n    }\n\n    /** Display less items. */\n    showLessItems() {\n        if (this.canShowLessItems) {\n            this.currentPageSize -= this.pageSize;\n        }\n    }\n\n    /** Reset entire collection and page settings. */\n    clear() {\n        this.currentPageSize = this.pageSize;\n        this.items = [];\n        this.filteredItems = [];\n        this.filterText = '';\n    }\n\n    addItem(item: T) {\n        if (!item) {\n            return;\n        }\n        this.items.push(item);\n        this.applyFilter();\n    }\n\n    deleteItem(item: T) {\n        const removeIndex = this.items.indexOf(item);\n        if (removeIndex > -1) {\n            this.items.splice(removeIndex, 1);\n            this.filteredItems.splice(removeIndex, 1);\n        }\n    }\n\n    [Symbol.iterator](): Iterator<T> {\n        let pointer = 0;\n        const items = this.visibleItems;\n\n        return {\n            next: (): IteratorResult<T> => {\n                if (pointer < items.length) {\n                    return {\n                        done: false,\n                        value: items[pointer++]\n                    };\n                } else {\n                    return {\n                        done: true,\n                        value: null\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 { Component, Input, OnInit, ViewEncapsulation } from '@angular/core';\nimport { MatRadioChange, MatRadioModule } from '@angular/material/radio';\n\nimport { SearchWidget } from '../../models/search-widget.interface';\nimport { SearchWidgetSettings } from '../../models/search-widget-settings.interface';\nimport { SearchQueryBuilderService } from '../../services/search-query-builder.service';\nimport { SearchFilterList } from '../../models/search-filter-list.model';\nimport { ReplaySubject } from 'rxjs';\nimport { first } from 'rxjs/operators';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\n\nexport interface SearchRadioOption {\n    name: string;\n    value: string;\n}\n\n@Component({\n    selector: 'adf-search-radio',\n    standalone: true,\n    imports: [CommonModule, MatRadioModule, FormsModule, TranslateModule, MatButtonModule, MatIconModule],\n    templateUrl: './search-radio.component.html',\n    styleUrls: ['./search-radio.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    host: { class: 'adf-search-radio' }\n})\nexport class SearchRadioComponent implements SearchWidget, OnInit {\n    /** The value of the selected radio button. */\n    @Input()\n    value: string;\n\n    id: string;\n    settings: SearchWidgetSettings;\n    context: SearchQueryBuilderService;\n    options: SearchFilterList<SearchRadioOption>;\n    pageSize = 5;\n    isActive = false;\n    startValue: any;\n    enableChangeUpdate: boolean;\n    displayValue$ = new ReplaySubject<string>(1);\n\n    constructor() {\n        this.options = new SearchFilterList<SearchRadioOption>();\n    }\n\n    ngOnInit() {\n        if (this.settings) {\n            this.pageSize = this.settings.pageSize || 5;\n\n            if (this.settings.options && this.settings.options.length > 0) {\n                this.options = new SearchFilterList<SearchRadioOption>(this.settings.options, this.pageSize);\n            }\n        }\n\n        const initialValue = this.getSelectedValue();\n\n        if (initialValue !== null) {\n            this.value = initialValue;\n            this.context.queryFragments[this.id] = initialValue;\n        } else if (this.startValue !== null) {\n            this.value = initialValue;\n            this.context.queryFragments[this.id] = initialValue;\n        }\n        this.enableChangeUpdate = this.settings.allowUpdateOnChange ?? true;\n        this.updateDisplayValue();\n        this.context.populateFilters\n            .asObservable()\n            .pipe(first())\n            .subscribe((filtersQueries) => {\n                if (filtersQueries[this.id]) {\n                    this.value = filtersQueries[this.id];\n                    this.submitValues(false);\n                } else {\n                    this.reset(false);\n                }\n                this.context.filterLoaded.next();\n            });\n    }\n\n    private getSelectedValue(): string {\n        const options: any[] = this.settings['options'] || [];\n        if (options && options.length > 0) {\n            this.isActive = true;\n\n            let selected = options.find((opt) => opt.default);\n            if (!selected) {\n                selected = options[0];\n            }\n            return selected.value;\n        }\n        return null;\n    }\n\n    submitValues(updateContext = true) {\n        this.setValue(this.value);\n        this.updateDisplayValue();\n        if (updateContext) {\n            this.context.update();\n        }\n    }\n\n    hasValidValue() {\n        const currentValue = this.getSelectedValue();\n        return !!currentValue;\n    }\n\n    setValue(newValue: string) {\n        this.value = newValue;\n        this.context.queryFragments[this.id] = newValue;\n        this.context.filterRawParams[this.id] = newValue;\n        if (this.enableChangeUpdate) {\n            this.updateDisplayValue();\n            this.context.update();\n        }\n    }\n\n    getCurrentValue() {\n        return this.getSelectedValue();\n    }\n\n    updateDisplayValue(): void {\n        const selectOptions = this.options.items.find(({ value }) => value === this.value);\n        if (selectOptions) {\n            this.displayValue$.next(selectOptions.name);\n        } else {\n            this.displayValue$.next('');\n        }\n    }\n\n    changeHandler(event: MatRadioChange) {\n        this.setValue(event.value);\n    }\n\n    clear() {\n        this.isActive = false;\n        const initialValue = this.getSelectedValue();\n        if (initialValue !== null) {\n            this.setValue(initialValue);\n        }\n    }\n\n    reset(updateContext = true) {\n        const initialValue = this.getSelectedValue();\n        if (initialValue !== null) {\n            this.setValue(initialValue);\n            this.updateDisplayValue();\n            if (updateContext) {\n                this.context.update();\n            }\n        }\n    }\n}\n","<mat-radio-group\n    class=\"adf-search-radio-group\"\n    [(ngModel)]=\"value\"\n    (change)=\"changeHandler($event)\">\n    <mat-radio-button [attr.data-automation-id]=\"'search-radio-'+(option.name | translate)\"\n        *ngFor=\"let option of options\"\n        [value]=\"option.value\"\n        class=\"adf-facet-filter\">\n        <div title=\"{{ option.name | translate }}\" class=\"adf-filter-label\">\n            {{ option.name | translate }}\n        </div>\n    </mat-radio-button>\n</mat-radio-group>\n\n<div class=\"adf-facet-buttons\" *ngIf=\"!options.fitsPage\">\n    <button mat-icon-button\n        *ngIf=\"options.canShowLessItems\"\n        title=\"{{ 'SEARCH.FILTER.ACTIONS.SHOW-LESS' | translate }}\"\n        (click)=\"options.showLessItems()\">\n        <mat-icon>keyboard_arrow_up</mat-icon>\n    </button>\n    <button mat-icon-button\n        *ngIf=\"options.canShowMoreItems\"\n        title=\"{{ 'SEARCH.FILTER.ACTIONS.SHOW-MORE' | translate }}\"\n        (click)=\"options.showMoreItems()\">\n        <mat-icon>keyboard_arrow_down</mat-icon>\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 { Component, DestroyRef, inject, Input, OnInit, ViewEncapsulation } from '@angular/core';\nimport { SearchWidget } from '../../models/search-widget.interface';\nimport { SearchWidgetSettings } from '../../models/search-widget-settings.interface';\nimport { SearchQueryBuilderService } from '../../services/search-query-builder.service';\nimport { ReplaySubject } from 'rxjs';\nimport { CommonModule } from '@angular/common';\nimport { MatSliderModule } from '@angular/material/slider';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n    selector: 'adf-search-slider',\n    standalone: true,\n    imports: [CommonModule, MatSliderModule, FormsModule, MatButtonModule, TranslateModule],\n    templateUrl: './search-slider.component.html',\n    styleUrls: ['./search-slider.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    host: { class: 'adf-search-slider' }\n})\nexport class SearchSliderComponent implements SearchWidget, OnInit {\n    /** The numeric value represented by the slider. */\n    @Input()\n    value: number | null;\n\n    isActive?: boolean;\n    startValue: any;\n\n    id: string;\n    settings: SearchWidgetSettings;\n    context: SearchQueryBuilderService;\n    step: number;\n    min: number;\n    max: number;\n    thumbLabel = false;\n    enableChangeUpdate: boolean;\n    displayValue$ = new ReplaySubject<string>(1);\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    ngOnInit() {\n        if (this.settings) {\n            if (Object.prototype.hasOwnProperty.call(this.settings, 'min')) {\n                this.min = this.settings['min'];\n            }\n\n            if (Object.prototype.hasOwnProperty.call(this.settings, 'max')) {\n                this.max = this.settings['max'];\n            }\n\n            if (Object.prototype.hasOwnProperty.call(this.settings, 'step')) {\n                this.step = this.settings['step'];\n            }\n\n            this.thumbLabel = this.settings['thumbLabel'] ? true : false;\n            this.enableChangeUpdate = this.settings.allowUpdateOnChange ?? true;\n        }\n\n        if (this.startValue) {\n            this.setValue(this.startValue);\n        }\n        this.context.populateFilters\n            .asObservable()\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe((filtersQueries) => {\n                if (filtersQueries[this.id]) {\n                    this.value = filtersQueries[this.id];\n                    this.updateQuery(this.value, false);\n                } else {\n                    this.reset(false);\n                }\n                this.context.filterLoaded.next();\n            });\n    }\n\n    clear() {\n        this.value = this.min || 0;\n        if (this.enableChangeUpdate) {\n            this.updateQuery(null);\n        }\n    }\n\n    reset(updateContext = true) {\n        this.value = this.min || 0;\n        this.updateQuery(null, updateContext);\n    }\n\n    onChangedHandler() {\n        if (this.enableChangeUpdate) {\n            this.updateQuery(this.value);\n        }\n    }\n\n    submitValues() {\n        this.updateQuery(this.value);\n    }\n\n    hasValidValue() {\n        return !!this.value;\n    }\n\n    getCurrentValue() {\n        return this.value;\n    }\n\n    setValue(value: any) {\n        this.value = value;\n        this.submitValues();\n    }\n\n    private updateQuery(value: number | null, updateContext = true) {\n        this.context.filterRawParams[this.id] = value;\n        this.displayValue$.next(this.value ? `${this.value} ${this.settings.unit ?? ''}` : '');\n        if (this.id && this.context && this.settings && this.settings.field) {\n            if (value === null) {\n                this.context.queryFragments[this.id] = '';\n            } else {\n                this.context.queryFragments[this.id] = `${this.settings.field}:[0 TO ${value}]`;\n            }\n            if (updateContext) {\n                this.context.update();\n            }\n        }\n    }\n}\n","<mat-slider\n    class=\"adf-search-slider\"\n    data-automation-id=\"slider-range\"\n    [max]=\"max\"\n    [min]=\"min\"\n    [step]=\"step\"\n    [discrete]=\"thumbLabel\">\n    <input matSliderThumb (change)=\"onChangedHandler()\" [(ngModel)]=\"value\">\n</mat-slider>\n\n<div class=\"adf-facet-buttons\" *ngIf=\"!settings?.hideDefaultAction\">\n    <button mat-button color=\"primary\" (click)=\"clear()\" data-automation-id=\"slider-btn-clear\">\n        {{ 'SEARCH.FILTER.ACTIONS.CLEAR' | translate }}\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 { ErrorStateMatcher } from '@angular/material/core';\nimport { UntypedFormControl, FormGroupDirective, NgForm } from '@angular/forms';\n\nexport class LiveErrorStateMatcher implements ErrorStateMatcher {\n    isErrorState(control: UntypedFormControl | null, form: FormGroupDirective | NgForm | null): boolean {\n        const isSubmitted = form?.submitted;\n        return !!(control?.invalid && (control.dirty || control.touched || (!control.pristine && isSubmitted)));\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 } from '@angular/core';\nimport { ReactiveFormsModule, UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';\nimport { SearchWidget } from '../../models/search-widget.interface';\nimport { SearchWidgetSettings } from '../../models/search-widget-settings.interface';\nimport { SearchQueryBuilderService } from '../../services/search-query-builder.service';\nimport { LiveErrorStateMatcher } from '../../forms/live-error-state-matcher';\nimport { ReplaySubject } from 'rxjs';\nimport { first, map } from 'rxjs/operators';\nimport { CommonModule } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n    selector: 'adf-search-number-range',\n    standalone: true,\n    imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatInputModule, TranslateModule, MatButtonModule],\n    templateUrl: './search-number-range.component.html',\n    styleUrls: ['./search-number-range.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    host: { class: 'adf-search-number-range' }\n})\nexport class SearchNumberRangeComponent implements SearchWidget, OnInit {\n    from: UntypedFormControl;\n    to: UntypedFormControl;\n\n    form: UntypedFormGroup;\n    matcher = new LiveErrorStateMatcher();\n\n    id: string;\n    settings?: SearchWidgetSettings;\n    context?: SearchQueryBuilderService;\n\n    field: string;\n    format = '[{FROM} TO {TO}]';\n\n    isActive = false;\n    startValue: any;\n\n    validators: Validators;\n    enableChangeUpdate: boolean;\n    displayValue$ = new ReplaySubject<string>(1);\n\n    ngOnInit(): void {\n        if (this.settings) {\n            this.field = this.settings.field;\n            this.format = this.settings.format || '[{FROM} TO {TO}]';\n        }\n\n        this.validators = Validators.compose([Validators.required, Validators.pattern(/^-?(0|[1-9]\\d*)?$/), Validators.min(0)]);\n\n        if (this.startValue) {\n            this.from = new UntypedFormControl(this.startValue['from'], this.validators);\n            this.to = new UntypedFormControl(this.startValue['to'], this.validators);\n        } else {\n            this.from = new UntypedFormControl('', this.validators);\n            this.to = new UntypedFormControl('', this.validators);\n        }\n\n        this.form = new UntypedFormGroup(\n            {\n                from: this.from,\n                to: this.to\n            },\n            this.formValidator\n        );\n\n        this.enableChangeUpdate = this.settings?.allowUpdateOnChange ?? true;\n        this.updateDisplayValue();\n        this.context.populateFilters\n            .asObservable()\n            .pipe(\n                map((filtersQueries) => filtersQueries[this.id]),\n                first()\n            )\n            .subscribe((filterQuery) => {\n                if (filterQuery) {\n                    this.form.patchValue({ from: filterQuery.from, to: filterQuery.to });\n                    this.form.markAsDirty();\n                    this.apply({ from: filterQuery.from, to: filterQuery.to }, true, false);\n                } else {\n                    this.reset(false);\n                }\n                this.context.filterLoaded.next();\n            });\n    }\n\n    formValidator(formGroup: UntypedFormGroup) {\n        return parseInt(formGroup.get('from').value, 10) < parseInt(formGroup.get('to').value, 10) ? null : { mismatch: true };\n    }\n\n    apply(model: { from: string; to: string }, isValid: boolean, updateContext = true) {\n        if (isValid && this.id && this.context && this.field) {\n            this.updateDisplayValue();\n            this.isActive = true;\n\n            const destinationObject = new Map<string, string>();\n            destinationObject.set('FROM', model.from);\n            destinationObject.set('TO', model.to);\n\n            const value = this.formatString(this.format, destinationObject);\n\n            this.context.queryFragments[this.id] = `${this.field}:${value}`;\n            const filterParam = this.context.filterRawParams[this.id] ?? {};\n            this.context.filterRawParams[this.id] = filterParam;\n            filterParam.from = model.from;\n            filterParam.to = model.to;\n            if (updateContext) {\n                this.context.update();\n            }\n        }\n    }\n\n    private formatString(str: string, destinationObject: Map<string, string>): string {\n        let result = str;\n\n        destinationObject.forEach((value, key) => {\n            const expr = new RegExp('{' + key + '}', 'gm');\n            result = result.replace(expr, value);\n        });\n\n        return result;\n    }\n\n    submitValues() {\n        this.apply(this.form.value, this.form.valid);\n    }\n\n    hasValidValue() {\n        return this.form.valid;\n    }\n\n    getCurrentValue() {\n        return this.form.value;\n    }\n\n    updateDisplayValue(): void {\n        if (this.form.invalid || this.form.pristine) {\n            this.displayValue$.next('');\n        } else {\n            this.displayValue$.next(`${this.form.value.from} - ${this.form.value.to} ${this.settings.unit ?? ''}`);\n        }\n    }\n\n    setValue(value: any) {\n        this.form['from'].setValue(value);\n        this.form['to'].setValue(value);\n        this.updateDisplayValue();\n    }\n\n    clear(updateContext = true) {\n        this.isActive = false;\n\n        this.form.reset({\n            from: '',\n            to: ''\n        });\n\n        if (this.id && this.context) {\n            this.context.queryFragments[this.id] = '';\n            this.context.filterRawParams[this.id] = undefined;\n            this.updateDisplayValue();\n            if (this.enableChangeUpdate && updateContext) {\n                this.context.update();\n            }\n        }\n    }\n\n    reset(updateContext = true) {\n        this.clear();\n        if (this.id && this.context && updateContext) {\n            this.context.update();\n        }\n    }\n}\n","<form [formGroup]=\"form\" novalidate (ngSubmit)=\"apply(form.value, form.valid)\">\n\n    <mat-form-field>\n        <input\n            matInput [formControl]=\"from\" [errorStateMatcher]=\"matcher\"\n            placeholder=\"{{ 'SEARCH.FILTER.RANGE.FROM' | translate }}\"\n            autocomplete=\"off\"\n            data-automation-id=\"number-range-from-input\">\n        <mat-error *ngIf=\"from.hasError('pattern') || from.hasError('min')\" data-automation-id=\"number-range-from-error-invalid\">\n            {{ 'SEARCH.FILTER.VALIDATION.INVALID-FORMAT' | translate }}\n        </mat-error>\n        <mat-error *ngIf=\"from.hasError('required')\" data-automation-id=\"number-range-from-error-required\">\n            {{ 'SEARCH.FILTER.VALIDATION.REQUIRED-VALUE' | translate }}\n        </mat-error>\n    </mat-form-field>\n\n    <mat-form-field>\n        <input\n            matInput [formControl]=\"to\" [errorStateMatcher]=\"matcher\"\n            placeholder=\"{{ 'SEARCH.FILTER.RANGE.TO' | translate }}\"\n            autocomplete=\"off\"\n            data-automation-id=\"number-range-to-input\">\n        <mat-error *ngIf=\"to.hasError('pattern') || to.hasError('min')\" data-automation-id=\"number-range-to-error-invalid\">\n            {{ 'SEARCH.FILTER.VALIDATION.INVALID-FORMAT' | translate }}\n        </mat-error>\n        <mat-error *ngIf=\"to.hasError('required')\" data-automation-id=\"number-range-to-error-required\">\n            {{ 'SEARCH.FILTER.VALIDATION.REQUIRED-VALUE' | translate }}\n        </mat-error>\n    </mat-form-field>\n\n\n    <div class=\"adf-facet-buttons\" *ngIf=\"!settings?.hideDefaultAction\">\n        <button mat-button color=\"primary\" type=\"button\" (click)=\"clear()\" data-automation-id=\"number-range-btn-clear\">\n            {{ 'SEARCH.FILTER.ACTIONS.CLEAR' | translate }}\n        </button>\n        <button mat-button color=\"primary\" type=\"submit\" [disabled]=\"!form.valid\" data-automation-id=\"number-range-btn-apply\">\n            {{ 'SEARCH.FILTER.ACTIONS.APPLY' | translate }}\n        </button>\n    </div>\n</form>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY 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, inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { MatCheckboxChange, MatCheckboxModule } from '@angular/material/checkbox';\nimport { SearchWidget } from '../../models/search-widget.interface';\nimport { SearchWidgetSettings } from '../../models/search-widget-settings.interface';\nimport { SearchQueryBuilderService } from '../../services/search-query-builder.service';\nimport { SearchFilterList } from '../../models/search-filter-list.model';\nimport { TranslationService } from '@alfresco/adf-core';\nimport { ReplaySubject } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nexport interface SearchListOption {\n    name: string;\n    value: string;\n    checked: boolean;\n}\n\n@Component({\n    selector: 'adf-search-check-list',\n    standalone: true,\n    imports: [CommonModule, MatCheckboxModule, TranslateModule, MatButtonModule, MatIconModule],\n    templateUrl: './search-check-list.component.html',\n    styleUrls: ['./search-check-list.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    host: { class: 'adf-search-check-list' }\n})\nexport class SearchCheckListComponent implements SearchWidget, OnInit {\n    id: string;\n    settings?: SearchWidgetSettings;\n    context?: SearchQueryBuilderService;\n    options: SearchFilterList<SearchListOption>;\n    operator: string = 'OR';\n    startValue: string;\n    pageSize = 5;\n    isActive = false;\n    enableChangeUpdate = true;\n    displayValue$ = new ReplaySubject<string>(1);\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    constructor(private translationService: TranslationService) {\n        this.options = new SearchFilterList<SearchListOption>();\n    }\n\n    ngOnInit(): void {\n        if (this.settings) {\n            this.operator = this.settings.operator || 'OR';\n            this.pageSize = this.settings.pageSize || 5;\n\n            if (this.settings.options && this.settings.options.length > 0) {\n                this.options = new SearchFilterList(this.settings.options, this.pageSize);\n            }\n            this.enableChangeUpdate = this.settings.allowUpdateOnChange ?? true;\n        }\n\n        if (this.startValue) {\n            this.setValue(this.startValue);\n        } else {\n            if (this.id && this.context) {\n                this.context.queryFragments[this.id] = '';\n            }\n        }\n        this.context.populateFilters\n            .asObservable()\n            .pipe(\n                map((filtersQueries) => filtersQueries[this.id]),\n                takeUntilDestroyed(this.destroyRef)\n            )\n            .subscribe((filterQuery) => {\n                if (filterQuery) {\n                    filterQuery.forEach((value) => {\n                        const option = this.options.items.find((searchListOption) => searchListOption.value === value);\n                        if (option) {\n                            option.checked = true;\n                        }\n                    });\n                    this.submitValues(false);\n                } else {\n                    this.reset(false);\n                }\n                this.context.filterLoaded.next();\n            });\n    }\n\n    clear() {\n        this.isActive = false;\n        this.clearOptions();\n        if (this.id && this.context && this.enableChangeUpdate) {\n            this.updateDisplayValue();\n            this.context.update();\n        }\n    }\n\n    clearOptions() {\n        this.options.items.forEach((opt) => {\n            opt.checked = false;\n        });\n\n        if (this.id && this.context) {\n            this.context.queryFragments[this.id] = '';\n            this.context.filterRawParams[this.id] = undefined;\n        }\n    }\n\n    reset(updateContext = true) {\n        this.isActive = false;\n        this.clearOptions();\n        if (this.id && this.context) {\n            this.updateDisplayValue();\n            if (updateContext) {\n                this.context.update();\n            }\n        }\n    }\n\n    updateDisplayValue(): void {\n        const displayValue = this.options.items\n            .filter((option) => option.checked)\n            .map(({ name }) => this.translationService.instant(name))\n            .join(', ');\n        this.displayValue$.next(displayValue);\n    }\n\n    changeHandler(event: MatCheckboxChange, option: any) {\n        option.checked = event.checked;\n        const checkedValues = this.getCheckedValues();\n        this.isActive = !!checkedValues.length;\n        if (this.enableChangeUpdate) {\n            this.submitValues();\n        }\n    }\n\n    hasValidValue() {\n        const checkedValues = this.getCheckedValues();\n        return !!checkedValues.length;\n    }\n\n    getCurrentValue() {\n        return this.getCheckedValues();\n    }\n\n    setValue(value: any) {\n        this.options.items.filter((item) => value.includes(item.value)).map((item) => (item.checked = true));\n        this.submitValues();\n    }\n\n    private getCheckedValues() {\n        return this.options.items.filter((option) => option.checked).map((option) => option.value);\n    }\n\n    submitValues(updateContext = true) {\n        const checkedValues = this.getCheckedValues();\n        if (checkedValues.length !== 0) {\n            this.context.filterRawParams[this.id] = checkedValues;\n        }\n        const query = checkedValues.join(` ${this.operator} `);\n        if (this.id && this.context) {\n            this.context.queryFragments[this.id] = query;\n            this.updateDisplayValue();\n            if (updateContext) {\n                this.context.update();\n            }\n        }\n    }\n}\n","<div class=\"checklist\">\n    <mat-checkbox\n        *ngFor=\"let option of options\"\n        [checked]=\"option.checked\"\n        labelPosition=\"before\"\n        (keydown.enter)=\"option.checked = !option.checked\"\n        [attr.data-automation-id]=\"'checkbox-' + (option.name)\"\n        [attr.aria-label]=\"option.name | translate\"\n        (change)=\"changeHandler($event, option)\"\n        class=\"adf-facet-filter\">\n        <div title=\"{{ option.name | translate }}\" class=\"adf-search-check-list-label\">\n            {{ option.name | translate }}\n        </div>\n\n    </mat-checkbox>\n</div>\n\n<div class=\"adf-facet-buttons\" *ngIf=\"options.fitsPage && !settings?.hideDefaultAction\">\n    <button mat-button color=\"primary\" (click)=\"clear()\">\n        {{ 'SEARCH.FILTER.ACTIONS.CLEAR-ALL' | translate }}\n    </button>\n</div>\n\n<div class=\"adf-facet-buttons\" *ngIf=\"!options.fitsPage\">\n    <button mat-icon-button\n        title=\"{{ 'SEARCH.FILTER.ACTIONS.CLEAR-ALL' | translate }}\"\n        (click)=\"clear()\">\n        <mat-icon>clear</mat-icon>\n    </button>\n    <button mat-icon-button\n        *ngIf=\"options.canShowLessItems\"\n        title=\"{{ 'SEARCH.FILTER.ACTIONS.SHOW-LESS' | translate }}\"\n        (click)=\"options.showLessItems()\">\n        <mat-icon>keyboard_arrow_up</mat-icon>\n    </button>\n    <button mat-icon-button\n        *ngIf=\"options.canShowMoreItems\"\n        title=\"{{ 'SEARCH.FILTER.ACTIONS.SHOW-MORE' | translate }}\"\n        (click)=\"options.showMoreItems()\">\n        <mat-icon>keyboard_arrow_down</mat-icon>\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 { Component, DestroyRef, inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport {\n    ADF_DATE_FORMATS,\n    ADF_DATETIME_FORMATS,\n    AdfDateFnsAdapter,\n    AdfDateTimeFnsAdapter,\n    DateFnsUtils\n} from '@alfresco/adf-core';\nimport { SearchWidget } from '../../models/search-widget.interface';\nimport { SearchWidgetSettings } from '../../models/search-widget-settings.interface';\nimport { SearchQueryBuilderService } from '../../services/search-query-builder.service';\nimport { LiveErrorStateMatcher } from '../../forms/live-error-state-matcher';\nimport { ReplaySubject } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport {\n    DatetimeAdapter,\n    MAT_DATETIME_FORMATS,\n    MatDatetimepickerInputEvent,\n    MatDatetimepickerModule\n} from '@mat-datetimepicker/core';\nimport { DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';\nimport { endOfMinute, isBefore, isValid, parseISO, startOfMinute } from 'date-fns';\nimport { CommonModule } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nexport interface DatetimeRangeValue {\n    from: string;\n    to: string;\n}\n\ninterface FormProps {\n    from: FormControl<Date>;\n    to: FormControl<Date>;\n}\n\nexport const DEFAULT_DATETIME_FORMAT: string = 'dd/MM/yyyy HH:mm';\n\n@Component({\n    selector: 'adf-search-datetime-range',\n    standalone: true,\n    imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatInputModule, TranslateModule, MatDatetimepickerModule],\n    templateUrl: './search-datetime-range.component.html',\n    styleUrls: ['./search-datetime-range.component.scss'],\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    encapsulation: ViewEncapsulation.None,\n    host: { class: 'adf-search-date-range' }\n})\nexport class SearchDatetimeRangeComponent implements SearchWidget, OnInit {\n    from: FormControl<Date>;\n    to: FormControl<Date>;\n\n    form: FormGroup<FormProps>;\n    matcher = new LiveErrorStateMatcher();\n\n    id: string;\n    settings?: SearchWidgetSettings;\n    context?: SearchQueryBuilderService;\n    datetimePickerFormat: string;\n    maxDatetime: any;\n    fromMaxDatetime: any;\n    isActive = false;\n    startValue: any;\n    enableChangeUpdate: boolean;\n    displayValue$ = new ReplaySubject<string>(1);\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    constructor(private dateAdapter: DateAdapter<Date>, private dateTimeAdapter: DatetimeAdapter<Date>) {}\n\n    getFromValidationMessage(): string {\n        return this.from.hasError('invalidOnChange') || this.hasParseError(this.from)\n            ? 'SEARCH.FILTER.VALIDATION.INVALID-DATETIME'\n            : this.from.hasError('matDatepickerMax')\n            ? 'SEARCH.FILTER.VALIDATION.BEYOND-MAX-DATETIME'\n            : this.from.hasError('required')\n            ? 'SEARCH.FILTER.VALIDATION.REQUIRED-VALUE'\n            : '';\n    }\n\n    getToValidationMessage(): string {\n        return this.to.hasError('invalidOnChange') || this.hasParseError(this.to)\n            ? 'SEARCH.FILTER.VALIDATION.INVALID-DATETIME'\n            : this.to.hasError('matDatepickerMin')\n            ? 'SEARCH.FILTER.VALIDATION.NO-DAYS'\n            : this.to.hasError('matDatepickerMax')\n            ? 'SEARCH.FILTER.VALIDATION.BEYOND-MAX-DATETIME'\n            : this.to.hasError('required')\n            ? 'SEARCH.FILTER.VALIDATION.REQUIRED-VALUE'\n            : '';\n    }\n\n    ngOnInit() {\n        this.datetimePickerFormat = this.settings?.datetimeFormat ? this.settings.datetimeFormat : DEFAULT_DATETIME_FORMAT;\n\n        const dateAdapter = this.dateAdapter as AdfDateFnsAdapter;\n        dateAdapter.displayFormat = this.datetimePickerFormat;\n\n        const dateTimeAdapter = this.dateTimeAdapter as AdfDateTimeFnsAdapter;\n        dateTimeAdapter.displayFormat = this.datetimePickerFormat;\n\n        const validators = Validators.compose([Validators.required]);\n\n        if (this.settings?.maxDatetime) {\n            this.maxDatetime = new Date(this.settings.maxDatetime);\n        }\n\n        if (this.startValue) {\n            const splitValue = this.startValue.split('||');\n            const fromValue = this.dateAdapter.parse(splitValue[0], this.datetimePickerFormat);\n            const toValue = this.dateAdapter.parse(splitValue[1], this.datetimePickerFormat);\n            this.from = new FormControl<Date>(fromValue, validators);\n            this.to = new FormControl<Date>(toValue, validators);\n        } else {\n            this.from = new FormControl<Date>(null, validators);\n            this.to = new FormControl<Date>(null, validators);\n        }\n\n        this.form = new FormGroup<FormProps>({\n            from: this.from,\n            to: this.to\n        });\n\n        this.setFromMaxDatetime();\n        this.enableChangeUpdate = this.settings?.allowUpdateOnChange ?? true;\n        this.context.populateFilters\n            .asObservable()\n            .pipe(\n                map((filtersQueries) => filtersQueries[this.id]),\n                takeUntilDestroyed(this.destroyRef)\n            )\n            .subscribe((filterQuery) => {\n                if (filterQuery) {\n                    const start = parseISO(filterQuery.start);\n                    const end = parseISO(filterQuery.end);\n                    this.form.patchValue({ from: start, to: end });\n                    this.form.markAsDirty();\n                    this.apply({ from: start, to: end }, true, false);\n                } else {\n                    this.reset();\n                }\n                this.context.filterLoaded.next();\n            });\n    }\n\n    apply(model: Partial<{ from: Date; to: Date }>, isValidValue: boolean, updateContext = true) {\n        if (isValidValue && this.id && this.context && this.settings && this.settings.field) {\n            this.isActive = true;\n\n            const start = DateFnsUtils.utcToLocal(startOfMinute(model.from)).toISOString();\n            const end = DateFnsUtils.utcToLocal(endOfMinute(model.to)).toISOString();\n\n            this.context.queryFragments[this.id] = `${this.settings.field}:['${start}' TO '${end}']`;\n            const filterParam = this.context.filterRawParams[this.id] ?? {};\n            this.context.filterRawParams[this.id] = filterParam;\n            filterParam.start = start;\n            filterParam.end = end;\n            this.updateDisplayValue();\n            if (updateContext) {\n                this.context.update();\n            }\n        }\n    }\n\n    submitValues() {\n        this.apply(this.form.value, this.form.valid);\n    }\n\n    hasValidValue(): boolean {\n        return this.form.valid;\n    }\n\n    getCurrentValue(): DatetimeRangeValue {\n        return {\n            from: this.dateAdapter.format(this.form.value.from, this.datetimePickerFormat),\n            to: this.dateAdapter.format(this.form.value.to, this.datetimePickerFormat)\n        };\n    }\n\n    updateDisplayValue(): void {\n        if (this.form.invalid || this.form.pristine) {\n            this.displayValue$.next('');\n        } else {\n            this.displayValue$.next(\n                `${this.dateAdapter.format(this.form.value.from, this.datetimePickerFormat)} - ${this.dateAdapter.format(\n                    this.form.value.to,\n                    this.datetimePickerFormat\n                )}`\n            );\n        }\n    }\n\n    setValue(parsedDate: string) {\n        const splitValue = parsedDate.split('||');\n        const fromValue = this.dateAdapter.parse(splitValue[0], this.datetimePickerFormat);\n        const toValue = this.dateAdapter.parse(splitValue[1], this.datetimePickerFormat);\n        this.from.setValue(fromValue);\n        this.from.markAsDirty();\n        this.from.markAsTouched();\n        this.to.setValue(toValue);\n        this.to.markAsDirty();\n        this.to.markAsTouched();\n        this.submitValues();\n    }\n\n    clear() {\n        this.isActive = false;\n        this.form.reset({\n            from: null,\n            to: null\n        });\n        if (this.id && this.context) {\n            this.context.queryFragments[this.id] = '';\n            this.context.filterRawParams[this.id] = undefined;\n        }\n\n        if (this.id && this.context && this.enableChangeUpdate) {\n            this.updateQuery();\n        }\n        this.setFromMaxDatetime();\n    }\n\n    reset() {\n        this.clear();\n        this.updateQuery();\n    }\n\n    private updateQuery() {\n        if (this.id && this.context) {\n            this.updateDisplayValue();\n            this.context.update();\n        }\n    }\n\n    onChangedHandler(event: MatDatetimepickerInputEvent<Date>, formControl: FormControl<Date>) {\n        const formatDate = event.value;\n\n        if (isValid(formatDate)) {\n            formControl.setValue(formatDate);\n        } else if (formatDate) {\n            formControl.setErrors({\n                invalidOnChange: true\n            });\n        }\n\n        this.setFromMaxDatetime();\n    }\n\n    hasParseError(formControl: FormControl<Date>): boolean {\n        return formControl.hasError('matDatepickerParse') && formControl.getError('matDatepickerParse').text;\n    }\n\n    forcePlaceholder(event: any) {\n        event.target.click();\n    }\n\n    setFromMaxDatetime() {\n        this.fromMaxDatetime = !this.to.value || (this.maxDatetime && isBefore(this.maxDatetime, this.to.value)) ? this.maxDatetime : this.to.value;\n    }\n}\n","<form [formGroup]=\"form\" novalidate (ngSubmit)=\"apply(form.value, form.valid)\">\n    <mat-form-field>\n        <input matInput\n                (input)=\"forcePlaceholder($event)\"\n                [formControl]=\"from\"\n                [errorStateMatcher]=\"matcher\"\n                placeholder=\"{{ 'SEARCH.FILTER.RANGE.FROM-DATE' | translate }}\"\n                [matDatetimepicker]=\"fromDatetimePicker\"\n                [max]=\"fromMaxDatetime\"\n                (dateChange)=\"onChangedHandler($event, from)\"\n                data-automation-id=\"datetime-range-from-input\">\n        <mat-datetimepicker-toggle matSuffix [for]=\"fromDatetimePicker\" data-automation-id=\"datetime-range-from-date-toggle\" />\n        <mat-datetimepicker #fromDatetimePicker color=\"accent\" type=\"datetime\" />\n        <mat-error *ngIf=\"from.invalid\" data-automation-id=\"datetime-range-from-error\">\n            {{ getFromValidationMessage() | translate: { requiredFormat: datetimePickerFormat } }}\n        </mat-error>\n    </mat-form-field>\n\n    <mat-form-field>\n        <input matInput\n                (input)=\"forcePlaceholder($event)\"\n                [formControl]=\"to\"\n                [errorStateMatcher]=\"matcher\"\n                placeholder=\"{{ 'SEARCH.FILTER.RANGE.TO-DATE' | translate }}\"\n                [matDatetimepicker]=\"toDatetimePicker\"\n                [min]=\"from.value\"\n                [max]=\"maxDatetime\"\n                (dateChange)=\"onChangedHandler($event, to)\"\n                data-automation-id=\"datetime-range-to-input\">\n        <mat-datetimepicker-toggle matSuffix [for]=\"toDatetimePicker\" data-automation-id=\"datetime-range-to-date-toggle\" />\n        <mat-datetimepicker #toDatetimePicker color=\"accent\" type=\"datetime\" />\n        <mat-error *ngIf=\"to.invalid\" data-automation-id=\"datetime-range-to-error\">\n            {{ getToValidationMessage() | translate: { requiredFormat: datetimePickerFormat } }}\n        </mat-error>\n    </mat-form-field>\n</form>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY 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, inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { SearchWidget } from '../../models/search-widget.interface';\nimport { SearchWidgetSettings } from '../../models/search-widget-settings.interface';\nimport { SearchQueryBuilderService } from '../../services/search-query-builder.service';\nimport { ReplaySubject } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { TranslationService } from '@alfresco/adf-core';\nimport { CommonModule } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { FormsModule } from '@angular/forms';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nexport enum LogicalSearchFields {\n    MATCH_ALL = 'matchAll',\n    MATCH_ANY = 'matchAny',\n    EXCLUDE = 'exclude',\n    MATCH_EXACT = 'matchExact'\n}\n\nexport type LogicalSearchConditionEnumValuedKeys = { [T in LogicalSearchFields]: string };\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface LogicalSearchCondition extends LogicalSearchConditionEnumValuedKeys {}\n\n@Component({\n    selector: 'adf-search-logical-filter',\n    standalone: true,\n    imports: [CommonModule, MatFormFieldModule, TranslateModule, FormsModule],\n    templateUrl: './search-logical-filter.component.html',\n    styleUrls: ['./search-logical-filter.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class SearchLogicalFilterComponent implements SearchWidget, OnInit {\n    id: string;\n    settings?: SearchWidgetSettings;\n    context?: SearchQueryBuilderService;\n    startValue: string;\n    searchCondition: LogicalSearchCondition;\n    fields = Object.keys(LogicalSearchFields);\n    LogicalSearchFields = LogicalSearchFields;\n    displayValue$ = new ReplaySubject<string>(1);\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    constructor(private translationService: TranslationService) {}\n\n    ngOnInit(): void {\n        this.clearSearchInputs();\n        this.context.populateFilters\n            .asObservable()\n            .pipe(\n                map((filtersQueries) => filtersQueries[this.id]),\n                takeUntilDestroyed(this.destroyRef)\n            )\n            .subscribe((filterQuery) => {\n                if (filterQuery) {\n                    this.searchCondition = filterQuery;\n                    this.submitValues(false);\n                } else {\n                    this.reset(false);\n                }\n                this.context.filterLoaded.next();\n            });\n    }\n\n    submitValues(updateContext = true) {\n        if (this.hasValidValue() && this.id && this.context && this.settings && this.settings.field) {\n            this.updateDisplayValue();\n            const fields = this.settings.field.split(',').map((field) => (field += ':'));\n            let query = '';\n            Object.keys(this.searchCondition).forEach((key) => {\n                if (this.searchCondition[key] !== '') {\n                    let connector = '';\n                    let subQuery = '';\n                    switch (key) {\n                        case LogicalSearchFields.MATCH_ALL:\n                        case LogicalSearchFields.MATCH_EXACT:\n                            connector = 'AND';\n                            break;\n                        case LogicalSearchFields.MATCH_ANY:\n                            connector = 'OR';\n                            break;\n                        case LogicalSearchFields.EXCLUDE:\n                            connector = 'AND NOT';\n                            break;\n                        default:\n                            break;\n                    }\n                    fields.forEach((field) => {\n                        subQuery += subQuery === '' ? '' : key === LogicalSearchFields.EXCLUDE ? ' AND ' : ' OR ';\n                        let fieldQuery = '(';\n                        if (key === LogicalSearchFields.MATCH_EXACT) {\n                            fieldQuery += field + '\"' + this.searchCondition[key].trim() + '\"';\n                        } else {\n                            this.searchCondition[key]\n                                .split(' ')\n                                .filter((condition: string) => condition !== '')\n                                .forEach((phrase: string) => {\n                                    const refinedPhrase = '\"' + phrase + '\"';\n                                    fieldQuery +=\n                                        fieldQuery === '('\n                                            ? `${key === LogicalSearchFields.EXCLUDE ? 'NOT ' : ''}${field}${refinedPhrase}`\n                                            : ` ${connector} ${field}${refinedPhrase}`;\n                                });\n                        }\n                        subQuery += `${fieldQuery})`;\n                    });\n                    query += query === '' ? `(${subQuery})` : ` AND (${subQuery})`;\n                    subQuery = '';\n                }\n            });\n            this.context.queryFragments[this.id] = query;\n            if (updateContext) {\n                this.context.update();\n            }\n        } else {\n            this.reset(updateContext);\n        }\n    }\n\n    hasValidValue(): boolean {\n        return Object.keys(this.searchCondition).some((key: string) => this.searchCondition[key] !== '');\n    }\n\n    getCurrentValue(): LogicalSearchCondition {\n        return this.searchCondition;\n    }\n\n    setValue(value: LogicalSearchCondition) {\n        this.searchCondition = value;\n        this.updateDisplayValue();\n    }\n\n    reset(updateContext = true) {\n        if (this.id && this.context) {\n            this.context.queryFragments[this.id] = '';\n            this.clearSearchInputs();\n            this.context.filterRawParams[this.id] = this.searchCondition;\n            if (updateContext) {\n                this.context.update();\n            }\n        }\n    }\n\n    private updateDisplayValue(): void {\n        this.context.filterRawParams[this.id] = this.searchCondition;\n        if (this.hasValidValue()) {\n            const displayValue = Object.keys(this.searchCondition).reduce((acc, key) => {\n                const fieldIndex = Object.values(LogicalSearchFields).indexOf(key as LogicalSearchFields);\n                const fieldKeyTranslated = this.translationService.instant(`SEARCH.LOGICAL_SEARCH.${this.fields[fieldIndex]}`);\n                return this.searchCondition[key] !== '' ? `${acc} ${fieldKeyTranslated}: ${this.searchCondition[key]}` : acc;\n            }, '');\n            this.displayValue$.next(displayValue);\n        } else {\n            this.displayValue$.next('');\n        }\n    }\n\n    private clearSearchInputs(): void {\n        this.searchCondition = { matchAll: '', matchAny: '', matchExact: '', exclude: '' };\n        this.updateDisplayValue();\n    }\n}\n","<div class=\"adf-search-logical-filter-container\">\n    <div *ngFor=\"let field of fields\" class=\"adf-search-input\">\n        <mat-label data-automation-id=\"adf-search-input-label\">{{('SEARCH.LOGICAL_SEARCH.' + field + '_LABEL') | translate}}</mat-label>\n        <input type=\"text\"\n            [(ngModel)]=\"searchCondition[LogicalSearchFields[field]]\"\n            placeholder=\"{{ ('SEARCH.LOGICAL_SEARCH.' + field + '_HINT') | translate }}\"\n            [attr.aria-label]=\"('SEARCH.LOGICAL_SEARCH.' + field + '_HINT') | translate\"/>\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 { AlfrescoApiService } from '../../services/alfresco-api.service';\nimport { AppConfigService, UserPreferencesService } from '@alfresco/adf-core';\nimport { EventEmitter, Injectable, Output } from '@angular/core';\nimport { from, Observable } from 'rxjs';\nimport { map, tap } from 'rxjs/operators';\nimport { TagBody, TagEntry, TagPaging, TagsApi } from '@alfresco/js-api';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class TagService {\n    private _tagsApi: TagsApi;\n    get tagsApi(): TagsApi {\n        this._tagsApi = this._tagsApi ?? new TagsApi(this.apiService.getInstance());\n        return this._tagsApi;\n    }\n\n    /** Emitted when tag information is updated. */\n    @Output()\n    refresh = new EventEmitter();\n\n    constructor(\n        private apiService: AlfrescoApiService,\n        private userPreferencesService: UserPreferencesService,\n        private appConfigService: AppConfigService\n    ) {}\n\n    /**\n     * Gets a list of tags added to a node.\n     *\n     * @param nodeId ID of the target node\n     * @returns TagPaging object (defined in JS-API) containing the tags\n     */\n    getTagsByNodeId(nodeId: string): Observable<TagPaging> {\n        return from(this.tagsApi.listTagsForNode(nodeId));\n    }\n\n    /**\n     * Gets a list of all the tags already defined in the repository.\n     *\n     * @param opts Options supported by JS-API\n     * @param includedCounts True if count field should be included in response object for each tag, false otherwise.\n     * @returns TagPaging object (defined in JS-API) containing the tags\n     */\n    getAllTheTags(opts?: any, includedCounts?: boolean): Observable<TagPaging> {\n        return from(\n            this.tagsApi.listTags({\n                include: includedCounts ? ['count'] : undefined,\n                ...opts\n            })\n        );\n    }\n\n    /**\n     * Adds a tag to a node.\n     *\n     * @param nodeId ID of the target node\n     * @param tagName Name of the tag to add\n     * @returns TagEntry object (defined in JS-API) with details of the new tag\n     */\n    addTag(nodeId: string, tagName: string): Observable<TagEntry> {\n        const tagBody = new TagBody();\n        tagBody.tag = tagName;\n\n        return from(this.tagsApi.createTagForNode(nodeId, [tagBody])).pipe(tap((tagEntry) => this.refresh.emit(tagEntry)));\n    }\n\n    /**\n     * Removes a tag from a node.\n     *\n     * @param nodeId ID of the target node\n     * @param tag Name of the tag to remove\n     * @returns Null object when the operation completes\n     */\n    removeTag(nodeId: string, tag: string): Observable<void> {\n        return from(this.tagsApi.deleteTagFromNode(nodeId, tag)).pipe(tap(() => this.refresh.emit()));\n    }\n\n    /**\n     * Creates tags.\n     *\n     * @param tags list of tags to create.\n     * @returns Created tags.\n     */\n    createTags(tags: TagBody[]): Observable<TagEntry[]> {\n        return from(this.tagsApi.createTags(tags)).pipe(tap((tagEntries) => this.refresh.emit(tagEntries)));\n    }\n\n    /**\n     * Update a tag\n     *\n     * @param tagId The identifier of a tag.\n     * @param tagBody The updated tag.\n     * @returns Updated tag.\n     */\n    updateTag(tagId: string, tagBody: TagBody): Observable<TagEntry> {\n        return from(this.tagsApi.updateTag(tagId, tagBody)).pipe(tap((tagEntry) => this.refresh.emit(tagEntry)));\n    }\n\n    /**\n     * Find tags which name contains searched name.\n     *\n     * @param name Value for name which should be used during searching tags.\n     * @param sorting Object which configures sorting. OrderBy field specifies field used for sorting, direction specified ascending or descending direction.\n     * Default sorting is ascending by tag field.\n     * @param includedCounts True if count field should be included in response object for each tag, false otherwise.\n     * @param skipCount Specify how many first results should be skipped. Default 0.\n     * @param maxItems Specify max number of returned tags. Default is specified by UserPreferencesService.\n     * @returns Found tags which name contains searched name.\n     */\n    searchTags(\n        name: string,\n        sorting = { orderBy: 'tag', direction: 'asc' },\n        includedCounts?: boolean,\n        skipCount = 0,\n        maxItems?: number\n    ): Observable<TagPaging> {\n        maxItems = maxItems || this.userPreferencesService.paginationSize;\n        return this.getAllTheTags(\n            {\n                tag: `*${name}*`,\n                skipCount,\n                maxItems,\n                sorting,\n                matching: true\n            },\n            includedCounts\n        );\n    }\n\n    /**\n     * Find tag which name matches exactly to passed name.\n     *\n     * @param name Value for name which should be used during finding exact tag.\n     * @returns Found tag which name matches exactly to passed name.\n     */\n    findTagByName(name: string): Observable<TagEntry> {\n        return this.getAllTheTags({ tag: name }).pipe(map((result) => result.list.entries[0]));\n    }\n\n    /**\n     * Deletes a tag with tagId.\n     * This will cause the tag to be removed from all nodes.\n     * You must have admin rights to delete a tag.\n     *\n     * @param tagId of the tag to be deleted\n     * @returns Null object when the operation completes\n     */\n    deleteTag(tagId: string): Observable<void> {\n        return from(this.tagsApi.deleteTag(tagId)).pipe(tap(() => this.refresh.emit()));\n    }\n\n    /**\n     * Assign tags to node. If tag is new then tag is also created additionally, if tag already exists then it is just assigned.\n     *\n     * @param nodeId Id of node to which tags should be assigned.\n     * @param tags List of tags to create and assign or just assign if they already exist.\n     * @returns Just linked tags to node or single tag if linked only one tag.\n     */\n    assignTagsToNode(nodeId: string, tags: TagBody[]): Observable<TagPaging | TagEntry> {\n        return from(this.tagsApi.assignTagsToNode(nodeId, tags)).pipe(tap((data) => this.refresh.emit(data)));\n    }\n\n    /**\n     * Checks if tags plugin is enabled.\n     *\n     * @returns boolean true if tags plugin is enabled, false otherwise.\n     */\n    areTagsEnabled(): boolean {\n        return this.appConfigService.get('plugins.tagsEnabled', 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 { Injectable } from '@angular/core';\nimport { AppConfigService, UserPreferencesService } from '@alfresco/adf-core';\nimport {\n    CategoriesApi,\n    CategoryBody,\n    CategoryEntry,\n    CategoryLinkBody,\n    CategoryPaging,\n    ResultSetPaging,\n    SearchApi,\n    SEARCH_LANGUAGE\n} from '@alfresco/js-api';\nimport { AlfrescoApiService } from '../../services/alfresco-api.service';\nimport { from, Observable } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class CategoryService {\n    private _categoriesApi: CategoriesApi;\n    private _searchApi: SearchApi;\n\n    get categoriesApi(): CategoriesApi {\n        this._categoriesApi = this._categoriesApi ?? new CategoriesApi(this.apiService.getInstance());\n        return this._categoriesApi;\n    }\n\n    get searchApi(): SearchApi {\n        this._searchApi = this._searchApi ?? new SearchApi(this.apiService.getInstance());\n        return this._searchApi;\n    }\n\n    constructor(\n        private apiService: AlfrescoApiService,\n        private userPreferencesService: UserPreferencesService,\n        private appConfigService: AppConfigService\n    ) {}\n\n    /**\n     * Get subcategories of a given parent category\n     *\n     * @param parentCategoryId The identifier of a parent category.\n     * @param skipCount Number of top categories to skip.\n     * @param maxItems Maximum number of subcategories returned from Observable.\n     * @returns Observable<CategoryPaging>\n     */\n    getSubcategories(parentCategoryId: string, skipCount?: number, maxItems?: number): Observable<CategoryPaging> {\n        return from(this.categoriesApi.getSubcategories(parentCategoryId ?? '-root-', { skipCount, maxItems }));\n    }\n\n    /**\n     * Get a category by ID\n     *\n     * @param categoryId The identifier of a category.\n     * @param opts Optional parameters.\n     * @param opts.fields A list of field names.\n     * @param opts.include Returns additional information about the category. The following optional fields can be requested:\n     * count\n     * path\n     * @returns Observable<CategoryEntry>\n     */\n    getCategory(categoryId: string, opts?: any): Observable<CategoryEntry> {\n        return from(this.categoriesApi.getCategory(categoryId, opts));\n    }\n\n    /**\n     * Creates subcategories under category with provided categoryId\n     *\n     * @param parentCategoryId The identifier of a parent category.\n     * @param payload List of categories to be created.\n     * @returns Observable<CategoryPaging | CategoryEntry>\n     */\n    createSubcategories(parentCategoryId: string, payload: CategoryBody[]): Observable<CategoryPaging | CategoryEntry> {\n        return from(this.categoriesApi.createSubcategories(parentCategoryId, payload, {}));\n    }\n\n    /**\n     * Updates category\n     *\n     * @param categoryId The identifier of a category.\n     * @param payload Updated category body\n     * @returns Observable<CategoryEntry>\n     */\n    updateCategory(categoryId: string, payload: CategoryBody): Observable<CategoryEntry> {\n        return from(this.categoriesApi.updateCategory(categoryId, payload, {}));\n    }\n\n    /**\n     * Deletes category\n     *\n     * @param categoryId The identifier of a category.\n     * @returns Observable<void>\n     */\n    deleteCategory(categoryId: string): Observable<void> {\n        return from(this.categoriesApi.deleteCategory(categoryId));\n    }\n\n    /**\n     * Searches categories by their name.\n     *\n     * @param name Value for name which should be used during searching categories.\n     * @param skipCount Specify how many first results should be skipped. Default 0.\n     * @param maxItems Specify max number of returned categories. Default is specified by UserPreferencesService.\n     * @returns Observable<ResultSetPaging> Found categories which name contains searched name.\n     */\n    searchCategories(name: string, skipCount = 0, maxItems?: number): Observable<ResultSetPaging> {\n        maxItems = maxItems || this.userPreferencesService.paginationSize;\n        return from(\n            this.searchApi.search({\n                query: {\n                    language: SEARCH_LANGUAGE.AFTS,\n                    query: `cm:name:\"*${name}*\" AND TYPE:'cm:category' AND PATH:\"/cm:categoryRoot/cm:generalclassifiable//*\"`\n                },\n                paging: {\n                    skipCount,\n                    maxItems\n                },\n                include: ['path']\n            })\n        );\n    }\n\n    /**\n     * List of categories that node is assigned to\n     *\n     * @param nodeId The identifier of a node.\n     * @returns Observable<CategoryPaging> Categories that node is assigned to\n     */\n    getCategoryLinksForNode(nodeId: string): Observable<CategoryPaging> {\n        return from(this.categoriesApi.getCategoryLinksForNode(nodeId, { include: ['path'] }));\n    }\n\n    /**\n     * Unlink category from a node\n     *\n     * @param nodeId The identifier of a node.\n     * @param categoryId The identifier of a category.\n     * @returns Observable<void>\n     */\n    unlinkNodeFromCategory(nodeId: string, categoryId: string): Observable<void> {\n        return from(this.categoriesApi.unlinkNodeFromCategory(nodeId, categoryId));\n    }\n\n    /**\n     * Link node to a category\n     *\n     * @param nodeId The identifier of a node.\n     * @param categoryLinkBodyCreate Array of a categories that node will be linked to.\n     * @returns Observable<CategoryEntry>\n     */\n    linkNodeToCategory(nodeId: string, categoryLinkBodyCreate: CategoryLinkBody[]): Observable<CategoryPaging | CategoryEntry> {\n        return from(this.categoriesApi.linkNodeToCategory(nodeId, categoryLinkBodyCreate));\n    }\n\n    /**\n     * Checks if categories plugin is enabled.\n     *\n     * @returns boolean true if categories plugin is enabled, false otherwise.\n     */\n    areCategoriesEnabled(): boolean {\n        return this.appConfigService.get('plugins.categoriesEnabled', 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 interface AutocompleteOption {\n    value: string;\n    id?: string;\n    fullPath?: string;\n    query?: string;\n}\n\nexport enum AutocompleteField {\n    TAG = 'TAG',\n    CATEGORIES = 'cm:categories'\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY 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    DestroyRef,\n    ElementRef,\n    EventEmitter,\n    inject,\n    Input,\n    OnChanges,\n    OnInit,\n    Output,\n    SimpleChanges,\n    ViewChild,\n    ViewEncapsulation\n} from '@angular/core';\nimport { ENTER } from '@angular/cdk/keycodes';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatAutocompleteModule, MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\nimport { MatChipInputEvent, MatChipsModule } from '@angular/material/chips';\nimport { EMPTY, Observable, timer } from 'rxjs';\nimport { debounce, startWith, tap } from 'rxjs/operators';\nimport { AutocompleteOption } from '../../models/autocomplete-option.interface';\nimport { CommonModule } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n    selector: 'adf-search-chip-autocomplete-input',\n    standalone: true,\n    imports: [CommonModule, MatFormFieldModule, MatChipsModule, TranslateModule, MatIconModule, ReactiveFormsModule, MatAutocompleteModule],\n    templateUrl: './search-chip-autocomplete-input.component.html',\n    styleUrls: ['./search-chip-autocomplete-input.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class SearchChipAutocompleteInputComponent implements OnInit, OnChanges {\n    @ViewChild('optionInput')\n    optionInput: ElementRef<HTMLInputElement>;\n\n    @Input()\n    autocompleteOptions: AutocompleteOption[] = [];\n\n    @Input()\n    preselectedOptions: AutocompleteOption[] = [];\n\n    @Input()\n    onReset$: Observable<void>;\n\n    @Input()\n    allowOnlyPredefinedValues = true;\n\n    @Input()\n    placeholder = 'SEARCH.FILTER.ACTIONS.ADD_OPTION';\n\n    @Input()\n    compareOption?: (option1: AutocompleteOption, option2: AutocompleteOption) => boolean;\n\n    @Input()\n    formatChipValue?: (option: string) => string;\n\n    @Input()\n    filter = (options: AutocompleteOption[], value: string): AutocompleteOption[] => {\n        const filterValue = value.toLowerCase();\n        return options.filter((option) => option.value.toLowerCase().includes(filterValue)).slice(0, 15);\n    };\n\n    @Output()\n    optionsChanged = new EventEmitter<AutocompleteOption[]>();\n\n    @Output()\n    inputChanged = new EventEmitter<string>();\n\n    readonly separatorKeysCodes = [ENTER] as const;\n    formCtrl = new FormControl('');\n    filteredOptions: AutocompleteOption[] = [];\n    selectedOptions: AutocompleteOption[] = [];\n\n    private _activeAnyOption = false;\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    set activeAnyOption(active: boolean) {\n        this._activeAnyOption = active;\n    }\n\n    ngOnInit() {\n        this.formCtrl.valueChanges\n            .pipe(\n                startWith(''),\n                tap(() => (this.activeAnyOption = false)),\n                debounce((value: string) => (value ? timer(300) : EMPTY)),\n                takeUntilDestroyed(this.destroyRef)\n            )\n            .subscribe((value: string) => {\n                this.filteredOptions = value ? this.filter(this.autocompleteOptions, value) : [];\n                this.inputChanged.emit(value);\n            });\n        this.onReset$?.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.reset());\n        this.selectedOptions = this.preselectedOptions ?? [];\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        if (changes.autocompleteOptions) {\n            this.filteredOptions =\n                changes.autocompleteOptions.currentValue?.length > 0\n                    ? this.filter(changes.autocompleteOptions.currentValue, this.formCtrl.value)\n                    : [];\n        }\n    }\n\n    add(event: MatChipInputEvent) {\n        if (!this._activeAnyOption) {\n            let value = (event.value || '').trim();\n            if (this.formatChipValue) {\n                value = this.formatChipValue(value);\n            }\n\n            if (value && this.isExists(value) && !this.isAdded(value)) {\n                if (this.allowOnlyPredefinedValues) {\n                    const index = this.autocompleteOptions.findIndex((option) => option.value.toLowerCase() === value.toLowerCase());\n                    this.selectedOptions.push(this.autocompleteOptions[index]);\n                } else {\n                    this.selectedOptions.push({ value });\n                }\n                this.optionsChanged.emit(this.selectedOptions);\n                event.chipInput.clear();\n                this.formCtrl.setValue('');\n            }\n        }\n    }\n\n    remove(value: AutocompleteOption) {\n        const index = this.selectedOptions.indexOf(value);\n\n        if (index >= 0) {\n            this.selectedOptions.splice(index, 1);\n            this.optionsChanged.emit(this.selectedOptions);\n        }\n    }\n\n    selected(event: MatAutocompleteSelectedEvent) {\n        this.selectedOptions.push(event.option.value);\n        this.optionInput.nativeElement.value = '';\n        this.formCtrl.setValue('');\n        this.optionsChanged.emit(this.selectedOptions);\n    }\n\n    /**\n     * Determines if a given option is already selected.\n     *\n     * This method checks if the provided `option` is present in the `selectedOptions` array.\n     * If a custom comparison function (`compareOption`) is provided, it uses this function to determine equality.\n     * Otherwise, it falls back to using strict equality comparison.\n     *\n     * @param option - The option to check for selection.\n     * @returns `true` if the option is selected, `false` otherwise.\n     */\n    isOptionSelected(option: AutocompleteOption): boolean {\n        const compare = this.compareOption;\n        const array = this.selectedOptions;\n\n        return compare ? array.some((arrayValue) => compare(option, arrayValue)) : array.includes(option);\n    }\n\n    private isAdded(value: string): boolean {\n        const valueLowerCase = value.toLowerCase();\n        return this.selectedOptions.some((option) => option.value.toLowerCase() === valueLowerCase);\n    }\n\n    private isExists(value: string): boolean {\n        const valueLowerCase = value.toLowerCase();\n        return this.allowOnlyPredefinedValues ? this.autocompleteOptions.some((option) => option.value.toLowerCase() === valueLowerCase) : true;\n    }\n\n    private reset() {\n        this.selectedOptions = [];\n        this.optionsChanged.emit(this.selectedOptions);\n        this.formCtrl.setValue('');\n        this.optionInput.nativeElement.value = '';\n    }\n}\n","<mat-form-field class=\"adf-chip-list\" appearance=\"outline\">\n    <mat-chip-grid #chipList [attr.aria-label]=\"'SEARCH.FILTER.ARIA-LABEL.OPTIONS-SELECTION' | translate\">\n        <mat-chip-row\n            class=\"adf-option-chips adf-autocomplete-added-option-chips\"\n            *ngFor=\"let option of selectedOptions\"\n            (removed)=\"remove(option)\">\n            <span [title]=\"option.fullPath ? ('SEARCH.RESULTS.WILL_CONTAIN' | translate:{searchTerm: option.fullPath}) : undefined\">\n                {{ option.value }}\n            </span>\n            <button\n                matChipRemove\n                class=\"adf-option-chips-delete-button adf-autocomplete-added-option-chips-delete-button\"\n                [title]=\"'SEARCH.FILTER.BUTTONS.REMOVE' | translate\"\n            >\n                <mat-icon class=\"adf-option-chips-delete-icon adf-autocomplete-added-option-chips-delete-icon\">close</mat-icon>\n            </button>\n        </mat-chip-row>\n        <input\n            placeholder=\"{{ placeholder | translate }}\"\n            aria-controls=\"adf-search-chip-autocomplete\"\n            #optionInput\n            #autocompleteTrigger=\"matAutocompleteTrigger\"\n            [formControl]=\"formCtrl\"\n            [matAutocomplete]=\"auto\"\n            [matChipInputFor]=\"chipList\"\n            [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\n            [attr.aria-label]=\"placeholder | translate\"\n            class=\"adf-search-properties-file-input\"\n            (matChipInputTokenEnd)=\"add($event)\"\n            (blur)=\"activeAnyOption = false; autocompleteTrigger.closePanel()\"\n            data-automation-id=\"adf-search-chip-autocomplete-input\">\n    </mat-chip-grid>\n    <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"selected($event)\" id=\"adf-search-chip-autocomplete\"\n                      (optionActivated)=\"activeAnyOption = true\" (closed)=\"activeAnyOption = false\">\n        <ng-container *ngIf=\"optionInput.value.length > 0\">\n            <mat-option\n                *ngFor=\"let option of filteredOptions\"\n                [value]=\"option\"\n                (mousedown)=$event.preventDefault()\n                [disabled]=\"isOptionSelected(option)\"\n                [attr.data-automation-id]=\"'option-' + option.value\"\n                [title]=\"option.fullPath ? ('SEARCH.RESULTS.WILL_CONTAIN' | translate : { searchTerm: option.fullPath || option.value }) : undefined\"\n                class=\"adf-search-chip-autocomplete-added-option\"\n                [ngClass]=\"isOptionSelected(option) && 'adf-autocomplete-added-option'\"\n            >\n                {{ option.fullPath || option.value }}\n            </mat-option>\n        </ng-container>\n    </mat-autocomplete>\n</mat-form-field>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 './search-chip-autocomplete-input.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 { Component, DestroyRef, inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { BehaviorSubject, Observable, ReplaySubject, Subject } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { SearchWidget } from '../../models/search-widget.interface';\nimport { SearchWidgetSettings } from '../../models/search-widget-settings.interface';\nimport { SearchQueryBuilderService } from '../../services/search-query-builder.service';\nimport { SearchFilterList } from '../../models/search-filter-list.model';\nimport { TagService } from '../../../tag/services/tag.service';\nimport { CategoryService } from '../../../category/services/category.service';\nimport { AutocompleteField, AutocompleteOption } from '../../models/autocomplete-option.interface';\nimport { CommonModule } from '@angular/common';\nimport { SearchChipAutocompleteInputComponent } from '../search-chip-autocomplete-input';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n    selector: 'adf-search-filter-autocomplete-chips',\n    standalone: true,\n    imports: [CommonModule, SearchChipAutocompleteInputComponent, TranslateModule, MatButtonModule],\n    templateUrl: './search-filter-autocomplete-chips.component.html',\n    encapsulation: ViewEncapsulation.None\n})\nexport class SearchFilterAutocompleteChipsComponent implements SearchWidget, OnInit {\n    id: string;\n    settings?: SearchWidgetSettings;\n    context?: SearchQueryBuilderService;\n    options: SearchFilterList<AutocompleteOption[]>;\n    startValue: AutocompleteOption[] = [];\n    displayValue$ = new ReplaySubject<string>(1);\n    selectedOptions: AutocompleteOption[] = [];\n    enableChangeUpdate: boolean;\n\n    private resetSubject$ = new Subject<void>();\n    reset$: Observable<void> = this.resetSubject$.asObservable();\n    private autocompleteOptionsSubject$ = new BehaviorSubject<AutocompleteOption[]>([]);\n    autocompleteOptions$: Observable<AutocompleteOption[]> = this.autocompleteOptionsSubject$.asObservable();\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    constructor(private tagService: TagService, private categoryService: CategoryService) {\n        this.options = new SearchFilterList<AutocompleteOption[]>();\n    }\n\n    ngOnInit() {\n        if (this.settings) {\n            this.setOptions();\n            if (this.startValue?.length > 0) {\n                this.setValue(this.startValue);\n            }\n            this.enableChangeUpdate = this.settings.allowUpdateOnChange ?? true;\n        }\n        this.context.populateFilters\n            .asObservable()\n            .pipe(\n                map((filterQueries) => filterQueries[this.id]),\n                takeUntilDestroyed(this.destroyRef)\n            )\n            .subscribe((filterQuery) => {\n                if (filterQuery) {\n                    this.selectedOptions = filterQuery;\n                    this.updateQuery(false);\n                } else if (!filterQuery && this.selectedOptions.length) {\n                    this.reset(false);\n                }\n                this.context.filterLoaded.next();\n            });\n    }\n\n    reset(updateContext = true) {\n        this.selectedOptions = [];\n        this.context.filterRawParams[this.id] = undefined;\n        this.resetSubject$.next();\n        this.updateQuery(updateContext);\n    }\n\n    submitValues() {\n        this.updateQuery();\n    }\n\n    hasValidValue(): boolean {\n        return !!this.selectedOptions;\n    }\n\n    getCurrentValue(): AutocompleteOption[] {\n        return this.selectedOptions;\n    }\n\n    onOptionsChange(selectedOptions: AutocompleteOption[]) {\n        this.selectedOptions = selectedOptions;\n        if (this.enableChangeUpdate) {\n            this.updateQuery();\n            this.context.update();\n        }\n    }\n\n    setValue(value: AutocompleteOption[]) {\n        this.selectedOptions = value;\n        this.displayValue$.next(this.selectedOptions.join(', '));\n        this.submitValues();\n    }\n\n    onInputChange(value: string) {\n        if (this.settings.field === AutocompleteField.CATEGORIES && value) {\n            this.searchForExistingCategories(value);\n        }\n    }\n\n    optionComparator(option1: AutocompleteOption, option2: AutocompleteOption): boolean {\n        return option1.id ? option1.id.toUpperCase() === option2.id.toUpperCase() : option1.value.toUpperCase() === option2.value.toUpperCase();\n    }\n\n    private updateQuery(updateContext = true) {\n        this.context.filterRawParams[this.id] = this.selectedOptions.length > 0 ? this.selectedOptions : undefined;\n        this.displayValue$.next(this.selectedOptions.map((option) => option.value).join(', '));\n        if (this.context && this.settings && this.settings.field) {\n            let queryFragments;\n            if (this.settings.field === AutocompleteField.CATEGORIES) {\n                queryFragments = this.selectedOptions.map((val) => `${this.settings.field}:\"workspace://SpacesStore/${val.id}\"`);\n            } else {\n                queryFragments = this.selectedOptions.map((val) => val.query ?? `${this.settings.field}:\"${val.value}\"`);\n            }\n            this.context.queryFragments[this.id] = queryFragments.join(' OR ');\n            if (updateContext) {\n                this.context.update();\n            }\n        }\n    }\n\n    private setOptions() {\n        switch (this.settings.field) {\n            case AutocompleteField.TAG:\n                this.tagService.getAllTheTags().subscribe((tagPaging) => {\n                    this.autocompleteOptionsSubject$.next(\n                        tagPaging.list.entries.map((tag) => ({\n                            value: tag.entry.tag\n                        }))\n                    );\n                });\n                break;\n            case AutocompleteField.CATEGORIES:\n                this.autocompleteOptionsSubject$.next([]);\n                break;\n            default:\n                this.autocompleteOptionsSubject$.next(this.settings.autocompleteOptions);\n        }\n    }\n\n    private searchForExistingCategories(searchTerm: string) {\n        this.categoryService.searchCategories(searchTerm, 0, 15).subscribe((existingCategoriesResult) => {\n            this.autocompleteOptionsSubject$.next(\n                existingCategoriesResult.list.entries.map((rowEntry) => {\n                    const path = rowEntry.entry.path.name.split('/').splice(3).join('/');\n                    const fullPath = path ? `${path}/${rowEntry.entry.name}` : rowEntry.entry.name;\n                    return { id: rowEntry.entry.id, value: rowEntry.entry.name, fullPath };\n                })\n            );\n        });\n    }\n}\n","<adf-search-chip-autocomplete-input\n    [autocompleteOptions]=\"autocompleteOptions$ | async\"\n    [preselectedOptions]=\"selectedOptions\"\n    [onReset$]=\"reset$\"\n    [allowOnlyPredefinedValues]=\"settings.allowOnlyPredefinedValues\"\n    (inputChanged)=\"onInputChange($event)\"\n    [compareOption]=\"optionComparator\"\n    (optionsChanged)=\"onOptionsChange($event)\" />\n\n<div class=\"adf-facet-buttons\" *ngIf=\"!settings?.hideDefaultAction\">\n    <button mat-button color=\"primary\" data-automation-id=\"adf-search-chip-autocomplete-btn-clear\" (click)=\"reset()\">\n        {{ 'SEARCH.FILTER.ACTIONS.CLEAR' | translate }}\n    </button>\n    <button mat-button color=\"primary\" data-automation-id=\"adf-search-chip-autocomplete-btn-apply\" (click)=\"submitValues()\">\n        {{ 'SEARCH.FILTER.ACTIONS.APPLY' | translate }}\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\nexport enum FileSizeOperator {\n    AT_LEAST = 'SEARCH.SEARCH_PROPERTIES.FILE_SIZE_OPERATOR.AT_LEAST',\n    AT_MOST = 'SEARCH.SEARCH_PROPERTIES.FILE_SIZE_OPERATOR.AT_MOST',\n    EXACTLY = 'SEARCH.SEARCH_PROPERTIES.FILE_SIZE_OPERATOR.EXACTLY'\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 FileSizeUnit {\n    static readonly KB = new FileSizeUnit('SEARCH.SEARCH_PROPERTIES.FILE_SIZE_UNIT_ABBREVIATION.KB', 1024);\n    static readonly MB = new FileSizeUnit('SEARCH.SEARCH_PROPERTIES.FILE_SIZE_UNIT_ABBREVIATION.MB', 1048576);\n    static readonly GB = new FileSizeUnit('SEARCH.SEARCH_PROPERTIES.FILE_SIZE_UNIT_ABBREVIATION.GB', 1073741824);\n\n    private constructor(readonly abbreviation: string, readonly bytes: 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 { AfterViewChecked, Component, DestroyRef, ElementRef, inject, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { FormBuilder, ReactiveFormsModule } from '@angular/forms';\nimport { FileSizeCondition } from './file-size-condition';\nimport { FileSizeOperator } from './file-size-operator.enum';\nimport { FileSizeUnit } from './file-size-unit.enum';\nimport { ReplaySubject, Subject } from 'rxjs';\nimport { SearchWidgetSettings } from '../../models/search-widget-settings.interface';\nimport { SearchQueryBuilderService } from '../../services/search-query-builder.service';\nimport { SearchProperties } from './search-properties';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { SearchWidget } from '../../models/search-widget.interface';\nimport { AutocompleteOption } from '../../models/autocomplete-option.interface';\nimport { CommonModule } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { SearchChipAutocompleteInputComponent } from '../search-chip-autocomplete-input';\nimport { map } from 'rxjs/operators';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n    selector: 'adf-search-properties',\n    standalone: true,\n    imports: [CommonModule, ReactiveFormsModule, TranslateModule, MatFormFieldModule, MatSelectModule, SearchChipAutocompleteInputComponent],\n    templateUrl: './search-properties.component.html',\n    styleUrls: ['./search-properties.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class SearchPropertiesComponent implements OnInit, AfterViewChecked, SearchWidget {\n    id: string;\n    settings?: SearchWidgetSettings;\n    context?: SearchQueryBuilderService;\n    startValue: SearchProperties;\n    displayValue$ = new ReplaySubject<string>(1);\n    autocompleteOptions: AutocompleteOption[] = [];\n    preselectedOptions: AutocompleteOption[] = [];\n\n    private _form = this.formBuilder.nonNullable.group<FileSizeCondition>({\n        fileSizeOperator: FileSizeOperator.AT_LEAST,\n        fileSize: undefined,\n        fileSizeUnit: FileSizeUnit.KB\n    });\n    private _fileSizeOperators = Object.keys(FileSizeOperator).map<string>((key) => FileSizeOperator[key]);\n    private _fileSizeUnits = [FileSizeUnit.KB, FileSizeUnit.MB, FileSizeUnit.GB];\n    private canvas = document.createElement('canvas');\n    private _fileSizeOperatorsMaxWidth: number;\n    private _selectedExtensions: string[];\n    private _reset$ = new Subject<void>();\n    private sizeField: string;\n    private nameField: string;\n\n    @ViewChild('fileSizeOperatorSelect', { read: ElementRef })\n    fileSizeOperatorSelectElement: ElementRef;\n\n    get form(): SearchPropertiesComponent['_form'] {\n        return this._form;\n    }\n\n    get fileSizeOperators(): string[] {\n        return this._fileSizeOperators;\n    }\n\n    get fileSizeUnits(): FileSizeUnit[] {\n        return this._fileSizeUnits;\n    }\n\n    get fileSizeOperatorsMaxWidth(): number {\n        return this._fileSizeOperatorsMaxWidth;\n    }\n\n    get reset$(): Subject<void> {\n        return this._reset$;\n    }\n\n    get selectedExtensions(): AutocompleteOption[] {\n        return this.parseToAutocompleteOptions(this._selectedExtensions);\n    }\n\n    set selectedExtensions(extensions: AutocompleteOption[]) {\n        this._selectedExtensions = this.parseFromAutocompleteOptions(extensions);\n    }\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    constructor(private formBuilder: FormBuilder, private translateService: TranslateService) {}\n\n    ngOnInit() {\n        if (this.settings) {\n            if (!this.settings.fileExtensions) {\n                this.settings.fileExtensions = [];\n            }\n            this.autocompleteOptions = this.parseToAutocompleteOptions(this.settings.fileExtensions);\n            [this.sizeField, this.nameField] = this.settings.field.split(',');\n        }\n        if (this.startValue) {\n            this.setValue(this.startValue);\n        }\n        this.context.populateFilters\n            .asObservable()\n            .pipe(\n                map((filtersQueries) => filtersQueries[this.id]),\n                takeUntilDestroyed(this.destroyRef)\n            )\n            .subscribe((filterQuery) => {\n                if (filterQuery) {\n                    filterQuery.fileSizeCondition.fileSizeUnit = this.fileSizeUnits.find(\n                        (fileSizeUnit) => fileSizeUnit.bytes === filterQuery.fileSizeCondition.fileSizeUnit.bytes\n                    );\n                    this.form.patchValue(filterQuery.fileSizeCondition);\n                    this.form.updateValueAndValidity();\n                    this._selectedExtensions = filterQuery.fileExtensions ?? [];\n                    this.preselectedOptions = this.parseToAutocompleteOptions(this._selectedExtensions);\n                    this.submitValues(false);\n                } else {\n                    this.reset(false);\n                }\n                this.context.filterLoaded.next();\n            });\n    }\n\n    ngAfterViewChecked() {\n        if (this.fileSizeOperatorSelectElement?.nativeElement.clientWidth && !this._fileSizeOperatorsMaxWidth) {\n            setTimeout(() => {\n                const extraFreeSpace = 20;\n                this._fileSizeOperatorsMaxWidth =\n                    Math.max(\n                        ...this._fileSizeOperators.map((operator) =>\n                            this.getOperatorNameWidth(operator, this.getCanvasFont(this.fileSizeOperatorSelectElement.nativeElement))\n                        )\n                    ) +\n                    this.fileSizeOperatorSelectElement.nativeElement.querySelector('.mat-mdc-select-arrow-wrapper').clientWidth +\n                    extraFreeSpace;\n            });\n        }\n    }\n\n    narrowDownAllowedCharacters(event: Event) {\n        const value = (event.target as HTMLInputElement).value;\n        if (!(event.target as HTMLInputElement).value) {\n            return;\n        }\n        if ((event as InputEvent).data !== ',' && (event as InputEvent).data !== '.') {\n            (event.target as HTMLInputElement).value = value.replace(/[^0-9.,]/g, '');\n        }\n    }\n\n    clearNumberFieldWhenInvalid(event: FocusEvent) {\n        if (!(event.target as HTMLInputElement).validity.valid) {\n            this.form.controls.fileSize.setValue(undefined);\n        }\n    }\n\n    preventIncorrectNumberCharacters(event: KeyboardEvent): boolean {\n        return event.key !== '-' && event.key !== 'e' && event.key !== '+';\n    }\n\n    compareFileExtensions(extension1: AutocompleteOption, extension2: AutocompleteOption): boolean {\n        return extension1.value.toUpperCase() === extension2.value.toUpperCase();\n    }\n\n    getExtensionWithoutDot(extension: string): string {\n        const extensionSplitByDot = extension.split('.');\n        return extensionSplitByDot[extensionSplitByDot.length - 1];\n    }\n\n    filterExtensions = (extensions: AutocompleteOption[], filterValue: string): AutocompleteOption[] => {\n        const filterValueLowerCase = this.getExtensionWithoutDot(filterValue).toLowerCase();\n        const extensionWithDot = filterValue.startsWith('.');\n        return extensions.filter((option) => {\n            const optionLowerCase = option.value.toLowerCase();\n            return extensionWithDot && filterValueLowerCase\n                ? optionLowerCase.startsWith(filterValueLowerCase)\n                : optionLowerCase.includes(filterValue);\n        });\n    };\n\n    reset(updateContext = true) {\n        this.form.reset();\n        if (this.id && this.context) {\n            this.context.queryFragments[this.id] = '';\n            this.context.filterRawParams[this.id] = undefined;\n            if (updateContext) {\n                this.context.update();\n            }\n        }\n        this.reset$.next();\n        this.displayValue$.next('');\n    }\n\n    submitValues(updateContext = true) {\n        if (this.context?.filterRawParams) {\n            this.context.filterRawParams[this.id] = {\n                fileExtensions: this._selectedExtensions,\n                fileSizeCondition: this.form.value\n            };\n        }\n        if (this.settings && this.context) {\n            this.updateSettingsAndContext(updateContext);\n        }\n    }\n\n    hasValidValue(): boolean {\n        return true;\n    }\n\n    getCurrentValue(): SearchProperties {\n        return {\n            fileSizeCondition: this.form.getRawValue(),\n            fileExtensions: this._selectedExtensions\n        };\n    }\n\n    setValue(searchProperties: SearchProperties) {\n        this.form.patchValue(searchProperties.fileSizeCondition);\n        this.selectedExtensions = this.parseToAutocompleteOptions(searchProperties.fileExtensions ?? []);\n        this.submitValues();\n    }\n\n    private updateSettingsAndContext(updateContext = true): void {\n        let query = '';\n        let displayedValue = '';\n        if (this.form.value.fileSize !== undefined && this.form.value.fileSize !== null) {\n            displayedValue = `${this.translateService.instant(this.form.value.fileSizeOperator)} ${\n                this.form.value.fileSize\n            } ${this.translateService.instant(this.form.value.fileSizeUnit.abbreviation)}`;\n            const size = this.form.value.fileSize * this.form.value.fileSizeUnit.bytes;\n            switch (this.form.value.fileSizeOperator) {\n                case FileSizeOperator.AT_MOST:\n                    query = `${this.sizeField}:[0 TO ${size}]`;\n                    break;\n                case FileSizeOperator.AT_LEAST:\n                    query = `${this.sizeField}:[${size} TO MAX]`;\n                    break;\n                default:\n                    query = `${this.sizeField}:[${size} TO ${size}]`;\n            }\n        }\n        if (this._selectedExtensions?.length) {\n            if (query) {\n                query += ' AND ';\n                displayedValue += ', ';\n            }\n            query += `${this.nameField}:(\"*.${this._selectedExtensions.join('\" OR \"*.')}\")`;\n            displayedValue += this._selectedExtensions.join(', ');\n        }\n        this.displayValue$.next(displayedValue);\n        this.context.queryFragments[this.id] = query;\n        if (updateContext) {\n            this.context.update();\n        }\n    }\n\n    private parseToAutocompleteOptions(array: string[]): AutocompleteOption[] {\n        return array.map((value) => ({ value }));\n    }\n\n    private parseFromAutocompleteOptions(array: AutocompleteOption[]): string[] {\n        return array.flatMap((option) => option.value);\n    }\n\n    private getOperatorNameWidth(operator: string, font: string): number {\n        const context = this.canvas.getContext('2d');\n        context.font = font;\n        return context.measureText(this.translateService.instant(operator)).width;\n    }\n\n    private getCssStyle(element: HTMLElement, property: string): string {\n        return window.getComputedStyle(element, null).getPropertyValue(property);\n    }\n\n    private getCanvasFont(el: HTMLElement): string {\n        return `${this.getCssStyle(el, 'font-weight')} ${this.getCssStyle(el, 'font-size')} ${this.getCssStyle(el, 'font-family')}`;\n    }\n}\n","<form [formGroup]=\"form\" class=\"adf-search-properties-form\">\n    <div class=\"adf-search-properties-file-size-container\">\n        <label\n            for=\"adf-search-properties-file-size\"\n            class=\"adf-search-properties-file-size-label\">\n            {{ 'SEARCH.SEARCH_PROPERTIES.FILE_SIZE' | translate }}\n        </label>\n        <mat-form-field\n            [style.width.px]=\"fileSizeOperatorsMaxWidth\"\n            subscriptSizing=\"dynamic\"\n            class=\"adf-search-properties-file-size-operator\">\n            <mat-select\n                data-automation-id=\"adf-search-properties-file-size-operator-select\"\n                [formControl]=\"form.controls.fileSizeOperator\"\n                #fileSizeOperatorSelect>\n                <mat-option\n                    *ngFor=\"let fileSizeOperator of fileSizeOperators\"\n                    [value]=\"fileSizeOperator\">\n                    {{ fileSizeOperator | translate }}\n                </mat-option>\n            </mat-select>\n        </mat-form-field>\n        <input\n            [formControl]=\"form.controls.fileSize\"\n            type=\"number\"\n            min=\"0\"\n            step=\"any\"\n            (input)=\"narrowDownAllowedCharacters($event)\"\n            (keydown)=\"preventIncorrectNumberCharacters($event)\"\n            id=\"adf-search-properties-file-size\"\n            [placeholder]=\"'SEARCH.SEARCH_PROPERTIES.FILE_SIZE_PLACEHOLDER' | translate\"\n            (blur)=\"clearNumberFieldWhenInvalid($event)\"\n            data-automation-id=\"adf-search-properties-file-size-input\" />\n        <mat-form-field class=\"adf-search-properties-file-size-unit\" subscriptSizing=\"dynamic\">\n            <mat-select\n                [formControl]=\"form.controls.fileSizeUnit\"\n                data-automation-id=\"adf-search-properties-file-size-unit-select\">\n                <mat-option\n                    *ngFor=\"let fileSizeUnit of fileSizeUnits\"\n                    [value]=\"fileSizeUnit\">\n                    {{ fileSizeUnit.abbreviation | translate }}\n                </mat-option>\n            </mat-select>\n        </mat-form-field>\n    </div>\n    <p class=\"adf-search-properties-file-type-label\">{{ 'SEARCH.SEARCH_PROPERTIES.FILE_TYPE' | translate }}</p>\n    <adf-search-chip-autocomplete-input\n        [autocompleteOptions]=\"autocompleteOptions\"\n        [preselectedOptions]=\"preselectedOptions\"\n        (optionsChanged)=\"selectedExtensions = $event\"\n        [onReset$]=\"reset$\"\n        [allowOnlyPredefinedValues]=\"false\"\n        [compareOption]=\"compareFileExtensions\"\n        [formatChipValue]=\"getExtensionWithoutDot\"\n        [filter]=\"filterExtensions\"\n        placeholder=\"SEARCH.SEARCH_PROPERTIES.FILE_TYPE\" />\n</form>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 enum DateRangeType {\n    ANY = 'ANY',\n    IN_LAST = 'IN_LAST',\n    BETWEEN = 'BETWEEN',\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 enum InLastDateType {\n    DAYS = 'DAYS',\n    WEEKS = 'WEEKS',\n    MONTHS = 'MONTHS'\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY 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, TemplateRef } from '@angular/core';\n\n@Directive({\n    selector: '[adf-search-filter-tab]',\n    standalone: true\n})\nexport class SearchFilterTabDirective {\n    @Input('adf-search-filter-tab')\n    name: string;\n\n    constructor(public readonly templateRef: 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 { ChangeDetectorRef, Component, ContentChildren, ElementRef, OnDestroy, OnInit, QueryList, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { SearchFilterTabDirective } from './search-filter-tab.directive';\nimport { CommonModule } from '@angular/common';\nimport { MatTabGroup, MatTabsModule } from '@angular/material/tabs';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n    selector: 'adf-search-filter-tabbed',\n    standalone: true,\n    imports: [CommonModule, MatTabsModule, TranslateModule],\n    templateUrl: './search-filter-tabbed.component.html',\n    styleUrls: ['./search-filter-tabbed.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class SearchFilterTabbedComponent implements OnInit, OnDestroy {\n    @ContentChildren(SearchFilterTabDirective)\n    tabsContents: QueryList<SearchFilterTabDirective>;\n\n    selectedIndex: number = 0;\n\n    @ViewChild(MatTabGroup)\n    private readonly tabGroup: MatTabGroup;\n\n    private readonly intersectionObserver = new IntersectionObserver(\n        (entries) => {\n            if (!entries[0].isIntersecting) {\n                this.tabGroup.selectedIndex = (this.selectedIndex + 1) % this.tabsContents.length;\n                this.changeDetector.detectChanges();\n                this.tabGroup.selectedIndex = this.selectedIndex;\n                this.changeDetector.detectChanges();\n            }\n        },\n        {\n            threshold: [0, 1]\n        }\n    );\n\n    constructor(private readonly element: ElementRef, private readonly changeDetector: ChangeDetectorRef) {}\n\n    ngOnInit(): void {\n        this.intersectionObserver.observe(this.element.nativeElement);\n    }\n\n    ngOnDestroy(): void {\n        this.intersectionObserver.disconnect();\n    }\n\n    onTabIndexChanged(index: number): void {\n        this.selectedIndex = index;\n    }\n}\n","<mat-tab-group (selectedIndexChange)=\"onTabIndexChanged($event)\">\n    <mat-tab *ngFor=\"let tabContent of tabsContents; let i = index\"\n             [labelClass]='selectedIndex === i ? \"adf-search-tab-label-active\" : \"\"'\n             [bodyClass]='selectedIndex === i ? \"adf-search-tab-content-active\" : \"\"'\n             label=\"{{tabContent.name | translate}}\">\n        <ng-container *ngTemplateOutlet=\"tabContent.templateRef\" />\n    </mat-tab>\n</mat-tab-group>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY 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, Inject, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport { endOfDay, isAfter, isBefore, isValid, parse } from 'date-fns';\nimport { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE, MatDateFormats } from '@angular/material/core';\nimport { DateFnsAdapter, MAT_DATE_FNS_FORMATS } from '@angular/material-date-fns-adapter';\nimport { InLastDateType } from './in-last-date-type';\nimport { DateRangeType } from './date-range-type';\nimport { SearchDateRange } from './search-date-range';\nimport { FormBuilder, ReactiveFormsModule, UntypedFormControl, Validators } from '@angular/forms';\nimport { DateFnsUtils, UserPreferencesService, UserPreferenceValues } from '@alfresco/adf-core';\nimport { CommonModule } from '@angular/common';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nconst DEFAULT_DATE_DISPLAY_FORMAT = 'dd-MMM-yy';\n\n@Component({\n    selector: 'adf-search-date-range',\n    standalone: true,\n    imports: [\n        CommonModule,\n        MatRadioModule,\n        ReactiveFormsModule,\n        TranslateModule,\n        MatFormFieldModule,\n        MatInputModule,\n        MatSelectModule,\n        MatDatepickerModule\n    ],\n    templateUrl: './search-date-range.component.html',\n    styleUrls: ['./search-date-range.component.scss'],\n    providers: [\n        { provide: DateAdapter, useClass: DateFnsAdapter, deps: [MAT_DATE_LOCALE] },\n        { provide: MAT_DATE_FORMATS, useValue: MAT_DATE_FNS_FORMATS }\n    ],\n    encapsulation: ViewEncapsulation.None,\n    host: { class: 'adf-search-date-range' }\n})\nexport class SearchDateRangeComponent implements OnInit {\n    @Input()\n    dateFormat = DEFAULT_DATE_DISPLAY_FORMAT;\n    @Input()\n    maxDate: string;\n    @Input()\n    field: string;\n    @Input()\n    set initialValue(value: SearchDateRange) {\n        if (value) {\n            this.form.patchValue(value);\n        }\n    }\n\n    @Output()\n    changed = new EventEmitter<Partial<SearchDateRange>>();\n    @Output()\n    valid = new EventEmitter<boolean>();\n\n    form = this.formBuilder.group<SearchDateRange>({\n        dateRangeType: DateRangeType.ANY,\n        inLastValueType: InLastDateType.DAYS,\n        inLastValue: undefined,\n        betweenStartDate: undefined,\n        betweenEndDate: undefined\n    });\n    betweenStartDateFormControl = this.form.controls.betweenStartDate;\n    betweenEndDateFormControl = this.form.controls.betweenEndDate;\n    convertedMaxDate: Date;\n\n    readonly DateRangeType = DateRangeType;\n    readonly InLastDateType = InLastDateType;\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    constructor(\n        private formBuilder: FormBuilder,\n        private userPreferencesService: UserPreferencesService,\n        private dateAdapter: DateAdapter<DateFnsAdapter>,\n        @Inject(MAT_DATE_FORMATS) private dateFormatConfig: MatDateFormats\n    ) {}\n\n    readonly endDateValidator = (formControl: UntypedFormControl): { [key: string]: boolean } | null => {\n        if (isBefore(formControl.value, this.betweenStartDateFormControl.value) || isAfter(formControl.value, this.convertedMaxDate)) {\n            return {\n                invalidDate: true\n            };\n        }\n        return {};\n    };\n\n    ngOnInit(): void {\n        this.dateFormatConfig.display.dateInput = this.dateFormat;\n        this.convertedMaxDate = endOfDay(this.maxDate && this.maxDate !== 'today' ? parse(this.maxDate, this.dateFormat, new Date()) : new Date());\n        this.userPreferencesService\n            .select(UserPreferenceValues.Locale)\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe((locale) => this.dateAdapter.setLocale(DateFnsUtils.getLocaleFromString(locale)));\n        this.form.controls.dateRangeType.valueChanges\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe((dateRangeType) => this.updateValidators(dateRangeType));\n        this.form.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.onChange());\n    }\n    private updateValidators(dateRangeType: DateRangeType) {\n        switch (dateRangeType) {\n            case DateRangeType.BETWEEN:\n                this.betweenStartDateFormControl.setValidators(Validators.required);\n                this.betweenEndDateFormControl.setValidators([Validators.required, this.endDateValidator]);\n                this.form.controls.inLastValue.clearValidators();\n                break;\n            case DateRangeType.IN_LAST:\n                this.form.controls.inLastValue.setValidators(Validators.required);\n                this.betweenStartDateFormControl.clearValidators();\n                this.betweenEndDateFormControl.clearValidators();\n                break;\n            default:\n                this.form.controls.inLastValue.clearValidators();\n                this.betweenStartDateFormControl.clearValidators();\n                this.betweenEndDateFormControl.clearValidators();\n                break;\n        }\n        this.betweenStartDateFormControl.updateValueAndValidity();\n        this.betweenEndDateFormControl.updateValueAndValidity();\n        this.form.controls.inLastValue.updateValueAndValidity();\n    }\n\n    private onChange(): void {\n        if (this.form.valid) {\n            this.changed.emit(this.form.value);\n        }\n        this.valid.emit(this.form.valid);\n    }\n\n    dateChanged(event: Event, formControl: UntypedFormControl) {\n        if (event?.target['value']?.trim()) {\n            const date = parse(event.target['value'], this.dateFormat, new Date());\n            if (!isValid(date)) {\n                formControl.setErrors({\n                    ...formControl.errors,\n                    required: false,\n                    invalidDate: true\n                });\n            } else {\n                formControl.setErrors({\n                    ...formControl.errors,\n                    invalidDate: false\n                });\n                formControl.setValue(date);\n            }\n        }\n    }\n\n    narrowDownAllowedCharacters(event: Event) {\n        if (parseInt((event.target as HTMLInputElement).value, 10) === 0) {\n            (event.target as HTMLInputElement).value = '';\n        } else {\n            (event.target as HTMLInputElement).value = (event.target as HTMLInputElement).value.replace(/\\D/g, '');\n        }\n    }\n\n    preventIncorrectNumberCharacters(event: KeyboardEvent): boolean {\n        switch (event.key) {\n            case '.':\n            case '-':\n            case 'e':\n            case '+':\n                return false;\n            case '0':\n                return !!(event.target as HTMLInputElement).value;\n            default:\n                return true;\n        }\n    }\n}\n","<div class=\"adf-search-date-range-container\" [formGroup]=\"form\">\n  <mat-radio-group formControlName=\"dateRangeType\">\n    <span class=\"adf-search-date-range-container-row\">\n      <mat-radio-button [value]=\"DateRangeType.ANY\" data-automation-id=\"date-range-anytime\">\n        {{ 'SEARCH.DATE_RANGE_ADVANCED.OPTIONS.ANYTIME' | translate }}\n      </mat-radio-button>\n    </span>\n    <span class=\"adf-search-date-range-container-row\">\n      <mat-radio-button [value]=\"DateRangeType.IN_LAST\" data-automation-id=\"date-range-in-last\">\n        {{ 'SEARCH.DATE_RANGE_ADVANCED.OPTIONS.IN_LAST' | translate }}\n      </mat-radio-button>\n      <mat-form-field class=\"adf-search-date-range-form-field adf-search-date-range-input-field\" subscriptSizing=\"dynamic\">\n        <input matInput [attr.aria-label]=\"'SEARCH.DATE_RANGE_ADVANCED.ARIA_LABEL.NUMBER_INPUT' | translate\"\n               type=\"number\" min=\"1\" formControlName=\"inLastValue\"\n               data-automation-id=\"date-range-in-last-input\" (input)=\"narrowDownAllowedCharacters($event)\"\n               (keydown)=\"preventIncorrectNumberCharacters($event)\">\n        <mat-error *ngIf=\"form.controls.inLastValue.errors?.required\">{{ 'SEARCH.DATE_RANGE_ADVANCED.ERROR.IN_LAST' | translate }}</mat-error>\n      </mat-form-field>\n      <mat-form-field class=\"adf-search-date-range-form-field adf-search-date-range-form-field-select\" subscriptSizing=\"dynamic\">\n        <mat-select formControlName=\"inLastValueType\" data-automation-id=\"date-range-in-last-dropdown\">\n          <mat-option data-automation-id=\"date-range-in-last-option-days\" [value]=\"InLastDateType.DAYS\">{{ 'SEARCH.DATE_RANGE_ADVANCED.IN_LAST_LABELS.DAYS' | translate }}</mat-option>\n          <mat-option data-automation-id=\"date-range-in-last-option-weeks\" [value]=\"InLastDateType.WEEKS\">{{ 'SEARCH.DATE_RANGE_ADVANCED.IN_LAST_LABELS.WEEKS' | translate }}</mat-option>\n          <mat-option data-automation-id=\"date-range-in-last-option-months\" [value]=\"InLastDateType.MONTHS\">{{ 'SEARCH.DATE_RANGE_ADVANCED.IN_LAST_LABELS.MONTHS' | translate }}</mat-option>\n        </mat-select>\n      </mat-form-field>\n    </span>\n    <span class=\"adf-search-date-range-container-row adf-search-date-range-container-row-date\">\n      <mat-radio-button [value]=\"DateRangeType.BETWEEN\" data-automation-id=\"date-range-between\">\n        {{ 'SEARCH.DATE_RANGE_ADVANCED.OPTIONS.BETWEEN' | translate }}\n      </mat-radio-button>\n      <mat-form-field class=\"adf-search-date-range-form-field\" subscriptSizing=\"dynamic\">\n        <mat-date-range-input [rangePicker]=\"$any(picker)\" [max]=\"convertedMaxDate\">\n          <input matStartDate placeholder=\"{{ 'SEARCH.DATE_RANGE_ADVANCED.BETWEEN_PLACEHOLDERS.START_DATE' | translate }}\"\n                 data-automation-id=\"date-range-between-start-input\" [formControl]=\"betweenStartDateFormControl\" (change)=\"dateChanged($event, betweenStartDateFormControl)\">\n          <input matEndDate placeholder=\"{{ 'SEARCH.DATE_RANGE_ADVANCED.BETWEEN_PLACEHOLDERS.END_DATE' | translate }}\"\n                 data-automation-id=\"date-range-between-end-input\" [formControl]=\"betweenEndDateFormControl\" (change)=\"dateChanged($event, betweenEndDateFormControl)\">\n        </mat-date-range-input>\n        <mat-datepicker-toggle matSuffix [for]=\"picker\" data-automation-id=\"date-range-between-datepicker-toggle\" />\n        <mat-date-range-picker #picker />\n\n        <mat-error *ngIf=\"betweenStartDateFormControl.errors?.invalidDate\">{{ 'SEARCH.DATE_RANGE_ADVANCED.ERROR.START_DATE.INVALID_FORMAT' | translate }}</mat-error>\n        <mat-error *ngIf=\"betweenStartDateFormControl.errors?.required\">{{ 'SEARCH.DATE_RANGE_ADVANCED.ERROR.START_DATE.REQUIRED' | translate }}</mat-error>\n        <mat-error *ngIf=\"betweenEndDateFormControl.errors?.invalidDate\">{{ 'SEARCH.DATE_RANGE_ADVANCED.ERROR.END_DATE.INVALID_FORMAT' | translate }}</mat-error>\n        <mat-error *ngIf=\"betweenEndDateFormControl.errors?.required\">{{ 'SEARCH.DATE_RANGE_ADVANCED.ERROR.END_DATE.REQUIRED' | translate }}</mat-error>\n      </mat-form-field>\n    </span>\n  </mat-radio-group>\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, inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { DateRangeType } from './search-date-range/date-range-type';\nimport { SearchDateRange } from './search-date-range/search-date-range';\nimport { SearchWidget } from '../../models/search-widget.interface';\nimport { SearchWidgetSettings } from '../../models/search-widget-settings.interface';\nimport { SearchQueryBuilderService } from '../../services/search-query-builder.service';\nimport { InLastDateType } from './search-date-range/in-last-date-type';\nimport { TranslationService } from '@alfresco/adf-core';\nimport { endOfDay, endOfToday, format, formatISO, parseISO, startOfDay, startOfMonth, startOfWeek, subDays, subMonths, subWeeks } from 'date-fns';\nimport { CommonModule } from '@angular/common';\nimport { SearchFilterTabbedComponent } from '../search-filter-tabbed/search-filter-tabbed.component';\nimport { SearchDateRangeComponent } from './search-date-range/search-date-range.component';\nimport { SearchFilterTabDirective } from '../search-filter-tabbed/search-filter-tab.directive';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nconst DEFAULT_DATE_DISPLAY_FORMAT = 'dd-MMM-yy';\n\n@Component({\n    selector: 'adf-search-date-range-tabbed',\n    standalone: true,\n    imports: [CommonModule, SearchFilterTabbedComponent, SearchDateRangeComponent, SearchFilterTabDirective],\n    templateUrl: './search-date-range-tabbed.component.html',\n    styleUrls: ['./search-date-range-tabbed.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class SearchDateRangeTabbedComponent implements SearchWidget, OnInit {\n    displayValue$ = new ReplaySubject<string>(1);\n    id: string;\n    startValue: SearchDateRange = {\n        dateRangeType: DateRangeType.ANY,\n        inLastValueType: InLastDateType.DAYS,\n        inLastValue: undefined,\n        betweenStartDate: undefined,\n        betweenEndDate: undefined\n    };\n    preselectedValues: { [key: string]: SearchDateRange } = {};\n    settings?: SearchWidgetSettings;\n    context?: SearchQueryBuilderService;\n    fields: string[];\n    tabsValidity: { [key: string]: boolean } = {};\n    combinedQuery: string;\n    combinedDisplayValue: string;\n\n    private value: { [key: string]: Partial<SearchDateRange> } = {};\n    private queryMapByField: Map<string, string> = new Map<string, string>();\n    private displayValueMapByField: Map<string, string> = new Map<string, string>();\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    constructor(private translateService: TranslationService) {}\n\n    ngOnInit(): void {\n        this.fields = this.settings?.field.split(',').map((field) => field.trim());\n        this.setDefaultDateFormatSettings();\n        this.context.populateFilters\n            .asObservable()\n            .pipe(\n                map((filtersQueries) => filtersQueries[this.id]),\n                takeUntilDestroyed(this.destroyRef)\n            )\n            .subscribe((filterQuery) => {\n                if (filterQuery) {\n                    Object.keys(filterQuery).forEach((field) => {\n                        filterQuery[field].betweenStartDate = filterQuery[field].betweenStartDate\n                            ? parseISO(filterQuery[field].betweenStartDate)\n                            : undefined;\n                        filterQuery[field].betweenEndDate = filterQuery[field].betweenEndDate\n                            ? parseISO(filterQuery[field].betweenEndDate)\n                            : undefined;\n                        this.preselectedValues[field] = filterQuery[field];\n                        this.onDateRangedValueChanged(filterQuery[field], field);\n                    });\n                    this.submitValues(false);\n                } else {\n                    this.reset(false);\n                }\n                this.context.filterLoaded.next();\n            });\n    }\n    private setDefaultDateFormatSettings() {\n        if (this.settings && !this.settings.dateFormat) {\n            this.settings.dateFormat = DEFAULT_DATE_DISPLAY_FORMAT;\n        }\n    }\n\n    getCurrentValue(): { [key: string]: Partial<SearchDateRange> } {\n        return this.value;\n    }\n\n    hasValidValue(): boolean {\n        return Object.values(this.tabsValidity).every((valid) => valid);\n    }\n\n    reset(updateContext = true) {\n        this.combinedQuery = '';\n        this.combinedDisplayValue = '';\n        this.startValue = {\n            ...this.startValue\n        };\n        this.fields.forEach((field) => {\n            this.context.filterRawParams[field] = undefined;\n        });\n        this.context.queryFragments[this.id] = undefined;\n        this.context.filterRawParams[this.id] = undefined;\n        this.submitValues(updateContext);\n    }\n\n    setValue(value: { [key: string]: SearchDateRange }) {\n        this.value = value;\n    }\n\n    getTabLabel(field: string): string {\n        return this.settings?.displayedLabelsByField?.[field] ? this.settings.displayedLabelsByField[field] : field;\n    }\n\n    submitValues(updateContext = true) {\n        this.context.queryFragments[this.id] = this.combinedQuery;\n        this.displayValue$.next(this.combinedDisplayValue);\n        if (this.id && this.context && updateContext) {\n            this.context.update();\n        }\n    }\n    onDateRangedValueChanged(value: Partial<SearchDateRange>, field: string) {\n        this.context.filterRawParams[this.id] ||= {};\n        this.context.filterRawParams[this.id][field] = value;\n        this.value[field] = value;\n        this.updateQuery(value, field);\n        this.updateDisplayValue(value, field);\n    }\n\n    private generateQuery(value: Partial<SearchDateRange>, field: string): string {\n        let query = '';\n        let startDate: Date;\n        let endDate: Date;\n        if (value.dateRangeType === DateRangeType.IN_LAST) {\n            if (value.inLastValue) {\n                switch (value.inLastValueType) {\n                    case InLastDateType.DAYS:\n                        startDate = startOfDay(subDays(new Date(), parseInt(value.inLastValue, 10)));\n                        break;\n                    case InLastDateType.WEEKS:\n                        startDate = startOfWeek(subWeeks(new Date(), parseInt(value.inLastValue, 10)));\n                        break;\n                    case InLastDateType.MONTHS:\n                        startDate = startOfMonth(subMonths(new Date(), parseInt(value.inLastValue, 10)));\n                        break;\n                    default:\n                        break;\n                }\n            }\n            endDate = endOfToday();\n        } else if (value.dateRangeType === DateRangeType.BETWEEN) {\n            if (value.betweenStartDate && value.betweenEndDate) {\n                startDate = startOfDay(value.betweenStartDate);\n                endDate = endOfDay(value.betweenEndDate);\n            }\n        }\n        if (startDate && endDate) {\n            query = `${field}:['${formatISO(startDate)}' TO '${formatISO(endDate)}']`;\n        }\n        return query;\n    }\n\n    private generateDisplayValue(value: Partial<SearchDateRange>): string {\n        let displayValue = '';\n        if (value.dateRangeType === DateRangeType.IN_LAST && value.inLastValue) {\n            displayValue = this.translateService.instant(`SEARCH.DATE_RANGE_ADVANCED.IN_LAST_DISPLAY_LABELS.${value.inLastValueType}`, {\n                value: value.inLastValue\n            });\n        } else if (value.dateRangeType === DateRangeType.BETWEEN && value.betweenStartDate && value.betweenEndDate) {\n            displayValue = `${format(startOfDay(value.betweenStartDate), this.settings.dateFormat)} - ${format(\n                endOfDay(value.betweenEndDate),\n                this.settings.dateFormat\n            )}`;\n        }\n        return displayValue;\n    }\n\n    private updateQuery(value: Partial<SearchDateRange>, field: string) {\n        this.combinedQuery = '';\n        this.queryMapByField.set(field, this.generateQuery(value, field));\n        this.queryMapByField.forEach((query: string) => {\n            if (query) {\n                this.combinedQuery = this.combinedQuery ? `${this.combinedQuery} AND ${query}` : `${query}`;\n            }\n        });\n    }\n\n    private updateDisplayValue(value: Partial<SearchDateRange>, field: string) {\n        this.combinedDisplayValue = '';\n        this.displayValueMapByField.set(field, this.generateDisplayValue(value));\n        this.displayValueMapByField.forEach((displayValue: string, fieldForDisplayLabel: string) => {\n            if (displayValue) {\n                const displayLabelForField = `${this.translateService\n                    .instant(this.getDisplayLabelForField(fieldForDisplayLabel))\n                    .toUpperCase()}: ${displayValue}`;\n                this.combinedDisplayValue = this.combinedDisplayValue\n                    ? `${this.combinedDisplayValue} ${displayLabelForField}`\n                    : `${displayLabelForField}`;\n            }\n        });\n    }\n\n    private getDisplayLabelForField(fieldForDisplayLabel: string): string {\n        return this.settings?.displayedLabelsByField?.[fieldForDisplayLabel]\n            ? this.settings.displayedLabelsByField[fieldForDisplayLabel]\n            : fieldForDisplayLabel;\n    }\n}\n","<adf-search-filter-tabbed>\n    <ng-container *ngFor=\"let field of fields\">\n        <adf-search-date-range\n            *adf-search-filter-tab=\"getTabLabel(field)\"\n            [dateFormat]=\"settings.dateFormat\"\n            [maxDate]=\"settings.maxDate\"\n            [field]=\"field\"\n            [initialValue]=\"preselectedValues[field]\"\n            (changed)=\"onDateRangedValueChanged($event, field)\"\n            (valid)=\"tabsValidity[field]=$event\" />\n    </ng-container>\n</adf-search-filter-tabbed>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY 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 { SearchTextComponent } from '../components/search-text/search-text.component';\nimport { SearchRadioComponent } from '../components/search-radio/search-radio.component';\nimport { SearchSliderComponent } from '../components/search-slider/search-slider.component';\nimport { SearchNumberRangeComponent } from '../components/search-number-range/search-number-range.component';\nimport { SearchCheckListComponent } from '../components/search-check-list/search-check-list.component';\nimport { SearchDatetimeRangeComponent } from '../components/search-datetime-range/search-datetime-range.component';\nimport { SearchLogicalFilterComponent } from '../components/search-logical-filter/search-logical-filter.component';\nimport { SearchFilterAutocompleteChipsComponent } from '../components/search-filter-autocomplete-chips/search-filter-autocomplete-chips.component';\nimport { SearchPropertiesComponent } from '../components/search-properties/search-properties.component';\nimport { SearchDateRangeTabbedComponent } from '../components/search-date-range-tabbed/search-date-range-tabbed.component';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class SearchFilterService {\n    /**\n     * Contains string-to-type mappings for registered widgets.\n     */\n    widgets: { [id: string]: Type<any> } = {\n        text: SearchTextComponent,\n        radio: SearchRadioComponent,\n        slider: SearchSliderComponent,\n        properties: SearchPropertiesComponent,\n        'number-range': SearchNumberRangeComponent,\n        'check-list': SearchCheckListComponent,\n        'datetime-range': SearchDatetimeRangeComponent,\n        'logical-filter': SearchLogicalFilterComponent,\n        'autocomplete-chips': SearchFilterAutocompleteChipsComponent,\n        'date-range': SearchDateRangeTabbedComponent\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 { SearchRequest } from '@alfresco/js-api';\nimport { SearchConfigurationInterface } from '../../common/interfaces/search-configuration.interface';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class SearchConfigurationService implements SearchConfigurationInterface {\n    /**\n     * Generates a request object with custom search parameters.\n     *\n     * @param searchTerm Term text to search for\n     * @param maxResults Maximum number of search results to show in a page\n     * @param skipCount The offset of the start of the page within the results list\n     * @returns Query body defined by the parameters\n     */\n    generateQueryBody(searchTerm: string, maxResults: number, skipCount: number): SearchRequest {\n        return {\n            query: {\n                query: searchTerm ? `'${searchTerm}*' OR name:'${searchTerm}*'` : searchTerm\n            },\n            include: ['path', 'allowableOperations'],\n            paging: {\n                maxItems: maxResults,\n                skipCount\n            },\n            filterQueries: [{ query: `TYPE:'cm:folder' OR TYPE:'cm:content'` }, { query: 'NOT cm:creator:System' }]\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 { SearchFilterList } from './search-filter-list.model';\nimport { FacetFieldBucket } from './facet-field-bucket.interface';\n\nexport interface FacetField {\n    field: string;\n    label: string;\n    mincount?: number;\n    limit?: number;\n    offset?: number;\n    prefix?: string;\n\n    buckets?: SearchFilterList<FacetFieldBucket>;\n    pageSize?: number;\n    currentPageSize?: number;\n    checked?: boolean;\n    type?: string;\n    settings?: FacetFieldSettings;\n    [propName: string]: any;\n}\n\nexport interface FacetFieldSettings {\n    /* allow the user to update search in every change */\n    allowUpdateOnChange?: boolean;\n    /* allow the user show/hide default search actions */\n    hideDefaultAction?: boolean;\n    /* a number to compare to other facets to determine the order in which they will appear */\n    facetOrder?: number;\n    /* the field used to sort the buckets */\n    bucketSortBy?: FacetBucketSortBy;\n    /* the direction in which the buckets are ordered */\n    bucketSortDirection?: FacetBucketSortDirection;\n}\n\n// eslint-disable-next-line no-shadow\nexport enum FacetBucketSortBy {\n    LABEL = 'LABEL',\n    COUNT = 'COUNT'\n}\n\n// eslint-disable-next-line no-shadow\nexport enum FacetBucketSortDirection {\n    ASCENDING = 'ASCENDING',\n    DESCENDING = 'DESCENDING'\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY 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 { SearchConfiguration } from './models/search-configuration.interface';\n\nexport const ADF_SEARCH_CONFIGURATION =  new InjectionToken<SearchConfiguration>('Custom search configuration settings');\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY 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, Optional } from '@angular/core';\nimport { AppConfigService } from '@alfresco/adf-core';\nimport { SearchConfiguration } from '../models/search-configuration.interface';\nimport { BaseQueryBuilderService } from './base-query-builder.service';\nimport { ADF_SEARCH_CONFIGURATION } from '../search-configuration.token';\nimport { AlfrescoApiService } from '../../services/alfresco-api.service';\n\n@Injectable({ providedIn: 'root' })\nexport class SearchQueryBuilderService extends BaseQueryBuilderService {\n    public isFilterServiceActive(): boolean {\n        return false;\n    }\n\n    constructor(\n        appConfig: AppConfigService,\n        alfrescoApiService: AlfrescoApiService,\n        @Optional() @Inject(ADF_SEARCH_CONFIGURATION) private configuration?: SearchConfiguration\n    ) {\n        super(appConfig, alfrescoApiService);\n    }\n\n    public loadConfiguration(): SearchConfiguration {\n        return this.configuration || this.appConfig.get<SearchConfiguration>('search');\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 { NodePaging, QueriesApi, SearchRequest, ResultSetPaging, SearchApi } from '@alfresco/js-api';\nimport { Observable, Subject, from } from 'rxjs';\nimport { AlfrescoApiService } from '../../services/alfresco-api.service';\nimport { SearchConfigurationService } from './search-configuration.service';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class SearchService {\n    private apiService = inject(AlfrescoApiService);\n    private searchConfigurationService = inject(SearchConfigurationService);\n\n    dataLoaded = new Subject<ResultSetPaging>();\n\n    private _queriesApi: QueriesApi;\n    get queriesApi(): QueriesApi {\n        this._queriesApi = this._queriesApi ?? new QueriesApi(this.apiService.getInstance());\n        return this._queriesApi;\n    }\n\n    private _searchApi: SearchApi;\n    get searchApi(): SearchApi {\n        this._searchApi = this._searchApi ?? new SearchApi(this.apiService.getInstance());\n        return this._searchApi;\n    }\n\n    /**\n     * Gets a list of nodes that match the given search criteria.\n     *\n     * @param term Term to search for\n     * @param options Options for delivery of the search results\n     * @returns List of nodes resulting from the search\n     */\n    getNodeQueryResults(term: string, options?: SearchOptions): Observable<NodePaging> {\n        const promise = this.queriesApi.findNodes(term, options);\n\n        promise.then((nodePaging) => {\n            this.dataLoaded.next(nodePaging);\n        });\n\n        return from(promise);\n    }\n\n    /**\n     * Performs a search.\n     *\n     * @param searchTerm Term to search for\n     * @param maxResults Maximum number of items in the list of results\n     * @param skipCount Number of higher-ranked items to skip over in the list\n     * @returns List of search results\n     */\n    search(searchTerm: string, maxResults: number, skipCount: number): Observable<ResultSetPaging> {\n        const searchQuery = this.searchConfigurationService.generateQueryBody(searchTerm, maxResults, skipCount);\n        const promise = this.searchApi.search(searchQuery);\n\n        promise.then((nodePaging) => {\n            this.dataLoaded.next(nodePaging);\n        });\n\n        return from(promise);\n    }\n\n    /**\n     * Performs a search with its parameters supplied by a request object.\n     *\n     * @param queryBody Object containing the search parameters\n     * @returns List of search results\n     */\n    searchByQueryBody(queryBody: SearchRequest): Observable<ResultSetPaging> {\n        const promise = this.searchApi.search(queryBody);\n\n        promise.then((nodePaging) => {\n            this.dataLoaded.next(nodePaging);\n        });\n\n        return from(promise);\n    }\n}\n\nexport interface SearchOptions {\n    /** The number of entities that exist in the collection before those included in this list. */\n    skipCount?: number;\n\n    /** The maximum number of items to return in the list. */\n    maxItems?: number;\n\n    /** The id of the node to start the search from. Supports the aliases -my-, -root- and -shared-. */\n    rootNodeId?: string;\n\n    /** Restrict the returned results to only those of the given node type and its sub-types. */\n    nodeType?: string;\n\n    /**\n     * Return additional information about the node. The available optional fields are:\n     * `allowableOperations`, `aspectNames`, `isLink`, `isLocked`, `path` and `properties`.\n     */\n    include?: string[];\n\n    /**\n     * String array to control the order of the entities returned in a list. You can use this\n     * parameter to sort the list by one or more fields. Each field has a default sort order,\n     * which is normally ascending order (but see the JS-API docs to check if any fields used\n     * in a method have a descending default search order). To sort the entities in a specific\n     * order, you can use the \"ASC\" and \"DESC\" keywords for any field.\n     */\n    orderBy?: string[];\n\n    /**\n     * List of field names. You can use this parameter to restrict the fields returned within\n     * a response if, for example, you want to save on overall bandwidth. The list applies to a\n     * returned individual entity or entries within a collection. If the API method also supports\n     * the `include` parameter, then the fields specified in the include parameter are returned in\n     * addition to those specified in the fields parameter.\n     */\n    fields?: 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 { Injectable } from '@angular/core';\nimport { FacetBucketSortBy, FacetBucketSortDirection, FacetField } from '../models/facet-field.interface';\nimport { throwError } from 'rxjs';\nimport { SearchQueryBuilderService } from './search-query-builder.service';\nimport { TranslationService } from '@alfresco/adf-core';\nimport { SearchService } from './search.service';\nimport { catchError } from 'rxjs/operators';\nimport { GenericBucket, GenericFacetResponse, ResultSetContext, ResultSetPaging } from '@alfresco/js-api';\nimport { SearchFilterList } from '../models/search-filter-list.model';\nimport { FacetFieldBucket } from '../models/facet-field-bucket.interface';\nimport { CategoryService } from '../../category/services/category.service';\nimport { TabbedFacetField } from '../models/tabbed-facet-field.interface';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nexport interface SelectedBucket {\n    field: FacetField;\n    bucket: FacetFieldBucket;\n}\n\nconst DEFAULT_PAGE_SIZE: number = 5;\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class SearchFacetFiltersService {\n    /**\n     * All facet field items to be displayed in the component. These are updated according to the response.\n     * When a new search is performed, the already existing items are updated with the new bucket count values and\n     * the newly received items are added to the responseFacets.\n     */\n    responseFacets: FacetField[] = null;\n    /* tabbed facet incorporating creator and modifier facets */\n    tabbedFacet: TabbedFacetField = null;\n\n    /** shows the facet chips */\n    selectedBuckets: SelectedBucket[] = [];\n\n    private readonly facetQueriesPageSize = DEFAULT_PAGE_SIZE;\n    constructor(\n        private queryBuilder: SearchQueryBuilderService,\n        private searchService: SearchService,\n        private translationService: TranslationService,\n        private categoryService: CategoryService\n    ) {\n        if (queryBuilder.config?.facetQueries) {\n            this.facetQueriesPageSize = queryBuilder.config.facetQueries.pageSize || DEFAULT_PAGE_SIZE;\n        }\n\n        this.queryBuilder.configUpdated.pipe(takeUntilDestroyed()).subscribe(() => {\n            this.selectedBuckets = [];\n            this.responseFacets = null;\n        });\n\n        this.queryBuilder.updated.pipe(takeUntilDestroyed()).subscribe((query) => this.queryBuilder.execute(true, query));\n\n        this.queryBuilder.executed.pipe(takeUntilDestroyed()).subscribe((resultSetPaging: ResultSetPaging) => {\n            this.onDataLoaded(resultSetPaging);\n            this.searchService.dataLoaded.next(resultSetPaging);\n        });\n    }\n\n    onDataLoaded(data: any) {\n        const context = data.list.context;\n\n        if (context) {\n            this.parseFacets(context);\n        } else {\n            this.responseFacets = null;\n        }\n    }\n\n    private parseFacets(context: ResultSetContext) {\n        this.parseFacetFields(context);\n        this.parseFacetIntervals(context);\n        this.parseFacetQueries(context);\n        this.sortFacets();\n        this.parseTabbedFacetField();\n    }\n\n    private parseFacetItems(context: ResultSetContext, configFacetFields: FacetField[], itemType: string) {\n        configFacetFields.forEach((facetField) => {\n            const responseField = this.findFacet(context, itemType, facetField.label);\n            const responseBuckets = this.getResponseBuckets(responseField, facetField).filter(this.getFilterByMinCount(facetField.mincount));\n            this.sortFacetBuckets(\n                responseBuckets,\n                facetField.settings?.bucketSortBy,\n                facetField.settings?.bucketSortDirection ?? FacetBucketSortDirection.ASCENDING\n            );\n            const alreadyExistingField = this.findResponseFacet(itemType, facetField.label);\n\n            if (facetField.field === 'cm:categories') {\n                this.loadCategoryNames(responseBuckets);\n            }\n\n            if (alreadyExistingField) {\n                const alreadyExistingBuckets = alreadyExistingField.buckets?.items || [];\n\n                this.updateExistingBuckets(responseField, responseBuckets, alreadyExistingField, alreadyExistingBuckets);\n            } else if (responseField) {\n                if (responseBuckets.length > 0) {\n                    const bucketList = new SearchFilterList<FacetFieldBucket>(responseBuckets, facetField.pageSize);\n                    bucketList.filter = this.getBucketFilterFunction(bucketList);\n\n                    if (!this.responseFacets) {\n                        this.responseFacets = [];\n                    }\n                    this.responseFacets.push({\n                        ...facetField,\n                        type: responseField.type || itemType,\n                        label: facetField.label,\n                        pageSize: facetField.pageSize | DEFAULT_PAGE_SIZE,\n                        currentPageSize: facetField.pageSize | DEFAULT_PAGE_SIZE,\n                        buckets: bucketList\n                    });\n                }\n            }\n        });\n    }\n\n    private parseTabbedFacetField() {\n        if (this.responseFacets) {\n            const fields = this.responseFacets.reduce((acc, facet) => `${acc},${facet.field}`, '');\n            const tabbedFacetField: TabbedFacetField = {\n                fields: ['creator', 'modifier'],\n                label: 'SEARCH.FILTER.PEOPLE',\n                facets: {}\n            };\n            this.extractCreatorAndModifier(tabbedFacetField, fields);\n        }\n    }\n\n    private extractCreatorAndModifier(tabbedFacet: TabbedFacetField, fields: string) {\n        if (fields.includes('creator') && fields.includes('modifier')) {\n            for (let i = this.responseFacets.length - 1; i >= 0; i--) {\n                if (this.responseFacets[i].field === 'creator' || this.responseFacets[i].field === 'modifier') {\n                    const removedFacet = this.responseFacets.splice(i, 1)[0];\n                    Object.defineProperty(tabbedFacet.facets, removedFacet.field, {\n                        value: removedFacet,\n                        writable: true\n                    });\n                }\n            }\n            this.tabbedFacet = tabbedFacet;\n        }\n    }\n\n    private parseFacetFields(context: ResultSetContext) {\n        const configFacetFields = this.queryBuilder.config.facetFields?.fields || [];\n        this.parseFacetItems(context, configFacetFields, 'field');\n    }\n\n    private parseFacetIntervals(context: ResultSetContext) {\n        const configFacetIntervals = this.queryBuilder.config.facetIntervals?.intervals || [];\n        this.parseFacetItems(context, configFacetIntervals, 'interval');\n    }\n\n    private parseFacetQueries(context: ResultSetContext) {\n        const facetQuerySetting = this.queryBuilder.config.facetQueries?.settings || {};\n        const configFacetQueries = this.queryBuilder.config.facetQueries?.queries || [];\n        const configGroups = configFacetQueries.reduce((acc, query) => {\n            const group = this.queryBuilder.getQueryGroup(query);\n            if (acc[group]) {\n                acc[group].push(query);\n            } else {\n                acc[group] = [query];\n            }\n            return acc;\n        }, []);\n\n        const minCount = this.queryBuilder.config.facetQueries?.mincount;\n        const minCountFilter = this.getFilterByMinCount(minCount);\n\n        Object.keys(configGroups).forEach((group) => {\n            const responseField = this.findFacet(context, 'query', group);\n            const responseBuckets = this.getResponseQueryBuckets(responseField, configGroups[group]).filter(minCountFilter);\n            this.sortFacetBuckets(\n                responseBuckets,\n                facetQuerySetting?.bucketSortBy,\n                facetQuerySetting.bucketSortDirection ?? FacetBucketSortDirection.ASCENDING\n            );\n            const alreadyExistingField = this.findResponseFacet('query', group);\n\n            if (alreadyExistingField) {\n                const alreadyExistingBuckets = alreadyExistingField.buckets?.items || [];\n\n                this.updateExistingBuckets(responseField, responseBuckets, alreadyExistingField, alreadyExistingBuckets);\n            } else if (responseField) {\n                if (responseBuckets.length > 0) {\n                    const bucketList = new SearchFilterList<FacetFieldBucket>(responseBuckets, this.facetQueriesPageSize);\n                    bucketList.filter = this.getBucketFilterFunction(bucketList);\n\n                    if (!this.responseFacets) {\n                        this.responseFacets = [];\n                    }\n                    this.responseFacets.push({\n                        field: group,\n                        type: responseField.type || 'query',\n                        label: group,\n                        pageSize: DEFAULT_PAGE_SIZE,\n                        currentPageSize: DEFAULT_PAGE_SIZE,\n                        buckets: bucketList,\n                        settings: facetQuerySetting\n                    });\n                }\n            }\n        });\n    }\n\n    private sortFacets() {\n        this.responseFacets?.sort((facet1, facet2) => (facet1.settings?.facetOrder ?? 0) - (facet2.settings?.facetOrder ?? 0));\n    }\n\n    private getResponseBuckets(responseField: GenericFacetResponse, configField: FacetField): FacetFieldBucket[] {\n        return (responseField?.buckets || []).map((respBucket) => {\n            respBucket['count'] = this.getCountValue(respBucket);\n            respBucket.filterQuery = respBucket.filterQuery || this.getCorrespondingFilterQuery(configField, respBucket.label);\n            return {\n                ...respBucket,\n                checked: false,\n                display: respBucket.display,\n                label: respBucket.label\n            } as FacetFieldBucket;\n        });\n    }\n\n    private getResponseQueryBuckets(responseField: GenericFacetResponse, configGroup: any): FacetFieldBucket[] {\n        return (configGroup || []).map((query) => {\n            const respBucket = (responseField?.buckets || []).find((bucket) => bucket.label === query.label) || {};\n\n            respBucket['count'] = this.getCountValue(respBucket);\n            return {\n                ...respBucket,\n                checked: false,\n                display: respBucket.display,\n                label: respBucket.label\n            };\n        });\n    }\n\n    private sortFacetBuckets(buckets: FacetFieldBucket[], sortBy: FacetBucketSortBy, sortDirection: FacetBucketSortDirection) {\n        switch (sortBy) {\n            case FacetBucketSortBy.LABEL:\n                buckets.sort((bucket1, bucket2) =>\n                    sortDirection === FacetBucketSortDirection.ASCENDING\n                        ? bucket1.label.localeCompare(bucket2.label)\n                        : bucket2.label.localeCompare(bucket1.label)\n                );\n                break;\n            case FacetBucketSortBy.COUNT:\n                buckets.sort((bucket1, bucket2) =>\n                    sortDirection === FacetBucketSortDirection.ASCENDING ? bucket1.count - bucket2.count : bucket2.count - bucket1.count\n                );\n                break;\n            default:\n                return;\n        }\n    }\n\n    private getCountValue(bucket: GenericBucket): number {\n        return (!!bucket && !!bucket.metrics && bucket.metrics[0]?.value?.count) || 0;\n    }\n\n    getBucketCountDisplay(bucket: FacetFieldBucket): string {\n        return bucket.count === null ? '' : `(${bucket.count})`;\n    }\n\n    private getFilterByMinCount =\n        (minCountInput: number) =>\n        (bucket: FacetFieldBucket): boolean => {\n            let minCount = minCountInput;\n            if (minCount === undefined) {\n                minCount = 1;\n            }\n            return bucket.count >= minCount;\n        };\n\n    private getCorrespondingFilterQuery(configFacetItem: FacetField, bucketLabel: string): string {\n        let filterQuery = null;\n\n        if (configFacetItem.field && bucketLabel) {\n            if (configFacetItem.sets) {\n                const configSet = configFacetItem.sets.find((set) => bucketLabel === set.label);\n\n                if (configSet) {\n                    filterQuery = this.buildIntervalQuery(configFacetItem.field, configSet);\n                }\n            } else {\n                filterQuery = `${configFacetItem.field}:\"${bucketLabel}\"`;\n            }\n        }\n\n        return filterQuery;\n    }\n\n    private buildIntervalQuery(fieldName: string, interval: any): string {\n        const start = interval.start;\n        const end = interval.end;\n        const startLimit = interval.startInclusive === undefined || interval.startInclusive === true ? '[' : '<';\n        const endLimit = interval.endInclusive === undefined || interval.endInclusive === true ? ']' : '>';\n\n        return `${fieldName}:${startLimit}\"${start}\" TO \"${end}\"${endLimit}`;\n    }\n\n    private findFacet(context: ResultSetContext, itemType: string, fieldLabel: string): GenericFacetResponse {\n        return (context.facets || []).find((response) => response.type === itemType && response.label === fieldLabel) || {};\n    }\n\n    private findResponseFacet(itemType: string, fieldLabel: string): FacetField {\n        return (this.responseFacets || []).find((response) => response.type === itemType && response.label === fieldLabel);\n    }\n\n    private updateExistingBuckets(\n        responseField: GenericFacetResponse,\n        responseBuckets: FacetFieldBucket[],\n        alreadyExistingField: FacetField,\n        alreadyExistingBuckets: FacetFieldBucket[]\n    ) {\n        const bucketsToDelete = [];\n\n        alreadyExistingBuckets.forEach((bucket) => {\n            const responseBucket = (responseField?.buckets || []).find((respBucket) => respBucket.label === bucket.label);\n\n            if (!responseBucket) {\n                bucketsToDelete.push(bucket);\n            }\n            bucket.count = this.getCountValue(responseBucket);\n            return bucket;\n        });\n\n        const hasSelection = !!this.selectedBuckets.find(\n            (selBuckets) => alreadyExistingField.label === selBuckets.field.label && alreadyExistingField.type === selBuckets.field.type\n        );\n\n        if (!hasSelection && bucketsToDelete.length) {\n            bucketsToDelete.forEach((bucket) => {\n                alreadyExistingField.buckets.deleteItem(bucket);\n            });\n        }\n\n        responseBuckets.forEach((respBucket) => {\n            const existingBucket = alreadyExistingBuckets.find((oldBucket) => oldBucket.label === respBucket.label);\n\n            if (!existingBucket) {\n                alreadyExistingField.buckets.addItem(respBucket);\n            }\n        });\n    }\n\n    private getBucketFilterFunction =\n        (bucketList: SearchFilterList<FacetFieldBucket>) =>\n        (bucket: FacetFieldBucket): boolean => {\n            if (bucket && bucketList.filterText) {\n                const pattern = (bucketList.filterText || '').toLowerCase();\n                const label = (this.translationService.instant(bucket.display) || this.translationService.instant(bucket.label)).toLowerCase();\n                return this.queryBuilder.config.filterWithContains ? label.indexOf(pattern) !== -1 : label.startsWith(pattern);\n            }\n            return true;\n        };\n\n    private loadCategoryNames(bucketList: FacetFieldBucket[]) {\n        bucketList.forEach((item) => {\n            const categoryId = item.label.split('/').pop();\n            this.categoryService\n                .getCategory(categoryId, { include: ['path'] })\n                .pipe(catchError((error) => throwError(error)))\n                .subscribe((category) => {\n                    const nextAfterGeneralPathPartIndex = 3;\n                    const pathSeparator = '/';\n                    const path = category.entry.path.split(pathSeparator).slice(nextAfterGeneralPathPartIndex).join('/');\n                    item.display = path ? `${path}/${category.entry.name}` : category.entry.name;\n                });\n        });\n    }\n\n    unselectFacetBucket(facetField: FacetField, bucket: FacetFieldBucket) {\n        if (bucket) {\n            bucket.checked = false;\n            this.queryBuilder.removeUserFacetBucket(facetField.field, bucket);\n            this.updateSelectedBuckets();\n            this.queryBuilder.update();\n        }\n    }\n\n    /* update adf-search-chip-list component view */\n    updateSelectedBuckets() {\n        if (this.responseFacets) {\n            this.selectedBuckets = [];\n            let facetFields = this.tabbedFacet === null ? [] : Object.keys(this.tabbedFacet?.fields).map((field) => this.tabbedFacet.facets[field]);\n            facetFields = [...facetFields, ...this.responseFacets];\n            for (const facetField of facetFields) {\n                if (facetField?.buckets) {\n                    this.selectedBuckets.push(\n                        ...this.queryBuilder\n                            .getUserFacetBuckets(facetField.field)\n                            .filter((bucket) => bucket.checked)\n                            .map((bucket) => ({ field: facetField, bucket }))\n                    );\n                }\n            }\n        } else {\n            this.selectedBuckets = [];\n        }\n    }\n\n    resetAllSelectedBuckets() {\n        this.responseFacets.forEach((facetField) => {\n            if (facetField?.buckets) {\n                for (const bucket of facetField.buckets.items) {\n                    bucket.checked = false;\n                    this.queryBuilder.removeUserFacetBucket(facetField.field, bucket);\n                }\n                this.updateSelectedBuckets();\n            }\n        });\n        this.queryBuilder.update();\n    }\n\n    resetQueryFragments() {\n        this.queryBuilder.queryFragments = {};\n        this.queryBuilder.resetToDefaults();\n    }\n\n    reset() {\n        this.responseFacets = [];\n        this.selectedBuckets = [];\n        this.tabbedFacet = null;\n        this.queryBuilder.resetToDefaults(true);\n        this.queryBuilder.update();\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 './base-query-builder.service';\nexport * from './search-configuration.service';\nexport * from './search-facet-filters.service';\nexport * from './search-filter.service';\nexport * from './search-header-query-builder.service';\nexport * from './search-query-builder.service';\nexport * from './search.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, Input, ViewChild, ViewContainerRef, OnInit, OnDestroy, ComponentRef, SimpleChanges, OnChanges, Injector } from '@angular/core';\nimport { SearchFilterService } from '../../services/search-filter.service';\nimport { Observable } from 'rxjs';\nimport { SearchHeaderQueryBuilderService, SearchQueryBuilderService } from '../../services';\n\n@Component({\n    selector: 'adf-search-widget-container',\n    standalone: true,\n    template: '<div #content></div>'\n})\nexport class SearchWidgetContainerComponent implements OnInit, OnDestroy, OnChanges {\n    @ViewChild('content', { read: ViewContainerRef, static: true })\n    content: ViewContainerRef;\n\n    @Input()\n    id: string;\n\n    @Input()\n    selector: string;\n\n    @Input()\n    settings: any;\n\n    @Input()\n    config: any;\n\n    @Input()\n    value: any;\n\n    @Input()\n    useHeaderQueryBuilder: boolean;\n\n    componentRef: ComponentRef<any>;\n\n    constructor(private searchFilterService: SearchFilterService, private injector: Injector) {}\n\n    ngOnInit() {\n        const componentType = this.searchFilterService.widgets[this.selector];\n        if (componentType) {\n            this.content.clear();\n            this.componentRef = this.content.createComponent(componentType, { index: 0 });\n            this.setupWidget(this.componentRef);\n        }\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        if (changes['value']?.currentValue && this.componentRef?.instance) {\n            this.componentRef.instance.isActive = true;\n            this.componentRef.instance.setValue(changes['value'].currentValue);\n        }\n    }\n\n    private setupWidget(ref: ComponentRef<any>) {\n        if (ref?.instance) {\n            ref.instance.id = this.id;\n            ref.instance.settings = { ...this.settings };\n            if (this.useHeaderQueryBuilder) {\n                ref.instance.context = this.injector.get(SearchHeaderQueryBuilderService);\n            } else {\n                ref.instance.context = this.injector.get(SearchQueryBuilderService);\n            }\n            if (this.value) {\n                ref.instance.isActive = true;\n                ref.instance.startValue = this.value;\n            }\n        }\n    }\n\n    ngOnDestroy() {\n        if (this.componentRef) {\n            this.componentRef.destroy();\n            this.componentRef = null;\n        }\n    }\n\n    applyInnerWidget() {\n        this.componentRef.instance.submitValues();\n    }\n\n    setValue(currentValue: string | any) {\n        this.componentRef.instance.isActive = true;\n        this.componentRef.instance.setValue(currentValue);\n    }\n\n    hasValueSelected() {\n        return this.componentRef.instance.hasValidValue();\n    }\n\n    getCurrentValue() {\n        return this.componentRef.instance.getCurrentValue();\n    }\n\n    getDisplayValue(): Observable<string> | null {\n        if (!this.componentRef?.instance) {\n            return null;\n        }\n        return this.componentRef.instance.displayValue$;\n    }\n\n    resetInnerWidget() {\n        if (this.componentRef?.instance) {\n            this.componentRef.instance.reset();\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, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { ConfigurableFocusTrap, ConfigurableFocusTrapFactory } from '@angular/cdk/a11y';\nimport { DataColumn, IconComponent, TranslationService } from '@alfresco/adf-core';\nimport { SearchWidgetContainerComponent } from '../search-widget-container/search-widget-container.component';\nimport { SearchHeaderQueryBuilderService } from '../../services/search-header-query-builder.service';\nimport { SearchCategory } from '../../models/search-category.interface';\nimport { MatMenuModule, MatMenuTrigger } from '@angular/material/menu';\nimport { FilterSearch } from '../../models/filter-search.interface';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatDialogModule } from '@angular/material/dialog';\n\n@Component({\n    selector: 'adf-search-filter-container',\n    standalone: true,\n    imports: [\n        CommonModule,\n        MatButtonModule,\n        MatMenuModule,\n        IconComponent,\n        MatBadgeModule,\n        SearchWidgetContainerComponent,\n        TranslateModule,\n        MatDialogModule\n    ],\n    templateUrl: './search-filter-container.component.html',\n    styleUrls: ['./search-filter-container.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class SearchFilterContainerComponent implements OnInit {\n    /** The column the filter will be applied on. */\n    @Input({ required: true })\n    col: DataColumn;\n\n    /** The column the filter will be applied on. */\n    @Input()\n    value: any;\n\n    /** Emitted when a filter value is selected */\n    @Output()\n    filterChange: EventEmitter<any> = new EventEmitter();\n\n    @ViewChild(SearchWidgetContainerComponent)\n    widgetContainer: SearchWidgetContainerComponent;\n\n    @ViewChild('filterContainer')\n    filterContainer: ElementRef;\n\n    category: SearchCategory;\n    focusTrap: ConfigurableFocusTrap;\n    initialValue: any;\n\n    constructor(\n        private searchFilterQueryBuilder: SearchHeaderQueryBuilderService,\n        private translationService: TranslationService,\n        private focusTrapFactory: ConfigurableFocusTrapFactory\n    ) {}\n\n    ngOnInit() {\n        this.category = this.searchFilterQueryBuilder.getCategoryForColumn(this.col.key);\n        this.initialValue = this.value?.[this.col.key] ? this.value[this.col.key] : undefined;\n    }\n\n    onKeyPressed(event: KeyboardEvent, menuTrigger: MatMenuTrigger) {\n        if (event.key === 'Enter' && this.widgetContainer.selector !== 'check-list') {\n            this.onApply();\n            menuTrigger.closeMenu();\n        }\n    }\n\n    onApply() {\n        if (this.widgetContainer.hasValueSelected()) {\n            this.searchFilterQueryBuilder.setActiveFilter(this.category.columnKey, this.widgetContainer.getCurrentValue());\n            this.filterChange.emit();\n            this.widgetContainer.applyInnerWidget();\n        } else {\n            this.resetSearchFilter();\n        }\n    }\n\n    onClearButtonClick(event: Event) {\n        event.stopPropagation();\n        this.resetSearchFilter();\n    }\n\n    resetSearchFilter() {\n        this.widgetContainer.resetInnerWidget();\n        this.searchFilterQueryBuilder.removeActiveFilter(this.category.columnKey);\n        this.filterChange.emit();\n    }\n\n    getTooltipTranslation(columnTitle: string): string {\n        if (!columnTitle) {\n            columnTitle = 'SEARCH.SEARCH_HEADER.TYPE';\n        }\n        return this.translationService.instant('SEARCH.SEARCH_HEADER.FILTER_BY', { category: this.translationService.instant(columnTitle) });\n    }\n\n    isActive(): boolean {\n        return this.searchFilterQueryBuilder.getActiveFilters().findIndex((f: FilterSearch) => f.key === this.category.columnKey) > -1;\n    }\n\n    onMenuOpen() {\n        if (this.filterContainer && !this.focusTrap) {\n            this.focusTrap = this.focusTrapFactory.create(this.filterContainer.nativeElement);\n            this.focusTrap.focusInitialElement();\n        }\n    }\n\n    onClosed() {\n        this.focusTrap.destroy();\n        this.focusTrap = null;\n    }\n}\n","<div *ngIf=\"!!category\" class=\"adf-filter\">\n    <button\n        mat-icon-button\n        [matMenuTriggerFor]=\"filter\"\n        data-automation-id=\"filter-menu-button\"\n        #menuTrigger=\"matMenuTrigger\"\n        (click)=\"$event.stopPropagation()\"\n        (menuOpened)=\"onMenuOpen()\"\n        (keyup.enter)=\"$event.stopPropagation()\"\n        class=\"adf-filter-button\"\n        [attr.aria-label]=\"getTooltipTranslation(col?.title)\"\n        [title]=\"getTooltipTranslation(col?.title)\"\n    >\n        <adf-icon\n            value=\"filter_list\"\n            [ngClass]=\"{ 'adf-icon-active': isActive() || menuTrigger.menuOpen }\"\n            class=\"adf-filter-icon\"\n            matBadge=\"filter\"\n            matBadgeColor=\"warn\"\n            [matBadgeHidden]=\"!isActive()\"\n        />\n    </button>\n\n    <mat-menu #filter=\"matMenu\" class=\"adf-filter-menu adf-search-filter-menu\" (closed)=\"onClosed()\">\n        <div #filterContainer role=\"menuitem\" tabindex=\"0\" (keydown.tab)=\"$event.stopPropagation()\">\n            <div (click)=\"$event.stopPropagation()\" role=\"button\" tabindex=\"0\" (keyup.enter)=\"$event.stopPropagation()\" class=\"adf-filter-container\">\n                <div class=\"adf-filter-title\">{{ category?.name | translate }}</div>\n                <adf-search-widget-container\n                    (keypress)=\"onKeyPressed($event, menuTrigger)\"\n                    [id]=\"category?.id\"\n                    [selector]=\"category?.component?.selector\"\n                    [settings]=\"category?.component?.settings\"\n                    [value]=\"initialValue\"\n                    [useHeaderQueryBuilder]=\"true\"\n                />\n            </div>\n            <mat-dialog-actions class=\"adf-filter-actions\">\n                <button\n                    mat-button\n                    id=\"clear-filter-button\"\n                    [attr.aria-label]=\"'SEARCH.SEARCH_HEADER.CLEAR' | translate\"\n                    (click)=\"onClearButtonClick($event)\"\n                >\n                    {{ 'SEARCH.SEARCH_HEADER.CLEAR' | translate | uppercase }}\n                </button>\n                <button\n                    mat-button\n                    color=\"primary\"\n                    id=\"apply-filter-button\"\n                    class=\"adf-filter-apply-button\"\n                    [attr.aria-label]=\"'SEARCH.SEARCH_HEADER.APPLY' | translate\"\n                    (click)=\"onApply()\"\n                >\n                    {{ 'SEARCH.SEARCH_HEADER.APPLY' | translate | uppercase }}\n                </button>\n            </mat-dialog-actions>\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 { Component, DestroyRef, EventEmitter, Inject, inject, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { DataSorting, HeaderFilterTemplateDirective, PaginationModel } from '@alfresco/adf-core';\nimport { SearchHeaderQueryBuilderService } from '../../../search/services/search-header-query-builder.service';\nimport { FilterSearch } from './../../../search/models/filter-search.interface';\nimport { ADF_DOCUMENT_PARENT_COMPONENT } from '../document-list.token';\nimport { CommonModule } from '@angular/common';\nimport { SearchFilterContainerComponent } from '../../../search/components/search-filter-container/search-filter-container.component';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n    selector: 'adf-filter-header',\n    standalone: true,\n    imports: [CommonModule, HeaderFilterTemplateDirective, SearchFilterContainerComponent],\n    templateUrl: './filter-header.component.html'\n})\nexport class FilterHeaderComponent implements OnInit, OnChanges {\n    /** (optional) Initial filter value to sort . */\n    @Input()\n    value: any = {};\n\n    /** The id of the current folder of the document list. */\n    @Input({ required: true })\n    currentFolderId: string;\n\n    /** Emitted when a filter value is selected */\n    @Output()\n    filterSelection: EventEmitter<FilterSearch[]> = new EventEmitter();\n\n    isFilterServiceActive: boolean;\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    constructor(@Inject(ADF_DOCUMENT_PARENT_COMPONENT) private documentList: any, private searchFilterQueryBuilder: SearchHeaderQueryBuilderService) {\n        this.isFilterServiceActive = this.searchFilterQueryBuilder.isFilterServiceActive();\n    }\n\n    ngOnInit() {\n        this.searchFilterQueryBuilder.executed.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((newNodePaging) => {\n            this.documentList.node = newNodePaging;\n            this.documentList.reload();\n        });\n\n        this.initDataPagination();\n        this.initDataSorting();\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        if (changes['currentFolderId']?.currentValue) {\n            this.resetFilterHeader();\n            this.configureSearchParent(changes['currentFolderId'].currentValue);\n        }\n    }\n\n    onFilterSelectionChange() {\n        this.filterSelection.emit(this.searchFilterQueryBuilder.getActiveFilters());\n        if (this.searchFilterQueryBuilder.isNoFilterActive()) {\n            this.documentList.node = null;\n            this.documentList.reload();\n        }\n    }\n\n    resetFilterHeader() {\n        this.searchFilterQueryBuilder.resetActiveFilters();\n    }\n\n    initDataPagination() {\n        this.documentList.pagination.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((newPagination: PaginationModel) => {\n            this.searchFilterQueryBuilder.setupCurrentPagination(newPagination.maxItems, newPagination.skipCount);\n        });\n    }\n\n    initDataSorting() {\n        this.documentList.sortingSubject.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((sorting: DataSorting[]) => {\n            this.searchFilterQueryBuilder.setSorting(sorting);\n        });\n    }\n\n    private configureSearchParent(currentFolderId: string) {\n        if (this.searchFilterQueryBuilder.isCustomSourceNode(currentFolderId)) {\n            this.searchFilterQueryBuilder.getNodeIdForCustomSource(currentFolderId).subscribe((node) => {\n                this.initSearchHeader(node.id);\n            });\n        } else {\n            this.initSearchHeader(currentFolderId);\n        }\n    }\n\n    private initSearchHeader(currentFolderId: string) {\n        this.searchFilterQueryBuilder.setCurrentRootFolderId(currentFolderId);\n        if (this.value) {\n            Object.keys(this.value).forEach((columnKey) => {\n                this.searchFilterQueryBuilder.setActiveFilter(columnKey, this.value[columnKey]);\n            });\n        }\n    }\n}\n","<div *ngIf=\"isFilterServiceActive\">\n    <adf-header-filter-template>\n        <ng-template let-col>\n            <adf-search-filter-container [col]=\"col\"\n                                         [value]=\"value\"\n                                         (filterChange)=\"onFilterSelectionChange()\" />\n        </ng-template>\n    </adf-header-filter-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\n/* eslint-disable rxjs/no-subject-value */\n/* eslint-disable @typescript-eslint/naming-convention */\n\nimport {\n    AppConfigService,\n    ColumnsSelectorComponent,\n    CustomEmptyContentTemplateDirective,\n    CustomLoadingContentTemplateDirective,\n    CustomNoPermissionTemplateDirective,\n    DataCellEvent,\n    DataColumn,\n    DataColumnListComponent,\n    DataRow,\n    DataRowActionEvent,\n    DataSorting,\n    DataTableComponent,\n    DataTableSchema,\n    DataTableService,\n    EmptyListComponent,\n    LoadingContentTemplateDirective,\n    MainMenuDataTableTemplateDirective,\n    NoContentTemplateDirective,\n    NoPermissionTemplateDirective,\n    PaginatedComponent,\n    PaginationModel,\n    RequestPaginationModel,\n    ShowHeaderMode,\n    ThumbnailService,\n    UserPreferencesService,\n    UserPreferenceValues\n} from '@alfresco/adf-core';\nimport { Node, NodeEntry, NodePaging, NodesApi, Pagination } from '@alfresco/js-api';\nimport {\n    AfterContentInit,\n    Component,\n    ContentChild,\n    DestroyRef,\n    ElementRef,\n    EventEmitter,\n    HostListener,\n    inject,\n    Input,\n    OnChanges,\n    OnInit,\n    Output,\n    SimpleChanges,\n    ViewChild,\n    ViewEncapsulation\n} from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { BehaviorSubject, of, Subject } from 'rxjs';\nimport { ContentService, NodesApiService } from '../../common';\nimport { FilterSearch } from '../../search';\nimport { RowFilter } from '../data/row-filter.model';\nimport { ShareDataRow } from '../data/share-data-row.model';\nimport { ShareDataTableAdapter } from '../data/share-datatable-adapter';\nimport { ContentActionModel } from '../models/content-action.model';\nimport { DocumentLoaderNode } from '../models/document-folder.model';\nimport { PermissionStyleModel } from '../models/permissions-style.model';\nimport { presetsDefaultModel } from '../models/preset.model';\nimport { DocumentListService } from '../services/document-list.service';\nimport { LockService } from '../services/lock.service';\nimport { ADF_DOCUMENT_PARENT_COMPONENT } from './document-list.token';\nimport { FileAutoDownloadComponent } from './file-auto-download/file-auto-download.component';\nimport { NodeEntityEvent, NodeEntryEvent } from './node.event';\nimport { CommonModule } from '@angular/common';\nimport { FilterHeaderComponent } from './filter-header/filter-header.component';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { AlfrescoApiService } from '../../services/alfresco-api.service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nconst BYTES_TO_MB_CONVERSION_VALUE = 1048576;\n\n@Component({\n    selector: 'adf-document-list',\n    standalone: true,\n    imports: [\n        CommonModule,\n        DataTableComponent,\n        FilterHeaderComponent,\n        NoContentTemplateDirective,\n        EmptyListComponent,\n        TranslateModule,\n        NoPermissionTemplateDirective,\n        MatIconModule,\n        LoadingContentTemplateDirective,\n        MatProgressSpinnerModule,\n        MainMenuDataTableTemplateDirective,\n        ColumnsSelectorComponent\n    ],\n    templateUrl: './document-list.component.html',\n    styleUrls: ['./document-list.component.scss'],\n    providers: [\n        {\n            provide: ADF_DOCUMENT_PARENT_COMPONENT,\n            useExisting: DocumentListComponent\n        },\n        DataTableService\n    ],\n    encapsulation: ViewEncapsulation.None,\n    host: { class: 'adf-document-list' }\n})\nexport class DocumentListComponent extends DataTableSchema implements OnInit, OnChanges, AfterContentInit, PaginatedComponent {\n    static SINGLE_CLICK_NAVIGATION: string = 'click';\n    static DOUBLE_CLICK_NAVIGATION: string = 'dblclick';\n\n    DEFAULT_PAGINATION: Pagination = new Pagination({\n        hasMoreItems: false,\n        skipCount: 0,\n        maxItems: 25,\n        totalItems: 0\n    });\n\n    DEFAULT_SORTING: DataSorting[] = [new DataSorting('name', 'asc'), new DataSorting('isFolder', 'desc')];\n\n    @ContentChild(DataColumnListComponent)\n    columnList: DataColumnListComponent;\n\n    @ContentChild(CustomLoadingContentTemplateDirective)\n    customLoadingContent: CustomLoadingContentTemplateDirective;\n\n    @ContentChild(CustomNoPermissionTemplateDirective)\n    customNoPermissionsTemplate: CustomNoPermissionTemplateDirective;\n\n    @ContentChild(CustomEmptyContentTemplateDirective)\n    customNoContentTemplate: CustomEmptyContentTemplateDirective;\n\n    /** Include additional information about the node in the server request. For example: association, isLink, isLocked and others. */\n    @Input()\n    includeFields: string[];\n\n    /**\n     * Filters the Node list using the *where* condition of the REST API\n     * (for example, isFolder=true). See the REST API documentation for more information.\n     */\n    @Input()\n    where: string;\n\n    /**\n     * Define a set of CSS styles to apply depending on the permission\n     * of the user on that node. See the Permission Style model\n     * page for further details and examples.\n     */\n    @Input()\n    permissionsStyle: PermissionStyleModel[] = [];\n\n    /** The default route for all the location-based columns (if declared). */\n    @Input()\n    locationFormat: string = '/';\n\n    /** Toggles navigation to folder content or file preview */\n    @Input()\n    navigate: boolean = true;\n\n    /** Toggles the header */\n    @Input()\n    showHeader = ShowHeaderMode.Data;\n\n    /**\n     * User interaction for folder navigation or file preview.\n     * Valid values are \"click\" and \"dblclick\". Default value: \"dblclick\"\n     */\n    @Input()\n    navigationMode: string = DocumentListComponent.DOUBLE_CLICK_NAVIGATION; // click|dblclick\n\n    /** Show document thumbnails rather than icons */\n    @Input()\n    thumbnails: boolean = false;\n\n    /**\n     * Row selection mode. Can be null, `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'; // null|single|multiple\n\n    /** Toggles multiselect mode */\n    @Input()\n    multiselect: boolean = false;\n\n    /** Toggles content actions for each row */\n    @Input()\n    contentActions: boolean = false;\n\n    /** Position of the content actions dropdown menu. Can be set to \"left\" or \"right\". */\n    @Input()\n    contentActionsPosition: string = 'right'; // left|right\n\n    /** Toggles context menus for each row */\n    @Input()\n    contextMenuActions: boolean = false;\n\n    /** Custom image for empty folder. Default value: './assets/images/empty_doc_lib.svg' */\n    @Input()\n    emptyFolderImageUrl: string = './assets/images/empty_doc_lib.svg';\n\n    /**\n     * When true, this enables you to drop files directly into subfolders shown\n     * as items in the list or into another file to trigger updating it's version.\n     * When false, the dropped file will be added to the\n     * current folder (ie, the one containing all the items shown in the list).\n     * See the Upload directive for further details about how the file drop is\n     * handled.\n     */\n    @Input()\n    allowDropFiles: boolean = false;\n\n    /**\n     * Defines default sorting. The format is an array of 2 strings `[key, direction]`\n     * i.e. `['name', 'desc']` or `['name', 'asc']`. Set this value only if you want to\n     * override the default sorting detected by the component based on columns.\n     */\n    @Input()\n    sorting: string[] | DataSorting = ['name', 'asc'];\n\n    /**\n     * Defines default sorting. The format is an array of strings `[key direction, otherKey otherDirection]`\n     * i.e. `['name desc', 'nodeType asc']` or `['name asc']`. Set this value if you want a base\n     * rule to be added to the sorting apart from the one driven by the header.\n     */\n    @Input()\n    additionalSorting: DataSorting = new DataSorting('isFolder', 'desc');\n\n    /**\n     * Defines sorting mode. Can be either `client` (items in the list\n     * are sorted client-side) or `server` (the ordering supplied by the\n     * server is used without further client-side sorting).\n     * Note that the `server` option *does not* request the server to sort the data\n     * before delivering it.\n     */\n    @Input()\n    sortingMode: 'server' | 'client' = 'server';\n\n    /**\n     * The inline style to apply to every row. See\n     * the Angular NgStyle\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    /**\n     * Toggles the loading state and animated spinners for the component. Used in\n     * combination with `navigate=false` to perform custom navigation and loading\n     * state indication.\n     */\n    @Input()\n    loading: boolean = false;\n\n    @Input()\n    _rowFilter: RowFilter | null = null;\n\n    /**\n     * Custom function to choose whether to show or hide rows.\n     * See the [Row Filter Model](row-filter.model.md) page for\n     * more information.\n     */\n    @Input()\n    set rowFilter(rowFilter: RowFilter) {\n        this._rowFilter = rowFilter;\n        if (this.data) {\n            this.data.setFilter(this._rowFilter);\n            if (this.currentFolderId) {\n                this.reload();\n            }\n        }\n    }\n\n    get rowFilter(): RowFilter {\n        return this._rowFilter;\n    }\n\n    /**\n     * Custom function to choose image file paths to show. See the\n     * [Image Resolver Model](image-resolver.model.md) page for\n     * more information.\n     */\n    @Input()\n    imageResolver: any | null = null;\n\n    /** Toggles the sticky header mode. */\n    @Input()\n    stickyHeader: boolean = false;\n\n    /** Toggles the header filters mode. */\n    @Input()\n    headerFilters: boolean = false;\n\n    /** Initial value for filter. */\n    @Input()\n    filterValue: any;\n\n    /** The ID of the folder node to display or a reserved string alias for special sources */\n    @Input()\n    currentFolderId: string = null;\n\n    /**\n     * Array of nodes to be pre-selected. All nodes in the\n     * array are pre-selected in multi selection mode, but only the first node\n     * is pre-selected in single selection mode.\n     */\n    @Input()\n    preselectNodes: NodeEntry[] = [];\n\n    /** The Document list will show all the nodes contained in the NodePaging entity */\n    @Input()\n    node: NodePaging = null;\n\n    /** Default value is stored in the user preference settings. Use this only if you are not using pagination. */\n    @Input()\n    maxItems: number = this.DEFAULT_PAGINATION.maxItems;\n\n    /** Key of columns preset set in extension.json  */\n    @Input()\n    columnsPresetKey?: string;\n\n    /** Sets columns visibility for DataTableSchema */\n    @Input()\n    set setColumnsVisibility(columnsVisibility: { [columnId: string]: boolean } | undefined) {\n        this.columnsVisibility = columnsVisibility;\n    }\n\n    /** Sets columns width for DataTableSchema */\n    @Input()\n    set setColumnsWidths(columnsWidths: { [columnId: string]: number } | undefined) {\n        this.columnsWidths = columnsWidths;\n    }\n\n    /** Sets columns order for DataTableSchema */\n    @Input()\n    set setColumnsOrder(columnsOrder: string[] | undefined) {\n        this.columnsOrder = columnsOrder;\n    }\n\n    /** Limit of possible visible columns, including \"$thumbnail\" column if provided */\n    @Input()\n    maxColumnsVisible?: number;\n\n    /** Enables column resizing for datatable */\n    @Input()\n    isResizingEnabled = false;\n\n    /** Enables blur when resizing datatable columns */\n    @Input()\n    blurOnResize = true;\n\n    /** Display checkboxes in datatable rows on hover only */\n    @Input()\n    displayCheckboxesOnHover = false;\n\n    /** Display drag and drop hint. */\n    @Input()\n    displayDragAndDropHint = true;\n\n    /** Emitted when the user clicks a list node */\n    @Output()\n    nodeClick = new EventEmitter<NodeEntityEvent>();\n\n    /** Emitted when the user double-clicks a list node */\n    @Output()\n    nodeDblClick = new EventEmitter<NodeEntityEvent>();\n\n    /** Emitted when the current display folder changes */\n    @Output()\n    folderChange = new EventEmitter<NodeEntryEvent>();\n\n    /**\n     * Emitted when the user acts upon files with either single or double click\n     * (depends on `navigation-mode`). Useful for integration with the\n     * Viewer component.\n     */\n    @Output()\n    preview = new EventEmitter<NodeEntityEvent>();\n\n    /** Emitted when the Document List has loaded all items and is ready for use */\n    @Output()\n    ready = new EventEmitter<NodePaging>();\n\n    /** Emitted when the API fails to get the Document List data */\n    @Output()\n    error = new EventEmitter<any>();\n\n    /** Emitted when the node selection change */\n    @Output()\n    nodeSelected = new EventEmitter<NodeEntry[]>();\n\n    /** Emitted when a filter value is selected */\n    @Output()\n    filterSelection = new EventEmitter<FilterSearch[]>();\n\n    /** Emitted when column widths change */\n    @Output()\n    columnsWidthChanged = new EventEmitter<{ [columnId: string]: number } | undefined>();\n\n    /** Emitted when columns visibility change */\n    @Output()\n    columnsVisibilityChanged = new EventEmitter<{ [columnId: string]: boolean } | undefined>();\n\n    /** Emitted when columns order change */\n    @Output()\n    columnsOrderChanged = new EventEmitter<string[] | undefined>();\n\n    /** Emitted when the selected row items count in the table changed. */\n    @Output()\n    selectedItemsCountChanged = new EventEmitter<number | undefined>();\n\n    @ViewChild('dataTable', { static: true })\n    dataTable: DataTableComponent;\n\n    actions: ContentActionModel[] = [];\n    contextActionHandler: Subject<any> = new Subject();\n    data: ShareDataTableAdapter;\n    noPermission: boolean = false;\n    selection = new Array<NodeEntry>();\n    $folderNode: Subject<Node> = new Subject<Node>();\n    allowFiltering: boolean = true;\n    orderBy: string[] = null;\n    preselectedRows: DataRow[] = [];\n\n    // @deprecated 3.0.0\n    folderNode: Node;\n\n    private _pagination: PaginationModel = this.DEFAULT_PAGINATION;\n    pagination: BehaviorSubject<PaginationModel> = new BehaviorSubject<PaginationModel>(this.DEFAULT_PAGINATION);\n    sortingSubject: BehaviorSubject<DataSorting[]> = new BehaviorSubject<DataSorting[]>(this.DEFAULT_SORTING);\n\n    private rowMenuCache: { [key: string]: ContentActionModel[] } = {};\n    private loadingTimeout: any;\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    private _nodesApi: NodesApi;\n    get nodesApi(): NodesApi {\n        this._nodesApi = this._nodesApi ?? new NodesApi(this.alfrescoApiService.getInstance());\n        return this._nodesApi;\n    }\n\n    constructor(\n        private documentListService: DocumentListService,\n        private elementRef: ElementRef,\n        private appConfig: AppConfigService,\n        private userPreferencesService: UserPreferencesService,\n        private contentService: ContentService,\n        private thumbnailService: ThumbnailService,\n        private alfrescoApiService: AlfrescoApiService,\n        private nodeService: NodesApiService,\n        private dataTableService: DataTableService,\n        private lockService: LockService,\n        private dialog: MatDialog\n    ) {\n        super(appConfig, 'default', presetsDefaultModel);\n        this.nodeService.nodeUpdated.pipe(takeUntilDestroyed()).subscribe((node) => {\n            this.dataTableService.rowUpdate.next({ id: node.id, obj: { entry: node } });\n        });\n\n        this.userPreferencesService\n            .select(UserPreferenceValues.PaginationSize)\n            .pipe(takeUntilDestroyed())\n            .subscribe((pagSize) => {\n                this.maxItems = this._pagination.maxItems = pagSize;\n            });\n    }\n\n    getContextActions(node: NodeEntry) {\n        if (node?.entry) {\n            const actions = this.getNodeActions(node);\n            if (actions && actions.length > 0) {\n                return actions.map((currentAction: ContentActionModel) => ({\n                    model: currentAction,\n                    node,\n                    subject: this.contextActionHandler\n                }));\n            }\n        }\n        return null;\n    }\n\n    private getDefaultSorting(): DataSorting {\n        let defaultSorting: DataSorting;\n        if (Array.isArray(this.sorting)) {\n            const [key, direction] = this.sorting;\n            defaultSorting = new DataSorting(key, direction);\n        } else {\n            defaultSorting = new DataSorting(this.sorting.key, this.sorting.direction);\n        }\n\n        return defaultSorting;\n    }\n\n    isMobile(): boolean {\n        return !!/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n    }\n\n    isEmpty() {\n        return !this.data || this.data.getRows().length === 0;\n    }\n\n    ngOnInit() {\n        this.rowMenuCache = {};\n        this.loadLayoutPresets();\n        this.data = new ShareDataTableAdapter(\n            this.thumbnailService,\n            this.contentService,\n            null,\n            this.getDefaultSorting(),\n            this.sortingMode,\n            this.allowDropFiles\n        );\n        this.data.thumbnails = this.thumbnails;\n        this.data.permissionsStyle = this.permissionsStyle;\n\n        if (this._rowFilter) {\n            this.data.setFilter(this._rowFilter);\n        }\n\n        if (this.imageResolver) {\n            this.data.setImageResolver(this.imageResolver);\n        }\n\n        this.contextActionHandler.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((val) => this.contextActionCallback(val));\n\n        this.enforceSingleClickNavigationForMobile();\n        if (this.filterValue && Object.keys(this.filterValue).length > 0) {\n            this.showHeader = ShowHeaderMode.Always;\n        }\n        if (this.columnsPresetKey) {\n            this.setPresetKey(this.columnsPresetKey);\n        }\n\n        this.documentListService.reload$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n            this.resetSelection();\n            this.reload();\n        });\n\n        this.documentListService.resetSelection$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n            this.resetSelection();\n        });\n    }\n\n    ngAfterContentInit() {\n        if (this.columnList) {\n            this.columnList.columns.changes.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n                this.createColumns();\n                this.data.setColumns(this.columns);\n            });\n        }\n        this.createDatatableSchema();\n        this.data.setColumns(this.columns);\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        if (!changes['preselectNodes']) {\n            this.resetSelection();\n        }\n\n        if (Array.isArray(this.sorting)) {\n            const [key, direction] = this.sorting;\n            this.orderBy = this.buildOrderByArray(key, direction);\n        } else {\n            this.orderBy = this.buildOrderByArray(this.sorting.key, this.sorting.direction);\n        }\n\n        if (this.data) {\n            this.data.thumbnails = this.thumbnails;\n        }\n\n        if (changes.sortingMode && !changes.sortingMode.firstChange && this.data) {\n            this.data.sortingMode = changes.sortingMode.currentValue;\n        }\n\n        if (changes.sorting && !changes.sorting.firstChange && this.data) {\n            const newValue = changes.sorting.currentValue;\n            if (newValue && newValue.length > 0) {\n                const [key, direction] = newValue;\n                this.data.setSorting(new DataSorting(key, direction));\n            }\n        }\n\n        if (this.currentFolderId && changes['currentFolderId']?.currentValue !== changes['currentFolderId']?.previousValue) {\n            this.loadFolder();\n        }\n\n        if (this.data) {\n            if (changes.node?.currentValue) {\n                const merge = this._pagination ? this._pagination.merge : false;\n                this.data.loadPage(changes.node.currentValue, merge, null);\n                this.preserveExistingSelection();\n                this.onPreselectNodes();\n                this.onDataReady(changes.node.currentValue);\n            } else if (changes.imageResolver) {\n                this.data.setImageResolver(changes.imageResolver.currentValue);\n            }\n        }\n    }\n\n    reload(hideLoadingSpinner = false) {\n        this.resetSelection();\n        this.reloadWithoutResettingSelection(hideLoadingSpinner);\n    }\n\n    reloadWithoutResettingSelection(hideLoadingSpinner = false) {\n        if (this.node) {\n            if (this.data) {\n                this.data.loadPage(this.node, this._pagination.merge, null);\n                this.preserveExistingSelection();\n            }\n            this.onPreselectNodes();\n            this.syncPagination();\n            this.onDataReady(this.node);\n        } else {\n            this.loadFolder(hideLoadingSpinner);\n        }\n    }\n\n    contextActionCallback(action) {\n        if (action) {\n            this.executeContentAction(action.node, action.model);\n        }\n    }\n\n    getNodeActions(node: NodeEntry | any): ContentActionModel[] {\n        if (node?.entry) {\n            let target = null;\n\n            if (node.entry.isFile) {\n                target = 'document';\n            } else if (node.entry.isFolder) {\n                target = 'folder';\n            }\n\n            if (target) {\n                const actions = this.rowMenuCache[node.entry.id];\n                if (actions) {\n                    actions.forEach((action) => {\n                        this.refreshAction(action, node);\n                    });\n                    return actions;\n                }\n\n                const actionsByTarget = this.actions\n                    .filter((entry) => {\n                        const isVisible = typeof entry.visible === 'function' ? entry.visible(node) : entry.visible;\n\n                        return isVisible && entry.target.toLowerCase() === target;\n                    })\n                    .map((action) => new ContentActionModel(action));\n\n                actionsByTarget.forEach((action) => {\n                    this.refreshAction(action, node);\n                });\n\n                this.rowMenuCache[node.entry.id] = actionsByTarget;\n                return actionsByTarget;\n            }\n        }\n\n        return [];\n    }\n\n    private refreshAction(action: ContentActionModel, node: NodeEntry) {\n        action.disabled = this.isActionDisabled(action, node);\n        action.visible = this.isActionVisible(action, node);\n    }\n\n    private isActionVisible(action: ContentActionModel, node: NodeEntry): boolean {\n        if (typeof action.visible === 'function') {\n            return action.visible(node);\n        }\n\n        return action.visible;\n    }\n\n    private isActionDisabled(action: ContentActionModel, node: NodeEntry): boolean {\n        if (typeof action.disabled === 'function') {\n            return action.disabled(node);\n        }\n\n        if (\n            (action.permission && action.disableWithNoPermission && !this.contentService.hasAllowableOperations(node.entry, action.permission)) ||\n            this.lockService.isLocked(node.entry)\n        ) {\n            return true;\n        } else {\n            return action.disabled;\n        }\n    }\n\n    @HostListener('contextmenu', ['$event'])\n    onShowContextMenu(e?: Event) {\n        if (e && this.contextMenuActions) {\n            e.preventDefault();\n        }\n    }\n\n    navigateTo(node: Node | string): boolean {\n        if (typeof node === 'string') {\n            this.resetNewFolderPagination();\n            this.currentFolderId = node;\n            this.folderChange.emit(new NodeEntryEvent({ id: node } as Node));\n            this.reload();\n            return true;\n        } else {\n            if (this.canNavigateFolder(node)) {\n                this.resetNewFolderPagination();\n                this.currentFolderId = this.getNodeFolderDestinationId(node);\n                this.folderChange.emit(new NodeEntryEvent({ id: this.currentFolderId } as Node));\n                this.reload();\n                return true;\n            }\n        }\n        return false;\n    }\n\n    private getNodeFolderDestinationId(node: Node) {\n        return this.isLinkFolder(node) ? node.properties['cm:destination'] : node.id;\n    }\n\n    private isLinkFolder(node: Node) {\n        return node.nodeType === 'app:folderlink' && node.properties?.['cm:destination'];\n    }\n\n    private updateCustomSourceData(nodeId: string): void {\n        this.currentFolderId = nodeId;\n    }\n\n    /**\n     * Invoked when executing content action for a document or folder.\n     *\n     * @param node Node to be the context of the execution.\n     * @param action Action to be executed against the context.\n     */\n    executeContentAction(node: NodeEntry, action: ContentActionModel) {\n        if (node?.entry && action) {\n            const handlerSub = typeof action.handler === 'function' ? action.handler(node, this, action.permission) : of(true);\n\n            if (typeof action.execute === 'function' && handlerSub) {\n                handlerSub.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => action.execute(node));\n            }\n        }\n    }\n\n    private setLoadingState(value: boolean) {\n        if (this.data?.getRows().length > 0) {\n            if (value) {\n                clearTimeout(this.loadingTimeout);\n                this.loadingTimeout = setTimeout(() => {\n                    this.loading = true;\n                }, 1000);\n            } else {\n                clearTimeout(this.loadingTimeout);\n                this.loading = false;\n            }\n        } else {\n            clearTimeout(this.loadingTimeout);\n            this.loading = value;\n        }\n    }\n\n    loadFolder(hideLoadingSpinner = false) {\n        if (!hideLoadingSpinner) {\n            this.setLoadingState(true);\n        }\n\n        if (this.documentListService.isCustomSourceService(this.currentFolderId)) {\n            this.updateCustomSourceData(this.currentFolderId);\n        }\n\n        this.documentListService.loadFolderByNodeId(this.currentFolderId, this._pagination, this.includeFields, this.where, this.orderBy).subscribe(\n            (documentNode: DocumentLoaderNode) => {\n                if (documentNode.currentNode) {\n                    this.folderNode = documentNode.currentNode.entry;\n                    this.$folderNode.next(documentNode.currentNode.entry);\n                }\n                this.onPageLoaded(documentNode.children);\n            },\n            (err) => {\n                this.handleError(err);\n            }\n        );\n    }\n\n    resetSelection() {\n        this.dataTable.resetSelection();\n        this.selection = [];\n        this.noPermission = false;\n    }\n\n    onPageLoaded(nodePaging: NodePaging) {\n        if (nodePaging) {\n            if (this.data) {\n                this.data.loadPage(nodePaging, this._pagination.merge, this.allowDropFiles);\n                this.preserveExistingSelection();\n            }\n            this.onPreselectNodes();\n            this.setLoadingState(false);\n            this.onDataReady(nodePaging);\n        }\n    }\n\n    onSortingChanged(event: CustomEvent) {\n        this.orderBy = this.buildOrderByArray(event.detail.sortingKey, event.detail.direction);\n        this.sorting = [event.detail.sortingKey, event.detail.direction];\n        this.sortingSubject.next([this.additionalSorting, event.detail]);\n\n        if (this.sortingMode === 'server') {\n            this.reload();\n        }\n    }\n\n    private buildOrderByArray(currentKey: string, currentDirection: string): string[] {\n        return [`${this.additionalSorting.key} ${this.additionalSorting.direction}`, `${currentKey} ${currentDirection}`];\n    }\n\n    onPreviewFile(node: NodeEntry) {\n        if (node) {\n            const sizeInMB = node.entry?.content?.sizeInBytes / BYTES_TO_MB_CONVERSION_VALUE;\n            const fileAutoDownloadFlag: boolean = this.appConfig.get('viewer.enableFileAutoDownload', true);\n            const sizeThreshold: number = this.appConfig.get('viewer.fileAutoDownloadSizeThresholdInMB', 15);\n\n            if (fileAutoDownloadFlag && sizeInMB && sizeInMB > sizeThreshold) {\n                this.dialog.open(FileAutoDownloadComponent, { disableClose: true, data: node });\n            } else {\n                this.preview.emit(new NodeEntityEvent(node));\n            }\n        }\n    }\n\n    onColumnsVisibilityChange(columns: DataColumn[]) {\n        this.columnsVisibility = columns.reduce((visibleColumnsMap, column) => {\n            if (column.isHidden !== undefined) {\n                visibleColumnsMap[column.id] = !column.isHidden;\n            }\n\n            return visibleColumnsMap;\n        }, {});\n\n        this.createColumns();\n        this.data.setColumns(this.columns);\n        this.columnsVisibilityChanged.emit(this.columnsVisibility);\n    }\n\n    onColumnOrderChange(columnsWithNewOrder: DataColumn[]) {\n        this.columnsOrder = columnsWithNewOrder.map((column) => column.id);\n        this.createColumns();\n        this.columnsOrderChanged.emit(this.columnsOrder);\n    }\n\n    onColumnsWidthChange(columns: DataColumn[]) {\n        const newColumnsWidths = columns.reduce((widthsColumnsMap, column) => {\n            if (column.width) {\n                widthsColumnsMap[column.id] = Math.ceil(column.width);\n            }\n            return widthsColumnsMap;\n        }, {});\n\n        this.columnsWidths = { ...this.columnsWidths, ...newColumnsWidths };\n        this.createColumns();\n        this.columnsWidthChanged.emit(this.columnsWidths);\n    }\n\n    onSelectedItemsCountChanged(count: number) {\n        this.selectedItemsCountChanged.emit(count);\n    }\n\n    onNodeClick(nodeEntry: NodeEntry) {\n        const domEvent = new CustomEvent('node-click', {\n            detail: {\n                sender: this,\n                node: nodeEntry\n            },\n            bubbles: true\n        });\n\n        this.elementRef.nativeElement.dispatchEvent(domEvent);\n\n        const event = new NodeEntityEvent(nodeEntry);\n        this.nodeClick.emit(event);\n\n        if (!event.defaultPrevented) {\n            if (this.navigate && this.navigationMode === DocumentListComponent.SINGLE_CLICK_NAVIGATION) {\n                this.executeActionClick(nodeEntry);\n            }\n        }\n    }\n\n    onNodeDblClick(nodeEntry: NodeEntry) {\n        const domEvent = new CustomEvent('node-dblclick', {\n            detail: {\n                sender: this,\n                node: nodeEntry\n            },\n            bubbles: true\n        });\n        this.elementRef.nativeElement.dispatchEvent(domEvent);\n\n        const event = new NodeEntityEvent(nodeEntry);\n        this.nodeDblClick.emit(event);\n\n        if (!event.defaultPrevented) {\n            if (this.navigate && this.navigationMode === DocumentListComponent.DOUBLE_CLICK_NAVIGATION) {\n                this.executeActionClick(nodeEntry);\n            }\n        }\n    }\n\n    executeActionClick(nodeEntry: NodeEntry) {\n        if (nodeEntry?.entry) {\n            if (nodeEntry.entry.isFile) {\n                this.onPreviewFile(nodeEntry);\n            }\n\n            if (nodeEntry.entry.isFolder) {\n                this.navigateTo(nodeEntry.entry);\n            }\n\n            if (nodeEntry.entry['guid']) {\n                const options = {\n                    include: this.includeFields\n                };\n\n                this.nodesApi.getNode(nodeEntry.entry['guid'], options).then((node: NodeEntry) => {\n                    this.navigateTo(node.entry);\n                });\n            }\n        }\n    }\n\n    onNodeSelect(event: { row: ShareDataRow; selection: Array<ShareDataRow> }) {\n        this.selection = event.selection.map((entry) => entry.node);\n        const domEvent = new CustomEvent('node-select', {\n            detail: {\n                node: event.row ? event.row.node : null,\n                selection: this.selection\n            },\n            bubbles: true\n        });\n        this.nodeSelected.emit(this.selection);\n        this.elementRef.nativeElement.dispatchEvent(domEvent);\n    }\n\n    onNodeUnselect(event: { row: ShareDataRow; selection: Array<ShareDataRow> }) {\n        this.selection = event.selection.map((entry) => entry.node);\n        const domEvent = new CustomEvent('node-unselect', {\n            detail: {\n                node: event.row ? event.row.node : null,\n                selection: this.selection\n            },\n            bubbles: true\n        });\n        this.nodeSelected.emit(this.selection);\n        this.elementRef.nativeElement.dispatchEvent(domEvent);\n    }\n\n    onShowRowContextMenu(event: DataCellEvent) {\n        if (this.contextMenuActions) {\n            const args = event.value;\n            const node = args.row.node;\n            if (node) {\n                args.actions = this.getContextActions(node) || [];\n            }\n        }\n    }\n\n    onShowRowActionsMenu(event: DataCellEvent) {\n        if (this.contentActions) {\n            const args = event.value;\n            const node = args.row.node;\n            if (node) {\n                args.actions = this.getNodeActions(node) || [];\n            }\n        }\n    }\n\n    onExecuteRowAction(event: DataRowActionEvent) {\n        if (this.contentActions) {\n            const args = event.value;\n            const node = args.row.node;\n            const action = args.action;\n            this.executeContentAction(node, action);\n        }\n    }\n\n    private enforceSingleClickNavigationForMobile(): void {\n        if (this.isMobile()) {\n            this.navigationMode = DocumentListComponent.SINGLE_CLICK_NAVIGATION;\n        }\n    }\n\n    canNavigateFolder(node: Node): boolean {\n        let canNavigateFolder: boolean = false;\n\n        if (node?.isFolder) {\n            canNavigateFolder = true;\n        }\n\n        return canNavigateFolder;\n    }\n\n    private onDataReady(nodePaging: NodePaging) {\n        this.ready.emit(nodePaging);\n        this.pagination.next(nodePaging.list.pagination);\n    }\n\n    updatePagination(requestPaginationModel: RequestPaginationModel) {\n        this._pagination.maxItems = requestPaginationModel.maxItems;\n        this._pagination.skipCount = requestPaginationModel.skipCount;\n        this.reload(requestPaginationModel.merge);\n    }\n\n    private syncPagination() {\n        this.node.list.pagination.maxItems = this._pagination.maxItems;\n        this.node.list.pagination.skipCount = this._pagination.skipCount;\n    }\n\n    onFilterSelectionChange(activeFilters: FilterSearch[]) {\n        this.filterSelection.emit(activeFilters);\n    }\n\n    resetNewFolderPagination() {\n        this._pagination.skipCount = 0;\n        this._pagination.maxItems = this.maxItems;\n    }\n\n    private handleError(err: any) {\n        if (err.message) {\n            try {\n                if (JSON.parse(err.message).error.statusCode === 403) {\n                    this.noPermission = true;\n                }\n            } catch (error) {\n                /* empty */\n            }\n        }\n        this.setLoadingState(false);\n        this.error.emit(err);\n    }\n\n    getPreselectedNodesBasedOnSelectionMode(): NodeEntry[] {\n        return this.hasPreselectedNodes() ? (this.isSingleSelectionMode() ? [this.preselectNodes[0]] : this.preselectNodes) : [];\n    }\n\n    getPreselectedRowsBasedOnSelectionMode(): DataRow[] {\n        return this.hasPreselectedRows() ? (this.isSingleSelectionMode() ? [this.preselectedRows[0]] : this.preselectedRows) : [];\n    }\n\n    getSelectionBasedOnSelectionMode(): DataRow[] {\n        return this.hasPreselectedRows()\n            ? this.isSingleSelectionMode()\n                ? [this.preselectedRows[0]]\n                : this.data.getSelectedRows()\n            : this.data.getSelectedRows();\n    }\n\n    onPreselectNodes() {\n        if (this.hasPreselectedNodes()) {\n            this.preselectRowsOfPreselectedNodes();\n            const preselectedRows = this.getPreselectedRowsBasedOnSelectionMode();\n            const selection = this.data.getSelectedRows() as ShareDataRow[];\n\n            for (const node of preselectedRows) {\n                this.dataTable.selectRow(node, true);\n            }\n            this.onNodeSelect({ row: undefined, selection });\n        }\n    }\n\n    private preserveExistingSelection() {\n        if (this.isMultipleSelectionMode()) {\n            for (const selection of this.selection) {\n                const rowOfSelection = this.data.getRowByNodeId(selection.entry.id);\n                if (rowOfSelection) {\n                    rowOfSelection.isSelected = true;\n                }\n            }\n        }\n    }\n\n    preselectRowsOfPreselectedNodes() {\n        this.preselectedRows = [];\n        const preselectedNodes = this.getPreselectedNodesBasedOnSelectionMode();\n\n        preselectedNodes.forEach((preselectedNode: NodeEntry) => {\n            const rowOfPreselectedNode = this.data.getRowByNodeId(preselectedNode.entry.id);\n            if (rowOfPreselectedNode) {\n                rowOfPreselectedNode.isSelected = true;\n                this.preselectedRows.push(rowOfPreselectedNode);\n            }\n        });\n    }\n\n    unselectRowFromNodeId(nodeId: string) {\n        const rowToUnselect = this.data.getRowByNodeId(nodeId);\n        if (rowToUnselect?.isSelected) {\n            rowToUnselect.isSelected = false;\n            this.dataTable.selectRow(rowToUnselect, false);\n            const selection = this.getSelectionBasedOnSelectionMode() as ShareDataRow[];\n            this.onNodeUnselect({ row: undefined, selection });\n        }\n    }\n\n    private isSingleSelectionMode(): boolean {\n        return this.selectionMode === 'single';\n    }\n\n    private isMultipleSelectionMode(): boolean {\n        return this.selectionMode === 'multiple';\n    }\n\n    private hasPreselectedNodes(): boolean {\n        return this.preselectNodes?.length > 0;\n    }\n\n    private hasPreselectedRows(): boolean {\n        return this.preselectedRows?.length > 0;\n    }\n}\n","<adf-datatable\n    #dataTable\n    [selectionMode]=\"selectionMode\"\n    [data]=\"data\"\n    [actions]=\"contentActions\"\n    [actionsPosition]=\"contentActionsPosition\"\n    [multiselect]=\"multiselect\"\n    [contextMenu]=\"contextMenuActions\"\n    [rowStyle]=\"rowStyle\"\n    [rowStyleClass]=\"rowStyleClass\"\n    [showMainDatatableActions]=\"true\"\n    [loading]=\"loading\"\n    [noPermission]=\"noPermission\"\n    [showHeader]=\"showHeader\"\n    [rowMenuCacheEnabled]=\"false\"\n    [stickyHeader]=\"stickyHeader\"\n    [allowFiltering]=\"allowFiltering\"\n    [isResizingEnabled]=\"isResizingEnabled\"\n    [blurOnResize]=\"blurOnResize\"\n    [displayCheckboxesOnHover]=\"displayCheckboxesOnHover\"\n    (showRowContextMenu)=\"onShowRowContextMenu($event)\"\n    (showRowActionsMenu)=\"onShowRowActionsMenu($event)\"\n    (executeRowAction)=\"onExecuteRowAction($event)\"\n    (columnsWidthChanged)=\"onColumnsWidthChange($event)\"\n    (columnOrderChanged)=\"onColumnOrderChange($event)\"\n    (selectedItemsCountChanged)=\"onSelectedItemsCountChanged($event)\"\n    (rowClick)=\"onNodeClick($event.value?.node)\"\n    (rowDblClick)=\"onNodeDblClick($event.value?.node)\"\n    (row-select)=\"onNodeSelect($any($event).detail)\"\n    (row-unselect)=\"onNodeUnselect($any($event).detail)\"\n    (sorting-changed)=\"onSortingChanged($any($event))\"\n    [class.adf-datatable-gallery-thumbnails]=\"data.thumbnails\">\n\n    <div *ngIf=\"headerFilters\">\n        <adf-filter-header\n            [currentFolderId]=\"currentFolderId\"\n            [value]=\"filterValue\"\n            (filterSelection)=\"onFilterSelectionChange($event)\" />\n    </div>\n\n    <adf-no-content-template>\n        <ng-template>\n            <adf-empty-list *ngIf=\"!customNoContentTemplate\">\n                <div class=\"adf-empty-list_template adf-empty-folder\">\n                    <div class=\"adf-empty-folder-this-space-is-empty\">{{'ADF-DOCUMENT-LIST.EMPTY.HEADER' | translate}}</div>\n                    <ng-container *ngIf=\"displayDragAndDropHint\">\n                        <div class=\"adf-empty-folder-drag-drop\">{{ 'ADF-DATATABLE.EMPTY.DRAG-AND-DROP.TITLE' | translate }}</div>\n                        <div class=\"adf-empty-folder-any-files-here-to-add\">{{ 'ADF-DATATABLE.EMPTY.DRAG-AND-DROP.SUBTITLE' | translate }}</div>\n                    </ng-container>\n                    <img [alt]=\"'ADF-DATATABLE.EMPTY.DRAG-AND-DROP.TITLE' | translate\" class=\"adf-empty-folder-image\" [src]=\"emptyFolderImageUrl\">\n                </div>\n            </adf-empty-list>\n            <ng-content select=\"adf-custom-empty-content-template, empty-folder-content\" />\n        </ng-template>\n    </adf-no-content-template>\n\n    <adf-no-permission-template>\n        <ng-template>\n            <div class=\"adf-no-permission__template\" *ngIf=\"!customNoPermissionsTemplate\">\n                <mat-icon>error</mat-icon>\n                <p class=\"adf-no-permission__template--text\">{{ 'ADF-DOCUMENT-LIST.NO_PERMISSION' | translate }}</p>\n            </div>\n            <ng-content select=\"adf-custom-no-permission-template, no-permission-content\" />\n        </ng-template>\n    </adf-no-permission-template>\n\n    <adf-loading-content-template>\n        <ng-template>\n            <div class=\"adf-document-list-loading-container\" *ngIf=\"!customLoadingContent\">\n                <mat-progress-spinner\n                    id=\"adf-document-list-loading\"\n                    class=\"adf-document-list-loading-margin\"\n                    [attr.aria-label]=\"'ADF-DOCUMENT-LIST.LOADER_LABEL' | translate\"\n                    [color]=\"'primary'\"\n                    [mode]=\"'indeterminate'\" />\n            </div>\n            <ng-content select=\"adf-custom-loading-content-template\" />\n        </ng-template>\n    </adf-loading-content-template>\n\n    <adf-main-menu-datatable-template>\n        <ng-template let-mainMenuTrigger>\n            <adf-datatable-column-selector\n              [columns]=\"columns\"\n              [mainMenuTrigger]=\"mainMenuTrigger\"\n              [columnsSorting]=\"false\"\n              [maxColumnsVisible]=\"maxColumnsVisible\"\n              (submitColumnsVisibility)=\"onColumnsVisibilityChange($event)\" />\n        </ng-template>\n    </adf-main-menu-datatable-template>\n\n</adf-datatable>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY 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, OnChanges, OnInit, Output, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { MatSelect, MatSelectModule } from '@angular/material/select';\nimport { Node, PathElement } from '@alfresco/js-api';\nimport { DocumentListComponent } from '../document-list/components/document-list.component';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n    selector: 'adf-breadcrumb',\n    standalone: true,\n    imports: [CommonModule, MatIconModule, TranslateModule, MatSelectModule],\n    templateUrl: './breadcrumb.component.html',\n    styleUrls: ['./breadcrumb.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    host: { class: 'adf-breadcrumb' }\n})\nexport class BreadcrumbComponent implements OnInit, OnChanges {\n    /** Active node, builds UI based on folderNode.path.elements collection. */\n    @Input({ required: true })\n    folderNode: Node = null;\n\n    /**\n     * Name of the root element of the breadcrumb. You can use\n     * this property to rename \"Company Home\" to \"Personal Files\" for\n     * example. You can use an i18n resource key for the property value.\n     */\n    @Input()\n    root?: string = null;\n\n    /**\n     * The id of the root element. You can use this property\n     * to set a custom element the breadcrumb should start with.\n     */\n    @Input()\n    rootId?: string = null;\n\n    /**\n     * Document List component to operate with. The list will\n     * update when the breadcrumb is clicked.\n     */\n    @Input()\n    target?: DocumentListComponent;\n\n    /**\n     * Transformation to be performed on the chosen/folder node before building\n     * the breadcrumb UI. Can be useful when custom formatting is needed for the\n     * breadcrumb. You can change the path elements from the node that are used to\n     * build the breadcrumb using this function.\n     */\n    @Input()\n    transform: (node) => any;\n\n    @ViewChild('dropdown')\n    dropdown: MatSelect;\n\n    /** Maximum number of nodes to display before wrapping them with a dropdown element.  */\n    @Input()\n    maxItems: number;\n\n    /** Number of table rows that are currently selected.  */\n    @Input()\n    selectedRowItemsCount = 0;\n\n    previousNodes: PathElement[];\n    lastNodes: PathElement[];\n\n    route: PathElement[] = [];\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    get hasRoot(): boolean {\n        return !!this.root;\n    }\n\n    /** If true, prevents the user from navigating away from the active node. */\n    @Input()\n    readOnly: boolean = false;\n\n    /** Emitted when the user clicks on a breadcrumb. */\n    @Output()\n    navigate = new EventEmitter<PathElement>();\n\n    ngOnInit() {\n        this.transform = this.transform ? this.transform : null;\n\n        if (this.target) {\n            this.target.$folderNode.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((folderNode: Node) => {\n                this.folderNode = folderNode;\n                this.recalculateNodes();\n            });\n        }\n    }\n\n    ngOnChanges(): void {\n        this.recalculateNodes();\n    }\n\n    protected recalculateNodes(): void {\n        const node: Node = this.transform ? this.transform(this.folderNode) : this.folderNode;\n\n        this.route = this.parseRoute(node);\n\n        if (this.maxItems && this.route.length > this.maxItems) {\n            this.lastNodes = this.route.slice(this.route.length - this.maxItems);\n            this.previousNodes = this.route.slice(0, this.route.length - this.maxItems);\n            this.previousNodes.reverse();\n        } else {\n            this.lastNodes = this.route;\n            this.previousNodes = null;\n        }\n    }\n\n    open(): void {\n        if (this.dropdown) {\n            this.dropdown.open();\n            this.dropdown.focus();\n        }\n    }\n\n    hasPreviousNodes(): boolean {\n        return !!this.previousNodes;\n    }\n\n    parseRoute(node: Node): PathElement[] {\n        if (node?.path) {\n            const route = (node.path.elements || []).slice();\n\n            route.push({\n                id: node.id,\n                name: node.name,\n                node\n            } as PathElement);\n\n            const rootPos = this.getElementPosition(route, this.rootId);\n            if (rootPos > 0) {\n                route.splice(0, rootPos);\n            }\n\n            if (rootPos === -1 && this.rootId) {\n                route[0].id = this.rootId;\n            }\n\n            if (this.root) {\n                route[0].name = this.root;\n            }\n\n            return route;\n        }\n\n        return [];\n    }\n\n    private getElementPosition(route: PathElement[], nodeId: string): number {\n        let position: number = -1;\n\n        if (route && route.length > 0 && nodeId) {\n            position = route.findIndex((el) => el.id === nodeId);\n        }\n\n        return position;\n    }\n\n    breadcrumbItemIsAnchor(lastItem): boolean {\n        return !this.readOnly && !lastItem;\n    }\n\n    onRoutePathClick(route: PathElement, event?: Event): void {\n        if (event && event.type === 'click') {\n            event.preventDefault();\n        }\n\n        this.onRouteClick(route);\n    }\n\n    onRouteClick(route: PathElement) {\n        if (route && !this.readOnly) {\n            this.navigate.emit(route);\n\n            if (this.target) {\n                this.target.navigateTo(route.id);\n            }\n        }\n    }\n}\n","<nav\n    *ngIf=\"folderNode\"\n    data-automation-id=\"breadcrumb\"\n    class=\"adf-breadcrumb-container\"\n    role=\"navigation\"\n    [attr.aria-label]=\"'BREADCRUMB.ARIA-LABEL.BREADCRUMB' | translate\"\n>\n    <button\n        *ngIf=\"hasPreviousNodes()\"\n        tabindex=\"0\"\n        class=\"adf-breadcrumb-dropdown-trigger\"\n        (click)=\"open()\"\n        [attr.aria-label]=\"'BREADCRUMB.ARIA-LABEL.DROPDOWN' | translate\"\n    >\n        <div class=\"adf-breadcrumb-dropdown-trigger-icon\">\n            <mat-icon [class.adf-isRoot]=\"!hasPreviousNodes()\">folder</mat-icon>\n            <mat-icon\n                [class.adf-isRoot]=\"!hasPreviousNodes()\"\n                class=\"adf-breadcrumb-dropdown-trigger-arrow\"\n                >arrow_drop_down</mat-icon\n            >\n        </div>\n    </button>\n\n    <mat-select\n        #dropdown\n        *ngIf=\"hasPreviousNodes()\"\n        class=\"adf-breadcrumb-dropdown-path\"\n        tabindex=\"-1\"\n        role=\"button\"\n    >\n        <mat-option\n            *ngFor=\"let node of previousNodes\"\n            (click)=\"onRoutePathClick(node, $event)\"\n            (onSelectionChange)=\"onRouteClick(node)\"\n            class=\"adf-breadcrumb-path-option\"\n            [disabled]=\"readOnly\"\n        >\n            {{ node.name | translate }}\n        </mat-option>\n    </mat-select>\n\n    <div\n        *ngFor=\"let item of lastNodes; let last = last\"\n        [class.adf-active]=\"last\"\n        [ngSwitch]=\"breadcrumbItemIsAnchor(last)\"\n        title=\"{{ item.name | translate }}\"\n        class=\"adf-breadcrumb-item\">\n        <a\n            *ngSwitchCase=\"true\"\n            href=\"#\"\n            [attr.data-automation-id]=\"'breadcrumb_' + item.name\"\n            class=\"adf-breadcrumb-item-anchor\"\n            (click)=\"onRoutePathClick(item, $event)\"\n        >\n            {{ item.name | translate }}\n        </a>\n\n        <div *ngSwitchDefault class=\"adf-breadcrumb-item-current\" aria-current=\"location\">\n            {{ (selectedRowItemsCount < 1 ? item.name : 'BREADCRUMB.HEADER.SELECTED') | translate: { count: selectedRowItemsCount } }}\n        </div>\n\n        <mat-icon class=\"adf-breadcrumb-item-chevron\" *ngIf=\"!last\">\n            chevron_right\n        </mat-icon>\n    </div>\n</nav>\n\n<nav\n    *ngIf=\"!folderNode && hasRoot\"\n    data-automation-id=\"breadcrumb\"\n    role=\"navigation\"\n    [attr.aria-label]=\"'BREADCRUMB.ARIA-LABEL.BREADCRUMB' | translate\"\n>\n    <div class=\"adf-breadcrumb-item adf-active\" role=\"group\">\n        <div class=\"adf-breadcrumb-item-current\">\n            {{ root | translate }}\n        </div>\n    </div>\n</nav>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY 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, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { MatSelect, MatSelectModule } from '@angular/material/select';\nimport { PathElement, Node } from '@alfresco/js-api';\nimport { BreadcrumbComponent } from './breadcrumb.component';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n    selector: 'adf-dropdown-breadcrumb',\n    standalone: true,\n    imports: [CommonModule, MatIconModule, MatSelectModule, TranslateModule],\n    templateUrl: './dropdown-breadcrumb.component.html',\n    styleUrls: ['./dropdown-breadcrumb.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    host: { class: 'adf-dropdown-breadcrumb' }\n})\nexport class DropdownBreadcrumbComponent extends BreadcrumbComponent implements OnChanges {\n    @ViewChild('dropdown')\n    dropdown: MatSelect;\n\n    currentNode: PathElement;\n    previousNodes: PathElement[];\n\n    /**\n     * Calculate the current and previous nodes from the route array\n     */\n    protected recalculateNodes(): void {\n        const node: Node = this.transform ? this.transform(this.folderNode) : this.folderNode;\n\n        this.route = this.parseRoute(node);\n        this.currentNode = this.route[this.route.length - 1];\n        this.previousNodes = this.route.slice(0, this.route.length - 1).reverse();\n    }\n\n    /**\n     * Opens the node picker menu\n     */\n    open(): void {\n        if (this.dropdown) {\n            this.dropdown.open();\n            this.dropdown.focus();\n        }\n    }\n\n    /**\n     * Check if route has more than one element (means: we are not in the root directory)\n     *\n     * @returns `true` if there are previous nodes, otherwise `false`\n     */\n    hasPreviousNodes(): boolean {\n        return this.previousNodes.length > 0;\n    }\n}\n","<nav *ngIf=\"route.length > 0\" class=\"adf-dropdown-breadcrumb-container\"\n     role=\"navigation\"\n     [attr.aria-label]=\"'BREADCRUMB.ARIA-LABEL.BREADCRUMB' | translate\">\n\n    <button\n        id=\"dropdown-breadcrumb-button\"\n        [tabindex]=\"hasPreviousNodes() ? 0 : -1\"\n        class=\"adf-dropdown-breadcrumb-trigger\"\n        (click)=\"open()\"\n        [attr.aria-label]=\"'BREADCRUMB.ARIA-LABEL.DROPDOWN' | translate\"\n        data-automation-id=\"dropdown-breadcrumb-trigger\">\n        <mat-icon class=\"adf-dropdown-breadcrumb-icon\" [class.adf-isRoot]=\"!hasPreviousNodes()\">folder</mat-icon>\n    </button>\n\n    <mat-icon class=\"adf-dropdown-breadcrumb-icon adf-dropdown-breadcrumb-item-chevron\">chevron_right</mat-icon>\n\n    <div class=\"adf-dropdown-breadcrumb-path\">\n        <mat-select\n            #dropdown\n            *ngIf=\"hasPreviousNodes()\"\n            panelClass=\"adf-breadcrumb-dropdown-panel\"\n            class=\"adf-dropdown-breadcrumb-path-select\"\n            tabindex=\"-1\"\n            role=\"button\"\n            data-automation-id=\"dropdown-breadcrumb-path\"\n            aria-labelledby=\"dropdown-breadcrumb-button\">\n\n            <mat-option\n                *ngFor=\"let node of previousNodes;\"\n                (click)=\"onRoutePathClick(node, $event)\"\n                (onSelectionChange)=\"onRouteClick(node)\"\n                class=\"adf-dropdown-breadcrumb-path-option adf-dropdown-breadcrumb-path-option-node\"\n                data-automation-class=\"dropdown-breadcrumb-path-option\"\n                [disabled]=\"readOnly\">\n                {{ node.name | translate }}\n            </mat-option>\n        </mat-select>\n    </div>\n\n    <span\n        class=\"adf-current-folder\"\n        [class.adf-isRoot]=\"!hasPreviousNodes()\"\n        data-automation-id=\"current-folder\"\n        aria-current=\"location\">{{ currentNode.name }}\n    </span>\n</nav>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY 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, Component, OnInit, OnChanges, ViewContainerRef } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Directive({\n    standalone: true,\n    selector: '[adf-node-counter]'\n})\nexport class NodeCounterDirective implements OnInit, OnChanges {\n    /** Number to display in the counter badge */\n    @Input('adf-node-counter')\n    counter: number;\n\n    componentRef: NodeCounterComponent;\n\n    constructor(private viewContainerRef: ViewContainerRef) {}\n\n    ngOnInit() {\n        this.componentRef = this.viewContainerRef.createComponent(NodeCounterComponent).instance;\n        this.componentRef.counter = this.counter;\n    }\n\n    ngOnChanges() {\n        if (this.componentRef) {\n            this.componentRef.counter = this.counter;\n        }\n    }\n}\n\n@Component({\n    standalone: true,\n    imports: [TranslateModule],\n    selector: 'adf-node-counter',\n    template: ` <div>{{ 'NODE_COUNTER.SELECTED_COUNT' | translate : { count: counter } }}</div> `\n})\nexport class NodeCounterComponent {\n    counter: 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 { FileModel } from '../../common/models/file.model';\nimport { UploadService } from '../../common/services/upload.service';\nimport { EventEmitter } from '@angular/core';\n\nexport class UploadFilesEvent {\n    private isDefaultPrevented: boolean = false;\n\n    get defaultPrevented() {\n        return this.isDefaultPrevented;\n    }\n\n    preventDefault() {\n        this.isDefaultPrevented = true;\n    }\n\n    constructor(\n        public files: Array<FileModel>,\n        private uploadService: UploadService,\n        private successEmitter: EventEmitter<any>,\n        private errorEmitter: EventEmitter<any>\n    ) {}\n\n    pauseUpload() {\n        this.preventDefault();\n    }\n\n    resumeUpload() {\n        if (this.files && this.files.length > 0) {\n            this.uploadService.addToQueue(...this.files);\n            this.uploadService.uploadFilesInTheQueue(this.successEmitter, this.errorEmitter);\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 { FileInfo, TranslationService } from '@alfresco/adf-core';\nimport { FileUploadErrorEvent } from '../../../common/events/file.event';\nimport { FileModel } from '../../../common/models/file.model';\nimport { UploadService } from '../../../common/services/upload.service';\nimport { DestroyRef, Directive, EventEmitter, inject, Input, NgZone, OnInit, Output } from '@angular/core';\nimport { UploadFilesEvent } from '../upload-files.event';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Directive()\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport abstract class UploadBase implements OnInit {\n    protected uploadService = inject(UploadService);\n    protected translationService: TranslationService = inject(TranslationService);\n    protected ngZone = inject(NgZone);\n\n    /**\n     * Sets a limit on the maximum size (in bytes) of a file to be uploaded.\n     * Has no effect if undefined.\n     */\n    @Input()\n    maxFilesSize: number;\n\n    /**\n     * The ID of the root. Use the nodeId for\n     * Content Services or the taskId/processId for Process Services.\n     */\n    @Input()\n    rootFolderId: string = '-root-';\n\n    /** Toggles component disabled state (if there is no node permission checking). */\n    @Input()\n    disabled: boolean = false;\n\n    /** Filter for accepted file types. */\n    @Input()\n    acceptedFilesType: string = '*';\n\n    /** Toggles versioning. */\n    @Input()\n    versioning: boolean = false;\n\n    /** majorVersion boolean field to true to indicate a major version should be created. */\n    @Input()\n    majorVersion: boolean = false;\n\n    /** When you overwrite existing content, you can use the comment field to add a version comment that appears in the version history */\n    @Input()\n    comment: string;\n\n    /** Custom node type for uploaded file */\n    @Input()\n    nodeType: string = 'cm:content';\n\n    /** Emitted when the file is uploaded successfully. */\n    @Output()\n    success = new EventEmitter();\n\n    /** Emitted when an error occurs. */\n    @Output()\n    error = new EventEmitter<FileUploadErrorEvent>();\n\n    /** Emitted when the upload begins. */\n    @Output()\n    beginUpload = new EventEmitter<UploadFilesEvent>();\n\n    /** Emitted when dropping a file over another file to update the version. */\n    @Output()\n    updateFileVersion = new EventEmitter<CustomEvent>();\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    ngOnInit() {\n        this.uploadService.fileUploadError\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe(error => this.error.emit(error));\n    }\n\n    /**\n     * Upload a list of file in the specified path\n     *\n     * @param files files to upload\n     */\n    uploadFiles(files: File[]): void {\n        const filteredFiles: FileModel[] = files.map<FileModel>((file: File) =>\n            this.createFileModel(file, this.rootFolderId, ((file).webkitRelativePath || '').replace(/\\/[^/]*$/, ''))\n        );\n\n        this.uploadQueue(filteredFiles);\n    }\n\n    uploadFilesInfo(files: FileInfo[]): void {\n        const filteredFiles: FileModel[] = files.map<FileModel>((fileInfo: FileInfo) =>\n            this.createFileModel(fileInfo.file, this.rootFolderId, fileInfo.relativeFolder)\n        );\n\n        this.uploadQueue(filteredFiles);\n    }\n\n    private uploadQueue(files: FileModel[]) {\n        const filteredFiles = files.filter(this.isFileAcceptable.bind(this)).filter(this.isFileSizeAcceptable.bind(this));\n\n        this.ngZone.run(() => {\n            const event = new UploadFilesEvent([...filteredFiles], this.uploadService, this.success, this.error);\n            this.beginUpload.emit(event);\n\n            if (!event.defaultPrevented) {\n                if (filteredFiles.length > 0) {\n                    this.uploadService.addToQueue(...filteredFiles);\n                    this.uploadService.uploadFilesInTheQueue(this.success, this.error);\n                }\n            }\n        });\n    }\n\n    /**\n     * Checks if the given file is allowed by the extension filters\n     *\n     * @param file FileModel\n     * @returns `true` if file is acceptable, otherwise `false`\n     */\n    protected isFileAcceptable(file: FileModel): boolean {\n        if (this.acceptedFilesType === '*') {\n            return true;\n        }\n\n        const allowedExtensions = this.acceptedFilesType.split(',').map((ext) => ext.trim().replace(/^\\./, ''));\n\n        return allowedExtensions.indexOf(file.extension) !== -1;\n    }\n\n    /**\n     * Creates FileModel from File\n     *\n     * @param file file instance\n     * @param parentId parent id\n     * @param path upload path\n     * @param id model id\n     * @returns file model\n     */\n    protected createFileModel(file: File, parentId: string, path: string, id?: string): FileModel {\n        return new FileModel(\n            file,\n            {\n                comment: this.comment,\n                majorVersion: this.majorVersion,\n                newVersion: this.versioning,\n                parentId,\n                path,\n                nodeType: this.nodeType\n            },\n            id\n        );\n    }\n\n    protected isFileSizeAllowed(file: FileModel) {\n        let isFileSizeAllowed = true;\n        if (this.isMaxFileSizeDefined()) {\n            isFileSizeAllowed = this.isFileSizeCorrect(file);\n        }\n\n        return isFileSizeAllowed;\n    }\n\n    protected isMaxFileSizeDefined() {\n        return this.maxFilesSize !== undefined && this.maxFilesSize !== null;\n    }\n\n    protected isFileSizeCorrect(file: FileModel) {\n        return this.maxFilesSize >= 0 && file.size <= this.maxFilesSize;\n    }\n\n    /**\n     * Checks if the given file is an acceptable size\n     *\n     * @param file FileModel\n     * @returns `true` if file size is acceptable, otherwise `false`\n     */\n    private isFileSizeAcceptable(file: FileModel): boolean {\n        let acceptableSize = true;\n\n        if (!this.isFileSizeAllowed(file)) {\n            acceptableSize = false;\n\n            const message = this.translationService.instant('FILE_UPLOAD.MESSAGES.EXCEED_MAX_FILE_SIZE', { fileName: file.name });\n\n            this.error.emit(message);\n        }\n\n        return acceptableSize;\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 { FileUtils } from '@alfresco/adf-core';\nimport { Directive, ElementRef, EventEmitter, Input, NgZone, OnDestroy, OnInit, Output } from '@angular/core';\n\nexport const INPUT_FOCUS_CSS_CLASS = 'adf-file-draggable-input-focus';\nexport const DROP_EFFECT = 'copy';\n\n@Directive({\n    selector: '[adf-file-draggable]',\n    standalone: true\n})\nexport class FileDraggableDirective implements OnInit, OnDestroy {\n    files: File[];\n\n    /** Enables/disables drag-and-drop functionality. */\n    @Input('adf-file-draggable')\n    enabled = true;\n\n    /** Emitted when one or more files are dragged and dropped onto the draggable element. */\n    @Output()\n    filesDropped = new EventEmitter<File[]>();\n\n    /** Emitted when a directory is dragged and dropped onto the draggable element. */\n    @Output()\n    folderEntityDropped = new EventEmitter<any>();\n\n    private element: HTMLElement;\n\n    constructor(el: ElementRef, private ngZone: NgZone) {\n        this.element = el.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('dragleave', this.onDragLeave.bind(this));\n            this.element.addEventListener('drop', this.onDropFiles.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('dragleave', this.onDragLeave);\n        this.element.removeEventListener('drop', this.onDropFiles);\n    }\n\n    /**\n     * Method called when files is dropped in the drag and drop area.\n     *\n     * @param event DOM event.\n     */\n    onDropFiles(event: any): void {\n        if (this.enabled && !event.defaultPrevented) {\n            this.preventDefault(event);\n\n            // Chrome, Edge, Firefox, Opera (Files + Folders)\n            const items = event.dataTransfer?.items;\n            if (items) {\n                const files: File[] = [];\n\n                // eslint-disable-next-line @typescript-eslint/prefer-for-of\n                for (let i = 0; i < items.length; i++) {\n                    if (items[i].webkitGetAsEntry) {\n                        const item = items[i].webkitGetAsEntry();\n\n                        if (item) {\n                            if (item.isFile) {\n                                const file = items[i].getAsFile();\n\n                                if (file) {\n                                    files.push(file);\n                                }\n                            } else if (item.isDirectory) {\n                                this.folderEntityDropped.emit(item);\n                            }\n                        }\n                    }\n                }\n                if (files.length > 0) {\n                    this.filesDropped.emit(files);\n                }\n            } else if (event.dataTransfer?.files) {\n                // IE, Safari, Chrome, Edge, Firefox, Opera (Files only)\n                const files = FileUtils.toFileArray(event.dataTransfer.files);\n                this.filesDropped.emit(files);\n            }\n\n            this.element.classList.remove(INPUT_FOCUS_CSS_CLASS);\n        }\n    }\n\n    /**\n     * Change the style of the drag area when a file drag in.\n     *\n     * @param event - DOM event.\n     */\n    onDragEnter(event: DragEvent): void {\n        if (this.enabled && !event.defaultPrevented) {\n            this.preventDefault(event);\n\n            if (event.dataTransfer) {\n                event.dataTransfer.dropEffect = DROP_EFFECT;\n            }\n\n            this.element.classList.add(INPUT_FOCUS_CSS_CLASS);\n        }\n    }\n\n    /**\n     * Change the style of the drag area when a file drag out.\n     *\n     * @param event - DOM event.\n     */\n    onDragLeave(event: Event): void {\n        if (this.enabled && !event.defaultPrevented) {\n            this.preventDefault(event);\n            this.element.classList.remove(INPUT_FOCUS_CSS_CLASS);\n        }\n    }\n\n    /**\n     * Change the style of the drag area when a file is over the drag area.\n     *\n     * @param event drag event\n     */\n    onDragOver(event: DragEvent): void {\n        if (this.enabled && !event.defaultPrevented) {\n            this.preventDefault(event);\n\n            if (event.dataTransfer) {\n                event.dataTransfer.dropEffect = DROP_EFFECT;\n            }\n\n            this.element.classList.add(INPUT_FOCUS_CSS_CLASS);\n        }\n    }\n\n    /**\n     * Prevent default and stop propagation of the DOM event.\n     *\n     * @param event DOM event\n     */\n    preventDefault(event: Event): void {\n        event.stopPropagation();\n        event.preventDefault();\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 { EXTENDIBLE_COMPONENT, FileInfo, FileUtils, NotificationService } from '@alfresco/adf-core';\nimport { Component, forwardRef, ViewEncapsulation, inject } from '@angular/core';\nimport { NodeAllowableOperationSubject } from '../../interfaces/node-allowable-operation-subject.interface';\nimport { UploadBase } from './base-upload/upload-base';\nimport { AllowableOperationsEnum } from '../../common/models/allowable-operations.enum';\nimport { ContentService } from '../../common/services/content.service';\nimport { FileModel } from '../../common/models/file.model';\nimport { Node } from '@alfresco/js-api';\nimport { FileDraggableDirective } from '../directives/file-draggable.directive';\n\n@Component({\n    selector: 'adf-upload-drag-area',\n    standalone: true,\n    imports: [FileDraggableDirective],\n    templateUrl: './upload-drag-area.component.html',\n    styleUrls: ['./upload-drag-area.component.scss'],\n    host: { class: 'adf-upload-drag-area' },\n    viewProviders: [{ provide: EXTENDIBLE_COMPONENT, useExisting: forwardRef(() => UploadDragAreaComponent) }],\n    encapsulation: ViewEncapsulation.None\n})\nexport class UploadDragAreaComponent extends UploadBase implements NodeAllowableOperationSubject {\n    private notificationService = inject(NotificationService);\n    private contentService = inject(ContentService);\n\n    /**\n     * Method called when files are dropped in the drag area.\n     *\n     * @param files - files dropped in the drag area.\n     */\n    onFilesDropped(files: File[]): void {\n        if (!this.disabled && files.length) {\n            this.uploadFiles(files);\n        }\n    }\n\n    /**\n     * Called when a folder are dropped in the drag area\n     *\n     * @param folder - name of the dropped folder\n     */\n    onFolderEntityDropped(folder: any): void {\n        if (!this.disabled && folder.isDirectory) {\n            FileUtils.flatten(folder).then((filesInfo) => {\n                this.uploadFilesInfo(filesInfo);\n            });\n        }\n    }\n\n    /**\n     * Show undo notification bar.\n     *\n     * @param latestFilesAdded - files in the upload queue enriched with status flag and xhr object.\n     */\n    showUndoNotificationBar(latestFilesAdded: FileModel[]) {\n        const messageTranslate = this.translationService.instant('FILE_UPLOAD.MESSAGES.PROGRESS');\n        const actionTranslate = this.translationService.instant('FILE_UPLOAD.ACTION.UNDO');\n\n        this.notificationService\n            .openSnackMessageAction(messageTranslate, actionTranslate)\n            .onAction()\n            .subscribe(() => {\n                this.uploadService.cancelUpload(...latestFilesAdded);\n            });\n    }\n\n    /**\n     * Check if content is droppable\n     *\n     * @returns `true` or `false` considering the component options and node permissions\n     */\n    isDroppable(): boolean {\n        return !this.disabled;\n    }\n\n    /**\n     * Handles 'upload-files' events raised by child components.\n     *\n     * @param event DOM event\n     */\n    onUploadFiles(event: CustomEvent) {\n        event.stopPropagation();\n        event.preventDefault();\n\n        const node: Node = event.detail.data.obj.entry;\n        const files: FileInfo[] = event.detail?.files || [];\n\n        const isAllowed: boolean = this.isTargetNodeFolder(node)\n            ? this.contentService.hasAllowableOperations(node, AllowableOperationsEnum.CREATE)\n            : this.contentService.hasAllowableOperations(node, AllowableOperationsEnum.UPDATE);\n\n        if (isAllowed) {\n            if (!this.isTargetNodeFolder(node) && files.length === 1) {\n                this.updateFileVersion.emit(event);\n            } else {\n                if (this.isTargetNodeFolder(node)) {\n                    files.forEach((file) => (file.relativeFolder = node.name ? node.name.concat(file.relativeFolder) : file.relativeFolder));\n                }\n                if (files?.length > 0) {\n                    this.uploadFilesInfo(files);\n                }\n            }\n        }\n    }\n\n    private isTargetNodeFolder(node: Node): boolean {\n        return !!node?.isFolder;\n    }\n}\n","<div [adf-file-draggable]=\"isDroppable()\" class=\"adf-upload-border\"\n     (filesDropped)=\"onFilesDropped($event)\"\n     (folderEntityDropped)=\"onFolderEntityDropped($event)\"\n     (upload-files)=\"onUploadFiles($any($event))\"\n     dropzone=\"\" webkitdropzone=\"*\" #droparea>\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 { TranslationService } from '@alfresco/adf-core';\nimport { UploadService } from '../../common/services/upload.service';\nimport { FileModel, FileUploadStatus } from '../../common/models/file.model';\n\nimport { Component, ContentChild, Input, Output, TemplateRef, EventEmitter } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n    selector: 'adf-file-uploading-list',\n    standalone: true,\n    imports: [CommonModule],\n    templateUrl: './file-uploading-list.component.html',\n    styleUrls: ['./file-uploading-list.component.scss']\n})\nexport class FileUploadingListComponent {\n    @ContentChild(TemplateRef)\n    template: any;\n\n    @Input()\n    files: FileModel[] = [];\n\n    /** Emitted when a file in the list has an error. */\n    @Output()\n    error = new EventEmitter<any>();\n\n    constructor(private uploadService: UploadService, private translateService: TranslationService) {}\n\n    /**\n     * Cancel file upload\n     *\n     * @param file File model to cancel upload for.\n     */\n    cancelFile(file: FileModel): void {\n        if (file.status === FileUploadStatus.Pending) {\n            file.status = FileUploadStatus.Cancelled;\n        } else {\n            this.uploadService.cancelUpload(file);\n        }\n    }\n\n    /**\n     * Remove uploaded file\n     *\n     * @param file File model to remove upload for.\n     */\n    removeFile(file: FileModel): void {\n        if (file.status === FileUploadStatus.Error) {\n            this.notifyError(file);\n        }\n\n        if (this.isUploadingFile(file)) {\n            this.cancelNodeVersionInstances(file);\n            this.uploadService.cancelUpload(file);\n        }\n\n        this.files = this.files.filter((entry) => entry !== file);\n    }\n\n    /**\n     * Calls the appropriate methods for each file, depending on state\n     */\n    cancelAllFiles(): void {\n        const filesToCancel = this.files.filter((file) => this.isUploadingFile(file));\n\n        if (filesToCancel.length > 0) {\n            this.uploadService.cancelUpload(...filesToCancel);\n        }\n    }\n\n    /**\n     * Checks if all the files are uploaded false if there is at least one file in Progress | Starting | Pending\n     *\n     * @returns `true` if upload is complete, otherwise `false`\n     */\n    isUploadCompleted(): boolean {\n        return (\n            !this.isUploadCancelled() &&\n            Boolean(this.files.length) &&\n            !this.files.some(\n                ({ status }) => status === FileUploadStatus.Starting || status === FileUploadStatus.Progress || status === FileUploadStatus.Pending\n            )\n        );\n    }\n\n    /**\n     * Check if all the files are Cancelled | Aborted | Error. false if there is at least one file in uploading states\n     *\n     * @returns `true` if upload is cancelled, otherwise `false`\n     */\n    isUploadCancelled(): boolean {\n        return (\n            !!this.files.length &&\n            this.files.every(\n                ({ status }) => status === FileUploadStatus.Aborted || status === FileUploadStatus.Cancelled || status === FileUploadStatus.Deleted\n            )\n        );\n    }\n\n    private cancelNodeVersionInstances(file: FileModel) {\n        this.files\n            .filter((item) => item.options.newVersion && item.data.entry.id === file.data.entry.id)\n            .map((item) => {\n                item.status = FileUploadStatus.Deleted;\n            });\n    }\n\n    private notifyError(...files: FileModel[]) {\n        let messageError: string = null;\n\n        if (files.length === 1) {\n            messageError = this.translateService.instant('FILE_UPLOAD.MESSAGES.REMOVE_FILE_ERROR', { fileName: files[0].name });\n        } else {\n            messageError = this.translateService.instant('FILE_UPLOAD.MESSAGES.REMOVE_FILES_ERROR', { total: files.length });\n        }\n\n        this.error.emit(messageError);\n    }\n\n    private isUploadingFile(file: FileModel): boolean {\n        return file.status === FileUploadStatus.Pending || file.status === FileUploadStatus.Starting || file.status === FileUploadStatus.Progress;\n    }\n}\n","<div class=\"upload-list\">\n    <ng-template\n        ngFor\n        [ngForOf]=\"files\"\n        [ngForTemplate]=\"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 { Directive, HostListener } from '@angular/core';\n\n@Directive({\n    selector: '[adf-toggle-icon]',\n    standalone: true,\n    exportAs: 'toggleIcon'\n})\nexport class ToggleIconDirective {\n    private isFocus: boolean = false;\n    private toggle: boolean = false;\n\n    @HostListener('mouseenter') onMouseEnter() {\n        if (!this.isFocus) {\n            this.toggle = true;\n        }\n    }\n\n    @HostListener('mouseleave') onMouseLeave() {\n        if (!this.isFocus) {\n            this.toggle = false;\n        }\n\n        if (this.isFocus && this.toggle) {\n            this.isFocus = false;\n            this.toggle = false;\n        }\n    }\n\n    @HostListener('focus') onFocus() {\n        this.isFocus = true;\n        this.toggle = true;\n    }\n\n    @HostListener('blur') onBlur() {\n        this.isFocus = false;\n        this.toggle = false;\n    }\n\n    get isToggled(): boolean {\n        return this.toggle;\n    }\n\n    get isFocused(): boolean {\n        return this.isFocus;\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 { TranslationService } from '@alfresco/adf-core';\n\n@Pipe({\n    name: 'adfFileUploadError',\n    pure: true,\n    standalone: true\n})\nexport class FileUploadErrorPipe implements PipeTransform {\n    constructor(private translation: TranslationService) {}\n\n    transform(errorCode: number): string {\n        return this.translation.instant(`FILE_UPLOAD.ERRORS.${errorCode || 'GENERIC'}`);\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 { FileModel, FileUploadStatus } from '../../common/models/file.model';\nimport { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\nimport { FileSizePipe, IconComponent } from '@alfresco/adf-core';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ToggleIconDirective } from '../directives/toggle-icon.directive';\nimport { MatButtonModule } from '@angular/material/button';\nimport { FileUploadErrorPipe } from '../pipes/file-upload-error.pipe';\n\n@Component({\n    selector: 'adf-file-uploading-list-row',\n    standalone: true,\n    imports: [\n        CommonModule,\n        MatIconModule,\n        MatListModule,\n        IconComponent,\n        MatChipsModule,\n        TranslateModule,\n        ToggleIconDirective,\n        FileSizePipe,\n        MatButtonModule,\n        FileUploadErrorPipe\n    ],\n    templateUrl: './file-uploading-list-row.component.html',\n    styleUrls: ['./file-uploading-list-row.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class FileUploadingListRowComponent {\n    @Input()\n    file: FileModel;\n\n    @Output()\n    cancel = new EventEmitter<FileModel>();\n\n    onCancel(file: FileModel): void {\n        this.cancel.emit(file);\n    }\n\n    showCancelledStatus(): boolean {\n        return (\n            this.file.status === FileUploadStatus.Cancelled ||\n            this.file.status === FileUploadStatus.Aborted ||\n            this.file.status === FileUploadStatus.Deleted\n        );\n    }\n\n    get versionNumber(): string {\n        return this.file.data.entry.properties['cm:versionLabel'];\n    }\n\n    get mimeType(): string {\n        return this.file?.file?.type || 'default';\n    }\n\n    isUploadVersion(): boolean {\n        return !!this.file.data && this.file.options?.newVersion && this.file.data.entry.properties?.['cm:versionLabel'];\n    }\n\n    canCancelUpload(): boolean {\n        return this.file?.status === FileUploadStatus.Pending;\n    }\n\n    isUploadError(): boolean {\n        return this.file?.status === FileUploadStatus.Error;\n    }\n\n    isUploading(): boolean {\n        return this.file && (this.file.status === FileUploadStatus.Progress || this.file.status === FileUploadStatus.Starting);\n    }\n\n    isUploadComplete(): boolean {\n        return this.file?.status === FileUploadStatus.Complete && !this.isUploadVersion();\n    }\n\n    isUploadVersionComplete(): boolean {\n        return this.file?.status === FileUploadStatus.Complete && this.isUploadVersion();\n    }\n}\n","<div class=\"adf-file-uploading-row\">\n    <mat-icon *ngIf=\"mimeType === 'default'\" matListItemIcon class=\"adf-file-uploading-row__type\">\n        insert_drive_file\n    </mat-icon>\n\n    <adf-icon *ngIf=\"mimeType !== 'default'\" value=\"adf:{{ mimeType }}\" />\n\n    <span\n        class=\"adf-file-uploading-row__name\"\n        title=\"{{ file.name }}\">\n        {{ file.name }}\n    </span>\n\n    <span *ngIf=\"isUploadVersion()\" class=\"adf-file-uploading-row__version\" tabindex=\"0\" >\n        <mat-chip color=\"primary\"\n            [attr.aria-label]=\"'ADF_FILE_UPLOAD.ARIA-LABEL.VERSION' | translate: { version:  versionNumber }\"\n            [title]=\"'version' + versionNumber\"\n        >{{ versionNumber }}</mat-chip>\n    </span>\n\n    <div\n        tabindex=\"0\"\n        role=\"button\"\n        #toggleIcon=\"toggleIcon\"\n        adf-toggle-icon\n        (keyup.enter)=\"onCancel(file)\"\n        (click)=\"onCancel(file)\"\n        data-automation-id=\"cancel-upload-progress\"\n        *ngIf=\"isUploading()\"\n        [attr.aria-label]=\"'ADF_FILE_UPLOAD.ARIA-LABEL.STOP_FILE_UPLOAD' | translate: { file: file.name }\"\n        class=\"adf-file-uploading-row__group adf-file-uploading-row__group--toggle\"\n        title=\"{{ 'ADF_FILE_UPLOAD.BUTTON.STOP_FILE' | translate }}\">\n\n        <span class=\"adf-file-uploading-row__status\" *ngIf=\"!toggleIcon.isToggled\">\n            {{ file.progress.loaded | adfFileSize }} / {{ file.progress.total | adfFileSize }}\n        </span>\n\n        <mat-icon *ngIf=\"toggleIcon.isToggled\"\n            class=\"adf-file-uploading-row__action adf-file-uploading-row__action--cancel\">\n            clear\n        </mat-icon>\n    </div>\n\n    <button mat-icon-button\n        adf-toggle-icon\n        #toggleIcon=\"toggleIcon\"\n        *ngIf=\"isUploadComplete()\"\n        class=\"adf-file-uploading-row__group\"\n        [attr.aria-label]=\"'ADF_FILE_UPLOAD.ARIA-LABEL.UPLOAD_SUCCESSFUL' | translate: { file: file.name }\"\n        title=\"{{ 'ADF_FILE_UPLOAD.BUTTON.UPLOAD_SUCCESSFUL' | translate }}\">\n\n        <mat-icon\n            class=\"adf-file-uploading-row__status adf-file-uploading-row__status--done\">\n            check_circle\n        </mat-icon>\n    </button>\n\n    <div\n        *ngIf=\"isUploadVersionComplete()\"\n        class=\"adf-file-uploading-row__file-version\"\n        [attr.aria-label]=\"'ADF_FILE_UPLOAD.STATUS.FILE_DONE_STATUS' | translate\"\n        >\n        <mat-icon\n            matListItemIcon\n            class=\"adf-file-uploading-row__status--done\">\n            check_circle\n        </mat-icon>\n    </div>\n\n    <button\n        adf-toggle-icon\n        #toggleIconCancel=\"toggleIcon\"\n        mat-icon-button\n        *ngIf=\"canCancelUpload()\"\n        (click)=\"onCancel(file)\"\n        data-automation-id=\"cancel-upload-queue\"\n        class=\"adf-file-uploading-row__group\"\n        title=\"{{ 'ADF_FILE_UPLOAD.BUTTON.STOP_FILE' | translate }}\"\n        [attr.aria-label]=\"'ADF_FILE_UPLOAD.ARIA-LABEL.STOP_FILE' | translate: { file: file.name }\">\n        <mat-icon\n            *ngIf=\"!toggleIconCancel.isToggled\"\n            class=\"adf-file-uploading-row__status adf-file-uploading-row__status--pending\">\n            schedule\n        </mat-icon>\n\n        <mat-icon\n            *ngIf=\"toggleIconCancel.isToggled\"\n            class=\"adf-file-uploading-row__action adf-file-uploading-row__action--remove\">\n            remove_circle\n        </mat-icon>\n    </button>\n\n    <div\n        role=\"status\"\n        *ngIf=\"isUploadError()\"\n        class=\"adf-file-uploading-row__block adf-file-uploading-row__status--error\">\n        <mat-icon matListItemIcon\n            [attr.aria-label]=\"'ADF_FILE_UPLOAD.ARIA-LABEL.UPLOAD_FILE_ERROR' | translate: { error: file.errorCode | adfFileUploadError }\"\n            [title]=\"file.errorCode | adfFileUploadError\">\n            report_problem\n        </mat-icon>\n    </div>\n\n    <div\n        [attr.aria-label]=\"'ADF_FILE_UPLOAD.STATUS.FILE_CANCELED_STATUS' | translate\"\n        role=\"status\"\n        *ngIf=\"showCancelledStatus()\"\n        class=\"adf-file-uploading-row__block adf-file-uploading-row__status--cancelled\">\n        {{ 'ADF_FILE_UPLOAD.STATUS.FILE_CANCELED_STATUS' | translate }}\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 { UserPreferencesService } from '@alfresco/adf-core';\nimport {\n    ChangeDetectorRef,\n    Component,\n    DestroyRef,\n    ElementRef,\n    EventEmitter,\n    HostBinding,\n    inject,\n    Input,\n    OnDestroy,\n    OnInit,\n    Output,\n    ViewChild,\n    ViewEncapsulation\n} from '@angular/core';\nimport { merge, Subject } from 'rxjs';\nimport { FileUploadingListComponent } from './file-uploading-list.component';\nimport { Direction } from '@angular/cdk/bidi';\nimport { delay } from 'rxjs/operators';\nimport { UploadService } from '../../common/services/upload.service';\nimport { FileModel, FileUploadStatus } from '../../common/models/file.model';\nimport { FileUploadCompleteEvent, FileUploadDeleteEvent } from '../../common/events/file.event';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { FileUploadingListRowComponent } from './file-uploading-list-row.component';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n    selector: 'adf-file-uploading-dialog',\n    standalone: true,\n    imports: [CommonModule, MatButtonModule, TranslateModule, MatIconModule, FileUploadingListComponent, FileUploadingListRowComponent, A11yModule],\n    templateUrl: './file-uploading-dialog.component.html',\n    styleUrls: ['./file-uploading-dialog.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class FileUploadingDialogComponent implements OnInit, OnDestroy {\n    /** Dialog direction. Can be 'ltr' or 'rtl. */\n    private direction: Direction = 'ltr';\n\n    @ViewChild('uploadList')\n    uploadList: FileUploadingListComponent;\n\n    /** Dialog position. Can be 'left' or 'right'. */\n    @Input()\n    position: string = 'right';\n\n    /** Makes the dialog always visible even when there are no uploads. */\n    @Input()\n    alwaysVisible: boolean = false;\n\n    /** Emitted when a file in the list has an error. */\n    @Output()\n    error: EventEmitter<any> = new EventEmitter();\n\n    @HostBinding('attr.adfUploadDialogRight')\n    public get isPositionRight(): boolean {\n        return (this.direction === 'ltr' && this.position === 'right') || (this.direction === 'rtl' && this.position === 'left') || null;\n    }\n    @HostBinding('attr.adfUploadDialogLeft')\n    public get isPositionLeft(): boolean {\n        return (this.direction === 'ltr' && this.position === 'left') || (this.direction === 'rtl' && this.position === 'right') || null;\n    }\n\n    filesUploadingList: FileModel[] = [];\n    isDialogActive: boolean = false;\n    totalCompleted: number = 0;\n    totalErrors: number = 0;\n    isDialogMinimized: boolean = false;\n    isConfirmation: boolean = false;\n\n    private dialogActive = new Subject<boolean>();\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    constructor(\n        private uploadService: UploadService,\n        private changeDetector: ChangeDetectorRef,\n        private userPreferencesService: UserPreferencesService,\n        private elementRef: ElementRef\n    ) {}\n\n    ngOnInit() {\n        this.dialogActive.pipe(delay(100), takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n            const element: any = this.elementRef.nativeElement.querySelector('#upload-dialog');\n            if (element) {\n                element.focus();\n            }\n        });\n\n        this.uploadService.queueChanged.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((fileList) => {\n            this.filesUploadingList = fileList;\n\n            if (this.filesUploadingList.length && !this.isDialogActive) {\n                this.isDialogActive = true;\n                this.dialogActive.next(undefined);\n            } else {\n                this.dialogActive.next(undefined);\n            }\n        });\n\n        merge(this.uploadService.fileUploadComplete, this.uploadService.fileUploadDeleted)\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe((event: FileUploadCompleteEvent | FileUploadDeleteEvent) => {\n                this.totalCompleted = event.totalComplete;\n                this.changeDetector.detectChanges();\n            });\n\n        this.uploadService.fileUploadError.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((event) => {\n            this.totalErrors = event.totalError;\n            this.changeDetector.detectChanges();\n        });\n\n        this.uploadService.fileUpload.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n            this.changeDetector.detectChanges();\n        });\n\n        this.uploadService.fileDeleted.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((objId) => {\n            if (this.filesUploadingList) {\n                const uploadedFile = this.filesUploadingList.find((file) => (file.data ? file.data.entry.id === objId : false));\n                if (uploadedFile) {\n                    uploadedFile.status = FileUploadStatus.Cancelled;\n                    this.changeDetector.detectChanges();\n                }\n            }\n        });\n\n        this.userPreferencesService\n            .select('textOrientation')\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe((textOrientation: Direction) => {\n                this.direction = textOrientation;\n            });\n    }\n\n    /**\n     * Toggle confirmation message.\n     */\n    toggleConfirmation() {\n        this.isConfirmation = !this.isConfirmation;\n\n        if (!this.isConfirmation) {\n            this.dialogActive.next(undefined);\n        }\n\n        if (this.isDialogMinimized) {\n            this.isDialogMinimized = false;\n        }\n    }\n\n    /**\n     * Cancel uploads and hide confirmation\n     */\n    cancelAllUploads() {\n        this.toggleConfirmation();\n        this.dialogActive.next(undefined);\n        this.uploadList.cancelAllFiles();\n    }\n\n    /**\n     * Toggle dialog minimized state.\n     */\n    toggleMinimized(): void {\n        this.isDialogMinimized = !this.isDialogMinimized;\n        this.changeDetector.detectChanges();\n    }\n\n    /**\n     * Dismiss dialog\n     */\n    close(): void {\n        this.isConfirmation = false;\n        this.totalCompleted = 0;\n        this.totalErrors = 0;\n        this.filesUploadingList = [];\n        this.isDialogActive = false;\n        this.isDialogMinimized = false;\n        this.uploadService.clearQueue();\n        this.changeDetector.detectChanges();\n    }\n\n    ngOnDestroy() {\n        this.uploadService.clearQueue();\n    }\n\n    canShowDialog(): boolean {\n        return this.isDialogActive || this.alwaysVisible;\n    }\n\n    canShowCancelAll(): boolean {\n        return this.filesUploadingList?.length && this.hasUploadInProgress();\n    }\n\n    canCloseDialog(): boolean {\n        return !this.hasUploadInProgress() && !this.alwaysVisible;\n    }\n\n    hasUploadInProgress(): boolean {\n        return !this.uploadList?.isUploadCompleted() && !this.uploadList?.isUploadCancelled();\n    }\n}\n","<div *ngIf=\"canShowDialog()\"\n     role=\"dialog\"\n     [attr.aria-label]=\"'ADF_FILE_UPLOAD.ARIA-LABEL.DIALOG'| translate\"\n     tabindex=\"0\"\n     class=\"adf-upload-dialog\"\n     id=\"upload-dialog\"\n     [class.adf-upload-dialog--minimized]=\"isDialogMinimized\">\n    <header class=\"adf-upload-dialog__header\">\n        <button\n            mat-icon-button\n            class=\"adf-upload-dialog__header-button\"\n            [attr.data-automation-id]=\"'adf-upload-dialog__toggle-minimize'\"\n            [attr.aria-label]=\"(isDialogMinimized ?\n                'ADF_FILE_UPLOAD.ARIA-LABEL.DIALOG_MAXIMIZE':\n                'ADF_FILE_UPLOAD.ARIA-LABEL.DIALOG_MINIMIZE') | translate\"\n            [disabled]=\"isConfirmation\"\n            [attr.aria-expanded]=\"!isDialogMinimized\"\n            (click)=\"toggleMinimized()\">\n            <mat-icon\n                class=\"adf-upload-dialog__header-button-icon\">\n                    {{ isDialogMinimized ? 'keyboard_arrow_up' : 'keyboard_arrow_down' }}\n            </mat-icon>\n        </button>\n\n        <span\n            class=\"adf-upload-dialog__title\"\n            *ngIf=\"!uploadList.isUploadCancelled()\">\n            {{ 'FILE_UPLOAD.MESSAGES.UPLOAD_PROGRESS'\n                | translate: {\n                    completed: totalCompleted,\n                    total: filesUploadingList.length\n                }\n            }}\n        </span>\n\n        <span\n            class=\"adf-upload-dialog__title\"\n            *ngIf=\"uploadList.isUploadCancelled()\">\n            {{ 'FILE_UPLOAD.MESSAGES.UPLOAD_CANCELED' | translate }}\n        </span>\n    </header>\n\n    <section class=\"adf-upload-dialog__info\"\n        *ngIf=\"totalErrors\">\n        {{\n            (totalErrors > 1\n                 ? 'FILE_UPLOAD.MESSAGES.UPLOAD_ERRORS'\n                 : 'FILE_UPLOAD.MESSAGES.UPLOAD_ERROR')\n                 | translate: { total: totalErrors }\n        }}\n    </section>\n\n    <section class=\"adf-upload-dialog__content\"\n        [class.adf-upload-dialog--padding]=\"isConfirmation\">\n        <adf-file-uploading-list\n            class=\"adf-file-uploading-list\"\n            [class.adf-upload-dialog--hide]=\"isConfirmation\"\n            #uploadList\n            [files]=\"filesUploadingList\">\n                <ng-template let-file=\"$implicit\">\n                     <adf-file-uploading-list-row\n                        [file]=\"file\"\n                        (cancel)=\"uploadList.cancelFile(file)\" />\n                </ng-template>\n        </adf-file-uploading-list>\n\n        <div\n            aria-live=\"polite\"\n            aria-labelledby=\"confirmationTitle\"\n            aria-describedby=\"confirmationDescription\"\n            class=\"adf-upload-dialog__confirmation\"\n            [class.adf-upload-dialog--hide]=\"!isConfirmation\">\n                <p role=\"heading\" aria-level=\"2\" id=\"confirmationTitle\" class=\"adf-upload-dialog__confirmation--title\">\n                    {{ 'ADF_FILE_UPLOAD.CONFIRMATION.MESSAGE.TITLE' | translate }}\n                </p>\n                <p id=\"confirmationDescription\" class=\"adf-upload-dialog__confirmation--text\">\n                    {{ 'ADF_FILE_UPLOAD.CONFIRMATION.MESSAGE.TEXT' | translate }}\n                </p>\n        </div>\n    </section>\n\n    <footer class=\"adf-upload-dialog__actions\" *ngIf=\"!isConfirmation\">\n        <button\n            id=\"adf-upload-dialog-cancel-all\"\n            [attr.aria-label]=\"'ADF_FILE_UPLOAD.ARIA-LABEL.STOP_ALL' | translate\"\n            color=\"primary\"\n            mat-button\n            *ngIf=\"canShowCancelAll()\"\n            (click)=\"toggleConfirmation()\"\n        >{{ 'ADF_FILE_UPLOAD.BUTTON.STOP_ALL' | translate }}</button>\n\n        <button\n            id=\"adf-upload-dialog-close\"\n            [attr.aria-label]=\"'ADF_FILE_UPLOAD.ARIA-LABEL.DIALOG_CLOSE' | translate\"\n            *ngIf=\"canCloseDialog()\"\n            mat-button\n            color=\"primary\"\n            (click)=\"close()\"\n        >{{ 'ADF_FILE_UPLOAD.BUTTON.CLOSE' | translate }}</button>\n    </footer>\n\n    <footer class=\"adf-upload-dialog__actions\"\n            *ngIf=\"isConfirmation\" cdkTrapFocus cdkTrapFocusAutoCapture>\n        <button\n            id=\"adf-upload-dialog-cancel\"\n            [attr.aria-label]=\"'ADF_FILE_UPLOAD.ARIA-LABEL.CONFIRMATION.CANCEL' | translate\"\n            mat-button\n            (click)=\"cancelAllUploads()\"\n        >{{ 'ADF_FILE_UPLOAD.CONFIRMATION.BUTTON.CANCEL' | translate }}</button>\n\n        <button\n            id=\"adf-upload-dialog-confirm\"\n            [attr.aria-label]=\"'ADF_FILE_UPLOAD.ARIA-LABEL.CONFIRMATION.CONTINUE' | translate\"\n            mat-button\n            color=\"primary\"\n            (click)=\"toggleConfirmation()\"\n        >{{ 'ADF_FILE_UPLOAD.CONFIRMATION.BUTTON.CONTINUE' | translate }}</button>\n    </footer>\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 { SearchCategory } from '../../search/models/search-category.interface';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class ContentNodeSelectorPanelService {\n    propertyTypes = ['d:text', 'd:date', 'd:datetime'];\n    modelPropertyTypeToSearchFilterTypeMap = new Map<string, string>();\n    customModels: any[];\n\n    constructor() {\n        this.modelPropertyTypeToSearchFilterTypeMap.set(this.propertyTypes[0], 'text');\n        this.modelPropertyTypeToSearchFilterTypeMap.set(this.propertyTypes[1], 'date-range');\n        this.modelPropertyTypeToSearchFilterTypeMap.set(this.propertyTypes[2], 'datetime-range');\n    }\n\n    convertCustomModelPropertiesToSearchCategories(): SearchCategory[] {\n        const searchConfig: SearchCategory[] = [];\n        this.customModels?.forEach((propertyModel) => {\n            searchConfig.push(this.convertModelPropertyIntoSearchFilter(propertyModel));\n        });\n\n        return searchConfig;\n    }\n\n    convertModelPropertyIntoSearchFilter(modelProperty: any): SearchCategory {\n        let filterSearch: SearchCategory;\n        if (this.isTypeSupported(modelProperty.dataType)) {\n            filterSearch = {\n                id: modelProperty.prefixedName,\n                name: modelProperty.prefixedName,\n                expanded: false,\n                enabled: true,\n                component: {\n                    selector: this.modelPropertyTypeToSearchFilterTypeMap.get(modelProperty.dataType),\n                    settings: {\n                        pattern: `${modelProperty.prefixedName}:'(.*?)'`,\n                        field: `${modelProperty.prefixedName}`,\n                        placeholder: `Enter the ${modelProperty.name}`\n                    }\n                }\n            };\n        }\n        return filterSearch;\n    }\n\n    isTypeSupported(dataType: string): boolean {\n        return this.propertyTypes.includes(dataType);\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, Directive, ElementRef } from '@angular/core';\n\n@Directive({\n    standalone: true,\n    selector: '[adf-auto-focus]'\n})\nexport class AutoFocusDirective implements AfterContentInit {\n    public constructor(private el: ElementRef) {}\n\n    public ngAfterContentInit() {\n        setTimeout(() => {\n            this.el.nativeElement.focus();\n        }, 100);\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, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport { InfiniteSelectScrollDirective, AuthenticationService } from '@alfresco/adf-core';\nimport { SitePaging, SiteEntry, Site } from '@alfresco/js-api';\nimport { MatSelectChange, MatSelectModule } from '@angular/material/select';\nimport { LiveAnnouncer } from '@angular/cdk/a11y';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { SitesService } from '../../common/services/sites.service';\nimport { CommonModule } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\n\n/* eslint-disable no-shadow */\n/* eslint-disable @typescript-eslint/naming-convention */\n\nexport enum Relations {\n    Members = 'members',\n    Containers = 'containers'\n}\n\n@Component({\n    selector: 'adf-sites-dropdown',\n    standalone: true,\n    imports: [CommonModule, TranslateModule, MatFormFieldModule, MatSelectModule, InfiniteSelectScrollDirective],\n    templateUrl: './sites-dropdown.component.html',\n    encapsulation: ViewEncapsulation.None,\n    host: { class: 'adf-sites-dropdown' }\n})\nexport class DropdownSitesComponent implements OnInit {\n    /** Hide the \"My Files\" option. */\n    @Input()\n    hideMyFiles: boolean = false;\n\n    /**\n     * A custom list of sites to be displayed by the dropdown. If no value\n     * is given, the sites of the current user are displayed by default. A\n     * list of objects only with properties 'title' and 'guid' is enough to\n     * be able to display the dropdown.\n     */\n    @Input()\n    siteList: SitePaging = null;\n\n    /** Id of the selected site */\n    @Input()\n    value: string = null;\n\n    /**\n     * Text or a translation key to act as a placeholder. Default value is the\n     * key \"DROPDOWN.PLACEHOLDER_LABEL\".\n     */\n    @Input()\n    placeholder: string = 'DROPDOWN.PLACEHOLDER_LABEL';\n\n    /**\n     * Filter for the results of the sites query. Possible values are\n     * \"members\" and \"containers\". When \"members\" is used, the site list\n     * will be restricted to the sites that the user is a member of.\n     */\n    @Input()\n    relations: string;\n\n    /**\n     * Emitted when the user selects a site. When the default option is selected,\n     * an empty model is emitted.\n     */\n    @Output()\n    change = new EventEmitter<SiteEntry>();\n\n    @Output()\n    error = new EventEmitter<any>();\n\n    private loading = true;\n    private skipCount = 0;\n\n    selected: SiteEntry = null;\n    MY_FILES_VALUE = '-my-';\n\n    constructor(\n        private authService: AuthenticationService,\n        private sitesService: SitesService,\n        private liveAnnouncer: LiveAnnouncer,\n        private translateService: TranslateService\n    ) {}\n\n    ngOnInit() {\n        if (!this.siteList) {\n            this.loadSiteList();\n        }\n    }\n\n    loadAllOnScroll() {\n        if (this.isInfiniteScrollingEnabled()) {\n            this.loading = true;\n            this.loadSiteList();\n        }\n    }\n\n    selectedSite(event: MatSelectChange) {\n        this.liveAnnouncer.announce(\n            this.translateService.instant('ADF_DROPDOWN.SELECTION_ARIA_LABEL', {\n                placeholder: this.translateService.instant(this.placeholder),\n                selectedOption: this.translateService.instant(event.value.entry.title)\n            })\n        );\n        this.change.emit(event.value);\n    }\n\n    private loadSiteList() {\n        const extendedOptions: any = {\n            skipCount: this.skipCount,\n            maxItems: InfiniteSelectScrollDirective.MAX_ITEMS\n        };\n\n        this.skipCount += InfiniteSelectScrollDirective.MAX_ITEMS;\n\n        if (this.relations) {\n            extendedOptions.relations = [this.relations];\n        }\n\n        this.sitesService.getSites(extendedOptions).subscribe(\n            (sitePaging: SitePaging) => {\n                if (!this.siteList) {\n                    this.siteList = this.relations === Relations.Members ? this.filteredResultsByMember(sitePaging) : sitePaging;\n\n                    if (!this.hideMyFiles) {\n                        const siteEntry = new SiteEntry({\n                            entry: new Site({ id: this.MY_FILES_VALUE, guid: this.MY_FILES_VALUE, title: 'DROPDOWN.MY_FILES_OPTION' })\n                        });\n\n                        this.siteList.list.entries.unshift(siteEntry);\n\n                        if (!this.value) {\n                            this.value = this.MY_FILES_VALUE;\n                        }\n                    }\n                } else {\n                    const siteList: SitePaging = this.relations === Relations.Members ? this.filteredResultsByMember(sitePaging) : sitePaging;\n\n                    this.siteList.list.entries = this.siteList.list.entries.concat(siteList.list.entries);\n                    this.siteList.list.pagination = sitePaging.list.pagination;\n                }\n\n                this.selected = this.siteList.list.entries.find((site: SiteEntry) => site.entry.id === this.value);\n\n                if (this.value && !this.selected && this.siteListHasMoreItems()) {\n                    this.loadSiteList();\n                }\n\n                this.loading = false;\n            },\n            (error) => {\n                this.error.emit(error);\n            }\n        );\n    }\n\n    showLoading(): boolean {\n        return this.loading && this.siteListHasMoreItems();\n    }\n\n    isInfiniteScrollingEnabled(): boolean {\n        return !this.loading && this.siteListHasMoreItems();\n    }\n\n    private siteListHasMoreItems(): boolean {\n        return this.siteList?.list.pagination?.hasMoreItems;\n    }\n\n    private filteredResultsByMember(sites: SitePaging): SitePaging {\n        const loggedUserName = this.authService.getEcmUsername();\n        sites.list.entries = sites.list.entries.filter((site) => this.isCurrentUserMember(site, loggedUserName));\n        return sites;\n    }\n\n    private isCurrentUserMember(site: SiteEntry, loggedUserName: string): boolean {\n        return (\n            site.entry.visibility === 'PUBLIC' ||\n            !!site.relations.members.list.entries.find((member) => member.entry.id.toLowerCase() === loggedUserName.toLowerCase())\n        );\n    }\n}\n","<div id=\"site-dropdown-container\" class=\"adf-site-dropdown-container\">\n    <mat-form-field class=\"adf-sites-dropdown-form-field\" appearance=\"fill\" subscriptSizing=\"dynamic\">\n        <mat-label>{{ 'NODE_SELECTOR.LOCATION' | translate }}</mat-label>\n        <mat-select\n            adf-infinite-select-scroll\n            (scrollEnd)=\"loadAllOnScroll()\"\n            #siteSelect\n            data-automation-id=\"site-my-files-option\"\n            class=\"adf-site-dropdown-list-element\"\n            id=\"site-dropdown\"\n            placeholder=\"{{placeholder | translate}}\"\n            [(value)]=\"selected\"\n            placeholder=\"{{placeholder | translate}}\"\n            (selectionChange)=\"selectedSite($event)\">\n            <mat-select-trigger class=\"adf-sites-dropdown-select-trigger\">\n                {{ selected?.entry.title | translate}}\n            </mat-select-trigger>\n            <mat-option *ngFor=\"let site of siteList?.list.entries;\" [value]=\"site\">\n                {{ site.entry.title | translate}}\n            </mat-option>\n            <mat-option *ngIf=\"showLoading()\" disabled=\"true\" data-automation-id=\"site-loading\">\n                {{ 'ADF_DROPDOWN.LOADING' | translate}}\n            </mat-option>\n        </mat-select>\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 { Input, ChangeDetectionStrategy, Component, OnInit, ViewEncapsulation } from '@angular/core';\nimport { DataRow } from '@alfresco/adf-core';\n\n@Component({\n    selector: 'adf-name-location-cell',\n    standalone: true,\n    template: `\n        <div class=\"adf-name-location-cell-name adf-datatable-cell-value\" [title]=\"name\">{{ name }}</div>\n        <div class=\"adf-name-location-cell-location adf-datatable-cell-value\" [title]=\"path\">{{ path }}</div>\n    `,\n    styleUrls: ['./name-location-cell.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: { class: 'adf-name-location-cell adf-datatable-content-cell' }\n})\nexport class NameLocationCellComponent implements OnInit {\n    name: string = '';\n    path: string = '';\n\n    @Input()\n    row: DataRow;\n\n    ngOnInit() {\n        if (this.row) {\n            this.name = this.row.getValue('name');\n\n            const fullPath = this.row.getValue('path');\n            if (fullPath) {\n                this.path = fullPath.name || '';\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, Input, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { SearchWidgetContainerComponent } from '../../search-widget-container/search-widget-container.component';\nimport { SearchCategory } from '../../../models/search-category.interface';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n    selector: 'adf-search-filter-card',\n    standalone: true,\n    imports: [CommonModule, SearchWidgetContainerComponent, TranslateModule, MatButtonModule],\n    templateUrl: './search-filter-card.component.html',\n    encapsulation: ViewEncapsulation.None\n})\nexport class SearchFilterCardComponent {\n    @Input({ required: true })\n    category: SearchCategory;\n\n    @ViewChild(SearchWidgetContainerComponent, { static: false })\n    widgetContainerComponent: SearchWidgetContainerComponent;\n\n    clear() {\n        this.widgetContainerComponent.resetInnerWidget();\n    }\n\n    apply() {\n        this.widgetContainerComponent.applyInnerWidget();\n    }\n}\n","<div class=\"adf-search-filter-card\">\n    <adf-search-widget-container\n        [id]=\"category.id\"\n        [selector]=\"category.component.selector\"\n        [settings]=\"category.component.settings\" />\n    <div\n        *ngIf=\"!category?.component?.settings?.hideDefaultAction\"\n        class=\"adf-search-filter-card-actions\"\n    >\n        <button mat-button class=\"adf-search-action-button\" (click)=\"clear()\" id=\"clear-filter-button\">\n            {{ 'SEARCH.FILTER.BUTTONS.CLEAR' | translate }}\n        </button>\n        <button mat-flat-button class=\"adf-search-action-button\" color=\"primary\" (click)=\"apply()\" id=\"apply-filter-button\">\n            {{ 'SEARCH.FILTER.BUTTONS.APPLY' | translate }}\n        </button>\n    </div>\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 { Directive, HostListener } from '@angular/core';\nimport { SearchFacetFiltersService } from '../services/search-facet-filters.service';\n\n@Directive({\n    selector: '[adf-reset-search]',\n    standalone: true\n})\nexport class ResetSearchDirective {\n    @HostListener('click')\n    onClick() {\n        this.filterService.reset();\n    }\n\n    constructor(private filterService: SearchFacetFiltersService) {}\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY 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, ViewEncapsulation } from '@angular/core';\nimport { FacetField } from '../../models/facet-field.interface';\nimport { MatCheckboxChange, MatCheckboxModule } from '@angular/material/checkbox';\nimport { FacetFieldBucket } from '../../models/facet-field-bucket.interface';\nimport { SearchQueryBuilderService } from '../../services/search-query-builder.service';\nimport { SearchFacetFiltersService } from '../../services/search-facet-filters.service';\nimport { FacetWidget } from '../../models/facet-widget.interface';\nimport { TranslationService } from '@alfresco/adf-core';\nimport { Subject } from 'rxjs';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n    selector: 'adf-search-facet-field',\n    standalone: true,\n    imports: [CommonModule, MatButtonModule, MatIconModule, MatFormFieldModule, MatInputModule, TranslateModule, FormsModule, MatCheckboxModule],\n    templateUrl: './search-facet-field.component.html',\n    styleUrls: ['./search-facet-field.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class SearchFacetFieldComponent implements FacetWidget {\n    private queryBuilder = inject(SearchQueryBuilderService);\n    private searchFacetFiltersService = inject(SearchFacetFiltersService);\n    private translationService = inject(TranslationService);\n\n    @Input({ required: true })\n    field: FacetField;\n\n    displayValue$: Subject<string> = new Subject<string>();\n\n    get canUpdateOnChange() {\n        return this.field.settings?.allowUpdateOnChange ?? true;\n    }\n\n    onToggleBucket(event: MatCheckboxChange, field: FacetField, bucket: FacetFieldBucket) {\n        if (event && bucket) {\n            if (event.checked) {\n                this.selectFacetBucket(field, bucket);\n            } else {\n                this.unselectFacetBucket(field, bucket);\n            }\n        }\n    }\n\n    selectFacetBucket(field: FacetField, bucket: FacetFieldBucket) {\n        if (bucket) {\n            bucket.checked = true;\n            this.queryBuilder.addUserFacetBucket(field.field, bucket);\n            this.searchFacetFiltersService.updateSelectedBuckets();\n            if (this.canUpdateOnChange) {\n                this.updateDisplayValue();\n                this.queryBuilder.update();\n            }\n        }\n    }\n\n    unselectFacetBucket(field: FacetField, bucket: FacetFieldBucket) {\n        if (bucket) {\n            bucket.checked = false;\n            this.queryBuilder.removeUserFacetBucket(field.field, bucket);\n            this.searchFacetFiltersService.updateSelectedBuckets();\n            if (this.canUpdateOnChange) {\n                this.updateDisplayValue();\n                this.queryBuilder.update();\n            }\n        }\n    }\n\n    canResetSelectedBuckets(field: FacetField): boolean {\n        if (field?.buckets) {\n            return field.buckets.items.some((bucket) => bucket.checked);\n        }\n        return false;\n    }\n\n    resetSelectedBuckets(field: FacetField) {\n        if (field?.buckets) {\n            for (const bucket of field.buckets.items) {\n                bucket.checked = false;\n                this.queryBuilder.removeUserFacetBucket(field.field, bucket);\n            }\n            this.searchFacetFiltersService.updateSelectedBuckets();\n            if (this.canUpdateOnChange) {\n                this.queryBuilder.update();\n            }\n        }\n    }\n\n    getBucketCountDisplay(bucket: FacetFieldBucket): string {\n        return bucket.count === null ? '' : `(${bucket.count})`;\n    }\n\n    updateDisplayValue(): void {\n        if (!this.field.buckets?.items) {\n            this.displayValue$.next('');\n        } else {\n            const displayValue = this.field.buckets?.items\n                ?.filter((item) => item.checked)\n                .map((item) => this.translationService.instant(item.display || item.label))\n                .join(', ');\n            this.displayValue$.next(displayValue);\n        }\n    }\n\n    reset(): void {\n        this.resetSelectedBuckets(this.field);\n        this.updateDisplayValue();\n        this.queryBuilder.update();\n    }\n\n    submitValues(): void {\n        this.updateDisplayValue();\n        this.queryBuilder.update();\n    }\n}\n","<div class=\"adf-search-filter-facet\">\n    <div class=\"adf-facet-result-filter\">\n        <div class=\"adf-facet-search-container\">\n            <button mat-icon-button class=\"adf-facet-search-icon\" tabindex=\"-1\">\n                <mat-icon class=\"adf-search-field-icon\">search</mat-icon>\n            </button>\n            <mat-form-field class=\"adf-facet-search-field\" subscriptSizing=\"dynamic\">\n                <input\n                    matInput\n                    placeholder=\"{{ 'SEARCH.FILTER.ACTIONS.SEARCH' | translate }}\"\n                    [attr.data-automation-id]=\"'facet-result-filter-' + field.label\"\n                    [(ngModel)]=\"field.buckets.filterText\"\n                />\n                <button\n                    *ngIf=\"field.buckets.filterText\"\n                    matSuffix\n                    mat-icon-button\n                    [attr.title]=\"'SEARCH.FILTER.BUTTONS.CLEAR' | translate\"\n                    (click)=\"field.buckets.filterText = ''\"\n                >\n                    <mat-icon role=\"button\" [attr.aria-label]=\"'SEARCH.FILTER.BUTTONS.CLEAR' | translate\">clear</mat-icon>\n                </button>\n            </mat-form-field>\n        </div>\n    </div>\n\n    <div class=\"adf-checklist\">\n        <mat-checkbox\n            *ngFor=\"let bucket of field.buckets\"\n            [checked]=\"bucket.checked\"\n            [attr.data-automation-id]=\"'checkbox-' + field.label + '-' + (bucket.display || bucket.label)\"\n            (change)=\"onToggleBucket($event, field, bucket)\"\n            class=\"adf-search-filter-facet-checkbox\"\n        >\n            <div\n                title=\"{{ bucket.display || bucket.label | translate }} {{ getBucketCountDisplay(bucket) }}\"\n                class=\"adf-facet-label\"\n                [class.adf-search-filter-facet-checkbox-checked]=\"bucket.checked\"\n            >\n                {{ bucket.display || bucket.label | translate }} {{ getBucketCountDisplay(bucket) }}\n            </div>\n        </mat-checkbox>\n    </div>\n\n    <div class=\"adf-facet-buttons\" *ngIf=\"field.buckets.fitsPage && !field.settings?.hideDefaultAction\">\n        <button *ngIf=\"canResetSelectedBuckets(field)\" mat-button color=\"primary\" (click)=\"resetSelectedBuckets(field)\">\n            {{ 'SEARCH.FILTER.ACTIONS.CLEAR-ALL' | translate }}\n        </button>\n    </div>\n\n    <div class=\"adf-facet-buttons\" *ngIf=\"!field.buckets.fitsPage\">\n        <button\n            mat-icon-button\n            *ngIf=\"canResetSelectedBuckets(field)\"\n            title=\"{{ 'SEARCH.FILTER.ACTIONS.CLEAR-ALL' | translate }}\"\n            (click)=\"resetSelectedBuckets(field)\"\n        >\n            <mat-icon>clear</mat-icon>\n        </button>\n        <button\n            mat-icon-button\n            *ngIf=\"field.buckets.canShowLessItems\"\n            (click)=\"field.buckets.showLessItems()\"\n            title=\"{{ 'SEARCH.FILTER.ACTIONS.SHOW-LESS' | translate }}\"\n        >\n            <mat-icon>keyboard_arrow_up</mat-icon>\n        </button>\n        <button\n            mat-icon-button\n            *ngIf=\"field.buckets.canShowMoreItems\"\n            (click)=\"field.buckets.showMoreItems()\"\n            title=\"{{ 'SEARCH.FILTER.ACTIONS.SHOW-MORE' | translate }}\"\n        >\n            <mat-icon>keyboard_arrow_down</mat-icon>\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\nexport * from './search-facet-field.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 { Component, EventEmitter, Output, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatDividerModule } from '@angular/material/divider';\n\n@Component({\n    selector: 'adf-search-filter-menu-card',\n    standalone: true,\n    imports: [CommonModule, MatButtonModule, TranslateModule, MatIconModule, MatDividerModule],\n    templateUrl: './search-filter-menu-card.component.html',\n    styleUrls: ['./search-filter-menu-card.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class SearchFilterMenuCardComponent {\n    @Output()\n    close = new EventEmitter();\n\n    onClose() {\n        this.close.emit();\n    }\n}\n","<div class=\"adf-search-filter-menu-card\">\n    <div class=\"adf-search-filter-title\">\n        <ng-content select=\"filter-title\" />\n        <button mat-icon-button\n            class=\"adf-search-filter-title-action\"\n            aria-hidden=\"false\"\n            (click)=\"onClose()\"\n            [title]=\"'SEARCH.FILTER.BUTTONS.CLOSE' | translate\">\n            <mat-icon>close</mat-icon>\n        </button>\n    </div>\n\n    <mat-divider />\n\n    <div class=\"adf-search-filter-content\">\n        <ng-content select=\"filter-content\" />\n    </div>\n\n    <mat-divider />\n\n    <div class=\"adf-search-filter-actions\">\n        <ng-content select=\"filter-actions\" />\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, ElementRef, Input, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { ConfigurableFocusTrap, ConfigurableFocusTrapFactory } from '@angular/cdk/a11y';\nimport { FacetField } from '../../../models/facet-field.interface';\nimport { MatMenuModule, MatMenuTrigger } from '@angular/material/menu';\nimport { SearchFacetFieldComponent } from '../../search-facet-field/search-facet-field.component';\nimport { CommonModule } from '@angular/common';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { SearchFilterMenuCardComponent } from '../search-filter-menu-card/search-filter-menu-card.component';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n    selector: 'adf-search-facet-chip',\n    standalone: true,\n    imports: [\n        CommonModule,\n        MatChipsModule,\n        MatMenuModule,\n        TranslateModule,\n        MatIconModule,\n        SearchFilterMenuCardComponent,\n        MatButtonModule,\n        SearchFacetFieldComponent\n    ],\n    templateUrl: './search-facet-chip.component.html',\n    styleUrls: ['./search-facet-chip.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class SearchFacetChipComponent {\n    @Input({ required: true })\n    field: FacetField;\n\n    @ViewChild('menuContainer', { static: false })\n    menuContainer: ElementRef;\n\n    @ViewChild('menuTrigger', { static: false })\n    menuTrigger: MatMenuTrigger;\n\n    @ViewChild(SearchFacetFieldComponent, { static: false })\n    facetFieldComponent: SearchFacetFieldComponent;\n\n    focusTrap: ConfigurableFocusTrap;\n    chipIcon = 'keyboard_arrow_down';\n\n    constructor(private focusTrapFactory: ConfigurableFocusTrapFactory) {}\n\n    onMenuOpen() {\n        if (this.menuContainer && !this.focusTrap) {\n            this.focusTrap = this.focusTrapFactory.create(this.menuContainer.nativeElement);\n        }\n        this.chipIcon = 'keyboard_arrow_up';\n    }\n\n    onClosed() {\n        this.focusTrap.destroy();\n        this.focusTrap = null;\n        this.chipIcon = 'keyboard_arrow_down';\n    }\n\n    onRemove() {\n        this.facetFieldComponent.reset();\n        this.menuTrigger.closeMenu();\n    }\n\n    onApply() {\n        this.facetFieldComponent.submitValues();\n        this.menuTrigger.closeMenu();\n    }\n\n    onEnterKeydown(): void {\n        if (this.isPopulated()) {\n            if (!this.menuTrigger.menuOpen) {\n                this.menuTrigger.openMenu();\n            } else {\n                this.menuTrigger.closeMenu();\n            }\n        }\n    }\n\n    onEscKeydown() {\n        if (this.menuTrigger.menuOpen) {\n            this.menuTrigger.closeMenu();\n        }\n    }\n\n    isPopulated(): boolean {\n        return this.field.buckets?.items.length > 0;\n    }\n}\n","<mat-chip [attr.data-automation-id]=\"'search-filter-chip-' + field.label\"\n          [disableRipple]=\"true\"\n          class=\"adf-search-filter-chip adf-search-filter-facet-chip\"\n          [class.adf-search-toggle-chip]=\"(facetField.displayValue$ | async) || menuTrigger.menuOpen\"\n          [disabled]=\"!isPopulated()\"\n          tabindex=\"0\"\n          [matMenuTriggerFor]=\"menu\"\n          (menuOpened)=\"onMenuOpen()\"\n          (keydown.enter)=\"onEnterKeydown()\"\n          (keydown.escape)=\"onEscKeydown()\"\n          [attr.title]=\"facetField.displayValue$ | async\"\n          #menuTrigger=\"matMenuTrigger\">\n\n    <span class=\"adf-search-filter-placeholder\">\n        <span class=\"adf-search-filter-ellipsis\">{{ field.label | translate }}:</span>\n    </span>\n\n    <span class=\"adf-search-filter-ellipsis adf-filter-value\" *ngIf=\"facetField.displayValue$ | async as displayValue; else showAny\">\n        &nbsp; {{ displayValue | translate }}\n    </span>\n    <ng-template #showAny><span class=\"adf-search-filter-ellipsis adf-filter-value\">&nbsp;{{ 'SEARCH.FILTER.ANY' | translate }}</span></ng-template>\n    <mat-icon *ngIf=\"isPopulated(); else disabledIcon\">{{ chipIcon }}</mat-icon>\n    <ng-template #disabledIcon>\n        <mat-icon>remove</mat-icon>\n    </ng-template>\n</mat-chip>\n\n<mat-menu #menu=\"matMenu\" backdropClass=\"adf-search-filter-chip-menu\" (closed)=\"onClosed()\">\n    <div #menuContainer [attr.data-automation-id]=\"'search-field-' + field.label\">\n        <adf-search-filter-menu-card (click)=\"$event.stopPropagation()\"\n                                     (keydown.tab)=\"$event.stopPropagation();\"\n                                     (keydown.shift.tab)=\"$event.stopPropagation()\"\n                                     (close)=\"menuTrigger.closeMenu()\">\n            <ng-container ngProjectAs=\"filter-title\">\n                {{ field.label | translate }}\n            </ng-container>\n            <ng-container ngProjectAs=\"filter-content\">\n                <adf-search-facet-field [field]=\"field\" #facetField />\n            </ng-container>\n            <ng-container ngProjectAs=\"filter-actions\">\n                <button mat-button class=\"adf-search-action-button\" (click)=\"onRemove()\" id=\"cancel-filter-button\">\n                    {{ 'SEARCH.FILTER.BUTTONS.CLEAR' | translate }}\n                </button>\n                <button mat-flat-button class=\"adf-search-action-button\" color=\"primary\" (click)=\"onApply()\" id=\"apply-filter-button\">\n                    {{ 'SEARCH.FILTER.BUTTONS.APPLY' | translate }}\n                </button>\n            </ng-container>\n        </adf-search-filter-menu-card>\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\nexport * from './search-filter-tab.directive';\nexport * from './search-filter-tabbed.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 { Component, DestroyRef, EventEmitter, inject, Input, OnChanges, OnInit, Output, SimpleChanges, ViewEncapsulation } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { SearchQueryBuilderService } from '../../../services/search-query-builder.service';\nimport { FacetWidget } from '../../../models/facet-widget.interface';\nimport { TranslationService } from '@alfresco/adf-core';\nimport { AutocompleteOption } from '../../../models/autocomplete-option.interface';\nimport { TabbedFacetField } from '../../../models/tabbed-facet-field.interface';\nimport { SearchFacetFiltersService } from '../../../services/search-facet-filters.service';\nimport { CommonModule } from '@angular/common';\nimport { SearchChipAutocompleteInputComponent } from '../../search-chip-autocomplete-input';\nimport { SearchFilterTabbedComponent } from '../../search-filter-tabbed/search-filter-tabbed.component';\nimport { SearchFilterTabDirective } from '../../search-filter-tabbed';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n    selector: 'adf-search-facet-tabbed-content',\n    standalone: true,\n    imports: [CommonModule, SearchChipAutocompleteInputComponent, SearchFilterTabbedComponent, SearchFilterTabDirective],\n    templateUrl: './search-facet-tabbed-content.component.html',\n    encapsulation: ViewEncapsulation.None\n})\nexport class SearchFacetTabbedContentComponent implements OnInit, OnChanges, FacetWidget {\n    private queryBuilder = inject(SearchQueryBuilderService);\n    private translationService = inject(TranslationService);\n    private searchFacetFiltersService = inject(SearchFacetFiltersService);\n\n    @Input({ required: true })\n    tabbedFacet: TabbedFacetField;\n\n    @Input()\n    onReset$: Observable<void>;\n\n    @Input()\n    onApply$: Observable<void>;\n\n    @Output()\n    isPopulated = new EventEmitter<boolean>();\n\n    @Output()\n    displayValue$ = new EventEmitter<string>();\n\n    private resetSubject$ = new Subject<void>();\n\n    reset$ = this.resetSubject$.asObservable();\n    chipIcon = 'keyboard_arrow_down';\n    autocompleteOptions = {};\n    selectedOptions = {};\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    ngOnInit() {\n        this.tabbedFacet.fields.forEach((field) => {\n            Object.defineProperty(this.selectedOptions, field, {\n                value: [],\n                writable: true\n            });\n        });\n\n        this.onReset$?.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.reset());\n        this.onApply$?.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.submitValues());\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        if (changes.tabbedFacet) {\n            this.isPopulated.emit(this.tabbedFacet.fields.some((field) => this.tabbedFacet.facets[field]?.buckets.items.length > 0));\n            this.tabbedFacet.fields.forEach((field) => {\n                const options: AutocompleteOption[] = this.tabbedFacet.facets[field].buckets.items.map((item) => ({ value: item.display }));\n                Object.defineProperty(this.autocompleteOptions, field, {\n                    value: options,\n                    writable: true\n                });\n            });\n        }\n    }\n\n    onOptionsChange(selectedOptions: AutocompleteOption[], field: string) {\n        this.selectedOptions[field] = selectedOptions.map((selectedOption) => selectedOption.value);\n        this.isPopulated.emit(this.tabbedFacet.fields.some((facetField) => this.selectedOptions[facetField].length > 0));\n        this.updateDisplayValue();\n        this.updateUserFacetBuckets();\n    }\n\n    updateDisplayValue() {\n        let displayValue = '';\n        this.tabbedFacet.fields.forEach((field) => {\n            if (this.selectedOptions[field].length > 0) {\n                const stackedOptions = this.selectedOptions[field].join(', ');\n                displayValue += `${this.translationService.instant(this.tabbedFacet.facets[field].label + '_LABEL')}: ${stackedOptions} `;\n            }\n        });\n        this.displayValue$.emit(displayValue);\n    }\n\n    reset() {\n        this.resetSubject$.next();\n        this.updateUserFacetBuckets();\n        this.updateDisplayValue();\n        this.queryBuilder.update();\n    }\n\n    submitValues() {\n        this.updateUserFacetBuckets();\n        this.searchFacetFiltersService.updateSelectedBuckets();\n        this.updateDisplayValue();\n        this.queryBuilder.update();\n    }\n\n    optionComparator(option1: AutocompleteOption, option2: AutocompleteOption): boolean {\n        return option1.value.toUpperCase() === option2.value.toUpperCase();\n    }\n\n    private updateUserFacetBuckets() {\n        this.tabbedFacet.fields.forEach((field) => {\n            this.tabbedFacet.facets[field].buckets.items.forEach((item) => {\n                const matchedOption = this.selectedOptions[field].find((option) => option === item.display);\n                if (matchedOption) {\n                    item.checked = true;\n                    this.queryBuilder.addUserFacetBucket(field, item);\n                } else {\n                    item.checked = false;\n                    this.queryBuilder.removeUserFacetBucket(field, item);\n                }\n            });\n        });\n    }\n}\n","<adf-search-filter-tabbed>\n    <ng-container *ngFor=\"let field of tabbedFacet.fields\">\n        <adf-search-chip-autocomplete-input\n            *adf-search-filter-tab=\"tabbedFacet.facets[field]?.label\"\n            [autocompleteOptions]=\"autocompleteOptions[field]\"\n            [onReset$]=\"reset$\"\n            [allowOnlyPredefinedValues]=\"true\"\n            [compareOption]=\"optionComparator\"\n            (optionsChanged)=\"onOptionsChange($event, field)\" />\n    </ng-container>\n</adf-search-filter-tabbed>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY 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, ElementRef, Input, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { ConfigurableFocusTrap, ConfigurableFocusTrapFactory } from '@angular/cdk/a11y';\nimport { MatMenuModule, MatMenuTrigger } from '@angular/material/menu';\nimport { TabbedFacetField } from '../../../models/tabbed-facet-field.interface';\nimport { Subject } from 'rxjs';\nimport { CommonModule } from '@angular/common';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { SearchFacetTabbedContentComponent } from './search-facet-tabbed-content.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { SearchFilterMenuCardComponent } from '../search-filter-menu-card/search-filter-menu-card.component';\n\n@Component({\n    selector: 'adf-search-facet-chip-tabbed',\n    standalone: true,\n    imports: [\n        CommonModule,\n        MatChipsModule,\n        MatMenuModule,\n        TranslateModule,\n        MatIconModule,\n        SearchFacetTabbedContentComponent,\n        MatButtonModule,\n        SearchFilterMenuCardComponent\n    ],\n    templateUrl: './search-facet-chip-tabbed.component.html',\n    styleUrls: ['./search-facet-chip-tabbed.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class SearchFacetChipTabbedComponent {\n    @Input()\n    tabbedFacet: TabbedFacetField;\n\n    @ViewChild('menuContainer', { static: false })\n    menuContainer: ElementRef;\n\n    @ViewChild('menuTrigger', { static: false })\n    menuTrigger: MatMenuTrigger;\n\n    private resetSubject$ = new Subject<void>();\n    private applySubject$ = new Subject<void>();\n\n    displayValue = '';\n    reset$ = this.resetSubject$.asObservable();\n    apply$ = this.applySubject$.asObservable();\n    focusTrap: ConfigurableFocusTrap;\n    chipIcon = 'keyboard_arrow_down';\n    isPopulated = false;\n\n    constructor(private focusTrapFactory: ConfigurableFocusTrapFactory, private changeDetectorRef: ChangeDetectorRef) {}\n\n    onMenuOpen() {\n        if (this.menuContainer && !this.focusTrap) {\n            this.focusTrap = this.focusTrapFactory.create(this.menuContainer.nativeElement);\n        }\n        this.chipIcon = 'keyboard_arrow_up';\n    }\n\n    onClosed() {\n        this.focusTrap.destroy();\n        this.focusTrap = null;\n        this.chipIcon = 'keyboard_arrow_down';\n    }\n\n    onRemove() {\n        this.resetSubject$.next();\n        this.menuTrigger.closeMenu();\n    }\n\n    onApply() {\n        this.applySubject$.next();\n        this.menuTrigger.closeMenu();\n    }\n\n    onEnterKeydown() {\n        if (this.isPopulated) {\n            if (!this.menuTrigger.menuOpen) {\n                this.menuTrigger.openMenu();\n            } else {\n                this.menuTrigger.closeMenu();\n            }\n        }\n    }\n\n    onEscKeydown() {\n        if (this.menuTrigger.menuOpen) {\n            this.menuTrigger.closeMenu();\n        }\n    }\n\n    onIsPopulatedEventChange(isPopulated: boolean) {\n        this.isPopulated = isPopulated;\n        this.changeDetectorRef.detectChanges();\n    }\n}\n","<mat-chip [attr.data-automation-id]=\"'search-filter-chip-tabbed-' + tabbedFacet.label\"\n          [disableRipple]=\"true\"\n          class=\"adf-search-filter-chip-tabbed\"\n          [class.adf-search-toggle-chip]=\"displayValue || menuTrigger.menuOpen\"\n          [disabled]=\"!isPopulated\"\n          tabindex=\"0\"\n          [matMenuTriggerFor]=\"menu\"\n          (menuOpened)=\"onMenuOpen()\"\n          (keydown.enter)=\"onEnterKeydown()\"\n          (keydown.escape)=\"onEscKeydown()\"\n          [attr.title]=\"displayValue\"\n          #menuTrigger=\"matMenuTrigger\">\n\n    <span class=\"adf-search-filter-placeholder\">{{ tabbedFacet.label | translate }}:</span>\n\n    <span class=\"adf-search-filter-ellipsis adf-filter-value\" *ngIf=\"displayValue; else showAny\">\n        &nbsp; {{ displayValue | translate }}\n    </span>\n    <ng-template #showAny><span class=\"adf-search-filter-ellipsis adf-filter-value\">&nbsp;{{ 'SEARCH.FILTER.ANY' | translate }}</span></ng-template>\n    <mat-icon class=\"adf-search-filter-chip-icon\" *ngIf=\"isPopulated; else disabledIcon\">{{ chipIcon }}</mat-icon>\n    <ng-template #disabledIcon>\n        <mat-icon>remove</mat-icon>\n    </ng-template>\n</mat-chip>\n\n<mat-menu #menu=\"matMenu\" class=\"adf-search-widget-extra-width\" backdropClass=\"adf-search-filter-chip-menu\" (closed)=\"onClosed()\">\n    <div #menuContainer [attr.data-automation-id]=\"'search-field-' + tabbedFacet.label\">\n        <adf-search-filter-menu-card (click)=\"$event.stopPropagation()\"\n                                     (keydown.tab)=\"$event.stopPropagation();\"\n                                     (keydown.shift.tab)=\"$event.stopPropagation()\"\n                                     (close)=\"menuTrigger.closeMenu()\">\n            <ng-container ngProjectAs=\"filter-title\">\n                {{ tabbedFacet.label | translate }}\n            </ng-container>\n            <ng-container ngProjectAs=\"filter-content\">\n                <adf-search-facet-tabbed-content [tabbedFacet]=\"tabbedFacet\" (isPopulated)=\"onIsPopulatedEventChange($event)\"\n                                                 [onReset$]=\"reset$\" [onApply$]=\"apply$\" (displayValue$)=\"displayValue = $event\" />\n            </ng-container>\n            <ng-container ngProjectAs=\"filter-actions\">\n                <button mat-button class=\"adf-search-action-button\" (click)=\"onRemove()\" id=\"cancel-filter-button\">\n                    {{ 'SEARCH.FILTER.BUTTONS.CLEAR' | translate }}\n                </button>\n                <button mat-flat-button class=\"adf-search-action-button\" color=\"primary\" (click)=\"onApply()\" id=\"apply-filter-button\">\n                    {{ 'SEARCH.FILTER.BUTTONS.APPLY' | translate }}\n                </button>\n            </ng-container>\n        </adf-search-filter-menu-card>\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 { AfterViewInit, ChangeDetectorRef, Component, ElementRef, Input, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { SearchCategory } from '../../../models/search-category.interface';\nimport { ConfigurableFocusTrap, ConfigurableFocusTrapFactory } from '@angular/cdk/a11y';\nimport { MatMenuModule, MatMenuTrigger } from '@angular/material/menu';\nimport { SearchWidgetContainerComponent } from '../../search-widget-container/search-widget-container.component';\nimport { CommonModule } from '@angular/common';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { SearchFilterMenuCardComponent } from '../search-filter-menu-card/search-filter-menu-card.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { first } from 'rxjs/operators';\n\n@Component({\n    selector: 'adf-search-widget-chip',\n    standalone: true,\n    imports: [\n        CommonModule,\n        MatChipsModule,\n        MatMenuModule,\n        TranslateModule,\n        MatIconModule,\n        SearchFilterMenuCardComponent,\n        SearchWidgetContainerComponent,\n        MatButtonModule\n    ],\n    templateUrl: './search-widget-chip.component.html',\n    styles: [\n        `\n            .adf-search-widget-extra-width.adf-search-filter-chip-menu-panel {\n                max-width: 500px;\n            }\n        `\n    ],\n    encapsulation: ViewEncapsulation.None\n})\nexport class SearchWidgetChipComponent implements AfterViewInit {\n    @Input({ required: true })\n    category: SearchCategory;\n\n    @ViewChild('menuContainer', { static: false })\n    menuContainer: ElementRef;\n\n    @ViewChild('menuTrigger', { static: false })\n    menuTrigger: MatMenuTrigger;\n\n    @ViewChild(SearchWidgetContainerComponent, { static: false })\n    widgetContainerComponent: SearchWidgetContainerComponent;\n\n    focusTrap: ConfigurableFocusTrap;\n    chipIcon = 'keyboard_arrow_down';\n\n    constructor(private readonly cd: ChangeDetectorRef, private readonly focusTrapFactory: ConfigurableFocusTrapFactory) {}\n\n    ngAfterViewInit(): void {\n        this.widgetContainerComponent\n            ?.getDisplayValue()\n            .pipe(first())\n            .subscribe(() => {\n                this.cd.detectChanges();\n            });\n    }\n\n    onMenuOpen() {\n        if (this.menuContainer && !this.focusTrap) {\n            this.focusTrap = this.focusTrapFactory.create(this.menuContainer.nativeElement);\n        }\n        this.chipIcon = 'keyboard_arrow_up';\n    }\n\n    onClosed() {\n        this.focusTrap.destroy();\n        this.focusTrap = null;\n        this.chipIcon = 'keyboard_arrow_down';\n    }\n\n    onRemove() {\n        this.widgetContainerComponent.resetInnerWidget();\n        this.menuTrigger.closeMenu();\n    }\n\n    onApply() {\n        this.widgetContainerComponent.applyInnerWidget();\n        this.menuTrigger.closeMenu();\n    }\n\n    onEnterKeydown(): void {\n        if (!this.menuTrigger.menuOpen) {\n            this.menuTrigger.openMenu();\n        } else {\n            this.menuTrigger.closeMenu();\n        }\n    }\n\n    onEscKeydown() {\n        if (this.menuTrigger.menuOpen) {\n            this.menuTrigger.closeMenu();\n        }\n    }\n}\n","<mat-chip [attr.data-automation-id]=\"'search-filter-chip-' + category.name\"\n          [disableRipple]=\"true\"\n          class=\"adf-search-filter-chip\"\n          [class.adf-search-toggle-chip]=\"(widget.getDisplayValue() | async) || menuTrigger.menuOpen\"\n          tabindex=\"0\"\n          [matMenuTriggerFor]=\"menu\"\n          (menuOpened)=\"onMenuOpen()\"\n          (keydown.enter)=\"onEnterKeydown()\"\n          (keydown.escape)=\"onEscKeydown()\"\n          [attr.title]=\"widget.getDisplayValue() | async\"\n          #menuTrigger=\"matMenuTrigger\">\n    <span class=\"adf-search-filter-placeholder\">\n        <span class=\"adf-search-filter-ellipsis\">{{ category.name | translate }}:</span>\n    </span>\n    <span class=\"adf-search-filter-ellipsis adf-filter-value\" *ngIf=\"widget.getDisplayValue() | async as displayValue; else showAny\">\n        &nbsp;{{ displayValue | translate }}\n    </span>\n    <ng-template #showAny><span class=\"adf-search-filter-ellipsis adf-filter-value\">&nbsp;{{ 'SEARCH.FILTER.ANY' | translate }}</span></ng-template>\n    <mat-icon class=\"adf-search-filter-chip-icon\">{{ chipIcon }}</mat-icon>\n</mat-chip>\n\n<mat-menu #menu=\"matMenu\" class=\"adf-search-widget-extra-width\" backdropClass=\"adf-search-filter-chip-menu\" [class]=\"'adf-search-filter-chip-menu-panel adf-search-filter-chip-menu-panel-' + category.id\" (closed)=\"onClosed()\">\n    <div #menuContainer [attr.data-automation-id]=\"'search-field-' + category.name\">\n        <adf-search-filter-menu-card (click)=\"$event.stopPropagation()\"\n                                     (keydown.tab)=\"$event.stopPropagation();\"\n                                     (keydown.shift.tab)=\"$event.stopPropagation()\"\n                                     (close)=\"menuTrigger.closeMenu()\">\n\n            <ng-container ngProjectAs=\"filter-title\">\n                {{ category.name | translate }} <ng-container *ngIf=\"category.component.settings.unit\">({{category.component.settings.unit}})</ng-container>\n            </ng-container>\n\n            <ng-container ngProjectAs=\"filter-content\">\n                <adf-search-widget-container #widget\n                                             [id]=\"category.id\"\n                                             [selector]=\"category.component.selector\"\n                                             [settings]=\"category.component.settings\" />\n            </ng-container>\n\n            <ng-container ngProjectAs=\"filter-actions\">\n                <button mat-button class=\"adf-search-action-button\" (click)=\"onRemove()\" id=\"cancel-filter-button\">\n                    {{ 'SEARCH.FILTER.BUTTONS.CLEAR' | translate }}\n                </button>\n                <button mat-flat-button class=\"adf-search-action-button\" color=\"primary\" (click)=\"onApply()\" id=\"apply-filter-button\">\n                    {{ 'SEARCH.FILTER.BUTTONS.APPLY' | translate }}\n                </button>\n            </ng-container>\n        </adf-search-filter-menu-card>\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 { Component, DestroyRef, inject, Input, OnInit, ViewEncapsulation } from '@angular/core';\nimport { SearchFacetFiltersService } from '../../services/search-facet-filters.service';\nimport { SearchQueryBuilderService } from '../../services/search-query-builder.service';\nimport { FacetField, SearchCategory, TabbedFacetField } from '../../models';\nimport { CommonModule } from '@angular/common';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { SearchFacetChipTabbedComponent } from './search-facet-chip-tabbed/search-facet-chip-tabbed.component';\nimport { SearchFacetChipComponent } from './search-facet-chip/search-facet-chip.component';\nimport { SearchWidgetChipComponent } from './search-widget-chip/search-widget-chip.component';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n    selector: 'adf-search-filter-chips',\n    standalone: true,\n    imports: [CommonModule, MatChipsModule, TranslateModule, SearchFacetChipTabbedComponent, SearchFacetChipComponent, SearchWidgetChipComponent],\n    templateUrl: './search-filter-chips.component.html',\n    styleUrls: ['./search-filter-chips.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class SearchFilterChipsComponent implements OnInit {\n    private queryBuilder = inject(SearchQueryBuilderService);\n    private facetFiltersService = inject(SearchFacetFiltersService);\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    /** Toggles whether to show or not the context facet filters. */\n    @Input()\n    showContextFacets: boolean = true;\n\n    facetChipTabbedId = '';\n\n    get categories(): SearchCategory[] {\n        return this.queryBuilder.categories || [];\n    }\n\n    get tabbedFacet(): TabbedFacetField | null {\n        return this.facetFiltersService.tabbedFacet;\n    }\n\n    get responseFacets(): FacetField[] {\n        return this.facetFiltersService.responseFacets || [];\n    }\n\n    ngOnInit() {\n        this.queryBuilder.executed\n            .asObservable()\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe(() => (this.facetChipTabbedId = 'search-fact-chip-tabbed-' + this.facetFiltersService.tabbedFacet?.fields.join('-')));\n    }\n}\n","<mat-chip-set [attr.aria-label]=\"'SEARCH.FILTER.ARIA-LABEL.SEARCH_FILTER' | translate\">\n    <ng-container *ngFor=\"let category of categories\">\n        <adf-search-widget-chip [category]=\"category\" />\n    </ng-container>\n\n    <ng-container *ngIf=\"showContextFacets && tabbedFacet\">\n        <adf-search-facet-chip-tabbed\n            [tabbedFacet]=\"tabbedFacet\"\n            [attr.data-automation-id]=\"facetChipTabbedId\" />\n    </ng-container>\n\n    <ng-container *ngIf=\"showContextFacets && responseFacets\">\n        <ng-container *ngFor=\"let field of responseFacets\">\n            <adf-search-facet-chip [field]=\"field\" [attr.data-automation-id]=\"'search-fact-chip-' + field.field\" />\n        </ng-container>\n    </ng-container>\n\n    <ng-content />\n</mat-chip-set>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 './search-facet-chip/search-facet-chip.component';\nexport * from './search-facet-chip-tabbed/search-facet-chip-tabbed.component';\nexport * from './search-facet-chip-tabbed/search-facet-tabbed-content.component';\nexport * from './search-filter-menu-card/search-filter-menu-card.component';\nexport * from './search-widget-chip/search-widget-chip.component';\nexport * from './search-filter-chips.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 { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { SearchQueryBuilderService } from '../../services/search-query-builder.service';\nimport { FacetFieldBucket } from '../../models/facet-field-bucket.interface';\nimport { FacetField } from '../../models/facet-field.interface';\nimport { SearchFacetFiltersService } from '../../services/search-facet-filters.service';\nimport { CommonModule } from '@angular/common';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { SearchFilterCardComponent } from './search-filter-card/search-filter-card.component';\nimport { ResetSearchDirective } from '../reset-search.directive';\nimport { SearchFacetFieldComponent } from '../search-facet-field';\nimport { SearchFacetTabbedContentComponent } from '../search-filter-chips';\n\n@Component({\n    selector: 'adf-search-filter',\n    standalone: true,\n    imports: [\n        CommonModule,\n        MatExpansionModule,\n        MatButtonModule,\n        TranslateModule,\n        SearchFilterCardComponent,\n        ResetSearchDirective,\n        SearchFacetFieldComponent,\n        SearchFacetTabbedContentComponent\n    ],\n    templateUrl: './search-filter.component.html',\n    styleUrls: ['./search-filter.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    host: { class: 'adf-search-filter' }\n})\nexport class SearchFilterComponent {\n    /** Toggles whether to show or not the context facet filters. */\n    @Input()\n    showContextFacets: boolean = true;\n\n    facetQueriesLabel: string = 'Facet Queries';\n    facetExpanded = {\n        default: false\n    };\n    displayResetButton: boolean;\n\n    constructor(public queryBuilder: SearchQueryBuilderService, public facetFiltersService: SearchFacetFiltersService) {\n        if (queryBuilder.config?.facetQueries) {\n            this.facetQueriesLabel = queryBuilder.config.facetQueries.label || 'Facet Queries';\n            this.facetExpanded['query'] = queryBuilder.config.facetQueries.expanded;\n        }\n        if (queryBuilder.config?.facetFields) {\n            this.facetExpanded['field'] = queryBuilder.config.facetFields.expanded;\n        }\n        if (queryBuilder.config?.facetIntervals) {\n            this.facetExpanded['interval'] = queryBuilder.config.facetIntervals.expanded;\n        }\n        this.displayResetButton = this.queryBuilder.config && !!this.queryBuilder.config.resetButton;\n    }\n\n    shouldExpand(field: FacetField): boolean {\n        return this.facetExpanded[field.type] || this.facetExpanded['default'];\n    }\n\n    getBucketCountDisplay(bucket: FacetFieldBucket): string {\n        return bucket.count === null ? '' : `(${bucket.count})`;\n    }\n}\n","<mat-accordion multi=\"true\" displayMode=\"flat\">\n\n    <button *ngIf=\"displayResetButton && facetFiltersService.responseFacets\"\n            mat-button\n            color=\"primary\"\n            title=\"{{ 'SEARCH.FILTER.BUTTONS.RESET-ALL.TOOLTIP' | translate }}\"\n            adf-reset-search>\n        {{ 'SEARCH.FILTER.BUTTONS.RESET-ALL.LABEL' | translate }}\n    </button>\n    <mat-expansion-panel\n        *ngFor=\"let category of queryBuilder.categories\"\n        [attr.data-automation-id]=\"'expansion-panel-'+category.name\"\n        [(expanded)]=\"category.expanded\">\n        <mat-expansion-panel-header>\n            <mat-panel-title class=\"adf-search-filter-header-title\">\n                {{ category.name | translate }}\n            </mat-panel-title>\n        </mat-expansion-panel-header>\n        <adf-search-filter-card [category]=\"category\" />\n    </mat-expansion-panel>\n\n    <ng-container *ngIf=\"facetFiltersService.tabbedFacet && showContextFacets\">\n        <mat-expansion-panel [attr.data-automation-id]=\"'expansion-panel-'+facetFiltersService.tabbedFacet.label\" [expanded]=\"true\">\n            <mat-expansion-panel-header>\n                <mat-panel-title class=\"adf-search-filter-header-title\">{{ facetFiltersService.tabbedFacet.label | translate }}</mat-panel-title>\n            </mat-expansion-panel-header>\n            <adf-search-facet-tabbed-content\n                [tabbedFacet]=\"facetFiltersService.tabbedFacet\"\n                [attr.data-automation-id]=\"'expansion-panel-'+facetFiltersService.tabbedFacet.label\" />\n        </mat-expansion-panel>\n    </ng-container>\n\n    <ng-container *ngIf=\"facetFiltersService.responseFacets && showContextFacets\">\n        <mat-expansion-panel [attr.data-automation-id]=\"'expansion-panel-'+field.label\" *ngFor=\"let field of facetFiltersService.responseFacets\"\n                             [expanded]=\"shouldExpand(field)\">\n            <mat-expansion-panel-header>\n                <mat-panel-title class=\"adf-search-filter-header-title\">{{ field.label | translate }}</mat-panel-title>\n            </mat-expansion-panel-header>\n\n            <adf-search-facet-field [field]=\"field\" />\n\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 * from './search-filter-card/search-filter-card.component';\nexport * from './search-filter.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 { Component, OnInit, ViewEncapsulation } from '@angular/core';\nimport { ContentNodeSelectorPanelService } from '../../../content-node-selector/content-node-selector-panel/content-node-selector-panel.service';\nimport { SearchQueryBuilderService } from '../../services/search-query-builder.service';\nimport { CommonModule } from '@angular/common';\nimport { SearchFilterComponent } from '../search-filter';\n\n@Component({\n    selector: 'adf-search-panel',\n    standalone: true,\n    imports: [CommonModule, SearchFilterComponent],\n    templateUrl: './search-panel.component.html',\n    styleUrls: ['./search-panel.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    host: { class: 'adf-search-panel' }\n})\nexport class SearchPanelComponent implements OnInit {\n    constructor(private contentNodeSelectorPanelService: ContentNodeSelectorPanelService, private queryBuilderService: SearchQueryBuilderService) {}\n\n    ngOnInit(): void {\n        this.queryBuilderService.categories = this.contentNodeSelectorPanelService.convertCustomModelPropertiesToSearchCategories();\n    }\n\n    hasCustomModels(): boolean {\n        return this.contentNodeSelectorPanelService?.customModels?.length > 0;\n    }\n}\n","<div class=\"adf-search-panel-scrollable\" data-automation-id=\"adf-search-panel-container\">\n    <adf-search-filter *ngIf=\"hasCustomModels()\"\n                       class=\"app-search-settings\"\n                       [showContextFacets]=\"false\" />\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, EventEmitter, inject, Input, OnInit, Output, ViewChild, ViewEncapsulation } from '@angular/core';\nimport {\n    CustomEmptyContentTemplateDirective,\n    DataColumnComponent,\n    DataColumnListComponent,\n    DataSorting,\n    HighlightDirective,\n    InfinitePaginationComponent,\n    PaginatedComponent,\n    ShowHeaderMode,\n    ToolbarComponent,\n    ToolbarTitleComponent,\n    UserPreferencesService,\n    UserPreferenceValues\n} from '@alfresco/adf-core';\nimport { FileUploadCompleteEvent, FileUploadDeleteEvent, NodesApiService, SitesService, UploadService } from '../../common';\nimport { ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\nimport { Node, NodeEntry, NodePaging, Pagination, RequestScope, SearchRequest, SiteEntry, SitePaging } from '@alfresco/js-api';\nimport { DocumentListComponent } from '../../document-list/components/document-list.component';\nimport { RowFilter } from '../../document-list/data/row-filter.model';\nimport { ImageResolver } from '../../document-list/data/image-resolver.model';\nimport { CustomResourcesService } from '../../document-list/services/custom-resources.service';\nimport { ShareDataRow } from '../../document-list/data/share-data-row.model';\nimport { NodeEntryEvent } from '../../document-list/components/node.event';\nimport { debounceTime } from 'rxjs/operators';\nimport { ContentNodeSelectorPanelService } from './content-node-selector-panel.service';\nimport { CommonModule } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatInputModule } from '@angular/material/input';\nimport { AutoFocusDirective } from '../../directives/auto-focus.directive';\nimport { NodeCounterDirective } from '../../directives/node-counter.directive';\nimport { MatIconModule } from '@angular/material/icon';\nimport { DropdownSitesComponent } from '../site-dropdown/sites-dropdown.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { NameLocationCellComponent } from '../name-location-cell/name-location-cell.component';\nimport { DropdownBreadcrumbComponent } from '../../breadcrumb/dropdown-breadcrumb.component';\nimport { SearchQueryBuilderService } from '../../search/services/search-query-builder.service';\nimport { SearchPanelComponent } from '../../search/components/search-panel/search-panel.component';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nexport type ValidationFunction = (entry: Node) => boolean;\n\nexport const defaultValidation = () => true;\n\n@Component({\n    selector: 'adf-content-node-selector-panel',\n    standalone: true,\n    imports: [\n        CommonModule,\n        MatFormFieldModule,\n        TranslateModule,\n        MatInputModule,\n        ReactiveFormsModule,\n        AutoFocusDirective,\n        MatIconModule,\n        DropdownSitesComponent,\n        MatButtonModule,\n        ToolbarTitleComponent,\n        ToolbarComponent,\n        DropdownBreadcrumbComponent,\n        NodeCounterDirective,\n        DocumentListComponent,\n        HighlightDirective,\n        DataColumnListComponent,\n        DataColumnComponent,\n        NameLocationCellComponent,\n        InfinitePaginationComponent,\n        CustomEmptyContentTemplateDirective,\n        SearchPanelComponent\n    ],\n    templateUrl: './content-node-selector-panel.component.html',\n    styleUrls: ['./content-node-selector-panel.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    host: { class: 'adf-content-node-selector-panel' },\n    providers: [SearchQueryBuilderService]\n})\nexport class ContentNodeSelectorPanelComponent implements OnInit {\n    // eslint-disable-next-line @typescript-eslint/naming-convention\n    DEFAULT_PAGINATION: Pagination = new Pagination({\n        maxItems: 25,\n        skipCount: 0\n    });\n\n    readonly disableActionFolderList = ['-mysites-'];\n\n    private showSiteList = true;\n    private showSearchField = true;\n    private showCounter = false;\n    private _emptyList = true;\n\n    /** If true will restrict the search and breadcrumbs to the currentFolderId */\n    @Input()\n    restrictRootToCurrentFolderId: boolean = false;\n\n    /** Node ID of the folder currently listed. */\n    @Input({ required: true })\n    currentFolderId: string = null;\n\n    /**\n     * Hide the \"My Files\" option added to the site list by default.\n     * See the [Sites Dropdown component](sites-dropdown.component.md)\n     * for more information.\n     */\n    @Input()\n    dropdownHideMyFiles: boolean = false;\n\n    /**\n     * Custom site for site dropdown. This is the same as the `siteList`.\n     * property of the Sites Dropdown component (see its doc page\n     * for more information).\n     */\n    @Input()\n    dropdownSiteList: SitePaging = null;\n\n    _rowFilter: RowFilter = defaultValidation;\n\n    /**\n     * Custom *where* filter function. See the\n     * Document List component\n     * for more information.\n     */\n    @Input()\n    where: string;\n\n    /**\n     * Custom row filter function. See the\n     * [Row Filter Model](row-filter.model.md) page\n     * for more information.\n     */\n    @Input()\n    set rowFilter(rowFilter: RowFilter) {\n        this.createRowFilter(rowFilter);\n    }\n\n    get rowFilter(): RowFilter {\n        return this._rowFilter;\n    }\n\n    _excludeSiteContent: string[] = [];\n\n    /**\n     * Custom list of site content componentIds.\n     * Used to filter out the corresponding items from the displayed nodes\n     */\n    @Input()\n    set excludeSiteContent(excludeSiteContent: string[]) {\n        this._excludeSiteContent = excludeSiteContent;\n        this.createRowFilter(this._rowFilter);\n    }\n\n    get excludeSiteContent(): string[] {\n        return this._excludeSiteContent;\n    }\n\n    /**\n     * Custom image resolver function. See the\n     * [Image Resolver Model](image-resolver.model.md) page\n     * for more information.\n     */\n    @Input()\n    imageResolver: ImageResolver = null;\n\n    /** Number of items shown per page in the list. */\n    @Input()\n    pageSize: number = this.DEFAULT_PAGINATION.maxItems;\n\n    /** Define the selection mode for document list. The allowed values are single or multiple */\n    @Input()\n    selectionMode: 'single' | 'multiple' = 'single';\n\n    /**\n     * Function used to decide if the selected node has permission to be selected.\n     * Default value is a function that always returns true.\n     */\n    @Input()\n    isSelectionValid: ValidationFunction = defaultValidation;\n\n    /**\n     * Transformation to be performed on the chosen/folder node before building the\n     * breadcrumb UI. Can be useful when custom formatting is needed for the breadcrumb.\n     * You can change the path elements from the node that are used to build the\n     * breadcrumb using this function.\n     */\n    @Input()\n    breadcrumbTransform: (node) => any;\n\n    /** Toggle search input rendering */\n    @Input()\n    set showSearch(value: boolean) {\n        if (value !== undefined && value !== null) {\n            this.showSearchField = value;\n        }\n    }\n\n    get showSearch(): boolean {\n        return this.showSearchField;\n    }\n\n    /** Toggle sites list dropdown rendering */\n    @Input()\n    set showDropdownSiteList(value: boolean) {\n        if (value !== undefined && value !== null) {\n            this.showSiteList = value;\n        }\n    }\n\n    get showDropdownSiteList(): boolean {\n        return this.showSiteList;\n    }\n\n    /** Shows the files and folders in the search result */\n    @Input()\n    set showFilesInResult(value: boolean) {\n        if (value !== undefined && value !== null) {\n            const showFilesQuery = `TYPE:'cm:folder'${value ? ` OR TYPE:'cm:content'` : ''}`;\n            this.queryBuilderService.addFilterQuery(showFilesQuery);\n        }\n    }\n\n    /** Shows the node counter in the breadcrumb */\n    @Input()\n    set showNodeCounter(value: boolean) {\n        this.showCounter = value ?? false;\n    }\n\n    get showNodeCounter(): boolean {\n        return this.showCounter;\n    }\n\n    /** Emitted when the user has chosen an item. */\n    @Output()\n    select = new EventEmitter<Node[]>();\n\n    /** Emitted when the navigation changes. */\n    @Output()\n    navigationChange = new EventEmitter<NodeEntryEvent>();\n\n    /** Emitted when the select site changes. */\n    @Output()\n    siteChange = new EventEmitter<string>();\n\n    /** Emitted when search is running. */\n    @Output()\n    showingSearch = new EventEmitter<boolean>();\n\n    /** Emitted when current folder loaded. */\n    @Output()\n    currentFolder = new EventEmitter<Node>();\n\n    /** Emitted when folder loaded. */\n    @Output()\n    folderLoaded: EventEmitter<any> = new EventEmitter<any>();\n\n    @ViewChild('documentList', { static: true })\n    documentList: DocumentListComponent;\n\n    @ViewChild(HighlightDirective, { static: true })\n    highlighter: HighlightDirective;\n\n    nodePaging: NodePaging | null = null;\n    siteId: null | string;\n    breadcrumbRootId: null | string;\n    searchTerm: string = '';\n    showingSearchResults: boolean = false;\n    loadingSearchResults: boolean = false;\n    inDialog: boolean = false;\n    _chosenNode: Node[] = null;\n    selectionWithoutValidation: Node[] = null;\n    folderIdToShow: string | null = null;\n    breadcrumbFolderTitle: string | null = null;\n    startSiteGuid: string | null = null;\n    hasValidQuery: boolean = false;\n    showHeader = ShowHeaderMode.Never;\n\n    @ViewChild(InfinitePaginationComponent, { static: true })\n    infinitePaginationComponent: InfinitePaginationComponent;\n\n    infiniteScroll: boolean = false;\n    debounceSearch: number = 200;\n    searchInput: UntypedFormControl = new UntypedFormControl();\n\n    target: PaginatedComponent;\n    preselectedNodes: NodeEntry[] = [];\n    currentUploadBatch: NodeEntry[] = [];\n\n    sorting: string[] | DataSorting = ['createdAt', 'desc'];\n\n    searchPanelExpanded: boolean = false;\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    constructor(\n        private customResourcesService: CustomResourcesService,\n        private queryBuilderService: SearchQueryBuilderService,\n        private userPreferencesService: UserPreferencesService,\n        private nodesApiService: NodesApiService,\n        private uploadService: UploadService,\n        private sitesService: SitesService,\n        private contentNodeSelectorPanelService: ContentNodeSelectorPanelService\n    ) {}\n\n    set chosenNode(value: Node[]) {\n        this._chosenNode = value;\n        this.select.next(value);\n    }\n\n    get chosenNode() {\n        return this._chosenNode;\n    }\n\n    get emptyList(): boolean {\n        return this._emptyList;\n    }\n\n    getSelectedCount(): number {\n        return this.chosenNode?.length || 0;\n    }\n\n    ngOnInit() {\n        this.searchInput.valueChanges\n            .pipe(debounceTime(this.debounceSearch), takeUntilDestroyed(this.destroyRef))\n            .subscribe((searchValue: string) => {\n                this.searchTerm = searchValue;\n                this.queryBuilderService.userQuery = searchValue.length > 0 ? `${searchValue}*` : searchValue;\n                this.queryBuilderService.update();\n            });\n\n        this.queryBuilderService.updated.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((searchRequest) => {\n            if (searchRequest) {\n                this.hasValidQuery = true;\n                this.prepareDialogForNewSearch(searchRequest);\n                this.queryBuilderService.execute(false, searchRequest);\n            } else {\n                this.hasValidQuery = false;\n                this.resetFolderToShow();\n                this.clearSearch();\n            }\n        });\n\n        this.queryBuilderService.executed.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((results: NodePaging) => {\n            if (this.hasValidQuery) {\n                this.showSearchResults(results);\n            }\n        });\n\n        this.userPreferencesService\n            .select(UserPreferenceValues.PaginationSize)\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe((pagSize) => (this.pageSize = pagSize));\n\n        this.target = this.documentList;\n        this.folderIdToShow = this.currentFolderId;\n        if (this.currentFolderId) {\n            if (this.restrictRootToCurrentFolderId) {\n                this.breadcrumbRootId = this.currentFolderId;\n                this.siteId = this.currentFolderId;\n            } else {\n                this.getStartSite();\n            }\n        }\n\n        this.breadcrumbTransform = this.breadcrumbTransform ? this.breadcrumbTransform : null;\n        this.isSelectionValid = this.isSelectionValid ? this.isSelectionValid : defaultValidation;\n        this.onFileUploadEvent();\n        this.onFileUploadDeletedEvent();\n        this.resetPagination();\n        this.setSearchScopeToNodes();\n\n        this.documentList.$folderNode.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((currentNode: Node) => {\n            this.currentFolder.emit(currentNode);\n        });\n    }\n\n    toggleSearchPanel() {\n        this.searchPanelExpanded = !this.searchPanelExpanded;\n    }\n\n    hasCustomModels(): boolean {\n        return this.contentNodeSelectorPanelService?.customModels?.length > 0;\n    }\n\n    private onFileUploadEvent() {\n        this.uploadService.fileUploadComplete\n            .pipe(debounceTime(500), takeUntilDestroyed(this.destroyRef))\n            .subscribe((fileUploadEvent: FileUploadCompleteEvent) => {\n                this.currentUploadBatch.push(fileUploadEvent.data);\n                if (!this.uploadService.isUploading()) {\n                    this.preselectedNodes = this.getPreselectNodesBasedOnSelectionMode();\n                    this.currentUploadBatch = [];\n                    this.documentList.reloadWithoutResettingSelection();\n                }\n            });\n    }\n\n    private onFileUploadDeletedEvent() {\n        this.uploadService.fileUploadDeleted.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((deletedFileEvent: FileUploadDeleteEvent) => {\n            this.documentList.unselectRowFromNodeId(deletedFileEvent.file.data.entry.id);\n            this.documentList.reloadWithoutResettingSelection();\n        });\n    }\n\n    private getStartSite() {\n        this.nodesApiService.getNode(this.currentFolderId).subscribe((startNodeEntry) => {\n            this.startSiteGuid = this.sitesService.getSiteNameFromNodePath(startNodeEntry);\n            if (this.startSiteGuid) {\n                this.sitesService.getSite(this.startSiteGuid).subscribe((startSiteEntry) => {\n                    if (startSiteEntry instanceof SiteEntry) {\n                        this.siteChange.emit(startSiteEntry.entry.title);\n                    }\n                });\n            }\n        });\n    }\n\n    private createRowFilter(filter?: RowFilter) {\n        if (!filter) {\n            filter = () => true;\n        }\n        this._rowFilter = (value: ShareDataRow, index: number, array: ShareDataRow[]) =>\n            filter(value, index, array) && !this.isExcludedSiteContent(value);\n    }\n\n    private isExcludedSiteContent(row: ShareDataRow): boolean {\n        const entry = row.node.entry;\n        if (this._excludeSiteContent?.length && entry?.properties?.['st:componentId']) {\n            const excludedItem = this._excludeSiteContent.find((id: string) => entry.properties['st:componentId'] === id);\n            return !!excludedItem;\n        }\n        return false;\n    }\n\n    /**\n     * Updates the site attribute and starts a new search\n     *\n     * @param chosenSite SiteEntry to search within\n     */\n    siteChanged(chosenSite: SiteEntry): void {\n        this.siteId = chosenSite.entry.guid;\n        this.setTitleIfCustomSite(chosenSite);\n        this.siteChange.emit(chosenSite.entry.title);\n        this.queryBuilderService.update();\n    }\n\n    /**\n     * Get current breadcrumb folder node\n     *\n     * @returns the actually selected|entered folder node or null in case of searching for the breadcrumb\n     */\n    get breadcrumbFolderNode(): Node | null {\n        let folderNode: Node;\n\n        if (this.showingSearchResults && this.selectionWithoutValidation?.length) {\n            folderNode = this.selectionWithoutValidation[0];\n        } else {\n            folderNode = this.documentList.folderNode;\n        }\n\n        return folderNode;\n    }\n\n    /**\n     * Prepares the dialog for a new search\n     *\n     * @param searchRequest request options\n     */\n    prepareDialogForNewSearch(searchRequest: SearchRequest): void {\n        this.target = searchRequest ? null : this.documentList;\n        if (this.target) {\n            this.infinitePaginationComponent.reset();\n        }\n        this.folderIdToShow = null;\n        this.preselectedNodes = [];\n        this.loadingSearchResults = true;\n        this.addCorrespondingNodeIdsQuery();\n        this.resetChosenNode();\n    }\n\n    /**\n     * Clear the search input and reset to last folder node in which search was performed\n     */\n    clear(): void {\n        this.searchTerm = '';\n        this.queryBuilderService.userQuery = '';\n        this.queryBuilderService.update();\n    }\n\n    /**\n     * Resets the folder to be shown with the site selection or the initial landing folder\n     */\n    resetFolderToShow(): void {\n        this.folderIdToShow = this.siteId || this.currentFolderId;\n    }\n\n    /**\n     * Clear the search input and search related data\n     */\n    clearSearch() {\n        this.searchTerm = '';\n        this.nodePaging = null;\n        this.resetPagination();\n        this.resetChosenNode();\n        this.showingSearchResults = false;\n        this.showingSearch.emit(this.showingSearchResults);\n    }\n\n    private addCorrespondingNodeIdsQuery() {\n        let extraParentFiltering = '';\n\n        if (this.customResourcesService.hasCorrespondingNodeIds(this.siteId)) {\n            this.customResourcesService.getCorrespondingNodeIds(this.siteId).subscribe((nodeIds) => {\n                if (nodeIds?.length) {\n                    nodeIds\n                        .filter((id) => id !== this.siteId)\n                        .forEach((extraId) => {\n                            extraParentFiltering += ` OR ANCESTOR:'workspace://SpacesStore/${extraId}'`;\n                        });\n                }\n                const parentFiltering = this.siteId ? `ANCESTOR:'workspace://SpacesStore/${this.siteId}'${extraParentFiltering}` : '';\n                this.queryBuilderService.addFilterQuery(parentFiltering);\n            });\n        } else {\n            const parentFiltering = this.siteId ? `ANCESTOR:'workspace://SpacesStore/${this.siteId}'` : '';\n            this.queryBuilderService.addFilterQuery(parentFiltering);\n        }\n    }\n\n    private setSearchScopeToNodes() {\n        const scope: RequestScope = {\n            locations: 'nodes'\n        };\n        this.queryBuilderService.setScope(scope);\n    }\n\n    /**\n     * Show the results of the search\n     *\n     * @param results Search results\n     */\n    private showSearchResults(results: NodePaging): void {\n        this.showingSearchResults = true;\n        this.loadingSearchResults = false;\n        this.showingSearch.emit(this.showingSearchResults);\n\n        this.nodePaging = results;\n    }\n\n    /**\n     * Sets showingSearchResults state to be able to differentiate between search results or folder results\n     *\n     * @param $event node event\n     */\n    onFolderChange($event: NodeEntryEvent): void {\n        this.folderIdToShow = $event.value.id;\n        this.showingSearchResults = false;\n        this.infiniteScroll = false;\n        this.breadcrumbFolderTitle = null;\n        this.preselectedNodes = [];\n        this.clearSearch();\n        this.navigationChange.emit($event);\n    }\n\n    /**\n     * Attempts to set the currently loaded node\n     *\n     * @param nodePaging pagination model\n     */\n    onFolderLoaded(nodePaging: NodePaging): void {\n        setTimeout(() => {\n            this._emptyList = !this.documentList.data.getRows().length;\n        });\n        this.updatePaginationAfterRowFilter(nodePaging);\n        if (!this.showingSearchResults) {\n            this.attemptNodeSelection(this.documentList.folderNode);\n        }\n        this.folderLoaded.emit();\n    }\n\n    /**\n     * Updates pagination.hasMoreItems to false after filtering only folders during 'COPY' and 'MOVE' action\n     *\n     * @param nodePaging pagination model\n     */\n    updatePaginationAfterRowFilter(nodePaging: NodePaging): void {\n        if (this.documentList.data.getRows().length < nodePaging.list.pagination.maxItems) {\n            nodePaging.list.pagination.hasMoreItems = false;\n        }\n    }\n\n    /**\n     * Returns whether breadcrumb has to be shown or not\n     *\n     * @returns `true` if needs to show the breadcrumb, otherwise `false`\n     */\n    showBreadcrumbs() {\n        return !this.showingSearchResults || this.chosenNode;\n    }\n\n    /**\n     * Loads the next batch of search results\n     *\n     * @param pagination Pagination object\n     */\n    getNextPageOfSearch(pagination: Pagination): void {\n        this.infiniteScroll = true;\n        this.queryBuilderService.paging.maxItems = pagination.maxItems;\n        this.queryBuilderService.paging.skipCount = pagination.skipCount;\n\n        if (this.searchTerm.length > 0) {\n            this.queryBuilderService.update();\n        }\n    }\n\n    /**\n     * Selects node as chosen if it has the right permission, clears the selection otherwise\n     *\n     * @param entry node entry\n     */\n    private attemptNodeSelection(entry: Node): void {\n        if (entry && this.isSelectionValid(entry) && !this.isActionDisabledForFolder(this.documentList.currentFolderId)) {\n            this.chosenNode = [entry];\n        }\n    }\n\n    private isActionDisabledForFolder(folderId: string): boolean {\n        return this.disableActionFolderList.includes(folderId);\n    }\n\n    /**\n     * Clears the chosen node\n     */\n    resetChosenNode(): void {\n        this.chosenNode = null;\n    }\n\n    /**\n     * It filters and emit the selection coming from the document list\n     *\n     * @param nodesEntries selected nodes\n     */\n    onCurrentSelection(nodesEntries: NodeEntry[]): void {\n        const validNodesEntity = nodesEntries.filter((node) => this.isSelectionValid(node.entry));\n        this.chosenNode = validNodesEntity.map((node) => node.entry);\n        this.selectionWithoutValidation = nodesEntries.map((node) => node.entry);\n    }\n\n    setTitleIfCustomSite(site: SiteEntry) {\n        if (this.customResourcesService.isCustomSource(site.entry.guid)) {\n            this.breadcrumbFolderTitle = site.entry.title;\n            if (this.documentList.folderNode.path.elements) {\n                this.breadcrumbFolderNode.name = site.entry.title;\n                this.documentList.folderNode.path.elements = null;\n            }\n        } else {\n            this.breadcrumbFolderTitle = null;\n        }\n    }\n\n    hasPreselectNodes(): boolean {\n        return this.preselectedNodes?.length > 0;\n    }\n\n    isSingleSelectionMode(): boolean {\n        return this.selectionMode === 'single';\n    }\n\n    getPreselectNodesBasedOnSelectionMode(): NodeEntry[] {\n        let selectedNodes: NodeEntry[] = [];\n\n        if (this.currentUploadBatch?.length) {\n            if (this.isSingleSelectionMode()) {\n                selectedNodes = [this.currentUploadBatch[this.currentUploadBatch.length - 1]];\n            } else {\n                selectedNodes = this.currentUploadBatch;\n            }\n        }\n\n        return selectedNodes;\n    }\n\n    private resetPagination(): void {\n        this.queryBuilderService.paging = {\n            maxItems: this.pageSize,\n            skipCount: this.DEFAULT_PAGINATION.skipCount\n        };\n    }\n}\n","<div class=\"adf-content-node-selector-content\">\n    <mat-form-field floatPlaceholder=\"never\"\n                    appearance=\"fill\"\n                    class=\"adf-content-node-selector-content-input\"\n                    subscriptSizing=\"dynamic\"\n                    *ngIf=\"showSearch\">\n        <mat-label>{{ 'NODE_SELECTOR.SEARCH' | translate }}</mat-label>\n        <input matInput\n            id=\"searchInput\"\n            [formControl]=\"searchInput\"\n            type=\"text\"\n            [value]=\"searchTerm\"\n            adf-auto-focus\n            data-automation-id=\"content-node-selector-search-input\">\n\n        <mat-icon *ngIf=\"searchTerm.length > 0\"\n            matSuffix (click)=\"clear()\"\n            class=\"adf-content-node-selector-content-input-icon\"\n            data-automation-id=\"content-node-selector-search-clear\">clear\n        </mat-icon>\n\n        <mat-icon *ngIf=\"searchTerm.length === 0\"\n            matSuffix\n            class=\"adf-content-node-selector-content-input-icon\"\n            data-automation-id=\"content-node-selector-search-icon\">search\n        </mat-icon>\n\n    </mat-form-field>\n    <adf-sites-dropdown\n        *ngIf=\"showDropdownSiteList\"\n        class=\"full-width\"\n        (change)=\"siteChanged($event)\"\n        [placeholder]=\"'NODE_SELECTOR.SELECT_LIBRARY'\"\n        [hideMyFiles]=\"dropdownHideMyFiles\"\n        [siteList]=\"dropdownSiteList\"\n        [value]=\"startSiteGuid\"\n        data-automation-id=\"content-node-selector-sites-combo\" />\n    <button *ngIf=\"hasCustomModels()\"\n        data-automation-id=\"adf-toggle-search-panel-button\"\n        mat-icon-button\n        (click)=\"toggleSearchPanel()\">\n        <mat-icon>filter_list</mat-icon>\n        {{ 'SEARCH.SEARCH_HEADER.TITLE' | translate }}\n    </button>\n    <div class=\"adf-content-node-selector-search-panel-container\">\n        <adf-search-panel *ngIf=\"searchPanelExpanded\" />\n        <div class=\"adf-content-node-selector-document-list-container\">\n    <adf-toolbar>\n        <adf-toolbar-title>\n            <ng-container *ngIf=\"!showBreadcrumbs()\">\n                <h2 class=\"adf-search-results-label\">{{ 'NODE_SELECTOR.SEARCH_RESULTS' | translate }}</h2>\n            </ng-container>\n            <adf-dropdown-breadcrumb *ngIf=\"showBreadcrumbs()\"\n                class=\"adf-content-node-selector-content-breadcrumb\"\n                (navigate)=\"clearSearch()\"\n                [target]=\"documentList\"\n                [rootId]=\"breadcrumbRootId\"\n                [transform]=\"breadcrumbTransform\"\n                [folderNode]=\"breadcrumbFolderNode\"\n                [root]=\"breadcrumbFolderTitle\"\n                data-automation-id=\"content-node-selector-content-breadcrumb\" />\n            <ng-container *ngIf=\"showNodeCounter\" [adf-node-counter]=\"getSelectedCount()\" />\n        </adf-toolbar-title>\n    </adf-toolbar>\n\n    <div\n        class=\"adf-content-node-selector-content-list\"\n        [class.adf-content-node-selector-content-list-searchLayout]=\"showingSearchResults\"\n        data-automation-id=\"content-node-selector-content-list\">\n        <adf-document-list\n            #documentList\n            [adf-highlight]=\"searchTerm\"\n            adf-highlight-selector=\".adf-name-location-cell-name\"\n            [showHeader]=\"showHeader\"\n            [node]=\"nodePaging\"\n            [preselectNodes]=\"preselectedNodes\"\n            [maxItems]=\"pageSize\"\n            [rowFilter]=\"_rowFilter\"\n            [imageResolver]=\"imageResolver\"\n            [currentFolderId]=\"folderIdToShow\"\n            [selectionMode]=\"selectionMode\"\n            [contextMenuActions]=\"false\"\n            [contentActions]=\"false\"\n            [allowDropFiles]=\"false\"\n            [sorting]=\"sorting\"\n            sortingMode=\"server\"\n            [where]=\"where\"\n            (folderChange)=\"onFolderChange($event)\"\n            (ready)=\"onFolderLoaded($event)\"\n            (nodeSelected)=\"onCurrentSelection($event)\"\n            [class.adf-content-node-selector-content-list-empty]=\"emptyList\"\n            data-automation-id=\"content-node-selector-document-list\">\n\n            <adf-custom-empty-content-template>\n                <div aria-live=\"polite\">{{ 'NODE_SELECTOR.NO_RESULTS' | translate }}</div>\n            </adf-custom-empty-content-template>\n\n            <data-columns>\n                <data-column key=\"$thumbnail\" type=\"image\" />\n                <data-column key=\"name\" type=\"text\" title=\"ADF-DOCUMENT-LIST.LAYOUT.NAME\" class=\"adf-full-width adf-ellipsis-cell\">\n                    <ng-template let-context>\n                        <adf-name-location-cell [row]=\"context.row\" />\n                    </ng-template>\n                </data-column>\n                <data-column key=\"modifiedAt\" type=\"date\" title=\"ADF-DOCUMENT-LIST.LAYOUT.MODIFIED_ON\" format=\"timeAgo\" class=\"adf-content-selector-modified-cell\" />\n                <data-column key=\"createdByUser.displayName\" type=\"text\" title=\"ADF-DOCUMENT-LIST.LAYOUT.CREATED_BY\" class=\"adf-content-selector-modifier-cell\" />\n                <data-column key=\"visibility\" type=\"text\" title=\"ADF-DOCUMENT-LIST.LAYOUT.STATUS\" class=\"adf-content-selector-visibility-cell\" />\n            </data-columns>\n\n        </adf-document-list>\n\n        <adf-infinite-pagination\n            [target]=\"target\"\n            [loading]=\"loadingSearchResults\"\n            (loadMore)=\"getNextPageOfSearch($event)\"\n            data-automation-id=\"content-node-selector-search-pagination\">\n            {{ 'ADF-DOCUMENT-LIST.LAYOUT.LOAD_MORE' | translate }}\n        </adf-infinite-pagination>\n    </div>\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 class PermissionModel {\n    type: string;\n    action: string;\n    permission: string;\n\n    constructor(obj?: any) {\n        if (obj) {\n            this.type = obj.type || null;\n            this.action = obj.action || null;\n            this.permission = obj.permission || 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 { EXTENDIBLE_COMPONENT, FileUtils } from '@alfresco/adf-core';\nimport { Component, EventEmitter, forwardRef, Input, OnChanges, OnInit, Output, SimpleChanges, ViewEncapsulation, inject } from '@angular/core';\nimport { NodesApiService } from '../../common/services/nodes-api.service';\nimport { ContentService } from '../../common/services/content.service';\nimport { AllowableOperationsEnum } from '../../common/models/allowable-operations.enum';\nimport { Node } from '@alfresco/js-api';\nimport { Subject } from 'rxjs';\nimport { PermissionModel } from '../../document-list/models/permissions.model';\nimport { UploadBase } from './base-upload/upload-base';\nimport { NodeAllowableOperationSubject } from '../../interfaces/node-allowable-operation-subject.interface';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n    selector: 'adf-upload-button',\n    standalone: true,\n    imports: [CommonModule, MatButtonModule, TranslateModule, MatIconModule],\n    templateUrl: './upload-button.component.html',\n    styleUrls: ['./upload-button.component.scss'],\n    viewProviders: [{ provide: EXTENDIBLE_COMPONENT, useExisting: forwardRef(() => UploadButtonComponent) }],\n    encapsulation: ViewEncapsulation.None\n})\nexport class UploadButtonComponent extends UploadBase implements OnInit, OnChanges, NodeAllowableOperationSubject {\n    private contentService = inject(ContentService);\n    private nodesApiService = inject(NodesApiService);\n\n    /** Allows/disallows upload folders (only for Chrome). */\n    @Input()\n    uploadFolders: boolean = false;\n\n    /** Allows/disallows multiple files */\n    @Input()\n    multipleFiles: boolean = false;\n\n    /** Defines the text of the upload button. */\n    @Input()\n    staticTitle: string;\n\n    /** Custom tooltip text. */\n    @Input()\n    tooltip: string = null;\n\n    /** Custom added file. The upload button type will be 'button' instead of 'file' */\n    @Input()\n    file: File;\n\n    /** Emitted when create permission is missing. */\n    @Output()\n    permissionEvent = new EventEmitter<PermissionModel>();\n\n    private hasAllowableOperations: boolean = false;\n    protected permissionValue = new Subject<boolean>();\n\n    ngOnInit() {\n        this.permissionValue.subscribe((permission: boolean) => {\n            this.hasAllowableOperations = permission;\n        });\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        const rootFolderId = changes['rootFolderId'];\n        if (rootFolderId?.currentValue) {\n            this.checkPermission();\n        }\n    }\n\n    isButtonDisabled(): boolean {\n        return this.disabled ? true : undefined;\n    }\n\n    onFilesAdded($event: any): void {\n        const files = FileUtils.toFileArray($event.currentTarget.files);\n\n        if (this.hasAllowableOperations) {\n            this.uploadFiles(files);\n        } else {\n            this.permissionEvent.emit(new PermissionModel({ type: 'content', action: 'upload', permission: 'create' }));\n        }\n        // reset the value of the input file\n        $event.target.value = '';\n    }\n\n    onClickUploadButton(): void {\n        if (this.file) {\n            const files = [this.file];\n\n            if (this.hasAllowableOperations) {\n                this.uploadFiles(files);\n            } else {\n                this.permissionEvent.emit(new PermissionModel({ type: 'content', action: 'upload', permission: 'create' }));\n            }\n        }\n    }\n\n    onDirectoryAdded($event: any): void {\n        if (this.hasAllowableOperations) {\n            const files = FileUtils.toFileArray($event.currentTarget.files);\n            this.uploadFiles(files);\n        } else {\n            this.permissionEvent.emit(new PermissionModel({ type: 'content', action: 'upload', permission: 'create' }));\n        }\n        // reset the value of the input file\n        $event.target.value = '';\n    }\n\n    checkPermission() {\n        if (this.rootFolderId) {\n            const opts: any = {\n                includeSource: true,\n                include: ['allowableOperations']\n            };\n\n            this.nodesApiService.getNode(this.rootFolderId, opts).subscribe(\n                (res) => this.permissionValue.next(this.nodeHasPermission(res, AllowableOperationsEnum.CREATE)),\n                (error: { error: Error }) => {\n                    if (error?.error) {\n                        this.error.emit({ error: error.error.message } as any);\n                    } else {\n                        this.error.emit({ error: 'FILE_UPLOAD.BUTTON.PERMISSION_CHECK_ERROR' } as any);\n                    }\n                }\n            );\n        }\n    }\n\n    nodeHasPermission(node: Node, permission: AllowableOperationsEnum | string): boolean {\n        return this.contentService.hasAllowableOperations(node, permission);\n    }\n}\n","<form class=\"adf-upload-button-file-container\">\n    <!--Files Upload-->\n    <div *ngIf=\"!uploadFolders\">\n\n        <!--Single Files Upload-->\n        <ng-container *ngIf=\"!multipleFiles\">\n            <input\n                class=\"adf-upload-button-file-container-upload-single-file\"\n                id=\"upload-single-file\"\n                data-automation-id=\"upload-single-file\"\n                [type]=\"file ? 'button' : 'file'\"\n                name=\"uploadFiles\"\n                accept=\"{{acceptedFilesType}}\"\n                [attr.disabled]=\"isButtonDisabled()\"\n                [title]=\"tooltip\"\n                (change)=\"onFilesAdded($event)\"\n                (click)=\"onClickUploadButton()\"/>\n            <label for=\"upload-single-file\" class=\"adf-upload-button-label\">\n                <mat-icon class=\"adf-upload-button-icon\">file_upload</mat-icon>\n                <span id=\"upload-single-file-label\" *ngIf=\"!staticTitle\">\n                    {{ 'FILE_UPLOAD.BUTTON.UPLOAD_FILE' | translate }}</span>\n                <span id=\"upload-single-file-label-static\" *ngIf=\"staticTitle\">\n                    {{ staticTitle }}</span>\n            </label>\n        </ng-container>\n\n        <!--Multiple Files Upload-->\n        <ng-container *ngIf=\"multipleFiles\">\n            <input\n                id=\"upload-multiple-files\"\n                data-automation-id=\"upload-multiple-files\"\n                type=\"file\"\n                name=\"uploadFiles\"\n                multiple=\"multiple\"\n                accept=\"{{acceptedFilesType}}\"\n                [attr.disabled]=\"isButtonDisabled()\"\n                [title]=\"tooltip\"\n                (change)=\"onFilesAdded($event)\"/>\n            <label for=\"upload-multiple-files\" class=\"adf-upload-button-label\">\n                <mat-icon class=\"adf-upload-button-icon\">file_upload</mat-icon>\n                <span id=\"upload-multiple-file-label\" *ngIf=\"!staticTitle\">\n                    {{ 'FILE_UPLOAD.BUTTON.UPLOAD_FILE' | translate }}</span>\n                <span id=\"upload-multiple-file-label-static\" *ngIf=\"staticTitle\">\n                    {{ staticTitle }}</span>\n            </label>\n        </ng-container>\n    </div>\n\n    <!--Folders Upload-->\n    <ng-container *ngIf=\"uploadFolders\">\n        <input\n            id=\"uploadFolder\"\n            data-automation-id=\"uploadFolder\"\n            type=\"file\"\n            name=\"uploadFiles\"\n            multiple=\"multiple\"\n            accept=\"{{acceptedFilesType}}\"\n            webkitdirectory directory\n            [attr.disabled]=\"isButtonDisabled()\"\n            [title]=\"tooltip\"\n            (change)=\"onDirectoryAdded($event)\"/>\n        <label for=\"uploadFolder\" data-automation-id=\"uploadFolder\" class=\"adf-upload-button-label\">\n            <mat-icon class=\"adf-upload-button-icon\">file_upload</mat-icon>\n            <span id=\"uploadFolder-label\" *ngIf=\"!staticTitle\">\n                {{ 'FILE_UPLOAD.BUTTON.UPLOAD_FOLDER' | translate }}</span>\n            <span id=\"uploadFolder-label-static\" *ngIf=\"staticTitle\">\n                {{ staticTitle }}</span>\n        </label>\n    </ng-container>\n</form>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY 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, inject, Inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport {\n    EmptyListComponent,\n    NotificationService,\n    ToolbarComponent,\n    ToolbarTitleComponent,\n    TranslationService\n} from '@alfresco/adf-core';\nimport { Node } from '@alfresco/js-api';\nimport { AllowableOperationsEnum } from '../common/models/allowable-operations.enum';\nimport { ContentService } from '../common/services/content.service';\nimport { UploadService } from '../common/services/upload.service';\nimport { ContentNodeSelectorComponentData } from './content-node-selector.component-data.interface';\nimport { NodeEntryEvent } from '../document-list/components/node.event';\nimport { NodeAction } from '../document-list/models/node-action.enum';\nimport { OverlayContainer } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { DropdownBreadcrumbComponent } from '../breadcrumb/dropdown-breadcrumb.component';\nimport { NodeCounterDirective } from '../directives/node-counter.directive';\nimport { MatIconModule } from '@angular/material/icon';\nimport { UploadDragAreaComponent } from '../upload/components/upload-drag-area.component';\nimport { FileUploadingDialogComponent } from '../upload/components/file-uploading-dialog.component';\nimport { ContentNodeSelectorPanelComponent } from './content-node-selector-panel/content-node-selector-panel.component';\nimport { UploadButtonComponent } from '../upload/components/upload-button.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n    selector: 'adf-content-node-selector',\n    standalone: true,\n    imports: [\n        CommonModule,\n        MatDialogModule,\n        MatTabsModule,\n        TranslateModule,\n        ToolbarTitleComponent,\n        ToolbarComponent,\n        DropdownBreadcrumbComponent,\n        NodeCounterDirective,\n        MatIconModule,\n        UploadDragAreaComponent,\n        FileUploadingDialogComponent,\n        EmptyListComponent,\n        ContentNodeSelectorPanelComponent,\n        UploadButtonComponent,\n        MatButtonModule\n    ],\n    templateUrl: './content-node-selector.component.html',\n    styleUrls: ['./content-node-selector.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class ContentNodeSelectorComponent implements OnInit {\n\n    title: string;\n    action: NodeAction;\n    buttonActionName: string;\n    chosenNode: Node[];\n    currentDirectoryId: string;\n    showingSearch = false;\n    hasAllowableOperations = false;\n    isLoading = true;\n    selectedTabIndex: number = 0;\n    uploadStarted: boolean = false;\n\n    emptyFolderImageUrl: string = './assets/images/empty_doc_lib.svg';\n    breadcrumbFolderNode: Node;\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    constructor(\n        private translation: TranslationService,\n        private contentService: ContentService,\n        private notificationService: NotificationService,\n        private uploadService: UploadService,\n        private dialog: MatDialogRef<ContentNodeSelectorComponent>,\n        private overlayContainer: OverlayContainer,\n        @Inject(MAT_DIALOG_DATA) public data: ContentNodeSelectorComponentData\n    ) {\n        this.action = data.actionName ?? NodeAction.CHOOSE;\n        this.buttonActionName = `NODE_SELECTOR.${this.action}`;\n        this.title = data.title;\n        this.currentDirectoryId = data.currentFolderId;\n    }\n\n    ngOnInit() {\n        this.dialog\n            .keydownEvents()\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe((event) => {\n                if (event?.key === 'Escape') {\n                    event.preventDefault();\n                    event.stopImmediatePropagation();\n                    this.close();\n                }\n            });\n\n        this.dialog\n            .backdropClick()\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe(() => {\n                this.close();\n            });\n\n        this.dialog\n            .afterOpened()\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe(() => {\n                this.overlayContainer.getContainerElement().setAttribute('role', 'main');\n            });\n\n        this.uploadService.fileUploadStarting.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n            this.uploadStarted = true;\n        });\n    }\n    close() {\n        this.dialog.close();\n        this.overlayContainer.getContainerElement().setAttribute('role', 'region');\n    }\n\n    onSelect(nodeList: Node[]) {\n        this.chosenNode = nodeList;\n    }\n\n    onSiteChange(siteTitle: string) {\n        this.updateTitle(siteTitle);\n    }\n\n    onNavigationChange(pathElement: NodeEntryEvent) {\n        this.currentDirectoryId = pathElement.value.id;\n        this.isLoading = true;\n    }\n\n    onClick(): void {\n        this.data.select.next(this.chosenNode);\n        this.close();\n    }\n\n    updateTitle(siteTitle: string) {\n        if (this.action === NodeAction.CHOOSE && siteTitle) {\n            this.title = this.getTitleTranslation(this.action, siteTitle);\n        }\n    }\n\n    getTitleTranslation(action: NodeAction, name: string): string {\n        return this.translation.instant(`NODE_SELECTOR.${action}_ITEM`, { name: this.translation.instant(name) });\n    }\n\n    getSelectedCount(): number {\n        return this.chosenNode?.length || 0;\n    }\n\n    isCounterVisible(): boolean {\n        return this.action === NodeAction.ATTACH || this.action === NodeAction.CHOOSE;\n    }\n\n    isMultipleSelection(): boolean {\n        return this.data.selectionMode === 'multiple';\n    }\n\n    onError(error) {\n        this.notificationService.showError(error);\n    }\n\n    isChooseButtonDisabled(): boolean {\n        return this.uploadService.isUploading() || !this.hasNodeSelected();\n    }\n\n    hasNodeSelected(): boolean {\n        return this.chosenNode?.length > 0;\n    }\n\n    onShowingSearch(value: boolean) {\n        this.showingSearch = value;\n    }\n\n    onCurrentFolder(currentFolder: Node) {\n        this.hasAllowableOperations = this.contentService.hasAllowableOperations(currentFolder, AllowableOperationsEnum.CREATE);\n        this.breadcrumbFolderNode = currentFolder;\n    }\n\n    isNotAllowedToUpload() {\n        return this.showingSearch || !this.hasAllowableOperations;\n    }\n\n    onFolderLoaded() {\n        this.isLoading = false;\n    }\n\n    onTabSelectionChange(tabIndex: number) {\n        this.selectedTabIndex = tabIndex;\n    }\n\n    isFileServerTabSelected(): boolean {\n        return this.selectedTabIndex === 0;\n    }\n\n    isLocalUploadTabSelected(): boolean {\n        return this.selectedTabIndex === 1;\n    }\n\n    isUploadEnabled(): boolean {\n        return this.canPerformLocalUpload() && this.isLocalUploadTabSelected();\n    }\n\n    canPerformLocalUpload(): boolean {\n        return this.data?.showLocalUploadButton;\n    }\n\n    getWarningMessage(): string {\n        if (this.showingSearch) {\n            return 'NODE_SELECTOR.UPLOAD_BUTTON_SEARCH_WARNING_MESSAGE';\n        }\n        return this.hasNoPermissionToUpload() ? 'NODE_SELECTOR.UPLOAD_BUTTON_PERMISSION_WARNING_MESSAGE' : '';\n    }\n\n    hasNoPermissionToUpload(): boolean {\n        return !this.hasAllowableOperations && !this.showingSearch && !this.isLoading;\n    }\n\n    hasUploadError(): boolean {\n        return this.showingSearch || this.hasNoPermissionToUpload();\n    }\n}\n","<h1 mat-dialog-title class=\"adf-content-node-selector-dialog-title\" data-automation-id=\"content-node-selector-title\">{{title}}</h1>\n<ng-container *ngIf=\"canPerformLocalUpload(); else contentNodePanel\">\n    <mat-tab-group class=\"adf-content-node-selector-dialog-content\"\n                   mat-align-tabs=\"start\"\n                   (selectedIndexChange)=\"onTabSelectionChange($event)\">\n        <mat-tab label=\"{{ 'NODE_SELECTOR.REPOSITORY' | translate }}\">\n            <ng-container *ngTemplateOutlet='contentNodePanel' />\n        </mat-tab>\n        <mat-tab [disabled]=\"isNotAllowedToUpload()\">\n            <div class=\"adf-content-node-selector-local-upload-container\">\n                <div class=\"adf-content-node-selector-local-upload-header\">\n                    <adf-toolbar>\n                        <adf-toolbar-title>\n                            <adf-dropdown-breadcrumb\n                              class=\"adf-content-node-selector-content-breadcrumb\"\n                              [folderNode]=\"breadcrumbFolderNode\"\n                              [rootId]=\"data?.currentFolderId\"\n                              [readOnly]=\"true\"\n                              data-automation-id=\"content-node-selector-upload-breadcrumb\"\n                            />\n                            <ng-container *ngIf=\"isCounterVisible()\" [adf-node-counter]=\"getSelectedCount()\" />\n                        </adf-toolbar-title>\n                    </adf-toolbar>\n                    <ng-template mat-tab-label>\n                        {{ 'NODE_SELECTOR.UPLOAD_FROM_DEVICE' | translate }}\n                        <mat-icon *ngIf=\"hasUploadError()\"\n                                  data-automation-id=\"adf-content-node-selector-disabled-tab-info-icon\"\n                                  title=\"{{ getWarningMessage() | translate }}\">info\n                        </mat-icon>\n                    </ng-template>\n                </div>\n                <div class=\"adf-content-node-selector-local-upload-content\">\n                    <adf-upload-drag-area [rootFolderId]=\"currentDirectoryId\">\n                        <div [class.adf-upload-dialog-container]=\"uploadStarted\">\n                            <adf-file-uploading-dialog [alwaysVisible]=\"true\" />\n                        </div>\n                        <adf-empty-list data-automation-id=\"adf-empty-list\" *ngIf=\"!uploadStarted\">\n                            <div class=\"adf-empty-list_template adf-empty-folder\">\n                                <div class=\"adf-empty-folder-drag-drop\">{{ 'ADF-DATATABLE.EMPTY.DRAG-AND-DROP.TITLE' | translate }}</div>\n                                <div class=\"adf-empty-folder-any-files-here-to-add\">{{ 'ADF-DATATABLE.EMPTY.DRAG-AND-DROP.SUBTITLE' | translate }}</div>\n                                <img [alt]=\"'ADF-DATATABLE.EMPTY.DRAG-AND-DROP.TITLE' | translate\" class=\"adf-empty-folder-image\"\n                                     [src]=\"emptyFolderImageUrl\">\n                            </div>\n                        </adf-empty-list>\n                    </adf-upload-drag-area>\n                </div>\n            </div>\n        </mat-tab>\n    </mat-tab-group>\n</ng-container>\n\n<ng-template #contentNodePanel>\n    <adf-content-node-selector-panel\n      [currentFolderId]=\"data?.currentFolderId\"\n      [restrictRootToCurrentFolderId]=\"data?.restrictRootToCurrentFolderId\"\n      [dropdownHideMyFiles]=\"data?.dropdownHideMyFiles\"\n      [dropdownSiteList]=\"data?.dropdownSiteList\"\n      [rowFilter]=\"data?.rowFilter\"\n      [imageResolver]=\"data?.imageResolver\"\n      [isSelectionValid]=\"data?.isSelectionValid\"\n      [breadcrumbTransform]=\"data?.breadcrumbTransform\"\n      [excludeSiteContent]=\"data?.excludeSiteContent\"\n      [selectionMode]=\"data?.selectionMode\"\n      [where]=\"data?.where\"\n      [showSearch]=\"data?.showSearch\"\n      [showDropdownSiteList]=\"data?.showDropdownSiteList\"\n      [showFilesInResult]=\"data?.showFilesInResult\"\n      [showNodeCounter]=\"isCounterVisible()\"\n      (currentFolder)=\"onCurrentFolder($event)\"\n      (folderLoaded)=\"onFolderLoaded()\"\n      (select)=\"onSelect($event)\"\n      (showingSearch)=\"onShowingSearch($event)\"\n      (siteChange)=\"onSiteChange($event)\"\n      (navigationChange)=\"onNavigationChange($event)\" />\n</ng-template>\n\n\n<mat-dialog-actions class=\"adf-content-node-selector-dialog-actions\">\n    <div>\n        <ng-container *ngIf=\"isUploadEnabled()\">\n            <adf-upload-button\n                [staticTitle]=\"'FORM.FIELD.UPLOAD' | translate \"\n                [multipleFiles]=\"isMultipleSelection()\"\n                [rootFolderId]=\"currentDirectoryId\"\n                [disabled]=\"isNotAllowedToUpload()\"\n                (error)=\"onError($event)\" />\n        </ng-container>\n    </div>\n    <div>\n        <button\n            mat-button\n            (click)=\"close()\"\n            data-automation-id=\"content-node-selector-actions-cancel\">{{ 'NODE_SELECTOR.CANCEL' | translate }}\n        </button>\n\n        <button mat-button\n                [disabled]=\"isChooseButtonDisabled()\"\n                class=\"adf-choose-action\"\n                (click)=\"onClick()\"\n                data-automation-id=\"content-node-selector-actions-choose\">{{ buttonActionName | translate }}\n        </button>\n    </div>\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 { Component, Inject, OnInit, Optional, ViewEncapsulation } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { ReactiveFormsModule, UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\nimport { differenceInSeconds } from 'date-fns';\nimport { NodeBodyLock, Node, NodeEntry, NodesApi } from '@alfresco/js-api';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatDatetimepickerModule } from '@mat-datetimepicker/core';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatButtonModule } from '@angular/material/button';\nimport { AlfrescoApiService } from '../../services/alfresco-api.service';\n\n@Component({\n    selector: 'adf-node-lock',\n    standalone: true,\n    imports: [\n        CommonModule,\n        TranslateModule,\n        MatDialogModule,\n        ReactiveFormsModule,\n        MatCheckboxModule,\n        MatFormFieldModule,\n        MatDatetimepickerModule,\n        MatInputModule,\n        MatButtonModule\n    ],\n    templateUrl: './node-lock.dialog.html',\n    encapsulation: ViewEncapsulation.None\n})\nexport class NodeLockDialogComponent implements OnInit {\n    form: UntypedFormGroup;\n    node: Node = null;\n    nodeName: string;\n\n    private _nodesApi: NodesApi;\n    get nodesApi(): NodesApi {\n        this._nodesApi = this._nodesApi ?? new NodesApi(this.alfrescoApi.getInstance());\n        return this._nodesApi;\n    }\n\n    constructor(\n        private formBuilder: UntypedFormBuilder,\n        public dialog: MatDialogRef<NodeLockDialogComponent>,\n        private alfrescoApi: AlfrescoApiService,\n        @Optional()\n        @Inject(MAT_DIALOG_DATA)\n        public data: any\n    ) {}\n\n    ngOnInit() {\n        const { node } = this.data;\n        this.nodeName = node.name;\n\n        const isTimeLock = !!node.properties['cm:expiryDate'];\n        const time = isTimeLock ? new Date(node.properties['cm:expiryDate']) : new Date();\n\n        this.form = this.formBuilder.group({\n            isLocked: !!node.properties['cm:lockType'] || node.isLocked,\n            allowOwner: node.properties['cm:lockType'] === 'WRITE_LOCK',\n            isTimeLock,\n            time\n        });\n    }\n\n    private get lockTimeInSeconds(): number {\n        if (this.form.value.isTimeLock) {\n            return differenceInSeconds(new Date(this.form.value.time), Date.now());\n        }\n\n        return 0;\n    }\n\n    private get nodeBodyLock(): NodeBodyLock {\n        return {\n            timeToExpire: this.lockTimeInSeconds,\n            type: this.form.value.allowOwner ? 'ALLOW_OWNER_CHANGES' : 'FULL',\n            lifetime: 'PERSISTENT'\n        };\n    }\n\n    private toggleLock(): Promise<NodeEntry> {\n        const {\n            data: { node }\n        } = this;\n\n        if (this.form.value.isLocked) {\n            return this.nodesApi.lockNode(node.id, this.nodeBodyLock);\n        }\n\n        return this.nodesApi.unlockNode(node.id);\n    }\n\n    submit(): void {\n        this.toggleLock()\n            .then((node: NodeEntry) => {\n                this.data.node.isLocked = this.form.value.isLocked;\n                this.data.node.properties = node.entry.properties;\n                this.dialog.close(node.entry);\n            })\n            .catch((error: any) => this.data.onError(error));\n    }\n}\n","<h2 mat-dialog-title>\n    {{ 'CORE.FILE_DIALOG.FILE_LOCK' | translate }}\n</h2>\n\n<mat-dialog-content>\n    <br />\n    <form [formGroup]=\"form\" (submit)=\"submit()\">\n        <mat-checkbox  data-automation-id=\"adf-lock-node-checkbox\" class=\"adf-lock-file-name\" [title]=\"nodeName\" [formControlName]=\"'isLocked'\" ngDefaultControl>\n            {{ 'CORE.FILE_DIALOG.FILE_LOCK_CHECKBOX' | translate }} <strong>\"{{ nodeName }}\"</strong>\n        </mat-checkbox>\n\n        <br />\n\n        <div *ngIf=\"form.value?.isLocked\">\n            <mat-checkbox class=\"adf-lock-file-name\" [formControlName]=\"'allowOwner'\" ngDefaultControl>\n                {{ 'CORE.FILE_DIALOG.ALLOW_OTHERS_CHECKBOX' | translate }}\n            </mat-checkbox>\n\n            <br />\n\n            <mat-checkbox class=\"adf-lock-file-name\" [formControlName]=\"'isTimeLock'\" ngDefaultControl>\n                {{ 'CORE.FILE_DIALOG.TIME_LOCK_CHECKBOX' | translate }}\n            </mat-checkbox>\n\n            <br />\n\n            <mat-form-field *ngIf=\"form.value?.isTimeLock\">\n                <mat-datetimepicker-toggle [for]=\"datetimePicker\" matSuffix />\n                <mat-datetimepicker #datetimePicker type=\"datetime\" [openOnFocus]=\"true\" [timeInterval]=\"1\" />\n                <input matInput [formControlName]=\"'time'\" [matDatetimepicker]=\"datetimePicker\" required autocomplete=\"false\">\n            </mat-form-field>\n        </div>\n    </form>\n    <br />\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=\"lock-dialog-btn-cancel\">\n        {{ 'CORE.FILE_DIALOG.CANCEL_BUTTON.LABEL' | translate }}\n    </button>\n\n    <button class=\"adf-dialog-action-button\" mat-button (click)=\"submit()\">\n        {{ 'CORE.FILE_DIALOG.SAVE_BUTTON.LABEL' | 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 { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { EventEmitter, Injectable, Output } from '@angular/core';\nimport { ThumbnailService, TranslationService } from '@alfresco/adf-core';\nimport { Subject, Observable, throwError } from 'rxjs';\nimport { ShareDataRow } from '../document-list/data/share-data-row.model';\nimport { AllowableOperationsEnum } from '../common/models/allowable-operations.enum';\nimport { ContentService } from '../common/services/content.service';\nimport { Node, NodeEntry, SitePaging } from '@alfresco/js-api';\nimport { DocumentListService } from '../document-list/services/document-list.service';\nimport { ContentNodeSelectorComponent } from './content-node-selector.component';\nimport { ContentNodeSelectorComponentData } from './content-node-selector.component-data.interface';\nimport { NodeAction } from '../document-list/models/node-action.enum';\nimport { NodeLockDialogComponent } from '../dialogs/node-lock/node-lock.dialog';\nimport { switchMap } from 'rxjs/operators';\nimport { SitesService } from '../common/services/sites.service';\n\n@Injectable({\n    providedIn: 'root'\n})\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class ContentNodeDialogService {\n    static nonDocumentSiteContent = ['blog', 'calendar', 'dataLists', 'discussions', 'links', 'wiki'];\n\n    /** Emitted when an error occurs. */\n    @Output()\n    error: EventEmitter<any> = new EventEmitter<any>();\n\n    constructor(\n        private dialog: MatDialog,\n        private contentService: ContentService,\n        private documentListService: DocumentListService,\n        private siteService: SitesService,\n        private translation: TranslationService,\n        private thumbnailService: ThumbnailService\n    ) {}\n\n    /**\n     * Opens a file browser at a chosen folder location.\n     * shows files and folders in the dialog search result.\n     *\n     * @param folderNodeId ID of the folder to use\n     * @returns Information about the selected file(s)\n     */\n    openFileBrowseDialogByFolderId(folderNodeId: string): Observable<Node[]> {\n        return this.documentListService\n            .getFolderNode(folderNodeId)\n            .pipe(switchMap((nodeEntry: NodeEntry) => this.openUploadFileDialog(NodeAction.CHOOSE, nodeEntry.entry, true)));\n    }\n\n    /**\n     * Opens a lock node dialog.\n     *\n     * @param contentEntry Node to lock\n     * @returns Error/status message (if any)\n     */\n    public openLockNodeDialog(contentEntry: Node): Subject<string> {\n        const observable: Subject<string> = new Subject<string>();\n\n        if (this.contentService.hasAllowableOperations(contentEntry, AllowableOperationsEnum.LOCK)) {\n            this.dialog.open(NodeLockDialogComponent, {\n                data: {\n                    node: contentEntry,\n                    onError: (error) => {\n                        this.error.emit(error);\n                        observable.error(error);\n                    }\n                },\n                width: '400px'\n            });\n        } else {\n            observable.error('OPERATION.FAIL.NODE.NO_PERMISSION');\n        }\n\n        return observable;\n    }\n\n    /**\n     * Opens a file browser at a chosen site location.\n     * shows files and folders in the dialog search result.\n     *\n     * @returns Information about the selected file(s)\n     */\n    openFileBrowseDialogBySite(): Observable<Node[]> {\n        return this.siteService\n            .getSites()\n            .pipe(switchMap((response: SitePaging) => this.openFileBrowseDialogByFolderId(response.list.entries[0].entry.guid)));\n    }\n\n    /**\n     * Opens a file browser at a default myFile location.\n     * shows files and folders in the dialog search result.\n     *\n     * @returns Information about the selected file(s)\n     */\n    openFileBrowseDialogByDefaultLocation(): Observable<Node[]> {\n        return this.openFileBrowseDialogByFolderId('-my-');\n    }\n\n    /**\n     * Opens a folder browser at a chosen site location.\n     *\n     * @returns Information about the selected folder(s)\n     */\n    openFolderBrowseDialogBySite(): Observable<Node[]> {\n        return this.openFolderBrowseDialogByFolderId('-my-');\n    }\n\n    /**\n     * Opens a folder browser at a chosen folder location.\n     *\n     * @param folderNodeId ID of the folder to use\n     * @returns Information about the selected folder(s)\n     */\n    openFolderBrowseDialogByFolderId(folderNodeId: string): Observable<Node[]> {\n        return this.documentListService\n            .getFolderNode(folderNodeId)\n            .pipe(switchMap((node: NodeEntry) => this.openUploadFolderDialog(NodeAction.CHOOSE, node.entry)));\n    }\n\n    /**\n     * Opens a dialog to copy or move an item to a new location.\n     *\n     * @param action Name of the action (eg, \"Copy\" or \"Move\") to show in the title\n     * @param contentEntry Item to be copied or moved\n     * @param permission Permission for the operation\n     * @param excludeSiteContent The site content that should be filtered out\n     * @returns Information about files that were copied/moved\n     */\n    openCopyMoveDialog(action: NodeAction, contentEntry: Node, permission?: string, excludeSiteContent?: string[]): Observable<Node[]> {\n        if (this.contentService.hasAllowableOperations(contentEntry, permission)) {\n            const select = new Subject<Node[]>();\n\n            const data: ContentNodeSelectorComponentData = {\n                title: this.getTitleTranslation(action, contentEntry.name),\n                actionName: action,\n                selectionMode: 'single',\n                currentFolderId: contentEntry.parentId,\n                imageResolver: this.imageResolver.bind(this),\n                where: '(isFolder=true)',\n                isSelectionValid: this.isCopyMoveSelectionValid.bind(this),\n                excludeSiteContent: excludeSiteContent || ContentNodeDialogService.nonDocumentSiteContent,\n                select\n            };\n\n            const dialogRef = this.openContentNodeDialog(data, 'adf-content-node-selector-dialog', '630px');\n            dialogRef.afterClosed().subscribe({ next: () => select.complete() });\n\n            return select;\n        } else {\n            const errors = new Error(JSON.stringify({ error: { statusCode: 403 } }));\n            return throwError(errors);\n        }\n    }\n\n    /**\n     * Gets the translation of the dialog title.\n     *\n     * @param action Name of the action to display in the dialog title\n     * @param name Name of the item on which the action is being performed\n     * @returns Translated version of the title\n     */\n    getTitleTranslation(action: string, name: string): string {\n        return this.translation.instant(`NODE_SELECTOR.${action.toUpperCase()}_ITEM`, { name });\n    }\n\n    /**\n     * Opens a dialog to choose folders to upload.\n     *\n     * @param action Name of the action to show in the title\n     * @param contentEntry  Item to upload\n     * @returns Information about the chosen folder(s)\n     */\n    openUploadFolderDialog(action: NodeAction, contentEntry: Node): Observable<Node[]> {\n        const select = new Subject<Node[]>();\n\n        const data: ContentNodeSelectorComponentData = {\n            title: this.getTitleTranslation(action, this.translation.instant('DROPDOWN.MY_FILES_OPTION')),\n            actionName: action,\n            selectionMode: 'single',\n            currentFolderId: contentEntry.id,\n            imageResolver: this.imageResolver.bind(this),\n            isSelectionValid: this.hasAllowableOperationsOnNodeFolder.bind(this),\n            where: '(isFolder=true)',\n            select\n        };\n\n        const dialogRef = this.openContentNodeDialog(data, 'adf-content-node-selector-dialog', '630px');\n        dialogRef.afterClosed().subscribe({ next: () => select.complete() });\n\n        return select;\n    }\n\n    /**\n     * Opens a dialog to choose a file to upload.\n     *\n     * @param action Name of the action to show in the title\n     * @param contentEntry Item to upload\n     * @param showFilesInResult Show files in dialog search result\n     * @returns Information about the chosen file(s)\n     */\n    openUploadFileDialog(action: NodeAction, contentEntry: Node, showFilesInResult = false): Observable<Node[]> {\n        const select = new Subject<Node[]>();\n\n        const data: ContentNodeSelectorComponentData = {\n            title: this.getTitleTranslation(action, this.translation.instant('DROPDOWN.MY_FILES_OPTION')),\n            actionName: action,\n            selectionMode: 'single',\n            currentFolderId: contentEntry.id,\n            imageResolver: this.imageResolver.bind(this),\n            isSelectionValid: (entry: Node) => entry.isFile,\n            select,\n            showFilesInResult\n        };\n\n        const dialogRef = this.openContentNodeDialog(data, 'adf-content-node-selector-dialog', '630px');\n        dialogRef.afterClosed().subscribe({ next: () => select.complete() });\n\n        return select;\n    }\n\n    private openContentNodeDialog(\n        data: ContentNodeSelectorComponentData,\n        panelClass: string,\n        width: string\n    ): MatDialogRef<ContentNodeSelectorComponent> {\n        return this.dialog.open(ContentNodeSelectorComponent, {\n            data,\n            panelClass,\n            width,\n            disableClose: true\n        });\n    }\n\n    private imageResolver(row: ShareDataRow): string | null {\n        const entry: Node = row.node.entry;\n        if (!this.contentService.hasAllowableOperations(entry, 'create')) {\n            if (this.isNodeFolder(entry)) {\n                return this.thumbnailService.getMimeTypeIcon('disable/folder');\n            }\n        }\n\n        return null;\n    }\n\n    private hasAllowableOperationsOnNodeFolder(entry: Node): boolean {\n        return this.isNodeFolder(entry) && this.contentService.hasAllowableOperations(entry, 'create');\n    }\n\n    private isNodeFolder(entry: Node): boolean {\n        return entry.isFolder;\n    }\n\n    private isCopyMoveSelectionValid(entry: Node): boolean {\n        return this.hasEntityCreatePermission(entry) && !this.isSite(entry);\n    }\n\n    private hasEntityCreatePermission(entry: Node): boolean {\n        return this.contentService.hasAllowableOperations(entry, 'create');\n    }\n\n    private isSite(entry) {\n        return !!entry.guid || entry.nodeType === 'st:site' || entry.nodeType === 'st:sites';\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, Renderer2, HostListener, Input, AfterViewInit } from '@angular/core';\nimport { Node } from '@alfresco/js-api';\nimport { ContentService } from '../common/services/content.service';\nimport { AllowableOperationsEnum } from '../common/models/allowable-operations.enum';\nimport { ContentNodeDialogService } from '../content-node-selector/content-node-dialog.service';\n\n@Directive({\n    standalone: true,\n    selector: '[adf-node-lock]'\n})\nexport class NodeLockDirective implements AfterViewInit {\n    /** Node to lock/unlock. */\n    @Input('adf-node-lock')\n    node: Node;\n\n    @HostListener('click', ['$event'])\n    onClick(event) {\n        event.stopPropagation();\n        this.contentNodeDialogService.openLockNodeDialog(this.node);\n    }\n\n    constructor(\n        public element: ElementRef,\n        private renderer: Renderer2,\n        private contentService: ContentService,\n        private contentNodeDialogService: ContentNodeDialogService\n    ) {}\n\n    ngAfterViewInit() {\n        const hasAllowableOperations = this.contentService.hasAllowableOperations(this.node, AllowableOperationsEnum.LOCK);\n        this.renderer.setProperty(this.element.nativeElement, 'disabled', !hasAllowableOperations);\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 { ChangeDetectorRef, Directive, ElementRef, Host, Inject, Input, OnChanges, Optional, Renderer2, SimpleChanges } from '@angular/core';\nimport { NodeEntry } from '@alfresco/js-api';\nimport { EXTENDIBLE_COMPONENT } from '@alfresco/adf-core';\nimport { ContentService } from '../common/services/content.service';\nimport { NodeAllowableOperationSubject } from '../interfaces/node-allowable-operation-subject.interface';\n\n@Directive({\n    standalone: true,\n    selector: '[adf-check-allowable-operation]'\n})\nexport class CheckAllowableOperationDirective implements OnChanges {\n    /**\n     * Node permission to check (create, delete, update, updatePermissions,\n     * !create, !delete, !update, !updatePermissions).\n     */\n    @Input('adf-check-allowable-operation')\n    permission: string = null;\n\n    /** Nodes to check permission for. */\n    @Input('adf-nodes')\n    nodes: NodeEntry[] = [];\n\n    constructor(\n        private elementRef: ElementRef,\n        private renderer: Renderer2,\n        private contentService: ContentService,\n        private changeDetector: ChangeDetectorRef,\n\n        @Host()\n        @Optional()\n        @Inject(EXTENDIBLE_COMPONENT)\n        private parentComponent?: NodeAllowableOperationSubject\n    ) {}\n\n    ngOnChanges(changes: SimpleChanges) {\n        if (changes.nodes && !changes.nodes.firstChange) {\n            this.updateElement();\n        }\n    }\n\n    /**\n     * Updates disabled state for the decorated element\n     *\n     * @returns the new state\n     */\n    updateElement(): boolean {\n        const enable = this.hasAllowableOperations(this.nodes, this.permission);\n\n        if (enable) {\n            this.enable();\n        } else {\n            this.disable();\n        }\n\n        return enable;\n    }\n\n    private enable(): void {\n        if (this.parentComponent) {\n            this.parentComponent.disabled = false;\n            this.changeDetector.detectChanges();\n        } else {\n            this.enableElement();\n        }\n    }\n\n    private disable(): void {\n        if (this.parentComponent) {\n            this.parentComponent.disabled = true;\n            this.changeDetector.detectChanges();\n        } else {\n            this.disableElement();\n        }\n    }\n\n    /**\n     * Enables decorated element\n     *\n     */\n    enableElement(): void {\n        this.renderer.removeAttribute(this.elementRef.nativeElement, 'disabled');\n    }\n\n    /**\n     * Disables decorated element\n     *\n     */\n    disableElement(): void {\n        this.renderer.setAttribute(this.elementRef.nativeElement, 'disabled', 'true');\n    }\n\n    /**\n     * Checks whether all nodes have a particular permission\n     *\n     * @param  nodes Node collection to check\n     * @param  permission Permission to check for each node\n     * @returns `true` if there are allowable operations, otherwise `false`\n     */\n    hasAllowableOperations(nodes: NodeEntry[], permission: string): boolean {\n        if (nodes && nodes.length > 0) {\n            return nodes.every((node) => this.contentService.hasAllowableOperations(node.entry, permission));\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 { Directive, HostListener, Input, OnChanges, Output, EventEmitter, SimpleChanges } from '@angular/core';\nimport { FavoriteBodyCreate, FavoritesApi } from '@alfresco/js-api';\nimport { AlfrescoApiService } from '../services/alfresco-api.service';\nimport { LibraryEntity } from '../interfaces/library-entity.interface';\n\n@Directive({\n    standalone: true,\n    selector: '[adf-favorite-library]',\n    exportAs: 'favoriteLibrary'\n})\nexport class LibraryFavoriteDirective implements OnChanges {\n    @Input('adf-favorite-library')\n    library: LibraryEntity = null;\n\n    @Output() toggle = new EventEmitter<any>();\n    // eslint-disable-next-line @angular-eslint/no-output-native\n    @Output() error = new EventEmitter<any>();\n\n    private targetLibrary = null;\n\n    private _favoritesApi: FavoritesApi;\n    get favoritesApi(): FavoritesApi {\n        this._favoritesApi = this._favoritesApi ?? new FavoritesApi(this.alfrescoApiService.getInstance());\n        return this._favoritesApi;\n    }\n\n    @HostListener('click')\n    onClick() {\n        const guid = this.targetLibrary.entry.guid;\n\n        if (this.targetLibrary.isFavorite) {\n            this.removeFavorite(guid);\n        } else {\n            this.addFavorite({\n                target: {\n                    site: {\n                        guid\n                    }\n                }\n            });\n        }\n    }\n\n    constructor(private alfrescoApiService: AlfrescoApiService) {}\n\n    ngOnChanges(changes: SimpleChanges) {\n        if (!changes.library.currentValue) {\n            this.targetLibrary = null;\n            return;\n        }\n\n        this.targetLibrary = changes.library.currentValue;\n        this.markFavoriteLibrary(changes.library.currentValue);\n    }\n\n    isFavorite(): boolean {\n        return this.targetLibrary?.isFavorite;\n    }\n\n    private async markFavoriteLibrary(library: LibraryEntity) {\n        if (this.targetLibrary.isFavorite === undefined) {\n            try {\n                await this.favoritesApi.getFavoriteSite('-me-', library.entry.id);\n                this.targetLibrary.isFavorite = true;\n            } catch {\n                this.targetLibrary.isFavorite = false;\n            }\n        } else {\n            this.targetLibrary = library;\n        }\n    }\n\n    private addFavorite(favoriteBody: FavoriteBodyCreate) {\n        this.favoritesApi\n            .createFavorite('-me-', favoriteBody)\n            .then((libraryEntry) => {\n                this.targetLibrary.isFavorite = true;\n                this.toggle.emit(libraryEntry);\n            })\n            .catch((error) => this.error.emit(error));\n    }\n\n    private removeFavorite(favoriteId: string) {\n        this.favoritesApi\n            .deleteFavorite('-me-', favoriteId)\n            .then((libraryBody) => {\n                this.targetLibrary.isFavorite = false;\n                this.toggle.emit(libraryBody);\n            })\n            .catch((error) => this.error.emit(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 { Injectable } from '@angular/core';\nimport { filter } from 'rxjs/operators';\nimport { ReplaySubject } from 'rxjs';\nimport { VersionInfo, RepositoryInfo } from '@alfresco/js-api';\nimport { DiscoveryApiService } from '../common/services/discovery-api.service';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class VersionCompatibilityService {\n    private acsVersion: VersionInfo;\n\n    acsVersionInitialized$ = new ReplaySubject<void>();\n\n    constructor(private discoveryApiService: DiscoveryApiService) {\n        this.discoveryApiService.ecmProductInfo$\n            .pipe(filter((acsInfo) => !!acsInfo))\n            .subscribe((acsInfo: RepositoryInfo) => this.initializeAcsVersion(acsInfo.version));\n    }\n\n    private initializeAcsVersion(acsVersion: VersionInfo) {\n        this.acsVersion = acsVersion;\n        this.acsVersionInitialized$.next(undefined);\n    }\n\n    getAcsVersion(): VersionInfo {\n        return this.acsVersion;\n    }\n\n    isVersionSupported(requiredVersion: string): boolean {\n        const parsedRequiredVersion = this.parseVersion(requiredVersion);\n        const currentVersion = this.getAcsVersion();\n\n        let versionSupported = false;\n\n        if (currentVersion) {\n            if (+currentVersion.major > +parsedRequiredVersion.major) {\n                versionSupported = true;\n            } else if (currentVersion.major === parsedRequiredVersion.major && +currentVersion.minor > +parsedRequiredVersion.minor) {\n                versionSupported = true;\n            } else if (\n                currentVersion.major === parsedRequiredVersion.major &&\n                currentVersion.minor === parsedRequiredVersion.minor &&\n                +currentVersion.patch >= +parsedRequiredVersion.patch\n            ) {\n                versionSupported = true;\n            }\n        }\n\n        return versionSupported;\n    }\n\n    private parseVersion(version: string): VersionInfo {\n        const major = version.split('.')[0];\n        const minor = version.split('.')[1] || '0';\n        const patch = version.split('.')[2] || '0';\n\n        return {\n            major,\n            minor,\n            patch\n        } as VersionInfo;\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, HostListener, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport { SiteEntry, SiteMembershipRequestBodyCreate, SiteMembershipRequestEntry, SitesApi } from '@alfresco/js-api';\nimport { BehaviorSubject, from, Observable } from 'rxjs';\nimport { AlfrescoApiService } from '../services/alfresco-api.service';\nimport { LibraryMembershipToggleEvent } from '../interfaces/library-membership-toggle-event.interface';\nimport { LibraryMembershipErrorEvent } from '../interfaces/library-membership-error-event.interface';\nimport { VersionCompatibilityService } from '../version-compatibility/version-compatibility.service';\nimport { SitesService } from '../common/services/sites.service';\n\n@Directive({\n    standalone: true,\n    selector: '[adf-library-membership]',\n    exportAs: 'libraryMembership'\n})\nexport class LibraryMembershipDirective implements OnChanges {\n    targetSite: any = null;\n\n    isJoinRequested: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n    private _sitesApi: SitesApi;\n    get sitesApi(): SitesApi {\n        this._sitesApi = this._sitesApi ?? new SitesApi(this.alfrescoApiService.getInstance());\n        return this._sitesApi;\n    }\n\n    /** Site for which to toggle the membership request. */\n    @Input('adf-library-membership')\n    selection: SiteEntry = null;\n\n    /** Site for which to toggle the membership request. */\n    @Input()\n    isAdmin = false;\n\n    @Output()\n    toggle = new EventEmitter<LibraryMembershipToggleEvent>();\n\n    // eslint-disable-next-line @angular-eslint/no-output-native\n    @Output()\n    error = new EventEmitter<LibraryMembershipErrorEvent>();\n\n    @HostListener('click')\n    onClick() {\n        this.toggleMembershipRequest();\n    }\n\n    constructor(\n        private alfrescoApiService: AlfrescoApiService,\n        private sitesService: SitesService,\n        private versionCompatibilityService: VersionCompatibilityService\n    ) {}\n\n    ngOnChanges(changes: SimpleChanges) {\n        if (!changes.selection.currentValue?.entry) {\n            this.targetSite = null;\n\n            return;\n        }\n        this.targetSite = changes.selection.currentValue.entry;\n        this.markMembershipRequest();\n    }\n\n    toggleMembershipRequest() {\n        if (!this.targetSite) {\n            return;\n        }\n\n        if (this.targetSite.joinRequested) {\n            this.cancelJoinRequest().subscribe(\n                () => {\n                    this.targetSite.joinRequested = false;\n                    this.isJoinRequested.next(false);\n                    const info = {\n                        updatedEntry: this.targetSite,\n                        shouldReload: false,\n                        i18nKey: 'ADF_LIBRARY_MEMBERSHIP_MESSAGES.INFO.JOIN_CANCELED'\n                    };\n                    this.toggle.emit(info);\n                },\n                (error) => {\n                    const errWithMessage = {\n                        error,\n                        i18nKey: 'ADF_LIBRARY_MEMBERSHIP_MESSAGES.ERRORS.JOIN_CANCEL_FAILED'\n                    };\n                    this.error.emit(errWithMessage);\n                }\n            );\n        }\n\n        if (!this.targetSite.joinRequested && !this.isAdmin) {\n            this.joinLibraryRequest().subscribe(\n                (createdMembership) => {\n                    this.targetSite.joinRequested = true;\n                    this.isJoinRequested.next(true);\n\n                    if (createdMembership.entry?.site?.role) {\n                        const info = {\n                            shouldReload: true,\n                            i18nKey: 'ADF_LIBRARY_MEMBERSHIP_MESSAGES.INFO.JOINED'\n                        };\n                        this.toggle.emit(info);\n                    } else {\n                        const info = {\n                            updatedEntry: this.targetSite,\n                            shouldReload: false,\n                            i18nKey: 'ADF_LIBRARY_MEMBERSHIP_MESSAGES.INFO.JOIN_REQUESTED'\n                        };\n                        this.toggle.emit(info);\n                    }\n                },\n                (error) => {\n                    const errWithMessage = {\n                        error,\n                        i18nKey: 'ADF_LIBRARY_MEMBERSHIP_MESSAGES.ERRORS.JOIN_REQUEST_FAILED'\n                    };\n\n                    const senderEmailCheck = 'Failed to resolve sender mail address';\n                    const receiverEmailCheck = 'All recipients for the mail action were invalid';\n\n                    if (error.message) {\n                        if (error.message.includes(senderEmailCheck)) {\n                            errWithMessage.i18nKey = 'ADF_LIBRARY_MEMBERSHIP_MESSAGES.ERRORS.INVALID_SENDER_EMAIL';\n                        } else if (error.message.includes(receiverEmailCheck)) {\n                            errWithMessage.i18nKey = 'ADF_LIBRARY_MEMBERSHIP_MESSAGES.ERRORS.INVALID_RECEIVER_EMAIL';\n                        }\n                    }\n\n                    this.error.emit(errWithMessage);\n                }\n            );\n        }\n\n        if (this.isAdmin) {\n            this.joinLibrary().subscribe(\n                (createdMembership) => {\n                    if (createdMembership.entry?.role) {\n                        const info = {\n                            shouldReload: true,\n                            i18nKey: 'ADF_LIBRARY_MEMBERSHIP_MESSAGES.INFO.JOINED'\n                        };\n                        this.toggle.emit(info);\n                    }\n                },\n                (error) => {\n                    const errWithMessage = {\n                        error,\n                        i18nKey: 'ADF_LIBRARY_MEMBERSHIP_MESSAGES.ERRORS.JOIN_REQUEST_FAILED'\n                    };\n\n                    const senderEmailCheck = 'Failed to resolve sender mail address';\n                    const receiverEmailCheck = 'All recipients for the mail action were invalid';\n\n                    if (error.message) {\n                        if (error.message.includes(senderEmailCheck)) {\n                            errWithMessage.i18nKey = 'ADF_LIBRARY_MEMBERSHIP_MESSAGES.ERRORS.INVALID_SENDER_EMAIL';\n                        } else if (error.message.includes(receiverEmailCheck)) {\n                            errWithMessage.i18nKey = 'ADF_LIBRARY_MEMBERSHIP_MESSAGES.ERRORS.INVALID_RECEIVER_EMAIL';\n                        }\n                    }\n\n                    this.error.emit(errWithMessage);\n                }\n            );\n        }\n    }\n\n    markMembershipRequest() {\n        if (!this.targetSite) {\n            return;\n        }\n\n        this.getMembershipRequest().subscribe(\n            (data) => {\n                if (data.entry.id === this.targetSite.id) {\n                    this.targetSite.joinRequested = true;\n                    this.isJoinRequested.next(true);\n                }\n            },\n            () => {\n                this.targetSite.joinRequested = false;\n                this.isJoinRequested.next(false);\n            }\n        );\n    }\n\n    private joinLibraryRequest(): Observable<SiteMembershipRequestEntry> {\n        const memberBody = {\n            id: this.targetSite.id\n        } as SiteMembershipRequestBodyCreate;\n\n        if (this.versionCompatibilityService.isVersionSupported('7.0.0')) {\n            memberBody.client = 'workspace';\n        }\n        return from(this.sitesApi.createSiteMembershipRequestForPerson('-me-', memberBody));\n    }\n\n    private joinLibrary() {\n        return this.sitesService.createSiteMembership(this.targetSite.id, {\n            role: 'SiteConsumer',\n            id: '-me-'\n        });\n    }\n\n    private cancelJoinRequest(): Observable<void> {\n        return from(this.sitesApi.deleteSiteMembershipRequestForPerson('-me-', this.targetSite.id));\n    }\n\n    private getMembershipRequest() {\n        return from(this.sitesApi.getSiteMembershipRequestForPerson('-me-', this.targetSite.id));\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, EventEmitter, HostListener, Input, OnChanges, Output } from '@angular/core';\nimport { NodeEntry, Node, DeletedNodeEntry, DeletedNode, TrashcanApi, NodesApi } from '@alfresco/js-api';\nimport { Observable, forkJoin, from, of } from 'rxjs';\nimport { TranslationService } from '@alfresco/adf-core';\nimport { map, catchError, retry } from 'rxjs/operators';\nimport { AlfrescoApiService } from '../services/alfresco-api.service';\n\ninterface ProcessedNodeData {\n    entry: Node | DeletedNode;\n    status: number;\n}\n\ninterface ProcessStatus {\n    success: ProcessedNodeData[];\n    failed: ProcessedNodeData[];\n\n    someFailed();\n\n    someSucceeded();\n\n    oneFailed();\n\n    oneSucceeded();\n\n    allSucceeded();\n\n    allFailed();\n}\n\n@Directive({\n    standalone: true,\n    selector: '[adf-delete]'\n})\nexport class NodeDeleteDirective implements OnChanges {\n    /** Array of nodes to delete. */\n    @Input('adf-delete')\n    selection: NodeEntry[] | DeletedNodeEntry[];\n\n    /** If true then the nodes are deleted immediately rather than being put in the trash */\n    @Input()\n    permanent: boolean = false;\n\n    /** Emitted when the nodes have been deleted. */\n    @Output()\n    delete: EventEmitter<any> = new EventEmitter();\n\n    private _trashcanApi: TrashcanApi;\n    get trashcanApi(): TrashcanApi {\n        this._trashcanApi = this._trashcanApi ?? new TrashcanApi(this.alfrescoApiService.getInstance());\n        return this._trashcanApi;\n    }\n\n    private _nodesApi: NodesApi;\n    get nodesApi(): NodesApi {\n        this._nodesApi = this._nodesApi ?? new NodesApi(this.alfrescoApiService.getInstance());\n        return this._nodesApi;\n    }\n\n    @HostListener('click')\n    onClick() {\n        this.process(this.selection);\n    }\n\n    constructor(private alfrescoApiService: AlfrescoApiService, private translation: TranslationService, private elementRef: ElementRef) {}\n\n    ngOnChanges() {\n        if (!this.selection || (this.selection && this.selection.length === 0)) {\n            this.setDisableAttribute(true);\n        } else {\n            if (!this.elementRef.nativeElement.hasAttribute('adf-check-allowable-operation')) {\n                this.setDisableAttribute(false);\n            }\n        }\n    }\n\n    private setDisableAttribute(disable: boolean) {\n        this.elementRef.nativeElement.disabled = disable;\n    }\n\n    private process(selection: NodeEntry[] | DeletedNodeEntry[]) {\n        if (selection?.length) {\n            const batch = this.getDeleteNodesBatch(selection);\n\n            forkJoin(...batch).subscribe((data: ProcessedNodeData[]) => {\n                const processedItems: ProcessStatus = this.processStatus(data);\n                const message = this.getMessage(processedItems);\n\n                if (message) {\n                    this.delete.emit(message);\n                }\n            });\n        }\n    }\n\n    private getDeleteNodesBatch(selection: NodeEntry[] | DeletedNodeEntry[]): Observable<ProcessedNodeData>[] {\n        return selection.map((node) => this.deleteNode(node));\n    }\n\n    private deleteNode(node: NodeEntry | DeletedNodeEntry): Observable<ProcessedNodeData> {\n        const id = (node.entry as any).nodeId || node.entry.id;\n\n        let promise: Promise<any>;\n\n        if (Object.prototype.hasOwnProperty.call(node.entry, 'archivedAt') && node.entry['archivedAt']) {\n            promise = this.trashcanApi.deleteDeletedNode(id);\n        } else {\n            promise = this.nodesApi.deleteNode(id, { permanent: this.permanent });\n        }\n\n        return from(promise).pipe(\n            retry(3),\n            map(() => ({\n                entry: node.entry,\n                status: 1\n            })),\n            catchError(() =>\n                of({\n                    entry: node.entry,\n                    status: 0\n                })\n            )\n        );\n    }\n\n    private processStatus(data): ProcessStatus {\n        const deleteStatus = {\n            success: [],\n            failed: [],\n            get someFailed() {\n                return !!this.failed.length;\n            },\n            get someSucceeded() {\n                return !!this.success.length;\n            },\n            get oneFailed() {\n                return this.failed.length === 1;\n            },\n            get oneSucceeded() {\n                return this.success.length === 1;\n            },\n            get allSucceeded() {\n                return this.someSucceeded && !this.someFailed;\n            },\n            get allFailed() {\n                return this.someFailed && !this.someSucceeded;\n            }\n        };\n\n        return data.reduce((acc, next) => {\n            if (next.status === 1) {\n                acc.success.push(next);\n            } else {\n                acc.failed.push(next);\n            }\n\n            return acc;\n        }, deleteStatus);\n    }\n\n    private getMessage(status: ProcessStatus): string | null {\n        if (status.allFailed && !status.oneFailed) {\n            return this.translation.instant(\n                'CORE.DELETE_NODE.ERROR_PLURAL',\n                // eslint-disable-next-line id-blacklist\n                { number: status.failed.length }\n            );\n        }\n\n        if (status.allSucceeded && !status.oneSucceeded) {\n            return this.translation.instant(\n                'CORE.DELETE_NODE.PLURAL',\n                // eslint-disable-next-line id-blacklist\n                { number: status.success.length }\n            );\n        }\n\n        if (status.someFailed && status.someSucceeded && !status.oneSucceeded) {\n            return this.translation.instant('CORE.DELETE_NODE.PARTIAL_PLURAL', {\n                success: status.success.length,\n                failed: status.failed.length\n            });\n        }\n\n        if (status.someFailed && status.oneSucceeded) {\n            return this.translation.instant('CORE.DELETE_NODE.PARTIAL_SINGULAR', {\n                success: status.success.length,\n                failed: status.failed.length\n            });\n        }\n\n        if (status.oneFailed && !status.someSucceeded) {\n            return this.translation.instant('CORE.DELETE_NODE.ERROR_SINGULAR', { name: status.failed[0].entry.name });\n        }\n\n        if (status.oneSucceeded && !status.someFailed) {\n            return this.translation.instant('CORE.DELETE_NODE.SINGULAR', { name: status.success[0].entry.name });\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\n/* eslint-disable @angular-eslint/no-input-rename */\n\nimport { Directive, EventEmitter, HostListener, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport { FavoriteBodyCreate, NodeEntry, SharedLinkEntry, Node, SharedLink, FavoritesApi } from '@alfresco/js-api';\nimport { Observable, from, forkJoin, of } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { AlfrescoApiService } from '../services/alfresco-api.service';\n\n@Directive({\n    standalone: true,\n    selector: '[adf-node-favorite]',\n    exportAs: 'adfFavorite'\n})\nexport class NodeFavoriteDirective implements OnChanges {\n    favorites: any[] = [];\n\n    private _favoritesApi: FavoritesApi;\n    get favoritesApi(): FavoritesApi {\n        this._favoritesApi = this._favoritesApi ?? new FavoritesApi(this.alfrescoApiService.getInstance());\n        return this._favoritesApi;\n    }\n\n    /** Array of nodes to toggle as favorites. */\n    @Input('adf-node-favorite')\n    selection: NodeEntry[] = [];\n\n    /** Emitted when the favorite setting is complete. */\n    @Output() toggle = new EventEmitter<any>();\n\n    /** Emitted when the favorite setting fails. */\n    @Output() error = new EventEmitter<any>();\n\n    @HostListener('click')\n    onClick() {\n        this.toggleFavorite();\n    }\n\n    constructor(private alfrescoApiService: AlfrescoApiService) {}\n\n    ngOnChanges(changes: SimpleChanges) {\n        if (!changes.selection.currentValue.length) {\n            this.favorites = [];\n\n            return;\n        }\n\n        this.markFavoritesNodes(changes.selection.currentValue);\n    }\n\n    toggleFavorite() {\n        if (!this.favorites.length) {\n            return;\n        }\n\n        const every = this.favorites.every((selected) => selected.entry.isFavorite);\n\n        if (every) {\n            const batch = this.favorites.map((selected: NodeEntry | SharedLinkEntry) => {\n                // shared files have nodeId\n                const id = (selected as SharedLinkEntry).entry.nodeId || selected.entry.id;\n\n                return from(this.favoritesApi.deleteFavorite('-me-', id));\n            });\n\n            forkJoin(batch).subscribe(\n                () => {\n                    this.favorites.forEach((selected) => (selected.entry.isFavorite = false));\n                    this.toggle.emit();\n                },\n                (error) => this.error.emit(error)\n            );\n        }\n\n        if (!every) {\n            const notFavorite = this.favorites.filter((node) => !node.entry.isFavorite);\n            const body = notFavorite.map((node) => this.createFavoriteBody(node));\n\n            from(this.favoritesApi.createFavorite('-me-', body as any)).subscribe(\n                () => {\n                    notFavorite.forEach((selected) => (selected.entry.isFavorite = true));\n                    this.toggle.emit();\n                },\n                (error) => this.error.emit(error)\n            );\n        }\n    }\n\n    markFavoritesNodes(selection: NodeEntry[]) {\n        if (selection.length <= this.favorites.length) {\n            this.favorites = this.reduce(this.favorites, selection);\n        }\n\n        const result = this.diff(selection, this.favorites);\n        const batch = this.getProcessBatch(result);\n\n        forkJoin(batch).subscribe((data) => {\n            this.favorites.push(...data);\n        });\n    }\n\n    hasFavorites(): boolean {\n        if (this.favorites && !this.favorites.length) {\n            return false;\n        }\n\n        return this.favorites.every((selected) => selected.entry.isFavorite);\n    }\n\n    private getProcessBatch(selection: NodeEntry[]): Observable<any>[] {\n        return selection.map((selected) => this.getFavorite(selected));\n    }\n\n    private getFavorite(selected: NodeEntry | SharedLinkEntry): Observable<any> {\n        const node: Node | SharedLink = selected.entry;\n\n        // ACS 6.x with 'isFavorite' include\n        if (node && Object.prototype.hasOwnProperty.call(node, 'isFavorite')) {\n            return of(selected);\n        }\n\n        // ACS 5.x and 6.x without 'isFavorite' include\n        const { name, isFile, isFolder } = node as Node;\n        const id = (node as SharedLink).nodeId || node.id;\n\n        const promise = this.favoritesApi.getFavorite('-me-', id);\n\n        return from(promise).pipe(\n            map(() => ({\n                entry: {\n                    id,\n                    isFolder,\n                    isFile,\n                    name,\n                    isFavorite: true\n                }\n            })),\n            catchError(() =>\n                of({\n                    entry: {\n                        id,\n                        isFolder,\n                        isFile,\n                        name,\n                        isFavorite: false\n                    }\n                })\n            )\n        );\n    }\n\n    private createFavoriteBody(node: NodeEntry): FavoriteBodyCreate {\n        const type = this.getNodeType(node);\n        // shared files have nodeId\n        const id = node.entry['nodeId'] || node.entry.id;\n\n        return {\n            target: {\n                [type]: {\n                    guid: id\n                }\n            }\n        };\n    }\n\n    private getNodeType(node: NodeEntry): string {\n        // shared could only be files\n        if (!node.entry.isFile && !node.entry.isFolder) {\n            return 'file';\n        }\n\n        return node.entry.isFile ? 'file' : 'folder';\n    }\n\n    private diff(list: NodeEntry[], patch: any[]): NodeEntry[] {\n        const ids = patch.map((item) => item.entry.id);\n\n        return list.filter((item) => (ids.includes(item.entry.id) ? null : item));\n    }\n\n    private reduce(patch: any[], comparator: NodeEntry[]): any[] {\n        const ids = comparator.map((item) => item.entry.id);\n\n        return patch.filter((item) => (ids.includes(item.entry.id) ? item : 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\n/* eslint-disable @angular-eslint/component-selector, @angular-eslint/no-input-rename */\n\nimport { Directive, EventEmitter, HostListener, Input, Output } from '@angular/core';\nimport { TrashcanApi, DeletedNodeEntry, DeletedNodesPaging } from '@alfresco/js-api';\nimport { Observable, forkJoin, from, of } from 'rxjs';\nimport { tap, mergeMap, map, catchError } from 'rxjs/operators';\nimport { TranslationService } from '@alfresco/adf-core';\nimport { RestoreMessageModel } from '../interfaces/restore-message-model.interface';\nimport { AlfrescoApiService } from '../services/alfresco-api.service';\n\n@Directive({\n    standalone: true,\n    selector: '[adf-restore]'\n})\nexport class NodeRestoreDirective {\n    private readonly restoreProcessStatus;\n\n    private _trashcanApi: TrashcanApi;\n    get trashcanApi(): TrashcanApi {\n        this._trashcanApi = this._trashcanApi ?? new TrashcanApi(this.alfrescoApiService.getInstance());\n        return this._trashcanApi;\n    }\n\n    /** Array of deleted nodes to restore. */\n    @Input('adf-restore')\n    selection: DeletedNodeEntry[];\n\n    /** Emitted when restoration is complete. */\n    @Output()\n    restore: EventEmitter<RestoreMessageModel> = new EventEmitter();\n\n    @HostListener('click')\n    onClick() {\n        this.recover(this.selection);\n    }\n\n    constructor(private alfrescoApiService: AlfrescoApiService, private translation: TranslationService) {\n        this.restoreProcessStatus = this.processStatus();\n    }\n\n    private recover(selection: any) {\n        if (!selection.length) {\n            return;\n        }\n\n        const nodesWithPath = this.getNodesWithPath(selection);\n\n        if (selection.length && nodesWithPath.length) {\n            this.restoreNodesBatch(nodesWithPath)\n                .pipe(\n                    tap((restoredNodes) => {\n                        const status = this.processStatus(restoredNodes);\n\n                        this.restoreProcessStatus.fail.push(...status.fail);\n                        this.restoreProcessStatus.success.push(...status.success);\n                    }),\n                    mergeMap(() => this.getDeletedNodes())\n                )\n                .subscribe((deletedNodesList) => {\n                    const { entries: nodeList } = deletedNodesList.list;\n                    const { fail: restoreErrorNodes } = this.restoreProcessStatus;\n                    const selectedNodes = this.diff(restoreErrorNodes, selection, false);\n                    const remainingNodes = this.diff(selectedNodes, nodeList);\n\n                    if (!remainingNodes.length) {\n                        this.notification();\n                    } else {\n                        this.recover(remainingNodes);\n                    }\n                });\n        } else {\n            this.restoreProcessStatus.fail.push(...selection);\n            this.notification();\n            return;\n        }\n    }\n\n    private restoreNodesBatch(batch: DeletedNodeEntry[]): Observable<DeletedNodeEntry[]> {\n        return forkJoin(batch.map((node) => this.restoreNode(node)));\n    }\n\n    private getNodesWithPath(selection): DeletedNodeEntry[] {\n        return selection.filter((node) => node.entry.path);\n    }\n\n    private getDeletedNodes(): Observable<DeletedNodesPaging> {\n        const promise = this.trashcanApi.listDeletedNodes({ include: ['path'] });\n\n        return from(promise);\n    }\n\n    private restoreNode(node): Observable<any> {\n        const { entry } = node;\n\n        const promise = this.trashcanApi.restoreDeletedNode(entry.id);\n\n        return from(promise).pipe(\n            map(() => ({\n                status: 1,\n                entry\n            })),\n            catchError((error) => {\n                const { statusCode } = JSON.parse(error.message).error;\n\n                return of({\n                    status: 0,\n                    statusCode,\n                    entry\n                });\n            })\n        );\n    }\n\n    private diff(selection, list, fromList = true): any {\n        const ids = selection.map((item) => item.entry.id);\n\n        return list.filter((item) => {\n            if (fromList) {\n                return ids.includes(item.entry.id) ? item : null;\n            } else {\n                return !ids.includes(item.entry.id) ? item : null;\n            }\n        });\n    }\n\n    private processStatus(data = []): any {\n        const status = {\n            fail: [],\n            success: [],\n            get someFailed() {\n                return !!this.fail.length;\n            },\n            get someSucceeded() {\n                return !!this.success.length;\n            },\n            get oneFailed() {\n                return this.fail.length === 1;\n            },\n            get oneSucceeded() {\n                return this.success.length === 1;\n            },\n            get allSucceeded() {\n                return this.someSucceeded && !this.someFailed;\n            },\n            get allFailed() {\n                return this.someFailed && !this.someSucceeded;\n            },\n            reset() {\n                this.fail = [];\n                this.success = [];\n            }\n        };\n\n        return data.reduce((acc, node) => {\n            if (node.status) {\n                acc.success.push(node);\n            } else {\n                acc.fail.push(node);\n            }\n\n            return acc;\n        }, status);\n    }\n\n    private getRestoreMessage(): string | null {\n        const { restoreProcessStatus: status } = this;\n\n        if (status.someFailed && !status.oneFailed) {\n            return this.translation.instant('CORE.RESTORE_NODE.PARTIAL_PLURAL', {\n                // eslint-disable-next-line id-blacklist\n                number: status.fail.length\n            });\n        }\n\n        if (status.oneFailed && status.fail[0].statusCode) {\n            if (status.fail[0].statusCode === 409) {\n                return this.translation.instant('CORE.RESTORE_NODE.NODE_EXISTS', {\n                    name: status.fail[0].entry.name\n                });\n            } else {\n                return this.translation.instant('CORE.RESTORE_NODE.GENERIC', {\n                    name: status.fail[0].entry.name\n                });\n            }\n        }\n\n        if (status.oneFailed && !status.fail[0].statusCode) {\n            return this.translation.instant('CORE.RESTORE_NODE.LOCATION_MISSING', {\n                name: status.fail[0].entry.name\n            });\n        }\n\n        if (status.allSucceeded && !status.oneSucceeded) {\n            return this.translation.instant('CORE.RESTORE_NODE.PLURAL');\n        }\n\n        if (status.allSucceeded && status.oneSucceeded) {\n            return this.translation.instant('CORE.RESTORE_NODE.SINGULAR', {\n                name: status.success[0].entry.name\n            });\n        }\n\n        return null;\n    }\n\n    private notification(): void {\n        const status = Object.assign({}, this.restoreProcessStatus);\n\n        const message = this.getRestoreMessage();\n        this.reset();\n\n        const action = status.oneSucceeded && !status.someFailed ? this.translation.instant('CORE.RESTORE_NODE.VIEW') : '';\n\n        let path;\n        if (status.success && status.success.length > 0) {\n            path = status.success[0].entry.path;\n        }\n        this.restore.emit({\n            message,\n            action,\n            path\n        });\n    }\n\n    private reset(): void {\n        this.restoreProcessStatus.reset();\n        this.selection = [];\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 { NodeLockDirective } from './node-lock.directive';\nimport { NodeCounterComponent, NodeCounterDirective } from './node-counter.directive';\nimport { AutoFocusDirective } from './auto-focus.directive';\nimport { CheckAllowableOperationDirective } from './check-allowable-operation.directive';\nimport { LibraryFavoriteDirective } from './library-favorite.directive';\nimport { LibraryMembershipDirective } from './library-membership.directive';\nimport { NodeDeleteDirective } from './node-delete.directive';\nimport { NodeFavoriteDirective } from './node-favorite.directive';\nimport { NodeRestoreDirective } from './node-restore.directive';\nimport { NodeDownloadDirective } from './node-download.directive';\n\nexport const CONTENT_DIRECTIVES = [\n    NodeLockDirective,\n    NodeCounterDirective,\n    NodeCounterComponent,\n    AutoFocusDirective,\n    CheckAllowableOperationDirective,\n    LibraryFavoriteDirective,\n    LibraryMembershipDirective,\n    NodeDeleteDirective,\n    NodeFavoriteDirective,\n    NodeRestoreDirective,\n    NodeDownloadDirective\n];\n\n/** @deprecated import CONTENT_DIRECTIVES or standalone directives instead */\n@NgModule({\n    imports: [...CONTENT_DIRECTIVES],\n    exports: [...CONTENT_DIRECTIVES]\n})\nexport class ContentDirectiveModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 './content-directive.module';\nexport * from './node-lock.directive';\nexport * from './node-counter.directive';\nexport * from './auto-focus.directive';\nexport * from './check-allowable-operation.directive';\nexport * from './library-favorite.directive';\nexport * from './library-membership.directive';\nexport * from './node-delete.directive';\nexport * from './node-favorite.directive';\nexport * from './node-restore.directive';\nexport * from './node-download.directive';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 { TranslationService } from '@alfresco/adf-core';\nimport { Component, DestroyRef, EventEmitter, inject, Input, OnChanges, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport { TagService } from '../services/tag.service';\nimport { TagPaging } from '@alfresco/js-api';\nimport { CommonModule } from '@angular/common';\nimport { MatListModule } from '@angular/material/list';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n/**\n *\n * This component, provide a list of the tags relative a node with actions button to add or remove new tag\n */\n\n@Component({\n    selector: 'adf-tag-node-actions-list',\n    standalone: true,\n    imports: [CommonModule, MatListModule, MatIconModule, MatFormFieldModule, MatInputModule, TranslateModule, FormsModule, MatButtonModule],\n    templateUrl: './tag-actions.component.html',\n    styleUrls: ['./tag-actions.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    host: { class: 'adf-tag-node-actions-list' }\n})\nexport class TagActionsComponent implements OnChanges, OnInit {\n    /** The identifier of a node. */\n    @Input({ required: true })\n    nodeId: string;\n\n    /** Emitted when a tag is added successfully. */\n    @Output()\n    successAdd: EventEmitter<any> = new EventEmitter();\n\n    /** Emitted when an error occurs. */\n    @Output()\n    error: EventEmitter<any> = new EventEmitter();\n\n    /** Emitted when an action is chosen. */\n    @Output()\n    result = new EventEmitter();\n\n    newTagName: string;\n    tagsEntries: any;\n    errorMsg: string;\n    disableAddTag: boolean = true;\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    constructor(private tagService: TagService, private translateService: TranslationService) {}\n\n    ngOnInit() {\n        this.tagService.refresh.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.refreshTag());\n    }\n\n    ngOnChanges() {\n        return this.refreshTag();\n    }\n\n    refreshTag() {\n        if (this.nodeId) {\n            this.tagService.getTagsByNodeId(this.nodeId).subscribe(\n                (tagPaging: TagPaging) => {\n                    this.tagsEntries = tagPaging.list.entries;\n                    this.disableAddTag = false;\n                    this.result.emit(this.tagsEntries);\n                },\n                () => {\n                    this.tagsEntries = null;\n                    this.disableAddTag = true;\n                    this.result.emit(this.tagsEntries);\n                }\n            );\n        }\n    }\n\n    addTag() {\n        if (this.searchTag(this.newTagName)) {\n            this.errorMsg = this.translateService.instant('TAG.MESSAGES.EXIST');\n            this.error.emit(this.errorMsg);\n        } else {\n            this.tagService.addTag(this.nodeId, this.newTagName).subscribe(() => {\n                this.newTagName = '';\n                this.successAdd.emit(this.nodeId);\n            });\n        }\n    }\n\n    searchTag(searchTagName: string) {\n        if (this.tagsEntries) {\n            return this.tagsEntries.find((currentTag) => searchTagName === currentTag.entry.tag);\n        }\n    }\n\n    cleanErrorMsg() {\n        this.errorMsg = '';\n    }\n\n    removeTag(tag: string) {\n        this.tagService.removeTag(this.nodeId, tag);\n    }\n}\n","<mat-list>\n    <mat-list-item *ngFor=\"let currentEntry of tagsEntries; let idx = index\">\n        <div\n            class=\"adf-tag-actions-container\"\n            id=\"tag_delete_{{ currentEntry.entry.tag }}\"\n            tabindex=\"0\"\n            role=\"button\"\n            (keyup.enter)=\"removeTag(currentEntry.entry.id)\"\n            (click)=\"removeTag(currentEntry.entry.id)\"\n        >\n            <div class=\"adf-tag-actions-delete-text\" id=\"tag_name_{{ currentEntry.entry.tag }}\">{{ currentEntry.entry.tag }}</div>\n            <mat-icon class=\"adf-tag-actions-delete-icon\">delete</mat-icon>\n        </div>\n    </mat-list-item>\n</mat-list>\n<table class=\"adf-full-width\" cellspacing=\"0\">\n    <tr>\n        <td>\n            <mat-form-field class=\"adf-full-width\">\n                <input\n                    id=\"new-tag-text\"\n                    matInput\n                    placeholder=\"{{ 'TAG.LABEL.NEWTAG' | translate }}\"\n                    type=\"text\"\n                    (keypress)=\"cleanErrorMsg()\"\n                    [(ngModel)]=\"newTagName\"\n                />\n                <mat-hint data-automation-id=\"errorMessage\" *ngIf=\"error\" [ngStyle]=\"{ color: 'red' }\" align=\"start\">{{ errorMsg }} </mat-hint>\n            </mat-form-field>\n        </td>\n        <td>\n            <button id=\"add-tag\" class=\"adf-full-width\" color=\"primary\" (click)=\"addTag()\" [disabled]=\"disableAddTag\" mat-raised-button>\n                {{ 'TAG.BUTTON.ADD' | translate }}\n            </button>\n        </td>\n    </tr>\n</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 { Component, EventEmitter, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport { TagService } from '../services/tag.service';\nimport { PaginationModel } from '@alfresco/adf-core';\nimport { TagEntry } from '@alfresco/js-api';\nimport { CommonModule } from '@angular/common';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n/**\n * This component provide a list of all the tag inside the ECM\n */\n@Component({\n    selector: 'adf-tag-list',\n    standalone: true,\n    imports: [CommonModule, MatChipsModule, MatButtonModule, MatIconModule],\n    templateUrl: './tag-list.component.html',\n    styleUrls: ['./tag-list.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    host: { class: 'adf-tag-list' }\n})\nexport class TagListComponent implements OnInit {\n    /** Emitted when a tag is selected. */\n    @Output()\n    result = new EventEmitter();\n\n    /**\n     * Array of tags that are displayed\n     */\n    tagsEntries: TagEntry[] = [];\n\n    /**\n     * Number of items per iteration\n     */\n    size: number = 10;\n\n    defaultPagination: PaginationModel;\n    pagination: PaginationModel;\n\n    isLoading = false;\n    isSizeMinimum = true;\n\n    constructor(private tagService: TagService) {\n        this.defaultPagination = {\n            skipCount: 0,\n            maxItems: this.size,\n            hasMoreItems: false\n        };\n\n        this.pagination = this.defaultPagination;\n\n        this.tagService.refresh.pipe(takeUntilDestroyed()).subscribe(() => {\n            this.tagsEntries = [];\n            this.refreshTag(this.defaultPagination);\n        });\n    }\n\n    ngOnInit() {\n        this.refreshTag(this.defaultPagination);\n    }\n    refreshTag(opts?: any) {\n        this.tagService.getAllTheTags(opts).subscribe((tags) => {\n            this.tagsEntries = this.tagsEntries.concat(tags.list.entries);\n            this.pagination = tags.list.pagination;\n            this.result.emit(this.tagsEntries);\n            this.isLoading = false;\n        });\n    }\n\n    loadMoreTags() {\n        if (this.pagination.hasMoreItems) {\n            this.isLoading = true;\n            this.isSizeMinimum = false;\n\n            this.refreshTag({\n                skipCount: this.pagination.skipCount + this.pagination.count,\n                maxItems: this.size\n            });\n        }\n    }\n\n    loadLessTags() {\n        this.isSizeMinimum = false;\n        this.tagsEntries = this.tagsEntries.slice(0, this.tagsEntries.length - this.pagination.count);\n        this.pagination.skipCount = this.pagination.skipCount - this.pagination.count;\n        this.pagination.hasMoreItems = true;\n\n        if (this.tagsEntries.length <= this.size) {\n            this.isSizeMinimum = true;\n        }\n    }\n}\n","<mat-chip-listbox class=\"adf-tag-chips-list\">\n    <div class=\"adf-list-tag\" *ngFor=\"let currentEntry of tagsEntries; let idx = index\">\n        <mat-chip-option class=\"adf-tag-list-chip\">\n            <span id=\"tag_name_{{idx}}\">{{currentEntry.entry.tag}}</span>\n        </mat-chip-option>\n    </div>\n</mat-chip-listbox>\n\n<div class=\"adf-tag-list-controls\">\n    <button\n        *ngIf=\"!isSizeMinimum\"\n        [disabled]=\"isLoading\"\n        data-automation-id=\"show-fewer-tags\"\n        mat-icon-button\n        (click)=\"loadLessTags()\">\n        <mat-icon>keyboard_arrow_up</mat-icon>\n    </button>\n    <button\n        *ngIf=\"pagination.hasMoreItems\"\n        [disabled]=\"isLoading\"\n        data-automation-id=\"show-more-tags\"\n        mat-icon-button\n        (click)=\"loadMoreTags()\">\n        <mat-icon>keyboard_arrow_down</mat-icon>\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 { Component, DestroyRef, EventEmitter, inject, Input, OnChanges, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport { TagService } from '../services/tag.service';\nimport { TagEntry } from '@alfresco/js-api';\nimport { Chip, DynamicChipListComponent } from '@alfresco/adf-core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n/**\n *\n * This component, ShowNodeTag a list of the tag on relative a node\n */\n\n@Component({\n    selector: 'adf-tag-node-list',\n    standalone: true,\n    imports: [DynamicChipListComponent],\n    templateUrl: './tag-node-list.component.html',\n    encapsulation: ViewEncapsulation.None\n})\nexport class TagNodeListComponent implements OnChanges, OnInit {\n    /** The identifier of a node. */\n    @Input({ required: true })\n    nodeId: string;\n\n    /** Show delete button */\n    @Input()\n    showDelete = true;\n\n    /** Should limit number of tags displayed */\n    @Input()\n    limitTagsDisplayed = false;\n\n    /** Emitted when a tag is selected. */\n    @Output()\n    results = new EventEmitter<TagEntry[]>();\n\n    private _tagChips: Chip[] = [];\n\n    get tagChips(): Chip[] {\n        return this._tagChips;\n    }\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    constructor(private tagService: TagService) {}\n\n    ngOnChanges(): void {\n        this.refreshTag();\n    }\n\n    ngOnInit(): void {\n        this.tagService.refresh.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.refreshTag());\n    }\n\n    refreshTag(): void {\n        if (this.nodeId) {\n            this.tagService.getTagsByNodeId(this.nodeId).subscribe((tagPaging) => {\n                this._tagChips = tagPaging.list.entries.map((tag) => ({\n                    id: tag.entry.id,\n                    name: tag.entry.tag\n                }));\n                this.results.emit(tagPaging.list.entries);\n            });\n        }\n    }\n\n    removeTag(tag: string): void {\n        this.tagService.removeTag(this.nodeId, tag).subscribe(() => {\n            this.refreshTag();\n        });\n    }\n}\n","<adf-dynamic-chip-list\n    [chips]=\"tagChips\"\n    [limitChipsDisplayed]=\"limitTagsDisplayed\"\n    [showDelete]=\"showDelete\"\n    (displayNext)=\"refreshTag()\"\n    (removedChip)=\"removeTag($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/**\n * Available modes for tags creator.\n * Create mode allows only for creating completely new tags.\n * Create and Assign mode allows for both - creation of new tags and selection of existing tags.\n */\nexport enum TagsCreatorMode {\n    CREATE,\n    CREATE_AND_ASSIGN\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Chip, DynamicChipListComponent, NotificationService } from '@alfresco/adf-core';\nimport { TagEntry, TagPaging } from '@alfresco/js-api';\nimport {\n    Component,\n    DestroyRef,\n    ElementRef,\n    EventEmitter,\n    HostBinding,\n    inject,\n    Input,\n    OnDestroy,\n    OnInit,\n    Output,\n    ViewChild,\n    ViewEncapsulation\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatListModule } from '@angular/material/list';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { EMPTY, forkJoin, Observable, Subject, timer } from 'rxjs';\nimport { debounce, distinctUntilChanged, finalize, first, map, takeUntil, tap } from 'rxjs/operators';\nimport { AutoFocusDirective } from '../../directives';\nimport { TagService } from '../services/tag.service';\nimport { TagsCreatorMode } from './tags-creator-mode';\n\ninterface TagNameControlErrors {\n    duplicatedExistingTag?: boolean;\n    duplicatedAddedTag?: boolean;\n    emptyTag?: boolean;\n    specialCharacters?: boolean;\n}\n\nconst DEFAULT_TAGS_SORTING = {\n    orderBy: 'tag',\n    direction: 'asc'\n};\n\n/**\n * Allows to create multiple tags. That component contains input and two lists. Top list is all created tags, bottom list is searched tags based on input's value.\n */\n@Component({\n    selector: 'adf-tags-creator',\n    standalone: true,\n    imports: [\n        CommonModule,\n        MatInputModule,\n        ReactiveFormsModule,\n        AutoFocusDirective,\n        TranslateModule,\n        MatChipsModule,\n        MatButtonModule,\n        MatIconModule,\n        MatListModule,\n        MatProgressSpinnerModule,\n        DynamicChipListComponent\n    ],\n    templateUrl: './tags-creator.component.html',\n    styleUrls: ['./tags-creator.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class TagsCreatorComponent implements OnInit, OnDestroy {\n    /**\n     * Mode for component.\n     * In Create mode we can't select existing tags, we can only create them.\n     * In Create and Assign mode we can both - create tags and select existing tags.\n     */\n    @Input({ required: true })\n    mode: TagsCreatorMode;\n\n    /**\n     * False if tags can be removed from top list, true otherwise.\n     */\n    @Input()\n    disabledTagsRemoving = false;\n\n    /**\n     * Default top list.\n     *\n     * @param tags tags which should be displayed as default tags for top list.\n     */\n    @Input()\n    set tags(tags: string[]) {\n        this._tags = [...tags];\n        this.tagsToDisplay = this.tags.map((tag) => ({ id: tag, name: tag }));\n        this._initialExistingTags = null;\n        this._existingTags = null;\n        this.loadTags(this.tagNameControl.value);\n        this.tagNameControl.updateValueAndValidity();\n    }\n\n    get tags(): string[] {\n        return this._tags;\n    }\n\n    /**\n     * Decides if input for tags creation/searching should be visible. When input is hidden then panel of existing tags is hidden as well.\n     *\n     * @param tagNameControlVisible true if input should be visible, false otherwise.\n     */\n    @Input()\n    set tagNameControlVisible(tagNameControlVisible: boolean) {\n        this._tagNameControlVisible = tagNameControlVisible;\n        if (tagNameControlVisible) {\n            this._existingTagsPanelVisible = true;\n            setTimeout(() => {\n                this.tagNameInputElement?.nativeElement?.scrollIntoView();\n            });\n        } else {\n            this._existingTagsPanelVisible = false;\n            this.clearTagNameInput();\n        }\n        this.existingTagsPanelVisibilityChange.emit(this.existingTagsPanelVisible);\n    }\n\n    get tagNameControlVisible(): boolean {\n        return this._tagNameControlVisible;\n    }\n\n    /**\n     * Emitted when bottom list is showing or hiding.\n     */\n    @Output()\n    existingTagsPanelVisibilityChange = new EventEmitter<boolean>();\n    /**\n     * Emitted when tags in top list are changed.\n     */\n    @Output()\n    tagsChange = new EventEmitter<string[]>();\n\n    tagsToDisplay: Chip[] = [];\n\n    readonly nameErrorMessagesByErrors = new Map<keyof TagNameControlErrors, string>([\n        ['duplicatedExistingTag', 'EXISTING_TAG'],\n        ['duplicatedAddedTag', 'ALREADY_ADDED_TAG'],\n        ['emptyTag', 'EMPTY_TAG'],\n        ['specialCharacters', 'SPECIAL_CHARACTERS']\n    ]);\n\n    private readonly existingTagsListLimit = 15;\n\n    private exactTagSet$ = new Subject<void>();\n    private _tags: string[] = [];\n    private _tagNameControl = new FormControl<string>(\n        '',\n        [this.validateIfNotAlreadyAdded.bind(this), this.validateEmptyTag, this.validateSpecialCharacters],\n        this.validateIfNotExistingTag.bind(this)\n    );\n    private _tagNameControlVisible = false;\n    private _existingTags: TagEntry[];\n    private _initialExistingTags: TagEntry[];\n    private _tagNameErrorMessageKey = '';\n    private _spinnerVisible = false;\n    private _typing = false;\n    private _tagsListScrollbarVisible = false;\n    private cancelExistingTagsLoading$ = new Subject<void>();\n    private existingExactTag: TagEntry;\n    private _existingTagsPanelVisible: boolean;\n\n    @ViewChild('tagsList')\n    private tagsListElement: ElementRef;\n    @ViewChild('tagNameInput')\n    private tagNameInputElement: ElementRef;\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    constructor(private tagService: TagService, private notificationService: NotificationService) {}\n\n    ngOnInit(): void {\n        this.tagNameControl.valueChanges\n            .pipe(\n                map((name: string) => name.trim()),\n                distinctUntilChanged((previous, current) => {\n                    const valueNotChanged = previous === current;\n                    if (valueNotChanged) {\n                        this.exactTagSet$.next();\n                    }\n                    return valueNotChanged;\n                }),\n                tap((name: string) => {\n                    this._typing = true;\n                    if (name) {\n                        this._spinnerVisible = true;\n                        this._existingTagsPanelVisible = true;\n                    }\n                    this.existingTagsPanelVisibilityChange.emit(this.existingTagsPanelVisible);\n                    this.cancelExistingTagsLoading$.next();\n                    this._initialExistingTags = null;\n                    this._existingTags = null;\n                }),\n                debounce((name: string) => (name ? timer(300) : EMPTY)),\n                takeUntilDestroyed(this.destroyRef)\n            )\n            .subscribe((name: string) => this.onTagNameControlValueChange(name));\n\n        this.tagNameControl.statusChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.setTagNameControlErrorMessageKey());\n\n        this.setTagNameControlErrorMessageKey();\n    }\n\n    ngOnDestroy(): void {\n        this.cancelExistingTagsLoading$.next();\n        this.cancelExistingTagsLoading$.complete();\n    }\n\n    @HostBinding('class.adf-creator-with-existing-tags-panel')\n    get hostClass(): boolean {\n        return this.existingTagsPanelVisible;\n    }\n\n    get tagNameControl(): FormControl<string> {\n        return this._tagNameControl;\n    }\n\n    /*\n     * Returns `true` if tags empty and non editable state, otherwise `false`\n     */\n    get showEmptyTagMessage(): boolean {\n        return this.tags?.length === 0 && !this.tagNameControlVisible;\n    }\n\n    get existingTags(): TagEntry[] {\n        return this._existingTags;\n    }\n\n    get tagNameErrorMessageKey(): string {\n        return this._tagNameErrorMessageKey;\n    }\n\n    get spinnerVisible(): boolean {\n        return this._spinnerVisible;\n    }\n\n    get typing(): boolean {\n        return this._typing;\n    }\n\n    get tagsListScrollbarVisible(): boolean {\n        return this._tagsListScrollbarVisible;\n    }\n\n    get existingTagsPanelVisible(): boolean {\n        return this._existingTagsPanelVisible;\n    }\n\n    /**\n     * Add tags to top list using value which is set in input. Adding tag is not allowed when value in input is invalid\n     * or if user is still typing what means that validation for input is not called yet.\n     */\n    addTag(): void {\n        if (!this._typing && !this.tagNameControl.invalid) {\n            this.tags = [...this.tags, this.tagNameControl.value.trim()];\n            this.clearTagNameInput();\n            this.checkScrollbarVisibility();\n            this.tagsChange.emit(this.tags);\n        }\n    }\n\n    /**\n     * Remove tag from top list. In case that tag was part of search result then that tag is moved to bottom list\n     * (list of existing tags) after removing so user can reselect it again later.\n     *\n     * @param tag tag's name which should be removed from top list.\n     */\n    removeTag(tag: string): void {\n        this.removeTagFromArray(this.tags, tag);\n        this.tags = [...this.tags];\n        this.tagNameControl.updateValueAndValidity();\n        this.updateExistingTagsListOnRemoveFromTagsToConfirm(tag);\n        this.exactTagSet$.next();\n        this.checkScrollbarVisibility();\n        this.tagsChange.emit(this.tags);\n    }\n\n    /**\n     * Called when user selects any tag from list of existing tags. It moves tag from existing tags list to top list.\n     *\n     * @param selectedTag changes\n     */\n    addExistingTagToTagsToAssign(selectedTag: TagEntry): void {\n        if (!this.isOnlyCreateMode()) {\n            this.tags.push(selectedTag.entry.tag);\n            this.removeTagFromArray(this.existingTags, selectedTag);\n            this.tagNameControl.updateValueAndValidity();\n            this.tags = [...this.tags];\n            this.exactTagSet$.next();\n            this.tagsChange.emit(this.tags);\n        }\n    }\n\n    /**\n     * Checks if component is in Create mode.\n     *\n     * @returns `true` if `Create` mode, `false` otherwise.\n     */\n    isOnlyCreateMode(): boolean {\n        return this.mode === TagsCreatorMode.CREATE;\n    }\n\n    private onTagNameControlValueChange(name: string): void {\n        this.tagNameControl.markAsTouched();\n        this.loadTags(name);\n    }\n\n    private loadTags(name: string) {\n        if (name && !this.tagNameControl.hasError('specialCharacters')) {\n            forkJoin({\n                exactResult: this.tagService.findTagByName(name),\n                searchedResult: this.tagService.searchTags(name, DEFAULT_TAGS_SORTING, false, 0, this.existingTagsListLimit)\n            })\n                .pipe(\n                    takeUntil(this.cancelExistingTagsLoading$),\n                    finalize(() => (this._typing = false))\n                )\n                .subscribe({\n                    next: ({ exactResult, searchedResult }: { exactResult: TagEntry; searchedResult: TagPaging }) => {\n                        if (exactResult) {\n                            this.existingExactTag = exactResult;\n                            this.removeExactTagFromSearchedResult(searchedResult);\n                            searchedResult.list.entries.unshift(exactResult);\n                        } else {\n                            this.existingExactTag = null;\n                        }\n\n                        this._initialExistingTags = searchedResult.list.entries;\n                        this.excludeAlreadyAddedTags(this._initialExistingTags);\n                        this.exactTagSet$.next();\n                        this._spinnerVisible = false;\n                    },\n                    error: () => {\n                        this.notificationService.showError('TAG.TAGS_CREATOR.ERRORS.FETCH_TAGS');\n                        this._spinnerVisible = false;\n                    }\n                });\n        } else {\n            this.existingExactTag = null;\n            this._spinnerVisible = false;\n        }\n    }\n\n    private removeExactTagFromSearchedResult(searchedResult: TagPaging): void {\n        const exactTagIndex = searchedResult.list.entries.findIndex((row) => this.compareTags(row.entry.tag, this.existingExactTag.entry.tag));\n\n        if (exactTagIndex > -1) {\n            searchedResult.list.entries.splice(exactTagIndex, 1);\n        }\n    }\n\n    private validateIfNotExistingTag(tagNameControl: FormControl<string>): Observable<TagNameControlErrors | null> {\n        return this.exactTagSet$.pipe(\n            map<void, TagNameControlErrors | null>(() =>\n                this.compareTags(tagNameControl.value, this.existingExactTag?.entry?.tag) ? { duplicatedExistingTag: true } : null\n            ),\n            first()\n        );\n    }\n\n    private validateIfNotAlreadyAdded(tagNameControl: FormControl<string>): TagNameControlErrors | null {\n        return this.tags.some((tag) => this.compareTags(tag, tagNameControl.value)) ? { duplicatedAddedTag: true } : null;\n    }\n\n    private compareTags(tagName1?: string, tagName2?: string): boolean {\n        return tagName1?.trim().toUpperCase() === tagName2?.trim().toUpperCase();\n    }\n\n    private validateEmptyTag(tagNameControl: FormControl<string>): TagNameControlErrors | null {\n        return tagNameControl.value.length && !tagNameControl.value.trim() ? { emptyTag: true } : null;\n    }\n\n    private validateSpecialCharacters(tagNameControl: FormControl<string>): TagNameControlErrors | null {\n        const specialSymbolsRegex = /[{}()^':\"\\\\|<>/?.*]/;\n        return tagNameControl.value.length && specialSymbolsRegex.test(tagNameControl.value) ? { specialCharacters: true } : null;\n    }\n\n    private setTagNameControlErrorMessageKey(): void {\n        this._tagNameErrorMessageKey = this.tagNameControl.invalid\n            ? `TAG.TAGS_CREATOR.ERRORS.${this.nameErrorMessagesByErrors.get(\n                  Object.keys(this.tagNameControl.errors)[0] as keyof TagNameControlErrors\n              )}`\n            : '';\n    }\n\n    private checkScrollbarVisibility(): void {\n        setTimeout(() => {\n            this._tagsListScrollbarVisible = this.tagsListElement.nativeElement.scrollHeight > this.tagsListElement.nativeElement.clientHeight;\n        });\n    }\n\n    private removeTagFromArray<T>(tags: T[], tag: T) {\n        tags.splice(tags.indexOf(tag), 1);\n    }\n\n    private updateExistingTagsListOnRemoveFromTagsToConfirm(tag: string) {\n        const entryForTagAddedToExistingTags = this._initialExistingTags?.find((tagEntry) => tagEntry.entry.tag === tag);\n        if (entryForTagAddedToExistingTags) {\n            this.existingTags.unshift(entryForTagAddedToExistingTags);\n            if (this.existingExactTag) {\n                if (tag !== this.existingExactTag.entry.tag) {\n                    this.removeTagFromArray(this.existingTags, this.existingExactTag);\n                    this.sortExistingTags();\n                    this.existingTags.unshift(this.existingExactTag);\n                }\n            } else {\n                this.sortExistingTags();\n            }\n            this.exactTagSet$.next();\n        }\n    }\n\n    private sortExistingTags() {\n        this.existingTags.sort((tagEntry1, tagEntry2) => tagEntry1.entry.tag.localeCompare(tagEntry2.entry.tag));\n    }\n\n    private excludeAlreadyAddedTags(tags: TagEntry[]) {\n        this._existingTags = tags.filter((tag) => !this.tags.includes(tag.entry.tag));\n    }\n\n    private clearTagNameInput() {\n        this.tagNameControl.setValue('');\n        this.tagNameControl.markAsUntouched();\n    }\n}\n","<div class=\"adf-tags-creation\">\n    <div *ngIf=\"tagNameControlVisible\" class=\"adf-tag-name-field\">\n        <input\n            #tagNameInput\n            class=\"adf-tag-search-field\"\n            matInput\n            autocomplete=\"off\"\n            [formControl]=\"tagNameControl\"\n            (keyup.enter)=\"addTag()\"\n            adf-auto-focus\n            placeholder=\"{{ 'TAG.TAGS_CREATOR.TAG_SEARCH_PLACEHOLDER' | translate }}\"\n        />\n        <mat-error *ngIf=\"tagNameControl.invalid && tagNameControl.touched\">\n            {{ tagNameErrorMessageKey | translate }}\n        </mat-error>\n    </div>\n    <p class=\"adf-no-tags-message\" *ngIf=\"showEmptyTagMessage\">\n        {{ 'TAG.TAGS_CREATOR.NO_TAGS_CREATED' | translate }}\n    </p>\n    <div class=\"adf-tags-list\" [class.adf-tags-list-fixed]=\"!tagNameControlVisible\" #tagsList>\n        <ng-container *ngIf=\"tags?.length > 0\">\n            <adf-dynamic-chip-list\n                class=\"adf-tags-chips-container\"\n                [chips]=\"tagsToDisplay\"\n                [disableDelete]=\"disabledTagsRemoving\"\n                (removedChip)=\"removeTag($event)\" />\n        </ng-container>\n    </div>\n</div>\n<div class=\"adf-existing-tags-panel\" *ngIf=\"existingTagsPanelVisible\">\n    <span\n        *ngIf=\"!spinnerVisible || existingTags\"\n        class=\"adf-create-tag-label\"\n        (click)=\"addTag()\"\n        role=\"button\"\n        tabindex=\"0\"\n        (keyup.enter)=\"addTag()\"\n        [hidden]=\"!tagNameControl.value || tagNameControl.invalid || typing\"\n    >\n        {{ 'TAG.TAGS_CREATOR.CREATE_TAG' | translate : { tag: tagNameControl.value } }}\n    </span>\n    <p *ngIf=\"!spinnerVisible && existingTags\" class=\"adf-existing-tags-label\">\n        {{ (isOnlyCreateMode() ? 'TAG.TAGS_CREATOR.EXISTING_TAGS' : 'TAG.TAGS_CREATOR.EXISTING_TAGS_SELECTION') | translate }}\n    </p>\n    <div class=\"adf-tags-list\">\n        <mat-list *ngIf=\"!spinnerVisible && existingTags\" [disabled]=\"isOnlyCreateMode()\">\n            <mat-list-item *ngFor=\"let tagRow of existingTags\" class=\"adf-tag\"\n                           (click)=\"addExistingTagToTagsToAssign(tagRow)\">\n                {{ tagRow.entry.tag }}\n            </mat-list-item>\n            <p *ngIf=\"!existingTags?.length\">{{ 'TAG.TAGS_CREATOR.NO_EXISTING_TAGS' | translate }}</p>\n        </mat-list>\n        <mat-spinner\n            *ngIf=\"spinnerVisible\"\n            class=\"adf-tags-creator-spinner\"\n            [diameter]=\"50\"\n            [attr.aria-label]=\"'TAG.TAGS_CREATOR.TAGS_LOADING' | 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\nimport { NgModule } from '@angular/core';\nimport { TagActionsComponent } from './tag-actions/tag-actions.component';\nimport { TagListComponent } from './tag-list/tag-list.component';\nimport { TagNodeListComponent } from './tag-node-list/tag-node-list.component';\nimport { TagsCreatorComponent } from './tags-creator/tags-creator.component';\n\nexport const CONTENT_TAG_DIRECTIVES = [TagsCreatorComponent, TagActionsComponent, TagListComponent, TagNodeListComponent] as const;\n\n/** @deprecated use `...CONTENT_TAG_DIRECTIVES` instead or import standalone components directly */\n@NgModule({\n    imports: [...CONTENT_TAG_DIRECTIVES],\n    exports: [...CONTENT_TAG_DIRECTIVES]\n})\nexport class TagModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 './tag-actions/tag-actions.component';\nexport * from './tag-list/tag-list.component';\nexport * from './tag-node-list/tag-node-list.component';\n\nexport * from './services/tag.service';\n\nexport * from './tag.module';\n\nexport * from './tags-creator/tags-creator-mode';\nexport * from './tags-creator/tags-creator.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, Output, EventEmitter } from '@angular/core';\nimport { Node, NodeEntry } from '@alfresco/js-api';\nimport { Subject } from 'rxjs';\nimport { DownloadService } from '@alfresco/adf-core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ContentService } from '../../common/services/content.service';\nimport { NodeDownloadDirective } from '../../directives/node-download.directive';\nimport { AlfrescoApiService } from '../../services/alfresco-api.service';\n\nimport { DocumentListService } from './document-list.service';\nimport { ContentNodeDialogService } from '../../content-node-selector/content-node-dialog.service';\nimport { NodeAction } from '../models/node-action.enum';\n\n@Injectable({\n    providedIn: 'root'\n})\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class NodeActionsService {\n    @Output()\n    error = new EventEmitter<any>();\n\n    constructor(\n        private contentDialogService: ContentNodeDialogService,\n        public dialogRef: MatDialog,\n        public content: ContentService,\n        private documentListService?: DocumentListService,\n        private apiService?: AlfrescoApiService,\n        private dialog?: MatDialog,\n        private downloadService?: DownloadService\n    ) {}\n\n    downloadNode(node: NodeEntry) {\n        new NodeDownloadDirective(this.apiService, this.downloadService, this.dialog).downloadNode(node);\n    }\n\n    /**\n     * Copy content node\n     *\n     * @param contentEntry node to copy\n     * @param permission permission which is needed to apply the action\n     * @returns operation result\n     */\n    copyContent(contentEntry: Node, permission?: string): Subject<string> {\n        return this.doFileOperation(NodeAction.COPY, 'content', contentEntry, permission);\n    }\n\n    /**\n     * Copy folder node\n     *\n     * @param contentEntry node to copy\n     * @param permission permission which is needed to apply the action\n     * @returns operation result\n     */\n    copyFolder(contentEntry: Node, permission?: string): Subject<string> {\n        return this.doFileOperation(NodeAction.COPY, 'folder', contentEntry, permission);\n    }\n\n    /**\n     * Move content node\n     *\n     * @param contentEntry node to move\n     * @param permission permission which is needed to apply the action\n     * @returns operation result\n     */\n    moveContent(contentEntry: Node, permission?: string): Subject<string> {\n        return this.doFileOperation(NodeAction.MOVE, 'content', contentEntry, permission);\n    }\n\n    /**\n     * Move folder node\n     *\n     * @param contentEntry node to move\n     * @param permission permission which is needed to apply the action\n     * @returns operation result\n     */\n    moveFolder(contentEntry: Node, permission?: string): Subject<string> {\n        return this.doFileOperation(NodeAction.MOVE, 'folder', contentEntry, permission);\n    }\n\n    /**\n     * General method for performing the given operation (copy|move)\n     *\n     * @param action the action to perform (copy|move)\n     * @param type type of the content (content|folder)\n     * @param contentEntry the contentEntry which has to have the action performed on\n     * @param permission permission which is needed to apply the action\n     * @returns operation result\n     */\n    private doFileOperation(\n        action: NodeAction.COPY | NodeAction.MOVE,\n        type: 'content' | 'folder',\n        contentEntry: Node,\n        permission?: string\n    ): Subject<string> {\n        const observable = new Subject<string>();\n\n        this.contentDialogService.openCopyMoveDialog(action, contentEntry, permission).subscribe(\n            (selections: Node[]) => {\n                const selection = selections[0];\n                this.documentListService[`${action.toLowerCase()}Node`]\n                    .call(this.documentListService, contentEntry.id, selection.id)\n                    .subscribe(\n                        observable.next.bind(observable, `OPERATION.SUCCESS.${type.toUpperCase()}.${action}`),\n                        observable.error.bind(observable)\n                    );\n            },\n            (error) => {\n                observable.error(error);\n                return observable;\n            }\n        );\n        return observable;\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 { TranslationService } from '@alfresco/adf-core';\nimport { ContentService } from '../../common/services/content.service';\nimport { Injectable } from '@angular/core';\nimport { NodeEntry } from '@alfresco/js-api';\nimport { Observable, Subject, throwError, of } from 'rxjs';\nimport { ContentActionHandler } from '../models/content-action.model';\nimport { PermissionModel } from '../models/permissions.model';\nimport { DocumentListService } from './document-list.service';\nimport { NodeActionsService } from './node-actions.service';\nimport { ContentNodeDialogService } from '../../content-node-selector/content-node-dialog.service';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class DocumentActionsService {\n    permissionEvent = new Subject<PermissionModel>();\n    error = new Subject<Error>();\n    success = new Subject<string>();\n\n    private handlers: { [id: string]: ContentActionHandler } = {};\n\n    constructor(\n        private nodeActionsService: NodeActionsService,\n        private contentNodeDialogService: ContentNodeDialogService,\n        private translation: TranslationService,\n        private documentListService?: DocumentListService,\n        private contentService?: ContentService\n    ) {\n        this.setupActionHandlers();\n    }\n\n    /**\n     * Gets the handler for an action.\n     *\n     * @param key Identifier of the action\n     * @returns The handler for the action\n     */\n    getHandler(key: string): ContentActionHandler {\n        if (key) {\n            const lKey = key.toLowerCase();\n            return this.handlers[lKey] || null;\n        }\n        return null;\n    }\n\n    /**\n     * Sets a new handler for an action.\n     *\n     * @param key Identifier of the action\n     * @param handler Handler for the action\n     * @returns False if the key was an empty/null string, true otherwise\n     */\n    setHandler(key: string, handler: ContentActionHandler): boolean {\n        if (key) {\n            const lKey = key.toLowerCase();\n            this.handlers[lKey] = handler;\n            return true;\n        }\n        return false;\n    }\n\n    /**\n     * Checks if actions can be executed for an item.\n     *\n     * @param nodeEntry Item to receive an action\n     * @returns True if the action can be executed on this item, false otherwise\n     */\n    canExecuteAction(nodeEntry: NodeEntry): boolean {\n        return this.documentListService && nodeEntry && nodeEntry.entry.isFile === true;\n    }\n\n    private setupActionHandlers() {\n        this.handlers['copy'] = this.copyNode.bind(this);\n        this.handlers['move'] = this.moveNode.bind(this);\n        this.handlers['delete'] = this.deleteNode.bind(this);\n        this.handlers['download'] = this.downloadNode.bind(this);\n        this.handlers['lock'] = this.lockNode.bind(this);\n    }\n\n    private lockNode(node: NodeEntry) {\n        return this.contentNodeDialogService.openLockNodeDialog(node.entry);\n    }\n\n    private downloadNode(obj: NodeEntry) {\n        this.nodeActionsService.downloadNode(obj);\n    }\n\n    private copyNode(node: NodeEntry, _target?: any, permission?: string) {\n        const actionObservable = this.nodeActionsService.copyContent(node.entry, permission);\n        this.prepareHandlers(actionObservable);\n        return actionObservable;\n    }\n\n    private moveNode(node: NodeEntry, _target?: any, permission?: string) {\n        const actionObservable = this.nodeActionsService.moveContent(node.entry, permission);\n        this.prepareHandlers(actionObservable);\n        return actionObservable;\n    }\n\n    private prepareHandlers(actionObservable: Subject<string>): void {\n        actionObservable.subscribe((fileOperationMessage) => {\n            this.success.next(fileOperationMessage);\n        }, this.error.next.bind(this.error));\n    }\n\n    private deleteNode(node: NodeEntry, _target?: any, permission?: string): Observable<any> {\n        if (this.canExecuteAction(node)) {\n            if (this.contentService.hasAllowableOperations(node.entry, permission)) {\n                const handlerObservable = this.documentListService.deleteNode(node.entry.id);\n                handlerObservable.subscribe(\n                    () => {\n                        const message = this.translation.instant('CORE.DELETE_NODE.SINGULAR', { name: node.entry.name });\n                        this.success.next(message);\n                    },\n                    () => {\n                        const message = this.translation.instant('CORE.DELETE_NODE.ERROR_SINGULAR', { name: node.entry.name });\n                        this.error.next(message);\n                    }\n                );\n                return handlerObservable;\n            } else {\n                this.permissionEvent.next(\n                    new PermissionModel({\n                        type: 'content',\n                        action: 'delete',\n                        permission\n                    })\n                );\n                return throwError(new Error('No permission to delete'));\n            }\n        }\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 { TranslationService } from '@alfresco/adf-core';\nimport { ContentService } from '../../common/services/content.service';\nimport { Injectable } from '@angular/core';\nimport { NodeEntry } from '@alfresco/js-api';\nimport { Observable, Subject, throwError, of } from 'rxjs';\nimport { ContentActionHandler } from '../models/content-action.model';\nimport { PermissionModel } from '../models/permissions.model';\nimport { DocumentListService } from './document-list.service';\nimport { NodeActionsService } from './node-actions.service';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class FolderActionsService {\n    permissionEvent = new Subject<PermissionModel>();\n    error = new Subject<Error>();\n    success = new Subject<string>();\n\n    private handlers: { [id: string]: ContentActionHandler } = {};\n\n    constructor(\n        private nodeActionsService: NodeActionsService,\n        private documentListService: DocumentListService,\n        private contentService: ContentService,\n        private translation: TranslationService\n    ) {\n        this.setupActionHandlers();\n    }\n\n    /**\n     * Gets the handler function for an action.\n     *\n     * @param key Identifier for the action\n     * @returns The handler function\n     */\n    getHandler(key: string): ContentActionHandler {\n        if (key) {\n            const lKey = key.toLowerCase();\n            return this.handlers[lKey] || null;\n        }\n        return null;\n    }\n\n    /**\n     * Sets a new handler function for an action.\n     *\n     * @param key Identifier for the action\n     * @param handler The new handler function\n     * @returns True if the key was a valid action identifier, false otherwise\n     */\n    setHandler(key: string, handler: ContentActionHandler): boolean {\n        if (key) {\n            const lKey = key.toLowerCase();\n            this.handlers[lKey] = handler;\n            return true;\n        }\n        return false;\n    }\n\n    /**\n     * Checks if an action is available for a particular item.\n     *\n     * @param nodeEntry Item to check\n     * @returns True if the action is available, false otherwise\n     */\n    canExecuteAction(nodeEntry: NodeEntry): boolean {\n        return this.documentListService && nodeEntry && nodeEntry.entry.isFolder === true;\n    }\n\n    private setupActionHandlers() {\n        this.handlers['copy'] = this.copyNode.bind(this);\n        this.handlers['move'] = this.moveNode.bind(this);\n        this.handlers['delete'] = this.deleteNode.bind(this);\n        this.handlers['download'] = this.downloadNode.bind(this);\n    }\n\n    private downloadNode(nodeEntry: NodeEntry) {\n        this.nodeActionsService.downloadNode(nodeEntry);\n    }\n\n    private copyNode(nodeEntry: NodeEntry, target?: any, permission?: string) {\n        const actionObservable = this.nodeActionsService.copyFolder(nodeEntry.entry, permission);\n        this.prepareHandlers(actionObservable, target);\n        return actionObservable;\n    }\n\n    private moveNode(nodeEntry: NodeEntry, target?: any, permission?: string) {\n        const actionObservable = this.nodeActionsService.moveFolder(nodeEntry.entry, permission);\n        this.prepareHandlers(actionObservable, target);\n        return actionObservable;\n    }\n\n    private prepareHandlers(actionObservable: Observable<any>, target?: any): void {\n        actionObservable.subscribe((fileOperationMessage) => {\n            if (target && typeof target.reload === 'function') {\n                target.reload();\n            }\n            this.success.next(fileOperationMessage);\n        }, this.error.next.bind(this.error));\n    }\n\n    private deleteNode(node: NodeEntry, target?: any, permission?: string): Observable<any> {\n        if (this.canExecuteAction(node)) {\n            if (this.contentService.hasAllowableOperations(node.entry, permission)) {\n                const handlerObservable = this.documentListService.deleteNode(node.entry.id);\n                handlerObservable.subscribe(\n                    () => {\n                        if (target && typeof target.reload === 'function') {\n                            target.reload();\n                        }\n\n                        const message = this.translation.instant('CORE.DELETE_NODE.SINGULAR', { name: node.entry.name });\n                        this.success.next(message);\n                    },\n                    () => {\n                        const message = this.translation.instant('CORE.DELETE_NODE.ERROR_SINGULAR', { name: node.entry.name });\n                        this.error.next(message);\n                    }\n                );\n\n                return handlerObservable;\n            } else {\n                this.permissionEvent.next(new PermissionModel({ type: 'folder', action: 'delete', permission }));\n                return throwError(new Error('No permission to delete'));\n            }\n        }\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\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { Component } from '@angular/core';\nimport { ContentActionModel } from './../../models/content-action.model';\nimport { DocumentListComponent } from './../document-list.component';\n\n@Component({\n    selector: 'content-actions',\n    template: '',\n    standalone: true\n})\nexport class ContentActionListComponent {\n    constructor(private documentList: DocumentListComponent) {}\n\n    /**\n     * Registers action handler within the parent document list component.\n     *\n     * @param action Action model to register.\n     * @returns `true` if actions was registered, otherwise `false`\n     */\n    registerAction(action: ContentActionModel): boolean {\n        if (this.documentList && action) {\n            this.documentList.actions.push(action);\n            return true;\n        }\n        return false;\n    }\n\n    unregisterAction(action: ContentActionModel): boolean {\n        if (this.documentList && action) {\n            const idx = this.documentList.actions.indexOf(action);\n            if (idx >= 0) {\n                this.documentList.actions.splice(idx, 1);\n                return true;\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\n/* eslint-disable @angular-eslint/component-selector */\n\nimport { Component, EventEmitter, Input, OnInit, Output, OnChanges, SimpleChanges, OnDestroy } from '@angular/core';\n\nimport { ContentActionHandler } from '../../models/content-action.model';\nimport { DocumentActionsService } from '../../services/document-actions.service';\nimport { FolderActionsService } from '../../services/folder-actions.service';\nimport { ContentActionModel, ContentActionTarget } from './../../models/content-action.model';\nimport { ContentActionListComponent } from './content-action-list.component';\nimport { Subscription } from 'rxjs';\n\n@Component({\n    selector: 'content-action',\n    standalone: true,\n    template: '',\n    providers: [DocumentActionsService, FolderActionsService]\n})\nexport class ContentActionComponent implements OnInit, OnChanges, OnDestroy {\n    /** The title of the action as shown in the menu. */\n    @Input()\n    title: string = 'Action';\n\n    /** The name of the icon to display next to the menu command (can be left blank). */\n    @Input()\n    icon: string;\n\n    /** Visibility state (see examples). */\n    @Input()\n    visible: boolean | ((...args) => boolean) = true;\n\n    /** System actions. Can be \"delete\", \"download\", \"copy\" or \"move\". */\n    @Input()\n    handler: string;\n\n    /** Type of item that the action applies to. Can be \"document\" or \"folder\" */\n    @Input()\n    target: string = ContentActionTarget.All;\n\n    /** The permission type. */\n    @Input()\n    permission: string;\n\n    /** Should this action be disabled in the menu if the user doesn't have permission for it? */\n    @Input()\n    disableWithNoPermission: boolean;\n\n    /** Is the menu item disabled? */\n    @Input()\n    disabled: boolean | ((...args) => boolean) = false;\n\n    /** Emitted when the user selects the action from the menu. */\n    @Output()\n    execute = new EventEmitter();\n\n    /** Emitted when a permission error occurs */\n    @Output()\n    permissionEvent = new EventEmitter();\n\n    /**\n     * Emitted when an error occurs during the action.\n     * Applies to copy and move actions.\n     */\n    @Output()\n    error = new EventEmitter();\n\n    /**\n     * Emitted when the action succeeds with the success string message.\n     * Applies to copy, move and delete actions.\n     */\n    @Output()\n    success = new EventEmitter();\n\n    documentActionModel: ContentActionModel;\n    folderActionModel: ContentActionModel;\n\n    private subscriptions: Subscription[] = [];\n\n    constructor(\n        private list: ContentActionListComponent,\n        private documentActions: DocumentActionsService,\n        private folderActions: FolderActionsService\n    ) {}\n\n    ngOnInit() {\n        if (this.target === ContentActionTarget.All) {\n            this.folderActionModel = this.generateAction(ContentActionTarget.Folder);\n            this.documentActionModel = this.generateAction(ContentActionTarget.Document);\n        } else {\n            this.documentActionModel = this.generateAction(this.target);\n        }\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        if (changes.visible && !changes.visible.firstChange) {\n            if (this.documentActionModel) {\n                this.documentActionModel.visible = changes.visible.currentValue;\n            }\n            if (this.folderActionModel) {\n                this.folderActionModel.visible = changes.visible.currentValue;\n            }\n        }\n\n        if (changes.disabled && !changes.disabled.firstChange) {\n            if (this.documentActionModel) {\n                this.documentActionModel.disabled = changes.disabled.currentValue;\n            }\n            if (this.folderActionModel) {\n                this.folderActionModel.disabled = changes.disabled.currentValue;\n            }\n        }\n    }\n\n    ngOnDestroy() {\n        this.subscriptions.forEach((subscription) => subscription.unsubscribe());\n        this.subscriptions = [];\n\n        if (this.documentActionModel) {\n            this.unregister(this.documentActionModel);\n            this.documentActionModel = null;\n        }\n\n        if (this.folderActionModel) {\n            this.unregister(this.folderActionModel);\n            this.folderActionModel = null;\n        }\n    }\n\n    register(model: ContentActionModel): boolean {\n        if (this.list) {\n            return this.list.registerAction(model);\n        }\n        return false;\n    }\n\n    unregister(model: ContentActionModel): boolean {\n        if (this.list) {\n            return this.list.unregisterAction(model);\n        }\n        return false;\n    }\n\n    private generateAction(target: string): ContentActionModel {\n        const model = new ContentActionModel({\n            title: this.title,\n            icon: this.icon,\n            permission: this.permission,\n            disableWithNoPermission: this.disableWithNoPermission,\n            target,\n            disabled: this.disabled,\n            visible: this.visible\n        });\n        if (this.handler) {\n            model.handler = this.getSystemHandler(target, this.handler);\n        }\n\n        if (this.execute) {\n            model.execute = (value: any): void => {\n                this.execute.emit({ value });\n            };\n        }\n\n        this.register(model);\n        return model;\n    }\n\n    getSystemHandler(target: string, name: string): ContentActionHandler {\n        if (target) {\n            target = target.toLowerCase();\n\n            if (target === ContentActionTarget.Document) {\n                if (this.documentActions) {\n                    this.subscriptions.push(\n                        this.documentActions.permissionEvent.subscribe((permission) => {\n                            this.permissionEvent.emit(permission);\n                        }),\n                        this.documentActions.error.subscribe((errors) => {\n                            this.error.emit(errors);\n                        }),\n                        this.documentActions.success.subscribe((message) => {\n                            this.success.emit(message);\n                        })\n                    );\n\n                    return this.documentActions.getHandler(name);\n                }\n                return null;\n            }\n\n            if (target === ContentActionTarget.Folder) {\n                if (this.folderActions) {\n                    this.subscriptions.push(\n                        this.folderActions.permissionEvent.subscribe((permission) => {\n                            this.permissionEvent.emit(permission);\n                        }),\n                        this.folderActions.error.subscribe((errors) => {\n                            this.error.emit(errors);\n                        }),\n                        this.folderActions.success.subscribe((message) => {\n                            this.success.emit(message);\n                        })\n                    );\n\n                    return this.folderActions.getHandler(name);\n                }\n                return null;\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 { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, inject, Input, OnInit, ViewEncapsulation } from '@angular/core';\nimport { NodeEntry, Site } from '@alfresco/js-api';\nimport { ShareDataRow } from '../../data/share-data-row.model';\nimport { NodesApiService } from '../../../common/services/nodes-api.service';\n\nimport { BehaviorSubject } from 'rxjs';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n    selector: 'adf-library-name-column',\n    standalone: true,\n    imports: [CommonModule, TranslateModule],\n    template: `\n        <span\n            role=\"link\"\n            [attr.aria-label]=\"\n                'NAME_COLUMN_LINK.ACCESSIBILITY.ARIA_LABEL'\n                    | translate\n                        : {\n                              name: displayText$ | async\n                          }\n            \"\n            class=\"adf-datatable-cell-value\"\n            title=\"{{ displayTooltip$ | async }}\"\n            (click)=\"onClick()\"\n            tabindex=\"0\"\n            (keyup.enter)=\"onClick()\"\n        >\n            {{ displayText$ | async }}\n        </span>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        class: 'adf-datatable-content-cell adf-datatable-link adf-library-name-column'\n    }\n})\nexport class LibraryNameColumnComponent implements OnInit {\n    @Input({ required: true })\n    context: any;\n\n    displayTooltip$ = new BehaviorSubject<string>('');\n    displayText$ = new BehaviorSubject<string>('');\n    node: NodeEntry;\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    constructor(private element: ElementRef, private nodesApiService: NodesApiService) {}\n\n    ngOnInit() {\n        this.updateValue();\n\n        this.nodesApiService.nodeUpdated.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((node) => {\n            const row: ShareDataRow = this.context.row;\n            if (row) {\n                const { entry } = row.node;\n\n                if (entry === node) {\n                    row.node = { entry };\n                    this.updateValue();\n                }\n            }\n        });\n    }\n\n    protected updateValue() {\n        this.node = this.context.row.node;\n        const rows: Array<ShareDataRow> = this.context.data.rows || [];\n        if (this.node?.entry) {\n            this.displayText$.next(this.makeLibraryTitle(this.node.entry as any, rows));\n            this.displayTooltip$.next(this.makeLibraryTooltip(this.node.entry));\n        }\n    }\n\n    onClick() {\n        this.element.nativeElement.dispatchEvent(\n            new CustomEvent('name-click', {\n                bubbles: true,\n                detail: {\n                    node: this.node\n                }\n            })\n        );\n    }\n\n    makeLibraryTooltip(library: any): string {\n        const { description, title } = library;\n\n        return description || title || '';\n    }\n\n    makeLibraryTitle(library: Site, rows: Array<ShareDataRow>): string {\n        const entries = rows.map((row: ShareDataRow) => row.node.entry);\n        const { title, id } = library;\n\n        let isDuplicate = false;\n\n        if (entries) {\n            isDuplicate = entries.some((entry: any) => entry.id !== id && entry.title === title);\n        }\n\n        return isDuplicate ? `${title} (${id})` : `${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\nimport { ChangeDetectionStrategy, Component, DestroyRef, inject, Input, OnInit, ViewEncapsulation } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { Site, SiteEntry } from '@alfresco/js-api';\nimport { ShareDataRow } from '../../data/share-data-row.model';\nimport { NodesApiService } from '../../../common/services/nodes-api.service';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n    selector: 'adf-library-role-column',\n    standalone: true,\n    imports: [CommonModule, TranslateModule],\n    template: `\n        <span class=\"adf-datatable-cell-value\" title=\"{{ displayText$ | async | translate }}\">\n            {{ displayText$ | async | translate }}\n        </span>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: { class: 'adf-library-role-column adf-datatable-content-cell' }\n})\nexport class LibraryRoleColumnComponent implements OnInit {\n    @Input({ required: true })\n    context: any;\n\n    displayText$ = new BehaviorSubject<string>('');\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    constructor(private nodesApiService: NodesApiService) {}\n\n    ngOnInit() {\n        this.updateValue();\n\n        this.nodesApiService.nodeUpdated.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((node) => {\n            const row: ShareDataRow = this.context.row;\n            if (row) {\n                const { entry } = row.node;\n\n                if (entry === node) {\n                    row.node = { entry };\n                    this.updateValue();\n                }\n            }\n        });\n    }\n\n    protected updateValue() {\n        const node: SiteEntry = this.context.row.node;\n        if (node?.entry) {\n            const role: string = node.entry.role;\n            switch (role) {\n                case Site.RoleEnum.SiteManager:\n                    this.displayText$.next('LIBRARY.ROLE.MANAGER');\n                    break;\n                case Site.RoleEnum.SiteCollaborator:\n                    this.displayText$.next('LIBRARY.ROLE.COLLABORATOR');\n                    break;\n                case Site.RoleEnum.SiteContributor:\n                    this.displayText$.next('LIBRARY.ROLE.CONTRIBUTOR');\n                    break;\n                case Site.RoleEnum.SiteConsumer:\n                    this.displayText$.next('LIBRARY.ROLE.CONSUMER');\n                    break;\n                default:\n                    this.displayText$.next('LIBRARY.ROLE.NONE');\n                    break;\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, DestroyRef, inject, Input, OnInit } from '@angular/core';\nimport { NodesApiService } from '../../../common/services/nodes-api.service';\nimport { BehaviorSubject } from 'rxjs';\nimport { Site, SiteEntry } from '@alfresco/js-api';\nimport { ShareDataRow } from '../../data/share-data-row.model';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n    selector: 'adf-library-status-column',\n    standalone: true,\n    imports: [CommonModule, TranslateModule],\n    template: `\n        <span class=\"adf-datatable-cell-value\" title=\"{{ displayText$ | async | translate }}\">\n            {{ displayText$ | async | translate }}\n        </span>\n    `,\n    host: { class: 'adf-library-status-column adf-datatable-content-cell' }\n})\nexport class LibraryStatusColumnComponent implements OnInit {\n    @Input({ required: true })\n    context: any;\n\n    displayText$ = new BehaviorSubject<string>('');\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    constructor(private nodesApiService: NodesApiService) {}\n\n    ngOnInit() {\n        this.updateValue();\n\n        this.nodesApiService.nodeUpdated.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((node) => {\n            const row: ShareDataRow = this.context.row;\n            if (row) {\n                const { entry } = row.node;\n\n                if (entry === node) {\n                    row.node = { entry };\n                    this.updateValue();\n                }\n            }\n        });\n    }\n\n    protected updateValue() {\n        const node: SiteEntry = this.context.row.node;\n        if (node?.entry) {\n            const visibility: string = node.entry.visibility;\n\n            switch (visibility) {\n                case Site.VisibilityEnum.PUBLIC:\n                    this.displayText$.next('LIBRARY.VISIBILITY.PUBLIC');\n                    break;\n                case Site.VisibilityEnum.PRIVATE:\n                    this.displayText$.next('LIBRARY.VISIBILITY.PRIVATE');\n                    break;\n                case Site.VisibilityEnum.MODERATED:\n                    this.displayText$.next('LIBRARY.VISIBILITY.MODERATED');\n                    break;\n                default:\n                    this.displayText$.next('UNKNOWN');\n                    break;\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 { Pipe, PipeTransform } from '@angular/core';\nimport { NodeEntry } from '@alfresco/js-api';\n\n@Pipe({\n    name: 'adfNodeNameTooltip',\n    standalone: true\n})\nexport class NodeNameTooltipPipe implements PipeTransform {\n    transform(node: NodeEntry): string {\n        if (node) {\n            return this.getNodeTooltip(node);\n        }\n        return null;\n    }\n\n    private containsLine(lines: string[], line: string): boolean {\n        return lines.some((item: string) => item.toLowerCase() === line.toLowerCase());\n    }\n\n    private removeDuplicateLines(lines: string[]): string[] {\n        const reducer = (acc: string[], line: string): string[] => {\n            if (!this.containsLine(acc, line)) {\n                acc.push(line);\n            }\n            return acc;\n        };\n\n        return lines.reduce(reducer, []);\n    }\n\n    private getNodeTooltip(node: NodeEntry): string {\n        if (!node?.entry) {\n            return null;\n        }\n\n        const {\n            entry: { properties, name }\n        } = node;\n        const lines = [name];\n\n        if (properties) {\n            const { 'cm:title': title, 'cm:description': description } = properties;\n\n            if (title && description) {\n                lines[0] = title;\n                lines[1] = description;\n            }\n\n            if (title) {\n                lines[1] = title;\n            }\n\n            if (description) {\n                lines[1] = description;\n            }\n        }\n\n        return this.removeDuplicateLines(lines).join(`\\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 { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, inject, Input, OnInit, ViewEncapsulation } from '@angular/core';\nimport { NodeEntry } from '@alfresco/js-api';\nimport { BehaviorSubject } from 'rxjs';\nimport { NodesApiService } from '../../../common/services/nodes-api.service';\nimport { ShareDataRow } from '../../data/share-data-row.model';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { NodeNameTooltipPipe } from '../../../pipes/node-name-tooltip.pipe';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n    selector: 'adf-name-column',\n    standalone: true,\n    imports: [CommonModule, TranslateModule, NodeNameTooltipPipe],\n    template: `\n        <span\n            role=\"link\"\n            [attr.aria-label]=\"\n                'NAME_COLUMN_LINK.ACCESSIBILITY.ARIA_LABEL'\n                    | translate\n                        : {\n                              name: displayText$ | async\n                          }\n            \"\n            class=\"adf-datatable-cell-value\"\n            title=\"{{ node | adfNodeNameTooltip }}\"\n            (click)=\"onClick()\"\n            tabindex=\"0\"\n            (keyup.enter)=\"onClick()\"\n        >\n            {{ displayText$ | async }}\n        </span>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: { class: 'adf-datatable-content-cell adf-datatable-link adf-name-column' }\n})\nexport class NameColumnComponent implements OnInit {\n    @Input({ required: true })\n    context: any;\n\n    @Input()\n    key = 'name';\n\n    displayText$ = new BehaviorSubject<string>('');\n    node: NodeEntry;\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    constructor(private element: ElementRef, private nodesApiService: NodesApiService) {}\n\n    ngOnInit() {\n        this.updateValue();\n\n        this.nodesApiService.nodeUpdated.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((node) => {\n            const row: ShareDataRow = this.context.row;\n            if (row) {\n                const { entry } = row.node;\n\n                if (entry === node) {\n                    row.node = { entry };\n                    this.updateValue();\n                }\n            }\n        });\n    }\n\n    protected updateValue() {\n        this.node = this.context.row.node;\n\n        if (this.node?.entry) {\n            const displayText = this.context.row.getValue(this.key);\n            this.displayText$.next(displayText || this.node.entry.id);\n        }\n    }\n\n    onClick() {\n        this.element.nativeElement.dispatchEvent(\n            new CustomEvent('name-click', {\n                bubbles: true,\n                detail: {\n                    node: this.node\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 { ChangeDetectionStrategy, Component, Input, OnInit, ViewEncapsulation } from '@angular/core';\nimport { NodeEntry } from '@alfresco/js-api';\nimport { ShareDataRow } from '../../data/share-data-row.model';\nimport { CommonModule } from '@angular/common';\nimport { NodeNameTooltipPipe } from '../../../pipes/node-name-tooltip.pipe';\n\n@Component({\n    selector: 'adf-trashcan-name-column',\n    standalone: true,\n    imports: [CommonModule, NodeNameTooltipPipe],\n    template: `\n        <ng-container *ngIf=\"!isLibrary\">\n            <span class=\"adf-datatable-cell-value\" title=\"{{ node | adfNodeNameTooltip }}\">{{ displayText }}</span>\n        </ng-container>\n        <ng-container *ngIf=\"isLibrary\">\n            <span class=\"adf-datatable-cell-value\" title=\"{{ displayTooltip }}\">{{ displayText }}</span>\n        </ng-container>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: { class: 'adf-datatable-content-cell adf-trashcan-name-column' }\n})\nexport class TrashcanNameColumnComponent implements OnInit {\n    @Input({ required: true })\n    context: any;\n\n    isLibrary = false;\n    displayText: string;\n    displayTooltip: string;\n    node: NodeEntry;\n\n    ngOnInit() {\n        this.node = this.context.row.node;\n        const rows: Array<ShareDataRow> = this.context.data.rows || [];\n\n        if (this.node?.entry) {\n            this.isLibrary = this.node.entry.nodeType === 'st:site';\n\n            if (this.isLibrary) {\n                const { properties } = this.node.entry;\n\n                this.displayText = this.makeLibraryTitle(this.node.entry, rows);\n                this.displayTooltip = properties['cm:description'] || properties['cm:title'];\n            } else {\n                this.displayText = this.node.entry.name || this.node.entry.id;\n            }\n        }\n    }\n\n    makeLibraryTitle(library: any, rows: Array<ShareDataRow>): string {\n        const entries = rows.map((r: ShareDataRow) => r.node.entry);\n        const { id } = library;\n        const title = library.properties['cm:title'];\n\n        let isDuplicate = false;\n\n        if (entries) {\n            isDuplicate = entries.some((entry: any) => entry.id !== id && entry.properties['cm:title'] === title);\n        }\n\n        return isDuplicate ? `${library.properties['cm:title']} (${library.name})` : `${library.properties['cm: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\nimport { DataColumn, DataRow } from '@alfresco/adf-core';\n\nexport type ImageResolver = (row: DataRow, column: DataColumn) => 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\nimport { ShareDataRow } from './share-data-row.model';\n\nexport type RowFilter = (value: ShareDataRow, index: number, array: ShareDataRow[]) => any;\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AllowableOperationsEnum } from '../../common/models/allowable-operations.enum';\n\nexport class PermissionStyleModel {\n    css: string;\n    permission: AllowableOperationsEnum;\n    isFolder: boolean = true;\n    isFile: boolean = true;\n\n    constructor(css: string, permission: AllowableOperationsEnum, isFile: boolean = true, isFolder: boolean = true) {\n        this.css = css;\n        this.permission = permission;\n        this.isFile = isFile;\n        this.isFolder = isFolder;\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 '@alfresco/adf-core';\nimport { Observable } from 'rxjs';\nimport { DocumentLoaderNode } from '../models/document-folder.model';\n\nexport interface DocumentListLoader {\n\n    loadFolderByNodeId(nodeId: string, pagination: PaginationModel, includeFields: string[], where?: string): Observable <DocumentLoaderNode>;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY 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 { ContentActionListComponent } from './components/content-action/content-action-list.component';\nimport { ContentActionComponent } from './components/content-action/content-action.component';\nimport { DocumentListComponent } from './components/document-list.component';\nimport { TrashcanNameColumnComponent } from './components/trashcan-name-column/trashcan-name-column.component';\nimport { LibraryStatusColumnComponent } from './components/library-status-column/library-status-column.component';\nimport { LibraryRoleColumnComponent } from './components/library-role-column/library-role-column.component';\nimport { LibraryNameColumnComponent } from './components/library-name-column/library-name-column.component';\nimport { NameColumnComponent } from './components/name-column/name-column.component';\nimport { FilterHeaderComponent } from './components/filter-header/filter-header.component';\nimport { FileAutoDownloadComponent } from './components/file-auto-download/file-auto-download.component';\n\nexport const DOCUMENT_LIST_DIRECTIVES = [\n    ContentActionComponent,\n    FileAutoDownloadComponent,\n    FilterHeaderComponent,\n    LibraryNameColumnComponent,\n    LibraryRoleColumnComponent,\n    LibraryStatusColumnComponent,\n    NameColumnComponent,\n    TrashcanNameColumnComponent,\n    ContentActionListComponent,\n    DocumentListComponent\n] as const;\n\n/** @deprecated use `...DOCUMENT_LIST_DIRECTIVES` or import standalone components */\n@NgModule({\n    imports: [...DOCUMENT_LIST_DIRECTIVES],\n    exports: [...DOCUMENT_LIST_DIRECTIVES]\n})\nexport class DocumentListModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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/document-list.component';\nexport * from './components/node.event';\nexport * from './components/content-action/content-action.component';\nexport * from './components/content-action/content-action-list.component';\nexport * from './components/library-name-column/library-name-column.component';\nexport * from './components/library-role-column/library-role-column.component';\nexport * from './components/library-status-column/library-status-column.component';\nexport * from './components/name-column/name-column.component';\nexport * from './components/filter-header/filter-header.component';\nexport * from './components/trashcan-name-column/trashcan-name-column.component';\nexport * from './components/file-auto-download/file-auto-download.component';\n\n// data\nexport * from './data/share-datatable-adapter';\nexport * from './data/share-data-row.model';\nexport * from './data/image-resolver.model';\nexport * from './data/row-filter.model';\n\n// services\nexport * from './services/folder-actions.service';\nexport * from './services/document-actions.service';\nexport * from './services/document-list.service';\nexport * from './services/node-actions.service';\nexport * from './services/custom-resources.service';\nexport * from './services/lock.service';\n\n// models\nexport * from './models/content-action.model';\nexport * from './models/permissions.model';\nexport * from './models/permissions-style.model';\nexport * from './models/node-action.enum';\n\nexport * from './interfaces/document-list-loader.interface';\n\nexport * from './document-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 { EXTENDIBLE_COMPONENT } from '@alfresco/adf-core';\nimport { Component, forwardRef, Input, OnChanges, ViewEncapsulation, OnInit } from '@angular/core';\nimport { Node } from '@alfresco/js-api';\nimport { UploadButtonComponent } from './upload-button.component';\nimport { AllowableOperationsEnum } from '../../common/models/allowable-operations.enum';\nimport { FileModel } from '../../common/models/file.model';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n    selector: 'adf-upload-version-button',\n    standalone: true,\n    imports: [CommonModule, MatButtonModule, TranslateModule, MatIconModule],\n    templateUrl: './upload-button.component.html',\n    styleUrls: ['./upload-button.component.scss'],\n    viewProviders: [{ provide: EXTENDIBLE_COMPONENT, useExisting: forwardRef(() => UploadVersionButtonComponent) }],\n    encapsulation: ViewEncapsulation.None,\n    host: { class: 'adf-upload-version-button' }\n})\nexport class UploadVersionButtonComponent extends UploadButtonComponent implements OnChanges, OnInit {\n    /** (**Required**) The node to be versioned. */\n    @Input()\n    node: Node;\n\n    protected createFileModel(file: File): FileModel {\n        const fileModel = super.createFileModel(\n            file,\n            this.rootFolderId,\n            ((file as any).webkitRelativePath || '').replace(/\\/[^/]*$/, ''),\n            this.node.id\n        );\n\n        if (!this.isFileAcceptable(fileModel)) {\n            const message = this.translationService.instant('FILE_UPLOAD.VERSION.MESSAGES.INCOMPATIBLE_VERSION');\n            this.error.emit(message);\n        }\n\n        return fileModel;\n    }\n\n    ngOnInit() {\n        super.ngOnInit();\n        this.checkPermission();\n    }\n\n    checkPermission() {\n        this.permissionValue.next(this.nodeHasPermission(this.node, AllowableOperationsEnum.UPDATE));\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 { FileUploadingDialogComponent } from './components/file-uploading-dialog.component';\nimport { FileUploadingListRowComponent } from './components/file-uploading-list-row.component';\nimport { FileUploadingListComponent } from './components/file-uploading-list.component';\nimport { UploadButtonComponent } from './components/upload-button.component';\nimport { UploadVersionButtonComponent } from './components/upload-version-button.component';\nimport { UploadDragAreaComponent } from './components/upload-drag-area.component';\nimport { FileUploadErrorPipe } from './pipes/file-upload-error.pipe';\nimport { FileDraggableDirective } from './directives/file-draggable.directive';\nimport { ToggleIconDirective } from './directives/toggle-icon.directive';\n\nexport const CONTENT_UPLOAD_DIRECTIVES = [\n    FileUploadErrorPipe,\n    FileDraggableDirective,\n    ToggleIconDirective,\n    UploadDragAreaComponent,\n    UploadButtonComponent,\n    UploadVersionButtonComponent,\n    FileUploadingListRowComponent,\n    FileUploadingListComponent,\n    FileUploadingDialogComponent\n] as const;\n\n/** @deprecated use `...CONTENT_UPLOAD_DIRECTIVES` instead or import standalone components directly */\n@NgModule({\n    imports: [...CONTENT_UPLOAD_DIRECTIVES],\n    exports: [...CONTENT_UPLOAD_DIRECTIVES]\n})\nexport class UploadModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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/upload-button.component';\nexport * from './components/upload-version-button.component';\nexport * from './components/file-uploading-dialog.component';\nexport * from './components/upload-drag-area.component';\nexport * from './components/file-uploading-list.component';\nexport * from './components/file-uploading-list-row.component';\nexport * from './components/upload-files.event';\n\nexport * from './directives/file-draggable.directive';\nexport * from './directives/toggle-icon.directive';\n\nexport * from './pipes/file-upload-error.pipe';\n\nexport * from './components/base-upload/upload-base';\n\nexport * from './upload.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\nexport * from './search-check-list.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 { Component, ViewEncapsulation, Input } from '@angular/core';\nimport { SearchFilterComponent } from '../../components/search-filter/search-filter.component';\nimport { SearchFacetFiltersService } from '../../services/search-facet-filters.service';\nimport { CommonModule } from '@angular/common';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n    selector: 'adf-search-chip-list',\n    standalone: true,\n    imports: [CommonModule, MatChipsModule, TranslateModule, MatIconModule],\n    templateUrl: './search-chip-list.component.html',\n    styleUrls: ['./search-chip-list.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    host: { class: 'adf-search-chip-list' }\n})\nexport class SearchChipListComponent {\n    /**\n     * Search filter to supply the data for the chips.\n     * Not required from 4.5.0 and later versions @deprecated\n     */\n    @Input()\n    searchFilter: SearchFilterComponent;\n\n    /** Flag used to enable the display of a clear-all-filters button. */\n    @Input()\n    clearAll: boolean = false;\n\n    constructor(public facetFiltersService: SearchFacetFiltersService) {}\n}\n","<mat-chip-listbox>\n    <ng-container *ngIf=\"facetFiltersService.selectedBuckets.length\">\n        <mat-chip-option *ngIf=\"clearAll && facetFiltersService.selectedBuckets.length > 1\"\n            data-automation-id=\"reset-filter\"\n            color=\"primary\"\n            selected\n            class=\"adf-search-chip-list-item\"\n            title=\"{{ 'SEARCH.FILTER.BUTTONS.CLEAR-ALL.TOOLTIP' | translate }}\"\n            (click)=\"facetFiltersService.resetAllSelectedBuckets()\">\n            {{ 'SEARCH.FILTER.BUTTONS.CLEAR-ALL.LABEL' | translate }}\n        </mat-chip-option>\n\n        <mat-chip-option\n            data-automation-id=\"chip-list-entry\"\n            class=\"adf-search-chip-list-item\"\n            *ngFor=\"let selection of facetFiltersService.selectedBuckets\"\n            [removable]=\"true\"\n            (removed)=\"facetFiltersService.unselectFacetBucket(selection.field, selection.bucket)\">\n            {{ (selection.bucket.display || selection.bucket.label) | translate }}\n            <mat-icon class=\"adf-search-chip-list-item-remove\" matChipRemove>cancel</mat-icon>\n        </mat-chip-option>\n    </ng-container>\n</mat-chip-listbox>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DateRangeType } from './date-range-type';\nimport { InLastDateType } from './in-last-date-type';\n\nexport interface SearchDateRange {\n    dateRangeType: DateRangeType;\n    inLastValueType?: InLastDateType;\n    inLastValue?: string;\n    betweenStartDate?: Date;\n    betweenEndDate?: 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\nexport * from './search-date-range/date-range-type';\nexport * from './search-date-range/in-last-date-type';\nexport * from './search-date-range/search-date-range';\nexport * from './search-date-range/search-date-range.component';\nexport * from './search-date-range-tabbed.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 './search-datetime-range.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 './search-filter-autocomplete-chips.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 './search-filter-container.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 { Component, EventEmitter, inject, Output, ViewEncapsulation } from '@angular/core';\nimport { SearchQueryBuilderService } from '../../services/search-query-builder.service';\nimport { SearchForm } from '../../models/search-form.interface';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n    selector: 'adf-search-form',\n    standalone: true,\n    imports: [CommonModule, MatButtonModule, TranslateModule, MatMenuModule, MatIconModule],\n    templateUrl: './search-form.component.html',\n    styleUrls: ['./search-form.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class SearchFormComponent {\n    private queryBuilder = inject(SearchQueryBuilderService);\n\n    searchForms$ = this.queryBuilder.searchForms;\n\n    /** Emitted when the form change */\n    @Output()\n    formChange: EventEmitter<SearchForm> = new EventEmitter<SearchForm>();\n\n    onSelectionChange(form: SearchForm) {\n        this.queryBuilder.updateSelectedConfiguration(form.index);\n        this.formChange.emit(form);\n    }\n\n    getSelected(forms: SearchForm[]): string {\n        return forms.find((form) => form.selected)?.name;\n    }\n}\n","<ng-container *ngIf=\"searchForms$ | async as forms\">\n\n    <ng-container *ngIf=\"forms.length === 1\">\n        <button class=\"adf-search-form adf-search-form-button\"\n                [disableRipple]=\"true\"\n                mat-button\n                [title]=\"getSelected(forms) | translate\"\n                [attr.aria-label]=\"getSelected(forms) | translate\">\n            <span class=\"adf-search-form-title\">{{ getSelected(forms) | translate }}</span>\n        </button>\n    </ng-container>\n\n    <ng-container  *ngIf=\"forms.length > 1\">\n        <button class=\"adf-search-form adf-search-form-button\"\n                [matMenuTriggerFor]=\"menu\"\n                #menuTrigger=\"matMenuTrigger\"\n                [disableRipple]=\"true\"\n                mat-button\n                [title]=\"getSelected(forms) | translate\"\n                [attr.aria-label]=\"getSelected(forms) | translate\"\n                [matMenuTriggerRestoreFocus]=\"true\">\n\n            <span class=\"adf-search-form-title\">{{ getSelected(forms) | translate }}</span>\n            <mat-icon [class.adf-search-form-icon-selected]=\"menuTrigger.menuOpen\" iconPositionEnd class=\"adf-search-form-icon\">expand_more</mat-icon>\n        </button>\n\n        <mat-menu #menu=\"matMenu\" class=\"adf-search-form-menu\">\n            <button *ngFor=\"let form of forms\" mat-menu-item tabindex=\"0\" [attr.aria-label]=\"form.name | translate\" (click)=\"onSelectionChange(form)\">\n                {{ form.name | translate }}\n            </button>\n        </mat-menu>\n    </ng-container>\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\nexport * from './search-form.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 { AppConfigService } from '@alfresco/adf-core';\nimport { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { SearchConfiguration } from '../../models';\n\n@Component({\n    selector: 'adf-search-input',\n    standalone: true,\n    imports: [CommonModule, MatFormFieldModule, MatInputModule, TranslateModule],\n    templateUrl: `./search-input.component.html`,\n    styleUrls: ['./search-input.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class SearchInputComponent implements OnInit {\n    @Input()\n    value = '';\n\n    @Input()\n    label = 'SEARCH.INPUT.LABEL';\n\n    @Input()\n    placeholder = 'SEARCH.INPUT.PLACEHOLDER';\n\n    @Input()\n    fields = ['cm:name'];\n\n    @Output()\n    changed = new EventEmitter<string>();\n\n    constructor(private appConfig: AppConfigService) {}\n\n    ngOnInit(): void {\n        const searchConfig = this.appConfig.get<SearchConfiguration>('search') || {};\n        if (searchConfig['app:fields']) {\n            this.fields = searchConfig['app:fields'];\n        }\n    }\n\n    onSearchInputChanged(event: Event) {\n        const input = event.target as HTMLInputElement;\n        const searchTerm = input.value;\n\n        const query = this.formatSearchQuery(searchTerm, this.fields);\n        if (query) {\n            this.changed.emit(decodeURIComponent(query));\n        }\n    }\n\n    private formatSearchQuery(userInput: string, fields = ['cm:name']): string {\n        if (!userInput) {\n            return null;\n        }\n\n        if (/^https?:\\/\\//.test(userInput)) {\n            return this.formatFields(fields, userInput);\n        }\n\n        userInput = userInput.trim();\n\n        if (userInput.includes(':') || userInput.includes('\"')) {\n            return userInput;\n        }\n\n        const words = userInput.split(' ');\n\n        if (words.length > 1) {\n            const separator = words.some(this.isOperator) ? ' ' : ' AND ';\n            return words.map((term) => (this.isOperator(term) ? term : this.formatFields(fields, term))).join(separator);\n        }\n\n        return this.formatFields(fields, userInput);\n    }\n\n    private isOperator(input: string): boolean {\n        if (input) {\n            input = input.trim().toUpperCase();\n\n            const operators = ['AND', 'OR'];\n            return operators.includes(input);\n        }\n        return false;\n    }\n\n    private formatFields(fields: string[], term: string): string {\n        let prefix = '';\n        let suffix = '*';\n\n        if (term.startsWith('=')) {\n            prefix = '=';\n            suffix = '';\n            term = term.substring(1);\n        }\n\n        if (term === '*') {\n            prefix = '';\n            suffix = '';\n        }\n\n        return '(' + fields.map((field) => `${prefix}${field}:\"${term}${suffix}\"`).join(' OR ') + ')';\n    }\n}\n","<div class=\"adf-search-input-container\">\n    <mat-form-field appearance=\"outline\">\n        <mat-label *ngIf=\"label\">{{ label | translate }}</mat-label>\n        <input matInput [placeholder]=\"placeholder | translate\" [value]=\"value\" (change)=\"onSearchInputChanged($event)\" />\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\nexport * from './search-input.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 './search-logical-filter.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 './search-number-range.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 './search-panel.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 { FileSizeOperator } from './file-size-operator.enum';\nimport { FileSizeUnit } from './file-size-unit.enum';\n\nexport interface FileSizeCondition {\n    fileSizeOperator: FileSizeOperator;\n    fileSize?: number;\n    fileSizeUnit: FileSizeUnit;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FileSizeCondition } from './file-size-condition';\n\nexport interface SearchProperties {\n    fileSizeCondition: FileSizeCondition;\n    fileExtensions: 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 './file-size-condition';\nexport * from './file-size-operator.enum';\nexport * from './file-size-unit.enum';\nexport * from './search-properties.component';\nexport * from './search-properties';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 './search-radio.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 './search-slider.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 { Component, OnInit, ViewEncapsulation } from '@angular/core';\nimport { SearchQueryBuilderService } from '../../services/search-query-builder.service';\nimport { SearchSortingDefinition } from '../../models/search-sorting-definition.interface';\nimport { CommonModule } from '@angular/common';\nimport { SortingPickerComponent } from '@alfresco/adf-core';\n\n@Component({\n    selector: 'adf-search-sorting-picker',\n    standalone: true,\n    imports: [CommonModule, SortingPickerComponent],\n    templateUrl: './search-sorting-picker.component.html',\n    styleUrls: ['./search-sorting-picker.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    host: { class: 'adf-search-sorting-picker' }\n})\nexport class SearchSortingPickerComponent implements OnInit {\n    options: SearchSortingDefinition[] = [];\n    value: string;\n    ascending: boolean;\n\n    constructor(private queryBuilder: SearchQueryBuilderService) {}\n\n    ngOnInit() {\n        this.options = this.queryBuilder.getSortingOptions();\n\n        const primary = this.queryBuilder.getPrimarySorting();\n        if (primary) {\n            this.value = primary.key;\n            this.ascending = primary.ascending;\n        }\n    }\n\n    onValueChanged(key: string) {\n        this.value = key;\n        this.ascending = this.getSortingOrder();\n        this.applySorting();\n    }\n\n    onSortingChanged(ascending: boolean) {\n        this.ascending = ascending;\n        this.applySorting();\n    }\n\n    private findOptionByKey(key: string): SearchSortingDefinition {\n        if (key) {\n            return this.options.find((opt) => opt.key === key);\n        }\n        return null;\n    }\n\n    private applySorting() {\n        const option = this.findOptionByKey(this.value);\n        if (option) {\n            this.queryBuilder.sorting = [\n                {\n                    ...option,\n                    ascending: this.ascending\n                }\n            ];\n            this.queryBuilder.update();\n        }\n    }\n\n    private getSortingOrder(): boolean {\n        const option = this.findOptionByKey(this.value);\n        if (option) {\n            return option.ascending;\n        }\n\n        return this.queryBuilder.getPrimarySorting().ascending;\n    }\n}\n","<adf-sorting-picker\n    [options]=\"options\"\n    [selected]=\"value\"\n    [ascending]=\"ascending\"\n    (valueChange)=\"onValueChanged($event)\"\n    (sortingChange)=\"onSortingChanged($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 './search-sorting-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 './search-text.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 './search-widget-container.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 { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n    selector: 'adf-empty-search-result',\n    standalone: true,\n    templateUrl: './empty-search-result.component.html',\n    encapsulation: ViewEncapsulation.None\n})\nexport class EmptySearchResultComponent {}\n","<div class=\"adf-empty-search-result\">\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 { SearchService } from '../services/search.service';\nimport {\n    AfterContentInit,\n    Component,\n    ContentChild,\n    ElementRef,\n    EventEmitter,\n    Input,\n    OnChanges,\n    Output,\n    SimpleChanges,\n    TemplateRef,\n    ViewChild,\n    ViewEncapsulation\n} from '@angular/core';\nimport { NodePaging, ResultSetPaging } from '@alfresco/js-api';\nimport { Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { SearchComponentInterface } from '@alfresco/adf-core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n    selector: 'adf-search',\n    standalone: true,\n    imports: [CommonModule, TranslateModule],\n    templateUrl: './search.component.html',\n    styleUrls: ['./search.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    preserveWhitespaces: false,\n    exportAs: 'searchAutocomplete',\n    host: { class: 'adf-search' }\n})\nexport class SearchComponent implements SearchComponentInterface, AfterContentInit, OnChanges {\n    @ViewChild('panel', { static: true })\n    panel: ElementRef;\n\n    @ContentChild(TemplateRef)\n    template: TemplateRef<any>;\n\n    /** Function that maps an option's value to its display value in the trigger. */\n    @Input()\n    displayWith: ((value: any) => string) | null = null;\n\n    /** Maximum number of results to show in the search. */\n    @Input()\n    maxResults: number = 20;\n\n    /** Number of results to skip from the results pagination. */\n    @Input()\n    skipResults: number = 0;\n\n    /**\n     * Search term to use when executing the search. Updating this value will\n     * run a new search and update the results.\n     */\n    @Input()\n    searchTerm: string = '';\n\n    /** CSS class for display. */\n    // eslint-disable-next-line @angular-eslint/no-input-rename\n    @Input('class')\n    set classList(classList: string) {\n        if (classList?.length) {\n            classList.split(' ').forEach((className) => (this._classList[className.trim()] = true));\n            this._elementRef.nativeElement.className = '';\n        }\n    }\n\n    /** Emitted when search results have fully loaded. */\n    @Output()\n    resultLoaded: EventEmitter<NodePaging> = new EventEmitter();\n\n    /** Emitted when an error occurs. */\n    @Output()\n    error: EventEmitter<any> = new EventEmitter();\n\n    showPanel: boolean = false;\n    results: NodePaging;\n\n    get isOpen(): boolean {\n        return this._isOpen && this.showPanel;\n    }\n\n    set isOpen(value: boolean) {\n        this._isOpen = value;\n    }\n\n    _isOpen: boolean = false;\n    keyPressedStream = new Subject<string>();\n    _classList: { [key: string]: boolean } = {};\n    constructor(private searchService: SearchService, private _elementRef: ElementRef) {\n        this.keyPressedStream.pipe(debounceTime(200), takeUntilDestroyed()).subscribe((searchedWord) => {\n            this.loadSearchResults(searchedWord);\n        });\n\n        searchService.dataLoaded.pipe(takeUntilDestroyed()).subscribe(\n            (nodePaging) => this.onSearchDataLoaded(nodePaging),\n            (error) => this.onSearchDataError(error)\n        );\n    }\n\n    ngAfterContentInit() {\n        this.setVisibility();\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        if (changes.searchTerm?.currentValue) {\n            this.loadSearchResults(changes.searchTerm.currentValue);\n        }\n    }\n    resetResults() {\n        this.cleanResults();\n        this.setVisibility();\n    }\n\n    reload() {\n        this.loadSearchResults(this.searchTerm);\n    }\n\n    private cleanResults() {\n        if (this.results) {\n            this.results = {};\n        }\n    }\n\n    private loadSearchResults(searchTerm?: string) {\n        this.resetResults();\n        if (searchTerm) {\n            this.searchService.search(searchTerm, this.maxResults, this.skipResults).subscribe(\n                (result) => this.onSearchDataLoaded(result),\n                (err) => this.onSearchDataError(err)\n            );\n        } else {\n            this.cleanResults();\n        }\n    }\n\n    onSearchDataLoaded(resultSetPaging: ResultSetPaging) {\n        if (resultSetPaging) {\n            this.results = resultSetPaging as NodePaging;\n            this.resultLoaded.emit(this.results);\n            this.isOpen = true;\n            this.setVisibility();\n        }\n    }\n\n    onSearchDataError(error: { status: number }) {\n        if (error?.status !== 400) {\n            this.results = null;\n            this.error.emit(error);\n        }\n    }\n\n    hidePanel() {\n        if (this.isOpen) {\n            this._classList['adf-search-show'] = false;\n            this._classList['adf-search-hide'] = true;\n            this.isOpen = false;\n        }\n    }\n\n    setVisibility() {\n        this.showPanel = !!this.results && !!this.results.list;\n        this._classList['adf-search-show'] = this.showPanel;\n        this._classList['adf-search-hide'] = !this.showPanel;\n    }\n}\n","<div role=\"listbox\" id=\"adf-search-results-content\" title=\"{{'PERMISSION_MANAGER.ADD-PERMISSION.USER-GROUP-LIST' | translate}}\"\n    [ngClass]=\"_classList\" #panel>\n    <ng-template\n        [ngTemplateOutlet]=\"template\"\n        [ngTemplateOutletContext]=\"{ $implicit: results }\" />\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 { AuthenticationService, HighlightPipe, SearchTextInputComponent, ThumbnailService } from '@alfresco/adf-core';\nimport {\n    Component,\n    ContentChild,\n    EventEmitter,\n    Input,\n    Output,\n    QueryList,\n    TemplateRef,\n    ViewChild,\n    ViewChildren,\n    ViewEncapsulation\n} from '@angular/core';\nimport { NodeEntry } from '@alfresco/js-api';\nimport { Subject } from 'rxjs';\nimport { SearchComponent } from './search.component';\nimport { MatListItem, MatListModule } from '@angular/material/list';\nimport { EmptySearchResultComponent } from './empty-search-result.component';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n    selector: 'adf-search-control',\n    standalone: true,\n    imports: [CommonModule, SearchTextInputComponent, SearchComponent, MatListModule, MatIconModule, HighlightPipe, TranslateModule],\n    templateUrl: './search-control.component.html',\n    styleUrls: ['./search-control.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    host: { class: 'adf-search-control' }\n})\nexport class SearchControlComponent {\n    /** Toggles highlighting of the search term in the results. */\n    @Input()\n    highlight: boolean = false;\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    /** 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    /** Maximum number of results to show in the live search. */\n    @Input()\n    liveSearchMaxResults: number = 5;\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: EventEmitter<any> = new EventEmitter();\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: EventEmitter<string> = new EventEmitter();\n\n    /** Emitted when a file item from the list of \"find-as-you-type\" results is selected. */\n    @Output()\n    optionClicked: EventEmitter<any> = new EventEmitter();\n\n    @ViewChild('searchTextInput')\n    searchTextInput: SearchTextInputComponent;\n\n    @ViewChild('search')\n    searchAutocomplete: SearchComponent;\n\n    @ViewChildren(MatListItem)\n    private listResultElement: QueryList<MatListItem>;\n\n    @ContentChild(EmptySearchResultComponent)\n    emptySearchTemplate: EmptySearchResultComponent;\n\n    focusSubject = new Subject<FocusEvent>();\n    noSearchResultTemplate: TemplateRef<any> = null;\n    searchTerm: string = '';\n\n    constructor(public authService: AuthenticationService, private thumbnailService: ThumbnailService) {}\n\n    isNoSearchTemplatePresent(): boolean {\n        return !!this.emptySearchTemplate;\n    }\n    isLoggedIn(): boolean {\n        return this.authService.isEcmLoggedIn();\n    }\n\n    inputChange(value: string) {\n        this.searchTerm = value;\n        this.searchChange.emit(value);\n    }\n\n    getMimeTypeIcon(node: NodeEntry): string {\n        const mimeType = this.getMimeType(node);\n        return this.thumbnailService.getMimeTypeIcon(mimeType);\n    }\n\n    getMimeType(node: NodeEntry): string {\n        let mimeType: string;\n\n        if (node.entry.content?.mimeType) {\n            mimeType = node.entry.content.mimeType;\n        }\n        if (node.entry.isFolder) {\n            mimeType = 'folder';\n        }\n        return mimeType;\n    }\n\n    elementClicked(item: any) {\n        if (item.entry) {\n            this.optionClicked.next(item);\n            this.focusSubject.next(new FocusEvent('blur'));\n        }\n    }\n\n    onFocus(event: FocusEvent): void {\n        this.focusSubject.next(event);\n    }\n\n    onBlur(event: FocusEvent): void {\n        const nextElement: any = this.getNextElementSibling(event.target as Element);\n        if (!nextElement && !this.isListElement(event)) {\n            this.focusSubject.next(event);\n        }\n    }\n\n    onSelectFirstResult() {\n        if (this.listResultElement && this.listResultElement.length > 0) {\n            const firstElement = this.listResultElement.first as MatListItem;\n            // eslint-disable-next-line no-underscore-dangle\n            firstElement._hostElement.focus();\n        }\n    }\n\n    onRowArrowDown(event: Event): void {\n        const nextElement: any = this.getNextElementSibling(event.target as Element);\n        if (nextElement) {\n            nextElement.focus();\n        }\n    }\n\n    onRowArrowUp(event: Event): void {\n        const previousElement: any = this.getPreviousElementSibling(event.target as Element);\n        if (previousElement) {\n            previousElement.focus();\n        } else {\n            this.focusSubject.next(new FocusEvent('focus'));\n        }\n    }\n\n    onReset(status: boolean) {\n        if (status) {\n            this.searchAutocomplete.resetResults();\n        }\n    }\n\n    private isListElement(event: any): boolean {\n        return event.relatedTarget?.children[0] && event.relatedTarget.children[0].className === 'mat-list-item-content';\n    }\n\n    private getNextElementSibling(node: Element): Element {\n        return node.nextElementSibling;\n    }\n\n    private getPreviousElementSibling(node: Element): Element {\n        return node.previousElementSibling;\n    }\n}\n","<div *ngIf=\"isLoggedIn()\">\n    <adf-search-text-input  #searchTextInput\n                            [searchTerm]= \"searchTerm\"\n                            [expandable]=\"expandable\"\n                            [autocomplete]=\"autocomplete\"\n                            [liveSearchEnabled]=\"liveSearchEnabled\"\n                            [focusListener]=\"focusSubject.asObservable()\"\n                            [searchAutocomplete]=\"auto\"\n                            (searchChange)=\"inputChange($event)\"\n                            (reset)=\"onReset($event)\"\n                            (selectResult)=\"onSelectFirstResult()\"\n                            (submit)=\"submit.emit($event)\" />\n\n    <adf-search #search\n                #auto=\"searchAutocomplete\"\n                class=\"adf-search-result-autocomplete\"\n                [maxResults]=\"liveSearchMaxResults\">\n        <ng-template let-data>\n            <mat-list *ngIf=\"searchTextInput?.isSearchBarActive()\" id=\"autocomplete-search-result-list\">\n                <mat-list-item\n                    *ngFor=\"let item of data?.list?.entries; let idx = index\"\n                    id=\"result_option_{{idx}}\"\n                    [attr.data-automation-id]=\"'autocomplete_for_' + item.entry.name\"\n                    [tabindex]=\"0\"\n                    (blur)=\"onBlur($event)\"\n                    (keyup.arrowdown)=\"onRowArrowDown($event)\"\n                    (keyup.arrowup)=\"onRowArrowUp($event)\"\n                    class=\"adf-search-autocomplete-item\"\n                    (click)=\"elementClicked(item)\"\n                    (keyup.enter)=\"elementClicked(item)\"\n                    (touchend)=\"elementClicked(item)\">\n                    <!-- This is a comment -->\n                    <mat-icon matListItemLine>\n                        <img [alt]=\"getMimeType(item)\" [src]=\"getMimeTypeIcon(item)\"/>\n                    </mat-icon>\n                    <h4 matListItemTitle id=\"result_name_{{idx}}\"\n                        *ngIf=\"highlight; else elseBlock\"\n                        class=\"adf-search-fixed-text\"\n                        [innerHtml]=\"item.entry.name | highlight: searchTerm\">\n                        {{ item?.entry.name }}\n                    </h4>\n                    <ng-template #elseBlock>\n                        <h4 class=\"adf-search-fixed-text\" matListItemTitle id=\"result_name_{{idx}}\"\n                            [innerHtml]=\"item.entry.name\"></h4>\n                    </ng-template>\n                    <p matListItemLine class=\"adf-search-fixed-text\"> {{item?.entry.createdByUser.displayName}} </p>\n                </mat-list-item>\n                <mat-list-item id=\"search_no_result\"\n                            data-automation-id=\"search_no_result_found\"\n                            *ngIf=\"data?.list?.entries.length === 0\">\n                    <ng-content\n                        selector=\"adf-empty-search-result\"\n                        *ngIf=\"isNoSearchTemplatePresent() else defaultNoResult\" />\n                    <ng-template #defaultNoResult>\n                        <p matListItemLine class=\"adf-search-fixed-text\">{{ 'SEARCH.RESULTS.NONE' | translate:{searchTerm:\n                            searchTerm} }}</p>\n                    </ng-template>\n                </mat-list-item>\n            </mat-list>\n        </ng-template>\n    </adf-search>\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 './search-check-list';\nexport * from './search-chip-autocomplete-input';\nexport * from './search-chip-list/search-chip-list.component';\nexport * from './search-date-range-tabbed';\nexport * from './search-datetime-range';\nexport * from './search-facet-field';\nexport * from './search-filter';\nexport * from './search-filter-autocomplete-chips';\nexport * from './search-filter-chips';\nexport * from './search-filter-container';\nexport * from './search-filter-tabbed';\nexport * from './search-form';\nexport * from './search-input';\nexport * from './search-logical-filter';\nexport * from './search-number-range';\nexport * from './search-panel';\nexport * from './search-properties';\nexport * from './search-radio';\nexport * from './search-slider';\nexport * from './search-sorting-picker';\nexport * from './search-text';\nexport * from './search-widget-container';\n\nexport * from './empty-search-result.component';\nexport * from './reset-search.directive';\nexport * from './search-control.component';\nexport * from './search.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 { UntypedFormControl } from '@angular/forms';\n\nexport class SearchTermValidator {\n    static minAlphanumericChars(minChars: number) {\n        return (control: UntypedFormControl) =>\n            ('' + control.value).replace(/[^0-9a-zA-Z]+/g, '').length >= minChars\n                ? null\n                : {\n                      hasMinAlphanumericChars: 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 * from './live-error-state-matcher';\nexport * from './search-term-validator';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ContentInfo, Node, NodePagingList, UserInfo } from '@alfresco/js-api';\n\nexport const fakeSearch = {\n    list: new NodePagingList({\n        pagination: {\n            count: 1,\n            hasMoreItems: false,\n            totalItems: 1,\n            skipCount: 0,\n            maxItems: 100\n        },\n        entries: [\n            {\n                entry: new Node({\n                    id: '123',\n                    name: 'MyDoc',\n                    content: new ContentInfo({ mimeType: 'text/plain' }),\n                    createdByUser: new UserInfo({\n                        displayName: 'John Doe'\n                    }),\n                    modifiedByUser: new UserInfo({\n                        displayName: 'John Doe'\n                    })\n                })\n            }\n        ]\n    })\n};\n\nexport const mockError = {\n    error: {\n        errorKey: 'Search failed',\n        statusCode: 400,\n        briefSummary: '08220082 search failed',\n        stackTrace: 'For security reasons the stack trace is no longer displayed, but the property is kept for previous versions.',\n        descriptionURL: 'https://api-explorer.alfresco.com'\n    }\n};\n\nexport const searchMockApi: any = {\n    findNodes: () => Promise.resolve(fakeSearch)\n};\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 './search.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 interface FacetFieldBucket {\n    count: number;\n    display?: string;\n    label: string;\n    filterQuery: string;\n\n    checked?: boolean;\n    field?: 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 FacetQuery {\n    label: string;\n    query: string;\n\n    checked?: boolean;\n    count?: number;\n    group?: 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 { Subject } from 'rxjs';\n\nexport interface FacetWidget {\n    /* provide the formatted selected value for chip */\n    displayValue$: Subject<string>;\n    /* reset the value and update the search */\n    reset(): void;\n    /* update the search with field value */\n    submitValues(): 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 FilterQuery {\n    query: 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 FilterSearch {\n    key: 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\nimport { FacetQuery } from './facet-query.interface';\nimport { SearchFilterList } from './search-filter-list.model';\n\nexport class ResponseFacetQueryList extends SearchFilterList<FacetQuery> {\n    constructor(items: FacetQuery[] = [], translationService, pageSize: number = 5) {\n        super(\n            items.filter((item) => item.count > 0),\n            pageSize\n        );\n\n        this.filter = (query: FacetQuery) => {\n            if (this.filterText && query.label) {\n                const pattern = (this.filterText || '').toLowerCase();\n                const label = translationService.instant(query.label).toLowerCase();\n                return label.startsWith(pattern);\n            }\n            return true;\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 { SearchWidgetSettings } from './search-widget-settings.interface';\n\nexport interface SearchCategory {\n    id: string;\n    name: string;\n    columnKey?: string;\n    enabled: boolean;\n    expanded: boolean;\n    component: {\n        selector: string;\n        settings: SearchWidgetSettings;\n    };\n    rules?: {\n        visible: 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 { FilterQuery } from './filter-query.interface';\nimport { FacetQuery } from './facet-query.interface';\nimport { FacetField, FacetFieldSettings } from './facet-field.interface';\nimport { SearchCategory } from './search-category.interface';\nimport { SearchSortingDefinition } from './search-sorting-definition.interface';\nimport { RequestHighlight } from '@alfresco/js-api';\n\nexport interface SearchConfiguration {\n    include?: string[];\n    fields?: string[];\n    categories?: SearchCategory[];\n    filterQueries?: FilterQuery[];\n    filterWithContains?: boolean;\n    resetButton?: boolean;\n    facetQueries?: {\n        label?: string;\n        pageSize?: number;\n        expanded?: boolean;\n        mincount?: number;\n        queries: FacetQuery[];\n        settings?: FacetFieldSettings;\n    };\n    facetFields?: {\n        expanded?: boolean;\n        fields: FacetField[];\n    };\n    facetIntervals?: {\n        expanded?: boolean;\n        intervals: FacetField[];\n    };\n    sorting?: {\n        options: SearchSortingDefinition[];\n        defaults: SearchSortingDefinition[];\n    };\n    highlight?: RequestHighlight;\n    name?: string;\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\nexport interface SearchForm {\n    index: number;\n    name: string;\n    default: boolean;\n    selected: 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 SearchRange {\n    field: string;\n    start: string;\n    end: string;\n    gap: string;\n    hardend: boolean;\n    other: Array<string>;\n    include: Array<string>;\n    label: string;\n    excludeFilters: Array<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 SearchSortingDefinition {\n    key: string;\n    label: string;\n    type: string;\n    field: string;\n    ascending: 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 { AutocompleteOption } from './autocomplete-option.interface';\n\nexport interface SearchWidgetSettings {\n    field: string;\n    /* allow the user to update search in every change */\n    allowUpdateOnChange?: boolean;\n    /* allow the user hide default search actions. So widget can have custom actions */\n    hideDefaultAction?: boolean;\n    /* describes the unit of the value i.e byte for better display message */\n    unit?: string;\n    /* describes query format */\n    format?: string;\n    /* allow the user to search only within predefined options */\n    allowOnlyPredefinedValues?: boolean;\n    /* allow the user to predefine autocomplete options */\n    autocompleteOptions?: AutocompleteOption[];\n\n    [indexer: 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\nimport { SearchWidgetSettings } from './search-widget-settings.interface';\nimport { SearchQueryBuilderService } from '../services/search-query-builder.service';\nimport { ReplaySubject } from 'rxjs';\n\nexport interface SearchWidget {\n    id: string;\n    /* optional field control options */\n    settings?: SearchWidgetSettings;\n    context?: SearchQueryBuilderService;\n    isActive?: boolean;\n    startValue: any;\n    /* stream emit value on changes */\n    displayValue$: ReplaySubject<string>;\n    /* reset the value and update the search */\n    reset(): void;\n    /* update the search with field value */\n    submitValues(): void;\n    hasValidValue(): boolean;\n    getCurrentValue(): any;\n    setValue(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 { FacetField } from './facet-field.interface';\n\nexport interface TabbedFacetField {\n    /* array of fields that tabbed facet will consist of */\n    fields: string[];\n    /* label to display for tabbed facet */\n    label: string;\n    /* facets to populate tabbed facet tabs */\n    facets: {\n        [propName: string]: FacetField;\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 './autocomplete-option.interface';\nexport * from './facet-field-bucket.interface';\nexport * from './facet-field.interface';\nexport * from './facet-query.interface';\nexport * from './facet-widget.interface';\nexport * from './filter-query.interface';\nexport * from './filter-search.interface';\nexport * from './response-facet-query-list.model';\nexport * from './search-category.interface';\nexport * from './search-configuration.interface';\nexport * from './search-filter-list.model';\nexport * from './search-form.interface';\nexport * from './search-range.interface';\nexport * from './search-sorting-definition.interface';\nexport * from './search-widget-settings.interface';\nexport * from './search-widget.interface';\nexport * from './tabbed-facet-field.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 { NgModule } from '@angular/core';\nimport { SearchControlComponent } from './components/search-control.component';\nimport { SearchComponent } from './components/search.component';\nimport { EmptySearchResultComponent } from './components/empty-search-result.component';\nimport { SearchWidgetContainerComponent } from './components/search-widget-container/search-widget-container.component';\nimport { SearchFilterComponent } from './components/search-filter/search-filter.component';\nimport { SearchFilterCardComponent } from './components/search-filter/search-filter-card/search-filter-card.component';\nimport { SearchChipListComponent } from './components/search-chip-list/search-chip-list.component';\nimport { SearchTextComponent } from './components/search-text/search-text.component';\nimport { SearchChipAutocompleteInputComponent } from './components/search-chip-autocomplete-input/search-chip-autocomplete-input.component';\nimport { SearchFilterAutocompleteChipsComponent } from './components/search-filter-autocomplete-chips/search-filter-autocomplete-chips.component';\nimport { SearchRadioComponent } from './components/search-radio/search-radio.component';\nimport { SearchSliderComponent } from './components/search-slider/search-slider.component';\nimport { SearchNumberRangeComponent } from './components/search-number-range/search-number-range.component';\nimport { SearchPanelComponent } from './components/search-panel/search-panel.component';\nimport { SearchCheckListComponent } from './components/search-check-list/search-check-list.component';\nimport { SearchSortingPickerComponent } from './components/search-sorting-picker/search-sorting-picker.component';\nimport { SearchFilterContainerComponent } from './components/search-filter-container/search-filter-container.component';\nimport { SearchDatetimeRangeComponent } from './components/search-datetime-range/search-datetime-range.component';\nimport { SearchFormComponent } from './components/search-form/search-form.component';\nimport { SearchFilterChipsComponent } from './components/search-filter-chips/search-filter-chips.component';\nimport { SearchFilterMenuCardComponent } from './components/search-filter-chips/search-filter-menu-card/search-filter-menu-card.component';\nimport { SearchFacetFieldComponent } from './components/search-facet-field/search-facet-field.component';\nimport { SearchWidgetChipComponent } from './components/search-filter-chips/search-widget-chip/search-widget-chip.component';\nimport { SearchFacetChipComponent } from './components/search-filter-chips/search-facet-chip/search-facet-chip.component';\nimport { SearchLogicalFilterComponent } from './components/search-logical-filter/search-logical-filter.component';\nimport { ResetSearchDirective } from './components/reset-search.directive';\nimport { SearchPropertiesComponent } from './components/search-properties/search-properties.component';\nimport { SearchFilterTabbedComponent } from './components/search-filter-tabbed/search-filter-tabbed.component';\nimport { SearchDateRangeComponent } from './components/search-date-range-tabbed/search-date-range/search-date-range.component';\nimport { SearchDateRangeTabbedComponent } from './components/search-date-range-tabbed/search-date-range-tabbed.component';\nimport { SearchFilterTabDirective } from './components/search-filter-tabbed/search-filter-tab.directive';\nimport { SearchFacetChipTabbedComponent } from './components/search-filter-chips/search-facet-chip-tabbed/search-facet-chip-tabbed.component';\nimport { SearchFacetTabbedContentComponent } from './components/search-filter-chips/search-facet-chip-tabbed/search-facet-tabbed-content.component';\n\nexport const CONTENT_SEARCH_DIRECTIVES = [\n    SearchCheckListComponent,\n    SearchChipAutocompleteInputComponent,\n    SearchChipListComponent,\n    EmptySearchResultComponent,\n    SearchFilterComponent,\n    SearchFilterCardComponent,\n    SearchWidgetContainerComponent,\n    SearchTextComponent,\n    SearchFilterAutocompleteChipsComponent,\n    SearchDatetimeRangeComponent,\n    SearchFacetFieldComponent,\n    ResetSearchDirective,\n    SearchDateRangeComponent,\n    SearchFilterMenuCardComponent,\n    SearchFacetChipTabbedComponent,\n    SearchFacetTabbedContentComponent,\n    SearchFilterTabbedComponent,\n    SearchFilterTabDirective,\n    SearchDateRangeTabbedComponent,\n    SearchSortingPickerComponent,\n    SearchSliderComponent,\n    SearchNumberRangeComponent,\n    SearchPanelComponent,\n    SearchRadioComponent,\n    SearchFilterContainerComponent,\n    SearchFormComponent,\n    SearchFilterChipsComponent,\n    SearchWidgetChipComponent,\n    SearchFacetChipComponent,\n    SearchLogicalFilterComponent,\n    SearchPropertiesComponent,\n    SearchComponent,\n    SearchControlComponent\n] as const;\n\n/** @deprecated use `...CONTENT_SEARCH_DIRECTIVES` or import the specific component */\n@NgModule({\n    imports: [...CONTENT_SEARCH_DIRECTIVES],\n    exports: [...CONTENT_SEARCH_DIRECTIVES]\n})\nexport class SearchModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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';\nexport * from './forms';\nexport * from './mocks';\nexport * from './models';\nexport * from './services';\nexport * from './search-configuration.token';\nexport * from './search.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 { BreadcrumbComponent } from './breadcrumb.component';\nimport { DropdownBreadcrumbComponent } from './dropdown-breadcrumb.component';\n\nexport const BREADCRUMB_DIRECTIVES = [BreadcrumbComponent, DropdownBreadcrumbComponent] as const;\n\n/** @deprecated use `...BREADCRUMB_DIRECTIVES` instead */\n@NgModule({\n    imports: [...BREADCRUMB_DIRECTIVES],\n    exports: [...BREADCRUMB_DIRECTIVES]\n})\nexport class BreadcrumbModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 './breadcrumb.component';\nexport * from './dropdown-breadcrumb.component';\n\nexport * from './breadcrumb.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 { AlfrescoApiService } from '../services/alfresco-api.service';\nimport { ContentApi } from '@alfresco/js-api';\nimport { Observable, of } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class ContentVersionService {\n    private _contentApi: ContentApi;\n\n    get contentApi(): ContentApi {\n        if (!this._contentApi) {\n            this._contentApi = new ContentApi(this.alfrescoApi.getInstance());\n        }\n        return this._contentApi;\n    }\n\n    constructor(private alfrescoApi: AlfrescoApiService) {}\n\n    /**\n     * Get content URL for the given nodeId and specific version.\n     *\n     * @param nodeId The ID of the node\n     * @param versionId The ID of the version\n     * @param attachment Retrieve content as an attachment for download\n     * @returns The URL address pointing to the content.\n     */\n    getVersionContentUrl(nodeId: string, versionId: string, attachment?: boolean): Observable<string> {\n        let nodeDownloadUrl = this.contentApi.getContentUrl(nodeId, attachment);\n        nodeDownloadUrl = nodeDownloadUrl.replace('/content', '/versions/' + versionId + '/content');\n\n        return of(nodeDownloadUrl);\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 { ContentPagingQuery } from '@alfresco/js-api';\nimport { CollectionViewer, DataSource } from '@angular/cdk/collections';\nimport { BehaviorSubject, forkJoin, Observable, Subject, Subscription } from 'rxjs';\nimport { take, tap } from 'rxjs/operators';\n\nexport abstract class InfiniteScrollDatasource<T> extends DataSource<T> {\n    protected readonly dataStream = new BehaviorSubject<T[]>([]);\n    private isLoading$ = new Subject<boolean>();\n    private subscription = new Subscription();\n    private batchesFetched = 0;\n    private _itemsCount = 0;\n    private _firstItem: T;\n\n    /* Determines size of each batch to be fetched */\n    batchSize = 100;\n\n    /* Observable with initial and on reset loading state */\n    isLoading = this.isLoading$.asObservable();\n\n    get itemsCount(): number {\n        return this._itemsCount;\n    }\n\n    get firstItem(): T {\n        return this._firstItem;\n    }\n\n    abstract getNextBatch(pagingOptions: ContentPagingQuery): Observable<T[]>;\n\n    connect(collectionViewer: CollectionViewer): Observable<T[]> {\n        this.reset();\n        this.subscription.add(\n            collectionViewer.viewChange.subscribe((range) => {\n                if (this.batchesFetched * this.batchSize <= range.end) {\n                    forkJoin([\n                        this.dataStream.asObservable().pipe(take(1)),\n                        this.getNextBatch({ skipCount: this.batchSize * this.batchesFetched, maxItems: this.batchSize }).pipe(\n                            take(1),\n                            tap((nextBatch) => (this._itemsCount += nextBatch.length))\n                        )\n                    ]).subscribe((batchesArray) => this.dataStream.next([...batchesArray[0], ...batchesArray[1]]));\n                    this.batchesFetched += 1;\n                }\n            })\n        );\n        return this.dataStream;\n    }\n\n    disconnect(): void {\n        this.subscription.unsubscribe();\n    }\n\n    reset(): void {\n        this.isLoading$.next(true);\n        this.getNextBatch({ skipCount: 0, maxItems: this.batchSize })\n            .pipe(take(1))\n            .subscribe((firstBatch) => {\n                this._itemsCount = firstBatch.length;\n                this._firstItem = firstBatch[0];\n                this.dataStream.next(firstBatch);\n                this.isLoading$.next(false);\n            });\n        this.batchesFetched = 1;\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 './infinite-scroll-datasource';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 { Directive, Input, ViewContainerRef, TemplateRef } from '@angular/core';\nimport { VersionCompatibilityService } from './version-compatibility.service';\nimport { take } from 'rxjs/operators';\n\n@Directive({\n    selector: '[adf-acs-version]',\n    standalone: true\n})\nexport class VersionCompatibilityDirective {\n    /** Minimum version required for component to work correctly . */\n    @Input('adf-acs-version')\n    set version(requiredVersion: string) {\n        this.validateAcsVersion(requiredVersion);\n    }\n\n    constructor(\n        private templateRef: TemplateRef<any>,\n        private viewContainer: ViewContainerRef,\n        private versionCompatibilityService: VersionCompatibilityService\n    ) {}\n\n    private validateAcsVersion(requiredVersion: string) {\n        this.versionCompatibilityService.acsVersionInitialized$.pipe(take(1)).subscribe(() => {\n            this.viewContainer.clear();\n            if (requiredVersion && this.versionCompatibilityService.isVersionSupported(requiredVersion)) {\n                this.viewContainer.createEmbeddedView(this.templateRef);\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 { VersionCompatibilityDirective } from './version-compatibility.directive';\n\n/** @deprecated use `VersionCompatibilityDirective` instead */\n@NgModule({\n    imports: [VersionCompatibilityDirective],\n    exports: [VersionCompatibilityDirective]\n})\nexport class VersionCompatibilityModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 './version-compatibility.directive';\nexport * from './version-compatibility.service';\nexport * from './version-compatibility.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 { ConfirmDialogComponent } from '@alfresco/adf-core';\nimport { AlfrescoApiService } from '../services/alfresco-api.service';\nimport {\n    Component,\n    DestroyRef,\n    EventEmitter,\n    inject,\n    Input,\n    OnChanges,\n    OnInit,\n    Output,\n    ViewChild,\n    ViewEncapsulation\n} from '@angular/core';\nimport { ContentApi, ContentPagingQuery, Node, NodeEntry, NodesApi, VersionEntry, VersionsApi } from '@alfresco/js-api';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ContentVersionService } from './content-version.service';\nimport { ContentService } from '../common';\nimport { InfiniteScrollDatasource } from '../infinite-scroll-datasource';\nimport { from, Observable } from 'rxjs';\nimport { map, take } from 'rxjs/operators';\nimport { CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport { CommonModule } from '@angular/common';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatListModule } from '@angular/material/list';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { VersionCompatibilityDirective } from '../version-compatibility';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nexport class VersionListDataSource extends InfiniteScrollDatasource<VersionEntry> {\n    constructor(private versionsApi: VersionsApi, private node: Node) {\n        super();\n    }\n\n    getNextBatch(pagingOptions: ContentPagingQuery): Observable<VersionEntry[]> {\n        return from(this.versionsApi.listVersionHistory(this.node.id, pagingOptions)).pipe(\n            take(1),\n            map((versionPaging) => versionPaging.list.entries)\n        );\n    }\n}\n\n@Component({\n    selector: 'adf-version-list',\n    standalone: true,\n    imports: [\n        CommonModule,\n        MatProgressBarModule,\n        MatListModule,\n        CdkVirtualScrollViewport,\n        CdkFixedSizeVirtualScroll,\n        CdkVirtualForOf,\n        MatIconModule,\n        MatMenuModule,\n        TranslateModule,\n        MatButtonModule,\n        VersionCompatibilityDirective\n    ],\n    templateUrl: './version-list.component.html',\n    styleUrls: ['./version-list.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    host: { class: 'adf-version-list' }\n})\nexport class VersionListComponent implements OnChanges, OnInit {\n    private _contentApi: ContentApi;\n    get contentApi(): ContentApi {\n        this._contentApi = this._contentApi ?? new ContentApi(this.alfrescoApi.getInstance());\n        return this._contentApi;\n    }\n\n    private _versionsApi: VersionsApi;\n    get versionsApi(): VersionsApi {\n        this._versionsApi = this._versionsApi ?? new VersionsApi(this.alfrescoApi.getInstance());\n        return this._versionsApi;\n    }\n\n    private _nodesApi: NodesApi;\n    get nodesApi(): NodesApi {\n        this._nodesApi = this._nodesApi ?? new NodesApi(this.alfrescoApi.getInstance());\n        return this._nodesApi;\n    }\n\n    versionsDataSource: VersionListDataSource;\n    latestVersion: VersionEntry;\n    isLoading = true;\n\n    /** The target node. */\n    @Input()\n    node: Node;\n\n    /** Toggles showing/hiding of comments */\n    @Input()\n    showComments = true;\n\n    /** Enable/disable downloading a version of the current node. */\n    @Input()\n    allowDownload = true;\n\n    /** Enable/disable viewing a version of the current node. */\n    @Input()\n    allowViewVersions = true;\n\n    /** Toggles showing/hiding of version actions */\n    @Input()\n    showActions = true;\n\n    /** Enable/disable deletion of version */\n    @Input()\n    allowVersionDelete = true;\n\n    /** Emitted when a version is restored */\n    @Output()\n    restored = new EventEmitter<Node>();\n\n    /** Emitted when a version is deleted */\n    @Output()\n    deleted = new EventEmitter<Node>();\n\n    /** Emitted when viewing a version */\n    @Output()\n    viewVersion = new EventEmitter<string>();\n\n    @ViewChild('viewport')\n    viewport: CdkVirtualScrollViewport;\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    constructor(\n        private alfrescoApi: AlfrescoApiService,\n        private contentService: ContentService,\n        private contentVersionService: ContentVersionService,\n        private dialog: MatDialog\n    ) {}\n\n    ngOnInit() {\n        this.versionsDataSource = new VersionListDataSource(this.versionsApi, this.node);\n        this.versionsDataSource.isLoading.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((isLoading) => {\n            this.isLoading = isLoading;\n            this.latestVersion = this.versionsDataSource.firstItem;\n        });\n    }\n\n    ngOnChanges() {\n        if (this.versionsDataSource) {\n            this.loadVersionHistory();\n        }\n    }\n\n\n    canUpdate(): boolean {\n        return this.contentService.hasAllowableOperations(this.node, 'update') && this.versionsDataSource.itemsCount > 1;\n    }\n\n    canDelete(): boolean {\n        return this.contentService.hasAllowableOperations(this.node, 'delete') && this.versionsDataSource.itemsCount > 1;\n    }\n\n    restore(versionId: string) {\n        if (this.canUpdate()) {\n            this.versionsApi\n                .revertVersion(this.node.id, versionId, { majorVersion: true, comment: '' })\n                .then(() => this.nodesApi.getNode(this.node.id, { include: ['permissions', 'path', 'isFavorite', 'allowableOperations'] }))\n                .then((node) => this.onVersionRestored(node));\n        }\n    }\n\n    onViewVersion(versionId: string) {\n        this.viewVersion.emit(versionId);\n    }\n\n    loadVersionHistory() {\n        this.viewport.scrollToIndex(0);\n        this.versionsDataSource.reset();\n    }\n\n    downloadVersion(versionId: string) {\n        if (this.allowDownload) {\n            this.contentVersionService\n                .getVersionContentUrl(this.node.id, versionId, true)\n                .pipe(takeUntilDestroyed(this.destroyRef))\n                .subscribe((versionDownloadUrl) => this.downloadContent(versionDownloadUrl));\n        }\n    }\n\n    deleteVersion(versionId: string) {\n        if (this.canUpdate()) {\n            const dialogRef = this.dialog.open(ConfirmDialogComponent, {\n                data: {\n                    title: 'ADF_VERSION_LIST.CONFIRM_DELETE.TITLE',\n                    message: 'ADF_VERSION_LIST.CONFIRM_DELETE.MESSAGE',\n                    yesLabel: 'ADF_VERSION_LIST.CONFIRM_DELETE.YES_LABEL',\n                    noLabel: 'ADF_VERSION_LIST.CONFIRM_DELETE.NO_LABEL'\n                },\n                minWidth: '250px'\n            });\n\n            dialogRef\n                .afterClosed()\n                .pipe(takeUntilDestroyed(this.destroyRef))\n                .subscribe((result) => {\n                    if (result) {\n                        this.versionsApi.deleteVersion(this.node.id, versionId).then(() => this.onVersionDeleted(this.node));\n                    }\n                });\n        }\n    }\n\n    onVersionDeleted(node: any) {\n        this.loadVersionHistory();\n        this.deleted.emit(node);\n    }\n\n    onVersionRestored(node: NodeEntry) {\n        this.loadVersionHistory();\n        this.restored.emit(node?.entry);\n    }\n\n    downloadContent(url: string) {\n        if (url) {\n            const link = document.createElement('a');\n\n            link.style.display = 'none';\n            link.href = url;\n\n            document.body.appendChild(link);\n            link.click();\n            document.body.removeChild(link);\n        }\n    }\n}\n","<mat-progress-bar *ngIf=\"isLoading\" data-automation-id=\"version-history-loading-bar\" mode=\"indeterminate\"\n                  color=\"accent\" />\n<mat-list class=\"adf-version-list adf-version-list-element\" [hidden]=\"isLoading\">\n    <cdk-virtual-scroll-viewport #viewport itemSize=\"88\" class=\"adf-version-list-viewport\" [minBufferPx]=\"440\" [maxBufferPx]=\"528\">\n        <mat-list-item class=\"adf-version-list-item\"\n                       *cdkVirtualFor=\"let version of versionsDataSource; let idx = index; let latestVersion = first\">\n            <mat-icon class=\"adf-version-list-icon\" matListItemIcon>insert_drive_file</mat-icon>\n            <div class=\"adf-version-list-content\">\n                <div class=\"adf-version-list-item-details\">\n                    <p class=\"adf-version-list-item-line adf-version-list-item-name\"\n                       [id]=\"'adf-version-list-item-name-' + version.entry.id\">{{ version.entry.name }}</p>\n                    <p>\n                        <span class=\"adf-version-list-item-line adf-version-list-item-version\"\n                          [id]=\"'adf-version-list-item-version-' + version.entry.id\">{{ version.entry.id }}</span> -\n                        <span class=\"adf-version-list-item-line adf-version-list-item-date\"\n                              [id]=\"'adf-version-list-item-date-' + version.entry.id\">{{ version.entry.modifiedAt | date }}</span>\n                    </p>\n                    <p\n                        [id]=\"'adf-version-list-item-comment-' + version.entry.id\"\n                        class=\"adf-version-list-item-comment\"\n                        *ngIf=\"showComments\"\n                        [title]=\"version.entry.versionComment\">\n                        {{ version.entry.versionComment }}\n                    </p>\n                </div>\n                <ng-container *ngIf=\"showActions\">\n                <mat-menu [id]=\"'adf-version-list-action-menu-' + version.entry.id\"\n                          #versionMenu=\"matMenu\"\n                          yPosition=\"below\"\n                          xPosition=\"before\">\n                    <ng-container *adf-acs-version=\"'7'\">\n                        <button *ngIf=\"allowViewVersions\"\n                                [id]=\"'adf-version-list-action-view-' + version.entry.id\"\n                                mat-menu-item\n                                (click)=\"onViewVersion(version.entry.id)\">\n                            {{ 'ADF_VERSION_LIST.ACTIONS.VIEW' | translate }}\n                        </button>\n                    </ng-container>\n                    <button\n                        [id]=\"'adf-version-list-action-restore-' + version.entry.id\"\n                        [disabled]=\"!canUpdate() || latestVersion\"\n                        mat-menu-item\n                        (click)=\"restore(version.entry.id)\">\n                        {{ 'ADF_VERSION_LIST.ACTIONS.RESTORE' | translate }}\n                    </button>\n                    <button *ngIf=\"allowDownload\"\n                            [id]=\"'adf-version-list-action-download-' + version.entry.id\"\n                            mat-menu-item\n                            (click)=\"downloadVersion(version.entry.id)\">\n                        {{ 'ADF_VERSION_LIST.ACTIONS.DOWNLOAD' | translate }}\n                    </button>\n                    <button\n                        *ngIf=\"allowVersionDelete\"\n                        [disabled]=\"!canDelete()\"\n                        [id]=\"'adf-version-list-action-delete-' + version.entry.id\"\n                        (click)=\"deleteVersion(version.entry.id)\"\n                        mat-menu-item>\n                        {{ 'ADF_VERSION_LIST.ACTIONS.DELETE' | translate }}\n                    </button>\n                </mat-menu>\n                <button mat-icon-button\n                            [matMenuTriggerFor]=\"versionMenu\"\n                            [id]=\"'adf-version-list-action-menu-button-' + version.entry.id\"\n                            title=\"{{ 'ADF_VERSION_LIST.MANAGE_VERSION_OPTIONS' | translate }}\">\n                        <mat-icon>more_vert</mat-icon>\n                    </button>\n                </ng-container>\n            </div>\n        </mat-list-item>\n    </cdk-virtual-scroll-viewport>\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 { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { Node } from '@alfresco/js-api';\nimport { FileTypePipe, ThumbnailService } from '@alfresco/adf-core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n    selector: 'adf-version-comparison',\n    standalone: true,\n    imports: [CommonModule, TranslateModule, FileTypePipe],\n    templateUrl: './version-comparison.component.html',\n    styleUrls: ['./version-comparison.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class VersionComparisonComponent {\n    /** Target node. */\n    @Input({ required: true })\n    node: Node;\n\n    /** New file for updating current version. */\n    @Input({ required: true })\n    newFileVersion: File;\n\n    constructor(public thumbnailService: ThumbnailService) {}\n}\n","<div class=\"adf-version-comparison-content\">\n    <div class=\"adf-version-current\">\n        <p>{{'ADF_VERSION_COMPARISON.CURRENT_VERSION' | translate }}</p>\n        <img [attr.aria-label]=\"'ADF_VERSION_COMPARISON.ACCESSIBILITY.ICON_TEXT' | translate:\n        { type: (node.content.mimeType | fileType | uppercase) | translate  }\"\n             [attr.alt]=\"'ADF_VERSION_COMPARISON.ACCESSIBILITY.ICON_TEXT' | translate:\n             { type: (node.content.mimeType | fileType | uppercase) | translate }\"\n             src=\"{{thumbnailService.getMimeTypeIcon(node.content.mimeType)}}\"/>\n        <p class=\"adf-version-comparison-node-name\" title=\"{{node.name}}\">{{node.name}}</p>\n    </div>\n    <span class=\"material-icons adf-version-arrow-icon\">keyboard_arrow_right</span>\n    <div class=\"adf-version-new\">\n        <p>{{'ADF_VERSION_COMPARISON.NEW_VERSION' | translate }}</p>\n        <img [attr.aria-label]=\"'ADF_VERSION_COMPARISON.ACCESSIBILITY.ICON_TEXT' | translate:\n        { type: (newFileVersion.type | fileType | uppercase) | translate  }\"\n             [attr.alt]=\"'ADF_VERSION_COMPARISON.ACCESSIBILITY.ICON_TEXT' | translate:\n             { type: (newFileVersion.type | fileType | uppercase) | translate }\"\n            src=\"{{thumbnailService.getMimeTypeIcon(newFileVersion.type)}}\"/>\n        <p class=\"adf-version-comparison-file-name\" title=\"{{newFileVersion.name}}\">{{newFileVersion.name}}</p>\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, DestroyRef, EventEmitter, inject, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport { Node, Version } from '@alfresco/js-api';\nimport { ContentService } from '../common/services/content.service';\nimport { UploadService } from '../common/services/upload.service';\nimport { FileUploadErrorEvent, FileUploadEvent } from '../common/events/file.event';\nimport { CommonModule } from '@angular/common';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { FormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatButtonModule } from '@angular/material/button';\nimport { UploadVersionButtonComponent } from '../upload';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n    selector: 'adf-version-upload',\n    standalone: true,\n    imports: [\n        CommonModule,\n        MatRadioModule,\n        FormsModule,\n        TranslateModule,\n        MatFormFieldModule,\n        MatInputModule,\n        MatButtonModule,\n        UploadVersionButtonComponent\n    ],\n    templateUrl: './version-upload.component.html',\n    styleUrls: ['./version-upload.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    host: { class: 'adf-version-upload' }\n})\nexport class VersionUploadComponent implements OnInit {\n    semanticVersion: string = 'minor';\n    comment: string;\n    uploadVersion: boolean = false;\n    disabled: boolean = false;\n    majorVersion = '2.0';\n    minorVersion = '1.1';\n\n    /** The target node. */\n    @Input({ required: true })\n    node: Node;\n\n    /** New file for updating current version. */\n    @Input()\n    newFileVersion: File;\n\n    /** Toggles showing/hiding upload button. */\n    @Input()\n    showUploadButton: boolean = true;\n\n    /** Toggles showing/hiding of cancel button. */\n    @Input()\n    showCancelButton: boolean = true;\n\n    /** Current version for a target node */\n    @Input()\n    set currentVersion(version: Version) {\n        if (version) {\n            this.minorVersion = this.getNextMinorVersion(version.id);\n            this.majorVersion = this.getNextMajorVersion(version.id);\n        }\n    }\n\n    /** Emitted when the file is uploaded successfully. */\n    @Output()\n    success = new EventEmitter();\n\n    /** Emitted when an error occurs. */\n    @Output()\n    error = new EventEmitter<FileUploadErrorEvent>();\n\n    /** Emitted when an cancelling during upload. */\n    @Output()\n    cancel = new EventEmitter();\n\n    /** Emitted when the version is changed. */\n    @Output()\n    versionChanged = new EventEmitter<boolean>();\n\n    /** Emitted when the comment is changed. */\n    @Output()\n    commentChanged = new EventEmitter<string>();\n\n    /** Emitted when the upload starts */\n    @Output()\n    uploadStarted = new EventEmitter<FileUploadEvent>();\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    constructor(private contentService: ContentService, private uploadService: UploadService) {}\n\n    ngOnInit() {\n        this.uploadService.fileUploadStarting.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((event: FileUploadEvent) => {\n            this.disabled = true;\n            this.uploadStarted.emit(event);\n        });\n    }\n\n    canUpload(): boolean {\n        return this.contentService.hasAllowableOperations(this.node, 'update') && !this.disabled;\n    }\n\n    isMajorVersion(): boolean {\n        return this.semanticVersion !== 'minor';\n    }\n\n    cancelUpload() {\n        this.disabled = false;\n        this.cancel.emit();\n    }\n\n    onVersionChange() {\n        this.versionChanged.emit(this.isMajorVersion());\n    }\n\n    onCommentChange() {\n        this.commentChanged.emit(this.comment);\n    }\n\n    onSuccess(event: any) {\n        this.success.emit(event);\n    }\n\n    onError(event: FileUploadErrorEvent) {\n        this.disabled = false;\n        this.error.emit(event);\n    }\n\n    getNextMinorVersion(version: string): string {\n        const { major, minor } = this.getParsedVersion(version);\n        return `${major}.${minor + 1}`;\n    }\n\n    getNextMajorVersion(version: string): string {\n        const { major } = this.getParsedVersion(version);\n        return `${major + 1}.0`;\n    }\n\n    private getParsedVersion(version: string) {\n        const minor = version.indexOf('.') !== -1 ? Number(version.substr(version.indexOf('.') + 1)) : 0;\n        const major = parseInt(version, 10);\n        return { minor, major };\n    }\n}\n","<div class=\"adf-new-version-max-width\">\n    <mat-radio-group class=\"adf-new-version-radio-group\" [(ngModel)]=\"semanticVersion\" (change)=\"onVersionChange()\">\n        <mat-radio-button class=\"adf-new-version-radio-button\" id=\"adf-new-version-minor\" [value]=\"'minor'\">\n            {{ 'ADF_VERSION_LIST.ACTIONS.UPLOAD.MINOR' | translate: { version: minorVersion } }}\n        </mat-radio-button>\n        <mat-radio-button class=\"adf-new-version-radio-button\" id=\"adf-new-version-major\" [value]=\"'major'\">\n            {{ 'ADF_VERSION_LIST.ACTIONS.UPLOAD.MAJOR' | translate: { version: majorVersion } }}\n        </mat-radio-button>\n    </mat-radio-group>\n    <mat-form-field class=\"adf-new-version-max-width\" subscriptSizing=\"dynamic\">\n        <mat-label>{{'ADF_VERSION_LIST.ACTIONS.UPLOAD.COMMENT' | translate}}</mat-label>\n        <textarea matInput\n                  [(ngModel)]=\"comment\"\n                  class=\"adf-new-version-text-area\" id=\"adf-new-version-text-area\"\n                  (change)=\"onCommentChange()\"></textarea>\n    </mat-form-field>\n</div>\n<div class=\"adf-version-upload-buttons\">\n    <adf-upload-version-button *ngIf=\"showUploadButton\"\n        data-automation-id=\"adf-new-version-file-upload\"\n        staticTitle=\"{{ 'ADF_VERSION_LIST.ACTIONS.UPLOAD.TITLE' | translate }}\"\n        [node]=\"node\"\n        [disabled]=\"!canUpload()\"\n        [rootFolderId]=\"node.parentId\"\n        tooltip=\"{{ 'ADF_VERSION_LIST.ACTIONS.UPLOAD.TOOLTIP' | translate }}\"\n        [comment]=\"comment\"\n        [versioning]=\"true\"\n        [file]=\"newFileVersion\"\n        [majorVersion]=\"isMajorVersion()\"\n        (success)=\"onSuccess($event)\"\n        (error)=\"onError($event)\" />\n    <button mat-raised-button (click)=\"cancelUpload()\" id=\"adf-new-version-cancel\"  *ngIf=\"showCancelButton\" >{{\n        'ADF_VERSION_LIST.ACTIONS.UPLOAD.CANCEL'| translate }}\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 { Component, EventEmitter, Input, OnInit, Output, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { Node } from '@alfresco/js-api';\nimport { VersionListComponent } from './version-list.component';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { ContentService } from '../common/services/content.service';\nimport { NodesApiService } from '../common/services/nodes-api.service';\nimport { FileUploadErrorEvent } from '../common/events/file.event';\nimport { CommonModule } from '@angular/common';\nimport { VersionComparisonComponent } from './version-comparison.component';\nimport { VersionUploadComponent } from './version-upload.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n    selector: 'adf-version-manager',\n    standalone: true,\n    imports: [CommonModule, VersionComparisonComponent, VersionUploadComponent, MatButtonModule, TranslateModule, VersionListComponent],\n    templateUrl: './version-manager.component.html',\n    styleUrls: ['./version-manager.component.scss'],\n    animations: [\n        trigger('uploadToggle', [\n            state('open', style({ height: '175px', opacity: 1, visibility: 'visible' })),\n            state('close', style({ height: '0%', opacity: 0, visibility: 'hidden' })),\n            transition('open => close', [style({ visibility: 'hidden' }), animate('0.4s cubic-bezier(0.25, 0.8, 0.25, 1)')]),\n            transition('close => open', [style({ visibility: 'visible' }), animate('0.4s cubic-bezier(0.25, 0.8, 0.25, 1)')])\n        ])\n    ],\n    encapsulation: ViewEncapsulation.None\n})\nexport class VersionManagerComponent implements OnInit {\n    /** Target node to manage version history. */\n    @Input({ required: true })\n    node: Node;\n\n    /** New file for updating current version. */\n    @Input()\n    newFileVersion: File;\n\n    /** Toggles showing/hiding of comments. */\n    @Input()\n    showComments = true;\n\n    /** Toggles showing/hiding the version comparison component. */\n    @Input()\n    showVersionComparison = false;\n\n    /** Enable/disable downloading a version of the current node. */\n    @Input()\n    allowDownload = true;\n\n    /** Toggles showing/hiding of version actions. */\n    @Input()\n    showActions = true;\n\n    /** Enable/disable viewing versions of the current node. */\n    @Input()\n    allowViewVersions = true;\n\n    /** Enable/disable deletion of version */\n    @Input()\n    allowVersionDelete = true;\n\n    /** Emitted when a file is uploaded successfully. */\n    @Output()\n    uploadSuccess = new EventEmitter<Node>();\n\n    /** Emitted when an error occurs during upload. */\n    @Output()\n    uploadError = new EventEmitter<FileUploadErrorEvent>();\n\n    /** Emitted when an cancelling during upload. */\n    @Output()\n    uploadCancel = new EventEmitter<boolean>();\n\n    /** Emitted when viewing a version. */\n    @Output()\n    viewVersion = new EventEmitter<string>();\n\n    @ViewChild('versionList', { static: true })\n    versionListComponent: VersionListComponent;\n\n    uploadState: string = 'close';\n\n    constructor(private contentService: ContentService, private nodesApiService: NodesApiService) {}\n\n    ngOnInit() {\n        if (this.newFileVersion) {\n            this.toggleNewVersion();\n        }\n    }\n\n    refresh(node: Node) {\n        this.nodesApiService.nodeUpdated.next(node);\n        this.versionListComponent.loadVersionHistory();\n        this.uploadSuccess.emit(node);\n        this.uploadState = 'close';\n    }\n\n    onUploadSuccess(event: any) {\n        this.showVersionComparison = false;\n        this.newFileVersion = null;\n        this.nodesApiService.nodeUpdated.next(event.value.entry);\n        this.versionListComponent.loadVersionHistory();\n        this.uploadSuccess.emit(event.value.entry);\n        this.uploadState = 'close';\n    }\n\n    onUploadError(event: FileUploadErrorEvent) {\n        this.uploadError.emit(event);\n    }\n\n    onUploadCancel() {\n        this.uploadState = 'close';\n        this.showVersionComparison = false;\n        this.newFileVersion = null;\n        this.uploadCancel.emit(true);\n    }\n\n    onViewVersion(versionId: string) {\n        this.viewVersion.emit(versionId);\n    }\n\n    toggleNewVersion() {\n        this.uploadState = this.uploadState === 'open' ? 'close' : 'open';\n    }\n\n    canUpdate(): boolean {\n        return this.contentService.hasAllowableOperations(this.node, 'update');\n    }\n}\n","<div class=\"adf-new-version-container\">\n    <adf-version-comparison *ngIf=\"showVersionComparison\" [node]=\"node\" [newFileVersion]=\"newFileVersion\" />\n    <div class=\"adf-new-version-uploader-container\" id=\"adf-new-version-uploader-container\" [@uploadToggle]=\"uploadState\">\n        <table class=\"adf-version-upload\" *ngIf=\"uploadState !== 'close' && !versionList.isLoading\">\n            <tr>\n                <td>\n                    <adf-version-upload\n                        id=\"adf-version-upload-button\"\n                        [node]=\"node\"\n                        [newFileVersion]=\"newFileVersion\"\n                        [currentVersion]=\"versionList?.latestVersion?.entry\"\n                        (success)=\"onUploadSuccess($event)\"\n                        (cancel)=\"onUploadCancel()\"\n                        (error)=\"onUploadError($event)\" />\n                </td>\n            </tr>\n        </table>\n    </div>\n    <div class=\"adf-version-list-container\">\n        <div class=\"adf-version-list-table\">\n            <div>\n                <button mat-raised-button\n                        id=\"adf-show-version-upload-button\"\n                        class=\"adf-version-manager-upload-button\"\n                        (click)=\"toggleNewVersion()\" color=\"primary\"\n                        *ngIf=\"uploadState ==='close'\">{{ 'ADF_VERSION_LIST.ACTIONS.UPLOAD.ADD' | translate }}\n                </button>\n            </div>\n            <div>\n                <adf-version-list\n                    #versionList\n                    [node]=\"node\"\n                    [allowDownload]=\"allowDownload\"\n                    [showComments]=\"showComments\"\n                    [showActions]=\"showActions\"\n                    [allowViewVersions]=\"allowViewVersions\"\n                    [allowVersionDelete]=\"allowVersionDelete\"\n                    (deleted)=\"refresh($event)\"\n                    (restored)=\"refresh($event)\"\n                    (viewVersion)=\"onViewVersion($event)\" />\n            </div>\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 { NgModule } from '@angular/core';\nimport { VersionUploadComponent } from './version-upload.component';\nimport { VersionManagerComponent } from './version-manager.component';\nimport { VersionListComponent } from './version-list.component';\nimport { VersionComparisonComponent } from './version-comparison.component';\n\nexport const CONTENT_VERSION_DIRECTIVES = [\n    VersionUploadComponent,\n    VersionManagerComponent,\n    VersionListComponent,\n    VersionComparisonComponent\n] as const;\n\n/** @deprecated use `...CONTENT_VERSION_DIRECTIVES` instead */\n@NgModule({\n    imports: [...CONTENT_VERSION_DIRECTIVES],\n    exports: [...CONTENT_VERSION_DIRECTIVES]\n})\nexport class VersionManagerModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 './version-list.component';\nexport * from './version-manager.component';\nexport * from './version-upload.component';\nexport * from './version-comparison.component';\nexport * from './content-version.service';\nexport * from './version-manager.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 { Node, SitePaging } from '@alfresco/js-api';\nimport { Subject } from 'rxjs';\nimport { NodeAction } from '../document-list/models/node-action.enum';\n\nexport interface ContentNodeSelectorComponentData {\n    title: string;\n    actionName?: NodeAction;\n    currentFolderId: string;\n    dropdownHideMyFiles?: boolean;\n    restrictRootToCurrentFolderId?: boolean;\n    dropdownSiteList?: SitePaging;\n    rowFilter?: any;\n    where?: string;\n    imageResolver?: any;\n    selectionMode?: 'multiple' | 'single';\n    isSelectionValid?: (entry: Node) => boolean;\n    breadcrumbTransform?: (node) => any;\n    excludeSiteContent?: string[];\n    select: Subject<Node[]>;\n    showSearch?: boolean;\n    showFilesInResult?: boolean;\n    showDropdownSiteList?: boolean;\n    showLocalUploadButton?: boolean;\n    multipleUpload?: 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 { NgModule } from '@angular/core';\nimport { ContentNodeSelectorPanelComponent } from './content-node-selector-panel/content-node-selector-panel.component';\nimport { ContentNodeSelectorComponent } from './content-node-selector.component';\nimport { NameLocationCellComponent } from './name-location-cell/name-location-cell.component';\nimport { DropdownSitesComponent } from './site-dropdown/sites-dropdown.component';\n\nexport const CONTENT_NODE_SELECTOR_DIRECTIVES = [\n    ContentNodeSelectorPanelComponent,\n    NameLocationCellComponent,\n    ContentNodeSelectorComponent,\n    DropdownSitesComponent\n];\n\n/** @deprecated use `...CONTENT_NODE_SELECTOR_DIRECTIVES` or import the individual components */\n@NgModule({\n    imports: [...CONTENT_NODE_SELECTOR_DIRECTIVES],\n    exports: [...CONTENT_NODE_SELECTOR_DIRECTIVES]\n})\nexport class ContentNodeSelectorModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 './name-location-cell/name-location-cell.component';\nexport * from './site-dropdown/sites-dropdown.component';\nexport * from './content-node-selector.component-data.interface';\nexport * from './content-node-selector-panel/content-node-selector-panel.component';\nexport * from './content-node-selector.component';\nexport * from './content-node-dialog.service';\nexport * from './content-node-selector-panel/content-node-selector-panel.service';\n\nexport * from './content-node-selector.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 { UntypedFormControl } from '@angular/forms';\n\nconst I18N_ERRORS_PATH = 'CORE.FOLDER_DIALOG.FOLDER_NAME.ERRORS';\n\nexport const forbidSpecialCharacters = ({ value }: UntypedFormControl) => {\n    // eslint-disable-next-line no-useless-escape\n    const specialCharacters: RegExp = /([\\*\\\"\\<\\>\\\\\\/\\?\\:\\|])/;\n    const isValid: boolean = !specialCharacters.test(value);\n\n    return isValid\n        ? null\n        : {\n              message: `${I18N_ERRORS_PATH}.SPECIAL_CHARACTERS`\n          };\n};\n\nexport const forbidEndingDot = ({ value }: UntypedFormControl) => {\n    const isValid: boolean = (value || '').trim().split('').pop() !== '.';\n\n    return isValid\n        ? null\n        : {\n              message: `${I18N_ERRORS_PATH}.ENDING_DOT`\n          };\n};\n\nexport const forbidOnlySpaces = ({ value }: UntypedFormControl) => {\n    const isValid: boolean = !!(value || '').trim();\n\n    return isValid\n        ? null\n        : {\n              message: `${I18N_ERRORS_PATH}.ONLY_SPACES`\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 { Component, DestroyRef, EventEmitter, inject, Inject, OnInit, Optional, Output, ViewEncapsulation } from '@angular/core';\nimport { ReactiveFormsModule, UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { Node } from '@alfresco/js-api';\nimport { TranslationService } from '@alfresco/adf-core';\nimport { NodesApiService } from '../../common/services/nodes-api.service';\nimport { forbidEndingDot, forbidOnlySpaces, forbidSpecialCharacters } from './folder-name.validators';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { AutoFocusDirective } from '../../directives';\nimport { MatButtonModule } from '@angular/material/button';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n    selector: 'adf-folder-dialog',\n    standalone: true,\n    imports: [\n        CommonModule,\n        MatDialogModule,\n        TranslateModule,\n        ReactiveFormsModule,\n        MatFormFieldModule,\n        MatInputModule,\n        AutoFocusDirective,\n        MatButtonModule\n    ],\n    templateUrl: './folder.dialog.html',\n    styleUrls: ['./folder.dialog.scss'],\n    encapsulation: ViewEncapsulation.None,\n    host: { class: 'adf-folder-dialog' }\n})\nexport class FolderDialogComponent implements OnInit {\n    /**\n     * Emitted when the edit/create folder give error for example a folder with same name already exist\n     */\n    @Output()\n    error: EventEmitter<any> = new EventEmitter<any>();\n\n    /**\n     * Emitted when the edit/create folder is successfully created/modified\n     */\n    @Output()\n    success: EventEmitter<Node> = new EventEmitter<Node>();\n\n    form: UntypedFormGroup;\n    folder: Node = null;\n\n    editTitle = 'CORE.FOLDER_DIALOG.EDIT_FOLDER_TITLE';\n    createTitle = 'CORE.FOLDER_DIALOG.CREATE_FOLDER_TITLE';\n    nodeType = 'cm:folder';\n\n    disableSubmitButton = false;\n\n    get editing(): boolean {\n        return !!this.data.folder;\n    }\n\n    get name(): string {\n        return this.getTrimmedValue(this.form.value.name);\n    }\n\n    get title(): string {\n        return this.getTrimmedValue(this.form.value.title);\n    }\n\n    get description(): string {\n        return this.getTrimmedValue(this.form.value.description);\n    }\n\n    private get properties(): { [key: string]: string } {\n        return {\n            'cm:title': this.title,\n            'cm:description': this.description\n        };\n    }\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    constructor(\n        private formBuilder: UntypedFormBuilder,\n        private dialog: MatDialogRef<FolderDialogComponent>,\n        private nodesApi: NodesApiService,\n        private translation: TranslationService,\n        @Optional()\n        @Inject(MAT_DIALOG_DATA)\n        public data: any\n    ) {\n        if (data) {\n            this.editTitle = data.editTitle || this.editTitle;\n            this.createTitle = data.createTitle || this.createTitle;\n            this.nodeType = data.nodeType || this.nodeType;\n        }\n    }\n\n    ngOnInit() {\n        const { folder } = this.data;\n        let name = '';\n        let title = '';\n        let description = '';\n\n        if (folder) {\n            const { properties } = folder;\n\n            name = folder.name || '';\n            title = properties?.['cm:title'] ?? '';\n            description = properties?.['cm:description'] ?? '';\n        }\n\n        const validators = {\n            name: [Validators.required, forbidSpecialCharacters, forbidEndingDot, forbidOnlySpaces]\n        };\n\n        this.form = this.formBuilder.group({\n            name: [name, validators.name],\n            title: [title],\n            description: [description]\n        });\n\n        this.form.controls['name'].valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => (this.disableSubmitButton = false));\n    }\n\n    submit() {\n        this.disableSubmitButton = true;\n\n        (this.editing ? this.edit() : this.create()).subscribe(\n            (folder: Node) => {\n                this.success.emit(folder);\n                this.dialog.close(folder);\n            },\n            (error) => this.handleError(error)\n        );\n    }\n\n    handleError(error: any): any {\n        let errorMessage = 'CORE.MESSAGES.ERRORS.GENERIC';\n\n        try {\n            const {\n                error: { statusCode }\n            } = JSON.parse(error.message);\n\n            if (statusCode === 409) {\n                errorMessage = 'CORE.MESSAGES.ERRORS.EXISTENT_FOLDER';\n            }\n        } catch (err) {\n            /* Do nothing, keep the original message */\n        }\n\n        this.error.emit(this.translation.instant(errorMessage));\n\n        return error;\n    }\n\n    private create(): Observable<Node> {\n        const parentNodeId = this.data.parentNodeId;\n\n        return this.nodesApi.createFolder(parentNodeId, { name: this.name, properties: this.properties, nodeType: this.nodeType });\n    }\n\n    private edit(): Observable<Node> {\n        const nodeId = this.data.folder.id;\n\n        return this.nodesApi.updateNode(nodeId, { name: this.name, properties: this.properties });\n    }\n\n    private getTrimmedValue(value: string): string {\n        return (value || '').trim();\n    }\n}\n","<h2 data-automation-id=\"adf-folder-dialog-title\" class=\"adf-folder-dialog-title\" mat-dialog-title>\n    {{ (editing ? editTitle : createTitle) | translate }}\n</h2>\n\n<mat-dialog-content class=\"adf-folder-dialog-content\">\n    <form [formGroup]=\"form\" (submit)=\"submit()\">\n        <mat-form-field class=\"adf-full-width\">\n            <mat-label>{{ 'CORE.FOLDER_DIALOG.FOLDER_NAME.LABEL' | translate }}</mat-label>\n            <input\n                id=\"adf-folder-name-input\"\n                [attr.aria-label]=\"'CORE.FOLDER_DIALOG.FOLDER_NAME.LABEL' | translate\"\n                matInput\n                required\n                [formControlName]=\"'name'\"\n                adf-auto-focus\n            />\n\n            <mat-hint *ngIf=\"form.controls['name'].dirty\">\n                <span *ngIf=\"form.controls['name'].errors?.required\">\n                    {{ 'CORE.FOLDER_DIALOG.FOLDER_NAME.ERRORS.REQUIRED' | translate }}\n                </span>\n\n                <span *ngIf=\"!form.controls['name'].errors?.required && form.controls['name'].errors?.message\">\n                    {{ form.controls['name'].errors?.message | translate }}\n                </span>\n            </mat-hint>\n        </mat-form-field>\n\n        <mat-form-field class=\"adf-full-width\">\n            <mat-label>{{ 'CORE.FOLDER_DIALOG.FOLDER_TITLE.LABEL' | translate }}</mat-label>\n            <input\n                id=\"adf-folder-title-input\"\n                matInput\n                [attr.aria-label]=\"'CORE.FOLDER_DIALOG.FOLDER_TITLE.LABEL' | translate\"\n                [formControlName]=\"'title'\"\n            />\n        </mat-form-field>\n\n        <mat-form-field class=\"adf-full-width\">\n            <mat-label>{{ 'CORE.FOLDER_DIALOG.FOLDER_DESCRIPTION.LABEL' | translate }}</mat-label>\n            <textarea\n                id=\"adf-folder-description-input\"\n                matInput\n                [attr.aria-label]=\"'CORE.FOLDER_DIALOG.FOLDER_DESCRIPTION.LABEL' | translate\"\n                rows=\"4\"\n                [formControlName]=\"'description'\">\n            </textarea>\n        </mat-form-field>\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\n        mat-button\n        id=\"adf-folder-cancel-button\"\n        mat-dialog-close>\n        {{ 'CORE.FOLDER_DIALOG.CANCEL_BUTTON.LABEL' | translate }}\n    </button>\n\n    <button class=\"adf-dialog-action-button\"\n            id=\"adf-folder-create-button\"\n            mat-button\n            (click)=\"submit()\"\n            [disabled]=\"!form.valid || disableSubmitButton\">\n        {{\n        (editing\n        ? 'CORE.FOLDER_DIALOG.UPDATE_BUTTON.LABEL'\n        : 'CORE.FOLDER_DIALOG.CREATE_BUTTON.LABEL'\n        ) | translate\n        }}\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\nexport enum TreeNodeType {\n    RegularNode,\n    LoadMoreNode\n}\n\nexport interface TreeNode {\n    id: string;\n    nodeName: string;\n    parentId: string;\n    level: number;\n    nodeType: TreeNodeType;\n    hasChildren: boolean;\n    isLoading: 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 { Injectable } from '@angular/core';\nimport { DataSource } from '@angular/cdk/collections';\nimport { FlatTreeControl } from '@angular/cdk/tree';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { TreeNode } from '../models/tree-node.interface';\nimport { TreeResponse } from '../models/tree-response.interface';\n\n@Injectable({ providedIn: 'root' })\nexport abstract class TreeService<T extends TreeNode> extends DataSource<T> {\n    public readonly treeControl: FlatTreeControl<T>;\n    public treeNodesSource = new BehaviorSubject<T[]>([]);\n\n    get treeNodes(): T[] {\n        return this.treeControl.dataNodes;\n    }\n\n    set treeNodes(nodes: T[]) {\n        this.treeControl.dataNodes = nodes;\n        this.treeNodesSource.next(nodes);\n    }\n\n    constructor() {\n        super();\n        this.treeControl = new FlatTreeControl<T>(\n            (node) => node.level,\n            (node) => node.hasChildren\n        );\n        this.treeNodes = [];\n    }\n\n    public abstract getSubNodes(parentNodeId: string, skipCount?: number, maxItems?: number, searchTerm?: string): Observable<TreeResponse<T>>;\n\n    /**\n     * Expands node applying subnodes to it.\n     *\n     * @param nodeToExpand Node to be expanded\n     * @param subNodes List of nodes that will be added as children of expanded node\n     */\n    public expandNode(nodeToExpand: T, subNodes: T[]): void {\n        if (nodeToExpand != null && subNodes != null && nodeToExpand.hasChildren) {\n            this.treeControl.expand(nodeToExpand);\n            const index: number = this.treeNodes.indexOf(nodeToExpand);\n            this.treeNodes.splice(index + 1, 0, ...subNodes);\n            nodeToExpand.isLoading = false;\n            this.treeNodesSource.next(this.treeNodes);\n        }\n    }\n\n    /**\n     * Collapses a node removing all children from it.\n     *\n     * @param nodeToCollapse Node to be collapsed\n     */\n    public collapseNode(nodeToCollapse: T): void {\n        if (nodeToCollapse?.hasChildren) {\n            this.treeControl.collapse(nodeToCollapse);\n            const children: T[] = this.treeNodes.filter((node: T) => nodeToCollapse.id === node.parentId);\n            children.forEach((child: T) => {\n                this.collapseInnerNode(child);\n            });\n            this.treeNodesSource.next(this.treeNodes);\n        }\n    }\n\n    /**\n     * Append more child nodes to already expanded parent node\n     *\n     * @param nodeToAppend Expanded parent node\n     * @param subNodes List of nodes that will be added as children of expanded node\n     */\n    public appendNodes(nodeToAppend: T, subNodes: T[]): void {\n        if (nodeToAppend != null && subNodes != null) {\n            const lastChild: T = this.treeNodes.filter((treeNode: T) => nodeToAppend.id === treeNode.parentId).pop();\n            const index: number = this.treeNodes.indexOf(lastChild);\n            const children: number = this.treeControl.getDescendants(lastChild).length;\n            this.treeNodes.splice(index + children + 1, 0, ...subNodes);\n            nodeToAppend.isLoading = false;\n            this.treeNodesSource.next(this.treeNodes);\n        }\n    }\n\n    /**\n     * Removes provided node from the tree\n     *\n     * @param node Node to be removed\n     */\n    public removeNode(node: T): void {\n        this.treeNodes.splice(this.treeNodes.indexOf(node), 1);\n    }\n\n    /**\n     * Gets children of the node\n     *\n     * @param parentNode Parent node\n     * @returns children of parent node\n     */\n    public getChildren(parentNode: T): T[] {\n        return this.treeNodes.filter((treeNode: T) => treeNode.parentId === parentNode.id);\n    }\n\n    /**\n     * Checks if tree is empty\n     *\n     * @returns boolean\n     */\n    public isEmpty(): boolean {\n        return !this.treeNodes.length;\n    }\n\n    /**\n     * Gets parent node of given node. If node with parentNodeId is not found it returns undefined.\n     *\n     * @param parentNodeId Id of a parent node to be found\n     * @returns parent node or undefined when not found\n     */\n    public getParentNode(parentNodeId: string): T | undefined {\n        return this.treeNodes.find((treeNode: T) => treeNode.id === parentNodeId);\n    }\n\n    public connect(): Observable<T[]> {\n        return this.treeNodesSource.asObservable();\n    }\n\n    public disconnect(): void {}\n\n    private collapseInnerNode(nodeToCollapse: T): void {\n        const index: number = this.treeNodes.indexOf(nodeToCollapse);\n        this.treeNodes.splice(index, 1);\n        if (nodeToCollapse.hasChildren) {\n            this.treeNodes.filter((node: T) => nodeToCollapse.id === node.parentId).forEach((child: T) => this.collapseInnerNode(child));\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    Component,\n    EventEmitter,\n    HostBinding,\n    Input,\n    OnDestroy,\n    OnInit,\n    Output,\n    QueryList,\n    TemplateRef,\n    ViewChildren,\n    ViewEncapsulation\n} from '@angular/core';\nimport { BehaviorSubject, merge, Observable, Subject } from 'rxjs';\nimport { TreeNode, TreeNodeType } from '../models/tree-node.interface';\nimport { TreeService } from '../services/tree.service';\nimport { ContextMenuDirective, IconComponent, PaginationModel, UserPreferencesService } from '@alfresco/adf-core';\nimport { SelectionChange, SelectionModel } from '@angular/cdk/collections';\nimport { TreeResponse } from '../models/tree-response.interface';\nimport { MatCheckbox, MatCheckboxModule } from '@angular/material/checkbox';\nimport { TreeContextMenuResult } from '../models/tree-context-menu-result.interface';\nimport { takeUntil } from 'rxjs/operators';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatTreeModule } from '@angular/material/tree';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n    selector: 'adf-tree',\n    standalone: true,\n    imports: [\n        CommonModule,\n        TranslateModule,\n        MatTreeModule,\n        MatProgressSpinnerModule,\n        MatButtonModule,\n        IconComponent,\n        ContextMenuDirective,\n        MatCheckboxModule,\n        MatMenuModule,\n        MatIconModule\n    ],\n    templateUrl: './tree.component.html',\n    styleUrls: ['./tree.component.scss'],\n    host: { class: 'adf-tree' },\n    encapsulation: ViewEncapsulation.None\n})\nexport class TreeComponent<T extends TreeNode> implements OnInit, OnDestroy {\n    /** TemplateRef to provide empty template when no nodes are loaded */\n    @Input()\n    public emptyContentTemplate: TemplateRef<any>;\n\n    /** TemplateRef to provide context menu items for context menu displayed on each row*/\n    @Input()\n    public nodeActionsMenuTemplate: TemplateRef<any>;\n\n    /** Variable defining if tree header should be sticky. By default set to false */\n    @Input()\n    @HostBinding('class.adf-tree-sticky-header')\n    public stickyHeader: boolean = false;\n\n    /** Variable defining if tree nodes should be selectable. By default set to false */\n    @Input()\n    public selectableNodes: boolean = false;\n\n    /** Tree display name */\n    @Input()\n    public displayName: string;\n\n    /** Load more suffix for load more button */\n    @Input()\n    public loadMoreSuffix: string;\n\n    /** Icon shown when node has children and is collapsed. By default set to chevron_right */\n    @Input()\n    public expandIcon: string = 'chevron_right';\n\n    /** Icon shown when node is expanded. By default set to expand_more */\n    @Input()\n    public collapseIcon: string = 'expand_more';\n\n    /** Emitted when pagination has been changed */\n    @Output()\n    public paginationChanged: EventEmitter<PaginationModel> = new EventEmitter();\n\n    /** Emitted when any context menu option is selected */\n    @Output()\n    public contextMenuOptionSelected = new EventEmitter<TreeContextMenuResult<T>>();\n\n    @ViewChildren(MatCheckbox)\n    public nodeCheckboxes: QueryList<MatCheckbox>;\n\n    private loadingRootSource = new BehaviorSubject<boolean>(false);\n    private _contextMenuSource: T;\n    private _contextMenuOptions: any[];\n    private contextMenuOptionsChanged$ = new Subject<void>();\n    public loadingRoot$: Observable<boolean>;\n    public treeNodesSelection = new SelectionModel<T>(true, [], true, (node1: T, node2: T) => node1.id === node2.id);\n\n    constructor(public treeService: TreeService<T>, private userPreferenceService: UserPreferencesService) {}\n\n    set contextMenuSource(contextMenuSource: T) {\n        this._contextMenuSource = contextMenuSource;\n    }\n\n    /** Array of context menu options which should be displayed for each row. */\n    @Input()\n    set contextMenuOptions(contextMenuOptions: any[]) {\n        this.contextMenuOptionsChanged$.next();\n        if (contextMenuOptions) {\n            this._contextMenuOptions = contextMenuOptions.map((option) => {\n                if (!option.subject) {\n                    option = {\n                        ...option,\n                        subject: new Subject()\n                    };\n                }\n                return option;\n            });\n            merge(...this.contextMenuOptions.map((option) => option.subject))\n                .pipe(takeUntil(this.contextMenuOptionsChanged$))\n                .subscribe((option) => {\n                    this.contextMenuOptionSelected.emit({\n                        row: this._contextMenuSource,\n                        contextMenuOption: option\n                    });\n                });\n        } else {\n            this._contextMenuOptions = contextMenuOptions;\n        }\n    }\n\n    get contextMenuOptions(): any[] {\n        return this._contextMenuOptions;\n    }\n\n    ngOnInit(): void {\n        this.loadingRoot$ = this.loadingRootSource.asObservable();\n        this.refreshTree(0, this.userPreferenceService.paginationSize);\n        this.treeNodesSelection.changed.subscribe((selectionChange: SelectionChange<T>) => {\n            this.onTreeSelectionChange(selectionChange);\n        });\n    }\n\n    ngOnDestroy() {\n        this.contextMenuOptionsChanged$.next();\n        this.contextMenuOptionsChanged$.complete();\n    }\n\n    /**\n     * Checks if node is LoadMoreNode node\n     *\n     * @param _idx (unused)\n     * @param node node to be checked\n     * @returns `true` if there are more items to load, otherwise `false`\n     */\n    public isLoadMoreNode(_idx: number, node: T): boolean {\n        return node.nodeType === TreeNodeType.LoadMoreNode;\n    }\n\n    /**\n     * Checks if tree is empty\n     *\n     * @returns boolean\n     */\n    public isEmpty(): boolean {\n        return this.treeService.isEmpty();\n    }\n\n    /**\n     * Returns action icon based on expanded/collapsed node state.\n     *\n     * @param node node to be checked\n     * @returns collapse or expand icon\n     */\n    public expandCollapseIconValue(node: T): string {\n        return this.treeService.treeControl.isExpanded(node) ? this.collapseIcon : this.expandIcon;\n    }\n\n    /**\n     * Refreshes the tree, root nodes are reloaded, tree selection is cleared.\n     *\n     * @param skipCount Number of root nodes to skip.\n     * @param maxItems Maximum number of nodes returned from Observable.\n     * @param searchTerm Specifies if categories should be filtered out by name or not. If not specified then returns categories without filtering.\n     */\n    public refreshTree(skipCount?: number, maxItems?: number, searchTerm?: string): void {\n        this.loadingRootSource.next(true);\n        this.treeNodesSelection.clear();\n        this.treeService.getSubNodes('-root-', skipCount, maxItems, searchTerm).subscribe((response: TreeResponse<T>) => {\n            this.treeService.treeNodes = response.entries;\n            this.treeNodesSelection.deselect(...response.entries);\n            this.paginationChanged.emit(response.pagination);\n            this.loadingRootSource.next(false);\n        });\n    }\n\n    /**\n     * Collapses or expanding the node based on its current state\n     *\n     * @param node node to be collapsed/expanded\n     */\n    public expandCollapseNode(node: T): void {\n        if (node.hasChildren && !node.isLoading) {\n            if (this.treeService.treeControl.isExpanded(node)) {\n                this.treeService.collapseNode(node);\n            } else {\n                node.isLoading = true;\n                this.treeService.getSubNodes(node.id, 0, this.userPreferenceService.paginationSize).subscribe((response: TreeResponse<T>) => {\n                    this.treeService.expandNode(node, response.entries);\n                    node.isLoading = false;\n                    if (this.treeNodesSelection.isSelected(node)) {\n                        //timeout used to update nodeCheckboxes query list after new nodes are added so they can be selected\n                        setTimeout(() => {\n                            this.treeNodesSelection.select(...response.entries);\n                        });\n                    }\n                });\n            }\n        }\n    }\n\n    /**\n     * Loads more subnode for a given parent node\n     *\n     * @param node parent node\n     */\n    public loadMoreSubnodes(node: T): void {\n        node.isLoading = true;\n        const parentNode: T = this.treeService.getParentNode(node.parentId);\n        this.treeService.removeNode(node);\n        const loadedChildren: number = this.treeService.getChildren(parentNode).length;\n        this.treeService\n            .getSubNodes(parentNode.id, loadedChildren, this.userPreferenceService.paginationSize)\n            .subscribe((response: TreeResponse<T>) => {\n                this.treeService.appendNodes(parentNode, response.entries);\n                node.isLoading = false;\n                if (this.treeNodesSelection.isSelected(parentNode)) {\n                    //timeout used to update nodeCheckboxes query list after new nodes are added so they can be selected\n                    setTimeout(() => {\n                        this.treeNodesSelection.select(...response.entries);\n                    });\n                }\n            });\n    }\n\n    /**\n     * When node is selected it selects all its descendants\n     *\n     * @param node selected node\n     */\n    public onNodeSelected(node: T): void {\n        this.treeNodesSelection.toggle(node);\n        const descendants: T[] = this.treeService.treeControl.getDescendants(node).filter(this.isRegularNode);\n        if (descendants.length > 0) {\n            this.treeNodesSelection.isSelected(node)\n                ? this.treeNodesSelection.select(...descendants)\n                : this.treeNodesSelection.deselect(...descendants);\n        }\n        this.checkParentsSelection(node);\n    }\n\n    /**\n     * Checks if all descendants of a node are selected\n     *\n     * @param node selected node\n     * @returns boolean\n     */\n    public descendantsAllSelected(node: T): boolean {\n        const descendants: T[] = this.treeService.treeControl.getDescendants(node).filter(this.isRegularNode);\n        return descendants.length > 0 && descendants.every((descendant: T) => this.treeNodesSelection.isSelected(descendant));\n    }\n\n    /**\n     * Checks if some descendants of a node are selected\n     *\n     * @param node selected node\n     * @returns boolean\n     */\n    public descendantsPartiallySelected(node: T): boolean {\n        const descendants: T[] = this.treeService.treeControl.getDescendants(node).filter(this.isRegularNode);\n        return (\n            descendants.length > 0 &&\n            !this.descendantsAllSelected(node) &&\n            descendants.some((descendant: T) => this.treeNodesSelection.isSelected(descendant))\n        );\n    }\n\n    private checkParentsSelection(node: T): void {\n        let parent: T = this.treeService.getParentNode(node.parentId);\n        while (parent) {\n            this.checkRootNodeSelection(parent);\n            parent = this.treeService.getParentNode(parent.parentId);\n        }\n    }\n\n    private checkRootNodeSelection(node: T): void {\n        const nodeSelected: boolean = this.treeNodesSelection.isSelected(node);\n        const descAllSelected = this.descendantsAllSelected(node);\n        if (nodeSelected && !descAllSelected) {\n            this.treeNodesSelection.deselect(node);\n        } else if (!nodeSelected && descAllSelected) {\n            this.treeNodesSelection.select(node);\n        }\n    }\n\n    private onTreeSelectionChange(selectionChange: SelectionChange<T>): void {\n        selectionChange.removed.forEach((unselectedNode: T) => {\n            if (this.isRegularNode(unselectedNode)) {\n                this.nodeCheckboxes.find((checkbox: MatCheckbox) => checkbox.id === unselectedNode.id).checked = false;\n            }\n        });\n        selectionChange.added.forEach((selectedNode: T) => {\n            if (this.isRegularNode(selectedNode)) {\n                this.nodeCheckboxes.find((checkbox: MatCheckbox) => checkbox.id === selectedNode.id).checked = true;\n            }\n        });\n    }\n\n    private isRegularNode(node: T): boolean {\n        return node.nodeType !== TreeNodeType.LoadMoreNode;\n    }\n}\n","<ng-container *ngIf=\"(loadingRoot$ | async) === false; else loadingSpinner\">\n    <ng-container *ngIf=\"!this.isEmpty(); else emptyContent\">\n        <div class=\"adf-tree-row adf-tree-header\" *ngIf=\"displayName\">\n            <div class=\"adf-tree-cell adf-tree-cell-header\" data-automation-id=\"tree-header-display-name\">\n                <span class=\"adf-tree-cell-value\">\n                    {{ displayName | translate }}\n                </span>\n            </div>\n        </div>\n        <mat-tree\n            class=\"adf-tree-body\"\n            [dataSource]=\"treeService\"\n            [treeControl]=\"treeService.treeControl\">\n            <mat-tree-node\n                class=\"adf-tree-load-more-row\"\n                [attr.data-automation-id]=\"'loadMoreSubnodes_' + node.parentId\"\n                *matTreeNodeDef=\"let node when isLoadMoreNode\"\n                matTreeNodePadding>\n                <div class=\"adf-tree-expand-collapse-container\">\n                    <button class=\"adf-tree-load-more-button\" mat-icon-button (click)=\"loadMoreSubnodes(node)\">\n                        <mat-progress-spinner\n                            color=\"primary\"\n                            mode=\"indeterminate\"\n                            [diameter]=\"24\"\n                            *ngIf=\"node.isLoading; else loadMoreIcon\" />\n                        <ng-template #loadMoreIcon>\n                            <adf-icon [value]=\"'chevron_right'\" />\n                        </ng-template>\n                    </button>\n                </div>\n                <div class=\"adf-tree-cell\">\n                    <span\n                        class=\"adf-tree-cell-value\"\n                        tabindex=\"0\"\n                        role=\"button\"\n                        (keyup.enter)=\"loadMoreSubnodes(node)\"\n                        (click)=\"loadMoreSubnodes(node)\">\n                        {{ 'ADF-TREE.LOAD-MORE-BUTTON' | translate: { name: loadMoreSuffix } }}\n                    </span>\n                </div>\n            </mat-tree-node>\n            <mat-tree-node\n                class=\"adf-tree-row\"\n                [attr.data-automation-id]=\"'node_' + node.id\"\n                *matTreeNodeDef=\"let node\"\n                matTreeNodePadding\n                [adf-context-menu]=\"contextMenuOptions\"\n                [adf-context-menu-enabled]=\"!!contextMenuOptions\"\n                (contextmenu)=\"contextMenuSource = node\">\n                <div class=\"adf-tree-expand-collapse-container\">\n                    <button *ngIf=\"node.hasChildren\"\n                            class=\"adf-tree-expand-collapse-button\"\n                            (click)=\"expandCollapseNode(node)\"\n                            mat-icon-button>\n                        <mat-progress-spinner\n                            color=\"primary\"\n                            mode=\"indeterminate\"\n                            [diameter]=\"24\"\n                            *ngIf=\"node.isLoading; else expandCollapseIcon\" />\n                        <ng-template #expandCollapseIcon>\n                            <adf-icon [value]=\"expandCollapseIconValue(node)\" />\n                        </ng-template>\n                    </button>\n                </div>\n                <ng-container *ngIf=\"selectableNodes\">\n                    <mat-checkbox *ngIf=\"node.hasChildren; else noChildrenNodeCheckbox\"\n                                  color=\"primary\"\n                                  [id]=\"node.id\"\n                                  [checked]=\"descendantsAllSelected(node)\"\n                                  [indeterminate]=\"descendantsPartiallySelected(node)\"\n                                  (change)=\"onNodeSelected(node)\"\n                                  data-automation-id=\"has-children-node-checkbox\" />\n                    <ng-template #noChildrenNodeCheckbox>\n                        <mat-checkbox\n                            color=\"primary\"\n                            [id]=\"node.id\"\n                            [checked]=\"treeNodesSelection.isSelected(node)\"\n                            (change)=\"onNodeSelected(node)\"\n                            data-automation-id=\"no-children-node-checkbox\" />\n                    </ng-template>\n                </ng-container>\n                <div class=\"adf-tree-cell\">\n                    <span\n                        class=\"adf-tree-cell-value\"\n                        [class.adf-tree-clickable-cell-value]=\"node.hasChildren\"\n                        tabindex=\"0\"\n                        role=\"button\"\n                        (keyup.enter)=\"expandCollapseNode(node)\"\n                        (click)=\"expandCollapseNode(node)\">\n                        {{ node.nodeName }}\n                    </span>\n                </div>\n                <div class=\"adf-tree-actions\">\n                    <button mat-icon-button\n                            [matMenuTriggerFor]=\"menu\"\n                            [attr.id]=\"'action_menu_right_' + node.id\">\n                        <mat-icon>more_vert</mat-icon>\n                    </button>\n                    <mat-menu #menu=\"matMenu\">\n                        <ng-template\n                            [ngTemplateOutlet]=\"nodeActionsMenuTemplate\"\n                            [ngTemplateOutletContext]=\"{ node: node }\" />\n                    </mat-menu>\n                </div>\n            </mat-tree-node>\n        </mat-tree>\n    </ng-container>\n</ng-container>\n\n<ng-template #emptyContent>\n    <ng-template [ngTemplateOutlet]=\"emptyContentTemplate\" />\n</ng-template>\n\n<ng-template #loadingSpinner>\n    <div class=\"adf-tree-loading-spinner-container\">\n        <mat-progress-spinner\n            color=\"primary\"\n            mode=\"indeterminate\" />\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 { NgModule } from '@angular/core';\nimport { TreeComponent } from './components/tree.component';\n\n/** @deprecated use `TreeComponent` standalone component instead */\n@NgModule({\n    imports: [TreeComponent],\n    exports: [TreeComponent]\n})\nexport class TreeModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { TreeNode } from './tree-node.interface';\nimport { PaginationModel } from '@alfresco/adf-core';\n\nexport interface TreeResponse<T extends TreeNode> {\n    pagination: PaginationModel;\n    entries: 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\nexport interface TreeContextMenuResult<T> {\n    row: T;\n    contextMenuOption: 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 './tree.module';\nexport * from './models/tree-response.interface';\nexport * from './models/tree-node.interface';\nexport * from './models/tree-context-menu-result.interface';\nexport * from './services/tree.service';\nexport * from './components/tree.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 { TreeNodeType, TreeResponse, TreeService } from '../../tree';\nimport { CategoryNode } from '../models/category-node.interface';\nimport { CategoryService } from './category.service';\nimport { CategoryEntry, CategoryPaging } from '@alfresco/js-api';\nimport { from, Observable } from 'rxjs';\nimport { map, mergeMap, toArray } from 'rxjs/operators';\n\n@Injectable({ providedIn: 'root' })\nexport class CategoryTreeDatasourceService extends TreeService<CategoryNode> {\n    constructor(private categoryService: CategoryService) {\n        super();\n    }\n\n    public getSubNodes(parentNodeId: string, skipCount?: number, maxItems?: number, name?: string): Observable<TreeResponse<CategoryNode>> {\n        return !name\n            ? this.categoryService.getSubcategories(parentNodeId, skipCount, maxItems).pipe(\n                  map((response: CategoryPaging) => {\n                      const parentNode: CategoryNode = this.getParentNode(parentNodeId);\n                      const nodesList: CategoryNode[] = response.list.entries.map((entry: CategoryEntry) => ({\n                          id: entry.entry.id,\n                          nodeName: entry.entry.name,\n                          parentId: entry.entry.parentId,\n                          hasChildren: entry.entry.hasChildren,\n                          level: parentNode ? parentNode.level + 1 : 0,\n                          isLoading: false,\n                          nodeType: TreeNodeType.RegularNode\n                      }));\n                      if (response.list.pagination.hasMoreItems && parentNode) {\n                          const loadMoreNode: CategoryNode = {\n                              id: 'loadMore',\n                              nodeName: '',\n                              parentId: parentNode.id,\n                              hasChildren: false,\n                              level: parentNode.level + 1,\n                              isLoading: false,\n                              nodeType: TreeNodeType.LoadMoreNode\n                          };\n                          nodesList.push(loadMoreNode);\n                      }\n                      const treeResponse: TreeResponse<CategoryNode> = { entries: nodesList, pagination: response.list.pagination };\n                      return treeResponse;\n                  })\n              )\n            : this.categoryService.searchCategories(name, skipCount, maxItems).pipe(\n                  mergeMap((pagingResult) => {\n                      const nextAfterGeneralPathPartIndex = 3;\n                      const pathSeparator = '/';\n                      return from(pagingResult.list.entries).pipe(\n                          mergeMap((category) => {\n                              const path = category.entry.path.name.split(pathSeparator).slice(nextAfterGeneralPathPartIndex).join(pathSeparator);\n\n                              return this.categoryService.getCategory(category.entry.id).pipe(\n                                  map((res) => ({\n                                      id: category.entry.id,\n                                      nodeName: path ? `${path}/${category.entry.name}` : category.entry.name,\n                                      parentId: category.entry.parentId,\n                                      level: 0,\n                                      nodeType: TreeNodeType.RegularNode,\n                                      hasChildren: res.entry.hasChildren,\n                                      isLoading: false\n                                  }))\n                              );\n                          }),\n                          toArray(),\n                          map((res) => ({ entries: res, pagination: pagingResult.list.pagination }))\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 { TreeNode } from '../../tree/models/tree-node.interface';\n\nexport interface CategoryNode extends TreeNode {\n    description?: 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 enum CategoriesManagementMode {\n    CRUD,\n    ASSIGN\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Category } from '@alfresco/js-api';\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 { FormControl, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { EMPTY, Observable, Subject, timer } from 'rxjs';\nimport { debounce, first, map, tap } from 'rxjs/operators';\nimport { CategoriesManagementMode } from './categories-management-mode';\nimport { CategoryService } from '../services/category.service';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { AutoFocusDirective } from '../../directives';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\ninterface CategoryNameControlErrors {\n    duplicatedExistingCategory?: boolean;\n    duplicatedCategory?: boolean;\n    emptyCategory?: boolean;\n    required?: boolean;\n}\n\n@Component({\n    selector: 'adf-categories-management',\n    standalone: true,\n    imports: [\n        CommonModule,\n        TranslateModule,\n        AutoFocusDirective,\n        ReactiveFormsModule,\n        MatFormFieldModule,\n        MatButtonModule,\n        MatIconModule,\n        MatListModule,\n        MatProgressSpinnerModule\n    ],\n    templateUrl: './categories-management.component.html',\n    styleUrls: ['./categories-management.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class CategoriesManagementComponent implements OnInit, OnDestroy {\n    readonly nameErrorMessagesByErrors = new Map<keyof CategoryNameControlErrors, string>([\n        ['duplicatedExistingCategory', 'ALREADY_EXISTS'],\n        ['duplicatedCategory', 'DUPLICATED_CATEGORY'],\n        ['emptyCategory', 'EMPTY_CATEGORY'],\n        ['required', 'REQUIRED']\n    ]);\n\n    private existingCategoryLoaded$ = new Subject<void>();\n    private cancelExistingCategoriesLoading$ = new Subject<void>();\n    private _categoryNameControl = new FormControl<string>(\n        '',\n        [this.validateIfNotAlreadyAdded.bind(this), this.validateEmptyCategory, Validators.required],\n        this.validateIfNotAlreadyCreated.bind(this)\n    );\n    private _existingCategories: Category[];\n    private _categoryNameErrorMessageKey = '';\n    private _existingCategoriesLoading = false;\n    private _typing = false;\n    private _existingCategoriesPanelVisible: boolean;\n    private _categoryNameControlVisible = false;\n    private readonly existingCategoriesListLimit = 15;\n    initialCategories: Category[] = [];\n    noCategoriesMsg = '';\n    removeCategoryTitle = '';\n    existingCategoriesMsg = '';\n\n    /** Categories to display initially */\n    @Input()\n    categories: Category[] = [];\n\n    /**\n     * Decides if categoryNameControl should be visible. Sets also existing categories panel visibility\n     * and scrolls control into view when visible.\n     *\n     * @param categoryNameControlVisible control visibility.\n     */\n    @Input()\n    set categoryNameControlVisible(categoryNameControlVisible: boolean) {\n        this._categoryNameControlVisible = categoryNameControlVisible;\n        if (categoryNameControlVisible) {\n            setTimeout(() => {\n                this.categoryNameInputElement.nativeElement.scrollIntoView();\n            });\n            this._existingCategoriesPanelVisible = true;\n        } else {\n            this._existingCategoriesPanelVisible = false;\n            this.clearCategoryNameInput();\n        }\n    }\n\n    get categoryNameControlVisible(): boolean {\n        return this._categoryNameControlVisible;\n    }\n\n    /** Emits when classifiable aspect changes */\n    @Input()\n    classifiableChanged: Observable<void>;\n\n    /** Disables remove button in upper categories list */\n    @Input()\n    disableRemoval = false;\n\n    /**\n     * Component mode.\n     * In ASSIGN mode we can only assign/unassign categories from existing list.\n     * In CRUD mode we can create categories.\n     */\n    @Input({ required: true })\n    managementMode: CategoriesManagementMode;\n\n    /** ID of a parent category. New categories will be created under this parent */\n    @Input()\n    parentId: string;\n\n    /** Toggles multiselect mode */\n    @Input()\n    multiSelect = true;\n\n    /** Emits when state of upper categories list changes */\n    @Output()\n    categoriesChange = new EventEmitter<Category[]>();\n\n    /** Emits when categoryNameControl visibility changes */\n    @Output()\n    categoryNameControlVisibleChange = new EventEmitter<boolean>();\n\n    @ViewChild('categoryNameInput')\n    private categoryNameInputElement: ElementRef;\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    constructor(private categoryService: CategoryService) {}\n\n    ngOnInit() {\n        this.categoryNameControl.valueChanges\n            .pipe(\n                map((name: string) => name.trim()),\n                tap((name: string) => {\n                    this._typing = true;\n                    if (name) {\n                        this._existingCategoriesLoading = true;\n                        this._existingCategoriesPanelVisible = true;\n                    }\n                    this.cancelExistingCategoriesLoading$.next();\n                }),\n                debounce((name: string) => (name ? timer(300) : EMPTY)),\n                takeUntilDestroyed(this.destroyRef)\n            )\n            .subscribe((name: string) => this.onNameControlValueChange(name));\n\n        this.categoryNameControl.statusChanges\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe(() => this.setCategoryNameControlErrorMessageKey());\n\n        this.setCategoryNameControlErrorMessageKey();\n\n        this.noCategoriesMsg = this.isCRUDMode ? 'CATEGORIES_MANAGEMENT.NO_CATEGORIES_CREATED' : 'CATEGORIES_MANAGEMENT.NO_CATEGORIES_ASSIGNED';\n        this.removeCategoryTitle = this.isCRUDMode ? 'CATEGORIES_MANAGEMENT.DELETE_CATEGORY' : 'CATEGORIES_MANAGEMENT.UNASSIGN_CATEGORY';\n        this.existingCategoriesMsg = this.isCRUDMode ? 'CATEGORIES_MANAGEMENT.EXISTING_CATEGORIES' : 'CATEGORIES_MANAGEMENT.SELECT_EXISTING_CATEGORY';\n\n        if (!this.isCRUDMode) {\n            this._categoryNameControl.removeValidators(Validators.required);\n            this.categories.forEach((category) => this.initialCategories.push(category));\n            if (this.classifiableChanged) {\n                this.classifiableChanged.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n                    this.categories = [];\n                    this.categoryNameControlVisible = false;\n                    this.categoryNameControlVisibleChange.emit(false);\n                });\n            }\n        }\n    }\n\n    ngOnDestroy() {\n        this.cancelExistingCategoriesLoading$.next();\n        this.cancelExistingCategoriesLoading$.complete();\n    }\n\n    get categoryNameControl(): FormControl<string> {\n        return this._categoryNameControl;\n    }\n\n    /*\n     * Returns `true` if categories empty and category panel non editable state, otherwise `false`\n     */\n    get showEmptyCategoryMessage(): boolean {\n        return this.categories.length === 0 && !this.categoryNameControlVisible;\n    }\n\n    get existingCategories(): Category[] {\n        return this._existingCategories;\n    }\n\n    get categoryNameErrorMessageKey(): string {\n        return this._categoryNameErrorMessageKey;\n    }\n\n    get existingCategoriesLoading(): boolean {\n        return this._existingCategoriesLoading;\n    }\n\n    get typing(): boolean {\n        return this._typing;\n    }\n\n    get existingCategoriesPanelVisible(): boolean {\n        return this._existingCategoriesPanelVisible;\n    }\n\n    get isCRUDMode(): boolean {\n        return this.managementMode === CategoriesManagementMode.CRUD;\n    }\n\n    /**\n     * Adds category that has been typed to a categoryNameControl and hides it afterwards.\n     */\n    addCategory() {\n        if (this.isCRUDMode && !this._typing && !this.categoryNameControl.invalid) {\n            const newCatName = this.categoryNameControl.value.trim();\n            const newCat = new Category({ id: newCatName, name: newCatName });\n            this.categories.push(newCat);\n            this.clearCategoryNameInput();\n            this._existingCategories = null;\n            this.categoriesChange.emit(this.categories);\n        }\n    }\n\n    /**\n     * Adds existing category to categories list and removes it from existing categories list.\n     *\n     * @param category - selection list change containing selected category\n     */\n    addCategoryToAssign(category: Category) {\n        if (!(this.isCRUDMode || (!this.multiSelect && this.categories.length > 0))) {\n            const selectedCategory: Category = category;\n            this.categories.push(selectedCategory);\n            this._existingCategories.splice(this._existingCategories.indexOf(selectedCategory), 1);\n            this.categoryNameControl.updateValueAndValidity();\n            this.categoriesChange.emit(this.categories);\n        }\n    }\n\n    /**\n     * Removes the category from categories list and adds it to existing categories list in ASSIGN mode.\n     *\n     * @param category - category to remove\n     */\n    removeCategory(category: Category) {\n        this.categories.splice(this.categories.indexOf(category), 1);\n        if (!this.isCRUDMode && !!this._existingCategories && !this.initialCategories.some((cat) => cat.id === category.id)) {\n            this._existingCategories.push(category);\n            this.sortCategoriesList(this._existingCategories);\n        }\n        this.categoryNameControl.updateValueAndValidity({\n            emitEvent: false\n        });\n        this.categoriesChange.emit(this.categories);\n    }\n\n    private onNameControlValueChange(name: string) {\n        this.categoryNameControl.markAsTouched();\n        if (name) {\n            if (this.isCRUDMode) {\n                this.getChildrenCategories(name);\n            } else {\n                this.searchForExistingCategories(name);\n            }\n        } else {\n            this._existingCategories = null;\n        }\n    }\n\n    private searchForExistingCategories(searchTerm: string) {\n        this.categoryService.searchCategories(searchTerm, 0, this.existingCategoriesListLimit).subscribe((existingCategoriesResult) => {\n            this._existingCategories = existingCategoriesResult.list.entries.map((rowEntry) => {\n                const existingCat = new Category();\n                existingCat.id = rowEntry.entry.id;\n                const path = rowEntry.entry.path.name.split('/').splice(3).join('/');\n                existingCat.name = path ? `${path}/${rowEntry.entry.name}` : rowEntry.entry.name;\n                return existingCat;\n            });\n            this._existingCategories = this._existingCategories.filter(\n                (existingCat) => this.categories.find((category) => existingCat.id === category.id) === undefined\n            );\n            this.sortCategoriesList(this._existingCategories);\n            this._existingCategoriesLoading = false;\n            this._typing = false;\n            this.existingCategoryLoaded$.next();\n        });\n    }\n\n    private getChildrenCategories(searchTerm: string) {\n        this.categoryService.getSubcategories(this.parentId).subscribe((childrenCategories) => {\n            this._existingCategories = childrenCategories.list.entries.map((categoryEntry) => categoryEntry.entry);\n            this._existingCategories = this._existingCategories.filter((existingCat) =>\n                existingCat.name.toLowerCase().includes(searchTerm.toLowerCase())\n            );\n            this.sortCategoriesList(this._existingCategories);\n            this._existingCategoriesLoading = false;\n            this._typing = false;\n            this.existingCategoryLoaded$.next();\n        });\n    }\n\n    private validateIfNotAlreadyAdded(nameControl: FormControl<string>): CategoryNameControlErrors | null {\n        return this.categories?.some((category) => this.compareCategories(category, nameControl.value)) && this.isCRUDMode\n            ? { duplicatedCategory: true }\n            : null;\n    }\n\n    private validateIfNotAlreadyCreated(nameControl: FormControl<string>): Observable<CategoryNameControlErrors | null> {\n        return this.existingCategoryLoaded$.pipe(\n            map<void, CategoryNameControlErrors | null>(() =>\n                this.existingCategories.some((category) => this.compareCategories(category, nameControl.value)) && this.isCRUDMode\n                    ? { duplicatedExistingCategory: true }\n                    : null\n            ),\n            first()\n        );\n    }\n\n    private compareCategories(category1?: Category, cat2Name?: string): boolean {\n        return category1?.name.trim().toUpperCase() === cat2Name?.trim().toUpperCase();\n    }\n\n    private validateEmptyCategory(categoryNameControl: FormControl<string>): CategoryNameControlErrors | null {\n        return categoryNameControl.value.length && !categoryNameControl.value.trim() ? { emptyCategory: true } : null;\n    }\n\n    private setCategoryNameControlErrorMessageKey() {\n        this._categoryNameErrorMessageKey = this.categoryNameControl.invalid\n            ? `CATEGORIES_MANAGEMENT.ERRORS.${this.nameErrorMessagesByErrors.get(\n                  Object.keys(this.categoryNameControl.errors)[0] as keyof CategoryNameControlErrors\n              )}`\n            : '';\n    }\n\n    private sortCategoriesList(categoriesList: Category[]) {\n        categoriesList.sort((category1, category2) => category1.name.localeCompare(category2.name));\n    }\n\n    private clearCategoryNameInput() {\n        this.categoryNameControl.setValue('');\n        this.categoryNameControl.markAsUntouched();\n    }\n}\n","<div class=\"adf-categories-management\">\n    <div *ngIf=\"categoryNameControlVisible\" class=\"adf-category-name-field\">\n        <input #categoryNameInput\n            [formControl]=\"categoryNameControl\"\n            (keyup.enter)=\"addCategory()\"\n            placeholder=\"{{'CATEGORIES_MANAGEMENT.CATEGORIES_SEARCH_PLACEHOLDER' | translate }}\"\n            adf-auto-focus\n            />\n        <mat-error *ngIf=\"categoryNameControl.invalid\">{{ categoryNameErrorMessageKey | translate }}</mat-error>\n    </div>\n    <div class=\"adf-categories-list\" *ngIf=\"categories?.length > 0\" [class.adf-categories-list-fixed]=\"!categoryNameControlVisible\">\n        <span\n            *ngFor=\"let category of categories\"\n            [class.adf-categories-padded]=\"!isCRUDMode\"\n            class=\"adf-assigned-categories\">\n            {{ category.name }}\n            <button\n                data-automation-id=\"categories-remove-category-button\"\n                mat-icon-button\n                (click)=\"removeCategory(category)\"\n                [attr.title]=\"removeCategoryTitle | translate\"\n                [disabled]=\"disableRemoval\">\n                <mat-icon>remove</mat-icon>\n            </button>\n        </span>\n    </div>\n    <p *ngIf=\"showEmptyCategoryMessage\" class=\"adf-no-categories-message\">\n        {{ noCategoriesMsg | translate }}\n    </p>\n</div>\n<div class=\"adf-existing-categories-panel\" *ngIf=\"existingCategoriesPanelVisible\">\n    <ng-container *ngIf=\"isCRUDMode && (!existingCategoriesLoading || existingCategories)\">\n        <span class=\"adf-create-category-label\"\n            (click)=\"addCategory()\"\n            tabindex=\"0\"\n            role=\"button\"\n            (keyup.enter)=\"addCategory()\"\n            [hidden]=\"categoryNameControl.invalid || typing\">\n            {{ 'CATEGORIES_MANAGEMENT.GENERIC_CREATE' | translate : { name: categoryNameControl.value } }}\n        </span>\n    </ng-container>\n    <div *ngIf=\"categoryNameControlVisible\" class=\"adf-categories-list\">\n        <ng-container *ngIf=\"!existingCategoriesLoading && existingCategories\">\n            <p class=\"adf-existing-categories-label\">\n                {{ existingCategoriesMsg | translate }}\n            </p>\n            <mat-list\n                [disabled]=\"isCRUDMode || !multiSelect && categories.length > 0\"\n                class=\"adf-categories-management-list\">\n                <mat-list-item\n                    *ngFor=\"let category of existingCategories\"\n                    class=\"adf-category\"\n                    (click)='addCategoryToAssign(category)'>\n                        {{ category.name }}\n                </mat-list-item>\n                <p *ngIf=\"!existingCategories?.length && !existingCategoriesLoading\"\n                   data-automation-id=\"no-categories-message\">\n                    {{ 'CATEGORIES_MANAGEMENT.NO_EXISTING_CATEGORIES' | translate }}\n                </p>\n            </mat-list>\n        </ng-container>\n        <mat-spinner\n            *ngIf=\"existingCategoriesLoading\"\n            [diameter]=\"50\"\n            class=\"adf-categories-management-spinner\"\n            [attr.aria-label]=\"'CATEGORIES_MANAGEMENT.LOADING' | translate\" />\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 { CategoriesManagementComponent } from './categories-management/categories-management.component';\n\n/** @deprecated use `CategoriesManagementComponent` standalone component instead */\n@NgModule({\n    imports: [CategoriesManagementComponent],\n    exports: [CategoriesManagementComponent]\n})\nexport class CategoriesModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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/category.service';\nexport * from './services/category-tree-datasource.service';\nexport * from './models/category-node.interface';\nexport * from './category.module';\nexport * from './categories-management/categories-management.component';\nexport * from './categories-management/categories-management-mode';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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, Inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { Subject } from 'rxjs';\nimport { Category } from '@alfresco/js-api';\nimport { CategoriesManagementComponent, CategoriesManagementMode } from '../../category';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatButtonModule } from '@angular/material/button';\n\nexport interface CategorySelectorDialogOptions {\n    select: Subject<Category[]>;\n    multiSelect?: boolean;\n}\n\n@Component({\n    selector: 'adf-category-selector-dialog',\n    standalone: true,\n    imports: [CommonModule, MatDialogModule, TranslateModule, CategoriesManagementComponent, MatButtonModule],\n    templateUrl: './category-selector.dialog.html',\n    styleUrls: ['./category-selector.dialog.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class CategorySelectorDialogComponent implements OnInit {\n    categories: Category[] = [];\n    categoriesManagementMode = CategoriesManagementMode.ASSIGN;\n    multiSelect = true;\n\n    constructor(\n        private dialog: MatDialogRef<CategorySelectorDialogComponent, boolean>,\n        @Inject(MAT_DIALOG_DATA) private options: CategorySelectorDialogOptions\n    ) {}\n\n    ngOnInit() {\n        this.multiSelect = this.options.multiSelect ?? true;\n    }\n\n    selectCategories() {\n        this.options.select.next(this.categories);\n        this.dialog.close(true);\n    }\n}\n","<h1 mat-dialog-title>\n  {{ 'CATEGORIES_MANAGEMENT.SELECT_EXISTING_CATEGORY' | translate }}\n</h1>\n\n<mat-dialog-content class=\"adf-dialog-content\">\n    <adf-categories-management\n            (categoriesChange)=\"categories = $event\"\n            [categoryNameControlVisible]=\"true\"\n            [managementMode]=\"categoriesManagementMode\"\n            [multiSelect]=\"multiSelect\" />\n</mat-dialog-content>\n<mat-dialog-actions align=\"end\">\n    <button\n            data-automation-id=\"category-selector-dialog-cancel-button\"\n            mat-button\n            mat-dialog-close>\n        {{ 'NODE_SELECTOR.CANCEL' | translate }}\n    </button>\n    <button\n            (click)=\"selectCategories()\"\n            [disabled]=\"!categories.length\"\n            color=\"primary\"\n            data-automation-id=\"category-selector-dialog-select-button\"\n            mat-button>\n        {{ 'NODE_SELECTOR.CHOOSE' | 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\nexport * from './alfresco-api.service';\nexport { AlfrescoApiFactory } from './alfresco-api.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\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 { Observable } from 'rxjs';\nimport { Component, DestroyRef, EventEmitter, inject, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport {\n    AbstractControl,\n    FormsModule,\n    ReactiveFormsModule,\n    UntypedFormBuilder,\n    UntypedFormControl,\n    UntypedFormGroup,\n    Validators\n} from '@angular/forms';\nimport { MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { QueriesApi, SiteBodyCreate, SiteEntry, SitePaging } from '@alfresco/js-api';\nimport { NotificationService } from '@alfresco/adf-core';\nimport { debounceTime, finalize, mergeMap } from 'rxjs/operators';\nimport { SitesService } from '../../common/services/sites.service';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { AutoFocusDirective } from '../../directives';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatButtonModule } from '@angular/material/button';\nimport { AlfrescoApiService } from '../../services';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n    selector: 'adf-library-dialog',\n    standalone: true,\n    imports: [\n        CommonModule,\n        MatDialogModule,\n        TranslateModule,\n        ReactiveFormsModule,\n        MatFormFieldModule,\n        MatInputModule,\n        AutoFocusDirective,\n        MatRadioModule,\n        FormsModule,\n        MatButtonModule\n    ],\n    styleUrls: ['./library.dialog.scss'],\n    templateUrl: './library.dialog.html',\n    encapsulation: ViewEncapsulation.None,\n    host: { class: 'adf-library-dialog' }\n})\nexport class LibraryDialogComponent implements OnInit {\n    /** Emitted when an error occurs. */\n    @Output()\n    error: EventEmitter<any> = new EventEmitter<any>();\n\n    /**\n     * Emitted when the new library is created successfully. The\n     * event parameter is a SiteEntry object with the details of the\n     * newly-created library.\n     */\n    @Output()\n    success: EventEmitter<any> = new EventEmitter<any>();\n\n    createTitle = 'LIBRARY.DIALOG.CREATE_TITLE';\n    libraryTitleExists = false;\n    form: UntypedFormGroup;\n    visibilityOption: any;\n    visibilityOptions = [\n        { value: 'PUBLIC', label: 'LIBRARY.VISIBILITY.PUBLIC', disabled: false },\n        { value: 'PRIVATE', label: 'LIBRARY.VISIBILITY.PRIVATE', disabled: false },\n        {\n            value: 'MODERATED',\n            label: 'LIBRARY.VISIBILITY.MODERATED',\n            disabled: false\n        }\n    ];\n    disableCreateButton = false;\n\n    _queriesApi: QueriesApi;\n    get queriesApi(): QueriesApi {\n        this._queriesApi = this._queriesApi ?? new QueriesApi(this.alfrescoApiService.getInstance());\n        return this._queriesApi;\n    }\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    constructor(\n        private alfrescoApiService: AlfrescoApiService,\n        private sitesService: SitesService,\n        private formBuilder: UntypedFormBuilder,\n        private dialog: MatDialogRef<LibraryDialogComponent>,\n        private notificationService: NotificationService\n    ) {}\n\n    ngOnInit() {\n        const validators = {\n            id: [Validators.required, Validators.maxLength(72), this.forbidSpecialCharacters],\n            title: [Validators.required, this.forbidOnlySpaces, Validators.minLength(2), Validators.maxLength(256)],\n            description: [Validators.maxLength(512)]\n        };\n\n        this.form = this.formBuilder.group({\n            title: [null, validators.title],\n            id: [null, validators.id, this.createSiteIdValidator()],\n            description: ['', validators.description]\n        });\n\n        this.visibilityOption = this.visibilityOptions[0].value;\n\n        this.form.controls['title'].valueChanges\n            .pipe(\n                debounceTime(500),\n                mergeMap(\n                    (title) => this.checkLibraryNameExists(title),\n                    (title) => title\n                ),\n                takeUntilDestroyed(this.destroyRef)\n            )\n            .subscribe((title: string) => {\n                if (!this.form.controls['id'].dirty && this.canGenerateId(title)) {\n                    this.form.patchValue({ id: this.sanitize(title.trim()) });\n                    this.form.controls['id'].markAsTouched();\n                }\n            });\n    }\n\n    get title(): string {\n        const { title } = this.form.value;\n\n        return (title || '').trim();\n    }\n\n    get id(): string {\n        const { id } = this.form.value;\n\n        return (id || '').trim();\n    }\n\n    get description(): string {\n        const { description } = this.form.value;\n\n        return (description || '').trim();\n    }\n\n    get visibility(): string {\n        return this.visibilityOption || '';\n    }\n\n    submit() {\n        const { form, dialog } = this;\n\n        if (!form.valid) {\n            return;\n        }\n\n        this.disableCreateButton = true;\n        this.create()\n            .pipe(finalize(() => (this.disableCreateButton = false)))\n            .subscribe(\n                (node: SiteEntry) => {\n                    this.success.emit(node);\n                    dialog.close(node);\n                },\n                (error) => this.handleError(error)\n            );\n    }\n\n    visibilityChangeHandler(event) {\n        this.visibilityOption = event.value;\n    }\n\n    private create(): Observable<SiteEntry> {\n        const { title, id, description, visibility } = this;\n        const siteBody = {\n            id,\n            title,\n            description,\n            visibility\n        } as SiteBodyCreate;\n\n        return this.sitesService.createSite(siteBody);\n    }\n\n    private sanitize(input: string) {\n        return input.replace(/[\\s\\s]+/g, '-').replace(/[^A-Za-z0-9-]/g, '');\n    }\n\n    private canGenerateId(title) {\n        return Boolean(title.replace(/[^A-Za-z0-9-]/g, '').length);\n    }\n\n    private handleError(error: any): any {\n        const errorMessage = 'CORE.MESSAGES.ERRORS.GENERIC';\n\n        try {\n            const {\n                error: { statusCode }\n            } = JSON.parse(error.message);\n\n            if (statusCode === 409) {\n                this.form.controls['id'].setErrors({\n                    message: 'LIBRARY.ERRORS.CONFLICT'\n                });\n            } else {\n                this.notificationService.showError(errorMessage);\n            }\n        } catch {\n            this.notificationService.showError(errorMessage);\n        }\n\n        return error;\n    }\n\n    private async checkLibraryNameExists(libraryTitle: string) {\n        let entries = [];\n\n        try {\n            entries = (await this.findLibraryByTitle(libraryTitle)).list.entries;\n        } catch {\n            entries = [];\n        }\n\n        if (entries.length) {\n            this.libraryTitleExists = entries[0].entry.title.toLowerCase() === libraryTitle.toLowerCase();\n        } else {\n            this.libraryTitleExists = false;\n        }\n    }\n\n    private findLibraryByTitle(libraryTitle: string): Promise<SitePaging> {\n        return this.queriesApi.findSites(libraryTitle, {\n            maxItems: 1,\n            fields: ['title']\n        });\n    }\n\n    private forbidSpecialCharacters({ value }: UntypedFormControl) {\n        if (value === null || value.length === 0) {\n            return null;\n        }\n\n        const validCharacters: RegExp = /[^A-Za-z0-9-]/;\n        const isValid: boolean = !validCharacters.test(value);\n\n        return isValid\n            ? null\n            : {\n                  message: 'LIBRARY.ERRORS.ILLEGAL_CHARACTERS'\n              };\n    }\n\n    private forbidOnlySpaces({ value }: UntypedFormControl) {\n        if (value === null || value.length === 0) {\n            return null;\n        }\n\n        const isValid: boolean = !!(value || '').trim();\n\n        return isValid\n            ? null\n            : {\n                  message: 'LIBRARY.ERRORS.ONLY_SPACES'\n              };\n    }\n\n    private createSiteIdValidator() {\n        let timer;\n\n        return (control: AbstractControl) => {\n            if (timer) {\n                clearTimeout(timer);\n            }\n\n            return new Promise((resolve) => {\n                timer = setTimeout(\n                    () =>\n                        this.sitesService.getSite(control.value).subscribe(\n                            () => resolve({ message: 'LIBRARY.ERRORS.EXISTENT_SITE' }),\n                            () => resolve(null)\n                        ),\n                    300\n                );\n            });\n        };\n    }\n}\n","<h2 mat-dialog-title>{{ createTitle | translate }}</h2>\n\n<mat-dialog-content class=\"adf-library-dialog-content\">\n  <form novalidate [formGroup]=\"form\" (submit)=\"submit()\">\n    <mat-form-field class=\"adf-library-dialog-form-field\">\n      <mat-label>{{ 'LIBRARY.DIALOG.FORM.NAME' | translate }}</mat-label>\n      <input\n        required\n        matInput\n        formControlName=\"title\"\n        autocomplete=\"off\"\n        adf-auto-focus\n      />\n\n      <mat-hint *ngIf=\"libraryTitleExists\">{{\n        'LIBRARY.HINTS.SITE_TITLE_EXISTS' | translate\n      }}</mat-hint>\n      <mat-error *ngIf=\"form.controls['title'].hasError('maxlength')\">\n        {{ 'LIBRARY.ERRORS.TITLE_TOO_LONG' | translate }}\n      </mat-error>\n\n      <mat-error *ngIf=\"form.controls['title'].hasError('minlength')\">\n        {{ 'LIBRARY.ERRORS.TITLE_TOO_SHORT' | translate }}\n      </mat-error>\n\n      <mat-error *ngIf=\"form.controls['title'].errors?.message\">\n        {{ form.controls['title'].errors?.message | translate }}\n      </mat-error>\n    </mat-form-field>\n\n    <mat-form-field class=\"adf-library-dialog-form-field\">\n      <mat-label>{{ 'LIBRARY.DIALOG.FORM.SITE_ID' | translate }}</mat-label>\n      <input\n        required\n        matInput\n        formControlName=\"id\"\n        autocomplete=\"off\"\n      />\n\n      <mat-error *ngIf=\"form.controls['id'].errors?.message\">\n        {{ form.controls['id'].errors?.message | translate }}\n      </mat-error>\n\n      <mat-error *ngIf=\"form.controls['id'].hasError('maxlength')\">\n        {{ 'LIBRARY.ERRORS.ID_TOO_LONG' | translate }}\n      </mat-error>\n    </mat-form-field>\n\n    <mat-form-field class=\"adf-library-dialog-form-field adf-library-dialog-form-field-description\">\n      <mat-label>{{ 'LIBRARY.DIALOG.FORM.DESCRIPTION' | translate }}</mat-label>\n      <textarea\n        matInput\n        rows=\"3\"\n        formControlName=\"description\"\n      ></textarea>\n\n      <mat-error *ngIf=\"form.controls['description'].hasError('maxlength')\">\n        {{ 'LIBRARY.ERRORS.DESCRIPTION_TOO_LONG' | translate }}\n      </mat-error>\n    </mat-form-field>\n\n    <mat-radio-group\n      class=\"adf-library-dialog-radio-group\"\n      [ngModelOptions]=\"{ standalone: true }\"\n      [(ngModel)]=\"visibilityOption\"\n      (change)=\"visibilityChangeHandler($event)\"\n    >\n      <mat-radio-button\n        color=\"primary\"\n        class=\"adf-library-dialog-radio-group-button\"\n        [disabled]=\"option.disabled\"\n        *ngFor=\"let option of visibilityOptions\"\n        [attr.data-automation-id]=\"option.value\"\n        [value]=\"option.value\"\n        [checked]=\"visibilityOption.value === option.value\"\n      >\n        {{ option.label | translate }}\n      </mat-radio-button>\n    </mat-radio-group>\n  </form>\n</mat-dialog-content>\n\n<mat-dialog-actions class=\"adf-action-buttons\">\n  <button class=\"adf-action-button\" mat-button mat-dialog-close data-automation-id=\"cancel-library-id\">\n    {{ 'LIBRARY.DIALOG.CANCEL' | translate }}\n  </button>\n\n  <button\n    color=\"primary\"\n    class=\"adf-action-button\"\n    mat-button\n    (click)=\"submit()\"\n    [disabled]=\"!form.valid || disableCreateButton\"\n    data-automation-id=\"create-library-id\"\n  >\n    {{ 'LIBRARY.DIALOG.CREATE' | 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 { DownloadZipDialogComponent } from './download-zip.dialog';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n    declarations: [DownloadZipDialogComponent],\n    imports: [CommonModule, MatDialogModule, MatProgressBarModule, MatButtonModule, TranslateModule],\n    exports: [DownloadZipDialogComponent]\n})\nexport class DownloadZipDialogModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY 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 { FolderDialogComponent } from './folder/folder.dialog';\nimport { NodeLockDialogComponent } from './node-lock/node-lock.dialog';\nimport { LibraryDialogComponent } from './library/library.dialog';\nimport { DownloadZipDialogModule } from './download-zip/download-zip.dialog.module';\nimport { CategorySelectorDialogComponent } from './category-selector/category-selector.dialog';\n\nexport const CONTENT_DIALOG_DIRECTIVES = [\n    DownloadZipDialogModule,\n    FolderDialogComponent,\n    NodeLockDialogComponent,\n    LibraryDialogComponent,\n    CategorySelectorDialogComponent\n];\n\n/** @deprecated use `..CONTENT_DIALOG_DIRECTIVES` or standalone component imports instead */\n@NgModule({\n    imports: [...CONTENT_DIALOG_DIRECTIVES],\n    exports: [...CONTENT_DIALOG_DIRECTIVES]\n})\nexport class DialogModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 './folder/folder.dialog';\nexport * from './node-lock/node-lock.dialog';\nexport * from './category-selector/category-selector.dialog';\n\nexport * from './dialog.module';\nexport * from './library/library.dialog';\n\nexport * from './download-zip/download-zip.dialog';\nexport * from './download-zip/download-zip.dialog.module';\n\nexport * from './folder/folder-name.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\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 { inject, Injectable } from '@angular/core';\nimport { Node } from '@alfresco/js-api';\nimport { CardViewDateItemModel, CardViewItemMatchValidator, CardViewTextItemModel, FileSizePipe, TranslationService } from '@alfresco/adf-core';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class BasicPropertiesService {\n    private translationService = inject(TranslationService);\n\n    getProperties(node: Node) {\n        const sizeInBytes = node.content ? node.content.sizeInBytes : '';\n        const mimeTypeName = node.content ? node.content.mimeTypeName : '';\n        const author = node.properties ? node.properties['cm:author'] : '';\n        const description = node.properties ? node.properties['cm:description'] : '';\n        const title = node.properties ? node.properties['cm:title'] : '';\n\n        return [\n            new CardViewTextItemModel({\n                label: 'CORE.METADATA.BASIC.NAME',\n                value: node.name,\n                key: 'properties.cm:name',\n                editable: true,\n                validators: [new CardViewItemMatchValidator('[\\\\/\\\\*\\\\\\\\\"\\\\\\\\:|?<>]')]\n            }),\n            new CardViewTextItemModel({\n                label: 'CORE.METADATA.BASIC.TITLE',\n                value: title,\n                key: 'properties.cm:title',\n                editable: true\n            }),\n            new CardViewTextItemModel({\n                label: 'CORE.METADATA.BASIC.CREATOR',\n                value: node.createdByUser.displayName,\n                key: 'createdByUser.displayName',\n                editable: false\n            }),\n            new CardViewDateItemModel({\n                label: 'CORE.METADATA.BASIC.CREATED_DATE',\n                value: node.createdAt,\n                key: 'createdAt',\n                editable: false,\n                format: 'mediumDate'\n            }),\n            new CardViewTextItemModel({\n                label: 'CORE.METADATA.BASIC.SIZE',\n                value: sizeInBytes,\n                key: 'content.sizeInBytes',\n                pipes: [{ pipe: new FileSizePipe(this.translationService) }],\n                editable: false\n            }),\n            new CardViewTextItemModel({\n                label: 'CORE.METADATA.BASIC.MODIFIER',\n                value: node.modifiedByUser.displayName,\n                key: 'modifiedByUser.displayName',\n                editable: false\n            }),\n            new CardViewDateItemModel({\n                label: 'CORE.METADATA.BASIC.MODIFIED_DATE',\n                value: node.modifiedAt,\n                key: 'modifiedAt',\n                editable: false,\n                format: 'mediumDate'\n            }),\n            new CardViewTextItemModel({\n                label: 'CORE.METADATA.BASIC.MIMETYPE',\n                value: mimeTypeName,\n                key: 'content.mimeTypeName',\n                editable: false\n            }),\n            new CardViewTextItemModel({\n                label: 'CORE.METADATA.BASIC.AUTHOR',\n                value: author,\n                key: 'properties.cm:author',\n                editable: true\n            }),\n            new CardViewTextItemModel({\n                label: 'CORE.METADATA.BASIC.DESCRIPTION',\n                value: description,\n                key: 'properties.cm:description',\n                multiline: true,\n                editable: true\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 { inject, Injectable, Injector, runInInjectionContext } from '@angular/core';\nimport {\n    AppConfigService,\n    CardViewBoolItemModel,\n    CardViewDateItemModel,\n    CardViewDatetimeItemModel,\n    CardViewFloatItemModel,\n    CardViewIntItemModel,\n    CardViewItem,\n    CardViewItemProperties,\n    CardViewLongItemModel,\n    CardViewSelectItemModel,\n    CardViewTextItemModel,\n    DecimalNumberPipe,\n    LogService,\n    MultiValuePipe,\n    UserPreferencesService\n} from '@alfresco/adf-core';\nimport { CardViewGroup, OrganisedPropertyGroup, Property } from '../interfaces/content-metadata.interfaces';\nimport { of } from 'rxjs';\nimport { Constraint, Definition, Property as PropertyBase } from '@alfresco/js-api';\n\nconst D_TEXT = 'd:text';\nconst D_MLTEXT = 'd:mltext';\nconst D_DATE = 'd:date';\nconst D_DATETIME = 'd:datetime';\nconst D_INT = 'd:int';\nconst D_LONG = 'd:long';\nconst D_FLOAT = 'd:float';\nconst D_DOUBLE = 'd:double';\nconst D_BOOLEAN = 'd:boolean';\n\nexport const RECOGNISED_ECM_TYPES = [D_TEXT, D_MLTEXT, D_DATE, D_DATETIME, D_INT, D_LONG, D_FLOAT, D_DOUBLE, D_BOOLEAN];\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class PropertyGroupTranslatorService {\n    private userPreferenceService = inject(UserPreferencesService);\n    private appConfig = inject(AppConfigService);\n    private logService = inject(LogService);\n\n    valueSeparator: string;\n\n    private readonly injector = inject(Injector);\n\n    constructor() {\n        this.valueSeparator = this.appConfig.get<string>('content-metadata.multi-value-pipe-separator');\n    }\n\n    public translateToCardViewGroups(propertyGroups: OrganisedPropertyGroup[], propertyValues, definition: Definition): CardViewGroup[] {\n        return propertyGroups.map((propertyGroup) => {\n            const translatedPropertyGroup: any = Object.assign({}, propertyGroup);\n            translatedPropertyGroup.properties = this.translateArray(propertyGroup.properties, propertyValues, definition);\n            translatedPropertyGroup.editable = translatedPropertyGroup.properties.some((property) => property.editable);\n            return translatedPropertyGroup;\n        });\n    }\n\n    public translateProperty(property: PropertyBase, startValue?: any, allowEditing: boolean = false): CardViewItem {\n        this.checkECMTypeValidity(property.dataType);\n\n        const prefix = 'properties.';\n\n        const propertyDefinition: CardViewItemProperties = {\n            label: property.title || property.id,\n            value: startValue ? startValue : property.defaultValue,\n            key: `${prefix}${property.id}`,\n            default: property.defaultValue,\n            editable: property.isProtected ? false : allowEditing,\n            constraints: property?.constraints\n        };\n\n        return this.transform(propertyDefinition, property.dataType, property.isMultiValued);\n    }\n\n    private translateArray(properties: Property[], propertyValues: any, definition: Definition): CardViewItem[] {\n        return properties.map((property) => this.translate(property, propertyValues, this.getPropertyConstraints(property.name, definition)));\n    }\n\n    private translate(property: Property, propertyValues: any, constraints: Constraint[]): CardViewItem {\n        let propertyValue: any;\n        if (propertyValues && !this.isEmpty(propertyValues[property.name])) {\n            propertyValue = propertyValues[property.name];\n        }\n\n        this.checkECMTypeValidity(property.dataType);\n\n        const prefix = 'properties.';\n\n        const propertyDefinition: CardViewItemProperties = {\n            label: property.title || property.name,\n            value: propertyValue,\n            key: `${prefix}${property.name}`,\n            default: property.defaultValue,\n            editable: property.protected ? false : property.editable !== undefined ? property.editable : true,\n            constraints\n        };\n\n        return this.transform(propertyDefinition, property.dataType, property.multiValued);\n    }\n\n    private transform(propertyDefinition: CardViewItemProperties, dataType: string, isMultiValued: boolean): CardViewItem {\n        let cardViewItemProperty: CardViewItem;\n\n        if (this.isListOfValues(propertyDefinition.constraints)) {\n            const options = propertyDefinition.constraints[0].parameters.allowedValues.map((value) => ({ key: value, label: value }));\n            const properties = Object.assign(propertyDefinition, { options$: of(options) });\n\n            cardViewItemProperty = new CardViewSelectItemModel(properties);\n        } else {\n            switch (dataType) {\n                case D_MLTEXT:\n                    cardViewItemProperty = new CardViewTextItemModel(\n                        Object.assign(propertyDefinition, {\n                            multiline: true\n                        })\n                    );\n                    break;\n\n                case D_INT:\n                    cardViewItemProperty = new CardViewIntItemModel(\n                        Object.assign(propertyDefinition, {\n                            multivalued: isMultiValued,\n                            pipes: [{ pipe: new MultiValuePipe(), params: [this.valueSeparator] }]\n                        })\n                    );\n                    break;\n\n                case D_LONG:\n                    cardViewItemProperty = new CardViewLongItemModel(\n                        Object.assign(propertyDefinition, {\n                            multivalued: isMultiValued,\n                            pipes: [{ pipe: new MultiValuePipe(), params: [this.valueSeparator] }]\n                        })\n                    );\n                    break;\n\n                case D_FLOAT:\n                case D_DOUBLE:\n                    cardViewItemProperty = new CardViewFloatItemModel(\n                        Object.assign(propertyDefinition, {\n                            multivalued: isMultiValued,\n                            pipes: [{ pipe: this.getDecimalNumberPipe() }, { pipe: new MultiValuePipe(), params: [this.valueSeparator] }]\n                        })\n                    );\n                    break;\n\n                case D_DATE:\n                    cardViewItemProperty = new CardViewDateItemModel(\n                        Object.assign(propertyDefinition, {\n                            multivalued: isMultiValued,\n                            pipes: [{ pipe: new MultiValuePipe(), params: [this.valueSeparator] }]\n                        })\n                    );\n                    break;\n\n                case D_DATETIME:\n                    cardViewItemProperty = new CardViewDatetimeItemModel(\n                        Object.assign(propertyDefinition, {\n                            multivalued: isMultiValued,\n                            pipes: [{ pipe: new MultiValuePipe(), params: [this.valueSeparator] }]\n                        })\n                    );\n                    break;\n\n                case D_BOOLEAN:\n                    cardViewItemProperty = new CardViewBoolItemModel(propertyDefinition);\n                    break;\n\n                case D_TEXT:\n                default:\n                    cardViewItemProperty = new CardViewTextItemModel(\n                        Object.assign(propertyDefinition, {\n                            multivalued: isMultiValued,\n                            multiline: isMultiValued,\n                            pipes: [{ pipe: new MultiValuePipe(), params: [this.valueSeparator] }]\n                        })\n                    );\n            }\n        }\n\n        return cardViewItemProperty;\n    }\n\n    private isListOfValues(constraint: Constraint[]): boolean {\n        return constraint?.[0]?.type === 'LIST';\n    }\n\n    private getPropertyConstraints(propertyName: string, definition: Definition): Constraint[] {\n        return definition?.properties.find((item) => item.id === propertyName)?.constraints ?? [];\n    }\n\n    private checkECMTypeValidity(ecmPropertyType: string) {\n        if (RECOGNISED_ECM_TYPES.indexOf(ecmPropertyType) === -1) {\n            this.logService.error(`Unknown type for mapping: ${ecmPropertyType}`);\n        }\n    }\n\n    private isEmpty(value: any): boolean {\n        return value === undefined || value === null || value === '';\n    }\n\n    private getDecimalNumberPipe(): DecimalNumberPipe {\n        let decimalNumberPipe: DecimalNumberPipe;\n        runInInjectionContext(this.injector, () => {\n            decimalNumberPipe = new DecimalNumberPipe(this.userPreferenceService, this.appConfig);\n        });\n        return decimalNumberPipe;\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 { PropertyGroup, Property, PropertyGroupContainer } from '../../interfaces/content-metadata.interfaces';\n\nconst emptyGroup = {\n    properties: {}\n};\n\nconst convertObjectToArray = (object: any): Property[] => Object.keys(object).map((key) => object[key]);\nexport const getGroup = (propertyGroups: PropertyGroupContainer, groupName: string): PropertyGroup | undefined => propertyGroups[groupName];\n\nexport const getProperty = (propertyGroups: PropertyGroupContainer, groupName: string, propertyName: string): Property | Property[] | undefined => {\n    const groupDefinition = getGroup(propertyGroups, groupName) || emptyGroup;\n    let propertyDefinitions;\n\n    if (propertyName === '*') {\n        propertyDefinitions = convertObjectToArray(groupDefinition.properties);\n    } else {\n        propertyDefinitions = groupDefinition.properties[propertyName];\n    }\n\n    return propertyDefinitions;\n};\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ContentMetadataConfig, OrganisedPropertyGroup, PropertyGroupContainer, Property } from '../../interfaces/content-metadata.interfaces';\nimport { getGroup, getProperty } from './property-group-reader';\n\nexport class AspectOrientedConfigService implements ContentMetadataConfig {\n    constructor(private config: any) {}\n\n    public isGroupAllowed(groupName: string): boolean {\n        if (this.isIncludeAllEnabled()) {\n            return true;\n        }\n        const groupNames = Object.keys(this.config);\n        return groupNames.indexOf(groupName) !== -1;\n    }\n\n    public reorganiseByConfig(propertyGroups: PropertyGroupContainer): OrganisedPropertyGroup[] {\n        const aspects = this.config;\n        const aspectNames = Object.keys(aspects);\n\n        return aspectNames\n            .reduce((groupAccumulator, aspectName) => {\n                const newGroup = this.getOrganisedPropertyGroup(propertyGroups, aspectName);\n                return groupAccumulator.concat(newGroup);\n            }, [])\n            .filter((organisedPropertyGroup) => organisedPropertyGroup.properties.length > 0);\n    }\n\n    public appendAllPreset(propertyGroups: PropertyGroupContainer): OrganisedPropertyGroup[] {\n        const groups = Object.keys(propertyGroups).map((groupName) => {\n            const propertyGroup = propertyGroups[groupName];\n            const properties = propertyGroup.properties;\n\n            if (this.isAspectReadOnly(groupName)) {\n                Object.keys(properties).map((propertyName) => this.setReadOnlyProperty(properties[propertyName]));\n            }\n\n            return Object.assign({}, propertyGroup, {\n                properties: Object.keys(properties).map((propertyName) => {\n                    if (this.isPropertyReadOnly(propertyName)) {\n                        this.setReadOnlyProperty(properties[propertyName]);\n                    }\n                    return properties[propertyName];\n                })\n            });\n        });\n\n        return groups;\n    }\n\n    private setReadOnlyProperty(property: Property) {\n        property.editable = false;\n    }\n\n    private isPropertyReadOnly(propertyName: string): boolean {\n        const readOnlyAspects = this.config.readOnlyProperties;\n\n        if (Array.isArray(readOnlyAspects)) {\n            return readOnlyAspects.includes(propertyName);\n        } else {\n            return readOnlyAspects === propertyName;\n        }\n    }\n\n    private isAspectReadOnly(propertyGroupName: string): boolean {\n        const readOnlyAspects = this.config.readOnlyAspects;\n\n        if (Array.isArray(readOnlyAspects)) {\n            return readOnlyAspects.includes(propertyGroupName);\n        } else {\n            return readOnlyAspects === propertyGroupName;\n        }\n    }\n\n    public filterExcludedPreset(propertyGroups: OrganisedPropertyGroup[]): OrganisedPropertyGroup[] {\n        if (this.config.exclude) {\n            return propertyGroups.filter((preset) => !this.config.exclude.includes(preset.name));\n        }\n        return propertyGroups;\n    }\n\n    public isIncludeAllEnabled() {\n        return this.config.includeAll;\n    }\n\n    private getOrganisedPropertyGroup(propertyGroups, aspectName) {\n        const group = getGroup(propertyGroups, aspectName);\n        let newGroup = [];\n\n        if (group) {\n            const aspectProperties = this.config[aspectName];\n            let properties;\n\n            if (aspectProperties === '*') {\n                properties = getProperty(propertyGroups, aspectName, aspectProperties);\n            } else {\n                properties = aspectProperties\n                    .map((propertyName) => getProperty(propertyGroups, aspectName, propertyName))\n                    .filter((props) => props !== undefined);\n            }\n\n            newGroup = [{ title: group.title, properties }];\n        }\n\n        return newGroup;\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 { ContentMetadataConfig, OrganisedPropertyGroup, PropertyGroupContainer } from '../../interfaces/content-metadata.interfaces';\n\nexport class IndifferentConfigService implements ContentMetadataConfig {\n    isGroupAllowed(): boolean {\n        return true;\n    }\n\n    reorganiseByConfig(propertyGroups: PropertyGroupContainer): OrganisedPropertyGroup[] {\n        return Object.keys(propertyGroups).map((groupName) => {\n            const propertyGroup = propertyGroups[groupName];\n            const properties = propertyGroup.properties;\n\n            return Object.assign({}, propertyGroup, {\n                properties: Object.keys(properties).map((propertyName) => properties[propertyName])\n            });\n        });\n    }\n\n    filterExcludedPreset(propertyGroups: OrganisedPropertyGroup[]): OrganisedPropertyGroup[] {\n        return propertyGroups;\n    }\n\n    appendAllPreset(): OrganisedPropertyGroup[] {\n        return [];\n    }\n\n    isIncludeAllEnabled(): boolean {\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 {\n    ContentMetadataConfig,\n    LayoutOrientedConfigItem,\n    OrganisedPropertyGroup,\n    PropertyGroupContainer,\n    Property\n} from '../../interfaces/content-metadata.interfaces';\nimport { getProperty } from './property-group-reader';\n\nexport class LayoutOrientedConfigService implements ContentMetadataConfig {\n    constructor(private config: any) {}\n\n    public isGroupAllowed(groupName: string): boolean {\n        if (this.isIncludeAllEnabled()) {\n            return true;\n        }\n        return this.getMatchingGroups(groupName).length > 0;\n    }\n\n    public reorganiseByConfig(propertyGroups: PropertyGroupContainer): OrganisedPropertyGroup[] {\n        const layoutBlocks = this.config.filter((itemsGroup) => itemsGroup.items);\n\n        const organisedPropertyGroup = layoutBlocks.map((layoutBlock) => {\n            const flattenedItems = this.flattenItems(layoutBlock.items);\n            const properties = flattenedItems.reduce((props, explodedItem) => {\n                const isProperty = typeof explodedItem.property === 'object';\n                const propertyName = isProperty ? explodedItem.property.name : explodedItem.property;\n                let property = getProperty(propertyGroups, explodedItem.groupName, propertyName) || [];\n                if (isProperty) {\n                    property = this.setPropertyTitle(property, explodedItem.property);\n                }\n                property = this.setEditableProperty(property, explodedItem);\n                return props.concat(property);\n            }, []);\n\n            return {\n                title: layoutBlock.title,\n                properties\n            };\n        });\n\n        return organisedPropertyGroup;\n    }\n\n    public appendAllPreset(propertyGroups: PropertyGroupContainer): OrganisedPropertyGroup[] {\n        return Object.keys(propertyGroups).map((groupName) => {\n            const propertyGroup = propertyGroups[groupName];\n            const properties = propertyGroup.properties;\n\n            return Object.assign({}, propertyGroup, {\n                properties: Object.keys(properties).map((propertyName) => properties[propertyName])\n            });\n        });\n    }\n\n    public filterExcludedPreset(propertyGroups: OrganisedPropertyGroup[]): OrganisedPropertyGroup[] {\n        let excludedConfig = this.config\n            .map((config) => config.exclude)\n            .filter((exclude) => exclude !== undefined)\n            .flat();\n\n        if (excludedConfig === undefined) {\n            excludedConfig = [];\n        } else if (typeof excludedConfig === 'string') {\n            excludedConfig = [excludedConfig];\n        }\n\n        return propertyGroups.filter((props) => !excludedConfig.includes(props.name));\n    }\n\n    public isIncludeAllEnabled() {\n        const includeAllProperty = this.config.map((config) => config.includeAll).find((includeAll) => includeAll !== undefined);\n\n        return includeAllProperty !== undefined ? includeAllProperty : false;\n    }\n\n    private setEditableProperty(propertyGroup: Property | Property[], itemConfig): Property | Property[] {\n        if (Array.isArray(propertyGroup)) {\n            propertyGroup.forEach((property) => (property.editable = itemConfig.editable !== undefined ? itemConfig.editable : true));\n        } else {\n            propertyGroup.editable = itemConfig.editable !== undefined ? itemConfig.editable : true;\n        }\n\n        return propertyGroup;\n    }\n\n    private setPropertyTitle(item: Property | Property[], property: Property): Property | Property[] {\n        if (!Array.isArray(item)) {\n            return { ...item, ...(item.name === property.name && !!property.title && { title: property.title }) };\n        }\n        return item;\n    }\n\n    private flattenItems(items) {\n        return items.reduce((accumulator, item) => {\n            const properties = Array.isArray(item.properties) ? item.properties : [item.properties];\n            const flattenedProperties = properties.map((property) => ({\n                groupName: item.aspect || item.type,\n                property,\n                editable: item.editable\n            }));\n\n            return accumulator.concat(flattenedProperties);\n        }, []);\n    }\n\n    private getMatchingGroups(groupName: string): LayoutOrientedConfigItem[] {\n        return this.config\n            .map((layoutBlock) => layoutBlock.items)\n            .reduce((accumulator, items) => accumulator.concat(items), [])\n            .filter((item) => item.aspect === groupName || item.type === groupName);\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 { AppConfigService, LogService } from '@alfresco/adf-core';\nimport { AspectOrientedConfigService } from './aspect-oriented-config.service';\nimport { IndifferentConfigService } from './indifferent-config.service';\nimport { LayoutOrientedConfigService } from './layout-oriented-config.service';\nimport { PresetConfig, ContentMetadataConfig } from '../../interfaces/content-metadata.interfaces';\n\nconst INDIFFERENT_PRESET = '*';\nconst DEFAULT_PRESET_NAME = 'default';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class ContentMetadataConfigFactory {\n    constructor(private appConfigService: AppConfigService, private logService: LogService) {}\n\n    public get(presetName: string = 'default'): ContentMetadataConfig {\n        let presetConfig: PresetConfig;\n        try {\n            presetConfig = this.appConfigService.config['content-metadata'].presets[presetName];\n        } catch {\n            if (presetName !== DEFAULT_PRESET_NAME) {\n                this.logService.error(`No content-metadata preset for: ${presetName}`);\n            }\n            presetConfig = INDIFFERENT_PRESET;\n        }\n\n        return this.createConfig(presetConfig);\n    }\n\n    public createConfig(presetConfig: PresetConfig): ContentMetadataConfig {\n        let config: ContentMetadataConfig;\n\n        if (this.isLayoutOrientedPreset(presetConfig)) {\n            config = new LayoutOrientedConfigService(presetConfig);\n        } else if (this.isAspectOrientedPreset(presetConfig)) {\n            config = new AspectOrientedConfigService(presetConfig);\n        } else {\n            config = new IndifferentConfigService();\n        }\n\n        Object.freeze(config);\n        return config;\n    }\n\n    private isAspectOrientedPreset(presetConfig: PresetConfig): boolean {\n        return this.isObject(presetConfig);\n    }\n\n    private isLayoutOrientedPreset(presetConfig: PresetConfig): boolean {\n        return Array.isArray(presetConfig);\n    }\n\n    private isObject(x: any): boolean {\n        return x != null && typeof x === 'object';\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 { AlfrescoApiService } from '../../services/alfresco-api.service';\nimport { Observable, defer, forkJoin } from 'rxjs';\nimport { PropertyGroup, PropertyGroupContainer } from '../interfaces/content-metadata.interfaces';\nimport { map } from 'rxjs/operators';\nimport { ClassesApi } from '@alfresco/js-api';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class PropertyDescriptorsService {\n    private _classesApi: ClassesApi;\n    get classesApi(): ClassesApi {\n        this._classesApi = this._classesApi ?? new ClassesApi(this.alfrescoApiService.getInstance());\n        return this._classesApi;\n    }\n\n    constructor(private alfrescoApiService: AlfrescoApiService) {}\n\n    load(groupNames: string[]): Observable<PropertyGroupContainer> {\n        const groupFetchStreams = groupNames\n            .map((groupName) => groupName.replace(':', '_'))\n            .map((groupName) => defer(() => this.classesApi.getClass(groupName)));\n\n        return forkJoin(groupFetchStreams).pipe(map(this.convertToObject));\n    }\n\n    private convertToObject(propertyGroupsArray: PropertyGroup[]): PropertyGroupContainer {\n        return propertyGroupsArray.reduce(\n            (propertyGroups, propertyGroup) =>\n                Object.assign({}, propertyGroups, {\n                    [propertyGroup.name]: propertyGroup\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 { TypeEntry, TypePaging, TypesApi } from '@alfresco/js-api';\nimport { Injectable } from '@angular/core';\nimport { AlfrescoApiService } from '../services/alfresco-api.service';\nimport { from, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class ContentTypeService {\n    private _typesApi: TypesApi;\n    get typesApi(): TypesApi {\n        this._typesApi = this._typesApi ?? new TypesApi(this.alfrescoApiService.getInstance());\n        return this._typesApi;\n    }\n\n    constructor(private alfrescoApiService: AlfrescoApiService) {}\n\n    getContentTypeByPrefix(prefixedType: string): Observable<TypeEntry> {\n        return from(this.typesApi.getType(prefixedType));\n    }\n\n    getContentTypeChildren(nodeType: string): Observable<TypeEntry[]> {\n        const where = `(parentId in ('${nodeType}') and not namespaceUri matches('http://www.alfresco.*'))`;\n        const opts: any = {\n            where,\n            include: ['properties']\n        };\n        return from(this.typesApi.listTypes(opts)).pipe(map((result: TypePaging) => result.list.entries));\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 { TypeEntry } from '@alfresco/js-api';\nimport { Component, Inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { ContentTypeDialogComponentData } from './content-type-metadata.interface';\nimport { ContentTypeService } from './content-type.service';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n    selector: 'adf-content-type-dialog',\n    standalone: true,\n    imports: [CommonModule, MatDialogModule, TranslateModule, MatExpansionModule, MatTableModule, MatButtonModule],\n    templateUrl: './content-type-dialog.component.html',\n    styleUrls: ['./content-type-dialog.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class ContentTypeDialogComponent implements OnInit {\n    title: string;\n    description: string;\n    nodeType: string;\n    confirmMessage: string;\n\n    currentContentType: TypeEntry;\n    typeProperties: any[] = [];\n\n    propertyColumns: string[] = ['name', 'title', 'dataType'];\n\n    constructor(\n        private dialog: MatDialogRef<ContentTypeDialogComponent>,\n        @Inject(MAT_DIALOG_DATA) public data: ContentTypeDialogComponentData,\n        private contentTypeService: ContentTypeService\n    ) {\n        this.title = data.title;\n        this.description = data.description;\n        this.confirmMessage = data.confirmMessage;\n        this.nodeType = data.nodeType;\n\n        this.contentTypeService.getContentTypeByPrefix(this.nodeType).subscribe((contentTypeEntry) => {\n            this.currentContentType = contentTypeEntry;\n            this.typeProperties = this.currentContentType.entry.properties.filter((property) =>\n                property.id.startsWith(this.currentContentType.entry.model.namespacePrefix)\n            );\n        });\n    }\n\n    ngOnInit() {\n        this.dialog.backdropClick().subscribe(() => {\n            this.close();\n        });\n    }\n\n    close() {\n        this.data.select.complete();\n    }\n\n    onCancel() {\n        this.close();\n    }\n\n    onApply() {\n        this.data.select.next(true);\n        this.close();\n    }\n}\n","<div class=\"adf-content-type-dialog\">\n    <h2 mat-dialog-title class=\"adf-content-type-dialog-title\" data-automation-id=\"content-type-dialog-title\">{{title |\n        translate}}</h2>\n    <mat-dialog-content class=\"mat-typography adf-content-type-dialog-content\"\n        data-automation-id=\"content-type-dialog-content\">\n        <h4 data-automation-id=\"content-type-dialog-description\">{{description | translate}}</h4>\n        <p data-automation-id=\"content-type-dialog-confirm-message\">{{confirmMessage | translate}}</p>\n        <mat-accordion>\n            <mat-expansion-panel class=\"adf-content-type-accordion\">\n                <mat-expansion-panel-header>\n                    <mat-panel-title>\n                        {{'CORE.METADATA.CONTENT_TYPE.DIALOG.VIEW_DETAILS' | translate}}\n                    </mat-panel-title>\n                </mat-expansion-panel-header>\n                <table mat-table [dataSource]=\"typeProperties\"\n                    *ngIf=\"typeProperties?.length > 0\" class=\"adf-content-type-table\">\n                    <ng-container matColumnDef=\"name\">\n                        <th mat-header-cell *matHeaderCellDef> {{'CORE.METADATA.CONTENT_TYPE.DIALOG.PROPERTY.NAME' |\n                            translate}} </th>\n                        <td mat-cell *matCellDef=\"let property\"> {{property.id}} </td>\n                    </ng-container>\n                    <ng-container matColumnDef=\"title\">\n                        <th mat-header-cell *matHeaderCellDef>\n                            {{'CORE.METADATA.CONTENT_TYPE.DIALOG.PROPERTY.DESCRIPTION' | translate}} </th>\n                        <td mat-cell *matCellDef=\"let property\"> {{property.title}} </td>\n                    </ng-container>\n                    <ng-container matColumnDef=\"dataType\">\n                        <th mat-header-cell *matHeaderCellDef> {{'CORE.METADATA.CONTENT_TYPE.DIALOG.PROPERTY.DATA_TYPE'\n                            | translate}} </th>\n                        <td mat-cell *matCellDef=\"let property\"> {{property.dataType}} </td>\n                    </ng-container>\n                    <tr mat-header-row *matHeaderRowDef=\"propertyColumns\"></tr>\n                    <tr mat-row *matRowDef=\"let row; columns: propertyColumns;\"></tr>\n                </table>\n            </mat-expansion-panel>\n        </mat-accordion>\n    </mat-dialog-content>\n    <mat-dialog-actions align=\"end\">\n        <button mat-button mat-dialog-close\n            id=\"content-type-dialog-actions-cancel\">{{'CORE.METADATA.CONTENT_TYPE.DIALOG.CANCEL' | translate }}</button>\n        <button mat-button class=\"adf-content-type-dialog-apply-button\" id=\"content-type-dialog-apply-button\"\n            [mat-dialog-close]=\"true\" (click)=\"onApply()\">{{'CORE.METADATA.CONTENT_TYPE.DIALOG.APPLY' |\n            translate}}</button>\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\nimport { Injectable } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { CardViewItem, CardViewSelectItemModel, CardViewSelectItemOption, CardViewTextItemModel } from '@alfresco/adf-core';\nimport { Observable, of, Subject, zip } from 'rxjs';\nimport { distinctUntilChanged, map } from 'rxjs/operators';\nimport { ContentTypeDialogComponent } from '../../content-type/content-type-dialog.component';\nimport { ContentTypeDialogComponentData } from '../../content-type/content-type-metadata.interface';\nimport { ContentTypeService } from '../../content-type/content-type.service';\nimport { Node, Property, TypeEntry } from '@alfresco/js-api';\nimport { PropertyGroupTranslatorService } from './property-groups-translator.service';\nimport { VersionCompatibilityService } from '../../version-compatibility/version-compatibility.service';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class ContentTypePropertiesService {\n    constructor(\n        private contentTypeService: ContentTypeService,\n        private dialog: MatDialog,\n        private versionCompatibilityService: VersionCompatibilityService,\n        private propertyGroupTranslatorService: PropertyGroupTranslatorService\n    ) {}\n\n    getContentTypeCardItem(node: Node): Observable<CardViewItem[]> {\n        if (this.versionCompatibilityService.isVersionSupported('7')) {\n            return this.contentTypeService.getContentTypeByPrefix(node.nodeType).pipe(\n                map((contentType) => {\n                    const contentTypesOptions$ = this.getContentTypesAsSelectOption(contentType);\n                    const contentTypeCard = this.buildContentTypeSelectCardModel(contentType.entry.id, contentTypesOptions$);\n                    const filteredProperties = this.getContentTypeSpecificProperties(contentType);\n                    const propertiesCard = this.buildCardItemsFromPropertyList(filteredProperties, node.properties);\n                    return [contentTypeCard, ...propertiesCard];\n                })\n            );\n        } else {\n            return of([this.buildContentTypeTextCardModel(node.nodeType)]);\n        }\n    }\n\n    buildCardItemsFromPropertyList(properties: Property[], currentProperties: any): CardViewItem[] {\n        return properties.map((property) => {\n            const propertyValue = currentProperties ? currentProperties[property.id] : null;\n            return this.buildCardItemFromProperty(property, propertyValue);\n        });\n    }\n\n    private buildCardItemFromProperty(property: Property, propertyValue: any): CardViewItem {\n        return this.propertyGroupTranslatorService.translateProperty(property, propertyValue, true);\n    }\n\n    private getContentTypeSpecificProperties(contentType: TypeEntry): Property[] {\n        return contentType.entry.properties.filter((property) => property.id.startsWith(contentType.entry.model.namespacePrefix));\n    }\n\n    private buildContentTypeTextCardModel(currentValue: string): CardViewTextItemModel {\n        const contentTypeCard = new CardViewTextItemModel({\n            label: 'CORE.METADATA.BASIC.CONTENT_TYPE',\n            value: currentValue,\n            key: 'nodeType',\n            editable: false\n        });\n\n        return contentTypeCard;\n    }\n\n    private buildContentTypeSelectCardModel(\n        currentValue: string,\n        options$: Observable<CardViewSelectItemOption<string>[]>\n    ): CardViewSelectItemModel<string> {\n        const contentTypeCard = new CardViewSelectItemModel({\n            label: 'CORE.METADATA.BASIC.CONTENT_TYPE',\n            value: currentValue,\n            key: 'nodeType',\n            editable: true,\n            options$,\n            displayNoneOption: false\n        });\n\n        return contentTypeCard;\n    }\n\n    private getContentTypesAsSelectOption(currentType: TypeEntry): Observable<CardViewSelectItemOption<string>[]> {\n        const childrenTypes$ = this.contentTypeService.getContentTypeChildren(currentType.entry.id);\n        return zip(childrenTypes$, of(currentType)).pipe(\n            distinctUntilChanged(),\n            map(([contentTypesEntries, currentContentType]) => {\n                const updatedTypes = this.appendCurrentType(currentContentType, contentTypesEntries);\n                return updatedTypes.map((contentType) => ({ key: contentType.entry.id, label: contentType.entry.title ?? contentType.entry.id }));\n            })\n        );\n    }\n\n    private appendCurrentType(currentType: TypeEntry, contentTypesEntries: TypeEntry[]): TypeEntry[] {\n        const resultTypes = [...contentTypesEntries];\n        const currentTypePresent = contentTypesEntries.find((type) => type.entry.id === currentType.entry.id);\n        if (!currentTypePresent) {\n            resultTypes.push(currentType);\n        }\n        return resultTypes;\n    }\n\n    openContentTypeDialogConfirm(nodeType): Observable<boolean> {\n        const select = new Subject<boolean>();\n        select.subscribe({\n            complete: this.close.bind(this)\n        });\n\n        const data: ContentTypeDialogComponentData = {\n            title: 'CORE.METADATA.CONTENT_TYPE.DIALOG.TITLE',\n            description: 'CORE.METADATA.CONTENT_TYPE.DIALOG.DESCRIPTION',\n            confirmMessage: 'CORE.METADATA.CONTENT_TYPE.DIALOG.CONFIRM',\n            select,\n            nodeType\n        };\n\n        this.openDialog(data, 'adf-content-type-dialog', '600px');\n        return select;\n    }\n\n    close() {\n        this.dialog.closeAll();\n    }\n\n    private openDialog(data: ContentTypeDialogComponentData, panelClass: string, width: string) {\n        this.dialog.open(ContentTypeDialogComponent, {\n            data,\n            panelClass,\n            width,\n            disableClose: true\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 } from '@angular/core';\nimport { Node } from '@alfresco/js-api';\nimport { BasicPropertiesService } from './basic-properties.service';\nimport { Observable, of, iif, Subject } from 'rxjs';\nimport { PropertyGroupTranslatorService } from './property-groups-translator.service';\nimport { CardViewItem } from '@alfresco/adf-core';\nimport { CardViewGroup, OrganisedPropertyGroup, PresetConfig } from '../interfaces/content-metadata.interfaces';\nimport { ContentMetadataConfigFactory } from './config/content-metadata-config.factory';\nimport { PropertyDescriptorsService } from './property-descriptors.service';\nimport { map, switchMap } from 'rxjs/operators';\nimport { ContentTypePropertiesService } from './content-type-property.service';\n@Injectable({\n    providedIn: 'root'\n})\nexport class ContentMetadataService {\n    error = new Subject<{ statusCode: number; message: string }>();\n\n    constructor(\n        private basicPropertiesService: BasicPropertiesService,\n        private contentMetadataConfigFactory: ContentMetadataConfigFactory,\n        private propertyGroupTranslatorService: PropertyGroupTranslatorService,\n        private propertyDescriptorsService: PropertyDescriptorsService,\n        private contentTypePropertyService: ContentTypePropertiesService\n    ) {}\n\n    getBasicProperties(node: Node): Observable<CardViewItem[]> {\n        return of(this.basicPropertiesService.getProperties(node));\n    }\n\n    getContentTypeProperty(node: Node): Observable<CardViewItem[]> {\n        return this.contentTypePropertyService.getContentTypeCardItem(node);\n    }\n\n    openConfirmDialog(changedProperties): Observable<any> {\n        return this.contentTypePropertyService.openContentTypeDialogConfirm(changedProperties.nodeType);\n    }\n\n    getGroupedProperties(node: Node, preset: string | PresetConfig = 'default'): Observable<CardViewGroup[]> {\n        let groupedProperties = of([]);\n\n        if (node.aspectNames) {\n            let contentMetadataConfig;\n            if (typeof preset === 'string') {\n                contentMetadataConfig = this.contentMetadataConfigFactory.get(preset);\n            } else {\n                contentMetadataConfig = this.contentMetadataConfigFactory.createConfig(preset);\n            }\n\n            const groupNames = node.aspectNames.concat(node.nodeType).filter((groupName) => contentMetadataConfig.isGroupAllowed(groupName));\n\n            if (groupNames.length > 0) {\n                groupedProperties = this.propertyDescriptorsService.load(groupNames).pipe(\n                    switchMap((groups) =>\n                        iif(\n                            () => contentMetadataConfig.isIncludeAllEnabled(),\n                            of(contentMetadataConfig.appendAllPreset(groups).concat(contentMetadataConfig.reorganiseByConfig(groups))),\n                            of(contentMetadataConfig.reorganiseByConfig(groups))\n                        )\n                    ),\n                    map((groups) => contentMetadataConfig.filterExcludedPreset(groups)),\n                    map((groups) => this.filterEmptyPreset(groups)),\n                    map((groups) => this.setTitleToNameIfNotSet(groups)),\n                    map((groups) => this.propertyGroupTranslatorService.translateToCardViewGroups(groups, node.properties, node.definition))\n                );\n            }\n        }\n\n        return groupedProperties;\n    }\n\n    setTitleToNameIfNotSet(propertyGroups: OrganisedPropertyGroup[]): OrganisedPropertyGroup[] {\n        const propertyGroupsTitles = [];\n        propertyGroups.map((propertyGroup) => {\n            const title = propertyGroup.title;\n            const name = propertyGroup.name;\n            if (title) {\n                if (propertyGroupsTitles.includes(title)) {\n                    propertyGroup.title = name ? `${title} (${name})` : title;\n                } else {\n                    propertyGroup.title = title;\n                }\n                propertyGroupsTitles.push(title);\n            } else {\n                propertyGroup.title = name;\n                propertyGroupsTitles.push(name);\n            }\n        });\n        return propertyGroups;\n    }\n\n    filterEmptyPreset(propertyGroups: OrganisedPropertyGroup[]): OrganisedPropertyGroup[] {\n        return propertyGroups.filter((props) => props.properties.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\nimport { CommonModule } from '@angular/common';\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n    standalone: true,\n    imports: [CommonModule, MatIconModule, MatExpansionModule, TranslateModule],\n    selector: 'adf-content-metadata-header',\n    encapsulation: ViewEncapsulation.None,\n    styles: [\n        `\n                    adf-content-metadata-header {\n                        display: flex;\n                        align-items: center;\n                        width: 100%;\n                    }\n\n                    .adf-metadata-properties-title {\n                        display: block;\n                        overflow: hidden;\n                        text-overflow: ellipsis;\n                        font-weight: 700;\n                        font-size: 15px;\n                        padding-left: 12px;\n                    }\n                `\n    ],\n    template: `\n        <ng-container>\n            <mat-icon>{{ expanded ? 'expand_more' : 'chevron_right' }}</mat-icon>\n            <mat-panel-title *ngIf=\"title\" class=\"adf-metadata-properties-title\" [title]=\"title | translate\">{{ title | translate }}</mat-panel-title>\n            <ng-content />\n        </ng-container>\n    `\n})\nexport class ContentMetadataHeaderComponent {\n    @Input() title: string = null;\n    @Input() expanded = true;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY 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, inject, Input, OnChanges, OnInit, SimpleChanges, ViewEncapsulation } from '@angular/core';\nimport { Category, CategoryEntry, CategoryLinkBody, CategoryPaging, Node, TagBody, TagEntry, TagPaging } from '@alfresco/js-api';\nimport { forkJoin, Observable, of, Subject, zip } from 'rxjs';\nimport {\n    AppConfigService,\n    CardViewBaseItemModel,\n    CardViewComponent,\n    CardViewItem,\n    Chip,\n    DynamicChipListComponent,\n    NotificationService,\n    TranslationService,\n    UpdateNotification\n} from '@alfresco/adf-core';\nimport { ContentMetadataService } from '../../services/content-metadata.service';\nimport { CardViewGroup, ContentMetadataCustomPanel, ContentMetadataPanel, PresetConfig } from '../../interfaces/content-metadata.interfaces';\nimport { catchError, debounceTime, map } from 'rxjs/operators';\nimport { CardViewContentUpdateService } from '../../../common/services/card-view-content-update.service';\nimport { NodesApiService } from '../../../common/services/nodes-api.service';\nimport { TagsCreatorMode } from '../../../tag/tags-creator/tags-creator-mode';\nimport { TagService } from '../../../tag/services/tag.service';\nimport { CategoryService } from '../../../category/services/category.service';\nimport { CategoriesManagementMode } from '../../../category/categories-management/categories-management-mode';\nimport { AllowableOperationsEnum } from '../../../common/models/allowable-operations.enum';\nimport { ContentService } from '../../../common/services/content.service';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatIconModule } from '@angular/material/icon';\nimport { DynamicExtensionComponent } from '@alfresco/adf-extensions';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { TagsCreatorComponent } from '../../../tag';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ContentMetadataHeaderComponent } from './content-metadata-header.component';\nimport { CategoriesManagementComponent } from '../../../category/categories-management/categories-management.component';\n\nconst DEFAULT_SEPARATOR = ', ';\n\nenum DefaultPanels {\n    PROPERTIES = 'Properties',\n    TAGS = 'Tags',\n    CATEGORIES = 'Categories'\n}\n\n@Component({\n    selector: 'adf-content-metadata',\n    standalone: true,\n    imports: [\n        CommonModule,\n        MatExpansionModule,\n        ContentMetadataHeaderComponent,\n        MatButtonModule,\n        TranslateModule,\n        MatIconModule,\n        MatChipsModule,\n        CategoriesManagementComponent,\n        DynamicExtensionComponent,\n        MatProgressBarModule,\n        TagsCreatorComponent,\n        CardViewComponent,\n        DynamicChipListComponent\n    ],\n    templateUrl: './content-metadata.component.html',\n    styleUrls: ['./content-metadata.component.scss'],\n    host: { class: 'adf-content-metadata' },\n    encapsulation: ViewEncapsulation.None\n})\nexport class ContentMetadataComponent implements OnChanges, OnInit {\n    /** (required) The node entity to fetch metadata about */\n    @Input({ required: true })\n    node: Node;\n\n    /** Toggles whether to display empty values in the card view */\n    @Input()\n    displayEmpty: boolean = false;\n\n    /**\n     * Toggles between expanded (ie, full information) and collapsed\n     * (ie, reduced information) in the display\n     */\n    @Input()\n    expanded: boolean = false;\n\n    /** The multi parameter of the underlying material expansion panel, set to true to allow multi accordion to be expanded at the same time */\n    @Input()\n    multi = false;\n\n    /** Name or configuration of the metadata preset, which defines aspects and their properties */\n    @Input({ required: true })\n    preset: string | PresetConfig;\n\n    /** Toggles whether the metadata properties should be shown */\n    @Input()\n    displayDefaultProperties: boolean = true;\n\n    /** (optional) shows the given aspect in the expanded  card */\n    @Input()\n    displayAspect: string = null;\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    /** True if tags should be displayed, false otherwise */\n    @Input()\n    displayTags = false;\n\n    /** True if categories should be displayed, false otherwise */\n    @Input()\n    displayCategories = false;\n\n    /** List of custom metadata panels to be displayed with registered custom components */\n    @Input()\n    customPanels: ContentMetadataCustomPanel[] = [];\n\n    /**\n     * (optional) This flag sets the metadata in read-only mode,\n     * preventing changes.\n     */\n    @Input()\n    readOnly = false;\n\n    private _assignedTags: string[] = [];\n    private assignedTagsEntries: TagEntry[] = [];\n    private _tagsCreatorMode = TagsCreatorMode.CREATE_AND_ASSIGN;\n    private _tags: string[] = [];\n    private targetProperty: CardViewBaseItemModel;\n    private classifiableChangedSubject = new Subject<void>();\n    private _saving = false;\n\n    DefaultPanels = DefaultPanels;\n    multiValueSeparator: string;\n    basicProperties$: Observable<CardViewItem[]>;\n    groupedProperties$: Observable<CardViewGroup[]>;\n\n    tagsToDisplay: Chip[];\n    changedProperties = {};\n    hasMetadataChanged = false;\n    assignedCategories: Category[] = [];\n    categories: Category[] = [];\n    categoriesManagementMode = CategoriesManagementMode.ASSIGN;\n    classifiableChanged = this.classifiableChangedSubject.asObservable();\n    editing = false;\n    invalidProperties = new Set<string>();\n    editedPanelTitle = '';\n    currentPanel: ContentMetadataPanel = {\n        expanded: false,\n        panelTitle: ''\n    };\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    constructor(\n        private contentMetadataService: ContentMetadataService,\n        private cardViewContentUpdateService: CardViewContentUpdateService,\n        private nodesApiService: NodesApiService,\n        private translationService: TranslationService,\n        private appConfig: AppConfigService,\n        private tagService: TagService,\n        private categoryService: CategoryService,\n        private contentService: ContentService,\n        private notificationService: NotificationService\n    ) {\n        this.copyToClipboardAction = this.appConfig.get<boolean>('content-metadata.copy-to-clipboard-action');\n        this.multiValueSeparator = this.appConfig.get<string>('content-metadata.multi-value-pipe-separator') || DEFAULT_SEPARATOR;\n        this.useChipsForMultiValueProperty = this.appConfig.get<boolean>('content-metadata.multi-value-chips');\n    }\n\n    ngOnInit() {\n        this.cardViewContentUpdateService.itemUpdated$\n            .pipe(debounceTime(500), takeUntilDestroyed(this.destroyRef))\n            .subscribe((updatedNode: UpdateNotification) => {\n                this.hasMetadataChanged = true;\n                this.targetProperty = updatedNode.target;\n                this.updateInvalidProperties();\n                this.updateChanges(updatedNode.changed);\n            });\n\n        this.cardViewContentUpdateService.updatedAspect$.pipe(debounceTime(500), takeUntilDestroyed(this.destroyRef)).subscribe((node) => {\n            this.node.aspectNames = node?.aspectNames;\n            this.loadProperties(node);\n        });\n\n        this.loadProperties(this.node);\n        this.verifyAllowableOperations();\n\n        this.currentPanel.panelTitle = this.displayAspect ?? this.DefaultPanels.PROPERTIES;\n        this.currentPanel.expanded = true;\n    }\n\n    private verifyAllowableOperations() {\n        if (!this.node?.allowableOperations || !this.contentService.hasAllowableOperations(this.node, AllowableOperationsEnum.UPDATE)) {\n            this.readOnly = true;\n        }\n    }\n\n    get assignedTags(): string[] {\n        return this._assignedTags;\n    }\n\n    set tags(tags: string[]) {\n        this._tags = tags;\n        this.tagsToDisplay = this.tags.map((tag) => ({ id: tag, name: tag }));\n    }\n\n    get tags(): string[] {\n        return this._tags;\n    }\n\n    get tagsCreatorMode(): TagsCreatorMode {\n        return this._tagsCreatorMode;\n    }\n\n    get saving(): boolean {\n        return this._saving;\n    }\n\n    isPanelEditing(panelTitle: string): boolean {\n        return (\n            this.editing &&\n            ((this.currentPanel.panelTitle === panelTitle && this.editedPanelTitle === panelTitle) || this.editedPanelTitle === panelTitle)\n        );\n    }\n\n    protected handleUpdateError(error: Error) {\n        let statusCode = 0;\n\n        try {\n            statusCode = JSON.parse(error.message).error.statusCode;\n        } catch {\n            /* empty */\n        }\n\n        let message = `METADATA.ERRORS.${statusCode}`;\n\n        if (this.translationService.instant(message) === message) {\n            message = 'METADATA.ERRORS.GENERIC';\n        }\n\n        this.contentMetadataService.error.next({\n            statusCode,\n            message\n        });\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        if (changes.node && !changes.node.firstChange) {\n            this.loadProperties(changes.node.currentValue);\n        }\n\n        if (changes.readOnly?.currentValue) {\n            this.resetEditing();\n            this.loadProperties(this.node);\n        }\n\n        if (changes.displayAspect?.currentValue) {\n            this.currentPanel.panelTitle = changes.displayAspect.currentValue;\n            this.currentPanel.expanded = true;\n        }\n\n        if (changes.displayDefaultProperties?.currentValue) {\n            this.expandPanel(this.DefaultPanels.PROPERTIES);\n        }\n    }\n\n    updateChanges(updatedNodeChanges) {\n        Object.keys(updatedNodeChanges).map((propertyGroup: string) => {\n            if (typeof updatedNodeChanges[propertyGroup] === 'object') {\n                this.changedProperties[propertyGroup] = {\n                    ...this.changedProperties[propertyGroup],\n                    ...updatedNodeChanges[propertyGroup]\n                };\n            } else {\n                this.changedProperties[propertyGroup] = updatedNodeChanges[propertyGroup];\n            }\n        });\n    }\n\n    saveChanges(event?: MouseEvent) {\n        event?.stopPropagation();\n        this.resetEditing();\n        this._saving = true;\n\n        if (this.hasContentTypeChanged(this.changedProperties)) {\n            this.contentMetadataService.openConfirmDialog(this.changedProperties).subscribe(() => {\n                this.updateNode();\n            });\n        } else {\n            this.updateNode();\n        }\n    }\n\n    /**\n     * Register all tags which should be assigned to node. Please note that they are just in \"register\" state and are not yet saved\n     * until button for saving data is clicked. Calling that function causes that save button is enabled.\n     *\n     * @param tags array of tags to register, they are not saved yet until we click save button.\n     */\n    storeTagsToAssign(tags: string[]) {\n        this.tags = tags;\n        this._assignedTags = tags;\n        this.hasMetadataChanged = true;\n    }\n\n    /**\n     * Store all categories that node should be assigned to. Please note that they are just in \"stored\" state and are not yet saved\n     * until button for saving data is clicked. Calling that function causes that save button is enabled.\n     *\n     * @param categoriesToAssign array of categories to store.\n     */\n    storeCategoriesToAssign(categoriesToAssign: Category[]) {\n        this.categories = categoriesToAssign;\n        this.hasMetadataChanged = true;\n    }\n\n    revertChanges() {\n        this.changedProperties = {};\n        this.hasMetadataChanged = false;\n    }\n\n    get showEmptyTagMessage(): boolean {\n        return this.tags?.length === 0 && this.currentPanel.panelTitle === 'Tags' && !this.editing;\n    }\n\n    get showEmptyCategoryMessage(): boolean {\n        return this.categories?.length === 0 && this.currentPanel.panelTitle === 'Categories' && !this.editing;\n    }\n\n    toggleGroupEditing(panelTitle: string, event?: MouseEvent) {\n        event?.stopPropagation();\n        if (this.editing && this.hasMetadataChanged) {\n            this.notificationService.showError('METADATA.BASIC.SAVE_OR_DISCARD_CHANGES');\n            return;\n        }\n        this.editing = true;\n        this.editedPanelTitle = panelTitle;\n        this.expandPanel(panelTitle);\n    }\n\n    cancelGroupEditing(panelTitle: string, event?: MouseEvent) {\n        event?.stopPropagation();\n        this.resetEditing();\n        this.revertChanges();\n        const loadBasicProps = panelTitle === this.DefaultPanels.PROPERTIES;\n        const loadTags = panelTitle === this.DefaultPanels.TAGS;\n        const loadCategories = panelTitle === this.DefaultPanels.CATEGORIES;\n        const loadGroupedProps = !loadBasicProps && !loadTags && !loadCategories;\n        this.loadProperties(this.node, loadBasicProps, loadGroupedProps, loadTags, loadCategories);\n    }\n\n    expandPanel(panelTitle: string) {\n        this.currentPanel.panelTitle = panelTitle;\n        this.currentPanel.expanded = true;\n    }\n\n    closePanel(panelTitle: string) {\n        if (this.currentPanel.panelTitle === panelTitle) {\n            this.currentPanel.expanded = false;\n        }\n    }\n\n    resetEditing() {\n        this.editing = false;\n        this.editedPanelTitle = '';\n    }\n\n    showGroup(group: CardViewGroup): boolean {\n        const properties = group.properties.filter((property) => !this.isEmpty(property.displayValue));\n\n        return properties.length > 0;\n    }\n\n    keyDown(event: KeyboardEvent) {\n        if (event.keyCode === 37 || event.keyCode === 39) {\n            // ArrowLeft && ArrowRight\n            event.stopPropagation();\n        }\n    }\n\n    private updateNode() {\n        forkJoin({\n            updatedNode: this.nodesApiService.updateNode(this.node.id, this.changedProperties),\n            ...(this.displayTags ? this.saveTags() : {}),\n            ...(this.displayCategories ? this.saveCategories() : {})\n        })\n            .pipe(\n                catchError((err) => {\n                    this.cardViewContentUpdateService.updateElement(this.targetProperty);\n                    this.handleUpdateError(err);\n                    this._saving = false;\n                    this.revertChanges();\n                    this.loadProperties(this.node);\n                    return of(null);\n                })\n            )\n            .subscribe((result: any) => {\n                if (result) {\n                    this.updateUndefinedNodeProperties(result.updatedNode);\n                    if (this.hasContentTypeChanged(this.changedProperties)) {\n                        this.cardViewContentUpdateService.updateNodeAspect(this.node);\n                    }\n                    this.revertChanges();\n                    Object.assign(this.node, result.updatedNode);\n                    this.nodesApiService.nodeUpdated.next(this.node);\n                    if (Object.keys(result).length > 1 && this.displayTags) {\n                        this.loadTagsForNode(this.node.id);\n                    }\n                    if (this.displayCategories && !!result.LinkingCategories) {\n                        this.assignedCategories = result.LinkingCategories.list\n                            ? result.LinkingCategories.list.entries.map((entry: CategoryEntry) => entry.entry)\n                            : [result.LinkingCategories.entry];\n                    }\n                }\n                this._saving = false;\n            });\n    }\n\n    private hasContentTypeChanged(changedProperties): boolean {\n        return !!changedProperties?.nodeType;\n    }\n\n    private updateUndefinedNodeProperties(node: Node): void {\n        if (!node.properties) {\n            node.properties = {};\n        }\n    }\n\n    private loadProperties(node: Node, loadBasicProps = true, loadGroupedProps = true, loadTags = true, loadCategories = true) {\n        if (node) {\n            if (loadBasicProps) {\n                this.basicProperties$ = this.getProperties(node);\n            }\n            if (loadGroupedProps) {\n                this.groupedProperties$ = this.contentMetadataService.getGroupedProperties(node, this.preset);\n            }\n\n            if (this.displayTags && loadTags) {\n                this.loadTagsForNode(node.id);\n            }\n\n            if (this.displayCategories && loadCategories) {\n                this.loadCategoriesForNode(node.id);\n\n                const aspectNames = node.aspectNames || [];\n                if (!aspectNames.includes('generalclassifiable')) {\n                    this.categories = [];\n                    this.classifiableChangedSubject.next();\n                }\n            }\n        }\n    }\n\n    private getProperties(node: Node) {\n        const properties$ = this.contentMetadataService.getBasicProperties(node);\n        const contentTypeProperty$ = this.contentMetadataService.getContentTypeProperty(node);\n        return zip(properties$, contentTypeProperty$).pipe(\n            map(([properties, contentTypeProperty]) => {\n                const filteredProperties = contentTypeProperty.filter(\n                    (property) => properties.findIndex((baseProperty) => baseProperty.key === property.key) === -1\n                );\n                return [...properties, ...filteredProperties];\n            })\n        );\n    }\n\n    private isEmpty(value: any): boolean {\n        return value === undefined || value === null || value === '';\n    }\n\n    private loadCategoriesForNode(nodeId: string) {\n        this.assignedCategories = [];\n        this.categoryService.getCategoryLinksForNode(nodeId).subscribe((categoryPaging) => {\n            this.categories = categoryPaging.list.entries.map((categoryEntry) => {\n                const path = categoryEntry.entry.path ? categoryEntry.entry.path.split('/').splice(3).join('/') : null;\n                categoryEntry.entry.name = path ? `${path}/${categoryEntry.entry.name}` : categoryEntry.entry.name;\n                return categoryEntry.entry;\n            });\n            this.assignedCategories = [...this.categories];\n        });\n    }\n\n    private saveCategories(): { [key: string]: Observable<CategoryPaging | CategoryEntry | void> } {\n        const observables: { [key: string]: Observable<CategoryPaging | CategoryEntry | void> } = {};\n        if (this.categories) {\n            this.assignedCategories.forEach((assignedCategory) => {\n                if (this.categories.every((category) => category.name !== assignedCategory.name)) {\n                    observables[`Removing ${assignedCategory.id}`] = this.categoryService.unlinkNodeFromCategory(this.node.id, assignedCategory.id);\n                }\n            });\n            const categoryLinkBodies = this.categories.map((category) => {\n                const categoryLinkBody = new CategoryLinkBody();\n                categoryLinkBody.categoryId = category.id;\n                return categoryLinkBody;\n            });\n            if (categoryLinkBodies.length > 0) {\n                observables['LinkingCategories'] = this.categoryService.linkNodeToCategory(this.node.id, categoryLinkBodies);\n            }\n        }\n        return observables;\n    }\n\n    private loadTagsForNode(id: string) {\n        this.tagService.getTagsByNodeId(id).subscribe((tagPaging) => {\n            this.assignedTagsEntries = tagPaging.list.entries;\n            this.tags = tagPaging.list.entries.map((tagEntry) => tagEntry.entry.tag);\n            this._assignedTags = [...this.tags];\n        });\n    }\n\n    private saveTags(): { [key: string]: Observable<TagPaging | TagEntry | void> } {\n        const observables: { [key: string]: Observable<TagPaging | TagEntry | void> } = {};\n        if (this.tags) {\n            this.assignedTagsEntries.forEach((tagEntry) => {\n                if (!this.tags.some((tag) => tagEntry.entry.tag === tag)) {\n                    observables[`${tagEntry.entry.id}Removing`] = this.tagService.removeTag(this.node.id, tagEntry.entry.id);\n                }\n            });\n            if (this.tags.length) {\n                observables.tagsAssigning = this.tagService.assignTagsToNode(\n                    this.node.id,\n                    this.tags.map((tag) => {\n                        const tagBody = new TagBody();\n                        tagBody.tag = tag;\n                        return tagBody;\n                    })\n                );\n            }\n        }\n        return observables;\n    }\n\n    private updateInvalidProperties() {\n        if (this.targetProperty?.isValidValue === false) {\n            this.invalidProperties.add(this.targetProperty.key);\n        } else if (this.targetProperty?.isValidValue === true) {\n            this.invalidProperties.delete(this.targetProperty.key);\n        }\n    }\n}\n","<mat-accordion displayMode=\"flat\" [multi]=\"multi\" class=\"adf-metadata-properties\">\n    <mat-expansion-panel\n        *ngIf=\"displayDefaultProperties\"\n        class=\"adf-content-metadata-panel\"\n        [expanded]=\"currentPanel.panelTitle === DefaultPanels.PROPERTIES && currentPanel.expanded\"\n        (opened)=\"expandPanel(DefaultPanels.PROPERTIES)\"\n        (closed)=\"closePanel(DefaultPanels.PROPERTIES)\"\n        [attr.data-automation-id]=\"'adf-metadata-group-properties'\"\n        hideToggle>\n        <mat-expansion-panel-header\n            class=\"adf-metadata-properties-header\"\n            [class.adf-metadata-properties-header-expanded]=\"currentPanel.panelTitle === DefaultPanels.PROPERTIES && currentPanel.expanded\">\n            <adf-content-metadata-header\n                [title]=\"'CORE.METADATA.BASIC.HEADER'\"\n                [expanded]=\"currentPanel.panelTitle === DefaultPanels.PROPERTIES && currentPanel.expanded\">\n                <button\n                    *ngIf=\"!readOnly && !isPanelEditing(DefaultPanels.PROPERTIES)\"\n                    mat-icon-button\n                    (click)=\"toggleGroupEditing(DefaultPanels.PROPERTIES, $event)\"\n                    [attr.title]=\"'CORE.METADATA.ACTIONS.EDIT' | translate\"\n                    [attr.aria-label]=\"'CORE.METADATA.ACCESSIBILITY.EDIT' | translate\"\n                    data-automation-id=\"meta-data-general-info-edit\"\n                    class=\"adf-edit-icon-buttons\">\n                    <mat-icon>mode_edit</mat-icon>\n                </button>\n                <div *ngIf=\"isPanelEditing(DefaultPanels.PROPERTIES)\" class=\"adf-metadata-action-buttons\">\n                    <button\n                        mat-icon-button\n                        [attr.title]=\"'CORE.METADATA.ACTIONS.CANCEL' | translate\"\n                        (click)=\"cancelGroupEditing(DefaultPanels.PROPERTIES, $event)\"\n                        data-automation-id=\"reset-metadata\"\n                        class=\"adf-metadata-action-buttons-clear\">\n                        <mat-icon>clear</mat-icon>\n                    </button>\n                    <button\n                        mat-icon-button\n                        [attr.title]=\"'CORE.METADATA.ACTIONS.SAVE' | translate\"\n                        (click)=\"saveChanges($event)\"\n                        color=\"primary\"\n                        data-automation-id=\"save-general-info-metadata\"\n                        [disabled]=\"!hasMetadataChanged || invalidProperties.size > 0\">\n                        <mat-icon>check</mat-icon>\n                    </button>\n                </div>\n            </adf-content-metadata-header>\n        </mat-expansion-panel-header>\n        <adf-card-view\n            class=\"adf-metadata-properties-expansion-panel\"\n            (keydown)=\"keyDown($event)\"\n            [properties]=\"basicProperties$ | async\"\n            [editable]=\"!readOnly && isPanelEditing(DefaultPanels.PROPERTIES)\"\n            [displayEmpty]=\"displayEmpty\"\n            [copyToClipboardAction]=\"copyToClipboardAction\"\n            [useChipsForMultiValueProperty]=\"useChipsForMultiValueProperty\"\n            [multiValueSeparator]=\"multiValueSeparator\" />\n    </mat-expansion-panel>\n\n    <ng-container *ngIf=\"displayTags\">\n        <mat-expansion-panel\n            hideToggle\n            [expanded]=\"currentPanel.panelTitle === DefaultPanels.TAGS && currentPanel.expanded\"\n            (opened)=\"expandPanel(DefaultPanels.TAGS)\"\n            (closed)=\"closePanel(DefaultPanels.TAGS)\"\n            class=\"adf-content-metadata-panel\"\n            data-automation-id=\"adf-content-metadata-tags-panel\">\n            <mat-expansion-panel-header\n                class=\"adf-metadata-properties-header\"\n                [class.adf-metadata-properties-header-expanded]=\"currentPanel.panelTitle === DefaultPanels.TAGS && currentPanel.expanded\">\n                <adf-content-metadata-header [title]=\"'METADATA.BASIC.TAGS'\" [expanded]=\"currentPanel.panelTitle === DefaultPanels.TAGS && currentPanel.expanded\">\n                    <button\n                        *ngIf=\"!readOnly && !isPanelEditing(DefaultPanels.TAGS)\"\n                        mat-icon-button\n                        (click)=\"toggleGroupEditing(DefaultPanels.TAGS, $event)\"\n                        [attr.title]=\"'CORE.METADATA.ACTIONS.EDIT' | translate\"\n                        [attr.aria-label]=\"'CORE.METADATA.ACCESSIBILITY.EDIT' | translate\"\n                        data-automation-id=\"showing-tag-input-button\"\n                        class=\"adf-edit-icon-buttons\">\n                        <mat-icon>mode_edit</mat-icon>\n                    </button>\n                    <div *ngIf=\"isPanelEditing(DefaultPanels.TAGS)\" class=\"adf-metadata-action-buttons\">\n                        <button\n                            mat-icon-button\n                            [attr.title]=\"'CORE.METADATA.ACTIONS.CANCEL' | translate\"\n                            (click)=\"cancelGroupEditing(DefaultPanels.TAGS, $event)\"\n                            data-automation-id=\"reset-tags-metadata\"\n                            class=\"adf-metadata-action-buttons-clear\">\n                            <mat-icon>clear</mat-icon>\n                        </button>\n                        <button\n                            mat-icon-button\n                            [attr.title]=\"'CORE.METADATA.ACTIONS.SAVE' | translate\"\n                            (click)=\"saveChanges($event)\"\n                            color=\"primary\"\n                            data-automation-id=\"save-tags-metadata\"\n                            [disabled]=\"!hasMetadataChanged\">\n                            <mat-icon>check</mat-icon>\n                        </button>\n                    </div>\n                </adf-content-metadata-header>\n            </mat-expansion-panel-header>\n            <div *ngIf=\"currentPanel.panelTitle === DefaultPanels.TAGS && !editing\"\n                 class=\"adf-metadata-properties-tags\">\n                <adf-dynamic-chip-list [chips]=\"tagsToDisplay\" [showDelete]=\"false\" />\n            </div>\n            <div *ngIf=\"showEmptyTagMessage\" class=\"adf-metadata-no-item-added\">\n                {{ 'METADATA.BASIC.NO_TAGS_ADDED' | translate }}\n            </div>\n            <adf-tags-creator\n                *ngIf=\"!readOnly && isPanelEditing(DefaultPanels.TAGS)\"\n                class=\"adf-metadata-properties-tags\"\n                [tagNameControlVisible]=\"editing\"\n                (tagsChange)=\"storeTagsToAssign($event)\"\n                [mode]=\"tagsCreatorMode\"\n                [tags]=\"assignedTags\"\n                [disabledTagsRemoving]=\"saving\" />\n        </mat-expansion-panel>\n    </ng-container>\n\n    <ng-container *ngIf=\"displayCategories\">\n        <mat-expansion-panel\n            hideToggle\n            [expanded]=\"currentPanel.panelTitle === DefaultPanels.CATEGORIES && currentPanel.expanded\"\n            (opened)=\"expandPanel(DefaultPanels.CATEGORIES)\"\n            (closed)=\"closePanel(DefaultPanels.CATEGORIES)\"\n            class=\"adf-content-metadata-panel\"\n            data-automation-id=\"adf-content-metadata-categories-panel\">\n            <mat-expansion-panel-header\n                class=\"adf-metadata-properties-header\"\n                [class.adf-metadata-properties-header-expanded]=\"currentPanel.panelTitle === DefaultPanels.CATEGORIES && currentPanel.expanded\">\n                <adf-content-metadata-header\n                    [title]=\"'CATEGORIES_MANAGEMENT.CATEGORIES_TITLE'\"\n                    [expanded]=\"currentPanel.panelTitle === DefaultPanels.CATEGORIES && currentPanel.expanded\">\n                    <button\n                        *ngIf=\"!readOnly && !isPanelEditing(DefaultPanels.CATEGORIES)\"\n                        mat-icon-button\n                        (click)=\"toggleGroupEditing(DefaultPanels.CATEGORIES, $event)\"\n                        [attr.title]=\"'CORE.METADATA.ACTIONS.EDIT' | translate\"\n                        [attr.aria-label]=\"'CORE.METADATA.ACCESSIBILITY.EDIT' | translate\"\n                        data-automation-id=\"meta-data-categories-edit\"\n                        class=\"adf-categories-button adf-edit-icon-buttons\">\n                        <mat-icon>mode_edit</mat-icon>\n                    </button>\n                    <div *ngIf=\"isPanelEditing(DefaultPanels.CATEGORIES)\" class=\"adf-metadata-action-buttons\">\n                        <button\n                            mat-icon-button\n                            [attr.title]=\"'CORE.METADATA.ACTIONS.CANCEL' | translate\"\n                            (click)=\"cancelGroupEditing(DefaultPanels.CATEGORIES, $event)\"\n                            data-automation-id=\"reset-metadata\"\n                            class=\"adf-metadata-action-buttons-clear\">\n                            <mat-icon>clear</mat-icon>\n                        </button>\n                        <button\n                            mat-icon-button\n                            [attr.title]=\"'CORE.METADATA.ACTIONS.SAVE' | translate\"\n                            (click)=\"saveChanges($event)\"\n                            color=\"primary\"\n                            data-automation-id=\"save-categories-metadata\"\n                            [disabled]=\"!hasMetadataChanged\">\n                            <mat-icon>check</mat-icon>\n                        </button>\n                    </div>\n                </adf-content-metadata-header>\n            </mat-expansion-panel-header>\n            <div *ngIf=\"currentPanel.panelTitle === DefaultPanels.CATEGORIES && !editing\">\n                <p *ngFor=\"let category of categories\" class=\"adf-metadata-categories\">{{ category.name }}</p>\n            </div>\n            <div *ngIf=\"showEmptyCategoryMessage\" class=\"adf-metadata-no-item-added\">\n                {{ 'CATEGORIES_MANAGEMENT.NO_CATEGORIES_ADDED' | translate }}\n            </div>\n            <adf-categories-management\n                *ngIf=\"!readOnly && isPanelEditing(DefaultPanels.CATEGORIES)\"\n                class=\"adf-metadata-categories-header\"\n                [categoryNameControlVisible]=\"editing\"\n                [disableRemoval]=\"saving\"\n                [categories]=\"categories\"\n                [managementMode]=\"categoriesManagementMode\"\n                [classifiableChanged]=\"classifiableChanged\"\n                (categoriesChange)=\"storeCategoriesToAssign($event)\" />\n        </mat-expansion-panel>\n    </ng-container>\n\n    <mat-expansion-panel\n        *ngFor=\"let customPanel of customPanels\"\n        [expanded]=\"currentPanel.panelTitle === customPanel.panelTitle && currentPanel.expanded\"\n        (opened)=\"expandPanel(customPanel.panelTitle)\"\n        (closed)=\"closePanel(customPanel.panelTitle)\"\n        class=\"adf-content-metadata-panel\"\n        hideToggle>\n        <mat-expansion-panel-header\n            class=\"adf-metadata-properties-header\"\n            [class.adf-metadata-properties-header-expanded]=\"currentPanel.panelTitle === customPanel.panelTitle && currentPanel.expanded\">\n            <adf-content-metadata-header\n                class=\"adf-metadata-custom-panel-title\"\n                [title]=\"customPanel.panelTitle\"\n                [expanded]=\"currentPanel.panelTitle === customPanel.panelTitle && currentPanel.expanded\" />\n        </mat-expansion-panel-header>\n        <adf-dynamic-component [id]=\"customPanel.component\" [data]=\"{ node }\" />\n    </mat-expansion-panel>\n\n    <ng-container *ngIf=\"groupedProperties$ | async; else loading; let groupedProperties\">\n        <div *ngFor=\"let group of groupedProperties; let first = first\" class=\"adf-metadata-grouped-properties-container\">\n            <mat-expansion-panel\n                [attr.data-automation-id]=\"'adf-metadata-group-' + group.title\"\n                [expanded]=\"multi ? !displayDefaultProperties && first || group.expanded : !displayDefaultProperties && first || currentPanel.panelTitle === group.title && currentPanel.expanded\"\n                (opened)=\"expandPanel(group.title); group.expanded = true\"\n                (closed)=\"closePanel(group.title); group.expanded = false\"\n                class=\"adf-content-metadata-panel\"\n                hideToggle>\n                <mat-expansion-panel-header\n                    class=\"adf-metadata-properties-header\"\n                    [class.adf-metadata-properties-header-expanded]=\"currentPanel.panelTitle === group.title && currentPanel.expanded\">\n                    <adf-content-metadata-header [title]=\"group.title\" [expanded]=\"currentPanel.panelTitle === group.title && currentPanel.expanded\">\n                        <button\n                            *ngIf=\"group.editable && !this.readOnly && !isPanelEditing(group.title)\"\n                            mat-icon-button\n                            [attr.title]=\"'CORE.METADATA.ACTIONS.EDIT' | translate\"\n                            [attr.aria-label]=\"'CORE.METADATA.ACCESSIBILITY.EDIT' | translate\"\n                            data-automation-id=\"meta-data-card-toggle-edit\"\n                            class=\"adf-edit-icon-buttons\"\n                            (click)=\"toggleGroupEditing(group.title, $event)\">\n                            <mat-icon>mode_edit</mat-icon>\n                        </button>\n                        <div class=\"adf-metadata-action-buttons\" *ngIf=\"group.editable && isPanelEditing(group.title)\">\n                            <button\n                                mat-icon-button\n                                [attr.title]=\"'CORE.METADATA.ACTIONS.CANCEL' | translate\"\n                                (click)=\"cancelGroupEditing(group.title, $event)\"\n                                data-automation-id=\"reset-metadata\"\n                                class=\"adf-metadata-action-buttons-clear\">\n                                <mat-icon>clear</mat-icon>\n                            </button>\n                            <button\n                                mat-icon-button\n                                [attr.title]=\"'CORE.METADATA.ACTIONS.SAVE' | translate\"\n                                (click)=\"saveChanges($event)\"\n                                color=\"primary\"\n                                data-automation-id=\"save-metadata\"\n                                [disabled]=\"!hasMetadataChanged || invalidProperties.size > 0\">\n                                <mat-icon>check</mat-icon>\n                            </button>\n                        </div>\n                    </adf-content-metadata-header>\n                </mat-expansion-panel-header>\n                <div *ngIf=\"!showGroup(group) && group.editable && !editing\" class=\"adf-metadata-no-item-added\">\n                    {{ 'METADATA.BASIC.NO_ITEMS_MESSAGE' | translate : { groupTitle: group.title | translate } }}\n                </div>\n                <adf-card-view\n                    (keydown)=\"keyDown($event)\"\n                    [properties]=\"group.properties\"\n                    [editable]=\"!readOnly && group.editable && isPanelEditing(group.title)\"\n                    [displayEmpty]=\"displayEmpty\"\n                    [copyToClipboardAction]=\"copyToClipboardAction\"\n                    [useChipsForMultiValueProperty]=\"useChipsForMultiValueProperty\"\n                    [multiValueSeparator]=\"multiValueSeparator\"\n                    [displayLabelForChips]=\"true\" />\n            </mat-expansion-panel>\n        </div>\n    </ng-container>\n\n    <ng-template #loading>\n        <mat-progress-bar mode=\"indeterminate\" [attr.aria-label]=\"'DATA_LOADING' | translate\" />\n    </ng-template>\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\nimport { Injectable } from '@angular/core';\nimport { AlfrescoApiService } from '../../services/alfresco-api.service';\nimport { AppConfigService } from '@alfresco/adf-core';\nimport { from, Observable, of, zip } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { AspectEntry, AspectPaging, AspectsApi } from '@alfresco/js-api';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class AspectListService {\n    private _aspectsApi: AspectsApi;\n    get aspectsApi(): AspectsApi {\n        this._aspectsApi = this._aspectsApi ?? new AspectsApi(this.alfrescoApiService.getInstance());\n        return this._aspectsApi;\n    }\n\n    constructor(private alfrescoApiService: AlfrescoApiService, private appConfigService: AppConfigService) {}\n\n    getAspects(): Observable<AspectEntry[]> {\n        const visibleAspectList = this.getVisibleAspects();\n        const standardAspects$ = this.getStandardAspects(visibleAspectList);\n        const customAspects$ = this.getCustomAspects(visibleAspectList);\n        return zip(standardAspects$, customAspects$).pipe(\n            map(([standardAspectList, customAspectList]) => [...standardAspectList, ...customAspectList])\n        );\n    }\n\n    getStandardAspects(whiteList: string[]): Observable<AspectEntry[]> {\n        const where = `(modelId in ('cm:contentmodel', 'emailserver:emailserverModel', 'smf:smartFolder', 'app:applicationmodel' ))`;\n        const opts: any = {\n            where,\n            include: ['properties']\n        };\n\n        return from(this.aspectsApi.listAspects(opts)).pipe(\n            map((result: AspectPaging) => this.filterAspectByConfig(whiteList, result?.list?.entries)),\n            catchError(() => of([]))\n        );\n    }\n\n    getCustomAspects(whiteList?: string[]): Observable<AspectEntry[]> {\n        const where = `(not namespaceUri matches('http://www.alfresco.*'))`;\n        const opts: any = {\n            where,\n            include: ['properties']\n        };\n        return from(this.aspectsApi.listAspects(opts)).pipe(\n            map((result: AspectPaging) => this.filterAspectByConfig(whiteList, result?.list?.entries)),\n            catchError(() => of([]))\n        );\n    }\n\n    private filterAspectByConfig(visibleAspectList: string[], aspectEntries: AspectEntry[]): AspectEntry[] {\n        let result = aspectEntries ? aspectEntries : [];\n        if (visibleAspectList?.length > 0 && aspectEntries) {\n            result = aspectEntries.filter((value) => visibleAspectList.includes(value?.entry?.id));\n        }\n        return result;\n    }\n\n    getVisibleAspects(): string[] {\n        let visibleAspectList: string[] = [];\n        const aspectVisibleConfig = this.appConfigService.get('aspect-visible');\n        if (aspectVisibleConfig) {\n            for (const aspectGroup of Object.keys(aspectVisibleConfig)) {\n                visibleAspectList = visibleAspectList.concat(aspectVisibleConfig[aspectGroup]);\n            }\n        }\n        return visibleAspectList;\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 { NodesApiService } from '../common/services/nodes-api.service';\nimport { Observable, zip } from 'rxjs';\nimport { concatMap, map, tap } from 'rxjs/operators';\nimport { AspectListService } from './services/aspect-list.service';\nimport { MatCheckboxChange, MatCheckboxModule } from '@angular/material/checkbox';\nimport { AspectEntry } from '@alfresco/js-api';\nimport { CommonModule } from '@angular/common';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatTableModule } from '@angular/material/table';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n    selector: 'adf-aspect-list',\n    standalone: true,\n    imports: [CommonModule, MatExpansionModule, MatCheckboxModule, MatTableModule, TranslateModule, MatProgressSpinnerModule],\n    templateUrl: './aspect-list.component.html',\n    styleUrls: ['./aspect-list.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class AspectListComponent implements OnInit {\n    /** Node Id of the node that we want to update */\n    @Input({ required: true })\n    nodeId: string = '';\n\n    /** List of aspects' ids which should not be displayed. */\n    @Input()\n    excludedAspects?: string[] = [];\n\n    /** Emitted every time the user select a new aspect */\n    @Output()\n    valueChanged: EventEmitter<string[]> = new EventEmitter<string[]>();\n\n    /** Emitted every time the number of selected aspects changes */\n    @Output()\n    updateCounter: EventEmitter<number> = new EventEmitter<number>();\n\n    propertyColumns: string[] = ['name', 'title', 'dataType'];\n    aspects$: Observable<AspectEntry[]> = null;\n    nodeAspects: string[] = [];\n    nodeAspectStatus: string[] = [];\n    notDisplayedAspects: string[] = [];\n    hasEqualAspect: boolean = true;\n    isPanelOpen: boolean[] = [];\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    constructor(private aspectListService: AspectListService, private nodeApiService: NodesApiService) {}\n\n    ngOnInit(): void {\n        let aspects$: Observable<AspectEntry[]>;\n        if (this.nodeId) {\n            const node$ = this.nodeApiService.getNode(this.nodeId);\n            const customAspect$ = this.aspectListService\n                .getCustomAspects(this.aspectListService.getVisibleAspects())\n                .pipe(map((customAspects) => customAspects.flatMap((customAspect) => customAspect.entry.id)));\n            aspects$ = zip(node$, customAspect$).pipe(\n                tap(([node, customAspects]) => {\n                    this.nodeAspects = node.aspectNames.filter(\n                        (aspect) => this.aspectListService.getVisibleAspects().includes(aspect) || customAspects.includes(aspect)\n                    );\n                    this.nodeAspectStatus = [...this.nodeAspects];\n                    this.notDisplayedAspects = node.aspectNames.filter(\n                        (aspect) => !this.aspectListService.getVisibleAspects().includes(aspect) && !customAspects.includes(aspect)\n                    );\n                    this.valueChanged.emit([...this.nodeAspects, ...this.notDisplayedAspects]);\n                    this.updateCounter.emit(this.nodeAspects.length);\n                }),\n                concatMap(() => this.aspectListService.getAspects()),\n                takeUntilDestroyed(this.destroyRef)\n            );\n        } else {\n            aspects$ = this.aspectListService.getAspects().pipe(takeUntilDestroyed(this.destroyRef));\n        }\n        this.aspects$ = aspects$.pipe(map((aspects) => aspects.filter((aspect) => !this.excludedAspects.includes(aspect.entry.id))));\n    }\n\n    onCheckBoxClick(event: Event) {\n        event.stopImmediatePropagation();\n    }\n\n    onChange(change: MatCheckboxChange, prefixedName: string) {\n        if (change.checked) {\n            this.nodeAspects.push(prefixedName);\n        } else {\n            this.nodeAspects.splice(this.nodeAspects.indexOf(prefixedName), 1);\n        }\n        this.updateEqualityOfAspectList();\n        this.valueChanged.emit([...this.nodeAspects, ...this.notDisplayedAspects]);\n        this.updateCounter.emit(this.nodeAspects.length);\n    }\n\n    reset() {\n        if (this.nodeAspectStatus && this.nodeAspectStatus.length > 0) {\n            this.nodeAspects.splice(0, this.nodeAspects.length, ...this.nodeAspectStatus);\n            this.hasEqualAspect = true;\n            this.valueChanged.emit([...this.nodeAspects, ...this.notDisplayedAspects]);\n            this.updateCounter.emit(this.nodeAspects.length);\n        } else {\n            this.clear();\n        }\n    }\n\n    clear() {\n        this.nodeAspects = [];\n        this.updateEqualityOfAspectList();\n        this.valueChanged.emit([...this.nodeAspects, ...this.notDisplayedAspects]);\n        this.updateCounter.emit(this.nodeAspects.length);\n    }\n\n    getId(aspect: any): string {\n        return aspect?.entry?.title ? aspect?.entry?.title : aspect?.entry?.id.replace(':', '-');\n    }\n\n    getTitle(aspect: any): string {\n        return aspect?.entry?.title ? aspect?.entry?.title : aspect?.entry?.id;\n    }\n\n    private updateEqualityOfAspectList() {\n        if (this.nodeAspectStatus.length !== this.nodeAspects.length) {\n            this.hasEqualAspect = false;\n        } else {\n            this.hasEqualAspect = this.nodeAspects.every((aspect) => this.nodeAspectStatus.includes(aspect));\n        }\n    }\n}\n","<div id=\"aspect-list-container\" class=\"adf-aspect-list-container\" *ngIf=\"aspects$ | async as aspects; else loading\">\n    <mat-accordion class=\"adf-accordion-aspect-list\">\n        <div class=\"adf-accordion-aspect-list-item\"\n             *ngFor=\"let aspect of aspects; let colIndex = index\"\n             [ngClass]=\"{'adf-hover' : !isPanelOpen[colIndex]}\">\n            <mat-checkbox class=\"adf-aspect-list-check-button\" [id]=\"'aspect-list-'+colIndex+'-check'\"\n                          [checked]=\"nodeAspects?.includes(aspect?.entry?.id)\"\n                          (click)=\"onCheckBoxClick($event)\"\n                          [aria-label]=\"getTitle(aspect)\"\n                          (change)=\"onChange($event, aspect?.entry?.id)\"/>\n            <mat-expansion-panel\n                                 [id]=\"'aspect-list-'+getId(aspect)\"\n                                 class=\"adf-accordion-aspect-list-expansion-panel\"\n                                 (opened)=\"isPanelOpen[colIndex] = true\"\n                                 (afterCollapse)=\"isPanelOpen[colIndex] = false\"\n            >\n                <mat-expansion-panel-header class='adf-accordion-aspect-list-expansion-panel-header'\n                                            [id]=\"'aspect-list-'+(getId(aspect))+'header'\">\n                    <mat-panel-title class=\"adf-accordion-aspect-list-expansion-panel-header-title\">\n                        {{getTitle(aspect)}}\n                    </mat-panel-title>\n                    <mat-panel-description\n                        class=\"adf-accordion-aspect-list-expansion-panel-header-description\"\n                        [id]=\"'aspect-list-'+colIndex+'-title'\"\n                        [title]=\"getTitle(aspect)\">\n                        {{getTitle(aspect)}}\n                    </mat-panel-description>\n                </mat-expansion-panel-header>\n                <p class=\"adf-property-paragraph\" [id]=\"'aspect-list-'+colIndex+'-description'\"> {{aspect?.entry?.description}}</p>\n\n                <table mat-table [dataSource]=\"aspect?.entry?.properties\" *ngIf=\"aspect?.entry?.properties?.length > 0\" class=\"adf-aspect-property-table\" [id]=\"'aspect-list-'+colIndex+'-properties-table'\">\n                    <ng-container matColumnDef=\"name\">\n                      <th class=\"adf-aspect-property-table-column-name\" mat-header-cell *matHeaderCellDef> {{'ADF-ASPECT-LIST.PROPERTY_NAME' | translate}} </th>\n                      <td class=\"adf-aspect-property-table-column-name adf-aspect-property-table-cell\" mat-cell *matCellDef=\"let property\"> {{property.id}} </td>\n                    </ng-container>\n                    <ng-container matColumnDef=\"title\">\n                      <th class=\"adf-aspect-property-table-column-title\" mat-header-cell *matHeaderCellDef> {{'ADF-ASPECT-LIST.DESCRIPTION' | translate}} </th>\n                      <td class=\"adf-aspect-property-table-column-title adf-aspect-property-table-cell\" mat-cell *matCellDef=\"let property\"> {{property.title}} </td>\n                    </ng-container>\n                    <ng-container matColumnDef=\"dataType\">\n                      <th class=\"adf-aspect-property-table-column-data-type\" mat-header-cell *matHeaderCellDef> {{'ADF-ASPECT-LIST.DATA_TYPE' | translate}} </th>\n                      <td class=\"adf-aspect-property-table-column-data-type adf-aspect-property-table-cell\" mat-cell *matCellDef=\"let property\"> {{property.dataType}} </td>\n                    </ng-container>\n                    <tr mat-header-row *matHeaderRowDef=\"propertyColumns\"></tr>\n                    <tr mat-row *matRowDef=\"let row; columns: propertyColumns;\"></tr>\n                  </table>\n            </mat-expansion-panel>\n        </div>\n    </mat-accordion>\n</div>\n\n<ng-template #loading>\n    <div class=\"adf-aspect-list-spinner\">\n       <mat-progress-spinner mode=\"indeterminate\" id=\"adf-aspect-spinner\" />\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 { Component, Inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { AspectListDialogComponentData } from './aspect-list-dialog-data.interface';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { AspectListComponent } from './aspect-list.component';\nimport { AutoFocusDirective } from '../directives/auto-focus.directive';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n    selector: 'adf-aspect-list-dialog',\n    standalone: true,\n    imports: [CommonModule, MatDialogModule, TranslateModule, MatButtonModule, AspectListComponent, AutoFocusDirective],\n    templateUrl: './aspect-list-dialog.component.html',\n    styleUrls: ['./aspect-list-dialog.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class AspectListDialogComponent implements OnInit {\n    title: string;\n    description: string;\n    currentNodeId: string;\n    overTableMessage: string;\n    counter = 0;\n\n    currentAspectSelection: string[] = [];\n\n    constructor(private dialog: MatDialogRef<AspectListDialogComponent>, @Inject(MAT_DIALOG_DATA) public data: AspectListDialogComponentData) {\n        this.title = data.title;\n        this.description = data.description;\n        this.overTableMessage = data.overTableMessage;\n        this.currentNodeId = data.nodeId;\n    }\n\n    ngOnInit() {\n        this.dialog.backdropClick().subscribe(() => {\n            this.close();\n        });\n        this.dialog.keydownEvents().subscribe((event) => {\n            // Esc\n            if (event.keyCode === 27) {\n                event.preventDefault();\n                event.stopImmediatePropagation();\n                this.close();\n            }\n        });\n    }\n\n    onValueChanged(aspectList: string[]) {\n        this.currentAspectSelection = aspectList;\n    }\n\n    onUpdateCounter(count: number) {\n        this.counter = count;\n    }\n\n    close() {\n        this.data.select.complete();\n    }\n\n    onCancel() {\n        this.close();\n    }\n\n    onApply() {\n        this.data.select.next(this.currentAspectSelection);\n        this.close();\n    }\n}\n","<div mat-dialog-title data-automation-id=\"aspect-list-dialog-title\" class=\"adf-aspect-list-dialog\">\n    <h1 class=\"adf-aspect-list-dialog-title\">{{title | translate}}</h1>\n    <div class=\"adf-aspect-list-dialog-description\">{{description | translate}}</div>\n</div>\n\n<div class=\"adf-aspect-list-dialog-information\">\n    <p id=\"aspect-list-dialog-over-table-message\">{{overTableMessage | translate}}</p>\n    <p id=\"aspect-list-dialog-counter\">{{counter}}\n        {{'ADF-ASPECT-LIST.DIALOG.SELECTED' | translate}}</p>\n</div>\n<mat-dialog-content class=\"adf-aspect-dialog-content\">\n    <adf-aspect-list #aspectList (valueChanged)=\"onValueChanged($event)\" (updateCounter)=\"onUpdateCounter($event)\" [nodeId]=\"currentNodeId\" [excludedAspects]=\"data.excludedAspects\" />\n</mat-dialog-content>\n\n<mat-dialog-actions class=\"adf-aspect-list-dialog\">\n    <div>\n        <button mat-button (click)=\"aspectList.reset()\" id=\"aspect-list-dialog-actions-reset\"\n            data-automation-id=\"aspect-list-dialog-actions-reset\">{{\n            'ADF-ASPECT-LIST.DIALOG.RESET' | translate }}\n        </button>\n\n        <button mat-button (click)=\"aspectList.clear()\" id=\"aspect-list-dialog-actions-clear\"\n            data-automation-id=\"aspect-list-dialog-actions-clear\">{{\n            'ADF-ASPECT-LIST.DIALOG.CLEAR' | translate }}\n        </button>\n    </div>\n    <div>\n        <button mat-button adf-auto-focus (click)=\"onCancel()\" id=\"aspect-list-dialog-actions-cancel\"\n            data-automation-id=\"aspect-list-dialog-actions-cancel\">{{\n            'ADF-ASPECT-LIST.DIALOG.CANCEL' | translate }}\n        </button>\n\n        <button mat-button (click)=\"onApply()\" id=\"aspect-list-dialog-actions-apply\"\n            [disabled]=\"aspectList.hasEqualAspect\"\n            data-automation-id=\"aspect-list-dialog-actions-apply\">{{\n            'ADF-ASPECT-LIST.DIALOG.APPLY' | translate }}\n        </button>\n    </div>\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 { MatDialog } from '@angular/material/dialog';\nimport { Observable, Subject } from 'rxjs';\nimport { AspectListDialogComponentData } from '../aspect-list-dialog-data.interface';\nimport { AspectListDialogComponent } from '../aspect-list-dialog.component';\nimport { OverlayContainer } from '@angular/cdk/overlay';\nimport { TagService } from '../../tag';\nimport { CategoryService } from '../../category';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class DialogAspectListService {\n    constructor(\n        private dialog: MatDialog,\n        private overlayContainer: OverlayContainer,\n        private tagService: TagService,\n        private categoryService: CategoryService\n    ) {}\n\n    openAspectListDialog(nodeId?: string, selectorAutoFocusedOnClose?: string): Observable<string[]> {\n        const select = new Subject<string[]>();\n        select.subscribe({\n            complete: this.close.bind(this)\n        });\n\n        const data: AspectListDialogComponentData = {\n            title: 'ADF-ASPECT-LIST.DIALOG.TITLE',\n            description: 'ADF-ASPECT-LIST.DIALOG.DESCRIPTION',\n            overTableMessage: 'ADF-ASPECT-LIST.DIALOG.OVER-TABLE-MESSAGE',\n            select,\n            nodeId,\n            excludedAspects: [\n                ...(this.tagService.areTagsEnabled() ? [] : ['cm:taggable']),\n                ...(this.categoryService.areCategoriesEnabled() ? [] : ['cm:generalclassifiable'])\n            ]\n        };\n\n        this.openDialog(data, 'adf-aspect-list-dialog', '750px', selectorAutoFocusedOnClose);\n        return select;\n    }\n\n    private openDialog(data: AspectListDialogComponentData, panelClass: string, width: string, selectorAutoFocusedOnClose?: string) {\n        this.dialog\n            .open(AspectListDialogComponent, {\n                data,\n                panelClass,\n                width,\n                role: 'dialog',\n                disableClose: true\n            })\n            .afterClosed()\n            .subscribe(() => this.focusOnClose(selectorAutoFocusedOnClose));\n        this.overlayContainer.getContainerElement().setAttribute('role', 'main');\n    }\n\n    close() {\n        this.dialog.closeAll();\n        this.overlayContainer.getContainerElement().setAttribute('role', 'region');\n    }\n\n    private focusOnClose(selectorAutoFocusedOnClose: string): void {\n        if (selectorAutoFocusedOnClose) {\n            document.querySelector<HTMLElement>(selectorAutoFocusedOnClose)?.focus();\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 } from '@angular/core';\nimport { DialogAspectListService } from './dialog-aspect-list.service';\nimport { CardViewContentUpdateService } from '../../common/services/card-view-content-update.service';\nimport { NodesApiService } from '../../common/services/nodes-api.service';\nimport { TagService } from '../../tag/services/tag.service';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class NodeAspectService {\n    constructor(\n        private nodesApiService: NodesApiService,\n        private dialogAspectListService: DialogAspectListService,\n        private cardViewContentUpdateService: CardViewContentUpdateService,\n        private tagService: TagService\n    ) {}\n\n    updateNodeAspects(nodeId: string, selectorAutoFocusedOnClose?: string) {\n        this.dialogAspectListService.openAspectListDialog(nodeId, selectorAutoFocusedOnClose).subscribe((aspectList) => {\n            this.nodesApiService.updateNode(nodeId, { aspectNames: [...aspectList] }).subscribe((updatedNode) => {\n                this.nodesApiService.nodeUpdated.next(updatedNode);\n                this.cardViewContentUpdateService.updateNodeAspect(updatedNode);\n                this.tagService.refresh.emit();\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, Input, OnChanges, SimpleChanges, ViewEncapsulation } from '@angular/core';\nimport { Node } from '@alfresco/js-api';\nimport { NodeAspectService } from '../../../aspect-list/services/node-aspect.service';\nimport { ContentMetadataCustomPanel, PresetConfig } from '../../interfaces/content-metadata.interfaces';\nimport { VersionCompatibilityService } from '../../../version-compatibility/version-compatibility.service';\nimport { ContentService } from '../../../common/services/content.service';\nimport { AllowableOperationsEnum } from '../../../common/models/allowable-operations.enum';\nimport { CommonModule } from '@angular/common';\nimport { MatCardModule } from '@angular/material/card';\nimport { ContentMetadataComponent } from '../content-metadata/content-metadata.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n    selector: 'adf-content-metadata-card',\n    standalone: true,\n    imports: [CommonModule, MatCardModule, ContentMetadataComponent, MatButtonModule, MatIconModule, TranslateModule],\n    templateUrl: './content-metadata-card.component.html',\n    styleUrls: ['./content-metadata-card.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    host: { class: 'adf-content-metadata-card' }\n})\nexport class ContentMetadataCardComponent implements OnChanges {\n    /** (required) The node entity to fetch metadata about */\n    @Input({ required: true })\n    node: Node;\n\n    /**\n     * This flag displays/hides empty metadata\n     * fields.\n     */\n    @Input()\n    displayEmpty?: boolean = false;\n\n    /**\n     * This flag displays desired aspect when open for the first time fields.\n     */\n    @Input()\n    displayAspect?: string = null;\n\n    /** Display tags in the card */\n    @Input()\n    displayTags = true;\n\n    /** Display categories in the card */\n    @Input()\n    displayCategories = true;\n\n    /**\n     * Name or configuration of the metadata preset, which defines aspects\n     * and their properties.\n     */\n    @Input({ required: true })\n    preset: string | PresetConfig;\n\n    /**\n     * This flag sets the metadata in read only mode preventing changes.\n     */\n    @Input()\n    readOnly? = false;\n\n    /**\n     * This flag allows the component to display more\n     * than one accordion at a time.\n     */\n    @Input()\n    multi? = false;\n\n    /** This flag toggles editable of content. */\n    @Input()\n    editable? = false;\n\n    /** List of custom metadata panels to be displayed with registered custom components */\n    @Input()\n    customPanels: ContentMetadataCustomPanel[];\n\n    private _displayDefaultProperties: boolean = true;\n\n    /**\n     * This flag displays/hides the metadata properties.\n     */\n    @Input()\n    set displayDefaultProperties(value: boolean) {\n        this._displayDefaultProperties = value;\n        this.onDisplayDefaultPropertiesChange();\n    }\n\n    get displayDefaultProperties(): boolean {\n        return this._displayDefaultProperties;\n    }\n\n    expanded: boolean;\n\n    editAspectSupported = false;\n\n    constructor(\n        private contentService: ContentService,\n        private nodeAspectService: NodeAspectService,\n        private versionCompatibilityService: VersionCompatibilityService\n    ) {\n        this.editAspectSupported = this.versionCompatibilityService.isVersionSupported('7');\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes.displayAspect?.currentValue) {\n            this.expanded = true;\n        }\n    }\n\n    onDisplayDefaultPropertiesChange(): void {\n        this.expanded = !this._displayDefaultProperties;\n    }\n\n    hasAllowableOperations() {\n        return this.contentService.hasAllowableOperations(this.node, AllowableOperationsEnum.UPDATE);\n    }\n\n    openAspectDialog() {\n        this.nodeAspectService.updateNodeAspects(this.node.id);\n    }\n\n    isEditAspectSupported(): boolean {\n        return !this.readOnly && this.hasAllowableOperations() && this.editAspectSupported;\n    }\n}\n","<mat-card appearance=\"outlined\" *ngIf=\"node\" class=\"adf-content-metadata-card-view\">\n    <mat-card-content class=\"adf-content-metadata-card-view-content\">\n        <adf-content-metadata\n            [displayDefaultProperties]=\"displayDefaultProperties\"\n            [expanded]=\"expanded\"\n            [node]=\"node\"\n            [displayEmpty]=\"displayEmpty\"\n            [readOnly]=\"!editable\"\n            [multi]=\"multi\"\n            [displayAspect]=\"displayAspect\"\n            [preset]=\"preset\"\n            [displayTags]=\"displayTags\"\n            [displayCategories]=\"displayCategories\"\n            [customPanels]=\"customPanels\" />\n    </mat-card-content>\n    <mat-card-footer class=\"adf-content-metadata-card-footer adf-content-metadata-card-view-footer\">\n        <div>\n            <button *ngIf=\"isEditAspectSupported()\"\n                mat-icon-button\n                (click)=\"openAspectDialog()\"\n                [attr.title]=\"'CORE.METADATA.ACTIONS.EDIT_ASPECTS' | translate\"\n                [attr.aria-label]=\"'CORE.METADATA.ACCESSIBILITY.EDIT_ASPECTS' | translate\"\n                data-automation-id=\"meta-data-card-edit-aspect\">\n                <mat-icon>menu</mat-icon>\n            </button>\n        </div>\n    </mat-card-footer>\n</mat-card>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 declare interface AspectOrientedConfig {\n    [key: string]: string | string[] | 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 Property {\n    name: string;\n    title: string;\n    description?: string;\n    dataType: string;\n    defaultValue?: any;\n    mandatory: boolean;\n    multiValued: boolean;\n    editable?: boolean;\n    protected?: boolean;\n    enforced?: boolean;\n    indexed?: boolean;\n    url?: 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 { Property } from './property.interface';\n\nexport interface PropertyGroup {\n    name: string;\n    title: string;\n    description?: string;\n    properties: {\n        [key: string]: Property;\n    };\n}\n\nexport interface PropertyGroupContainer {\n    [key: string]: PropertyGroup;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Property } from './property.interface';\n\nexport interface OrganisedPropertyGroup {\n    title: string;\n    name?: string;\n    properties: Property[];\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY 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 '@alfresco/adf-core';\n\nexport interface CardViewGroup {\n    title: string;\n    properties: CardViewItem[];\n    editable: boolean;\n    expanded?: 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 { PropertyGroupContainer } from './property-group.interface';\nimport { OrganisedPropertyGroup } from './organised-property-group.interface';\n\nexport interface ContentMetadataConfig {\n    isGroupAllowed(groupName: string): boolean;\n    reorganiseByConfig(propertyGroups: PropertyGroupContainer): OrganisedPropertyGroup[];\n    filterExcludedPreset(propertyGroups: OrganisedPropertyGroup[]): OrganisedPropertyGroup[];\n    appendAllPreset(propertyGroups: PropertyGroupContainer): OrganisedPropertyGroup[];\n    isIncludeAllEnabled(): 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 declare type InDifferentConfig = '*';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Property } from './property.interface';\n\nexport interface LayoutOrientedConfigItem {\n    aspect?: string;\n    type?: string;\n    properties: string | string[] | Property[];\n    includeAll?: boolean;\n    exclude?: string | string[];\n    editable?: boolean;\n}\n\nexport interface LayoutOrientedConfigLayoutBlock {\n    title: string;\n    items: LayoutOrientedConfigItem[];\n}\n\nexport type LayoutOrientedConfig = Array<LayoutOrientedConfigLayoutBlock>;\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { InDifferentConfig } from './indifferent-config.interface';\nimport { AspectOrientedConfig } from './aspect-oriented-config.interface';\nimport { LayoutOrientedConfig } from './layout-oriented-config.interface';\n\nexport declare type PresetConfig = InDifferentConfig | AspectOrientedConfig | LayoutOrientedConfig;\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ContentMetadataPanel } from './content-metadata-panel.interface';\n\nexport interface ContentMetadataCustomPanel extends ContentMetadataPanel {\n    component: 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 ContentMetadataPanel {\n    panelTitle: string;\n    expanded?: 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 * from './aspect-oriented-config.interface';\nexport * from './property.interface';\nexport * from './property-group.interface';\nexport * from './organised-property-group.interface';\nexport * from './card-view-group.interface';\nexport * from './content-metadata-config.interface';\nexport * from './indifferent-config.interface';\nexport * from './layout-oriented-config.interface';\nexport * from './preset-config.interface';\nexport * from './content-metadata-custom-panel.interface';\nexport * from './content-metadata-panel.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 { NgModule } from '@angular/core';\nimport { ContentMetadataComponent } from './components/content-metadata/content-metadata.component';\nimport { ContentMetadataCardComponent } from './components/content-metadata-card/content-metadata-card.component';\nimport { ContentMetadataHeaderComponent } from './components/content-metadata/content-metadata-header.component';\n\nexport const CONTENT_METADATA_DIRECTIVES = [ContentMetadataComponent, ContentMetadataCardComponent, ContentMetadataHeaderComponent] as const;\n\n/** @deprecated use `...CONTENT_METADATA_DIRECTIVES` instead */\n@NgModule({\n    imports: [...CONTENT_METADATA_DIRECTIVES],\n    exports: [...CONTENT_METADATA_DIRECTIVES]\n})\nexport class ContentMetadataModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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/content-metadata/content-metadata.component';\nexport * from './components/content-metadata/content-metadata-header.component';\nexport * from './components/content-metadata-card/content-metadata-card.component';\n\nexport * from './services/basic-properties.service';\nexport * from './services/content-metadata.service';\nexport * from './services/property-descriptors.service';\nexport * from './services/property-groups-translator.service';\nexport * from './services/config/content-metadata-config.factory';\nexport * from './services/content-type-property.service';\nexport * from './services/config/indifferent-config.service';\nexport * from './services/config/layout-oriented-config.service';\nexport * from './services/config/aspect-oriented-config.service';\n\nexport * from './interfaces/content-metadata.interfaces';\n\nexport * from './content-metadata.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 { PermissionElement } from '@alfresco/js-api';\n\nexport class PermissionDisplayModel implements PermissionElement {\n    authorityId?: string;\n    name?: string;\n    accessStatus?: 'ALLOWED' | 'DENIED' | string;\n    isInherited: boolean = false;\n    icon: string;\n    readonly?: boolean;\n\n    constructor(obj?: any) {\n        if (obj) {\n            this.authorityId = obj.authorityId;\n            this.name = obj.name;\n            this.accessStatus = obj.accessStatus;\n            this.isInherited = obj.isInherited !== null && obj.isInherited !== undefined ? obj.isInherited : false;\n            this.icon = obj.icon ? obj.icon : 'vpn_key';\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 { AlfrescoApiService } from '../../services/alfresco-api.service';\nimport { TranslationService } from '@alfresco/adf-core';\nimport { NodesApiService } from '../../common/services/nodes-api.service';\nimport { EcmUserModel } from '../../common/models/ecm-user.model';\nimport { Group, GroupMemberPaging, GroupsApi, Node, PathElement, PermissionElement, SearchRequest } from '@alfresco/js-api';\nimport { SearchService } from '../../search/services/search.service';\nimport { Injectable } from '@angular/core';\nimport { forkJoin, from, Observable, of, throwError } from 'rxjs';\nimport { catchError, map, switchMap } from 'rxjs/operators';\nimport { PermissionDisplayModel } from '../models/permission.model';\nimport { RoleModel } from '../models/role.model';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class NodePermissionService {\n    private _groupsApi: GroupsApi;\n    get groupsApi(): GroupsApi {\n        this._groupsApi = this._groupsApi ?? new GroupsApi(this.apiService.getInstance());\n        return this._groupsApi;\n    }\n\n    constructor(\n        private apiService: AlfrescoApiService,\n        private searchApiService: SearchService,\n        private nodeService: NodesApiService,\n        private translation: TranslationService\n    ) {}\n\n    /**\n     * Gets a list of roles for the current node.\n     *\n     * @param node The target node\n     * @returns Array of strings representing the roles\n     */\n    getNodeRoles(node: Node): Observable<string[]> {\n        if (node.path.elements.some((el) => el.nodeType === 'st:site' || el.nodeType === 'st:sites')) {\n            const searchRequest = this.buildRetrieveSiteQueryBody(node.path.elements);\n            return this.searchApiService.searchByQueryBody(searchRequest).pipe(\n                switchMap((siteNodeList) => {\n                    const siteName = siteNodeList.list.entries[0].entry.name;\n                    return this.getGroupMembersBySiteName(siteName);\n                })\n            );\n        } else {\n            return of(node.permissions?.settable);\n        }\n    }\n\n    /**\n     * Get permissions for a given node\n     *\n     * @param node Node to check permissions for\n     * @returns list of permission models\n     */\n    getNodePermissions(node: Node): PermissionDisplayModel[] {\n        const result: PermissionDisplayModel[] = [];\n\n        if (node?.permissions?.locallySet) {\n            node.permissions.locallySet.map((permissionElement) => {\n                result.push(new PermissionDisplayModel(permissionElement));\n            });\n        }\n\n        if (node?.permissions?.inherited) {\n            node.permissions.inherited.map((permissionElement) => {\n                const permissionInherited = new PermissionDisplayModel(permissionElement);\n                permissionInherited.isInherited = true;\n                result.push(permissionInherited);\n            });\n        }\n        return result;\n    }\n\n    /**\n     * Updates the permission role for a node.\n     *\n     * @param node Target node\n     * @param updatedPermissionRole Permission role to update or add\n     * @returns Node with updated permission\n     */\n    updatePermissionRole(node: Node, updatedPermissionRole: PermissionElement): Observable<Node> {\n        const permissionBody = { permissions: { locallySet: [] } };\n        const index = node.permissions.locallySet.map((permission) => permission.authorityId).indexOf(updatedPermissionRole.authorityId);\n        permissionBody.permissions.locallySet = permissionBody.permissions.locallySet.concat(node.permissions.locallySet);\n        if (index !== -1) {\n            permissionBody.permissions.locallySet[index] = updatedPermissionRole;\n        } else {\n            permissionBody.permissions.locallySet.push(updatedPermissionRole);\n        }\n        return this.nodeService.updateNode(node.id, permissionBody);\n    }\n\n    /**\n     * Update permissions for a node.\n     *\n     * @param nodeId ID of the target node\n     * @param permissionList New permission settings\n     * @returns Node with updated permissions\n     */\n    updateNodePermissions(nodeId: string, permissionList: PermissionElement[]): Observable<Node> {\n        return this.nodeService.getNode(nodeId).pipe(switchMap((node) => this.updateLocallySetPermissions(node, permissionList)));\n    }\n\n    /**\n     * Updates the locally set permissions for a node.\n     *\n     * @param node ID of the target node\n     * @param permissions Permission settings\n     * @returns Node with updated permissions\n     */\n    updateLocallySetPermissions(node: Node, permissions: PermissionElement[]): Observable<Node> {\n        const permissionBody = { permissions: { locallySet: [] } };\n        const permissionList = permissions;\n        const duplicatedPermissions = this.getDuplicatedPermissions(node.permissions.locallySet, permissionList);\n        if (duplicatedPermissions.length > 0) {\n            const list = duplicatedPermissions\n                .map((permission) => 'authority -> ' + permission.authorityId + ' / role -> ' + permission.name)\n                .join(', ');\n            const duplicatePermissionMessage: string = this.translation.instant('PERMISSION_MANAGER.ERROR.DUPLICATE-PERMISSION', { list });\n            return throwError(duplicatePermissionMessage);\n        }\n        permissionBody.permissions.locallySet = node.permissions.locallySet ? node.permissions.locallySet.concat(permissionList) : permissionList;\n        return this.nodeService.updateNode(node.id, permissionBody);\n    }\n\n    private getDuplicatedPermissions(nodeLocallySet: PermissionElement[], permissionListAdded: PermissionElement[]): PermissionElement[] {\n        const duplicatePermissions: PermissionElement[] = [];\n        if (nodeLocallySet) {\n            permissionListAdded.forEach((permission) => {\n                const duplicate = nodeLocallySet.find((localPermission) => this.isEqualPermission(localPermission, permission));\n                if (duplicate) {\n                    duplicatePermissions.push(duplicate);\n                }\n            });\n        }\n        return duplicatePermissions;\n    }\n\n    private isEqualPermission(oldPermission: PermissionElement, newPermission: PermissionElement): boolean {\n        return (\n            oldPermission.accessStatus === newPermission.accessStatus &&\n            oldPermission.authorityId === newPermission.authorityId &&\n            oldPermission.name === newPermission.name\n        );\n    }\n\n    /**\n     * Removes a permission setting from a node.\n     *\n     * @param node ID of the target node\n     * @param permissionToRemove Permission setting to remove\n     * @returns Node with modified permissions\n     */\n    removePermission(node: Node, permissionToRemove: PermissionElement): Observable<Node> {\n        const permissionBody = { permissions: { locallySet: [] } };\n        const index = node.permissions.locallySet.map((permission) => permission.authorityId).indexOf(permissionToRemove.authorityId);\n\n        if (index !== -1) {\n            node.permissions.locallySet.splice(index, 1);\n            permissionBody.permissions.locallySet = node.permissions.locallySet;\n            return this.nodeService.updateNode(node.id, permissionBody);\n        } else {\n            return of(node);\n        }\n    }\n\n    private getGroupMembersBySiteName(siteName: string): Observable<string[]> {\n        const groupName = 'GROUP_site_' + siteName;\n        return this.getGroupMemberByGroupName(groupName).pipe(\n            map((groupMemberPaging) => {\n                const displayResult: string[] = [];\n                groupMemberPaging.list.entries.forEach((member) => {\n                    displayResult.push(this.formattedRoleName(member.entry.displayName, 'site_' + siteName));\n                });\n                return displayResult;\n            })\n        );\n    }\n\n    /**\n     * Gets all members related to a group name.\n     *\n     * @param groupName Name of group to look for members\n     * @param opts Extra options supported by JS-API\n     * @returns List of members\n     */\n    getGroupMemberByGroupName(groupName: string, opts?: any): Observable<GroupMemberPaging> {\n        return from(this.groupsApi.listGroupMemberships(groupName, opts));\n    }\n\n    private formattedRoleName(displayName, siteName): string {\n        return displayName.replace(siteName + '_', '');\n    }\n\n    private buildRetrieveSiteQueryBody(nodePath: PathElement[]): SearchRequest {\n        const pathNames = nodePath.map((node) => 'name: \"' + node.name + '\"');\n        const builtPathNames = pathNames.join(' OR ');\n\n        return {\n            query: {\n                query: builtPathNames\n            },\n            paging: {\n                maxItems: 100,\n                skipCount: 0\n            },\n            include: ['aspectNames', 'properties'],\n            filterQueries: [\n                {\n                    query: `TYPE:'st:site'`\n                }\n            ]\n        };\n    }\n\n    getLocalPermissions(node: Node): PermissionDisplayModel[] {\n        const result: PermissionDisplayModel[] = [];\n\n        if (node?.permissions?.locallySet) {\n            node.permissions.locallySet.forEach((permissionElement) => {\n                result.push(new PermissionDisplayModel(permissionElement));\n            });\n        }\n\n        return result;\n    }\n\n    getInheritedPermission(node: Node): PermissionDisplayModel[] {\n        const result: PermissionDisplayModel[] = [];\n\n        if (node?.permissions?.inherited) {\n            node.permissions.inherited.forEach((permissionElement) => {\n                const permissionInherited = new PermissionDisplayModel(permissionElement);\n                permissionInherited.isInherited = true;\n                result.push(permissionInherited);\n            });\n        }\n        return result;\n    }\n\n    /**\n     * Removes permissions setting from a node.\n     *\n     * @param node target node with permission\n     * @param permissions Permissions to remove\n     * @returns Node with modified permissions\n     */\n    removePermissions(node: Node, permissions: PermissionElement[]): Observable<Node> {\n        const permissionBody = { permissions: { locallySet: [] } };\n\n        permissions.forEach((permission) => {\n            const index = node.permissions.locallySet.findIndex((locallySet) => locallySet.authorityId === permission.authorityId);\n            if (index !== -1) {\n                node.permissions.locallySet.splice(index, 1);\n            }\n        });\n        permissionBody.permissions.locallySet = node.permissions.locallySet;\n        return this.nodeService.updateNode(node.id, permissionBody);\n    }\n\n    /**\n     * updates permissions setting from a node.\n     *\n     * @param node target node with permission\n     * @param permissions Permissions to update\n     * @returns Node with modified permissions\n     */\n    updatePermissions(node: Node, permissions: PermissionElement[]): Observable<Node> {\n        const permissionBody = { permissions: { locallySet: [] } };\n        permissionBody.permissions.locallySet = permissions;\n        return this.nodeService.updateNode(node.id, permissionBody);\n    }\n\n    /**\n     * Gets all node detail for nodeId along with settable permissions.\n     *\n     * @param nodeId Id of the node\n     * @returns node and it's associated roles { node: Node; roles: RoleModel[] }\n     */\n    getNodeWithRoles(nodeId: string): Observable<{ node: Node; roles: RoleModel[] }> {\n        return this.nodeService.getNode(nodeId).pipe(\n            switchMap((node) =>\n                forkJoin({\n                    node: of(node),\n                    roles: this.getNodeRoles(node).pipe(\n                        catchError(() => of(node.permissions?.settable)),\n                        map((_roles) => _roles.map((role) => ({ role, label: role })))\n                    )\n                })\n            )\n        );\n    }\n\n    transformNodeToUserPerson(node: Node): { person: EcmUserModel; group: Group } {\n        let person = null;\n        let group: Group = null;\n        if (node.nodeType === 'cm:person') {\n            const firstName = node.properties['cm:firstName'];\n            const lastName = node.properties['cm:lastName'];\n            const email = node.properties['cm:email'];\n            const id = node.properties['cm:userName'];\n            person = new EcmUserModel({ id, firstName, lastName, email });\n        }\n\n        if (node.nodeType === 'cm:authorityContainer') {\n            const displayName = node.properties['cm:authorityDisplayName'] || node.properties['cm:authorityName'];\n            const id = node.properties['cm:authorityName'];\n            group = { displayName, id };\n        }\n        return { person, group };\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 { Group, Node, NodeEntry, PermissionElement } from '@alfresco/js-api';\nimport { PermissionDisplayModel } from './permission.model';\nimport { RoleModel } from './role.model';\nimport { EcmUserModel } from '../../common/models/ecm-user.model';\n\nexport interface NodePermissionsModel {\n    node: Node;\n    roles: RoleModel[];\n    inheritedPermissions: PermissionDisplayModel[];\n    localPermissions: PermissionDisplayModel[];\n}\n\nexport class MemberModel {\n    id: string;\n    role: string;\n    accessStatus: 'ALLOWED' | 'DENIED' | string;\n    entry: {\n        person?: EcmUserModel;\n        group?: Group;\n    };\n    readonly: boolean = false;\n\n    constructor(input?) {\n        if (input) {\n            Object.assign(this, input);\n        }\n    }\n\n    static parseFromSearchResult({ entry }: NodeEntry): MemberModel {\n        const result = new MemberModel();\n\n        if (entry.nodeType === 'cm:person') {\n            const person = new EcmUserModel({\n                firstName: entry.properties['cm:firstName'],\n                lastName: entry.properties['cm:lastName'],\n                email: entry.properties['cm:email'],\n                id: entry.properties['cm:userName']\n            });\n\n            result.id = person.id;\n            result.entry = { person };\n            result.accessStatus = 'ALLOWED';\n\n            return result;\n        }\n\n        if (entry.nodeType === 'cm:authorityContainer') {\n            const group: Group = {\n                id: entry.properties['cm:authorityName'],\n                displayName: entry.properties['cm:authorityDisplayName'] || entry.properties['cm:authorityName']\n            };\n\n            result.id = group.id;\n            result.entry = { group };\n            result.accessStatus = 'ALLOWED';\n\n            return result;\n        }\n        return null;\n    }\n\n    toPermissionElement(): PermissionElement {\n        return {\n            authorityId: this.id,\n            name: this.role,\n            accessStatus: this.accessStatus\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 { SearchRequest } from '@alfresco/js-api';\nimport { Injectable, Optional, Inject, InjectionToken } from '@angular/core';\nimport { SearchConfigurationInterface } from '../../../common/interfaces/search-configuration.interface';\n\nexport const SEARCH_QUERY_TOKEN = new InjectionToken<QueryProvider>('Alfresco Search Query Token');\nexport interface QueryProvider {\n    query: string;\n}\n\n@Injectable()\nexport class SearchPermissionConfigurationService implements SearchConfigurationInterface {\n    constructor(\n        @Optional()\n        @Inject(SEARCH_QUERY_TOKEN)\n        private queryProvider: QueryProvider\n    ) {}\n\n    public generateQueryBody(searchTerm: string, maxResults: number, skipCount: number): SearchRequest {\n        return {\n            query: {\n                query: this.getQuery(searchTerm)\n            },\n            include: ['properties', 'aspectNames'],\n            paging: {\n                maxItems: maxResults,\n                skipCount\n            },\n            filterQueries: [\n                /* eslint-disable-next-line */\n                { query: \"TYPE:'cm:authority'\" }\n            ]\n        };\n    }\n\n    private getQuery(searchTerm: string) {\n        let query: string;\n        if (this.queryProvider?.query) {\n            query = this.queryProvider.query.replace(new RegExp(/\\${([^}]+)}/g), searchTerm);\n        } else {\n            query = `(userName:*${searchTerm}* OR email:*${searchTerm}* OR firstName:*${searchTerm}* OR lastName:*${searchTerm}* OR authorityName:*${searchTerm}* OR authorityDisplayName:*${searchTerm}*) AND PATH:\"//cm:APP.DEFAULT/*\"`;\n        }\n        return query;\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 { InitialUsernamePipe, User } from '@alfresco/adf-core';\nimport { Group, NodeEntry } from '@alfresco/js-api';\nimport { Component, Input, OnInit, ViewEncapsulation } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { NodePermissionService } from '../../services/node-permission.service';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n    selector: 'adf-user-icon-column',\n    standalone: true,\n    imports: [CommonModule, MatIconModule, InitialUsernamePipe],\n    template: `\n        <div class=\"adf-cell-value\" [attr.id]=\"group ? 'group-icon' : 'person-icon'\" *ngIf=\"!isSelected\">\n            <ng-container *ngIf=\"displayText$ | async as user\">\n                <mat-icon *ngIf=\"group\" class=\"adf-group-icon\">people_alt_outline</mat-icon>\n                <div *ngIf=\"!group\" [outerHTML]=\"user | usernameInitials : 'adf-people-initial'\"></div>\n            </ng-container>\n        </div>\n        <div class=\"adf-cell-value\" *ngIf=\"isSelected\">\n            <mat-icon class=\"adf-people-select-icon adf-datatable-selected\" svgIcon=\"selected\" />\n        </div>\n    `,\n    styleUrls: ['./user-icon-column.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    host: { class: 'adf-user-icon-column adf-datatable-content-cell' }\n})\nexport class UserIconColumnComponent implements OnInit {\n    @Input()\n    context: any;\n\n    @Input()\n    node: NodeEntry;\n\n    @Input()\n    selected: boolean = false;\n\n    displayText$ = new BehaviorSubject<User | Group>(null);\n    group = false;\n\n    get isSelected(): boolean {\n        return this.context?.row?.isSelected || this.selected;\n    }\n\n    constructor(private nodePermissionService: NodePermissionService) {}\n\n    ngOnInit() {\n        if (this.context) {\n            const { person, group, authorityId } = this.context.row.obj?.entry ?? this.context.row.obj;\n            this.group = this.isGroup(group, authorityId);\n            const user = person ? new User(person) : undefined;\n            this.displayText$.next(user || group || { displayName: authorityId });\n        }\n\n        if (this.node) {\n            const { person, group } = this.nodePermissionService.transformNodeToUserPerson(this.node.entry);\n            this.group = this.isGroup(group, null);\n            const user = person ? new User(person) : undefined;\n            this.displayText$.next(user || group);\n        }\n    }\n\n    private isGroup(group, authorityId): boolean {\n        return !!group || authorityId?.startsWith('GROUP_') || authorityId?.startsWith('ROLE_');\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 { SearchConfigurationService } from '../../../search/services/search-configuration.service';\nimport { SearchService } from '../../../search/services/search.service';\nimport { Node, NodeEntry } from '@alfresco/js-api';\nimport { Component, EventEmitter, Output, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\nimport { debounceTime } from 'rxjs/operators';\nimport { SearchPermissionConfigurationService } from './search-config-permission.service';\nimport { SearchComponent } from '../../../search/components/search.component';\nimport { MatListModule, MatSelectionList } from '@angular/material/list';\nimport { CommonModule } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { UserIconColumnComponent } from '../user-icon-column/user-icon-column.component';\n\n@Component({\n    selector: 'adf-add-permission-panel',\n    standalone: true,\n    imports: [\n        CommonModule,\n        MatFormFieldModule,\n        MatInputModule,\n        TranslateModule,\n        ReactiveFormsModule,\n        MatIconModule,\n        MatListModule,\n        UserIconColumnComponent,\n        SearchComponent\n    ],\n    templateUrl: './add-permission-panel.component.html',\n    styleUrls: ['./add-permission-panel.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    providers: [{ provide: SearchConfigurationService, useClass: SearchPermissionConfigurationService }, SearchService]\n})\nexport class AddPermissionPanelComponent {\n    @ViewChild('search', { static: true })\n    search: SearchComponent;\n\n    @ViewChild(MatSelectionList, { static: false })\n    matSelectionList: MatSelectionList;\n\n    /** Emitted when a permission list item is selected. */\n    @Output()\n    select: EventEmitter<NodeEntry[]> = new EventEmitter();\n\n    searchInput: UntypedFormControl = new UntypedFormControl();\n    searchedWord = '';\n    debounceSearch: number = 200;\n\n    selectedItems: NodeEntry[] = [];\n\n    // eslint-disable-next-line @typescript-eslint/naming-convention\n    EVERYONE: NodeEntry = new NodeEntry({\n        entry: new Node({ nodeType: 'cm:authorityContainer', properties: { 'cm:authorityName': 'GROUP_EVERYONE' } })\n    });\n\n    constructor() {\n        this.searchInput.valueChanges.pipe(debounceTime(this.debounceSearch)).subscribe((searchValue) => {\n            const selectionOptions = this.matSelectionList.selectedOptions.selected.map((option) => option.value);\n            this.selectedItems.push(...selectionOptions);\n            this.matSelectionList.deselectAll();\n            this.searchedWord = searchValue;\n            if (!searchValue) {\n                this.search.resetResults();\n            }\n        });\n    }\n\n    onSelectionChange() {\n        const currentSelection = this.matSelectionList.selectedOptions.selected.map((option) => option.value);\n        const uniqueSelection = [...currentSelection, ...this.selectedItems].reduce((uniquesElements, currentElement) => {\n            const isExist = uniquesElements.find((uniqueElement) => uniqueElement.entry.id === currentElement.entry.id);\n            if (!isExist) {\n                uniquesElements.push(currentElement);\n            }\n            return uniquesElements;\n        }, []);\n        this.select.emit(uniqueSelection);\n    }\n\n    clearSearch() {\n        this.searchedWord = '';\n        this.selectedItems.splice(0, this.selectedItems.length);\n        this.search.resetResults();\n    }\n}\n","<mat-form-field appearance=\"fill\" class=\"adf-permission-search-input\">\n    <input\n        matInput\n        id=\"searchInput\"\n        class=\"adf-permission-search-input-control\"\n        [formControl]=\"searchInput\"\n        type=\"text\"\n        title=\"{{ 'PERMISSION_MANAGER.ADD-PERMISSION.SEARCH' | translate }}\"\n        placeholder=\"{{ 'PERMISSION_MANAGER.ADD-PERMISSION.SEARCH' | translate }}\"\n        [value]=\"searchedWord\"\n    />\n\n    <mat-icon\n        *ngIf=\"searchedWord?.length > 0\"\n        class=\"adf-permission-search-icon\"\n        data-automation-id=\"adf-permission-clear-input\"\n        id=\"adf-permission-clear-input\"\n        matSuffix\n        (click)=\"clearSearch()\"\n        >clear\n    </mat-icon>\n\n    <mat-icon *ngIf=\"searchedWord?.length === 0\" class=\"adf-permission-search-icon\" data-automation-id=\"adf-permission-search-icon\" matSuffix\n        >search\n    </mat-icon>\n</mat-form-field>\n\n<div *ngIf=\"searchedWord?.length === 0\" class=\"adf-permission-start-message\" id=\"adf-add-permission-type-search\">\n    <span>{{ 'PERMISSION_MANAGER.ADD-PERMISSION.TYPE-MESSAGE' | translate }}</span>\n</div>\n\n<adf-search\n    #search\n    [searchTerm]=\"searchedWord\"\n    id=\"adf-add-permission-authority-results\"\n    class=\"adf-permission-result-list\"\n    [class.adf-permission-result-list-search]=\"searchedWord.length === 0\"\n>\n    <ng-template let-data>\n        <mat-selection-list\n            class=\"adf-permission-result-list-elements\"\n            title=\"{{ 'PERMISSION_MANAGER.ADD-PERMISSION.USER-GROUP-LIST' | translate }}\"\n            (selectionChange)=\"onSelectionChange()\"\n        >\n            <mat-list-option id=\"adf-add-permission-group-everyone\" #eveyone [disableRipple]=\"true\" [value]=\"EVERYONE\">\n                <div class=\"adf-list-option-item\">\n                    <adf-user-icon-column [node]=\"EVERYONE\" id=\"add-group-icon\" [selected]=\"eveyone.selected\" />\n                    <p class=\"adf-result-name\">\n                        {{ 'PERMISSION_MANAGER.ADD-PERMISSION.EVERYONE' | translate }}\n                    </p>\n                </div>\n            </mat-list-option>\n\n            <mat-list-option\n                *ngFor=\"let item of data?.list?.entries; let idx = index\"\n                [disableRipple]=\"true\"\n                [value]=\"item\"\n                id=\"result_option_{{ idx }}\"\n                #option\n            >\n                <div class=\"adf-list-option-item\">\n                    <adf-user-icon-column [node]=\"item\" [selected]=\"option.selected\" />\n                    <p class=\"adf-result-name\">\n                        <ng-container *ngIf=\"item.entry?.properties['cm:authorityDisplayName']; else authorityName\">\n                            {{ item.entry.properties['cm:authorityDisplayName'] }}\n                        </ng-container>\n                        <ng-template #authorityName>\n                            <ng-container *ngIf=\"item.entry?.properties['cm:authorityName']; else owner\">\n                                {{ item.entry.properties['cm:authorityName'] }}\n                            </ng-container>\n                        </ng-template>\n                        <ng-template #owner>\n                            {{ item.entry?.properties['cm:firstName'] ? item.entry?.properties['cm:firstName'] : '' }}\n                            {{ item.entry?.properties['cm:lastName'] ? item.entry?.properties['cm:lastName'] : '' }}\n                        </ng-template>\n                    </p>\n                </div>\n            </mat-list-option>\n        </mat-selection-list>\n    </ng-template>\n</adf-search>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY 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 { BehaviorSubject } from 'rxjs';\nimport { Group, NodeEntry } from '@alfresco/js-api';\nimport { NodePermissionService } from '../../services/node-permission.service';\nimport { EcmUserModel } from '../../../common/models/ecm-user.model';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n    selector: 'adf-user-name-column',\n    standalone: true,\n    imports: [CommonModule],\n    template: `\n        <div class=\"adf-ellipsis-cell\" [attr.data-automation-id]=\"displayText$ | async\">\n            <span class=\"adf-user-name-column\" title=\"{{ displayText$ | async }}\"> {{ displayText$ | async }}</span>\n            <br />\n            <span class=\"adf-user-email-column\" title=\"{{ subTitleText$ | async }}\" *ngIf=\"subTitleText$ | async\">\n                {{ subTitleText$ | async }}\n            </span>\n        </div>\n    `,\n    styleUrls: ['./user-name-column.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    host: { class: 'adf-user-name-column adf-datatable-content-cell adf-expand-cell-5 adf-ellipsis-cell' }\n})\nexport class UserNameColumnComponent implements OnInit {\n    @Input()\n    context: any;\n\n    @Input()\n    node: NodeEntry;\n\n    displayText$ = new BehaviorSubject<string>('');\n    subTitleText$ = new BehaviorSubject<string>('');\n\n    constructor(private nodePermissionService: NodePermissionService) {}\n\n    ngOnInit() {\n        if (this.context != null) {\n            const { person, group, authorityId } = this.context.row.obj?.entry ?? this.context.row.obj;\n            const permissionGroup = authorityId ? ({ displayName: authorityId } as Group) : null;\n            this.updatePerson(person);\n            this.updateGroup(group || permissionGroup);\n        }\n\n        if (this.node) {\n            const { person, group } = this.nodePermissionService.transformNodeToUserPerson(this.node.entry);\n            this.updatePerson(person);\n            this.updateGroup(group);\n        }\n    }\n\n    private updatePerson(person: EcmUserModel) {\n        if (person) {\n            this.displayText$.next(`${person.firstName ?? ''} ${person.lastName ?? ''}`);\n            this.subTitleText$.next(person.email ?? '');\n        }\n    }\n\n    private updateGroup(group: Group) {\n        if (group) {\n            this.displayText$.next(group.displayName || group.id);\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, Input, OnChanges, Output, SimpleChanges, ViewEncapsulation } from '@angular/core';\nimport { RoleModel } from '../../models/role.model';\nimport { CommonModule } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { TranslateModule } from '@ngx-translate/core';\n\nexport interface RoleModelOption {\n    label: string;\n    role: string;\n}\n\n@Component({\n    selector: 'adf-user-role-column',\n    standalone: true,\n    imports: [CommonModule, MatFormFieldModule, MatSelectModule, TranslateModule],\n    template: `\n        <mat-form-field class=\"adf-role-selector-field\" *ngIf=\"!readonly\" subscriptSizing=\"dynamic\">\n            <mat-select\n                class=\"adf-role-selector\"\n                (click)=\"$event.stopPropagation()\"\n                [placeholder]=\"placeholder | translate\"\n                [value]=\"value\"\n                (selectionChange)=\"onRoleChanged($event.value)\"\n                (keyup.arrowdown)=\"$event.stopPropagation()\"\n                (keyup.arrowup)=\"$event.stopPropagation()\"\n            >\n                <mat-option *ngFor=\"let option of options\" [value]=\"option.role\">\n                    {{ option.label | translate }}\n                </mat-option>\n            </mat-select>\n        </mat-form-field>\n\n        <span class=\"adf-datatable-cell-value adf-readonly-role\" [title]=\"i18nValue | translate\" *ngIf=\"readonly\">\n            {{ i18nValue | translate }}\n        </span>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    host: { class: 'adf-user-role-column adf-datatable-content-cell adf-expand-cell-4' },\n    styleUrls: ['./user-role-column.component.scss']\n})\nexport class UserRoleColumnComponent implements OnChanges {\n    @Input()\n    roles: RoleModel[];\n\n    @Input()\n    value: string;\n\n    @Input()\n    readonly = false;\n\n    @Input()\n    placeholder: string = 'PERMISSION_MANAGER.LABELS.SELECT-ROLE';\n\n    @Output()\n    roleChanged = new EventEmitter<string>();\n\n    i18nValue: string;\n\n    /* dropdown options, including i18n support */\n    options: RoleModelOption[] = [];\n\n    onRoleChanged(newRole: string) {\n        this.value = newRole;\n        this.roleChanged.emit(newRole);\n    }\n\n    private i18nRoleValue(value: string): string {\n        if (value) {\n            return `ADF.ROLES.${value.toUpperCase()}`;\n        }\n        return value;\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        if (changes.value) {\n            this.i18nValue = this.i18nRoleValue(changes.value.currentValue);\n        }\n\n        if (changes.roles) {\n            const roles: RoleModel[] = changes.roles.currentValue || [];\n            this.options = roles.map((role) => ({ label: this.i18nRoleValue(role.label), role: role.role }));\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, Inject, ViewEncapsulation } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { NodeEntry, PermissionElement } from '@alfresco/js-api';\nimport { AddPermissionDialogData } from './add-permission-dialog-data.interface';\nimport { MemberModel } from '../../models/member.model';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { DataColumnComponent, DataColumnListComponent, DataTableComponent, DateColumnHeaderComponent } from '@alfresco/adf-core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { AddPermissionPanelComponent } from './add-permission-panel.component';\nimport { UserIconColumnComponent } from '../user-icon-column/user-icon-column.component';\nimport { UserNameColumnComponent } from '../user-name-column/user-name-column.component';\nimport { UserRoleColumnComponent } from '../user-role-column/user-role-column.component';\n\n@Component({\n    selector: 'adf-add-permission-dialog',\n    standalone: true,\n    imports: [\n        CommonModule,\n        MatDialogModule,\n        MatButtonModule,\n        TranslateModule,\n        DataTableComponent,\n        DataColumnListComponent,\n        DataColumnComponent,\n        DateColumnHeaderComponent,\n        MatIconModule,\n        AddPermissionPanelComponent,\n        UserIconColumnComponent,\n        UserNameColumnComponent,\n        UserRoleColumnComponent\n    ],\n    templateUrl: './add-permission-dialog.component.html',\n    styleUrls: ['./add-permission-dialog.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class AddPermissionDialogComponent {\n    isSearchActive = true;\n    selectedMembers: MemberModel[] = [];\n\n    private existingMembers: PermissionElement[] = [];\n    currentSelection: NodeEntry[] = [];\n\n    constructor(@Inject(MAT_DIALOG_DATA) public data: AddPermissionDialogData, private dialogRef: MatDialogRef<AddPermissionDialogComponent>) {\n        this.existingMembers = this.data.node.permissions.locallySet || [];\n    }\n\n    onSelect(items: NodeEntry[]) {\n        this.currentSelection = items;\n    }\n\n    onAddClicked() {\n        const selection = this.selectedMembers.filter((member) => !member.readonly).map((member) => member.toPermissionElement());\n        this.data.confirm.next(selection);\n        this.data.confirm.complete();\n    }\n\n    onSearchAddClicked() {\n        const newMembers = this.currentSelection\n            .map((item) => MemberModel.parseFromSearchResult(item))\n            .filter(({ id }) => !this.selectedMembers.find((member) => member.id === id));\n        this.selectedMembers = this.selectedMembers.concat(newMembers);\n\n        this.selectedMembers.forEach((member) => {\n            const existingMember = this.existingMembers.find(({ authorityId }) => authorityId === member.id);\n            if (existingMember) {\n                member.role = existingMember.name;\n                member.accessStatus = existingMember.accessStatus;\n                member.readonly = true; // make role non editable\n            }\n        });\n        this.disableSearch();\n    }\n\n    canCloseDialog() {\n        if (this.selectedMembers.length) {\n            this.disableSearch();\n        } else {\n            this.dialogRef.close();\n        }\n    }\n\n    enableSearch() {\n        this.isSearchActive = true;\n    }\n\n    disableSearch() {\n        this.isSearchActive = false;\n    }\n\n    onBulkUpdate(role: string) {\n        this.selectedMembers.filter((member) => !member.readonly).forEach((member) => (member.role = role));\n    }\n\n    onMemberDelete({ id }: MemberModel) {\n        const index = this.selectedMembers.findIndex((member) => member.id === id);\n        this.selectedMembers.splice(index, 1);\n        if (this.selectedMembers.length === 0) {\n            this.enableSearch();\n            this.currentSelection = [];\n        }\n    }\n\n    onMemberUpdate(role: string, member: MemberModel) {\n        const memberInstance = this.selectedMembers.find(({ id }) => id === member.id);\n        memberInstance.role = role;\n    }\n\n    isValid(): boolean {\n        return this.selectedMembers.filter(({ readonly }) => !readonly).length && this.selectedMembers.every(({ role }) => !!role);\n    }\n}\n","<h2 mat-dialog-title class='adf-add-permission-dialog-title' id=\"add-permission-dialog-title\">\n    {{ (data?.title ? data?.title : \"PERMISSION_MANAGER.ADD-PERMISSION.BASE-DIALOG-TITLE\") | translate }}\n</h2>\n\n<ng-container *ngIf=\"!isSearchActive\">\n    <mat-dialog-content class=\"adf-add-permission-dialog-content\">\n        <button mat-button (click)=\"enableSearch()\" class=\"adf-search-user-button\">\n            {{ \"PERMISSION_MANAGER.ADD-PERMISSION.SEARCH\" | translate }}\n            <span class=\"adf-toolbar--spacer\"></span>\n            <mat-icon iconPositionEnd>search</mat-icon>\n        </button>\n\n        <div class=\"adf-new-permission-table\">\n            <adf-datatable [rows]=\"selectedMembers\"\n                           class=\"adf-datatable-permission\"\n                           selectionMode=\"none\"\n                           [stickyHeader]=\"true\"\n                           data-automation-id=\"adf-user-role-selection-table\"\n                           *ngIf=\"selectedMembers.length\">\n                <data-columns>\n                    <data-column class=\"adf-datatable-cell--image adf-authority-icon-column\" key=\"$thumbunail\" [sortable]=\"false\">\n                        <ng-template let-context>\n                            <adf-user-icon-column [context]=\"context\" />\n                        </ng-template>\n                    </data-column>\n\n                    <data-column class=\"adf-ellipsis-cell adf-expand-cell-5 adf-authorityId-column\"\n                                 [title]=\"'PERMISSION_MANAGER.COLUMN.NAME' | translate:{count:selectedMembers.length}\"\n                                 key=\"id\">\n                        <ng-template let-context>\n                            <adf-user-name-column [context]=\"context\" />\n                        </ng-template>\n                    </data-column>\n\n                    <data-column class=\"adf-ellipsis-cell adf-expand-cell-4\"\n                                 title=\"PERMISSION_MANAGER.PERMISSION_DISPLAY.ROLE\"\n                                 key=\"role\">\n                        <ng-template let-entry=\"$implicit\">\n                            <adf-user-role-column [readonly]=\"entry.row.obj.readonly\"\n                                                  [value]=\"entry.data.getValue(entry.row, entry.col)\"\n                                                  [roles]=\"data.roles\"\n                                                  id=\"adf-select-role-permission\"\n                                                  (roleChanged)=\"onMemberUpdate($event, entry.row.obj)\" />\n                        </ng-template>\n\n                        <adf-data-column-header>\n                            <ng-template>\n                                <adf-user-role-column  class=\"adf-permission-role-column-header\"\n                                                       placeholder=\"PERMISSION_MANAGER.COLUMN.BULK-ROLE\"\n                                                       [roles]=\"data.roles\"\n                                                       id=\"adf-bulk-select-role-permission\"\n                                                       (roleChanged)=\"onBulkUpdate($event)\" />\n                            </ng-template>\n                        </adf-data-column-header>\n                    </data-column>\n\n                    <data-column class=\"adf-datatable-cell adf-delete-permission-column\" key=\"\" [sortable]=\"false\">\n                        <ng-template let-entry=\"$implicit\">\n                            <button mat-icon-button\n                                    class=\"adf-add-member-action\"\n                                    [style.display]=\"entry.row.obj.readonly ? 'none': 'block'\"\n                                    (click)=\"onMemberDelete(entry.row.obj)\"\n                                    data-automation-id=\"adf-delete-permission-button\">\n                                <mat-icon>highlight_off</mat-icon>\n                            </button>\n                        </ng-template>\n                    </data-column>\n                </data-columns>\n            </adf-datatable>\n        </div>\n\n    </mat-dialog-content>\n\n    <mat-dialog-actions class=\"adf-add-permission-dialog-actions\">\n        <button mat-button\n                mat-dialog-close\n                data-automation-id=\"add-permission-dialog-close-button\">\n            {{ \"PERMISSION_MANAGER.ADD-PERMISSION.CLOSE-ACTION\" | translate }}\n        </button>\n        <button mat-button\n                data-automation-id=\"add-permission-dialog-confirm-button\"\n                [mat-dialog-close]=\"true\"\n                class=\"adf-choose-action\"\n                [disabled]=\"!isValid()\"\n                (click)=\"onAddClicked()\">\n            {{ \"PERMISSION_MANAGER.ADD-PERMISSION.ADD-ACTION\" | translate }}\n        </button>\n    </mat-dialog-actions>\n</ng-container>\n\n<ng-container *ngIf=\"isSearchActive\">\n    <mat-dialog-content class=\"adf-add-permission-dialog-content\">\n        <adf-add-permission-panel class=\"adf-search-container\" (select)=\"onSelect($event)\" />\n    </mat-dialog-content>\n\n    <mat-dialog-actions class=\"adf-add-permission-dialog-actions\">\n            <button mat-button\n                    (click)=\"canCloseDialog()\"\n                    data-automation-id=\"add-permission-dialog-close-button\">\n                {{ \"PERMISSION_MANAGER.ADD-PERMISSION.CLOSE-ACTION\" | translate }}\n            </button>\n            <button mat-button\n                    data-automation-id=\"add-permission-dialog-confirm-button\"\n                    [disabled]=\"!currentSelection.length\"\n                    (click)=\"onSearchAddClicked()\">\n                {{ \"PERMISSION_MANAGER.ADD-PERMISSION.SELECT-ACTION\" | translate }}\n            </button>\n    </mat-dialog-actions>\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 { Node, PermissionElement } from '@alfresco/js-api';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject, throwError } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\nimport { NodePermissionService } from './node-permission.service';\nimport { AddPermissionDialogComponent } from '../components/add-permission/add-permission-dialog.component';\nimport { AddPermissionDialogData } from '../components/add-permission/add-permission-dialog-data.interface';\nimport { RoleModel } from '../models/role.model';\nimport { ContentService } from '../../common/services/content.service';\nimport { AllowableOperationsEnum } from '../../common/models/allowable-operations.enum';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class NodePermissionDialogService {\n    constructor(private dialog: MatDialog, private nodePermissionService: NodePermissionService, private contentService: ContentService) {}\n\n    /**\n     * Opens a dialog to add permissions to a node.\n     *\n     * @param node target node\n     * @param roles settable roles for the node\n     * @param title Dialog title\n     * @returns Node with updated permissions\n     */\n    openAddPermissionDialog(node: Node, roles: RoleModel[], title?: string): Observable<PermissionElement[]> {\n        if (this.contentService.hasAllowableOperations(node, AllowableOperationsEnum.UPDATEPERMISSIONS)) {\n            const confirm = new Subject<PermissionElement[]>();\n\n            confirm.subscribe({\n                complete: this.close.bind(this)\n            });\n\n            const data: AddPermissionDialogData = {\n                node,\n                title,\n                confirm,\n                roles\n            };\n\n            this.openDialog(data, 'adf-add-permission-dialog', '800px');\n            return confirm;\n        } else {\n            const errors = new Error(JSON.stringify({ error: { statusCode: 403 } }));\n            errors.message = 'PERMISSION_MANAGER.ERROR.NOT-ALLOWED';\n            return throwError(errors);\n        }\n    }\n\n    private openDialog(data: any, currentPanelClass: string, chosenWidth: string) {\n        this.dialog.open(AddPermissionDialogComponent, { data, panelClass: currentPanelClass, width: chosenWidth, restoreFocus: true });\n    }\n\n    /**\n     * Closes the currently-open dialog.\n     */\n    close() {\n        this.dialog.closeAll();\n    }\n\n    /**\n     * Opens a dialog to update permissions for a node.\n     *\n     * @param nodeId ID of the target node\n     * @param title Dialog title\n     * @returns Node with updated permissions\n     */\n    updateNodePermissionByDialog(nodeId?: string, title?: string): Observable<Node> {\n        return this.nodePermissionService\n            .getNodeWithRoles(nodeId)\n            .pipe(\n                switchMap(({ node, roles }) =>\n                    this.openAddPermissionDialog(node, roles, title).pipe(\n                        switchMap((selection) => this.nodePermissionService.updateNodePermissions(nodeId, selection))\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 { NotificationService } from '@alfresco/adf-core';\nimport { Node, PermissionElement } from '@alfresco/js-api';\nimport { EventEmitter, Injectable } from '@angular/core';\nimport { MatSlideToggleChange } from '@angular/material/slide-toggle';\nimport { BehaviorSubject, forkJoin, Observable, of, Subject } from 'rxjs';\nimport { finalize, map, switchMap } from 'rxjs/operators';\nimport { RoleModel } from '../../models/role.model';\nimport { PermissionDisplayModel } from '../../models/permission.model';\nimport { NodePermissionsModel } from '../../models/member.model';\nimport { NodePermissionService } from '../../services/node-permission.service';\nimport { NodePermissionDialogService } from '../../services/node-permission-dialog.service';\nimport { NodesApiService } from '../../../common/services/nodes-api.service';\nimport { ContentService } from '../../../common/services/content.service';\nimport { AllowableOperationsEnum } from '../../../common/models/allowable-operations.enum';\n\nconst SITE_MANAGER_ROLE = 'SiteManager';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class PermissionListService {\n    updated = new EventEmitter<PermissionDisplayModel>();\n    errored = new EventEmitter<PermissionDisplayModel>();\n\n    loading$: BehaviorSubject<boolean> = new BehaviorSubject(true);\n    error$: Subject<boolean> = new Subject();\n    nodeWithRoles$: Subject<{ node: Node; roles: RoleModel[] }> = new Subject();\n    data$: Observable<NodePermissionsModel> = this.nodeWithRoles$.pipe(\n        map(({ node, roles }) => {\n            const nodeLocalPermissions = this.nodePermissionService.getLocalPermissions(node);\n            const localPermissions = this.updateReadOnlyPermission(node, nodeLocalPermissions);\n            return {\n                node,\n                roles,\n                localPermissions,\n                inheritedPermissions: this.nodePermissionService.getInheritedPermission(node)\n            };\n        })\n    );\n\n    private node: Node;\n    private roles: RoleModel[];\n\n    constructor(\n        private nodeService: NodesApiService,\n        private nodePermissionService: NodePermissionService,\n        private nodePermissionDialogService: NodePermissionDialogService,\n        private contentService: ContentService,\n        private notificationService: NotificationService\n    ) {}\n\n    fetchPermission(nodeId: string) {\n        this.loading$.next(true);\n        this.nodePermissionService\n            .getNodeWithRoles(nodeId)\n            .pipe(finalize(() => this.loading$.next(false)))\n            .subscribe(\n                ({ node, roles }) => {\n                    this.node = node;\n                    this.roles = roles;\n                    this.nodeWithRoles$.next({ node, roles });\n                },\n                () => this.error$.next(true)\n            );\n    }\n\n    toggleInherited(change: MatSlideToggleChange) {\n        if (this.contentService.hasAllowableOperations(this.node, AllowableOperationsEnum.UPDATEPERMISSIONS)) {\n            let updateLocalPermission$: Observable<Node> = of(null);\n            const nodeBody = {\n                permissions: {\n                    isInheritanceEnabled: !this.node.permissions.isInheritanceEnabled\n                }\n            };\n\n            const authorityId = this.getManagerAuthority(this.node);\n            if (authorityId) {\n                const permissions = [...(this.node.permissions.locallySet || []), { authorityId, name: SITE_MANAGER_ROLE, accessStatus: 'ALLOWED' }];\n                updateLocalPermission$ = this.nodePermissionService.updatePermissions(this.node, permissions);\n            }\n\n            updateLocalPermission$.pipe(switchMap(() => this.nodeService.updateNode(this.node.id, nodeBody, { include: ['permissions'] }))).subscribe(\n                (nodeUpdated: Node) => {\n                    const message = nodeUpdated.permissions.isInheritanceEnabled\n                        ? 'PERMISSION_MANAGER.MESSAGE.INHERIT-ENABLE-SUCCESS'\n                        : 'PERMISSION_MANAGER.MESSAGE.INHERIT-DISABLE-SUCCESS';\n                    this.notificationService.showInfo(message);\n                    nodeUpdated.permissions.inherited = nodeUpdated.permissions?.inherited ?? [];\n                    this.reloadNode(nodeUpdated);\n                },\n                () => {\n                    change.source.checked = this.node.permissions.isInheritanceEnabled;\n                    this.notificationService.showWarning('PERMISSION_MANAGER.MESSAGE.TOGGLE-PERMISSION-FAILED');\n                }\n            );\n        } else {\n            change.source.checked = this.node.permissions.isInheritanceEnabled;\n            this.notificationService.showError('PERMISSION_MANAGER.ERROR.NOT-ALLOWED');\n        }\n    }\n\n    updateNodePermissionByDialog() {\n        this.nodePermissionDialogService\n            .openAddPermissionDialog(this.node, this.roles, 'PERMISSION_MANAGER.ADD-PERMISSION.TITLE')\n            .pipe(\n                switchMap((selection) => {\n                    const total = selection.length;\n                    const group = selection.filter(({ authorityId }) => this.isGroup(authorityId)).length;\n                    return forkJoin({\n                        user: of(total - group),\n                        group: of(group),\n                        node: this.nodePermissionService.updateNodePermissions(this.node.id, selection)\n                    });\n                })\n            )\n            .subscribe(\n                ({ user, group, node }) => {\n                    this.notificationService.showInfo('PERMISSION_MANAGER.MESSAGE.PERMISSION-ADD-SUCCESS', null, { user, group });\n                    this.reloadNode(node);\n                },\n                () => {\n                    this.notificationService.showError('PERMISSION_MANAGER.MESSAGE.PERMISSION-ADD-FAIL');\n                    this.reloadNode();\n                }\n            );\n    }\n\n    deletePermissions(permissions: PermissionElement[]) {\n        this.nodePermissionService.removePermissions(this.node, permissions).subscribe(\n            (node) => {\n                const total = permissions.length;\n                const group = permissions.filter(({ authorityId }) => this.isGroup(authorityId)).length;\n                this.notificationService.showInfo('PERMISSION_MANAGER.MESSAGE.PERMISSION-BULK-DELETE-SUCCESS', null, { user: total - group, group });\n                this.reloadNode(node);\n            },\n            () => {\n                this.notificationService.showError('PERMISSION_MANAGER.MESSAGE.PERMISSION-DELETE-FAIL');\n                this.reloadNode();\n            }\n        );\n    }\n\n    updateRole(role: string, permission: PermissionDisplayModel) {\n        const updatedPermissionRole = this.buildUpdatedPermission(role, permission);\n        this.nodePermissionService.updatePermissionRole(this.node, updatedPermissionRole).subscribe(\n            (node) => {\n                this.notificationService.showInfo('PERMISSION_MANAGER.MESSAGE.PERMISSION-UPDATE-SUCCESS');\n                this.reloadNode(node);\n                this.updated.emit(permission);\n            },\n            () => {\n                this.notificationService.showError('PERMISSION_MANAGER.MESSAGE.PERMISSION-UPDATE-FAIL');\n                this.reloadNode();\n                this.errored.emit(permission);\n            }\n        );\n    }\n\n    bulkRoleUpdate(role: string) {\n        const permissions = [...this.node.permissions.locallySet].map((permission) => this.buildUpdatedPermission(role, permission));\n        this.nodePermissionService.updatePermissions(this.node, permissions).subscribe(\n            (node) => {\n                const total = permissions.length;\n                const group = permissions.filter(({ authorityId }) => this.isGroup(authorityId)).length;\n                this.notificationService.showInfo('PERMISSION_MANAGER.MESSAGE.PERMISSION-BULK-UPDATE-SUCCESS', null, { user: total - group, group });\n                this.reloadNode(node);\n            },\n            () => {\n                this.notificationService.showError('PERMISSION_MANAGER.MESSAGE.PERMISSION-UPDATE-FAIL');\n                this.reloadNode();\n            }\n        );\n    }\n\n    deletePermission(permission: PermissionDisplayModel) {\n        const cloneNode = { ...this.node, permissions: { ...this.node.permissions, locallySet: [...this.node.permissions.locallySet] } };\n        this.nodePermissionService.removePermission(cloneNode, permission).subscribe(\n            (node) => {\n                this.notificationService.showInfo('PERMISSION_MANAGER.MESSAGE.PERMISSION-DELETE-SUCCESS');\n                if (!node.permissions.locallySet) {\n                    node.permissions.locallySet = [];\n                }\n                this.reloadNode(node);\n            },\n            () => {\n                this.notificationService.showError('PERMISSION_MANAGER.MESSAGE.PERMISSION-DELETE-FAIL');\n                this.reloadNode();\n            }\n        );\n    }\n\n    private buildUpdatedPermission(role: string, permission: PermissionElement): PermissionElement {\n        return {\n            accessStatus: permission.accessStatus,\n            name: this.canUpdateThePermission(this.node, permission) ? role : permission.name,\n            authorityId: permission.authorityId\n        };\n    }\n\n    private reloadNode(node?: Node) {\n        if (node != null) {\n            Object.assign(this.node.permissions, node.permissions);\n        }\n        this.nodeWithRoles$.next({ node: this.node, roles: this.roles });\n    }\n\n    getManagerAuthority(node: Node): string {\n        const sitePath = node.path.elements.find((path) => path.nodeType === 'st:site');\n        let hasLocalManagerPermission = false;\n        let authorityId: string;\n        if (sitePath) {\n            authorityId = `GROUP_site_${sitePath.name}_${SITE_MANAGER_ROLE}`;\n            hasLocalManagerPermission = !!node.permissions.locallySet?.find(\n                (permission) => permission.authorityId === authorityId && permission.name === SITE_MANAGER_ROLE\n            );\n        }\n\n        if (!hasLocalManagerPermission && authorityId) {\n            return authorityId;\n        }\n        return null;\n    }\n\n    updateReadOnlyPermission(node: Node, permissions: PermissionDisplayModel[]): PermissionDisplayModel[] {\n        permissions.forEach((permission) => {\n            if (!this.canUpdateThePermission(node, permission)) {\n                permission.readonly = true;\n            }\n        });\n        return permissions;\n    }\n\n    canUpdateThePermission(node: Node, permission: PermissionElement): boolean {\n        const sitePath = node.path.elements.find((path) => path.nodeType === 'st:site');\n        if (!node.permissions.isInheritanceEnabled && sitePath) {\n            const authorityId = `GROUP_site_${sitePath.name}_${SITE_MANAGER_ROLE}`;\n            return !(permission.authorityId === authorityId && permission.name === SITE_MANAGER_ROLE);\n        }\n        return true;\n    }\n\n    private isGroup(authorityId) {\n        return authorityId.startsWith('GROUP_') || authorityId.startsWith('ROLE_');\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 { Node } from '@alfresco/js-api';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n    selector: 'adf-node-path-column',\n    standalone: true,\n    imports: [CommonModule],\n    template: `\n        <span class=\"adf-user-name-column adf-datatable-cell-value\" title=\"{{ displayText$ | async }}\">\n            {{ displayText$ | async }}\n        </span>\n    `,\n    host: { class: 'adf-node-path-column adf-datatable-content-cell' }\n})\nexport class NodePathColumnComponent implements OnInit {\n    @Input()\n    node: Node;\n\n    displayText$ = new BehaviorSubject<string>('');\n\n    ngOnInit() {\n        this.updateValue();\n    }\n\n    protected updateValue() {\n        this.displayText$.next(this.node.path.name);\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, Input, OnChanges, Output, ViewEncapsulation } from '@angular/core';\nimport { Node } from '@alfresco/js-api';\nimport { PermissionDisplayModel } from '../../models/permission.model';\nimport { RoleModel } from '../../models/role.model';\nimport { CommonModule } from '@angular/common';\nimport {\n    DataColumnComponent,\n    DataColumnListComponent,\n    DataTableComponent,\n    DateColumnHeaderComponent,\n    EmptyContentComponent,\n    NoContentTemplateDirective\n} from '@alfresco/adf-core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { UserIconColumnComponent } from '../user-icon-column/user-icon-column.component';\nimport { UserNameColumnComponent } from '../user-name-column/user-name-column.component';\nimport { NodePathColumnComponent } from '../node-path-column/node-path-column.component';\nimport { UserRoleColumnComponent } from '../user-role-column/user-role-column.component';\n\n@Component({\n    selector: 'adf-permission-container',\n    standalone: true,\n    imports: [\n        CommonModule,\n        DataTableComponent,\n        DataColumnListComponent,\n        DataColumnComponent,\n        TranslateModule,\n        DateColumnHeaderComponent,\n        MatButtonModule,\n        MatIconModule,\n        NoContentTemplateDirective,\n        EmptyContentComponent,\n        UserIconColumnComponent,\n        UserNameColumnComponent,\n        NodePathColumnComponent,\n        UserRoleColumnComponent\n    ],\n    templateUrl: './permission-container.component.html',\n    styleUrls: ['./permission-container.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class PermissionContainerComponent implements OnChanges {\n    @Input({ required: true })\n    node: Node;\n\n    @Input()\n    permissions: PermissionDisplayModel[] = [];\n\n    @Input()\n    roles!: RoleModel[];\n\n    @Input()\n    isReadOnly = false;\n\n    @Input()\n    showLocation = false;\n\n    @Input()\n    selectionMode = 'multiple'; // none|single|multiple\n\n    /** Emitted when the permission is updated. */\n    @Output()\n    update = new EventEmitter<{ role: string; permission: PermissionDisplayModel }>();\n\n    @Output()\n    updateAll = new EventEmitter<string>();\n\n    /** Emitted when the permission is updated. */\n    @Output()\n    delete = new EventEmitter<PermissionDisplayModel>();\n\n    /** Emitted when an error occurs. */\n    @Output()\n    error = new EventEmitter<any>();\n\n    bulkSelectionRole: string;\n\n    ngOnChanges(): void {\n        this.bulkSelectionRole = '';\n    }\n\n    updateRole(role: string, permission: PermissionDisplayModel) {\n        this.update.emit({ role, permission });\n    }\n\n    bulkRoleUpdate(role: string) {\n        this.updateAll.emit(role);\n    }\n\n    removePermission(event: Event, permissionRow: PermissionDisplayModel) {\n        event.stopPropagation();\n        this.delete.emit(permissionRow);\n    }\n}\n","<adf-datatable class=\"adf-datatable-permission\"\n               id=\"adf-permission-display-container\"\n               [rows]=\"permissions\"\n               [stickyHeader]=\"true\"\n               [selectionMode]=\"selectionMode\">\n\n    <data-columns>\n        <data-column class=\"adf-datatable-cell--image adf-authority-icon-column\" key=\"$thumbunail\" [sortable]=\"false\">\n            <ng-template let-context>\n                <adf-user-icon-column [context]=\"context\" />\n            </ng-template>\n        </data-column>\n\n        <data-column class=\"adf-ellipsis-cell adf-expand-cell-5 adf-authorityId-column\"\n                     [title]=\"'PERMISSION_MANAGER.COLUMN.NAME' | translate:{count:permissions.length}\"\n                     key=\"authorityId\">\n            <ng-template let-context>\n                <adf-user-name-column [context]=\"context\" />\n            </ng-template>\n        </data-column>d\n\n        <data-column class=\"adf-ellipsis-cell adf-expand-cell-5 adf-authorityId-column\"\n                     title=\"PERMISSION_MANAGER.COLUMN.LOCATION\"\n                     key=\"location\"\n                     *ngIf=\"node && showLocation\">\n            <ng-template>\n                <adf-node-path-column [node]=\"node\" />\n            </ng-template>\n        </data-column>\n\n        <data-column\n            class=\"adf-ellipsis-cell adf-expand-cell-4\"\n            title=\"PERMISSION_MANAGER.PERMISSION_DISPLAY.ROLE\"\n            key=\"name\"\n            [sortable]=\"false\">\n            <ng-template let-entry=\"$implicit\">\n                <adf-user-role-column [readonly]=\"entry.row.obj.readonly || isReadOnly\"\n                                      [placeholder]=\"entry.data.getValue(entry.row, entry.col)\"\n                                      [value]=\"entry.data.getValue(entry.row, entry.col)\"\n                                      [roles]=\"roles\"\n                                      id=\"adf-select-role-permission\"\n                                      (roleChanged)=\"updateRole($event, entry.row.obj)\" />\n            </ng-template>\n\n            <adf-data-column-header *ngIf=\"!isReadOnly\">\n                <ng-template>\n                    <adf-user-role-column class=\"adf-permission-role-column-header\"\n                                          placeholder=\"PERMISSION_MANAGER.COLUMN.BULK-ROLE\"\n                                          [roles]=\"roles\"\n                                          [value]=\"bulkSelectionRole\"\n                                          id=\"adf-bulk-select-role-permission\"\n                                          (roleChanged)=\"bulkRoleUpdate($event)\" />\n                </ng-template>\n            </adf-data-column-header>\n        </data-column>\n\n        <data-column class=\"adf-datatable-cell adf-delete-permission-column\" key=\"\" *ngIf=\"!isReadOnly\" [sortable]=\"false\">\n            <ng-template let-entry=\"$implicit\">\n                <button mat-icon-button\n                        [disabled]=\"entry.row.obj.readonly\"\n                        (click)=\"removePermission($event, entry.row.obj)\"\n                        (keydown.enter)=\"removePermission($event, entry.row.obj)\"\n                        [attr.data-automation-id]=\"'adf-delete-permission-button-' + entry.row.obj.authorityId\"\n                        [attr.aria-label]=\"'PERMISSION_MANAGER.ACTION.DELETE' | translate\">\n                    <mat-icon>delete_outline</mat-icon>\n                </button>\n            </ng-template>\n        </data-column>\n    </data-columns>\n\n    <adf-no-content-template>\n        <ng-template>\n            <adf-empty-content\n                id=\"adf-no-permissions-template\"\n                icon=\"supervisor_account\"\n                [title]=\"'PERMISSION_MANAGER.MESSAGE.EMPTY-PERMISSION' | translate\"\n                [subtitle]=\"'PERMISSION_MANAGER.MESSAGE.EMPTY-SUBTITLE' | translate\" />\n        </ng-template>\n    </adf-no-content-template>\n\n</adf-datatable>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY 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    DestroyRef,\n    Directive,\n    ElementRef,\n    HostListener,\n    inject,\n    Input,\n    OnDestroy,\n    OnInit,\n    TemplateRef,\n    ViewContainerRef\n} from '@angular/core';\nimport { ConnectionPositionPair, Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { ConfigurableFocusTrap, ConfigurableFocusTrapFactory } from '@angular/cdk/a11y';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Directive({\n    selector: '[adf-pop-over]',\n    standalone: true,\n    exportAs: 'adfPopOver'\n})\nexport class PopOverDirective implements OnInit, OnDestroy, AfterViewInit {\n    get open(): boolean {\n        return this._open;\n    }\n\n    @Input('adf-pop-over') popOver!: TemplateRef<any>;\n    @Input() target!: HTMLElement;\n    @Input() panelClass = 'adf-permission-pop-over';\n    @Input() autofocusedElementSelector: string;\n\n    private _open = false;\n    private overlayRef!: OverlayRef;\n    private focusTrap: ConfigurableFocusTrap;\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    constructor(\n        private element: ElementRef,\n        private overlay: Overlay,\n        private vcr: ViewContainerRef,\n        private focusTrapFactory: ConfigurableFocusTrapFactory\n    ) {}\n\n    ngOnInit(): void {\n        this.createOverlay();\n    }\n\n    ngAfterViewInit(): void {\n        this.element.nativeElement.addEventListener('click', () => this.toggleOverlay());\n        this.element.nativeElement.addEventListener('keydown', this.preventDefaultForEnter);\n    }\n\n    ngOnDestroy(): void {\n        this.element.nativeElement.removeEventListener('keydown', this.preventDefaultForEnter);\n        this.detachOverlay();\n    }\n\n    private createOverlay(): void {\n        const scrollStrategy = this.overlay.scrollStrategies.reposition();\n        const positionStrategy = this.overlay\n            .position()\n            .flexibleConnectedTo(this.target)\n            .withPositions([\n                new ConnectionPositionPair({ originX: 'start', originY: 'bottom' }, { overlayX: 'start', overlayY: 'top' }),\n                new ConnectionPositionPair({ originX: 'start', originY: 'top' }, { overlayX: 'start', overlayY: 'bottom' })\n            ])\n            .withPush(false);\n\n        this.overlayRef = this.overlay.create({\n            positionStrategy,\n            scrollStrategy,\n            hasBackdrop: true,\n            backdropClass: 'cdk-overlay-transparent-backdrop',\n            panelClass: this.panelClass\n        });\n\n        this.overlayRef\n            .backdropClick()\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe(() => {\n                this.detachOverlay();\n            });\n    }\n\n    @HostListener('keyup.enter')\n    private toggleOverlay(): void {\n        if (!this.overlayRef.hasAttached()) {\n            this.attachOverlay();\n        } else {\n            this.detachOverlay();\n        }\n    }\n\n    private attachOverlay(): void {\n        if (!this.overlayRef.hasAttached()) {\n            const periodSelectorPortal = new TemplatePortal(this.popOver, this.vcr);\n\n            this.overlayRef.attach(periodSelectorPortal);\n            this._open = true;\n            if (this.autofocusedElementSelector) {\n                this.overlayRef.overlayElement.querySelector<HTMLElement>(this.autofocusedElementSelector).focus();\n            }\n\n            if (this.popOver && !this.focusTrap) {\n                this.focusTrap = this.focusTrapFactory.create(this.overlayRef.overlayElement);\n            }\n        }\n    }\n\n    @HostListener('document:keyup.esc')\n    private detachOverlay(): void {\n        if (this.overlayRef.hasAttached()) {\n            this.overlayRef.detach();\n            this._open = false;\n\n            this.focusTrap.destroy();\n            this.focusTrap = null;\n\n            this.element.nativeElement.focus();\n        }\n    }\n\n    private preventDefaultForEnter(event: KeyboardEvent): void {\n        if (event.key === 'Enter') {\n            event.preventDefault();\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 { ObjectDataRow } from '@alfresco/adf-core';\nimport { PermissionElement } from '@alfresco/js-api';\nimport { Component, DestroyRef, EventEmitter, inject, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport { PermissionDisplayModel } from '../../models/permission.model';\nimport { PermissionListService } from './permission-list.service';\nimport { CommonModule } from '@angular/common';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { PermissionContainerComponent } from '../permission-container/permission-container.component';\nimport { PopOverDirective } from '../pop-over.directive';\nimport { AllowableOperationsEnum, ContentService } from '../../../common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n    selector: 'adf-permission-list',\n    standalone: true,\n    imports: [\n        CommonModule,\n        MatCardModule,\n        MatProgressSpinnerModule,\n        MatIconModule,\n        MatSlideToggleModule,\n        TranslateModule,\n        MatButtonModule,\n        PermissionContainerComponent,\n        PopOverDirective\n    ],\n    templateUrl: './permission-list.component.html',\n    styleUrls: ['./permission-list.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class PermissionListComponent implements OnInit {\n    /** ID of the node whose permissions you want to show. */\n    @Input({ required: true })\n    nodeId: string;\n\n    /** Emitted when the permission is updated. */\n    @Output()\n    update: EventEmitter<PermissionElement>;\n\n    /** Emitted when an error occurs. */\n    @Output()\n    error: EventEmitter<any>;\n\n    selectedPermissions: PermissionDisplayModel[] = [];\n\n    private _updatePermissionsAllowed = false;\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    get updatePermissionsAllowed(): boolean {\n        return this._updatePermissionsAllowed;\n    }\n\n    constructor(public readonly permissionList: PermissionListService, private readonly contentService: ContentService) {\n        this.error = this.permissionList.errored;\n        this.update = this.permissionList.updated;\n    }\n\n    ngOnInit(): void {\n        this.permissionList.fetchPermission(this.nodeId);\n        this.permissionList.data$\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe(\n                (model) =>\n                    (this._updatePermissionsAllowed = this.contentService.hasAllowableOperations(\n                        model.node,\n                        AllowableOperationsEnum.UPDATEPERMISSIONS\n                    ))\n            );\n    }\n\n    openAddPermissionDialog() {\n        this.permissionList.updateNodePermissionByDialog();\n    }\n\n    onSelect(selections: ObjectDataRow[]) {\n        this.selectedPermissions = selections.map((selection) => selection['obj']).filter((permission) => !permission.readonly);\n    }\n\n    deleteSelection() {\n        this.permissionList.deletePermissions(this.selectedPermissions);\n        this.selectedPermissions = [];\n    }\n\n    updatePermission({ role, permission }) {\n        this.permissionList.updateRole(role, permission);\n    }\n\n    deletePermission(permission: PermissionDisplayModel) {\n        this.selectedPermissions = [];\n        this.permissionList.deletePermission(permission);\n    }\n\n    updateAllPermission(role: string) {\n        this.permissionList.bulkRoleUpdate(role);\n        this.selectedPermissions = [];\n    }\n}\n","<mat-card class=\"adf-permission-card\" id=\"adf-permission-manager-card\">\n    <div *ngIf=\"(permissionList.data$ | async) === null && permissionList.loading$ | async\" class=\"adf-permission-loader\">\n        <mat-progress-spinner [color]=\"'primary'\" [mode]=\"'indeterminate'\" />\n    </div>\n\n    <ng-container *ngIf=\"permissionList.error$ | async\">\n        <div class=\"adf-no-permission__template\" id=\"adf-permission-manager-error\">\n            <mat-icon color=\"warn\">error</mat-icon>\n            <p class=\"adf-no-permission__template--text\">{{ 'PERMISSION_MANAGER.ERROR.NOT-FOUND'| translate }}</p>\n        </div>\n    </ng-container>\n\n    <ng-container *ngIf=\"permissionList.data$ | async as model\">\n        <div class=\"adf-permission-container\" #target>\n\n            <div class=\"adf-permission-header\">\n                <span class=\"adf-inherit-container\">\n                    <h3 class=\"adf-inherit-container-header\">\n                        {{'PERMISSION_MANAGER.LABELS.INHERITED-PERMISSIONS' | translate }}\n\n                        {{ (model.node.permissions.isInheritanceEnabled ? \"PERMISSION_MANAGER.LABELS.ON\" : \"PERMISSION_MANAGER.LABELS.OFF\") | translate }}\n                    </h3>\n\n                    <mat-slide-toggle\n                        *ngIf=\"updatePermissionsAllowed\"\n                        class=\"adf-inherit-toggle\"\n                        title=\"{{'PERMISSION_MANAGER.LABELS.INHERITED_PERMISSION_TOGGLE' | translate }}\"\n                        color=\"primary\"\n                        aria-label=\"{{'PERMISSION_MANAGER.LABELS.INHERITED_PERMISSION_TOGGLE' | translate}}\"\n                        data-automation-id=\"adf-inherit-toggle-button\"\n                        [checked]=\"model.node.permissions.isInheritanceEnabled\"\n                        (change)=\"permissionList.toggleInherited($event)\" />\n                </span>\n\n                <span class=\"adf-inherit-subtitle\" title=\"total\">\n                    {{'PERMISSION_MANAGER.LABELS.INHERITED-SUBTITLE' | translate: { count: model.inheritedPermissions.length } }}\n                </span>\n            </div>\n\n            <button\n                mat-flat-button\n                data-automation-id=\"permission-info-button\"\n                class=\"adf-permission-visibility-toggle\"\n                [adf-pop-over]=\"inheritedPermission\"\n                [target]=\"target\"\n                #popOver=\"adfPopOver\"\n                *ngIf=\"model.node.permissions.isInheritanceEnabled\">\n                {{ (popOver.open ? 'PERMISSION_MANAGER.LABELS.HIDE' : 'PERMISSION_MANAGER.LABELS.SHOW') | translate }}\n                <mat-icon class=\"adf-permission-visibility-toggle-icon\" iconPositionEnd>\n                    {{ popOver.open ? 'keyboard_arrow_up' : 'keyboard_arrow_down' }} </mat-icon>\n            </button>\n        </div>\n\n        <ng-template #inheritedPermission>\n            <div class=\"adf-pop-over-card\">\n                <adf-permission-container\n                    data-automation-id=\"adf-inherited-permission\"\n                    [isReadOnly]=\"true\"\n                    [node]=\"model.node\"\n                    [permissions]=\"model.inheritedPermissions\"\n                    [showLocation]=\"true\"\n                    [selectionMode]=\"'none'\"\n                    [roles]=\"model.roles\" />\n            </div>\n        </ng-template>\n\n        <mat-card-content class=\"adf-local-permission-container\">\n            <section class=\"adf-permission-content-header\">\n                <h3>{{'PERMISSION_MANAGER.LABELS.DIRECT-PERMISSIONS' | translate }}</h3>\n\n                <div class=\"adf-toolbar--spacer\"></div>\n\n                <ng-container *ngIf=\"updatePermissionsAllowed\">\n                    <button\n                        mat-icon-button\n                        title=\"{{'PERMISSION_MANAGER.ACTION.ADD-PERMISSION' | translate}}\"\n                        (click)=\"openAddPermissionDialog()\"\n                        class=\"adf-add-permission-button\"\n                        data-automation-id=\"adf-add-permission-button\">\n                        <mat-icon>person_add_outline</mat-icon>\n                    </button>\n\n                    <button\n                        mat-icon-button\n                        title=\"{{'PERMISSION_MANAGER.ACTION.DELETE' | translate}}\"\n                        [disabled]=\"!selectedPermissions?.length\"\n                        (click)=\"deleteSelection()\"\n                        data-automation-id=\"adf-delete-selected-permission\">\n                        <mat-icon>delete_outline</mat-icon>\n                    </button>\n                </ng-container>\n            </section>\n\n            <adf-permission-container\n                class=\"adf-permission-list\"\n                data-automation-id=\"adf-locally-set-permission\"\n                [node]=\"model.node\"\n                [permissions]=\"model.localPermissions\"\n                (update)=\"updatePermission($event)\"\n                (delete)=\"deletePermission($event)\"\n                (updateAll)=\"updateAllPermission($event)\"\n                (row-select)=\"onSelect($any($event).detail.selection)\"\n                (row-unselect)=\"onSelect($any($event).detail.selection)\"\n                [roles]=\"model.roles\"\n                [isReadOnly]=\"!updatePermissionsAllowed\"/>\n\n        </mat-card-content>\n    </ng-container>\n</mat-card>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 */\nimport { Directive, Input, Output, EventEmitter } from '@angular/core';\nimport { Node } from '@alfresco/js-api';\nimport { ContentService } from '../../common/services/content.service';\nimport { NodesApiService } from '../../common/services/nodes-api.service';\nimport { AllowableOperationsEnum } from '../../common/models/allowable-operations.enum';\n\n@Directive({\n    selector: 'button[adf-inherit-permission], mat-button-toggle[adf-inherit-permission]',\n    standalone: true,\n    host: {\n        role: 'button',\n        '(click)': 'onInheritPermissionClicked()'\n    }\n})\nexport class InheritPermissionDirective {\n    /** ID of the node to add/remove inherited permissions. */\n    @Input()\n    nodeId: string;\n\n    /** Emitted when the node is updated. */\n    @Output()\n    updated: EventEmitter<Node> = new EventEmitter<Node>();\n\n    /** Emitted when an error occurs. */\n    @Output()\n    error: EventEmitter<any> = new EventEmitter<any>();\n\n    constructor(private nodeService: NodesApiService, private contentService: ContentService) {}\n\n    onInheritPermissionClicked() {\n        this.nodeService.getNode(this.nodeId).subscribe((node: Node) => {\n            if (this.contentService.hasAllowableOperations(node, AllowableOperationsEnum.UPDATEPERMISSIONS)) {\n                const nodeBody = { permissions: { isInheritanceEnabled: !node?.permissions?.isInheritanceEnabled ?? false } };\n                this.nodeService.updateNode(this.nodeId, nodeBody, { include: ['permissions'] }).subscribe(\n                    (nodeUpdated: Node) => {\n                        this.updated.emit(nodeUpdated);\n                    },\n                    (error) => this.error.emit(error)\n                );\n            } else {\n                this.error.emit('PERMISSION_MANAGER.ERROR.NOT-ALLOWED');\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 { Node, PermissionElement } from '@alfresco/js-api';\nimport { Subject } from 'rxjs';\nimport { RoleModel } from '../../models/role.model';\n\nexport interface AddPermissionDialogData {\n    title?: string;\n    node: Node;\n    roles: RoleModel[];\n    confirm: Subject<PermissionElement[]>;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Node, NodeEntry, PermissionElement } from '@alfresco/js-api';\nimport { Component, EventEmitter, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport { NodePermissionService } from '../../services/node-permission.service';\nimport { RoleModel } from '../../models/role.model';\nimport { ContentService } from '../../../common/services/content.service';\nimport { AllowableOperationsEnum } from '../../../common/models/allowable-operations.enum';\nimport { CommonModule } from '@angular/common';\nimport { AddPermissionPanelComponent } from './add-permission-panel.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n    selector: 'adf-add-permission',\n    standalone: true,\n    imports: [CommonModule, AddPermissionPanelComponent, MatButtonModule, TranslateModule],\n    templateUrl: './add-permission.component.html',\n    styleUrls: ['./add-permission.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\n/*\n * @deprecated in 4.4.0, use adf-add-permission-panel instead.\n */\nexport class AddPermissionComponent implements OnInit {\n    /** ID of the target node. */\n    @Input({ required: true })\n    nodeId: string;\n\n    /** Emitted when the node is updated successfully. */\n    @Output()\n    success = new EventEmitter<Node>();\n\n    /** Emitted when an error occurs during the update. */\n    @Output()\n    error = new EventEmitter<any>();\n\n    selectedItems: NodeEntry[] = [];\n    currentNode: Node;\n    currentNodeRoles: RoleModel[];\n\n    constructor(private nodePermissionService: NodePermissionService, private contentService: ContentService) {}\n\n    ngOnInit(): void {\n        this.nodePermissionService.getNodeWithRoles(this.nodeId).subscribe(({ node, roles }) => {\n            this.currentNode = node;\n            this.currentNodeRoles = roles;\n        });\n    }\n\n    onSelect(selection: NodeEntry[]) {\n        this.selectedItems = selection;\n    }\n\n    isAddEnabled(): boolean {\n        return (\n            this.contentService.hasAllowableOperations(this.currentNode, AllowableOperationsEnum.UPDATEPERMISSIONS) && this.selectedItems.length !== 0\n        );\n    }\n\n    applySelection() {\n        if (this.contentService.hasAllowableOperations(this.currentNode, AllowableOperationsEnum.UPDATEPERMISSIONS)) {\n            const permissions = this.transformNodeToPermissionElement(this.selectedItems, this.currentNodeRoles[0].role);\n            this.nodePermissionService.updateNodePermissions(this.nodeId, permissions).subscribe(\n                (node) => {\n                    this.success.emit(node);\n                },\n                (error) => {\n                    this.error.emit(error);\n                }\n            );\n        }\n    }\n\n    private transformNodeToPermissionElement(nodes: NodeEntry[], role: string): PermissionElement[] {\n        return nodes.map((node) => ({\n            authorityId: node.entry.properties['cm:authorityName'] ?? node.entry.properties['cm:userName'],\n            name: role,\n            accessStatus: 'ALLOWED'\n        }));\n    }\n}\n","<adf-add-permission-panel (select)=\"onSelect($event)\" />\n<div id=\"adf-add-permission-actions\">\n   <button mat-button\n          id=\"adf-add-permission-action-button\"\n          class=\"adf-permission-action\"\n          [disabled]=\"!isAddEnabled()\"\n          (click)=\"applySelection()\">\n     {{'PERMISSION_MANAGER.ADD-PERMISSION.ADD-ACTION' | translate}}\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\nexport interface RoleModel {\n    label: string;\n    role: 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 { PermissionListComponent } from './components/permission-list/permission-list.component';\nimport { AddPermissionComponent } from './components/add-permission/add-permission.component';\nimport { AddPermissionDialogComponent } from './components/add-permission/add-permission-dialog.component';\nimport { InheritPermissionDirective } from './components/inherited-button.directive';\nimport { AddPermissionPanelComponent } from './components/add-permission/add-permission-panel.component';\nimport { UserNameColumnComponent } from './components/user-name-column/user-name-column.component';\nimport { UserIconColumnComponent } from './components/user-icon-column/user-icon-column.component';\nimport { UserRoleColumnComponent } from './components/user-role-column/user-role-column.component';\nimport { NodePathColumnComponent } from './components/node-path-column/node-path-column.component';\nimport { PopOverDirective } from './components/pop-over.directive';\nimport { PermissionContainerComponent } from './components/permission-container/permission-container.component';\n\nexport const CONTENT_PERMISSION_MANAGER_DIRECTIVES = [\n    AddPermissionPanelComponent,\n    AddPermissionComponent,\n    AddPermissionDialogComponent,\n    NodePathColumnComponent,\n    PermissionContainerComponent,\n    PermissionListComponent,\n    UserNameColumnComponent,\n    UserIconColumnComponent,\n    UserRoleColumnComponent,\n    InheritPermissionDirective,\n    PopOverDirective\n] as const;\n\n/** @deprecated use `...CONTENT_PERMISSION_MANAGER_DIRECTIVES` or import the standalone components directly */\n@NgModule({\n    imports: [...CONTENT_PERMISSION_MANAGER_DIRECTIVES],\n    exports: [...CONTENT_PERMISSION_MANAGER_DIRECTIVES]\n})\nexport class PermissionManagerModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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/permission-list/permission-list.component';\nexport * from './components/inherited-button.directive';\nexport * from './models/permission.model';\nexport * from './services/node-permission-dialog.service';\nexport * from './services/node-permission.service';\nexport * from './components/add-permission/add-permission-dialog-data.interface';\nexport * from './components/add-permission/add-permission-panel.component';\nexport * from './components/add-permission/add-permission.component';\nexport * from './components/add-permission/add-permission-dialog.component';\nexport * from './components/add-permission/search-config-permission.service';\nexport * from './components/user-icon-column/user-icon-column.component';\nexport * from './components/user-name-column/user-name-column.component';\nexport * from './components/user-role-column/user-role-column.component';\nexport * from './components/node-path-column/node-path-column.component';\nexport * from './components/permission-container/permission-container.component';\nexport * from './components/pop-over.directive';\nexport * from './models/member.model';\nexport * from './models/role.model';\n\nexport * from './permission-manager.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 { NodeEntry } from '@alfresco/js-api';\n\nexport interface ContentNodeShareSettings {\n    baseShareUrl: string;\n    node: NodeEntry;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY 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 { NodePaging, SharedLinkBodyCreate, SharedLinkEntry, SharedlinksApi } from '@alfresco/js-api';\nimport { Observable, from, of, Subject } from 'rxjs';\nimport { UserPreferencesService } from '@alfresco/adf-core';\nimport { catchError } from 'rxjs/operators';\nimport { AlfrescoApiService } from '../../services/alfresco-api.service';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class SharedLinksApiService {\n    error = new Subject<{ statusCode: number; message: string }>();\n\n    private _sharedLinksApi: SharedlinksApi;\n    get sharedLinksApi(): SharedlinksApi {\n        this._sharedLinksApi = this._sharedLinksApi ?? new SharedlinksApi(this.apiService.getInstance());\n        return this._sharedLinksApi;\n    }\n\n    constructor(private apiService: AlfrescoApiService, private preferences: UserPreferencesService) {}\n\n    /**\n     * Gets shared links available to the current user.\n     *\n     * @param options Options supported by JS-API\n     * @returns List of shared links\n     */\n    getSharedLinks(options: any = {}): Observable<NodePaging> {\n        const defaultOptions = {\n            maxItems: this.preferences.paginationSize,\n            skipCount: 0,\n            include: ['properties', 'allowableOperations']\n        };\n        const queryOptions = Object.assign({}, defaultOptions, options);\n        const promise = this.sharedLinksApi.listSharedLinks(queryOptions);\n\n        return from(promise).pipe(catchError((err) => of(err)));\n    }\n\n    /**\n     * Creates a shared link available to the current user.\n     *\n     * @param nodeId ID of the node to link to\n     * @param sharedLinkWithExpirySettings shared link with nodeId and expiryDate\n     * @param options Options supported by JS-API\n     * @returns The shared link just created\n     */\n    createSharedLinks(nodeId: string, sharedLinkWithExpirySettings?: SharedLinkBodyCreate, options: any = {}): Observable<SharedLinkEntry> {\n        const promise = this.sharedLinksApi.createSharedLink(sharedLinkWithExpirySettings ? sharedLinkWithExpirySettings : { nodeId }, options);\n\n        return from(promise).pipe(catchError((err) => of(err)));\n    }\n\n    /**\n     * Deletes a shared link.\n     *\n     * @param sharedId ID of the link to delete\n     * @returns Null response notifying when the operation is complete\n     */\n    deleteSharedLink(sharedId: string): Observable<any | Error> {\n        const promise = this.sharedLinksApi.deleteSharedLink(sharedId);\n\n        return from(promise).pipe(catchError((err: Error) => of(err)));\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, Inject, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialog, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { MatSlideToggleChange, MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { ContentService } from '../common/services/content.service';\nimport { SharedLinksApiService } from './services/shared-links-api.service';\nimport { SharedLinkBodyCreate } from '@alfresco/js-api';\nimport { ClipboardDirective, ConfirmDialogComponent } from '@alfresco/adf-core';\nimport { ContentNodeShareSettings } from './content-node-share.settings';\nimport { RenditionService } from '../common/services/rendition.service';\nimport { add, endOfDay, format, isBefore } from 'date-fns';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatButtonModule } from '@angular/material/button';\n\ninterface SharedDialogFormProps {\n    sharedUrl: FormControl<string>;\n    time: FormControl<Date>;\n}\n\n@Component({\n    selector: 'adf-share-dialog',\n    standalone: true,\n    imports: [\n        CommonModule,\n        TranslateModule,\n        MatIconModule,\n        MatDialogModule,\n        ReactiveFormsModule,\n        MatSlideToggleModule,\n        MatFormFieldModule,\n        MatDatepickerModule,\n        MatInputModule,\n        MatButtonModule,\n        ClipboardDirective\n    ],\n    templateUrl: './content-node-share.dialog.html',\n    styleUrls: ['./content-node-share.dialog.scss'],\n    host: { class: 'adf-share-dialog' },\n    encapsulation: ViewEncapsulation.None\n})\nexport class ShareDialogComponent implements OnInit {\n    private minDateValidator = (control: FormControl<Date>): any =>\n        isBefore(endOfDay(new Date(control.value)), this.minDate) ? { invalidDate: true } : null;\n\n    minDate = add(new Date(), { days: 1 });\n    sharedId: string;\n    fileName: string;\n    baseShareUrl: string;\n    isFileShared = false;\n    isDisabled = false;\n    isLinkWithExpiryDate = false;\n    form = new FormGroup<SharedDialogFormProps>({\n        sharedUrl: new FormControl(''),\n        time: new FormControl({ value: null, disabled: true }, [Validators.required, this.minDateValidator])\n    });\n    isExpiryDateToggleChecked: boolean;\n\n    @ViewChild('slideToggleExpirationDate', { static: true })\n    slideToggleExpirationDate;\n    constructor(\n        private sharedLinksApiService: SharedLinksApiService,\n        private dialogRef: MatDialogRef<ShareDialogComponent>,\n        private dialog: MatDialog,\n        private contentService: ContentService,\n        private renditionService: RenditionService,\n        @Inject(MAT_DIALOG_DATA) public data: ContentNodeShareSettings\n    ) {}\n\n    ngOnInit() {\n        if (this.data.node?.entry) {\n            this.fileName = this.data.node.entry.name;\n            this.baseShareUrl = this.data.baseShareUrl;\n\n            const properties = this.data.node.entry.properties;\n\n            if (!properties?.['qshare:sharedId']) {\n                this.createSharedLinks(this.data.node.entry.id);\n            } else {\n                this.sharedId = properties['qshare:sharedId'];\n                this.isFileShared = true;\n\n                const expiryDate = this.updateForm();\n                this.isExpiryDateToggleChecked = this.isLinkWithExpiryDate = !!expiryDate;\n                this.isLinkWithExpiryDate ? this.time.enable() : this.time.disable();\n            }\n        }\n    }\n\n    onTimeChanged() {\n        if (this.time.valid) {\n            this.updateNode(this.time.value);\n        }\n    }\n\n    get time(): FormControl<Date> {\n        return this.form.controls['time'];\n    }\n    onSlideShareChange(event: MatSlideToggleChange) {\n        if (event.checked) {\n            this.createSharedLinks(this.data.node.entry.id);\n        } else {\n            this.openConfirmationDialog();\n        }\n    }\n\n    get canUpdate() {\n        const { entry } = this.data.node;\n\n        if (entry?.allowableOperations) {\n            return this.contentService.hasAllowableOperations(entry, 'update');\n        }\n\n        return true;\n    }\n\n    onToggleExpirationDate(slideToggle: MatSlideToggleChange) {\n        if (slideToggle.checked) {\n            this.time.enable();\n            this.isExpiryDateToggleChecked = true;\n        } else {\n            this.time.disable();\n            this.time.setValue(null);\n            this.deleteSharedLink(this.sharedId, true);\n        }\n    }\n\n    onDatePickerClosed() {\n        this.onTimeChanged();\n        if (!this.time.value) {\n            this.slideToggleExpirationDate.checked = false;\n        }\n    }\n\n    preventIncorrectCharacters(e: KeyboardEvent): boolean {\n        const regex = /[^\\d/.-]/;\n        return e.key.length === 1 ? !regex.test(e.key) : true;\n    }\n\n    private openConfirmationDialog() {\n        this.isFileShared = false;\n\n        this.dialog\n            .open(ConfirmDialogComponent, {\n                data: {\n                    title: 'SHARE.CONFIRMATION.DIALOG-TITLE',\n                    message: 'SHARE.CONFIRMATION.MESSAGE',\n                    yesLabel: 'SHARE.CONFIRMATION.REMOVE',\n                    noLabel: 'SHARE.CONFIRMATION.CANCEL'\n                },\n                minWidth: '250px',\n                closeOnNavigation: true\n            })\n            .beforeClosed()\n            .subscribe((deleteSharedLink) => {\n                if (deleteSharedLink) {\n                    this.deleteSharedLink(this.sharedId);\n                } else {\n                    this.isFileShared = true;\n                }\n            });\n    }\n\n    private createSharedLinks(nodeId: string, sharedLinkWithExpirySettings?: SharedLinkBodyCreate) {\n        this.isDisabled = true;\n\n        this.sharedLinksApiService.createSharedLinks(nodeId, sharedLinkWithExpirySettings).subscribe(\n            (sharedLink) => {\n                if (sharedLink.entry) {\n                    this.sharedId = sharedLink.entry.id;\n                    if (this.data.node.entry.properties) {\n                        this.data.node.entry.properties['qshare:sharedId'] = this.sharedId;\n                    } else {\n                        this.data.node.entry.properties = {\n                            'qshare:sharedId': this.sharedId\n                        };\n                    }\n                    this.isDisabled = false;\n                    this.isFileShared = true;\n\n                    // eslint-disable-next-line\n                    this.renditionService.getNodeRendition(this.data.node.entry.id);\n\n                    this.updateForm();\n                }\n            },\n            () => {\n                this.isDisabled = false;\n                this.isFileShared = false;\n            }\n        );\n    }\n\n    deleteSharedLink(sharedId: string, dialogOpenFlag?: boolean) {\n        this.isDisabled = true;\n\n        this.sharedLinksApiService.deleteSharedLink(sharedId).subscribe((response: any) => {\n            if (response instanceof Error) {\n                this.isDisabled = false;\n                this.isFileShared = true;\n                this.handleError(response);\n            } else {\n                if (this.data.node.entry.properties) {\n                    this.data.node.entry.properties['qshare:sharedId'] = null;\n                    this.data.node.entry.properties['qshare:expiryDate'] = null;\n                }\n                if (dialogOpenFlag) {\n                    this.createSharedLinks(this.data.node.entry.id);\n                    this.isExpiryDateToggleChecked = false;\n                    this.isLinkWithExpiryDate = false;\n                } else {\n                    this.dialogRef.close(false);\n                }\n            }\n        });\n    }\n\n    private handleError(error: Error) {\n        let message = 'SHARE.UNSHARE_ERROR';\n        let statusCode = 0;\n\n        try {\n            statusCode = JSON.parse(error.message).error.statusCode;\n        } catch {\n            /* empty */\n        }\n\n        if (statusCode === 403) {\n            message = 'SHARE.UNSHARE_PERMISSION_ERROR';\n        }\n\n        this.sharedLinksApiService.error.next({\n            statusCode,\n            message\n        });\n    }\n\n    private updateForm(): Date {\n        const { entry } = this.data.node;\n        let expiryDate = null;\n\n        if (entry?.properties) {\n            expiryDate = entry.properties['qshare:expiryDate'];\n        }\n\n        this.form.setValue(\n            {\n                sharedUrl: `${this.baseShareUrl}${this.sharedId}`,\n                time: expiryDate ? new Date(expiryDate) : null\n            },\n            { emitEvent: false }\n        );\n\n        return expiryDate;\n    }\n\n    private updateNode(date: Date) {\n        let expiryDate: Date | string;\n        if (date) {\n            expiryDate = format(endOfDay(new Date(date)), `yyyy-MM-dd'T'HH:mm:ss.SSSxx`);\n        } else {\n            expiryDate = null;\n        }\n\n        if (this.sharedId && expiryDate) {\n            this.isDisabled = true;\n\n            this.sharedLinksApiService.deleteSharedLink(this.sharedId).subscribe((response: any) => {\n                if (response instanceof Error) {\n                    this.isDisabled = false;\n                    this.isFileShared = true;\n                    this.handleError(response);\n                } else {\n                    this.sharedLinkWithExpirySettings(expiryDate as Date);\n                    this.isLinkWithExpiryDate = true;\n                    this.updateEntryExpiryDate(date);\n                }\n            });\n        }\n    }\n\n    private sharedLinkWithExpirySettings(expiryDate: Date) {\n        const nodeObject: SharedLinkBodyCreate = {\n            nodeId: this.data.node.entry.id,\n            expiresAt: expiryDate as Date\n        };\n        this.createSharedLinks(this.data.node.entry.id, nodeObject);\n    }\n\n    private updateEntryExpiryDate(date: Date) {\n        const { properties } = this.data.node.entry;\n\n        if (properties) {\n            properties['qshare:expiryDate'] = date ? new Date(date) : null;\n        }\n    }\n}\n","<div class=\"adf-share-link__dialog-content\">\n    <div class=\"adf-share-link__dialog-container\">\n        <div class=\"adf-share-link--header adf-share-link--row\">\n            <div\n                data-automation-id=\"adf-share-dialog-title\"\n                class=\"adf-share-link__title adf-share-link__label adf-share-link__heading\"\n                role=\"heading\"\n                aria-level=\"1\">\n                {{ 'SHARE.DIALOG-TITLE' | translate }} {{ fileName }}\n            </div>\n            <mat-icon mat-dialog-close class=\"adf-share-link__close adf-share-link__icon\">close</mat-icon>\n        </div>\n        <mat-dialog-content class=\"adf-share-link--dialog-content\">\n            <hr class=\"adf-share-link__separation-line\" />\n            <form [formGroup]=\"form\" class=\"adf-share-link__form\">\n                <div class=\"adf-share-link--row adf-share-link--row-sharable\">\n                    <mat-icon class=\"adf-share-link__icon\">timer</mat-icon>\n                    <div class=\"adf-share-link__label adf-sharable-link\">{{ 'SHARE.LINK-EXPIRY-DATE' | translate }}\n                    </div>\n                    <mat-slide-toggle\n                        #slideToggleExpirationDate\n                        [disabled]=\"!canUpdate\"\n                        color=\"primary\"\n                        data-automation-id=\"adf-expire-toggle\"\n                        aria-label=\"{{ 'SHARE.EXPIRES' | translate }}\"\n                        [checked]=\"!!time.value\"\n                        (change)=\"onToggleExpirationDate($event)\" />\n                </div>\n                <div\n                    [style.display]=\"isExpiryDateToggleChecked ? 'block' : 'none'\"\n                    data-automation-id=\"adf-slide-toggle-checked\"\n                    class=\"adf-share-link__date-time-container\">\n                    <mat-form-field class=\"adf-full-width\" subscriptSizing=\"dynamic\" data-automation-id=\"adf-content-share-expiration-field\">\n                        <mat-label>{{ 'SHARE.EXPIRATION-PLACEHOLDER' | translate }}</mat-label>\n                        <mat-datepicker-toggle\n                            [disabled]=\"time.disabled\"\n                            [for]=\"datePicker\"\n                            matSuffix\n                            class=\"adf-share-link__icon adf-share-link__calender-icon\" />\n                        <mat-datepicker\n                            #datePicker\n                            (closed)=\"onDatePickerClosed()\" />\n                        <input\n                            class=\"adf-share-link__input\"\n                            #datePickerInput\n                            matInput\n                            [attr.aria-label]=\"'SHARE.EXPIRATION-LABEL' | translate\"\n                            [min]=\"minDate\"\n                            formControlName=\"time\"\n                            (keydown)=\"preventIncorrectCharacters($event)\"\n                            (blur)=\"onTimeChanged()\"\n                            (keydown.enter)=\"datePickerInput.blur()\"\n                            [matDatepicker]=\"datePicker\"/>\n                        <mat-error *ngIf=\"time.errors?.['invalidDate'] && (time.dirty || time.touched)\"\n                                   data-automation-id=\"adf-share-link-input-warning\">{{ 'SHARE.INVALID_DATE_ERROR' | translate }}</mat-error>\n                    </mat-form-field>\n                </div>\n                <p class=\"adf-share-link__info adf-share-link__para\">{{ 'SHARE.SHARE-LINK' | translate }}</p>\n                <div class=\"adf-share-link--row adf-share-link--sharable-container\">\n                    <mat-slide-toggle\n                        color=\"primary\"\n                        data-automation-id=\"adf-share-toggle\"\n                        class=\"adf-share-link--row__slide-toggle\"\n                        aria-label=\"{{ 'SHARE.TITLE' | translate }}\"\n                        [checked]=\"isFileShared\"\n                        [disabled]=\"!canUpdate || isDisabled\"\n                        (change)=\"onSlideShareChange($event)\" />\n                    <div class=\"adf-share-link__label adf-sharable-link\">{{ 'SHARE.SHARABLE-LINK-CREATED' | translate }}\n                    </div>\n                </div>\n                <mat-form-field\n                    subscriptSizing=\"dynamic\"\n                    floatLabel=\"always\"\n                    class=\"adf-full-width adf-share-link__form--field\"\n                    data-automation-id=\"adf-content-share-public-link-field\"\n                    [ngClass]=\"isLinkWithExpiryDate? 'adf-share-link__border-color' : ''\">\n                    <input\n                        #sharedLinkInput\n                        data-automation-id=\"adf-share-link\"\n                        class=\"adf-share-link__input\"\n                        matInput\n                        placeholder=\"{{ 'SHARE.PUBLIC-LINK' | translate }}\"\n                        [attr.aria-label]=\"'SHARE.PUBLIC-LINK' | translate\"\n                        formControlName=\"sharedUrl\"\n                        readonly=\"readonly\">\n                    <mat-icon\n                        class=\"adf-input-action adf-share-link__icon adf-share-link__copy-icon\"\n                        role=\"button\"\n                        matSuffix\n                        [clipboard-notification]=\"'SHARE.CLIPBOARD-MESSAGE' | translate\"\n                        [adf-clipboard]\n                        [attr.aria-label]=\"'SHARE.COPY_BUTTON_LABEL' | translate\"\n                        [target]=\"sharedLinkInput\"\n                        tabindex=\"0\">\n                        content_copy\n                    </mat-icon>\n                </mat-form-field>\n                <p class=\"adf-share-link__warn adf-share-link__para\" *ngIf=\"isLinkWithExpiryDate\">\n                    {{ 'SHARE.LINK-WITH-EXPIRY-SETTINGS' | translate }}\n                </p>\n                <div class=\"adf-share-link--row\">\n                    <mat-icon class=\"adf-share-link__icon\">public</mat-icon>\n                    <p\n                        class=\"adf-share-link__info adf-sharable-link adf-share-link__public-content adf-share-link__para\">\n                        {{ 'SHARE.PUBLIC-CONTENT' | translate }}\n                    </p>\n                </div>\n            </form>\n            <hr class=\"adf-share-link__separation-line\" />\n        </mat-dialog-content>\n        <div class=\"adf-share-link__actions\" mat-dialog-actions>\n            <button data-automation-id=\"adf-share-dialog-close\" mat-button color=\"primary\" mat-dialog-close>\n                {{ 'SHARE.CLOSE' | translate }}\n            </button>\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 { DestroyRef, Directive, HostListener, inject, Input, NgZone, OnChanges } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { NodeEntry, NodesApi } from '@alfresco/js-api';\n\nimport { ShareDialogComponent } from './content-node-share.dialog';\nimport { from, Observable } from 'rxjs';\nimport { AlfrescoApiService } from '../services/alfresco-api.service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Directive({\n    selector: '[adf-share]',\n    standalone: true,\n    exportAs: 'adfShare'\n})\nexport class NodeSharedDirective implements OnChanges {\n    isFile: boolean = false;\n    isShared: boolean = false;\n\n    /** Node to share. */\n    // eslint-disable-next-line @angular-eslint/no-input-rename\n    @Input('adf-share')\n    node: NodeEntry;\n\n    /** Prefix to add to the generated link. */\n    @Input()\n    baseShareUrl: string;\n\n\n    _nodesApi: NodesApi;\n    get nodesApi(): NodesApi {\n        this._nodesApi = this._nodesApi ?? new NodesApi(this.alfrescoApiService.getInstance());\n        return this._nodesApi;\n    }\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    constructor(private dialog: MatDialog, private zone: NgZone, private alfrescoApiService: AlfrescoApiService) {}\n    shareNode(nodeEntry: NodeEntry) {\n        if (nodeEntry?.entry?.isFile) {\n            // shared and favorite\n            const nodeId = nodeEntry.entry['nodeId'] || nodeEntry.entry['guid'];\n\n            if (nodeId) {\n                this.getNodeInfo(nodeId).subscribe((node) => {\n                    this.openShareLinkDialog(node);\n                });\n            } else {\n                this.openShareLinkDialog(nodeEntry);\n            }\n        }\n    }\n\n    private getNodeInfo(nodeId: string): Observable<NodeEntry> {\n        const options = {\n            include: ['allowableOperations']\n        };\n\n        return from(this.nodesApi.getNode(nodeId, options));\n    }\n\n    private openShareLinkDialog(node: NodeEntry) {\n        this.dialog.open(ShareDialogComponent, {\n            width: '600px',\n            panelClass: 'adf-share-link-dialog',\n            data: {\n                node,\n                baseShareUrl: this.baseShareUrl\n            }\n        });\n    }\n\n    ngOnChanges() {\n        this.zone.onStable.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n            if (this.node?.entry) {\n                this.isFile = this.node.entry.isFile;\n                this.isShared = this.node.entry.properties ? this.node.entry.properties['qshare:sharedId'] : false;\n            }\n        });\n    }\n\n    @HostListener('click')\n    onClick() {\n        if (this.node) {\n            this.shareNode(this.node);\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 { ShareDialogComponent } from './content-node-share.dialog';\nimport { NodeSharedDirective } from './content-node-share.directive';\n\nexport const CONTENT_NODE_SHARE_DIRECTIVES = [ShareDialogComponent, NodeSharedDirective] as const;\n\n/** @deprecated use `...CONTENT_NODE_SHARE_DIRECTIVES` or import each directive individually */\n@NgModule({\n    imports: [...CONTENT_NODE_SHARE_DIRECTIVES],\n    exports: [...CONTENT_NODE_SHARE_DIRECTIVES]\n})\nexport class ContentNodeShareModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 './content-node-share.settings';\nexport * from './content-node-share.dialog';\nexport * from './content-node-share.directive';\n\nexport * from './services/shared-links-api.service';\n\nexport * from './content-node-share.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 { NodeEntry } from '@alfresco/js-api';\n\nexport class TreeBaseNode {\n    name: string;\n    nodeId: string;\n    level: number;\n    expandable = true;\n    node: NodeEntry;\n\n    constructor(nodeEntry: NodeEntry, level?: number, expandable?: boolean) {\n        this.name = nodeEntry.entry.name;\n        this.nodeId = nodeEntry.entry.id;\n        this.level = level ? level : 0;\n        this.expandable = expandable ? expandable : true;\n        this.node = nodeEntry ? new NodeEntry(nodeEntry) : undefined;\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 { NodesApiService } from '../../common/services/nodes-api.service';\nimport { inject, Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { TreeBaseNode } from '../models/tree-view.model';\nimport { NodePaging, NodeEntry } from '@alfresco/js-api';\nimport { map } from 'rxjs/operators';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class TreeViewService {\n    private nodeApi = inject(NodesApiService);\n\n    getTreeNodes(nodeId: string): Observable<TreeBaseNode[]> {\n        return this.nodeApi.getNodeChildren(nodeId).pipe(\n            map((nodePage: NodePaging) => nodePage.list.entries.filter((node) => (node.entry.isFolder ? node : null))),\n            map((nodes: NodeEntry[]) => nodes.map((node) => new TreeBaseNode(node)))\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 } from '@angular/core';\nimport { CollectionViewer, SelectionChange } from '@angular/cdk/collections';\nimport { BehaviorSubject, merge, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { FlatTreeControl } from '@angular/cdk/tree';\nimport { TreeBaseNode } from '../models/tree-view.model';\nimport { TreeViewService } from '../services/tree-view.service';\n\n@Injectable()\nexport class TreeViewDataSource {\n    treeNodes: TreeBaseNode[];\n    dataChange = new BehaviorSubject<TreeBaseNode[]>([]);\n    childrenSubscription = null;\n    changeSubscription = null;\n\n    get data(): TreeBaseNode[] {\n        return this.treeNodes;\n    }\n\n    set data(value: TreeBaseNode[]) {\n        this.treeControl.dataNodes = value;\n        this.dataChange.next(value);\n    }\n\n    constructor(private treeControl: FlatTreeControl<TreeBaseNode>, private treeViewService: TreeViewService) {\n        this.dataChange.subscribe((treeNodes) => (this.treeNodes = treeNodes));\n    }\n\n    connect(collectionViewer: CollectionViewer): Observable<TreeBaseNode[]> {\n        this.changeSubscription = this.treeControl.expansionModel.changed.subscribe((change) => {\n            if ((change as SelectionChange<TreeBaseNode>).added && (change as SelectionChange<TreeBaseNode>).added.length > 0) {\n                this.expandTreeNodes(change as SelectionChange<TreeBaseNode>);\n            } else if ((change as SelectionChange<TreeBaseNode>).removed) {\n                this.reduceTreeNodes(change as SelectionChange<TreeBaseNode>);\n            }\n        });\n        return merge(collectionViewer.viewChange, this.dataChange).pipe(map(() => this.data));\n    }\n\n    disconnect() {\n        if (this.childrenSubscription) {\n            this.childrenSubscription.unsubscribe();\n        }\n        if (this.changeSubscription) {\n            this.changeSubscription.unsubscribe();\n        }\n    }\n\n    private expandTreeNodes(change: SelectionChange<TreeBaseNode>) {\n        change.added.forEach((node) => this.expandNode(node));\n    }\n\n    private reduceTreeNodes(change: SelectionChange<TreeBaseNode>) {\n        change.removed\n            .slice()\n            .reverse()\n            .forEach((node) => this.toggleNode(node));\n    }\n\n    private expandNode(node: TreeBaseNode) {\n        this.childrenSubscription = this.treeViewService.getTreeNodes(node.nodeId).subscribe((children) => {\n            const index = this.data.indexOf(node);\n            if (!children || index < 0) {\n                node.expandable = false;\n                return;\n            }\n            const nodes = children.map((actualNode) => {\n                actualNode.level = node.level + 1;\n                return actualNode;\n            });\n            this.data.splice(index + 1, 0, ...nodes);\n            this.dataChange.next(this.data);\n        });\n    }\n\n    toggleNode(node: TreeBaseNode) {\n        const index = this.data.indexOf(node);\n        let count = 0;\n        for (let i = index + 1; i < this.data.length && this.data[i].level > node.level; i++, count++) {\n            /* empty */\n        }\n        this.data.splice(index + 1, count);\n        this.dataChange.next(this.data);\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 { FlatTreeControl } from '@angular/cdk/tree';\nimport { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport { TreeBaseNode } from '../models/tree-view.model';\nimport { TreeViewDataSource } from '../data/tree-view-datasource';\nimport { TreeViewService } from '../services/tree-view.service';\nimport { NodeEntry } from '@alfresco/js-api';\nimport { CommonModule } from '@angular/common';\nimport { MatTreeModule } from '@angular/material/tree';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n    selector: 'adf-tree-view-list',\n    standalone: true,\n    imports: [CommonModule, MatTreeModule, MatButtonModule, MatIconModule, TranslateModule],\n    templateUrl: './tree-view.component.html',\n    styleUrls: ['./tree-view.component.scss']\n})\nexport class TreeViewComponent implements OnChanges {\n    /** Identifier of the node to display. */\n    @Input({ required: true })\n    nodeId: string;\n\n    /** Emitted when a node in the tree view is clicked. */\n    @Output()\n    nodeClicked: EventEmitter<NodeEntry> = new EventEmitter();\n\n    /** Emitted when an invalid node id is given. */\n    @Output()\n    error: EventEmitter<any> = new EventEmitter();\n\n    treeControl: FlatTreeControl<TreeBaseNode>;\n    dataSource: TreeViewDataSource;\n\n    constructor(private treeViewService: TreeViewService) {\n        this.treeControl = new FlatTreeControl<TreeBaseNode>(this.getLevel, this.isExpandable);\n        this.dataSource = new TreeViewDataSource(this.treeControl, this.treeViewService);\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        if (changes['nodeId']?.currentValue && changes['nodeId'].currentValue !== changes['nodeId'].previousValue) {\n            this.loadTreeNode();\n        } else {\n            this.dataSource.data = [];\n        }\n    }\n\n    onNodeClicked(node: NodeEntry) {\n        this.nodeClicked.emit(node);\n    }\n\n    getLevel = (node: TreeBaseNode) => node.level;\n\n    isExpandable = (node: TreeBaseNode) => node.expandable;\n\n    hasChild = (_: number, nodeData: TreeBaseNode) => nodeData.expandable;\n\n    private loadTreeNode() {\n        this.treeViewService.getTreeNodes(this.nodeId).subscribe(\n            (treeNode: TreeBaseNode[]) => {\n                this.dataSource.data = treeNode;\n            },\n            (error) => this.error.emit(error)\n        );\n    }\n}\n","<mat-tree class=\"adf-tree-view-main\" [dataSource]=\"dataSource\" [treeControl]=\"treeControl\" *ngIf=\"nodeId; else missingNodeId\">\n    <mat-tree-node\n        class=\"adf-tree-view adf-tree-view-node\"\n        *matTreeNodeDef=\"let treeNode\"\n        id=\"{{ treeNode.name + '-tree-node' }}\"\n        matTreeNodePadding\n        [matTreeNodePaddingIndent]=\"15\"\n    >\n        {{ treeNode.name }}\n    </mat-tree-node>\n    <mat-tree-node\n        class=\"adf-tree-view adf-tree-view-node\"\n        id=\"{{ treeNode.name + '-tree-child-node' }}\"\n        *matTreeNodeDef=\"let treeNode; when: hasChild\"\n        matTreeNodePadding\n        [matTreeNodePaddingIndent]=\"15\"\n    >\n        <button\n            matTreeNodeToggle\n            id=\"{{ 'button-' + treeNode.name }}\"\n            (click)=\"onNodeClicked(treeNode.node)\"\n            mat-icon-button\n            [attr.aria-label]=\"\n                'ADF-TREE-VIEW.ACCESSIBILITY.ARIA_LABEL'\n                    | translate\n                        : {\n                              name: treeNode.name\n                          }\n            \"\n        >\n            <mat-icon class=\"adf-tree-view-icon\">\n                {{ treeControl.isExpanded(treeNode) ? 'folder_open' : 'folder' }}\n            </mat-icon>\n        </button>\n        <span\n            class=\"adf-tree-view-label\"\n            matTreeNodeToggle\n            role=\"button\"\n            (click)=\"onNodeClicked(treeNode.node)\"\n            tabindex=\"0\"\n            (keyup.enter)=\"onNodeClicked(treeNode.node)\"\n            >{{ treeNode.name }}</span\n        >\n    </mat-tree-node>\n</mat-tree>\n<ng-template #missingNodeId>\n    <div id=\"adf-tree-view-missing-node\">\n        {{ 'ADF-TREE-VIEW.MISSING-ID' | translate }}\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 { NgModule } from '@angular/core';\nimport { TreeViewComponent } from './components/tree-view.component';\n\n/** @deprecated use `TreeViewComponent` instead */\n@NgModule({\n    imports: [TreeViewComponent],\n    exports: [TreeViewComponent]\n})\nexport class TreeViewModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 './tree-view.module';\nexport * from './components/tree-view.component';\nexport * from './data/tree-view-datasource';\nexport * from './models/tree-view.model';\nexport * from './services/tree-view.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 './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 { ContentIncludeQuery, Group, GroupEntry, GroupsApi } from '@alfresco/js-api';\nimport { AlfrescoApiService } from '../../services/alfresco-api.service';\nimport { from, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class GroupService {\n    private _groupsApi: GroupsApi;\n    get groupsApi(): GroupsApi {\n        this._groupsApi = this._groupsApi ?? new GroupsApi(this.alfrescoApiService.getInstance());\n        return this._groupsApi;\n    }\n\n    constructor(private alfrescoApiService: AlfrescoApiService) {}\n\n    async listAllGroupMembershipsForPerson(personId: string, opts?: any, accumulator = []): Promise<GroupEntry[]> {\n        const groupsPaginated = await this.groupsApi.listGroupMembershipsForPerson(personId, opts);\n        accumulator = [...accumulator, ...groupsPaginated.list.entries];\n        if (groupsPaginated.list.pagination.hasMoreItems) {\n            const skip = groupsPaginated.list.pagination.skipCount + groupsPaginated.list.pagination.count;\n            return this.listAllGroupMembershipsForPerson(\n                personId,\n                {\n                    maxItems: opts.maxItems,\n                    skipCount: skip\n                },\n                accumulator\n            );\n        } else {\n            return accumulator;\n        }\n    }\n\n    /**\n     * Returns group for specified id.\n     *\n     * @param id id of group to return.\n     * @param opts additional query parameters\n     * @returns Observable<GroupEntry> group for specified id.\n     */\n    getGroup(id: string, opts?: ContentIncludeQuery): Observable<GroupEntry> {\n        return from(this.groupsApi.getGroup(id, opts)).pipe(\n            map((group) => {\n                group.entry.description ||= '';\n                return group;\n            })\n        );\n    }\n\n    /**\n     * Updates specified group.\n     *\n     * @param group group to update.\n     * @param opts additional query parameters\n     * @returns Observable<GroupEntry> updated group.\n     */\n    updateGroup(group: Group, opts?: ContentIncludeQuery): Observable<GroupEntry> {\n        return from(\n            this.groupsApi.updateGroup(\n                group.id,\n                {\n                    displayName: group.displayName,\n                    description: group.description\n                },\n                opts\n            )\n        ).pipe(\n            map((updatedGroup) => {\n                updatedGroup.entry.description ||= '';\n                return updatedGroup;\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 * from './services/group.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 './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 { Subject } from 'rxjs';\n\nexport interface AspectListDialogComponentData {\n    title: string;\n    description: string;\n    overTableMessage: string;\n    select: Subject<string[]>;\n    nodeId?: string;\n    excludedAspects?: 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 { AspectListComponent } from './aspect-list.component';\nimport { AspectListDialogComponent } from './aspect-list-dialog.component';\n\nexport const ASPECT_LIST_DIRECTIVES = [AspectListComponent, AspectListDialogComponent] as const;\n\n/** @deprecated use `...ASPECT_LIST_DIRECTIVES` or import the individual components */\n@NgModule({\n    imports: [...ASPECT_LIST_DIRECTIVES],\n    exports: [...ASPECT_LIST_DIRECTIVES]\n})\nexport class AspectListModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 './aspect-list.component';\nexport * from './aspect-list-dialog.component';\nexport * from './services/aspect-list.service';\nexport * from './services/node-aspect.service';\nexport * from './services/dialog-aspect-list.service';\n\nexport * from './aspect-list-dialog-data.interface';\n\nexport * from './aspect-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 { Subject } from 'rxjs';\n\nexport interface ContentTypeDialogComponentData {\n    title: string;\n    description: string;\n    confirmMessage: string;\n    select: Subject<boolean>;\n    nodeType?: 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 './content-type.service';\nexport * from './content-type-metadata.interface';\nexport * from './content-type-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\nimport { CommentModel, CommentsService, User } from '@alfresco/adf-core';\nimport { CommentEntry, CommentsApi, Comment } from '@alfresco/js-api';\nimport { Injectable } from '@angular/core';\nimport { Observable, from } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { ContentService } from '../../common/services/content.service';\nimport { AlfrescoApiService } from '../../services/alfresco-api.service';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class NodeCommentsService implements CommentsService {\n    private _commentsApi: CommentsApi;\n    get commentsApi(): CommentsApi {\n        this._commentsApi = this._commentsApi ?? new CommentsApi(this.apiService.getInstance());\n        return this._commentsApi;\n    }\n\n    constructor(private apiService: AlfrescoApiService, private contentService: ContentService) {}\n\n    /**\n     * Gets all comments that have been added to a task.\n     *\n     * @param id ID of the target task\n     * @returns Details for each comment\n     */\n    get(id: string): Observable<CommentModel[]> {\n        return from(this.commentsApi.listComments(id)).pipe(\n            map((response) => {\n                const comments: CommentModel[] = [];\n\n                response.list.entries.forEach((comment: CommentEntry) => {\n                    this.addToComments(comments, comment);\n                });\n\n                return comments;\n            })\n        );\n    }\n\n    /**\n     * Adds a comment to a task.\n     *\n     * @param id ID of the target task\n     * @param message Text for the comment\n     * @returns Details about the comment\n     */\n    add(id: string, message: string): Observable<CommentModel> {\n        return from(this.commentsApi.createComment(id, { content: message })).pipe(map((response) => this.newCommentModel(response.entry)));\n    }\n\n    private addToComments(comments: CommentModel[], comment: CommentEntry): void {\n        const newComment: Comment = comment.entry;\n\n        comments.push(this.newCommentModel(newComment));\n    }\n\n    private newCommentModel(comment: Comment): CommentModel {\n        return new CommentModel({\n            id: comment.id,\n            message: comment.content,\n            created: comment.createdAt,\n            createdBy: new User(comment.createdBy)\n        });\n    }\n\n    getUserImage(avatarId: string): string {\n        return this.contentService.getContentUrl(avatarId);\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 { ADF_COMMENTS_SERVICE, CommentsComponent } from '@alfresco/adf-core';\nimport { NodeCommentsService } from './services/node-comments.service';\n\n@Component({\n    selector: 'adf-node-comments',\n    standalone: true,\n    imports: [CommentsComponent],\n    templateUrl: './node-comments.component.html',\n    encapsulation: ViewEncapsulation.None,\n    providers: [\n        {\n            provide: ADF_COMMENTS_SERVICE,\n            useClass: NodeCommentsService\n        }\n    ]\n})\nexport class NodeCommentsComponent {\n    /** nodeId of the document that has comments */\n    @Input({ required: true })\n    nodeId: string;\n\n    /** make the comments component readOnly */\n    @Input()\n    readOnly: boolean;\n}\n","<adf-comments \n    [readOnly]=\"readOnly\"\n    [id]=\"nodeId\"\n/>","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY 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 { NodeCommentsComponent } from './node-comments.component';\n\n/** @deprecated import NodeCommentsComponent standalone component directly */\n@NgModule({\n    imports: [NodeCommentsComponent],\n    exports: [NodeCommentsComponent]\n})\nexport class NodeCommentsModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 './node-comments.component';\nexport * from './services/node-comments.service';\nexport * from './node-comments.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 { Version, NodeChildAssociation, Node } from '@alfresco/js-api';\nimport { NodeEntityEvent } from '../../document-list';\n\nexport interface NewVersionUploaderDialogData {\n    title?: string;\n    node: Node;\n    file?: File;\n    currentVersion?: Version;\n    showVersionsOnly?: boolean;\n    showComments?: boolean;\n    showActions?: boolean;\n    allowDownload?: boolean;\n    allowViewVersions?: boolean;\n    allowVersionDelete?: boolean;\n}\n\nexport type NewVersionUploaderData = VersionManagerUploadData | ViewVersion | RefreshData;\n\n// eslint-disable-next-line no-shadow\nexport enum NewVersionUploaderDataAction {\n    refresh = 'refresh',\n    upload = 'upload',\n    view = 'view'\n}\n\ninterface BaseData {\n    action: NewVersionUploaderDataAction;\n}\n\nexport interface VersionManagerUploadData extends BaseData {\n    action: NewVersionUploaderDataAction.upload;\n    newVersion: NodeEntityEvent;\n    currentVersion: NodeChildAssociation;\n}\n\nexport interface ViewVersion extends BaseData {\n    action: NewVersionUploaderDataAction.view;\n    versionId: string;\n}\n\nexport interface RefreshData extends BaseData {\n    action: NewVersionUploaderDataAction.refresh;\n    node: Node;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 './new-version-uploader.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\nimport { Node } from '@alfresco/js-api';\nimport { Component, EventEmitter, Inject, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';\nimport { NewVersionUploaderDialogData, NewVersionUploaderData, NewVersionUploaderDataAction } from './models';\nimport { CommonModule } from '@angular/common';\nimport { VersionComparisonComponent } from '../version-manager/version-comparison.component';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { VersionUploadComponent } from '../version-manager/version-upload.component';\nimport { VersionListComponent } from '../version-manager/version-list.component';\n\n@Component({\n    selector: 'adf-new-version-uploader-dialog',\n    standalone: true,\n    imports: [\n        CommonModule,\n        MatDialogModule,\n        TranslateModule,\n        MatButtonModule,\n        VersionComparisonComponent,\n        VersionUploadComponent,\n        VersionListComponent\n    ],\n    templateUrl: './new-version-uploader.dialog.html',\n    styleUrls: ['./new-version-uploader.dialog.scss'],\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        class: 'adf-new-version-uploader-dialog'\n    }\n})\nexport class NewVersionUploaderDialogComponent implements OnInit {\n    /**\n     * Dialog title to show into the header.\n     * If data.title is not provided, a default title is set\n     */\n    title: string;\n\n    /** Emitted when an action is done. */\n    @Output()\n    dialogAction = new EventEmitter<NewVersionUploaderData>();\n\n    /** Emitted when an error occurs. */\n    @Output()\n    uploadError = new EventEmitter<any>();\n\n    constructor(\n        @Inject(MAT_DIALOG_DATA) public data: NewVersionUploaderDialogData,\n        private dialogRef: MatDialogRef<NewVersionUploaderDialogComponent>\n    ) {}\n\n    ngOnInit(): void {\n        this.setDialogTitle();\n    }\n\n    private setDialogTitle() {\n        if (!this.data.title) {\n            this.title = this.data.showVersionsOnly ? 'ADF-NEW-VERSION-UPLOADER.DIALOG_LIST.TITLE' : 'ADF-NEW-VERSION-UPLOADER.DIALOG_UPLOAD.TITLE';\n        } else {\n            this.title = this.data.title;\n        }\n    }\n\n    handleUpload(newFileVersion) {\n        this.dialogAction.emit({ action: NewVersionUploaderDataAction.upload, newVersion: newFileVersion, currentVersion: this.data.node });\n        this.dialogRef.close();\n    }\n\n    handleCancel() {\n        this.dialogRef.close();\n    }\n\n    onUploadError(error) {\n        this.uploadError.emit(error);\n    }\n\n    onViewingVersion(versionId: string) {\n        this.dialogAction.emit({ action: NewVersionUploaderDataAction.view, versionId });\n    }\n\n    refresh(node: Node) {\n        this.dialogAction.emit({ action: NewVersionUploaderDataAction.refresh, node });\n    }\n}\n","<h1 class=\"adf-new-version-uploader-dialog-title\" mat-dialog-title data-automation-id=\"new-version-uploader-dialog-title\">{{ title | translate }}</h1>\n<section class=\"adf-new-version-uploader-dialog-content\" mat-dialog-content *ngIf=\"!data.showVersionsOnly\">\n  <adf-version-comparison id=\"adf-version-comparison\" [newFileVersion]=\"data.file\" [node]=\"data.node\" />\n  <adf-version-upload\n    id=\"adf-version-upload-button\"\n    [node]=\"data.node\"\n    [newFileVersion]=\"data.file\"\n    [currentVersion]=\"data.currentVersion\"\n    (success)=\"handleUpload($event)\"\n    (cancel)=\"handleCancel()\"\n    (error)=\"onUploadError($event)\"\n  />\n</section>\n<ng-container *ngIf=\"data.showVersionsOnly\">\n  <section class=\"adf-new-version-uploader-dialog-content\" mat-dialog-content>\n    <div class=\"adf-version-list-container\">\n      <div class=\"adf-version-list-table\">\n        <adf-version-list\n          [node]=\"data.node\"\n          [showComments]=\"data.showComments\"\n          [showActions]=\"data.showActions\"\n          [allowDownload]=\"data.allowDownload\"\n          [allowViewVersions]=\"data.allowViewVersions\"\n          [allowVersionDelete]=\"data.allowVersionDelete\"\n          (deleted)=\"refresh($event)\"\n          (restored)=\"refresh($event)\"\n          (viewVersion)=\"onViewingVersion($event)\"\n        />\n      </div>\n    </div>\n  </section>\n  <div class=\"adf-new-version-uploader-dialog-actions\" mat-dialog-actions>\n    <button mat-button color=\"primary\" [mat-dialog-close]=\"true\">{{ 'ADF-NEW-VERSION-UPLOADER.DIALOG_LIST.CLOSE' | translate }}</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\nimport { NgModule } from '@angular/core';\nimport { NewVersionUploaderDialogComponent } from './new-version-uploader.dialog';\n\n/** @deprecated use `NewVersionUploaderDialogComponent` standalone component instead */\n@NgModule({\n    imports: [NewVersionUploaderDialogComponent],\n    exports: [NewVersionUploaderDialogComponent]\n})\nexport class NewVersionUploaderModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY 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 { MatDialog, MatDialogConfig } from '@angular/material/dialog';\nimport { AlfrescoApiService } from '../services/alfresco-api.service';\n\nimport { NewVersionUploaderDialogComponent } from './new-version-uploader.dialog';\nimport { VersionsApi } from '@alfresco/js-api';\nimport { NewVersionUploaderData, NewVersionUploaderDialogData } from './models';\nimport { Observable } from 'rxjs';\nimport { OverlayContainer } from '@angular/cdk/overlay';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class NewVersionUploaderService {\n    private _versionsApi: VersionsApi;\n    get versionsApi(): VersionsApi {\n        this._versionsApi = this._versionsApi ?? new VersionsApi(this.apiService.getInstance());\n        return this._versionsApi;\n    }\n\n    constructor(private apiService: AlfrescoApiService, private dialog: MatDialog, private overlayContainer: OverlayContainer) {}\n\n    /**\n     * Open a dialog NewVersionUploaderDialogComponent to display:\n     * - a side by side comparison between the current target node (type, name, icon) and the new file that should update it's version\n     * - the new version's minor/major changes and the optional comment of a node and the ability to upload a new file version\n     * - if data.showVersionsOnly is set to true, displays the version history of a node, with the ability to restore, delete and view version of the current node\n     *\n     * @param data data to pass to MatDialog\n     * @param config allow to override default MatDialogConfig\n     * @param selectorAutoFocusedOnClose element's selector which should be autofocused after closing modal\n     * @returns an Observable represents the triggered dialog action or an error in case of an error condition\n     */\n    openUploadNewVersionDialog(\n        data: NewVersionUploaderDialogData,\n        config?: MatDialogConfig,\n        selectorAutoFocusedOnClose?: string\n    ): Observable<NewVersionUploaderData> {\n        const { file, node, showVersionsOnly } = data;\n        const allowDownload = data.allowDownload ?? true;\n        const showComments = data.showComments ?? true;\n\n        return new Observable((observer) => {\n            this.versionsApi.listVersionHistory(node.id).then((versionPaging) => {\n                const dialogRef = this.dialog.open<NewVersionUploaderDialogComponent, NewVersionUploaderDialogData>(\n                    NewVersionUploaderDialogComponent,\n                    {\n                        data: {\n                            file,\n                            node,\n                            currentVersion: versionPaging.list.entries[0].entry,\n                            showComments,\n                            allowDownload,\n                            showVersionsOnly,\n                            allowViewVersions: data.allowViewVersions ?? true,\n                            allowVersionDelete: data.allowVersionDelete ?? true,\n                            showActions: data.showActions ?? true\n                        },\n                        panelClass: this.composePanelClass(showVersionsOnly),\n                        width: '630px',\n                        ...(config && Object.keys(config).length > 0 && config)\n                    }\n                );\n                dialogRef.componentInstance.dialogAction.asObservable().subscribe((newVersionUploaderData) => {\n                    observer.next(newVersionUploaderData);\n                });\n                dialogRef.componentInstance.uploadError.asObservable().subscribe((error) => {\n                    observer.error(error);\n                });\n                dialogRef.afterClosed().subscribe(() => {\n                    this.overlayContainer.getContainerElement().setAttribute('role', 'region');\n                    NewVersionUploaderService.focusOnClose(selectorAutoFocusedOnClose);\n                });\n                this.overlayContainer.getContainerElement().setAttribute('role', 'main');\n            });\n        });\n    }\n\n    private composePanelClass(showVersionsOnly: boolean): string | string[] {\n        const dialogCssClass = 'adf-new-version-uploader-dialog';\n        return [dialogCssClass, `${dialogCssClass}-${showVersionsOnly ? 'list' : 'upload'}`];\n    }\n\n    private static focusOnClose(selectorAutoFocusedOnClose: string): void {\n        if (selectorAutoFocusedOnClose) {\n            document.querySelector<HTMLElement>(selectorAutoFocusedOnClose)?.focus();\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 './new-version-uploader.dialog';\nexport * from './new-version-uploader.module';\nexport * from './new-version-uploader.service';\nexport * from './models';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 interface NodeAllowableOperationSubject {\n    disabled: 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 { Site } from '@alfresco/js-api';\n\nexport interface LibraryEntity {\n    entry: Site;\n    isLibrary: boolean;\n    isFavorite: 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 { PathInfo } from '@alfresco/js-api';\n\nexport class RestoreMessageModel {\n    message: string;\n    path: PathInfo;\n    action: 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 LibraryMembershipErrorEvent {\n    error: any;\n    i18nKey: 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 LibraryMembershipToggleEvent {\n    updatedEntry?: any;\n    shouldReload: boolean;\n    i18nKey: 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 { CardViewBaseItemModel, UpdateNotification } from '@alfresco/adf-core';\nimport { Node } from '@alfresco/js-api';\nimport { Subject } from 'rxjs';\n\nexport interface BaseCardViewContentUpdate {\n    itemUpdated$: Subject<UpdateNotification>;\n    updatedAspect$: Subject<Node>;\n\n    update(property: CardViewBaseItemModel, newValue: any);\n    updateElement(notification: CardViewBaseItemModel);\n    updateNodeAspect(node: Node);\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 './node-allowable-operation-subject.interface';\nexport * from './library-entity.interface';\nexport * from './restore-message-model.interface';\nexport * from './library-membership-error-event.interface';\nexport * from './library-membership-toggle-event.interface';\nexport * from './base-card-view-content-update.interface';\n\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 { NodeNameTooltipPipe } from './node-name-tooltip.pipe';\n\nexport const CONTENT_PIPES = [NodeNameTooltipPipe] as const;\n\n/**\n * @deprecated Use the individual pipe modules instead.\n */\n@NgModule({\n    imports: [...CONTENT_PIPES],\n    providers: [...CONTENT_PIPES],\n    exports: [...CONTENT_PIPES]\n})\nexport class ContentPipeModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 './node-name-tooltip.pipe';\nexport * from './content-pipe.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 {\n    ChangeDetectorRef,\n    Component,\n    ContentChild,\n    DestroyRef,\n    EventEmitter,\n    inject,\n    Input,\n    OnChanges,\n    OnInit,\n    Output,\n    SimpleChanges,\n    TemplateRef,\n    ViewChild,\n    ViewEncapsulation\n} from '@angular/core';\nimport {\n    CloseButtonPosition,\n    Track,\n    VIEWER_DIRECTIVES,\n    ViewerComponent,\n    ViewerMoreActionsComponent,\n    ViewerOpenWithComponent,\n    ViewerSidebarComponent,\n    ViewerToolbarActionsComponent,\n    ViewerToolbarComponent,\n    ViewUtilService\n} from '@alfresco/adf-core';\nimport { AlfrescoApiService } from '../../services/alfresco-api.service';\nimport { ContentApi, Node, NodeEntry, NodesApi, RenditionEntry, SharedlinksApi, Version, VersionEntry, VersionsApi } from '@alfresco/js-api';\nimport { RenditionService } from '../../common/services/rendition.service';\nimport { MatDialog } from '@angular/material/dialog';\nimport { filter } from 'rxjs/operators';\nimport { ContentService } from '../../common/services/content.service';\nimport { NodesApiService } from '../../common/services/nodes-api.service';\nimport { UploadService } from '../../common/services/upload.service';\nimport { FileModel } from '../../common/models/file.model';\nimport { NodeActionsService } from '../../document-list';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { NodeDownloadDirective } from '../../directives';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n    selector: 'adf-alfresco-viewer',\n    standalone: true,\n    imports: [CommonModule, TranslateModule, MatButtonModule, MatIconModule, ...VIEWER_DIRECTIVES, NodeDownloadDirective],\n    templateUrl: './alfresco-viewer.component.html',\n    styleUrls: ['./alfresco-viewer.component.scss'],\n    host: { class: 'adf-alfresco-viewer' },\n    encapsulation: ViewEncapsulation.None,\n    providers: [ViewUtilService]\n})\nexport class AlfrescoViewerComponent implements OnChanges, OnInit {\n    @ViewChild('adfViewer')\n    adfViewer: ViewerComponent<{ node: Node }>;\n\n    @ContentChild(ViewerToolbarComponent)\n    toolbar: ViewerToolbarComponent;\n\n    @ContentChild(ViewerSidebarComponent)\n    sidebar: ViewerSidebarComponent;\n\n    @ContentChild(ViewerToolbarActionsComponent)\n    toolbarActions: ViewerToolbarActionsComponent;\n\n    @ContentChild(ViewerMoreActionsComponent)\n    moreActions: ViewerMoreActionsComponent;\n\n    @ContentChild(ViewerOpenWithComponent)\n    openWith: ViewerOpenWithComponent;\n\n    @ContentChild('viewerExtensions', { static: false })\n    viewerExtensions: TemplateRef<any>;\n\n    /** Node Id of the file to load. */\n    @Input()\n    nodeId: string = null;\n\n    /** Version Id of the file to load. */\n    @Input()\n    versionId: string = null;\n\n    /** Shared link id (to display shared file). */\n    @Input()\n    sharedLinkId: string = null;\n\n    /** Hide or show the viewer */\n    @Input()\n    showViewer = true;\n\n    /**\n     * Number of times the Viewer will retry fetching content Rendition.\n     * There is a delay of at least one second between attempts.\n     */\n    @Input()\n    maxRetries = 30;\n\n    /** Allows `back` navigation */\n    @Input()\n    allowGoBack = 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    /** Toggles downloading. */\n    @Input()\n    allowDownload = true;\n\n    /** Toggles printing. */\n    @Input()\n    allowPrint = false;\n\n    /** Toggles the 'Full Screen' feature. */\n    @Input()\n    allowFullScreen = true;\n\n    /** Toggles the 'Info Button' */\n    @Input()\n    hideInfoButton = false;\n\n    /** Change the close button position Right/Left */\n    @Input()\n    closeButtonPosition = CloseButtonPosition.Left;\n\n    /** The template for the right sidebar. The template context contains the loaded node data. */\n    @Input()\n    sidebarRightTemplate: TemplateRef<any> = null;\n\n    /** The template for the left sidebar. The template context contains the loaded node data. */\n    @Input()\n    sidebarLeftTemplate: TemplateRef<any> = null;\n\n    /** Emitted when the shared link used is not valid. */\n    @Output()\n    invalidSharedLink = 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    private cacheBusterNumber: number;\n\n    versionEntry: VersionEntry;\n    urlFileContent: string;\n    fileName: string;\n    mimeType: string;\n    nodeMimeType: string;\n    nodeEntry: NodeEntry;\n    tracks: Track[] = [];\n    readOnly: boolean = true;\n    allowedEditActions: { [key: string]: boolean } = {\n        rotate: true,\n        crop: true\n    };\n\n    sidebarRightTemplateContext: { node: Node } = { node: null };\n    sidebarLeftTemplateContext: { node: Node } = { node: null };\n\n    private _sharedLinksApi: SharedlinksApi;\n    get sharedLinksApi(): SharedlinksApi {\n        this._sharedLinksApi = this._sharedLinksApi ?? new SharedlinksApi(this.apiService.getInstance());\n        return this._sharedLinksApi;\n    }\n\n    private _versionsApi: VersionsApi;\n    get versionsApi(): VersionsApi {\n        this._versionsApi = this._versionsApi ?? new VersionsApi(this.apiService.getInstance());\n        return this._versionsApi;\n    }\n\n    private _nodesApi: NodesApi;\n    get nodesApi(): NodesApi {\n        this._nodesApi = this._nodesApi ?? new NodesApi(this.apiService.getInstance());\n        return this._nodesApi;\n    }\n\n    private _contentApi: ContentApi;\n    get contentApi(): ContentApi {\n        this._contentApi = this._contentApi ?? new ContentApi(this.apiService.getInstance());\n        return this._contentApi;\n    }\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    constructor(\n        private apiService: AlfrescoApiService,\n        private nodesApiService: NodesApiService,\n        private renditionService: RenditionService,\n        private viewUtilService: ViewUtilService,\n        private contentService: ContentService,\n        private uploadService: UploadService,\n        public dialog: MatDialog,\n        private cdr: ChangeDetectorRef,\n        private nodeActionsService: NodeActionsService\n    ) {\n        renditionService.maxRetries = this.maxRetries;\n    }\n\n    ngOnInit() {\n        this.nodesApiService.nodeUpdated\n            .pipe(\n                filter(\n                    (node) =>\n                        node && node.id === this.nodeId && this.getNodeVersionProperty(this.nodeEntry.entry) !== this.getNodeVersionProperty(node)\n                ),\n                takeUntilDestroyed(this.destroyRef)\n            )\n            .subscribe((node) => this.onNodeUpdated(node));\n    }\n\n    private async onNodeUpdated(node: Node) {\n        if (node && node.id === this.nodeId) {\n            this.generateCacheBusterNumber();\n\n            await this.setUpNodeFile(node);\n        }\n    }\n\n    private getNodeVersionProperty(node: Node): string {\n        return node?.properties['cm:versionLabel'] ?? '';\n    }\n\n    private async setupSharedLink() {\n        this.allowGoBack = false;\n\n        try {\n            const sharedLinkEntry = await this.sharedLinksApi.getSharedLink(this.sharedLinkId);\n            await this.setUpSharedLinkFile(sharedLinkEntry);\n        } catch (error) {\n            this.invalidSharedLink.next(undefined);\n            this.mimeType = 'invalid-link';\n            this.urlFileContent = 'invalid-file';\n        }\n    }\n\n    private async setupNode() {\n        try {\n            this.nodeEntry = await this.nodesApi.getNode(this.nodeId, { include: ['allowableOperations'] });\n            if (this.versionId) {\n                this.versionEntry = await this.versionsApi.getVersion(this.nodeId, this.versionId);\n                await this.setUpNodeFile(this.nodeEntry.entry, this.versionEntry.entry);\n            } else {\n                await this.setUpNodeFile(this.nodeEntry.entry);\n                this.cdr.detectChanges();\n            }\n        } catch (error) {\n            this.urlFileContent = 'invalid-node';\n        }\n    }\n\n    private async setUpNodeFile(nodeData: Node, versionData?: Version): Promise<void> {\n        this.readOnly = !this.contentService.hasAllowableOperations(nodeData, 'update');\n        let mimeType: string;\n        let nodeMimeType: string;\n        let urlFileContent: string;\n\n        if (versionData?.content) {\n            mimeType = versionData.content.mimeType;\n        } else if (nodeData.content) {\n            mimeType = nodeData.content.mimeType;\n        }\n        nodeMimeType = mimeType;\n\n        const currentFileVersion = this.nodeEntry?.entry?.properties?.['cm:versionLabel']\n            ? encodeURI(this.nodeEntry?.entry?.properties['cm:versionLabel'])\n            : encodeURI('1.0');\n\n        urlFileContent = versionData ? this.contentApi.getVersionContentUrl(this.nodeId, versionData.id) : this.contentApi.getContentUrl(this.nodeId);\n        urlFileContent = urlFileContent + '&' + currentFileVersion;\n\n        const fileExtension = this.viewUtilService.getFileExtension(versionData ? versionData.name : nodeData.name);\n        const viewerType = this.viewUtilService.getViewerType(fileExtension, mimeType);\n\n        if (viewerType === 'unknown') {\n            let nodeRendition;\n            if (versionData) {\n                nodeRendition = await this.renditionService.getNodeRendition(nodeData.id, versionData.id);\n            } else {\n                nodeRendition = await this.renditionService.getNodeRendition(nodeData.id);\n            }\n            if (nodeRendition) {\n                urlFileContent = nodeRendition.url;\n\n                nodeMimeType = nodeData?.content?.mimeType;\n                const renditionMimeType = nodeRendition.mimeType;\n                mimeType = renditionMimeType || nodeMimeType;\n            }\n        } else if (viewerType === 'media') {\n            this.tracks = await this.renditionService.generateMediaTracksRendition(this.nodeId);\n        }\n\n        this.mimeType = mimeType;\n        this.nodeMimeType = nodeMimeType;\n        this.fileName = versionData ? versionData.name : nodeData.name;\n        this.urlFileContent = urlFileContent + (this.cacheBusterNumber ? '&' + this.cacheBusterNumber : '');\n        this.sidebarRightTemplateContext.node = nodeData;\n        this.sidebarLeftTemplateContext.node = nodeData;\n    }\n\n    private async setUpSharedLinkFile(details: any) {\n        let mimeType = details.entry.content.mimeType;\n        const fileExtension = this.viewUtilService.getFileExtension(details.entry.name);\n        this.fileName = details.entry.name;\n        let urlFileContent = this.contentApi.getSharedLinkContentUrl(this.sharedLinkId, false);\n        const viewerType = this.viewUtilService.getViewerType(fileExtension, mimeType);\n\n        if (viewerType === 'unknown') {\n            ({ url: urlFileContent, mimeType } = await this.getSharedLinkRendition(this.sharedLinkId));\n        }\n        this.mimeType = mimeType;\n        this.urlFileContent = urlFileContent;\n    }\n\n    private async getSharedLinkRendition(sharedId: string): Promise<{ url: string; mimeType: string }> {\n        try {\n            const rendition: RenditionEntry = await this.sharedLinksApi.getSharedLinkRendition(sharedId, 'pdf');\n            if (rendition.entry.status.toString() === 'CREATED') {\n                const urlFileContent = this.contentApi.getSharedLinkRenditionUrl(sharedId, 'pdf');\n                return { url: urlFileContent, mimeType: 'application/pdf' };\n            }\n        } catch (error) {\n            try {\n                const rendition: RenditionEntry = await this.sharedLinksApi.getSharedLinkRendition(sharedId, 'imgpreview');\n                if (rendition.entry.status.toString() === 'CREATED') {\n                    const urlFileContent = this.contentApi.getSharedLinkRenditionUrl(sharedId, 'imgpreview');\n                    return { url: urlFileContent, mimeType: 'image/png' };\n                }\n            } catch (renditionError) {\n                return null;\n            }\n        }\n\n        return null;\n    }\n\n    private generateCacheBusterNumber() {\n        this.cacheBusterNumber = Date.now();\n    }\n\n    /**\n     * close the viewer\n     */\n    onClose() {\n        this.showViewerChange.emit(this.showViewer);\n    }\n\n    onPrintContent(event: MouseEvent) {\n        if (this.allowPrint) {\n            if (!event.defaultPrevented) {\n                this.renditionService.printFileGeneric(this.nodeId, this.mimeType);\n            }\n        }\n    }\n\n    onSubmitFile(newImageBlob: Blob) {\n        if (this?.nodeEntry?.entry?.id && !this.readOnly) {\n            const newImageFile: File = new File([newImageBlob], this?.nodeEntry?.entry?.name, { type: this?.nodeEntry?.entry?.content?.mimeType });\n            const newFile = new FileModel(\n                newImageFile,\n                {\n                    majorVersion: false,\n                    newVersion: true,\n                    parentId: this?.nodeEntry?.entry?.parentId,\n                    nodeType: this?.nodeEntry?.entry?.content?.mimeType\n                },\n                this?.nodeEntry?.entry?.id\n            );\n            this.uploadService.addToQueue(...[newFile]);\n            this.uploadService.uploadFilesInTheQueue();\n        }\n    }\n\n    onNavigateBeforeClick(event: MouseEvent | KeyboardEvent) {\n        this.navigateBefore.next(event);\n    }\n\n    onNavigateNextClick(event: MouseEvent | KeyboardEvent) {\n        this.navigateNext.next(event);\n    }\n\n    isSourceDefined(): boolean {\n        return !!(this.nodeId || this.sharedLinkId);\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        if (this.showViewer) {\n            if (!this.isSourceDefined()) {\n                throw new Error('A content source attribute value is missing.');\n            }\n\n            if (changes.nodeId?.currentValue !== changes.nodeId?.previousValue) {\n                this.setupNode();\n            } else if (this.sharedLinkId) {\n                this.setupSharedLink();\n            }\n        }\n    }\n\n    onDownloadFile() {\n        this.nodeActionsService.downloadNode(this.nodeEntry);\n    }\n}\n","<adf-viewer\n    #adfViewer\n    [(showViewer)]=\"showViewer\"\n    [allowGoBack]=\"allowGoBack\"\n    [showToolbar]=\"showToolbar\"\n    [overlayMode]=\"overlayMode\"\n    [allowNavigate]=\"allowNavigate\"\n    [canNavigateBefore]=\"canNavigateBefore\"\n    [canNavigateNext]=\"canNavigateNext\"\n    [allowLeftSidebar]=\"allowLeftSidebar\"\n    [allowRightSidebar]=\"allowRightSidebar\"\n    [showRightSidebar]=\"showRightSidebar\"\n    [showLeftSidebar]=\"showLeftSidebar\"\n    [allowFullScreen]=\"allowFullScreen\"\n    [sidebarRightTemplate]=\"sidebarRightTemplate\"\n    [sidebarLeftTemplate]=\"sidebarLeftTemplate\"\n    [sidebarRightTemplateContext]=\"sidebarRightTemplateContext\"\n    [sidebarLeftTemplateContext]=\"sidebarLeftTemplateContext\"\n    [closeButtonPosition]=\"closeButtonPosition\"\n    [hideInfoButton]=\"hideInfoButton\"\n    [fileName]=\"fileName\"\n    [mimeType]=\"mimeType\"\n    [nodeMimeType]=\"nodeMimeType\"\n    [urlFile]=\"urlFileContent\"\n    [tracks]=\"tracks\"\n    [readOnly]=\"readOnly\"\n    [allowedEditActions]=\"allowedEditActions\"\n    [viewerExtensions]=\"viewerExtensions\"\n    [nodeId]=\"nodeId\"\n    (downloadFile)=\"onDownloadFile()\"\n    (navigateBefore)=\"onNavigateBeforeClick($event)\"\n    (navigateNext)=\"onNavigateNextClick($event)\"\n    (showViewerChange)=\"onClose()\"\n    (submitFile)=\"onSubmitFile($event)\">\n\n    <adf-viewer-toolbar *ngIf=\"toolbar\">\n        <ng-content select=\"adf-viewer-toolbar\" />\n    </adf-viewer-toolbar>\n\n    <adf-viewer-toolbar-actions *ngIf=\"toolbarActions\">\n        <ng-content select=\"adf-viewer-toolbar-actions\" />\n    </adf-viewer-toolbar-actions>\n\n    <adf-viewer-more-actions *ngIf=\"moreActions\">\n        <ng-content select=\"adf-viewer-more-actions\" />\n    </adf-viewer-more-actions>\n\n    <adf-viewer-open-with *ngIf=\"openWith\">\n        <ng-content select=\"adf-viewer-open-with\" />\n    </adf-viewer-open-with>\n\n    <adf-viewer-sidebar *ngIf=\"sidebar\">\n        <ng-content select=\"adf-viewer-sidebar\" />\n    </adf-viewer-sidebar>\n\n    <adf-viewer-toolbar-custom-actions>\n        <button id=\"adf-alfresco-viewer-download\"\n                *ngIf=\"allowDownload\"\n                mat-icon-button\n                [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.DOWNLOAD' | translate\"\n                title=\"{{ 'ADF_VIEWER.ACTIONS.DOWNLOAD' | translate }}\"\n                data-automation-id=\"adf-toolbar-download\"\n                [adfNodeDownload]=\"nodeEntry\"\n                [version]=\"versionEntry\">\n            <mat-icon>file_download</mat-icon>\n        </button>\n\n        <button id=\"adf-alfresco-viewer-print\"\n                *ngIf=\"allowPrint\"\n                mat-icon-button\n                [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.PRINT' | translate\"\n                title=\"{{ 'ADF_VIEWER.ACTIONS.PRINT' | translate }}\"\n                data-automation-id=\"adf-toolbar-print\"\n                (click)=\"onPrintContent($event)\">\n            <mat-icon>print</mat-icon>\n        </button>\n    </adf-viewer-toolbar-custom-actions>\n</adf-viewer>\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY 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 { AlfrescoViewerComponent } from './components/alfresco-viewer.component';\n\n/** @deprecated import AlfrescoViewerComponent instead */\n@NgModule({\n    imports: [AlfrescoViewerComponent],\n    exports: [AlfrescoViewerComponent]\n})\nexport class AlfrescoViewerModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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/alfresco-viewer.component';\n\nexport * from './alfresco-viewer.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 { BehaviorSubject, from, Observable, Subject } from 'rxjs';\nimport { SecurityControlsGroupResponse } from './models/security-controls-group-response.interface';\nimport { SecurityControlsMarkResponse } from './models/security-controls-mark-response.interface';\nimport {\n    SecurityGroupsApi,\n    SecurityMarksApi,\n    SecurityGroupEntry,\n    SecurityMarkEntry,\n    SecurityGroupBody,\n    SecurityMarkPaging,\n    SecurityMarkBody,\n    AuthorityClearanceApi,\n    AuthorityClearanceGroupPaging,\n    NodeSecurityMarkBody,\n    GsGroupInclude\n} from '@alfresco/js-api';\nimport { UserPreferencesService } from '@alfresco/adf-core';\nimport { finalize } from 'rxjs/operators';\nimport { AlfrescoApiService } from '../../services/alfresco-api.service';\n\nconst DEFAULT_SKIP_COUNT = 0;\nconst DEFAULT_INCLUDE = 'inUse';\n\n@Injectable({ providedIn: 'root' })\nexport class SecurityControlsService {\n    private groupsPaginatedSource = new Subject<SecurityControlsGroupResponse>();\n    groupsPaginated$ = this.groupsPaginatedSource.asObservable();\n\n    private reloadSecurityControls: Subject<void> = new Subject<void>();\n    reloadSecurityControls$ = this.reloadSecurityControls.asObservable();\n\n    private _reloadAuthorityClearance: Subject<void> = new Subject<void>();\n    reloadAuthorityClearance$ = this._reloadAuthorityClearance.asObservable();\n\n    private marksPaginatedSource = new Subject<SecurityControlsMarkResponse>();\n    marksPaginated$ = this.marksPaginatedSource.asObservable();\n\n    private loadingSource = new BehaviorSubject<boolean>(true);\n    loading$ = this.loadingSource.asObservable();\n\n    private securityGroup: SecurityGroupsApi;\n    private securityMark: SecurityMarksApi;\n    private authorityClearance: AuthorityClearanceApi;\n    constructor(private apiService: AlfrescoApiService, private userPreferencesService: UserPreferencesService) {}\n\n    get groupsApi(): SecurityGroupsApi {\n        return this.securityGroup || (this.securityGroup = new SecurityGroupsApi(this.apiService.getInstance()));\n    }\n\n    get marksApi(): SecurityMarksApi {\n        return this.securityMark || (this.securityMark = new SecurityMarksApi(this.apiService.getInstance()));\n    }\n\n    get authorityClearanceApi(): AuthorityClearanceApi {\n        return this.authorityClearance || (this.authorityClearance = new AuthorityClearanceApi(this.apiService.getInstance()));\n    }\n\n    get reloadAuthorityClearance(): Subject<void> {\n        return this._reloadAuthorityClearance;\n    }\n\n    /**\n     * Get All security groups\n     *\n     * @param skipCount The number of entities that exist in the collection before those included in this list.\n     * @param maxItems The maximum number of items to return in the list. Default is specified by UserPreferencesService.\n     * @param include Additional information about the security group\n     * @returns Promise<SecurityControlsGroupResponse>\n     */\n    getSecurityGroup(\n        skipCount = DEFAULT_SKIP_COUNT,\n        maxItems = this.userPreferencesService.paginationSize,\n        include = DEFAULT_INCLUDE\n    ): Promise<SecurityControlsGroupResponse> {\n        let securityControlsGroupResponse: SecurityControlsGroupResponse;\n        return new Promise((resolve, reject) => {\n            this.groupsApi\n                .getSecurityGroups({\n                    include,\n                    skipCount,\n                    maxItems\n                })\n                .then((response) => {\n                    this.groupsPaginatedSource.next(\n                        (securityControlsGroupResponse = {\n                            pagination: response.list.pagination,\n                            entries: response.list.entries.map((group) => group.entry)\n                        })\n                    );\n                    resolve(securityControlsGroupResponse);\n                })\n                .catch((error) => reject(error));\n        });\n    }\n\n    /**\n     * Create security group\n     *\n     * @param input securityGroupBody.\n     * @returns Observable<SecurityGroupEntry>\n     */\n    createSecurityGroup(input: SecurityGroupBody): Observable<SecurityGroupEntry> {\n        this.loadingSource.next(true);\n        const payload: SecurityGroupBody = {\n            ...input\n        };\n        const opts: GsGroupInclude = {\n            include: DEFAULT_INCLUDE\n        };\n        const promise = this.groupsApi.createSecurityGroup(payload, opts);\n\n        return from(promise).pipe(finalize(() => this.loadingSource.next(false)));\n    }\n\n    /**\n     * Create security marks\n     *\n     * @param securityGroupId The key for the security group id.\n     * @param input securityMarkBody[].\n     * @returns Promise<SecurityMarkPaging | SecurityMarkEntry>\n     */\n    createSecurityMarks(securityGroupId: string, input: SecurityMarkBody[]): Promise<SecurityMarkPaging | SecurityMarkEntry> {\n        this.loadingSource.next(true);\n        const promise = this.marksApi\n            .createSecurityMarks(securityGroupId, input)\n            .then((result) => {\n                this.loadingSource.next(false);\n                return result;\n            })\n            .catch((error) => {\n                this.loadingSource.next(false);\n                return error;\n            });\n\n        return promise;\n    }\n\n    /**\n     * Get security mark value\n     * Gets the value for a selected **securityGroupId**.\n     *\n     * @param securityGroupId The key for the security group id.\n     * @param skipCount The number of entities that exist in the collection before those included in this list.\n     * @returns Promise<SecurityControlsMarkResponse>\n     */\n    getSecurityMark(securityGroupId: string, skipCount = DEFAULT_SKIP_COUNT): Promise<SecurityControlsMarkResponse> {\n        let securityControlsMarkResponse: SecurityControlsMarkResponse;\n        return new Promise((resolve, reject) => {\n            this.marksApi\n                .getSecurityMarks(securityGroupId, {\n                    skipCount\n                })\n                .then((response) => {\n                    this.marksPaginatedSource.next(\n                        (securityControlsMarkResponse = {\n                            pagination: response.list.pagination,\n                            entries: response.list.entries.map((mark) => mark.entry)\n                        })\n                    );\n                    resolve(securityControlsMarkResponse);\n                })\n                .catch((error) => reject(error));\n        });\n    }\n\n    /**\n     * Update a security groups information\n     *\n     * @param securityGroupId The Key of Security Group id for which info is required\n     * @param input SecurityGroupBody\n     * @param opts additional information about the security group\n     * @returns Promise<SecurityGroupEntry>\n     */\n    updateSecurityGroup(securityGroupId: string, input: SecurityGroupBody, opts?: any): Promise<SecurityGroupEntry> {\n        this.loadingSource.next(true);\n        const payload: SecurityGroupBody = {\n            ...input\n        };\n        if (!opts) {\n            opts = {\n                DEFAULT_INCLUDE\n            };\n        }\n        const promise = this.groupsApi\n            .updateSecurityGroup(securityGroupId, payload, opts)\n            .then((result) => {\n                this.loadingSource.next(false);\n                return result;\n            })\n            .catch((error) => {\n                this.loadingSource.next(false);\n                return error;\n            });\n\n        return promise;\n    }\n\n    /**\n     * Updates Security Mark value\n     *\n     * @param securityGroupId The key for the security group id.\n     * @param securityMarkId The key for the security mark is in use or not.\n     * @param input securityMarkBody.\n     * @returns Promise<SecurityMarkEntry>\n     */\n    updateSecurityMark(securityGroupId: string, securityMarkId: string, input: SecurityMarkBody): Promise<SecurityMarkEntry> {\n        this.loadingSource.next(true);\n        const payload: SecurityMarkBody = {\n            ...input\n        };\n        const promise = this.marksApi\n            .updateSecurityMark(securityGroupId, securityMarkId, payload)\n            .then((result) => {\n                this.loadingSource.next(false);\n                return result;\n            })\n            .catch((error) => {\n                this.loadingSource.next(false);\n                return error;\n            });\n\n        return promise;\n    }\n\n    /**\n     * Delete security group\n     *\n     * @param securityGroupId The key for the security group id.\n     * @returns Observable<void>\n     */\n    deleteSecurityGroup(securityGroupId: string): Observable<void> {\n        this.loadingSource.next(true);\n        const promise = this.groupsApi.deleteSecurityGroup(securityGroupId);\n\n        return from(promise).pipe(finalize(() => this.loadingSource.next(false)));\n    }\n\n    /**\n     * Delete security mark\n     *\n     * @param securityGroupId The key for the security group id.\n     * @param securityMarkId The key for the security mark id.\n     * @returns Promise<SecurityMarkEntry>\n     */\n    deleteSecurityMark(securityGroupId: string, securityMarkId: string): Promise<SecurityMarkEntry> {\n        this.loadingSource.next(true);\n        const promise = this.marksApi\n            .deleteSecurityMark(securityGroupId, securityMarkId)\n            .then((result) => {\n                this.loadingSource.next(false);\n                return result;\n            })\n            .catch((error) => {\n                this.loadingSource.next(false);\n                return error;\n            });\n\n        return promise;\n    }\n\n    /**\n     * Get the authority clearances for a single user/group\n     *\n     * @param authorityName The name for the authority for which the clearance is to be fetched. Can be left blank in which case it will fetch it for all users with pagination\n     * @param skipCount The number of entities that exist in the collection before those included in this list.\n     * @param maxItems The maximum number of items to return in the list. Default is specified by UserPreferencesService.\n     * @returns Observable<AuthorityClearanceGroupPaging>\n     */\n    getClearancesForAuthority(\n        authorityName: string,\n        skipCount = DEFAULT_SKIP_COUNT,\n        maxItems = this.userPreferencesService.paginationSize\n    ): Observable<AuthorityClearanceGroupPaging> {\n        this.loadingSource.next(true);\n        const opts = {\n            skipCount,\n            maxItems\n        };\n        const promise = this.authorityClearanceApi.getAuthorityClearanceForAuthority(authorityName, opts);\n\n        return from(promise).pipe(finalize(() => this.loadingSource.next(false)));\n    }\n\n    /**\n     * Updates the authority clearance.\n     *\n     * @param authorityName The name for the authority for which the clearance is to be updated\n     * @param securityMarksList NodeSecurityMarkBody[]\n     * @returns Observable<SecurityMarkEntry | SecurityMarkPaging>\n     */\n    updateClearancesForAuthority(\n        authorityName: string,\n        securityMarksList: NodeSecurityMarkBody[]\n    ): Observable<SecurityMarkEntry | SecurityMarkPaging> {\n        this.loadingSource.next(true);\n        const promise = this.authorityClearanceApi.updateAuthorityClearance(authorityName, securityMarksList);\n\n        return from(promise).pipe(\n            finalize(() => {\n                this.loadingSource.next(false);\n                this._reloadAuthorityClearance.next();\n            })\n        );\n    }\n\n    reloadSecurityGroups() {\n        this.reloadSecurityControls.next();\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/security-controls-groups-marks-security.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 './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 { AdfHttpClient } from '@alfresco/adf-core/api';\nimport { StorageService, AppConfigService } from '@alfresco/adf-core';\nimport { AlfrescoApi, AlfrescoApiConfig } from '@alfresco/js-api';\nimport { Injectable } from '@angular/core';\nimport { AlfrescoApiService } from '../services/alfresco-api.service';\n\n@Injectable()\nexport class AlfrescoApiNoAuthService extends AlfrescoApiService {\n    constructor(storage: StorageService, appConfig: AppConfigService, private readonly adfHttpClient: AdfHttpClient) {\n        super(appConfig, storage);\n    }\n\n    override createInstance(config: AlfrescoApiConfig) {\n        return new AlfrescoApi(\n            {\n                ...config,\n                oauthInit: false\n            },\n            this.adfHttpClient\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 '@alfresco/adf-core';\nimport { AdfHttpClient } from '@alfresco/adf-core/api';\nimport { Injectable } from '@angular/core';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class SecurityOptionsLoaderService {\n    constructor(private appConfigService: AppConfigService, private adfHttpClient: AdfHttpClient) {}\n\n    load = () => {\n        const withCredentials = this.appConfigService.get<boolean>(AppConfigValues.AUTH_WITH_CREDENTIALS);\n        if (withCredentials !== undefined && withCredentials !== null) {\n            this.adfHttpClient.setDefaultSecurityOption({ withCredentials });\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 { AlfrescoApiConfig } from '@alfresco/js-api';\nimport { Injectable } from '@angular/core';\nimport { AppConfigService, AppConfigValues, StorageService } from '@alfresco/adf-core';\nimport { AlfrescoApiService } from '../services/alfresco-api.service';\nimport { SecurityOptionsLoaderService } from '../security-options-loader/security-options-loader.service';\n\n/**\n * Create a factory to resolve an api service instance\n *\n * @param angularAlfrescoApiService loader service\n * @returns factory function\n */\nexport function createAlfrescoApiInstance(angularAlfrescoApiService: AlfrescoApiLoaderService) {\n    return () => angularAlfrescoApiService.init();\n}\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class AlfrescoApiLoaderService {\n    constructor(\n        private readonly appConfig: AppConfigService,\n        private readonly apiService: AlfrescoApiService,\n        private readonly securityOptionsLoaderService: SecurityOptionsLoaderService,\n        private storageService: StorageService\n    ) {}\n\n    async init(): Promise<any> {\n        await this.appConfig.load(this.securityOptionsLoaderService.load);\n        return this.initAngularAlfrescoApi();\n    }\n\n    private async initAngularAlfrescoApi() {\n        const oauth = this.appConfig.oauth2;\n\n        if (oauth) {\n            oauth.redirectUri = window.location.origin + window.location.pathname;\n            oauth.redirectUriLogout = window.location.origin + window.location.pathname;\n        }\n\n        const config = new AlfrescoApiConfig({\n            provider: this.appConfig.get<string>(AppConfigValues.PROVIDERS),\n            hostEcm: this.appConfig.get<string>(AppConfigValues.ECMHOST),\n            hostBpm: this.appConfig.get<string>(AppConfigValues.BPMHOST),\n            authType: this.appConfig.get<string>(AppConfigValues.AUTHTYPE, 'BASIC'),\n            contextRootBpm: this.appConfig.get<string>(AppConfigValues.CONTEXTROOTBPM),\n            contextRoot: this.appConfig.get<string>(AppConfigValues.CONTEXTROOTECM),\n            disableCsrf: this.appConfig.get<boolean>(AppConfigValues.DISABLECSRF),\n            withCredentials: this.appConfig.get<boolean>(AppConfigValues.AUTH_WITH_CREDENTIALS, false),\n            domainPrefix: this.appConfig.get<string>(AppConfigValues.STORAGE_PREFIX),\n            ticketEcm: this.storageService.getItem(AppConfigValues.CONTENT_TICKET_STORAGE_LABEL),\n            ticketBpm: this.storageService.getItem(AppConfigValues.PROCESS_TICKET_STORAGE_LABEL),\n            oauth2: oauth\n        });\n\n        await this.apiService.load(config);\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 './alfresco-api-no-auth.service';\nexport * from './alfresco-api-v2-loader.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 './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 { PredictionsApi, PredictionPaging, ReviewStatus } from '@alfresco/js-api';\nimport { from, Observable } from 'rxjs';\nimport { AlfrescoApiService } from '../../services/alfresco-api.service';\n\n@Injectable({ providedIn: 'root' })\nexport class PredictionService {\n    private _predictionsApi: PredictionsApi;\n\n    get predictionsApi(): PredictionsApi {\n        this._predictionsApi = this._predictionsApi ?? new PredictionsApi(this.apiService.getInstance());\n        return this._predictionsApi;\n    }\n\n    constructor(private apiService: AlfrescoApiService) {}\n\n    /**\n     * Get predictions for a given node\n     *\n     * @param nodeId The identifier of node.\n     * @returns Observable<PredictionPaging>\n     */\n    getPredictions(nodeId: string): Observable<PredictionPaging> {\n        return from(this.predictionsApi.getPredictions(nodeId));\n    }\n\n    /**\n     * Review a prediction\n     *\n     * @param predictionId The identifier of prediction.\n     * @param reviewStatus Review status to apply.\n     * @returns Observable<void>\n     */\n    reviewPrediction(predictionId: string, reviewStatus: ReviewStatus): Observable<void> {\n        return from(this.predictionsApi.reviewPrediction(predictionId, reviewStatus));\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 './prediction.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 './services';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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    BulkAssignHoldResponseEntry,\n    ContentPagingQuery,\n    Hold,\n    HoldBody,\n    HoldBulkStatusEntry,\n    HoldEntry,\n    HoldPaging,\n    LegalHoldApi,\n    RequestQuery\n} from '@alfresco/js-api';\nimport { Injectable } from '@angular/core';\nimport { Observable, from } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { AlfrescoApiService } from '../../services/alfresco-api.service';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class LegalHoldService {\n    private _legalHoldApi: LegalHoldApi;\n    get legalHoldApi(): LegalHoldApi {\n        this._legalHoldApi = this._legalHoldApi ?? new LegalHoldApi(this.apiService.getInstance());\n        return this._legalHoldApi;\n    }\n\n    constructor(private readonly apiService: AlfrescoApiService) {}\n\n    /**\n     * Gets the list of holds available in the file plan.\n     *\n     * @param filePlanId The identifier of a file plan. You can also use the -filePlan- alias.\n     * @param options Optional parameters supported by JS-API\n     * @returns List of holds Observable<Hold[]>\n     */\n    getHolds(filePlanId: string, options?: ContentPagingQuery): Observable<Hold[]> {\n        return from(this.legalHoldApi.getHolds(filePlanId, options)).pipe(map(({ list }) => list.entries?.map(({ entry }) => entry)));\n    }\n\n    /**\n     * Assign a node to a hold.\n     *\n     * @param nodeId The Id of the node which will be assigned to a hold\n     * @param holdId The Id of the hold to which nodes will be assigned\n     * @returns Observable<HoldEntry>\n     */\n    assignHold(nodeId: string, holdId: string): Observable<HoldEntry> {\n        return from(this.legalHoldApi.assignHold(nodeId, holdId));\n    }\n\n    /**\n     * Assign multiple nodes to a hold.\n     *\n     * @param nodeIds The list of managed node Ids\n     * @param holdId The Id of the hold to which nodes will be assigned\n     * @returns Observable<HoldPaging>\n     */\n    assignHolds(nodeIds: { id: string }[], holdId: string): Observable<HoldPaging> {\n        return from(this.legalHoldApi.assignHolds(nodeIds, holdId));\n    }\n\n    /**\n     * Unassign the relationship between a child with id nodeId and a parent hold with id holdId.\n     *\n     * @param holdId The hold Id\n     * @param nodeId The Id of the node which is unassigned\n     * @returns Empty response\n     */\n    unassignHold(holdId: string, nodeId: string): Observable<void> {\n        return from(this.legalHoldApi.unassignHold(holdId, nodeId));\n    }\n\n    /**\n     * Create hold.\n     *\n     * @param filePlanId The identifier of a file plan. You can also use the -filePlan- alias.\n     * @param hold Hold to create\n     * @returns List of created holds Observable<HoldEntry>\n     */\n    createHold(filePlanId: string, hold: HoldBody): Observable<HoldEntry> {\n        return from(this.legalHoldApi.createHold(filePlanId, hold));\n    }\n\n    /**\n     * Create list of holds.\n     *\n     * @param filePlanId The identifier of a file plan. You can also use the -filePlan- alias.\n     * @param holds Array of holds to create\n     * @returns List of created holds Observable<HoldPaging>\n     */\n    createHolds(filePlanId: string, holds: HoldBody[]): Observable<HoldPaging> {\n        return from(this.legalHoldApi.createHolds(filePlanId, holds));\n    }\n\n    /**\n     * Start the asynchronous bulk process for a hold with id holdId based on search query results.\n     *\n     * @param holdId The identifier of a hold\n     * @param query Search query\n     * @returns Observable<BulkAssignHoldResponseEntry>\n     */\n    bulkAssignHold(holdId: string, query: RequestQuery): Observable<BulkAssignHoldResponseEntry> {\n        return from(this.legalHoldApi.bulkAssignHold(holdId, query));\n    }\n\n    /**\n     * Assign a folder to a hold.\n     *\n     * @param holdId The identifier of a hold\n     * @param folderId The identifier of a folder\n     * @param language Language code\n     * @returns Observable<BulkAssignHoldResponseEntry>\n     */\n    bulkAssignHoldToFolder(holdId: string, folderId: string, language: string): Observable<BulkAssignHoldResponseEntry> {\n        const query: RequestQuery = {\n            query: `ANCESTOR:'workspace://SpacesStore/${folderId}' and TYPE:content`,\n            language\n        };\n\n        return from(this.legalHoldApi.bulkAssignHold(holdId, query));\n    }\n\n    /**\n     * Get status of bulk operation with **bulkStatusId** for **holdId**.\n     *\n     * @param bulkStatusId The identifier of a bulk status\n     * @param holdId The identifier of a hold\n     * @returns Promise<HoldsBulkStatusEntry>\n     */\n    getBulkOperationStatus(bulkStatusId: string, holdId: string): Observable<HoldBulkStatusEntry> {\n        return from(this.legalHoldApi.getBulkStatus(bulkStatusId, holdId));\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/legal-hold.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 './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 { AlfrescoApiService } from '../services/alfresco-api.service';\nimport { AppConfigService, StorageService } from '@alfresco/adf-core';\n\n@Injectable()\nexport class AlfrescoApiServiceMock extends AlfrescoApiService {\n    constructor(protected appConfig: AppConfigService, protected storageService: StorageService) {\n        super(appConfig, storageService);\n        if (!this.alfrescoApi) {\n            this.initAlfrescoApi();\n        }\n    }\n\n    initialize(): Promise<any> {\n        return new Promise((resolve) => {\n            this.alfrescoApiInitialized.next(true);\n            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\nimport { Injectable } from '@angular/core';\nimport { Agent, AgentsApi } from '@alfresco/js-api';\nimport { BehaviorSubject, from, Observable, of } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\nimport { AlfrescoApiService } from '../../services';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class AgentService {\n    private _agentsApi: AgentsApi;\n    private agents = new BehaviorSubject<Agent[]>([]);\n\n    get agentsApi(): AgentsApi {\n        this._agentsApi = this._agentsApi ?? new AgentsApi(this.apiService.getInstance());\n        return this._agentsApi;\n    }\n\n    agents$ = this.agents.asObservable();\n\n    constructor(private apiService: AlfrescoApiService) {}\n\n    /**\n     * Gets all agents from cache. If cache is empty, fetches agents from backend.\n     *\n     * @returns Agent[] list containing agents.\n     */\n    getAgents(): Observable<Agent[]> {\n        return this.agents$.pipe(\n            switchMap((agentsList) => {\n                if (agentsList.length) {\n                    return of(agentsList);\n                }\n                return from(this.agentsApi.getAgents()).pipe(\n                    map((paging) => {\n                        const agentEntries = paging.list.entries.map((agentEntry) => agentEntry.entry);\n                        this.agents.next(agentEntries);\n                        return agentEntries;\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\nexport * from './services/agent.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 './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 { AiAnswerEntry, KnowledgeRetrievalConfigEntry, QuestionModel, QuestionRequest, SearchAiApi } from '@alfresco/js-api';\nimport { BehaviorSubject, from, Observable } from 'rxjs';\nimport { SelectionState } from '@alfresco/adf-extensions';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SearchAiInputState } from '../models/search-ai-input-state';\nimport { AlfrescoApiService } from '../../services';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class SearchAiService {\n    private toggleSearchAiInput = new BehaviorSubject<SearchAiInputState>({\n        active: false\n    });\n    private _searchAiApi: SearchAiApi;\n\n    get searchAiApi(): SearchAiApi {\n        this._searchAiApi = this._searchAiApi ?? new SearchAiApi(this.apiService.getInstance());\n        return this._searchAiApi;\n    }\n\n    toggleSearchAiInput$ = this.toggleSearchAiInput.asObservable();\n\n    constructor(private apiService: AlfrescoApiService, private translateService: TranslateService) {}\n\n    /**\n     * Update the state of the search AI input.\n     *\n     * @param state The new state of the search AI input.\n     */\n    updateSearchAiInputState(state: SearchAiInputState): void {\n        this.toggleSearchAiInput.next(state);\n    }\n\n    /**\n     * Ask a question to the AI.\n     *\n     * @param question The question to ask.\n     * @returns QuestionModel object containing information about questions.\n     */\n    ask(question: QuestionRequest): Observable<QuestionModel> {\n        return from(this.searchAiApi.ask([question]));\n    }\n\n    /**\n     * Get an answer to specific question.\n     *\n     * @param questionId The ID of the question to get an answer for.\n     * @returns AiAnswerEntry object containing the answer.\n     */\n    getAnswer(questionId: string): Observable<AiAnswerEntry> {\n        return from(this.searchAiApi.getAnswer(questionId));\n    }\n\n    /**\n     * Get the knowledge retrieval configuration.\n     *\n     * @returns KnowledgeRetrievalConfigEntry object containing the configuration.\n     */\n    getConfig(): Observable<KnowledgeRetrievalConfigEntry> {\n        return from(this.searchAiApi.getConfig());\n    }\n\n    /**\n     * Check if using of search is possible (if all conditions are met).\n     *\n     * @param selectedNodesState information about selected nodes.\n     * @param maxSelectedNodes max number of selected nodes. Default 100.\n     * @returns string with error if any condition is not met, empty string otherwise.\n     */\n    checkSearchAvailability(selectedNodesState: SelectionState, maxSelectedNodes = 100): string {\n        const messages: {\n            key: string;\n            [parameter: string]: number | string;\n        }[] = [];\n        if (selectedNodesState.count > maxSelectedNodes) {\n            messages.push({\n                key: 'KNOWLEDGE_RETRIEVAL.SEARCH.WARNINGS.TOO_MANY_FILES_SELECTED',\n                maxFiles: maxSelectedNodes\n            });\n        }\n        if (selectedNodesState.nodes.some((node) => node.entry.isFolder)) {\n            messages.push({\n                key: 'KNOWLEDGE_RETRIEVAL.SEARCH.WARNINGS.FOLDER_SELECTED'\n            });\n        }\n        return messages.map((message) => this.translateService.instant(message.key, message)).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\nexport interface SearchAiInputState {\n    active: boolean;\n    selectedAgentId?: string;\n    searchTerm?: 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 './services/search-ai.service';\nexport * from './models/search-ai-input-state';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 { VersionCompatibilityService } from './version-compatibility.service';\n\n/**\n * Create a version compatibility factory\n *\n * @param versionCompatibilityService service dependency\n * @returns factory function\n */\nexport function versionCompatibilityFactory(versionCompatibilityService: VersionCompatibilityService) {\n    return () => versionCompatibilityService;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ContentAuthLoaderService } from './content-auth-loader.service';\n\n/**\n * Create a content auth factory\n *\n * @param authLoaderService service dependency\n * @returns factory function\n */\nexport function contentAuthLoaderFactory(authLoaderService: ContentAuthLoaderService): () => void {\n    return () => authLoaderService.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';\nimport { AuthenticationService, BasicAlfrescoAuthService } from '@alfresco/adf-core';\nimport { take } from 'rxjs/operators';\n\n@Injectable()\nexport class ContentAuthLoaderService {\n    constructor(private readonly basicAlfrescoAuthService: BasicAlfrescoAuthService, private readonly authService: AuthenticationService) {}\n\n    init(): void {\n        this.authService.onLogin.pipe(take(1)).subscribe({\n            next: async () => {\n                if (this.authService.isOauth() && (this.authService.isALLProvider() || this.authService.isECMProvider())) {\n                    await this.basicAlfrescoAuthService.requireAlfTicket();\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 { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { 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 { 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 { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatSliderModule } from '@angular/material/slider';\nimport { MatTreeModule } from '@angular/material/tree';\nimport { MatBadgeModule } from '@angular/material/badge';\n\n/** @deprecated this module is deprecated and will be removed in future versions */\n@NgModule({\n    imports: [\n        MatButtonModule,\n        MatAutocompleteModule,\n        MatChipsModule,\n        MatDialogModule,\n        MatIconModule,\n        MatCardModule,\n        MatInputModule,\n        MatListModule,\n        MatProgressSpinnerModule,\n        MatProgressBarModule,\n        MatRippleModule,\n        MatMenuModule,\n        MatOptionModule,\n        MatExpansionModule,\n        MatSelectModule,\n        MatCheckboxModule,\n        MatDatepickerModule,\n        MatSlideToggleModule,\n        MatRadioModule,\n        MatSliderModule,\n        MatTreeModule,\n        MatBadgeModule\n    ],\n    exports: [\n        MatButtonModule,\n        MatAutocompleteModule,\n        MatChipsModule,\n        MatDialogModule,\n        MatIconModule,\n        MatCardModule,\n        MatInputModule,\n        MatListModule,\n        MatProgressSpinnerModule,\n        MatProgressBarModule,\n        MatRippleModule,\n        MatMenuModule,\n        MatOptionModule,\n        MatExpansionModule,\n        MatSelectModule,\n        MatCheckboxModule,\n        MatDatepickerModule,\n        MatSlideToggleModule,\n        MatRadioModule,\n        MatSliderModule,\n        MatTreeModule,\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, APP_INITIALIZER } from '@angular/core';\nimport { provideTranslations } from '@alfresco/adf-core';\nimport { MatDatetimepickerModule, MatNativeDatetimeModule } from '@mat-datetimepicker/core';\nimport { CONTENT_TAG_DIRECTIVES } from './tag/tag.module';\nimport { DOCUMENT_LIST_DIRECTIVES } from './document-list/document-list.module';\nimport { CONTENT_SEARCH_DIRECTIVES } from './search/search.module';\nimport { BREADCRUMB_DIRECTIVES } from './breadcrumb/breadcrumb.module';\nimport { CONTENT_VERSION_DIRECTIVES } from './version-manager/version-manager.module';\nimport { CONTENT_NODE_SELECTOR_DIRECTIVES } from './content-node-selector/content-node-selector.module';\nimport { CONTENT_NODE_SHARE_DIRECTIVES } from './content-node-share/content-node-share.module';\nimport { CONTENT_DIRECTIVES } from './directives/content-directive.module';\nimport { CONTENT_DIALOG_DIRECTIVES } from './dialogs/dialog.module';\nimport { CONTENT_METADATA_DIRECTIVES } from './content-metadata/content-metadata.module';\nimport { CONTENT_PERMISSION_MANAGER_DIRECTIVES } from './permission-manager/permission-manager.module';\nimport { ASPECT_LIST_DIRECTIVES } from './aspect-list/aspect-list.module';\nimport { versionCompatibilityFactory } from './version-compatibility/version-compatibility-factory';\nimport { VersionCompatibilityService } from './version-compatibility/version-compatibility.service';\nimport { CONTENT_PIPES } from './pipes/content-pipe.module';\nimport { contentAuthLoaderFactory } from './auth-loader/content-auth-loader-factory';\nimport { ContentAuthLoaderService } from './auth-loader/content-auth-loader.service';\nimport { CategoriesManagementComponent } from './category';\nimport { TreeComponent } from './tree';\nimport { NewVersionUploaderDialogComponent } from './new-version-uploader';\nimport { VersionCompatibilityDirective } from './version-compatibility';\nimport { CONTENT_UPLOAD_DIRECTIVES } from './upload';\nimport { TreeViewComponent } from './tree-view';\nimport { NodeCommentsComponent } from './node-comments';\nimport { AlfrescoViewerComponent } from './viewer';\nimport { ContentTypeDialogComponent } from './content-type';\nimport { MaterialModule } from './material.module';\nimport { AlfrescoIconComponent } from './alfresco-icon/alfresco-icon.component';\nimport { AlfrescoApiService } from './services/alfresco-api.service';\nimport { AlfrescoApiNoAuthService } from './api-factories/alfresco-api-no-auth.service';\nimport { AlfrescoApiLoaderService, createAlfrescoApiInstance } from './api-factories/alfresco-api-v2-loader.service';\n\n@NgModule({\n    imports: [\n        MaterialModule,\n        MatDatetimepickerModule,\n        MatNativeDatetimeModule,\n        ...CONTENT_PIPES,\n        ...CONTENT_TAG_DIRECTIVES,\n        ...CONTENT_DIALOG_DIRECTIVES,\n        ...CONTENT_SEARCH_DIRECTIVES,\n        ...DOCUMENT_LIST_DIRECTIVES,\n        ...CONTENT_UPLOAD_DIRECTIVES,\n        ...BREADCRUMB_DIRECTIVES,\n        ...CONTENT_NODE_SELECTOR_DIRECTIVES,\n        ...CONTENT_NODE_SHARE_DIRECTIVES,\n        ...CONTENT_METADATA_DIRECTIVES,\n        ...CONTENT_DIRECTIVES,\n        ...CONTENT_PERMISSION_MANAGER_DIRECTIVES,\n        ...CONTENT_VERSION_DIRECTIVES,\n        TreeViewComponent,\n        ContentTypeDialogComponent,\n        ...ASPECT_LIST_DIRECTIVES,\n        VersionCompatibilityDirective,\n        NodeCommentsComponent,\n        TreeComponent,\n        AlfrescoViewerComponent,\n        CategoriesManagementComponent,\n        NewVersionUploaderDialogComponent,\n        AlfrescoIconComponent\n    ],\n    providers: [provideTranslations('adf-content-services', 'assets/adf-content-services')],\n    exports: [\n        MaterialModule,\n        ...CONTENT_PIPES,\n        ...CONTENT_TAG_DIRECTIVES,\n        ...DOCUMENT_LIST_DIRECTIVES,\n        ...CONTENT_UPLOAD_DIRECTIVES,\n        ...CONTENT_SEARCH_DIRECTIVES,\n        ...BREADCRUMB_DIRECTIVES,\n        ...CONTENT_NODE_SELECTOR_DIRECTIVES,\n        ...CONTENT_NODE_SHARE_DIRECTIVES,\n        ...CONTENT_METADATA_DIRECTIVES,\n        ...CONTENT_DIALOG_DIRECTIVES,\n        ...CONTENT_DIRECTIVES,\n        ...CONTENT_PERMISSION_MANAGER_DIRECTIVES,\n        ...CONTENT_VERSION_DIRECTIVES,\n        TreeViewComponent,\n        ...ASPECT_LIST_DIRECTIVES,\n        ContentTypeDialogComponent,\n        VersionCompatibilityDirective,\n        NodeCommentsComponent,\n        TreeComponent,\n        AlfrescoViewerComponent,\n        CategoriesManagementComponent,\n        NewVersionUploaderDialogComponent,\n        AlfrescoIconComponent\n    ]\n})\nexport class ContentModule {\n    static forRoot(): ModuleWithProviders<ContentModule> {\n        return {\n            ngModule: ContentModule,\n            providers: [\n                provideTranslations('adf-content-services', 'assets/adf-content-services'),\n                ContentAuthLoaderService,\n                { provide: AlfrescoApiService, useClass: AlfrescoApiNoAuthService },\n                {\n                    provide: APP_INITIALIZER,\n                    useFactory: versionCompatibilityFactory,\n                    deps: [VersionCompatibilityService],\n                    multi: true\n                },\n                {\n                    provide: APP_INITIALIZER,\n                    useFactory: contentAuthLoaderFactory,\n                    deps: [ContentAuthLoaderService],\n                    multi: true\n                },\n                {\n                    provide: APP_INITIALIZER,\n                    useFactory: createAlfrescoApiInstance,\n                    deps: [AlfrescoApiLoaderService],\n                    multi: true\n                }\n            ]\n        };\n    }\n\n    /**\n     * @deprecated use `ContentModule` instead\n     * @returns ModuleWithProviders<ContentModule>\n     */\n    static forChild(): ModuleWithProviders<ContentModule> {\n        return {\n            ngModule: ContentModule\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 { ContentInfo, Node, NodeEntry, PathInfo } from '@alfresco/js-api';\n\nexport class FileNode extends NodeEntry {\n    constructor(name?: string, mimeType?: string, id?: string) {\n        super();\n        this.entry = new Node();\n        this.entry.id = id || 'file-id';\n        this.entry.isFile = true;\n        this.entry.isFolder = false;\n        this.entry.name = name;\n        this.entry.path = new PathInfo();\n        this.entry.content = new ContentInfo();\n        this.entry.content.mimeType = mimeType || 'text/plain';\n        this.entry.properties = {};\n    }\n}\n\nexport class FolderNode extends NodeEntry {\n    constructor(name?: string) {\n        super();\n        this.entry = new Node();\n        this.entry.id = 'folder-id';\n        this.entry.isFile = false;\n        this.entry.isFolder = true;\n        this.entry.name = name;\n        this.entry.path = new PathInfo();\n        this.entry.aspectNames = ['cm:folder'];\n        this.entry.properties = {};\n    }\n}\n\nexport class SmartFolderNode extends NodeEntry {\n    constructor(name?: string) {\n        super();\n        this.entry = new Node();\n        this.entry.id = 'smart-folder-id';\n        this.entry.isFile = false;\n        this.entry.isFolder = true;\n        this.entry.name = name;\n        this.entry.path = new PathInfo();\n        this.entry.aspectNames = ['smf:systemConfigSmartFolder'];\n        this.entry.properties = {};\n    }\n}\n\nexport class RuleFolderNode extends NodeEntry {\n    constructor(name?: string) {\n        super();\n        this.entry = new Node();\n        this.entry.id = 'rule-folder-id';\n        this.entry.isFile = false;\n        this.entry.isFolder = true;\n        this.entry.name = name;\n        this.entry.path = new PathInfo();\n        this.entry.aspectNames = ['rule:rules'];\n        this.entry.properties = {};\n    }\n}\n\nexport class LinkFolderNode extends NodeEntry {\n    constructor(name?: string) {\n        super();\n        this.entry = new Node();\n        this.entry.id = 'link-folder-id';\n        this.entry.isFile = false;\n        this.entry.isFolder = true;\n        this.entry.nodeType = 'app:folderlink';\n        this.entry.name = name;\n        this.entry.path = new PathInfo();\n        this.entry.properties = {};\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 { Node, NodePaging, NodeEntry } from '@alfresco/js-api';\n\nexport const fakeNodeWithCreatePermission = new Node({\n    isFile: false,\n    createdByUser: { id: 'admin', displayName: 'Administrator' },\n    modifiedAt: new Date('2017-06-08T13:53:46.495Z'),\n    nodeType: 'cm:folder',\n    parentId: '55052317-7e59-4058-8e07-769f41e615e1',\n    createdAt: new Date('2017-05-22T11:36:11.270Z'),\n    path: {\n        name: '/Company Home/User Homes',\n        isComplete: true,\n        elements: [\n            {\n                id: '94acfc73-7014-4475-9bd9-93a2162f0f8c',\n                name: 'Company Home'\n            },\n            { id: '55052317-7e59-4058-8e07-769f41e615e1', name: 'User Homes' }\n        ]\n    },\n    isFolder: true,\n    modifiedByUser: { id: 'Test', displayName: 'Test' },\n    name: 'Test',\n    id: '70e1cc6a-6918-468a-b84a-1048093b06fd',\n    properties: {},\n    allowableOperations: ['delete', 'update', 'create']\n});\n\nexport const fakeNodeWithNoPermission = new Node({\n    isFile: false,\n    createdByUser: { id: 'admin', displayName: 'Administrator' },\n    modifiedAt: new Date('2017-06-08T13:53:46.495Z'),\n    nodeType: 'cm:folder',\n    parentId: '55052317-7e59-4058-8e07-769f41e615e1',\n    aspectNames: ['cm:ownable', 'cm:auditable'],\n    createdAt: new Date('2017-05-22T11:36:11.270Z'),\n    path: {\n        name: '/Company Home/User Homes',\n        isComplete: true,\n        elements: [\n            {\n                id: '94acfc73-7014-4475-9bd9-93a2162f0f8c',\n                name: 'Company Home'\n            },\n            { id: '55052317-7e59-4058-8e07-769f41e615e1', name: 'User Homes' }\n        ]\n    },\n    isFolder: true,\n    modifiedByUser: { id: 'Test', displayName: 'Test' },\n    name: 'Test',\n    id: '70e1cc6a-6918-468a-b84a-1048093b06fd',\n    properties: {}\n});\n\nexport const fakeNodeAnswerWithEntries = {\n    list: {\n        pagination: {\n            count: 4,\n            hasMoreItems: false,\n            totalItems: 14,\n            skipCount: 10,\n            maxItems: 10\n        },\n        entries: [\n            {\n                entry: {\n                    isFile: true,\n                    createdByUser: { id: 'admin', displayName: 'Administrator' },\n                    modifiedAt: '2017-05-24T15:08:55.640Z',\n                    nodeType: 'cm:content',\n                    content: {\n                        mimeType: 'application/rtf',\n                        mimeTypeName: 'Rich Text Format',\n                        sizeInBytes: 14530,\n                        encoding: 'UTF-8'\n                    },\n                    parentId: 'd124de26-6ba0-4f40-8d98-4907da2d337a',\n                    createdAt: '2017-05-24T15:08:55.640Z',\n                    path: {\n                        name: '/Company Home/Guest Home',\n                        isComplete: true,\n                        elements: [\n                            {\n                                id: '94acfc73-7014-4475-9bd9-93a2162f0f8c',\n                                name: 'Company Home'\n                            },\n                            { id: 'd124de26-6ba0-4f40-8d98-4907da2d337a', name: 'Guest Home' }\n                        ]\n                    },\n                    isFolder: false,\n                    modifiedByUser: { id: 'admin', displayName: 'Administrator' },\n                    name: 'b_txt_file.rtf',\n                    id: '67b80f77-dbca-4f58-be6c-71b9dd61ea53',\n                    properties: { 'cm:versionLabel': '1.0', 'cm:versionType': 'MAJOR' },\n                    allowableOperations: ['delete', 'update']\n                }\n            }\n        ]\n    }\n};\n\nexport const fakeNodeAnswerWithNOEntries = {\n    list: {\n        pagination: {\n            count: 4,\n            hasMoreItems: false,\n            totalItems: 14,\n            skipCount: 10,\n            maxItems: 10\n        },\n        entries: []\n    }\n};\n\nexport const fakeGetSitesAnswer = {\n    list: {\n        pagination: {\n            count: 3,\n            hasMoreItems: false,\n            totalItems: 3,\n            skipCount: 0,\n            maxItems: 20\n        },\n        entries: [\n            {\n                entry: {\n                    role: 'SiteManager',\n                    visibility: 'PRIVATE',\n                    guid: 'ac65fdbe-0c79-4f67-bd6a-b89a2768561b',\n                    id: 'admin-site',\n                    preset: 'site-dashboard',\n                    title: 'Admin Site'\n                }\n            },\n            {\n                entry: {\n                    role: 'SiteManager',\n                    visibility: 'PUBLIC',\n                    guid: 'b4cff62a-664d-4d45-9302-98723eac1319',\n                    description: 'This is a Sample Alfresco Team site.',\n                    id: 'swsdp',\n                    preset: 'site-dashboard',\n                    title: 'Sample: Web Site Design Project'\n                }\n            },\n            {\n                entry: {\n                    visibility: 'PUBLIC',\n                    guid: 'af36cf8f-d43c-4a4b-84e6-d1b03e3a2ce5',\n                    id: 'test-site',\n                    preset: 'site-dashboard',\n                    title: 'Test Site'\n                }\n            }\n        ]\n    }\n};\n\nexport const fakeGetSiteMembership = {\n    list: {\n        pagination: {\n            count: 2,\n            hasMoreItems: false,\n            totalItems: 2,\n            skipCount: 0,\n            maxItems: 20\n        },\n        entries: [\n            {\n                entry: {\n                    site: {\n                        role: 'SiteManager',\n                        visibility: 'PRIVATE',\n                        guid: 'ac65fdbe-0c79-4f67-bd6a-b89a2768561b',\n                        id: 'admin-site',\n                        preset: 'site-dashboard',\n                        title: 'Admin Site'\n                    },\n                    role: 'SiteManager',\n                    guid: 'ac65fdbe-0c79-4f67-bd6a-b89a2768561b',\n                    id: 'admin-site'\n                }\n            },\n            {\n                entry: {\n                    site: {\n                        role: 'SiteManager',\n                        visibility: 'PUBLIC',\n                        guid: 'b4cff62a-664d-4d45-9302-98723eac1319',\n                        description: 'This is a Sample Alfresco Team site.',\n                        id: 'swsdp',\n                        preset: 'site-dashboard',\n                        title: 'Sample: Web Site Design Project'\n                    },\n                    role: 'SiteManager',\n                    guid: 'b4cff62a-664d-4d45-9302-98723eac1319',\n                    id: 'swsdp'\n                }\n            }\n        ]\n    }\n};\n\nexport const fakeNodePaging: NodePaging = {\n    list: {\n        pagination: {\n            count: 5,\n            hasMoreItems: false,\n            totalItems: 5,\n            skipCount: 0,\n            maxItems: 100\n        },\n        entries: [\n            {\n                entry: fakeNodeWithNoPermission\n            },\n            {\n                entry: fakeNodeWithNoPermission\n            },\n            {\n                entry: fakeNodeWithNoPermission\n            },\n            {\n                entry: fakeNodeWithNoPermission\n            },\n            {\n                entry: fakeNodeWithNoPermission\n            }\n        ]\n    }\n};\n\nexport const mockNode1 = new Node({\n    isFile: true,\n    createdByUser: { id: 'admin', displayName: 'Administrator' },\n    modifiedAt: new Date('2017-05-24T15:08:55.640Z'),\n    nodeType: 'cm:content',\n    content: {\n        mimeType: 'application/rtf',\n        mimeTypeName: 'Rich Text Format',\n        sizeInBytes: 14530,\n        encoding: 'UTF-8'\n    },\n    parentId: 'd124de26-6ba0-4f40-8d98-4907da2d337a',\n    createdAt: new Date('2017-05-24T15:08:55.640Z'),\n    path: {\n        name: '/Company Home/Guest Home',\n        isComplete: true,\n        elements: [\n            {\n                id: '94acfc73-7014-4475-9bd9-93a2162f0f8c',\n                name: 'Company Home'\n            },\n            { id: 'd124de26-6ba0-4f40-8d98-4907da2d337a', name: 'Guest Home' }\n        ]\n    },\n    isFolder: false,\n    modifiedByUser: { id: 'admin', displayName: 'Administrator' },\n    name: 'b_txt_file.rtf',\n    id: '70e1cc6a-6918-468a-b84a-1048093b06fd',\n    properties: { 'cm:versionLabel': '1.0', 'cm:versionType': 'MAJOR' },\n    allowableOperations: ['delete', 'update']\n});\n\nexport const mockNode2 = new Node({\n    isFile: true,\n    createdByUser: { id: 'admin', displayName: 'Administrator' },\n    modifiedAt: new Date('2017-05-24T15:08:55.640Z'),\n    nodeType: 'cm:content',\n    content: {\n        mimeType: 'application/rtf',\n        mimeTypeName: 'Rich Text Format',\n        sizeInBytes: 14530,\n        encoding: 'UTF-8'\n    },\n    parentId: 'd124de26-6ba0-4f40-8d98-4907da2d337a',\n    createdAt: new Date('2017-05-24T15:08:55.640Z'),\n    path: {\n        name: '/Company Home/Guest Home',\n        isComplete: true,\n        elements: [\n            {\n                id: '94acfc73-7014-4475-9bd9-93a2162f0f8c',\n                name: 'Company Home'\n            },\n            { id: 'd124de26-6ba0-4f40-8d98-4907da2d337a', name: 'Guest Home' }\n        ]\n    },\n    isFolder: false,\n    modifiedByUser: { id: 'admin', displayName: 'Administrator' },\n    name: 'b_txt_file.rtf',\n    id: '67b80f77-dbca-4f58-be6c-71b9dd61e554',\n    properties: { 'cm:versionLabel': '1.0', 'cm:versionType': 'MAJOR' },\n    allowableOperations: ['delete', 'update']\n});\n\nexport const mockNode3 = new Node({\n    isFile: true,\n    createdByUser: { id: 'admin', displayName: 'Administrator' },\n    modifiedAt: new Date('2017-05-24T15:08:55.640Z'),\n    nodeType: 'cm:content',\n    content: {\n        mimeType: 'application/rtf',\n        mimeTypeName: 'Rich Text Format',\n        sizeInBytes: 14530,\n        encoding: 'UTF-8'\n    },\n    parentId: 'd124de26-6ba0-4f40-8d98-4907da2d337a',\n    createdAt: new Date('2017-05-24T15:08:55.640Z'),\n    path: {\n        name: '/Company Home/Guest Home',\n        isComplete: true,\n        elements: [\n            {\n                id: '94acfc73-7014-4475-9bd9-93a2162f0f8c',\n                name: 'Company Home'\n            },\n            { id: 'd124de26-6ba0-4f40-8d98-4907da2d337a', name: 'Guest Home' }\n        ]\n    },\n    isFolder: false,\n    modifiedByUser: { id: 'admin', displayName: 'Administrator' },\n    name: 'c_txt_file.rtf',\n    id: '67b80f77-dbca-4f58-be6c-71b9dd61e555',\n    properties: { 'cm:versionLabel': '1.0', 'cm:versionType': 'MAJOR' },\n    allowableOperations: ['delete', 'update']\n});\n\nexport const mockPreselectedNodes: NodeEntry[] = [\n    {\n        entry: mockNode1\n    },\n    {\n        entry: mockNode2\n    }\n];\n\nexport const mockNodePagingWithPreselectedNodes: NodePaging = {\n    list: {\n        pagination: {\n            count: 5,\n            hasMoreItems: false,\n            totalItems: 5,\n            skipCount: 0,\n            maxItems: 100\n        },\n        entries: [\n            {\n                entry: mockNode1\n            },\n            {\n                entry: mockNode2\n            },\n            {\n                entry: mockNode3\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, ViewChild } from '@angular/core';\nimport { SearchComponent } from '../search/components/search.component';\nimport { SearchRequest, ResultSetPaging, ResultSetRowEntry, ContentInfo, UserInfo, ResultNode } from '@alfresco/js-api';\nimport { SearchModule } from '../search';\nimport { CommonModule } from '@angular/common';\n\nconst entryItem = new ResultSetRowEntry({\n    entry: new ResultNode({\n        id: '123',\n        name: 'MyDoc',\n        isFile: true,\n        content: new ContentInfo({\n            mimeType: 'text/plain'\n        }),\n        createdByUser: new UserInfo({\n            displayName: 'John Doe'\n        }),\n        modifiedByUser: new UserInfo({\n            displayName: 'John Doe'\n        })\n    })\n});\n\nconst entryDifferentItem = new ResultSetRowEntry({\n    entry: new ResultNode({\n        id: '999',\n        name: 'TEST_DOC',\n        isFile: true,\n        content: new ContentInfo({\n            mimeType: 'text/plain'\n        }),\n        createdByUser: new UserInfo({\n            displayName: 'John TEST'\n        }),\n        modifiedByUser: new UserInfo({\n            displayName: 'John TEST'\n        })\n    })\n});\n\nexport const result = new ResultSetPaging({\n    list: {\n        entries: [entryItem]\n    }\n});\n\nexport const differentResult = new ResultSetPaging({\n    list: {\n        entries: [entryDifferentItem]\n    }\n});\n\nexport const results = {\n    list: {\n        entries: [entryItem, entryItem, entryItem]\n    }\n};\n\nexport const noResult = {\n    list: {\n        entries: []\n    }\n};\n\n@Component({\n    template: `\n        <adf-search\n            [searchTerm]=\"searchedWord\"\n            [maxResults]=\"maxResults\"\n            (error)=\"showSearchResult('ERROR')\"\n            (success)=\"showSearchResult('success')\"\n            #search\n        >\n            <ng-template let-data>\n                <ul id=\"autocomplete-search-result-list\">\n                    <li\n                        *ngFor=\"let item of data?.list?.entries; let idx = index\"\n                        (click)=\"elementClicked()\"\n                        tabindex=\"0\"\n                        role=\"button\"\n                        (keyup.enter)=\"elementClicked()\"\n                    >\n                        <div id=\"result_option_{{ idx }}\">\n                            <span>{{ item?.entry.name }}</span>\n                        </div>\n                    </li>\n                </ul>\n            </ng-template>\n        </adf-search>\n        <span id=\"component-result-message\">{{ message }}</span>\n    `,\n    standalone: true,\n    imports: [SearchModule, CommonModule]\n})\nexport class SimpleSearchTestComponent {\n    @ViewChild('search', { static: true })\n    search: SearchComponent;\n\n    message: string = '';\n    searchedWord = '';\n    maxResults: number = 5;\n    searchNode: SearchRequest;\n\n    constructor() {}\n\n    showSearchResult(event: any) {\n        this.message = event;\n    }\n\n    elementClicked() {\n        this.message = 'element clicked';\n    }\n\n    setSearchWordTo(str: string) {\n        this.searchedWord = str;\n    }\n\n    setSearchNodeTo(searchNode: SearchRequest) {\n        this.searchNode = searchNode;\n    }\n\n    changeMaxResultTo(newMax: number) {\n        this.maxResults = newMax;\n    }\n\n    forceHidePanel() {\n        this.search.hidePanel();\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 fakeSearch = {\n    list: {\n        pagination: {\n            count: 1,\n            hasMoreItems: false,\n            totalItems: 1,\n            skipCount: 0,\n            maxItems: 100\n        },\n        entries: [\n            {\n                entry: {\n                    id: '123',\n                    name: 'MyDoc',\n                    content: {\n                        mimetype: 'text/plain'\n                    },\n                    createdByUser: {\n                        displayName: 'John Doe'\n                    },\n                    modifiedByUser: {\n                        displayName: 'John Doe'\n                    }\n                }\n            }\n        ]\n    }\n};\n\nexport const mockError = {\n    error: {\n        errorKey: 'Search failed',\n        statusCode: 400,\n        briefSummary: '08220082 search failed',\n        stackTrace: 'For security reasons the stack trace is no longer displayed, but the property is kept for previous versions.',\n        descriptionURL: 'https://api-explorer.alfresco.com'\n    }\n};\n\nexport const searchMockApi = {\n    core: {\n        queriesApi: {\n            findNodes: () => Promise.resolve(fakeSearch)\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 { SearchCategory } from '../search';\n\nexport const expandableCategories = [\n    {\n        id: 'cat-1',\n        name: 'category-1',\n        expanded: false,\n        enabled: false,\n        component: {\n            selector: 'cat-1-component',\n            settings: null\n        }\n    }\n];\n\nexport const disabledCategories = [\n    {\n        id: 'queryType',\n        name: 'Type',\n        expanded: true,\n        enabled: false,\n        component: {\n            selector: 'check-list',\n            settings: {\n                field: null,\n                pageSize: 5,\n                options: [\n                    { name: 'Folder', value: `TYPE:'cm:folder'` },\n                    { name: 'Document', value: `TYPE:'cm:content'` }\n                ]\n            }\n        }\n    }\n];\n\nexport const expandedCategories = [\n    {\n        id: 'queryType',\n        name: 'Type',\n        expanded: true,\n        enabled: true,\n        component: {\n            selector: 'check-list',\n            settings: {\n                field: null,\n                pageSize: 5,\n                options: [\n                    { name: 'Folder', value: `TYPE:'cm:folder'` },\n                    { name: 'Document', value: `TYPE:'cm:content'` }\n                ]\n            }\n        }\n    }\n];\n\nexport const simpleCategories: SearchCategory[] = [\n    {\n        id: 'queryName',\n        name: 'Name',\n        expanded: false,\n        enabled: true,\n        component: {\n            selector: 'text',\n            settings: {\n                field: ''\n            }\n        }\n    },\n    {\n        id: 'queryType',\n        name: 'Type',\n        expanded: false,\n        enabled: true,\n        component: {\n            selector: 'check-list',\n            settings: {\n                field: 'check-list',\n                pageSize: 5,\n                options: [\n                    { name: 'Folder', value: `TYPE:'cm:folder'` },\n                    { name: 'Document', value: `TYPE:'cm:content'` }\n                ]\n            }\n        }\n    }\n];\n\nexport const searchFilter = {\n    'app:fields': ['cm:name'],\n    include: ['allowableOperations'],\n    sorting: {\n        options: [\n            {\n                key: 'name',\n                label: 'Name',\n                type: 'FIELD',\n                field: 'cm:name',\n                ascending: true\n            }\n        ],\n        defaults: [\n            {\n                key: 'score',\n                type: 'FIELD',\n                field: 'score',\n                ascending: false\n            }\n        ]\n    },\n    resetButton: true,\n    filterQueries: [\n        {\n            query: `TYPE:'cm:folder' OR TYPE:'cm:content'`\n        },\n        {\n            query: 'NOT cm:creator:System'\n        }\n    ],\n    facetFields: {\n        expanded: true,\n        fields: [\n            {\n                field: 'content.mimetype',\n                mincount: 1,\n                label: 'SEARCH.FACET_FIELDS.TYPE'\n            },\n            {\n                field: 'content.size',\n                mincount: 1,\n                label: 'SEARCH.FACET_FIELDS.SIZE'\n            },\n            {\n                field: 'creator',\n                mincount: 1,\n                label: 'SEARCH.FACET_FIELDS.CREATOR'\n            },\n            {\n                field: 'modifier',\n                mincount: 1,\n                label: 'SEARCH.FACET_FIELDS.MODIFIER'\n            },\n            {\n                field: 'created',\n                mincount: 1,\n                label: 'SEARCH.FACET_FIELDS.CREATED'\n            }\n        ]\n    },\n    facetQueries: {\n        label: 'SEARCH.FACET_QUERIES.MY_FACET_QUERIES',\n        pageSize: 5,\n        expanded: true,\n        mincount: 1,\n        queries: [\n            {\n                query: 'created:2019',\n                label: 'SEARCH.FACET_QUERIES.CREATED_THIS_YEAR'\n            },\n            {\n                query: 'content.mimetype:text/html',\n                label: 'SEARCH.FACET_QUERIES.MIMETYPE',\n                group: 'Type facet queries'\n            },\n            {\n                query: 'content.size:[0 TO 10240]',\n                label: 'Extra Small',\n                group: 'Size facet queries'\n            },\n            {\n                query: 'content.size:[10240 TO 102400]',\n                label: 'SEARCH.FACET_QUERIES.SMALL',\n                group: 'Size facet queries'\n            },\n            {\n                query: 'content.size:[102400 TO 1048576]',\n                label: 'SEARCH.FACET_QUERIES.MEDIUM',\n                group: 'Size facet queries'\n            },\n            {\n                query: 'content.size:[1048576 TO 16777216]',\n                label: 'SEARCH.FACET_QUERIES.LARGE',\n                group: 'Size facet queries'\n            },\n            {\n                query: 'content.size:[16777216 TO 134217728]',\n                label: 'SEARCH.FACET_QUERIES.XTRALARGE',\n                group: 'Size facet queries'\n            },\n            {\n                query: 'content.size:[134217728 TO MAX]',\n                label: 'SEARCH.FACET_QUERIES.XXTRALARGE',\n                group: 'Size facet queries'\n            },\n            {\n                query: 'content.size:[111111 TO MAX]',\n                label: 'my1',\n                group: 'Size facet queries'\n            },\n            {\n                query: 'content.size:[222222 TO MAX]',\n                label: 'my2',\n                group: 'Size facet queries'\n            },\n            {\n                query: 'content.size:[333333 TO MAX]',\n                label: 'my3',\n                group: 'Size facet queries'\n            },\n            {\n                query: 'content.size:[444444 TO MAX]',\n                label: 'my4',\n                group: 'Size facet queries'\n            },\n            {\n                query: 'content.size:[5555 TO MAX]',\n                label: 'my5',\n                group: 'Size facet queries'\n            },\n            {\n                query: 'content.size:[666666 TO MAX]',\n                label: 'my6',\n                group: 'Size facet queries'\n            },\n            {\n                query: 'content.size:[777777 TO MAX]',\n                label: 'my7',\n                group: 'Size facet queries'\n            },\n            {\n                query: 'content.size:[888888 TO MAX]',\n                label: 'my8',\n                group: 'Size facet queries'\n            }\n        ]\n    },\n    facetIntervals: {\n        expanded: true,\n        intervals: [\n            {\n                label: 'The Created',\n                field: 'cm:created',\n                sets: [\n                    {\n                        label: 'lastYear',\n                        start: '2018',\n                        end: '2019',\n                        endInclusive: false\n                    },\n                    {\n                        label: 'currentYear',\n                        start: 'NOW/YEAR',\n                        end: 'NOW/YEAR+1YEAR'\n                    },\n                    {\n                        label: 'earlier',\n                        start: '*',\n                        end: '2018',\n                        endInclusive: false\n                    }\n                ]\n            },\n            {\n                label: 'TheModified',\n                field: 'cm:modified',\n                sets: [\n                    {\n                        label: '2017',\n                        start: '2017',\n                        end: '2018',\n                        endInclusive: false\n                    },\n                    {\n                        label: '2017-2018',\n                        start: '2017',\n                        end: '2018',\n                        endInclusive: true\n                    },\n                    {\n                        label: 'currentYear',\n                        start: 'NOW/YEAR',\n                        end: 'NOW/YEAR+1YEAR'\n                    },\n                    {\n                        label: 'earlierThan2017',\n                        start: '*',\n                        end: '2017',\n                        endInclusive: false\n                    }\n                ]\n            }\n        ]\n    },\n    categories: [\n        {\n            id: 'queryName',\n            name: 'Name',\n            enabled: true,\n            expanded: true,\n            component: {\n                selector: 'text',\n                settings: {\n                    pattern: `cm:name:'(.*?)'`,\n                    field: 'cm:name',\n                    placeholder: 'Enter the name'\n                }\n            }\n        },\n        {\n            id: 'checkList',\n            name: 'Check List',\n            enabled: true,\n            component: {\n                selector: 'check-list',\n                settings: {\n                    pageSize: 5,\n                    operator: 'OR',\n                    options: []\n                }\n            }\n        },\n        {\n            id: 'contentSize',\n            name: 'Content Size',\n            enabled: true,\n            component: {\n                selector: 'slider',\n                settings: {\n                    field: 'cm:content.size',\n                    min: 0,\n                    max: 18,\n                    step: 1,\n                    thumbLabel: true\n                }\n            }\n        },\n        {\n            id: 'contentSizeRange',\n            name: 'Content Size (range)',\n            enabled: true,\n            component: {\n                selector: 'number-range',\n                settings: {\n                    field: 'cm:content.size',\n                    format: '[{FROM} TO {TO}]'\n                }\n            }\n        },\n        {\n            id: 'createdDateRange',\n            name: 'Created Date (range)',\n            enabled: true,\n            component: {\n                selector: 'date-range',\n                settings: {\n                    field: 'cm:created',\n                    dateFormat: 'DD-MMM-YY',\n                    displayedLabelsByField: {\n                        'cm:created': 'Created Date (range)'\n                    }\n                }\n            }\n        },\n        {\n            id: 'queryType',\n            name: 'Type',\n            enabled: true,\n            component: {\n                selector: 'radio',\n                settings: {\n                    field: null,\n                    pageSize: 5,\n                    options: []\n                }\n            }\n        }\n    ]\n};\n\nexport const mockSearchResult = {\n    list: {\n        pagination: { count: 20, hasMoreItems: true, totalItems: 20284, skipCount: 0, maxItems: 20 },\n        context: {\n            consistency: { lastTxId: 122854 },\n            facets: [\n                {\n                    type: 'query',\n                    label: 'Type facet queries',\n                    buckets: [\n                        {\n                            label: 'SEARCH.FACET_QUERIES.MIMETYPE',\n                            filterQuery: 'content.mimetype:text/html',\n                            metrics: [{ type: 'count', value: { count: 13 } }]\n                        }\n                    ]\n                },\n                {\n                    type: 'query',\n                    label: 'Size facet queries',\n                    buckets: [\n                        {\n                            label: 'my1',\n                            filterQuery: 'content.size:[111111 TO MAX]',\n                            metrics: [{ type: 'count', value: { count: 806 } }]\n                        },\n                        {\n                            label: 'my3',\n                            filterQuery: 'content.size:[333333 TO MAX]',\n                            metrics: [{ type: 'count', value: { count: 669 } }]\n                        },\n                        {\n                            label: 'my2',\n                            filterQuery: 'content.size:[222222 TO MAX]',\n                            metrics: [{ type: 'count', value: { count: 691 } }]\n                        },\n                        {\n                            label: 'my5',\n                            filterQuery: 'content.size:[5555 TO MAX]',\n                            metrics: [{ type: 'count', value: { count: 1866 } }]\n                        },\n                        {\n                            label: 'my4',\n                            filterQuery: 'content.size:[444444 TO MAX]',\n                            metrics: [{ type: 'count', value: { count: 665 } }]\n                        },\n                        {\n                            label: 'my7',\n                            filterQuery: 'content.size:[777777 TO MAX]',\n                            metrics: [{ type: 'count', value: { count: 641 } }]\n                        },\n                        {\n                            label: 'SEARCH.FACET_QUERIES.SMALL',\n                            filterQuery: 'content.size:[10240 TO 102400]',\n                            metrics: [{ type: 'count', value: { count: 526 } }]\n                        },\n                        {\n                            label: 'my6',\n                            filterQuery: 'content.size:[666666 TO MAX]',\n                            metrics: [{ type: 'count', value: { count: 652 } }]\n                        },\n                        {\n                            label: 'SEARCH.FACET_QUERIES.XTRALARGE',\n                            filterQuery: 'content.size:[16777216 TO 134217728]',\n                            metrics: [{ type: 'count', value: { count: 617 } }]\n                        },\n                        {\n                            label: 'my8',\n                            filterQuery: 'content.size:[888888 TO MAX]',\n                            metrics: [{ type: 'count', value: { count: 641 } }]\n                        },\n                        {\n                            label: 'SEARCH.FACET_QUERIES.XXTRALARGE',\n                            filterQuery: 'content.size:[134217728 TO MAX]',\n                            metrics: [{ type: 'count', value: { count: 0 } }]\n                        },\n                        {\n                            label: 'SEARCH.FACET_QUERIES.MEDIUM',\n                            filterQuery: 'content.size:[102400 TO 1048576]',\n                            metrics: [{ type: 'count', value: { count: 630 } }]\n                        },\n                        {\n                            label: 'SEARCH.FACET_QUERIES.LARGE',\n                            filterQuery: 'content.size:[1048576 TO 16777216]',\n                            metrics: [{ type: 'count', value: { count: 23 } }]\n                        },\n                        {\n                            label: 'Extra Small',\n                            filterQuery: 'content.size:[0 TO 10240]',\n                            metrics: [{ type: 'count', value: { count: 10239 } }]\n                        }\n                    ]\n                },\n                {\n                    type: 'query',\n                    label: 'SEARCH.FACET_QUERIES.MY_FACET_QUERIES',\n                    buckets: [\n                        {\n                            label: 'SEARCH.FACET_QUERIES.CREATED_THIS_YEAR',\n                            filterQuery: 'created:2019',\n                            metrics: [{ type: 'count', value: { count: 0 } }]\n                        }\n                    ]\n                },\n                {\n                    type: 'field',\n                    label: 'SEARCH.FACET_FIELDS.SIZE',\n                    buckets: []\n                },\n                {\n                    type: 'field',\n                    label: 'SEARCH.FACET_FIELDS.CREATED',\n                    buckets: []\n                },\n                {\n                    type: 'field',\n                    label: 'SEARCH.FACET_FIELDS.TYPE',\n                    buckets: []\n                },\n                {\n                    type: 'field',\n                    label: 'SEARCH.FACET_FIELDS.MODIFIER',\n                    buckets: []\n                },\n                {\n                    type: 'field',\n                    label: 'SEARCH.FACET_FIELDS.CREATOR',\n                    buckets: []\n                },\n                {\n                    type: 'interval',\n                    label: 'TheModified',\n                    buckets: []\n                },\n                {\n                    type: 'interval',\n                    label: 'The Created',\n                    buckets: []\n                }\n            ]\n        }\n    }\n};\n\nexport const stepOne = [\n    'Extra Small (10239)',\n    'SEARCH.FACET_QUERIES.SMALL (526)',\n    'SEARCH.FACET_QUERIES.MEDIUM (630)',\n    'SEARCH.FACET_QUERIES.LARGE (23)',\n    'SEARCH.FACET_QUERIES.XTRALARGE (617)'\n];\n\nexport const stepTwo = [\n    'Extra Small (10239)',\n    'SEARCH.FACET_QUERIES.SMALL (526)',\n    'SEARCH.FACET_QUERIES.MEDIUM (630)',\n    'SEARCH.FACET_QUERIES.LARGE (23)',\n    'SEARCH.FACET_QUERIES.XTRALARGE (617)',\n    'my1 (806)',\n    'my2 (691)',\n    'my3 (669)',\n    'my4 (665)',\n    'my5 (1866)'\n];\n\nexport const stepThree = [\n    'Extra Small (10239)',\n    'SEARCH.FACET_QUERIES.SMALL (526)',\n    'SEARCH.FACET_QUERIES.MEDIUM (630)',\n    'SEARCH.FACET_QUERIES.LARGE (23)',\n    'SEARCH.FACET_QUERIES.XTRALARGE (617)',\n    'my1 (806)',\n    'my2 (691)',\n    'my3 (669)',\n    'my4 (665)',\n    'my5 (1866)',\n    'my6 (652)',\n    'my7 (641)',\n    'my8 (641)'\n];\n\nexport const sizeOptions = [\n    {\n        name: 'Extra Small (10239)',\n        value: 'Extra Small (10239)'\n    },\n    {\n        name: 'SEARCH.FACET_QUERIES.SMALL (526)',\n        value: 'SEARCH.FACET_QUERIES.SMALL (526)'\n    },\n    {\n        name: 'SEARCH.FACET_QUERIES.MEDIUM (630)',\n        value: 'SEARCH.FACET_QUERIES.MEDIUM (630)'\n    },\n    {\n        name: 'SEARCH.FACET_QUERIES.LARGE (23)',\n        value: 'SEARCH.FACET_QUERIES.LARGE (23)'\n    },\n    {\n        name: 'SEARCH.FACET_QUERIES.XTRALARGE (617)',\n        value: 'SEARCH.FACET_QUERIES.XTRALARGE (617)'\n    },\n    {\n        name: 'my1 (806)',\n        group: 'my1 (806)'\n    },\n    {\n        name: 'my2 (691)',\n        value: 'my2 (691)'\n    },\n    {\n        name: 'my3 (669)',\n        value: 'my3 (669)'\n    },\n    {\n        name: 'my4 (665)',\n        value: 'my4 (665)'\n    },\n    {\n        name: 'my5 (1866)',\n        group: 'my5 (1866)'\n    },\n    {\n        name: 'my6 (652)',\n        group: 'my6 (652)'\n    },\n    {\n        name: 'my7 (641)',\n        value: 'my7 (641)'\n    },\n    {\n        name: 'my8 (641)',\n        value: 'my8 (641)'\n    }\n];\n\nexport const filteredResult = ['my1 (806)', 'my2 (691)', 'my3 (669)', 'my4 (665)', 'my5 (1866)'];\n\nexport const mockContentSizeResponseBucket = {\n    label: '5875',\n    filterQuery: 'content.size:5875',\n    metrics: [\n        {\n            type: 'count',\n            value: {\n                count: 364\n            }\n        }\n    ]\n};\n\nexport const getMockSearchResultWithResponseBucket = () => {\n    const cloneResult = JSON.parse(JSON.stringify(mockSearchResult));\n    cloneResult.list.context.facets[3].buckets.push(mockContentSizeResponseBucket);\n    return cloneResult;\n};\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { SitePaging, SitePagingList } from '@alfresco/js-api';\n\n/* We are using functions instead of constants here to pass a new instance of the object each time */\nexport const getFakeSitePaging = (): SitePaging => ({\n    list: {\n        pagination: {\n            count: 2,\n            hasMoreItems: true,\n            totalItems: 2,\n            skipCount: 0,\n            maxItems: 100\n        },\n        entries: [\n            {\n                entry: {\n                    role: 'SiteManager',\n                    visibility: 'PUBLIC',\n                    guid: 'fake-1',\n                    description: 'fake-test-site',\n                    id: 'fake-test-site',\n                    preset: 'site-dashboard',\n                    title: 'fake-test-site'\n                }\n            },\n            {\n                entry: {\n                    role: 'SiteManager',\n                    visibility: 'PUBLIC',\n                    guid: 'fake-2',\n                    description: 'This is a Sample Alfresco Team site.',\n                    id: 'swsdp',\n                    preset: 'site-dashboard',\n                    title: 'fake-test-2'\n                }\n            }\n        ]\n    }\n});\n\nexport const getFakeSitePagingNoMoreItems = (): SitePaging => ({\n    list: {\n        pagination: {\n            count: 2,\n            hasMoreItems: false,\n            totalItems: 2,\n            skipCount: 0,\n            maxItems: 100\n        },\n        entries: [\n            {\n                entry: {\n                    role: 'SiteManager',\n                    visibility: 'PUBLIC',\n                    guid: 'fake-1',\n                    description: 'fake-test-site',\n                    id: 'fake-test-site',\n                    preset: 'site-dashboard',\n                    title: 'fake-test-site'\n                }\n            },\n            {\n                entry: {\n                    role: 'SiteManager',\n                    visibility: 'PUBLIC',\n                    guid: 'fake-2',\n                    description: 'This is a Sample Alfresco Team site.',\n                    id: 'swsdp',\n                    preset: 'site-dashboard',\n                    title: 'fake-test-2'\n                }\n            }\n        ]\n    }\n});\n\nexport const getFakeSitePagingFirstPage = (): SitePaging => ({\n    list: {\n        pagination: {\n            count: 2,\n            hasMoreItems: true,\n            totalItems: 2,\n            skipCount: 0,\n            maxItems: 4\n        },\n        entries: [\n            {\n                entry: {\n                    role: 'SiteManager',\n                    visibility: 'PUBLIC',\n                    guid: 'fake-1',\n                    description: 'fake-test-site',\n                    id: 'fake-test-site',\n                    preset: 'site-dashboard',\n                    title: 'fake-test-site'\n                }\n            },\n            {\n                entry: {\n                    role: 'SiteManager',\n                    visibility: 'PUBLIC',\n                    guid: 'fake-2',\n                    description: 'This is a Sample Alfresco Team site.',\n                    id: 'swsdp',\n                    preset: 'site-dashboard',\n                    title: 'fake-test-2'\n                }\n            }\n        ]\n    }\n});\n\nexport const getFakeSitePagingLastPage = (): SitePaging => ({\n    list: {\n        pagination: {\n            count: 4,\n            hasMoreItems: false,\n            totalItems: 2,\n            skipCount: 2,\n            maxItems: 4\n        },\n        entries: [\n            {\n                entry: {\n                    role: 'SiteManager',\n                    visibility: 'PUBLIC',\n                    guid: 'fake-3',\n                    description: 'fake-test-3',\n                    id: 'fake-test-3',\n                    preset: 'site-dashboard',\n                    title: 'fake-test-3'\n                }\n            },\n            {\n                entry: {\n                    role: 'SiteManager',\n                    visibility: 'PUBLIC',\n                    guid: 'fake-test-4',\n                    description: 'This is a Sample Alfresco Team site.',\n                    id: 'fake-test-4',\n                    preset: 'site-dashboard',\n                    title: 'fake-test-4'\n                }\n            }\n        ]\n    }\n});\n\nexport const getFakeSitePagingWithMembers = () =>\n    new SitePaging({\n        list: new SitePagingList({\n            entries: [\n                {\n                    entry: {\n                        visibility: 'MODERATED',\n                        guid: 'b4cff62a-664d-4d45-9302-98723eac1319',\n                        description: 'This is a Sample Alfresco Team site.',\n                        id: 'MODERATED-SITE',\n                        preset: 'site-dashboard',\n                        title: 'FAKE-MODERATED-SITE'\n                    },\n                    relations: {\n                        members: {\n                            list: {\n                                pagination: {\n                                    count: 3,\n                                    hasMoreItems: false,\n                                    skipCount: 0,\n                                    maxItems: 100\n                                },\n                                entries: [\n                                    {\n                                        entry: {\n                                            role: 'SiteManager',\n                                            person: {\n                                                firstName: 'Administrator',\n                                                emailNotificationsEnabled: true,\n                                                company: {},\n                                                id: 'admin',\n                                                enabled: true,\n                                                email: 'admin@alfresco.com'\n                                            },\n                                            id: 'admin'\n                                        }\n                                    },\n                                    {\n                                        entry: {\n                                            role: 'SiteCollaborator',\n                                            person: {\n                                                lastName: 'Beecher',\n                                                userStatus: 'Helping to design the look and feel of the new web site',\n                                                jobTitle: 'Graphic Designer',\n                                                statusUpdatedAt: new Date('2011-02-15T20:20:13.432+0000'),\n                                                mobile: '0112211001100',\n                                                emailNotificationsEnabled: true,\n                                                description: 'Alice is a demo user for the sample Alfresco Team site.',\n                                                telephone: '0112211001100',\n                                                enabled: false,\n                                                firstName: 'Alice',\n                                                skypeId: 'abeecher',\n                                                avatarId: '198500fc-1e99-4f5f-8926-248cea433366',\n                                                location: 'Tilbury, UK',\n                                                company: {\n                                                    organization: 'Moresby, Garland and Wedge',\n                                                    address1: '200 Butterwick Street',\n                                                    address2: 'Tilbury',\n                                                    address3: 'UK',\n                                                    postcode: 'ALF1 SAM1'\n                                                },\n                                                id: 'abeecher',\n                                                email: 'abeecher@example.com'\n                                            },\n                                            id: 'abeecher'\n                                        }\n                                    }\n                                ]\n                            }\n                        }\n                    }\n                },\n                {\n                    entry: {\n                        visibility: 'PUBLIC',\n                        guid: 'b4cff62a-664d-4d45-9302-98723eac1319',\n                        description: 'This is a Sample Alfresco Team site.',\n                        id: 'PUBLIC-SITE',\n                        preset: 'site-dashboard',\n                        title: 'FAKE-SITE-PUBLIC'\n                    }\n                },\n                {\n                    entry: {\n                        visibility: 'PRIVATE',\n                        guid: 'b4cff62a-664d-4d45-9302-98723eac1319',\n                        description: 'This is a Sample Alfresco Team site.',\n                        id: 'MEMBER-SITE',\n                        preset: 'site-dashboard',\n                        title: 'FAKE-PRIVATE-SITE-MEMBER'\n                    },\n                    relations: {\n                        members: {\n                            list: {\n                                pagination: {\n                                    count: 3,\n                                    hasMoreItems: false,\n                                    skipCount: 0,\n                                    maxItems: 100\n                                },\n                                entries: [\n                                    {\n                                        entry: {\n                                            role: 'SiteManager',\n                                            person: {\n                                                firstName: 'Administrator',\n                                                emailNotificationsEnabled: true,\n                                                company: {},\n                                                id: 'admin',\n                                                enabled: true,\n                                                email: 'admin@alfresco.com'\n                                            },\n                                            id: 'test'\n                                        }\n                                    }\n                                ]\n                            }\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 { SEARCH_LANGUAGE, SearchRequest } from '@alfresco/js-api';\n\nexport const mockSearchRequest = {\n    query: {\n        query: '(search-term*)',\n        language: SEARCH_LANGUAGE.AFTS\n    },\n    include: ['path', 'allowableOperations'],\n    paging: {\n        maxItems: 25,\n        skipCount: 0\n    },\n    fields: undefined,\n    filterQueries: [],\n    facetQueries: null,\n    facetIntervals: null,\n    facetFields: null,\n    sort: [],\n    scope: {\n        locations: 'nodes'\n    },\n    highlight: null,\n    facetFormat: 'V2'\n} as SearchRequest;\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 mockNode: any = {\n    isFile: true,\n    createdByUser: { id: 'admin', displayName: 'Administrator' },\n    modifiedAt: '2017-05-24T15:08:55.640Z',\n    nodeType: 'cm:content',\n    content: {\n        mimeType: 'application/rtf',\n        mimeTypeName: 'Rich Text Format',\n        sizeInBytes: 14530,\n        encoding: 'UTF-8'\n    },\n    parentId: 'd124de26-6ba0-4f40-8d98-4907da2d337a',\n    createdAt: '2017-05-24T15:08:55.640Z',\n    path: {\n        name: '/Company Home/Guest Home',\n        isComplete: true,\n        elements: [\n            {\n                id: '94acfc73-7014-4475-9bd9-93a2162f0f8c',\n                name: 'Company Home'\n            },\n            { id: 'd124de26-6ba0-4f40-8d98-4907da2d337a', name: 'Guest Home' }\n        ]\n    },\n    isFolder: false,\n    modifiedByUser: { id: 'admin', displayName: 'Administrator' },\n    name: 'b_txt_file.rtf',\n    id: '70e1cc6a-6918-468a-b84a-1048093b06fd',\n    properties: { 'cm:versionLabel': '1.0', 'cm:versionType': 'MAJOR' },\n    allowableOperations: ['delete', 'update']\n};\n\nexport const mockFile = new File(['fakefake'], 'file-fake.png', { type: 'image/png' });\n\nexport const mockNewVersionUploaderData: any = {\n    action: 'upload',\n    newVersion: {\n        value: {\n            entry: {\n                isFile: true,\n                createdByUser: {\n                    id: 'hruser',\n                    displayName: 'hruser'\n                },\n                modifiedAt: '2022-05-24T10:19:43.544Z',\n                nodeType: 'cm:content',\n                content: {\n                    mimeType: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n                    mimeTypeName: 'Microsoft Word 2007',\n                    sizeInBytes: 11887,\n                    encoding: 'UTF-8'\n                },\n                parentId: '422538ca-ea4b-4086-83f9-b36e4521ec7f',\n                aspectNames: ['rn:renditioned', 'cm:versionable', 'cm:titled', 'cm:auditable', 'cm:author', 'cm:thumbnailModification'],\n                createdAt: '2022-05-24T07:26:44.429Z',\n                isFolder: false,\n                modifiedByUser: {\n                    id: 'hruser',\n                    displayName: 'hruser'\n                },\n                name: 'Test3.docx',\n                id: '42ddb84d-fc96-4b45-aa3c-f24ca997d602',\n                properties: {\n                    'cm:versionType': 'MINOR',\n                    'cm:versionLabel': '1.1',\n                    'cm:author': 'Amedeo Lepore',\n                    'cm:lastThumbnailModification': ['doclib:1653377205499']\n                },\n                allowableOperations: ['delete', 'update', 'updatePermissions']\n            }\n        }\n    },\n    currentVersion: {\n        isFile: true,\n        createdByUser: {\n            id: 'hruser',\n            displayName: 'hruser'\n        },\n        modifiedAt: '2022-05-24T07:26:45.337Z',\n        nodeType: 'cm:content',\n        content: {\n            mimeType: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n            mimeTypeName: 'Microsoft Word 2007',\n            sizeInBytes: 11949,\n            encoding: 'UTF-8'\n        },\n        parentId: '422538ca-ea4b-4086-83f9-b36e4521ec7f',\n        aspectNames: ['rn:renditioned', 'cm:versionable', 'cm:titled', 'cm:auditable', 'cm:author', 'cm:thumbnailModification'],\n        createdAt: '2022-05-24T07:26:44.429Z',\n        path: {\n            name: '/Company Home/User Homes/hruser',\n            isComplete: true,\n            elements: [\n                {\n                    id: '4e2284fd-9457-4914-a612-ea844e87f53f',\n                    name: 'Company Home',\n                    nodeType: 'cm:folder',\n                    aspectNames: ['cm:titled', 'cm:auditable', 'app:uifacets']\n                },\n                {\n                    id: '75a5d2d2-6edb-40b6-822e-499f5e8beffb',\n                    name: 'User Homes',\n                    nodeType: 'cm:folder',\n                    aspectNames: ['cm:titled', 'cm:auditable', 'app:uifacets']\n                },\n                {\n                    id: '422538ca-ea4b-4086-83f9-b36e4521ec7f',\n                    name: 'hruser',\n                    nodeType: 'cm:folder',\n                    aspectNames: ['cm:ownable', 'cm:auditable']\n                }\n            ]\n        },\n        isFolder: false,\n        permissions: {\n            inherited: [\n                {\n                    authorityId: 'ROLE_OWNER',\n                    name: 'All',\n                    accessStatus: 'ALLOWED'\n                },\n                {\n                    authorityId: 'hruser',\n                    name: 'All',\n                    accessStatus: 'ALLOWED'\n                }\n            ],\n            settable: ['Contributor', 'Collaborator', 'Coordinator', 'Editor', 'Consumer'],\n            isInheritanceEnabled: true\n        },\n        modifiedByUser: {\n            id: 'hruser',\n            displayName: 'hruser'\n        },\n        name: 'Test2.docx',\n        id: '42ddb84d-fc96-4b45-aa3c-f24ca997d602',\n        properties: {\n            'cm:versionType': 'MAJOR',\n            'cm:versionLabel': '1.0',\n            'cm:author': 'Amedeo Lepore',\n            'cm:lastThumbnailModification': ['doclib:1653377205499']\n        },\n        allowableOperations: ['delete', 'update', 'updatePermissions'],\n        isExternal: 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 { SearchCategory } from '../search/models/search-category.interface';\n\nexport const mockSearchFilterWithoutDisplayedLabelsByField: SearchCategory = {\n    id: 'test',\n    name: 'test',\n    expanded: false,\n    enabled: true,\n    component: {\n        selector: 'date-range',\n        settings: {\n            pattern: `test:'(.*?)'`,\n            field: 'test',\n            placeholder: 'test placeholder'\n        }\n    }\n};\n\nexport const mockSearchFilterWithWrongDisplayedLabelsByField: SearchCategory = {\n    id: 'test',\n    name: 'test',\n    expanded: false,\n    enabled: true,\n    component: {\n        selector: 'date-range',\n        settings: {\n            pattern: `test:'(.*?)'`,\n            field: 'test',\n            placeholder: 'test placeholder',\n            displayedLabelsByField: {\n                'wrong-test': 'test-tab-label'\n            }\n        }\n    }\n};\n\nexport const mockSearchFilterWithDisplayedLabelsByField: SearchCategory = {\n    id: 'test',\n    name: 'test',\n    expanded: false,\n    enabled: true,\n    component: {\n        selector: 'date-range',\n        settings: {\n            pattern: `test:'(.*?)'`,\n            field: 'test',\n            placeholder: 'test placeholder',\n            displayedLabelsByField: {\n                test: 'test-tab-label'\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 * from './document-library.model.mock';\nexport * from './document-list.component.mock';\nexport * from './search.component.mock';\nexport * from './search.service.mock';\nexport * from './search-filter-mock';\nexport * from './sites-dropdown.component.mock';\nexport * from './search-query.mock';\nexport * from './new-version-uploader.service.mock';\nexport * from './date-range-search-filter.mock';\nexport * from './alfresco-api.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 { NgModule, APP_INITIALIZER } from '@angular/core';\nimport { NoopAnimationsModule } from '@angular/platform-browser/animations';\nimport { CoreModule, NoopTranslateModule, NoopAuthModule } from '@alfresco/adf-core';\nimport { ContentModule } from '../content.module';\nimport { versionCompatibilityFactory } from '../version-compatibility/version-compatibility-factory';\nimport { AlfrescoApiService } from '../services/alfresco-api.service';\nimport { VersionCompatibilityService } from '../version-compatibility/version-compatibility.service';\nimport { MatIconTestingModule } from '@angular/material/icon/testing';\nimport { AlfrescoApiServiceMock } from '../mock';\n\n@NgModule({\n    imports: [NoopAnimationsModule, CoreModule, NoopAuthModule, NoopTranslateModule, ContentModule, MatIconTestingModule],\n    providers: [\n        { provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock },\n        {\n            provide: APP_INITIALIZER,\n            useFactory: versionCompatibilityFactory,\n            deps: [VersionCompatibilityService],\n            multi: true\n        }\n    ],\n    exports: [NoopAnimationsModule, CoreModule, ContentModule]\n})\nexport class ContentTestingModule {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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/alfresco-icon/alfresco-icon.component';\nexport * from './lib/directives/index';\nexport * from './lib/tag/index';\nexport * from './lib/document-list/index';\nexport * from './lib/upload/index';\nexport * from './lib/search/index';\nexport * from './lib/breadcrumb/index';\nexport * from './lib/version-manager/index';\nexport * from './lib/content-node-selector/index';\nexport * from './lib/dialogs/index';\nexport * from './lib/content-metadata/index';\nexport * from './lib/permission-manager/index';\nexport * from './lib/content-node-share/index';\nexport * from './lib/tree-view/index';\nexport * from './lib/group/index';\nexport * from './lib/aspect-list/index';\nexport * from './lib/content-type/index';\nexport * from './lib/node-comments/index';\nexport * from './lib/new-version-uploader';\nexport * from './lib/interfaces/index';\nexport * from './lib/version-compatibility/index';\nexport * from './lib/pipes/index';\nexport * from './lib/common/index';\nexport * from './lib/tree/index';\nexport * from './lib/category/index';\nexport * from './lib/viewer/index';\nexport * from './lib/security/index';\nexport * from './lib/api-factories';\nexport * from './lib/services/index';\nexport * from './lib/infinite-scroll-datasource';\nexport * from './lib/prediction/index';\nexport * from './lib/legal-hold/index';\nexport * from './lib/api-factories';\nexport * from './lib/mock/alfresco-api.service.mock';\nexport * from './lib/agent/index';\nexport * from './lib/search-ai/index';\n\nexport * from './lib/content.module';\nexport * from './lib/material.module';\nexport * from './lib/testing/content.testing.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.AlfrescoApiService","i1.AlfrescoApiService","i2","i3.ContentService","i2.DownloadZipService","i3.NodesApiService","i4.ContentService","i1","i6","i7","i3","i4","i5","DEFAULT_PAGE_SIZE","i8","i1.TagService","i2.CategoryService","DEFAULT_DATE_DISPLAY_FORMAT","i1.SearchQueryBuilderService","i2.SearchService","i4.CategoryService","i1.SearchFilterService","i1.SearchHeaderQueryBuilderService","i9","i1.DocumentListService","i4.AlfrescoApiService","i5.LockService","i10","i1.UploadService","i2.SitesService","i1.SearchFacetFiltersService","i2.SearchFacetFiltersService","i1.ContentNodeSelectorPanelService","i2.SearchQueryBuilderService","i1.CustomResourcesService","i4.NodesApiService","i4.UploadService","i4.SitesService","i5.ContentNodeSelectorPanelService","i11","i12","i2.ContentService","i3.DocumentListService","i1.ContentService","i2.ContentNodeDialogService","i1.DiscoveryApiService","i3.VersionCompatibilityService","i1.ContentNodeDialogService","i4.DocumentListService","i5.AlfrescoApiService","i1.NodeActionsService","i5.ContentService","i2.DocumentListService","i1.DocumentListComponent","i1.ContentActionListComponent","i2.DocumentActionsService","i3.FolderActionsService","i1.NodesApiService","i1.SearchService","fakeSearch","mockError","searchMockApi","i1.VersionCompatibilityService","i3.ContentVersionService","i2.UploadService","i2.NodesApiService","i1.TreeService","i1.CategoryService","i2.ContentTypeService","i1.ContentTypeService","i4.PropertyGroupTranslatorService","i1.BasicPropertiesService","i2.ContentMetadataConfigFactory","i3.PropertyGroupTranslatorService","i4.PropertyDescriptorsService","i5.ContentTypePropertiesService","i1.ContentMetadataService","i2.CardViewContentUpdateService","i5.TagService","i6.CategoryService","i7.ContentService","i13","i1.AspectListService","i3.TagService","i2.DialogAspectListService","i3.CardViewContentUpdateService","i4.TagService","i2.NodeAspectService","i1.NodePermissionService","i2.NodePermissionService","i3.NodePermissionDialogService","i1.PermissionListService","i2.TreeViewService","i1.TreeViewService","i3.RenditionService","i6.UploadService","i8.NodeActionsService","i3.SecurityOptionsLoaderService","i1.NodeNameTooltipPipe","i2.TagsCreatorComponent","i3.TagActionsComponent","i4.TagListComponent","i5.TagNodeListComponent","i44.ContentActionComponent","i45.FileAutoDownloadComponent","i46.FilterHeaderComponent","i47.LibraryNameColumnComponent","i48.LibraryRoleColumnComponent","i49.LibraryStatusColumnComponent","i50.NameColumnComponent","i51.TrashcanNameColumnComponent","i52.ContentActionListComponent","i53.DocumentListComponent","i54.FileUploadErrorPipe","i55.FileDraggableDirective","i56.ToggleIconDirective","i57.UploadDragAreaComponent","i58.UploadButtonComponent","i59.UploadVersionButtonComponent","i60.FileUploadingListRowComponent","i61.FileUploadingListComponent","i62.FileUploadingDialogComponent","i11.SearchCheckListComponent","i12.SearchChipAutocompleteInputComponent","i13.SearchChipListComponent","i14.EmptySearchResultComponent","i15.SearchFilterComponent","i16.SearchFilterCardComponent","i17.SearchWidgetContainerComponent","i18.SearchTextComponent","i19.SearchFilterAutocompleteChipsComponent","i20.SearchDatetimeRangeComponent","i21.SearchFacetFieldComponent","i22.ResetSearchDirective","i23.SearchDateRangeComponent","i24.SearchFilterMenuCardComponent","i25.SearchFacetChipTabbedComponent","i26.SearchFacetTabbedContentComponent","i27.SearchFilterTabbedComponent","i28.SearchFilterTabDirective","i29.SearchDateRangeTabbedComponent","i30.SearchSortingPickerComponent","i31.SearchSliderComponent","i32.SearchNumberRangeComponent","i33.SearchPanelComponent","i34.SearchRadioComponent","i35.SearchFilterContainerComponent","i36.SearchFormComponent","i37.SearchFilterChipsComponent","i38.SearchWidgetChipComponent","i39.SearchFacetChipComponent","i40.SearchLogicalFilterComponent","i41.SearchPropertiesComponent","i42.SearchComponent","i43.SearchControlComponent","i63.BreadcrumbComponent","i64.DropdownBreadcrumbComponent","i65.ContentNodeSelectorPanelComponent","i66.NameLocationCellComponent","i67.ContentNodeSelectorComponent","i68.DropdownSitesComponent","i69.ShareDialogComponent","i70.NodeSharedDirective","i71.ContentMetadataComponent","i72.ContentMetadataCardComponent","i73.ContentMetadataHeaderComponent","i6.DownloadZipDialogModule","i7.FolderDialogComponent","i8.NodeLockDialogComponent","i9.LibraryDialogComponent","i10.CategorySelectorDialogComponent","i74.NodeLockDirective","i75.NodeCounterDirective","i75.NodeCounterComponent","i76.AutoFocusDirective","i77.CheckAllowableOperationDirective","i78.LibraryFavoriteDirective","i79.LibraryMembershipDirective","i80.NodeDeleteDirective","i81.NodeFavoriteDirective","i82.NodeRestoreDirective","i83.NodeDownloadDirective","i84.AddPermissionPanelComponent","i85.AddPermissionComponent","i86.AddPermissionDialogComponent","i87.NodePathColumnComponent","i88.PermissionContainerComponent","i89.PermissionListComponent","i90.UserNameColumnComponent","i91.UserIconColumnComponent","i92.UserRoleColumnComponent","i93.InheritPermissionDirective","i94.PopOverDirective","i95.VersionUploadComponent","i96.VersionManagerComponent","i97.VersionListComponent","i98.VersionComparisonComponent"],"mappings":"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"}