{"version":3,"file":"alfresco-aca-content.mjs","sources":["../../../../projects/aca-content/src/lib/store/reducers/app.reducer.ts","../../../../projects/aca-content/src/lib/store/effects/app.effects.ts","../../../../projects/aca-content/src/lib/services/content-url.service.ts","../../../../projects/aca-content/src/lib/store/effects/download.effects.ts","../../../../projects/aca-content/src/lib/services/node-actions.service.ts","../../../../projects/aca-content/src/lib/dialogs/node-details/node-information.component.ts","../../../../projects/aca-content/src/lib/dialogs/node-details/node-information.component.html","../../../../projects/aca-content/src/lib/services/content-management.service.ts","../../../../projects/aca-content/src/lib/store/effects/favorite.effects.ts","../../../../projects/aca-content/src/lib/store/effects/node.effects.ts","../../../../projects/aca-content/src/lib/store/effects/viewer.effects.ts","../../../../projects/aca-content/src/lib/utils/aca-search-utils.ts","../../../../projects/aca-content/src/lib/components/search/search-navigation.service.ts","../../../../projects/aca-content/src/lib/store/effects/search.effects.ts","../../../../projects/aca-content/src/lib/store/effects/library.effects.ts","../../../../projects/aca-content/src/lib/store/effects/upload.effects.ts","../../../../projects/aca-content/src/lib/dialogs/node-template/create-from-template.dialog.ts","../../../../projects/aca-content/src/lib/dialogs/node-template/create-from-template.dialog.html","../../../../projects/aca-content/src/lib/services/node-template.service.ts","../../../../projects/aca-content/src/lib/store/effects/template.effects.ts","../../../../projects/aca-content/src/lib/components/context-menu/context-menu-overlay.ts","../../../../projects/aca-content/src/lib/components/context-menu/context-menu-item.component.ts","../../../../projects/aca-content/src/lib/components/context-menu/context-menu-item.component.html","../../../../projects/aca-content/src/lib/components/context-menu/context-menu-outside-event.directive.ts","../../../../projects/aca-content/src/lib/components/context-menu/direction.token.ts","../../../../projects/aca-content/src/lib/components/context-menu/base-context-menu.directive.ts","../../../../projects/aca-content/src/lib/components/context-menu/context-menu.component.ts","../../../../projects/aca-content/src/lib/components/context-menu/context-menu.component.html","../../../../projects/aca-content/src/lib/components/context-menu/custom-context-menu-actions.token.ts","../../../../projects/aca-content/src/lib/components/context-menu/custom-context-menu.component.ts","../../../../projects/aca-content/src/lib/components/context-menu/context-menu.service.ts","../../../../projects/aca-content/src/lib/store/effects/contextmenu.effects.ts","../../../../projects/aca-content/src/lib/store/effects.ts","../../../../projects/aca-content/src/lib/store/app-store.module.ts","../../../../projects/aca-content/src/lib/dialogs/node-location-references/node-location-references.component.ts","../../../../projects/aca-content/src/lib/dialogs/node-location-references/node-location-references.component.html","../../../../projects/aca-content/src/lib/components/common/location-link/location-link.component.ts","../../../../projects/aca-content/src/lib/components/common/location-link/location-link.component.html","../../../../projects/aca-content/src/lib/components/common/logout/logout.component.ts","../../../../projects/aca-content/src/lib/components/common/toggle-shared/toggle-shared.component.ts","../../../../projects/aca-content/src/lib/components/common/toggle-shared/toggle-shared.component.html","../../../../projects/aca-content/src/lib/components/dl-custom-components/datatable-cell-badges/datatable-cell-badges.component.ts","../../../../projects/aca-content/src/lib/components/dl-custom-components/datatable-cell-badges/datatable-cell-badges.component.html","../../../../projects/aca-content/src/lib/components/dl-custom-components/name-column/name-column.component.ts","../../../../projects/aca-content/src/lib/components/dl-custom-components/name-column/name-column.component.html","../../../../projects/aca-content/src/lib/components/info-drawer/comments-tab/external-node-permission-comments-tab.service.ts","../../../../projects/aca-content/src/lib/components/info-drawer/comments-tab/comments-tab.component.ts","../../../../projects/aca-content/src/lib/components/info-drawer/library-metadata-tab/library-metadata-form.component.ts","../../../../projects/aca-content/src/lib/components/info-drawer/library-metadata-tab/library-metadata-form.component.html","../../../../projects/aca-content/src/lib/components/info-drawer/library-metadata-tab/library-metadata-tab.component.ts","../../../../projects/aca-content/src/lib/components/info-drawer/metadata-tab/metadata-tab.component.ts","../../../../projects/aca-content/src/lib/components/info-drawer/versions-tab/versions-tab.component.ts","../../../../projects/aca-content/src/lib/components/toolbar/toggle-edit-offline/toggle-edit-offline.component.ts","../../../../projects/aca-content/src/lib/components/toolbar/toggle-favorite-library/toggle-favorite-library.component.ts","../../../../projects/aca-content/src/lib/components/toolbar/toggle-favorite/toggle-favorite.component.ts","../../../../projects/aca-content/src/lib/components/toolbar/toggle-info-drawer/toggle-info-drawer.component.ts","../../../../projects/aca-content/src/lib/components/toolbar/toggle-join-library/toggle-join-library-button.component.ts","../../../../projects/aca-content/src/lib/components/toolbar/toggle-join-library/toggle-join-library-menu.component.ts","../../../../projects/aca-content/src/lib/components/toolbar/view-node/view-node.component.ts","../../../../projects/aca-content/src/lib/directives/document-list.directive.ts","../../../../projects/aca-content/src/lib/components/files/files.component.ts","../../../../projects/aca-content/src/lib/components/files/files.component.html","../../../../projects/aca-content/src/lib/components/libraries-base/libraries-base.component.ts","../../../../projects/aca-content/src/lib/components/libraries-base/libraries-base.component.html","../../../../projects/aca-content/src/lib/components/libraries/libraries.component.ts","../../../../projects/aca-content/src/lib/components/libraries/libraries.component.html","../../../../projects/aca-content/src/lib/components/favorite-libraries/favorite-libraries.component.ts","../../../../projects/aca-content/src/lib/components/favorite-libraries/favorite-libraries.component.html","../../../../projects/aca-content/src/lib/components/search/search-filter.service.ts","../../../../projects/aca-content/src/lib/components/search/search-libraries-results/search-libraries-query-builder.service.ts","../../../../projects/aca-content/src/lib/components/search/search-execution.service.ts","../../../../projects/aca-content/src/lib/components/search/search-in-menu/search-in-menu.component.ts","../../../../projects/aca-content/src/lib/components/search/search-in-menu/search-in-menu.component.html","../../../../projects/aca-content/src/lib/components/search/search-input/search-input.component.ts","../../../../projects/aca-content/src/lib/components/search/search-input/search-input.component.html","../../../../projects/aca-content/src/lib/components/dl-custom-components/thumbnail-column/thumbnail-column.component.ts","../../../../projects/aca-content/src/lib/components/dl-custom-components/thumbnail-column/thumbnail-column.component.html","../../../../projects/aca-content/src/lib/components/search/search-action-menu/search-action-menu.component.ts","../../../../projects/aca-content/src/lib/components/search/search-action-menu/search-action-menu.component.html","../../../../projects/aca-content/src/lib/components/bulk-actions-dropdown/bulk-actions-dropdown.component.ts","../../../../projects/aca-content/src/lib/components/bulk-actions-dropdown/bulk-actions-dropdown.component.html","../../../../projects/aca-content/src/lib/pipes/is-feature-supported.pipe.ts","../../../../projects/aca-content/src/lib/services/saved-searches-context.service.ts","../../../../projects/aca-content/src/lib/components/search/search-save/dialog/unique-search-name-validator.ts","../../../../projects/aca-content/src/lib/components/search/search-save/dialog/save-search-dialog.component.ts","../../../../projects/aca-content/src/lib/components/search/search-save/dialog/save-search-dialog.component.html","../../../../projects/aca-content/src/lib/components/search/search-save/directive/save-search.directive.ts","../../../../projects/aca-content/src/lib/components/search/search-results/search-results.component.ts","../../../../projects/aca-content/src/lib/components/search/search-results/search-results.component.html","../../../../projects/aca-content/src/lib/components/search/search-libraries-results/search-libraries-results.component.ts","../../../../projects/aca-content/src/lib/components/search/search-libraries-results/search-libraries-results.component.html","../../../../projects/aca-content/src/lib/components/favorites/favorites.component.ts","../../../../projects/aca-content/src/lib/components/favorites/favorites.component.html","../../../../projects/aca-content/src/lib/components/recent-files/recent-files.component.ts","../../../../projects/aca-content/src/lib/components/recent-files/recent-files.component.html","../../../../projects/aca-content/src/lib/components/shared-files/shared-files.component.ts","../../../../projects/aca-content/src/lib/components/shared-files/shared-files.component.html","../../../../projects/aca-content/src/lib/components/details/details.component.ts","../../../../projects/aca-content/src/lib/components/details/details.component.html","../../../../projects/aca-content/src/lib/components/home/home.component.ts","../../../../projects/aca-content/src/lib/components/view-profile/view-profile.component.ts","../../../../projects/aca-content/src/lib/components/view-profile/view-profile.component.html","../../../../projects/aca-content/src/lib/components/view-profile/view-profile.guard.ts","../../../../projects/aca-content/src/lib/components/shared-link-view/shared-link-view.component.ts","../../../../projects/aca-content/src/lib/components/shared-link-view/shared-link-view.component.html","../../../../projects/aca-content/src/lib/components/trashcan/trashcan.component.ts","../../../../projects/aca-content/src/lib/components/trashcan/trashcan.component.html","../../../../projects/aca-content/src/lib/components/search/search-save/dialog/delete/saved-search-delete-dialog.component.ts","../../../../projects/aca-content/src/lib/components/search/search-save/dialog/delete/saved-search-delete-dialog.component.html","../../../../projects/aca-content/src/lib/components/search/search-save/dialog/edit/saved-search-edit-dialog.component.ts","../../../../projects/aca-content/src/lib/components/search/search-save/dialog/edit/saved-search-edit-dialog.component.html","../../../../projects/aca-content/src/lib/components/search/search-save/list/saved-searches-list-ui.service.ts","../../../../projects/aca-content/src/lib/components/search/search-save/list/smart-list/saved-searches-list-schema.ts","../../../../projects/aca-content/src/lib/components/search/search-save/list/ui-list/saved-searches-list.ui-component.ts","../../../../projects/aca-content/src/lib/components/search/search-save/list/ui-list/saved-searches-list.ui-component.html","../../../../projects/aca-content/src/lib/components/search/search-save/list/smart-list/saved-searches-smart-list.component.ts","../../../../projects/aca-content/src/lib/components/search/search-save/list/smart-list/saved-searches-smart-list.component.html","../../../../projects/aca-content/src/lib/components/library-list/library-list.component.ts","../../../../projects/aca-content/src/lib/components/library-list/library-list.component.html","../../../../projects/aca-content/src/lib/components/repository-view/repository-view.component.ts","../../../../projects/aca-content/src/lib/components/repository-view/repository-view.component.html","../../../../projects/aca-content/src/lib/aca-content.routes.ts","../../../../projects/aca-content/src/lib/components/upload-files-dialog/upload-files-dialog.component.ts","../../../../projects/aca-content/src/lib/components/upload-files-dialog/upload-files-dialog.component.html","../../../../projects/aca-content/src/lib/components/dl-custom-components/tags-column/tags-column.component.ts","../../../../projects/aca-content/src/lib/components/common/user-info/user-info.component.ts","../../../../projects/aca-content/src/lib/components/common/user-info/user-info.component.html","../../../../projects/aca-content/src/lib/components/sidenav/components/sidenav-header.component.ts","../../../../projects/aca-content/src/lib/components/sidenav/components/sidenav-header.component.html","../../../../projects/aca-content/src/lib/components/sidenav/directives/action.directive.ts","../../../../projects/aca-content/src/lib/components/sidenav/directives/active-link.directive.ts","../../../../projects/aca-content/src/lib/components/sidenav/components/expand-menu.component.ts","../../../../projects/aca-content/src/lib/components/sidenav/components/expand-menu.component.html","../../../../projects/aca-content/src/lib/components/sidenav/sidenav.component.ts","../../../../projects/aca-content/src/lib/components/sidenav/sidenav.component.html","../../../../projects/aca-content/src/lib/components/sidenav/user-menu/user-menu.component.ts","../../../../projects/aca-content/src/lib/components/sidenav/user-menu/user-menu.component.html","../../../../projects/aca-content/src/lib/components/search/search-results-row/search-results-row.component.ts","../../../../projects/aca-content/src/lib/components/search/search-results-row/search-results-row.component.html","../../../../projects/aca-content/src/lib/components/knowledge-discovery/knowledge-discovery-sidenav.component.ts","../../../../projects/aca-content/src/lib/components/knowledge-discovery/knowledge-discovery-sidenav.component.html","../../../../projects/aca-content/src/lib/components/search/search-save/sidenav/save-search-sidenav.component.ts","../../../../projects/aca-content/src/lib/components/search/search-save/sidenav/save-search-sidenav.component.html","../../../../projects/aca-content/src/lib/aca-content.module.ts","../../../../projects/aca-content/src/lib/store/initial-state.ts","../../../../projects/aca-content/src/public-api.ts","../../../../projects/aca-content/src/alfresco-aca-content.ts"],"sourcesContent":["/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Action } from '@ngrx/store';\nimport {\n  AppState,\n  NodeActionTypes,\n  SetUserProfileAction,\n  SetCurrentFolderAction,\n  SetCurrentUrlAction,\n  SetSelectedNodesAction,\n  SetRepositoryInfoAction,\n  SetInfoDrawerStateAction,\n  SetInfoDrawerMetadataAspectAction,\n  SetCurrentNodeVersionAction,\n  SetFileUploadingDialogAction,\n  SetInfoDrawerPreviewStateAction,\n  AppActionTypes,\n  ShowLoaderAction,\n  INITIAL_APP_STATE,\n  SetSearchItemsTotalCountAction\n} from '@alfresco/aca-shared/store';\n\nexport function appReducer(state: AppState = INITIAL_APP_STATE, action: Action): AppState {\n  let newState: AppState;\n\n  switch (action.type) {\n    case NodeActionTypes.SetSelection:\n      newState = updateSelectedNodes(state, action as SetSelectedNodesAction);\n      break;\n    case AppActionTypes.SetUserProfile:\n      newState = updateUser(state, action as SetUserProfileAction);\n      break;\n    case AppActionTypes.SetCurrentFolder:\n      newState = updateCurrentFolder(state, action as SetCurrentFolderAction);\n      break;\n    case AppActionTypes.SetCurrentVersion:\n      newState = updateCurrentNodeVersion(state, action as SetCurrentNodeVersionAction);\n      break;\n    case AppActionTypes.SetCurrentUrl:\n      newState = updateCurrentUrl(state, action as SetCurrentUrlAction);\n      break;\n    case AppActionTypes.ToggleInfoDrawer:\n      newState = toggleInfoDrawer(state);\n      break;\n    case AppActionTypes.SetInfoDrawerState:\n      newState = setInfoDrawer(state, action as SetInfoDrawerStateAction);\n      break;\n    case AppActionTypes.SetInfoDrawerMetadataAspect:\n      newState = setInfoDrawerAspect(state, action as SetInfoDrawerMetadataAspectAction);\n      break;\n    case AppActionTypes.SetRepositoryInfo:\n      newState = updateRepositoryStatus(state, action as SetRepositoryInfoAction);\n      break;\n    case AppActionTypes.SetFileUploadingDialog:\n      newState = setUploadDialogVisibility(state, action as SetFileUploadingDialogAction);\n      break;\n    case AppActionTypes.ShowInfoDrawerPreview:\n      newState = showInfoDrawerPreview(state);\n      break;\n    case AppActionTypes.SetInfoDrawerPreviewState:\n      newState = setInfoDrawerPreview(state, action as SetInfoDrawerPreviewStateAction);\n      break;\n    case AppActionTypes.ShowLoaderAction:\n      newState = showLoader(state, action as ShowLoaderAction);\n      break;\n    case AppActionTypes.SetSearchItemsTotalCount:\n      newState = {\n        ...state,\n        searchItemsTotalCount: (action as SetSearchItemsTotalCountAction).payload\n      };\n      break;\n    default:\n      newState = { ...state };\n  }\n\n  return newState;\n}\n\nfunction updateUser(state: AppState, action: SetUserProfileAction): AppState {\n  return { ...state, user: { ...action.payload } };\n}\n\nfunction updateCurrentFolder(state: AppState, action: SetCurrentFolderAction) {\n  const newState = { ...state };\n  newState.navigation.currentFolder = action.payload;\n  return newState;\n}\n\nfunction updateCurrentNodeVersion(state: AppState, action: SetCurrentNodeVersionAction) {\n  const newState = { ...state };\n  newState.currentNodeVersion = action.payload;\n  return newState;\n}\n\nfunction updateCurrentUrl(state: AppState, action: SetCurrentUrlAction) {\n  const newState = { ...state };\n  newState.navigation.url = action.payload;\n  return newState;\n}\n\nfunction toggleInfoDrawer(state: AppState) {\n  const newState = { ...state };\n\n  let value = state.infoDrawerOpened;\n  if (state.selection.isEmpty) {\n    value = false;\n  } else {\n    value = !value;\n  }\n\n  newState.infoDrawerOpened = value;\n\n  return newState;\n}\n\nfunction showInfoDrawerPreview(state: AppState) {\n  const newState = { ...state };\n\n  let value = state.infoDrawerPreview;\n  if (state.selection.isEmpty) {\n    value = false;\n  } else {\n    value = !value;\n  }\n\n  newState.infoDrawerPreview = value;\n\n  return newState;\n}\n\nfunction updateSelectedNodes(state: AppState, action: SetSelectedNodesAction): AppState {\n  const newState = { ...state };\n  const nodes = [...action.payload];\n  const count = nodes.length;\n  const isEmpty = nodes.length === 0;\n\n  let first = null;\n  let last = null;\n  let file = null;\n  let folder = null;\n  let library = null;\n\n  if (nodes.length > 0) {\n    first = nodes[0];\n    last = nodes[nodes.length - 1];\n\n    if (nodes.length === 1) {\n      file = nodes.find(\n        (entity: any) =>\n          // workaround Shared\n          !!(entity.entry.isFile || entity.entry.nodeId || entity.entry.sharedByUser)\n      );\n      folder = nodes.find((entity: any) => entity.entry.isFolder);\n    }\n  }\n\n  const libraries: any[] = [...action.payload].filter((node: any) => node.isLibrary);\n  if (libraries.length === 1) {\n    library = libraries[0];\n  }\n\n  if (isEmpty) {\n    newState.infoDrawerOpened = false;\n  }\n\n  newState.selection = {\n    count,\n    nodes,\n    isEmpty,\n    first,\n    last,\n    file,\n    folder,\n    libraries,\n    library\n  };\n  return newState;\n}\n\nconst setInfoDrawer = (state: AppState, action: SetInfoDrawerStateAction) => ({\n  ...state,\n  infoDrawerOpened: action.payload\n});\n\nconst setInfoDrawerPreview = (state: AppState, action: SetInfoDrawerPreviewStateAction) => ({\n  ...state,\n  infoDrawerPreview: action.payload\n});\n\nconst setInfoDrawerAspect = (state: AppState, action: SetInfoDrawerMetadataAspectAction) => ({\n  ...state,\n  infoDrawerMetadataAspect: action.payload\n});\n\nfunction updateRepositoryStatus(state: AppState, action: SetRepositoryInfoAction) {\n  const newState = { ...state };\n  newState.repository = action.payload;\n  return newState;\n}\n\nfunction setUploadDialogVisibility(state: AppState, action: SetFileUploadingDialogAction): AppState {\n  const newState = { ...state };\n  newState.fileUploadingDialog = action.payload;\n  return newState;\n}\n\nfunction showLoader(state: AppState, action: ShowLoaderAction): AppState {\n  const newState = { ...state };\n  newState.showLoader = action.payload;\n  return newState;\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { inject, Injectable } from '@angular/core';\nimport { map } from 'rxjs/operators';\nimport { AppActionTypes, ReloadDocumentListAction, ResetSelectionAction } from '@alfresco/aca-shared/store';\nimport { DocumentListService } from '@alfresco/adf-content-services';\n\n@Injectable()\nexport class AppEffects {\n  actions$ = inject(Actions);\n  documentListService = inject(DocumentListService);\n\n  reload = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType<ReloadDocumentListAction>(AppActionTypes.ReloadDocumentList),\n        map(() => {\n          this.documentListService.reload();\n        })\n      ),\n    { dispatch: false }\n  );\n\n  resetSelection = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType<ResetSelectionAction>(AppActionTypes.ResetSelection),\n        map(() => {\n          this.documentListService.resetSelection();\n        })\n      ),\n    { dispatch: false }\n  );\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { inject, Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { AppStore, getRepositoryStatus } from '@alfresco/aca-shared/store';\nimport { take, map, catchError, mergeMap } from 'rxjs/operators';\nimport { Store } from '@ngrx/store';\nimport { ContentApiService } from '@alfresco/aca-shared';\nimport { DirectAccessUrlEntry } from '@alfresco/js-api';\nimport { ContentVersionService } from '@alfresco/adf-content-services';\n\n@Injectable({ providedIn: 'root' })\nexport class ContentUrlService extends ContentVersionService {\n  private readonly store = inject(Store<AppStore>);\n  private readonly contentApiService = inject(ContentApiService);\n\n  getNodeContentUrl(nodeId: string, attachment = true): Observable<string> {\n    return this.isDirectAccessUrlEnabled().pipe(\n      mergeMap((dauEnabled) => {\n        if (dauEnabled) {\n          return this.contentApiService.requestNodeDirectAccessUrl(nodeId).pipe(\n            map((dauObj: DirectAccessUrlEntry) => dauObj.entry.contentUrl),\n            catchError(() => of(this.contentApiService.getContentUrl(nodeId, true)))\n          );\n        } else {\n          return of(this.contentApiService.getContentUrl(nodeId, attachment));\n        }\n      })\n    );\n  }\n\n  getVersionContentUrl(nodeId: string, versionId: string, attachment = true): Observable<string> {\n    return this.isDirectAccessUrlEnabled().pipe(\n      mergeMap((dauEnabled) => {\n        if (dauEnabled) {\n          return this.contentApiService.requestVersionDirectAccessUrl(nodeId, versionId).pipe(\n            map((dauObj: DirectAccessUrlEntry) => dauObj.entry.contentUrl),\n            catchError(() => of(this.contentApiService.getVersionContentUrl(nodeId, versionId, true)))\n          );\n        } else {\n          return of(this.contentApiService.getVersionContentUrl(nodeId, versionId, attachment));\n        }\n      })\n    );\n  }\n\n  private isDirectAccessUrlEnabled(): Observable<boolean> {\n    return this.store.select(getRepositoryStatus).pipe(\n      take(1),\n      map((repository) => !!repository?.status?.isDirectAccessUrlEnabled)\n    );\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { AppStore, DownloadNodesAction, getAppSelection, getCurrentVersion, NodeActionTypes, NodeInfo } from '@alfresco/aca-shared/store';\nimport { DownloadZipDialogComponent } from '@alfresco/adf-content-services';\nimport { NodeEntry, Version } from '@alfresco/js-api';\nimport { inject, Injectable } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { map, take } from 'rxjs/operators';\nimport { ContentApiService } from '@alfresco/aca-shared';\nimport { ContentUrlService } from '../../services/content-url.service';\n\n@Injectable()\nexport class DownloadEffects {\n  private readonly store = inject(Store<AppStore>);\n  private readonly actions$ = inject(Actions);\n  private readonly contentApi = inject(ContentApiService);\n  private readonly dialog = inject(MatDialog);\n  private readonly contentUrlService = inject(ContentUrlService);\n\n  downloadNode$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType<DownloadNodesAction>(NodeActionTypes.Download),\n        map((action) => {\n          if (action.payload?.length > 0) {\n            this.downloadNodes(action.payload);\n          } else {\n            this.store\n              .select(getAppSelection)\n              .pipe(take(1))\n              .subscribe((selection) => {\n                if (selection && !selection.isEmpty) {\n                  this.store\n                    .select(getCurrentVersion)\n                    .pipe(take(1))\n                    .subscribe((version) => {\n                      if (version) {\n                        this.downloadFileVersion(selection.nodes[0].entry, version.entry);\n                      } else {\n                        this.downloadNodes(selection.nodes, action.configuration?.focusedElementOnCloseSelector);\n                      }\n                    });\n                }\n              });\n          }\n        })\n      ),\n    { dispatch: false }\n  );\n\n  private downloadNodes(toDownload: Array<NodeEntry>, focusedElementSelector?: string) {\n    const nodes = toDownload.map((node) => {\n      const { id, nodeId, name, isFile, isFolder } = node.entry as any;\n\n      return {\n        id: this.isSharedLinkPreview ? id : nodeId || id,\n        name,\n        isFile,\n        isFolder\n      };\n    });\n\n    if (!nodes || nodes.length === 0) {\n      return;\n    }\n\n    if (nodes.length === 1) {\n      this.downloadNode(nodes[0], focusedElementSelector);\n    } else {\n      this.downloadZip(nodes, focusedElementSelector);\n    }\n  }\n\n  private downloadNode(node: NodeInfo, focusedElementSelector?: string) {\n    if (node) {\n      if (node.isFolder) {\n        this.downloadZip([node], focusedElementSelector);\n      } else {\n        this.downloadFile(node);\n      }\n    }\n  }\n\n  private downloadFile(node: NodeInfo) {\n    if (node && !this.isSharedLinkPreview) {\n      this.contentUrlService.getNodeContentUrl(node.id, true).subscribe((contentUrl) => {\n        this.download(contentUrl, node.name);\n      });\n    }\n\n    if (node && this.isSharedLinkPreview) {\n      this.download(this.contentApi.getSharedLinkContent(node.id, false), node.name);\n    }\n  }\n\n  private downloadFileVersion(node: NodeInfo, version: Version) {\n    if (node && version) {\n      this.contentUrlService.getVersionContentUrl(node.id, version.id, true).subscribe((contentUrl) => {\n        this.download(contentUrl, node.name);\n      });\n    }\n  }\n\n  private downloadZip(nodes: Array<NodeInfo>, focusedElementSelector?: string) {\n    if (nodes && nodes.length > 0) {\n      const nodeIds = nodes.map((node) => node.id);\n\n      this.dialog\n        .open(DownloadZipDialogComponent, {\n          width: '600px',\n          disableClose: true,\n          data: {\n            nodeIds\n          }\n        })\n        .afterClosed()\n        .subscribe(() => this.focusAfterClose(focusedElementSelector));\n    }\n  }\n\n  private 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  }\n\n  private get isSharedLinkPreview() {\n    return location.href.includes('/preview/s/');\n  }\n\n  private focusAfterClose(focusedElementSelector: string): void {\n    if (focusedElementSelector) {\n      document.querySelector<HTMLElement>(focusedElementSelector)?.focus();\n    }\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { inject, Injectable } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { from, Observable, of, Subject, zip } from 'rxjs';\nimport { ThumbnailService, TranslationService } from '@alfresco/adf-core';\nimport {\n  AlfrescoApiService,\n  ContentNodeDialogService,\n  ContentNodeSelectorComponent,\n  ContentNodeSelectorComponentData,\n  ContentService,\n  DocumentListService,\n  NodeAction,\n  ShareDataRow\n} from '@alfresco/adf-content-services';\nimport {\n  LazyApi,\n  Node,\n  NodeChildAssociationEntry,\n  NodeChildAssociationPaging,\n  NodeEntry,\n  NodesApi,\n  SharedLink,\n  Site,\n  SitePaging,\n  SitePagingList\n} from '@alfresco/js-api';\nimport { ContentApiService } from '@alfresco/aca-shared';\nimport { catchError, map, mergeMap } from 'rxjs/operators';\n\ntype BatchOperationType = Extract<NodeAction, 'COPY' | 'MOVE' | 'LINK'>;\n\nexport interface LinkOperationResult {\n  succeeded: NodeEntry[];\n  failed: Error[];\n}\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class NodeActionsService {\n  private readonly contentService = inject(ContentService);\n  private readonly contentApi = inject(ContentApiService);\n  private readonly dialog = inject(MatDialog);\n  private readonly documentListService = inject(DocumentListService);\n  private readonly apiService = inject(AlfrescoApiService);\n  private readonly translation = inject(TranslationService);\n  private readonly thumbnailService = inject(ThumbnailService);\n\n  contentCopied: Subject<NodeEntry[]> = new Subject<NodeEntry[]>();\n  contentMoved: Subject<any> = new Subject<any>();\n  contentLinked = new Subject<LinkOperationResult>();\n  moveDeletedEntries: any[] = [];\n  isSitesDestinationAvailable = false;\n\n  @LazyApi((self: NodeActionsService) => new NodesApi(self.apiService.getInstance()))\n  declare nodesApi: NodesApi;\n\n  /**\n   * Copy node list\n   *\n   * @param contentEntities nodes to copy\n   * @param permission permission which is needed to apply the action\n   * @param focusedElementOnCloseSelector element's selector which should be autofocused after closing modal\n   */\n  copyNodes(contentEntities: any[], permission?: string, focusedElementOnCloseSelector?: string): Subject<string> {\n    return this.doBatchOperation(NodeAction.COPY, contentEntities, permission, focusedElementOnCloseSelector);\n  }\n\n  /**\n   * Create links for node list\n   *\n   * @param contentEntities nodes to create links for\n   * @param focusedElementOnCloseSelector element's selector which should be autofocused after closing modal\n   */\n  createLinkNodes(contentEntities: any[], focusedElementOnCloseSelector?: string): Subject<string> {\n    return this.doBatchOperation(NodeAction.LINK, contentEntities, undefined, focusedElementOnCloseSelector);\n  }\n\n  /**\n   * Move node list\n   *\n   * @param contentEntities nodes to move\n   * @param permission permission which is needed to apply the action\n   * @param focusedElementOnCloseSelector element's selector which should be autofocused after closing modal\n   */\n  moveNodes(contentEntities: any[], permission?: string, focusedElementOnCloseSelector?: string): Subject<string> {\n    return this.doBatchOperation(NodeAction.MOVE, contentEntities, permission, focusedElementOnCloseSelector);\n  }\n\n  /**\n   * General method for performing the given operation (copy|move) to multiple nodes\n   *\n   * @param action the action to perform (copy|move)\n   * @param contentEntities the contentEntities which have to have the action performed on\n   * @param permission permission which is needed to apply the action\n   * @param focusedElementOnCloseSelector element's selector which should be autofocused after closing modal\n   */\n  doBatchOperation(action: BatchOperationType, contentEntities: any[], permission?: string, focusedElementOnCloseSelector?: string): Subject<string> {\n    const observable: Subject<string> = new Subject<string>();\n\n    if (!this.isEntryEntitiesArray(contentEntities)) {\n      observable.error(new Error(JSON.stringify({ error: { statusCode: 400 } })));\n    } else if (this.checkPermission(action, contentEntities, permission)) {\n      const destinationSelection = this.getContentNodeSelection(action, contentEntities, focusedElementOnCloseSelector);\n      destinationSelection.subscribe((selections: Node[]) => {\n        const contentEntry = contentEntities[0].entry;\n        // Check if there's nodeId for Shared Files\n        const contentEntryId = contentEntry.nodeId || contentEntry.id;\n        const type = contentEntry.isFolder ? 'folder' : 'content';\n        const batch: any[] = [];\n\n        // consider only first item in the selection\n        const selection = selections[0];\n        let action$: Observable<any>;\n\n        if (action === NodeAction.MOVE && contentEntities.length === 1 && type === 'content') {\n          action$ = this.documentListService.moveNode(contentEntryId, selection.id);\n        } else {\n          contentEntities.forEach((node) => {\n            // batch.push(this.copyNodeAction(node.entry, selection.id));\n            batch.push(this[`${action.toLowerCase()}NodeAction`](node.entry, selection.id));\n          });\n          action$ = zip(...batch);\n        }\n\n        action$.subscribe((newContent) => {\n          observable.next(`OPERATION.SUCCESS.${type.toUpperCase()}.${action.toUpperCase()}`);\n\n          const processedData = this.processResponse(newContent);\n          if (action === NodeAction.COPY) {\n            this.contentCopied.next(processedData.succeeded);\n          } else if (action === NodeAction.MOVE) {\n            this.contentMoved.next(processedData);\n          } else if (action === NodeAction.LINK) {\n            this.contentLinked.next(processedData);\n          }\n\n          observable.complete();\n        }, observable.error.bind(observable));\n      });\n    } else {\n      observable.error(new Error(JSON.stringify({ error: { statusCode: 403 } })));\n    }\n\n    return observable;\n  }\n\n  isEntryEntitiesArray(contentEntities: any[]): boolean {\n    if (contentEntities?.length) {\n      const nonEntryNode = contentEntities.find((node) => !(node?.entry?.nodeId || node?.entry?.id));\n      return !nonEntryNode;\n    }\n    return false;\n  }\n\n  checkPermission(action: BatchOperationType, contentEntities: any[], permission?: string) {\n    const notAllowedNode = contentEntities.find((node) => !this.isActionAllowed(action, node.entry, permission));\n    return !notAllowedNode;\n  }\n\n  getEntryParentId(nodeEntry: Node) {\n    let entryParentId = '';\n\n    if (nodeEntry.parentId) {\n      entryParentId = nodeEntry.parentId;\n    } else if (nodeEntry.path?.elements?.length) {\n      entryParentId = nodeEntry.path.elements[nodeEntry.path.elements.length - 1].id;\n    }\n\n    return entryParentId;\n  }\n\n  getContentNodeSelection(action: NodeAction, contentEntities: NodeEntry[], focusedElementOnCloseSelector?: string): Subject<Node[]> {\n    this.isSitesDestinationAvailable = false;\n    const data = this.buildContentNodeSelectorData(action, contentEntities);\n\n    this.dialog\n      .open(ContentNodeSelectorComponent, {\n        data,\n        panelClass: 'adf-content-node-selector-dialog',\n        width: '630px',\n        role: 'dialog'\n      })\n      .afterClosed()\n      .subscribe(() => this.focusAfterClose(focusedElementOnCloseSelector));\n\n    data.select.subscribe({\n      complete: this.close.bind(this)\n    });\n\n    return data.select;\n  }\n\n  protected buildContentNodeSelectorData(action: NodeAction, contentEntities: NodeEntry[]): ContentNodeSelectorComponentData {\n    const currentParentFolderId = this.getEntryParentId(contentEntities[0].entry);\n\n    const customDropdown = new SitePaging({\n      list: {\n        entries: [\n          {\n            entry: {\n              guid: '-my-',\n              title: this.translation.instant('APP.BROWSE.PERSONAL.SIDENAV_LINK.LABEL')\n            } as Site\n          },\n          {\n            entry: {\n              guid: '-mysites-',\n              title: this.translation.instant('APP.BROWSE.LIBRARIES.MENU.MY_LIBRARIES.SIDENAV_LINK.LABEL')\n            } as Site\n          },\n          {\n            entry: {\n              guid: '-root-',\n              title: this.translation.instant('APP.BROWSE.REPOSITORY_VIEW.TITLE')\n            } as Site\n          }\n        ]\n      } as SitePagingList\n    });\n\n    return {\n      selectionMode: 'single',\n      title: this.getTitleTranslation(action, contentEntities),\n      currentFolderId: currentParentFolderId,\n      actionName: action,\n      dropdownHideMyFiles: true,\n      dropdownSiteList: customDropdown,\n      rowFilter: this.rowFilter.bind(this),\n      imageResolver: this.imageResolver.bind(this),\n      isSelectionValid: this.canCopyMoveInsideIt.bind(this),\n      breadcrumbTransform: this.customizeBreadcrumb.bind(this),\n      select: new Subject<Node[]>(),\n      excludeSiteContent: ContentNodeDialogService.nonDocumentSiteContent,\n      showFilesInResult: false\n    };\n  }\n\n  getTitleTranslation(action: string, nodes: NodeEntry[] = []): string {\n    let keyPrefix = 'ITEMS';\n    let name = '';\n\n    if (nodes.length === 1 && nodes[0].entry.name) {\n      name = nodes[0].entry.name;\n      keyPrefix = 'ITEM';\n    }\n\n    const number = nodes.length;\n    return this.translation.instant(`NODE_SELECTOR.${action.toUpperCase()}_${keyPrefix}`, { name, number });\n  }\n\n  protected canCopyMoveInsideIt(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  close() {\n    this.dialog.closeAll();\n  }\n\n  // todo: review this approach once 5.2.3 is out\n  private customizeBreadcrumb(node: Node) {\n    if (node?.path?.elements) {\n      const elements = node.path.elements;\n\n      if (elements.length > 1) {\n        if (elements[1].name === 'User Homes') {\n          elements.splice(0, 2);\n\n          // make sure first item is 'Personal Files'\n          if (elements[0]) {\n            elements[0].name = this.translation.instant('APP.BROWSE.PERSONAL.TITLE');\n            elements[0].id = '-my-';\n          } else {\n            node.name = this.translation.instant('APP.BROWSE.PERSONAL.TITLE');\n          }\n        } else if (elements[1].name === 'Sites') {\n          this.normalizeSitePath(node);\n        }\n      } else if (elements.length === 1) {\n        if (node.name === 'Sites') {\n          node.name = this.translation.instant('APP.BROWSE.LIBRARIES.MENU.MY_LIBRARIES.TITLE');\n          elements.splice(0, 1);\n        }\n      }\n    } else if (node === null && this.isSitesDestinationAvailable) {\n      node = {\n        name: this.translation.instant('APP.BROWSE.LIBRARIES.MENU.MY_LIBRARIES.TITLE'),\n        path: { elements: [] }\n      } as any;\n    }\n\n    return node;\n  }\n\n  // todo: review this approach once 5.2.3 is out\n  private normalizeSitePath(node: Node) {\n    const elements = node.path.elements;\n\n    // remove 'Company Home'\n    elements.splice(0, 1);\n\n    // replace first item with 'File Libraries'\n    elements[0].name = this.translation.instant('APP.BROWSE.LIBRARIES.MENU.MY_LIBRARIES.TITLE');\n    elements[0].id = '-mysites-';\n\n    if (this.isSiteContainer(node)) {\n      // rename 'documentLibrary' entry to the target site display name\n      // clicking on the breadcrumb entry loads the site content\n      node.name = elements[1].name;\n\n      // remove the site entry\n      elements.splice(1, 1);\n    } else {\n      // remove 'documentLibrary' in the middle of the path\n      const docLib = elements.findIndex((el) => el.name === 'documentLibrary');\n      if (docLib > -1) {\n        elements.splice(docLib, 1);\n      }\n    }\n  }\n\n  isSiteContainer(node: Node): boolean {\n    if (node?.aspectNames?.length > 0) {\n      return node.aspectNames.indexOf('st:siteContainer') >= 0;\n    }\n    return false;\n  }\n\n  copyNodeAction(nodeEntry: any, selectionId: string): Observable<any> {\n    if (nodeEntry.isFolder) {\n      return this.copyFolderAction(nodeEntry, selectionId);\n    } else {\n      // any other type is treated as 'content'\n      return this.copyContentAction(nodeEntry, selectionId);\n    }\n  }\n\n  linkNodeAction(nodeEntry: Node | SharedLink, destinationFolderId: string): Observable<NodeEntry> {\n    const sourceNodeId = (nodeEntry as SharedLink).nodeId || nodeEntry.id;\n    const isFolder = (nodeEntry as Node).isFolder ?? false;\n    const baseName = this.translation.instant('NODE_SELECTOR.LINK_NAME', { name: nodeEntry.name });\n    const linkName = baseName.endsWith('.url') ? baseName : `${baseName}.url`;\n    const nodeBody = {\n      name: linkName,\n      nodeType: isFolder ? 'app:folderlink' : 'app:filelink',\n      properties: { 'cm:destination': sourceNodeId, 'cm:description': linkName, 'cm:title': linkName }\n    };\n    return from(this.nodesApi.createNode(destinationFolderId, nodeBody)).pipe(catchError((err) => of(err)));\n  }\n\n  copyContentAction(contentEntry: any, selectionId: string, oldName?: string): Observable<any> {\n    const _oldName = oldName || contentEntry.name;\n    // Check if there's nodeId for Shared Files\n    const contentEntryId = contentEntry.nodeId || contentEntry.id;\n\n    // use local method until new name parameter is added on ADF copyNode\n    return this.copyNode(contentEntryId, selectionId, _oldName).pipe(\n      catchError((err) => {\n        let errStatusCode;\n        try {\n          const {\n            error: { statusCode }\n          } = JSON.parse(err.message);\n          errStatusCode = statusCode;\n        } catch {\n          //\n        }\n\n        if (errStatusCode && errStatusCode === 409) {\n          return this.copyContentAction(contentEntry, selectionId, this.getNewNameFrom(_oldName, contentEntry.name));\n        } else {\n          // do not throw error, to be able to show message in case of partial copy of files\n          return of(err || 'Server error');\n        }\n      })\n    );\n  }\n\n  copyFolderAction(contentEntry: any, selectionId: string): Observable<any> {\n    // Check if there's nodeId for Shared Files\n    const contentEntryId = contentEntry.nodeId || contentEntry.id;\n    let $destinationFolder: Observable<any>;\n    let $childrenToCopy: Observable<any>;\n    let newDestinationFolder;\n\n    return this.copyNode(contentEntryId, selectionId, contentEntry.name).pipe(\n      catchError((err) => {\n        let errStatusCode;\n        try {\n          const {\n            error: { statusCode }\n          } = JSON.parse(err.message);\n          errStatusCode = statusCode;\n        } catch {}\n\n        if (errStatusCode && errStatusCode === 409) {\n          $destinationFolder = this.getChildByName(selectionId, contentEntry.name);\n          $childrenToCopy = this.getNodeChildren(contentEntryId);\n\n          return $destinationFolder.pipe(\n            mergeMap((destination) => {\n              newDestinationFolder = destination;\n              return $childrenToCopy;\n            }),\n            mergeMap((nodesToCopy) => {\n              const batch = [];\n              nodesToCopy.list.entries.forEach((node) => {\n                if (node.entry.isFolder) {\n                  batch.push(this.copyFolderAction(node.entry, newDestinationFolder.entry.id));\n                } else {\n                  batch.push(this.copyContentAction(node.entry, newDestinationFolder.entry.id));\n                }\n              });\n\n              if (!batch.length) {\n                return of({});\n              }\n              return zip(...batch);\n            })\n          );\n        } else {\n          // do not throw error, to be able to show message in case of partial copy of files\n          return of(err || 'Server error');\n        }\n      })\n    );\n  }\n\n  moveNodeAction(nodeEntry, selectionId: string): Observable<any> {\n    this.moveDeletedEntries = [];\n\n    if (nodeEntry.isFolder) {\n      const initialParentId = nodeEntry.parentId;\n\n      return this.moveFolderAction(nodeEntry, selectionId).pipe(\n        mergeMap((newContent) => {\n          // take no extra action, if folder is moved to the same location\n          if (initialParentId === selectionId) {\n            return of(newContent);\n          }\n\n          const flattenResponse = this.flatten(newContent);\n          const processedData = this.processResponse(flattenResponse);\n\n          // else, check if moving this nodeEntry succeeded for ALL of its nodes\n          if (processedData.failed.length === 0) {\n            // check if folder still exists on location\n            return this.getChildByName(initialParentId, nodeEntry.name).pipe(\n              mergeMap((folderOnInitialLocation) => {\n                if (folderOnInitialLocation) {\n                  // Check if there's nodeId for Shared Files\n                  const nodeEntryId = nodeEntry.nodeId || nodeEntry.id;\n                  // delete it from location\n                  return this.contentApi.deleteNode(nodeEntryId).pipe(\n                    mergeMap(() => {\n                      this.moveDeletedEntries.push(nodeEntry);\n                      return of(newContent);\n                    })\n                  );\n                }\n                return of(newContent);\n              })\n            );\n          }\n          return of(newContent);\n        })\n      );\n    } else {\n      // any other type is treated as 'content'\n      return this.moveContentAction(nodeEntry, selectionId);\n    }\n  }\n\n  moveFolderAction(contentEntry, selectionId: string): Observable<any> {\n    // Check if there's nodeId for Shared Files\n    const contentEntryId = contentEntry.nodeId || contentEntry.id;\n    const initialParentId = this.getEntryParentId(contentEntry);\n    let $destinationFolder: Observable<any>;\n    let $childrenToMove: Observable<any>;\n    let newDestinationFolder;\n\n    return this.documentListService.moveNode(contentEntryId, selectionId).pipe(\n      map((itemMoved) => ({ itemMoved, initialParentId })),\n      catchError((err) => {\n        let errStatusCode;\n        try {\n          const {\n            error: { statusCode }\n          } = JSON.parse(err.message);\n          errStatusCode = statusCode;\n        } catch {\n          //\n        }\n\n        if (errStatusCode && errStatusCode === 409) {\n          $destinationFolder = this.getChildByName(selectionId, contentEntry.name);\n          $childrenToMove = this.getNodeChildren(contentEntryId);\n\n          return $destinationFolder.pipe(\n            mergeMap((destination) => {\n              newDestinationFolder = destination;\n              return $childrenToMove;\n            }),\n            mergeMap((childrenToMove) => {\n              const batch: any[] = [];\n              childrenToMove.list.entries.forEach((node) => {\n                if (node.entry.isFolder) {\n                  batch.push(this.moveFolderAction(node.entry, newDestinationFolder.entry.id));\n                } else {\n                  batch.push(this.moveContentAction(node.entry, newDestinationFolder.entry.id));\n                }\n              });\n\n              if (!batch.length) {\n                return of(batch);\n              }\n              return zip(...batch);\n            })\n          );\n        } else {\n          // do not throw error, to be able to show message in case of partial move of files\n          return of(err);\n        }\n      })\n    );\n  }\n\n  moveContentAction(contentEntry: any, selectionId: string) {\n    // Check if there's nodeId for Shared Files\n    const contentEntryId = contentEntry.nodeId || contentEntry.id;\n    const initialParentId = this.getEntryParentId(contentEntry);\n\n    return this.documentListService.moveNode(contentEntryId, selectionId).pipe(\n      map((itemMoved) => ({ itemMoved, initialParentId })),\n      catchError((err) =>\n        // do not throw error, to be able to show message in case of partial move of files\n        of(err)\n      )\n    );\n  }\n\n  getChildByName(parentId: string, name: string): Subject<NodeChildAssociationEntry> {\n    const matchedNodes = new Subject<any>();\n\n    this.getNodeChildren(parentId).subscribe(\n      (childrenNodes: NodeChildAssociationPaging) => {\n        const result = childrenNodes.list.entries.find((node) => node.entry.name === name);\n\n        if (result) {\n          matchedNodes.next(result);\n        } else {\n          matchedNodes.next(null);\n        }\n      },\n      (err) => matchedNodes.error(err)\n    );\n    return matchedNodes;\n  }\n\n  private isActionAllowed(action: BatchOperationType, node: Node, permission?: string): boolean {\n    if (action === NodeAction.COPY || action === NodeAction.LINK) {\n      return true;\n    }\n    return this.contentService.hasAllowableOperations(node, permission);\n  }\n\n  private rowFilter(row: ShareDataRow): boolean {\n    const node: Node = row.node.entry;\n\n    this.isSitesDestinationAvailable = !!node['guid'];\n    return !node.isFile && node.nodeType !== 'app:folderlink';\n  }\n\n  private imageResolver(row: ShareDataRow): string | null {\n    const entry: Node = row.node.entry;\n    if (!this.contentService.hasAllowableOperations(entry, 'update')) {\n      return this.thumbnailService.getMimeTypeIcon('disable/folder');\n    }\n\n    return null;\n  }\n\n  public getNewNameFrom(name: string, baseName?: string) {\n    const extensionMatch = name.match(/\\.[^/.]+$/);\n\n    // remove extension in case there is one\n    const fileExtension = extensionMatch ? extensionMatch[0] : '';\n    let extensionFree = extensionMatch ? name.slice(0, extensionMatch.index) : name;\n\n    let prefixNumber = 1;\n    let baseExtensionFree;\n\n    if (baseName) {\n      const baseExtensionMatch = baseName.match(/\\.[^/.]+$/);\n\n      // remove extension in case there is one\n      baseExtensionFree = baseExtensionMatch ? baseName.slice(0, baseExtensionMatch.index) : baseName;\n    }\n\n    if (!baseExtensionFree || baseExtensionFree !== extensionFree) {\n      // check if name already has integer appended on end:\n      const oldPrefix = extensionFree.match('-[0-9]+$');\n      if (oldPrefix) {\n        // if so, try to get the number at the end\n        const oldPrefixNumber = parseInt(oldPrefix[0].slice(1), 10);\n        if (oldPrefixNumber.toString() === oldPrefix[0].slice(1)) {\n          extensionFree = extensionFree.slice(0, oldPrefix.index);\n          prefixNumber = oldPrefixNumber + 1;\n        }\n      }\n    }\n    return extensionFree + '-' + prefixNumber + fileExtension;\n  }\n\n  /**\n   * Get children nodes of given parent node\n   *\n   * @param nodeId The id of the parent node\n   * @param params optional parameters\n   */\n  getNodeChildren(nodeId: string, params?: any): Observable<NodeChildAssociationPaging> {\n    return from(this.nodesApi.listNodeChildren(nodeId, params));\n  }\n\n  // Copied from ADF document-list.service, and added the name parameter\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-node where the node have to be copied to\n   * @param name The new name for the copy that would be added on the destination folder\n   */\n  copyNode(nodeId: string, targetParentId: string, name?: string) {\n    return from(this.nodesApi.copyNode(nodeId, { targetParentId, name }));\n  }\n\n  public flatten(nDimArray: any[]) {\n    if (!Array.isArray(nDimArray)) {\n      return nDimArray;\n    }\n\n    const nodeQueue = nDimArray.slice(0);\n    const resultingArray: any[] = [];\n\n    do {\n      nodeQueue.forEach((node) => {\n        if (Array.isArray(node)) {\n          nodeQueue.push(...node);\n        } else {\n          resultingArray.push(node);\n        }\n\n        const nodeIndex = nodeQueue.indexOf(node);\n        nodeQueue.splice(nodeIndex, 1);\n      });\n    } while (nodeQueue.length);\n\n    return resultingArray;\n  }\n\n  processResponse(data: any): any {\n    const moveStatus = {\n      succeeded: [],\n      failed: [],\n      partiallySucceeded: []\n    };\n\n    if (Array.isArray(data)) {\n      return data.reduce((acc, next) => {\n        if (next instanceof Error) {\n          acc.failed.push(next);\n        } else if (Array.isArray(next)) {\n          // if content of a folder was moved\n\n          const folderMoveResponseData = this.flatten(next);\n          const foundError = folderMoveResponseData.find((node) => node instanceof Error);\n          // data might contain also items of form: { itemMoved, initialParentId }\n          const foundEntry = folderMoveResponseData.find((node) => node.itemMoved?.entry || node?.entry);\n\n          if (!foundError) {\n            // consider success if NONE of the items from the folder move response is an error\n            acc.succeeded.push(next);\n          } else if (!foundEntry) {\n            // consider failed if NONE of the items has an entry\n            acc.failed.push(next);\n          } else {\n            // partially move folder\n            acc.partiallySucceeded.push(next);\n          }\n        } else {\n          acc.succeeded.push(next);\n        }\n\n        return acc;\n      }, moveStatus);\n    } else {\n      if (data.itemMoved?.entry || data?.entry) {\n        moveStatus.succeeded.push(data);\n      } else {\n        moveStatus.failed.push(data);\n      }\n\n      return moveStatus;\n    }\n  }\n\n  private focusAfterClose(focusedElementSelector: string): void {\n    if (focusedElementSelector) {\n      document.querySelector<HTMLElement>(focusedElementSelector)?.focus();\n    }\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, DestroyRef, inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { CommonModule, NgOptimizedImage } from '@angular/common';\nimport { DIALOG_COMPONENT_DATA, LocalizedDatePipe, TimeAgoPipe, IconComponent, FileSizePipe } from '@alfresco/adf-core';\nimport { Node, SizeDetails } from '@alfresco/js-api';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { TranslatePipe, TranslateService } from '@ngx-translate/core';\nimport { ContentService, NodesApiService } from '@alfresco/adf-content-services';\nimport { catchError, concatMap, delay, expand, first, switchMap, take } from 'rxjs/operators';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { EMPTY, of, timer } from 'rxjs';\n\nclass NodeDetails {\n  name: string;\n  size: string;\n  location: string;\n  secondaryParentsPaths: string[];\n  created: Date;\n  modified: Date;\n  icon: string;\n  numberOfFiles: string | number;\n}\n\n@Component({\n  selector: 'app-node-info',\n  imports: [CommonModule, MatDividerModule, TimeAgoPipe, TranslatePipe, LocalizedDatePipe, IconComponent, NgOptimizedImage],\n  providers: [FileSizePipe],\n  templateUrl: './node-information.component.html',\n  styleUrls: ['./node-information.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'app-node-info' }\n})\nexport class NodeInformationComponent implements OnInit {\n  readonly contentService = inject(ContentService);\n  readonly nodesService = inject(NodesApiService);\n  readonly translateService = inject(TranslateService);\n\n  private readonly destroyRef = inject(DestroyRef);\n  private readonly fileSizePipe = inject(FileSizePipe);\n\n  node: Node = inject(DIALOG_COMPONENT_DATA);\n  nodeDetails = new NodeDetails();\n\n  ngOnInit() {\n    this.nodeDetails.name = this.node.name;\n    this.nodeDetails.location = this.node.path.name;\n    this.nodeDetails.created = this.node.createdAt;\n    this.nodeDetails.modified = this.node.modifiedAt;\n    this.nodeDetails.icon = this.contentService.getNodeIcon(this.node);\n    this.nodesService\n      .listParents(this.node.id, { where: `(isPrimary=false and assocType='cm:contains')`, include: ['path'] })\n      .pipe(\n        take(1),\n        catchError(() => of(null))\n      )\n      .subscribe((parents) => {\n        this.nodeDetails.secondaryParentsPaths = parents != null ? parents.list.entries.map((entry) => entry.entry.path.name) : [];\n      });\n    if (this.node.nodeType === 'app:filelink' || this.node.nodeType === 'app:folderlink') {\n      this.nodeDetails.size = this.translateService.instant('APP.NODE_INFO.NOT_AVAILABLE');\n      if (this.node.isFolder) {\n        this.nodeDetails.numberOfFiles = this.translateService.instant('APP.NODE_INFO.NOT_AVAILABLE');\n      }\n      return;\n    }\n    if (this.node.isFolder) {\n      this.nodeDetails.size = this.translateService.instant('APP.NODE_INFO.CALCULATING');\n      this.nodeDetails.numberOfFiles = this.translateService.instant('APP.NODE_INFO.CALCULATING');\n      this.nodesService\n        .initiateFolderSizeCalculation(this.node.id)\n        .pipe(\n          first(),\n          delay(1000),\n          switchMap((jobIdEntry) => {\n            return this.nodesService.getFolderSizeInfo(this.node.id, jobIdEntry.entry.jobId).pipe(\n              expand((result) =>\n                result.entry.status === SizeDetails.StatusEnum.IN_PROGRESS\n                  ? timer(5000).pipe(concatMap(() => this.nodesService.getFolderSizeInfo(this.node.id, jobIdEntry.entry.jobId)))\n                  : EMPTY\n              ),\n              catchError(() => {\n                this.nodeDetails.size = this.translateService.instant('APP.NODE_INFO.ERROR');\n                return of(null);\n              })\n            );\n          }),\n          takeUntilDestroyed(this.destroyRef),\n          catchError(() => {\n            this.nodeDetails.numberOfFiles = this.translateService.instant('APP.NODE_INFO.ERROR');\n            this.nodeDetails.size = this.translateService.instant('APP.NODE_INFO.ERROR');\n            return of(null);\n          })\n        )\n        .subscribe((folderInfo) => {\n          if (folderInfo?.entry?.status === SizeDetails.StatusEnum.COMPLETE) {\n            this.nodeDetails.size = this.fileSizePipe.transform(folderInfo.entry.sizeInBytes);\n            this.nodeDetails.numberOfFiles = folderInfo.entry.numberOfFiles;\n          } else if (folderInfo?.entry?.status !== SizeDetails.StatusEnum.IN_PROGRESS) {\n            this.nodeDetails.size = this.translateService.instant('APP.NODE_INFO.ERROR');\n            this.nodeDetails.numberOfFiles = this.translateService.instant('APP.NODE_INFO.ERROR');\n          }\n        });\n    } else {\n      this.nodeDetails.size = this.fileSizePipe.transform(this.node.content?.sizeInBytes);\n    }\n  }\n}\n","<div class=\"aca-node-info-header\">\n  <img class=\"aca-node-icon\" alt=\"{{ 'APP.NODE_INFO.ICON' | translate }}\" [ngSrc]=\"nodeDetails.icon\" width=\"24\" height=\"24\"/>\n  <div class=\"aca-node-title\" data-automation-id=\"node-info-name\">{{ nodeDetails.name }}</div>\n</div>\n<mat-divider aria-hidden=\"true\"/>\n<div class=\"aca-node-info-body\">\n  @if (node.isFolder) {\n    <div class=\"aca-node-info-item\">\n      <div class=\"aca-node-info-item-label\">{{ 'APP.NODE_INFO.NUMBER_OF_FILES' | translate }}</div>\n      <div class=\"aca-node-info-item-value\"\n          data-automation-id=\"node-info-number-of-files\">{{ nodeDetails.numberOfFiles }}</div>\n    </div>\n    <mat-divider aria-hidden=\"true\"/>\n  }\n  <div class=\"aca-node-info-item\">\n    <div class=\"aca-node-info-item-label\">{{ 'APP.NODE_INFO.SIZE' | translate }}</div>\n    <div class=\"aca-node-info-item-value\" data-automation-id=\"node-info-size\">\n      {{ nodeDetails.size }}\n    </div>\n  </div>\n  <mat-divider aria-hidden=\"true\"/>\n  <div [ngClass]=\"{'aca-node-location-group': nodeDetails.secondaryParentsPaths?.length > 0}\">\n    <div class=\"aca-node-info-item\">\n      <div class=\"aca-node-info-item-label\">{{ 'APP.NODE_INFO.LOCATION' | translate }}</div>\n      <div class=\"aca-node-info-item-value\" data-automation-id=\"node-info-location\">\n          <adf-icon value=\"folder\" class=\"aca-node-icon\" fontSet=\"material-icons\"/>\n          <div class=\"aca-node-info-location\">\n            @if (nodeDetails.location) {\n              {{ nodeDetails.location }}\n            } @else {\n              {{ 'APP.BROWSE.SEARCH.UNKNOWN_LOCATION' | translate }}\n            }\n          </div>\n      </div>\n    </div>\n    @if (nodeDetails.secondaryParentsPaths?.length > 0) {\n      <div class=\"aca-node-info-item\">\n        <div class=\"aca-node-info-item-label\">{{ 'APP.NODE_INFO.REFERENCED' | translate }}</div>\n        <div class=\"aca-node-info-secondary-parents-container\" data-automation-id=\"node-info-secondary-parents\">\n          @for (secondaryParentPath of nodeDetails.secondaryParentsPaths; track $index) {\n            <div class=\"aca-node-info-secondary-parent\" [attr.data-automation-id]=\"'node-info-secondary-parent-' + $index\">\n              <adf-icon value=\"folder\" class=\"aca-node-icon\" fontSet=\"material-icons\"/>\n              <div class=\"aca-node-info-location\">\n                {{ secondaryParentPath }}\n              </div>\n            </div>\n          }\n        </div>\n      </div>\n    }\n  </div>\n  <mat-divider aria-hidden=\"true\"/>\n  <div class=\"aca-node-info-item\">\n    <div class=\"aca-node-info-item-label\">{{ 'APP.NODE_INFO.CREATED' | translate }}</div>\n    <div class=\"aca-node-info-item-value\"\n         data-automation-id=\"node-info-creation-date\"\n         [title]=\"nodeDetails.created | adfLocalizedDate\">{{ nodeDetails.created | adfTimeAgo }}</div>\n  </div>\n  <mat-divider aria-hidden=\"true\"/>\n  <div class=\"aca-node-info-item\">\n    <div class=\"aca-node-info-item-label\">{{ 'APP.NODE_INFO.MODIFIED' | translate }}</div>\n    <div class=\"aca-node-info-item-value\"\n         data-automation-id=\"node-info-modify-date\"\n         [title]=\"nodeDetails.modified | adfLocalizedDate\">{{ nodeDetails.modified | adfTimeAgo }}</div>\n  </div>\n</div>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { AppHookService, AppSettingsService, ContentApiService, NodePermissionService } from '@alfresco/aca-shared';\nimport {\n  AppStore,\n  DeletedNodeInfo,\n  DeleteStatus,\n  getAppSelection,\n  NavigateRouteAction,\n  NavigateToParentFolder,\n  NodeInfo,\n  RefreshPreviewAction,\n  SetSelectedNodesAction,\n  ShowLoaderAction,\n  UnlockWriteAction,\n  ViewNodeVersionAction\n} from '@alfresco/aca-shared/store';\nimport {\n  DocumentListService,\n  FolderDialogComponent,\n  LibraryDialogComponent,\n  NewVersionUploaderDataAction,\n  NewVersionUploaderDialogData,\n  NewVersionUploaderService,\n  NodeAspectService,\n  NodesApiService,\n  ShareDialogComponent\n} from '@alfresco/adf-content-services';\nimport { ConfirmDialogComponent, DialogComponent, DialogSize, NotificationService, TranslationService } from '@alfresco/adf-core';\nimport { DeletedNodesPaging, Node, NodeEntry, PathInfo, SiteBodyCreate, SiteEntry } from '@alfresco/js-api';\nimport { inject, Injectable } from '@angular/core';\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\nimport { Store } from '@ngrx/store';\nimport { forkJoin, Observable, of, zip } from 'rxjs';\nimport { catchError, map, mergeMap, take, tap } from 'rxjs/operators';\nimport { LinkOperationResult, NodeActionsService } from './node-actions.service';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { NodeInformationComponent } from '../dialogs/node-details/node-information.component';\n\ninterface RestoredNode {\n  status: number;\n  entry: Node;\n  statusCode?: number;\n}\n\ninterface SnackbarMessageData {\n  key: string;\n  params: { [key: string]: any };\n  userActionLabel?: string;\n  type: 'info' | 'warning' | 'error';\n}\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ContentManagementService {\n  private readonly notificationService = inject(NotificationService);\n  private readonly nodesApiService = inject(NodesApiService);\n  private readonly store = inject(Store<AppStore>);\n  private readonly contentApi = inject(ContentApiService);\n  private readonly permission = inject(NodePermissionService);\n  private readonly dialogRef = inject(MatDialog);\n  private readonly nodeActionsService = inject(NodeActionsService);\n  private readonly translation = inject(TranslationService);\n  private readonly nodeAspectService = inject(NodeAspectService);\n  private readonly activatedRoute = inject(ActivatedRoute);\n  private readonly appHookService = inject(AppHookService);\n  private readonly newVersionUploaderService = inject(NewVersionUploaderService);\n  private readonly router = inject(Router);\n  private readonly appSettingsService = inject(AppSettingsService);\n  private readonly documentListService = inject(DocumentListService);\n  private readonly createMenuButtonSelector = 'app-toolbar-menu button[id=\"app.toolbar.create\"]';\n\n  addFavorite(nodes: Array<NodeEntry>, focusedElementOnCloseSelector?: string) {\n    this.focusAfterClose(focusedElementOnCloseSelector);\n    if (nodes && nodes.length > 0) {\n      this.contentApi.addFavorite(nodes).subscribe(() => {\n        const favoriteNodes = nodes.map((node) => {\n          const newNode = JSON.parse(JSON.stringify(node));\n          newNode.entry.isFavorite = true;\n          return newNode;\n        });\n\n        if (nodes.length > 1) {\n          this.notificationService.showInfo('APP.MESSAGES.INFO.FAVORITE_NODES_ADDED', null, { number: nodes.length });\n        } else {\n          this.notificationService.showInfo('APP.MESSAGES.INFO.FAVORITE_NODE_ADDED', null, { name: nodes[0].entry.name });\n        }\n        this.store.dispatch(new SetSelectedNodesAction(favoriteNodes));\n      });\n    }\n  }\n\n  removeFavorite(nodes: Array<NodeEntry>, focusedElementOnCloseSelector?: string) {\n    this.focusAfterClose(focusedElementOnCloseSelector);\n    if (nodes && nodes.length > 0) {\n      this.contentApi.removeFavorite(nodes).subscribe({\n        next: () => {\n          const favoriteNodes = nodes.map((node) => {\n            const newNode = JSON.parse(JSON.stringify(node));\n            newNode.entry.isFavorite = false;\n            return newNode;\n          });\n\n          if (nodes.length > 1) {\n            this.notificationService.showInfo('APP.MESSAGES.INFO.FAVORITE_NODES_REMOVED', null, { number: nodes.length });\n          } else {\n            this.notificationService.showInfo('APP.MESSAGES.INFO.FAVORITE_NODE_REMOVED', null, { name: nodes[0].entry.name });\n          }\n          this.store.dispatch(new SetSelectedNodesAction(favoriteNodes));\n        },\n        error: (error) => {\n          if (JSON.parse(error.message).error.statusCode === 404) {\n            const nodeId = JSON.parse(error.message).error.briefSummary.split('relationship id of ')[1];\n            const nodeName = nodes.find((node) => node.entry.id === nodeId)?.entry.name;\n            this.notificationService.showError('APP.MESSAGES.ERRORS.FAVORITE_NODE_NOT_FOUND', null, { name: nodeName });\n          }\n        }\n      });\n    }\n  }\n\n  manageVersions(node: any, focusedElementOnCloseSelector?: string) {\n    if (node?.entry) {\n      // shared and favorite\n      const id = node.entry.nodeId || (node as any).entry.guid;\n\n      if (id) {\n        this.contentApi.getNodeInfo(id).subscribe((entry) => {\n          this.openVersionManagerDialog(entry, focusedElementOnCloseSelector);\n        });\n      } else {\n        this.openVersionManagerDialog(node.entry, focusedElementOnCloseSelector);\n      }\n    }\n  }\n\n  manageAspects(node: any, focusedElementOnCloseSelector?: string) {\n    if (node?.entry) {\n      // shared and favorite\n      const id = node.entry.nodeId || (node as any).entry.guid;\n\n      if (id) {\n        this.contentApi.getNodeInfo(id).subscribe((entry) => {\n          this.openAspectListDialog(entry, focusedElementOnCloseSelector);\n        });\n      } else {\n        this.openAspectListDialog(node.entry, focusedElementOnCloseSelector);\n      }\n    }\n  }\n\n  versionUpdateDialog(node: Node, file: File) {\n    this.contentApi.getNodeVersions(node.id).subscribe(({ list }) => {\n      const newVersionUploaderDialogData = {\n        node,\n        file,\n        currentVersion: list.entries[0].entry,\n        title: 'VERSION.DIALOG.TITLE',\n        showComments: this.appSettingsService.uploadAllowComments,\n        allowDownload: this.appSettingsService.uploadAllowDownload\n      } as NewVersionUploaderDialogData;\n      const dialogConfig: MatDialogConfig = { width: '600px' };\n\n      this.newVersionUploaderService.openUploadNewVersionDialog(newVersionUploaderDialogData, dialogConfig).subscribe(\n        (data) => {\n          if (data.action === NewVersionUploaderDataAction.upload) {\n            if (data.newVersion.value.entry.properties['cm:lockType'] === 'WRITE_LOCK') {\n              this.store.dispatch(new UnlockWriteAction(data.newVersion.value));\n            }\n          }\n        },\n        (error) => this.notificationService.showError(error)\n      );\n    });\n  }\n\n  shareNode(node: any, focusedElementOnCloseSelector?: string): void {\n    if (node?.entry) {\n      // shared and favorite\n      const id = node.entry.nodeId || (node as any).entry.guid;\n\n      if (id) {\n        this.contentApi.getNodeInfo(id).subscribe((entry) => {\n          this.openShareLinkDialog({ entry }, focusedElementOnCloseSelector);\n        });\n      } else {\n        this.openShareLinkDialog(node, focusedElementOnCloseSelector);\n      }\n    }\n  }\n\n  openShareLinkDialog(node: any, focusedElementOnCloseSelector?: string) {\n    const baseShareUrl = this.appSettingsService.baseShareUrl;\n\n    this.dialogRef\n      .open(ShareDialogComponent, {\n        restoreFocus: true,\n        width: '600px',\n        panelClass: 'adf-share-link-dialog',\n        data: {\n          node,\n          baseShareUrl\n        }\n      })\n      .afterClosed()\n      .subscribe(() => {\n        this.store.dispatch(new SetSelectedNodesAction([node]));\n        this.appHookService.linksUnshared.next();\n        this.focusAfterClose(focusedElementOnCloseSelector);\n      });\n  }\n\n  createFolder(parentNodeId: string) {\n    const dialogInstance = this.dialogRef.open(FolderDialogComponent, {\n      data: {\n        parentNodeId,\n        createTitle: undefined,\n        nodeType: 'cm:folder'\n      },\n      width: '400px',\n      role: 'dialog'\n    });\n\n    dialogInstance.componentInstance.error.subscribe((message: string) => {\n      this.notificationService.showError(message);\n    });\n\n    dialogInstance.afterClosed().subscribe((node) => {\n      if (node) {\n        this.documentListService.reload();\n      }\n      this.focusAfterClose(this.createMenuButtonSelector);\n    });\n  }\n\n  editFolder(folder: NodeEntry, focusedElementOnCloseSelector?: string) {\n    if (!folder) {\n      return;\n    }\n\n    const dialog = this.dialogRef.open(FolderDialogComponent, {\n      data: {\n        folder: folder.entry\n      },\n      width: '400px'\n    });\n\n    dialog.componentInstance.error.subscribe((message: string) => {\n      this.notificationService.showError(message);\n    });\n\n    dialog.afterClosed().subscribe((node) => {\n      if (node) {\n        this.store.dispatch(new SetSelectedNodesAction([{ entry: node }]));\n        this.nodesApiService.nodeUpdated.next(node);\n      }\n      this.focusAfterClose(focusedElementOnCloseSelector);\n    });\n  }\n\n  createLibrary(): Observable<string> {\n    const dialogInstance = this.dialogRef.open(LibraryDialogComponent, {\n      autoFocus: false,\n      width: '400px'\n    });\n\n    dialogInstance.componentInstance.error.subscribe((message: string) => {\n      this.notificationService.showError(message);\n    });\n\n    return dialogInstance.afterClosed().pipe(\n      tap((node) => {\n        if (node) {\n          this.appHookService.libraryCreated.next(node);\n        }\n        this.focusAfterClose(this.createMenuButtonSelector);\n      }),\n      map((node: SiteEntry) => {\n        if (node?.entry?.guid) {\n          return node.entry.guid;\n        }\n        return null;\n      })\n    );\n  }\n\n  deleteLibrary(id: string): void {\n    this.contentApi.deleteSite(id).subscribe(\n      () => {\n        this.appHookService.libraryDeleted.next(id);\n        this.notificationService.showInfo('APP.MESSAGES.INFO.LIBRARY_DELETED');\n        this.store.dispatch(new NavigateRouteAction(['/libraries']));\n      },\n      () => {\n        this.notificationService.showError('APP.MESSAGES.ERRORS.DELETE_LIBRARY_FAILED');\n      }\n    );\n  }\n\n  leaveLibrary(siteId: string, focusedElementOnCloseSelector?: string): void {\n    const dialogRef = this.dialogRef.open(ConfirmDialogComponent, {\n      data: {\n        title: 'APP.DIALOGS.CONFIRM_LEAVE.TITLE',\n        message: 'APP.DIALOGS.CONFIRM_LEAVE.MESSAGE',\n        yesLabel: 'APP.DIALOGS.CONFIRM_LEAVE.YES_LABEL',\n        noLabel: 'APP.DIALOGS.CONFIRM_LEAVE.NO_LABEL'\n      },\n      minWidth: '250px',\n      restoreFocus: true\n    });\n\n    dialogRef.afterClosed().subscribe((result) => {\n      if (result === true) {\n        this.contentApi.leaveSite(siteId).subscribe(\n          () => {\n            this.appHookService.libraryLeft.next(siteId);\n            this.notificationService.showInfo('APP.MESSAGES.INFO.LEFT_LIBRARY');\n          },\n          () => {\n            this.notificationService.showError('APP.MESSAGES.ERRORS.LEAVE_LIBRARY_FAILED');\n          }\n        );\n      }\n      this.focusAfterClose(focusedElementOnCloseSelector);\n    });\n  }\n\n  updateLibrary(siteId: string, siteBody: SiteBodyCreate) {\n    this.contentApi.updateLibrary(siteId, siteBody).subscribe(\n      (siteEntry: SiteEntry) => {\n        this.appHookService.libraryUpdated.next(siteEntry);\n        this.notificationService.showInfo('LIBRARY.SUCCESS.LIBRARY_UPDATED');\n      },\n      () => {\n        this.appHookService.libraryUpdateFailed.next();\n        this.notificationService.showError('LIBRARY.ERRORS.LIBRARY_UPDATE_ERROR');\n      }\n    );\n  }\n\n  async unshareNodes(links: Array<NodeEntry>) {\n    const promises = links.map((link) => this.contentApi.deleteSharedLink(link.entry.id).toPromise());\n    await Promise.all(promises);\n    this.appHookService.linksUnshared.next();\n  }\n\n  canUpdateNode(node: NodeEntry | Node): boolean {\n    return this.permission.check(node, ['update']);\n  }\n\n  canUploadContent(folderNode: NodeEntry | Node): boolean {\n    return this.permission.check(folderNode, ['create']);\n  }\n\n  purgeDeletedNodes(nodes: NodeEntry[], focusedElementOnCloseSelector?: string) {\n    if (!nodes || nodes.length === 0) {\n      return;\n    }\n\n    const dialogRef = this.dialogRef.open(ConfirmDialogComponent, {\n      data: {\n        title: 'APP.DIALOGS.CONFIRM_PURGE.TITLE',\n        message: 'APP.DIALOGS.CONFIRM_PURGE.MESSAGE',\n        yesLabel: 'APP.DIALOGS.CONFIRM_PURGE.YES_LABEL',\n        noLabel: 'APP.DIALOGS.CONFIRM_PURGE.NO_LABEL'\n      },\n      minWidth: '250px'\n    });\n\n    dialogRef.afterClosed().subscribe((result) => {\n      this.focusAfterClose(focusedElementOnCloseSelector);\n      if (result === true) {\n        const nodesToDelete: NodeInfo[] = nodes.map((node) => {\n          const { name } = node.entry;\n          const id = (node as any).entry.nodeId || node.entry.id;\n\n          return {\n            id,\n            name\n          };\n        });\n        this.purgeNodes(nodesToDelete);\n      }\n    });\n  }\n\n  restoreDeletedNodes(selection: NodeEntry[] = [], focusedElementOnCloseSelector?: string) {\n    if (!selection.length) {\n      return;\n    }\n\n    const nodesWithPath = selection.filter((node) => node.entry.path);\n\n    if (selection.length && !nodesWithPath.length) {\n      const failedStatus = this.processStatus([]);\n      failedStatus.fail.push(...selection);\n      this.showRestoreNotification(failedStatus);\n      this.documentListService.reload();\n      return;\n    }\n\n    let status: DeleteStatus;\n\n    forkJoin(nodesWithPath.map((node) => this.restoreNode(node)))\n      .pipe(\n        tap((restoredNodes) => {\n          status = this.processStatus(restoredNodes);\n        }),\n        mergeMap(() => this.contentApi.getDeletedNodes())\n      )\n      .subscribe((nodes: DeletedNodesPaging) => {\n        const selectedNodes = this.diff(status.fail, selection, false);\n        const remainingNodes = this.diff(selectedNodes, nodes.list.entries);\n\n        if (!remainingNodes.length) {\n          this.focusAfterClose(focusedElementOnCloseSelector);\n          this.showRestoreNotification(status);\n          setTimeout(() => {\n            this.documentListService.reload();\n          }, 50);\n        } else {\n          this.restoreDeletedNodes(remainingNodes);\n        }\n      });\n  }\n\n  copyNodes(nodes: Array<NodeEntry>, focusedElementOnCloseSelector?: string) {\n    zip(this.nodeActionsService.copyNodes(nodes, undefined, focusedElementOnCloseSelector), this.nodeActionsService.contentCopied).subscribe(\n      (result) => {\n        const [operationResult, newItems] = result;\n        this.showCopyMessage(operationResult, nodes, newItems);\n      },\n      (error) => {\n        this.showCopyMessage(error, nodes);\n      }\n    );\n  }\n\n  moveNodes(nodes: Array<NodeEntry>, focusedElementOnCloseSelector?: string) {\n    const permissionForMove = '!';\n\n    zip(this.nodeActionsService.moveNodes(nodes, permissionForMove, focusedElementOnCloseSelector), this.nodeActionsService.contentMoved).subscribe(\n      (result) => {\n        const [operationResult, moveResponse] = result;\n        this.showMoveMessage(nodes, operationResult, moveResponse);\n\n        this.documentListService.reload();\n      },\n      (error) => {\n        this.showMoveMessage(nodes, error);\n      }\n    );\n  }\n\n  linkNodes(nodes: NodeEntry[], focusedElementOnCloseSelector?: string) {\n    zip(this.nodeActionsService.createLinkNodes(nodes, focusedElementOnCloseSelector), this.nodeActionsService.contentLinked.pipe(take(1))).subscribe(\n      {\n        next: ([, linkResponse]) => this.showLinkMessage(nodes, linkResponse),\n        error: (error) => this.showLinkMessage(nodes, { succeeded: [], failed: [error] })\n      }\n    );\n  }\n\n  navigateToLinkTarget(linkNode: NodeEntry): void {\n    const destinationId = linkNode.entry?.properties?.['cm:destination'];\n    if (!destinationId) {\n      this.notificationService.showError('APP.MESSAGES.ERRORS.GENERIC');\n      return;\n    }\n\n    this.contentApi.getNode(destinationId).subscribe({\n      next: (originalNode) => {\n        this.store.dispatch(new NavigateToParentFolder(originalNode));\n        this.appHookService.nodeToSelect$.next(originalNode);\n        this.documentListService.reload();\n      },\n      error: () => {\n        this.notificationService.showError('APP.MESSAGES.ERRORS.GENERIC');\n      }\n    });\n  }\n\n  getErrorMessage(errorObject: { message: any }): string {\n    let i18nMessageString = 'APP.MESSAGES.ERRORS.GENERIC';\n\n    try {\n      const {\n        error: { statusCode }\n      } = JSON.parse(errorObject.message);\n\n      if (statusCode === 409) {\n        i18nMessageString = 'APP.MESSAGES.ERRORS.NODE_MOVE';\n      } else if (statusCode === 403) {\n        i18nMessageString = 'APP.MESSAGES.ERRORS.PERMISSION';\n      }\n    } catch {\n      /* Do nothing, keep the original message */\n    }\n\n    return i18nMessageString;\n  }\n\n  getNodeInfo(): Observable<Node> {\n    return this.store.select(getAppSelection).pipe(\n      take(1),\n      mergeMap(({ file }) => {\n        const id = (file as any).entry.nodeId || (file as any).entry.guid;\n        if (!id) {\n          return of(file.entry);\n        } else {\n          return this.contentApi.getNodeInfo(id);\n        }\n      })\n    );\n  }\n\n  unlockNode(node: NodeEntry): Promise<void | NodeEntry> {\n    return this.contentApi.unlockNode(node.entry.id).catch(() => {\n      this.notificationService.showError('APP.MESSAGES.ERRORS.UNLOCK_NODE', null, { fileName: node.entry.name });\n    });\n  }\n\n  private showCopyMessage(info: any, nodes: Array<NodeEntry>, newItems?: Array<NodeEntry>) {\n    const succeeded = newItems?.length ?? 0;\n    const failed = nodes.length - succeeded;\n    let i18nMessageString = 'APP.MESSAGES.ERRORS.GENERIC';\n\n    if (typeof info === 'string' && info.toLowerCase().includes('succes')) {\n      i18nMessageString = `APP.MESSAGES.INFO.NODE_COPY.${this.getOperationMessageSuffix(succeeded, failed)}`;\n    } else if (typeof info !== 'string') {\n      try {\n        const {\n          error: { statusCode }\n        } = JSON.parse(info.message);\n        if (statusCode === 403) {\n          i18nMessageString = 'APP.MESSAGES.ERRORS.PERMISSION';\n        }\n      } catch {}\n    }\n\n    const undo = succeeded > 0 ? this.translation.instant('APP.ACTIONS.UNDO') : '';\n    const message = this.translation.instant(i18nMessageString, { success: succeeded, failed });\n\n    this.notificationService\n      .openSnackMessageAction(message, undo, { panelClass: this.getSnackbarPanelClass(succeeded, failed) })\n      .onAction()\n      .subscribe(() => this.undoCopyNodes(newItems));\n  }\n\n  private showLinkMessage(nodes: Array<NodeEntry>, { succeeded: newItems, failed }: LinkOperationResult) {\n    const succeeded = newItems.length;\n    const totalFailed = nodes.length - succeeded;\n\n    let isDuplicate = false;\n    let isPermissionError = false;\n    if (nodes.length === 1 && succeeded === 0) {\n      try {\n        const statusCode = JSON.parse(failed[0].message).error.statusCode;\n        isDuplicate = statusCode === 409;\n        isPermissionError = statusCode === 403;\n      } catch {}\n    }\n\n    let i18nMessageString: string;\n    if (isDuplicate) {\n      i18nMessageString = 'APP.MESSAGES.ERRORS.NODE_LINK_DUPLICATE';\n    } else if (isPermissionError) {\n      i18nMessageString = 'APP.MESSAGES.ERRORS.PERMISSION';\n    } else {\n      i18nMessageString = `APP.MESSAGES.INFO.NODE_LINK.${this.getOperationMessageSuffix(succeeded, totalFailed)}`;\n    }\n\n    const message = this.translation.instant(i18nMessageString, { success: succeeded, failed: totalFailed });\n    this.notificationService.openSnackMessageAction(message, null, { panelClass: this.getSnackbarPanelClass(succeeded, totalFailed) });\n  }\n\n  private getOperationMessageSuffix(succeeded: number, failed: number): string {\n    if (failed > 0 && succeeded > 0) {\n      return succeeded === 1 ? 'PARTIAL_SINGULAR' : 'PARTIAL_PLURAL';\n    }\n    if (failed > 0) {\n      return failed === 1 ? 'FAIL_SINGULAR' : 'FAIL_PLURAL';\n    }\n    return succeeded === 1 ? 'SINGULAR' : 'PLURAL';\n  }\n\n  private getSnackbarPanelClass(succeeded: number, failed: number): string {\n    if (succeeded === 0) {\n      return 'adf-error-snackbar';\n    }\n    return failed > 0 ? 'adf-warning-snackbar' : 'adf-info-snackbar';\n  }\n\n  private undoCopyNodes(nodes: NodeEntry[]) {\n    const batch = this.nodeActionsService\n      .flatten(nodes)\n      .filter((item) => item.entry)\n      .map((item) => this.contentApi.deleteNode(item.entry.id, { permanent: true }));\n\n    forkJoin(...batch).subscribe(\n      () => {\n        this.appHookService.nodesDeleted.next(null);\n        this.documentListService.reload();\n      },\n      (error) => {\n        let i18nMessageString = 'APP.MESSAGES.ERRORS.GENERIC';\n\n        let errorJson = null;\n        try {\n          errorJson = JSON.parse(error.message);\n        } catch {}\n\n        if (errorJson?.error?.statusCode === 403) {\n          i18nMessageString = 'APP.MESSAGES.ERRORS.PERMISSION';\n        }\n\n        this.notificationService.showError(i18nMessageString);\n      }\n    );\n  }\n\n  private openVersionManagerDialog(node: any, focusedElementOnCloseSelector?: string) {\n    // workaround Shared\n    if (node.isFile || node.nodeId) {\n      const newVersionUploaderDialogData: NewVersionUploaderDialogData = {\n        node,\n        showVersionsOnly: true,\n        title: 'VERSION.DIALOG.TITLE',\n        allowDownload: this.appSettingsService.uploadAllowDownload,\n        showComments: this.appSettingsService.uploadAllowComments,\n        showActions: this.appSettingsService.versionManagerShowActions,\n        allowViewVersions: this.appSettingsService.versionManagerAllowViewVersions,\n        allowVersionDelete: this.appSettingsService.versionManagerAllowVersionDelete\n      };\n      this.newVersionUploaderService\n        .openUploadNewVersionDialog(newVersionUploaderDialogData, { width: '630px', role: 'dialog' }, focusedElementOnCloseSelector)\n        .subscribe({\n          next: (newVersionUploaderData) => {\n            switch (newVersionUploaderData.action) {\n              case NewVersionUploaderDataAction.refresh:\n                this.documentListService.reload();\n                this.store.dispatch(new RefreshPreviewAction(newVersionUploaderData.node));\n                break;\n              case NewVersionUploaderDataAction.view: {\n                const location = this.activatedRoute.snapshot.queryParams['location'] || this.router.url;\n                this.store.dispatch(new ViewNodeVersionAction(node.id, newVersionUploaderData.versionId, { location }));\n                break;\n              }\n              default:\n                break;\n            }\n          }\n        });\n    } else {\n      this.notificationService.showError('APP.MESSAGES.ERRORS.PERMISSION');\n    }\n  }\n\n  private openAspectListDialog(node: any, focusedElementOnCloseSelector?: string) {\n    // workaround Shared\n    if (node.isFile || node.id) {\n      this.nodeAspectService.updateNodeAspects(node.id, focusedElementOnCloseSelector);\n    } else {\n      this.notificationService.showError('APP.MESSAGES.ERRORS.PERMISSION');\n    }\n  }\n\n  private undoMoveNodes(moveResponse, selectionParentId: string) {\n    const movedNodes = moveResponse?.['succeeded'] ?? [];\n    const partiallyMovedNodes = moveResponse?.['partiallySucceeded'] ?? [];\n\n    const restoreDeletedNodesBatch = this.nodeActionsService.moveDeletedEntries.map((folderEntry) =>\n      this.contentApi.restoreNode(folderEntry.nodeId || folderEntry.id).pipe(map((node) => node.entry))\n    );\n\n    zip(...restoreDeletedNodesBatch, of(null))\n      .pipe(\n        mergeMap(() => {\n          const nodesToBeMovedBack = [...partiallyMovedNodes, ...movedNodes];\n\n          const revertMoveBatch = this.nodeActionsService\n            .flatten(nodesToBeMovedBack)\n            .filter((node) => node.entry || node.itemMoved?.entry)\n            .map((node) => {\n              if (node.itemMoved) {\n                return this.nodeActionsService.moveNodeAction(node.itemMoved.entry, node.initialParentId);\n              } else {\n                return this.nodeActionsService.moveNodeAction(node.entry, selectionParentId);\n              }\n            });\n\n          return zip(...revertMoveBatch, of(null));\n        })\n      )\n      .subscribe(\n        () => {\n          this.documentListService.reload();\n        },\n        (error) => {\n          let message = 'APP.MESSAGES.ERRORS.GENERIC';\n\n          let errorJson = null;\n          try {\n            errorJson = JSON.parse(error.message);\n          } catch {}\n\n          if (errorJson?.error?.statusCode === 403) {\n            message = 'APP.MESSAGES.ERRORS.PERMISSION';\n          }\n\n          this.notificationService.showError(message);\n        }\n      );\n  }\n\n  deleteNodes(items: NodeEntry[], allowUndo = true, focusedElementOnCloseSelector?: string): void {\n    const containsLink = items.some((node) => this.isLinkNode(node));\n\n    if (containsLink) {\n      const dialogRef = this.dialogRef.open(ConfirmDialogComponent, {\n        data: {\n          title: 'APP.DIALOGS.CONFIRM_DELETE_LINK.TITLE',\n          message: 'APP.DIALOGS.CONFIRM_DELETE_LINK.MESSAGE',\n          yesLabel: 'APP.DIALOGS.CONFIRM_DELETE_LINK.YES_LABEL',\n          noLabel: 'APP.DIALOGS.CONFIRM_DELETE_LINK.NO_LABEL'\n        },\n        minWidth: '250px'\n      });\n\n      dialogRef.afterClosed().subscribe((result) => {\n        if (result === true) {\n          this.store.dispatch(new ShowLoaderAction(true));\n          this.deleteNodesBatch(items, allowUndo, focusedElementOnCloseSelector);\n        } else {\n          this.focusAfterClose(focusedElementOnCloseSelector);\n        }\n      });\n    } else {\n      this.store.dispatch(new ShowLoaderAction(true));\n      this.deleteNodesBatch(items, allowUndo, focusedElementOnCloseSelector);\n    }\n  }\n\n  private isLinkNode(node: NodeEntry): boolean {\n    return node.entry.nodeType === 'app:filelink' || node.entry.nodeType === 'app:folderlink';\n  }\n\n  private deleteNodesBatch(items: NodeEntry[], allowUndo = true, focusedElementOnCloseSelector?: string): void {\n    this.focusAfterClose(focusedElementOnCloseSelector);\n    const canUndo = allowUndo && !items.every((node) => this.isLinkNode(node));\n    const batch: Observable<DeletedNodeInfo>[] = [];\n\n    items.forEach((node) => {\n      batch.push(this.deleteNode(node));\n    });\n\n    forkJoin(...batch).subscribe((data: DeletedNodeInfo[]) => {\n      const status = this.processStatus(data);\n      const messageData = this.getDeleteMessageData(status);\n\n      if (messageData && status.someSucceeded) {\n        const translatedMessage: string = this.translation.instant(messageData.key, messageData.params);\n        const action: string | null = canUndo ? this.translation.instant('APP.ACTIONS.UNDO') : null;\n\n        const snackBarRef = this.notificationService.openSnackMessageAction(\n          translatedMessage,\n          action,\n          { panelClass: `adf-${messageData.type}-snackbar` },\n          messageData.params\n        );\n\n        if (action) {\n          snackBarRef.onAction().subscribe(() => {\n            this.undoDeleteNodes([...status.success]);\n          });\n        }\n      } else if (messageData) {\n        this.notificationService.showError(this.translation.instant(messageData.key, messageData.params));\n      }\n\n      if (status.someSucceeded) {\n        this.appHookService.nodesDeleted.next();\n        this.documentListService.reload();\n      }\n      this.store.dispatch(new ShowLoaderAction(false));\n    });\n  }\n\n  undoDeleteNodes(items: DeletedNodeInfo[]): void {\n    const batch: Observable<DeletedNodeInfo>[] = [];\n\n    items.forEach((item) => {\n      batch.push(this.undoDeleteNode(item));\n    });\n\n    forkJoin(...batch).subscribe((data) => {\n      const processedData = this.processStatus(data);\n\n      if (processedData.fail.length) {\n        this.showUndoDeleteMessage(processedData);\n      }\n\n      if (processedData.someSucceeded) {\n        this.documentListService.reload();\n      }\n    });\n  }\n\n  private undoDeleteNode(item: DeletedNodeInfo): Observable<DeletedNodeInfo> {\n    const { id, name } = item;\n\n    return this.contentApi.restoreNode(id).pipe(\n      map(() => ({\n        id,\n        name,\n        status: 1\n      })),\n      catchError(() =>\n        of({\n          id,\n          name,\n          status: 0\n        })\n      )\n    );\n  }\n\n  private showUndoDeleteMessage(status: DeleteStatus): void {\n    if (status.someFailed && !status.oneFailed) {\n      this.notificationService.showError('APP.MESSAGES.ERRORS.NODE_RESTORE.PLURAL', null, { number: status.fail.length });\n    }\n\n    if (status.oneFailed) {\n      this.notificationService.showError('APP.MESSAGES.ERRORS.NODE_RESTORE', null, { name: status.fail[0].name });\n    }\n  }\n\n  private restoreNode(node: NodeEntry): Observable<RestoredNode> {\n    const { entry } = node;\n\n    return this.contentApi.restoreNode(entry.id).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 purgeNodes(selection: NodeInfo[] = []) {\n    if (!selection.length) {\n      return;\n    }\n\n    const batch = selection.map((node) => this.purgeDeletedNode(node));\n\n    forkJoin(batch).subscribe((purgedNodes) => {\n      const status = this.processStatus(purgedNodes);\n\n      if (status.success.length) {\n        this.documentListService.reload();\n      }\n\n      this.sendPurgeMessage(status);\n    });\n  }\n\n  private purgeDeletedNode(node: NodeInfo): Observable<DeletedNodeInfo> {\n    const { id, name } = node;\n\n    return this.contentApi.purgeDeletedNode(id).pipe(\n      map(() => ({\n        status: 1,\n        id,\n        name\n      })),\n      catchError(() =>\n        of({\n          status: 0,\n          id,\n          name\n        })\n      )\n    );\n  }\n\n  private processStatus(data: Array<{ status: number }> = []): DeleteStatus {\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 sendPurgeMessage(status: DeleteStatus): void {\n    if (status.oneSucceeded && status.someFailed && !status.oneFailed) {\n      this.notificationService.showWarning('APP.MESSAGES.INFO.TRASH.NODES_PURGE.PARTIAL_SINGULAR', null, {\n        name: status.success[0].name,\n        failed: status.fail.length\n      });\n      return;\n    }\n\n    if (status.someSucceeded && !status.oneSucceeded && status.someFailed) {\n      this.notificationService.showWarning('APP.MESSAGES.INFO.TRASH.NODES_PURGE.PARTIAL_PLURAL', null, {\n        number: status.success.length,\n        failed: status.fail.length\n      });\n      return;\n    }\n\n    if (status.oneSucceeded) {\n      this.notificationService.showInfo('APP.MESSAGES.INFO.TRASH.NODES_PURGE.SINGULAR', null, { name: status.success[0].name });\n      return;\n    }\n\n    if (status.oneFailed) {\n      this.notificationService.showError('APP.MESSAGES.ERRORS.TRASH.NODES_PURGE.SINGULAR', null, { name: status.fail[0].name });\n      return;\n    }\n\n    if (status.allSucceeded) {\n      this.notificationService.showInfo('APP.MESSAGES.INFO.TRASH.NODES_PURGE.PLURAL', null, { number: status.success.length });\n      return;\n    }\n\n    if (status.allFailed) {\n      this.notificationService.showError('APP.MESSAGES.ERRORS.TRASH.NODES_PURGE.PLURAL', null, { number: status.fail.length });\n      return;\n    }\n  }\n\n  private showRestoreNotification(status: DeleteStatus): void {\n    const messageData = this.getRestoreMessageData(status);\n\n    if (messageData) {\n      const translatedMessage: string = this.translation.instant(messageData.key, messageData.params);\n      const action: string = messageData.userActionLabel ? this.translation.instant(messageData.userActionLabel) : '';\n      const panelClass = messageData.type === 'error' ? 'adf-error-snackbar' : 'adf-info-snackbar';\n\n      const snackBarRef = this.notificationService.openSnackMessageAction(translatedMessage, action, { panelClass }, messageData.params);\n\n      if (messageData.userActionLabel && status.oneSucceeded && !status.someFailed) {\n        snackBarRef.onAction().subscribe(() => {\n          const isSite = this.isSite(status.success[0].entry);\n          const path: PathInfo = status.success[0].entry.path;\n          const parent = path.elements[path.elements.length - 1];\n          const route = isSite ? ['/libraries', parent.id] : ['/personal-files', parent.id];\n\n          if (this.isLibraryContent(path)) {\n            this.store.dispatch(new NavigateToParentFolder(status.success[0]));\n          } else {\n            this.store.dispatch(new NavigateRouteAction(route));\n          }\n        });\n      }\n    }\n  }\n\n  private isSite(entry: Node): boolean {\n    return entry.nodeType === 'st:site';\n  }\n\n  private isLibraryContent(path: PathInfo): boolean {\n    return path && path.elements.length >= 2 && path.elements[1].name === 'Sites';\n  }\n\n  private getRestoreMessageData(status: DeleteStatus): SnackbarMessageData | null {\n    if (status.someFailed && !status.oneFailed) {\n      return {\n        key: 'APP.MESSAGES.ERRORS.TRASH.NODES_RESTORE.PARTIAL_PLURAL',\n        params: { number: status.fail.length },\n        type: 'error'\n      };\n    }\n\n    if (status.oneFailed && status.fail[0].statusCode) {\n      return {\n        key:\n          status.fail[0].statusCode === 409\n            ? 'APP.MESSAGES.ERRORS.TRASH.NODES_RESTORE.NODE_EXISTS'\n            : 'APP.MESSAGES.ERRORS.TRASH.NODES_RESTORE.GENERIC',\n        params: { name: status.fail[0].entry.name },\n        type: 'error'\n      };\n    }\n\n    if (status.oneFailed && !status.fail[0].statusCode) {\n      return {\n        key: 'APP.MESSAGES.ERRORS.TRASH.NODES_RESTORE.LOCATION_MISSING',\n        params: { name: status.fail[0].entry.name },\n        type: 'error'\n      };\n    }\n\n    if (status.allSucceeded && !status.oneSucceeded) {\n      return {\n        key: 'APP.MESSAGES.INFO.TRASH.NODES_RESTORE.PLURAL',\n        params: {},\n        type: 'info'\n      };\n    }\n\n    if (status.allSucceeded && status.oneSucceeded) {\n      return {\n        key: 'APP.MESSAGES.INFO.TRASH.NODES_RESTORE.SINGULAR',\n        params: { name: status.success[0].entry.name },\n        userActionLabel: 'APP.ACTIONS.VIEW',\n        type: 'info'\n      };\n    }\n\n    return null;\n  }\n\n  private diff(selection: any[], list: any[], 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 deleteNode(node: any): Observable<DeletedNodeInfo> {\n    const { name } = node.entry;\n    const id = node.entry.nodeId || node.entry.id;\n\n    return this.contentApi.deleteNode(id).pipe(\n      map(() => ({\n        id,\n        name,\n        status: 1\n      })),\n      catchError(() =>\n        of({\n          id,\n          name,\n          status: 0\n        })\n      )\n    );\n  }\n\n  private getDeleteMessageData(status: DeleteStatus): SnackbarMessageData | null {\n    if (status.allFailed && !status.oneFailed) {\n      return {\n        key: 'APP.MESSAGES.ERRORS.NODE_DELETION_PLURAL',\n        params: { number: status.fail.length },\n        type: 'error'\n      };\n    }\n\n    if (status.allSucceeded && !status.oneSucceeded) {\n      return {\n        key: 'APP.MESSAGES.INFO.NODE_DELETION.PLURAL',\n        params: { number: status.success.length },\n        type: 'info'\n      };\n    }\n\n    if (status.someFailed && status.someSucceeded && !status.oneSucceeded) {\n      return {\n        key: 'APP.MESSAGES.INFO.NODE_DELETION.PARTIAL_PLURAL',\n        params: { success: status.success.length, failed: status.fail.length },\n        type: 'warning'\n      };\n    }\n\n    if (status.someFailed && status.oneSucceeded) {\n      return {\n        key: 'APP.MESSAGES.INFO.NODE_DELETION.PARTIAL_SINGULAR',\n        params: { success: status.success.length, failed: status.fail.length },\n        type: 'warning'\n      };\n    }\n\n    if (status.oneFailed && !status.someSucceeded) {\n      return {\n        key: 'APP.MESSAGES.ERRORS.NODE_DELETION',\n        params: { name: status.fail[0].name },\n        type: 'error'\n      };\n    }\n\n    if (status.oneSucceeded && !status.someFailed) {\n      return {\n        key: 'APP.MESSAGES.INFO.NODE_DELETION.SINGULAR',\n        params: { name: status.success[0].name },\n        type: 'info'\n      };\n    }\n\n    return null;\n  }\n\n  private showMoveMessage(nodes: Array<NodeEntry>, info: any, moveResponse?: any) {\n    const succeeded = moveResponse?.['succeeded'].length ?? 0;\n    const partiallySucceeded = moveResponse?.['partiallySucceeded'].length ?? 0;\n    const failures = moveResponse?.['failed'].length ?? 0;\n\n    let successMessage = '';\n    let partialSuccessMessage = '';\n    let failedMessage = '';\n    let errorMessage = '';\n\n    if (typeof info === 'string') {\n      // in case of success\n      if (info.toLowerCase().indexOf('succes') !== -1) {\n        const i18nMessageString = 'APP.MESSAGES.INFO.NODE_MOVE.';\n        let i18MessageSuffix = '';\n\n        if (succeeded) {\n          i18MessageSuffix = succeeded === 1 ? 'SINGULAR' : 'PLURAL';\n          successMessage = `${i18nMessageString}${i18MessageSuffix}`;\n        }\n\n        if (partiallySucceeded) {\n          i18MessageSuffix = partiallySucceeded === 1 ? 'PARTIAL.SINGULAR' : 'PARTIAL.PLURAL';\n          partialSuccessMessage = `${i18nMessageString}${i18MessageSuffix}`;\n        }\n\n        if (failures) {\n          // if moving failed for ALL nodes, emit error\n          if (failures === nodes.length) {\n            const errors = this.nodeActionsService.flatten(moveResponse['failed']);\n            errorMessage = this.getErrorMessage(errors[0]);\n          } else {\n            i18MessageSuffix = 'PARTIAL.FAIL';\n            failedMessage = `${i18nMessageString}${i18MessageSuffix}`;\n          }\n        }\n      } else {\n        errorMessage = 'APP.MESSAGES.ERRORS.GENERIC';\n      }\n    } else {\n      errorMessage = this.getErrorMessage(info);\n    }\n\n    const undo = succeeded + partiallySucceeded > 0 ? this.translation.instant('APP.ACTIONS.UNDO') : '';\n    failedMessage = errorMessage ? errorMessage : failedMessage;\n\n    const beforePartialSuccessMessage = successMessage && partialSuccessMessage ? ' ' : '';\n    const beforeFailedMessage = (successMessage || partialSuccessMessage) && failedMessage ? ' ' : '';\n\n    const initialParentId = this.nodeActionsService.getEntryParentId(nodes[0].entry);\n\n    const messages = this.translation.instant([successMessage, partialSuccessMessage, failedMessage], {\n      success: succeeded,\n      failed: failures,\n      partially: partiallySucceeded\n    });\n\n    let notificationType = 'adf-warning-snackbar';\n    if (partiallySucceeded === 0 && succeeded === 0) {\n      notificationType = 'adf-error-snackbar';\n    } else if (failures === 0 && partiallySucceeded === 0) {\n      notificationType = 'adf-info-snackbar';\n    }\n\n    // TODO: review in terms of i18n\n    this.notificationService\n      .openSnackMessageAction(\n        messages[successMessage] + beforePartialSuccessMessage + messages[partialSuccessMessage] + beforeFailedMessage + messages[failedMessage],\n        undo,\n        {\n          panelClass: notificationType\n        }\n      )\n      .onAction()\n      .subscribe(() => this.undoMoveNodes(moveResponse, initialParentId));\n  }\n\n  private focusAfterClose(focusedElementSelector: string): void {\n    if (focusedElementSelector) {\n      document.querySelector<HTMLElement>(focusedElementSelector)?.focus();\n    }\n  }\n\n  showNodeInformation(node: NodeEntry) {\n    this.dialogRef.open(DialogComponent, {\n      data: {\n        title: 'APP.NODE_INFO.TITLE',\n        confirmButtonTitle: 'APP.NODE_INFO.DONE',\n        isCancelButtonHidden: true,\n        isCloseButtonHidden: false,\n        dialogSize: DialogSize.Large,\n        contentComponent: NodeInformationComponent,\n        componentData: node.entry\n      },\n      width: '700px'\n    });\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { inject, Injectable } from '@angular/core';\nimport { map, take } from 'rxjs/operators';\nimport { AddFavoriteAction, AppStore, getAppSelection, NodeActionTypes, RemoveFavoriteAction } from '@alfresco/aca-shared/store';\nimport { Store } from '@ngrx/store';\nimport { ContentManagementService } from '../../services/content-management.service';\n\n@Injectable()\nexport class FavoriteEffects {\n  private readonly store = inject(Store<AppStore>);\n  private readonly actions$ = inject(Actions);\n  private readonly content = inject(ContentManagementService);\n\n  addFavorite$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType<AddFavoriteAction>(NodeActionTypes.AddFavorite),\n        map((action) => {\n          if (action.payload && action.payload.length > 0) {\n            this.content.addFavorite(action.payload, action.configuration.focusedElementOnCloseSelector);\n          } else {\n            this.store\n              .select(getAppSelection)\n              .pipe(take(1))\n              .subscribe((selection) => {\n                if (selection && !selection.isEmpty) {\n                  this.content.addFavorite(selection.nodes, action.configuration.focusedElementOnCloseSelector);\n                }\n              });\n          }\n        })\n      ),\n    { dispatch: false }\n  );\n\n  removeFavorite$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType<RemoveFavoriteAction>(NodeActionTypes.RemoveFavorite),\n        map((action) => {\n          if (action.payload && action.payload.length > 0) {\n            this.content.removeFavorite(action.payload, action.configuration.focusedElementOnCloseSelector);\n          } else {\n            this.store\n              .select(getAppSelection)\n              .pipe(take(1))\n              .subscribe((selection) => {\n                if (selection && !selection.isEmpty) {\n                  this.content.removeFavorite(selection.nodes, action.configuration.focusedElementOnCloseSelector);\n                }\n              });\n          }\n        })\n      ),\n    { dispatch: false }\n  );\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { inject, Injectable, SecurityContext } from '@angular/core';\nimport { first, map, take } from 'rxjs/operators';\nimport { Store } from '@ngrx/store';\nimport {\n  AppStore,\n  CopyNodesAction,\n  CreateFolderAction,\n  DeleteNodesAction,\n  EditFolderAction,\n  ExpandInfoDrawerAction,\n  getAppSelection,\n  getCurrentFolder,\n  getNodeContentSource,\n  LinkNodesAction,\n  LocateLinkedItemAction,\n  ManageAspectsAction,\n  ManagePermissionsAction,\n  ManageRulesAction,\n  ManageVersionsAction,\n  MoveNodesAction,\n  NavigateRouteAction,\n  NavigateUrlAction,\n  NodeActionTypes,\n  NodeInformationAction,\n  PrintFileAction,\n  PurgeDeletedNodesAction,\n  RestoreDeletedNodesAction,\n  SetInfoDrawerStateAction,\n  ShareNodeAction,\n  UndoDeleteNodesAction,\n  UnlockWriteAction,\n  UnshareNodesAction\n} from '@alfresco/aca-shared/store';\nimport { ContentManagementService } from '../../services/content-management.service';\nimport { RenditionService } from '@alfresco/adf-content-services';\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { Node } from '@alfresco/js-api';\n\n@Injectable()\nexport class NodeEffects {\n  private readonly store = inject(Store<AppStore>);\n  private readonly actions$ = inject(Actions);\n  private readonly router = inject(Router);\n  private readonly contentService = inject(ContentManagementService);\n  private readonly renditionViewer = inject(RenditionService);\n  private readonly activatedRoute = inject(ActivatedRoute);\n  private readonly sanitizer = inject(DomSanitizer);\n\n  shareNode$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType<ShareNodeAction>(NodeActionTypes.Share),\n        map((action) => {\n          if (action.payload) {\n            this.contentService.shareNode(action.payload, action.configuration?.focusedElementOnCloseSelector);\n          } else {\n            this.store\n              .select(getAppSelection)\n              .pipe(take(1))\n              .subscribe((selection) => {\n                if (selection?.file) {\n                  this.contentService.shareNode(selection.file, action.configuration?.focusedElementOnCloseSelector);\n                }\n              });\n          }\n        })\n      ),\n    { dispatch: false }\n  );\n\n  unshareNodes$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType<UnshareNodesAction>(NodeActionTypes.Unshare),\n        map((action) => {\n          if (action?.payload?.length > 0) {\n            this.contentService.unshareNodes(action.payload);\n          } else {\n            this.store\n              .select(getAppSelection)\n              .pipe(take(1))\n              .subscribe((selection) => {\n                if (selection && !selection.isEmpty) {\n                  this.contentService.unshareNodes(selection.nodes);\n                }\n              });\n          }\n        })\n      ),\n    { dispatch: false }\n  );\n\n  purgeDeletedNodes$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType<PurgeDeletedNodesAction>(NodeActionTypes.PurgeDeleted),\n        map((action) => {\n          if (action?.payload?.length > 0) {\n            this.contentService.purgeDeletedNodes(action.payload, action.configuration?.focusedElementOnCloseSelector);\n          } else {\n            this.store\n              .select(getAppSelection)\n              .pipe(take(1))\n              .subscribe((selection) => {\n                if (selection && selection.count > 0) {\n                  this.contentService.purgeDeletedNodes(selection.nodes, action.configuration?.focusedElementOnCloseSelector);\n                }\n              });\n          }\n        })\n      ),\n    { dispatch: false }\n  );\n\n  restoreDeletedNodes$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType<RestoreDeletedNodesAction>(NodeActionTypes.RestoreDeleted),\n        map((action) => {\n          if (action?.payload?.length > 0) {\n            this.contentService.restoreDeletedNodes(action.payload, action.configuration?.focusedElementOnCloseSelector);\n          } else {\n            this.store\n              .select(getAppSelection)\n              .pipe(take(1))\n              .subscribe((selection) => {\n                if (selection && selection.count > 0) {\n                  this.contentService.restoreDeletedNodes(selection.nodes, action.configuration?.focusedElementOnCloseSelector);\n                }\n              });\n          }\n        })\n      ),\n    { dispatch: false }\n  );\n\n  deleteNodes$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType<DeleteNodesAction>(NodeActionTypes.Delete),\n        map((action) => {\n          if (action?.payload?.length > 0) {\n            this.contentService.deleteNodes(action.payload, action.allowUndo, action.configuration?.focusedElementOnCloseSelector);\n          } else {\n            this.store\n              .select(getAppSelection)\n              .pipe(take(1))\n              .subscribe((selection) => {\n                if (selection && selection.count > 0) {\n                  this.contentService.deleteNodes(selection.nodes, action.allowUndo, action.configuration?.focusedElementOnCloseSelector);\n                }\n              });\n          }\n        })\n      ),\n    { dispatch: false }\n  );\n\n  undoDeleteNodes$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType<UndoDeleteNodesAction>(NodeActionTypes.UndoDelete),\n        map((action) => {\n          if (action.payload.length > 0) {\n            this.contentService.undoDeleteNodes(action.payload);\n          }\n        })\n      ),\n    { dispatch: false }\n  );\n\n  createFolder$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType<CreateFolderAction>(NodeActionTypes.CreateFolder),\n        map((action) => {\n          if (action.payload) {\n            this.contentService.createFolder(action.payload);\n          } else {\n            this.store\n              .select(getCurrentFolder)\n              .pipe(take(1))\n              .subscribe((node) => {\n                if (node?.id) {\n                  this.contentService.createFolder(node.id);\n                }\n              });\n          }\n        })\n      ),\n    { dispatch: false }\n  );\n\n  editFolder$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType<EditFolderAction>(NodeActionTypes.EditFolder),\n        map((action) => {\n          if (action.payload) {\n            this.contentService.editFolder(action.payload);\n          } else {\n            this.store\n              .select(getAppSelection)\n              .pipe(take(1))\n              .subscribe((selection) => {\n                if (selection?.folder) {\n                  this.contentService.editFolder(selection.folder, action.configuration?.focusedElementOnCloseSelector);\n                }\n              });\n          }\n        })\n      ),\n    { dispatch: false }\n  );\n\n  copyNodes$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType<CopyNodesAction>(NodeActionTypes.Copy),\n        map((action) => {\n          if (action.payload?.length > 0) {\n            this.contentService.copyNodes(action.payload);\n          } else {\n            this.store\n              .select(getAppSelection)\n              .pipe(take(1))\n              .subscribe((selection) => {\n                if (selection && !selection.isEmpty) {\n                  this.contentService.copyNodes(selection.nodes, action.configuration?.focusedElementOnCloseSelector);\n                }\n              });\n          }\n        })\n      ),\n    { dispatch: false }\n  );\n\n  moveNodes$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType<MoveNodesAction>(NodeActionTypes.Move),\n        map((action) => {\n          if (action.payload?.length > 0) {\n            this.contentService.moveNodes(action.payload);\n          } else {\n            this.store\n              .select(getAppSelection)\n              .pipe(take(1))\n              .subscribe((selection) => {\n                if (selection && !selection.isEmpty) {\n                  this.contentService.moveNodes(selection.nodes, action.configuration?.focusedElementOnCloseSelector);\n                }\n              });\n          }\n        })\n      ),\n    { dispatch: false }\n  );\n\n  createLink$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType<LinkNodesAction>(NodeActionTypes.Link),\n        map((action) => {\n          if (action.payload?.length > 0) {\n            this.contentService.linkNodes(action.payload);\n          } else {\n            this.store\n              .select(getAppSelection)\n              .pipe(take(1))\n              .subscribe((selection) => {\n                if (selection && !selection.isEmpty) {\n                  this.contentService.linkNodes(selection.nodes, action.configuration?.focusedElementOnCloseSelector);\n                }\n              });\n          }\n        })\n      ),\n    { dispatch: false }\n  );\n\n  locateLinkedItem$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType<LocateLinkedItemAction>(NodeActionTypes.Locate),\n        map((action) => {\n          if (action.payload?.length > 0) {\n            this.contentService.navigateToLinkTarget(action.payload[0]);\n          } else {\n            this.store\n              .select(getAppSelection)\n              .pipe(take(1))\n              .subscribe((selection) => {\n                if (selection && !selection.isEmpty) {\n                  this.contentService.navigateToLinkTarget(selection.nodes[0]);\n                }\n              });\n          }\n        })\n      ),\n    { dispatch: false }\n  );\n\n  managePermissions$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType<ManagePermissionsAction>(NodeActionTypes.ManagePermissions),\n        map((action) => {\n          this.router.events\n            .pipe(first((event) => event instanceof NavigationEnd))\n            .subscribe(() => this.store.dispatch(new SetInfoDrawerStateAction(true)));\n          if (action?.payload) {\n            const route = this.getDetailsRoute(action.payload.entry);\n            this.store.dispatch(new NavigateUrlAction([route, action.payload.entry.id, 'permissions'].join('/')));\n          } else {\n            this.store\n              .select(getAppSelection)\n              .pipe(take(1))\n              .subscribe((selection) => {\n                if (selection && !selection.isEmpty) {\n                  const route = this.getDetailsRoute(selection.last.entry);\n                  this.store.dispatch(new NavigateUrlAction([route, selection.last.entry.id, 'permissions'].join('/')));\n                }\n              });\n          }\n        })\n      ),\n    { dispatch: false }\n  );\n\n  expandInfoDrawer$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType<ExpandInfoDrawerAction>(NodeActionTypes.ExpandInfoDrawer),\n        map((action) => {\n          this.router.events\n            .pipe(first((event) => event instanceof NavigationEnd))\n            .subscribe(() => this.store.dispatch(new SetInfoDrawerStateAction(true)));\n\n          this.activatedRoute.queryParams.pipe(take(1)).subscribe((params) => {\n            const location = params.location || this.router.url;\n            const sanitizedLocation = this.sanitizer.sanitize(SecurityContext.URL, location);\n\n            if (action?.payload) {\n              const route = this.getDetailsRoute(action.payload.entry, location);\n              this.store.dispatch(new NavigateUrlAction([route, action.payload.entry.id].join('/') + `?location=${sanitizedLocation}`));\n            } else {\n              this.store\n                .select(getAppSelection)\n                .pipe(take(1))\n                .subscribe((selection) => {\n                  if (selection && !selection.isEmpty) {\n                    const route = this.getDetailsRoute(selection.last.entry, location);\n                    this.store.dispatch(new NavigateUrlAction([route, selection.last.entry.id].join('/') + `?location=${sanitizedLocation}`));\n                  }\n                });\n            }\n          });\n        })\n      ),\n    { dispatch: false }\n  );\n\n  manageVersions$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType<ManageVersionsAction>(NodeActionTypes.ManageVersions),\n        map((action) => {\n          if (action?.payload) {\n            this.contentService.manageVersions(action.payload);\n          } else {\n            this.store\n              .select(getAppSelection)\n              .pipe(take(1))\n              .subscribe((selection) => {\n                if (selection?.file) {\n                  this.contentService.manageVersions(selection.file, action.configuration?.focusedElementOnCloseSelector);\n                }\n              });\n          }\n        })\n      ),\n    { dispatch: false }\n  );\n\n  printFile$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType<PrintFileAction>(NodeActionTypes.PrintFile),\n        map((action) => {\n          if (action?.payload) {\n            this.printFile(action.payload);\n          } else {\n            this.store\n              .select(getAppSelection)\n              .pipe(take(1))\n              .subscribe((selection) => {\n                if (selection?.file) {\n                  this.printFile(selection.file);\n                }\n              });\n          }\n        })\n      ),\n    { dispatch: false }\n  );\n\n  unlockWrite$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType<UnlockWriteAction>(NodeActionTypes.UnlockForWriting),\n        map((action) => {\n          if (action?.payload) {\n            this.contentService.unlockNode(action.payload);\n          } else {\n            this.store\n              .select(getAppSelection)\n              .pipe(take(1))\n              .subscribe((selection) => {\n                if (selection?.file) {\n                  this.contentService.unlockNode(selection.file);\n                }\n              });\n          }\n        })\n      ),\n    { dispatch: false }\n  );\n\n  aspectList$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType<ManageAspectsAction>(NodeActionTypes.ChangeAspects),\n        map((action) => {\n          if (action?.payload) {\n            this.contentService.manageAspects(action.payload);\n          } else {\n            this.store\n              .select(getAppSelection)\n              .pipe(take(1))\n              .subscribe((selection) => {\n                if (selection && !selection.isEmpty) {\n                  this.contentService.manageAspects(selection.nodes[0], action.configuration?.focusedElementOnCloseSelector);\n                }\n              });\n          }\n        })\n      ),\n    { dispatch: false }\n  );\n\n  printFile(node: any) {\n    if (node?.entry) {\n      // shared and favorite\n      const id = node.entry.nodeId || node.entry.guid || node.entry.id;\n      const mimeType = node.entry.content.mimeType;\n\n      if (id) {\n        this.renditionViewer.printFileGeneric(id, mimeType);\n      }\n    }\n  }\n\n  manageRules$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType<ManageRulesAction>(NodeActionTypes.ManageRules),\n        map((action) => {\n          if (action?.payload) {\n            this.store.dispatch(new NavigateRouteAction(['nodes', action.payload.entry.id, 'rules']));\n          } else {\n            this.store\n              .select(getAppSelection)\n              .pipe(take(1))\n              .subscribe((selection) => {\n                if (selection && !selection.isEmpty) {\n                  this.store.dispatch(new NavigateRouteAction(['nodes', selection.first.entry.id, 'rules']));\n                }\n              });\n          }\n        })\n      ),\n    { dispatch: false }\n  );\n\n  nodeInformation$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType<NodeInformationAction>(NodeActionTypes.NodeInformation),\n        map((action) => {\n          if (action?.payload) {\n            this.contentService.showNodeInformation(action.payload);\n          } else {\n            this.store\n              .select(getAppSelection)\n              .pipe(take(1))\n              .subscribe((selection) => {\n                if (selection && !selection.isEmpty) {\n                  this.contentService.showNodeInformation(selection.nodes[0]);\n                }\n              });\n          }\n        })\n      ),\n    { dispatch: false }\n  );\n\n  private getDetailsRoute(entry: Node, location = this.router.url): string {\n    const isRepository = location?.includes('/repository') || getNodeContentSource(entry?.path) === 'repository';\n    return `${isRepository ? 'repository' : 'personal-files'}/details`;\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { inject, Injectable } from '@angular/core';\nimport { map, take, tap } from 'rxjs/operators';\nimport {\n  AppStore,\n  FullscreenViewerAction,\n  getAppSelection,\n  getCurrentFolder,\n  PluginPreviewAction,\n  ViewerActionTypes,\n  ViewFileAction,\n  ViewNodeAction,\n  ViewNodeVersionAction\n} from '@alfresco/aca-shared/store';\nimport { PRIMARY_OUTLET, Router, UrlSegment, UrlSegmentGroup, UrlTree } from '@angular/router';\nimport { createSelector, Store } from '@ngrx/store';\nimport { AppExtensionService } from '@alfresco/aca-shared';\nimport { MatDialog } from '@angular/material/dialog';\n\nexport const fileToPreview = createSelector(getAppSelection, getCurrentFolder, (selection, folder) => ({\n  selection,\n  folder\n}));\n\n@Injectable()\nexport class ViewerEffects {\n  private readonly store = inject(Store<AppStore>);\n  private readonly actions$ = inject(Actions);\n  private readonly router = inject(Router);\n  private readonly extensions = inject(AppExtensionService);\n  private readonly dialog = inject(MatDialog);\n\n  fullscreenViewer$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType<FullscreenViewerAction>(ViewerActionTypes.FullScreen),\n        map(() => {\n          this.enterFullScreen();\n        })\n      ),\n    { dispatch: false }\n  );\n\n  viewNode$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType<ViewNodeAction>(ViewerActionTypes.ViewNode),\n        map((action) => {\n          if (action.viewNodeExtras) {\n            const { location, path } = action.viewNodeExtras;\n\n            if (location) {\n              const navigation = this.getNavigationCommands(location);\n\n              this.router.navigate([...navigation, { outlets: { viewer: ['view', action.nodeId] } }], {\n                queryParams: { location }\n              });\n            }\n\n            if (path) {\n              this.router.navigate(['view', { outlets: { viewer: [action.nodeId] } }], {\n                queryParams: { path }\n              });\n            }\n          } else {\n            this.router.navigate(['view', { outlets: { viewer: [action.nodeId] } }]);\n          }\n        })\n      ),\n    { dispatch: false }\n  );\n\n  viewFile$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType<ViewFileAction>(ViewerActionTypes.ViewFile),\n        map((action) => {\n          if (action.payload?.entry) {\n            const { id, nodeId, isFile } = action.payload.entry as any;\n\n            if (this.extensions.canPreviewNode(action.payload) && (isFile || nodeId)) {\n              this.displayPreview(nodeId || id, action.parentId);\n            }\n          } else {\n            this.store\n              .select(fileToPreview)\n              .pipe(take(1))\n              .subscribe((result) => {\n                if (result.selection?.file) {\n                  const { id, nodeId, isFile } = result.selection.file.entry as any;\n\n                  if (this.extensions.canPreviewNode(action.payload) && (isFile || nodeId)) {\n                    const parentId = result.folder ? result.folder.id : null;\n                    this.displayPreview(nodeId || id, parentId);\n                  }\n                }\n              });\n          }\n        })\n      ),\n    { dispatch: false }\n  );\n\n  viewNodeVersion$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType<ViewNodeVersionAction>(ViewerActionTypes.ViewNodeVersion),\n        map((action) => {\n          this.dialog.closeAll();\n          if (action.viewNodeExtras) {\n            const { location, path } = action.viewNodeExtras;\n            if (location) {\n              const navigation = this.getNavigationCommands(location);\n              this.router.navigate([...navigation, { outlets: { viewer: ['view', action.nodeId, action.versionId] } }], {\n                queryParams: { location }\n              });\n            }\n\n            if (path) {\n              this.router.navigate(['view', { outlets: { viewer: [action.nodeId, action.versionId] } }], {\n                queryParams: { path }\n              });\n            }\n          } else {\n            this.router.navigate(['view', { outlets: { viewer: [action.nodeId, action.versionId] } }]);\n          }\n        })\n      ),\n    { dispatch: false }\n  );\n\n  pluginPreview$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType<PluginPreviewAction>(ViewerActionTypes.PluginPreview),\n        tap((action) => {\n          this.router.navigate([\n            action.pluginRoute,\n            {\n              outlets: {\n                viewer: ['preview', action.nodeId]\n              }\n            }\n          ]);\n        })\n      ),\n    { dispatch: false }\n  );\n\n  private displayPreview(nodeId: string, parentId: string) {\n    if (!nodeId) {\n      return;\n    }\n\n    let previewLocation = this.router.url;\n    if (previewLocation.lastIndexOf('/') > 0) {\n      previewLocation = previewLocation.substring(0, this.router.url.indexOf('/', 1));\n    }\n    previewLocation = previewLocation.replace(/\\//g, '');\n\n    const path = [previewLocation];\n    if (parentId) {\n      path.push(parentId);\n    }\n    path.push('preview', nodeId);\n    this.router.navigateByUrl(path.join('/'));\n  }\n\n  enterFullScreen() {\n    const container: any = document.documentElement.querySelector('.adf-viewer__fullscreen-container');\n    if (container) {\n      if (container.requestFullscreen) {\n        container.requestFullscreen();\n      } else if (container.webkitRequestFullscreen) {\n        container.webkitRequestFullscreen();\n      } else if (container.mozRequestFullScreen) {\n        container.mozRequestFullScreen();\n      } else if (container.msRequestFullscreen) {\n        container.msRequestFullscreen();\n      }\n    }\n  }\n\n  private getNavigationCommands(url: string): any[] {\n    const urlTree: UrlTree = this.router.parseUrl(url);\n    const urlSegmentGroup: UrlSegmentGroup = urlTree.root.children[PRIMARY_OUTLET];\n\n    if (!urlSegmentGroup) {\n      return [url];\n    }\n\n    const urlSegments: UrlSegment[] = urlSegmentGroup.segments;\n\n    return urlSegments.reduce(function (acc, item) {\n      acc.push(item.path, item.parameters);\n      return acc;\n    }, []);\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\n/**\n * Checks if string is an AND or OR operator\n *\n * @param input string to check if it is an operator\n * @returns boolean\n */\nexport function isOperator(input: string): boolean {\n  if (input) {\n    const operators = ['AND', 'OR'];\n    return operators.includes(input.trim());\n  }\n  return false;\n}\n\n/**\n * Formats a search term by provided fields\n *\n * @param term search term\n * @param fields array of fields\n * @param wildcardsEnabled whether wildcards are enabled\n * @returns string\n */\nexport function formatSearchTermByFields(term: string, fields: string[], wildcardsEnabled = false): string {\n  const suffix = wildcardsEnabled ? '*' : '';\n  return '(' + fields.map((field) => `${field}:\"${term}${suffix}\"`).join(' OR ') + ')';\n}\n\n/**\n * Formats a search term, splits by words, skips custom queries containing ':' or '\"'\n *\n * @param userInput search term\n * @param fields array of fields\n * @param searchMode regular or formula search mode\n * @param wildcardsEnabled whether wildcards are enabled\n * @returns string\n */\nexport function formatSearchTerm(\n  userInput: string,\n  fields = ['cm:name'],\n  searchMode: 'regular' | 'formula' = 'regular',\n  wildcardsEnabled = false\n): string {\n  if (!userInput) {\n    return '';\n  }\n  userInput = userInput.trim();\n\n  if (searchMode === 'formula') {\n    return userInput;\n  }\n\n  const words = userInput.split(/\\s+/);\n\n  if (words.length > 1) {\n    const separator = words.some(isOperator) ? ' ' : ' AND ';\n    return '(' + words.map((term) => (isOperator(term) ? term : formatSearchTermByFields(term, fields, wildcardsEnabled))).join(separator) + ')';\n  }\n\n  return '(' + formatSearchTermByFields(userInput, fields, wildcardsEnabled) + ')';\n}\n\n/**\n * Decodes a query and extracts the user query\n *\n * @param encodedQuery encoded query\n * @returns string\n */\nexport function extractUserQueryFromEncodedQuery(encodedQuery: string): string {\n  if (encodedQuery) {\n    const decodedQuery: { [key: string]: any } = JSON.parse(new TextDecoder().decode(Uint8Array.from(atob(encodedQuery), (c) => c.charCodeAt(0))));\n    return decodedQuery.userQuery ?? '';\n  }\n  return '';\n}\n\n/**\n * Decodes a query and extracts parsed query\n *\n * @param encodedQuery encoded query\n * @returns string\n */\nexport function extractParsedQueryFromEncodedQuery(encodedQuery: string): string {\n  if (encodedQuery) {\n    const decodedQuery: { [key: string]: any } = JSON.parse(new TextDecoder().decode(Uint8Array.from(atob(encodedQuery), (c) => c.charCodeAt(0))));\n    return decodedQuery.parsedQuery ?? '';\n  }\n  return '';\n}\n\n/**\n * Extracts filters configuration from encoded query\n *\n * @param encodedQuery encoded query\n * @returns object containing filters configuration\n */\nexport function extractFiltersFromEncodedQuery(encodedQuery: string): any {\n  if (encodedQuery) {\n    const decodedQuery = new TextDecoder().decode(Uint8Array.from(atob(encodedQuery), (c) => c.charCodeAt(0)));\n    return JSON.parse(decodedQuery);\n  }\n  return null;\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Injectable, inject } from '@angular/core';\nimport { PRIMARY_OUTLET, Router, UrlSegment, UrlSegmentGroup, UrlTree } from '@angular/router';\nimport { extractUserQueryFromEncodedQuery } from '../../utils/aca-search-utils';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class SearchNavigationService {\n  private readonly router = inject(Router);\n\n  private _previousRoute = '';\n\n  get previousRoute(): string {\n    return this._previousRoute;\n  }\n\n  get onLibrariesSearchResults(): boolean {\n    return this.router?.url.indexOf('/search-libraries') === 0;\n  }\n\n  get onSearchResults(): boolean {\n    return !this.onLibrariesSearchResults && this.router?.url.indexOf('/search') === 0;\n  }\n\n  saveRoute(route: string): void {\n    this._previousRoute = route;\n  }\n\n  navigateBack(): void {\n    if (this.previousRoute) {\n      this.router.navigate([this.previousRoute]);\n    } else {\n      this.router.navigate(['/personal-files']);\n    }\n  }\n\n  navigateToSearch(): void {\n    this.saveRoute(this.router.url);\n    this.router.navigate(['/search']);\n  }\n\n  getUrlSearchTerm(): string {\n    if (!this.onSearchResults && !this.onLibrariesSearchResults) {\n      return '';\n    }\n\n    const urlTree: UrlTree = this.router.parseUrl(this.router.url);\n    const urlSegmentGroup: UrlSegmentGroup = urlTree.root.children[PRIMARY_OUTLET];\n\n    if (urlSegmentGroup) {\n      const urlSegments: UrlSegment[] = urlSegmentGroup.segments;\n      return extractUserQueryFromEncodedQuery(urlSegments[0].parameters['q']);\n    }\n\n    return '';\n  }\n\n  isSameSearchTerm(searchedWord: string): boolean {\n    return searchedWord === this.getUrlSearchTerm();\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { inject, Injectable } from '@angular/core';\nimport { map } from 'rxjs/operators';\nimport { SearchAction, SearchActionTypes, SearchByTermAction, SearchOptionIds } from '@alfresco/aca-shared/store';\nimport { SearchNavigationService } from '../../components/search/search-navigation.service';\nimport { SearchQueryBuilderService } from '@alfresco/adf-content-services';\n\n@Injectable()\nexport class SearchEffects {\n  private readonly actions$ = inject(Actions);\n  private readonly queryBuilder = inject(SearchQueryBuilderService);\n  private readonly searchNavigationService = inject(SearchNavigationService);\n\n  search$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType<SearchAction>(SearchActionTypes.Search),\n        map(() => {\n          this.searchNavigationService.navigateToSearch();\n        })\n      ),\n    { dispatch: false }\n  );\n\n  searchByTerm$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType<SearchByTermAction>(SearchActionTypes.SearchByTerm),\n        map((action) => {\n          const libItem = action.searchOptions.find((item) => item.id === SearchOptionIds.Libraries);\n          const librarySelected = !!libItem && libItem.value;\n          this.queryBuilder.navigateToSearch(action.payload, librarySelected ? '/search-libraries' : '/search');\n        })\n      ),\n    { dispatch: false }\n  );\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport {\n  AppStore,\n  CreateLibraryAction,\n  DeleteLibraryAction,\n  getAppSelection,\n  LeaveLibraryAction,\n  LibraryActionTypes,\n  NavigateLibraryAction,\n  NavigateRouteAction,\n  UpdateLibraryAction,\n  isAdmin\n} from '@alfresco/aca-shared/store';\nimport { inject, Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { map, mergeMap, take, tap } from 'rxjs/operators';\nimport { ContentApiService } from '@alfresco/aca-shared';\nimport { ContentManagementService } from '../../services/content-management.service';\nimport { NotificationService } from '@alfresco/adf-core';\nimport { HttpErrorResponse } from '@angular/common/http';\n\n@Injectable()\nexport class LibraryEffects {\n  private readonly notificationService = inject(NotificationService);\n  private readonly store = inject(Store<AppStore>);\n  private readonly actions$ = inject(Actions);\n  private readonly content = inject(ContentManagementService);\n  private readonly contentApi = inject(ContentApiService);\n\n  deleteLibrary$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType<DeleteLibraryAction>(LibraryActionTypes.Delete),\n        map((action) => {\n          if (action.payload) {\n            this.content.deleteLibrary(action.payload);\n          } else {\n            this.store\n              .select(getAppSelection)\n              .pipe(take(1))\n              .subscribe((selection) => {\n                if (selection?.library) {\n                  this.content.deleteLibrary(selection.library.entry.id);\n                }\n              });\n          }\n        })\n      ),\n    { dispatch: false }\n  );\n\n  leaveLibrary$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType<LeaveLibraryAction>(LibraryActionTypes.Leave),\n        map((action) => {\n          if (action.payload) {\n            this.content.leaveLibrary(action.payload);\n          } else {\n            this.store\n              .select(getAppSelection)\n              .pipe(take(1))\n              .subscribe((selection) => {\n                if (selection?.library) {\n                  this.content.leaveLibrary(selection.library.entry.id, action.configuration?.focusedElementOnCloseSelector);\n                }\n              });\n          }\n        })\n      ),\n    { dispatch: false }\n  );\n\n  createLibrary$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType<CreateLibraryAction>(LibraryActionTypes.Create),\n        mergeMap(() => this.content.createLibrary()),\n        tap((libraryId) => this.navigateToLibraryById(libraryId))\n      ),\n    { dispatch: false }\n  );\n\n  navigateLibrary$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType<NavigateLibraryAction>(LibraryActionTypes.Navigate),\n        tap((action) => {\n          const payload = action.payload;\n          if (payload && 'guid' in payload) {\n            this.store\n              .select(isAdmin)\n              .pipe(take(1))\n              .subscribe((isUserAdmin) => {\n                if (!isUserAdmin && payload.visibility !== 'PUBLIC' && !payload.role) {\n                  this.notificationService.showError('APP.BROWSE.LIBRARIES.LIBRARY_NO_PERMISSIONS_WARNING');\n                } else {\n                  this.navigateToLibraryById(payload.guid, action.route);\n                }\n              });\n          }\n        })\n      ),\n    { dispatch: false }\n  );\n\n  private navigateToLibraryById(libraryId: string, route = 'libraries'): void {\n    this.contentApi\n      .getNode(libraryId, { relativePath: '/documentLibrary' })\n      .pipe(\n        map((node) => node.entry.id),\n        take(1)\n      )\n      .subscribe({\n        next: (id) => {\n          this.store.dispatch(new NavigateRouteAction([route, id]));\n        },\n        error: (error: HttpErrorResponse) => {\n          switch (error.status) {\n            case 403:\n              this.notificationService.showWarning('APP.BROWSE.LIBRARIES.LIBRARY_NO_PERMISSIONS_WARNING');\n              break;\n            case 404:\n              this.notificationService.showError('APP.BROWSE.LIBRARIES.ERRORS.LIBRARY_NOT_FOUND');\n              break;\n            default:\n              this.notificationService.showError('APP.BROWSE.LIBRARIES.ERRORS.LIBRARY_LOADING_ERROR');\n          }\n        }\n      });\n  }\n\n  updateLibrary$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType<UpdateLibraryAction>(LibraryActionTypes.Update),\n        map((action) => {\n          this.store\n            .select(getAppSelection)\n            .pipe(take(1))\n            .subscribe((selection) => {\n              if (selection?.library) {\n                const { id } = selection.library.entry;\n                const { title, description, visibility } = action.payload;\n\n                const siteBody = {\n                  title,\n                  description,\n                  visibility\n                };\n\n                this.content.updateLibrary(id, siteBody);\n              }\n            });\n        })\n      ),\n    { dispatch: false }\n  );\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport {\n  AppStore,\n  getCurrentFolder,\n  UnlockWriteAction,\n  UploadActionTypes,\n  UploadFilesAction,\n  UploadFileVersionAction,\n  UploadFolderAction\n} from '@alfresco/aca-shared/store';\nimport { FileUtils, NotificationService } from '@alfresco/adf-core';\nimport { inject, Injectable, NgZone, RendererFactory2 } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { of } from 'rxjs';\nimport { catchError, map, take } from 'rxjs/operators';\nimport { ContentManagementService } from '../../services/content-management.service';\nimport { Node } from '@alfresco/js-api';\nimport { FileModel, UploadService } from '@alfresco/adf-content-services';\n\n@Injectable()\nexport class UploadEffects {\n  private readonly notificationService = inject(NotificationService);\n\n  private readonly fileInput: HTMLInputElement;\n  private readonly folderInput: HTMLInputElement;\n  private readonly fileVersionInput: HTMLInputElement;\n  private readonly uploadMenuButtonSelector = 'app-toolbar-menu button[id=\"app.toolbar.upload\"]';\n\n  store = inject(Store<AppStore>);\n  actions$ = inject(Actions);\n  ngZone = inject(NgZone);\n  uploadService = inject(UploadService);\n  contentService = inject(ContentManagementService);\n\n  constructor() {\n    const renderer = inject(RendererFactory2).createRenderer(null, null);\n\n    this.fileInput = renderer.createElement('input') as HTMLInputElement;\n    this.fileInput.id = 'app-upload-files';\n    this.fileInput.type = 'file';\n    this.fileInput.style.display = 'none';\n    this.fileInput.setAttribute('multiple', '');\n    this.fileInput.addEventListener('change', (event) => this.upload(event));\n    renderer.appendChild(document.body, this.fileInput);\n\n    this.fileVersionInput = renderer.createElement('input') as HTMLInputElement;\n    this.fileVersionInput.id = 'app-upload-file-version';\n    this.fileVersionInput.type = 'file';\n    this.fileVersionInput.style.display = 'none';\n    this.fileVersionInput.addEventListener('change', () => {\n      this.uploadVersion();\n    });\n    renderer.appendChild(document.body, this.fileVersionInput);\n\n    this.folderInput = renderer.createElement('input') as HTMLInputElement;\n    this.folderInput.id = 'app-upload-folder';\n    this.folderInput.type = 'file';\n    this.folderInput.style.display = 'none';\n    this.folderInput.setAttribute('directory', '');\n    this.folderInput.setAttribute('webkitdirectory', '');\n    this.folderInput.addEventListener('change', (event) => this.upload(event));\n    renderer.appendChild(document.body, this.folderInput);\n  }\n\n  uploadFiles$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType<UploadFilesAction>(UploadActionTypes.UploadFiles),\n        map(() => {\n          this.registerFocusingElementAfterModalClose(this.fileInput, this.uploadMenuButtonSelector);\n          this.fileInput.click();\n        })\n      ),\n    { dispatch: false }\n  );\n\n  uploadFolder$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType<UploadFolderAction>(UploadActionTypes.UploadFolder),\n        map(() => {\n          this.registerFocusingElementAfterModalClose(this.folderInput, this.uploadMenuButtonSelector);\n          this.folderInput.click();\n        })\n      ),\n    { dispatch: false }\n  );\n\n  uploadVersion$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType<UploadFileVersionAction>(UploadActionTypes.UploadFileVersion),\n        map((action) => {\n          if (action?.payload) {\n            const node = action?.payload?.detail?.data?.node?.entry;\n            const file: any = action?.payload?.detail?.files[0]?.file;\n            this.contentService.versionUpdateDialog(node, file);\n          } else if (!action?.payload) {\n            this.registerFocusingElementAfterModalClose(this.fileVersionInput, action.configuration?.focusedElementOnCloseSelector);\n            this.fileVersionInput.click();\n          }\n        })\n      ),\n    { dispatch: false }\n  );\n\n  uploadVersion() {\n    this.contentService\n      .getNodeInfo()\n      .pipe(\n        catchError(() => {\n          this.notificationService.showError('VERSION.ERROR.GENERIC');\n          return of(null);\n        })\n      )\n      .subscribe((node: Node) => {\n        if (node) {\n          this.contentService.versionUpdateDialog(node, this.fileVersionInput.files[0]);\n          this.fileVersionInput.value = '';\n        }\n      });\n  }\n\n  private upload(event: any): void {\n    this.store\n      .select(getCurrentFolder)\n      .pipe(take(1))\n      .subscribe((node) => {\n        if (node?.id) {\n          const input = event.currentTarget as HTMLInputElement;\n          const files = FileUtils.toFileArray(input.files).map(\n            (file: any) =>\n              new FileModel(file, {\n                parentId: node.id,\n                path: (file.webkitRelativePath || '').replace(/\\/[^\\/]*$/, ''),\n                nodeType: 'cm:content'\n              })\n          );\n\n          this.uploadQueue(files);\n          event.target.value = '';\n        }\n      });\n  }\n\n  private uploadQueue(files: FileModel[]) {\n    if (files.length > 0) {\n      this.ngZone.run(() => {\n        this.uploadService.addToQueue(...files);\n        this.uploadService.uploadFilesInTheQueue();\n      });\n    }\n  }\n\n  uploadAndUnlock(file: FileModel | null) {\n    if (!file) {\n      return;\n    }\n\n    this.ngZone.run(() => {\n      this.uploadService.addToQueue(file);\n      this.uploadService.uploadFilesInTheQueue();\n\n      const subscription = this.uploadService.fileUploadComplete.subscribe((completed) => {\n        if (file.data?.entry?.properties?.['cm:lockType'] === 'WRITE_LOCK' && file.data?.entry?.id === completed.data.entry.id) {\n          this.store.dispatch(new UnlockWriteAction(completed.data));\n        }\n\n        subscription.unsubscribe();\n      });\n    });\n  }\n\n  private registerFocusingElementAfterModalClose(input: HTMLInputElement, focusedElementSelector: string): void {\n    input.addEventListener(\n      'click',\n      () => {\n        window.addEventListener(\n          'focus',\n          () => {\n            const elementToFocus = document.querySelector<HTMLElement>(focusedElementSelector);\n            elementToFocus.addEventListener('focus', () => elementToFocus.classList.add('cdk-program-focused'), {\n              once: true\n            });\n            elementToFocus.focus();\n          },\n          {\n            once: true\n          }\n        );\n      },\n      {\n        once: true\n      }\n    );\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, ViewEncapsulation, OnInit, inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';\nimport { Node } from '@alfresco/js-api';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators, UntypedFormControl, ValidationErrors, ReactiveFormsModule } from '@angular/forms';\nimport { Store } from '@ngrx/store';\nimport { AppStore, CreateFromTemplate } from '@alfresco/aca-shared/store';\nimport { TranslationService } from '@alfresco/adf-core';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n  imports: [CommonModule, TranslatePipe, MatDialogModule, ReactiveFormsModule, MatFormFieldModule, MatInputModule, MatButtonModule],\n  templateUrl: './create-from-template.dialog.html',\n  styleUrls: ['./create-from-template.dialog.scss'],\n  selector: 'app-create-from-template-dialog',\n  host: {\n    class: 'app-create-from-template-dialog'\n  },\n  encapsulation: ViewEncapsulation.None\n})\nexport class CreateFromTemplateDialogComponent implements OnInit {\n  private readonly translationService = inject(TranslationService);\n  private readonly store = inject<Store<AppStore>>(Store);\n  private readonly formBuilder = inject(UntypedFormBuilder);\n  private readonly dialogRef = inject<MatDialogRef<CreateFromTemplateDialogComponent>>(MatDialogRef);\n  data = inject<Node>(MAT_DIALOG_DATA);\n\n  public form: UntypedFormGroup;\n\n  title = '';\n\n  ngOnInit() {\n    this.form = this.formBuilder.group({\n      name: [this.data.name, [Validators.required, this.forbidEndingDot, this.forbidOnlySpaces, this.forbidSpecialCharacters]],\n      title: [this.data.properties ? this.data.properties['cm:title'] : '', Validators.maxLength(256)],\n      description: [this.data.properties ? this.data.properties['cm:description'] : '', Validators.maxLength(512)]\n    });\n\n    this.title = this.translationService.instant(\n      this.data.isFolder ? 'NODE_FROM_TEMPLATE.FOLDER_DIALOG_TITLE' : 'NODE_FROM_TEMPLATE.FILE_DIALOG_TITLE',\n      { template: this.data.name }\n    );\n  }\n\n  onSubmit() {\n    const update = {\n      name: this.form.value.name.trim(),\n      properties: {\n        'cm:title': this.form.value.title,\n        'cm:description': this.form.value.description\n      }\n    };\n    const data: Node = Object.assign({}, this.data, update);\n    this.store.dispatch(new CreateFromTemplate(data));\n  }\n\n  close() {\n    this.dialogRef.close();\n  }\n\n  private forbidSpecialCharacters({ value }: UntypedFormControl): ValidationErrors | null {\n    const specialCharacters = /([\\*\\\"\\<\\>\\\\\\/\\?\\:\\|])/;\n    const isValid = !specialCharacters.test(value);\n\n    return isValid\n      ? null\n      : {\n          message: `NODE_FROM_TEMPLATE.FORM.ERRORS.SPECIAL_CHARACTERS`\n        };\n  }\n\n  private forbidEndingDot({ value }: UntypedFormControl): ValidationErrors | null {\n    const isValid: boolean = (value || '').trim().split('').pop() !== '.';\n\n    return isValid\n      ? null\n      : {\n          message: `NODE_FROM_TEMPLATE.FORM.ERRORS.ENDING_DOT`\n        };\n  }\n\n  private forbidOnlySpaces({ value }: UntypedFormControl): ValidationErrors | null {\n    if (value.length) {\n      const isValid = !!(value || '').trim();\n\n      return isValid\n        ? null\n        : {\n            message: `NODE_FROM_TEMPLATE.FORM.ERRORS.ONLY_SPACES`\n          };\n    } else {\n      return {\n        message: `NODE_FROM_TEMPLATE.FORM.ERRORS.REQUIRED`\n      };\n    }\n  }\n}\n","<h2 mat-dialog-title [innerHTML]=\"title\" class=\"app-create-from-template-title\" data-automation-id=\"create-from-template-title\"></h2>\n<div mat-dialog-content class=\"app-create-from-template-content\">\n  <form [formGroup]=\"form\" novalidate>\n    <mat-form-field class=\"app-create-from-template-field\">\n      <mat-label>{{ 'NODE_FROM_TEMPLATE.FORM.PLACEHOLDER.NAME' | translate }}</mat-label>\n      <input\n        cdkFocusInitial\n        matInput\n        formControlName=\"name\"\n        required\n      />\n\n      <mat-error *ngIf=\"form.controls['name'].errors?.message\" data-automation-id=\"create-from-template-field-error\">\n        {{ form.controls['name'].errors?.message | translate }}\n      </mat-error>\n    </mat-form-field>\n\n    <mat-form-field class=\"app-create-from-template-field\">\n      <mat-label>{{ 'NODE_FROM_TEMPLATE.FORM.PLACEHOLDER.TITLE' | translate }}</mat-label>\n      <input\n        matInput\n        formControlName=\"title\"\n      />\n\n      <mat-error *ngIf=\"form.controls['title'].hasError('maxlength')\" data-automation-id=\"create-from-template-field-error\">\n        {{ 'NODE_FROM_TEMPLATE.FORM.ERRORS.TITLE_TOO_LONG' | translate }}\n      </mat-error>\n    </mat-form-field>\n\n    <mat-form-field class=\"app-create-from-template-field app-create-from-template-field-description\">\n      <mat-label>{{ 'NODE_FROM_TEMPLATE.FORM.PLACEHOLDER.DESCRIPTION' | translate }}</mat-label>\n      <textarea\n        matInput\n        rows=\"2\"\n        formControlName=\"description\"\n      ></textarea>\n\n      <mat-error *ngIf=\"form.controls['description'].hasError('maxlength')\" data-automation-id=\"create-from-template-field-error\">\n        {{ 'NODE_FROM_TEMPLATE.FORM.ERRORS.DESCRIPTION_TOO_LONG' | translate }}\n      </mat-error>\n    </mat-form-field>\n  </form>\n</div>\n<div mat-dialog-actions class=\"app-create-from-template-footer\">\n  <button\n    mat-button\n    mat-dialog-close\n    data-automation-id=\"create-from-template-dialog-cancel-button\"\n    class=\"app-create-from-template-footer-button\">\n    {{ 'NODE_FROM_TEMPLATE.CANCEL' | translate }}\n  </button>\n  <button\n    class=\"app-create-from-template-footer-button app-create-from-template-footer-create-button\"\n    [disabled]=\"form.invalid\"\n    mat-button\n    (click)=\"onSubmit()\"\n    data-automation-id=\"create-from-template-dialog-create-button\"\n  >\n    {{ 'NODE_FROM_TEMPLATE.CREATE' | translate }}\n  </button>\n</div>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { inject, Injectable } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { CreateFromTemplateDialogComponent } from '../dialogs/node-template/create-from-template.dialog';\nimport { Subject, from, of } from 'rxjs';\nimport { Node, ResultNode, PathElement, SearchApi, LazyApi } from '@alfresco/js-api';\nimport { TranslationService, NotificationService } from '@alfresco/adf-core';\nimport { switchMap, catchError } from 'rxjs/operators';\nimport {\n  AlfrescoApiService,\n  ContentNodeSelectorComponent,\n  ContentNodeSelectorComponentData,\n  ShareDataRow,\n  NodeAction\n} from '@alfresco/adf-content-services';\n\nexport interface TemplateDialogConfig {\n  primaryPathName: string;\n  selectionType: string;\n}\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class NodeTemplateService {\n  private readonly alfrescoApiService = inject(AlfrescoApiService);\n  private readonly notificationService = inject(NotificationService);\n  private readonly translation = inject(TranslationService);\n  private readonly dialog = inject(MatDialog);\n\n  private currentTemplateConfig: TemplateDialogConfig = null;\n  private rootNode: ResultNode;\n\n  @LazyApi((self: NodeTemplateService) => new SearchApi(self.alfrescoApiService.getInstance()))\n  declare searchApi: SearchApi;\n\n  selectTemplateDialog(config: TemplateDialogConfig): Subject<Node[]> {\n    this.currentTemplateConfig = config;\n\n    const select = new Subject<Node[]>();\n    select.subscribe({\n      complete: this.close.bind(this)\n    });\n\n    const data: ContentNodeSelectorComponentData = {\n      selectionMode: 'single',\n      title: this.title(config.selectionType),\n      actionName: NodeAction.NEXT,\n      dropdownHideMyFiles: true,\n      currentFolderId: null,\n      dropdownSiteList: null,\n      breadcrumbTransform: this.transformNode.bind(this),\n      select,\n      showSearch: false,\n      showDropdownSiteList: false,\n      isSelectionValid: this.isSelectionValid.bind(this),\n      rowFilter: this.rowFilter.bind(this),\n      showFilesInResult: false\n    };\n\n    const query = {\n      query: {\n        query: `PATH:\"//${config.primaryPathName}\"`,\n        language: 'afts'\n      },\n      include: ['path', 'properties', 'allowableOperations', 'permissions']\n    };\n\n    from(this.searchApi.search(query))\n      .pipe(\n        switchMap((response) => {\n          const entry = response.list.entries[0].entry;\n          this.rootNode = entry;\n          data.currentFolderId = entry.id;\n\n          return this.dialog\n            .open(ContentNodeSelectorComponent, {\n              data,\n              panelClass: ['adf-content-node-selector-dialog', 'aca-template-node-selector-dialog'],\n              width: '630px'\n            })\n            .afterClosed();\n        }),\n        catchError((error) => {\n          this.notificationService.showError('APP.MESSAGES.ERRORS.GENERIC');\n          return of(error);\n        })\n      )\n      .subscribe({ next: () => select.complete() });\n\n    return select;\n  }\n\n  createTemplateDialog(node: Node): MatDialogRef<CreateFromTemplateDialogComponent> {\n    const dialog = this.dialog.open(CreateFromTemplateDialogComponent, {\n      data: node,\n      panelClass: 'aca-create-from-template-dialog',\n      width: '630px'\n    });\n    dialog.afterClosed().subscribe(() => this.focusCreateMenuButton());\n    return dialog;\n  }\n\n  private transformNode(node: Node): Node {\n    if (node?.path?.elements instanceof Array) {\n      node.path.elements = this.getPathElements(node);\n    }\n    return node;\n  }\n\n  private isSelectionValid(node: Node): boolean {\n    if (!node.path.elements.length) {\n      return false;\n    }\n\n    if (this.currentTemplateConfig.selectionType === 'folder') {\n      return node.isFolder;\n    }\n\n    return node.isFile;\n  }\n\n  private close() {\n    this.dialog.closeAll();\n    this.focusCreateMenuButton();\n  }\n\n  private title(selectionType: string) {\n    if (selectionType === 'file') {\n      return this.translation.instant('NODE_SELECTOR.SELECT_FILE_TEMPLATE_TITLE');\n    }\n\n    return this.translation.instant('NODE_SELECTOR.SELECT_FOLDER_TEMPLATE_TITLE');\n  }\n\n  private rowFilter(row: ShareDataRow): boolean {\n    const node: Node = row.node.entry;\n    return node.nodeType !== 'app:filelink' && node.nodeType !== 'app:folderlink';\n  }\n\n  private getPathElements(node: Node): PathElement[] {\n    return node.path.elements.filter((pathElement) => !this.rootNode.path.elements.some((rootPathElement) => pathElement.id === rootPathElement.id));\n  }\n\n  private focusCreateMenuButton(): void {\n    document.querySelector<HTMLElement>('app-toolbar-menu button[id=\"app.toolbar.create\"]').focus();\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { inject, Injectable } from '@angular/core';\nimport { catchError, debounceTime, map, switchMap, take } from 'rxjs/operators';\nimport { Store } from '@ngrx/store';\nimport {\n  AppStore,\n  CreateFromTemplate,\n  CreateFromTemplateSuccess,\n  FileFromTemplate,\n  FolderFromTemplate,\n  getCurrentFolder,\n  TemplateActionTypes\n} from '@alfresco/aca-shared/store';\nimport { NodeTemplateService, TemplateDialogConfig } from '../../services/node-template.service';\nimport { NotificationService } from '@alfresco/adf-core';\nimport { from, Observable, of } from 'rxjs';\nimport { Node, NodeBodyUpdate, NodeEntry, NodesApi, LazyApi } from '@alfresco/js-api';\nimport { MatDialog } from '@angular/material/dialog';\nimport { AlfrescoApiService, DocumentListService } from '@alfresco/adf-content-services';\n\n@Injectable()\nexport class TemplateEffects {\n  private readonly notificationService = inject(NotificationService);\n  private readonly documentListService = inject(DocumentListService);\n\n  @LazyApi((self: TemplateEffects) => new NodesApi(self.apiService.getInstance()))\n  declare nodesApi: NodesApi;\n\n  matDialog = inject(MatDialog);\n  store = inject(Store<AppStore>);\n  apiService = inject(AlfrescoApiService);\n  actions$ = inject(Actions);\n  nodeTemplateService = inject(NodeTemplateService);\n\n  fileFromTemplate$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType<FileFromTemplate>(TemplateActionTypes.FileFromTemplate),\n        map(() => {\n          this.openDialog({\n            primaryPathName: 'app:node_templates',\n            selectionType: 'file'\n          });\n        })\n      ),\n    { dispatch: false }\n  );\n\n  folderFromTemplate$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType<FolderFromTemplate>(TemplateActionTypes.FolderFromTemplate),\n        map(() =>\n          this.openDialog({\n            primaryPathName: 'app:space_templates',\n            selectionType: 'folder'\n          })\n        )\n      ),\n    { dispatch: false }\n  );\n\n  createFromTemplate$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType<CreateFromTemplate>(TemplateActionTypes.CreateFromTemplate),\n        map((action) => {\n          this.store\n            .select(getCurrentFolder)\n            .pipe(\n              switchMap((folder) => this.copyNode(action.payload, folder.id)),\n              take(1)\n            )\n            .subscribe((node: NodeEntry | null) => {\n              if (node) {\n                this.store.dispatch(new CreateFromTemplateSuccess(node.entry));\n              }\n            });\n        })\n      ),\n    { dispatch: false }\n  );\n\n  createFromTemplateSuccess$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType<CreateFromTemplateSuccess>(TemplateActionTypes.CreateFromTemplateSuccess),\n        map((action) => {\n          const node = action.node;\n          const messageKey = node.isFolder\n            ? 'APP.MESSAGES.INFO.NODE_CREATE.FOLDER_FROM_TEMPLATE_SUCCESS'\n            : 'APP.MESSAGES.INFO.NODE_CREATE.FILE_FROM_TEMPLATE_SUCCESS';\n          this.notificationService.showInfo(messageKey, null, { name: node.name });\n          this.matDialog.closeAll();\n          this.documentListService.reload();\n        })\n      ),\n    { dispatch: false }\n  );\n\n  private openDialog(config: TemplateDialogConfig) {\n    this.nodeTemplateService\n      .selectTemplateDialog(config)\n      .pipe(debounceTime(300))\n      .subscribe(([node]) => this.nodeTemplateService.createTemplateDialog(node));\n  }\n\n  private copyNode(source: Node, parentId: string): Observable<NodeEntry> {\n    return from(\n      this.nodesApi.copyNode(source.id, {\n        targetParentId: parentId,\n        name: source.name\n      })\n    ).pipe(\n      switchMap((node) =>\n        this.updateNode(node, {\n          properties: {\n            'cm:title': source.properties['cm:title'],\n            'cm:description': source.properties['cm:description']\n          }\n        })\n      ),\n      catchError((error) => this.handleError(error))\n    );\n  }\n\n  private updateNode(node: NodeEntry, update: NodeBodyUpdate): Observable<NodeEntry> {\n    return from(this.nodesApi.updateNode(node.entry.id, update)).pipe(catchError(() => of(node)));\n  }\n\n  private handleError(error: Error): Observable<null> {\n    let statusCode: number;\n\n    try {\n      statusCode = JSON.parse(error.message).error.statusCode;\n    } catch {\n      statusCode = null;\n    }\n\n    if (statusCode !== 409) {\n      this.notificationService.showError('APP.MESSAGES.ERRORS.GENERIC');\n    } else {\n      this.notificationService.showError('APP.MESSAGES.ERRORS.CONFLICT');\n    }\n\n    return of(null);\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { OverlayRef } from '@angular/cdk/overlay';\n\nexport class ContextMenuOverlayRef {\n  constructor(private readonly overlayRef: OverlayRef) {}\n\n  close(): void {\n    this.overlayRef.dispose();\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, Input, ViewEncapsulation, inject } from '@angular/core';\nimport { ContentActionRef, DynamicExtensionComponent } from '@alfresco/adf-extensions';\nimport { AppExtensionService } from '@alfresco/aca-shared';\nimport { CommonModule } from '@angular/common';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { IconComponent } from '@alfresco/adf-core';\n\n@Component({\n  imports: [CommonModule, TranslatePipe, MatMenuModule, MatDividerModule, IconComponent, DynamicExtensionComponent],\n  selector: 'app-context-menu-item',\n  templateUrl: './context-menu-item.component.html',\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'app-context-menu-item' }\n})\nexport class ContextMenuItemComponent {\n  private readonly extensions = inject(AppExtensionService);\n\n  @Input()\n  actionRef: ContentActionRef;\n\n  runAction() {\n    if (this.hasClickAction(this.actionRef)) {\n      this.extensions.runActionById(this.actionRef.actions.click);\n    }\n  }\n\n  private hasClickAction(actionRef: ContentActionRef): boolean {\n    return !!actionRef?.actions?.click;\n  }\n\n  trackByActionId(_: number, obj: ContentActionRef): string {\n    return obj.id;\n  }\n}\n","<div class=\"aca-context-menu\">\n  <ng-container [ngSwitch]=\"actionRef.type\">\n    <ng-container *ngSwitchCase=\"'menu'\">\n      <button mat-menu-item [id]=\"actionRef.id\" [matMenuTriggerFor]=\"childMenu\">\n        <adf-icon [value]=\"actionRef.icon\" class=\"app-context-menu-item--icon\" />\n        <span [attr.data-automation-id]=\"actionRef.id + '-label'\">{{ actionRef.title | translate }}</span>\n      </button>\n\n      <mat-menu #childMenu=\"matMenu\">\n        <ng-container *ngFor=\"let child of actionRef.children; trackBy: trackByActionId\">\n          <app-context-menu-item [actionRef]=\"child\" />\n        </ng-container>\n      </mat-menu>\n    </ng-container>\n\n    <ng-container *ngSwitchCase=\"'separator'\">\n      <mat-divider aria-hidden=\"true\" />\n    </ng-container>\n\n    <ng-container *ngSwitchCase=\"'custom'\">\n      <adf-dynamic-component [data]=\"actionRef.data\" [id]=\"actionRef.component\" />\n    </ng-container>\n\n    <ng-container *ngSwitchDefault>\n      <button mat-menu-item [id]=\"actionRef.id\" (click)=\"runAction()\">\n        <adf-icon [value]=\"actionRef.icon\" class=\"app-context-menu-item--icon\" />\n        <span [attr.data-automation-id]=\"actionRef.id + '-label'\">{{ actionRef.title | translate }}</span>\n      </button>\n    </ng-container>\n  </ng-container>\n</div>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { DestroyRef, Directive, EventEmitter, HostListener, inject, Input, OnInit, Output } from '@angular/core';\nimport { fromEvent } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Directive({\n  standalone: true,\n  selector: '[acaContextMenuOutsideEvent]'\n})\nexport class OutsideEventDirective implements OnInit {\n  @Output()\n  clickOutside: EventEmitter<void> = new EventEmitter();\n\n  @Input()\n  focusTargetSelector = '.adf-context-menu-source';\n\n  private readonly destroyRef = inject(DestroyRef);\n\n  ngOnInit() {\n    fromEvent(document.body, 'click')\n      .pipe(\n        filter((event) => !this.findAncestor(event.target as Element)),\n        takeUntilDestroyed(this.destroyRef)\n      )\n      .subscribe(() => this.clickOutside.next());\n  }\n\n  @HostListener('document:keydown.escape', ['$event'])\n  onEscapeKeydown() {\n    document.querySelector<HTMLElement>(this.focusTargetSelector)?.focus();\n  }\n\n  private findAncestor(el: Element): boolean {\n    const className = 'aca-context-menu';\n\n    while (el && !el.classList.contains(className)) {\n      el = el.parentElement;\n    }\n    return !!el;\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { InjectionToken } from '@angular/core';\n\nexport const CONTEXT_MENU_DIRECTION = new InjectionToken('CONTEXT_MENU_DIRECTION', {\n  providedIn: 'root',\n  factory: () => 'ltr'\n});\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { HostListener, ViewChild, Directive, inject } from '@angular/core';\nimport { MatMenuTrigger } from '@angular/material/menu';\nimport { ContentActionRef } from '@alfresco/adf-extensions';\nimport { ContextMenuOverlayRef } from './context-menu-overlay';\nimport { CONTEXT_MENU_DIRECTION } from './direction.token';\nimport { Direction } from '@angular/cdk/bidi';\nimport { AppExtensionService } from '@alfresco/aca-shared';\n\n@Directive()\nexport class BaseContextMenuDirective {\n  protected readonly contextMenuOverlayRef = inject(ContextMenuOverlayRef);\n  protected readonly extensions = inject(AppExtensionService);\n  readonly direction = inject<Direction>(CONTEXT_MENU_DIRECTION);\n\n  actions: Array<ContentActionRef> = [];\n\n  @ViewChild(MatMenuTrigger)\n  trigger: MatMenuTrigger;\n\n  @HostListener('keydown.escape', ['$event'])\n  handleKeydownEscape(event: KeyboardEvent) {\n    if (event && this.contextMenuOverlayRef) {\n      this.contextMenuOverlayRef.close();\n    }\n  }\n\n  onClickOutsideEvent() {\n    if (this.contextMenuOverlayRef) {\n      this.contextMenuOverlayRef.close();\n    }\n  }\n\n  runAction(contentActionRef: ContentActionRef) {\n    this.extensions.runActionById(contentActionRef.actions.click, {\n      focusedElementOnCloseSelector: '.adf-context-menu-source'\n    });\n  }\n\n  trackByActionId(_: number, obj: ContentActionRef): string {\n    return obj.id;\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { AfterViewInit, Component, DestroyRef, inject, OnInit, QueryList, ViewChild, ViewChildren, ViewEncapsulation } from '@angular/core';\nimport { MatMenu, MatMenuItem, MatMenuModule } from '@angular/material/menu';\nimport { ContentActionType, DynamicExtensionComponent } from '@alfresco/adf-extensions';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { IconComponent } from '@alfresco/adf-core';\nimport { ContextMenuItemComponent } from './context-menu-item.component';\nimport { OutsideEventDirective } from './context-menu-outside-event.directive';\nimport { BaseContextMenuDirective } from './base-context-menu.directive';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n  imports: [\n    CommonModule,\n    TranslatePipe,\n    MatMenuModule,\n    MatDividerModule,\n    ContextMenuItemComponent,\n    OutsideEventDirective,\n    IconComponent,\n    DynamicExtensionComponent\n  ],\n  selector: 'aca-context-menu',\n  templateUrl: './context-menu.component.html',\n  styleUrls: ['./context-menu.component.scss'],\n  host: {\n    class: 'aca-context-menu-holder'\n  },\n  encapsulation: ViewEncapsulation.None\n})\nexport class ContextMenuComponent extends BaseContextMenuDirective implements OnInit, AfterViewInit {\n  @ViewChildren(DynamicExtensionComponent)\n  dynamicExtensionComponents: QueryList<DynamicExtensionComponent>;\n\n  @ViewChild(MatMenu)\n  menu: MatMenu;\n\n  @ViewChildren(MatMenuItem)\n  matMenuItems: QueryList<MatMenuItem>;\n\n  private readonly destroyRef = inject(DestroyRef);\n\n  ngOnInit() {\n    this.extensions\n      .getAllowedContextMenuActions()\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe((actions) => {\n        this.actions = actions;\n      });\n  }\n\n  ngAfterViewInit() {\n    if (this.actions.length) {\n      setTimeout(() => this.trigger.openMenu(), 0);\n    }\n\n    const itemsById = this.createMenuItemsLookup();\n    const orderedItems = this.createOrderedItemsList(itemsById);\n\n    const menuItemsQueryList = new QueryList<MatMenuItem>();\n    menuItemsQueryList.reset(orderedItems);\n    this.menu._allItems = menuItemsQueryList;\n    this.menu.ngAfterContentInit();\n  }\n\n  private createMenuItemsLookup(): Map<string, MatMenuItem> {\n    const itemsById = new Map<string, MatMenuItem>();\n    this.matMenuItems.forEach((item) => {\n      itemsById.set(item._getHostElement()?.getAttribute('id'), item);\n    });\n\n    this.dynamicExtensionComponents.forEach((component) => {\n      if (component.menuItem && component.id) {\n        itemsById.set(component.id, component.menuItem);\n      }\n    });\n    return itemsById;\n  }\n\n  private createOrderedItemsList(itemsById: Map<string, MatMenuItem>): MatMenuItem[] {\n    const orderedItems: MatMenuItem[] = [];\n\n    this.actions.forEach((action) => {\n      const lookupId = action.type === ContentActionType.custom ? action.component : action.id;\n      const item = lookupId ? itemsById.get(lookupId) : undefined;\n\n      if (item) {\n        orderedItems.push(item);\n      }\n    });\n    return orderedItems;\n  }\n}\n","<div [dir]=\"direction\">\n  <div style=\"visibility: hidden;\" [matMenuTriggerFor]=\"rootMenu\"></div>\n\n  <mat-menu #rootMenu=\"matMenu\" class=\"aca-context-menu\" hasBackdrop=\"false\" acaContextMenuOutsideEvent (clickOutside)=\"onClickOutsideEvent()\">\n    <ng-container *ngFor=\"let entry of actions; trackBy: trackByActionId\" [ngSwitch]=\"entry.type\">\n      <ng-container *ngSwitchDefault>\n        <button mat-menu-item [id]=\"entry.id\" (click)=\"runAction(entry)\">\n          <adf-icon [value]=\"entry.icon\" class=\"app-context-menu-item--icon\" />\n          <span [attr.data-automation-id]=\"entry.id + '-label'\">{{ entry.title | translate }}</span>\n        </button>\n      </ng-container>\n\n      <ng-container *ngSwitchCase=\"'separator'\">\n        <mat-divider aria-hidden=\"true\" />\n      </ng-container>\n\n      <ng-container *ngSwitchCase=\"'menu'\">\n        <button mat-menu-item [id]=\"entry.id\" [matMenuTriggerFor]=\"childMenu\">\n          <adf-icon [value]=\"entry.icon\" class=\"app-context-menu-item--icon\" />\n          <span [attr.data-automation-id]=\"entry.id + '-label'\">{{ entry.title | translate }}</span>\n        </button>\n\n        <mat-menu #childMenu=\"matMenu\">\n          <ng-container *ngFor=\"let child of entry.children; trackBy: trackByActionId\">\n            <app-context-menu-item [actionRef]=\"child\" />\n          </ng-container>\n        </mat-menu>\n      </ng-container>\n\n      <ng-container *ngSwitchCase=\"'custom'\">\n        <adf-dynamic-component [data]=\"entry.data\" [id]=\"entry.component\" />\n      </ng-container>\n    </ng-container>\n  </mat-menu>\n</div>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { InjectionToken } from '@angular/core';\n\nexport const CONTEXT_MENU_CUSTOM_ACTIONS = new InjectionToken('CONTEXT_MENU_CUSTOM_ACTIONS');\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { AfterViewInit, Component, ViewEncapsulation, inject } from '@angular/core';\nimport { ContentActionRef, DynamicExtensionComponent } from '@alfresco/adf-extensions';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { ContextMenuItemComponent } from './context-menu-item.component';\nimport { OutsideEventDirective } from './context-menu-outside-event.directive';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { IconComponent } from '@alfresco/adf-core';\nimport { CONTEXT_MENU_CUSTOM_ACTIONS } from './custom-context-menu-actions.token';\nimport { BaseContextMenuDirective } from './base-context-menu.directive';\n\n@Component({\n  selector: 'aca-custom-context-menu',\n  templateUrl: './context-menu.component.html',\n  styleUrls: ['./context-menu.component.scss'],\n  imports: [\n    CommonModule,\n    TranslatePipe,\n    MatMenuModule,\n    MatDividerModule,\n    ContextMenuItemComponent,\n    OutsideEventDirective,\n    IconComponent,\n    DynamicExtensionComponent\n  ],\n  host: {\n    class: 'aca-context-menu-holder'\n  },\n  encapsulation: ViewEncapsulation.None\n})\nexport class CustomContextMenuComponent extends BaseContextMenuDirective implements AfterViewInit {\n  constructor() {\n    super();\n    const customActions = inject(CONTEXT_MENU_CUSTOM_ACTIONS) as ContentActionRef[];\n    this.actions = customActions;\n  }\n\n  ngAfterViewInit() {\n    setTimeout(() => this.trigger.openMenu(), 0);\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ComponentRef, Injectable, Injector, inject } from '@angular/core';\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ContextMenuOverlayRef } from './context-menu-overlay';\nimport { ContextMenuComponent } from './context-menu.component';\nimport { ContextmenuOverlayConfig } from './interfaces';\nimport { UserPreferencesService } from '@alfresco/adf-core';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { CONTEXT_MENU_DIRECTION } from './direction.token';\nimport { CONTEXT_MENU_CUSTOM_ACTIONS } from './custom-context-menu-actions.token';\nimport { ContentActionRef } from '@alfresco/adf-extensions';\nimport { CustomContextMenuComponent } from './custom-context-menu.component';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ContextMenuService {\n  private readonly injector = inject(Injector);\n  private readonly overlay = inject(Overlay);\n  private readonly userPreferenceService = inject(UserPreferencesService);\n\n  private direction: Directionality;\n\n  constructor() {\n    this.userPreferenceService.select('textOrientation').subscribe((textOrientation) => {\n      this.direction = textOrientation;\n    });\n  }\n\n  open(config: ContextmenuOverlayConfig, customActions?: ContentActionRef[]): ContextMenuOverlayRef {\n    const overlay = this.createOverlay(config);\n    const overlayRef = new ContextMenuOverlayRef(overlay);\n    if (customActions?.length) {\n      this.attachCustomDialogContainer(overlay, overlayRef, customActions);\n    } else {\n      this.attachDialogContainer(overlay, overlayRef);\n    }\n\n    return overlayRef;\n  }\n\n  private createOverlay(config: ContextmenuOverlayConfig): OverlayRef {\n    const overlayConfig = this.getOverlayConfig(config);\n    return this.overlay.create(overlayConfig);\n  }\n\n  private attachDialogContainer(overlay: OverlayRef, contextmenuOverlayRef: ContextMenuOverlayRef): ContextMenuComponent {\n    const injector = this.createInjector(contextmenuOverlayRef);\n    const containerPortal = new ComponentPortal(ContextMenuComponent, null, injector);\n    const containerRef: ComponentRef<ContextMenuComponent> = overlay.attach(containerPortal);\n\n    return containerRef.instance;\n  }\n\n  private createInjector(contextmenuOverlayRef: ContextMenuOverlayRef): Injector {\n    return Injector.create({\n      parent: this.injector,\n      providers: [\n        { provide: ContextMenuOverlayRef, useValue: contextmenuOverlayRef },\n        { provide: CONTEXT_MENU_DIRECTION, useValue: this.direction }\n      ]\n    });\n  }\n\n  private attachCustomDialogContainer(\n    overlay: OverlayRef,\n    contextmenuOverlayRef: ContextMenuOverlayRef,\n    customActions: ContentActionRef[]\n  ): CustomContextMenuComponent {\n    const injector = this.createCustomInjector(contextmenuOverlayRef, customActions);\n    const containerPortal = new ComponentPortal(CustomContextMenuComponent, null, injector);\n    const containerRef: ComponentRef<CustomContextMenuComponent> = overlay.attach(containerPortal);\n\n    return containerRef.instance;\n  }\n\n  private createCustomInjector(contextmenuOverlayRef: ContextMenuOverlayRef, customActions: ContentActionRef[]): Injector {\n    return Injector.create({\n      parent: this.injector,\n      providers: [\n        { provide: ContextMenuOverlayRef, useValue: contextmenuOverlayRef },\n        { provide: CONTEXT_MENU_DIRECTION, useValue: this.direction },\n        { provide: CONTEXT_MENU_CUSTOM_ACTIONS, useValue: customActions }\n      ]\n    });\n  }\n\n  private getOverlayConfig(config: ContextmenuOverlayConfig): OverlayConfig {\n    const { x, y } = config.source;\n\n    const positionStrategy = this.overlay\n      .position()\n      .flexibleConnectedTo({ x, y })\n      .withPositions([\n        {\n          originX: 'end',\n          originY: 'bottom',\n          overlayX: 'end',\n          overlayY: 'top'\n        }\n      ]);\n\n    return new OverlayConfig({\n      hasBackdrop: config.hasBackdrop,\n      backdropClass: config.backdropClass,\n      panelClass: config.panelClass,\n      scrollStrategy: this.overlay.scrollStrategies.close(),\n      positionStrategy,\n      direction: this.direction\n    });\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ContextMenu, ContextMenuActionTypes, CustomContextMenu } from '@alfresco/aca-shared/store';\nimport { inject, Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { map } from 'rxjs/operators';\nimport { ContextMenuOverlayRef } from '../../components/context-menu/context-menu-overlay';\nimport { ContextMenuService } from '../../components/context-menu/context-menu.service';\n\n@Injectable()\nexport class ContextMenuEffects {\n  private overlayRef: ContextMenuOverlayRef = null;\n\n  contextMenuService = inject(ContextMenuService);\n  actions$ = inject(Actions);\n\n  contextMenu$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType<ContextMenu>(ContextMenuActionTypes.ContextMenu),\n        map((action) => {\n          if (this.overlayRef) {\n            this.overlayRef.close();\n          }\n\n          this.overlayRef = this.contextMenuService.open({\n            source: action.event,\n            hasBackdrop: false,\n            backdropClass: 'cdk-overlay-transparent-backdrop',\n            panelClass: 'cdk-overlay-pane'\n          });\n        })\n      ),\n    { dispatch: false }\n  );\n\n  customContextMenu$ = createEffect(\n    () =>\n      this.actions$.pipe(\n        ofType<CustomContextMenu>(ContextMenuActionTypes.CustomContextMenu),\n        map((action) => {\n          if (action.payload?.length) {\n            if (this.overlayRef) {\n              this.overlayRef.close();\n            }\n            this.overlayRef = this.contextMenuService.open(\n              {\n                source: action.event,\n                hasBackdrop: false,\n                backdropClass: 'cdk-overlay-transparent-backdrop',\n                panelClass: 'cdk-overlay-pane'\n              },\n              action.payload\n            );\n          }\n        })\n      ),\n    { dispatch: false }\n  );\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport * from './effects/app.effects';\nexport * from './effects/download.effects';\nexport * from './effects/favorite.effects';\nexport * from './effects/node.effects';\nexport * from './effects/viewer.effects';\nexport * from './effects/search.effects';\nexport * from './effects/library.effects';\nexport * from './effects/upload.effects';\nexport * from './effects/upload.effects';\nexport * from './effects/template.effects';\nexport * from './effects/contextmenu.effects';\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { NgModule } from '@angular/core';\nimport { provideStore } from '@ngrx/store';\nimport { appReducer } from './reducers/app.reducer';\nimport { FullRouterStateSerializer, provideRouterStore } from '@ngrx/router-store';\nimport { provideEffects } from '@ngrx/effects';\nimport { RouterEffects } from '@alfresco/aca-shared/store';\nimport {\n  AppEffects,\n  ContextMenuEffects,\n  DownloadEffects,\n  FavoriteEffects,\n  LibraryEffects,\n  NodeEffects,\n  SearchEffects,\n  TemplateEffects,\n  UploadEffects,\n  ViewerEffects\n} from './effects';\n\n@NgModule({\n  providers: [\n    provideStore(\n      { app: appReducer },\n      {\n        runtimeChecks: {\n          strictStateImmutability: false,\n          strictActionImmutability: false\n        }\n      }\n    ),\n    provideRouterStore({ stateKey: 'router', serializer: FullRouterStateSerializer }),\n    provideEffects([\n      AppEffects,\n      NodeEffects,\n      DownloadEffects,\n      ViewerEffects,\n      SearchEffects,\n      LibraryEffects,\n      UploadEffects,\n      FavoriteEffects,\n      TemplateEffects,\n      ContextMenuEffects,\n      RouterEffects\n    ])\n  ]\n})\nexport class AppStoreModule {}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NodesApiService } from '@alfresco/adf-content-services';\nimport { DIALOG_COMPONENT_DATA, IconComponent } from '@alfresco/adf-core';\nimport { Node, NodeAssociation } from '@alfresco/js-api';\nimport { Router } from '@angular/router';\nimport { catchError, of, take } from 'rxjs';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n@Component({\n  selector: 'app-node-location-references',\n  imports: [CommonModule, IconComponent, TranslatePipe],\n  templateUrl: './node-location-references.component.html',\n  styleUrls: ['./node-location-references.component.scss'],\n  encapsulation: ViewEncapsulation.None\n})\nexport class NodeLocationReferencesComponent implements OnInit {\n  node: Node = inject(DIALOG_COMPONENT_DATA);\n  additionalReferenceLocations: NodeAssociation[] = [];\n\n  private readonly nodesService = inject(NodesApiService);\n  private readonly router = inject(Router);\n\n  ngOnInit(): void {\n    this.nodesService\n      .listParents(this.node.id, { where: `(isPrimary=false and assocType='cm:contains')`, include: ['path'] })\n      .pipe(\n        take(1),\n        catchError(() => of({ list: { entries: [] } }))\n      )\n      .subscribe((response) => {\n        this.additionalReferenceLocations = response.list.entries.map((entry) => entry.entry);\n      });\n  }\n\n  goToLocation($event: Event, node: NodeAssociation) {\n    $event.preventDefault();\n    let link: string[] = [];\n    const { path } = node;\n\n    if (path?.name && path?.elements) {\n      const area = path && path.elements.length >= 2 && path.elements[1].name === 'Sites' ? 'libraries' : 'personal-files';\n      link = ['#', area, node.id];\n      const url = this.router.serializeUrl(this.router.parseUrl(link.join('/')));\n      window.open(url, '_blank');\n    }\n  }\n}\n","@if (additionalReferenceLocations.length > 0) {\n  <div class=\"app-node-location-reference-title\">\n    {{ 'APP.ADDITIONAL_REFERENCES_DIALOG.DESCRIPTION' | translate : { name: node.name} }}\n  </div>\n  @for (location of additionalReferenceLocations; track $index) {\n    <div class=\"app-node-location-reference\">\n      <adf-icon value=\"folder\" class=\"app-node-location-reference-icon\" fontSet=\"material-icons\"/>\n      <a\n        href=\"#\"\n        [title]=\"location.path.name\"\n        (click)=\"goToLocation($event, location)\"\n        (keydown.enter)=\"goToLocation($event, location)\"\n        class=\"app-node-location-reference-link\">\n        {{ location.path.name }}\n      </a>\n    </div>\n  }\n} @else {\n  <div class=\"app-node-location-reference-title app-node-location-reference-no-locations\">\n    {{ 'APP.ADDITIONAL_REFERENCES_DIALOG.NO_LOCATIONS' | translate : { name: node.name } }}\n  </div>\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ChangeDetectionStrategy, Component, HostListener, inject, Input, OnInit, ViewEncapsulation } from '@angular/core';\nimport { NodeEntry, PathInfo } from '@alfresco/js-api';\nimport { BehaviorSubject, Observable, of } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { getNodeContentSource, NavigateToParentFolder } from '@alfresco/aca-shared/store';\nimport { ContentApiService } from '@alfresco/aca-shared';\nimport { DialogComponent, DialogSize, TranslationService } from '@alfresco/adf-core';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialog } from '@angular/material/dialog';\nimport { NodeLocationReferencesComponent } from '../../../dialogs/node-location-references/node-location-references.component';\n\n@Component({\n  imports: [CommonModule, TranslatePipe, MatIcon, MatButtonModule],\n  selector: 'aca-location-link',\n  templateUrl: './location-link.component.html',\n  styleUrls: ['./location-link.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    class: 'aca-location-link adf-location-cell adf-datatable-content-cell'\n  }\n})\nexport class LocationLinkComponent implements OnInit {\n  private readonly store = inject(Store);\n  private readonly contentApi = inject(ContentApiService);\n  private readonly translationService = inject(TranslationService);\n  private _path: PathInfo;\n\n  private readonly dialogRef = inject(MatDialog);\n\n  nodeLocation$ = new BehaviorSubject('');\n  displayText: Observable<string>;\n  hasPrimaryParentPath = false;\n\n  @Input()\n  context: any;\n\n  @Input()\n  showLocation = false;\n\n  @HostListener('mouseenter')\n  onMouseEnter() {\n    this.getTooltip(this._path);\n  }\n\n  goToLocation(event: Event) {\n    event.preventDefault();\n    if (this.context) {\n      const node: NodeEntry = this.context.row.node;\n      this.store.dispatch(new NavigateToParentFolder(node));\n    }\n  }\n\n  ngOnInit() {\n    if (this.context) {\n      const node: NodeEntry = this.context.row.node;\n      if (node?.entry?.path) {\n        const path = node.entry.path;\n\n        if (path?.name && path?.elements) {\n          if (this.showLocation) {\n            this.displayText = of(path.name.substring(1).replace(/\\//g, ' &#8250; '));\n          } else {\n            this.displayText = this.getDisplayText(path);\n          }\n          this._path = path;\n          this.hasPrimaryParentPath = true;\n        } else {\n          this.hasPrimaryParentPath = false;\n        }\n      }\n    }\n  }\n\n  openAdditionalLocationReferencesDialog() {\n    if (this.context?.row.node) {\n      this.dialogRef.open(DialogComponent, {\n        data: {\n          title: 'APP.ADDITIONAL_REFERENCES_DIALOG.TITLE',\n          confirmButtonTitle: 'APP.ADDITIONAL_REFERENCES_DIALOG.CLOSE',\n          isCancelButtonHidden: true,\n          isCloseButtonHidden: false,\n          dialogSize: DialogSize.Medium,\n          contentComponent: NodeLocationReferencesComponent,\n          componentData: this.context.row.node.entry\n        },\n        width: '600px',\n        restoreFocus: true\n      });\n    }\n  }\n\n  // todo: review once 5.2.3 is out\n  private getDisplayText(path: PathInfo): Observable<string> {\n    const elements = path.elements.map((e) => e.name);\n\n    // for admin users\n    if (elements.length === 1 && elements[0] === 'Company Home') {\n      return of('APP.BROWSE.REPOSITORY_VIEW.TITLE');\n    }\n\n    // for non-admin users\n    if (elements.length === 3 && elements[0] === 'Company Home' && elements[1] === 'User Homes') {\n      return of('APP.BROWSE.PERSONAL.TITLE');\n    }\n\n    const result = elements[elements.length - 1];\n\n    if (result === 'documentLibrary') {\n      const fragment = path.elements[path.elements.length - 2];\n\n      return new Observable<string>((observer) => {\n        this.contentApi.getNodeInfo(fragment.id).subscribe(\n          (node) => {\n            observer.next(node.properties['cm:title'] || node.name || fragment.name);\n            observer.complete();\n          },\n          () => {\n            observer.next(fragment.name);\n            observer.complete();\n          }\n        );\n      });\n    }\n\n    return of(result);\n  }\n\n  // todo: review once 5.2.3 is out\n  private getTooltip(path: PathInfo) {\n    if (!path) {\n      return;\n    }\n\n    let result: string = null;\n\n    const contentSource = getNodeContentSource(path);\n    const elements = path.elements.map((e) => {\n      return { ...e };\n    });\n    const personalFiles = this.translationService.instant('APP.BROWSE.PERSONAL.TITLE');\n    const fileLibraries = this.translationService.instant('APP.BROWSE.LIBRARIES.TITLE');\n    const repository = this.translationService.instant('APP.BROWSE.REPOSITORY_VIEW.TITLE');\n\n    if (elements[0].name === 'Company Home') {\n      elements[0].name = contentSource === 'repository' ? repository : personalFiles;\n\n      if (elements.length > 2) {\n        if (elements[1].name === 'Sites') {\n          const fragment = elements[2];\n          this.contentApi.getNodeInfo(fragment.id).subscribe(\n            (node) => {\n              elements.splice(0, 2);\n              elements[0].name = node.properties['cm:title'] || node.name || fragment.name;\n              elements.splice(1, 1);\n              elements.unshift({ id: null, name: fileLibraries });\n\n              result = elements.map((e) => e.name).join('/');\n              this.nodeLocation$.next(result);\n            },\n            () => {\n              elements.splice(0, 2);\n              elements.unshift({ id: null, name: fileLibraries });\n              elements.splice(2, 1);\n\n              result = elements.map((e) => e.name).join('/');\n              this.nodeLocation$.next(result);\n            }\n          );\n        }\n\n        if (elements[1].name === 'User Homes') {\n          elements.splice(0, 3);\n          elements.unshift({ id: null, name: personalFiles });\n        }\n      }\n    }\n\n    result = elements.map((e) => e.name).join('/');\n    this.nodeLocation$.next(result);\n  }\n}\n","@if (hasPrimaryParentPath) {\n  <a\n    href=\"#\"\n    [title]=\"nodeLocation$ | async\"\n    (click)=\"goToLocation($event)\"\n    (keydown.enter)=\"goToLocation($event)\"\n    class=\"adf-datatable-cell-value\"\n    [innerHTML]=\"displayText | async | translate\">\n  </a>\n} @else {\n  <div class=\"aca-location-link-unknown\">\n    <span\n      class=\"adf-datatable-cell-value\"\n      [title]=\"'APP.BROWSE.SEARCH.UNKNOWN_LOCATION' | translate\">\n      {{ 'APP.BROWSE.SEARCH.UNKNOWN_LOCATION' | translate }}\n    </span>\n    <button mat-icon-button\n        [title]=\"'APP.BROWSE.SEARCH.VIEW_ADDITIONAL_LOCATIONS' | translate\"\n        [attr.aria-label]=\"'APP.BROWSE.SEARCH.VIEW_ADDITIONAL_LOCATIONS' | translate\"\n        class=\"aca-location-link-info-btn\"\n        (click)=\"openAdditionalLocationReferencesDialog()\">\n        <mat-icon>info</mat-icon>\n    </button>\n  </div>\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, ViewChild, ViewEncapsulation, inject } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { SetSelectedNodesAction } from '@alfresco/aca-shared/store';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuItem, MatMenuModule } from '@angular/material/menu';\nimport { LogoutDirective } from '@alfresco/adf-core';\n\n@Component({\n  imports: [TranslatePipe, MatIconModule, MatMenuModule, LogoutDirective],\n  selector: 'aca-logout',\n  template: `\n    <button mat-menu-item (click)=\"onLogoutEvent()\" adf-logout>\n      <mat-icon>exit_to_app</mat-icon>\n      <span>{{ 'APP.SIGN_OUT' | translate }}</span>\n    </button>\n  `,\n  encapsulation: ViewEncapsulation.None\n})\nexport class LogoutComponent {\n  private readonly store = inject(Store);\n\n  @ViewChild(MatMenuItem)\n  menuItem: MatMenuItem;\n\n  onLogoutEvent() {\n    this.store.dispatch(new SetSelectedNodesAction([]));\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, DestroyRef, inject, Input, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { SelectionState } from '@alfresco/adf-extensions';\nimport { AppStore, getAppSelection, ShareNodeAction } from '@alfresco/aca-shared/store';\nimport { CommonModule } from '@angular/common';\nimport { MatMenuItem, MatMenuModule } from '@angular/material/menu';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n  imports: [CommonModule, MatMenuModule, MatIconModule, TranslatePipe, MatButtonModule],\n  selector: 'app-toggle-shared',\n  templateUrl: './toggle-shared.component.html',\n  encapsulation: ViewEncapsulation.None\n})\nexport class ToggleSharedComponent implements OnInit {\n  private readonly store = inject<Store<AppStore>>(Store);\n\n  @Input()\n  data: {\n    iconButton?: string;\n  };\n\n  @ViewChild(MatMenuItem)\n  menuItem: MatMenuItem;\n\n  selection$: Observable<SelectionState>;\n  selectionState: SelectionState;\n  selectionLabel = '';\n  isShared = false;\n\n  private readonly destroyRef = inject(DestroyRef);\n\n  ngOnInit() {\n    this.selection$ = this.store.select(getAppSelection);\n    this.selection$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((selectionState) => {\n      this.selectionState = selectionState;\n\n      this.isShared =\n        (this.selectionState?.first?.entry && (this.selectionState.first.entry as any).sharedByUser) ||\n        !!this.selectionState?.first?.entry?.properties?.['qshare:sharedId'];\n\n      this.selectionLabel = this.isShared ? 'APP.ACTIONS.SHARE_EDIT' : 'APP.ACTIONS.SHARE';\n    });\n  }\n\n  editSharedNode(selection: SelectionState, focusedElementOnCloseSelector: string) {\n    this.store.dispatch(\n      new ShareNodeAction(selection.first, {\n        focusedElementOnCloseSelector\n      })\n    );\n  }\n}\n","<ng-container *ngIf=\"selectionState\">\n  <ng-container *ngIf=\"!data.iconButton\">\n    <button mat-menu-item data-automation-id=\"share-action-button\" (click)=\"editSharedNode(selectionState, '.adf-context-menu-source')\">\n      <mat-icon>link</mat-icon>\n      <span>{{ (isShared ? 'APP.ACTIONS.SHARE_EDIT' : 'APP.ACTIONS.SHARE') | translate }}</span>\n    </button>\n  </ng-container>\n\n  <ng-container *ngIf=\"data.iconButton\">\n    <button\n      mat-icon-button\n      data-automation-id=\"share-action-button\"\n      (click)=\"editSharedNode(selectionState, '#share-action-button')\"\n      [attr.aria-label]=\"selectionLabel | translate\"\n      [attr.title]=\"selectionLabel | translate\"\n      id=\"share-action-button\"\n    >\n      <mat-icon>link</mat-icon>\n    </button>\n  </ng-container>\n</ng-container>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { AppExtensionService, Badge } from '@alfresco/aca-shared';\nimport { IconComponent } from '@alfresco/adf-core';\nimport { DynamicExtensionComponent } from '@alfresco/adf-extensions';\nimport { NodeEntry } from '@alfresco/js-api';\nimport { CommonModule } from '@angular/common';\nimport { Component, DestroyRef, inject, Input, OnInit, ViewEncapsulation } from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n  selector: 'aca-datatable-cell-badges',\n  templateUrl: './datatable-cell-badges.component.html',\n  styleUrls: ['./datatable-cell-badges.component.scss'],\n  host: { class: 'aca-datatable-cell-badges' },\n  encapsulation: ViewEncapsulation.None,\n  imports: [CommonModule, TranslatePipe, DynamicExtensionComponent, IconComponent]\n})\nexport class DatatableCellBadgesComponent implements OnInit {\n  private readonly appExtensionService = inject(AppExtensionService);\n\n  @Input({ required: true }) node: NodeEntry;\n\n  badges: Badge[];\n\n  private readonly destroyRef = inject(DestroyRef);\n\n  ngOnInit() {\n    this.appExtensionService\n      .getBadges(this.node)\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe((badges) => {\n        this.badges = badges;\n      });\n  }\n\n  onBadgeClick(badge: Badge) {\n    if (badge.actions?.click) {\n      this.appExtensionService.runActionById(badge.actions?.click, this.node);\n    }\n  }\n\n  onKeyPress(badge: Badge) {\n    this.onBadgeClick(badge);\n  }\n}\n","<div class=\"aca-datatable-cell-badges-container\">\n    <ng-container *ngFor=\"let badge of badges\">\n      <adf-dynamic-component\n        *ngIf=\"badge.component; else iconBadge\"\n        [id]=\"badge.component\"\n        [data]=\"{ node }\"\n      />\n      <ng-template #iconBadge>\n        <adf-icon\n          class=\"adf-datatable-cell-badge\"\n          [title]=\"badge.tooltip | translate\"\n          [value]=\"badge.icon\"\n          (click)=\"onBadgeClick(badge)\"\n          (keypress.enter)=\"onKeyPress(badge)\"\n          tabindex=\"0\"\n        />\n      </ng-template>\n    </ng-container>\n</div>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { NameColumnComponent, NodesApiService } from '@alfresco/adf-content-services';\nimport { ChangeDetectorRef, Component, DestroyRef, inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { Actions, ofType } from '@ngrx/effects';\nimport { filter } from 'rxjs/operators';\nimport { NodeActionTypes } from '@alfresco/aca-shared/store';\nimport { isLocked, LockedByComponent } from '@alfresco/aca-shared';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { DatatableCellBadgesComponent } from '../datatable-cell-badges/datatable-cell-badges.component';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n  imports: [CommonModule, TranslatePipe, LockedByComponent, DatatableCellBadgesComponent],\n  selector: 'aca-custom-name-column',\n  templateUrl: './name-column.component.html',\n  styleUrls: ['./name-column.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    class: 'adf-datatable-content-cell adf-datatable-link adf-name-column aca-custom-name-column'\n  }\n})\nexport class CustomNameColumnComponent extends NameColumnComponent implements OnInit {\n  isFile: boolean;\n  isFileWriteLocked: boolean;\n\n  private readonly destroy = inject(DestroyRef);\n  private readonly cd = inject(ChangeDetectorRef);\n  private readonly actions$ = inject(Actions);\n  private readonly nodesService = inject(NodesApiService);\n\n  ngOnInit() {\n    this.updateValue();\n    this.isFile = this.node?.entry && !this.node.entry.isFolder;\n    this.isFileWriteLocked = isLocked(this.node);\n\n    this.nodesService.nodeUpdated.pipe(takeUntilDestroyed(this.destroy)).subscribe((node: any) => {\n      const row = this.context.row;\n      if (row) {\n        const { entry } = row.node;\n        const currentId = entry.nodeId || entry.id;\n        const updatedId = node.nodeId || node.id;\n\n        if (currentId === updatedId) {\n          entry.name = node.name;\n          row.node = { entry };\n          this.updateValue();\n        }\n\n        this.isFile = this.node?.entry && !this.node.entry.isFolder;\n        this.isFileWriteLocked = isLocked(this.node);\n      }\n    });\n\n    this.actions$\n      .pipe(\n        ofType<any>(NodeActionTypes.EditOffline),\n        filter((val) => this.node.entry.id === val.payload.entry.id),\n        takeUntilDestroyed(this.destroy)\n      )\n      .subscribe(() => {\n        this.isFileWriteLocked = isLocked(this.node);\n        this.cd.detectChanges();\n      });\n  }\n\n  onLinkClick(event: Event) {\n    event.stopPropagation();\n    this.onClick();\n  }\n}\n","<div class=\"aca-custom-name-column\">\n  <div class=\"aca-name-column-container\">\n    <span\n      role=\"link\"\n      tabindex=\"0\"\n      [attr.aria-label]=\"\n        (isFile ? 'CUSTOM_NAME_COLUMN.ACCESSIBILITY.FILE_LINK_ARIA_LABEL' : 'CUSTOM_NAME_COLUMN.ACCESSIBILITY.FOLDER_LINK_ARIA_LABEL')\n          | translate : { name: displayText$ | async }\n      \"\n      class=\"adf-datatable-cell-value\"\n      [title]=\"tooltip()\"\n      (click)=\"onLinkClick($event)\"\n      (keyup.enter)=\"onLinkClick($event)\"\n    >\n      {{ displayText$ | async }}\n    </span>\n\n    <ng-container *ngIf=\"isFile && isFileWriteLocked\">\n      <aca-locked-by [node]=\"context.row.node\" />\n    </ng-container>\n  </div>\n  <aca-datatable-cell-badges [node]=\"node\" />\n</div>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Node } from '@alfresco/js-api';\n\nexport abstract class ExternalNodePermissionCommentsTabService {\n  abstract canAddComments(node: Node): boolean;\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, Input, OnInit, ViewEncapsulation, inject } from '@angular/core';\nimport { Node } from '@alfresco/js-api';\nimport { isLocked, NodePermissionService } from '@alfresco/aca-shared';\nimport { MatCardModule } from '@angular/material/card';\nimport { NodeCommentsComponent } from '@alfresco/adf-content-services';\nimport { ExternalNodePermissionCommentsTabService } from './external-node-permission-comments-tab.service';\n\n@Component({\n  imports: [MatCardModule, NodeCommentsComponent],\n  selector: 'app-comments-tab',\n  template: ` <mat-card class=\"adf-comments-tab-container\" appearance=\"raised\"\n    ><adf-node-comments [readOnly]=\"!canUpdateNode\" [nodeId]=\"destination ?? node?.id\"\n  /></mat-card>`,\n  styles: ['app-comments-tab mat-card { padding: 16px }'],\n  encapsulation: ViewEncapsulation.None,\n  styleUrls: ['./comments-tab.component.scss']\n})\nexport class CommentsTabComponent implements OnInit {\n  private readonly permission = inject(NodePermissionService);\n  private readonly externalPermissionNodeService = inject(ExternalNodePermissionCommentsTabService, { optional: true });\n\n  @Input()\n  node: Node;\n\n  canUpdateNode = false;\n  destination: string | null = null;\n\n  ngOnInit(): void {\n    if (!this.node) {\n      this.canUpdateNode = false;\n    }\n\n    if (this.node.isLink) {\n      this.destination = this.node.properties?.['cm:destination'] ?? null;\n    }\n\n    if (this.node.isFolder || (this.node.isFile && !isLocked({ entry: this.node }))) {\n      this.canUpdateNode = this.permission.check(this.node, ['update']);\n      if (this.externalPermissionNodeService) {\n        this.canUpdateNode &&= this.externalPermissionNodeService.canAddComments(this.node);\n      }\n    }\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, DestroyRef, ElementRef, inject, Input, OnChanges, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport {\n  FormControl,\n  FormGroupDirective,\n  FormsModule,\n  NgForm,\n  ReactiveFormsModule,\n  UntypedFormControl,\n  UntypedFormGroup,\n  ValidationErrors,\n  Validators\n} from '@angular/forms';\nimport { QueriesApi, SiteEntry, SitePaging, LazyApi } from '@alfresco/js-api';\nimport { Store } from '@ngrx/store';\nimport { AppStore, isAdmin, UpdateLibraryAction } from '@alfresco/aca-shared/store';\nimport { AppHookService } from '@alfresco/aca-shared';\nimport { debounceTime, mergeMap } from 'rxjs/operators';\nimport { AlfrescoApiService } from '@alfresco/adf-content-services';\nimport { from, Observable } from 'rxjs';\nimport { ErrorStateMatcher, MatOptionModule } from '@angular/material/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatButtonModule } from '@angular/material/button';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NgForOf } from '@angular/common';\n\nexport class InstantErrorStateMatcher 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 || isSubmitted));\n  }\n}\n\n@Component({\n  imports: [\n    MatCardModule,\n    TranslatePipe,\n    MatFormFieldModule,\n    FormsModule,\n    ReactiveFormsModule,\n    MatSelectModule,\n    MatOptionModule,\n    MatInputModule,\n    MatButtonModule,\n    NgForOf\n  ],\n  selector: 'app-library-metadata-form',\n  templateUrl: './library-metadata-form.component.html',\n  styleUrls: ['./library-metadata-form.component.scss'],\n  encapsulation: ViewEncapsulation.None\n})\nexport class LibraryMetadataFormComponent implements OnInit, OnChanges {\n  private readonly alfrescoApiService = inject(AlfrescoApiService);\n  protected readonly store = inject<Store<AppStore>>(Store);\n  private readonly appHookService = inject(AppHookService);\n\n  private _titleErrorTranslationKey: string;\n\n  @LazyApi((self: LibraryMetadataFormComponent) => new QueriesApi(self.alfrescoApiService.getInstance()))\n  declare queriesApi: QueriesApi;\n\n  get titleErrorTranslationKey(): string {\n    return this._titleErrorTranslationKey;\n  }\n\n  @Input()\n  node: SiteEntry;\n\n  libraryTitleExists = false;\n\n  libraryType = [\n    { value: 'PUBLIC', label: 'LIBRARY.VISIBILITY.PUBLIC' },\n    { value: 'PRIVATE', label: 'LIBRARY.VISIBILITY.PRIVATE' },\n    { value: 'MODERATED', label: 'LIBRARY.VISIBILITY.MODERATED' }\n  ];\n\n  form: UntypedFormGroup = new UntypedFormGroup({\n    id: new UntypedFormControl({ value: '', disabled: true }),\n    title: new UntypedFormControl({ value: '' }, [Validators.required, Validators.maxLength(256), this.validateEmptyName]),\n    description: new UntypedFormControl({ value: '' }, [Validators.maxLength(512)]),\n    visibility: new UntypedFormControl(this.libraryType[0].value)\n  });\n\n  matcher = new InstantErrorStateMatcher();\n  canUpdateLibrary = false;\n  isAdmin = false;\n\n  @ViewChild('libraryNameInput')\n  private readonly libraryNameInput: ElementRef<HTMLInputElement>;\n  private readonly destroyRef = inject(DestroyRef);\n\n  toggleEdit() {\n    if (this.form.enabled) {\n      this.form.disable({\n        emitEvent: false\n      });\n    } else {\n      this.form.enable({\n        emitEvent: false\n      });\n      this.form.controls.id.disable();\n      this.libraryNameInput.nativeElement.focus();\n    }\n  }\n\n  cancel() {\n    this.updateForm(this.node);\n    this.toggleEdit();\n    this.form.markAsPristine();\n  }\n\n  ngOnInit() {\n    this.toggleEdit();\n    this.updateForm(this.node);\n    this.form.controls.title.statusChanges\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe(\n        () =>\n          (this._titleErrorTranslationKey = this.form.controls.title.errors?.empty\n            ? 'LIBRARY.ERRORS.ONLY_SPACES'\n            : 'LIBRARY.ERRORS.TITLE_TOO_LONG_OR_MISSING')\n      );\n    this.form.controls['title'].valueChanges\n      .pipe(\n        debounceTime(300),\n        mergeMap((title) => this.findLibraryByTitle(title)),\n        takeUntilDestroyed(this.destroyRef)\n      )\n      .subscribe((result) => {\n        const { entries } = result.list;\n\n        if (entries.length) {\n          if (this.form.controls.title.value === this.node.entry.title) {\n            this.libraryTitleExists = false;\n          } else {\n            this.libraryTitleExists = this.form.controls.title.value === entries[0].entry.title;\n          }\n        } else {\n          this.libraryTitleExists = false;\n        }\n      });\n    this.store\n      .select(isAdmin)\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe((value) => {\n        this.isAdmin = value;\n      });\n    this.canUpdateLibrary = this.node?.entry?.role === 'SiteManager' || this.isAdmin;\n    this.appHookService.libraryUpdated.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n      Object.assign(this.node.entry, this.form.value);\n    });\n    this.appHookService.libraryUpdateFailed.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n      this.form.markAsDirty();\n    });\n  }\n\n  ngOnChanges() {\n    this.updateForm(this.node);\n    this.canUpdateLibrary = this.node?.entry?.role === 'SiteManager' || this.isAdmin;\n  }\n\n  update() {\n    if (this.canUpdateLibrary && this.form.valid) {\n      this.form.markAsPristine();\n      this.store.dispatch(\n        new UpdateLibraryAction({\n          ...this.form.value,\n          title: this.form.value.title.trim()\n        })\n      );\n    }\n  }\n\n  private updateForm(node: SiteEntry) {\n    const { entry } = node;\n\n    this.form.setValue({\n      id: entry.id,\n      title: entry.title,\n      description: entry.description || '',\n      visibility: entry.visibility\n    });\n  }\n\n  private findLibraryByTitle(libraryTitle: string): Observable<SitePaging | { list: { entries: any[] } }> {\n    return from(\n      this.queriesApi\n        .findSites(libraryTitle.trim(), {\n          maxItems: 1,\n          fields: ['title']\n        })\n        .catch(() => ({ list: { entries: [] } }))\n    );\n  }\n\n  private validateEmptyName(control: FormControl<string>): ValidationErrors {\n    return control.value.length && !control.value.trim() ? { empty: true } : null;\n  }\n}\n","@if (node) {\n<mat-card appearance=\"raised\">\n  <mat-card-content>\n    <form [formGroup]=\"form\" autocomplete=\"off\">\n      <mat-form-field data-automation-id=\"library-name-properties-wrapper\" class=\"app-library-metadata-form-field\">\n        <mat-label>{{ 'LIBRARY.DIALOG.FORM.NAME' | translate }}</mat-label>\n        <input\n          #libraryNameInput\n          data-automation-id=\"app-library-metadata-form-name-input\"\n          matInput\n          required\n          placeholder=\"{{ 'LIBRARY.DIALOG.FORM.NAME' | translate }}\"\n          formControlName=\"title\"\n          [errorStateMatcher]=\"matcher\"\n        />\n        @if (libraryTitleExists) {\n        <mat-hint data-automation-id=\"app-library-metadata-form-name-hint\">{{ 'LIBRARY.HINTS.SITE_TITLE_EXISTS' | translate }}</mat-hint>\n        }\n        <mat-error data-automation-id=\"app-library-metadata-form-name-error\">\n          {{ titleErrorTranslationKey | translate }}\n        </mat-error>\n      </mat-form-field>\n\n      <mat-form-field data-automation-id=\"library-id-properties-wrapper\" class=\"app-library-metadata-form-field\">\n        <mat-label>{{ 'LIBRARY.DIALOG.FORM.SITE_ID' | translate }}</mat-label>\n        <input matInput placeholder=\"{{ 'LIBRARY.DIALOG.FORM.SITE_ID' | translate }}\" formControlName=\"id\" />\n      </mat-form-field>\n\n      <mat-form-field data-automation-id=\"library-visibility-properties-wrapper\" class=\"app-library-metadata-form-field\">\n        <mat-label>{{ 'LIBRARY.DIALOG.FORM.VISIBILITY' | translate }}</mat-label>\n        <mat-select placeholder=\"{{ 'LIBRARY.DIALOG.FORM.VISIBILITY' | translate }}\" formControlName=\"visibility\">\n          <mat-option [value]=\"type.value\" [attr.data-automation-id]=\"'library-visibility-option-' + type.value\" *ngFor=\"let type of libraryType\">\n            {{ type.label | translate }}\n          </mat-option>\n        </mat-select>\n      </mat-form-field>\n\n      <mat-form-field data-automation-id=\"library-description-properties-wrapper\" class=\"app-library-metadata-form-field\">\n        <mat-label>{{ 'LIBRARY.DIALOG.FORM.DESCRIPTION' | translate }}</mat-label>\n        <textarea\n          matInput\n          placeholder=\"{{ 'LIBRARY.DIALOG.FORM.DESCRIPTION' | translate }}\"\n          rows=\"3\"\n          formControlName=\"description\"\n          [errorStateMatcher]=\"matcher\"\n        ></textarea>\n        <mat-error>\n          {{ 'LIBRARY.ERRORS.DESCRIPTION_TOO_LONG' | translate }}\n        </mat-error>\n      </mat-form-field>\n    </form>\n  </mat-card-content>\n\n  @if (canUpdateLibrary) {\n  <mat-card-actions align=\"end\">\n    @if (form.enabled) {\n    <button\n      data-automation-id=\"app-library-metadata-form-cancel-button\"\n      mat-button\n      (click)=\"cancel()\">\n      {{ 'LIBRARY.DIALOG.CANCEL' | translate }}\n    </button>\n    <button mat-button class=\"app-library-metadata-form__primary-action\" [disabled]=\"form.invalid || form.pristine\" (click)=\"update()\">\n      {{ 'LIBRARY.DIALOG.UPDATE' | translate }}\n    </button>\n    } @else {\n    <button\n      mat-button\n      class=\"app-library-metadata-form__primary-action\"\n      (click)=\"toggleEdit()\"\n      data-automation-id=\"app-library-metadata-form-edit-button\">\n      {{ 'LIBRARY.DIALOG.EDIT' | translate }}\n    </button>\n    }\n  </mat-card-actions>\n  }\n</mat-card>\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { SiteEntry } from '@alfresco/js-api';\nimport { LibraryMetadataFormComponent } from './library-metadata-form.component';\n\n@Component({\n  imports: [LibraryMetadataFormComponent],\n  selector: 'app-library-metadata-tab',\n  template: '<app-library-metadata-form [node]=\"node\" />',\n  host: { class: 'app-metadata-tab' },\n  encapsulation: ViewEncapsulation.None\n})\nexport class LibraryMetadataTabComponent {\n  @Input()\n  node: SiteEntry;\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, DestroyRef, inject, Input, OnInit, ViewEncapsulation } from '@angular/core';\nimport { Node } from '@alfresco/js-api';\nimport { AppExtensionService, isLocked, NodePermissionService } from '@alfresco/aca-shared';\nimport { AppStore, EditOfflineAction, infoDrawerMetadataAspect, NodeActionTypes } from '@alfresco/aca-shared/store';\nimport { AppConfigService, NotificationService } from '@alfresco/adf-core';\nimport { Observable } from 'rxjs';\nimport {\n  CategoryService,\n  ContentMetadataComponent,\n  ContentMetadataCustomPanel,\n  ContentMetadataService,\n  TagService\n} from '@alfresco/adf-content-services';\nimport { filter, map } from 'rxjs/operators';\nimport { AsyncPipe } from '@angular/common';\nimport { Actions, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ExtensionService } from '@alfresco/adf-extensions';\n\n@Component({\n  imports: [ContentMetadataComponent, AsyncPipe],\n  selector: 'app-metadata-tab',\n  template: `\n    <adf-content-metadata\n      [readOnly]=\"readOnly\"\n      [preset]=\"'custom'\"\n      [node]=\"node\"\n      [customPanels]=\"customPanels | async\"\n      [displayCategories]=\"displayCategories\"\n      [displayTags]=\"displayTags\"\n      [displayAspect]=\"metadataAspect\"\n    />\n  `,\n  styleUrls: ['metadata-tab.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'app-metadata-tab' }\n})\nexport class MetadataTabComponent implements OnInit {\n  private readonly permission = inject(NodePermissionService);\n  protected readonly extensions = inject(AppExtensionService);\n  private readonly appConfig = inject(AppConfigService);\n  private readonly notificationService = inject(NotificationService);\n  private readonly contentMetadataService = inject(ContentMetadataService);\n  private readonly actions$ = inject(Actions);\n  private readonly tagService = inject(TagService);\n  private readonly categoryService = inject(CategoryService);\n  private readonly store = inject<Store<AppStore>>(Store);\n  private readonly extensionService = inject(ExtensionService);\n\n  private _displayCategories = true;\n  private _displayTags = true;\n\n  @Input()\n  node: Node;\n\n  readOnly = false;\n  customPanels: Observable<ContentMetadataCustomPanel[]>;\n  metadataAspect: string;\n\n  get displayCategories(): boolean {\n    return this._displayCategories;\n  }\n  get displayTags(): boolean {\n    return this._displayTags;\n  }\n\n  private readonly destroyRef = inject(DestroyRef);\n\n  constructor() {\n    if (this.extensions.contentMetadata) {\n      this.appConfig.config['content-metadata'].presets = this.extensions.contentMetadata.presets;\n    }\n  }\n\n  ngOnInit() {\n    this._displayTags = !this.node?.isLink && this.tagService.areTagsEnabled();\n    this._displayCategories = !this.node?.isLink && this.categoryService.areCategoriesEnabled();\n\n    this.contentMetadataService.error.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((err: { message: string }) => {\n      this.notificationService.showError(err.message);\n    });\n    this.checkIfNodeIsUpdatable(this.node);\n    this.actions$\n      .pipe(\n        ofType<EditOfflineAction>(NodeActionTypes.EditOffline),\n        filter((updatedNode) => this.node.id === updatedNode.payload.entry.id),\n        takeUntilDestroyed(this.destroyRef)\n      )\n      .subscribe((updatedNode) => {\n        this.checkIfNodeIsUpdatable(updatedNode?.payload.entry);\n      });\n    this.customPanels = this.extensions.getCustomMetadataPanels({ entry: this.node }).pipe(\n      map((panels) => {\n        return panels.map((panel) => {\n          return { panelTitle: panel.title, component: panel.component };\n        });\n      }),\n      takeUntilDestroyed(this.destroyRef)\n    );\n    this.store\n      .select(infoDrawerMetadataAspect)\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe((metadataAspect) => (this.metadataAspect = metadataAspect));\n  }\n\n  private checkIfNodeIsUpdatable(node: Node) {\n    this.readOnly = !(node &&\n    !isLocked({ entry: node }) &&\n    (this.extensionService.getFeature('sidebar')?.['rules']?.enabled ?? []).every((rule: string) =>\n      this.extensionService.evaluateRule(rule, this.extensions)\n    )\n      ? this.permission.check(node, ['update'])\n      : false);\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, inject, Input, OnChanges, OnInit, ViewEncapsulation } from '@angular/core';\nimport { Node } from '@alfresco/js-api';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { AppSettingsService } from '@alfresco/aca-shared';\nimport { VersionManagerComponent } from '@alfresco/adf-content-services';\n\n@Component({\n  imports: [MatIconModule, TranslatePipe, VersionManagerComponent],\n  selector: 'app-versions-tab',\n  template: `\n    @if (isFileSelected) {\n      <adf-version-manager\n        [showComments]=\"settings.uploadAllowComments\"\n        [allowDownload]=\"settings.uploadAllowDownload\"\n        [node]=\"node\"\n        [allowViewVersions]=\"settings.versionManagerAllowViewVersions\"\n        [allowVersionDelete]=\"settings.versionManagerAllowVersionDelete\"\n        [showActions]=\"settings.versionManagerShowActions\"\n      />\n    } @else {\n      <div class=\"adf-manage-versions-empty\">\n        <mat-icon class=\"adf-manage-versions-empty-icon\">face</mat-icon>\n        {{ 'VERSION.SELECTION.EMPTY' | translate }}\n      </div>\n    }\n  `,\n  encapsulation: ViewEncapsulation.None\n})\nexport class VersionsTabComponent implements OnInit, OnChanges {\n  settings = inject(AppSettingsService);\n\n  @Input()\n  node: Node;\n\n  isFileSelected = false;\n\n  ngOnInit() {\n    this.updateState();\n  }\n\n  ngOnChanges() {\n    this.updateState();\n  }\n\n  private updateState() {\n    if (this.node && (this.node as any).nodeId) {\n      // workaround for shared files type.\n      this.isFileSelected = true;\n    } else {\n      this.isFileSelected = this.node.isFile;\n    }\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { AppStore, DownloadNodesAction, EditOfflineAction, SetSelectedNodesAction, getAppSelection } from '@alfresco/aca-shared/store';\nimport { NodeEntry, SharedLinkEntry, Node, NodesApi, LazyApi } from '@alfresco/js-api';\nimport { Component, inject, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { AppExtensionService, isLocked } from '@alfresco/aca-shared';\nimport { NotificationService } from '@alfresco/adf-core';\nimport { AlfrescoApiService } from '@alfresco/adf-content-services';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatMenuItem, MatMenuModule } from '@angular/material/menu';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n  imports: [CommonModule, TranslatePipe, MatMenuModule, MatIconModule],\n  selector: 'app-toggle-edit-offline',\n  template: `\n    <button mat-menu-item [attr.title]=\"nodeTitle | translate\" (click)=\"onClick()\">\n      <mat-icon>{{ isNodeLocked ? 'cancel' : 'edit' }}</mat-icon>\n      <span>{{ (isNodeLocked ? 'APP.ACTIONS.EDIT_OFFLINE_CANCEL' : 'APP.ACTIONS.EDIT_OFFLINE') | translate }}</span>\n    </button>\n  `,\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'app-toggle-edit-offline' }\n})\nexport class ToggleEditOfflineComponent implements OnInit {\n  private readonly store = inject<Store<AppStore>>(Store);\n  private readonly alfrescoApiService = inject(AlfrescoApiService);\n  private readonly extensions = inject(AppExtensionService);\n\n  @ViewChild(MatMenuItem)\n  menuItem: MatMenuItem;\n\n  private readonly notificationService = inject(NotificationService);\n\n  @LazyApi((self: ToggleEditOfflineComponent) => new NodesApi(self.alfrescoApiService.getInstance()))\n  declare private readonly nodesApi: NodesApi;\n\n  selection: NodeEntry;\n  nodeTitle = '';\n  isNodeLocked = false;\n\n  ngOnInit() {\n    this.store.select(getAppSelection).subscribe(({ file }) => {\n      this.selection = file;\n      this.isNodeLocked = this.selection && isLocked(this.selection);\n      this.nodeTitle = this.isNodeLocked ? 'APP.ACTIONS.EDIT_OFFLINE_CANCEL' : 'APP.ACTIONS.EDIT_OFFLINE';\n    });\n  }\n\n  async onClick() {\n    await this.toggleLock(this.selection);\n    this.extensions.updateSidebarActions();\n  }\n\n  private async toggleLock(node: NodeEntry | SharedLinkEntry) {\n    const id = (node as SharedLinkEntry).entry.nodeId || node.entry.id;\n\n    if (isLocked(this.selection)) {\n      try {\n        const response = await this.unlockNode(id);\n\n        this.update(response?.entry);\n        this.store.dispatch(new EditOfflineAction(this.selection));\n        this.store.dispatch(new SetSelectedNodesAction([this.selection]));\n      } catch {\n        this.onUnlockError();\n      }\n    } else {\n      try {\n        const response = await this.lockNode(id);\n\n        this.update(response?.entry);\n        this.store.dispatch(new DownloadNodesAction([this.selection]));\n        this.store.dispatch(new EditOfflineAction(this.selection));\n        this.store.dispatch(new SetSelectedNodesAction([this.selection]));\n      } catch {\n        this.onLockError();\n      }\n    }\n  }\n\n  onLockError() {\n    this.notificationService.showError('APP.MESSAGES.ERRORS.LOCK_NODE', null, { fileName: this.selection.entry.name });\n  }\n\n  onUnlockError() {\n    this.notificationService.showError('APP.MESSAGES.ERRORS.UNLOCK_NODE', null, { fileName: this.selection.entry.name });\n  }\n\n  lockNode(nodeId: string) {\n    return this.nodesApi.lockNode(nodeId, {\n      type: 'ALLOW_OWNER_CHANGES',\n      lifetime: 'PERSISTENT'\n    });\n  }\n\n  unlockNode(nodeId: string) {\n    return this.nodesApi.unlockNode(nodeId);\n  }\n\n  private update(data: Node) {\n    if (data?.properties) {\n      const properties = this.selection.entry.properties || {};\n\n      properties['cm:lockLifetime'] = data.properties['cm:lockLifetime'];\n      properties['cm:lockOwner'] = data.properties['cm:lockOwner'];\n      properties['cm:lockType'] = data.properties['cm:lockType'];\n\n      this.selection.entry.properties = properties;\n    }\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, DestroyRef, inject, Input, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { AppHookService } from '@alfresco/aca-shared';\nimport { AppStore, getAppSelection } from '@alfresco/aca-shared/store';\nimport { SelectionState } from '@alfresco/adf-extensions';\nimport { distinctUntilChanged } from 'rxjs/operators';\nimport { Router } from '@angular/router';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { LibraryFavoriteDirective } from '@alfresco/adf-content-services';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuItem, MatMenuModule } from '@angular/material/menu';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n  imports: [CommonModule, TranslatePipe, MatIconModule, MatMenuModule, LibraryFavoriteDirective],\n  selector: 'app-toggle-favorite-library',\n  template: `\n    <button\n      mat-menu-item\n      (toggle)=\"onToggleEvent()\"\n      [adf-favorite-library]=\"library\"\n      [attr.title]=\"library.isFavorite ? ('APP.ACTIONS.REMOVE_FAVORITE' | translate) : ('APP.ACTIONS.FAVORITE' | translate)\"\n    >\n      <mat-icon class=\"app-context-menu-item--icon\">{{ library.isFavorite ? 'star' : 'star_border' }}</mat-icon>\n      <span>{{ (library.isFavorite ? 'APP.ACTIONS.REMOVE_FAVORITE' : 'APP.ACTIONS.FAVORITE') | translate }}</span>\n    </button>\n  `,\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'app-toggle-favorite-library' }\n})\nexport class ToggleFavoriteLibraryComponent implements OnInit {\n  private readonly store = inject<Store<AppStore>>(Store);\n  private readonly appHookService = inject(AppHookService);\n  private readonly router = inject(Router);\n\n  library;\n\n  @Input() data: { focusAfterClosed?: string };\n\n  @ViewChild(MatMenuItem)\n  menuItem: MatMenuItem;\n\n  private readonly destroyRef = inject(DestroyRef);\n\n  ngOnInit() {\n    const isFavoriteLibraries = this.router.url.startsWith('/favorite/libraries');\n\n    this.store\n      .select(getAppSelection)\n      .pipe(distinctUntilChanged(), takeUntilDestroyed(this.destroyRef))\n      .subscribe((selection: SelectionState) => {\n        this.library = { ...selection.library };\n\n        // favorite libraries list should already be marked as favorite\n        if (selection.library && isFavoriteLibraries) {\n          this.library.isFavorite = true;\n        }\n      });\n  }\n\n  onToggleEvent() {\n    if (this.data?.focusAfterClosed) {\n      document.querySelector<HTMLElement>('.adf-context-menu-source')?.focus();\n    }\n    setTimeout(() => {\n      this.appHookService.favoriteLibraryToggle.next();\n    }, 100);\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, inject, Input, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { Observable } from 'rxjs';\nimport { SelectionState } from '@alfresco/adf-extensions';\nimport { AppStore, getAppSelection } from '@alfresco/aca-shared/store';\nimport { Router } from '@angular/router';\nimport { CommonModule } from '@angular/common';\nimport { DocumentListService, NodeFavoriteDirective } from '@alfresco/adf-content-services';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatMenuItem, MatMenuModule } from '@angular/material/menu';\n\n@Component({\n  imports: [CommonModule, TranslatePipe, MatIconModule, MatMenuModule, NodeFavoriteDirective],\n  selector: 'app-toggle-favorite',\n  template: `\n    <button mat-menu-item #favorites=\"adfFavorite\" (toggle)=\"onToggleEvent()\" [adf-node-favorite]=\"(selection$ | async).nodes\">\n      <mat-icon class=\"app-context-menu-item--icon\">{{ favorites.hasFavorites() ? 'star' : 'star_border' }}</mat-icon>\n      <span>{{ (favorites.hasFavorites() ? 'APP.ACTIONS.REMOVE_FAVORITE' : 'APP.ACTIONS.FAVORITE') | translate }}</span>\n    </button>\n  `,\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'app-toggle-favorite' }\n})\nexport class ToggleFavoriteComponent implements OnInit {\n  private readonly store = inject<Store<AppStore>>(Store);\n  private readonly router = inject(Router);\n\n  private readonly documentListService = inject(DocumentListService);\n\n  @Input() data: any;\n  selection$: Observable<SelectionState>;\n  private reloadOnRoutes: string[] = [];\n\n  @ViewChild(MatMenuItem)\n  menuItem: MatMenuItem;\n\n  constructor() {\n    this.selection$ = this.store.select(getAppSelection);\n  }\n\n  ngOnInit() {\n    this.reloadOnRoutes = this.data?.routes ?? [];\n  }\n\n  onToggleEvent() {\n    const focusAfterClosed = this.data?.focusAfterClosed;\n    if (focusAfterClosed) {\n      document.querySelector<HTMLElement>(focusAfterClosed)?.focus();\n    }\n    if (this.reloadOnRoutes.includes(this.router.url)) {\n      this.documentListService.reload();\n    }\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, ViewEncapsulation, inject } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { isInfoDrawerOpened, ToggleInfoDrawerAction } from '@alfresco/aca-shared/store';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n  imports: [CommonModule, TranslatePipe, MatButtonModule, MatIconModule],\n  selector: 'app-toggle-info-drawer',\n  template: `\n    <button\n      mat-icon-button\n      [color]=\"(infoDrawerOpened$ | async) ? 'primary' : null\"\n      [attr.aria-label]=\"'APP.ACTIONS.DETAILS' | translate\"\n      [attr.aria-expanded]=\"infoDrawerOpened$ | async\"\n      [attr.title]=\"'APP.ACTIONS.DETAILS' | translate\"\n      (click)=\"onClick()\"\n    >\n      <mat-icon>view_sidebar</mat-icon>\n    </button>\n  `,\n  styleUrl: './toggle-info-drawer.component.scss',\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'app-toggle-info-drawer' }\n})\nexport class ToggleInfoDrawerComponent {\n  private readonly store = inject<Store<any>>(Store);\n\n  infoDrawerOpened$: Observable<boolean>;\n\n  constructor() {\n    this.infoDrawerOpened$ = this.store.select(isInfoDrawerOpened);\n  }\n\n  onClick() {\n    this.store.dispatch(new ToggleInfoDrawerAction());\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { AppStore, SetSelectedNodesAction, getAppSelection } from '@alfresco/aca-shared/store';\nimport { AppHookService, UserProfileService } from '@alfresco/aca-shared';\nimport { SelectionState } from '@alfresco/adf-extensions';\nimport { Component, inject, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { Observable } from 'rxjs';\nimport { LibraryMembershipDirective, LibraryMembershipErrorEvent, LibraryMembershipToggleEvent } from '@alfresco/adf-content-services';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { NotificationService } from '@alfresco/adf-core';\nimport { MatMenuItem } from '@angular/material/menu';\n\n@Component({\n  imports: [CommonModule, TranslatePipe, MatButtonModule, MatIconModule, LibraryMembershipDirective],\n  selector: 'app-toggle-join-library-button',\n  template: `\n    <button\n      mat-icon-button\n      color=\"primary\"\n      #membership=\"libraryMembership\"\n      (toggle)=\"onToggleEvent($event)\"\n      (error)=\"onErrorEvent($event)\"\n      [adf-library-membership]=\"(selection$ | async).library\"\n      [isAdmin]=\"(profile$ | async).isAdmin\"\n      [attr.title]=\"(membership.isJoinRequested | async) ? ('APP.ACTIONS.CANCEL_JOIN' | translate) : ('APP.ACTIONS.JOIN' | translate)\"\n    >\n      <mat-icon *ngIf=\"membership.isJoinRequested | async\">cancel</mat-icon>\n      <mat-icon *ngIf=\"!(membership.isJoinRequested | async)\">library_add</mat-icon>\n    </button>\n  `,\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'app-toggle-join-library' }\n})\nexport class ToggleJoinLibraryButtonComponent {\n  @ViewChild(MatMenuItem)\n  menuItem: MatMenuItem;\n\n  private readonly userProfileService = inject(UserProfileService);\n  private readonly notificationService = inject(NotificationService);\n  private readonly appHookService = inject(AppHookService);\n  private readonly store = inject(Store<AppStore>);\n\n  selection$: Observable<SelectionState>;\n  profile$ = this.userProfileService.userProfile$;\n\n  constructor() {\n    this.selection$ = this.store.select(getAppSelection);\n  }\n\n  onToggleEvent(event: LibraryMembershipToggleEvent) {\n    this.notificationService.showInfo(event.i18nKey);\n\n    if (event.shouldReload) {\n      this.appHookService.libraryJoined.next();\n    } else {\n      if (event.updatedEntry) {\n        this.store.dispatch(new SetSelectedNodesAction([{ entry: event.updatedEntry, isLibrary: true } as any]));\n      }\n      this.appHookService.joinLibraryToggle.next();\n    }\n  }\n\n  onErrorEvent(event: LibraryMembershipErrorEvent) {\n    this.notificationService.showError(event.i18nKey);\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, ViewEncapsulation } from '@angular/core';\nimport { ToggleJoinLibraryButtonComponent } from './toggle-join-library-button.component';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { LibraryMembershipDirective } from '@alfresco/adf-content-services';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\n\n@Component({\n  imports: [CommonModule, TranslatePipe, MatIconModule, MatMenuModule, LibraryMembershipDirective],\n  selector: 'app-toggle-join-library-menu',\n  template: `\n    <button\n      mat-menu-item\n      #membership=\"libraryMembership\"\n      (toggle)=\"onToggleEvent($event)\"\n      (error)=\"onErrorEvent($event)\"\n      [adf-library-membership]=\"(selection$ | async).library\"\n      [isAdmin]=\"(profile$ | async).isAdmin\"\n      [attr.title]=\"(membership.isJoinRequested | async) ? ('APP.ACTIONS.CANCEL_JOIN' | translate) : ('APP.ACTIONS.JOIN' | translate)\"\n    >\n      <mat-icon>{{ (membership.isJoinRequested | async) ? 'cancel' : 'library_add' }}</mat-icon>\n      <span>{{ (membership.isJoinRequested | async) ? ('APP.ACTIONS.CANCEL_JOIN' | translate) : ('APP.ACTIONS.JOIN' | translate) }}</span>\n    </button>\n  `,\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'app-toggle-join-library' }\n})\nexport class ToggleJoinLibraryMenuComponent extends ToggleJoinLibraryButtonComponent {}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, inject, Input, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { AppStore, getAppSelection, ViewNodeAction } from '@alfresco/aca-shared/store';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { take } from 'rxjs/operators';\nimport { SharedLinkEntry } from '@alfresco/js-api';\nimport { AppSettingsService, AutoDownloadService } from '@alfresco/aca-shared';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuItem, MatMenuModule } from '@angular/material/menu';\nimport { MatDialogModule } from '@angular/material/dialog';\n\n@Component({\n  imports: [CommonModule, TranslatePipe, MatButtonModule, MatIconModule, MatMenuModule, MatDialogModule],\n  selector: 'app-view-node',\n  template: `\n    <button\n      *ngIf=\"data.iconButton\"\n      mat-icon-button\n      [attr.aria-label]=\"data.title | translate\"\n      [attr.title]=\"data.title | translate\"\n      (click)=\"onClick()\"\n    >\n      <mat-icon>visibility</mat-icon>\n    </button>\n\n    <button *ngIf=\"data.menuButton\" mat-menu-item (click)=\"onClick()\">\n      <mat-icon>visibility</mat-icon>\n      <span>{{ data.title | translate }}</span>\n    </button>\n  `,\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'app-view-node' }\n})\nexport class ViewNodeComponent {\n  private readonly store = inject<Store<AppStore>>(Store);\n  private readonly router = inject(Router);\n  private readonly autoDownloadService = inject(AutoDownloadService);\n  private readonly activatedRoute = inject(ActivatedRoute);\n\n  private readonly settings = inject(AppSettingsService);\n\n  @Input() data: { title?: string; menuButton?: boolean; iconButton?: boolean };\n\n  @ViewChild(MatMenuItem)\n  menuItem: MatMenuItem;\n\n  onClick() {\n    this.store\n      .select(getAppSelection)\n      .pipe(take(1))\n      .subscribe((selection) => {\n        if (!this.settings.autoDownloadEnabled || !this.autoDownloadService.tryDownload(selection.file, this.settings.authDownloadThreshold)) {\n          let id: string;\n\n          if (selection.file.entry.nodeType === 'app:filelink') {\n            id = selection.file.entry.properties['cm:destination'];\n          } else {\n            id = (selection.file as SharedLinkEntry).entry.nodeId || (selection.file as any).entry.guid || selection.file.entry.id;\n          }\n          this.navigateToViewer(id);\n        }\n      });\n  }\n\n  private navigateToViewer(id: string): void {\n    this.activatedRoute.queryParams.pipe(take(1)).subscribe((params) => {\n      const location = params.location || this.router.url;\n      this.store.dispatch(new ViewNodeAction(id, { location }));\n    });\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { DestroyRef, Directive, ElementRef, HostListener, inject, OnInit } from '@angular/core';\nimport { DocumentListComponent, DocumentListService } from '@alfresco/adf-content-services';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { UserPreferencesService } from '@alfresco/adf-core';\nimport { Store } from '@ngrx/store';\nimport { SetSelectedNodesAction } from '@alfresco/aca-shared/store';\nimport { filter } from 'rxjs/operators';\nimport { NodeEntry } from '@alfresco/js-api';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { AppHookService } from '@alfresco/aca-shared';\n\n@Directive({\n  standalone: true,\n  selector: '[acaDocumentList]'\n})\nexport class DocumentListDirective implements OnInit {\n  private readonly store = inject<Store<any>>(Store);\n  private readonly documentList = inject(DocumentListComponent);\n  private readonly preferences = inject(UserPreferencesService);\n  private readonly route = inject(ActivatedRoute);\n  private readonly router = inject(Router);\n  private readonly documentListService = inject(DocumentListService);\n  private readonly appHookService = inject(AppHookService);\n  private readonly elementRef = inject(ElementRef);\n\n  private isLibrary = false;\n  private pendingNode: NodeEntry | null = null;\n\n  selectedNode: NodeEntry;\n\n  get sortingPreferenceKey(): string {\n    return this.route.snapshot.data.sortingPreferenceKey;\n  }\n\n  private readonly destroyRef = inject(DestroyRef);\n\n  ngOnInit() {\n    this.documentList.stickyHeader = true;\n    this.documentList.includeFields = ['isFavorite', 'aspectNames', 'definition', 'isLink'];\n    this.isLibrary =\n      this.documentList.currentFolderId === '-mysites-' ||\n      // workaround for custom node list\n      this.router.url.endsWith('/libraries') ||\n      this.router.url.startsWith('/search-libraries');\n\n    if (this.sortingPreferenceKey) {\n      if (this.preferences.hasItem(`${this.sortingPreferenceKey}.columns.width`)) {\n        this.documentList.setColumnsWidths = JSON.parse(this.preferences.get(`${this.sortingPreferenceKey}.columns.width`));\n      }\n\n      if (this.preferences.hasItem(`${this.sortingPreferenceKey}.columns.visibility`)) {\n        this.documentList.setColumnsVisibility = JSON.parse(this.preferences.get(`${this.sortingPreferenceKey}.columns.visibility`));\n      }\n\n      if (this.preferences.hasItem(`${this.sortingPreferenceKey}.columns.order`)) {\n        this.documentList.setColumnsOrder = JSON.parse(this.preferences.get(`${this.sortingPreferenceKey}.columns.order`));\n      }\n\n      const mode = this.documentList.sortingMode;\n      this.preferences.set(`${this.sortingPreferenceKey}.sorting.mode`, mode);\n      if (mode === 'server') {\n        this.restoreSorting();\n      }\n    }\n\n    this.documentList.ready\n      .pipe(\n        filter(() => !this.router.url.includes('viewer:view')),\n        takeUntilDestroyed(this.destroyRef)\n      )\n      .subscribe(() => this.onReady());\n\n    this.documentListService.reload$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n      this.reload();\n    });\n\n    this.documentListService.resetSelection$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n      this.reset();\n    });\n\n    this.appHookService.nodeToSelect$\n      .pipe(\n        filter((node): node is NodeEntry => node !== null),\n        takeUntilDestroyed(this.destroyRef)\n      )\n      .subscribe((node) => {\n        this.pendingNode = node;\n        this.documentList.preselectNodes = [node];\n      });\n  }\n\n  @HostListener('sorting-changed', ['$event'])\n  onSortingChanged(event: CustomEvent) {\n    if (this.sortingPreferenceKey) {\n      if (this.documentList.sortingMode === 'client') {\n        this.storePreviousSorting();\n      }\n      this.preferences.set(`${this.sortingPreferenceKey}.sorting.key`, event.detail.key);\n      this.preferences.set(`${this.sortingPreferenceKey}.sorting.sortingKey`, event.detail.sortingKey);\n      this.preferences.set(`${this.sortingPreferenceKey}.sorting.direction`, event.detail.direction);\n    }\n  }\n\n  @HostListener('columnsWidthChanged', ['$event'])\n  onColumnsWidthChanged(event: CustomEvent) {\n    if (this.sortingPreferenceKey) {\n      this.preferences.set(`${this.sortingPreferenceKey}.columns.width`, JSON.stringify(event));\n    }\n  }\n\n  @HostListener('columnsVisibilityChanged', ['$event'])\n  onColumnsVisibilityChange(event: CustomEvent) {\n    if (this.sortingPreferenceKey) {\n      this.preferences.set(`${this.sortingPreferenceKey}.columns.visibility`, JSON.stringify(event));\n    }\n  }\n\n  @HostListener('columnsOrderChanged', ['$event'])\n  onColumnOrderChanged(event: CustomEvent) {\n    if (this.sortingPreferenceKey) {\n      this.preferences.set(`${this.sortingPreferenceKey}.columns.order`, JSON.stringify(event));\n    }\n  }\n\n  @HostListener('node-select', ['$event'])\n  onNodeSelect(event: CustomEvent) {\n    if (!!event.detail && !!event.detail.node) {\n      this.updateSelection();\n      this.selectedNode = event.detail.node;\n    }\n  }\n\n  @HostListener('node-unselect')\n  onNodeUnselect() {\n    this.updateSelection();\n  }\n\n  onReady() {\n    this.updateSelection();\n    this.restoreSorting();\n    if (this.pendingNode) {\n      const wasSelected = this.documentList.selection.some((node) => node.entry?.id === this.pendingNode.entry.id);\n      if (wasSelected) {\n        setTimeout(() => this.elementRef.nativeElement.querySelector('.adf-is-selected')?.focus());\n        this.pendingNode = null;\n        this.documentList.preselectNodes = [];\n        this.appHookService.nodeToSelect$.next(null);\n      }\n    }\n  }\n\n  private updateSelection() {\n    const selection = this.documentList.selection.map((node) => {\n      node['isLibrary'] = this.isLibrary;\n      return node;\n    });\n\n    this.store.dispatch(new SetSelectedNodesAction(selection));\n  }\n\n  private reload() {\n    this.store.dispatch(new SetSelectedNodesAction([]));\n  }\n\n  private reset() {\n    this.selectedNode = null;\n    this.store.dispatch(new SetSelectedNodesAction([]));\n  }\n\n  private setSorting(key: string, direction: string) {\n    this.documentList.sorting = [key, direction];\n    this.documentList.data.setSorting({ key, direction });\n  }\n\n  private storePreviousSorting() {\n    if (this.preferences.hasItem(`${this.sortingPreferenceKey}.sorting.key`)) {\n      const keyToSave = this.preferences.get(`${this.sortingPreferenceKey}.sorting.key`);\n\n      if (!keyToSave.includes(this.documentList.sorting[0])) {\n        const dirToSave = this.preferences.get(`${this.sortingPreferenceKey}.sorting.direction`);\n        this.preferences.set(`${this.sortingPreferenceKey}.sorting.previousKey`, keyToSave);\n        this.preferences.set(`${this.sortingPreferenceKey}.sorting.previousDirection`, dirToSave);\n      }\n    }\n  }\n\n  private restoreSorting() {\n    const [previousKey, previousDir] = [\n      this.preferences.get(`${this.sortingPreferenceKey}.sorting.previousKey`, null),\n      this.preferences.get(`${this.sortingPreferenceKey}.sorting.previousDirection`, null)\n    ];\n\n    const [currentKey, currentDir] = [\n      this.preferences.get(`${this.sortingPreferenceKey}.sorting.sortingKey`, null) ||\n        this.preferences.get(`${this.sortingPreferenceKey}.sorting.key`, null),\n      this.preferences.get(`${this.sortingPreferenceKey}.sorting.direction`, null)\n    ];\n\n    if (previousKey) {\n      this.setSorting(previousKey, previousDir);\n    }\n    if (currentKey) {\n      this.setSorting(currentKey, currentDir);\n    }\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport {\n  CustomEmptyContentTemplateDirective,\n  DataColumnComponent,\n  DataColumnListComponent,\n  PaginationComponent,\n  ShowHeaderMode\n} from '@alfresco/adf-core';\nimport { Component, Input, OnDestroy, OnInit, ViewEncapsulation, inject } from '@angular/core';\nimport { ActivatedRoute, Params } from '@angular/router';\nimport { Node, NodeEntry, PathElement } from '@alfresco/js-api';\nimport { NodeActionsService } from '../../services/node-actions.service';\nimport {\n  ContentApiService,\n  ContextActionsDirective,\n  GenericErrorComponent,\n  InfoDrawerComponent,\n  PageComponent,\n  PageLayoutComponent,\n  PaginationDirective,\n  ToolbarComponent\n} from '@alfresco/aca-shared';\nimport { isAdmin, SetCurrentFolderAction, showLoaderSelector, UploadFileVersionAction } from '@alfresco/aca-shared/store';\nimport { debounceTime } from 'rxjs/operators';\nimport {\n  BreadcrumbComponent,\n  DocumentListComponent,\n  FileUploadEvent,\n  FilterSearch,\n  SearchHeaderQueryBuilderService,\n  ShareDataRow,\n  UploadDragAreaComponent\n} from '@alfresco/adf-content-services';\nimport { DocumentListPresetRef, DynamicColumnComponent } from '@alfresco/adf-extensions';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { DocumentListDirective } from '../../directives/document-list.directive';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { extractFiltersFromEncodedQuery } from '../../utils/aca-search-utils';\n\n@Component({\n  imports: [\n    CommonModule,\n    TranslatePipe,\n    GenericErrorComponent,\n    DocumentListDirective,\n    ContextActionsDirective,\n    PaginationComponent,\n    MatProgressSpinnerModule,\n    InfoDrawerComponent,\n    PaginationDirective,\n    PageLayoutComponent,\n    ToolbarComponent,\n    DynamicColumnComponent,\n    BreadcrumbComponent,\n    UploadDragAreaComponent,\n    DocumentListComponent,\n    DataColumnListComponent,\n    DataColumnComponent,\n    CustomEmptyContentTemplateDirective\n  ],\n  templateUrl: './files.component.html',\n  encapsulation: ViewEncapsulation.None,\n  styleUrl: './files.component.scss',\n  selector: 'aca-files'\n})\nexport class FilesComponent extends PageComponent implements OnInit, OnDestroy {\n  private readonly contentApi = inject(ContentApiService);\n  private readonly nodeActionsService = inject(NodeActionsService);\n  private readonly route = inject(ActivatedRoute);\n  private readonly queryBuilderService = inject(SearchHeaderQueryBuilderService);\n\n  isValidPath = true;\n  isAdmin = false;\n  selectedNode: NodeEntry;\n  queryParams = null;\n  showLoader$ = this.store.select(showLoaderSelector);\n  columns: DocumentListPresetRef[] = [];\n  isFilterHeaderActive = false;\n\n  private nodePath: PathElement[];\n  private _errorTranslationKey = 'APP.MESSAGES.ERRORS.MISSING_CONTENT';\n\n  @Input()\n  navigationPath = '/personal-files';\n\n  get errorTranslationKey(): string {\n    return this._errorTranslationKey;\n  }\n\n  ngOnInit() {\n    super.ngOnInit();\n\n    const { data } = this.route.snapshot;\n\n    this.title = data.title;\n\n    this.route.queryParamMap.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((queryMap) => {\n      this.queryParams = extractFiltersFromEncodedQuery(queryMap?.get('q'));\n      this.queryBuilderService.populateFilters.next(this.queryParams);\n      if (!this.queryParams) {\n        this.queryBuilderService.resetActiveFilters();\n      }\n    });\n    this.route.params.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(({ folderId }: Params) => {\n      const nodeId = folderId || data.defaultNodeId;\n\n      this.contentApi\n        .getNode(nodeId)\n        .pipe(takeUntilDestroyed(this.destroyRef))\n        .subscribe(\n          (node) => {\n            this.isValidPath = true;\n\n            if (node?.entry?.isFolder) {\n              void this.updateCurrentNode(node.entry);\n            } else {\n              void this.router.navigate([this.navigationPath, node.entry.parentId], {\n                replaceUrl: true\n              });\n            }\n          },\n          (error: HttpErrorResponse) => this.onError(error)\n        );\n    });\n\n    this.subscriptions = this.subscriptions.concat([\n      this.nodeActionsService.contentCopied.subscribe((nodes) => this.onContentAdded(nodes)),\n      this.nodeActionsService.contentLinked.subscribe(({ succeeded }) => this.onContentAdded(succeeded)),\n      this.uploadService.fileUploadComplete.pipe(debounceTime(300)).subscribe((file) => this.onFileUploadedEvent(file)),\n      this.uploadService.fileUploadDeleted.pipe(debounceTime(300)).subscribe((file) => this.onFileUploadedEvent(file))\n    ]);\n\n    this.store\n      .select(isAdmin)\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe((value) => {\n        this.isAdmin = value;\n      });\n\n    this.extensions.filesDocumentListPreset$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((preset) => {\n      this.columns = preset;\n    });\n\n    if (this.queryParams && Object.keys(this.queryParams).length > 0) {\n      this.isFilterHeaderActive = true;\n    }\n  }\n\n  ngOnDestroy() {\n    this.store.dispatch(new SetCurrentFolderAction(null));\n    super.ngOnDestroy();\n  }\n\n  navigate(nodeId: string = null) {\n    const currentNodeId = this.route.snapshot.paramMap.get('folderId');\n    const urlWithoutParams = decodeURIComponent(this.router.url).split('?')[0];\n    const urlToNavigate: string[] = this.getUrlToNavigate(urlWithoutParams, currentNodeId, nodeId);\n    void this.router.navigate(urlToNavigate);\n  }\n\n  private getUrlToNavigate(currentURL: string, currentNodeId: string, nextNodeId: string): string[] {\n    return currentNodeId ? this.getNextNodeUrlToNavigate(currentURL, currentNodeId, nextNodeId) : this.appendNextNodeIdToUrl(currentURL, nextNodeId);\n  }\n\n  private getNextNodeUrlToNavigate(currentURL: string, currentNodeId: string, nextNodeId: string): string[] {\n    const urlToNavigate: string[] =\n      nextNodeId && !this.isRootNode(nextNodeId)\n        ? this.replaceCurrentNodeIdWithNextNodeId(currentURL, currentNodeId, nextNodeId)\n        : this.removeNodeIdFromUrl(currentURL, currentNodeId);\n    urlToNavigate.shift();\n    return urlToNavigate;\n  }\n\n  private replaceCurrentNodeIdWithNextNodeId(currentURL: string, currentNodeId: string, nextNodeId: string): string[] {\n    const nextNodeUrlToNavigate = currentURL.split('/');\n    const index = nextNodeUrlToNavigate.indexOf(currentNodeId);\n    if (index > 0) {\n      nextNodeUrlToNavigate[index] = nextNodeId;\n    }\n    return nextNodeUrlToNavigate;\n  }\n\n  private removeNodeIdFromUrl(currentURL: string, currentNodeId: string): string[] {\n    const rootUrl: string[] = currentURL.replace(currentNodeId, '').split('/');\n    rootUrl.pop();\n    return rootUrl;\n  }\n\n  private appendNextNodeIdToUrl(currentURL: string, nodeId: string): string[] {\n    const navigateToNodeUrl = currentURL.split('/');\n    if (nodeId && !this.isRootNode(nodeId)) {\n      navigateToNodeUrl.push(nodeId);\n    }\n    navigateToNodeUrl.shift();\n    return navigateToNodeUrl;\n  }\n\n  onUploadNewVersion(ev: CustomEvent) {\n    this.store.dispatch(new UploadFileVersionAction(ev));\n  }\n\n  navigateTo(node: NodeEntry) {\n    if (node?.entry) {\n      this.selectedNode = node;\n      const { isFolder } = node.entry;\n\n      if (isFolder) {\n        let id: string;\n\n        if (node.entry.nodeType === 'app:folderlink') {\n          id = node.entry.properties['cm:destination'];\n        } else {\n          id = node.entry.id;\n        }\n\n        this.documentList.resetNewFolderPagination();\n        this.navigate(id);\n        return;\n      }\n\n      this.showPreview(node, { location: this.router.url });\n    }\n  }\n\n  handleNodeClick(event: Event) {\n    this.navigateTo((event as CustomEvent).detail?.node);\n  }\n\n  onBreadcrumbNavigate(route: PathElement) {\n    this.documentList.resetNewFolderPagination();\n\n    // todo: review this approach once 5.2.3 is out\n    if (this.nodePath && this.nodePath?.length > 2) {\n      if (this.nodePath[1].name === 'Sites' && this.nodePath[2].id === route.id) {\n        return this.navigate(this.nodePath[3].id);\n      }\n    }\n    this.navigate(route.id);\n  }\n\n  isFilterActive(): boolean {\n    return this.isFilterHeaderActive && !!this.queryParams;\n  }\n\n  onFileUploadedEvent(event: FileUploadEvent) {\n    if (this.isFilterActive()) {\n      this.queryBuilderService.execute();\n    }\n\n    const node: NodeEntry = event.file.data;\n\n    // check root and child nodes\n    if (node?.entry?.parentId === this.getParentNodeId()) {\n      this.reloadWithoutResettingSelection();\n      return;\n    }\n\n    // check the child nodes to show dropped folder\n    if (event?.file.options.parentId === this.getParentNodeId()) {\n      this.displayFolderParent(0, event.file.options.path);\n      return;\n    }\n\n    if (event?.file.options.parentId) {\n      if (this.nodePath) {\n        const correspondingNodePath = this.nodePath.find((pathItem) => pathItem.id === event.file.options.parentId);\n\n        // check if the current folder has the 'trigger-upload-folder' as one of its parents\n        if (correspondingNodePath) {\n          const correspondingIndex = this.nodePath.length - this.nodePath.indexOf(correspondingNodePath);\n          this.displayFolderParent(correspondingIndex, event.file.options.path);\n        }\n      }\n    }\n  }\n\n  displayFolderParent(index: number, filePath = '') {\n    const parentName = filePath.split('/').filter((el) => el)[index];\n    const currentFoldersDisplayed = (this.documentList.data.getRows() as ShareDataRow[]) || [];\n\n    const alreadyDisplayedParentFolder = currentFoldersDisplayed.find((row) => row.node.entry.isFolder && row.node.entry.name === parentName);\n\n    if (alreadyDisplayedParentFolder) {\n      return;\n    }\n    this.reloadWithoutResettingSelection();\n  }\n\n  onContentAdded(nodes: NodeEntry[]) {\n    if (this.isFilterActive()) {\n      this.queryBuilderService.execute();\n    } else {\n      const newNode = nodes.find((node) => node?.entry?.parentId === this.getParentNodeId());\n      if (newNode) {\n        this.reload(this.selectedNode);\n      }\n    }\n  }\n\n  // todo: review this approach once 5.2.3 is out\n  private async updateCurrentNode(node: Node) {\n    this.nodePath = null;\n\n    if (node?.path?.elements) {\n      const elements = node.path.elements;\n\n      this.nodePath = elements.map((pathElement) => {\n        return { ...pathElement };\n      });\n\n      if (elements.length > 1) {\n        if (elements[1].name === 'User Homes') {\n          if (!this.isAdmin) {\n            elements.splice(0, 2);\n          }\n        } else if (elements[1].name === 'Sites') {\n          await this.normalizeSitePath(node);\n        }\n      }\n    }\n\n    this.node = node;\n    this.store.dispatch(new SetCurrentFolderAction(node));\n  }\n\n  // todo: review this approach once 5.2.3 is out\n  private async normalizeSitePath(node: Node) {\n    const elements = node.path.elements;\n\n    // remove 'Sites'\n    elements.splice(1, 1);\n\n    if (this.isSiteContainer(node)) {\n      // rename 'documentLibrary' entry to the target site display name\n      // clicking on the breadcrumb entry loads the site content\n      const parentNode = await this.contentApi.getNodeInfo(node.parentId).toPromise();\n      node.name = parentNode.properties['cm:title'] || parentNode.name;\n\n      // remove the site entry\n      elements.splice(1, 1);\n    } else {\n      // remove 'documentLibrary' in the middle of the path\n      const docLib = elements.findIndex((el) => el.name === 'documentLibrary');\n      if (docLib > -1) {\n        const siteFragment = elements[docLib - 1];\n        const siteNode = await this.contentApi.getNodeInfo(siteFragment.id).toPromise();\n\n        // apply Site Name to the parent fragment\n        siteFragment.name = siteNode.properties['cm:title'] || siteNode.name;\n        elements.splice(docLib, 1);\n      }\n    }\n  }\n\n  isSiteContainer(node: Node): boolean {\n    if (node?.aspectNames?.length > 0) {\n      return node.aspectNames.indexOf('st:siteContainer') >= 0;\n    }\n    return false;\n  }\n\n  isRootNode(nodeId: string): boolean {\n    if (this.node?.path?.elements?.length > 0) {\n      return this.node.path.elements[0].id === nodeId;\n    }\n    return false;\n  }\n\n  onFilterSelected(activeFilters: FilterSearch[]) {\n    if (activeFilters.length) {\n      this.showHeader = ShowHeaderMode.Always;\n      this.isFilterHeaderActive = true;\n    } else {\n      void this.router.navigate(['.'], { relativeTo: this.route });\n      this.isFilterHeaderActive = false;\n      this.showHeader = ShowHeaderMode.Data;\n    }\n  }\n\n  onError(error: HttpErrorResponse) {\n    this.isValidPath = false;\n    if (this.router.url.includes('libraries')) {\n      switch (error.status) {\n        case 403:\n          this._errorTranslationKey = 'APP.BROWSE.LIBRARIES.LIBRARY_NO_PERMISSIONS_WARNING';\n          break;\n        case 404:\n          this._errorTranslationKey = 'APP.BROWSE.LIBRARIES.ERRORS.LIBRARY_NOT_FOUND';\n          break;\n        default:\n          this._errorTranslationKey = 'APP.BROWSE.LIBRARIES.ERRORS.LIBRARY_LOADING_ERROR';\n      }\n    }\n  }\n}\n","<aca-page-layout [hasError]=\"!isValidPath\">\n  <div class=\"aca-page-layout-header\">\n    <div class=\"aca-header-container\">\n      <adf-breadcrumb\n        [root]=\"title\"\n        [folderNode]=\"node\"\n        [selectedRowItemsCount]=\"selectedRowItemsCount\" [maxItems]=\"isSmallScreen ? 1 : 0\"\n        (navigate)=\"onBreadcrumbNavigate($event)\" />\n      <aca-toolbar [items]=\"actions\" />\n    </div>\n  </div>\n\n  <div class=\"aca-page-layout-error\">\n    <aca-generic-error [text]=\"errorTranslationKey\" />\n  </div>\n\n  <div class=\"aca-page-layout-content\">\n    <div class=\"aca-main-content\" *ngIf=\"!(showLoader$ | async)\">\n      <adf-upload-drag-area [rootFolderId]=\"node?.id\" [disabled]=\"!canUpload\" (updateFileVersion)=\"onUploadNewVersion($event)\">\n        <adf-document-list\n          #documentList\n          acaDocumentList\n          acaContextActions\n          [selectionMode]=\"'multiple'\"\n          [multiselect]=\"true\"\n          [currentFolderId]=\"node?.id\"\n          [loading]=\"true\"\n          [showHeader]=\"showHeader\"\n          [node]=\"nodeResult\"\n          [allowDropFiles]=\"true\"\n          [displayCheckboxesOnHover]=\"true\"\n          [preselectNodes]=\"selectedNodesState?.nodes\"\n          [navigate]=\"false\"\n          [sorting]=\"['name', 'asc']\"\n          [imageResolver]=\"imageResolver\"\n          [headerFilters]=\"true\"\n          [filterValue]=\"queryParams\"\n          [isDataProvidedExternally]=\"!!queryParams\"\n          [isResizingEnabled]=\"true\"\n          [blurOnResize]=\"false\"\n          [displayDragAndDropHint]=\"canUpload\"\n          (node-dblclick)=\"handleNodeClick($event)\"\n          (name-click)=\"handleNodeClick($event)\"\n          (selectedItemsCountChanged)=\"onSelectedItemsCountChanged($event)\"\n          (filterSelection)=\"onFilterSelected($event)\"\n          (error)=\"onError($event)\"\n        >\n          <data-columns>\n            <ng-container *ngFor=\"let column of columns; trackBy: trackByColumnId\">\n              <ng-container *ngIf=\"column.template && !(column.desktopOnly && isSmallScreen)\">\n                <data-column\n                  [id]=\"column.id\"\n                  [key]=\"column.key\"\n                  [title]=\"column.title\"\n                  [type]=\"column.type\"\n                  [format]=\"column.format\"\n                  [class]=\"column.class\"\n                  [sortable]=\"column.sortable\"\n                  [sortingKey]=\"column.sortingKey || column.key\"\n                  [isHidden]=\"column.isHidden\"\n                  [draggable]=\"column.draggable\"\n                  [resizable]=\"column.resizable\"\n                >\n                  <ng-template let-context>\n                    <adf-dynamic-column [id]=\"column.template\" [context]=\"context\" />\n                  </ng-template>\n                </data-column>\n              </ng-container>\n\n              <ng-container *ngIf=\"!column.template && !(column.desktopOnly && isSmallScreen)\">\n                <data-column\n                  [id]=\"column.id\"\n                  [key]=\"column.key\"\n                  [title]=\"column.title\"\n                  [type]=\"column.type\"\n                  [format]=\"column.format\"\n                  [class]=\"column.class\"\n                  [sortable]=\"column.sortable\"\n                  [sortingKey]=\"column.sortingKey || column.key\"\n                  [isHidden]=\"column.isHidden\"\n                  [draggable]=\"column.draggable\"\n                  [resizable]=\"column.resizable\"\n                />\n              </ng-container>\n            </ng-container>\n          </data-columns>\n\n          <adf-custom-empty-content-template *ngIf=\"isFilterHeaderActive\">\n            <ng-container>\n              <div class=\"empty-search__block\" aria-live=\"polite\">\n                <p class=\"empty-search__text\">\n                  {{ 'APP.BROWSE.SEARCH.NO_FILTER_RESULTS' | translate }}\n                </p>\n              </div>\n            </ng-container>\n          </adf-custom-empty-content-template>\n        </adf-document-list>\n\n        <adf-pagination acaPagination [target]=\"documentList\" />\n      </adf-upload-drag-area>\n    </div>\n\n    <mat-progress-spinner *ngIf=\"showLoader$ | async\"\n      id=\"adf-document-list-loading\"\n      class=\"adf-document-list-loading-margin\"\n      [color]=\"'primary'\"\n      [mode]=\"'indeterminate'\" />\n\n    <div class=\"aca-sidebar\" *ngIf=\"infoDrawerOpened$ | async\">\n      <aca-info-drawer [node]=\"selection.last\" />\n    </div>\n  </div>\n</aca-page-layout>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { Component, Input, Output, EventEmitter, ViewEncapsulation, inject } from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport {\n  ContextActionsDirective,\n  ToolbarComponent,\n  InfoDrawerComponent,\n  PageLayoutComponent,\n  PageComponent,\n  AppHookService\n} from '@alfresco/aca-shared';\nimport { DocumentListDirective } from '../../directives/document-list.directive';\nimport {\n  CustomEmptyContentTemplateDirective,\n  DataColumnComponent,\n  DataColumnListComponent,\n  EmptyContentComponent,\n  PaginationComponent\n} from '@alfresco/adf-core';\nimport { DocumentListComponent } from '@alfresco/adf-content-services';\nimport { DocumentListPresetRef, DynamicColumnComponent } from '@alfresco/adf-extensions';\nimport { NavigateLibraryAction } from '@alfresco/aca-shared/store';\nimport { FavoritePaging, Pagination, SiteEntry, SitePaging } from '@alfresco/js-api';\n\n@Component({\n  selector: 'aca-libraries-base',\n  standalone: true,\n  templateUrl: './libraries-base.component.html',\n  imports: [\n    CommonModule,\n    TranslatePipe,\n    ToolbarComponent,\n    InfoDrawerComponent,\n    PageLayoutComponent,\n    DocumentListDirective,\n    ContextActionsDirective,\n    DocumentListComponent,\n    DataColumnListComponent,\n    DataColumnComponent,\n    DynamicColumnComponent,\n    CustomEmptyContentTemplateDirective,\n    EmptyContentComponent,\n    PaginationComponent\n  ],\n  encapsulation: ViewEncapsulation.None\n})\nexport class LibrariesBaseComponent extends PageComponent {\n  @Input() titleKey: string;\n  @Input() list: SitePaging | FavoritePaging;\n  @Input() isLoading: boolean;\n  @Input() emptyTitleKey: string;\n  @Input() emptySubtitleKey: string;\n  @Input() pagination: Pagination;\n  @Input() currentFolderId: string;\n  @Input() columns: DocumentListPresetRef[];\n  @Input() navigateRoute: string;\n\n  @Output() changePageSize = new EventEmitter<Pagination>();\n  @Output() changePageNumber = new EventEmitter<Pagination>();\n  @Output() nextPage = new EventEmitter<Pagination>();\n  @Output() prevPage = new EventEmitter<Pagination>();\n\n  protected appHookService = inject(AppHookService);\n\n  private navigateTo(node: SiteEntry) {\n    if (node?.entry?.guid) {\n      this.store.dispatch(new NavigateLibraryAction(node.entry, this.navigateRoute));\n    }\n  }\n\n  handleNodeClick(event: Event) {\n    this.navigateTo((event as CustomEvent).detail?.node);\n  }\n}\n","<aca-page-layout>\n  <div class=\"aca-page-layout-header\">\n    <h1 class=\"aca-page-title\">\n      @if (selectedRowItemsCount < 1) {\n        {{ titleKey | translate: { count: selectedRowItemsCount } }}\n      } @else {\n        {{ 'APP.HEADER.SELECTED' | translate: { count: selectedRowItemsCount } }}\n      }\n    </h1>\n    <aca-toolbar [items]=\"actions\" />\n  </div>\n\n  <div class=\"aca-page-layout-content\">\n    <div class=\"aca-main-content\">\n      <adf-document-list\n        #documentList\n        acaDocumentList\n        acaContextActions\n        [currentFolderId]=\"currentFolderId\"\n        [node]=\"$any(list)\"\n        [loading]=\"isLoading\"\n        [selectionMode]=\"'multiple'\"\n        [multiselect]=\"true\"\n        [navigate]=\"false\"\n        [sorting]=\"['title', 'asc']\"\n        [sortingMode]=\"'client'\"\n        [displayCheckboxesOnHover]=\"true\"\n        [preselectNodes]=\"selectedNodesState?.nodes\"\n        (node-dblclick)=\"handleNodeClick($event)\"\n        [imageResolver]=\"imageResolver\"\n        [isResizingEnabled]=\"true\"\n        [blurOnResize]=\"false\"\n        (name-click)=\"handleNodeClick($event)\"\n      >\n        <adf-custom-empty-content-template>\n          <adf-empty-content\n            icon=\"library_books\"\n            [title]=\"emptyTitleKey | translate\"\n            [subtitle]=\"emptySubtitleKey | translate\"\n          />\n        </adf-custom-empty-content-template>\n\n        <data-columns>\n          @for (column of columns; track trackByColumnId($index, column)) {\n            @if (column.template && !(column.desktopOnly && isSmallScreen)) {\n              <data-column\n                [id]=\"column.id\"\n                [draggable]=\"column.draggable\"\n                [resizable]=\"column.resizable\"\n                [key]=\"column.key\"\n                [title]=\"column.title\"\n                [type]=\"column.type\"\n                [format]=\"column.format\"\n                [class]=\"column.class\"\n                [sortable]=\"column.sortable\"\n                [isHidden]=\"column.isHidden\"\n                [sortingKey]=\"column.sortingKey || column.key\"\n              >\n                <ng-template let-context>\n                  <adf-dynamic-column [id]=\"column.template\" [context]=\"context\" />\n                </ng-template>\n              </data-column>\n            } @else if (!column.template && !(column.desktopOnly && isSmallScreen)) {\n              <data-column\n                [id]=\"column.id\"\n                [key]=\"column.key\"\n                [draggable]=\"column.draggable\"\n                [resizable]=\"column.resizable\"\n                [title]=\"column.title\"\n                [type]=\"column.type\"\n                [format]=\"column.format\"\n                [class]=\"column.class\"\n                [sortable]=\"column.sortable\"\n                [isHidden]=\"column.isHidden\"\n                [sortingKey]=\"column.sortingKey || column.key\"\n              />\n            }\n          }\n        </data-columns>\n      </adf-document-list>\n\n      <adf-pagination\n        [target]=\"documentList\"\n        [pagination]=\"pagination\"\n        (changePageSize)=\"changePageSize.emit($event)\"\n        (changePageNumber)=\"changePageNumber.emit($event)\"\n        (nextPage)=\"nextPage.emit($event)\"\n        (prevPage)=\"prevPage.emit($event)\"\n      />\n    </div>\n\n    @if (infoDrawerOpened$ | async) {\n      <aca-info-drawer class=\"aca-sidebar\" [node]=\"$any(selection?.last)\" />\n    }\n  </div>\n</aca-page-layout>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, OnInit, ViewEncapsulation } from '@angular/core';\nimport { LibrariesBaseComponent } from '../libraries-base/libraries-base.component';\n\n@Component({\n  selector: 'aca-libraries',\n  standalone: true,\n  templateUrl: './libraries.component.html',\n  imports: [LibrariesBaseComponent],\n  encapsulation: ViewEncapsulation.None\n})\nexport class LibrariesComponent extends LibrariesBaseComponent implements OnInit {\n  ngOnInit() {\n    super.ngOnInit();\n\n    this.subscriptions.push(\n      this.appHookService.libraryDeleted.subscribe(() => this.reload()),\n      this.appHookService.libraryUpdated.subscribe(() => this.reload()),\n      this.appHookService.libraryLeft.subscribe(() => this.reload())\n    );\n\n    this.columns = this.extensions.documentListPresets.libraries || [];\n  }\n}\n","<aca-libraries-base\n  [currentFolderId]=\"'-mysites-'\"\n  [columns]=\"columns\"\n  [titleKey]=\"'APP.BROWSE.LIBRARIES.MENU.MY_LIBRARIES.TITLE'\"\n  [emptyTitleKey]=\"'APP.BROWSE.LIBRARIES.EMPTY_STATE.FILE_LIBRARIES.TITLE'\"\n  [emptySubtitleKey]=\"'APP.BROWSE.LIBRARIES.EMPTY_STATE.FILE_LIBRARIES.TEXT'\"\n/>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ChangeDetectorRef, Component, OnInit, ViewEncapsulation, inject } from '@angular/core';\nimport { FavoritePaging, Pagination } from '@alfresco/js-api';\nimport { ContentApiService } from '@alfresco/aca-shared';\nimport { UserPreferencesService } from '@alfresco/adf-core';\nimport { DocumentListPresetRef } from '@alfresco/adf-extensions';\nimport { LibrariesBaseComponent } from '../libraries-base/libraries-base.component';\n\n@Component({\n  selector: 'aca-favorite-libraries',\n  standalone: true,\n  templateUrl: './favorite-libraries.component.html',\n  imports: [LibrariesBaseComponent],\n  encapsulation: ViewEncapsulation.None\n})\nexport class FavoriteLibrariesComponent extends LibrariesBaseComponent implements OnInit {\n  private readonly contentApiService = inject(ContentApiService);\n  private readonly preferences = inject(UserPreferencesService);\n  private readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n  pagination: Pagination = new Pagination({\n    skipCount: 0,\n    maxItems: 25,\n    totalItems: 0\n  });\n  isLoading = false;\n  list: FavoritePaging = null;\n  columns: DocumentListPresetRef[] = [];\n\n  ngOnInit() {\n    super.ngOnInit();\n\n    this.getList({ maxItems: this.preferences.paginationSize });\n\n    this.subscriptions.push(\n      this.appHookService.libraryDeleted.subscribe(() => this.reloadList()),\n      this.appHookService.libraryUpdated.subscribe(() => this.reloadList()),\n      this.appHookService.libraryJoined.subscribe(() => this.reloadList()),\n      this.appHookService.libraryLeft.subscribe(() => this.reloadList()),\n      this.appHookService.favoriteLibraryToggle.subscribe(() => this.reloadList())\n    );\n    this.columns = this.extensions.documentListPresets.favoriteLibraries || [];\n  }\n\n  onChangePageSize(pagination: Pagination) {\n    this.preferences.paginationSize = pagination.maxItems;\n    this.getList(pagination);\n  }\n\n  getList(pagination: Pagination) {\n    this.isLoading = true;\n    this.contentApiService.getFavoriteLibraries('-me-', pagination).subscribe(\n      (favoriteLibraries: FavoritePaging) => {\n        this.list = favoriteLibraries;\n        this.pagination = favoriteLibraries.list.pagination;\n        this.isLoading = false;\n        this.changeDetectorRef.detectChanges();\n      },\n      () => {\n        this.list = null;\n        this.pagination = null;\n        this.isLoading = false;\n      }\n    );\n  }\n\n  private reloadList() {\n    this.reload();\n    this.getList(this.pagination);\n  }\n}\n","<aca-libraries-base\n  [list]=\"list\"\n  [isLoading]=\"isLoading\"\n  [pagination]=\"pagination\"\n  [columns]=\"columns\"\n  [navigateRoute]=\"'favorite/libraries'\"\n  [titleKey]=\"'APP.BROWSE.LIBRARIES.MENU.FAVORITE_LIBRARIES.TITLE'\"\n  [emptyTitleKey]=\"'APP.BROWSE.LIBRARIES.EMPTY_STATE.FAVORITE_LIBRARIES.TITLE'\"\n  [emptySubtitleKey]=\"'APP.BROWSE.LIBRARIES.EMPTY_STATE.FAVORITE_LIBRARIES.TEXT'\"\n  (changePageSize)=\"onChangePageSize($event)\"\n  (changePageNumber)=\"getList($event)\"\n  (nextPage)=\"getList($event)\"\n  (prevPage)=\"getList($event)\"\n/>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Injectable, inject } from '@angular/core';\nimport { SearchQueryBuilderService } from '@alfresco/adf-content-services';\nimport { SearchOptionIds, SearchOptionModel } from '@alfresco/aca-shared/store';\n\n@Injectable({ providedIn: 'root' })\nexport class SearchFilterService {\n  private readonly queryBuilder = inject(SearchQueryBuilderService);\n\n  searchInMode: 'content' | 'libraries' = 'content';\n  filesChecked = true;\n  foldersChecked = true;\n\n  searchOptions: SearchOptionModel[] = [\n    {\n      id: SearchOptionIds.Files,\n      key: 'SEARCH.INPUT.FILES',\n      value: false,\n      shouldDisable: () => this.isLibrariesChecked()\n    },\n    {\n      id: SearchOptionIds.Folders,\n      key: 'SEARCH.INPUT.FOLDERS',\n      value: false,\n      shouldDisable: () => this.isLibrariesChecked()\n    },\n    {\n      id: SearchOptionIds.Libraries,\n      key: 'SEARCH.INPUT.LIBRARIES',\n      value: false,\n      shouldDisable: () => this.isContentChecked()\n    }\n  ];\n\n  isFilesChecked(): boolean {\n    return this.getOptionValue(SearchOptionIds.Files);\n  }\n\n  isFoldersChecked(): boolean {\n    return this.getOptionValue(SearchOptionIds.Folders);\n  }\n\n  isLibrariesChecked(): boolean {\n    return this.getOptionValue(SearchOptionIds.Libraries);\n  }\n\n  isContentChecked(): boolean {\n    return this.isFilesChecked() || this.isFoldersChecked();\n  }\n\n  getSearchInLabel(): string {\n    if (this.searchInMode === SearchOptionIds.Libraries) {\n      return 'SEARCH.INPUT.LIBRARIES';\n    }\n    if (this.filesChecked === this.foldersChecked) {\n      return 'SEARCH.INPUT.FILES_AND_FOLDERS';\n    }\n    if (this.filesChecked) {\n      return 'SEARCH.INPUT.FILES';\n    }\n    if (this.foldersChecked) {\n      return 'SEARCH.INPUT.FOLDERS';\n    }\n    return 'SEARCH.INPUT.FILES_AND_FOLDERS';\n  }\n\n  validateSearchTerm(term: string): string | null {\n    if (!term) {\n      return 'SEARCH.INPUT.REQUIRED';\n    }\n    if (/^\\s+$/.test(term)) {\n      return 'SEARCH.INPUT.WHITESPACE';\n    }\n\n    if (this.searchInMode === SearchOptionIds.Libraries && term.length < 2) {\n      return 'SEARCH.INPUT.MIN_LENGTH';\n    }\n\n    return null;\n  }\n\n  syncSearchOptionsFromState() {\n    const filesOption = this.searchOptions.find((opt) => opt.id === SearchOptionIds.Files);\n    const foldersOption = this.searchOptions.find((opt) => opt.id === SearchOptionIds.Folders);\n    const librariesOption = this.searchOptions.find((opt) => opt.id === SearchOptionIds.Libraries);\n\n    if (this.searchInMode === SearchOptionIds.Libraries) {\n      filesOption.value = false;\n      foldersOption.value = false;\n      librariesOption.value = true;\n    } else {\n      filesOption.value = this.filesChecked && !this.foldersChecked;\n      foldersOption.value = this.foldersChecked && !this.filesChecked;\n      librariesOption.value = false;\n    }\n  }\n\n  applyContentFilters() {\n    this.syncSearchOptionsFromState();\n\n    if (this.isLibrariesChecked()) {\n      this.removeContentFilters();\n      return;\n    }\n\n    if (this.isFoldersChecked() && !this.isFilesChecked()) {\n      this.setContentFilter(SearchOptionIds.Folders);\n    } else if (this.isFilesChecked() && !this.isFoldersChecked()) {\n      this.setContentFilter(SearchOptionIds.Files);\n    } else {\n      this.removeContentFilters();\n    }\n  }\n\n  removeContentFilters() {\n    this.queryBuilder.removeFilterQuery(`+TYPE:'cm:${SearchOptionIds.Files}'`);\n    this.queryBuilder.removeFilterQuery(`+TYPE:'cm:${SearchOptionIds.Folders}'`);\n  }\n\n  initForLibrariesRoute() {\n    this.searchInMode = SearchOptionIds.Libraries;\n    this.filesChecked = false;\n    this.foldersChecked = false;\n  }\n\n  private getOptionValue(optionId: string): boolean {\n    const item = this.searchOptions.find((opt) => opt.id === optionId);\n    return !!item && item.value;\n  }\n\n  private setContentFilter(option: SearchOptionIds.Folders | SearchOptionIds.Files) {\n    const oppositeOption = option === SearchOptionIds.Folders ? SearchOptionIds.Files : SearchOptionIds.Folders;\n    this.queryBuilder.addFilterQuery(`+TYPE:'cm:${option}'`);\n    this.queryBuilder.removeFilterQuery(`+TYPE:'cm:${oppositeOption}'`);\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { AlfrescoApiService } from '@alfresco/adf-content-services';\nimport { Injectable, inject } from '@angular/core';\nimport { QueriesApi, SitePaging, LazyApi } from '@alfresco/js-api';\nimport { Subject } from 'rxjs';\n\nexport interface LibrarySearchQuery {\n  term: string;\n  opts: {\n    skipCount: number;\n    maxItems: number;\n  };\n}\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class SearchLibrariesQueryBuilderService {\n  private readonly alfrescoApiService = inject(AlfrescoApiService);\n\n  private _userQuery = '';\n\n  @LazyApi((self: SearchLibrariesQueryBuilderService) => new QueriesApi(self.alfrescoApiService.getInstance()))\n  declare queriesApi: QueriesApi;\n\n  updated: Subject<any> = new Subject();\n  executed: Subject<any> = new Subject();\n  hadError: Subject<any> = new Subject();\n\n  paging: { maxItems?: number; skipCount?: number } = null;\n\n  get userQuery(): string {\n    return this._userQuery;\n  }\n\n  set userQuery(value: string) {\n    this._userQuery = value ? value.trim() : '';\n  }\n\n  update(): void {\n    const query = this.buildQuery();\n    if (query) {\n      this.updated.next(query);\n    }\n  }\n\n  async execute() {\n    const query = this.buildQuery();\n    if (query) {\n      const data = await this.findLibraries(query);\n      this.executed.next(data);\n    }\n  }\n\n  buildQuery(): LibrarySearchQuery {\n    const query = this.userQuery;\n    if (query?.length > 1) {\n      return {\n        term: query,\n        opts: {\n          skipCount: this.paging?.skipCount,\n          maxItems: this.paging?.maxItems\n        }\n      };\n    }\n    return null;\n  }\n\n  private findLibraries(libraryQuery: LibrarySearchQuery): Promise<SitePaging> {\n    return this.queriesApi.findSites(libraryQuery.term, libraryQuery.opts).catch((err) => {\n      this.hadError.next(err);\n      return { list: { pagination: { totalItems: 0 }, entries: [] } };\n    });\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Injectable, inject } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { AppStore, SearchByTermAction } from '@alfresco/aca-shared/store';\nimport { SearchFilterService } from './search-filter.service';\nimport { SearchNavigationService } from './search-navigation.service';\nimport { SearchLibrariesQueryBuilderService } from './search-libraries-results/search-libraries-query-builder.service';\n\n@Injectable({ providedIn: 'root' })\nexport class SearchExecutionService {\n  private readonly store = inject<Store<AppStore>>(Store);\n  private readonly queryLibrariesBuilder = inject(SearchLibrariesQueryBuilderService);\n  private readonly filterService = inject(SearchFilterService);\n  private readonly searchNavigationService = inject(SearchNavigationService);\n\n  execute(searchedWord: string) {\n    if (!searchedWord?.trim()) {\n      return;\n    }\n\n    this.filterService.applyContentFilters();\n\n    if (this.filterService.isLibrariesChecked()) {\n      this.executeLibrariesSearch(searchedWord);\n    } else {\n      this.executeContentSearch(searchedWord);\n    }\n  }\n\n  private executeLibrariesSearch(searchedWord: string) {\n    if (this.searchNavigationService.onLibrariesSearchResults && this.searchNavigationService.isSameSearchTerm(searchedWord)) {\n      this.queryLibrariesBuilder.update();\n    } else {\n      this.store.dispatch(new SearchByTermAction(searchedWord, this.filterService.searchOptions));\n    }\n  }\n\n  private executeContentSearch(searchedWord: string) {\n    if (!(this.searchNavigationService.onSearchResults && this.searchNavigationService.isSameSearchTerm(searchedWord))) {\n      this.store.dispatch(new SearchByTermAction(searchedWord, this.filterService.searchOptions));\n    }\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, ElementRef, EventEmitter, inject, OnInit, Output, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { SearchOptionIds } from '@alfresco/aca-shared/store';\nimport { SearchFilterService } from '../search-filter.service';\nimport { ConfigurableFocusTrap, ConfigurableFocusTrapFactory } from '@angular/cdk/a11y';\n\n@Component({\n  selector: 'aca-search-in-menu',\n  standalone: true,\n  imports: [\n    CommonModule,\n    FormsModule,\n    TranslatePipe,\n    OverlayModule,\n    MatButtonModule,\n    MatIconModule,\n    MatCheckboxModule,\n    MatRadioModule,\n    MatDividerModule\n  ],\n  templateUrl: './search-in-menu.component.html',\n  styleUrls: ['./search-in-menu.component.scss'],\n  encapsulation: ViewEncapsulation.None\n})\nexport class SearchInMenuComponent implements OnInit {\n  readonly SearchOptionIds = SearchOptionIds;\n\n  @Output() readonly filtersApplied = new EventEmitter<void>();\n\n  @ViewChild('searchInPanel') searchInPanel: ElementRef;\n  @ViewChild('overlayOrigin', { read: ElementRef }) triggerButton: ElementRef;\n\n  isOpen = false;\n  searchInMode: 'content' | 'libraries' = 'content';\n  filesChecked = true;\n  foldersChecked = true;\n\n  readonly filterService = inject(SearchFilterService);\n  private readonly focusTrapFactory = inject(ConfigurableFocusTrapFactory);\n\n  private focusTrap: ConfigurableFocusTrap;\n  private pendingSearchInMode: 'content' | 'libraries' = 'content';\n  private pendingFilesChecked = true;\n  private pendingFoldersChecked = true;\n\n  ngOnInit() {\n    this.initializeSavedValues();\n  }\n\n  toggle(): void {\n    if (this.isOpen) {\n      this.close();\n    } else {\n      this.open();\n    }\n  }\n\n  open() {\n    this.isOpen = true;\n    setTimeout(() => {\n      if (this.searchInPanel) {\n        this.focusTrap = this.focusTrapFactory.create(this.searchInPanel.nativeElement);\n        this.focusTrap.focusInitialElement();\n      }\n    });\n  }\n\n  close() {\n    this.searchInMode = this.pendingSearchInMode;\n    this.filesChecked = this.pendingFilesChecked;\n    this.foldersChecked = this.pendingFoldersChecked;\n    this.destroyFocusTrap();\n    this.isOpen = false;\n    this.focusTrigger();\n  }\n\n  onPanelDetached() {\n    this.destroyFocusTrap();\n    this.isOpen = false;\n  }\n\n  onSearchInModeChange() {\n    if (this.searchInMode === SearchOptionIds.Libraries) {\n      this.filesChecked = false;\n      this.foldersChecked = false;\n    } else {\n      this.filesChecked = true;\n      this.foldersChecked = true;\n    }\n  }\n\n  onFilesCheckedChange() {\n    if (!this.filesChecked && !this.foldersChecked) {\n      this.foldersChecked = true;\n    }\n  }\n\n  onFoldersCheckedChange() {\n    if (!this.filesChecked && !this.foldersChecked) {\n      this.filesChecked = true;\n    }\n  }\n\n  apply() {\n    this.commitToService();\n    this.pendingSearchInMode = this.searchInMode;\n    this.pendingFilesChecked = this.filesChecked;\n    this.pendingFoldersChecked = this.foldersChecked;\n    this.destroyFocusTrap();\n    this.isOpen = false;\n    this.focusTrigger();\n    this.filtersApplied.emit();\n  }\n\n  reset() {\n    this.searchInMode = 'content';\n    this.filesChecked = true;\n    this.foldersChecked = true;\n  }\n\n  private destroyFocusTrap() {\n    if (this.focusTrap) {\n      this.focusTrap.destroy();\n      this.focusTrap = null;\n    }\n  }\n\n  private initializeSavedValues() {\n    this.searchInMode = this.filterService.searchInMode;\n    this.filesChecked = this.filterService.filesChecked;\n    this.foldersChecked = this.filterService.foldersChecked;\n    this.pendingSearchInMode = this.searchInMode;\n    this.pendingFilesChecked = this.filesChecked;\n    this.pendingFoldersChecked = this.foldersChecked;\n  }\n\n  private commitToService() {\n    this.filterService.searchInMode = this.searchInMode;\n    this.filterService.filesChecked = this.filesChecked;\n    this.filterService.foldersChecked = this.foldersChecked;\n  }\n\n  private focusTrigger() {\n    setTimeout(() => this.triggerButton?.nativeElement?.focus());\n  }\n}\n","<button\n        mat-stroked-button\n        class=\"aca-search-input--search-in-button\"\n        cdkOverlayOrigin\n        #overlayOrigin=\"cdkOverlayOrigin\"\n        (click)=\"toggle()\"\n        [title]=\"'SEARCH.INPUT.SEARCH_IN' | translate\"\n        [attr.aria-label]=\"'SEARCH.INPUT.SEARCH_IN' | translate\"\n        [attr.aria-expanded]=\"isOpen\"\n        aria-haspopup=\"dialog\"\n>\n    {{ 'SEARCH.INPUT.IN_PREFIX' | translate }}: {{ filterService.getSearchInLabel() | translate }}\n    <mat-icon iconPositionEnd>keyboard_arrow_down</mat-icon>\n</button>\n\n<ng-template\n        cdkConnectedOverlay\n        [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n        [cdkConnectedOverlayOpen]=\"isOpen\"\n        [cdkConnectedOverlayHasBackdrop]=\"true\"\n        cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n        (backdropClick)=\"close()\"\n        (detach)=\"onPanelDetached()\">\n    <fieldset\n        #searchInPanel\n        class=\"aca-search-in-panel\"\n        role=\"group\"\n        [attr.aria-label]=\"'SEARCH.INPUT.SEARCH_IN' | translate\"\n        (keydown.escape)=\"close()\"\n        (click)=\"$event.stopPropagation()\">\n        <div class=\"aca-search-in-panel__header\">\n            <span class=\"aca-search-in-panel__title\" id=\"searchInTitle\">{{ 'SEARCH.INPUT.SEARCH_IN' | translate }}</span>\n            <button mat-icon-button (click)=\"close()\" [title]=\"'COMMON.CLOSE' | translate\" [attr.aria-label]=\"'COMMON.CLOSE' | translate\">\n                <mat-icon>close</mat-icon>\n            </button>\n        </div>\n\n        <div class=\"aca-search-in-panel__content\">\n            <mat-radio-group [(ngModel)]=\"searchInMode\" (change)=\"onSearchInModeChange()\">\n                <mat-radio-button value=\"content\" class=\"aca-search-in-panel__radio\">\n                    {{ 'SEARCH.INPUT.FILES_AND_FOLDERS' | translate }}\n                </mat-radio-button>\n\n                @if (searchInMode === 'content') {\n                    <div class=\"aca-search-in-panel__checkboxes\">\n                        <mat-checkbox\n                                [id]=\"SearchOptionIds.Files\"\n                                [(ngModel)]=\"filesChecked\"\n                                (change)=\"onFilesCheckedChange()\"\n                        >\n                            {{ 'SEARCH.INPUT.FILES' | translate }}\n                        </mat-checkbox>\n                        <mat-checkbox\n                                [id]=\"SearchOptionIds.Folders\"\n                                [(ngModel)]=\"foldersChecked\"\n                                (change)=\"onFoldersCheckedChange()\"\n                        >\n                            {{ 'SEARCH.INPUT.FOLDERS' | translate }}\n                        </mat-checkbox>\n                    </div>\n                }\n\n                <mat-radio-button [value]=\"SearchOptionIds.Libraries\" class=\"aca-search-in-panel__radio\">\n                    {{ 'SEARCH.INPUT.LIBRARIES' | translate }}\n                </mat-radio-button>\n            </mat-radio-group>\n        </div>\n\n        <mat-divider />\n\n        <div class=\"aca-search-in-panel__actions\">\n            <button mat-button (click)=\"reset()\">{{ 'SEARCH.INPUT.RESET' | translate }}</button>\n            <button mat-flat-button color=\"primary\" (click)=\"apply()\">{{ 'SEARCH.FILTER.BUTTONS.APPLY' | translate }}</button>\n        </div>\n    </fieldset>\n</ng-template>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { AppHookService } from '@alfresco/aca-shared';\nimport { AfterViewInit, Component, DestroyRef, ElementRef, inject, OnDestroy, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { ActivatedRoute, NavigationSkipped, Params, Router } from '@angular/router';\nimport { SearchNavigationService } from '../search-navigation.service';\nimport { SearchFilterService } from '../search-filter.service';\nimport { SearchExecutionService } from '../search-execution.service';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\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 { FormsModule } from '@angular/forms';\nimport { SearchInMenuComponent } from '../search-in-menu/search-in-menu.component';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { merge } from 'rxjs/internal/observable/merge';\nimport { filter, map, withLatestFrom } from 'rxjs';\nimport { extractUserQueryFromEncodedQuery } from '../../../utils/aca-search-utils';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { SearchQueryBuilderService } from '@alfresco/adf-content-services';\n\n@Component({\n  imports: [\n    CommonModule,\n    TranslatePipe,\n    MatButtonModule,\n    MatIconModule,\n    MatFormFieldModule,\n    MatInputModule,\n    FormsModule,\n    SearchInMenuComponent,\n    MatButtonToggleModule\n  ],\n  selector: 'aca-search-input',\n  templateUrl: './search-input.component.html',\n  styleUrls: ['./search-input.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'aca-search-input' }\n})\nexport class SearchInputComponent implements OnInit, AfterViewInit, OnDestroy {\n  private readonly router = inject(Router);\n  private readonly route = inject(ActivatedRoute);\n  private readonly appHookService = inject(AppHookService);\n  private readonly filterService = inject(SearchFilterService);\n  private readonly searchExecutionService = inject(SearchExecutionService);\n  readonly searchNavigationService = inject(SearchNavigationService);\n  readonly queryBuilder = inject(SearchQueryBuilderService);\n\n  has400LibraryError = false;\n  searchedWord: string = null;\n  lastSearchedWord: string = null;\n  lastSearchMode: 'regular' | 'formula' = 'regular';\n  error = '';\n\n  @ViewChild('searchInputField')\n  searchInputField: ElementRef<HTMLInputElement>;\n\n  private readonly destroyRef = inject(DestroyRef);\n\n  ngOnInit(): void {\n    this.initSearchState();\n    this.subscribeToRouteParams();\n    this.lastSearchMode = this.queryBuilder.searchMode;\n\n    this.appHookService.library400Error.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n      this.has400LibraryError = true;\n    });\n  }\n\n  ngAfterViewInit(): void {\n    setTimeout(() => {\n      this.searchInputField.nativeElement.focus();\n    });\n  }\n\n  ngOnDestroy(): void {\n    this.filterService.removeContentFilters();\n  }\n\n  exitSearch() {\n    this.searchNavigationService.navigateBack();\n  }\n\n  onSearchSubmit(event: Event) {\n    const trimmedTerm = (event.target as HTMLInputElement).value?.trim();\n    const validationError = this.filterService.validateSearchTerm(trimmedTerm);\n\n    if (validationError) {\n      this.error = validationError;\n      return;\n    }\n\n    this.error = '';\n    if (this.lastSearchedWord !== trimmedTerm || this.lastSearchMode !== this.queryBuilder.searchMode) {\n      this.lastSearchedWord = trimmedTerm;\n      this.searchedWord = trimmedTerm;\n      this.lastSearchMode = this.queryBuilder.searchMode;\n      this.executeSearch();\n    }\n  }\n\n  onFiltersApplied() {\n    if (!this.searchedWord?.trim()) {\n      return;\n    }\n\n    const validationError = this.filterService.validateSearchTerm(this.searchedWord.trim());\n    if (!validationError) {\n      this.executeSearch();\n    } else {\n      this.error = validationError;\n    }\n  }\n\n  executeSearch() {\n    this.has400LibraryError = false;\n    this.searchExecutionService.execute(this.searchedWord);\n  }\n\n  private subscribeToRouteParams() {\n    merge(\n      this.route.queryParams,\n      this.router.events.pipe(\n        filter((e) => e instanceof NavigationSkipped),\n        withLatestFrom(this.route.queryParams),\n        map(([, params]) => params)\n      )\n    )\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe((params: Params) => {\n        const encodedQuery = params['q'];\n        if (encodedQuery) {\n          this.searchedWord = extractUserQueryFromEncodedQuery(encodedQuery);\n        }\n      });\n  }\n\n  private initSearchState() {\n    this.has400LibraryError = false;\n    this.searchedWord = this.searchNavigationService.getUrlSearchTerm();\n\n    if (this.searchNavigationService.onLibrariesSearchResults) {\n      this.filterService.initForLibrariesRoute();\n    }\n  }\n}\n","<div class=\"app-search-container\" role=\"search\">\n  <mat-form-field class=\"app-input-form-field\">\n    <button\n      class=\"aca-search-input--search-button\"\n      mat-icon-button\n      matPrefix\n      (click)=\"executeSearch()\"\n      [title]=\"'SEARCH.BUTTON.TOOLTIP' | translate\"\n    >\n      <mat-icon [attr.aria-label]=\"'SEARCH.BUTTON.ARIA-LABEL' | translate\">search</mat-icon>\n    </button>\n\n    <input\n      matInput\n      #searchInputField\n      class=\"app-search-input\"\n      [attr.aria-label]=\"'SEARCH.INPUT.ARIA-LABEL' | translate\"\n      type=\"text\"\n      [(ngModel)]=\"searchedWord\"\n      (keydown.enter)=\"onSearchSubmit($event)\"\n      [placeholder]=\"'SEARCH.INPUT.PLACEHOLDER' | translate\"\n      autocomplete=\"off\"\n    />\n\n    <div matSuffix class=\"aca-search-input--suffix\">\n      <mat-button-toggle-group class=\"aca-search-input--suffix-button-toggle-group\" [attr.aria-label]=\"'SEARCH.INPUT.SEARCH_MODE_TOGGLE_DESCRIPTION' | translate\" [attr.title]=\"'SEARCH.INPUT.SEARCH_MODE_TOGGLE_DESCRIPTION' | translate\" [(ngModel)]=\"queryBuilder.searchMode\">\n        <mat-button-toggle value=\"regular\" [attr.aria-label]=\"'SEARCH.INPUT.SEARCH_MODE_TOGGLE_DESCRIPTION_REGULAR' | translate\">\n          <mat-icon>title</mat-icon>\n        </mat-button-toggle>\n        <mat-button-toggle value=\"formula\" [attr.aria-label]=\"'SEARCH.INPUT.SEARCH_MODE_TOGGLE_DESCRIPTION_FORMULA' | translate\">\n          <mat-icon>extension</mat-icon>\n        </mat-button-toggle>\n      </mat-button-toggle-group>\n\n      <aca-search-in-menu (filtersApplied)=\"onFiltersApplied()\" />\n\n      <button\n        class=\"aca-search-input--close-button\"\n        mat-icon-button\n        [attr.aria-label]=\"'SEARCH.CLOSE_BUTTON.ARIA_LABEL' | translate\"\n        [attr.title]=\"'SEARCH.CLOSE_BUTTON.ARIA_LABEL' | translate\"\n        (click)=\"exitSearch()\"\n      >\n        <mat-icon>close</mat-icon>\n      </button>\n    </div>\n  </mat-form-field>\n\n  @if (error) {\n    <mat-error class=\"app-search-error\" role=\"alert\" aria-live=\"assertive\">\n      {{ error | translate }}\n    </mat-error>\n  }\n</div>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, inject, Input, OnChanges, SimpleChanges, ViewEncapsulation } from '@angular/core';\nimport { TranslationService } from '@alfresco/adf-core';\nimport { NgIf } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n  imports: [NgIf, MatIconModule],\n  selector: 'aca-custom-thumbnail-column',\n  templateUrl: './thumbnail-column.component.html',\n  styleUrls: ['./thumbnail-column.component.scss'],\n  encapsulation: ViewEncapsulation.None\n})\nexport class ThumbnailColumnComponent implements OnChanges {\n  private readonly translation = inject(TranslationService);\n\n  @Input()\n  context: any;\n\n  public thumbnailUrl?: string;\n  public tooltip?: string;\n  public isIcon = false;\n\n  get isSelected(): boolean {\n    return !!this.context?.row?.isSelected;\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.context) {\n      const context = changes.context.currentValue;\n\n      if (context) {\n        const icon = this.getThumbnail(context);\n        if (icon?.startsWith('material-icons://')) {\n          this.isIcon = true;\n          this.thumbnailUrl = icon.replace('material-icons://', '');\n        } else {\n          this.isIcon = false;\n          this.thumbnailUrl = icon;\n        }\n        this.tooltip = this.getToolTip(context);\n      } else {\n        this.thumbnailUrl = null;\n        this.tooltip = null;\n      }\n    }\n  }\n\n  getThumbnail({ data, row, col }): string {\n    return data.getValue(row, col);\n  }\n\n  getToolTip({ row }): string {\n    const displayName = row.node?.entry?.properties?.['cm:lockOwner']?.displayName;\n    return displayName ? `${this.translation.instant('APP.LOCKED_BY')} ${displayName}` : '';\n  }\n}\n","<mat-icon class=\"adf-datatable-selected\" *ngIf=\"isSelected\" svgIcon=\"selected\" />\n<ng-container *ngIf=\"!isSelected\">\n  <ng-container *ngIf=\"isIcon; else image\">\n    <mat-icon>{{thumbnailUrl}}</mat-icon>\n  </ng-container>\n  <ng-template #image>\n    <img [src]=\"thumbnailUrl\" [alt]=\"tooltip\" [title]=\"tooltip\" />\n  </ng-template>\n</ng-container>\n\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { SearchQueryBuilderService, SearchSortingDefinition } from '@alfresco/adf-content-services';\nimport { Component, EventEmitter, OnInit, Output, ViewEncapsulation, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n  imports: [CommonModule, TranslatePipe, MatMenuModule, MatIconModule, MatButtonModule],\n  selector: 'aca-search-action-menu',\n  templateUrl: './search-action-menu.component.html',\n  encapsulation: ViewEncapsulation.None\n})\nexport class SearchActionMenuComponent implements OnInit {\n  private readonly queryBuilder = inject(SearchQueryBuilderService);\n\n  @Output()\n  sortingSelected: EventEmitter<SearchSortingDefinition> = new EventEmitter();\n\n  options: SearchSortingDefinition[] = [];\n\n  ngOnInit(): void {\n    this.options = this.queryBuilder.getSortingOptions();\n  }\n\n  onAscSortingClicked(option: SearchSortingDefinition) {\n    option.ascending = true;\n    this.sortingSelected.emit(option);\n  }\n\n  onDescSortingClicked(option: SearchSortingDefinition) {\n    option.ascending = false;\n    this.sortingSelected.emit(option);\n  }\n}\n","<button mat-icon-button [matMenuTriggerFor]=\"dataSorting\" id=\"aca-button-action-menu\" aria-label=\"Search action menu\">\n  <mat-icon>more_vert</mat-icon>\n</button>\n\n<mat-menu #dataSorting=\"matMenu\">\n  <button mat-menu-item [matMenuTriggerFor]=\"sorting\" id=\"aca-button-sorting-menu\">{{ 'SEARCH.SORT.SORTING_OPTION' | translate }}</button>\n</mat-menu>\n\n<mat-menu #sorting=\"matMenu\">\n  <ng-template matMenuContent>\n    <button\n      mat-menu-item\n      *ngFor=\"let option of options\"\n      [id]=\"option.key + '-sorting-option'\"\n      [matMenuTriggerFor]=\"direction\"\n      [matMenuTriggerData]=\"{ option: option }\"\n    >\n      {{ option.label | translate }}\n    </button>\n  </ng-template>\n</mat-menu>\n\n<mat-menu #direction=\"matMenu\">\n  <ng-template matMenuContent let-option=\"option\">\n    <button mat-menu-item [id]=\"option.key + '-sorting-option-asc'\" (click)=\"onAscSortingClicked(option)\">\n      {{ 'SEARCH.SORT.ASCENDING' | translate }}\n    </button>\n    <button mat-menu-item [id]=\"option.key + '-sorting-option-desc'\" (click)=\"onDescSortingClicked(option)\">\n      {{ 'SEARCH.SORT.DESCENDING' | translate }}\n    </button>\n  </ng-template>\n</mat-menu>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ContentActionRef } from '@alfresco/adf-extensions';\nimport { AppStore, getSearchItemsTotalCount } from '@alfresco/aca-shared/store';\nimport { CommonModule } from '@angular/common';\nimport { Component, DestroyRef, inject, Input, OnInit, ViewEncapsulation } from '@angular/core';\nimport { MatSelectModule } from '@angular/material/select';\nimport { Store } from '@ngrx/store';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { combineLatest, Observable } from 'rxjs';\nimport { IconComponent, TranslationService } from '@alfresco/adf-core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { switchMap } from 'rxjs/operators';\nimport { AppExtensionService } from '@alfresco/aca-shared';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n  selector: 'aca-bulk-actions-dropdown',\n  templateUrl: './bulk-actions-dropdown.component.html',\n  styleUrls: ['./bulk-actions-dropdown.component.scss'],\n  imports: [CommonModule, TranslatePipe, MatSelectModule, IconComponent, ReactiveFormsModule],\n  encapsulation: ViewEncapsulation.None\n})\nexport class BulkActionsDropdownComponent implements OnInit {\n  @Input() items: ContentActionRef[];\n\n  placeholder: string;\n  tooltip: string;\n  bulkSelectControl = new FormControl();\n\n  private readonly store = inject<Store<AppStore>>(Store);\n  private readonly translationService = inject(TranslationService);\n  private readonly extensions = inject(AppExtensionService);\n  private readonly destroyRef = inject(DestroyRef);\n  private readonly totalItems$: Observable<number> = this.store.select(getSearchItemsTotalCount);\n\n  ngOnInit() {\n    this.totalItems$\n      .pipe(\n        switchMap((totalItems) => {\n          if (totalItems > 0) {\n            this.bulkSelectControl.enable();\n\n            return combineLatest([\n              this.translationService.get('SEARCH.BULK_ACTIONS_DROPDOWN.TITLE', { count: totalItems }),\n              this.translationService.get('SEARCH.BULK_ACTIONS_DROPDOWN.TITLE', { count: totalItems })\n            ]);\n          } else {\n            this.bulkSelectControl.disable();\n\n            return combineLatest([\n              this.translationService.get('SEARCH.BULK_ACTIONS_DROPDOWN.BULK_NOT_AVAILABLE'),\n              this.translationService.get('SEARCH.BULK_ACTIONS_DROPDOWN.BULK_NOT_AVAILABLE_TOOLTIP')\n            ]);\n          }\n        }),\n        takeUntilDestroyed(this.destroyRef)\n      )\n      .subscribe(([placeholder, title]) => {\n        this.tooltip = title;\n        this.placeholder = placeholder;\n      });\n\n    this.extensions.bulkActionExecuted$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n      this.bulkSelectControl.setValue(null);\n    });\n  }\n\n  runAction(actionOption: ContentActionRef) {\n    this.extensions.runActionById(actionOption.actions.click, {\n      focusedElementOnCloseSelector: '.adf-context-menu-source'\n    });\n  }\n\n  onKeyDown(event: KeyboardEvent) {\n    if (event.key === 'Tab') {\n      this.bulkSelectControl.setValue(null);\n    }\n    if (event.key === 'Enter' && this.bulkSelectControl.value) {\n      this.runAction(this.bulkSelectControl.value);\n    }\n  }\n}\n","<mat-form-field\n  *ngIf=\"items?.length\"\n  class=\"aca-bulk-actions-form-field\"\n  data-automation-id=\"aca-bulk-actions-form-field\"\n>\n  <mat-label>{{ 'SEARCH.BULK_ACTIONS_DROPDOWN.LABEL' | translate }}</mat-label>\n  <mat-select\n    [formControl]=\"bulkSelectControl\"\n    [placeholder]=\"placeholder\"\n    panelClass=\"aca-bulk-actions-select\"\n    disableOptionCentering\n    data-automation-id=\"aca-bulk-actions-dropdown\"\n    (keydown)=\"onKeyDown($event)\"\n  >\n    <mat-select-trigger>\n      <div class=\"aca-bulk-actions-option-content\">\n        <adf-icon\n          *ngIf=\"bulkSelectControl.value?.icon\"\n          [title]=\"bulkSelectControl.value?.title | translate\"\n          [value]=\"bulkSelectControl.value?.icon\"\n          class=\"aca-bulk-actions-icon\"\n          aria-hidden=\"true\"\n          [attr.data-automation-id]=\"'aca-bulk-action-icon-' + bulkSelectControl.value?.id\"\n        />\n        {{ bulkSelectControl.value?.title | translate }}\n      </div>\n    </mat-select-trigger>\n\n    <mat-option\n      *ngFor=\"let option of items\"\n      [value]=\"option\"\n      [title]=\"option.tooltip | translate\"\n      [attr.data-automation-id]=\"option.id\"\n      (keyup.enter)=\"runAction(option)\"\n      (click)=\"runAction(option)\"\n    >\n      <div class=\"aca-bulk-actions-option-content\">\n        <adf-icon\n          *ngIf=\"option.icon\"\n          [title]=\"option.title | translate\"\n          [value]=\"option.icon\"\n          class=\"aca-bulk-actions-icon\"\n          aria-hidden=\"true\"\n          [attr.data-automation-id]=\"'aca-bulk-action-icon-' + option.id\"\n        />\n        {{ option.title | translate }}\n      </div>\n    </mat-option>\n  </mat-select>\n</mat-form-field>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { AppExtensionService } from '@alfresco/aca-shared';\nimport { Pipe, PipeTransform, inject } from '@angular/core';\nimport { AppStore, getRepositoryStatus } from '@alfresco/aca-shared/store';\nimport { Store } from '@ngrx/store';\nimport { filter, map, Observable } from 'rxjs';\n\n@Pipe({\n  name: 'isFeatureSupportedInCurrentAcs'\n})\nexport class IsFeatureSupportedInCurrentAcsPipe implements PipeTransform {\n  private readonly appExtensionsService = inject(AppExtensionService);\n  private readonly store = inject<Store<AppStore>>(Store);\n\n  transform(evaluatorId: string): Observable<boolean> {\n    return this.store.select(getRepositoryStatus).pipe(\n      filter((repoStatus) => 'version' in repoStatus),\n      map(() => this.appExtensionsService.isFeatureSupported(evaluatorId))\n    );\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Injectable, inject } from '@angular/core';\nimport { Observable, ReplaySubject, switchMap, take } from 'rxjs';\nimport { NodeEntry } from '@alfresco/js-api';\nimport { SavedSearch, SavedSearchesLegacyService, SavedSearchesService, SavedSearchStrategy } from '@alfresco/adf-content-services';\nimport { IsFeatureSupportedInCurrentAcsPipe } from '../pipes/is-feature-supported.pipe';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class SavedSearchesContextService implements SavedSearchStrategy {\n  private readonly legacyService = inject(SavedSearchesLegacyService);\n  private readonly modernService = inject(SavedSearchesService);\n\n  currentContextSavedSearch: SavedSearch;\n\n  private readonly strategy$ = new ReplaySubject<SavedSearchStrategy>(1);\n\n  constructor() {\n    const isFeatureSupported = inject(IsFeatureSupportedInCurrentAcsPipe);\n\n    isFeatureSupported\n      .transform('isPreferencesApiAvailable')\n      .pipe(takeUntilDestroyed())\n      .subscribe((isSupported) => {\n        const strategy = isSupported ? this.modernService : this.legacyService;\n        this.strategy$.next(strategy);\n      });\n  }\n\n  get savedSearches$(): Observable<SavedSearch[]> {\n    return this.strategy$.pipe(switchMap((strategy) => strategy.savedSearches$));\n  }\n\n  init(): void {\n    this.executeOnStrategyVoid((strategy) => strategy.init());\n  }\n\n  getSavedSearches(): Observable<SavedSearch[]> {\n    return this.executeOnStrategy((strategy) => strategy.getSavedSearches());\n  }\n\n  saveSearch(newSaveSearch: Pick<SavedSearch, 'name' | 'description' | 'encodedUrl'>): Observable<NodeEntry> {\n    return this.executeOnStrategy((strategy) => strategy.saveSearch(newSaveSearch));\n  }\n\n  editSavedSearch(updatedSavedSearch: SavedSearch): Observable<NodeEntry> {\n    return this.executeOnStrategy((strategy) => strategy.editSavedSearch(updatedSavedSearch));\n  }\n\n  deleteSavedSearch(deletedSavedSearch: SavedSearch): Observable<NodeEntry> {\n    return this.executeOnStrategy((strategy) => strategy.deleteSavedSearch(deletedSavedSearch));\n  }\n\n  changeOrder(previousIndex: number, currentIndex: number): void {\n    this.executeOnStrategyVoid((strategy) => strategy.changeOrder(previousIndex, currentIndex));\n  }\n\n  private executeOnStrategy<T>(action: (strategy: SavedSearchStrategy) => Observable<T>): Observable<T> {\n    return this.strategy$.pipe(take(1), switchMap(action));\n  }\n\n  private executeOnStrategyVoid(action: (strategy: SavedSearchStrategy) => void): void {\n    this.strategy$.pipe(take(1)).subscribe(action);\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Injectable, inject } from '@angular/core';\nimport { AbstractControl, AsyncValidator, ValidationErrors } from '@angular/forms';\nimport { catchError, map, Observable, of, switchMap, timer } from 'rxjs';\nimport { SavedSearchesContextService } from '../../../../services/saved-searches-context.service';\n\nconst VALIDATION_DEBOUNCE_TIME = 300;\n\n@Injectable({ providedIn: 'root' })\nexport class UniqueSearchNameValidator implements AsyncValidator {\n  private readonly savedSearchesService = inject(SavedSearchesContextService);\n\n  validate(control: AbstractControl): Observable<ValidationErrors | null> {\n    return timer(VALIDATION_DEBOUNCE_TIME).pipe(\n      switchMap(() => this.savedSearchesService.getSavedSearches()),\n      map((searches) =>\n        searches.some((search) => search.name === control.value && control.dirty)\n          ? { message: 'APP.BROWSE.SEARCH.SAVE_SEARCH.SEARCH_NAME_NOT_UNIQUE_ERROR' }\n          : null\n      ),\n      catchError(() => of(null))\n    );\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, ViewEncapsulation, inject } from '@angular/core';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\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 { A11yModule } from '@angular/cdk/a11y';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { FormControl, FormGroup, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { NotificationService } from '@alfresco/adf-core';\nimport { forbidOnlySpaces } from '@alfresco/adf-content-services';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { take } from 'rxjs/operators';\nimport { UniqueSearchNameValidator } from './unique-search-name-validator';\nimport { SavedSearchForm } from './saved-search-form.interface';\nimport { SavedSearchesContextService } from '../../../../services/saved-searches-context.service';\n\n@Component({\n  imports: [\n    CommonModule,\n    TranslatePipe,\n    MatMenuModule,\n    MatButtonModule,\n    MatIconModule,\n    MatFormFieldModule,\n    MatInputModule,\n    A11yModule,\n    MatCheckboxModule,\n    FormsModule,\n    ReactiveFormsModule,\n    MatDialogModule\n  ],\n  selector: 'aca-save-search-dialog',\n  templateUrl: './save-search-dialog.component.html',\n  styleUrls: ['./save-search-dialog.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'aca-save-search-dialog' }\n})\nexport class SaveSearchDialogComponent {\n  private readonly dialog = inject<MatDialogRef<SaveSearchDialogComponent>>(MatDialogRef);\n  private readonly notificationService = inject(NotificationService);\n  private readonly savedSearchesService = inject(SavedSearchesContextService);\n  private readonly uniqueSearchNameValidator = inject(UniqueSearchNameValidator);\n  private readonly data = inject<{\n    searchUrl: string;\n  }>(MAT_DIALOG_DATA);\n\n  form: FormGroup<SavedSearchForm>;\n  disableSubmitButton = false;\n\n  constructor() {\n    this.form = new FormGroup({\n      name: new FormControl('', {\n        validators: [Validators.required, forbidOnlySpaces],\n        asyncValidators: [this.uniqueSearchNameValidator.validate.bind(this.uniqueSearchNameValidator)],\n        updateOn: 'change'\n      }),\n      description: new FormControl('')\n    });\n  }\n\n  submit() {\n    if (this.form.invalid || this.disableSubmitButton) {\n      return;\n    }\n    this.disableSubmitButton = true;\n    const formValue = this.form.value;\n    const saveSearch = { name: formValue.name, description: formValue.description, encodedUrl: encodeURIComponent(this.data.searchUrl) };\n    this.savedSearchesService\n      .saveSearch(saveSearch)\n      .pipe(take(1))\n      .subscribe({\n        next: () => {\n          this.dialog.close(true);\n          this.notificationService.showInfo('APP.BROWSE.SEARCH.SAVE_SEARCH.SAVE_SUCCESS');\n          this.disableSubmitButton = false;\n        },\n        error: () => {\n          this.notificationService.showError('APP.BROWSE.SEARCH.SAVE_SEARCH.SAVE_ERROR');\n          this.disableSubmitButton = false;\n        }\n      });\n  }\n}\n","<div class=\"aca-save-search-dialog__header\">\n    <h2\n      id=\"aca-save-search-dialog-title\"\n      class=\"aca-save-search-dialog__title\">\n      {{\"APP.BROWSE.SEARCH.SAVE_SEARCH.MODAL_HEADER\" | translate}}\n    </h2>\n    <button\n      mat-icon-button\n      mat-dialog-close\n      [attr.aria-label]=\"'CLOSE' | translate | titlecase\"\n      [attr.title]=\"'CLOSE' | translate | titlecase\">\n      <mat-icon>close</mat-icon>\n    </button>\n</div>\n\n\n<mat-dialog-content>\n  <form [formGroup]=\"form\" (submit)=\"submit()\">\n    <mat-form-field class=\"aca-save-search-dialog__form-field\">\n      <mat-label>{{ 'APP.BROWSE.SEARCH.SAVE_SEARCH.NAME_LABEL' | translate }}</mat-label>\n      <input\n        id=\"aca-save-search-dialog-name-input\"\n        [attr.aria-label]=\"'APP.BROWSE.SEARCH.SAVE_SEARCH.NAME_LABEL' | translate\"\n        matInput\n        required\n        [formControlName]=\"'name'\"\n      />\n\n      <mat-error *ngIf=\"form.controls['name'].touched\">\n                <span *ngIf=\"form.controls['name'].errors?.required\">\n                    {{ 'APP.BROWSE.SEARCH.SAVE_SEARCH.NAME_REQUIRED_ERROR' | translate }}\n                </span>\n                <span *ngIf=\"!form.controls['name'].errors?.required && form.controls['name'].errors?.message\">\n                    {{ form.controls['name'].errors?.message | translate : { name: form.controls.name.value } }}\n                </span>\n      </mat-error>\n    </mat-form-field>\n\n    <mat-form-field class=\"aca-save-search-dialog__form-field\">\n      <mat-label>{{ 'APP.BROWSE.SEARCH.SAVE_SEARCH.DESCRIPTION_LABEL' | translate }}</mat-label>\n      <textarea\n        id=\"aca-save-search-dialog-description-input\"\n        matInput\n        [attr.aria-label]=\"'APP.BROWSE.SEARCH.SAVE_SEARCH.DESCRIPTION_LABEL' | translate\"\n        rows=\"4\"\n        [formControlName]=\"'description'\"></textarea>\n    </mat-form-field>\n  </form>\n</mat-dialog-content>\n\n<mat-dialog-actions align=\"end\">\n  <button\n    mat-button\n    id=\"aca-save-search-dialog-cancel-button\"\n    mat-dialog-close>\n    {{ 'CANCEL' | titlecase | translate }}\n  </button>\n\n  <button id=\"aca-save-search-dialog-save-button\"\n          mat-flat-button\n          class=\"aca-save-search-dialog__save-button\"\n          (click)=\"submit()\"\n          [disabled]=\"!form.valid || disableSubmitButton\">\n    {{ 'SAVE' | titlecase | translate}}\n  </button>\n</mat-dialog-actions>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { DestroyRef, Directive, ElementRef, EventEmitter, HostListener, inject, Input, Output } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { SaveSearchDialogComponent } from '../dialog/save-search-dialog.component';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { OverlayContainer } from '@angular/cdk/overlay';\nimport { SaveSearchDirectiveDialogData } from '../dialog/save-search-directive-dialog-data';\n\n@Directive({\n  selector: '[acaSaveSearch]',\n  standalone: true\n})\nexport class SaveSearchDirective {\n  private readonly overlayContainer = inject(OverlayContainer);\n\n  /** Encoded search query */\n  @Input()\n  acaSaveSearchQuery: string;\n\n  /** Outputs a true value when search was successfully saved */\n  @Output()\n  searchSaved = new EventEmitter<boolean>();\n\n  private readonly destroyRef = inject(DestroyRef);\n  private readonly dialogRef = inject(MatDialog);\n  private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n  @HostListener('click', ['$event'])\n  onClick(event: MouseEvent) {\n    event.preventDefault();\n    this.elementRef.nativeElement.focus();\n    this.openDialog();\n  }\n\n  private openDialog(): void {\n    this.overlayContainer.getContainerElement().setAttribute('role', 'dialog');\n    const dialog = this.dialogRef.open(SaveSearchDialogComponent, {\n      ...this.getDialogConfig(),\n      restoreFocus: true,\n      ariaLabelledBy: 'aca-save-search-dialog-title'\n    });\n    dialog\n      .afterClosed()\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe((value: boolean) => {\n        if (value) {\n          this.searchSaved.emit(value);\n        }\n      });\n  }\n\n  private getDialogConfig(): { data: SaveSearchDirectiveDialogData } {\n    return {\n      data: { searchUrl: this.acaSaveSearchQuery }\n    };\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ChangeDetectorRef, Component, inject, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { NodeEntry, Pagination, ResultSetPaging } from '@alfresco/js-api';\nimport { ActivatedRoute, NavigationStart } from '@angular/router';\nimport {\n  AlfrescoViewerComponent,\n  DocumentListComponent,\n  ResetSearchDirective,\n  SavedSearch,\n  SearchFilterChipsComponent,\n  SearchFormComponent,\n  SearchSortingDefinition,\n  SearchQueryBuilderService,\n  TagService\n} from '@alfresco/adf-content-services';\nimport {\n  infoDrawerPreview,\n  NavigateToFolder,\n  SetInfoDrawerPreviewStateAction,\n  SetInfoDrawerStateAction,\n  SetSearchItemsTotalCountAction,\n  ShowInfoDrawerPreviewAction\n} from '@alfresco/aca-shared/store';\nimport {\n  CustomEmptyContentTemplateDirective,\n  DataColumnComponent,\n  DataColumnListComponent,\n  DateColumnHeaderComponent,\n  NotificationService,\n  PaginationComponent,\n  TranslationService,\n  ViewerToolbarComponent\n} from '@alfresco/adf-core';\nimport {\n  ContextActionsDirective,\n  InfoDrawerComponent,\n  PageComponent,\n  PageLayoutComponent,\n  PaginationDirective,\n  ToolbarComponent\n} from '@alfresco/aca-shared';\nimport { filter, first, map, startWith, switchMap, take, tap, toArray } from 'rxjs/operators';\nimport { AsyncPipe, CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { SearchInputComponent } from '../search-input/search-input.component';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatButtonModule } from '@angular/material/button';\nimport { DocumentListDirective } from '../../../directives/document-list.directive';\nimport { ThumbnailColumnComponent } from '../../dl-custom-components/thumbnail-column/thumbnail-column.component';\nimport { SearchActionMenuComponent } from '../search-action-menu/search-action-menu.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { DocumentListPresetRef, DynamicColumnComponent } from '@alfresco/adf-extensions';\nimport { BulkActionsDropdownComponent } from '../../bulk-actions-dropdown/bulk-actions-dropdown.component';\nimport { extractFiltersFromEncodedQuery, extractUserQueryFromEncodedQuery } from '../../../utils/aca-search-utils';\nimport { SaveSearchDirective } from '../search-save/directive/save-search.directive';\nimport { combineLatest, Observable, of } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { IsFeatureSupportedInCurrentAcsPipe } from '../../../pipes/is-feature-supported.pipe';\nimport { SavedSearchesContextService } from '../../../services/saved-searches-context.service';\n\n@Component({\n  imports: [\n    CommonModule,\n    TranslatePipe,\n    SearchInputComponent,\n    MatProgressBarModule,\n    MatDividerModule,\n    MatButtonModule,\n    MatMenuModule,\n    DocumentListDirective,\n    ContextActionsDirective,\n    ThumbnailColumnComponent,\n    SearchActionMenuComponent,\n    PaginationComponent,\n    MatIconModule,\n    InfoDrawerComponent,\n    PaginationDirective,\n    PageLayoutComponent,\n    ToolbarComponent,\n    AlfrescoViewerComponent,\n    DynamicColumnComponent,\n    SearchFormComponent,\n    ResetSearchDirective,\n    SearchFilterChipsComponent,\n    DocumentListComponent,\n    DataColumnListComponent,\n    DataColumnComponent,\n    DateColumnHeaderComponent,\n    CustomEmptyContentTemplateDirective,\n    ViewerToolbarComponent,\n    BulkActionsDropdownComponent,\n    SaveSearchDirective,\n    IsFeatureSupportedInCurrentAcsPipe,\n    AsyncPipe\n  ],\n  selector: 'aca-search-results',\n  templateUrl: './search-results.component.html',\n  encapsulation: ViewEncapsulation.None,\n  styleUrls: ['./search-results.component.scss']\n})\nexport class SearchResultsComponent extends PageComponent implements OnInit, OnDestroy {\n  private readonly queryBuilder = inject(SearchQueryBuilderService);\n  private readonly changeDetectorRef = inject(ChangeDetectorRef);\n  private readonly route = inject(ActivatedRoute);\n  private readonly translationService = inject(TranslationService);\n  private readonly savedSearchesService = inject(SavedSearchesContextService);\n  private readonly notificationService = inject(NotificationService);\n\n  infoDrawerPreview$ = this.store.select(infoDrawerPreview);\n\n  protected readonly areFiltersActive$: Observable<boolean>;\n\n  searchedWord: string;\n  queryParamName = 'q';\n  data: ResultSetPaging;\n  sorting = ['name', 'asc'];\n  isLoading = false;\n  totalResults: number;\n  isTagsEnabled = false;\n  initialSavedSearch: SavedSearch = undefined;\n  columns: DocumentListPresetRef[] = [];\n  encodedQuery: string;\n  isSmallScreen = window.innerWidth < 320;\n\n  private previousEncodedQuery: string;\n  private readonly resizeListener = () => {\n    this.isSmallScreen = window.innerWidth < 320;\n  };\n\n  constructor() {\n    const tagsService = inject(TagService);\n\n    super();\n    const queryBuilder = this.queryBuilder;\n\n    this.isTagsEnabled = tagsService.areTagsEnabled();\n\n    queryBuilder.paging = {\n      skipCount: 0,\n      maxItems: 25\n    };\n\n    this.areFiltersActive$ = combineLatest([this.queryBuilder.queryFragmentsUpdate, this.queryBuilder.userFacetBucketsUpdate]).pipe(\n      takeUntilDestroyed(),\n      map((filters) => {\n        const [queryFragments, userFacetBuckets] = filters.map((rawFilter) => {\n          return Object.values(rawFilter).some((filterValue) => (Array.isArray(filterValue) ? filterValue.length > 0 : !!filterValue));\n        });\n        return queryFragments || userFacetBuckets;\n      })\n    );\n  }\n\n  ngOnInit() {\n    super.ngOnInit();\n\n    this.queryBuilder.resetToDefaults();\n    this.sorting = this.getSorting();\n\n    this.subscriptions.push(\n      this.queryBuilder.executed.subscribe((data) => {\n        this.queryBuilder.paging.skipCount = 0;\n\n        this.onSearchResultLoaded(data);\n        this.isLoading = false;\n        this.changeDetectorRef.detectChanges();\n      }),\n\n      this.queryBuilder.error.subscribe((err: any) => {\n        this.onSearchError(err);\n      }),\n\n      this.queryBuilder.filterQueryUpdate.subscribe(() => {\n        this.isLoading = true;\n      })\n    );\n\n    this.columns = this.extensions.documentListPresets.searchResults || [];\n\n    if (this.route) {\n      this.selectInitialSavedSearch().subscribe((savedSearches) => {\n        this.initialSavedSearch = savedSearches;\n      });\n\n      combineLatest([\n        this.route.queryParams,\n        this.router.events.pipe(\n          filter((event): event is NavigationStart => event instanceof NavigationStart),\n          startWith(null)\n        )\n      ])\n        .pipe(\n          takeUntilDestroyed(this.destroyRef),\n          tap(([params]) => {\n            this.encodedQuery = params[this.queryParamName];\n            this.isLoading = !!this.encodedQuery;\n\n            this.searchedWord = extractUserQueryFromEncodedQuery(this.encodedQuery);\n\n            const filtersFromEncodedQuery = extractFiltersFromEncodedQuery(this.encodedQuery);\n            this.queryBuilder.searchMode = filtersFromEncodedQuery?.['searchMode'] ?? 'regular';\n            if (filtersFromEncodedQuery?.['selectedConfigurationId']) {\n              this.queryBuilder.updateSelectedConfiguration(filtersFromEncodedQuery['selectedConfigurationId'], false, false);\n            }\n            this.queryBuilder.populateFilters.next(filtersFromEncodedQuery || {});\n          }),\n          switchMap(([, navigationStartEvent]) => {\n            const filtersToLoad = this.queryBuilder.categories.length;\n\n            const filtersAreLoaded = filtersToLoad ? this.queryBuilder.filterLoaded.pipe(take(filtersToLoad), toArray()) : of(null);\n\n            return filtersAreLoaded.pipe(map(() => navigationStartEvent));\n          })\n        )\n        .subscribe((navigationStartEvent) => {\n          const shouldExecuteQuery = this.shouldExecuteQuery(navigationStartEvent, this.encodedQuery);\n          this.queryBuilder.userQuery = extractUserQueryFromEncodedQuery(this.encodedQuery);\n\n          if (shouldExecuteQuery) {\n            this.queryBuilder.execute(false);\n          }\n        });\n    }\n\n    window.addEventListener('resize', this.resizeListener);\n  }\n\n  ngOnDestroy(): void {\n    this.savedSearchesService.currentContextSavedSearch = undefined;\n    window.removeEventListener('resize', this.resizeListener);\n  }\n\n  onSearchError(error: { message: any }) {\n    let message: string;\n    try {\n      const { statusCode } = JSON.parse(error.message).error;\n\n      const messageKey = `APP.BROWSE.SEARCH.ERRORS.${statusCode}`;\n      message = this.translationService.instant(messageKey);\n\n      if (message === messageKey) {\n        message = this.translationService.instant(`APP.BROWSE.SEARCH.ERRORS.GENERIC`);\n      }\n    } catch {\n      message = error.message;\n    }\n\n    this.notificationService.showError(message);\n  }\n\n  onSearchResultLoaded(nodePaging: ResultSetPaging) {\n    this.data = nodePaging;\n    this.totalResults = this.getNumberOfResults();\n    this.store.dispatch(new SetSearchItemsTotalCountAction(this.totalResults));\n  }\n\n  getNumberOfResults() {\n    if (this.data?.list?.pagination) {\n      return this.data.list.pagination.totalItems;\n    }\n    return 0;\n  }\n\n  onPaginationChanged(pagination: Pagination) {\n    this.queryBuilder.paging = {\n      maxItems: pagination.maxItems,\n      skipCount: pagination.skipCount\n    };\n    this.queryBuilder.execute(false);\n  }\n\n  private getSorting(): string[] {\n    const primary = this.queryBuilder.getPrimarySorting();\n\n    if (primary) {\n      return [primary.key, primary.ascending ? 'asc' : 'desc'];\n    }\n\n    return ['name', 'asc'];\n  }\n\n  onNodeDoubleClick(node: NodeEntry) {\n    if (node?.entry) {\n      if (node.entry.isFolder) {\n        this.store.dispatch(new NavigateToFolder(node));\n        return;\n      }\n\n      this.showPreview(node, { location: this.router.url });\n    }\n  }\n\n  handleNodeClick(event: Event) {\n    this.onNodeDoubleClick((event as CustomEvent).detail?.node);\n  }\n\n  onPreviewClosed() {\n    this.store.dispatch(new ShowInfoDrawerPreviewAction());\n  }\n\n  onDrawerClosed() {\n    this.store.dispatch(new SetInfoDrawerPreviewStateAction(false));\n    this.store.dispatch(new SetInfoDrawerStateAction(false));\n  }\n\n  onSearchSortingUpdate(option: SearchSortingDefinition) {\n    this.queryBuilder.sorting = [{ ...option, ascending: option.ascending }];\n    this.queryBuilder.execute(false);\n  }\n\n  editSavedSearch(searchToSave: SavedSearch) {\n    searchToSave.encodedUrl = this.encodedQuery;\n    this.savedSearchesService\n      .editSavedSearch(searchToSave)\n      .pipe(take(1))\n      .subscribe({\n        next: () => {\n          this.notificationService.showInfo('APP.BROWSE.SEARCH.SAVE_SEARCH.EDIT_DIALOG.SUCCESS_MESSAGE');\n        },\n        error: () => {\n          this.notificationService.showError('APP.BROWSE.SEARCH.SAVE_SEARCH.EDIT_DIALOG.ERROR_MESSAGE');\n        }\n      });\n  }\n\n  onSaveSearch(): void {\n    this.selectInitialSavedSearch()\n      .pipe(take(1))\n      .subscribe((savedSearch) => {\n        this.initialSavedSearch = savedSearch;\n        this.savedSearchesService.currentContextSavedSearch = savedSearch;\n      });\n  }\n\n  private shouldExecuteQuery(navigationStartEvent: NavigationStart | null, query: string | undefined): boolean {\n    const hasQueryChanged = query !== this.previousEncodedQuery;\n    this.previousEncodedQuery = query;\n\n    if (!navigationStartEvent && this.data === undefined) {\n      return true;\n    } else if (query === this.queryBuilder.encodedQuery) {\n      return false;\n    } else if (\n      navigationStartEvent?.navigationTrigger === 'popstate' ||\n      navigationStartEvent?.navigationTrigger === 'hashchange' ||\n      navigationStartEvent?.navigationTrigger === 'imperative'\n    ) {\n      return hasQueryChanged;\n    } else {\n      return !!query;\n    }\n  }\n\n  private selectInitialSavedSearch(): Observable<SavedSearch> {\n    return this.route.queryParams.pipe(\n      takeUntilDestroyed(this.destroyRef),\n      switchMap((params) =>\n        this.savedSearchesService.savedSearches$.pipe(\n          first(),\n          map(\n            (savedSearches) =>\n              savedSearches.find((savedSearch) => savedSearch.encodedUrl === encodeURIComponent(params[this.queryParamName])) ||\n              this.savedSearchesService.currentContextSavedSearch\n          )\n        )\n      )\n    );\n  }\n}\n","<aca-page-layout>\n  <div class=\"aca-page-layout-header\">\n    <div class=\"aca-header-container\">\n      <aca-search-input />\n      <aca-bulk-actions-dropdown *ngIf=\"bulkActions && ('isBulkActionsAvailable' | isFeatureSupportedInCurrentAcs | async)\" [items]=\"bulkActions\" />\n      <aca-toolbar class=\"aca-search-results__toolbar-actions\" [items]=\"actions\" />\n    </div>\n  </div>\n\n  <div class=\"aca-page-layout-content\">\n    <div class=\"aca-main-content\">\n      <div class=\"adf-search-results\">\n        <div class=\"adf-search-results__content\">\n          <mat-progress-bar *ngIf=\"isLoading\" mode=\"indeterminate\" aria-live=\"polite\" />\n          <div class=\"adf-search-results__content-header aca-content\">\n            <div class=\"aca-content__filter-set\">\n              <p>{{ 'APP.BROWSE.SEARCH.FILTER_SET' | translate }}</p>\n              <adf-search-form />\n            </div>\n            <mat-divider\n              [vertical]=\"!isSmallScreen\"\n              [ngClass]=\"'aca-content__divider-' + (isSmallScreen ? 'horizontal' : 'vertical')\"\n              aria-hidden=\"true\" />\n            <div class=\"aca-content__advanced-filters\">\n              <div class=\"aca-content__advanced-filters--header\">\n                <p>{{ 'APP.BROWSE.SEARCH.ADVANCED_FILTERS' | translate }}</p>\n                <div class=\"aca-content__advanced-filters--header--action-buttons\">\n                  <button\n                    *ngIf=\"initialSavedSearch !== undefined; else saveSearchButton\"\n                    mat-button\n                    [disabled]=\"!encodedQuery\"\n                    class=\"aca-content__save-search-action\"\n                    title=\"{{ 'APP.BROWSE.SEARCH.SAVE_SEARCH.ACTION_BUTTON' | translate }}\"\n                    [attr.aria-label]=\"'APP.BROWSE.SEARCH.SAVE_SEARCH.ACTION_BUTTON' | translate\"\n                    [matMenuTriggerFor]=\"saveSearchOptionsMenu\"\n                  >\n                    {{ 'APP.BROWSE.SEARCH.SAVE_SEARCH.ACTION_BUTTON' | translate }}\n                    <mat-icon iconPositionEnd>keyboard_arrow_down</mat-icon>\n                  </button>\n                  <mat-menu #saveSearchOptionsMenu=\"matMenu\">\n                    <button\n                      mat-menu-item\n                      (click)=\"editSavedSearch(initialSavedSearch)\"\n                      title=\"{{ 'APP.BROWSE.SEARCH.SAVE_SEARCH.SAVE_CHANGES' | translate }}\"\n                      [attr.aria-label]=\"'APP.BROWSE.SEARCH.SAVE_SEARCH.SAVE_CHANGES' | translate\"\n                    >\n                      {{ 'APP.BROWSE.SEARCH.SAVE_SEARCH.SAVE_CHANGES' | translate }}\n                    </button>\n                    <button\n                      mat-menu-item\n                      acaSaveSearch\n                      [acaSaveSearchQuery]=\"encodedQuery\"\n                      title=\"{{ 'APP.BROWSE.SEARCH.SAVE_SEARCH.SAVE_AS_NEW' | translate }}\"\n                      [attr.aria-label]=\"'APP.BROWSE.SEARCH.SAVE_SEARCH.SAVE_AS_NEW' | translate\"\n                    >\n                      {{ 'APP.BROWSE.SEARCH.SAVE_SEARCH.SAVE_AS_NEW' | translate }}\n                    </button>\n                  </mat-menu>\n                  <ng-template #saveSearchButton>\n                    <button\n                      mat-button\n                      acaSaveSearch\n                      [acaSaveSearchQuery]=\"encodedQuery\"\n                      (searchSaved)=\"onSaveSearch()\"\n                      [disabled]=\"!encodedQuery\"\n                      class=\"aca-content__save-search-action\"\n                      title=\"{{ 'APP.BROWSE.SEARCH.SAVE_SEARCH.ACTION_BUTTON' | translate }}\"\n                      [attr.aria-label]=\"'APP.BROWSE.SEARCH.SAVE_SEARCH.ACTION_BUTTON' | translate\"\n                    >\n                      {{ 'APP.BROWSE.SEARCH.SAVE_SEARCH.ACTION_BUTTON' | translate }}\n                    </button>\n                  </ng-template>\n                  <button\n                    [disabled]=\"!(areFiltersActive$ | async)\"\n                    mat-button\n                    adf-reset-search\n                    class=\"aca-content__reset-action\"\n                    title=\"{{ 'APP.BROWSE.SEARCH.RESET_ACTION' | translate }}\"\n                    [attr.aria-label]=\"'APP.BROWSE.SEARCH.RESET_ACTION' | translate\"\n                  >\n                    {{ 'APP.BROWSE.SEARCH.RESET' | translate }}\n                  </button>\n                </div>\n              </div>\n              <adf-search-filter-chips />\n            </div>\n          </div>\n\n          <adf-document-list\n            #documentList\n            acaDocumentList\n            acaContextActions\n            [selectionMode]=\"'multiple'\"\n            [multiselect]=\"true\"\n            [sortingMode]=\"'server'\"\n            [sorting]=\"sorting\"\n            [preselectNodes]=\"selectedNodesState?.nodes\"\n            [displayCheckboxesOnHover]=\"true\"\n            [imageResolver]=\"imageResolver\"\n            [isResizingEnabled]=\"true\"\n            [blurOnResize]=\"false\"\n            [node]=\"$any(data)\"\n            (node-dblclick)=\"handleNodeClick($event)\"\n          >\n            <data-columns>\n              <data-column\n                id=\"app.search.thumbnail\"\n                key=\"$thumbnail\"\n                type=\"image\"\n                [sr-title]=\"'ADF-DOCUMENT-LIST.LAYOUT.THUMBNAIL'\"\n                [sortable]=\"false\"\n              >\n                <ng-template let-context>\n                  <aca-custom-thumbnail-column [context]=\"context\" />\n                </ng-template>\n\n                <adf-data-column-header>\n                  <ng-template>\n                    <aca-search-action-menu (sortingSelected)=\"onSearchSortingUpdate($event)\" />\n                  </ng-template>\n                </adf-data-column-header>\n              </data-column>\n\n              <ng-container *ngFor=\"let column of columns; trackBy: trackByColumnId\">\n                <ng-container *ngIf=\"column.template && !(column.desktopOnly && isSmallScreen)\">\n                  <data-column\n                    [id]=\"column.id\"\n                    [key]=\"column.key\"\n                    [title]=\"column.title\"\n                    [type]=\"column.type\"\n                    [format]=\"column.format\"\n                    [class]=\"column.class\"\n                    [sortable]=\"column.sortable\"\n                    [sortingKey]=\"column.sortingKey || column.key\"\n                    [isHidden]=\"column.isHidden\"\n                    [draggable]=\"column.draggable\"\n                    [resizable]=\"column.resizable\"\n                  >\n                    <ng-template let-context>\n                      <adf-dynamic-column [id]=\"column.template\" [context]=\"context\" />\n                    </ng-template>\n                  </data-column>\n                </ng-container>\n\n                <ng-container *ngIf=\"!column.template && !(column.desktopOnly && isSmallScreen)\">\n                  <data-column\n                    [id]=\"column.id\"\n                    [key]=\"column.key\"\n                    [title]=\"column.title\"\n                    [type]=\"column.type\"\n                    [format]=\"column.format\"\n                    [class]=\"column.class\"\n                    [sortable]=\"column.sortable\"\n                    [sortingKey]=\"column.sortingKey || column.key\"\n                    [isHidden]=\"column.isHidden\"\n                    [draggable]=\"column.draggable\"\n                    [resizable]=\"column.resizable\"\n                  />\n                </ng-container>\n              </ng-container>\n            </data-columns>\n\n            <adf-custom-empty-content-template>\n              <ng-container *ngIf=\"data\">\n                <div class=\"empty-search__block\" aria-live=\"polite\">\n                  <p class=\"empty-search__text\">\n                    {{ 'APP.BROWSE.SEARCH.NO_RESULTS' | translate }}\n                  </p>\n                </div>\n              </ng-container>\n            </adf-custom-empty-content-template>\n          </adf-document-list>\n\n          <adf-pagination *ngIf=\"totalResults > 0\" acaPagination [target]=\"documentList\" (change)=\"onPaginationChanged($event)\" />\n        </div>\n      </div>\n    </div>\n    <div\n      [ngClass]=\"\n        (infoDrawerPreview$ | async) === true ? 'adf-search-results--right_panel_section-extended' : 'adf-search-results--right_panel_section'\n      \"\n      *ngIf=\"infoDrawerOpened$ | async\"\n    >\n      <adf-alfresco-viewer\n        class=\"adf-search-results--embedded_viewer\"\n        [nodeId]=\"selection.last.entry.id\"\n        *ngIf=\"infoDrawerPreview$ | async; else infoDrawerPanel\"\n      >\n        <adf-viewer-toolbar>\n          <div class=\"adf-search-results--preview-toolbar\">\n            <div>\n              <button mat-icon-button title=\"{{ 'ADF_VIEWER.ACTIONS.CLOSE' | translate }}\" (click)=\"onDrawerClosed()\">\n                <mat-icon>close</mat-icon>\n              </button>\n            </div>\n            <div>\n              <button\n                mat-icon-button\n                title=\"{{ 'ADF_VIEWER.ACTIONS.PREVIEW' | translate }}\"\n                class=\"adf-search-results--visibility_button\"\n              >\n                <mat-icon>visibility</mat-icon>\n              </button>\n              <button mat-icon-button title=\"{{ 'ADF_VIEWER.ACTIONS.INFO' | translate }}\" (click)=\"onPreviewClosed()\">\n                <mat-icon>info_outline</mat-icon>\n              </button>\n            </div>\n          </div>\n        </adf-viewer-toolbar>\n      </adf-alfresco-viewer>\n      <ng-template #infoDrawerPanel>\n        <div class=\"aca-sidebar\">\n          <aca-info-drawer [node]=\"selection.last\" />\n        </div>\n      </ng-template>\n    </div>\n  </div>\n</aca-page-layout>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { NavigateLibraryAction } from '@alfresco/aca-shared/store';\nimport { NodePaging, Pagination, SiteEntry } from '@alfresco/js-api';\nimport { Component, OnInit, ViewEncapsulation, inject } from '@angular/core';\nimport { ActivatedRoute, Params } from '@angular/router';\nimport { SearchLibrariesQueryBuilderService } from './search-libraries-query-builder.service';\nimport {\n  AppHookService,\n  ContextActionsDirective,\n  InfoDrawerComponent,\n  PageComponent,\n  PageLayoutComponent,\n  PaginationDirective,\n  ToolbarComponent\n} from '@alfresco/aca-shared';\nimport { DocumentListPresetRef, DynamicColumnComponent } from '@alfresco/adf-extensions';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { SearchInputComponent } from '../search-input/search-input.component';\nimport { CustomEmptyContentTemplateDirective, DataColumnComponent, DataColumnListComponent, PaginationComponent } from '@alfresco/adf-core';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { DocumentListDirective } from '../../../directives/document-list.directive';\nimport { DocumentListComponent } from '@alfresco/adf-content-services';\nimport { extractUserQueryFromEncodedQuery } from '../../../utils/aca-search-utils';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n  imports: [\n    CommonModule,\n    TranslatePipe,\n    SearchInputComponent,\n    MatProgressBarModule,\n    PaginationComponent,\n    InfoDrawerComponent,\n    ContextActionsDirective,\n    DocumentListDirective,\n    PaginationDirective,\n    PageLayoutComponent,\n    ToolbarComponent,\n    DynamicColumnComponent,\n    DocumentListComponent,\n    DataColumnListComponent,\n    DataColumnComponent,\n    CustomEmptyContentTemplateDirective\n  ],\n  selector: 'aca-search-results',\n  templateUrl: './search-libraries-results.component.html',\n  styleUrls: ['./search-libraries-results.component.scss'],\n  encapsulation: ViewEncapsulation.None\n})\nexport class SearchLibrariesResultsComponent extends PageComponent implements OnInit {\n  private readonly librariesQueryBuilder = inject(SearchLibrariesQueryBuilderService);\n  private readonly route = inject(ActivatedRoute);\n  private readonly appHookService = inject(AppHookService);\n\n  searchedWord: string;\n  queryParamName = 'q';\n  data: NodePaging;\n  totalResults = 0;\n  isLoading = false;\n  columns: DocumentListPresetRef[] = [];\n\n  constructor() {\n    super();\n    const librariesQueryBuilder = this.librariesQueryBuilder;\n\n    librariesQueryBuilder.paging = {\n      skipCount: 0,\n      maxItems: 25\n    };\n  }\n\n  ngOnInit() {\n    super.ngOnInit();\n\n    this.columns = this.extensions.documentListPresets.searchLibraries || [];\n\n    this.subscriptions.push(\n      this.appHookService.libraryJoined.subscribe(() => this.librariesQueryBuilder.update()),\n      this.appHookService.libraryDeleted.subscribe(() => this.librariesQueryBuilder.update()),\n      this.appHookService.libraryLeft.subscribe(() => this.librariesQueryBuilder.update()),\n\n      this.librariesQueryBuilder.updated.subscribe(() => {\n        this.isLoading = true;\n\n        this.librariesQueryBuilder.execute();\n      }),\n\n      this.librariesQueryBuilder.executed.subscribe((data) => {\n        this.onSearchResultLoaded(data);\n        this.isLoading = false;\n      }),\n\n      this.librariesQueryBuilder.hadError.subscribe((err) => {\n        try {\n          const {\n            error: { statusCode }\n          } = JSON.parse(err.message);\n          if (statusCode === 400) {\n            this.appHookService.library400Error.next();\n          }\n        } catch {}\n      })\n    );\n\n    if (this.route) {\n      this.route.queryParams.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((params: Params) => {\n        const encodedQuery = params[this.queryParamName] || null;\n        this.searchedWord = extractUserQueryFromEncodedQuery(encodedQuery);\n        if (this.searchedWord?.length > 1) {\n          this.librariesQueryBuilder.paging.skipCount = 0;\n          this.librariesQueryBuilder.userQuery = this.searchedWord;\n          this.librariesQueryBuilder.update();\n        } else {\n          this.librariesQueryBuilder.userQuery = null;\n          this.librariesQueryBuilder.executed.next({\n            list: { pagination: { totalItems: 0 }, entries: [] }\n          });\n        }\n      });\n    }\n  }\n\n  onSearchResultLoaded(nodePaging: NodePaging) {\n    this.data = nodePaging;\n    this.totalResults = this.getNumberOfResults();\n  }\n\n  getNumberOfResults() {\n    if (this.data?.list?.pagination) {\n      return this.data.list.pagination.totalItems;\n    }\n    return 0;\n  }\n\n  onPaginationChanged(pagination: Pagination) {\n    this.librariesQueryBuilder.paging = {\n      maxItems: pagination.maxItems,\n      skipCount: pagination.skipCount\n    };\n    this.librariesQueryBuilder.update();\n  }\n\n  navigateTo(node: SiteEntry) {\n    if (node?.entry?.guid) {\n      this.store.dispatch(new NavigateLibraryAction(node.entry));\n    }\n  }\n\n  handleNodeClick(event: Event) {\n    this.navigateTo((event as CustomEvent).detail?.node);\n  }\n}\n","<aca-page-layout>\n  <div class=\"aca-page-layout-header\">\n    <aca-search-input />\n    <aca-toolbar class=\"aca-search-results__toolbar-actions\" [items]=\"actions\" />\n  </div>\n\n  <div class=\"aca-page-layout-content\">\n    <div class=\"aca-main-content\">\n      <div class=\"adf-search-results\">\n        <div class=\"adf-search-results__content\">\n          <mat-progress-bar *ngIf=\"isLoading\" mode=\"indeterminate\" />\n          <div class=\"adf-search-results__content-header aca-content-lib\" *ngIf=\"data?.list.entries.length\">\n            <div class=\"aca-content__side--left\">\n              <div class=\"adf-search-results--info-text\" *ngIf=\"totalResults !== 1\">\n                {{ 'APP.BROWSE.SEARCH_LIBRARIES.FOUND_RESULTS' | translate: { number: totalResults } }}\n              </div>\n              <div class=\"adf-search-results--info-text\" *ngIf=\"totalResults === 1\">\n                {{ 'APP.BROWSE.SEARCH_LIBRARIES.FOUND_ONE_RESULT' | translate: { number: totalResults } }}\n              </div>\n            </div>\n          </div>\n\n          <adf-document-list\n            #documentList\n            acaContextActions\n            acaDocumentList\n            [showHeader]=\"showHeader\"\n            [selectionMode]=\"'multiple'\"\n            [multiselect]=\"true\"\n            [sorting]=\"['name', 'asc']\"\n            [node]=\"data\"\n            [displayCheckboxesOnHover]=\"true\"\n            [imageResolver]=\"imageResolver\"\n            [isResizingEnabled]=\"true\"\n            [blurOnResize]=\"false\"\n            (node-dblclick)=\"handleNodeClick($event)\"\n            (name-click)=\"handleNodeClick($event)\"\n          >\n            <data-columns>\n              <ng-container *ngFor=\"let column of columns; trackBy: trackByColumnId\">\n                <ng-container *ngIf=\"column.template && !(column.desktopOnly && isSmallScreen)\">\n                  <data-column\n                    [id]=\"column.id\"\n                    [key]=\"column.key\"\n                    [title]=\"column.title\"\n                    [type]=\"column.type\"\n                    [format]=\"column.format\"\n                    [class]=\"column.class\"\n                    [sortable]=\"column.sortable\"\n                    [draggable]=\"column.draggable\"\n                    [resizable]=\"column.resizable\"\n                  >\n                    <ng-template let-context>\n                      <adf-dynamic-column [id]=\"column.template\" [context]=\"context\" />\n                    </ng-template>\n                  </data-column>\n                </ng-container>\n\n                <ng-container *ngIf=\"!column.template && !(column.desktopOnly && isSmallScreen)\">\n                  <data-column\n                    [id]=\"column.id\"\n                    [key]=\"column.key\"\n                    [title]=\"column.title\"\n                    [type]=\"column.type\"\n                    [format]=\"column.format\"\n                    [class]=\"column.class\"\n                    [sortable]=\"column.sortable\"\n                    [draggable]=\"column.draggable\"\n                    [resizable]=\"column.resizable\"\n                  />\n                </ng-container>\n              </ng-container>\n            </data-columns>\n\n            <adf-custom-empty-content-template>\n              <ng-container *ngIf=\"data\">\n                <div class=\"empty-search__block\" aria-live=\"polite\">\n                  <p class=\"empty-search__text\">\n                    {{ 'APP.BROWSE.SEARCH.NO_RESULTS' | translate }}\n                  </p>\n                </div>\n              </ng-container>\n            </adf-custom-empty-content-template>\n          </adf-document-list>\n\n          <adf-pagination *ngIf=\"totalResults > 0\" acaPagination [target]=\"documentList\" (change)=\"onPaginationChanged($event)\" />\n        </div>\n      </div>\n    </div>\n    <div class=\"aca-sidebar\" *ngIf=\"infoDrawerOpened$ | async\">\n      <aca-info-drawer [node]=\"selection.last\" />\n    </div>\n  </div>\n</aca-page-layout>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport {\n  ContentApiService,\n  ContextActionsDirective,\n  InfoDrawerComponent,\n  PageComponent,\n  PageLayoutComponent,\n  PaginationDirective,\n  ToolbarComponent\n} from '@alfresco/aca-shared';\nimport { Node, NodeEntry, PathElement, PathInfo } from '@alfresco/js-api';\nimport { Component, OnInit, ViewEncapsulation, inject } from '@angular/core';\nimport { debounceTime, map } from 'rxjs/operators';\nimport { DocumentListPresetRef, DynamicColumnComponent } from '@alfresco/adf-extensions';\nimport { CommonModule } from '@angular/common';\nimport {\n  CustomEmptyContentTemplateDirective,\n  DataColumnComponent,\n  DataColumnListComponent,\n  EmptyContentComponent,\n  PaginationComponent\n} from '@alfresco/adf-core';\nimport { DocumentListDirective } from '../../directives/document-list.directive';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { DocumentListComponent } from '@alfresco/adf-content-services';\n\n@Component({\n  imports: [\n    CommonModule,\n    DocumentListDirective,\n    ContextActionsDirective,\n    PaginationComponent,\n    PaginationDirective,\n    InfoDrawerComponent,\n    PageLayoutComponent,\n    TranslatePipe,\n    ToolbarComponent,\n    EmptyContentComponent,\n    DynamicColumnComponent,\n    DocumentListComponent,\n    DataColumnListComponent,\n    DataColumnComponent,\n    CustomEmptyContentTemplateDirective\n  ],\n  templateUrl: './favorites.component.html',\n  encapsulation: ViewEncapsulation.None,\n  selector: 'aca-favorites'\n})\nexport class FavoritesComponent extends PageComponent implements OnInit {\n  private readonly contentApi = inject(ContentApiService);\n\n  columns: DocumentListPresetRef[] = [];\n\n  ngOnInit() {\n    super.ngOnInit();\n\n    this.subscriptions = this.subscriptions.concat([\n      this.uploadService.fileUploadComplete.pipe(debounceTime(300)).subscribe(() => this.reloadWithoutResettingSelection()),\n      this.uploadService.fileUploadDeleted.pipe(debounceTime(300)).subscribe(() => this.reloadWithoutResettingSelection())\n    ]);\n\n    this.columns = this.extensions.documentListPresets.favorites;\n  }\n\n  navigate(favorite: Node) {\n    const { isFolder, id } = favorite;\n\n    // TODO: rework as it will fail on non-English setups\n    const isSitePath = (path: PathInfo): boolean => path?.elements?.some(({ name }: PathElement) => name === 'Sites');\n\n    if (isFolder) {\n      this.contentApi\n        .getNode(id)\n        .pipe(map((node) => node.entry))\n        .subscribe(({ path }: Node) => {\n          const routeUrl = isSitePath(path) ? '/libraries' : '/personal-files';\n          this.router.navigate([routeUrl, id]);\n        });\n    }\n  }\n\n  onNodeDoubleClick(node: NodeEntry) {\n    if (node?.entry) {\n      if (node.entry.isFolder) {\n        this.navigate(node.entry);\n      }\n\n      if (node.entry.isFile) {\n        this.showPreview(node, { location: this.router.url });\n      }\n    }\n  }\n\n  handleNodeClick(event: Event) {\n    this.onNodeDoubleClick((event as CustomEvent).detail?.node);\n  }\n}\n","<aca-page-layout>\n  <div class=\"aca-page-layout-header\">\n    <div class=\"aca-header-container\">\n      <h1 class=\"aca-page-title\">\n      {{ (selectedRowItemsCount < 1 ? 'APP.BROWSE.FAVORITES.TITLE' : 'APP.HEADER.SELECTED') | translate: { count: selectedRowItemsCount } }}\n    </h1>\n      <aca-toolbar [items]=\"actions\" />\n    </div>\n  </div>\n\n  <div class=\"aca-page-layout-content\">\n    <div class=\"aca-main-content\">\n      <adf-document-list\n        #documentList\n        acaDocumentList\n        acaContextActions\n        [currentFolderId]=\"'-favorites-'\"\n        [selectionMode]=\"'multiple'\"\n        [multiselect]=\"true\"\n        [navigate]=\"false\"\n        [sorting]=\"['modifiedAt', 'desc']\"\n        [preselectNodes]=\"selectedNodesState?.nodes\"\n        [sortingMode]=\"'client'\"\n        [imageResolver]=\"imageResolver\"\n        [displayCheckboxesOnHover]=\"true\"\n        (selectedItemsCountChanged)=\"onSelectedItemsCountChanged($event)\"\n        [isResizingEnabled]=\"true\"\n        [blurOnResize]=\"false\"\n        (node-dblclick)=\"handleNodeClick($event)\"\n        (name-click)=\"handleNodeClick($event)\"\n      >\n        <adf-custom-empty-content-template>\n          <adf-empty-content icon=\"star_rate\" [title]=\"'APP.BROWSE.FAVORITES.EMPTY_STATE.TITLE'\" subtitle=\"APP.BROWSE.FAVORITES.EMPTY_STATE.TEXT\" />\n        </adf-custom-empty-content-template>\n\n        <data-columns>\n          <ng-container *ngFor=\"let column of columns; trackBy: trackByColumnId\">\n            <ng-container *ngIf=\"column.template && !(column.desktopOnly && isSmallScreen)\">\n              <data-column\n                [id]=\"column.id\"\n                [key]=\"column.key\"\n                [title]=\"column.title\"\n                [draggable]=\"column.draggable\"\n                [resizable]=\"column.resizable\"\n                [type]=\"column.type\"\n                [format]=\"column.format\"\n                [class]=\"column.class\"\n                [sortable]=\"column.sortable\"\n                [isHidden]=\"column.isHidden\"\n                [sortingKey]=\"column.sortingKey || column.key\"\n              >\n                <ng-template let-context>\n                  <adf-dynamic-column [id]=\"column.template\" [context]=\"context\" />\n                </ng-template>\n              </data-column>\n            </ng-container>\n\n            <ng-container *ngIf=\"!column.template && !(column.desktopOnly && isSmallScreen)\">\n              <data-column\n                [id]=\"column.id\"\n                [key]=\"column.key\"\n                [title]=\"column.title\"\n                [type]=\"column.type\"\n                [draggable]=\"column.draggable\"\n                [resizable]=\"column.resizable\"\n                [format]=\"column.format\"\n                [class]=\"column.class\"\n                [sortable]=\"column.sortable\"\n                [isHidden]=\"column.isHidden\"\n                [sortingKey]=\"column.sortingKey || column.key\"\n              />\n            </ng-container>\n          </ng-container>\n        </data-columns>\n      </adf-document-list>\n\n      <adf-pagination acaPagination [target]=\"documentList\" />\n    </div>\n\n    <div class=\"aca-sidebar\" *ngIf=\"infoDrawerOpened$ | async\">\n      <aca-info-drawer [node]=\"selection.last\" />\n    </div>\n  </div>\n</aca-page-layout>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, OnInit, ViewEncapsulation } from '@angular/core';\nimport { NodeEntry } from '@alfresco/js-api';\nimport { debounceTime } from 'rxjs/operators';\nimport {\n  ContextActionsDirective,\n  InfoDrawerComponent,\n  PageComponent,\n  PageLayoutComponent,\n  PaginationDirective,\n  ToolbarComponent\n} from '@alfresco/aca-shared';\nimport { DocumentListPresetRef, DynamicColumnComponent } from '@alfresco/adf-extensions';\nimport { CommonModule } from '@angular/common';\nimport {\n  CustomEmptyContentTemplateDirective,\n  DataColumnComponent,\n  DataColumnListComponent,\n  EmptyContentComponent,\n  PaginationComponent\n} from '@alfresco/adf-core';\nimport { DocumentListDirective } from '../../directives/document-list.directive';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { DocumentListComponent } from '@alfresco/adf-content-services';\n\n@Component({\n  imports: [\n    CommonModule,\n    DocumentListDirective,\n    ContextActionsDirective,\n    PaginationComponent,\n    PaginationDirective,\n    InfoDrawerComponent,\n    PageLayoutComponent,\n    TranslatePipe,\n    ToolbarComponent,\n    EmptyContentComponent,\n    DynamicColumnComponent,\n    DocumentListComponent,\n    CustomEmptyContentTemplateDirective,\n    DataColumnComponent,\n    DataColumnListComponent\n  ],\n  templateUrl: './recent-files.component.html',\n  encapsulation: ViewEncapsulation.None,\n  selector: 'aca-recent-files'\n})\nexport class RecentFilesComponent extends PageComponent implements OnInit {\n  columns: DocumentListPresetRef[] = [];\n\n  ngOnInit() {\n    super.ngOnInit();\n\n    this.subscriptions = this.subscriptions.concat([\n      this.uploadService.fileUploadComplete.pipe(debounceTime(300)).subscribe(() => this.reloadWithoutResettingSelection()),\n      this.uploadService.fileUploadDeleted.pipe(debounceTime(300)).subscribe(() => this.reloadWithoutResettingSelection())\n    ]);\n\n    this.columns = this.extensions.documentListPresets.recent || [];\n  }\n\n  onNodeDoubleClick(node: NodeEntry) {\n    if (node?.entry) {\n      this.showPreview(node, { location: this.router.url });\n    }\n  }\n\n  handleNodeClick(event: Event) {\n    this.onNodeDoubleClick((event as CustomEvent).detail?.node);\n  }\n}\n","<aca-page-layout>\n  <div class=\"aca-page-layout-header\">\n    <div class=\"aca-header-container\">\n      <h1 class=\"aca-page-title\">\n      {{ (selectedRowItemsCount < 1 ? 'APP.BROWSE.RECENT.TITLE' : 'APP.HEADER.SELECTED') | translate: { count: selectedRowItemsCount } }}\n    </h1>\n      <aca-toolbar [items]=\"actions\" />\n    </div>\n  </div>\n\n  <div class=\"aca-page-layout-content\">\n    <div class=\"aca-main-content\">\n      <adf-document-list\n        #documentList\n        acaDocumentList\n        acaContextActions\n        [currentFolderId]=\"'-recent-'\"\n        [selectionMode]=\"'multiple'\"\n        [multiselect]=\"true\"\n        [navigate]=\"false\"\n        [sorting]=\"['modifiedAt', 'desc']\"\n        [preselectNodes]=\"selectedNodesState?.nodes\"\n        [sortingMode]=\"'client'\"\n        [imageResolver]=\"imageResolver\"\n        [isResizingEnabled]=\"true\"\n        [displayCheckboxesOnHover]=\"true\"\n        (selectedItemsCountChanged)=\"onSelectedItemsCountChanged($event)\"\n        [blurOnResize]=\"false\"\n        (node-dblclick)=\"handleNodeClick($event)\"\n        (name-click)=\"handleNodeClick($event)\"\n      >\n        <adf-custom-empty-content-template>\n          <adf-empty-content icon=\"access_time\" [title]=\"'APP.BROWSE.RECENT.EMPTY_STATE.TITLE'\" subtitle=\"APP.BROWSE.RECENT.EMPTY_STATE.TEXT\" />\n        </adf-custom-empty-content-template>\n\n        <data-columns>\n          <ng-container *ngFor=\"let column of columns; trackBy: trackByColumnId\">\n            <ng-container *ngIf=\"column.template && !(column.desktopOnly && isSmallScreen)\">\n              <data-column\n                [id]=\"column.id\"\n                [key]=\"column.key\"\n                [title]=\"column.title\"\n                [type]=\"column.type\"\n                [format]=\"column.format\"\n                [class]=\"column.class\"\n                [sortable]=\"column.sortable\"\n                [draggable]=\"column.draggable\"\n                [resizable]=\"column.resizable\"\n                [isHidden]=\"column.isHidden\"\n                [sortingKey]=\"column.sortingKey || column.key\"\n              >\n                <ng-template let-context>\n                  <adf-dynamic-column [id]=\"column.template\" [context]=\"context\" />\n                </ng-template>\n              </data-column>\n            </ng-container>\n\n            <ng-container *ngIf=\"!column.template && !(column.desktopOnly && isSmallScreen)\">\n              <data-column\n                [id]=\"column.id\"\n                [key]=\"column.key\"\n                [title]=\"column.title\"\n                [type]=\"column.type\"\n                [format]=\"column.format\"\n                [class]=\"column.class\"\n                [sortable]=\"column.sortable\"\n                [isHidden]=\"column.isHidden\"\n                [draggable]=\"column.draggable\"\n                [resizable]=\"column.resizable\"\n                [sortingKey]=\"column.sortingKey || column.key\"\n              />\n            </ng-container>\n          </ng-container>\n        </data-columns>\n      </adf-document-list>\n\n      <adf-pagination acaPagination [target]=\"documentList\" />\n    </div>\n\n    <div class=\"aca-sidebar\" *ngIf=\"infoDrawerOpened$ | async\">\n      <aca-info-drawer [node]=\"selection.last\" />\n    </div>\n  </div>\n</aca-page-layout>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, OnInit, ViewEncapsulation, inject } from '@angular/core';\nimport { debounceTime } from 'rxjs/operators';\nimport { NodeEntry } from '@alfresco/js-api';\nimport {\n  AppHookService,\n  ContextActionsDirective,\n  InfoDrawerComponent,\n  PageComponent,\n  PageLayoutComponent,\n  PaginationDirective,\n  ToolbarComponent\n} from '@alfresco/aca-shared';\nimport { DocumentListPresetRef, DynamicColumnComponent } from '@alfresco/adf-extensions';\nimport { CommonModule } from '@angular/common';\nimport {\n  CustomEmptyContentTemplateDirective,\n  DataColumnComponent,\n  DataColumnListComponent,\n  EmptyContentComponent,\n  PaginationComponent\n} from '@alfresco/adf-core';\nimport { DocumentListDirective } from '../../directives/document-list.directive';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { DocumentListComponent } from '@alfresco/adf-content-services';\n\n@Component({\n  imports: [\n    CommonModule,\n    DocumentListDirective,\n    ContextActionsDirective,\n    PaginationComponent,\n    InfoDrawerComponent,\n    PaginationDirective,\n    PageLayoutComponent,\n    TranslatePipe,\n    ToolbarComponent,\n    EmptyContentComponent,\n    DynamicColumnComponent,\n    DocumentListComponent,\n    CustomEmptyContentTemplateDirective,\n    DataColumnComponent,\n    DataColumnListComponent\n  ],\n  templateUrl: './shared-files.component.html',\n  encapsulation: ViewEncapsulation.None,\n  selector: 'aca-shared-files'\n})\nexport class SharedFilesComponent extends PageComponent implements OnInit {\n  private readonly appHookService = inject(AppHookService);\n\n  columns: DocumentListPresetRef[] = [];\n\n  ngOnInit() {\n    super.ngOnInit();\n\n    this.subscriptions = this.subscriptions.concat([\n      this.appHookService.linksUnshared.pipe(debounceTime(300)).subscribe(() => this.reload()),\n      this.uploadService.fileUploadComplete.pipe(debounceTime(300)).subscribe(() => this.reloadWithoutResettingSelection()),\n      this.uploadService.fileUploadDeleted.pipe(debounceTime(300)).subscribe(() => this.reloadWithoutResettingSelection())\n    ]);\n\n    this.columns = this.extensions.documentListPresets.shared || [];\n  }\n\n  preview(node: NodeEntry) {\n    this.showPreview(node, { location: this.router.url });\n  }\n\n  handleNodeClick(event: Event) {\n    this.preview((event as CustomEvent).detail?.node);\n  }\n}\n","<aca-page-layout>\n  <div class=\"aca-page-layout-header\">\n    <div class=\"aca-header-container\">\n      <h1 class=\"aca-page-title\">\n      {{ (selectedRowItemsCount < 1 ? 'APP.BROWSE.SHARED.TITLE' : 'APP.HEADER.SELECTED') | translate: { count: selectedRowItemsCount } }}\n    </h1>\n\n      <aca-toolbar [items]=\"actions\" />\n    </div>\n  </div>\n\n  <div class=\"aca-page-layout-content\">\n    <div class=\"aca-main-content\">\n      <adf-document-list\n        #documentList\n        acaDocumentList\n        acaContextActions\n        [currentFolderId]=\"'-sharedlinks-'\"\n        [selectionMode]=\"'multiple'\"\n        [multiselect]=\"true\"\n        [sorting]=\"['modifiedAt', 'desc']\"\n        [imageResolver]=\"imageResolver\"\n        [preselectNodes]=\"selectedNodesState?.nodes\"\n        [sortingMode]=\"'client'\"\n        [isResizingEnabled]=\"true\"\n        [displayCheckboxesOnHover]=\"true\"\n        (selectedItemsCountChanged)=\"onSelectedItemsCountChanged($event)\"\n        [blurOnResize]=\"false\"\n        (node-dblclick)=\"handleNodeClick($event)\"\n        (name-click)=\"handleNodeClick($event)\"\n      >\n        <adf-custom-empty-content-template>\n          <adf-empty-content icon=\"people\" [title]=\"'APP.BROWSE.SHARED.EMPTY_STATE.TITLE'\" subtitle=\"APP.BROWSE.SHARED.EMPTY_STATE.TEXT\" />\n        </adf-custom-empty-content-template>\n\n        <data-columns>\n          <ng-container *ngFor=\"let column of columns; trackBy: trackByColumnId\">\n            <ng-container *ngIf=\"column.template && !(column.desktopOnly && isSmallScreen)\">\n              <data-column\n                [id]=\"column.id\"\n                [key]=\"column.key\"\n                [title]=\"column.title\"\n                [type]=\"column.type\"\n                [format]=\"column.format\"\n                [class]=\"column.class\"\n                [sortable]=\"column.sortable\"\n                [isHidden]=\"column.isHidden\"\n                [draggable]=\"column.draggable\"\n                [resizable]=\"column.resizable\"\n                [sortingKey]=\"column.sortingKey || column.key\"\n              >\n                <ng-template let-context>\n                  <adf-dynamic-column [id]=\"column.template\" [context]=\"context\" />\n                </ng-template>\n              </data-column>\n            </ng-container>\n\n            <ng-container *ngIf=\"!column.template && !(column.desktopOnly && isSmallScreen)\">\n              <data-column\n                [id]=\"column.id\"\n                [draggable]=\"column.draggable\"\n                [resizable]=\"column.resizable\"\n                [key]=\"column.key\"\n                [title]=\"column.title\"\n                [type]=\"column.type\"\n                [format]=\"column.format\"\n                [class]=\"column.class\"\n                [sortable]=\"column.sortable\"\n                [isHidden]=\"column.isHidden\"\n                [sortingKey]=\"column.sortingKey || column.key\"\n              />\n            </ng-container>\n          </ng-container>\n        </data-columns>\n      </adf-document-list>\n\n      <adf-pagination acaPagination [target]=\"documentList\" />\n    </div>\n\n    <div class=\"aca-sidebar\" *ngIf=\"infoDrawerOpened$ | async\">\n      <aca-info-drawer [node]=\"selection.last\" />\n    </div>\n  </div>\n</aca-page-layout>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, OnDestroy, OnInit, ViewEncapsulation, inject } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { AppHookService, ContentApiService, PageComponent, PageLayoutComponent, ToolbarComponent } from '@alfresco/aca-shared';\nimport { NavigateToFolder, NavigateToPreviousPage, SetSelectedNodesAction } from '@alfresco/aca-shared/store';\nimport { BreadcrumbComponent, ContentService, NodesApiService, PermissionListComponent } from '@alfresco/adf-content-services';\nimport { CommonModule, Location } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MetadataTabComponent } from '../info-drawer/metadata-tab/metadata-tab.component';\nimport { CommentsTabComponent } from '../info-drawer/comments-tab/comments-tab.component';\nimport { NodeEntry, PathElement } from '@alfresco/js-api';\nimport { first } from 'rxjs/operators';\nimport { ContentActionRef } from '@alfresco/adf-extensions';\nimport { InfoDrawerButtonsDirective } from '@alfresco/adf-core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n  imports: [\n    CommonModule,\n    TranslatePipe,\n    MatIconModule,\n    MatTabsModule,\n    MatProgressBarModule,\n    MatButtonModule,\n    MetadataTabComponent,\n    CommentsTabComponent,\n    PageLayoutComponent,\n    ToolbarComponent,\n    InfoDrawerButtonsDirective,\n    PermissionListComponent,\n    BreadcrumbComponent\n  ],\n  selector: 'app-details-manager',\n  templateUrl: './details.component.html',\n  styleUrls: ['./details.component.scss'],\n  encapsulation: ViewEncapsulation.None\n})\nexport class DetailsComponent extends PageComponent implements OnInit, OnDestroy {\n  private readonly route = inject(ActivatedRoute);\n  private readonly contentApi = inject(ContentApiService);\n  private readonly contentService = inject(ContentService);\n  private readonly nodesApiService = inject(NodesApiService);\n  private readonly appHookService = inject(AppHookService);\n  private readonly location = inject(Location);\n\n  nodeId: string;\n  isLoading: boolean;\n  activeTab = 1;\n  aspectActions: Array<ContentActionRef> = [];\n  nodeIcon: string;\n  canManagePermissions = true;\n\n  ngOnInit(): void {\n    super.ngOnInit();\n    this.isLoading = true;\n    const { route } = this;\n    const { data } = route.snapshot;\n    this.title = data.title;\n    this.nodesApiService.nodeUpdated.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((node) => (this.node = { ...node }));\n    this.appHookService.nodesDeleted.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.location.back());\n    this.route.params.subscribe((params) => {\n      this.isLoading = true;\n      this.setActiveTab(params.activeTab);\n      this.nodeId = params.nodeId;\n      this.contentApi.getNode(this.nodeId).subscribe((node) => {\n        this.node = node.entry;\n        this.isLoading = false;\n        this.canManagePermissions = !this.isSmartFolder();\n        this.setActiveTab(params.activeTab);\n        this.store.dispatch(new SetSelectedNodesAction([{ entry: this.node }]));\n        this.nodeIcon = this.contentService.getNodeIcon(this.node);\n      });\n    });\n    this.extensions\n      .getAllowedSidebarActions()\n      .pipe(first())\n      .subscribe((aspectActions) => {\n        this.aspectActions = aspectActions;\n      });\n  }\n\n  setActiveTab(tabName: string) {\n    switch (tabName) {\n      case 'comments':\n        this.activeTab = 1;\n        break;\n      case 'permissions':\n        if (!this.canManagePermissions) {\n          this.activeTab = 0;\n          break;\n        }\n        this.activeTab = 2;\n        break;\n      case 'metadata':\n      default:\n        this.activeTab = 0;\n    }\n  }\n\n  goBack() {\n    this.store.dispatch(new NavigateToPreviousPage());\n  }\n\n  onBreadcrumbNavigate(path: PathElement) {\n    this.store.dispatch(new NavigateToFolder({ entry: path } as NodeEntry));\n  }\n\n  ngOnDestroy(): void {\n    this.store.dispatch(new SetSelectedNodesAction([]));\n    super.ngOnDestroy();\n  }\n\n  private isSmartFolder(): boolean {\n    if (!this.node?.isFolder) {\n      return false;\n    }\n    const nodeAspects = this.node.aspectNames ?? [];\n    return nodeAspects.includes('smf:customConfigSmartFolder') || nodeAspects.includes('smf:systemConfigSmartFolder');\n  }\n}\n","<aca-page-layout>\n  <div class=\"aca-page-layout-header\">\n    <adf-breadcrumb [root]=\"title\" [folderNode]=\"node\" (navigate)=\"onBreadcrumbNavigate($event)\" />\n    <aca-toolbar [items]=\"actions\" />\n  </div>\n\n  <div class=\"aca-page-layout-content\">\n    <div class=\"aca-details-container\">\n      <div class=\"aca-details-title\">\n        <div class=\"aca-details-breadcrumb\" role=\"heading\" aria-level=\"2\" *ngIf=\"node\">\n          <span class=\"aca-details-breadcrumb-library\">\n            <img class=\"aca-details-breadcrumb-icon\" alt=\"{{ 'APP.INFO_DRAWER.ICON' | translate }}\" src=\"{{ nodeIcon }}\">\n            {{ node.name }} </span>\n        </div>\n        <div class=\"aca-details-buttons\">\n          <aca-toolbar [items]=\"aspectActions\" info-drawer-buttons />\n          <button\n                class=\"aca-close-details-button\"\n                mat-icon-button\n                data-automation-id=\"close-library\"\n                title=\"{{ 'APP.INFO_DRAWER.REDUCE_PANEL' | translate }}\"\n                (click)=\"goBack()\">\n                <mat-icon>fullscreen_exit</mat-icon>\n          </button>\n        </div>\n      </div>\n\n      <mat-tab-group [selectedIndex]=\"activeTab\" class=\"aca-details-tabs\" animationDuration=\"0\" mat-stretch-tabs=\"false\" mat-align-tabs=\"start\">\n        <mat-tab label=\"{{ 'APP.INFO_DRAWER.TABS.PROPERTIES' | translate }}\">\n          <ng-template matTabContent>\n            <app-metadata-tab *ngIf=\"node && !isLoading; else loading\" [node]=\"node\" />\n          </ng-template>\n        </mat-tab>\n        <mat-tab label=\"{{ 'APP.INFO_DRAWER.TABS.COMMENTS' | translate }}\">\n          <ng-template matTabContent>\n            <app-comments-tab *ngIf=\"node && !isLoading; else loading\" [node]=\"node\" />\n          </ng-template>\n        </mat-tab>\n        <mat-tab [disabled]=\"!canManagePermissions\" label=\"{{ 'APP.INFO_DRAWER.TABS.PERMISSIONS' | translate }}\">\n          <ng-template matTabContent>\n            <adf-permission-list *ngIf=\"node && !isLoading; else loading\" [nodeId]=\"node.id\" />\n          </ng-template>\n        </mat-tab>\n      </mat-tab-group>\n    </div>\n  </div>\n</aca-page-layout>\n\n<ng-template #loading>\n  <mat-progress-bar mode=\"indeterminate\" />\n</ng-template>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AppSettingsService } from '@alfresco/aca-shared';\n\n@Component({\n  standalone: true,\n  template: '',\n  encapsulation: ViewEncapsulation.None\n})\nexport class HomeComponent implements OnInit {\n  private readonly appSettings = inject(AppSettingsService);\n  private readonly router = inject(Router);\n\n  ngOnInit() {\n    this.router.navigateByUrl(this.appSettings.landingPage);\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { AlfrescoApiService } from '@alfresco/adf-content-services';\nimport { PeopleApi, Person, LazyApi } from '@alfresco/js-api';\nimport { Component, OnInit, ViewEncapsulation, inject } from '@angular/core';\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { Observable, take, throwError } from 'rxjs';\nimport { AppExtensionService, AppService, UserProfileSection } from '@alfresco/aca-shared';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DynamicExtensionComponent } from '@alfresco/adf-extensions';\nimport { MatInputModule } from '@angular/material/input';\n\n@Component({\n  imports: [\n    CommonModule,\n    TranslatePipe,\n    ReactiveFormsModule,\n    MatButtonModule,\n    MatIconModule,\n    MatDividerModule,\n    MatFormFieldModule,\n    MatInputModule,\n    DynamicExtensionComponent\n  ],\n  selector: 'app-view-profile',\n  templateUrl: './view-profile.component.html',\n  styleUrls: ['./view-profile.component.scss'],\n  encapsulation: ViewEncapsulation.None\n})\nexport class ViewProfileComponent implements OnInit {\n  private readonly router = inject(Router);\n  private readonly apiService = inject(AlfrescoApiService);\n  private readonly appService = inject(AppService);\n  private readonly extensionService = inject(AppExtensionService);\n\n  @LazyApi((self: ViewProfileComponent) => new PeopleApi(self.apiService.getInstance()))\n  declare peopleApi: PeopleApi;\n  profileForm = new FormGroup({\n    firstName: new FormControl(''),\n    lastName: new FormControl(''),\n    jobTitle: new FormControl(''),\n    location: new FormControl(''),\n    telephone: new FormControl('', [Validators.pattern('^([0-9]+-)*[0-9]+$')]),\n    mobile: new FormControl('', [Validators.pattern('^([0-9]+-)*[0-9]+$')]),\n    companyName: new FormControl(''),\n    companyPostCode: new FormControl(''),\n    companyAddress: new FormControl(''),\n    companyTelephone: new FormControl('', [Validators.pattern('^([0-9]+-)*[0-9]+$')]),\n    companyEmail: new FormControl('', [Validators.email])\n  });\n  personDetails: Person;\n  generalSectionExpanded = true;\n  generalSectionEditMode = false;\n  contactSectionExpanded = false;\n  contactSectionEditMode = false;\n  appNavNarMode$: Observable<'collapsed' | 'expanded'>;\n  sections: UserProfileSection[] = [];\n\n  get generalSectionButtonTooltip(): string {\n    return `APP.TOOLTIPS.${this.generalSectionExpanded ? 'COLLAPSE' : 'EXPAND'}_SECTION`;\n  }\n\n  get contactSectionButtonTooltip(): string {\n    return `APP.TOOLTIPS.${this.contactSectionExpanded ? 'COLLAPSE' : 'EXPAND'}_SECTION`;\n  }\n\n  constructor() {\n    const appService = this.appService;\n\n    this.appNavNarMode$ = appService.appNavNarMode$.pipe(takeUntilDestroyed());\n  }\n\n  ngOnInit() {\n    this.populateForm(this.personDetails);\n    this.peopleApi\n      .getPerson('-me-')\n      .then((userInfo) => {\n        this.personDetails = userInfo?.entry;\n        this.populateForm(userInfo?.entry);\n      })\n      .catch((error) => {\n        throwError(error);\n      });\n\n    this.extensionService\n      .getUserProfileSections()\n      .pipe(take(1))\n      .subscribe((sections) => (this.sections = sections));\n  }\n\n  toggleNavigationMenu() {\n    this.appService.toggleAppNavBar$.next();\n  }\n\n  populateForm(userInfo: Person) {\n    this.profileForm.setValue({\n      firstName: userInfo?.firstName || '',\n      lastName: userInfo?.lastName || '',\n      jobTitle: userInfo?.jobTitle || '',\n      location: userInfo?.location || '',\n      telephone: userInfo?.telephone || '',\n      mobile: userInfo?.mobile || '',\n      companyName: userInfo?.company?.organization || '',\n      companyPostCode: userInfo?.company?.postcode || '',\n      companyAddress: userInfo?.company?.address1 || '',\n      companyTelephone: userInfo?.company?.telephone || '',\n      companyEmail: userInfo?.company?.email || ''\n    });\n  }\n\n  navigateToPersonalFiles() {\n    this.router.navigate(['/personal-files'], {\n      replaceUrl: true\n    });\n  }\n\n  toggleGeneralSection() {\n    this.generalSectionExpanded = !this.generalSectionExpanded;\n  }\n\n  toggleGeneralSectionEditMode() {\n    this.generalSectionEditMode = !this.generalSectionEditMode;\n\n    if (this.generalSectionEditMode) {\n      this.generalSectionExpanded = true;\n    }\n  }\n\n  onSaveGeneralData(event) {\n    this.generalSectionEditMode = false;\n    this.updatePersonDetails(event);\n  }\n\n  onSaveCompanyData(event) {\n    this.contactSectionEditMode = false;\n    this.updatePersonDetails(event);\n  }\n\n  toggleContactSection() {\n    this.contactSectionExpanded = !this.contactSectionExpanded;\n  }\n\n  toggleContactSectionEditMode() {\n    this.contactSectionEditMode = !this.contactSectionEditMode;\n\n    if (this.contactSectionEditMode) {\n      this.contactSectionExpanded = true;\n    }\n  }\n\n  updatePersonDetails(event) {\n    if (this.profileForm.valid) {\n      this.peopleApi\n        .updatePerson('-me-', {\n          jobTitle: event.value.jobTitle,\n          location: event.value.location,\n          telephone: event.value.telephone,\n          mobile: event.value.mobile,\n          company: {\n            organization: event.value.companyName,\n            postcode: event.value.companyPostCode,\n            address1: event.value.companyAddress,\n            telephone: event.value.companyTelephone,\n            email: event.value.companyEmail\n          }\n        })\n        .then((person) => {\n          this.personDetails = person?.entry;\n          this.populateForm(person?.entry);\n        })\n        .catch((error) => {\n          this.populateForm(this.personDetails);\n          throwError(error);\n        });\n    } else {\n      this.populateForm(this.personDetails);\n    }\n  }\n\n  isSaveButtonDisabled(): boolean {\n    return this.profileForm.invalid;\n  }\n}\n","<div class=\"app-profile-container\">\n  <div class=\"app-profile-row\">\n    <div class=\"app-profile-title\">\n      @if ((appNavNarMode$ | async) === 'collapsed') {\n        <button\n          mat-icon-button\n          (click)=\"toggleNavigationMenu()\"\n          [attr.title]=\"'APP.TOOLTIPS.EXPAND_NAVIGATION' | translate\"\n          [attr.aria-label]=\"'APP.TOOLTIPS.EXPAND_NAVIGATION' | translate\">\n          <mat-icon>menu</mat-icon>\n        </button>\n      }\n      <button\n        class=\"app-profile-icon\"\n        mat-icon-button\n        (click)=\"navigateToPersonalFiles()\"\n        [attr.aria-label]=\"'APP.EDIT_PROFILE.GO_TO_PERSONAL_FILES_BUTTON_LABEL' | translate\"\n        [attr.title]=\"'APP.EDIT_PROFILE.GO_TO_PERSONAL_FILES_BUTTON_LABEL' | translate\">\n        <mat-icon>arrow_back</mat-icon>\n      </button>\n      <h2 class=\"app-profile\">{{'APP.EDIT_PROFILE.MY_PROFILE' | translate}}</h2>\n    </div>\n  </div>\n  <div class=\"app-profile-general-row\" [formGroup]=\"profileForm\" id=\"general-dropdown\">\n    <div class=\"app-profile-general\">\n      <div class=\"app-profile-general-section\">\n        <button\n          mat-icon-button\n          (click)=\"toggleGeneralSection()\"\n          [attr.title]=\"generalSectionButtonTooltip | translate\"\n          [attr.aria-label]=\"generalSectionButtonTooltip | translate\">\n          <mat-icon>{{ generalSectionExpanded ?  'expand_more' : 'chevron_right'}}</mat-icon>\n        </button>\n        <h3 class=\"app-general-title\">{{'APP.EDIT_PROFILE.GENERAL' | translate}}</h3>\n      </div>\n      @if (!generalSectionEditMode) {\n        <button\n          mat-icon-button\n          (click)=\"toggleGeneralSectionEditMode()\"\n          class=\"app-general-edit\"\n          [attr.title]=\"'APP.TOOLTIPS.EDIT' | translate\"\n          [attr.aria-label]=\"'APP.TOOLTIPS.EDIT' | translate\">\n          <mat-icon>edit</mat-icon>\n        </button>\n      } @else {\n        <button\n          mat-icon-button\n          class=\"app-general-cancel-btn\"\n          [attr.title]=\"'APP.TOOLTIPS.CANCEL' | translate\"\n          [attr.aria-label]=\"'APP.TOOLTIPS.CANCEL' | translate\"\n          (click)=\"toggleGeneralSectionEditMode()\">\n          <mat-icon>close</mat-icon>\n        </button>\n        <button\n          mat-icon-button\n          class=\"app-general-save-btn\"\n          [attr.title]=\"'APP.TOOLTIPS.SAVE' | translate\"\n          [attr.aria-label]=\"'APP.TOOLTIPS.SAVE' | translate\"\n          [disabled]=\"profileForm.invalid\"\n          (click)=\"onSaveGeneralData(profileForm)\">\n          <mat-icon>check</mat-icon>\n        </button>\n      }\n    </div>\n    @if (generalSectionExpanded) {\n      <mat-divider class=\"app-divider\" aria-hidden=\"true\" />\n      <div class=\"app-general-dropdown\">\n        <mat-form-field class=\"app-form-field\">\n          <mat-label>{{ 'APP.EDIT_PROFILE.FIRST_NAME' | translate }}</mat-label>\n          <input\n            matInput\n            readonly\n            placeholder=\"{{ 'APP.EDIT_PROFILE.FIRST_NAME' | translate }}\"\n            formControlName=\"firstName\"\n          />\n        </mat-form-field>\n\n        <mat-form-field class=\"app-form-field\">\n          <mat-label>{{ 'APP.EDIT_PROFILE.LAST_NAME' | translate }}</mat-label>\n          <input\n            matInput\n            readonly\n            placeholder=\"{{ 'APP.EDIT_PROFILE.LAST_NAME' | translate }}\"\n            formControlName=\"lastName\"\n          />\n        </mat-form-field>\n\n        <mat-form-field class=\"app-form-field\">\n          <mat-label>{{ 'APP.EDIT_PROFILE.JOB_TITLE' | translate }}</mat-label>\n          <input\n            matInput\n            [readonly]=\"!generalSectionEditMode\"\n            placeholder=\"{{ 'APP.EDIT_PROFILE.JOB_TITLE' | translate }}\"\n            formControlName=\"jobTitle\"\n          />\n        </mat-form-field>\n\n        <mat-form-field class=\"app-form-field\">\n          <mat-label>{{ 'APP.EDIT_PROFILE.LOCATION' | translate }}</mat-label>\n          <input\n            matInput\n            [readonly]=\"!generalSectionEditMode\"\n            placeholder=\"{{ 'APP.EDIT_PROFILE.LOCATION' | translate }}\"\n            formControlName=\"location\"\n          />\n        </mat-form-field>\n\n        <mat-form-field class=\"app-form-field\">\n          <mat-label>{{ 'APP.EDIT_PROFILE.TELEPHONE' | translate }}</mat-label>\n          <input\n            matInput\n            [type]=\"'tel'\"\n            [readonly]=\"!generalSectionEditMode\"\n            placeholder=\"{{ 'APP.EDIT_PROFILE.TELEPHONE' | translate }}\"\n            formControlName=\"telephone\"\n          />\n          <mat-error>\n            {{ 'APP.EDIT_PROFILE.INVALID_PHONE_FORMAT' | translate }}\n          </mat-error>\n        </mat-form-field>\n\n        <mat-form-field class=\"app-form-field\">\n          <mat-label>{{ 'APP.EDIT_PROFILE.MOBILE' | translate }}</mat-label>\n          <input\n            matInput\n            [type]=\"'tel'\"\n            [readonly]=\"!generalSectionEditMode\"\n            placeholder=\"{{ 'APP.EDIT_PROFILE.MOBILE' | translate }}\"\n            formControlName=\"mobile\"\n          />\n          <mat-error>\n            {{ 'APP.EDIT_PROFILE.INVALID_PHONE_FORMAT' | translate }}\n          </mat-error>\n        </mat-form-field>\n      </div>\n    }\n  </div>\n\n  <div class=\"app-profile-contact-row\" [formGroup]=\"profileForm\" id=\"contact-dropdown\">\n    <div class=\"app-profile-general profile-general-bottom-radius\">\n      <div class=\"app-profile-general-section\">\n         <button\n          mat-icon-button\n          (click)=\"toggleContactSection()\"\n          [attr.title]=\"contactSectionButtonTooltip | translate\"\n          [attr.aria-label]=\"contactSectionButtonTooltip | translate\">\n          <mat-icon>{{ contactSectionExpanded ?  'expand_more' : 'chevron_right'}}</mat-icon>\n        </button>\n        <h3 class=\"app-general-title\">{{'APP.EDIT_PROFILE.COMPANY_DETAILS' | translate}}</h3>\n      </div>\n      @if (!contactSectionEditMode) {\n        <button\n          mat-icon-button\n          (click)=\"toggleContactSectionEditMode()\"\n          class=\"app-general-edit\"\n          [attr.title]=\"'APP.TOOLTIPS.EDIT' | translate\"\n          [attr.aria-label]=\"'APP.TOOLTIPS.EDIT' | translate\">\n          <mat-icon>edit</mat-icon>\n        </button>\n      } @else {\n        <button\n          mat-icon-button\n          class=\"app-general-cancel-btn\"\n          [attr.title]=\"'APP.TOOLTIPS.CANCEL' | translate\"\n          [attr.aria-label]=\"'APP.TOOLTIPS.CANCEL' | translate\"\n          (click)=\"toggleContactSectionEditMode()\">\n          <mat-icon>close</mat-icon>\n        </button>\n        <button\n          mat-icon-button\n          class=\"app-general-save-btn\"\n          [attr.title]=\"'APP.TOOLTIPS.SAVE' | translate\"\n          [attr.aria-label]=\"'APP.TOOLTIPS.SAVE' | translate\"\n          [disabled]=\"profileForm.invalid\"\n          (click)=\"onSaveCompanyData(profileForm)\">\n          <mat-icon>check</mat-icon>\n        </button>\n      }\n    </div>\n    @if (contactSectionExpanded) {\n      <mat-divider class=\"app-divider\" aria-hidden=\"true\" />\n      <div class=\"app-general-dropdown\">\n        <mat-form-field class=\"app-form-field\">\n          <mat-label>{{ 'APP.EDIT_PROFILE.NAME' | translate }}</mat-label>\n          <input\n            matInput\n            [readonly]=\"!contactSectionEditMode\"\n            placeholder=\"{{ 'APP.EDIT_PROFILE.NAME' | translate }}\"\n            formControlName=\"companyName\"\n          />\n        </mat-form-field>\n\n        <mat-form-field class=\"app-form-field\">\n          <mat-label>{{ 'APP.EDIT_PROFILE.ADDRESS' | translate }}</mat-label>\n          <input\n            matInput\n            [readonly]=\"!contactSectionEditMode\"\n            placeholder=\"{{ 'APP.EDIT_PROFILE.ADDRESS' | translate }}\"\n            formControlName=\"companyAddress\"\n          />\n        </mat-form-field>\n\n        <mat-form-field class=\"app-form-field\">\n          <mat-label>{{ 'APP.EDIT_PROFILE.POSTCODE' | translate }}</mat-label>\n          <input\n            matInput\n            [readonly]=\"!contactSectionEditMode\"\n            placeholder=\"{{ 'APP.EDIT_PROFILE.POSTCODE' | translate }}\"\n            formControlName=\"companyPostCode\"\n          />\n        </mat-form-field>\n\n        <mat-form-field class=\"app-form-field\">\n          <mat-label>{{ 'APP.EDIT_PROFILE.TELEPHONE' | translate }}</mat-label>\n          <input\n            matInput\n            [readonly]=\"!contactSectionEditMode\"\n            placeholder=\"{{ 'APP.EDIT_PROFILE.TELEPHONE' | translate }}\"\n            formControlName=\"companyTelephone\"\n          />\n          <mat-error>\n            {{ 'APP.EDIT_PROFILE.INVALID_PHONE_FORMAT' | translate }}\n          </mat-error>\n        </mat-form-field>\n\n        <mat-form-field class=\"app-form-field\">\n          <mat-label>{{ 'APP.EDIT_PROFILE.EMAIL' | translate }}</mat-label>\n          <input\n            matInput\n            [readonly]=\"!contactSectionEditMode\"\n            placeholder=\"{{ 'APP.EDIT_PROFILE.EMAIL' | translate }}\"\n            formControlName=\"companyEmail\"\n          />\n          <mat-error>\n            {{ 'APP.EDIT_PROFILE.INVALID_EMAIL_FORMAT' | translate }}\n          </mat-error>\n        </mat-form-field>\n      </div>\n    }\n  </div>\n  @for (section of sections; track $index) {\n    <adf-dynamic-component [id]=\"section.component\"/>\n  }\n</div>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { inject } from '@angular/core';\nimport { CanActivateFn } from '@angular/router';\nimport { AuthenticationService } from '@alfresco/adf-core';\n\nexport const ViewProfileRuleGuard: CanActivateFn = () => {\n  const authService = inject(AuthenticationService);\n\n  return authService.isLoggedIn() || authService.isOauth();\n};\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { AppStore, SetSelectedNodesAction } from '@alfresco/aca-shared/store';\nimport { ViewerModule } from '@alfresco/adf-core';\nimport { ContentActionRef } from '@alfresco/adf-extensions';\nimport { SharedLinkEntry, SharedlinksApi, LazyApi } from '@alfresco/js-api';\nimport { Component, DestroyRef, inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { forkJoin, from, of } from 'rxjs';\nimport { catchError, mergeMap } from 'rxjs/operators';\nimport { AppExtensionService, AppService, ToolbarComponent } from '@alfresco/aca-shared';\nimport { CommonModule } from '@angular/common';\nimport { AlfrescoApiService, AlfrescoViewerModule } from '@alfresco/adf-content-services';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n  imports: [CommonModule, ViewerModule, AlfrescoViewerModule, ToolbarComponent],\n  selector: 'app-shared-link-view',\n  templateUrl: './shared-link-view.component.html',\n  styleUrls: ['shared-link-view.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'app-shared-link-view' }\n})\nexport class SharedLinkViewComponent implements OnInit {\n  private readonly route = inject(ActivatedRoute);\n  private readonly store = inject<Store<AppStore>>(Store);\n  private readonly extensions = inject(AppExtensionService);\n  private readonly alfrescoApiService = inject(AlfrescoApiService);\n  private readonly appService = inject(AppService);\n\n  sharedLinkId: string = null;\n  viewerToolbarActions: Array<ContentActionRef> = [];\n\n  @LazyApi((self: SharedLinkViewComponent) => new SharedlinksApi(self.alfrescoApiService.getInstance()))\n  declare private readonly sharedLinksApi: SharedlinksApi;\n\n  private readonly destroyRef = inject(DestroyRef);\n\n  ngOnInit() {\n    this.route.params\n      .pipe(\n        mergeMap((params) =>\n          forkJoin([from(this.sharedLinksApi.getSharedLink(params.id)), of(params.id)]).pipe(catchError(() => of([null, params.id])))\n        )\n      )\n      .subscribe(([sharedEntry, sharedId]: [SharedLinkEntry, string]) => {\n        if (sharedEntry) {\n          this.store.dispatch(new SetSelectedNodesAction([sharedEntry as any]));\n          this.appService.openMobileAppDialog();\n        }\n        this.sharedLinkId = sharedId;\n      });\n\n    this.extensions\n      .getSharedLinkViewerToolbarActions()\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe((actions) => {\n        this.viewerToolbarActions = actions;\n      });\n  }\n}\n","<ng-container *ngIf=\"sharedLinkId\">\n  <adf-alfresco-viewer [allowPrint]=\"false\" [allowDownload]=\"false\" [allowFullScreen]=\"false\" [sharedLinkId]=\"sharedLinkId\" [allowGoBack]=\"false\">\n    <adf-viewer-toolbar-actions>\n      <aca-toolbar [items]=\"viewerToolbarActions\" />\n    </adf-viewer-toolbar-actions>\n  </adf-alfresco-viewer>\n</ng-container>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { DocumentListPresetRef, DynamicColumnComponent } from '@alfresco/adf-extensions';\nimport { Component, inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport {\n  ContextActionsDirective,\n  PageComponent,\n  PageLayoutComponent,\n  PaginationDirective,\n  ToolbarComponent,\n  UserProfileService\n} from '@alfresco/aca-shared';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport {\n  CustomEmptyContentTemplateDirective,\n  DataColumnComponent,\n  DataColumnListComponent,\n  EmptyContentComponent,\n  PaginationComponent\n} from '@alfresco/adf-core';\nimport { DocumentListDirective } from '../../directives/document-list.directive';\nimport { DocumentListComponent } from '@alfresco/adf-content-services';\n\n@Component({\n  imports: [\n    CommonModule,\n    TranslatePipe,\n    PaginationComponent,\n    DocumentListDirective,\n    ContextActionsDirective,\n    PaginationDirective,\n    PageLayoutComponent,\n    ToolbarComponent,\n    EmptyContentComponent,\n    DynamicColumnComponent,\n    DocumentListComponent,\n    CustomEmptyContentTemplateDirective,\n    DataColumnComponent,\n    DataColumnListComponent\n  ],\n  templateUrl: './trashcan.component.html',\n  encapsulation: ViewEncapsulation.None\n})\nexport class TrashcanComponent extends PageComponent implements OnInit {\n  private readonly userProfileService = inject(UserProfileService);\n\n  user$ = this.userProfileService.userProfile$;\n  columns: DocumentListPresetRef[] = [];\n\n  ngOnInit() {\n    super.ngOnInit();\n    this.columns = this.extensions.documentListPresets.trashcan || [];\n  }\n}\n","<aca-page-layout>\n  <div class=\"aca-page-layout-header\">\n    <h1 class=\"aca-page-title\">\n      {{ (selectedRowItemsCount < 1 ? 'APP.BROWSE.TRASHCAN.TITLE' : 'APP.HEADER.SELECTED') | translate: { count: selectedRowItemsCount } }}\n    </h1>\n\n    <aca-toolbar [items]=\"actions\" />\n  </div>\n\n  <div class=\"aca-page-layout-content\">\n    <div class=\"aca-main-content\">\n      <adf-document-list\n        #documentList\n        acaDocumentList\n        acaContextActions\n        [currentFolderId]=\"'-trashcan-'\"\n        [selectionMode]=\"'multiple'\"\n        [multiselect]=\"true\"\n        [navigate]=\"false\"\n        [sortingMode]=\"'client'\"\n        [preselectNodes]=\"selectedNodesState?.nodes\"\n        [imageResolver]=\"imageResolver\"\n        [displayCheckboxesOnHover]=\"true\"\n        (selectedItemsCountChanged)=\"onSelectedItemsCountChanged($event)\"\n        [sorting]=\"['archivedAt', 'desc']\"\n        [isResizingEnabled]=\"true\"\n        [blurOnResize]=\"false\"\n      >\n        <adf-custom-empty-content-template>\n          <adf-empty-content icon=\"delete\" [title]=\"'APP.BROWSE.TRASHCAN.EMPTY_STATE.TITLE'\">\n            <p class=\"adf-empty-content__text\">\n              {{ 'APP.BROWSE.TRASHCAN.EMPTY_STATE.FIRST_TEXT' | translate }}\n            </p>\n            <p class=\"adf-empty-content__text\">\n              {{ 'APP.BROWSE.TRASHCAN.EMPTY_STATE.SECOND_TEXT' | translate }}\n            </p>\n          </adf-empty-content>\n        </adf-custom-empty-content-template>\n\n        <data-columns>\n          <ng-container *ngFor=\"let column of columns; trackBy: trackByColumnId\">\n            <ng-container *ngIf=\"column.template && !(column.desktopOnly && isSmallScreen)\">\n              <data-column\n                [id]=\"column.id\"\n                [key]=\"column.key\"\n                [draggable]=\"column.draggable\"\n                [resizable]=\"column.resizable\"\n                [title]=\"column.title\"\n                [type]=\"column.type\"\n                [format]=\"column.format\"\n                [class]=\"column.class\"\n                [sortable]=\"column.sortable\"\n                [isHidden]=\"column.isHidden\"\n                [sortingKey]=\"column.sortingKey || column.key\"\n              >\n                <ng-template let-context>\n                  <adf-dynamic-column [id]=\"column.template\" [context]=\"context\" />\n                </ng-template>\n              </data-column>\n            </ng-container>\n\n            <ng-container *ngIf=\"!column.template && !(column.desktopOnly && isSmallScreen)\">\n              <data-column\n                [id]=\"column.id\"\n                [key]=\"column.key\"\n                [title]=\"column.title\"\n                [type]=\"column.type\"\n                [format]=\"column.format\"\n                [class]=\"column.class\"\n                [sortable]=\"column.sortable\"\n                [draggable]=\"column.draggable\"\n                [resizable]=\"column.resizable\"\n                [isHidden]=\"column.isHidden\"\n                [sortingKey]=\"column.sortingKey || column.key\"\n              />\n            </ng-container>\n          </ng-container>\n\n          <data-column\n            *ngIf=\"!isSmallScreen && (user$ | async)?.isAdmin\"\n            class=\"adf-ellipsis-cell\"\n            key=\"archivedByUser.displayName\"\n            title=\"APP.DOCUMENT_LIST.COLUMNS.DELETED_BY\"\n          />\n        </data-columns>\n      </adf-document-list>\n\n      <adf-pagination acaPagination [target]=\"documentList\" />\n    </div>\n  </div>\n</aca-page-layout>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, ViewEncapsulation, inject } from '@angular/core';\nimport { AutoFocusDirective, SavedSearch } from '@alfresco/adf-content-services';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { take } from 'rxjs/operators';\nimport { NotificationService } from '@alfresco/adf-core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { TitleCasePipe } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { SavedSearchesContextService } from '../../../../../services/saved-searches-context.service';\n\n@Component({\n  imports: [TranslatePipe, TitleCasePipe, MatIconModule, MatButtonModule, MatDialogModule, AutoFocusDirective],\n  selector: 'aca-saved-search-delete-dialog',\n  templateUrl: './saved-search-delete-dialog.component.html',\n  styleUrls: ['./saved-search-delete-dialog.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'aca-saved-search-delete-dialog' }\n})\nexport class SavedSearchDeleteDialogComponent {\n  private readonly dialog = inject<MatDialogRef<SavedSearchDeleteDialogComponent>>(MatDialogRef);\n  private readonly notificationService = inject(NotificationService);\n  private readonly savedSearchesService = inject(SavedSearchesContextService);\n  private readonly data = inject<SavedSearch>(MAT_DIALOG_DATA);\n\n  isLoading = false;\n\n  onSubmit() {\n    if (this.isLoading) {\n      return;\n    }\n    this.isLoading = true;\n    this.savedSearchesService\n      .deleteSavedSearch(this.data)\n      .pipe(take(1))\n      .subscribe({\n        next: () => {\n          this.dialog.close(this.data);\n          this.notificationService.showInfo('APP.BROWSE.SEARCH.SAVE_SEARCH.DELETE_DIALOG.SUCCESS_MESSAGE');\n          this.isLoading = false;\n        },\n        error: () => {\n          this.notificationService.showError('APP.BROWSE.SEARCH.SAVE_SEARCH.DELETE_DIALOG.ERROR_MESSAGE');\n          this.isLoading = false;\n        }\n      });\n  }\n}\n","<div class=\"aca-saved-search-delete-dialog__header\">\n  <h2 class=\"aca-saved-search-delete-dialog__title\">{{\"APP.BROWSE.SEARCH.SAVE_SEARCH.DELETE_DIALOG.TITLE\" | translate}}</h2>\n  <button\n    mat-icon-button\n    mat-dialog-close\n    [attr.aria-label]=\"'CLOSE' | translate\"\n    [attr.title]=\"'CLOSE' | translate\">\n    <mat-icon>close</mat-icon>\n  </button>\n</div>\n<mat-dialog-content>\n  <p>{{ 'APP.BROWSE.SEARCH.SAVE_SEARCH.DELETE_DIALOG.CONTENT' | translate }}</p>\n</mat-dialog-content>\n<mat-dialog-actions align=\"end\">\n  <button mat-button\n          mat-dialog-close\n          adf-auto-focus\n          id=\"aca-save-search-delete-dialog-cancel-button\">{{ 'CANCEL' | titlecase | translate }}</button>\n  <button mat-flat-button\n          id=\"aca-save-search-delete-dialog-submit-button\"\n          [disabled]=\"isLoading\"\n          (click)=\"onSubmit()\">{{ 'DELETE' | titlecase | translate }}</button>\n</mat-dialog-actions>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, ViewEncapsulation, inject } from '@angular/core';\nimport { AutoFocusDirective, forbidOnlySpaces, SavedSearch } from '@alfresco/adf-content-services';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { take } from 'rxjs/operators';\nimport { NotificationService } from '@alfresco/adf-core';\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { UniqueSearchNameValidator } from '../unique-search-name-validator';\nimport { SavedSearchForm } from '../saved-search-form.interface';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { TitleCasePipe } from '@angular/common';\nimport { SavedSearchesContextService } from '../../../../../services/saved-searches-context.service';\n\n@Component({\n  imports: [\n    AutoFocusDirective,\n    TranslatePipe,\n    MatIconModule,\n    MatButtonModule,\n    MatDialogModule,\n    ReactiveFormsModule,\n    MatFormFieldModule,\n    MatInputModule,\n    TitleCasePipe\n  ],\n  selector: 'aca-saved-search-edit-dialog',\n  templateUrl: './saved-search-edit-dialog.component.html',\n  styleUrls: ['./saved-search-edit-dialog.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'aca-saved-search-edit-dialog' }\n})\nexport class SavedSearchEditDialogComponent {\n  private readonly dialog = inject<MatDialogRef<SavedSearchEditDialogComponent>>(MatDialogRef);\n  private readonly notificationService = inject(NotificationService);\n  private readonly savedSearchesService = inject(SavedSearchesContextService);\n  private readonly uniqueSearchNameValidator = inject(UniqueSearchNameValidator);\n  private readonly data = inject<SavedSearch>(MAT_DIALOG_DATA);\n\n  form: FormGroup<SavedSearchForm>;\n  isLoading = false;\n\n  constructor() {\n    this.form = new FormGroup({\n      name: new FormControl('', {\n        validators: [Validators.required, forbidOnlySpaces],\n        asyncValidators: [this.uniqueSearchNameValidator.validate.bind(this.uniqueSearchNameValidator)],\n        updateOn: 'change'\n      }),\n      description: new FormControl('')\n    });\n\n    this.form.patchValue({\n      name: this.data.name,\n      description: this.data.description\n    });\n  }\n\n  submit() {\n    if (this.form.invalid || this.isLoading) {\n      return;\n    }\n    this.isLoading = true;\n    const formValue = this.form.value;\n    const savedSearch: SavedSearch = {\n      name: formValue.name,\n      description: formValue.description,\n      encodedUrl: this.data.encodedUrl,\n      order: this.data.order\n    };\n    if (this.data.name === formValue.name && this.data.description === formValue.description) {\n      this.onEditSuccess();\n    }\n    this.savedSearchesService\n      .editSavedSearch(savedSearch)\n      .pipe(take(1))\n      .subscribe({\n        next: () => {\n          this.onEditSuccess();\n          this.isLoading = false;\n        },\n        error: () => {\n          this.notificationService.showError('APP.BROWSE.SEARCH.SAVE_SEARCH.EDIT_DIALOG.ERROR_MESSAGE');\n          this.isLoading = false;\n        }\n      });\n  }\n\n  private onEditSuccess(): void {\n    this.dialog.close();\n    this.notificationService.showInfo('APP.BROWSE.SEARCH.SAVE_SEARCH.EDIT_DIALOG.SUCCESS_MESSAGE');\n  }\n}\n","<div class=\"aca-saved-search-edit-dialog__header\">\n  <h2 class=\"aca-saved-search-edit-dialog__title\">{{\"APP.BROWSE.SEARCH.SAVE_SEARCH.EDIT_DIALOG.TITLE\" | translate}}</h2>\n  <button\n    mat-icon-button\n    mat-dialog-close\n    [attr.aria-label]=\"'CLOSE' | translate\"\n    [attr.title]=\"'CLOSE' | translate\">\n    <mat-icon>close</mat-icon>\n  </button>\n</div>\n\n<mat-dialog-content>\n  <form [formGroup]=\"form\" (submit)=\"submit()\">\n    <mat-form-field class=\"aca-saved-search-edit-dialog__form-field\">\n      <mat-label>{{ 'APP.BROWSE.SEARCH.SAVE_SEARCH.NAME_LABEL' | translate }}</mat-label>\n      <input\n          [attr.aria-label]=\"'APP.BROWSE.SEARCH.SAVE_SEARCH.NAME_LABEL' | translate\"\n          data-automation-id=\"saved-search-edit-name\"\n          matInput\n          required\n          [formControlName]=\"'name'\"\n          adf-auto-focus/>\n      @if (form.controls['name'].touched) {\n      <mat-error>\n        @if (form.controls['name'].errors?.required) {\n        <span>\n          {{ 'APP.BROWSE.SEARCH.SAVE_SEARCH.NAME_REQUIRED_ERROR' | translate }}\n        </span>\n        }\n        @if (!form.controls['name'].errors?.required && form.controls['name'].errors?.message) {\n        <span>\n          {{ form.controls['name'].errors?.message | translate : { name: form.controls.name.value } }}\n        </span>\n        }\n      </mat-error>\n      }\n    </mat-form-field>\n\n    <mat-form-field class=\"aca-saved-search-edit-dialog__form-field\">\n      <mat-label>{{ 'APP.BROWSE.SEARCH.SAVE_SEARCH.DESCRIPTION_LABEL' | translate }}</mat-label>\n      <textarea\n            matInput\n            data-automation-id=\"saved-search-edit-description\"\n            [attr.aria-label]=\"'APP.BROWSE.SEARCH.SAVE_SEARCH.DESCRIPTION_LABEL' | translate\"\n            rows=\"4\"\n            [formControlName]=\"'description'\"></textarea>\n    </mat-form-field>\n  </form>\n</mat-dialog-content>\n\n<mat-dialog-actions align=\"end\">\n  <button mat-button\n          id=\"aca-saved-search-edit-dialog-cancel-button\"\n          mat-dialog-close> {{ 'CANCEL' | titlecase | translate }} </button>\n\n  <button mat-flat-button\n          id=\"aca-saved-search-edit-dialog-submit-button\"\n          (click)=\"submit()\"\n          [disabled]=\"!form.valid || isLoading\">{{ 'SAVE' | titlecase | translate}}</button>\n</mat-dialog-actions>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { inject, Injectable } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { SavedSearch } from '@alfresco/adf-content-services';\nimport { SavedSearchDeleteDialogComponent } from '../dialog/delete/saved-search-delete-dialog.component';\nimport { SavedSearchEditDialogComponent } from '../dialog/edit/saved-search-edit-dialog.component';\n\n@Injectable({ providedIn: 'root' })\nexport class SavedSearchesListUiService {\n  private readonly dialog = inject(MatDialog);\n\n  openEditSavedSearch(savedSearch: SavedSearch, fromContextMenu = false): void {\n    this.dialog\n      .open(SavedSearchEditDialogComponent, {\n        data: savedSearch,\n        width: '600px',\n        restoreFocus: false\n      })\n      .afterClosed()\n      .subscribe(() => this.focusAfterClose(savedSearch.name, fromContextMenu));\n  }\n\n  confirmDeleteSavedSearch(savedSearch: SavedSearch, fromContextMenu = false): void {\n    this.dialog\n      .open(SavedSearchDeleteDialogComponent, {\n        data: savedSearch,\n        minWidth: '500px',\n        restoreFocus: false\n      })\n      .afterClosed()\n      .subscribe(() => this.focusAfterClose(savedSearch.name, fromContextMenu));\n  }\n\n  private focusAfterClose(name: string, fromContextMenu: boolean): void {\n    const row = Array.from(document.querySelectorAll<HTMLElement>('.adf-datatable-cell'))\n      .find((el) => el.getAttribute('data-automation-id') === name)\n      ?.closest<HTMLElement>('adf-datatable-row');\n\n    row?.focus();\n    if (!fromContextMenu) {\n      row?.querySelector<HTMLElement>('.adf-datatable-actions-menu button')?.focus();\n    }\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport const savedSearchesListSchema = {\n  default: [\n    {\n      type: 'text',\n      key: 'name',\n      title: 'APP.BROWSE.SEARCH.SAVE_SEARCH.LIST.NAME',\n      class: 'adf-ellipsis-cell',\n      sortable: false,\n      draggable: false,\n      maxTextLength: 250\n    },\n    {\n      type: 'text',\n      key: 'description',\n      title: 'APP.BROWSE.SEARCH.SAVE_SEARCH.LIST.DESCRIPTION',\n      class: 'adf-ellipsis-cell',\n      sortable: false,\n      draggable: false,\n      maxTextLength: 250\n    }\n  ]\n};\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport {\n  AfterContentInit,\n  Component,\n  DestroyRef,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  inject,\n  Input,\n  Output,\n  ViewEncapsulation\n} from '@angular/core';\nimport {\n  DataCellEvent,\n  DATATABLE_DIRECTIVES,\n  DataTableComponent,\n  DataTableSchema,\n  NotificationService,\n  ShowHeaderMode,\n  TEMPLATE_DIRECTIVES\n} from '@alfresco/adf-core';\nimport { Subject } from 'rxjs';\nimport { CommonModule } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { SavedSearchesListUiService } from '../saved-searches-list-ui.service';\nimport { savedSearchesListSchema } from '../smart-list/saved-searches-list-schema';\nimport { SavedSearch } from '@alfresco/adf-content-services';\nimport { Clipboard } from '@angular/cdk/clipboard';\nimport { Router } from '@angular/router';\n\n@Component({\n  selector: 'aca-saved-searches-ui-list',\n  imports: [CommonModule, DATATABLE_DIRECTIVES, TEMPLATE_DIRECTIVES, DataTableComponent],\n  templateUrl: './saved-searches-list.ui-component.html',\n  styleUrls: ['./saved-searches-list.ui-component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'aca-saved-searches-ui-list' }\n})\nexport class SavedSearchesListUiComponent extends DataTableSchema implements AfterContentInit {\n  @Input()\n  savedSearches: SavedSearch[] = [];\n\n  @Output()\n  savedSearchOrderChanged = new EventEmitter<{ previousIndex: number; currentIndex: number }>();\n\n  readonly ShowHeaderMode = ShowHeaderMode;\n\n  private readonly notificationService = inject(NotificationService);\n  private readonly savedSearchesListUiService = inject(SavedSearchesListUiService);\n  private readonly destroyRef = inject(DestroyRef);\n  private readonly contextMenuAction$ = new Subject<any>();\n  private readonly editSavedSearchOptionKey = 'edit';\n  private readonly deleteSavedSearchOptionKey = 'delete';\n  private readonly copyToClipboardUrlOptionKey = 'copy';\n  private readonly executeSearchOptionKey = 'execute';\n  private readonly menuOptions = [\n    {\n      icon: 'copy',\n      title: 'APP.BROWSE.SEARCH.SAVE_SEARCH.LIST.COPY_TO_CLIPBOARD',\n      key: this.copyToClipboardUrlOptionKey\n    },\n    {\n      icon: 'exit_to_app',\n      title: 'APP.BROWSE.SEARCH.SAVE_SEARCH.LIST.EXECUTE_SEARCH',\n      key: this.executeSearchOptionKey\n    },\n    {\n      icon: 'edit',\n      title: 'APP.BROWSE.SEARCH.SAVE_SEARCH.EDIT_DIALOG.CONTEXT_OPTION',\n      key: this.editSavedSearchOptionKey\n    },\n    {\n      icon: 'delete',\n      title: 'APP.BROWSE.SEARCH.SAVE_SEARCH.DELETE_DIALOG.CONTEXT_OPTION',\n      key: this.deleteSavedSearchOptionKey\n    }\n  ];\n\n  private readonly clipboard = inject(Clipboard);\n  private readonly router = inject(Router);\n  private readonly hostElement: ElementRef<HTMLElement> = inject(ElementRef);\n\n  constructor() {\n    super('', savedSearchesListSchema);\n  }\n\n  ngAfterContentInit() {\n    this.createDatatableSchema();\n    this.contextMenuAction$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((action) => this.executeMenuOption(action.key, action.data, true));\n  }\n\n  @HostListener('document:keydown.escape')\n  onEscapeKeydown() {\n    const contextMenu = document.querySelector<HTMLElement>('.adf-context-menu');\n    if (contextMenu) {\n      this.hostElement.nativeElement.querySelector<HTMLElement>('.adf-context-menu-source')?.focus();\n    }\n  }\n\n  onShowRowActionsMenu(event: DataCellEvent): void {\n    event.value.actions = this.menuOptions;\n  }\n\n  onSearchOrderChange(event: { previousIndex: number; currentIndex: number }): void {\n    this.savedSearchOrderChanged.next(event);\n  }\n\n  executeMenuOption(optionKey: string, savedSearchData: SavedSearch, fromContextMenu = false): void {\n    switch (optionKey) {\n      case this.editSavedSearchOptionKey:\n        this.openEditSavedSearchDialog(savedSearchData, fromContextMenu);\n        break;\n      case this.deleteSavedSearchOptionKey:\n        this.openDeleteSavedSearchDialog(savedSearchData, fromContextMenu);\n        break;\n      case this.copyToClipboardUrlOptionKey:\n        this.copyToClipboard(savedSearchData);\n        break;\n      case this.executeSearchOptionKey:\n        this.executeSearch(savedSearchData);\n        break;\n    }\n  }\n\n  openEditSavedSearchDialog(savedSearch: SavedSearch, fromContextMenu = false): void {\n    this.savedSearchesListUiService.openEditSavedSearch(savedSearch, fromContextMenu);\n  }\n\n  openDeleteSavedSearchDialog(savedSearch: SavedSearch, fromContextMenu = false): void {\n    this.savedSearchesListUiService.confirmDeleteSavedSearch(savedSearch, fromContextMenu);\n  }\n\n  copyToClipboard(savedSearch: SavedSearch): void {\n    this.clipboard.copy(this.getFullUrl(savedSearch.encodedUrl));\n    this.notificationService.showInfo('APP.BROWSE.SEARCH.SAVE_SEARCH.LIST.COPY_TO_CLIPBOARD_SUCCESS');\n  }\n\n  executeSearch(savedSearch: SavedSearch): void {\n    this.router.navigate(['/search'], {\n      queryParams: { q: decodeURIComponent(savedSearch.encodedUrl) }\n    });\n  }\n\n  fillContextMenu(event: DataCellEvent) {\n    event.value.actions = this.menuOptions.map((option) => ({\n      title: option.title,\n      key: option.key,\n      subject: this.contextMenuAction$,\n      model: {\n        visible: true,\n        icon: option.icon\n      },\n      data: event.value.row.obj\n    }));\n  }\n\n  private getFullUrl(path: string): string {\n    const baseUrl = window.location.origin;\n    return `${baseUrl}/#/search?q=${path}`;\n  }\n}\n","<adf-datatable\n  [rows]=\"savedSearches\"\n  [columns]=\"columns\"\n  [stickyHeader]=\"true\"\n  [showHeader]=\"ShowHeaderMode.Always\"\n  [enableDragRows]=\"true\"\n  [actionsVisibleOnHover]=\"true\"\n  [contextMenu]=\"true\"\n  [actions]=\"true\"\n  [isResizingEnabled]=\"false\"\n  [blurOnResize]=\"false\"\n  (showRowActionsMenu)=\"onShowRowActionsMenu($event)\"\n  (dragDropped)=\"onSearchOrderChange($event)\"\n  (executeRowAction)=\"executeMenuOption($event.value.action.key, $event.value.row.obj)\"\n  (showRowContextMenu)=\"fillContextMenu($event)\" />\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, inject, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { SavedSearchesListUiComponent } from '../ui-list/saved-searches-list.ui-component';\nimport { PageComponent, PageLayoutComponent } from '@alfresco/aca-shared';\nimport { EmptyContentComponent } from '@alfresco/adf-core';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { SavedSearchesContextService } from '../../../../../services/saved-searches-context.service';\n\n@Component({\n  selector: 'aca-saved-searches-smart-list',\n  imports: [CommonModule, TranslatePipe, SavedSearchesListUiComponent, PageLayoutComponent, EmptyContentComponent, MatProgressSpinnerModule],\n  templateUrl: './saved-searches-smart-list.component.html',\n  styleUrls: ['./saved-searches-smart-list.component.scss'],\n  encapsulation: ViewEncapsulation.None\n})\nexport class SavedSearchesSmartListComponent extends PageComponent {\n  savedSearchesService = inject(SavedSearchesContextService);\n\n  savedSearches$ = this.savedSearchesService.savedSearches$;\n\n  onOrderChanged(event: { previousIndex: number; currentIndex: number }): void {\n    this.savedSearchesService.changeOrder(event.previousIndex, event.currentIndex);\n  }\n}\n","<aca-page-layout>\n  <div class=\"aca-page-layout-header\">\n    <h1 class=\"aca-page-title\">\n      {{ 'APP.BROWSE.SEARCH.SAVE_SEARCH.LIST.TITLE' | translate }}\n    </h1>\n  </div>\n  <div *ngIf=\"savedSearches$ | async as savedSearches else spinner\"\n       class=\"aca-page-layout-content\">\n    <div class=\"aca-main-content\" >\n      <aca-saved-searches-ui-list *ngIf=\"savedSearches.length else emptyList\"\n                                  [savedSearches]=\"savedSearches\"\n                                  (savedSearchOrderChanged)=\"onOrderChanged($event)\"/>\n    </div>\n  </div>\n  <ng-template #emptyList>\n    <adf-empty-content\n            class=\"aca-page-layout-content\"\n            data-automation-id=\"'saved-search-list-empty-content'\"\n            icon=\"library_books\"\n            title=\"APP.BROWSE.SEARCH.SAVE_SEARCH.LIST.EMPTY_LIST\" />\n  </ng-template>\n</aca-page-layout>\n\n<ng-template #spinner>\n  <mat-progress-spinner\n    class=\"aca-page-layout-spinner\"\n    data-automation-id=\"'saved-search-list-spinner'\"\n    [color]=\"'primary'\"\n    [mode]=\"'indeterminate'\" />\n</ng-template>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ChangeDetectorRef, Component, OnInit, ViewEncapsulation, inject } from '@angular/core';\nimport { Pagination, SitePaging } from '@alfresco/js-api';\nimport { UserPreferencesService } from '@alfresco/adf-core';\nimport { SitesService } from '@alfresco/adf-content-services';\nimport { LibrariesBaseComponent } from '../libraries-base/libraries-base.component';\n\n@Component({\n  selector: 'aca-library-list',\n  standalone: true,\n  templateUrl: './library-list.component.html',\n  imports: [LibrariesBaseComponent],\n  encapsulation: ViewEncapsulation.None\n})\nexport class LibraryListComponent extends LibrariesBaseComponent implements OnInit {\n  private readonly preferences = inject(UserPreferencesService);\n  private readonly changeDetectorRef = inject(ChangeDetectorRef);\n  private readonly sitesService = inject(SitesService);\n\n  pagination = new Pagination({\n    skipCount: 0,\n    maxItems: 25,\n    totalItems: 0\n  });\n  isLoading = false;\n  list: SitePaging = null;\n\n  ngOnInit() {\n    super.ngOnInit();\n\n    this.getList({ maxItems: this.preferences.paginationSize });\n    this.subscriptions.push(\n      this.appHookService.libraryDeleted.subscribe(() => this.reloadList()),\n      this.appHookService.libraryUpdated.subscribe(() => this.reloadList()),\n      this.appHookService.libraryJoined.subscribe(() => this.reloadList()),\n      this.appHookService.libraryLeft.subscribe(() => this.reloadList())\n    );\n    this.columns = this.extensions.documentListPresets.libraries || [];\n  }\n\n  onChangePageSize(pagination: Pagination) {\n    this.preferences.paginationSize = pagination.maxItems;\n    this.getList(pagination);\n  }\n\n  getList(pagination: Pagination) {\n    this.isLoading = true;\n    this.sitesService.getSites(pagination).subscribe({\n      next: (libraryList: SitePaging) => {\n        this.list = libraryList;\n        this.pagination = libraryList.list.pagination;\n        this.isLoading = false;\n        this.changeDetectorRef.detectChanges();\n      },\n      error: () => {\n        this.list = null;\n        this.pagination = null;\n        this.isLoading = false;\n      }\n    });\n  }\n\n  private reloadList() {\n    this.reload();\n    this.getList(this.pagination);\n  }\n}\n","<aca-libraries-base\n  [list]=\"list\"\n  [isLoading]=\"isLoading\"\n  [pagination]=\"pagination\"\n  [columns]=\"columns\"\n  [titleKey]=\"'APP.BROWSE.LIBRARIES.MENU.ALL_LIBRARIES.TITLE'\"\n  [emptyTitleKey]=\"'APP.BROWSE.LIBRARIES.EMPTY_STATE.ALL_LIBRARIES.TITLE'\"\n  [emptySubtitleKey]=\"'APP.BROWSE.LIBRARIES.EMPTY_STATE.ALL_LIBRARIES.TEXT'\"\n  (changePageSize)=\"onChangePageSize($event)\"\n  (changePageNumber)=\"getList($event)\"\n  (nextPage)=\"getList($event)\"\n  (prevPage)=\"getList($event)\"\n/>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, ViewEncapsulation } from '@angular/core';\nimport { FilesComponent } from '../files/files.component';\n\n@Component({\n  imports: [FilesComponent],\n  templateUrl: './repository-view.component.html',\n  encapsulation: ViewEncapsulation.None,\n  selector: 'aca-repository-view'\n})\nexport class RepositoryViewComponent {}\n","<aca-files [navigationPath]=\"'/repository'\" />\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { FilesComponent } from './components/files/files.component';\nimport { LibrariesComponent } from './components/libraries/libraries.component';\nimport { FavoriteLibrariesComponent } from './components/favorite-libraries/favorite-libraries.component';\nimport { SearchResultsComponent } from './components/search/search-results/search-results.component';\nimport { SearchLibrariesResultsComponent } from './components/search/search-libraries-results/search-libraries-results.component';\nimport { AppSharedRuleGuard, ExtensionRoute, ExtensionsDataLoaderGuard, GenericErrorComponent } from '@alfresco/aca-shared';\nimport { AuthGuard } from '@alfresco/adf-core';\nimport { FavoritesComponent } from './components/favorites/favorites.component';\nimport { RecentFilesComponent } from './components/recent-files/recent-files.component';\nimport { SharedFilesComponent } from './components/shared-files/shared-files.component';\nimport { DetailsComponent } from './components/details/details.component';\nimport { HomeComponent } from './components/home/home.component';\nimport { ViewProfileComponent } from './components/view-profile/view-profile.component';\nimport { ViewProfileRuleGuard } from './components/view-profile/view-profile.guard';\nimport { Data, Route, Routes } from '@angular/router';\nimport { SharedLinkViewComponent } from './components/shared-link-view/shared-link-view.component';\nimport { TrashcanComponent } from './components/trashcan/trashcan.component';\nimport { ShellLayoutComponent } from '@alfresco/adf-core/shell';\nimport { SavedSearchesSmartListComponent } from './components/search/search-save/list/smart-list/saved-searches-smart-list.component';\nimport { LibraryListComponent } from './components/library-list/library-list.component';\nimport { RepositoryViewComponent } from './components/repository-view/repository-view.component';\n\nexport const CONTENT_ROUTES: ExtensionRoute[] = [\n  {\n    path: 'preview/s/:id',\n    children: [\n      {\n        path: '',\n        component: SharedLinkViewComponent,\n        data: {\n          title: 'APP.PREVIEW.TITLE'\n        }\n      }\n    ]\n  },\n  {\n    path: 'view',\n    component: ShellLayoutComponent,\n    children: [\n      {\n        path: ':nodeId',\n        outlet: 'viewer',\n        children: [\n          {\n            path: '',\n            loadChildren: () => import('@alfresco/aca-content/viewer').then((m) => m.AcaViewerModule)\n          }\n        ]\n      }\n    ]\n  }\n];\n\nconst createViewRoutes = (navigateSource: string, additionalData: Data = {}): Routes => [\n  {\n    path: 'view/:nodeId',\n    outlet: 'viewer',\n    children: [\n      {\n        path: '',\n        data: {\n          navigateSource\n        },\n        loadChildren: () => import('@alfresco/aca-content/viewer').then((m) => m.AcaViewerModule)\n      }\n    ],\n    ...additionalData\n  },\n  {\n    path: 'view/:nodeId/:versionId',\n    outlet: 'viewer',\n    children: [\n      {\n        path: '',\n        data: {\n          navigateSource\n        },\n        loadChildren: () => import('@alfresco/aca-content/viewer').then((m) => m.AcaViewerModule)\n      }\n    ]\n  }\n];\n\nexport const CONTENT_LAYOUT_ROUTES: Route[] = [\n  {\n    path: '',\n    canActivate: [ExtensionsDataLoaderGuard],\n    children: [\n      {\n        path: 'profile',\n        canActivate: [ViewProfileRuleGuard],\n        component: ViewProfileComponent\n      },\n      {\n        path: '',\n        component: HomeComponent\n      },\n      {\n        path: 'personal-files',\n        children: [\n          {\n            path: '',\n            component: FilesComponent,\n            data: {\n              sortingPreferenceKey: 'personal-files',\n              title: 'APP.BROWSE.PERSONAL.TITLE',\n              defaultNodeId: '-my-'\n            }\n          },\n          {\n            path: 'details/:nodeId',\n            children: [\n              {\n                path: '',\n                component: DetailsComponent,\n                data: {\n                  navigateSource: 'personal-files'\n                }\n              },\n              {\n                path: ':activeTab',\n                component: DetailsComponent,\n                data: {\n                  title: 'APP.BROWSE.PERSONAL.PERMISSIONS.TITLE',\n                  navigateSource: 'personal-files'\n                }\n              }\n            ]\n          },\n          ...createViewRoutes('personal-files')\n        ]\n      },\n      {\n        path: 'personal-files/:folderId',\n        children: [\n          {\n            path: '',\n            component: FilesComponent,\n            data: {\n              title: 'APP.BROWSE.PERSONAL.TITLE',\n              sortingPreferenceKey: 'personal-files'\n            }\n          },\n          ...createViewRoutes('personal-files')\n        ]\n      },\n      {\n        path: 'repository',\n        children: [\n          {\n            path: '',\n            component: RepositoryViewComponent,\n            data: {\n              sortingPreferenceKey: 'repository',\n              title: 'APP.BROWSE.REPOSITORY_VIEW.TITLE',\n              defaultNodeId: '-root-'\n            }\n          },\n          {\n            path: 'details/:nodeId',\n            children: [\n              {\n                path: '',\n                component: DetailsComponent,\n                data: {\n                  navigateSource: 'repository'\n                }\n              },\n              {\n                path: ':activeTab',\n                component: DetailsComponent,\n                data: {\n                  title: 'APP.BROWSE.PERSONAL.PERMISSIONS.TITLE',\n                  navigateSource: 'repository'\n                }\n              }\n            ]\n          },\n          ...createViewRoutes('repository')\n        ]\n      },\n      {\n        path: 'repository/:folderId',\n        children: [\n          {\n            path: '',\n            component: RepositoryViewComponent,\n            data: {\n              title: 'APP.BROWSE.REPOSITORY_VIEW.TITLE',\n              sortingPreferenceKey: 'repository'\n            }\n          },\n          ...createViewRoutes('repository')\n        ]\n      },\n      {\n        path: 'libraries',\n        children: [\n          {\n            path: '',\n            component: LibrariesComponent,\n            data: {\n              title: 'APP.BROWSE.LIBRARIES.MENU.MY_LIBRARIES.TITLE',\n              sortingPreferenceKey: 'libraries'\n            }\n          }\n        ]\n      },\n      {\n        path: 'libraries/:folderId',\n        children: [\n          {\n            path: '',\n            component: FilesComponent,\n            data: {\n              title: 'APP.BROWSE.LIBRARIES.MENU.MY_LIBRARIES.TITLE',\n              sortingPreferenceKey: 'libraries-files'\n            }\n          },\n          ...createViewRoutes('libraries', {\n            data: {\n              navigateSource: 'libraries'\n            }\n          })\n        ]\n      },\n      {\n        path: 'favorite',\n        children: [\n          {\n            path: '',\n            pathMatch: 'full',\n            redirectTo: 'libraries'\n          },\n          {\n            path: 'libraries',\n            component: FavoriteLibrariesComponent,\n            data: {\n              title: 'APP.BROWSE.LIBRARIES.MENU.FAVORITE_LIBRARIES.TITLE',\n              sortingPreferenceKey: 'favorite-libraries'\n            }\n          }\n        ]\n      },\n      {\n        path: 'favorite/libraries/:folderId',\n        children: [\n          {\n            path: '',\n            component: FilesComponent,\n            data: {\n              title: 'APP.BROWSE.LIBRARIES.MENU.FAVORITE_LIBRARIES.TITLE',\n              sortingPreferenceKey: 'libraries-files'\n            }\n          },\n          ...createViewRoutes('libraries')\n        ]\n      },\n      {\n        path: 'all',\n        children: [\n          {\n            path: '',\n            pathMatch: 'full',\n            redirectTo: 'libraries'\n          },\n          {\n            path: 'libraries',\n            component: LibraryListComponent,\n            data: {\n              title: 'APP.BROWSE.LIBRARIES.MENU.ALL_LIBRARIES.TITLE',\n              sortingPreferenceKey: 'all-libraries'\n            }\n          }\n        ]\n      },\n      {\n        path: 'favorites',\n        data: {\n          sortingPreferenceKey: 'favorites'\n        },\n        children: [\n          {\n            path: '',\n            component: FavoritesComponent,\n            data: {\n              title: 'APP.BROWSE.FAVORITES.TITLE',\n              sortingPreferenceKey: 'favorites'\n            }\n          },\n          ...createViewRoutes('favorites')\n        ]\n      },\n      {\n        path: 'recent-files',\n        data: {\n          sortingPreferenceKey: 'recent-files'\n        },\n        children: [\n          {\n            path: '',\n            component: RecentFilesComponent,\n            data: {\n              title: 'APP.BROWSE.RECENT.TITLE'\n            }\n          },\n          ...createViewRoutes('recent-files')\n        ]\n      },\n      {\n        path: 'shared',\n        children: [\n          {\n            path: '',\n            data: {\n              title: 'APP.BROWSE.SHARED.TITLE',\n              sortingPreferenceKey: 'shared-files'\n            },\n            component: SharedFilesComponent\n          },\n          ...createViewRoutes('shared')\n        ],\n        canActivateChild: [AppSharedRuleGuard],\n        canActivate: [AppSharedRuleGuard]\n      },\n      {\n        path: 'trashcan',\n        children: [\n          {\n            path: '',\n            component: TrashcanComponent,\n            data: {\n              title: 'APP.BROWSE.TRASHCAN.TITLE',\n              sortingPreferenceKey: 'trashcan'\n            }\n          }\n        ]\n      },\n      {\n        path: 'search',\n        children: [\n          {\n            path: '',\n            component: SearchResultsComponent,\n            data: {\n              title: 'APP.BROWSE.SEARCH.TITLE',\n              sortingPreferenceKey: 'search'\n            }\n          },\n          ...createViewRoutes('search')\n        ]\n      },\n      {\n        path: 'search-libraries',\n        children: [\n          {\n            path: '',\n            component: SearchLibrariesResultsComponent,\n            data: {\n              title: 'APP.BROWSE.SEARCH.TITLE',\n              sortingPreferenceKey: 'search-libraries'\n            }\n          },\n          {\n            path: 'view/:nodeId',\n            outlet: 'viewer',\n            children: [\n              {\n                path: '',\n                data: {\n                  navigateSource: 'search'\n                },\n                loadChildren: () => import('@alfresco/aca-content/viewer').then((m) => m.AcaViewerModule)\n              }\n            ]\n          }\n        ]\n      },\n      {\n        path: 'nodes/:nodeId',\n        children: [\n          {\n            path: '',\n            loadChildren: () => import('@alfresco/aca-content/folder-rules').then((m) => m.FOLDER_RULES_ROUTES)\n          }\n        ]\n      },\n      {\n        path: 'saved-searches',\n        children: [\n          {\n            path: '',\n            component: SavedSearchesSmartListComponent\n          }\n        ]\n      },\n      {\n        path: '**',\n        component: GenericErrorComponent\n      }\n    ],\n    canActivateChild: [AuthGuard]\n  }\n];\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, ViewEncapsulation, inject } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { delay } from 'rxjs/operators';\nimport { Store } from '@ngrx/store';\nimport { AppStore, getFileUploadingDialog } from '@alfresco/aca-shared/store';\nimport { CommonModule } from '@angular/common';\nimport { UploadModule } from '@alfresco/adf-content-services';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n  imports: [CommonModule, UploadModule],\n  selector: 'aca-upload-files-dialog',\n  templateUrl: './upload-files-dialog.component.html',\n  encapsulation: ViewEncapsulation.None\n})\nexport class UploadFilesDialogComponent {\n  private readonly store = inject<Store<AppStore>>(Store);\n\n  showFileUploadingDialog$: Observable<boolean>;\n\n  constructor() {\n    this.showFileUploadingDialog$ = this.store.select(getFileUploadingDialog).pipe(delay(0), takeUntilDestroyed());\n  }\n}\n","<adf-file-uploading-dialog *ngIf=\"showFileUploadingDialog$ | async\" position=\"left\" />","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ChangeDetectorRef, Component, Input, OnInit, ViewEncapsulation, inject } from '@angular/core';\nimport { TagNodeListComponent } from '@alfresco/adf-content-services';\n\n@Component({\n  imports: [TagNodeListComponent],\n  selector: 'aca-tags-column',\n  template: `<adf-tag-node-list [showDelete]=\"false\" [limitTagsDisplayed]=\"true\" [nodeId]=\"nodeId\" (results)=\"onTagsLoaded()\" />`,\n  styleUrls: ['./tags-column.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    class: 'adf-datatable-content-cell aca-tags-name-column'\n  }\n})\nexport class TagsColumnComponent implements OnInit {\n  private readonly cd = inject(ChangeDetectorRef);\n\n  @Input()\n  context: any;\n\n  nodeId: string;\n\n  ngOnInit(): void {\n    this.nodeId = this.context?.row?.id;\n  }\n\n  onTagsLoaded(): void {\n    this.cd.detectChanges();\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, inject, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { MatMenuItem, MatMenuModule } from '@angular/material/menu';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { UserProfileService } from '@alfresco/aca-shared';\n\n@Component({\n  imports: [CommonModule, RouterModule, MatMenuModule, TranslatePipe],\n  selector: 'app-user-info',\n  templateUrl: './user-info.component.html',\n  styleUrls: ['./user-info.component.scss'],\n  encapsulation: ViewEncapsulation.None\n})\nexport class UserInfoComponent {\n  private readonly userProfileService = inject(UserProfileService);\n\n  @ViewChild(MatMenuItem)\n  menuItem: MatMenuItem;\n\n  user$ = this.userProfileService.userProfile$;\n}\n","<button mat-menu-item class=\"aca-user-info\" [routerLink]=\"['/profile']\" title=\"{{ 'APP.TOOLTIPS.MY_PROFILE' | translate }}\">\n  <ng-container *ngIf=\"user$ | async as user\">\n    <div class=\"aca-user-info-content\">\n      <button class=\"aca-user-info-button\">\n        <div>{{ user.initials || 'U' }}</div>\n      </button>\n      <div class=\"aca-user-info-details\">\n        <div>{{ user.userName }}</div>\n        <div>{{ user.email }}</div>\n      </div>\n    </div>\n  </ng-container>\n</button>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, DestroyRef, ElementRef, EventEmitter, inject, OnInit, Output, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { ContentActionRef } from '@alfresco/adf-extensions';\nimport { AppExtensionService, AppService, AppSettingsService, ToolbarComponent } from '@alfresco/aca-shared';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { RouterModule } from '@angular/router';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n  imports: [CommonModule, TranslatePipe, RouterModule, ToolbarComponent],\n  selector: 'app-sidenav-header',\n  templateUrl: `./sidenav-header.component.html`,\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'app-sidenav-header' }\n})\nexport class SidenavHeaderComponent implements OnInit {\n  private readonly appService = inject(AppService);\n  private readonly appSettings = inject(AppSettingsService);\n  private readonly appExtensions = inject(AppExtensionService);\n\n  private readonly destroyRef = inject(DestroyRef);\n\n  appName = this.appSettings.appName;\n  logoUrl = this.appSettings.appLogoUrl;\n  landingPage = this.appSettings.landingPage;\n  actions: Array<ContentActionRef> = [];\n\n  @Output()\n  toggleNavBar = new EventEmitter();\n\n  @ViewChild('toggleNavbarButton')\n  private readonly toggleNavbarButton!: ElementRef<HTMLButtonElement>;\n\n  ngOnInit() {\n    this.appExtensions\n      .getHeaderActions()\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe((actions) => {\n        this.actions = actions;\n      });\n    this.appService.toggleAppNavBar$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n      setTimeout(() => {\n        this.toggleNavbarButton.nativeElement.focus();\n      });\n    });\n  }\n}\n","<div class=\"aca-sidenav-header\" data-automation-id=\"app-sidenav-header\">\n  <div class=\"aca-sidenav-header-title\" data-automation-id=\"app-sidenav-header-title\">\n    <button\n      class=\"aca-sidenav-header-title-logo\"\n      data-automation-id=\"app-sidenav-header-title-logo\"\n      (click)=\"toggleNavBar.emit()\"\n      [attr.aria-label]=\"'APP.TOOLTIPS.COLLAPSE_NAVIGATION' | translate\"\n      #toggleNavbarButton>\n      <img\n        src=\"{{ logoUrl }}\"\n        title=\"{{ 'APP.TOOLTIPS.COLLAPSE_NAVIGATION' | translate }}\"\n        alt=\"{{ 'APP.TOOLTIPS.COLLAPSE_NAVIGATION_ALT' | translate }}\"\n        aria-hidden=\"true\"\n      />\n    </button>\n\n    <div\n      class=\"aca-sidenav-header-title-text\"\n      data-automation-id=\"app-sidenav-header-title-text\"\n      [routerLink]=\"landingPage\">\n      {{ appName | translate }}\n    </div>\n\n    <aca-toolbar [items]=\"actions\" />\n  </div>\n</div>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Directive, EventEmitter, HostListener, Input, Output, inject } from '@angular/core';\nimport { Params, PRIMARY_OUTLET, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { AppStore } from '@alfresco/aca-shared/store';\nimport { NavBarLinkRef } from '@alfresco/adf-extensions';\n\n@Directive({\n  standalone: true,\n  /* eslint-disable-next-line */\n  selector: '[action]',\n  exportAs: 'action'\n})\nexport class ActionDirective {\n  private readonly router = inject(Router);\n  private readonly store = inject<Store<AppStore>>(Store);\n\n  @Input() action;\n\n  @Output() actionClicked = new EventEmitter<NavBarLinkRef>();\n\n  @HostListener('click')\n  onClick() {\n    if (this.action.url) {\n      if (this.isExternalUrl(this.action.url)) {\n        window.open(this.action.url, '_blank', 'noopener,noreferrer');\n      } else {\n        this.router.navigate(this.getNavigationCommands(this.action.url), { queryParams: this.getNavigationQueryParams(this.action.url) });\n      }\n    } else if (this.action.click) {\n      this.store.dispatch({\n        type: this.action.click.action,\n        payload: this.getNavigationCommands(this.action.click.payload)\n      });\n    }\n    this.actionClicked.next(this.action);\n  }\n  private getNavigationCommands(url: string): any[] {\n    const urlTree = this.router.parseUrl(url);\n    const urlSegmentGroup = urlTree.root.children[PRIMARY_OUTLET];\n\n    if (!urlSegmentGroup) {\n      return [url];\n    }\n\n    const urlSegments = urlSegmentGroup.segments;\n\n    return urlSegments.reduce(function (acc, item) {\n      acc.push(item.path, item.parameters);\n      return acc;\n    }, []);\n  }\n\n  private getNavigationQueryParams(url: string): Params {\n    return this.router.parseUrl(url).queryParams;\n  }\n\n  private isExternalUrl(url: string): boolean {\n    return /^https?:\\/\\//i.test(url);\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { AfterContentInit, ContentChildren, DestroyRef, Directive, ElementRef, inject, Input, OnInit, QueryList, Renderer2 } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { filter } from 'rxjs/operators';\nimport { ActionDirective } from './action.directive';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Directive({\n  standalone: true,\n  selector: '[acaActiveLink]',\n  exportAs: 'acaActiveLink'\n})\nexport class ActiveLinkDirective implements OnInit, AfterContentInit {\n  private readonly router = inject(Router);\n  private readonly element = inject(ElementRef);\n  private readonly renderer = inject(Renderer2);\n  private readonly action = inject(ActionDirective, { optional: true });\n\n  @Input() acaActiveLink;\n  @ContentChildren(ActionDirective, { descendants: true })\n  links: QueryList<ActionDirective>;\n  isLinkActive = false;\n\n  private readonly destroyRef = inject(DestroyRef);\n\n  ngOnInit() {\n    this.router.events\n      .pipe(\n        filter((event) => event instanceof NavigationEnd),\n        takeUntilDestroyed(this.destroyRef)\n      )\n      .subscribe((event: NavigationEnd) => {\n        this.update(event.urlAfterRedirects);\n      });\n  }\n\n  private update(url: string) {\n    if (this.action) {\n      const itemUrl = this.resolveUrl(this.action);\n      this.render(url, itemUrl);\n    }\n\n    this.links.map((item) => {\n      const itemUrl = this.resolveUrl(item);\n      this.render(url, itemUrl);\n    });\n  }\n\n  private render(routerUrl: string, actionUrl: string) {\n    if (routerUrl?.substring(1).startsWith(actionUrl)) {\n      this.isLinkActive = true;\n      this.renderer.addClass(this.element.nativeElement, this.acaActiveLink);\n    } else {\n      this.isLinkActive = false;\n      this.renderer.removeClass(this.element.nativeElement, this.acaActiveLink);\n    }\n  }\n\n  ngAfterContentInit() {\n    this.links.changes.subscribe(() => this.update(this.router.url));\n    this.update(this.router.url);\n  }\n\n  private resolveUrl(item): string {\n    return item.action?.click?.payload || item.action?.route;\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output, ViewEncapsulation, inject } from '@angular/core';\nimport { NavBarLinkRef } from '@alfresco/adf-extensions';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { IconComponent } from '@alfresco/adf-core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { ActiveLinkDirective } from '../directives/active-link.directive';\nimport { ActionDirective } from '../directives/action.directive';\nimport { MatExpansionModule } from '@angular/material/expansion';\n\n@Component({\n  imports: [CommonModule, TranslatePipe, IconComponent, MatButtonModule, ActiveLinkDirective, ActionDirective, MatExpansionModule],\n  selector: 'app-expand-menu',\n  encapsulation: ViewEncapsulation.None,\n  templateUrl: './expand-menu.component.html',\n  styleUrls: ['./expand-menu.component.scss'],\n  host: { class: 'app-expand-menu' }\n})\nexport class ExpandMenuComponent implements OnInit {\n  private readonly cd = inject(ChangeDetectorRef);\n\n  @Input({ required: true })\n  item: NavBarLinkRef;\n\n  @Output()\n  actionClicked = new EventEmitter<NavBarLinkRef>();\n\n  ngOnInit() {\n    this.cd.detectChanges();\n  }\n\n  trackById(_index: number, obj: NavBarLinkRef) {\n    return obj.id;\n  }\n}\n","<ng-container *ngIf=\"!item.children\">\n  <div class=\"aca-expansion-panel-item\">\n    <button\n      acaActiveLink=\"aca-action-button--active\"\n      [action]=\"item\"\n      [attr.aria-label]=\"item.title | translate\"\n      [id]=\"item.id\"\n      [attr.data-automation-id]=\"item.id\"\n      [attr.title]=\"item.description | translate\"\n      mat-button\n      class=\"aca-action-button aca-full-width\"\n    >\n      <adf-icon *ngIf=\"item.icon\" [value]=\"item.icon\" />\n      <span class=\"action-button__label\">{{ item.title | translate }}</span>\n    </button>\n  </div>\n</ng-container>\n\n<ng-container *ngIf=\"item.children && item.children.length\">\n  <mat-expansion-panel\n    class=\"aca-expansion-panel\"\n    [expanded]=\"true\"\n    [@.disabled]=\"true\"\n  >\n    <mat-expansion-panel-header expandedHeight=\"32px\" collapsedHeight=\"32px\" class=\"aca-expansion-panel-header\">\n      <mat-panel-title class=\"aca-expansion-panel-header-title\">\n        <div class=\"aca-expansion-panel-item\">\n          <span\n            [attr.aria-label]=\"item.title | translate\"\n            [id]=\"item.id\"\n            [attr.title]=\"item.description | translate\"\n            [attr.data-automation-id]=\"item.id\"\n            class=\"aca-action-button aca-full-width\"\n          >\n            <adf-icon *ngIf=\"item.icon\" [value]=\"item.icon\" />\n            <span class=\"aca-action-button__label\">{{ item.title | translate }}</span>\n          </span>\n        </div>\n      </mat-panel-title>\n    </mat-expansion-panel-header>\n    <ul class=\"aca-expansion-panel-body\" [attr.aria-label]=\"item.title | translate\">\n      <li *ngFor=\"let child of item.children; trackBy: trackById\" class=\"aca-expansion-panel-item\">\n        <button\n          acaActiveLink=\"aca-action-button--active\"\n          [action]=\"child\"\n          (actionClicked)=\"actionClicked.emit($event)\"\n          [attr.aria-label]=\"child.title | translate\"\n          [id]=\"child.id\"\n          [attr.data-automation-id]=\"child.id\"\n          [attr.title]=\"child.description | translate\"\n          mat-button\n          class=\"aca-action-button aca-full-width\"\n        >\n          <adf-icon *ngIf=\"child.icon\" [value]=\"child.icon\" />\n          <span class=\"aca-action-button__label\">{{ child.title | translate }}</span>\n        </button>\n      </li>\n    </ul>\n  </mat-expansion-panel>\n</ng-container>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, DestroyRef, inject, Input, OnInit, ViewEncapsulation } from '@angular/core';\nimport { DynamicExtensionComponent, NavBarGroupRef, NavBarLinkRef } from '@alfresco/adf-extensions';\nimport { Store } from '@ngrx/store';\nimport { AppStore, getSideNavState } from '@alfresco/aca-shared/store';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { AppExtensionService, AppService, NavigationHistoryService } from '@alfresco/aca-shared';\nimport { SidenavLayoutComponent } from '@alfresco/adf-core';\nimport { CommonModule } from '@angular/common';\nimport { SidenavHeaderComponent } from './components/sidenav-header.component';\nimport { MatListModule } from '@angular/material/list';\nimport { ExpandMenuComponent } from './components/expand-menu.component';\nimport { NavigationEnd } from '@angular/router';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n@Component({\n  imports: [CommonModule, SidenavHeaderComponent, MatListModule, ExpandMenuComponent, DynamicExtensionComponent, TranslatePipe],\n  selector: 'app-sidenav',\n  templateUrl: './sidenav.component.html',\n  styleUrls: ['./sidenav.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'app-sidenav' }\n})\nexport class SidenavComponent implements OnInit {\n  private readonly store = inject<Store<AppStore>>(Store);\n  private readonly extensions = inject(AppExtensionService);\n  private readonly appService = inject(AppService);\n  private readonly navigationHistoryService = inject(NavigationHistoryService);\n\n  @Input()\n  data: {\n    layout?: SidenavLayoutComponent;\n    mode?: 'collapsed' | 'expanded';\n  } = {};\n\n  groups: Array<NavBarGroupRef> = [];\n\n  private readonly destroyRef = inject(DestroyRef);\n\n  ngOnInit() {\n    this.store\n      .select(getSideNavState)\n      .pipe(debounceTime(300), distinctUntilChanged(), takeUntilDestroyed(this.destroyRef))\n      .subscribe(() => {\n        this.groups = this.extensions.getApplicationNavigation(this.extensions.navbar);\n      });\n\n    this.appService.setAppNavbarMode(this.data.mode);\n    this.appService.toggleAppNavBar$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.toggleNavBar());\n    this.data.layout.expanded.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.setNavBarMode());\n    this.navigationHistoryService\n      .listenToRouteChanges()\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe((event: NavigationEnd) => {\n        this.navigationHistoryService.setHistory(event);\n      });\n  }\n\n  trackByGroupId(_: number, obj: NavBarGroupRef): string {\n    return obj.id;\n  }\n\n  trackByLinkId(_: number, obj: NavBarLinkRef): string {\n    return obj.id;\n  }\n\n  toggleClick() {\n    this.toggleNavBar();\n  }\n\n  private setNavBarMode() {\n    this.appService.setAppNavbarMode(this.data.layout.isMenuMinimized || this.data.layout.isHeaderInside ? 'collapsed' : 'expanded');\n  }\n\n  private toggleNavBar() {\n    this.data.layout.toggleMenu();\n    this.setNavBarMode();\n  }\n}\n","<div class=\"aca-sidenav\">\n  <app-sidenav-header (toggleNavBar)=\"toggleClick()\" />\n\n  <div class=\"aca-sidenav__section\">\n    <div *ngFor=\"let group of groups; trackBy: trackByGroupId\" class=\"aca-sidenav__section__actions\">\n      <nav\n        [attr.aria-label]=\"item.title | translate\"\n        class=\"aca-sidenav__section__actions__item\"\n        *ngFor=\"let item of group.items; trackBy: trackByLinkId\"\n      >\n        <ng-container *ngIf=\"!item.component\">\n          <app-expand-menu [item]=\"item\" />\n        </ng-container>\n        <ng-container *ngIf=\"item.component\">\n          <adf-dynamic-component [data]=\"{ item: item, state: 'expanded' }\" [id]=\"item.component\" />\n        </ng-container>\n      </nav>\n    </div>\n  </div>\n</div>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { AfterViewInit, Component, inject, Input, OnInit, QueryList, ViewChild, ViewChildren, ViewEncapsulation } from '@angular/core';\nimport { ContentActionRef } from '@alfresco/adf-extensions';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatMenu, MatMenuItem, MatMenuModule } from '@angular/material/menu';\nimport { ToolbarMenuItemComponent, UserProfileService } from '@alfresco/aca-shared';\n\n@Component({\n  imports: [CommonModule, TranslatePipe, MatButtonModule, MatMenuModule, ToolbarMenuItemComponent],\n  selector: 'aca-user-menu',\n  templateUrl: './user-menu.component.html',\n  styleUrls: ['./user-menu.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'aca-user-menu' }\n})\nexport class UserMenuComponent implements OnInit, AfterViewInit {\n  private readonly userProfileService = inject(UserProfileService);\n\n  user$ = this.userProfileService.userProfile$;\n\n  @Input()\n  actionRef: ContentActionRef;\n\n  @Input()\n  data: { items: any[] };\n\n  @ViewChild(MatMenu)\n  menu: MatMenu;\n\n  @ViewChildren(ToolbarMenuItemComponent)\n  toolbarMenuItems: QueryList<ToolbarMenuItemComponent>;\n\n  ngOnInit() {\n    if (this.data?.items) {\n      this.data.items.sort((a, b) => a.order - b.order);\n    }\n  }\n\n  ngAfterViewInit() {\n    const menuItems = this.toolbarMenuItems.map((toolbarMenuItem) => toolbarMenuItem.menuItem).filter((menuItem) => menuItem !== undefined);\n\n    const menuItemsQueryList = new QueryList<MatMenuItem>();\n    menuItemsQueryList.reset(menuItems);\n    this.menu._allItems = menuItemsQueryList;\n    this.menu.ngAfterContentInit();\n  }\n}\n","<button mat-button\n  class=\"aca-user-menu-button\"\n  data-automation-id=\"app-user-menu-button\"\n  [matMenuTriggerFor]=\"menu\"\n  title=\"{{'APP.TOOLTIPS.OPTIONS_SETTINGS' | translate}}\"\n>\n  <div>{{ (user$ | async)?.initials }}</div>\n</button>\n\n<mat-menu #menu=\"matMenu\" xPosition=\"before\">\n  <ng-container *ngFor=\"let item of data.items\">\n    <app-toolbar-menu-item [actionRef]=\"item\" />\n  </ng-container>\n</mat-menu>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ChangeDetectionStrategy, Component, DestroyRef, inject, Input, OnInit, ViewEncapsulation } from '@angular/core';\nimport { NodeEntry, SearchEntryHighlight } from '@alfresco/js-api';\nimport { NavigateToFolder, ViewNodeAction } from '@alfresco/aca-shared/store';\nimport { Store } from '@ngrx/store';\nimport { BehaviorSubject } from 'rxjs';\nimport { NodesApiService } from '@alfresco/adf-content-services';\nimport { Router } from '@angular/router';\nimport { AppSettingsService, AutoDownloadService } from '@alfresco/aca-shared';\nimport { CommonModule } from '@angular/common';\nimport { LocationLinkComponent } from '../../common/location-link/location-link.component';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { DatatableCellBadgesComponent } from '../../dl-custom-components/datatable-cell-badges/datatable-cell-badges.component';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n  imports: [CommonModule, LocationLinkComponent, MatDialogModule, DatatableCellBadgesComponent],\n  selector: 'aca-search-results-row',\n  templateUrl: './search-results-row.component.html',\n  styleUrls: ['./search-results-row.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: { class: 'aca-search-results-row' }\n})\nexport class SearchResultsRowComponent implements OnInit {\n  private readonly store = inject<Store<any>>(Store);\n  private readonly nodesApiService = inject(NodesApiService);\n  private readonly router = inject(Router);\n  private readonly autoDownloadService = inject(AutoDownloadService);\n\n  private readonly settings = inject(AppSettingsService);\n\n  private readonly highlightPrefix = `<span class=\"aca-highlight\">`;\n  private readonly highlightPostfix = `</span>`;\n\n  private readonly highlightOpenEscapedRegex = /&lt;span class=(['\"])aca-highlight\\1&gt;/g;\n  private readonly highlightCloseEscapedRegex = /&lt;\\/span&gt;/g;\n\n  private readonly highlightOpenRawRegex = /<span class=(['\"])aca-highlight\\1>/g;\n  private readonly highlightCloseRawRegex = /<\\/span>/g;\n\n  private readonly escapeMap: Record<string, string> = {\n    '&': '&amp;',\n    '<': '&lt;',\n    '>': '&gt;'\n  };\n\n  private node: NodeEntry;\n\n  @Input({ required: true })\n  context: any;\n\n  name$ = new BehaviorSubject<string>('');\n  title$ = new BehaviorSubject<string>('');\n  description$ = new BehaviorSubject<string>('');\n  content$ = new BehaviorSubject<string>('');\n  nameStripped = '';\n  titleStripped = '';\n  descriptionStripped = '';\n  contentStripped = '';\n  isFile = false;\n\n  private readonly destroyRef = inject(DestroyRef);\n\n  ngOnInit() {\n    this.updateValues();\n\n    this.nodesApiService.nodeUpdated.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((node) => {\n      const row = this.context.row;\n      if (row) {\n        const { entry } = row.node;\n\n        if (entry.id === node.id) {\n          entry.name = node.name;\n          entry.properties = { ...node.properties };\n\n          this.updateValues();\n        }\n      }\n    });\n  }\n\n  private updateValues() {\n    this.node = this.context.row.node;\n    this.isFile = this.node.entry.isFile;\n\n    const highlights: SearchEntryHighlight[] = this.node.entry['search']?.['highlight'];\n    let name = this.node.entry.name;\n    const properties = this.node.entry.properties;\n    let title = properties?.['cm:title'] || '';\n    let description = properties?.['cm:description'] || '';\n    let content = '';\n\n    highlights?.forEach((highlight) => {\n      switch (highlight.field) {\n        case 'cm:name':\n          name = highlight.snippets[0];\n          break;\n        case 'cm:title':\n          title = highlight.snippets[0];\n          break;\n        case 'cm:description':\n          description = highlight.snippets[0];\n          break;\n        case 'cm:content':\n          content = `...${highlight.snippets[0]}...`;\n          break;\n        default:\n          break;\n      }\n    });\n\n    const safeName = this.sanitizeAndHighlight(name);\n    const safeDescription = this.sanitizeAndHighlight(description);\n    const safeContent = this.sanitizeAndHighlight(content);\n\n    this.name$.next(safeName);\n    this.description$.next(safeDescription);\n    this.content$.next(safeContent);\n\n    this.nameStripped = this.stripHighlighting(name);\n    this.titleStripped = this.stripHighlighting(title);\n    this.descriptionStripped = this.stripHighlighting(description);\n    this.contentStripped = this.stripHighlighting(content);\n\n    if (title && title !== name) {\n      const safeTitle = this.sanitizeAndHighlight(` ( ${title} )`);\n      this.title$.next(safeTitle);\n      this.titleStripped = this.stripHighlighting(title);\n    } else {\n      this.title$.next('');\n    }\n  }\n\n  showPreview(event: Event) {\n    event.stopPropagation();\n\n    if (!this.settings.autoDownloadEnabled || !this.autoDownloadService.tryDownload(this.node, this.settings.authDownloadThreshold)) {\n      this.store.dispatch(new ViewNodeAction(this.node.entry.id, { location: this.router.url }));\n    }\n  }\n\n  navigate(event: Event) {\n    event.stopPropagation();\n    this.store.dispatch(new NavigateToFolder(this.node));\n  }\n\n  private stripHighlighting(input: string): string {\n    if (!input) {\n      return '';\n    }\n    return input.replace(this.highlightOpenRawRegex, '').replace(this.highlightCloseRawRegex, '');\n  }\n\n  private sanitizeAndHighlight(value: string | null | undefined): string {\n    if (!value) {\n      return '';\n    }\n\n    let escaped = value.replace(/[&<>]/g, (char) => this.escapeMap[char] ?? char);\n\n    escaped = escaped.replace(this.highlightOpenEscapedRegex, this.highlightPrefix).replace(this.highlightCloseEscapedRegex, this.highlightPostfix);\n\n    return escaped;\n  }\n}\n","<div class=\"aca-search-results-text\">\n  <div class=\"search-file-name\">\n    <span\n      tabindex=\"0\"\n      role=\"link\"\n      *ngIf=\"isFile\"\n      (click)=\"showPreview($event)\"\n      (keyup.enter)=\"showPreview($event)\"\n      class=\"aca-link aca-crop-text\"\n      [title]=\"nameStripped\"\n      [innerHTML]=\"name$ | async\"\n    ></span>\n    <span\n      tabindex=\"0\"\n      role=\"link\"\n      *ngIf=\"!isFile\"\n      (click)=\"navigate($event)\"\n      (keyup.enter)=\"navigate($event)\"\n      class=\"bold aca-link aca-crop-text\"\n      [title]=\"nameStripped\"\n      [innerHTML]=\"name$ | async\"\n    ></span>\n    <span\n      data-automation-id=\"search-results-entry-title\"\n      class=\"aca-crop-text\"\n      [title]=\"titleStripped\"\n      [innerHTML]=\"title$ | async\"\n    ></span>\n  </div>\n  <div\n    data-automation-id=\"search-results-entry-description\"\n    class=\"aca-crop-text\"\n    [title]=\"descriptionStripped\"\n    [innerHTML]=\"description$ | async\"\n  ></div>\n  <div class=\"aca-result-location\">\n    <aca-location-link [context]=\"context\" [showLocation]=\"true\" />\n  </div>\n  <div class=\"aca-result-content aca-crop-text\" [title]=\"contentStripped\" [innerHTML]=\"content$ | async\"></div>\n</div>\n<aca-datatable-cell-badges [node]=\"context.row.node\" />\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { NavBarLinkRef } from '@alfresco/adf-extensions';\nimport { ExpandMenuComponent } from '../sidenav/components/expand-menu.component';\nimport { AppSettingsService } from '@alfresco/aca-shared';\n\n@Component({\n  selector: 'aca-knowledge-discovery-sidenav',\n  imports: [ExpandMenuComponent],\n  templateUrl: './knowledge-discovery-sidenav.component.html',\n  encapsulation: ViewEncapsulation.None\n})\nexport class KnowledgeDiscoverySidenavComponent implements OnInit {\n  private readonly appSettings = inject(AppSettingsService);\n\n  item: NavBarLinkRef;\n\n  ngOnInit(): void {\n    const url = this.appSettings.knowledgeDiscoveryUrl;\n    this.item = {\n      id: 'app.knowledgeDiscovery.sidenav',\n      icon: '',\n      title: 'KNOWLEDGE_RETRIEVAL.SIDENAV.TITLE',\n      route: '/',\n      children: [\n        {\n          id: 'app.knowledgeDiscovery.sidenav.discovery',\n          icon: '',\n          title: 'KNOWLEDGE_RETRIEVAL.SIDENAV.DISCOVERY',\n          route: url,\n          url\n        }\n      ]\n    };\n  }\n}\n","<app-expand-menu [item]=\"item\" />\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, DestroyRef, inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { SavedSearch } from '@alfresco/adf-content-services';\nimport { TranslationService } from '@alfresco/adf-core';\nimport { NavBarLinkRef } from '@alfresco/adf-extensions';\nimport { ExpandMenuComponent } from '../../../sidenav/components/expand-menu.component';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { SavedSearchesContextService } from '../../../../services/saved-searches-context.service';\n\n@Component({\n  selector: 'aca-save-search-sidenav',\n  imports: [ExpandMenuComponent],\n  templateUrl: './save-search-sidenav.component.html',\n  encapsulation: ViewEncapsulation.None\n})\nexport class SaveSearchSidenavComponent implements OnInit {\n  savedSearchesService = inject(SavedSearchesContextService);\n  translationService = inject(TranslationService);\n  item: NavBarLinkRef;\n\n  private savedSearchCount = 0;\n  private savedSearches: SavedSearch[];\n\n  private readonly manageSearchesId = 'manage-saved-searches';\n  private readonly destroyRef = inject(DestroyRef);\n\n  ngOnInit() {\n    this.savedSearchesService.init();\n    this.savedSearchesService.savedSearches$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((savedSearches) => {\n      this.item = this.createNavBarLinkRef(savedSearches);\n      this.savedSearchCount = savedSearches.length;\n      this.savedSearches = savedSearches;\n    });\n    this.translationService.translate.onLangChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n      if (this.item) {\n        this.item.title = this.translationService.instant('APP.BROWSE.SEARCH.SAVE_SEARCH.NAVBAR.TITLE', { number: this.savedSearchCount });\n      }\n    });\n  }\n\n  onActionClicked(selectedLinkRef: NavBarLinkRef): void {\n    const selectedSavedSearch = this.savedSearches?.find((savedSearch) => savedSearch.name === selectedLinkRef.title);\n    this.savedSearchesService.currentContextSavedSearch = selectedSavedSearch;\n  }\n\n  private createNavBarLinkRef(children: SavedSearch[]): NavBarLinkRef {\n    const mappedChildren = children\n      .map((child) => ({\n        id: 'search' + child.name,\n        icon: '',\n        title: child.name,\n        description: child.name,\n        route: `search?q=${child.encodedUrl}`,\n        url: `search?q=${child.encodedUrl}`\n      }))\n      .slice(0, 5);\n    const title = this.translationService.instant('APP.BROWSE.SEARCH.SAVE_SEARCH.NAVBAR.TITLE', { number: children.length });\n    mappedChildren.push({\n      id: this.manageSearchesId,\n      icon: '',\n      title: 'APP.BROWSE.SEARCH.SAVE_SEARCH.NAVBAR.MANAGE_BUTTON',\n      description: 'APP.BROWSE.SEARCH.SAVE_SEARCH.NAVBAR.MANAGE_BUTTON',\n      route: 'saved-searches',\n      url: 'saved-searches'\n    });\n    return {\n      icon: '',\n      title,\n      children: mappedChildren,\n      route: '/',\n      id: 'search-navbar'\n    };\n  }\n}\n","@if (item) {\n<app-expand-menu [item]=\"item\" (actionClicked)=\"onActionClicked($event)\" />\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { HammerModule } from '@angular/platform-browser';\nimport { NgModule } from '@angular/core';\nimport { AuthGuardEcm, LanguagePickerComponent, NotificationHistoryComponent, provideTranslations } from '@alfresco/adf-core';\nimport {\n  ContentModule,\n  ContentVersionService,\n  LibraryNameColumnComponent,\n  LibraryRoleColumnComponent,\n  LibraryStatusColumnComponent,\n  TrashcanNameColumnComponent\n} from '@alfresco/adf-content-services';\nimport { DocumentBasePageService, ExtensionsDataLoaderGuard, provideContentAppExtensions } from '@alfresco/aca-shared';\nimport * as rules from '@alfresco/aca-shared/rules';\nimport { AppStoreModule } from './store/app-store.module';\nimport { provideAppExtensions, provideExtensions } from '@alfresco/adf-extensions';\nimport { ContentUrlService } from './services/content-url.service';\nimport { LocationLinkComponent } from './components/common/location-link/location-link.component';\nimport { LogoutComponent } from './components/common/logout/logout.component';\nimport { ToggleSharedComponent } from './components/common/toggle-shared/toggle-shared.component';\nimport { CustomNameColumnComponent } from './components/dl-custom-components/name-column/name-column.component';\nimport { CommentsTabComponent } from './components/info-drawer/comments-tab/comments-tab.component';\nimport { LibraryMetadataTabComponent } from './components/info-drawer/library-metadata-tab/library-metadata-tab.component';\nimport { MetadataTabComponent } from './components/info-drawer/metadata-tab/metadata-tab.component';\nimport { VersionsTabComponent } from './components/info-drawer/versions-tab/versions-tab.component';\nimport { PreviewComponent } from '@alfresco/aca-content/viewer';\nimport { ToggleEditOfflineComponent } from './components/toolbar/toggle-edit-offline/toggle-edit-offline.component';\nimport { ToggleFavoriteLibraryComponent } from './components/toolbar/toggle-favorite-library/toggle-favorite-library.component';\nimport { ToggleFavoriteComponent } from './components/toolbar/toggle-favorite/toggle-favorite.component';\nimport { ToggleInfoDrawerComponent } from './components/toolbar/toggle-info-drawer/toggle-info-drawer.component';\nimport { ToggleJoinLibraryButtonComponent } from './components/toolbar/toggle-join-library/toggle-join-library-button.component';\nimport { ToggleJoinLibraryMenuComponent } from './components/toolbar/toggle-join-library/toggle-join-library-menu.component';\nimport { ViewNodeComponent } from './components/toolbar/view-node/view-node.component';\nimport { CONTENT_ROUTES } from './aca-content.routes';\nimport { provideRouter } from '@angular/router';\nimport { UploadFilesDialogComponent } from './components/upload-files-dialog/upload-files-dialog.component';\nimport { provideFolderRulesExtension } from '@alfresco/aca-content/folder-rules';\nimport { TagsColumnComponent } from './components/dl-custom-components/tags-column/tags-column.component';\nimport { UserInfoComponent } from './components/common/user-info/user-info.component';\nimport { SidenavComponent } from './components/sidenav/sidenav.component';\nimport { ContentManagementService } from './services/content-management.service';\nimport { SHELL_NAVBAR_MIN_WIDTH, ShellLayoutComponent } from '@alfresco/adf-core/shell';\nimport { UserMenuComponent } from './components/sidenav/user-menu/user-menu.component';\nimport { MAT_DIALOG_DEFAULT_OPTIONS } from '@angular/material/dialog';\nimport { SearchResultsRowComponent } from './components/search/search-results-row/search-results-row.component';\nimport { BulkActionsDropdownComponent } from './components/bulk-actions-dropdown/bulk-actions-dropdown.component';\nimport { KnowledgeDiscoverySidenavComponent } from './components/knowledge-discovery/knowledge-discovery-sidenav.component';\nimport { SaveSearchSidenavComponent } from './components/search/search-save/sidenav/save-search-sidenav.component';\nimport { IsFeatureSupportedInCurrentAcsPipe } from './pipes/is-feature-supported.pipe';\n\n@NgModule({\n  imports: [ContentModule.forRoot(), AppStoreModule, HammerModule],\n  providers: [\n    provideRouter(CONTENT_ROUTES),\n    { provide: ContentVersionService, useClass: ContentUrlService },\n    { provide: DocumentBasePageService, useExisting: ContentManagementService },\n    provideAppExtensions(),\n    provideContentAppExtensions(),\n    provideFolderRulesExtension(),\n    provideTranslations('app', 'assets'),\n    { provide: SHELL_NAVBAR_MIN_WIDTH, useValue: 0 },\n    {\n      provide: MAT_DIALOG_DEFAULT_OPTIONS,\n      useValue: { closeOnNavigation: true, hasBackdrop: true, autoFocus: true }\n    },\n    provideExtensions({\n      authGuards: {\n        'app.auth': AuthGuardEcm,\n        'app.extensions.dataLoaderGuard': ExtensionsDataLoaderGuard\n      },\n      components: {\n        'app.layout.main': ShellLayoutComponent,\n        'app.layout.sidenav': SidenavComponent,\n        'app.shell.sibling': UploadFilesDialogComponent,\n        'app.components.tabs.metadata': MetadataTabComponent,\n        'app.components.tabs.library.metadata': LibraryMetadataTabComponent,\n        'app.components.tabs.comments': CommentsTabComponent,\n        'app.components.tabs.versions': VersionsTabComponent,\n        'app.components.preview': PreviewComponent,\n        'app.toolbar.toggleInfoDrawer': ToggleInfoDrawerComponent,\n        'app.toolbar.toggleFavorite': ToggleFavoriteComponent,\n        'app.toolbar.toggleFavoriteLibrary': ToggleFavoriteLibraryComponent,\n        'app.toolbar.toggleJoinLibrary': ToggleJoinLibraryButtonComponent,\n        'app.menu.toggleJoinLibrary': ToggleJoinLibraryMenuComponent,\n        'app.bulk-actions-dropdown': BulkActionsDropdownComponent,\n        'app.shared-link.toggleSharedLink': ToggleSharedComponent,\n        'app.columns.name': CustomNameColumnComponent,\n        'app.columns.libraryName': LibraryNameColumnComponent,\n        'app.columns.libraryRole': LibraryRoleColumnComponent,\n        'app.columns.libraryStatus': LibraryStatusColumnComponent,\n        'app.columns.trashcanName': TrashcanNameColumnComponent,\n        'app.columns.location': LocationLinkComponent,\n        'app.columns.tags': TagsColumnComponent,\n        'app.toolbar.toggleEditOffline': ToggleEditOfflineComponent,\n        'app.toolbar.viewNode': ViewNodeComponent,\n        'app.languagePicker': LanguagePickerComponent,\n        'app.logout': LogoutComponent,\n        'app.user': UserInfoComponent,\n        'app.notification-center': NotificationHistoryComponent,\n        'app.user.menu': UserMenuComponent,\n        'app.search.columns.name': SearchResultsRowComponent,\n        'app.search.navbar': SaveSearchSidenavComponent,\n        'app.knowledgeDiscovery.sidenav': KnowledgeDiscoverySidenavComponent\n      },\n      evaluators: {\n        canToggleJoinLibrary: rules.canToggleJoinLibrary,\n        canToggleSharedLink: rules.canToggleSharedLink,\n        canToggleFileLock: rules.canToggleFileLock,\n        canToggleFavorite: rules.canToggleFavorite,\n        isLibraryManager: rules.isLibraryManager,\n        canEditAspects: rules.canEditAspects,\n        isSmartFolder: rules.isSmartFolder,\n        isMultiSelection: rules.isMultiselection,\n        canPrintFile: rules.canPrintFile,\n        isPreferencesApiAvailable: rules.isPreferencesApiAvailable,\n        isNodeInfoAvailable: rules.isNodeInfoAvailable,\n        isBulkActionsAvailable: rules.isBulkActionsAvailable,\n\n        'app.selection.canDelete': rules.canDeleteSelection,\n        'app.selection.canDownload': rules.canDownloadSelection,\n        'app.selection.notEmpty': rules.hasSelection,\n        'app.selection.canAddFavorite': rules.canAddFavorite,\n        'app.selection.canRemoveFavorite': rules.canRemoveFavorite,\n        'app.selection.first.canUpdate': rules.canUpdateSelectedNode,\n        'app.selection.file': rules.hasFileSelected,\n        'app.selection.file.isLocked': rules.hasLockedFiles,\n        'app.selection.file.canUploadVersion': rules.canUploadVersion,\n        'app.selection.library': rules.hasLibrarySelected,\n        'app.selection.hasLibraryRole': rules.hasLibraryRole,\n        'app.selection.folder': rules.hasFolderSelected,\n        'app.selection.folder.canUpdate': rules.canUpdateSelectedFolder,\n        'app.selection.isCheckedOut': rules.isCheckedOut,\n        'app.selection.isNodeLink': rules.isNodeLink,\n\n        'app.navigation.folder.canCreate': rules.canCreateFolder,\n        'app.navigation.isTrashcan': rules.isTrashcan,\n        'app.navigation.isLibraries': rules.isLibraries,\n        'app.navigation.isSharedFiles': rules.isSharedFiles,\n        'app.navigation.isFavorites': rules.isFavorites,\n        'app.navigation.isRecentFiles': rules.isRecentFiles,\n        'app.navigation.isSearchResults': rules.isSearchResults,\n        'app.navigation.isPreview': rules.isPreview,\n        'app.navigation.isDetails': rules.isDetails,\n\n        'app.canShowLogout': rules.canShowLogout,\n        'app.isContentServiceEnabled': rules.isContentServiceEnabled,\n        'app.areTagsEnabled': rules.areTagsEnabled,\n        'app.areCategoriesEnabled': rules.areCategoriesEnabled,\n        'app.isSSOEnabled': rules.isSSOEnabled,\n        'app.isKnowledgeDiscoveryUrlPresent': rules.isKnowledgeDiscoveryUrlPresent\n      }\n    }),\n    IsFeatureSupportedInCurrentAcsPipe\n  ]\n})\nexport class ContentServiceExtensionModule {}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport { INITIAL_APP_STATE } from '@alfresco/aca-shared/store';\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\n/*\n * Public API Surface of aca-content\n */\n\nexport * from './lib/aca-content.module';\nexport * from './lib/aca-content.routes';\nexport * from './lib/store/initial-state';\nexport * from './lib/services/content-url.service';\nexport * from './lib/services/content-management.service';\nexport * from './lib/services/node-actions.service';\nexport * from './lib/components/info-drawer/comments-tab/external-node-permission-comments-tab.service';\nexport * from './lib/utils/aca-search-utils';\nexport * from './lib/pipes/is-feature-supported.pipe';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i3","i4","take","catchError","i1","i6","i7","filter","map","i5","switchMap"],"mappings":"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"}