@alfresco/aca-content 5.1.1 → 5.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (396) hide show
  1. package/assets/app.extensions.json +9 -0
  2. package/assets/i18n/ar.json +600 -599
  3. package/assets/i18n/cs.json +600 -599
  4. package/assets/i18n/da.json +600 -599
  5. package/assets/i18n/de.json +600 -599
  6. package/assets/i18n/en.json +40 -1
  7. package/assets/i18n/es.json +600 -599
  8. package/assets/i18n/fi.json +600 -599
  9. package/assets/i18n/fr.json +600 -599
  10. package/assets/i18n/it.json +600 -599
  11. package/assets/i18n/ja.json +600 -599
  12. package/assets/i18n/nb.json +600 -599
  13. package/assets/i18n/nl.json +600 -599
  14. package/assets/i18n/pl.json +600 -599
  15. package/assets/i18n/pt-BR.json +600 -599
  16. package/assets/i18n/ru.json +600 -599
  17. package/assets/i18n/sv.json +600 -599
  18. package/assets/i18n/zh-CN.json +600 -599
  19. package/esm2022/about/about.component.mjs +70 -0
  20. package/esm2022/about/aca-about.module.mjs +47 -0
  21. package/esm2022/folder-rules/folder-rules.module.mjs +116 -0
  22. package/esm2022/folder-rules/manage-rules/manage-rules.smart-component.mjs +280 -0
  23. package/esm2022/folder-rules/rule-details/actions/rule-action-list.ui-component.mjs +117 -0
  24. package/esm2022/folder-rules/rule-details/actions/rule-action.ui-component.mjs +359 -0
  25. package/esm2022/folder-rules/rule-details/conditions/rule-composite-condition.ui-component.mjs +171 -0
  26. package/esm2022/folder-rules/rule-details/conditions/rule-simple-condition.ui-component.mjs +237 -0
  27. package/esm2022/folder-rules/rule-details/edit-rule-dialog.ui-component.mjs +80 -0
  28. package/esm2022/folder-rules/rule-details/options/rule-options.ui-component.mjs +129 -0
  29. package/esm2022/folder-rules/rule-details/rule-details.ui-component.mjs +192 -0
  30. package/esm2022/folder-rules/rule-details/triggers/rule-triggers.ui-component.mjs +87 -0
  31. package/esm2022/folder-rules/rule-details/validators/rule-actions.validator.mjs +36 -0
  32. package/esm2022/folder-rules/rule-list/rule-list/rule-list.ui-component.mjs +166 -0
  33. package/esm2022/folder-rules/rule-list/rule-list-grouping/rule-list-grouping.ui-component.mjs +80 -0
  34. package/esm2022/folder-rules/rule-list/rule-list-item/rule-list-item.ui-component.mjs +59 -0
  35. package/esm2022/folder-rules/rule-set-picker/rule-set-picker.smart-component.mjs +125 -0
  36. package/esm2022/folder-rules/services/actions.service.mjs +117 -0
  37. package/esm2022/folder-rules/services/folder-rule-sets.service.mjs +230 -0
  38. package/esm2022/folder-rules/services/folder-rules.service.mjs +195 -0
  39. package/esm2022/lib/aca-content.module.mjs +303 -0
  40. package/esm2022/lib/aca-content.routes.mjs +369 -0
  41. package/esm2022/lib/components/bulk-actions-dropdown/bulk-actions-dropdown.component.mjs +82 -0
  42. package/{esm2020 → esm2022}/lib/components/common/language-picker/language-picker.component.mjs +9 -8
  43. package/esm2022/lib/components/common/location-link/location-link.component.mjs +182 -0
  44. package/{esm2020 → esm2022}/lib/components/common/logout/logout.component.mjs +8 -6
  45. package/esm2022/lib/components/common/toggle-shared/toggle-shared.component.mjs +81 -0
  46. package/esm2022/lib/components/common/user-info/user-info.component.mjs +46 -0
  47. package/esm2022/lib/components/context-menu/base-context-menu.directive.mjs +77 -0
  48. package/esm2022/lib/components/context-menu/context-menu-item.component.mjs +65 -0
  49. package/esm2022/lib/components/context-menu/context-menu-outside-event.directive.mjs +62 -0
  50. package/esm2022/lib/components/context-menu/context-menu-overlay.mjs +33 -0
  51. package/esm2022/lib/components/context-menu/context-menu.component.mjs +84 -0
  52. package/esm2022/lib/components/context-menu/context-menu.service.mjs +127 -0
  53. package/esm2022/lib/components/context-menu/custom-context-menu-actions.token.mjs +26 -0
  54. package/esm2022/lib/components/context-menu/custom-context-menu.component.mjs +79 -0
  55. package/esm2022/lib/components/details/details.component.mjs +154 -0
  56. package/esm2022/lib/components/dl-custom-components/datatable-cell-badges/datatable-cell-badges.component.mjs +75 -0
  57. package/esm2022/lib/components/dl-custom-components/name-column/name-column.component.mjs +106 -0
  58. package/esm2022/lib/components/dl-custom-components/tags-column/tags-column.component.mjs +52 -0
  59. package/esm2022/lib/components/dl-custom-components/thumbnail-column/thumbnail-column.component.mjs +77 -0
  60. package/esm2022/lib/components/favorite-libraries/favorite-libraries.component.mjs +126 -0
  61. package/esm2022/lib/components/favorites/favorites.component.mjs +105 -0
  62. package/esm2022/lib/components/files/files.component.mjs +336 -0
  63. package/esm2022/lib/components/home/home.component.mjs +46 -0
  64. package/esm2022/lib/components/info-drawer/comments-tab/comments-tab.component.mjs +62 -0
  65. package/esm2022/lib/components/info-drawer/info.drawer.module.mjs +74 -0
  66. package/esm2022/lib/components/info-drawer/library-metadata-tab/library-metadata-form.component.mjs +213 -0
  67. package/esm2022/lib/components/info-drawer/library-metadata-tab/library-metadata-tab.component.mjs +47 -0
  68. package/esm2022/lib/components/info-drawer/metadata-tab/metadata-tab.component.mjs +145 -0
  69. package/esm2022/lib/components/info-drawer/versions-tab/versions-tab.component.mjs +107 -0
  70. package/esm2022/lib/components/knowledge-retrieval/search-ai/agents-button/agents-button.component.mjs +135 -0
  71. package/esm2022/lib/components/knowledge-retrieval/search-ai/search-ai-input/search-ai-input.component.mjs +181 -0
  72. package/esm2022/lib/components/knowledge-retrieval/search-ai/search-ai-input-container/search-ai-input-container.component.mjs +77 -0
  73. package/esm2022/lib/components/knowledge-retrieval/search-ai/search-ai-results/search-ai-results.component.mjs +210 -0
  74. package/esm2022/lib/components/libraries/libraries.component.mjs +81 -0
  75. package/esm2022/lib/components/recent-files/recent-files.component.mjs +80 -0
  76. package/esm2022/lib/components/search/search-action-menu/search-action-menu.component.mjs +66 -0
  77. package/esm2022/lib/components/search/search-input/search-input.component.mjs +297 -0
  78. package/esm2022/lib/components/search/search-input-control/search-input-control.component.mjs +94 -0
  79. package/esm2022/lib/components/search/search-libraries-results/search-libraries-query-builder.service.mjs +93 -0
  80. package/esm2022/lib/components/search/search-libraries-results/search-libraries-results.component.mjs +155 -0
  81. package/esm2022/lib/components/search/search-navigation.service.mjs +62 -0
  82. package/esm2022/lib/components/search/search-results/search-results.component.mjs +279 -0
  83. package/esm2022/lib/components/search/search-results-row/search-results-row.component.mjs +149 -0
  84. package/esm2022/lib/components/search/search-save/dialog/delete/saved-search-delete-dialog.component.mjs +82 -0
  85. package/esm2022/lib/components/search/search-save/dialog/edit/saved-search-edit-dialog.component.mjs +116 -0
  86. package/esm2022/lib/components/search/search-save/dialog/save-search-dialog.component.mjs +125 -0
  87. package/esm2022/lib/components/search/search-save/dialog/saved-search-form.interface.mjs +25 -0
  88. package/esm2022/lib/components/search/search-save/dialog/unique-search-name-validator.mjs +45 -0
  89. package/esm2022/lib/components/search/search-save/directive/save-search.directive.mjs +64 -0
  90. package/esm2022/lib/components/search/search-save/list/saved-searches-list-ui.service.mjs +51 -0
  91. package/esm2022/lib/components/search/search-save/list/smart-list/saved-searches-list-schema.mjs +44 -0
  92. package/esm2022/lib/components/search/search-save/list/smart-list/saved-searches-smart-list.component.mjs +50 -0
  93. package/esm2022/lib/components/search/search-save/list/ui-list/saved-searches-list.ui-component.mjs +153 -0
  94. package/esm2022/lib/components/search/search-save/sidenav/save-search-sidenav.component.mjs +94 -0
  95. package/esm2022/lib/components/shared-files/shared-files.component.mjs +85 -0
  96. package/esm2022/lib/components/shared-link-view/shared-link-view.component.mjs +89 -0
  97. package/esm2022/lib/components/sidenav/components/button-menu.component.mjs +66 -0
  98. package/esm2022/lib/components/sidenav/components/expand-menu.component.mjs +73 -0
  99. package/esm2022/lib/components/sidenav/components/sidenav-header.component.mjs +65 -0
  100. package/esm2022/lib/components/sidenav/directives/action.directive.mjs +86 -0
  101. package/esm2022/lib/components/sidenav/directives/active-link.directive.mjs +100 -0
  102. package/esm2022/lib/components/sidenav/directives/expansion-panel.directive.mjs +107 -0
  103. package/esm2022/lib/components/sidenav/directives/menu-panel.directive.mjs +103 -0
  104. package/esm2022/lib/components/sidenav/sidenav.component.mjs +101 -0
  105. package/esm2022/lib/components/sidenav/user-menu/user-menu.component.mjs +57 -0
  106. package/esm2022/lib/components/toolbar/toggle-edit-offline/toggle-edit-offline.component.mjs +143 -0
  107. package/esm2022/lib/components/toolbar/toggle-favorite/toggle-favorite.component.mjs +91 -0
  108. package/esm2022/lib/components/toolbar/toggle-favorite-library/toggle-favorite-library.component.mjs +112 -0
  109. package/esm2022/lib/components/toolbar/toggle-info-drawer/toggle-info-drawer.component.mjs +77 -0
  110. package/esm2022/lib/components/toolbar/toggle-join-library/toggle-join-library-button.component.mjs +107 -0
  111. package/{esm2020 → esm2022}/lib/components/toolbar/toggle-join-library/toggle-join-library-menu.component.mjs +7 -6
  112. package/esm2022/lib/components/toolbar/view-node/view-node.component.mjs +128 -0
  113. package/esm2022/lib/components/trashcan/trashcan.component.mjs +66 -0
  114. package/esm2022/lib/components/upload-files-dialog/upload-files-dialog.component.mjs +55 -0
  115. package/esm2022/lib/components/view-profile/view-profile.component.mjs +200 -0
  116. package/esm2022/lib/dialogs/node-template/create-from-template.dialog.mjs +127 -0
  117. package/esm2022/lib/directives/document-list.directive.mjs +207 -0
  118. package/esm2022/lib/extensions/core.extensions.module.mjs +56 -0
  119. package/esm2022/lib/services/content-management.service.mjs +892 -0
  120. package/esm2022/lib/services/content-url.service.mjs +74 -0
  121. package/esm2022/lib/services/modal-ai.service.mjs +65 -0
  122. package/esm2022/lib/services/node-actions.service.mjs +609 -0
  123. package/esm2022/lib/services/node-template.service.mjs +145 -0
  124. package/esm2022/lib/services/search-ai-navigation.service.mjs +63 -0
  125. package/esm2022/lib/store/app-store.module.mjs +101 -0
  126. package/esm2022/lib/store/effects/app.effects.mjs +46 -0
  127. package/esm2022/lib/store/effects/contextmenu.effects.mjs +65 -0
  128. package/esm2022/lib/store/effects/download.effects.mjs +153 -0
  129. package/esm2022/lib/store/effects/favorite.effects.mjs +72 -0
  130. package/esm2022/lib/store/effects/library.effects.mjs +108 -0
  131. package/esm2022/lib/store/effects/node.effects.mjs +318 -0
  132. package/esm2022/lib/store/effects/search-ai.effects.mjs +54 -0
  133. package/esm2022/lib/store/effects/search.effects.mjs +52 -0
  134. package/esm2022/lib/store/effects/template.effects.mjs +116 -0
  135. package/esm2022/lib/store/effects/upload.effects.mjs +166 -0
  136. package/esm2022/lib/store/effects/viewer.effects.mjs +169 -0
  137. package/esm2022/lib/utils/aca-search-utils.mjs +129 -0
  138. package/esm2022/ms-office/actions/aos.actions.mjs +32 -0
  139. package/esm2022/ms-office/aos-extension.module.mjs +53 -0
  140. package/esm2022/ms-office/aos-extension.service.mjs +136 -0
  141. package/esm2022/ms-office/effects/aos.effects.mjs +45 -0
  142. package/esm2022/public-api.mjs +33 -0
  143. package/esm2022/viewer/lib/components/preview/preview.component.mjs +246 -0
  144. package/esm2022/viewer/lib/components/viewer/viewer.component.mjs +261 -0
  145. package/esm2022/viewer/lib/services/viewer.service.mjs +229 -0
  146. package/esm2022/viewer/lib/viewer.module.mjs +53 -0
  147. package/{fesm2015 → fesm2022}/alfresco-aca-content-about.mjs +17 -19
  148. package/fesm2022/alfresco-aca-content-about.mjs.map +1 -0
  149. package/{fesm2020 → fesm2022}/alfresco-aca-content-folder-rules.mjs +357 -316
  150. package/fesm2022/alfresco-aca-content-folder-rules.mjs.map +1 -0
  151. package/{fesm2020 → fesm2022}/alfresco-aca-content-ms-office.mjs +28 -26
  152. package/fesm2022/alfresco-aca-content-ms-office.mjs.map +1 -0
  153. package/{fesm2020 → fesm2022}/alfresco-aca-content-viewer.mjs +95 -64
  154. package/fesm2022/alfresco-aca-content-viewer.mjs.map +1 -0
  155. package/fesm2022/alfresco-aca-content.mjs +11091 -0
  156. package/fesm2022/alfresco-aca-content.mjs.map +1 -0
  157. package/folder-rules/rule-details/actions/rule-action-list.ui-component.d.ts +1 -1
  158. package/folder-rules/rule-details/actions/rule-action.ui-component.d.ts +1 -1
  159. package/folder-rules/rule-details/conditions/rule-composite-condition.ui-component.d.ts +1 -1
  160. package/folder-rules/rule-details/conditions/rule-simple-condition.ui-component.d.ts +1 -1
  161. package/folder-rules/rule-details/options/rule-options.ui-component.d.ts +1 -1
  162. package/folder-rules/rule-details/rule-details.ui-component.d.ts +1 -1
  163. package/folder-rules/rule-list/rule-list/rule-list.ui-component.d.ts +1 -1
  164. package/folder-rules/rule-list/rule-list-grouping/rule-list-grouping.ui-component.d.ts +1 -1
  165. package/folder-rules/rule-list/rule-list-item/rule-list-item.ui-component.d.ts +1 -1
  166. package/folder-rules/services/folder-rule-sets.service.d.ts +4 -4
  167. package/folder-rules/services/folder-rules.service.d.ts +1 -1
  168. package/lib/components/bulk-actions-dropdown/bulk-actions-dropdown.component.d.ts +5 -10
  169. package/lib/components/common/location-link/location-link.component.d.ts +1 -1
  170. package/lib/components/common/toggle-shared/toggle-shared.component.d.ts +1 -1
  171. package/lib/components/context-menu/base-context-menu.directive.d.ts +20 -0
  172. package/lib/components/context-menu/context-menu-item.component.d.ts +1 -1
  173. package/lib/components/context-menu/context-menu-outside-event.directive.d.ts +1 -1
  174. package/lib/components/context-menu/context-menu.component.d.ts +4 -15
  175. package/lib/components/context-menu/context-menu.service.d.ts +4 -1
  176. package/lib/components/{knowledge-retrieval/search-ai/search-ai-utils.d.ts → context-menu/custom-context-menu-actions.token.d.ts} +2 -2
  177. package/lib/components/context-menu/custom-context-menu.component.d.ts +36 -0
  178. package/lib/components/details/details.component.d.ts +1 -1
  179. package/lib/components/dl-custom-components/datatable-cell-badges/datatable-cell-badges.component.d.ts +1 -1
  180. package/lib/components/dl-custom-components/tags-column/tags-column.component.d.ts +1 -1
  181. package/lib/components/dl-custom-components/thumbnail-column/thumbnail-column.component.d.ts +1 -1
  182. package/lib/components/info-drawer/comments-tab/comments-tab.component.d.ts +1 -1
  183. package/lib/components/info-drawer/library-metadata-tab/library-metadata-form.component.d.ts +1 -1
  184. package/lib/components/info-drawer/library-metadata-tab/library-metadata-tab.component.d.ts +1 -1
  185. package/lib/components/info-drawer/metadata-tab/metadata-tab.component.d.ts +1 -1
  186. package/lib/components/info-drawer/versions-tab/versions-tab.component.d.ts +1 -1
  187. package/lib/components/knowledge-retrieval/search-ai/agents-button/agents-button.component.d.ts +1 -2
  188. package/lib/components/knowledge-retrieval/search-ai/search-ai-input/search-ai-input.component.d.ts +4 -5
  189. package/lib/components/knowledge-retrieval/search-ai/search-ai-input-container/search-ai-input-container.component.d.ts +8 -8
  190. package/lib/components/knowledge-retrieval/search-ai/search-ai-results/search-ai-results.component.d.ts +2 -3
  191. package/lib/components/search/search-input/search-input.component.d.ts +12 -14
  192. package/lib/components/search/search-input-control/search-input-control.component.d.ts +1 -1
  193. package/lib/components/search/search-libraries-results/search-libraries-results.component.d.ts +0 -1
  194. package/lib/components/search/search-results/search-results.component.d.ts +15 -9
  195. package/lib/components/search/search-results-row/search-results-row.component.d.ts +1 -1
  196. package/lib/components/search/search-save/dialog/delete/saved-search-delete-dialog.component.d.ts +16 -0
  197. package/lib/components/search/search-save/dialog/edit/saved-search-edit-dialog.component.d.ts +22 -0
  198. package/lib/components/search/search-save/dialog/save-search-dialog.component.d.ts +23 -0
  199. package/lib/components/search/search-save/dialog/saved-search-form.interface.d.ts +28 -0
  200. package/lib/components/search/search-save/dialog/unique-search-name-validator.d.ts +34 -0
  201. package/lib/components/search/search-save/directive/save-search.directive.d.ts +13 -0
  202. package/lib/components/search/search-save/list/saved-searches-list-ui.service.d.ts +9 -0
  203. package/lib/components/search/search-save/list/smart-list/saved-searches-list-schema.d.ts +33 -0
  204. package/lib/components/search/search-save/list/smart-list/saved-searches-smart-list.component.d.ts +13 -0
  205. package/lib/components/search/search-save/list/ui-list/saved-searches-list.ui-component.d.ts +66 -0
  206. package/lib/components/search/search-save/sidenav/save-search-sidenav.component.d.ts +44 -0
  207. package/lib/components/sidenav/components/button-menu.component.d.ts +1 -1
  208. package/lib/components/sidenav/components/expand-menu.component.d.ts +3 -2
  209. package/lib/components/sidenav/directives/action.directive.d.ts +28 -1
  210. package/lib/components/sidenav/directives/active-link.directive.d.ts +2 -2
  211. package/lib/components/sidenav/directives/expansion-panel.directive.d.ts +1 -1
  212. package/lib/components/sidenav/directives/menu-panel.directive.d.ts +1 -1
  213. package/lib/components/sidenav/sidenav.component.d.ts +4 -3
  214. package/lib/components/sidenav/user-menu/user-menu.component.d.ts +1 -1
  215. package/lib/components/toolbar/toggle-favorite/toggle-favorite.component.d.ts +1 -1
  216. package/lib/components/toolbar/view-node/view-node.component.d.ts +1 -1
  217. package/lib/services/search-ai-navigation.service.d.ts +4 -2
  218. package/lib/store/effects/app.effects.d.ts +2 -3
  219. package/lib/store/effects/contextmenu.effects.d.ts +3 -3
  220. package/lib/store/effects/download.effects.d.ts +0 -30
  221. package/lib/store/effects/favorite.effects.d.ts +0 -28
  222. package/lib/store/effects/library.effects.d.ts +2 -7
  223. package/lib/store/effects/node.effects.d.ts +7 -38
  224. package/lib/store/effects/search-ai.effects.d.ts +0 -4
  225. package/lib/store/effects/search.effects.d.ts +3 -30
  226. package/lib/store/effects/template.effects.d.ts +5 -7
  227. package/lib/store/effects/upload.effects.d.ts +8 -32
  228. package/lib/store/effects/viewer.effects.d.ts +0 -29
  229. package/lib/utils/aca-search-utils.d.ts +67 -0
  230. package/ms-office/effects/aos.effects.d.ts +0 -3
  231. package/package.json +21 -35
  232. package/public-api.d.ts +1 -0
  233. package/ui/overrides/adf-pagination.theme.scss +0 -4
  234. package/ui/theme.scss +9 -4
  235. package/assets/images/agent-avatar-blue.png +0 -0
  236. package/assets/images/agent-avatar-gold.png +0 -0
  237. package/assets/images/agent-avatar-pink.png +0 -0
  238. package/esm2020/about/about.component.mjs +0 -71
  239. package/esm2020/about/aca-about.module.mjs +0 -46
  240. package/esm2020/folder-rules/folder-rules.module.mjs +0 -115
  241. package/esm2020/folder-rules/manage-rules/manage-rules.smart-component.mjs +0 -261
  242. package/esm2020/folder-rules/rule-details/actions/rule-action-list.ui-component.mjs +0 -117
  243. package/esm2020/folder-rules/rule-details/actions/rule-action.ui-component.mjs +0 -351
  244. package/esm2020/folder-rules/rule-details/conditions/rule-composite-condition.ui-component.mjs +0 -172
  245. package/esm2020/folder-rules/rule-details/conditions/rule-simple-condition.ui-component.mjs +0 -234
  246. package/esm2020/folder-rules/rule-details/edit-rule-dialog.ui-component.mjs +0 -74
  247. package/esm2020/folder-rules/rule-details/options/rule-options.ui-component.mjs +0 -129
  248. package/esm2020/folder-rules/rule-details/rule-details.ui-component.mjs +0 -185
  249. package/esm2020/folder-rules/rule-details/triggers/rule-triggers.ui-component.mjs +0 -88
  250. package/esm2020/folder-rules/rule-details/validators/rule-actions.validator.mjs +0 -37
  251. package/esm2020/folder-rules/rule-list/rule-list/rule-list.ui-component.mjs +0 -164
  252. package/esm2020/folder-rules/rule-list/rule-list-grouping/rule-list-grouping.ui-component.mjs +0 -81
  253. package/esm2020/folder-rules/rule-list/rule-list-item/rule-list-item.ui-component.mjs +0 -58
  254. package/esm2020/folder-rules/rule-set-picker/rule-set-picker.smart-component.mjs +0 -120
  255. package/esm2020/folder-rules/services/actions.service.mjs +0 -114
  256. package/esm2020/folder-rules/services/folder-rule-sets.service.mjs +0 -225
  257. package/esm2020/folder-rules/services/folder-rules.service.mjs +0 -193
  258. package/esm2020/lib/aca-content.module.mjs +0 -299
  259. package/esm2020/lib/aca-content.routes.mjs +0 -359
  260. package/esm2020/lib/components/bulk-actions-dropdown/bulk-actions-dropdown.component.mjs +0 -83
  261. package/esm2020/lib/components/common/location-link/location-link.component.mjs +0 -180
  262. package/esm2020/lib/components/common/toggle-shared/toggle-shared.component.mjs +0 -76
  263. package/esm2020/lib/components/common/user-info/user-info.component.mjs +0 -47
  264. package/esm2020/lib/components/context-menu/context-menu-item.component.mjs +0 -62
  265. package/esm2020/lib/components/context-menu/context-menu-outside-event.directive.mjs +0 -63
  266. package/esm2020/lib/components/context-menu/context-menu-overlay.mjs +0 -32
  267. package/esm2020/lib/components/context-menu/context-menu.component.mjs +0 -114
  268. package/esm2020/lib/components/context-menu/context-menu.service.mjs +0 -99
  269. package/esm2020/lib/components/details/details.component.mjs +0 -147
  270. package/esm2020/lib/components/dl-custom-components/datatable-cell-badges/datatable-cell-badges.component.mjs +0 -71
  271. package/esm2020/lib/components/dl-custom-components/name-column/name-column.component.mjs +0 -101
  272. package/esm2020/lib/components/dl-custom-components/tags-column/tags-column.component.mjs +0 -48
  273. package/esm2020/lib/components/dl-custom-components/thumbnail-column/thumbnail-column.component.mjs +0 -75
  274. package/esm2020/lib/components/favorite-libraries/favorite-libraries.component.mjs +0 -120
  275. package/esm2020/lib/components/favorites/favorites.component.mjs +0 -103
  276. package/esm2020/lib/components/files/files.component.mjs +0 -330
  277. package/esm2020/lib/components/home/home.component.mjs +0 -47
  278. package/esm2020/lib/components/info-drawer/comments-tab/comments-tab.component.mjs +0 -59
  279. package/esm2020/lib/components/info-drawer/info.drawer.module.mjs +0 -73
  280. package/esm2020/lib/components/info-drawer/library-metadata-tab/library-metadata-form.component.mjs +0 -206
  281. package/esm2020/lib/components/info-drawer/library-metadata-tab/library-metadata-tab.component.mjs +0 -45
  282. package/esm2020/lib/components/info-drawer/metadata-tab/metadata-tab.component.mjs +0 -134
  283. package/esm2020/lib/components/info-drawer/versions-tab/versions-tab.component.mjs +0 -95
  284. package/esm2020/lib/components/knowledge-retrieval/search-ai/agents-button/agents-button.component.mjs +0 -129
  285. package/esm2020/lib/components/knowledge-retrieval/search-ai/search-ai-input/search-ai-input.component.mjs +0 -171
  286. package/esm2020/lib/components/knowledge-retrieval/search-ai/search-ai-input-container/search-ai-input-container.component.mjs +0 -82
  287. package/esm2020/lib/components/knowledge-retrieval/search-ai/search-ai-results/search-ai-results.component.mjs +0 -199
  288. package/esm2020/lib/components/knowledge-retrieval/search-ai/search-ai-utils.mjs +0 -33
  289. package/esm2020/lib/components/libraries/libraries.component.mjs +0 -79
  290. package/esm2020/lib/components/recent-files/recent-files.component.mjs +0 -82
  291. package/esm2020/lib/components/search/search-action-menu/search-action-menu.component.mjs +0 -64
  292. package/esm2020/lib/components/search/search-input/search-input.component.mjs +0 -301
  293. package/esm2020/lib/components/search/search-input-control/search-input-control.component.mjs +0 -94
  294. package/esm2020/lib/components/search/search-libraries-results/search-libraries-query-builder.service.mjs +0 -90
  295. package/esm2020/lib/components/search/search-libraries-results/search-libraries-results.component.mjs +0 -153
  296. package/esm2020/lib/components/search/search-navigation.service.mjs +0 -60
  297. package/esm2020/lib/components/search/search-results/search-results.component.mjs +0 -255
  298. package/esm2020/lib/components/search/search-results-row/search-results-row.component.mjs +0 -142
  299. package/esm2020/lib/components/shared-files/shared-files.component.mjs +0 -83
  300. package/esm2020/lib/components/shared-link-view/shared-link-view.component.mjs +0 -82
  301. package/esm2020/lib/components/sidenav/components/button-menu.component.mjs +0 -62
  302. package/esm2020/lib/components/sidenav/components/expand-menu.component.mjs +0 -67
  303. package/esm2020/lib/components/sidenav/components/sidenav-header.component.mjs +0 -66
  304. package/esm2020/lib/components/sidenav/directives/action.directive.mjs +0 -75
  305. package/esm2020/lib/components/sidenav/directives/active-link.directive.mjs +0 -93
  306. package/esm2020/lib/components/sidenav/directives/expansion-panel.directive.mjs +0 -102
  307. package/esm2020/lib/components/sidenav/directives/menu-panel.directive.mjs +0 -99
  308. package/esm2020/lib/components/sidenav/sidenav.component.mjs +0 -89
  309. package/esm2020/lib/components/sidenav/user-menu/user-menu.component.mjs +0 -56
  310. package/esm2020/lib/components/toolbar/toggle-edit-offline/toggle-edit-offline.component.mjs +0 -137
  311. package/esm2020/lib/components/toolbar/toggle-favorite/toggle-favorite.component.mjs +0 -86
  312. package/esm2020/lib/components/toolbar/toggle-favorite-library/toggle-favorite-library.component.mjs +0 -107
  313. package/esm2020/lib/components/toolbar/toggle-info-drawer/toggle-info-drawer.component.mjs +0 -74
  314. package/esm2020/lib/components/toolbar/toggle-join-library/toggle-join-library-button.component.mjs +0 -105
  315. package/esm2020/lib/components/toolbar/view-node/view-node.component.mjs +0 -122
  316. package/esm2020/lib/components/trashcan/trashcan.component.mjs +0 -68
  317. package/esm2020/lib/components/upload-files-dialog/upload-files-dialog.component.mjs +0 -52
  318. package/esm2020/lib/components/view-profile/view-profile.component.mjs +0 -193
  319. package/esm2020/lib/dialogs/node-template/create-from-template.dialog.mjs +0 -120
  320. package/esm2020/lib/directives/document-list.directive.mjs +0 -199
  321. package/esm2020/lib/extensions/core.extensions.module.mjs +0 -55
  322. package/esm2020/lib/services/content-management.service.mjs +0 -873
  323. package/esm2020/lib/services/content-url.service.mjs +0 -71
  324. package/esm2020/lib/services/modal-ai.service.mjs +0 -66
  325. package/esm2020/lib/services/node-actions.service.mjs +0 -600
  326. package/esm2020/lib/services/node-template.service.mjs +0 -144
  327. package/esm2020/lib/services/search-ai-navigation.service.mjs +0 -52
  328. package/esm2020/lib/store/app-store.module.mjs +0 -102
  329. package/esm2020/lib/store/effects/app.effects.mjs +0 -49
  330. package/esm2020/lib/store/effects/contextmenu.effects.mjs +0 -55
  331. package/esm2020/lib/store/effects/download.effects.mjs +0 -159
  332. package/esm2020/lib/store/effects/favorite.effects.mjs +0 -76
  333. package/esm2020/lib/store/effects/library.effects.mjs +0 -113
  334. package/esm2020/lib/store/effects/node.effects.mjs +0 -325
  335. package/esm2020/lib/store/effects/search-ai.effects.mjs +0 -57
  336. package/esm2020/lib/store/effects/search.effects.mjs +0 -60
  337. package/esm2020/lib/store/effects/template.effects.mjs +0 -121
  338. package/esm2020/lib/store/effects/upload.effects.mjs +0 -166
  339. package/esm2020/lib/store/effects/viewer.effects.mjs +0 -175
  340. package/esm2020/ms-office/actions/aos.actions.mjs +0 -31
  341. package/esm2020/ms-office/aos-extension.module.mjs +0 -52
  342. package/esm2020/ms-office/aos-extension.service.mjs +0 -132
  343. package/esm2020/ms-office/effects/aos.effects.mjs +0 -48
  344. package/esm2020/public-api.mjs +0 -32
  345. package/esm2020/viewer/lib/components/preview/preview.component.mjs +0 -236
  346. package/esm2020/viewer/lib/components/viewer/viewer.component.mjs +0 -240
  347. package/esm2020/viewer/lib/services/viewer.service.mjs +0 -226
  348. package/esm2020/viewer/lib/viewer.module.mjs +0 -52
  349. package/fesm2015/alfresco-aca-content-about.mjs.map +0 -1
  350. package/fesm2015/alfresco-aca-content-folder-rules.mjs +0 -2662
  351. package/fesm2015/alfresco-aca-content-folder-rules.mjs.map +0 -1
  352. package/fesm2015/alfresco-aca-content-ms-office.mjs +0 -256
  353. package/fesm2015/alfresco-aca-content-ms-office.mjs.map +0 -1
  354. package/fesm2015/alfresco-aca-content-viewer.mjs +0 -700
  355. package/fesm2015/alfresco-aca-content-viewer.mjs.map +0 -1
  356. package/fesm2015/alfresco-aca-content.mjs +0 -9835
  357. package/fesm2015/alfresco-aca-content.mjs.map +0 -1
  358. package/fesm2020/alfresco-aca-content-about.mjs +0 -193
  359. package/fesm2020/alfresco-aca-content-about.mjs.map +0 -1
  360. package/fesm2020/alfresco-aca-content-folder-rules.mjs.map +0 -1
  361. package/fesm2020/alfresco-aca-content-ms-office.mjs.map +0 -1
  362. package/fesm2020/alfresco-aca-content-viewer.mjs.map +0 -1
  363. package/fesm2020/alfresco-aca-content.mjs +0 -9934
  364. package/fesm2020/alfresco-aca-content.mjs.map +0 -1
  365. /package/{esm2020 → esm2022}/about/alfresco-aca-content-about.mjs +0 -0
  366. /package/{esm2020 → esm2022}/about/dev-mode.tokens.mjs +0 -0
  367. /package/{esm2020 → esm2022}/about/package-json.token.mjs +0 -0
  368. /package/{esm2020 → esm2022}/about/public-api.mjs +0 -0
  369. /package/{esm2020 → esm2022}/alfresco-aca-content.mjs +0 -0
  370. /package/{esm2020 → esm2022}/folder-rules/alfresco-aca-content-folder-rules.mjs +0 -0
  371. /package/{esm2020 → esm2022}/folder-rules/folder-rules.rules.mjs +0 -0
  372. /package/{esm2020 → esm2022}/folder-rules/model/action-parameter-constraint.model.mjs +0 -0
  373. /package/{esm2020 → esm2022}/folder-rules/model/rule-action.model.mjs +0 -0
  374. /package/{esm2020 → esm2022}/folder-rules/model/rule-composite-condition.model.mjs +0 -0
  375. /package/{esm2020 → esm2022}/folder-rules/model/rule-grouping-item.model.mjs +0 -0
  376. /package/{esm2020 → esm2022}/folder-rules/model/rule-set.model.mjs +0 -0
  377. /package/{esm2020 → esm2022}/folder-rules/model/rule-simple-condition.model.mjs +0 -0
  378. /package/{esm2020 → esm2022}/folder-rules/model/rule.model.mjs +0 -0
  379. /package/{esm2020 → esm2022}/folder-rules/public-api.mjs +0 -0
  380. /package/{esm2020 → esm2022}/folder-rules/rule-details/conditions/rule-condition-comparators.mjs +0 -0
  381. /package/{esm2020 → esm2022}/folder-rules/rule-details/conditions/rule-condition-fields.mjs +0 -0
  382. /package/{esm2020 → esm2022}/folder-rules/rule-details/validators/rule-composite-condition.validator.mjs +0 -0
  383. /package/{esm2020 → esm2022}/lib/components/common/index.mjs +0 -0
  384. /package/{esm2020 → esm2022}/lib/components/context-menu/direction.token.mjs +0 -0
  385. /package/{esm2020 → esm2022}/lib/components/context-menu/interfaces.mjs +0 -0
  386. /package/{esm2020 → esm2022}/lib/components/search/index.mjs +0 -0
  387. /package/{esm2020 → esm2022}/lib/components/sidenav/index.mjs +0 -0
  388. /package/{esm2020 → esm2022}/lib/components/toolbar/index.mjs +0 -0
  389. /package/{esm2020 → esm2022}/lib/components/view-profile/view-profile.guard.mjs +0 -0
  390. /package/{esm2020 → esm2022}/lib/store/effects.mjs +0 -0
  391. /package/{esm2020 → esm2022}/lib/store/initial-state.mjs +0 -0
  392. /package/{esm2020 → esm2022}/lib/store/reducers/app.reducer.mjs +0 -0
  393. /package/{esm2020 → esm2022}/ms-office/alfresco-aca-content-ms-office.mjs +0 -0
  394. /package/{esm2020 → esm2022}/ms-office/public-api.mjs +0 -0
  395. /package/{esm2020 → esm2022}/viewer/alfresco-aca-content-viewer.mjs +0 -0
  396. /package/{esm2020 → esm2022}/viewer/public-api.mjs +0 -0
@@ -0,0 +1 @@
1
+ {"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/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/components/search/search-navigation.service.ts","../../../../projects/aca-content/src/lib/utils/aca-search-utils.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/direction.token.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/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/services/search-ai-navigation.service.ts","../../../../projects/aca-content/src/lib/store/effects/search-ai.effects.ts","../../../../projects/aca-content/src/lib/store/effects.ts","../../../../projects/aca-content/src/lib/store/initial-state.ts","../../../../projects/aca-content/src/lib/store/app-store.module.ts","../../../../projects/aca-content/src/lib/extensions/core.extensions.module.ts","../../../../projects/aca-content/src/lib/components/info-drawer/comments-tab/comments-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/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/versions-tab/versions-tab.component.ts","../../../../projects/aca-content/src/lib/components/info-drawer/info.drawer.module.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/toggle-favorite-library/toggle-favorite-library.component.ts","../../../../projects/aca-content/src/lib/components/toolbar/toggle-edit-offline/toggle-edit-offline.component.ts","../../../../projects/aca-content/src/lib/components/toolbar/view-node/view-node.component.ts","../../../../projects/aca-content/src/lib/components/toolbar/index.ts","../../../../projects/aca-content/src/lib/components/sidenav/directives/expansion-panel.directive.ts","../../../../projects/aca-content/src/lib/components/sidenav/directives/menu-panel.directive.ts","../../../../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/components/button-menu.component.ts","../../../../projects/aca-content/src/lib/components/sidenav/components/button-menu.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/sidenav/index.ts","../../../../projects/aca-content/src/lib/components/common/location-link/location-link.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/common/language-picker/language-picker.component.ts","../../../../projects/aca-content/src/lib/components/common/logout/logout.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/common/index.ts","../../../../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/search/search-libraries-results/search-libraries-query-builder.service.ts","../../../../projects/aca-content/src/lib/components/search/search-input-control/search-input-control.component.ts","../../../../projects/aca-content/src/lib/components/search/search-input-control/search-input-control.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/directives/document-list.directive.ts","../../../../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/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/dl-custom-components/tags-column/tags-column.component.ts","../../../../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/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/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/services/modal-ai.service.ts","../../../../projects/aca-content/src/lib/components/knowledge-retrieval/search-ai/search-ai-input/search-ai-input.component.ts","../../../../projects/aca-content/src/lib/components/knowledge-retrieval/search-ai/search-ai-input/search-ai-input.component.html","../../../../projects/aca-content/src/lib/components/knowledge-retrieval/search-ai/search-ai-input-container/search-ai-input-container.component.ts","../../../../projects/aca-content/src/lib/components/knowledge-retrieval/search-ai/search-ai-input-container/search-ai-input-container.component.html","../../../../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/index.ts","../../../../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/files/files.component.ts","../../../../projects/aca-content/src/lib/components/files/files.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/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/knowledge-retrieval/search-ai/search-ai-results/search-ai-results.component.ts","../../../../projects/aca-content/src/lib/components/knowledge-retrieval/search-ai/search-ai-results/search-ai-results.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/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/knowledge-retrieval/search-ai/agents-button/agents-button.component.ts","../../../../projects/aca-content/src/lib/components/knowledge-retrieval/search-ai/agents-button/agents-button.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/public-api.ts","../../../../projects/aca-content/src/alfresco-aca-content.ts"],"sourcesContent":["/*!\n * Copyright © 2005-2024 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-2024 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-2024 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 } 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 { AlfrescoApiService, ContentVersionService } from '@alfresco/adf-content-services';\n\n@Injectable({ providedIn: 'root' })\nexport class ContentUrlService extends ContentVersionService {\n constructor(private store: Store<AppStore>, private contentApiService: ContentApiService, alfrescoApiService: AlfrescoApiService) {\n super(alfrescoApiService);\n }\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-2024 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 store = inject(Store<AppStore>);\n private actions$ = inject(Actions);\n private contentApi = inject(ContentApiService);\n private dialog = inject(MatDialog);\n private 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-2024 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 } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Observable, Subject, of, zip, from } from 'rxjs';\nimport { ThumbnailService, TranslationService } from '@alfresco/adf-core';\nimport {\n AlfrescoApiService,\n DocumentListService,\n ContentNodeSelectorComponent,\n ContentNodeSelectorComponentData,\n ContentNodeDialogService,\n ShareDataRow,\n NodeAction,\n ContentService\n} from '@alfresco/adf-content-services';\nimport { NodeEntry, Node, SitePaging, NodeChildAssociationPaging, NodeChildAssociationEntry, NodesApi, Site, SitePagingList } from '@alfresco/js-api';\nimport { ContentApiService } from '@alfresco/aca-shared';\nimport { catchError, map, mergeMap } from 'rxjs/operators';\n\ntype BatchOperationType = Extract<NodeAction, NodeAction.COPY | NodeAction.MOVE>;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NodeActionsService {\n contentCopied: Subject<NodeEntry[]> = new Subject<NodeEntry[]>();\n contentMoved: Subject<any> = new Subject<any>();\n moveDeletedEntries: any[] = [];\n isSitesDestinationAvailable = false;\n\n _nodesApi: NodesApi;\n get nodesApi(): NodesApi {\n this._nodesApi = this._nodesApi ?? new NodesApi(this.apiService.getInstance());\n return this._nodesApi;\n }\n\n constructor(\n private contentService: ContentService,\n private contentApi: ContentApiService,\n private dialog: MatDialog,\n private documentListService: DocumentListService,\n private apiService: AlfrescoApiService,\n private translation: TranslationService,\n private thumbnailService: ThumbnailService\n ) {}\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 * 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 }\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 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 } as SitePagingList\n });\n\n const title = this.getTitleTranslation(action, contentEntities);\n\n this.isSitesDestinationAvailable = false;\n const data: ContentNodeSelectorComponentData = {\n selectionMode: 'single',\n title,\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 };\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 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 private 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 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 (e) {\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 (e) {\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) {\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-2024 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 SnackbarAction,\n SnackbarErrorAction,\n SnackbarInfoAction,\n SnackbarUserAction,\n SnackbarWarningAction,\n UndoDeleteNodesAction,\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 { NotificationService, TranslationService, ConfirmDialogComponent } 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 { NodeActionsService } from './node-actions.service';\nimport { Router } from '@angular/router';\n\ninterface RestoredNode {\n status: number;\n entry: Node;\n statusCode?: number;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ContentManagementService {\n private notificationService = inject(NotificationService);\n private readonly createMenuButtonSelector = 'app-toolbar-menu button[id=\"app.toolbar.create\"]';\n\n constructor(\n private nodesApiService: NodesApiService,\n private store: Store<AppStore>,\n private contentApi: ContentApiService,\n private permission: NodePermissionService,\n private dialogRef: MatDialog,\n private nodeActionsService: NodeActionsService,\n private translation: TranslationService,\n private nodeAspectService: NodeAspectService,\n private appHookService: AppHookService,\n private newVersionUploaderService: NewVersionUploaderService,\n private router: Router,\n private appSettingsService: AppSettingsService,\n private documentListService: DocumentListService\n ) {}\n\n addFavorite(nodes: Array<NodeEntry>) {\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 this.store.dispatch(new SetSelectedNodesAction(favoriteNodes));\n });\n }\n }\n\n removeFavorite(nodes: Array<NodeEntry>) {\n if (nodes && nodes.length > 0) {\n this.contentApi.removeFavorite(nodes).subscribe(() => {\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 this.store.dispatch(new SetSelectedNodesAction(favoriteNodes));\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 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 });\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.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[]) {\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 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[] = []) {\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.showRestoreNotification(status);\n this.documentListService.reload();\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 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 (err) {\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 numberOfCopiedItems = newItems ? newItems.length : 0;\n const failedItems = nodes.length - numberOfCopiedItems;\n\n let i18nMessageString = 'APP.MESSAGES.ERRORS.GENERIC';\n\n if (typeof info === 'string') {\n if (info.toLowerCase().indexOf('succes') !== -1) {\n let i18MessageSuffix;\n\n if (failedItems) {\n if (numberOfCopiedItems) {\n i18MessageSuffix = numberOfCopiedItems === 1 ? 'PARTIAL_SINGULAR' : 'PARTIAL_PLURAL';\n } else {\n i18MessageSuffix = failedItems === 1 ? 'FAIL_SINGULAR' : 'FAIL_PLURAL';\n }\n } else {\n i18MessageSuffix = numberOfCopiedItems === 1 ? 'SINGULAR' : 'PLURAL';\n }\n\n i18nMessageString = `APP.MESSAGES.INFO.NODE_COPY.${i18MessageSuffix}`;\n }\n } else {\n try {\n const {\n error: { statusCode }\n } = JSON.parse(info.message);\n\n if (statusCode === 403) {\n i18nMessageString = 'APP.MESSAGES.ERRORS.PERMISSION';\n }\n } catch {}\n }\n\n const undo = numberOfCopiedItems > 0 ? this.translation.instant('APP.ACTIONS.UNDO') : '';\n\n const message = this.translation.instant(i18nMessageString, {\n success: numberOfCopiedItems,\n failed: failedItems\n });\n\n this.notificationService\n .openSnackMessageAction(message, undo, {\n panelClass: 'info-snackbar'\n })\n .onAction()\n .subscribe(() => this.undoCopyNodes(newItems));\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 this.store.dispatch(\n new ViewNodeVersionAction(node.id, newVersionUploaderData.versionId, {\n location: this.router.url\n })\n );\n break;\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[]): void {\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 message = this.getDeleteMessage(status);\n\n if (message && status.someSucceeded) {\n message.userAction = new SnackbarUserAction('APP.ACTIONS.UNDO', new UndoDeleteNodesAction([...status.success]));\n }\n\n this.store.dispatch(message);\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 const message = this.getUndoDeleteMessage(processedData);\n this.store.dispatch(message);\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 getUndoDeleteMessage(status: DeleteStatus): SnackbarAction {\n if (status.someFailed && !status.oneFailed) {\n return new SnackbarErrorAction('APP.MESSAGES.ERRORS.NODE_RESTORE_PLURAL', { number: status.fail.length });\n }\n\n if (status.oneFailed) {\n return new SnackbarErrorAction('APP.MESSAGES.ERRORS.NODE_RESTORE', {\n name: status.fail[0].name\n });\n }\n\n return null;\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 message = this.getRestoreMessage(status);\n\n if (message) {\n if (status.oneSucceeded && !status.someFailed) {\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 let navigate;\n\n if (this.isLibraryContent(path)) {\n navigate = new NavigateToParentFolder(status.success[0]);\n } else {\n navigate = new NavigateRouteAction(route);\n }\n\n message.userAction = new SnackbarUserAction('APP.ACTIONS.VIEW', navigate);\n }\n\n this.store.dispatch(message);\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 getRestoreMessage(status: DeleteStatus): SnackbarAction {\n if (status.someFailed && !status.oneFailed) {\n return new SnackbarErrorAction('APP.MESSAGES.ERRORS.TRASH.NODES_RESTORE.PARTIAL_PLURAL', {\n number: status.fail.length\n });\n }\n\n if (status.oneFailed && status.fail[0].statusCode) {\n if (status.fail[0].statusCode === 409) {\n return new SnackbarErrorAction('APP.MESSAGES.ERRORS.TRASH.NODES_RESTORE.NODE_EXISTS', {\n name: status.fail[0].entry.name\n });\n } else {\n return new SnackbarErrorAction('APP.MESSAGES.ERRORS.TRASH.NODES_RESTORE.GENERIC', {\n name: status.fail[0].entry.name\n });\n }\n }\n\n if (status.oneFailed && !status.fail[0].statusCode) {\n return new SnackbarErrorAction('APP.MESSAGES.ERRORS.TRASH.NODES_RESTORE.LOCATION_MISSING', {\n name: status.fail[0].entry.name\n });\n }\n\n if (status.allSucceeded && !status.oneSucceeded) {\n return new SnackbarInfoAction('APP.MESSAGES.INFO.TRASH.NODES_RESTORE.PLURAL');\n }\n\n if (status.allSucceeded && status.oneSucceeded) {\n return new SnackbarInfoAction('APP.MESSAGES.INFO.TRASH.NODES_RESTORE.SINGULAR', {\n name: status.success[0].entry.name\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 getDeleteMessage(status: DeleteStatus): SnackbarAction {\n if (status.allFailed && !status.oneFailed) {\n return new SnackbarErrorAction('APP.MESSAGES.ERRORS.NODE_DELETION_PLURAL', { number: status.fail.length });\n }\n\n if (status.allSucceeded && !status.oneSucceeded) {\n return new SnackbarInfoAction('APP.MESSAGES.INFO.NODE_DELETION.PLURAL', {\n number: status.success.length\n });\n }\n\n if (status.someFailed && status.someSucceeded && !status.oneSucceeded) {\n return new SnackbarWarningAction('APP.MESSAGES.INFO.NODE_DELETION.PARTIAL_PLURAL', {\n success: status.success.length,\n failed: status.fail.length\n });\n }\n\n if (status.someFailed && status.oneSucceeded) {\n return new SnackbarWarningAction('APP.MESSAGES.INFO.NODE_DELETION.PARTIAL_SINGULAR', {\n success: status.success.length,\n failed: status.fail.length\n });\n }\n\n if (status.oneFailed && !status.someSucceeded) {\n return new SnackbarErrorAction('APP.MESSAGES.ERRORS.NODE_DELETION', {\n name: status.fail[0].name\n });\n }\n\n if (status.oneSucceeded && !status.someFailed) {\n return new SnackbarInfoAction('APP.MESSAGES.INFO.NODE_DELETION.SINGULAR', { name: status.success[0].name });\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 // 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: 'info-snackbar'\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","/*!\n * Copyright © 2005-2024 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 store = inject(Store<AppStore>);\n private actions$ = inject(Actions);\n private 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);\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);\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);\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);\n }\n });\n }\n })\n ),\n { dispatch: false }\n );\n}\n","/*!\n * Copyright © 2005-2024 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 ManageAspectsAction,\n ManagePermissionsAction,\n ManageRulesAction,\n ManageVersionsAction,\n MoveNodesAction,\n NavigateRouteAction,\n NavigateUrlAction,\n NodeActionTypes,\n PrintFileAction,\n PurgeDeletedNodesAction,\n RestoreDeletedNodesAction,\n SetInfoDrawerStateAction,\n ShareNodeAction,\n ShowLoaderAction,\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';\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);\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);\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);\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);\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 this.store.dispatch(new ShowLoaderAction(true));\n if (action?.payload?.length > 0) {\n this.contentService.deleteNodes(action.payload);\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);\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 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 = 'personal-files/details';\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 = 'personal-files/details';\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 const route = 'personal-files/details';\n\n if (action?.payload) {\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 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","/*!\n * Copyright © 2005-2024 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 store = inject(Store<AppStore>);\n private actions$ = inject(Actions);\n private router = inject(Router);\n private extensions = inject(AppExtensionService);\n private 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-2024 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 } from '@angular/core';\nimport { Router } from '@angular/router';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SearchNavigationService {\n private _previousRoute = '';\n\n get previousRoute(): string {\n return this._previousRoute;\n }\n\n constructor(private router: Router) {}\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","/*!\n * Copyright © 2005-2024 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 { Buffer } from 'buffer';\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 input = input.trim().toUpperCase();\n\n const operators = ['AND', 'OR'];\n return operators.includes(input);\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 * @returns string\n */\nexport function formatSearchTermByFields(term: string, fields: string[]): string {\n let prefix = '';\n let suffix = '*';\n\n if (term.startsWith('=')) {\n prefix = '=';\n suffix = '';\n term = term.substring(1);\n }\n\n if (term === '*') {\n prefix = '';\n suffix = '';\n }\n\n return '(' + fields.map((field) => `${prefix}${field}:\"${term}${suffix}\"`).join(' OR ') + ')';\n}\n\n/**\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 * @returns string\n */\nexport function formatSearchTerm(userInput: string, fields = ['cm:name']): string {\n if (!userInput) {\n return '';\n }\n userInput = userInput.trim();\n\n if (userInput.includes(':') || userInput.includes('\"')) {\n return userInput;\n }\n\n const words = userInput.split(' ');\n\n if (words.length > 1) {\n const separator = words.some(isOperator) ? ' ' : ' AND ';\n return words.map((term) => (isOperator(term) ? term : formatSearchTermByFields(term, fields))).join(separator);\n }\n\n return formatSearchTermByFields(userInput, fields);\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(Buffer.from(encodedQuery, 'base64').toString('utf-8'));\n return decodedQuery.userQuery;\n }\n return '';\n}\n\n/**\n * Extracts user query from encoded query and splits it to get a search term\n *\n * @param encodedQuery encoded query\n * @returns string\n */\nexport function extractSearchedWordFromEncodedQuery(encodedQuery: string): string {\n if (encodedQuery) {\n const userQuery = extractUserQueryFromEncodedQuery(encodedQuery);\n return userQuery !== '' && userQuery !== undefined\n ? userQuery\n .split('AND')\n .map((searchCondition) => {\n const searchTerm = searchCondition.split('\"')[1];\n return searchTerm === '*' ? searchTerm : searchTerm.slice(0, -1);\n })\n .join(' ')\n : '';\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 = Buffer.from(encodedQuery, 'base64').toString('utf-8');\n return JSON.parse(decodedQuery);\n }\n return null;\n}\n","/*!\n * Copyright © 2005-2024 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';\nimport { formatSearchTerm } from '../../utils/aca-search-utils';\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 query = formatSearchTerm(action.payload, this.queryBuilder.config['app:fields']);\n const libItem = action.searchOptions.find((item) => item.id === SearchOptionIds.Libraries);\n const librarySelected = !!libItem && libItem.value;\n this.queryBuilder.navigateToSearch(query, librarySelected ? '/search-libraries' : '/search');\n })\n ),\n { dispatch: false }\n );\n}\n","/*!\n * Copyright © 2005-2024 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} 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 } from 'rxjs/operators';\nimport { ContentApiService } from '@alfresco/aca-shared';\nimport { ContentManagementService } from '../../services/content-management.service';\nimport { NotificationService } from '@alfresco/adf-core';\n\n@Injectable()\nexport class LibraryEffects {\n private notificationService = inject(NotificationService);\n private store = inject(Store<AppStore>);\n private actions$ = inject(Actions);\n private content = inject(ContentManagementService);\n private 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 map((libraryId) => new NavigateLibraryAction(libraryId))\n ),\n { dispatch: true }\n );\n\n navigateLibrary$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<NavigateLibraryAction>(LibraryActionTypes.Navigate),\n map((action) => {\n const libraryId = action.payload;\n if (libraryId) {\n this.contentApi\n .getNode(libraryId, { relativePath: '/documentLibrary' })\n .pipe(map((node) => node.entry.id))\n .subscribe(\n (id) => {\n const route = action.route ? action.route : 'libraries';\n this.store.dispatch(new NavigateRouteAction([route, id]));\n },\n () => {\n this.notificationService.showError('APP.MESSAGES.ERRORS.MISSING_CONTENT');\n }\n );\n }\n })\n ),\n { dispatch: false }\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-2024 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 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-2024 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, OnInit } 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 { TranslateModule } 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 standalone: true,\n imports: [CommonModule, TranslateModule, 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 encapsulation: ViewEncapsulation.None\n})\nexport class CreateFromTemplateDialogComponent implements OnInit {\n public form: UntypedFormGroup;\n\n title = '';\n\n constructor(\n private translationService: TranslationService,\n private store: Store<AppStore>,\n private formBuilder: UntypedFormBuilder,\n private dialogRef: MatDialogRef<CreateFromTemplateDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: Node\n ) {}\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\"></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\">\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')\">\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')\">\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 mat-button mat-dialog-close data-automation-id=\"create-from-template-dialog-cancel-button\">\n {{ 'NODE_FROM_TEMPLATE.CANCEL' | translate }}\n </button>\n <button\n class=\"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-2024 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 } 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 alfrescoApiService = inject(AlfrescoApiService);\n private notificationService = inject(NotificationService);\n private translation = inject(TranslationService);\n private dialog = inject(MatDialog);\n\n private currentTemplateConfig: TemplateDialogConfig = null;\n private rootNode: ResultNode;\n\n private _searchApi: SearchApi;\n get searchApi(): SearchApi {\n this._searchApi = this._searchApi ?? new SearchApi(this.alfrescoApiService.getInstance());\n return this._searchApi;\n }\n\n 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 };\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-2024 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 } 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 notificationService = inject(NotificationService);\n private documentListService = inject(DocumentListService);\n\n private _nodesApi: NodesApi;\n get nodesApi(): NodesApi {\n this._nodesApi = this._nodesApi ?? new NodesApi(this.apiService.getInstance());\n return this._nodesApi;\n }\n\n 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(() => {\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 (e) {\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-2024 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 overlayRef: OverlayRef) {}\n\n close(): void {\n this.overlayRef.dispose();\n }\n}\n","/*!\n * Copyright © 2005-2024 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-2024 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 { ContentActionRef, DynamicExtensionComponent } from '@alfresco/adf-extensions';\nimport { AppExtensionService } from '@alfresco/aca-shared';\nimport { CommonModule } from '@angular/common';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { IconComponent } from '@alfresco/adf-core';\n\n@Component({\n standalone: true,\n imports: [CommonModule, TranslateModule, 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 @Input()\n actionRef: ContentActionRef;\n\n constructor(private extensions: AppExtensionService) {}\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 />\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-2024 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, Output, EventEmitter, OnInit, OnDestroy } from '@angular/core';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\n@Directive({\n standalone: true,\n selector: '[acaContextMenuOutsideEvent]'\n})\nexport class OutsideEventDirective implements OnInit, OnDestroy {\n private subscriptions: Subscription[] = [];\n\n @Output()\n clickOutside: EventEmitter<void> = new EventEmitter();\n\n ngOnInit() {\n this.subscriptions = this.subscriptions.concat([\n fromEvent(document.body, 'click')\n .pipe(filter((event) => !this.findAncestor(event.target as Element)))\n .subscribe(() => this.clickOutside.next())\n ]);\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach((subscription) => subscription.unsubscribe());\n this.subscriptions = [];\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-2024 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, Inject, Directive } 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 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 constructor(\n private readonly contextMenuOverlayRef: ContextMenuOverlayRef,\n protected extensions: AppExtensionService,\n @Inject(CONTEXT_MENU_DIRECTION) public direction: Direction\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-2024 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, AfterViewInit, Inject, inject, DestroyRef } from '@angular/core';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { DynamicExtensionComponent } 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';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } 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 standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\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 private readonly destroyRef = inject(DestroyRef);\n\n constructor(contextMenuOverlayRef: ContextMenuOverlayRef, extensions: AppExtensionService, @Inject(CONTEXT_MENU_DIRECTION) direction: Direction) {\n super(contextMenuOverlayRef, extensions, direction);\n }\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 setTimeout(() => this.trigger.openMenu(), 0);\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 />\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-2024 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-2024 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, ViewEncapsulation } from '@angular/core';\nimport { Direction } from '@angular/cdk/bidi';\nimport { ContextMenuOverlayRef } from './context-menu-overlay';\nimport { AppExtensionService } from '@alfresco/aca-shared';\nimport { CONTEXT_MENU_DIRECTION } from './direction.token';\nimport { ContentActionRef, DynamicExtensionComponent } from '@alfresco/adf-extensions';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } 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 TranslateModule,\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 standalone: true\n})\nexport class CustomContextMenuComponent extends BaseContextMenuDirective implements AfterViewInit {\n constructor(\n contextMenuOverlayRef: ContextMenuOverlayRef,\n extensions: AppExtensionService,\n @Inject(CONTEXT_MENU_DIRECTION) direction: Direction,\n @Inject(CONTEXT_MENU_CUSTOM_ACTIONS) customActions: ContentActionRef[]\n ) {\n super(contextMenuOverlayRef, extensions, direction);\n this.actions = customActions;\n }\n\n ngAfterViewInit() {\n setTimeout(() => this.trigger.openMenu(), 0);\n }\n}\n","/*!\n * Copyright © 2005-2024 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 } 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 direction: Directionality;\n\n constructor(private injector: Injector, private overlay: Overlay, private userPreferenceService: UserPreferencesService) {\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-2024 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-2024 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 } from '@angular/core';\nimport { Params, Router } from '@angular/router';\nimport { SearchAiService } from '@alfresco/adf-content-services';\n\n@Injectable({ providedIn: 'root' })\nexport class SearchAiNavigationService {\n private readonly knowledgeRetrievalRoute = '/knowledge-retrieval';\n\n private previousRoute = '';\n\n constructor(private router: Router, private searchAiService: SearchAiService) {}\n\n navigateToPreviousRouteOrCloseInput(): void {\n if (this.router.url.includes(this.knowledgeRetrievalRoute)) {\n void this.router.navigateByUrl(this.previousRoute || '/personal-files');\n } else {\n this.searchAiService.updateSearchAiInputState({\n active: false\n });\n }\n }\n\n navigateToSearchAi(queryParams: Params): void {\n if (!this.router.url.includes(this.knowledgeRetrievalRoute)) {\n this.previousRoute = this.router.url;\n }\n void this.router.navigate([this.knowledgeRetrievalRoute], { queryParams });\n }\n}\n","/*!\n * Copyright © 2005-2024 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 { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { SearchAiActionTypes, SearchByTermAiAction, ToggleAISearchInput } from '@alfresco/aca-shared/store';\nimport { map } from 'rxjs/operators';\nimport { SearchAiNavigationService } from '../../services/search-ai-navigation.service';\nimport { SearchAiService } from '@alfresco/adf-content-services';\nimport { Params } from '@angular/router';\n\n@Injectable()\nexport class SearchAiEffects {\n private actions$ = inject(Actions);\n private searchNavigationService = inject(SearchAiNavigationService);\n private searchAiService = inject(SearchAiService);\n searchByTerm$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<SearchByTermAiAction>(SearchAiActionTypes.SearchByTermAi),\n map((action) => {\n const queryParams: Params = {\n query: encodeURIComponent(action.payload.searchTerm),\n agentId: action.payload.agentId\n };\n this.searchNavigationService.navigateToSearchAi(queryParams);\n })\n ),\n { dispatch: false }\n );\n\n toggleAISearchInput$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType<ToggleAISearchInput>(SearchAiActionTypes.ToggleAiSearchInput),\n map((action) =>\n this.searchAiService.updateSearchAiInputState({\n active: true,\n selectedAgentId: action.agentId,\n searchTerm: action.searchTerm\n })\n )\n ),\n { dispatch: false }\n );\n}\n","/*!\n * Copyright © 2005-2024 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';\nexport * from './effects/search-ai.effects';\n","/*!\n * Copyright © 2005-2024 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_STATE, INITIAL_APP_STATE } from '@alfresco/aca-shared/store';\n","/*!\n * Copyright © 2005-2024 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 { StoreModule } from '@ngrx/store';\nimport { appReducer } from './reducers/app.reducer';\nimport { StoreRouterConnectingModule, FullRouterStateSerializer } from '@ngrx/router-store';\nimport { EffectsModule } from '@ngrx/effects';\nimport { RouterEffects, SnackbarEffects } from '@alfresco/aca-shared/store';\nimport {\n AppEffects,\n NodeEffects,\n DownloadEffects,\n ViewerEffects,\n SearchEffects,\n LibraryEffects,\n UploadEffects,\n FavoriteEffects,\n TemplateEffects,\n ContextMenuEffects\n} from './effects';\nimport { INITIAL_STATE } from './initial-state';\nimport { SearchAiEffects } from './effects/search-ai.effects';\n\n@NgModule({\n imports: [\n StoreModule.forRoot(\n { app: appReducer },\n {\n initialState: INITIAL_STATE,\n runtimeChecks: {\n strictStateImmutability: false,\n strictActionImmutability: false\n }\n }\n ),\n StoreRouterConnectingModule.forRoot({\n serializer: FullRouterStateSerializer,\n stateKey: 'router'\n }),\n EffectsModule.forRoot([\n AppEffects,\n NodeEffects,\n DownloadEffects,\n ViewerEffects,\n SearchEffects,\n LibraryEffects,\n UploadEffects,\n FavoriteEffects,\n TemplateEffects,\n ContextMenuEffects,\n SearchAiEffects,\n SnackbarEffects,\n RouterEffects\n ])\n ]\n})\nexport class AppStoreModule {}\n","/*!\n * Copyright © 2005-2024 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 { APP_INITIALIZER, ModuleWithProviders, NgModule } from '@angular/core';\nimport { ExtensionsModule } from '@alfresco/adf-extensions';\nimport { AppExtensionService } from '@alfresco/aca-shared';\n\nexport function setupExtensions(service: AppExtensionService): () => void {\n return () => service.load();\n}\n\n@NgModule({\n imports: [ExtensionsModule]\n})\nexport class CoreExtensionsModule {\n static forRoot(): ModuleWithProviders<CoreExtensionsModule> {\n return {\n ngModule: CoreExtensionsModule,\n providers: [\n {\n provide: APP_INITIALIZER,\n useFactory: setupExtensions,\n deps: [AppExtensionService],\n multi: true\n }\n ]\n };\n }\n}\n","/*!\n * Copyright © 2005-2024 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 } from '@angular/core';\nimport { Node } from '@alfresco/js-api';\nimport { NodePermissionService, isLocked } from '@alfresco/aca-shared';\nimport { MatCardModule } from '@angular/material/card';\nimport { NodeCommentsModule } from '@alfresco/adf-content-services';\n\n@Component({\n standalone: true,\n imports: [MatCardModule, NodeCommentsModule],\n selector: 'app-comments-tab',\n template: `<mat-card class=\"adf-comments-tab-container\" appearance=\"raised\"\n ><adf-node-comments [readOnly]=\"!canUpdateNode\" [nodeId]=\"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 @Input()\n node: Node;\n\n canUpdateNode = false;\n\n constructor(private permission: NodePermissionService) {}\n\n ngOnInit(): void {\n if (!this.node) {\n this.canUpdateNode = false;\n }\n if (this.node.isFolder || (this.node.isFile && !isLocked({ entry: this.node }))) {\n this.canUpdateNode = this.permission.check(this.node, ['update']);\n }\n }\n}\n","/*!\n * Copyright © 2005-2024 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, OnInit, OnDestroy } from '@angular/core';\nimport { Node } from '@alfresco/js-api';\nimport { NodePermissionService, isLocked, AppExtensionService } from '@alfresco/aca-shared';\nimport { AppStore, EditOfflineAction, NodeActionTypes, infoDrawerMetadataAspect } from '@alfresco/aca-shared/store';\nimport { AppConfigService, NotificationService } from '@alfresco/adf-core';\nimport { Observable, Subject } from 'rxjs';\nimport {\n ContentMetadataService,\n ContentMetadataCustomPanel,\n TagService,\n CategoryService,\n ContentMetadataComponent\n} from '@alfresco/adf-content-services';\nimport { filter, map, takeUntil } from 'rxjs/operators';\nimport { CommonModule } from '@angular/common';\nimport { Actions, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\n\n@Component({\n standalone: true,\n imports: [CommonModule, ContentMetadataComponent],\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 encapsulation: ViewEncapsulation.None,\n host: { class: 'app-metadata-tab' }\n})\nexport class MetadataTabComponent implements OnInit, OnDestroy {\n protected onDestroy$ = new Subject<boolean>();\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 constructor(\n private permission: NodePermissionService,\n protected extensions: AppExtensionService,\n private appConfig: AppConfigService,\n private notificationService: NotificationService,\n private contentMetadataService: ContentMetadataService,\n private actions$: Actions,\n private tagService: TagService,\n private categoryService: CategoryService,\n private store: Store<AppStore>\n ) {\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.tagService.areTagsEnabled();\n this._displayCategories = this.categoryService.areCategoriesEnabled();\n\n this.contentMetadataService.error.pipe(takeUntil(this.onDestroy$)).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 takeUntil(this.onDestroy$)\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 takeUntil(this.onDestroy$)\n );\n this.store\n .select(infoDrawerMetadataAspect)\n .pipe(takeUntil(this.onDestroy$))\n .subscribe((metadataAspect) => (this.metadataAspect = metadataAspect));\n }\n\n ngOnDestroy() {\n this.onDestroy$.next(true);\n this.onDestroy$.complete();\n }\n\n private checkIfNodeIsUpdatable(node: Node) {\n this.readOnly = !(node && !isLocked({ entry: node }) ? this.permission.check(node, ['update']) : false);\n }\n}\n","/*!\n * Copyright © 2005-2024 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, OnChanges, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport {\n UntypedFormGroup,\n UntypedFormControl,\n Validators,\n FormGroupDirective,\n NgForm,\n FormsModule,\n ReactiveFormsModule,\n FormControl,\n ValidationErrors\n} from '@angular/forms';\nimport { QueriesApi, SiteEntry, SitePaging } from '@alfresco/js-api';\nimport { Store } from '@ngrx/store';\nimport {\n AppStore,\n SnackbarAction,\n SnackbarActionTypes,\n SnackbarErrorAction,\n SnackbarInfoAction,\n UpdateLibraryAction,\n isAdmin\n} from '@alfresco/aca-shared/store';\nimport { debounceTime, filter, mergeMap, takeUntil } from 'rxjs/operators';\nimport { AlfrescoApiService } from '@alfresco/adf-content-services';\nimport { Observable, from, Subject } from 'rxjs';\nimport { ErrorStateMatcher, MatOptionModule } from '@angular/material/core';\nimport { CommonModule } from '@angular/common';\nimport { MatCardModule } from '@angular/material/card';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatInputModule } from '@angular/material/input';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { MatButtonModule } from '@angular/material/button';\nimport { Actions, ofType } from '@ngrx/effects';\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 standalone: true,\n imports: [\n CommonModule,\n MatCardModule,\n TranslateModule,\n MatFormFieldModule,\n FormsModule,\n ReactiveFormsModule,\n MatSelectModule,\n MatOptionModule,\n MatInputModule,\n A11yModule,\n MatButtonModule\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, OnDestroy {\n private _queriesApi: QueriesApi;\n private _titleErrorTranslationKey: string;\n\n get queriesApi(): QueriesApi {\n this._queriesApi = this._queriesApi ?? new QueriesApi(this.alfrescoApiService.getInstance());\n return this._queriesApi;\n }\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 onDestroy$: Subject<boolean> = new Subject<boolean>();\n\n constructor(private alfrescoApiService: AlfrescoApiService, protected store: Store<AppStore>, private actions$: Actions) {}\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 }\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(takeUntil(this.onDestroy$))\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 takeUntil(this.onDestroy$)\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(takeUntil(this.onDestroy$))\n .subscribe((value) => {\n this.isAdmin = value;\n });\n this.canUpdateLibrary = this.node?.entry?.role === 'SiteManager' || this.isAdmin;\n this.handleUpdatingEvent<SnackbarInfoAction>(SnackbarActionTypes.Info, 'LIBRARY.SUCCESS.LIBRARY_UPDATED', () =>\n Object.assign(this.node.entry, this.form.value)\n );\n this.handleUpdatingEvent<SnackbarErrorAction>(SnackbarActionTypes.Error, 'LIBRARY.ERRORS.LIBRARY_UPDATE_ERROR', () => this.form.markAsDirty());\n }\n\n ngOnDestroy() {\n this.onDestroy$.next(true);\n this.onDestroy$.complete();\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 handleUpdatingEvent<T extends SnackbarAction>(actionType: SnackbarActionTypes, payload: string, handle: () => void): void {\n this.actions$\n .pipe(\n ofType<T>(actionType),\n filter((action) => action.payload === payload),\n takeUntil(this.onDestroy$)\n )\n .subscribe(handle);\n }\n\n private validateEmptyName(control: FormControl<string>): ValidationErrors {\n return control.value.length && !control.value.trim() ? { empty: true } : null;\n }\n}\n","<mat-card appearance=\"raised\" *ngIf=\"node\">\n <mat-card-content>\n <form [formGroup]=\"form\" autocomplete=\"off\">\n <mat-form-field floatLabel=\"auto\" data-automation-id=\"library-name-properties-wrapper\" class=\"app-library-metadata-form-field\">\n <mat-label class=\"app-library-metadata-form-field-label\">{{ 'LIBRARY.DIALOG.FORM.NAME' | translate }}</mat-label>\n <input\n matInput\n [cdkTrapFocusAutoCapture]=\"form.enabled\"\n [cdkTrapFocus]=\"form.enabled\"\n required\n placeholder=\"{{ 'LIBRARY.DIALOG.FORM.NAME' | translate }}\"\n formControlName=\"title\"\n [errorStateMatcher]=\"matcher\"\n />\n <mat-hint *ngIf=\"libraryTitleExists\">{{ 'LIBRARY.HINTS.SITE_TITLE_EXISTS' | translate }}</mat-hint>\n <mat-error>\n {{ titleErrorTranslationKey | translate }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field floatLabel=\"auto\" data-automation-id=\"library-id-properties-wrapper\" class=\"app-library-metadata-form-field\">\n <mat-label class=\"app-library-metadata-form-field-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 floatLabel=\"auto\" data-automation-id=\"library-visibility-properties-wrapper\" class=\"app-library-metadata-form-field\">\n <mat-label class=\"app-library-metadata-form-field-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 floatLabel=\"auto\" data-automation-id=\"library-description-properties-wrapper\" class=\"app-library-metadata-form-field\">\n <mat-label class=\"app-library-metadata-form-field-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 <mat-card-actions align=\"end\" *ngIf=\"canUpdateLibrary\">\n <ng-container *ngIf=\"form.enabled\">\n <button mat-button (click)=\"cancel()\">\n {{ 'LIBRARY.DIALOG.CANCEL' | translate }}\n </button>\n <button mat-button color=\"primary\" [disabled]=\"form.invalid || form.pristine\" (click)=\"update()\">\n {{ 'LIBRARY.DIALOG.UPDATE' | translate }}\n </button>\n </ng-container>\n <button mat-button color=\"primary\" (click)=\"toggleEdit()\" *ngIf=\"form.disabled\">\n {{ 'LIBRARY.DIALOG.EDIT' | translate }}\n </button>\n </mat-card-actions>\n</mat-card>\n","/*!\n * Copyright © 2005-2024 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 standalone: true,\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-2024 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 { CommonModule } from '@angular/common';\nimport { VersionManagerModule } from '@alfresco/adf-content-services';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { AppSettingsService } from '@alfresco/aca-shared';\n\n@Component({\n standalone: true,\n imports: [CommonModule, VersionManagerModule, MatIconModule, TranslateModule],\n selector: 'app-versions-tab',\n template: `\n <ng-container *ngIf=\"isFileSelected; else empty\">\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 </ng-container>\n\n <ng-template #empty>\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 </ng-template>\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-2024 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 { CommentsTabComponent } from './comments-tab/comments-tab.component';\nimport { MetadataTabComponent } from './metadata-tab/metadata-tab.component';\nimport { LibraryMetadataTabComponent } from './library-metadata-tab/library-metadata-tab.component';\nimport { LibraryMetadataFormComponent } from './library-metadata-tab/library-metadata-form.component';\nimport { VersionsTabComponent } from './versions-tab/versions-tab.component';\nimport { InfoDrawerComponent } from '@alfresco/aca-shared';\n\n@NgModule({\n imports: [\n InfoDrawerComponent,\n CommentsTabComponent,\n LibraryMetadataFormComponent,\n LibraryMetadataTabComponent,\n MetadataTabComponent,\n VersionsTabComponent\n ],\n exports: [\n InfoDrawerComponent,\n CommentsTabComponent,\n LibraryMetadataFormComponent,\n LibraryMetadataTabComponent,\n MetadataTabComponent,\n VersionsTabComponent\n ]\n})\nexport class AppInfoDrawerModule {}\n","/*!\n * Copyright © 2005-2024 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, Input, inject } 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 { TranslateModule } from '@ngx-translate/core';\nimport { MatMenuModule } from '@angular/material/menu';\n\n@Component({\n standalone: true,\n imports: [CommonModule, TranslateModule, 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 *ngIf=\"favorites.hasFavorites()\">star</mat-icon>\n <mat-icon *ngIf=\"!favorites.hasFavorites()\">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 documentListService = inject(DocumentListService);\n\n @Input() data: any;\n selection$: Observable<SelectionState>;\n private reloadOnRoutes: string[] = [];\n\n constructor(private store: Store<AppStore>, private router: Router) {\n this.selection$ = this.store.select(getAppSelection);\n }\n\n ngOnInit() {\n if (this.data) {\n this.reloadOnRoutes = JSON.parse(this.data.replace(/'/g, '\"'));\n }\n }\n\n onToggleEvent() {\n if (this.reloadOnRoutes.includes(this.router.url)) {\n this.documentListService.reload();\n }\n }\n}\n","/*!\n * Copyright © 2005-2024 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 { Observable } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { ToggleInfoDrawerAction, isInfoDrawerOpened } from '@alfresco/aca-shared/store';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n standalone: true,\n imports: [CommonModule, TranslateModule, 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 styles: [\n `\n .app-toggle-info-drawer button:focus {\n border: 2px solid var(--theme-blue-button-color);\n border-radius: 6px;\n outline: none;\n background-color: var(--theme-selected-background-color);\n }\n `\n ],\n encapsulation: ViewEncapsulation.None,\n host: { class: 'app-toggle-info-drawer' }\n})\nexport class ToggleInfoDrawerComponent {\n infoDrawerOpened$: Observable<boolean>;\n\n constructor(private store: Store<any>) {\n this.infoDrawerOpened$ = this.store.select(isInfoDrawerOpened);\n }\n\n onClick() {\n this.store.dispatch(new ToggleInfoDrawerAction());\n }\n}\n","/*!\n * Copyright © 2005-2024 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, 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 { TranslateModule } from '@ngx-translate/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { NotificationService } from '@alfresco/adf-core';\n\n@Component({\n standalone: true,\n imports: [CommonModule, TranslateModule, 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 private userProfileService = inject(UserProfileService);\n private notificationService = inject(NotificationService);\n private appHookService = inject(AppHookService);\n private 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-2024 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 { TranslateModule } 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 standalone: true,\n imports: [CommonModule, TranslateModule, 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 ? '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-2024 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, OnDestroy } 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, takeUntil } from 'rxjs/operators';\nimport { Router } from '@angular/router';\nimport { Subject } from 'rxjs';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { LibraryFavoriteDirective } from '@alfresco/adf-content-services';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\n\n@Component({\n standalone: true,\n imports: [CommonModule, TranslateModule, 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 *ngIf=\"library.isFavorite\">star</mat-icon>\n <mat-icon *ngIf=\"!library.isFavorite\">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, OnDestroy {\n library;\n private onDestroy$: Subject<void> = new Subject<void>();\n\n constructor(private store: Store<AppStore>, private appHookService: AppHookService, private router: Router) {}\n\n ngOnInit() {\n const isFavoriteLibraries = this.router.url.startsWith('/favorite/libraries');\n\n this.store\n .select(getAppSelection)\n .pipe(distinctUntilChanged(), takeUntil(this.onDestroy$))\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 ngOnDestroy() {\n this.onDestroy$.next();\n this.onDestroy$.complete();\n }\n\n onToggleEvent() {\n this.appHookService.favoriteLibraryToggle.next();\n }\n}\n","/*!\n * Copyright © 2005-2024 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 } from '@alfresco/js-api';\nimport { Component, inject, OnInit, 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 { TranslateModule } from '@ngx-translate/core';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n standalone: true,\n imports: [CommonModule, TranslateModule, 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 notificationService = inject(NotificationService);\n\n private nodesApi: NodesApi;\n selection: NodeEntry;\n nodeTitle = '';\n isNodeLocked = false;\n\n constructor(private store: Store<AppStore>, private alfrescoApiService: AlfrescoApiService, private extensions: AppExtensionService) {\n this.nodesApi = new NodesApi(this.alfrescoApiService.getInstance());\n }\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-2024 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, Input, inject } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { AppStore, ViewNodeAction, getAppSelection } from '@alfresco/aca-shared/store';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { take } from 'rxjs/operators';\nimport { SharedLinkEntry } from '@alfresco/js-api';\nimport { AutoDownloadService, AppSettingsService } from '@alfresco/aca-shared';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatDialogModule } from '@angular/material/dialog';\n\n@Component({\n standalone: true,\n imports: [CommonModule, TranslateModule, 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 settings = inject(AppSettingsService);\n\n @Input() data: { title?: string; menuButton?: boolean; iconButton?: boolean };\n\n constructor(\n private store: Store<AppStore>,\n private router: Router,\n private autoDownloadService: AutoDownloadService,\n private activatedRoute: ActivatedRoute\n ) {}\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-2024 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 { ToggleFavoriteComponent } from './toggle-favorite/toggle-favorite.component';\nimport { ToggleInfoDrawerComponent } from './toggle-info-drawer/toggle-info-drawer.component';\nimport { ToggleJoinLibraryButtonComponent } from './toggle-join-library/toggle-join-library-button.component';\nimport { ToggleJoinLibraryMenuComponent } from './toggle-join-library/toggle-join-library-menu.component';\nimport { ToggleFavoriteLibraryComponent } from './toggle-favorite-library/toggle-favorite-library.component';\nimport { ToggleEditOfflineComponent } from './toggle-edit-offline/toggle-edit-offline.component';\nimport { ViewNodeComponent } from './view-node/view-node.component';\n\nexport const APP_TOOLBAR_DIRECTIVES = [\n ToggleFavoriteComponent,\n ToggleEditOfflineComponent,\n ToggleInfoDrawerComponent,\n ToggleJoinLibraryButtonComponent,\n ToggleJoinLibraryMenuComponent,\n ToggleFavoriteLibraryComponent,\n ViewNodeComponent\n] as const;\n","/*!\n * Copyright © 2005-2024 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, Input, HostListener, OnInit, OnDestroy } from '@angular/core';\nimport { Router, NavigationEnd, PRIMARY_OUTLET } from '@angular/router';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\nimport { MatExpansionPanel } from '@angular/material/expansion';\nimport { Store } from '@ngrx/store';\n\n@Directive({\n standalone: true,\n selector: '[acaExpansionPanel]',\n exportAs: 'acaExpansionPanel'\n})\nexport class ExpansionPanelDirective implements OnInit, OnDestroy {\n @Input() acaExpansionPanel;\n public hasActiveChildren = false;\n\n private onDestroy$: Subject<boolean> = new Subject<boolean>();\n\n @HostListener('click')\n onClick() {\n if (this.expansionPanel.expanded && !this.hasActiveLinks() && !this.acaExpansionPanel.data?.canBeInactive) {\n const firstChild = this.acaExpansionPanel.children[0];\n if (firstChild.url) {\n this.router.navigate(this.getNavigationCommands(firstChild.url));\n } else {\n this.store.dispatch({\n type: firstChild.action.action,\n payload: this.getNavigationCommands(firstChild.action.payload)\n });\n }\n }\n }\n\n constructor(private store: Store<any>, private router: Router, private expansionPanel: MatExpansionPanel) {}\n\n hasActiveLinks() {\n if (this.acaExpansionPanel?.children) {\n return this.acaExpansionPanel.children.some((child) => this.router.url.startsWith(child.url || child.action.payload));\n }\n return false;\n }\n\n ngOnInit() {\n this.hasActiveChildren = this.hasActiveLinks();\n\n this.router.events\n .pipe(\n filter((event) => event instanceof NavigationEnd),\n takeUntil(this.onDestroy$)\n )\n .subscribe(() => {\n this.hasActiveChildren = this.hasActiveLinks();\n });\n }\n\n ngOnDestroy() {\n this.onDestroy$.next(true);\n this.onDestroy$.complete();\n }\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","/*!\n * Copyright © 2005-2024 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, Input, OnInit, OnDestroy, HostListener } from '@angular/core';\nimport { Router, NavigationEnd, PRIMARY_OUTLET } from '@angular/router';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\nimport { Store } from '@ngrx/store';\n\n@Directive({\n standalone: true,\n selector: '[acaMenuPanel]',\n exportAs: 'acaMenuPanel'\n})\nexport class MenuPanelDirective implements OnInit, OnDestroy {\n @Input() acaMenuPanel;\n hasActiveChildren = false;\n\n private onDestroy$: Subject<boolean> = new Subject<boolean>();\n\n @HostListener('menuOpened')\n menuOpened() {\n if (this.acaMenuPanel.children && !this.hasActiveLinks()) {\n const firstChild = this.acaMenuPanel.children[0];\n if (firstChild.url) {\n this.router.navigate(this.getNavigationCommands(firstChild.url));\n } else {\n this.store.dispatch({\n type: firstChild.action.action,\n payload: this.getNavigationCommands(firstChild.action.payload)\n });\n }\n }\n }\n\n constructor(private store: Store<any>, private router: Router) {}\n\n hasActiveLinks() {\n if (this.acaMenuPanel?.children) {\n return this.acaMenuPanel.children.some((child) => this.router.url.startsWith(child.url || child.action.payload));\n }\n return false;\n }\n\n ngOnInit() {\n this.hasActiveChildren = this.hasActiveLinks();\n\n this.router.events\n .pipe(\n filter((event) => event instanceof NavigationEnd),\n takeUntil(this.onDestroy$)\n )\n .subscribe(() => {\n this.hasActiveChildren = this.hasActiveLinks();\n });\n }\n\n ngOnDestroy() {\n this.onDestroy$.next(true);\n this.onDestroy$.complete();\n }\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","/*!\n * Copyright © 2005-2024 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, EventEmitter, inject, OnDestroy, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { ContentActionRef } from '@alfresco/adf-extensions';\nimport { AppExtensionService, AppSettingsService, ToolbarComponent } from '@alfresco/aca-shared';\nimport { takeUntil } from 'rxjs/operators';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { RouterModule } from '@angular/router';\n\n@Component({\n standalone: true,\n imports: [CommonModule, TranslateModule, 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, OnDestroy {\n private onDestroy$ = new Subject<boolean>();\n private appSettings = inject(AppSettingsService);\n private appExtensions = inject(AppExtensionService);\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 ngOnInit() {\n this.appExtensions\n .getHeaderActions()\n .pipe(takeUntil(this.onDestroy$))\n .subscribe((actions) => {\n this.actions = actions;\n });\n }\n\n ngOnDestroy() {\n this.onDestroy$.next(true);\n this.onDestroy$.complete();\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 <div class=\"aca-sidenav-header-title-logo\"\n tabindex=0\n data-automation-id=\"app-sidenav-header-title-logo\"\n (click)=\"toggleNavBar.emit()\"\n (keypress)=\"toggleNavBar.emit()\">\n <img\n src=\"{{ logoUrl }}\"\n title=\"{{'APP.TOOLTIPS.COLLAPSE_NAVIGATION' | translate}}\"\n alt=\"{{ 'CORE.HEADER.LOGO_ARIA' | translate }}\" />\n </div>\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-2024 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 } 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 @Input() action;\n\n @Output() actionClicked = new EventEmitter<NavBarLinkRef>();\n\n @HostListener('click')\n onClick() {\n if (this.action.url) {\n this.router.navigate(this.getNavigationCommands(this.action.url), { queryParams: this.getNavigationQueryParams(this.action.url) });\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\n constructor(private router: Router, private store: Store<AppStore>) {}\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","/*!\n * Copyright © 2005-2024 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, Directive, ElementRef, Input, OnInit, Optional, QueryList, Renderer2 } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\nimport { ActionDirective } from './action.directive';\n\n@Directive({\n standalone: true,\n selector: '[acaActiveLink]',\n exportAs: 'acaActiveLink'\n})\nexport class ActiveLinkDirective implements OnInit, AfterContentInit {\n @Input() acaActiveLink;\n @ContentChildren(ActionDirective, { descendants: true })\n links: QueryList<ActionDirective>;\n isLinkActive = false;\n\n private onDestroy$: Subject<boolean> = new Subject<boolean>();\n\n constructor(private router: Router, private element: ElementRef, private renderer: Renderer2, @Optional() private action?: ActionDirective) {}\n\n ngOnInit() {\n this.router.events\n .pipe(\n filter((event) => event instanceof NavigationEnd),\n takeUntil(this.onDestroy$)\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-2024 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 } from '@angular/core';\nimport { NavBarLinkRef } from '@alfresco/adf-extensions';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { IconModule } 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';\nimport { ExpansionPanelDirective } from '../directives/expansion-panel.directive';\n\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n IconModule,\n MatButtonModule,\n ActiveLinkDirective,\n ActionDirective,\n MatExpansionModule,\n ExpansionPanelDirective\n ],\n selector: 'app-expand-menu',\n encapsulation: ViewEncapsulation.None,\n templateUrl: './expand-menu.component.html',\n host: { class: 'app-expand-menu' }\n})\nexport class ExpandMenuComponent implements OnInit {\n @Input()\n item: NavBarLinkRef;\n\n @Output()\n actionClicked = new EventEmitter<NavBarLinkRef>();\n\n constructor(private cd: ChangeDetectorRef) {}\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\" role=\"group\" 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 <div class=\"aca-expansion-panel-body\">\n <div *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 </div>\n </div>\n </mat-expansion-panel>\n</ng-container>\n","/*!\n * Copyright © 2005-2024 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, OnDestroy } 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 { Subject } from 'rxjs';\nimport { takeUntil, distinctUntilChanged, debounceTime } 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';\n\n@Component({\n standalone: true,\n imports: [CommonModule, SidenavHeaderComponent, MatListModule, ExpandMenuComponent, DynamicExtensionComponent],\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, OnDestroy {\n @Input()\n data: {\n layout?: SidenavLayoutComponent;\n mode?: 'collapsed' | 'expanded';\n } = {};\n\n groups: Array<NavBarGroupRef> = [];\n private onDestroy$ = new Subject<boolean>();\n\n constructor(\n private store: Store<AppStore>,\n private extensions: AppExtensionService,\n private appService: AppService,\n private navigationHistoryService: NavigationHistoryService\n ) {}\n\n ngOnInit() {\n this.store\n .select(getSideNavState)\n .pipe(debounceTime(300), distinctUntilChanged(), takeUntil(this.onDestroy$))\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(takeUntil(this.onDestroy$)).subscribe(() => this.toggleNavBar());\n this.data.layout.expanded.pipe(takeUntil(this.onDestroy$)).subscribe(() => this.setNavBarMode());\n this.navigationHistoryService\n .listenToRouteChanges()\n .pipe(takeUntil(this.onDestroy$))\n .subscribe((event: NavigationEnd) => {\n this.navigationHistoryService.setHistory(event, 3);\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 ngOnDestroy() {\n this.onDestroy$.next(true);\n this.onDestroy$.complete();\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 <mat-list-item class=\"aca-sidenav__section__actions__item\" *ngFor=\"let item of group.items; trackBy: trackByLinkId\">\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 </mat-list-item>\n </div>\n </div>\n</div>\n","/*!\n * Copyright © 2005-2024 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, OnInit, ChangeDetectorRef } from '@angular/core';\nimport { OverlayContainer } from '@angular/cdk/overlay';\nimport { NavBarLinkRef } from '@alfresco/adf-extensions';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { IconModule } from '@alfresco/adf-core';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatButtonModule } from '@angular/material/button';\nimport { ActiveLinkDirective } from '../directives/active-link.directive';\nimport { ActionDirective } from '../directives/action.directive';\nimport { MenuPanelDirective } from '../directives/menu-panel.directive';\n\n@Component({\n standalone: true,\n imports: [CommonModule, TranslateModule, IconModule, MatMenuModule, MatButtonModule, ActiveLinkDirective, ActionDirective, MenuPanelDirective],\n selector: 'app-button-menu',\n templateUrl: './button-menu.component.html',\n host: { class: 'app-button-menu' },\n encapsulation: ViewEncapsulation.None\n})\nexport class ButtonMenuComponent implements OnInit {\n @Input()\n item: NavBarLinkRef;\n\n constructor(private cd: ChangeDetectorRef, private overlayContainer: OverlayContainer) {\n this.overlayContainer.getContainerElement().classList.add('aca-menu-panel');\n }\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 <button\n class=\"action-button\"\n mat-icon-button\n acaActiveLink=\"action-button--active\"\n [action]=\"item\"\n [id]=\"item.id\"\n [attr.aria-label]=\"item.title | translate\"\n [attr.title]=\"item.description | translate\"\n [attr.data-automation-id]=\"item.id\"\n >\n <adf-icon [value]=\"item.icon\" />\n </button>\n</ng-container>\n\n<ng-container *ngIf=\"item.children && item.children.length\">\n <button\n [matMenuTriggerFor]=\"menu\"\n [acaMenuPanel]=\"item\"\n #acaMenuPanel=\"acaMenuPanel\"\n mat-icon-button\n [id]=\"item.id\"\n [attr.data-automation-id]=\"item.id\"\n [attr.title]=\"item.description | translate\"\n [attr.aria-label]=\"item.title | translate\"\n class=\"action-button\"\n [ngClass]=\"{\n 'action-button--active': acaMenuPanel.hasActiveChildren\n }\"\n >\n <adf-icon [value]=\"item.icon\" />\n </button>\n\n <mat-menu #menu=\"matMenu\" [overlapTrigger]=\"false\">\n <button\n *ngFor=\"let child of item.children; trackBy: trackById\"\n acaActiveLink=\"action-button--active\"\n [action]=\"child\"\n [attr.aria-label]=\"child.title | translate\"\n [id]=\"child.id\"\n [attr.title]=\"child.description | translate\"\n [attr.data-automation-id]=\"child.id\"\n mat-menu-item\n class=\"action-button\"\n >\n <adf-icon *ngIf=\"child.icon\" [value]=\"child.icon\" />\n <span class=\"action-button__label\">{{ child.title | translate }}</span>\n </button>\n </mat-menu>\n</ng-container>\n","/*!\n * Copyright © 2005-2024 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, ViewEncapsulation } from '@angular/core';\nimport { ContentActionRef } from '@alfresco/adf-extensions';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { ToolbarMenuItemComponent, UserProfileService } from '@alfresco/aca-shared';\n\n@Component({\n standalone: true,\n imports: [CommonModule, TranslateModule, 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 {\n private userProfileService = inject(UserProfileService);\n\n user$ = this.userProfileService.userProfile$;\n\n @Input()\n actionRef: ContentActionRef;\n\n @Input()\n data: { items: any[] };\n\n ngOnInit() {\n if (this.data?.items) {\n this.data.items.sort((a, b) => a.order - b.order);\n }\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-2024 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 { ExpansionPanelDirective } from './directives/expansion-panel.directive';\nimport { MenuPanelDirective } from './directives/menu-panel.directive';\nimport { SidenavComponent } from './sidenav.component';\nimport { ActiveLinkDirective } from './directives/active-link.directive';\nimport { ExpandMenuComponent } from './components/expand-menu.component';\nimport { ButtonMenuComponent } from './components/button-menu.component';\nimport { ActionDirective } from './directives/action.directive';\nimport { SidenavHeaderComponent } from './components/sidenav-header.component';\nimport { UserMenuComponent } from './user-menu/user-menu.component';\n\nexport const APP_SIDENAV_DIRECTIVES = [\n ButtonMenuComponent,\n ActiveLinkDirective,\n ActionDirective,\n MenuPanelDirective,\n ExpandMenuComponent,\n ExpansionPanelDirective,\n SidenavHeaderComponent,\n UserMenuComponent,\n SidenavComponent\n] as const;\n","/*!\n * Copyright © 2005-2024 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, ChangeDetectionStrategy, OnInit, ViewEncapsulation, HostListener, inject } from '@angular/core';\nimport { PathInfo, NodeEntry } from '@alfresco/js-api';\nimport { Observable, BehaviorSubject, of } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { NavigateToParentFolder } from '@alfresco/aca-shared/store';\nimport { ContentApiService } from '@alfresco/aca-shared';\nimport { TranslationService } from '@alfresco/adf-core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n standalone: true,\n imports: [CommonModule, TranslateModule],\n selector: 'aca-location-link',\n template: `\n <a\n href=\"\"\n [title]=\"nodeLocation$ | async\"\n (click)=\"goToLocation()\"\n class=\"adf-datatable-cell-value\"\n [innerHTML]=\"displayText | async | translate\"\n >\n </a>\n `,\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 store = inject(Store);\n private contentApi = inject(ContentApiService);\n private translationService = inject(TranslationService);\n\n private _path: PathInfo;\n\n nodeLocation$ = new BehaviorSubject(this.translationService.instant('APP.BROWSE.SEARCH.UNKNOWN_LOCATION'));\n displayText: Observable<string>;\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() {\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 } else {\n this.displayText = of('APP.BROWSE.SEARCH.UNKNOWN_LOCATION');\n }\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.PERSONAL.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 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\n if (elements[0].name === 'Company Home') {\n elements[0].name = 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","/*!\n * Copyright © 2005-2024 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, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { SelectionState } from '@alfresco/adf-extensions';\nimport { AppStore, ShareNodeAction, getAppSelection } from '@alfresco/aca-shared/store';\nimport { CommonModule } from '@angular/common';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { takeUntil } from 'rxjs/operators';\n\n@Component({\n standalone: true,\n imports: [CommonModule, MatMenuModule, MatIconModule, TranslateModule, MatButtonModule],\n selector: 'app-toggle-shared',\n templateUrl: './toggle-shared.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class ToggleSharedComponent implements OnInit, OnDestroy {\n @Input()\n data: {\n iconButton?: string;\n };\n\n selection$: Observable<SelectionState>;\n selectionState: SelectionState;\n selectionLabel = '';\n isShared = false;\n\n onDestroy$ = new Subject<void>();\n\n constructor(private store: Store<AppStore>) {}\n\n ngOnInit() {\n this.selection$ = this.store.select(getAppSelection);\n this.selection$.pipe(takeUntil(this.onDestroy$)).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 ngOnDestroy(): void {\n this.onDestroy$.next();\n this.onDestroy$.complete();\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 <ng-container *ngIf=\"isShared; else not_shared\">\n <span>{{ 'APP.ACTIONS.SHARE_EDIT' | translate }}</span>\n </ng-container>\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<ng-template #not_shared>\n <span>{{ 'APP.ACTIONS.SHARE' | translate }}</span>\n</ng-template>\n","/*!\n * Copyright © 2005-2024 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 { LanguageMenuModule } from '@alfresco/adf-core';\nimport { Component, ViewEncapsulation } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n standalone: true,\n imports: [TranslateModule, MatIconModule, MatMenuModule, LanguageMenuModule],\n selector: 'aca-language-picker',\n template: `\n <button mat-menu-item [matMenuTriggerFor]=\"langMenu\">\n <mat-icon>language</mat-icon>\n {{ 'APP.LANGUAGE' | translate }}\n </button>\n <mat-menu #langMenu=\"matMenu\">\n <adf-language-menu />\n </mat-menu>\n `,\n encapsulation: ViewEncapsulation.None\n})\nexport class LanguagePickerComponent {}\n","/*!\n * Copyright © 2005-2024 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 { Store } from '@ngrx/store';\nimport { SetSelectedNodesAction } from '@alfresco/aca-shared/store';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { LogoutDirective } from '@alfresco/adf-core';\n\n@Component({\n standalone: true,\n imports: [TranslateModule, 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 constructor(private store: Store) {}\n\n onLogoutEvent() {\n this.store.dispatch(new SetSelectedNodesAction([]));\n }\n}\n","/*!\n * Copyright © 2005-2024 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 { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { UserProfileService } from '@alfresco/aca-shared';\n\n@Component({\n standalone: true,\n imports: [CommonModule, RouterModule, MatMenuModule, TranslateModule],\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 userProfileService = inject(UserProfileService);\n\n user$ = this.userProfileService.userProfile$;\n}\n","<div 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</div>\n","/*!\n * Copyright © 2005-2024 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 { LocationLinkComponent } from './location-link/location-link.component';\nimport { ToggleSharedComponent } from './toggle-shared/toggle-shared.component';\nimport { LanguagePickerComponent } from './language-picker/language-picker.component';\nimport { LogoutComponent } from './logout/logout.component';\nimport { UserInfoComponent } from './user-info/user-info.component';\n\nexport const APP_COMMON_DIRECTIVES = [\n LanguagePickerComponent,\n LocationLinkComponent,\n LogoutComponent,\n ToggleSharedComponent,\n UserInfoComponent\n] as const;\n","/*!\n * Copyright © 2005-2024 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 } from '@alfresco/adf-content-services';\nimport { SearchSortingDefinition } from '@alfresco/adf-content-services/lib/search/models/search-sorting-definition.interface';\nimport { Component, OnInit, Output, ViewEncapsulation, EventEmitter } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } 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 standalone: true,\n imports: [CommonModule, TranslateModule, 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 @Output()\n sortingSelected: EventEmitter<SearchSortingDefinition> = new EventEmitter();\n\n options: SearchSortingDefinition[] = [];\n\n constructor(private queryBuilder: SearchQueryBuilderService) {}\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-2024 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 } from '@angular/core';\nimport { QueriesApi, SitePaging } 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 _queriesApi: QueriesApi;\n get queriesApi(): QueriesApi {\n this._queriesApi = this._queriesApi ?? new QueriesApi(this.alfrescoApiService.getInstance());\n return this._queriesApi;\n }\n\n private _userQuery = '';\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 constructor(private alfrescoApiService: AlfrescoApiService) {}\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-2024 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, EventEmitter, Input, OnDestroy, Output, ViewEncapsulation, ViewChild, ElementRef } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } 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';\n\n@Component({\n standalone: true,\n imports: [CommonModule, TranslateModule, MatButtonModule, MatIconModule, MatFormFieldModule, MatInputModule, FormsModule],\n selector: 'app-search-input-control',\n templateUrl: './search-input-control.component.html',\n styleUrls: ['./search-input-control.component.scss'],\n encapsulation: ViewEncapsulation.None,\n host: { class: 'app-search-control' }\n})\nexport class SearchInputControlComponent implements OnDestroy {\n onDestroy$: Subject<boolean> = new Subject<boolean>();\n\n /** Type of the input field to render, e.g. \"search\" or \"text\" (default). */\n @Input()\n inputType = 'text';\n\n /** Emitted when the search is submitted pressing ENTER button.\n * The search term is provided as value of the event.\n */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-native\n submit: EventEmitter<any> = new EventEmitter();\n\n /** Emitted when the search term is changed. The search term is provided\n * in the 'value' property of the returned object. If the term is less\n * than three characters in length then the term is truncated to an empty\n * string.\n */\n @Output()\n searchChange: EventEmitter<string> = new EventEmitter();\n\n @ViewChild('searchInput', { static: true })\n searchInput: ElementRef;\n\n searchTerm = '';\n\n ngOnDestroy(): void {\n this.onDestroy$.next(true);\n this.onDestroy$.complete();\n }\n\n searchSubmit(event: any) {\n this.submit.emit(event);\n }\n\n inputChange(event: any) {\n this.searchChange.emit(event);\n }\n\n clear() {\n this.searchTerm = '';\n this.searchChange.emit('');\n }\n\n isTermTooShort() {\n return !!(this.searchTerm && this.searchTerm.length < 2);\n }\n}\n","<div class=\"app-search-container\">\n <mat-form-field class=\"app-input-form-field\" appearance=\"outline\">\n\n <button\n mat-icon-button\n matPrefix\n class=\"app-search-button\"\n (click)=\"searchSubmit(searchTerm)\"\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 #searchInput\n [attr.aria-label]=\"'SEARCH.INPUT.ARIA-LABEL' | translate\"\n [type]=\"inputType\"\n id=\"app-control-input\"\n [(ngModel)]=\"searchTerm\"\n (ngModelChange)=\"inputChange($event)\"\n (keyup.enter)=\"searchSubmit($event)\"\n [placeholder]=\"'SEARCH.INPUT.PLACEHOLDER' | translate\"\n autocomplete=\"off\"\n />\n <div matSuffix>\n <button mat-icon-button (click)=\"clear()\">\n <mat-icon *ngIf=\"searchTerm.length\" class=\"app-suffix-icon\">clear</mat-icon>\n </button>\n </div>\n </mat-form-field>\n</div>\n","/*!\n * Copyright © 2005-2024 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, AppService } from '@alfresco/aca-shared';\nimport { AppStore, SearchByTermAction, SearchOptionIds, SearchOptionModel } from '@alfresco/aca-shared/store';\nimport { SearchQueryBuilderService } from '@alfresco/adf-content-services';\nimport { AppConfigService, NotificationService } from '@alfresco/adf-core';\nimport { Component, inject, OnDestroy, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { MatMenuModule, MatMenuTrigger } from '@angular/material/menu';\nimport { ActivatedRoute, Params, PRIMARY_OUTLET, Router, UrlSegment, UrlSegmentGroup, UrlTree } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { SearchInputControlComponent } from '../search-input-control/search-input-control.component';\nimport { SearchNavigationService } from '../search-navigation.service';\nimport { SearchLibrariesQueryBuilderService } from '../search-libraries-results/search-libraries-query-builder.service';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } 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 { FormsModule } from '@angular/forms';\nimport { extractSearchedWordFromEncodedQuery } from '../../../utils/aca-search-utils';\n\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n MatMenuModule,\n MatButtonModule,\n MatIconModule,\n MatFormFieldModule,\n MatInputModule,\n A11yModule,\n MatCheckboxModule,\n FormsModule,\n SearchInputControlComponent\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, OnDestroy {\n private readonly notificationService = inject(NotificationService);\n\n onDestroy$: Subject<boolean> = new Subject<boolean>();\n has400LibraryError = false;\n hasLibrariesConstraint = false;\n searchOnChange: boolean;\n\n searchedWord: string = null;\n searchOptions: Array<SearchOptionModel> = [\n {\n id: SearchOptionIds.Files,\n key: 'SEARCH.INPUT.FILES',\n value: false,\n shouldDisable: this.isLibrariesChecked.bind(this)\n },\n {\n id: SearchOptionIds.Folders,\n key: 'SEARCH.INPUT.FOLDERS',\n value: false,\n shouldDisable: this.isLibrariesChecked.bind(this)\n },\n {\n id: SearchOptionIds.Libraries,\n key: 'SEARCH.INPUT.LIBRARIES',\n value: this.onLibrariesSearchResults,\n shouldDisable: this.isContentChecked.bind(this)\n }\n ];\n\n @ViewChild('searchInputControl', { static: true })\n searchInputControl: SearchInputControlComponent;\n\n @ViewChild(MatMenuTrigger, { static: true })\n trigger: MatMenuTrigger;\n\n constructor(\n private readonly queryBuilder: SearchQueryBuilderService,\n private readonly queryLibrariesBuilder: SearchLibrariesQueryBuilderService,\n private readonly config: AppConfigService,\n private readonly router: Router,\n private readonly route: ActivatedRoute,\n private readonly store: Store<AppStore>,\n private readonly appHookService: AppHookService,\n private readonly appService: AppService,\n public readonly searchInputService: SearchNavigationService\n ) {\n this.searchOnChange = this.config.get<boolean>('search.aca:triggeredOnChange', true);\n }\n\n ngOnInit() {\n this.showInputValue();\n\n this.route.queryParams.pipe(takeUntil(this.onDestroy$)).subscribe((params: Params) => {\n const encodedQuery = params['q'];\n if (encodedQuery && this.searchInputControl) {\n this.searchedWord = extractSearchedWordFromEncodedQuery(encodedQuery);\n this.searchInputControl.searchTerm = this.searchedWord;\n }\n });\n\n this.appHookService.library400Error.pipe(takeUntil(this.onDestroy$)).subscribe(() => {\n this.has400LibraryError = true;\n this.hasLibrariesConstraint = this.evaluateLibrariesConstraint();\n });\n }\n\n exitSearch() {\n this.searchInputService.navigateBack();\n }\n\n showInputValue() {\n this.appService.setAppNavbarMode('collapsed');\n this.has400LibraryError = false;\n this.hasLibrariesConstraint = this.evaluateLibrariesConstraint();\n this.searchedWord = this.getUrlSearchTerm();\n\n if (this.searchInputControl) {\n this.searchInputControl.searchTerm = this.searchedWord;\n }\n }\n\n ngOnDestroy(): void {\n this.appService.setAppNavbarMode('expanded');\n this.onDestroy$.next(true);\n this.onDestroy$.complete();\n this.removeContentFilters();\n }\n\n onMenuOpened() {\n if (this.searchInputControl) {\n this.searchInputControl.searchInput?.nativeElement?.focus();\n }\n }\n\n /**\n * Called when the user submits the search, e.g. hits enter or clicks submit\n *\n * @param event Parameters relating to the search\n */\n onSearchSubmit(event: any) {\n const searchTerm = event.target ? (event.target as HTMLInputElement).value : event;\n if (searchTerm) {\n this.searchedWord = searchTerm;\n\n this.searchByOption();\n } else {\n this.notificationService.showError('APP.BROWSE.SEARCH.EMPTY_SEARCH');\n }\n\n if (this.trigger) {\n this.trigger.closeMenu();\n }\n }\n\n onSearchChange(searchTerm: string) {\n if (!this.searchOnChange) {\n return;\n }\n\n this.has400LibraryError = false;\n this.hasLibrariesConstraint = this.evaluateLibrariesConstraint();\n this.searchedWord = searchTerm;\n }\n\n searchByOption() {\n this.syncInputValues();\n this.has400LibraryError = false;\n if (this.isLibrariesChecked()) {\n this.hasLibrariesConstraint = this.evaluateLibrariesConstraint();\n if (this.onLibrariesSearchResults && this.isSameSearchTerm()) {\n this.queryLibrariesBuilder.update();\n } else if (this.searchedWord) {\n this.store.dispatch(new SearchByTermAction(this.searchedWord, this.searchOptions));\n }\n } else {\n if (this.isFoldersChecked() && !this.isFilesChecked()) {\n this.filterContent(SearchOptionIds.Folders);\n } else if (this.isFilesChecked() && !this.isFoldersChecked()) {\n this.filterContent(SearchOptionIds.Files);\n } else {\n this.removeContentFilters();\n }\n\n if (this.onSearchResults && this.isSameSearchTerm()) {\n this.queryBuilder.update();\n } else if (this.searchedWord) {\n this.store.dispatch(new SearchByTermAction(this.searchedWord, this.searchOptions));\n }\n }\n }\n\n get onLibrariesSearchResults() {\n return this.router?.url.indexOf('/search-libraries') === 0;\n }\n\n get onSearchResults() {\n return !this.onLibrariesSearchResults && this.router?.url.indexOf('/search') === 0;\n }\n\n isFilesChecked(): boolean {\n return this.isOptionChecked(SearchOptionIds.Files);\n }\n\n isFoldersChecked(): boolean {\n return this.isOptionChecked(SearchOptionIds.Folders);\n }\n\n isLibrariesChecked(): boolean {\n return this.isOptionChecked(SearchOptionIds.Libraries);\n }\n\n isOptionChecked(optionId: string): boolean {\n const libItem = this.searchOptions.find((item) => item.id === optionId);\n return !!libItem && libItem.value;\n }\n\n isContentChecked(): boolean {\n return this.isFilesChecked() || this.isFoldersChecked();\n }\n\n evaluateLibrariesConstraint(): boolean {\n if (this.isLibrariesChecked()) {\n return this.has400LibraryError || this.searchInputControl.isTermTooShort();\n }\n return false;\n }\n\n filterContent(option: SearchOptionIds.Folders | SearchOptionIds.Files) {\n const oppositeOption = option === SearchOptionIds.Folders ? SearchOptionIds.Files : SearchOptionIds.Folders;\n\n this.queryBuilder.addFilterQuery(`+TYPE:'cm:${option}'`);\n this.queryBuilder.removeFilterQuery(`+TYPE:'cm:${oppositeOption}'`);\n }\n\n removeContentFilters() {\n this.queryBuilder.removeFilterQuery(`+TYPE:'cm:${SearchOptionIds.Files}'`);\n this.queryBuilder.removeFilterQuery(`+TYPE:'cm:${SearchOptionIds.Folders}'`);\n }\n\n syncInputValues() {\n if (this.searchInputControl.searchTerm !== this.searchedWord) {\n if (this.searchInputControl.searchTerm) {\n this.searchedWord = this.searchInputControl.searchTerm;\n } else {\n this.searchInputControl.searchTerm = this.searchedWord;\n }\n }\n }\n\n getUrlSearchTerm(): string {\n let searchTerm = '';\n if (this.onSearchResults || this.onLibrariesSearchResults) {\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 searchTerm = extractSearchedWordFromEncodedQuery(urlSegments[0].parameters['q']);\n }\n }\n\n return searchTerm;\n }\n\n isSameSearchTerm(): boolean {\n const urlSearchTerm = this.getUrlSearchTerm();\n return this.searchedWord === urlSearchTerm;\n }\n}\n","<div class=\"app-search-container\"\n [matMenuTriggerFor]=\"searchOptionsMenu\"\n (menuOpened)=\"onMenuOpened()\"\n (menuClosed)=\"syncInputValues()\"\n>\n <mat-form-field class=\"app-input-form-field\" appearance=\"outline\">\n <button class=\"aca-search-input--search-button\" mat-icon-button matPrefix (click)=\"searchByOption()\" [title]=\"'SEARCH.BUTTON.TOOLTIP' | translate\">\n <mat-icon [attr.aria-label]=\"'SEARCH.BUTTON.ARIA-LABEL' | translate\">search</mat-icon>\n </button>\n\n <input\n matInput\n [attr.aria-label]=\"'SEARCH.INPUT.ARIA-LABEL' | translate\"\n [type]=\"'text'\"\n [readonly]=\"true\"\n [value]=\"searchedWord\"\n [placeholder]=\"'SEARCH.INPUT.PLACEHOLDER' | translate\"\n />\n\n <div matSuffix>\n <mat-icon class=\"app-suffix-icon\">arrow_drop_down</mat-icon>\n\n <button class=\"aca-search-input--close-button\" mat-icon-button (click)=\"exitSearch()\">\n <mat-icon class=\"app-suffix-icon\">close</mat-icon>\n </button>\n </div>\n </mat-form-field>\n</div>\n\n<mat-menu #searchOptionsMenu=\"matMenu\" [overlapTrigger]=\"true\" class=\"app-search-options-menu\">\n <div (keydown.tab)=\"$event.stopPropagation()\" (keydown.shift.tab)=\"$event.stopPropagation()\" tabindex=0>\n <div cdkTrapFocus>\n <app-search-input-control\n #searchInputControl\n (click)=\"$event.stopPropagation()\"\n (submit)=\"onSearchSubmit($event)\"\n (searchChange)=\"onSearchChange($event)\"\n />\n <mat-hint *ngIf=\"hasLibrariesConstraint\" class=\"app-search-hint\">{{ 'SEARCH.INPUT.HINT' | translate }}</mat-hint>\n\n <div id=\"search-options\" class=\"app-search-options\">\n <mat-checkbox *ngFor=\"let option of searchOptions\"\n id=\"{{ option.id }}\"\n [(ngModel)]=\"option.value\"\n [disabled]=\"option.shouldDisable()\"\n (change)=\"searchByOption()\"\n (keyup.enter)=\"$event.stopPropagation()\"\n (click)=\"$event.stopPropagation()\"\n >\n {{ option.key | translate }}\n </mat-checkbox>\n </div>\n </div>\n </div>\n</mat-menu>\n","/*!\n * Copyright © 2005-2024 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, OnDestroy, OnInit, HostListener } from '@angular/core';\nimport { DocumentListComponent, DocumentListService } from '@alfresco/adf-content-services';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { UserPreferencesService } from '@alfresco/adf-core';\nimport { Subject } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { SetSelectedNodesAction } from '@alfresco/aca-shared/store';\nimport { takeUntil, filter } from 'rxjs/operators';\nimport { NodeEntry } from '@alfresco/js-api';\n\n@Directive({\n standalone: true,\n selector: '[acaDocumentList]'\n})\nexport class DocumentListDirective implements OnInit, OnDestroy {\n private isLibrary = false;\n selectedNode: NodeEntry;\n\n onDestroy$ = new Subject<boolean>();\n\n get sortingPreferenceKey(): string {\n return this.route.snapshot.data.sortingPreferenceKey;\n }\n\n constructor(\n private store: Store<any>,\n private documentList: DocumentListComponent,\n private preferences: UserPreferencesService,\n private route: ActivatedRoute,\n private router: Router,\n private documentListService: DocumentListService\n ) {}\n\n ngOnInit() {\n this.documentList.stickyHeader = true;\n this.documentList.includeFields = ['isFavorite', 'aspectNames', 'definition'];\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 takeUntil(this.onDestroy$)\n )\n .subscribe(() => this.onReady());\n\n this.documentListService.reload$.pipe(takeUntil(this.onDestroy$)).subscribe(() => {\n this.reload();\n });\n\n this.documentListService.resetSelection$.pipe(takeUntil(this.onDestroy$)).subscribe(() => {\n this.reset();\n });\n }\n\n ngOnDestroy() {\n this.onDestroy$.next(true);\n this.onDestroy$.complete();\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 }\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.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-2024 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 } from '@angular/core';\nimport { ActivatedRoute, Params } from '@angular/router';\nimport { SearchLibrariesQueryBuilderService } from './search-libraries-query-builder.service';\nimport {\n AppHookService,\n AppService,\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 { TranslateModule } 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 { extractSearchedWordFromEncodedQuery } from '../../../utils/aca-search-utils';\nimport { takeUntil } from 'rxjs/operators';\n\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\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 searchedWord: string;\n queryParamName = 'q';\n data: NodePaging;\n totalResults = 0;\n isLoading = false;\n columns: DocumentListPresetRef[] = [];\n\n constructor(\n private librariesQueryBuilder: SearchLibrariesQueryBuilderService,\n private route: ActivatedRoute,\n private appHookService: AppHookService,\n private appService: AppService\n ) {\n super();\n\n librariesQueryBuilder.paging = {\n skipCount: 0,\n maxItems: 25\n };\n }\n\n ngOnInit() {\n this.appService.setAppNavbarMode('collapsed');\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 (e) {}\n })\n );\n\n if (this.route) {\n this.route.queryParams.pipe(takeUntil(this.onDestroy$)).subscribe((params: Params) => {\n const encodedQuery = params[this.queryParamName] || null;\n this.searchedWord = extractSearchedWordFromEncodedQuery(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.guid));\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 <div class=\"aca-search-toolbar-spacer\"></div>\n <aca-toolbar [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\" color=\"primary\" 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-2024 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, OnChanges, SimpleChanges, ViewEncapsulation, inject } from '@angular/core';\nimport { TranslationService } from '@alfresco/adf-core';\nimport { NgIf } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n standalone: true,\n imports: [NgIf, MatIconModule],\n selector: 'aca-custom-thumbnail-column',\n templateUrl: './thumbnail-column.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class ThumbnailColumnComponent implements OnChanges {\n private 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-2024 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 } from '@angular/core';\nimport { TagNodeListComponent } from '@alfresco/adf-content-services';\n\n@Component({\n standalone: true,\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 @Input()\n context: any;\n\n nodeId: string;\n\n constructor(private cd: ChangeDetectorRef) {}\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-2024 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, Input, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\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, TranslateModule, DynamicExtensionComponent, IconComponent],\n standalone: true\n})\nexport class DatatableCellBadgesComponent implements OnInit, OnDestroy {\n @Input() node: NodeEntry;\n\n badges: Badge[];\n\n private onDestroy$ = new Subject<boolean>();\n\n constructor(private appExtensionService: AppExtensionService) {}\n\n ngOnInit() {\n this.appExtensionService\n .getBadges(this.node)\n .pipe(takeUntil(this.onDestroy$))\n .subscribe((badges) => {\n this.badges = badges;\n });\n }\n\n ngOnDestroy() {\n this.onDestroy$.next(true);\n this.onDestroy$.complete();\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-2024 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, ChangeDetectionStrategy, OnDestroy, inject } 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, Subject } from 'rxjs';\nimport { NodesApiService } from '@alfresco/adf-content-services';\nimport { takeUntil } from 'rxjs/operators';\nimport { Router } from '@angular/router';\nimport { AutoDownloadService, AppSettingsService } 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';\n\n@Component({\n standalone: true,\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, OnDestroy {\n private settings = inject(AppSettingsService);\n\n private readonly highlightPrefix = \"<span class='aca-highlight'>\";\n private readonly highlightPostfix = '</span>';\n\n private node: NodeEntry;\n private onDestroy$ = new Subject<boolean>();\n\n @Input()\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 constructor(\n private store: Store<any>,\n private nodesApiService: NodesApiService,\n private router: Router,\n private autoDownloadService: AutoDownloadService\n ) {}\n\n ngOnInit() {\n this.updateValues();\n\n this.nodesApiService.nodeUpdated.pipe(takeUntil(this.onDestroy$)).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 this.name$.next(name);\n this.description$.next(description);\n this.content$.next(content);\n\n this.nameStripped = this.stripHighlighting(name);\n this.descriptionStripped = this.stripHighlighting(description);\n this.contentStripped = this.stripHighlighting(content);\n\n if (title !== name) {\n this.title$.next(title ? ` ( ${title} )` : '');\n this.titleStripped = this.stripHighlighting(title);\n }\n }\n\n ngOnDestroy() {\n this.onDestroy$.next(true);\n this.onDestroy$.complete();\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(highlightedContent: string): string {\n return highlightedContent\n ? highlightedContent.replace(new RegExp(this.highlightPrefix, 'g'), '').replace(new RegExp(this.highlightPostfix, 'g'), '')\n : '';\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-2024 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, inject, Input, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { MatSelectModule } from '@angular/material/select';\nimport { Store } from '@ngrx/store';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { combineLatest, Observable, Subject } from 'rxjs';\nimport { IconComponent, TranslationService } from '@alfresco/adf-core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { switchMap, takeUntil } from 'rxjs/operators';\nimport { AppExtensionService } from '@alfresco/aca-shared';\n\n@Component({\n standalone: true,\n selector: 'aca-bulk-actions-dropdown',\n templateUrl: './bulk-actions-dropdown.component.html',\n styleUrls: ['./bulk-actions-dropdown.component.scss'],\n imports: [CommonModule, TranslateModule, MatSelectModule, IconComponent, ReactiveFormsModule],\n encapsulation: ViewEncapsulation.None\n})\nexport class BulkActionsDropdownComponent implements OnInit, OnDestroy {\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\n private readonly onDestroy$ = new Subject();\n private readonly totalItems$: Observable<number> = this.store.select(getSearchItemsTotalCount);\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 takeUntil(this.onDestroy$)\n )\n .subscribe(([placeholder, title]) => {\n this.tooltip = title;\n this.placeholder = placeholder;\n });\n\n this.extensions.bulkActionExecuted$.pipe(takeUntil(this.onDestroy$)).subscribe(() => {\n this.bulkSelectControl.setValue(null);\n });\n }\n\n ngOnDestroy() {\n this.onDestroy$.next(true);\n this.onDestroy$.complete();\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 [title]=\"tooltip\"\n appearance=\"outline\"\n subscriptSizing=\"dynamic\"\n class=\"aca-bulk-actions-form-field\"\n data-automation-id=\"aca-bulk-actions-form-field\"\n>\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 [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 [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-2024 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 { ActivatedRoute } from '@angular/router';\nimport { AppConfigValues, UnsavedChangesDialogComponent, UserPreferencesService } from '@alfresco/adf-core';\nimport { MatDialog } from '@angular/material/dialog';\n\n@Injectable({ providedIn: 'root' })\nexport class ModalAiService {\n private route = inject(ActivatedRoute);\n private dialog = inject(MatDialog);\n private userPreferencesService = inject(UserPreferencesService);\n\n openUnsavedChangesModal(callback: () => void): void {\n const hasPreviousSearch = this.route.snapshot?.queryParams?.query?.length > 0;\n const modalHidden = this.userPreferencesService.get(AppConfigValues.UNSAVED_CHANGES_MODAL_HIDDEN) === 'true';\n\n if (!hasPreviousSearch || modalHidden) {\n callback();\n return;\n }\n\n this.dialog\n .open<UnsavedChangesDialogComponent>(UnsavedChangesDialogComponent, {\n width: '345px',\n data: {\n descriptionText: 'KNOWLEDGE_RETRIEVAL.SEARCH.DISCARD_CHANGES.LOSE_RESPONSE',\n confirmButtonText: 'KNOWLEDGE_RETRIEVAL.SEARCH.DISCARD_CHANGES.ASK_AI',\n checkboxText: 'KNOWLEDGE_RETRIEVAL.SEARCH.DISCARD_CHANGES.DO_NOT_SHOW_MESSAGE',\n headerText: 'KNOWLEDGE_RETRIEVAL.SEARCH.DISCARD_CHANGES.WARNING'\n }\n })\n .afterClosed()\n .subscribe((openModal: boolean) => {\n if (openModal) {\n callback();\n }\n });\n }\n}\n","/*!\n * Copyright © 2005-2024 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, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule, TranslateService } 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 { AvatarComponent, IconComponent, NotificationService, UserPreferencesService } from '@alfresco/adf-core';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { AiSearchByTermPayload, AppStore, getAppSelection, SearchByTermAiAction, ToggleAISearchInput } from '@alfresco/aca-shared/store';\nimport { takeUntil } from 'rxjs/operators';\nimport { SelectionState } from '@alfresco/adf-extensions';\nimport { MatSelectModule } from '@angular/material/select';\nimport { AgentService, SearchAiService } from '@alfresco/adf-content-services';\nimport { MatCardModule } from '@angular/material/card';\nimport {\n MAT_TOOLTIP_DEFAULT_OPTIONS,\n MAT_TOOLTIP_DEFAULT_OPTIONS_FACTORY,\n MatTooltipDefaultOptions,\n MatTooltipModule\n} from '@angular/material/tooltip';\nimport { ModalAiService } from '../../../../services/modal-ai.service';\nimport { Agent } from '@alfresco/js-api';\n\nconst MatTooltipOptions: MatTooltipDefaultOptions = {\n ...MAT_TOOLTIP_DEFAULT_OPTIONS_FACTORY(),\n disableTooltipInteractivity: true\n};\n\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n MatButtonModule,\n MatIconModule,\n MatFormFieldModule,\n MatInputModule,\n A11yModule,\n FormsModule,\n ReactiveFormsModule,\n MatSelectModule,\n IconComponent,\n AvatarComponent,\n MatCardModule,\n MatTooltipModule\n ],\n selector: 'aca-search-ai-input',\n templateUrl: './search-ai-input.component.html',\n styleUrls: ['./search-ai-input.component.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: MAT_TOOLTIP_DEFAULT_OPTIONS, useValue: MatTooltipOptions }]\n})\nexport class SearchAiInputComponent implements OnInit, OnDestroy {\n @Input()\n placeholder: string;\n\n @Input()\n agentId: string;\n\n @Input()\n usedInAiResultsPage: boolean;\n\n @Input()\n searchTerm: string;\n\n private readonly storedNodesKey = 'knowledgeRetrievalNodes';\n\n private _agentControl = new FormControl<Agent>(null);\n private _agents: Agent[] = [];\n private onDestroy$ = new Subject<void>();\n private selectedNodesState: SelectionState;\n private _queryControl = new FormControl('');\n private _initialsByAgentId: { [key: string]: string } = {};\n\n get agentControl(): FormControl<Agent> {\n return this._agentControl;\n }\n\n get agents(): Agent[] {\n return this._agents;\n }\n\n get queryControl(): FormControl<string> {\n return this._queryControl;\n }\n\n get initialsByAgentId(): { [key: string]: string } {\n return this._initialsByAgentId;\n }\n\n constructor(\n private store: Store<AppStore>,\n private searchAiService: SearchAiService,\n private notificationService: NotificationService,\n private agentService: AgentService,\n private userPreferencesService: UserPreferencesService,\n private translateService: TranslateService,\n private modalAiService: ModalAiService\n ) {}\n\n ngOnInit(): void {\n const queryValue = this.usedInAiResultsPage ? '' : this.searchTerm || '';\n this.queryControl.setValue(queryValue);\n\n if (!this.usedInAiResultsPage) {\n this.store\n .select(getAppSelection)\n .pipe(takeUntil(this.onDestroy$))\n .subscribe((selection) => {\n this.selectedNodesState = selection;\n });\n } else {\n this.selectedNodesState = JSON.parse(this.userPreferencesService.get(this.storedNodesKey));\n }\n\n this.agentService\n .getAgents()\n .pipe(takeUntil(this.onDestroy$))\n .subscribe(\n (agents) => {\n this._agents = agents;\n\n this.agentControl.setValue(this._agents.find((agent) => agent.id === this.agentId));\n this._initialsByAgentId = this.agents.reduce((initials, agent) => {\n const words = agent.name.split(' ').filter((word) => !word.match(/[^a-zA-Z]+/g));\n initials[agent.id] = `${words[0][0]}${words[1]?.[0] || ''}`;\n return initials;\n }, {});\n },\n () => this.notificationService.showError(this.translateService.instant('KNOWLEDGE_RETRIEVAL.SEARCH.ERRORS.AGENTS_FETCHING'))\n );\n }\n\n ngOnDestroy(): void {\n this.onDestroy$.next();\n this.onDestroy$.complete();\n }\n\n onSearchSubmit() {\n this.modalAiService.openUnsavedChangesModal(() => this.search());\n }\n\n search() {\n const error = this.searchAiService.checkSearchAvailability(this.selectedNodesState);\n if (error) {\n this.notificationService.showError(error);\n } else {\n const payload: AiSearchByTermPayload = {\n searchTerm: this.queryControl.value,\n agentId: this.agentControl.value.id\n };\n this.userPreferencesService.set(this.storedNodesKey, JSON.stringify(this.selectedNodesState));\n this.store.dispatch(new SearchByTermAiAction(payload));\n this.store.dispatch(new ToggleAISearchInput(this.agentControl.value.id, this.queryControl.value));\n }\n }\n}\n","<div class=\"aca-search-ai-input-agent-container\">\n <mat-select\n [formControl]=\"agentControl\"\n class=\"aca-search-ai-input-agent-select\"\n panelClass=\"aca-search-ai-input-agent-select-options aca-search-ai-input-agent-select-agents\"\n data-automation-id=\"aca-search-ai-agents-select\"\n [hideSingleSelectionIndicator]=\"true\">\n <mat-select-trigger class=\"aca-search-ai-input-agent-select-displayed-value\">\n <adf-avatar\n [src]=\"agentControl.value?.avatarUrl\"\n [initials]=\"initialsByAgentId[agentControl.value?.id]\"\n size=\"26px\" />\n <span class=\"aca-search-ai-input-agent-select-displayed-value-text\">{{ agentControl.value?.name }}</span>\n </mat-select-trigger>\n <mat-option\n *ngFor=\"let agent of agents\"\n [value]=\"agent\"\n class=\"aca-search-ai-input-agent-select-options-option\"\n [attr.data-automation-id]=\"'aca-search-ai-input-agent-' + agent.id\"><div class=\"aca-search-ai-input-agent-select-options-option-content\">\n <adf-avatar [src]=\"agent?.avatarUrl\" [initials]=\"initialsByAgentId[agent.id]\" />\n <span class=\"aca-search-ai-input-agent-select-options-option-content-text\" [matTooltip]=\"agent.name\" [matTooltipPosition]=\"'right'\">{{ agent.name }}</span>\n </div>\n </mat-option>\n </mat-select>\n\n <div class=\"aca-search-ai-input-agent-popup-hover-card\">\n <mat-card class=\"aca-search-ai-input-agent-popup-hover-card-container\">\n <mat-card-title class=\"aca-search-ai-input-agent-popup-hover-card-container-title\">\n <adf-avatar\n [initials]=\"initialsByAgentId[agentControl.value?.id]\"\n [src]=\"agentControl.value?.avatarUrl\"\n size=\"50px\" />\n <span class=\"aca-search-ai-input-agent-popup-hover-card-container-title-name\"\n [matTooltipPosition]=\"'right'\"\n [matTooltip]=\"agentControl.value?.name\">\n {{ agentControl.value?.name }}\n </span>\n </mat-card-title>\n <mat-card-content class=\"aca-search-ai-input-agent-popup-hover-card-container-content\">\n {{ agentControl.value?.description }}\n </mat-card-content>\n </mat-card>\n </div>\n</div>\n<input\n class=\"aca-search-ai-input-text\"\n matInput\n [formControl]=\"queryControl\"\n data-automation-id=\"aca-search-ai-input\"\n [placeholder]=\"placeholder | translate\"\n (keyup.enter)=\"onSearchSubmit()\"/>\n<button\n mat-flat-button\n color=\"primary\"\n class=\"aca-search-ai-asking-button\"\n (click)=\"onSearchSubmit()\"\n [disabled]=\"!queryControl.value\"\n data-automation-id=\"aca-search-ai-asking-button\">\n <adf-icon [value]=\"'adf:three_magic_stars_ai'\" />\n <span class=\"aca-search-ai-asking-button-label\">{{ 'KNOWLEDGE_RETRIEVAL.SEARCH.SEARCH_INPUT.ASK_BUTTON_LABEL' | translate }}</span>\n</button>\n","/*!\n * Copyright © 2005-2024 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 } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { SearchAiInputComponent } from '../search-ai-input/search-ai-input.component';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { SearchAiNavigationService } from '../../../../services/search-ai-navigation.service';\nimport { SearchAiService, SearchAiInputState } from '@alfresco/adf-content-services';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Observable } from 'rxjs';\nimport { AsyncPipe } from '@angular/common';\nimport { Router } from '@angular/router';\n\n@Component({\n standalone: true,\n imports: [SearchAiInputComponent, MatIconModule, MatDividerModule, MatButtonModule, TranslateModule, AsyncPipe],\n selector: 'aca-search-ai-input-container',\n templateUrl: './search-ai-input-container.component.html',\n styleUrls: ['./search-ai-input-container.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class SearchAiInputContainerComponent implements OnInit {\n @Input()\n placeholder = 'KNOWLEDGE_RETRIEVAL.SEARCH.SEARCH_INPUT.DEFAULT_PLACEHOLDER';\n @Input()\n agentId: string;\n @Input()\n usedInAiResultsPage: boolean;\n\n inputState$: Observable<SearchAiInputState>;\n isKnowledgeRetrievalPage = false;\n\n constructor(private searchAiService: SearchAiService, private searchNavigationService: SearchAiNavigationService, private router: Router) {}\n\n ngOnInit(): void {\n this.isKnowledgeRetrievalPage = this.router.url.startsWith('/knowledge-retrieval');\n this.inputState$ = this.searchAiService.toggleSearchAiInput$;\n }\n\n leaveSearchInput(): void {\n this.searchNavigationService.navigateToPreviousRouteOrCloseInput();\n }\n}\n","<aca-search-ai-input\n [searchTerm]=\"(inputState$ | async).searchTerm\"\n [placeholder]=\"placeholder\"\n [agentId]=\"agentId\"\n [usedInAiResultsPage]=\"usedInAiResultsPage\" />\n<mat-divider\n [vertical]=\"true\"\n class=\"aca-search-ai-input-container-divider\" />\n<button\n mat-icon-button\n (click)=\"leaveSearchInput()\"\n data-automation-id=\"aca-search-ai-input-container-leaving-search-button\"\n [title]=\"(isKnowledgeRetrievalPage ? 'KNOWLEDGE_RETRIEVAL.SEARCH.SEARCH_INPUT.HIDE_ANSWER' : 'KNOWLEDGE_RETRIEVAL.SEARCH.SEARCH_INPUT.HIDE_INPUT') | translate\"\n class=\"aca-search-ai-input-container-close\">\n <mat-icon>close</mat-icon>\n</button>\n","/*!\n * Copyright © 2005-2024 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 { SavedSearchesService } from '@alfresco/adf-content-services';\nimport { Injectable } from '@angular/core';\nimport { AbstractControl, AsyncValidator, ValidationErrors } from '@angular/forms';\nimport { catchError, map, Observable, of } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class UniqueSearchNameValidator implements AsyncValidator {\n constructor(private readonly savedSearchesService: SavedSearchesService) {}\n\n validate(control: AbstractControl): Observable<ValidationErrors | null> {\n return this.savedSearchesService.getSavedSearches().pipe(\n map((searches) =>\n searches.some((search) => search.name === control.value) ? { message: 'APP.BROWSE.SEARCH.SAVE_SEARCH.SEARCH_NAME_NOT_UNIQUE_ERROR' } : null\n ),\n catchError(() => of(null))\n );\n }\n}\n","/*!\n * Copyright © 2005-2024 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 { MatMenuModule } from '@angular/material/menu';\nimport { SearchInputControlComponent } from '../../search-input-control/search-input-control.component';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } 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, Validators } from '@angular/forms';\nimport { CoreModule } from '@alfresco/adf-core';\nimport { AutoFocusDirective, forbidOnlySpaces, SavedSearchesService } from '@alfresco/adf-content-services';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { take } from 'rxjs/operators';\nimport { Store } from '@ngrx/store';\nimport { AppStore, SnackbarErrorAction, SnackbarInfoAction } from '@alfresco/aca-shared/store';\nimport { UniqueSearchNameValidator } from './unique-search-name-validator';\nimport { SavedSearchForm } from './saved-search-form.interface';\n\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n MatMenuModule,\n MatButtonModule,\n MatIconModule,\n MatFormFieldModule,\n MatInputModule,\n A11yModule,\n MatCheckboxModule,\n FormsModule,\n SearchInputControlComponent,\n CoreModule,\n AutoFocusDirective\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 form: FormGroup<SavedSearchForm>;\n disableSubmitButton = false;\n\n constructor(\n private readonly dialog: MatDialogRef<SaveSearchDialogComponent>,\n private readonly store: Store<AppStore>,\n private readonly savedSearchesService: SavedSearchesService,\n private readonly uniqueSearchNameValidator: UniqueSearchNameValidator,\n @Inject(MAT_DIALOG_DATA) private readonly data: { searchUrl: string }\n ) {\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();\n this.store.dispatch(new SnackbarInfoAction('APP.BROWSE.SEARCH.SAVE_SEARCH.SAVE_SUCCESS'));\n this.disableSubmitButton = false;\n },\n error: () => {\n this.store.dispatch(new SnackbarErrorAction('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 class=\"aca-save-search-dialog__title\">{{\"APP.BROWSE.SEARCH.SAVE_SEARCH.MODAL_HEADER\" | translate}}</h2>\n <button mat-icon-button mat-dialog-close><mat-icon>close</mat-icon></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 adf-auto-focus\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 color=\"primary\"\n (click)=\"submit()\"\n [disabled]=\"!form.valid || disableSubmitButton\">\n {{ 'SAVE' | titlecase | translate}}\n </button>\n</mat-dialog-actions>\n","/*!\n * Copyright © 2005-2024 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, HostListener, Input } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { SaveSearchDialogComponent } from '../dialog/save-search-dialog.component';\n\ninterface SaveSearchDirectiveDialogData {\n searchUrl: string;\n}\n\n@Directive({\n selector: '[acaSaveSearch]',\n standalone: true\n})\nexport class SaveSearchDirective {\n /** Encoded search query */\n @Input()\n acaSaveSearchQuery: string;\n\n constructor(private readonly dialogRef: MatDialog) {}\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent) {\n event.preventDefault();\n this.openDialog();\n }\n\n private openDialog(): void {\n this.dialogRef.open(SaveSearchDialogComponent, this.getDialogConfig());\n }\n\n private getDialogConfig(): { data: SaveSearchDirectiveDialogData } {\n return {\n data: { searchUrl: this.acaSaveSearchQuery }\n };\n }\n}\n","/*!\n * Copyright © 2005-2024 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, DestroyRef, inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { NodeEntry, Pagination, ResultSetPaging } from '@alfresco/js-api';\nimport { ActivatedRoute, Params } from '@angular/router';\nimport {\n AlfrescoViewerComponent,\n DocumentListComponent,\n ResetSearchDirective,\n SavedSearch,\n SavedSearchesService,\n SearchConfiguration,\n SearchFilterChipsComponent,\n SearchFormComponent,\n SearchQueryBuilderService,\n TagService\n} from '@alfresco/adf-content-services';\nimport {\n infoDrawerPreview,\n NavigateToFolder,\n SetInfoDrawerPreviewStateAction,\n SetInfoDrawerStateAction,\n SetSearchItemsTotalCountAction,\n ShowInfoDrawerPreviewAction,\n SnackbarErrorAction,\n SnackbarInfoAction\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 { SearchSortingDefinition } from '@alfresco/adf-content-services/lib/search/models/search-sorting-definition.interface';\nimport { take, takeUntil } from 'rxjs/operators';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } 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 { TagsColumnComponent } from '../../dl-custom-components/tags-column/tags-column.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { SearchResultsRowComponent } from '../search-results-row/search-results-row.component';\nimport { DocumentListPresetRef, DynamicColumnComponent } from '@alfresco/adf-extensions';\nimport { BulkActionsDropdownComponent } from '../../bulk-actions-dropdown/bulk-actions-dropdown.component';\nimport { SearchAiInputContainerComponent } from '../../knowledge-retrieval/search-ai/search-ai-input-container/search-ai-input-container.component';\nimport {\n extractFiltersFromEncodedQuery,\n extractSearchedWordFromEncodedQuery,\n extractUserQueryFromEncodedQuery,\n formatSearchTerm\n} from '../../../utils/aca-search-utils';\nimport { SaveSearchDirective } from '../search-save/directive/save-search.directive';\nimport { Subject } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatMenuModule } from '@angular/material/menu';\n\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n SearchInputComponent,\n MatProgressBarModule,\n MatDividerModule,\n MatButtonModule,\n MatMenuModule,\n DocumentListDirective,\n ContextActionsDirective,\n ThumbnailColumnComponent,\n SearchActionMenuComponent,\n TagsColumnComponent,\n PaginationComponent,\n MatIconModule,\n InfoDrawerComponent,\n SearchResultsRowComponent,\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 SearchAiInputContainerComponent,\n SaveSearchDirective\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 {\n private notificationService = inject(NotificationService);\n\n infoDrawerPreview$ = this.store.select(infoDrawerPreview);\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 searchConfig: SearchConfiguration;\n\n private readonly loadedFilters$ = new Subject<void>();\n private readonly destroyRef = inject(DestroyRef);\n\n constructor(\n tagsService: TagService,\n private readonly queryBuilder: SearchQueryBuilderService,\n private readonly changeDetectorRef: ChangeDetectorRef,\n private readonly route: ActivatedRoute,\n private readonly translationService: TranslationService,\n private readonly savedSearchesService: SavedSearchesService\n ) {\n super();\n\n this.isTagsEnabled = tagsService.areTagsEnabled();\n\n queryBuilder.paging = {\n skipCount: 0,\n maxItems: 25\n };\n\n this.queryBuilder.configUpdated\n .asObservable()\n .pipe(takeUntilDestroyed())\n .subscribe((searchConfig) => {\n this.searchConfig = searchConfig;\n this.updateUserQuery();\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.updated.subscribe((query) => {\n this.isLoading = true;\n if (query) {\n this.sorting = this.getSorting();\n this.changeDetectorRef.detectChanges();\n }\n }),\n\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\n this.columns = this.extensions.documentListPresets.searchResults || [];\n\n if (this.route) {\n this.route.queryParams.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((params: Params) => {\n this.savedSearchesService\n .getSavedSearches()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((savedSearches) => {\n const savedSearchFound = savedSearches.find((savedSearch) => savedSearch.encodedUrl === encodeURIComponent(params[this.queryParamName]));\n this.initialSavedSearch = savedSearchFound !== undefined ? savedSearchFound : this.initialSavedSearch;\n });\n if (params[this.queryParamName]) {\n this.isLoading = true;\n }\n this.loadedFilters$.next();\n this.encodedQuery = params[this.queryParamName] || null;\n this.searchedWord = extractSearchedWordFromEncodedQuery(this.encodedQuery);\n this.updateUserQuery();\n const filtersFromEncodedQuery = extractFiltersFromEncodedQuery(this.encodedQuery);\n if (filtersFromEncodedQuery !== null) {\n const filtersToLoad = this.queryBuilder.categories.length;\n let loadedFilters = this.searchedWord === '' ? 0 : 1;\n this.queryBuilder.filterLoaded\n .asObservable()\n .pipe(takeUntilDestroyed(this.destroyRef), takeUntil(this.loadedFilters$))\n .subscribe(() => {\n loadedFilters++;\n if (filtersToLoad === loadedFilters) {\n this.loadedFilters$.next();\n this.queryBuilder.execute(false);\n }\n });\n this.queryBuilder.populateFilters.next(filtersFromEncodedQuery);\n } else {\n this.queryBuilder.populateFilters.next({});\n this.queryBuilder.execute(false);\n }\n this.queryBuilder.userQuery = extractUserQueryFromEncodedQuery(this.encodedQuery);\n });\n }\n }\n\n onSearchError(error: { message: any }) {\n const { statusCode } = JSON.parse(error.message).error;\n\n const messageKey = `APP.BROWSE.SEARCH.ERRORS.${statusCode}`;\n let message = this.translationService.instant(messageKey);\n\n if (message === messageKey) {\n message = this.translationService.instant(`APP.BROWSE.SEARCH.ERRORS.GENERIC`);\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.update();\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.update();\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.store.dispatch(new SnackbarInfoAction('APP.BROWSE.SEARCH.SAVE_SEARCH.EDIT_DIALOG.SUCCESS_MESSAGE'));\n },\n error: () => {\n this.store.dispatch(new SnackbarErrorAction('APP.BROWSE.SEARCH.SAVE_SEARCH.EDIT_DIALOG.ERROR_MESSAGE'));\n }\n });\n }\n\n private updateUserQuery(): void {\n const updatedUserQuery = formatSearchTerm(this.searchedWord, this.searchConfig['app:fields']);\n this.queryBuilder.userQuery = updatedUserQuery;\n }\n}\n","<aca-page-layout [class.aca-search-results-active-search-ai-input]=\"searchAiInputState.active\">\n <div class=\"aca-page-layout-header\">\n <aca-search-ai-input-container\n *ngIf=\"searchAiInputState.active\"\n [agentId]=\"searchAiInputState.selectedAgentId\" />\n <div class=\"aca-header-container\">\n <aca-search-input />\n <aca-bulk-actions-dropdown *ngIf=\"bulkActions\" [items]=\"bulkActions\" />\n <div class=\"aca-search-toolbar-spacer\"></div>\n <aca-toolbar [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\" color=\"primary\" 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 [vertical]=\"true\" class=\"aca-content__divider\" />\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 {{ '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 {{ '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 {{ '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 [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 {{ 'APP.BROWSE.SEARCH.SAVE_SEARCH.ACTION_BUTTON' | translate }}\n </button>\n </ng-template>\n <button\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 {{ '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 id=\"app.search.thumbnail\" key=\"$thumbnail\" type=\"image\" [sr-title]=\"'ADF-DOCUMENT-LIST.LAYOUT.THUMBNAIL'\" [sortable]=\"false\">\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 color=\"accent\"\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-2024 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 { SearchActionMenuComponent } from './search-action-menu/search-action-menu.component';\nimport { SearchLibrariesResultsComponent } from './search-libraries-results/search-libraries-results.component';\nimport { SearchResultsComponent } from './search-results/search-results.component';\nimport { SearchResultsRowComponent } from './search-results-row/search-results-row.component';\nimport { SearchInputComponent } from './search-input/search-input.component';\nimport { SearchInputControlComponent } from './search-input-control/search-input-control.component';\n\nexport const APP_SEARCH_DIRECTIVES = [\n SearchActionMenuComponent,\n SearchLibrariesResultsComponent,\n SearchResultsComponent,\n SearchResultsRowComponent,\n SearchInputComponent,\n SearchInputControlComponent\n] as const;\n","/*!\n * Copyright © 2005-2024 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, NodeNameTooltipPipe, NodesApiService } from '@alfresco/adf-content-services';\nimport { ChangeDetectorRef, Component, ElementRef, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { Actions, ofType } from '@ngrx/effects';\nimport { Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { NodeActionTypes } from '@alfresco/aca-shared/store';\nimport { LockedByComponent, isLocked } from '@alfresco/aca-shared';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { IconComponent } from '@alfresco/adf-core';\nimport { DynamicExtensionComponent } from '@alfresco/adf-extensions';\nimport { DatatableCellBadgesComponent } from '../datatable-cell-badges/datatable-cell-badges.component';\n\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n LockedByComponent,\n IconComponent,\n NodeNameTooltipPipe,\n DynamicExtensionComponent,\n DatatableCellBadgesComponent\n ],\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, OnDestroy {\n private onDestroy$$ = new Subject<boolean>();\n\n isFile: boolean;\n isFileWriteLocked: boolean;\n\n constructor(element: ElementRef, private cd: ChangeDetectorRef, private actions$: Actions, private nodesService: NodesApiService) {\n super(element, nodesService);\n }\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(takeUntil(this.onDestroy$$)).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 takeUntil(this.onDestroy$$)\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 ngOnDestroy() {\n this.onDestroy$$.next(true);\n this.onDestroy$$.complete();\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=\"{{ node | adfNodeNameTooltip }}\"\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-2024 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, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { ActivatedRoute, Params } from '@angular/router';\nimport { NodeEntry, Node, 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 { SetCurrentFolderAction, isAdmin, UploadFileVersionAction, showLoaderSelector } from '@alfresco/aca-shared/store';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\nimport {\n BreadcrumbComponent,\n DocumentListComponent,\n FileUploadEvent,\n FilterSearch,\n ShareDataRow,\n UploadDragAreaComponent\n} from '@alfresco/adf-content-services';\nimport { DocumentListPresetRef, DynamicColumnComponent } from '@alfresco/adf-extensions';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { DocumentListDirective } from '../../directives/document-list.directive';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { SearchAiInputContainerComponent } from '../knowledge-retrieval/search-ai/search-ai-input-container/search-ai-input-container.component';\n\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n GenericErrorComponent,\n DocumentListDirective,\n ContextActionsDirective,\n PaginationComponent,\n MatProgressSpinnerModule,\n InfoDrawerComponent,\n PaginationDirective,\n PageLayoutComponent,\n ToolbarComponent,\n SearchAiInputContainerComponent,\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 selector: 'aca-files'\n})\nexport class FilesComponent extends PageComponent implements OnInit, OnDestroy {\n isValidPath = true;\n isAdmin = false;\n selectedNode: NodeEntry;\n queryParams = null;\n showLoader$ = this.store.select(showLoaderSelector);\n private nodePath: PathElement[];\n\n columns: DocumentListPresetRef[] = [];\n isFilterHeaderActive = false;\n\n constructor(private contentApi: ContentApiService, private nodeActionsService: NodeActionsService, private route: ActivatedRoute) {\n super();\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(takeUntil(this.onDestroy$)).subscribe((queryMap: Params) => {\n this.queryParams = queryMap.params;\n });\n this.route.params.pipe(takeUntil(this.onDestroy$)).subscribe(({ folderId }: Params) => {\n const nodeId = folderId || data.defaultNodeId;\n\n this.contentApi\n .getNode(nodeId)\n .pipe(takeUntil(this.onDestroy$))\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(['/personal-files', node.entry.parentId], {\n replaceUrl: true\n });\n }\n },\n () => (this.isValidPath = false)\n );\n });\n\n this.subscriptions = this.subscriptions.concat([\n this.nodeActionsService.contentCopied.subscribe((nodes) => this.onContentCopied(nodes)),\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(takeUntil(this.onDestroy$))\n .subscribe((value) => {\n this.isAdmin = value;\n });\n\n this.extensions.filesDocumentListPreset$.pipe(takeUntil(this.onDestroy$)).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 onFileUploadedEvent(event: FileUploadEvent) {\n const node: NodeEntry = event.file.data;\n\n // check root and child nodes\n if (node?.entry?.parentId === this.getParentNodeId()) {\n this.reload(this.selectedNode);\n return;\n }\n\n // check the child nodes to show dropped folder\n if (event && 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.reload(this.selectedNode);\n }\n\n onContentCopied(nodes: NodeEntry[]) {\n const newNode = nodes.find((node) => node?.entry?.parentId === this.getParentNodeId());\n if (newNode) {\n this.reload(this.selectedNode);\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 this.navigateToFilter(activeFilters);\n } else {\n void this.router.navigate(['.'], { relativeTo: this.route });\n this.isFilterHeaderActive = false;\n this.showHeader = ShowHeaderMode.Data;\n this.onAllFilterCleared();\n }\n }\n\n navigateToFilter(activeFilters: FilterSearch[]) {\n const objectFromMap = {};\n activeFilters.forEach((filter: FilterSearch) => {\n let paramValue;\n if (filter?.value?.from && filter?.value?.to) {\n paramValue = `${filter.value.from}||${filter.value.to}`;\n } else {\n paramValue = filter.value;\n }\n objectFromMap[filter.key] = paramValue;\n });\n\n void this.router.navigate([], { relativeTo: this.route, queryParams: objectFromMap });\n }\n\n onError() {\n this.isValidPath = false;\n }\n}\n","<aca-page-layout [hasError]=\"!isValidPath\">\n <div class=\"aca-page-layout-header\">\n <aca-search-ai-input-container\n *ngIf=\"searchAiInputState.active; else header\"\n [agentId]=\"searchAiInputState.selectedAgentId\" />\n <ng-template #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 </ng-template>\n </div>\n\n <div class=\"aca-page-layout-error\">\n <aca-generic-error />\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 [isResizingEnabled]=\"true\"\n [blurOnResize]=\"false\"\n (node-dblclick)=\"handleNodeClick($event)\"\n (name-click)=\"handleNodeClick($event)\"\n (selectedItemsCountChanged)=\"onSelectedItemsCountChanged($event)\"\n (filterSelection)=\"onFilterSelected($event)\"\n (error)=\"onError()\"\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-2024 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 { SiteEntry } from '@alfresco/js-api';\nimport { Component, OnInit, ViewEncapsulation } from '@angular/core';\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 { DocumentListModule } from '@alfresco/adf-content-services';\nimport { DataTableModule, EmptyContentComponent, PaginationComponent } from '@alfresco/adf-core';\nimport { DocumentListDirective } from '../../directives/document-list.directive';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n DocumentListModule,\n DocumentListDirective,\n ContextActionsDirective,\n DataTableModule,\n PaginationComponent,\n PaginationDirective,\n InfoDrawerComponent,\n PageLayoutComponent,\n TranslateModule,\n ToolbarComponent,\n EmptyContentComponent,\n DynamicColumnComponent\n ],\n templateUrl: './libraries.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class LibrariesComponent extends PageComponent implements OnInit {\n columns: DocumentListPresetRef[] = [];\n\n constructor(private appHookService: AppHookService) {\n super();\n }\n\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 navigateTo(node: SiteEntry) {\n if (node?.entry?.guid) {\n this.store.dispatch(new NavigateLibraryAction(node.entry.guid));\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 {{ (selectedRowItemsCount < 1 ? 'APP.BROWSE.LIBRARIES.MENU.MY_LIBRARIES.TITLE' : 'APP.HEADER.SELECTED') | translate: { count: selectedRowItemsCount } }}\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]=\"'-mysites-'\"\n [selectionMode]=\"'multiple'\"\n [multiselect]=\"true\"\n [navigate]=\"false\"\n [sorting]=\"['title', 'asc']\"\n [sortingMode]=\"'client'\"\n [preselectNodes]=\"selectedNodesState?.nodes\"\n [imageResolver]=\"imageResolver\"\n [displayCheckboxesOnHover]=\"true\"\n [isResizingEnabled]=\"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\n icon=\"library_books\"\n [title]=\"'APP.BROWSE.LIBRARIES.EMPTY_STATE.FILE_LIBRARIES.TITLE'\"\n subtitle=\"APP.BROWSE.LIBRARIES.EMPTY_STATE.FILE_LIBRARIES.TEXT\"\n />\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 [draggable]=\"column.draggable\"\n [resizable]=\"column.resizable\"\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 [draggable]=\"column.draggable\"\n [resizable]=\"column.resizable\"\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]=\"$any(selection).library\" />\n </div>\n </div>\n</aca-page-layout>\n","/*!\n * Copyright © 2005-2024 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 } from '@angular/core';\nimport { SiteEntry, FavoritePaging, Pagination } from '@alfresco/js-api';\nimport {\n AppHookService,\n ContentApiService,\n ContextActionsDirective,\n InfoDrawerComponent,\n PageComponent,\n PageLayoutComponent,\n ToolbarComponent\n} from '@alfresco/aca-shared';\nimport { NavigateLibraryAction } from '@alfresco/aca-shared/store';\nimport {\n CustomEmptyContentTemplateDirective,\n DataColumnComponent,\n DataColumnListComponent,\n EmptyContentComponent,\n PaginationComponent,\n UserPreferencesService\n} from '@alfresco/adf-core';\nimport { DocumentListPresetRef, DynamicColumnComponent } from '@alfresco/adf-extensions';\nimport { CommonModule } from '@angular/common';\nimport { DocumentListDirective } from '../../directives/document-list.directive';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { DocumentListComponent } from '@alfresco/adf-content-services';\n\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n DocumentListDirective,\n ContextActionsDirective,\n PaginationComponent,\n InfoDrawerComponent,\n PageLayoutComponent,\n TranslateModule,\n ToolbarComponent,\n EmptyContentComponent,\n DynamicColumnComponent,\n DataColumnListComponent,\n DataColumnComponent,\n DocumentListComponent,\n CustomEmptyContentTemplateDirective\n ],\n templateUrl: './favorite-libraries.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class FavoriteLibrariesComponent extends PageComponent implements OnInit {\n pagination: Pagination = new Pagination({\n skipCount: 0,\n maxItems: 25,\n totalItems: 0\n });\n isLoading = false;\n list: FavoritePaging;\n columns: DocumentListPresetRef[] = [];\n\n constructor(\n private appHookService: AppHookService,\n private contentApiService: ContentApiService,\n private preferences: UserPreferencesService,\n private changeDetectorRef: ChangeDetectorRef\n ) {\n super();\n }\n\n ngOnInit() {\n super.ngOnInit();\n\n this.getList({ maxItems: this.preferences.paginationSize });\n\n this.subscriptions = this.subscriptions.concat([\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 navigateTo(node: SiteEntry) {\n if (node?.entry?.guid) {\n this.store.dispatch(new NavigateLibraryAction(node.entry.guid, 'favorite/libraries'));\n }\n }\n\n handleNodeClick(event: Event) {\n this.navigateTo((event as CustomEvent).detail?.node);\n }\n\n onChangePageSize(pagination: Pagination) {\n this.preferences.paginationSize = pagination.maxItems;\n this.getList(pagination);\n }\n\n onChange(pagination: Pagination) {\n this.getList(pagination);\n }\n\n private 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-page-layout>\n <div class=\"aca-page-layout-header\">\n <h1 class=\"aca-page-title\">\n {{ (selectedRowItemsCount < 1 ? 'APP.BROWSE.LIBRARIES.MENU.FAVORITE_LIBRARIES.TITLE' : 'APP.HEADER.SELECTED') | translate: { count: selectedRowItemsCount } }}\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 [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 (selectedItemsCountChanged)=\"onSelectedItemsCountChanged($event)\"\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]=\"'APP.BROWSE.LIBRARIES.EMPTY_STATE.FAVORITE_LIBRARIES.TITLE'\"\n subtitle=\"APP.BROWSE.LIBRARIES.EMPTY_STATE.FAVORITE_LIBRARIES.TEXT\"\n />\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 [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 </ng-container>\n\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-container>\n </ng-container>\n </data-columns>\n </adf-document-list>\n\n <adf-pagination\n [target]=\"documentList\"\n [pagination]=\"pagination\"\n (changePageSize)=\"onChangePageSize($event)\"\n (changePageNumber)=\"onChange($event)\"\n (nextPage)=\"onChange($event)\"\n (prevPage)=\"onChange($event)\"\n />\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-2024 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 { NodeEntry, Node, PathElement, PathInfo } from '@alfresco/js-api';\nimport { Component, OnInit, ViewEncapsulation } 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 { TranslateModule } from '@ngx-translate/core';\nimport { DocumentListComponent } from '@alfresco/adf-content-services';\nimport { SearchAiInputContainerComponent } from '../knowledge-retrieval/search-ai/search-ai-input-container/search-ai-input-container.component';\n\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n DocumentListDirective,\n ContextActionsDirective,\n PaginationComponent,\n PaginationDirective,\n InfoDrawerComponent,\n PageLayoutComponent,\n TranslateModule,\n ToolbarComponent,\n SearchAiInputContainerComponent,\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 columns: DocumentListPresetRef[] = [];\n\n constructor(private contentApi: ContentApiService) {\n super();\n }\n\n ngOnInit() {\n super.ngOnInit();\n\n this.subscriptions = this.subscriptions.concat([\n this.uploadService.fileUploadComplete.pipe(debounceTime(300)).subscribe(() => this.reload()),\n this.uploadService.fileUploadDeleted.pipe(debounceTime(300)).subscribe(() => this.reload())\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 <aca-search-ai-input-container\n *ngIf=\"searchAiInputState.active; else header\"\n [agentId]=\"searchAiInputState.selectedAgentId\" />\n <ng-template #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 </ng-template>\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-2024 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 { DocumentListModule } from '@alfresco/adf-content-services';\nimport { DataTableModule, EmptyContentComponent, PaginationComponent } from '@alfresco/adf-core';\nimport { DocumentListDirective } from '../../directives/document-list.directive';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { SearchAiInputContainerComponent } from '../knowledge-retrieval/search-ai/search-ai-input-container/search-ai-input-container.component';\n\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n DocumentListModule,\n DocumentListDirective,\n ContextActionsDirective,\n DataTableModule,\n PaginationComponent,\n PaginationDirective,\n InfoDrawerComponent,\n PageLayoutComponent,\n TranslateModule,\n ToolbarComponent,\n SearchAiInputContainerComponent,\n EmptyContentComponent,\n DynamicColumnComponent\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.reload()),\n this.uploadService.fileUploadDeleted.pipe(debounceTime(300)).subscribe(() => this.reload())\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 <aca-search-ai-input-container\n *ngIf=\"searchAiInputState.active; else header\"\n [agentId]=\"searchAiInputState.selectedAgentId\" />\n <ng-template #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 </ng-template>\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-2024 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 { 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 { DocumentListModule } from '@alfresco/adf-content-services';\nimport { DataTableModule, EmptyContentComponent, PaginationComponent } from '@alfresco/adf-core';\nimport { DocumentListDirective } from '../../directives/document-list.directive';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { SearchAiInputContainerComponent } from '../knowledge-retrieval/search-ai/search-ai-input-container/search-ai-input-container.component';\n\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n DocumentListModule,\n DocumentListDirective,\n ContextActionsDirective,\n DataTableModule,\n PaginationComponent,\n InfoDrawerComponent,\n PaginationDirective,\n PageLayoutComponent,\n TranslateModule,\n ToolbarComponent,\n SearchAiInputContainerComponent,\n EmptyContentComponent,\n DynamicColumnComponent\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 columns: DocumentListPresetRef[] = [];\n\n constructor(private appHookService: AppHookService) {\n super();\n }\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.reload()),\n this.uploadService.fileUploadDeleted.pipe(debounceTime(300)).subscribe(() => this.reload())\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 <aca-search-ai-input-container\n *ngIf=\"searchAiInputState.active; else header\"\n [agentId]=\"searchAiInputState.selectedAgentId\" />\n <ng-template #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 </ng-template>\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-2024 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 } from '@angular/core';\nimport { ActivatedRoute, NavigationStart } from '@angular/router';\nimport { ContentApiService, PageComponent, PageLayoutComponent, ToolbarComponent } from '@alfresco/aca-shared';\nimport { NavigateToFolder, NavigateToPreviousPage, SetSelectedNodesAction } from '@alfresco/aca-shared/store';\nimport { merge, Subject } from 'rxjs';\nimport { BreadcrumbComponent, ContentService, PermissionListComponent } from '@alfresco/adf-content-services';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } 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, takeUntil } from 'rxjs/operators';\nimport { ContentActionRef } from '@alfresco/adf-extensions';\nimport { FileSizePipe, InfoDrawerButtonsDirective } from '@alfresco/adf-core';\n\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n MatIconModule,\n MatTabsModule,\n MatProgressBarModule,\n MatButtonModule,\n MetadataTabComponent,\n CommentsTabComponent,\n PageLayoutComponent,\n ToolbarComponent,\n InfoDrawerButtonsDirective,\n PermissionListComponent,\n BreadcrumbComponent,\n FileSizePipe\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 nodeId: string;\n isLoading: boolean;\n onDestroy$ = new Subject<void>();\n activeTab = 1;\n aspectActions: Array<ContentActionRef> = [];\n nodeIcon: string;\n canManagePermissions = true;\n\n constructor(private route: ActivatedRoute, private contentApi: ContentApiService, private contentService: ContentService) {\n super();\n }\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.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 this.infoDrawerOpened$\n .pipe(\n first((opened) => !opened),\n takeUntil(\n merge(\n this.onDestroy$,\n this.router.events.pipe(\n first((event) => event instanceof NavigationStart),\n takeUntil(this.onDestroy$)\n )\n )\n )\n )\n .subscribe(() => this.goBack());\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 this.onDestroy$.next();\n this.onDestroy$.complete();\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 color=\"primary\" mode=\"indeterminate\" />\n</ng-template>\n","/*!\n * Copyright © 2005-2024 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 appSettings = inject(AppSettingsService);\n private router = inject(Router);\n\n ngOnInit() {\n this.router.navigateByUrl(this.appSettings.landingPage);\n }\n}\n","/*!\n * Copyright © 2005-2024 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 } from '@alfresco/js-api';\nimport { Component, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { Observable, Subject, throwError } from 'rxjs';\nimport { AppService } from '@alfresco/aca-shared';\nimport { takeUntil } from 'rxjs/operators';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatFormFieldModule } from '@angular/material/form-field';\n\n@Component({\n standalone: true,\n imports: [CommonModule, TranslateModule, ReactiveFormsModule, MatButtonModule, MatIconModule, MatDividerModule, MatFormFieldModule],\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, OnDestroy {\n peopleApi: PeopleApi;\n\n profileForm: FormGroup;\n personDetails: Person;\n\n generalSectionDropdown = true;\n generalSectionButtonsToggle = true;\n\n loginSectionDropdown = false;\n loginSectionButtonsToggle = true;\n passwordSectionDropdown = false;\n\n contactSectionDropdown = false;\n contactSectionButtonsToggle = true;\n appNavNarMode$: Observable<'collapsed' | 'expanded'>;\n private onDestroy$ = new Subject<boolean>();\n\n constructor(private router: Router, apiService: AlfrescoApiService, private appService: AppService) {\n this.peopleApi = new PeopleApi(apiService.getInstance());\n this.appNavNarMode$ = appService.appNavNarMode$.pipe(takeUntil(this.onDestroy$));\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\n toggleClick() {\n this.appService.toggleAppNavBar$.next();\n }\n\n populateForm(userInfo: Person) {\n this.profileForm = new FormGroup({\n jobTitle: new FormControl(userInfo?.jobTitle || ''),\n location: new FormControl(userInfo?.location || ''),\n telephone: new FormControl(userInfo?.telephone || '', [Validators.pattern('^([0-9]+-)*[0-9]+$')]),\n mobile: new FormControl(userInfo?.mobile || '', [Validators.pattern('^([0-9]+-)*[0-9]+$')]),\n oldPassword: new FormControl(''),\n newPassword: new FormControl(''),\n verifyPassword: new FormControl(''),\n companyName: new FormControl(userInfo?.company?.organization || ''),\n companyPostCode: new FormControl(userInfo?.company?.postcode || ''),\n companyAddress: new FormControl(userInfo?.company?.address1 || ''),\n companyTelephone: new FormControl(userInfo?.company?.telephone || '', [Validators.pattern('^([0-9]+-)*[0-9]+$')]),\n companyEmail: new FormControl(userInfo?.company?.email || '', [Validators.email])\n });\n }\n\n navigateToPersonalFiles() {\n this.router.navigate(['/personal-files'], {\n replaceUrl: true\n });\n }\n\n toggleGeneralDropdown() {\n this.generalSectionDropdown = !this.generalSectionDropdown;\n\n if (!this.generalSectionDropdown) {\n this.generalSectionButtonsToggle = true;\n }\n }\n\n toggleGeneralButtons() {\n this.generalSectionButtonsToggle = !this.generalSectionButtonsToggle;\n\n if (!this.generalSectionButtonsToggle) {\n this.generalSectionDropdown = true;\n }\n }\n\n onSaveGeneralData(event) {\n this.generalSectionButtonsToggle = !this.generalSectionButtonsToggle;\n this.updatePersonDetails(event);\n }\n\n onSaveLoginData() {\n this.passwordSectionDropdown = !this.passwordSectionDropdown;\n this.loginSectionButtonsToggle = !this.loginSectionButtonsToggle;\n }\n\n onSaveCompanyData(event) {\n this.contactSectionButtonsToggle = !this.contactSectionButtonsToggle;\n this.updatePersonDetails(event);\n }\n\n toggleLoginDropdown() {\n this.loginSectionDropdown = !this.loginSectionDropdown;\n\n if (!this.loginSectionDropdown) {\n this.loginSectionButtonsToggle = true;\n }\n }\n\n toggleLoginButtons() {\n this.loginSectionButtonsToggle = !this.loginSectionButtonsToggle;\n this.passwordSectionDropdown = !this.passwordSectionDropdown;\n\n if (!this.loginSectionButtonsToggle) {\n this.loginSectionDropdown = true;\n this.passwordSectionDropdown = true;\n }\n }\n\n toggleContactDropdown() {\n this.contactSectionDropdown = !this.contactSectionDropdown;\n\n if (!this.contactSectionDropdown) {\n this.contactSectionButtonsToggle = true;\n }\n }\n\n toggleContactButtons() {\n this.contactSectionButtonsToggle = !this.contactSectionButtonsToggle;\n\n if (!this.contactSectionButtonsToggle) {\n this.contactSectionDropdown = 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 ngOnDestroy() {\n this.onDestroy$.next(true);\n this.onDestroy$.complete();\n }\n}\n","<div class=\"app-profile-container\">\n <div class=\"app-profile-row\">\n <div class=\"app-profile-title\">\n <button *ngIf=\"(appNavNarMode$ | async) === 'collapsed'\" mat-icon-button (click)=\"toggleClick()\"\n title=\"{{'APP.TOOLTIPS.EXPAND_NAVIGATION' | translate}}\">\n <mat-icon>menu</mat-icon>\n </button>\n <mat-icon class=\"app-profile-icon\" (click)=\"navigateToPersonalFiles()\" id=\"backButton\">arrow_back</mat-icon>\n <h3 class=\"app-profile\">{{'APP.EDIT_PROFILE.MY_PROFILE' | translate}}</h3>\n </div>\n </div>\n <div class=\"app-profile-general-row\" [formGroup]=\"profileForm\">\n <div class=\"app-profile-general\">\n <div class=\"app-profile-general-section\">\n <mat-icon class=\"app-profile-general-icon\" (click)=\"toggleGeneralDropdown()\" id=\"toggle-general-dropdown\">\n {{ generalSectionDropdown ? 'expand_more' : 'chevron_right'}}</mat-icon>\n <h4 class=\"app-general-title\">{{'APP.EDIT_PROFILE.GENERAL' | translate}}</h4>\n </div>\n <div class=\"app-general-edit-btn\" *ngIf=\"generalSectionButtonsToggle\">\n <button mat-raised-button (click)=\"toggleGeneralButtons()\" id=\"general-edit-button\"\n class=\"app-general-edit\">{{'APP.EDIT_PROFILE.EDIT' | translate}}</button>\n </div>\n <div class=\"app-general-edit-btn\" *ngIf=\"!generalSectionButtonsToggle\">\n <button mat-raised-button class=\"app-general-cancel-btn\" id=\"general-cancel-button\"\n (click)=\"toggleGeneralButtons()\">{{'APP.EDIT_PROFILE.CANCEL' | translate}}</button>\n <button mat-raised-button class=\"app-general-save-btn\" id=\"general-save-button\" [disabled]=\"profileForm.invalid\"\n (click)=\"onSaveGeneralData(profileForm)\">{{'APP.EDIT_PROFILE.SAVE' | translate}}</button>\n </div>\n </div>\n <mat-divider class=\"app-divider\" *ngIf=\"generalSectionDropdown\" />\n <div *ngIf=\"generalSectionDropdown\">\n <div class=\"app-general-dropdown\">\n <div class=\"app-general-dropdown-details\">\n <h4 class=\"app-profile-general-dropdown-heading\">{{'APP.EDIT_PROFILE.FIRST_NAME' | translate}}</h4>\n <p class=\"app-profile-general-dropdown-details\">{{personDetails?.firstName}}</p>\n </div>\n <mat-divider class=\"app-general-dropdown-divider\" />\n <div class=\"app-general-dropdown-details\">\n <h4 class=\"app-profile-general-dropdown-heading\">{{'APP.EDIT_PROFILE.LAST_NAME' | translate}}</h4>\n <p class=\"app-profile-general-dropdown-details\">{{personDetails?.lastName}}</p>\n </div>\n <mat-divider class=\"app-general-dropdown-divider\" />\n <div class=\"app-general-dropdown-details\">\n <h4 class=\"app-profile-general-dropdown-heading\">{{'APP.EDIT_PROFILE.JOB_TITLE' | translate}}</h4>\n <p class=\"app-profile-general-dropdown-details\" *ngIf=\"generalSectionButtonsToggle\">{{personDetails?.jobTitle}}</p>\n <input type=\"text\" value=\"\" formControlName=\"jobTitle\" *ngIf=\"!generalSectionButtonsToggle\"\n class=\"app-profile-general-dropdown-input-details app-selected\">\n </div>\n <mat-divider class=\"app-general-dropdown-divider\" />\n <div class=\"app-general-dropdown-details\">\n <h4 class=\"app-profile-general-dropdown-heading\">{{'APP.EDIT_PROFILE.LOCATION' | translate}}</h4>\n <p class=\"app-profile-general-dropdown-details\" *ngIf=\"generalSectionButtonsToggle\">{{personDetails?.location}}</p>\n <input type=\"text\" value=\"\" formControlName=\"location\" *ngIf=\"!generalSectionButtonsToggle\"\n class=\"app-profile-general-dropdown-input-details app-selected\">\n </div>\n <mat-divider class=\"app-general-dropdown-divider\" />\n <div class=\"app-general-dropdown-details\">\n <h4 class=\"app-profile-general-dropdown-heading\">{{'APP.EDIT_PROFILE.TELEPHONE' | translate}}</h4>\n <p class=\"app-profile-general-dropdown-details\" *ngIf=\"generalSectionButtonsToggle\">{{personDetails?.telephone}}</p>\n <input type=\"tel\" name=\"Telephone\" value=\"\" formControlName=\"telephone\" *ngIf=\"!generalSectionButtonsToggle\"\n class=\"app-profile-general-dropdown-input-details app-selected\">\n <mat-error class=\"app-error-message\" *ngIf=\"profileForm.get('telephone').invalid\">\n {{ 'APP.EDIT_PROFILE.INVALID_INPUT' | translate }}\n </mat-error>\n </div>\n <mat-divider class=\"app-general-dropdown-divider\" />\n <div class=\"app-general-dropdown-details\">\n <h4 class=\"app-profile-general-dropdown-heading\">{{'APP.EDIT_PROFILE.MOBILE' | translate}}</h4>\n <p class=\"app-profile-general-dropdown-details\" *ngIf=\"generalSectionButtonsToggle\">{{personDetails?.mobile}}</p>\n <input type=\"tel\" value=\"\" formControlName=\"mobile\" *ngIf=\"!generalSectionButtonsToggle\"\n class=\"app-profile-general-dropdown-input-details app-selected\">\n <mat-error class=\"app-error-message\" *ngIf=\"profileForm.get('mobile').invalid\">\n {{ 'APP.EDIT_PROFILE.INVALID_INPUT' | translate }}\n </mat-error>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"app-profile-contact-row\" [formGroup]=\"profileForm\">\n <div class=\"app-profile-general profile-general-bottom-radius\">\n <div class=\"app-profile-general-section\">\n <mat-icon class=\"app-profile-general-icon\" (click)=\"toggleContactDropdown()\" id=\"toggle-contact-dropdown\">\n {{ contactSectionDropdown ? 'expand_more' : 'chevron_right'}}</mat-icon>\n <h4 class=\"app-general-title\">{{'APP.EDIT_PROFILE.COMPANY_DETAILS' | translate}}</h4>\n </div>\n\n <div class=\"app-general-edit-btn\" *ngIf=\"contactSectionButtonsToggle\">\n <button mat-raised-button class=\"app-general-edit\" id=\"contact-edit-button\"\n (click)=\"toggleContactButtons()\">{{'APP.EDIT_PROFILE.EDIT' | translate}}</button>\n </div>\n <div class=\"app-general-edit-btn\" *ngIf=\"!contactSectionButtonsToggle\">\n <button mat-raised-button class=\"app-general-cancel-btn\" id=\"contact-cancel-button\"\n (click)=\"toggleContactButtons()\">{{'APP.EDIT_PROFILE.CANCEL' | translate}}</button>\n <button mat-raised-button class=\"app-general-save-btn\" id=\"contact-save-button\" [disabled]=\"profileForm.invalid\"\n (click)=\"onSaveCompanyData(profileForm)\">{{'APP.EDIT_PROFILE.SAVE' | translate}}</button>\n </div>\n </div>\n <mat-divider class=\"app-divider\" *ngIf=\"contactSectionDropdown\" />\n <div *ngIf=\"contactSectionDropdown\">\n <div class=\"app-general-dropdown\">\n <div class=\"app-general-dropdown-details\">\n <h4 class=\"app-profile-general-dropdown-heading\">{{'APP.EDIT_PROFILE.NAME' | translate}}</h4>\n <p class=\"app-profile-general-dropdown-details\" *ngIf=\"contactSectionButtonsToggle\">{{personDetails?.company?.organization}}</p>\n <input type=\"text\" value=\"\" *ngIf=\"!contactSectionButtonsToggle\" formControlName=\"companyName\"\n class=\"app-profile-general-dropdown-input-details app-selected\">\n </div>\n <mat-divider class=\"app-general-dropdown-divider\" />\n <div class=\"app-general-dropdown-details\">\n <h4 class=\"app-profile-general-dropdown-heading\">{{'APP.EDIT_PROFILE.ADDRESS' | translate}}</h4>\n <p class=\"app-profile-general-dropdown-details\" *ngIf=\"contactSectionButtonsToggle\">{{personDetails?.company?.address1}}</p>\n <input type=\"text\" value=\"\" *ngIf=\"!contactSectionButtonsToggle\" formControlName=\"companyAddress\"\n class=\"app-profile-general-dropdown-input-details app-selected\">\n </div>\n <mat-divider class=\"app-general-dropdown-divider\" />\n <div class=\"app-general-dropdown-details\">\n <h4 class=\"app-profile-general-dropdown-heading\">{{'APP.EDIT_PROFILE.POSTCODE' | translate}}</h4>\n <p class=\"app-profile-general-dropdown-details\" *ngIf=\"contactSectionButtonsToggle\">{{personDetails?.company?.postcode}}</p>\n <input type=\"text\" value=\"\" *ngIf=\"!contactSectionButtonsToggle\" formControlName=\"companyPostCode\"\n class=\"app-profile-general-dropdown-input-details app-selected\">\n </div>\n <mat-divider class=\"app-general-dropdown-divider\" />\n <div class=\"app-general-dropdown-details\">\n <h4 class=\"app-profile-general-dropdown-heading\">{{'APP.EDIT_PROFILE.TELEPHONE' | translate}}</h4>\n <p class=\"app-profile-general-dropdown-details\" *ngIf=\"contactSectionButtonsToggle\">{{personDetails?.company?.telephone}}</p>\n <input type=\"tel\" value=\"\" *ngIf=\"!contactSectionButtonsToggle\" formControlName=\"companyTelephone\"\n class=\"app-profile-general-dropdown-input-details app-selected\">\n <mat-error class=\"app-error-message\" *ngIf=\"profileForm.get('companyTelephone').invalid\">\n {{ 'APP.EDIT_PROFILE.INVALID_INPUT' | translate }}\n </mat-error>\n </div>\n <mat-divider class=\"app-general-dropdown-divider\" />\n <div class=\"app-general-dropdown-details\">\n <h4 class=\"app-profile-general-dropdown-heading\">{{'APP.EDIT_PROFILE.EMAIL' | translate}}</h4>\n <p class=\"app-profile-general-dropdown-details\" *ngIf=\"contactSectionButtonsToggle\">{{personDetails?.company?.email}}</p>\n <input type=\"text\" value=\"\" *ngIf=\"!contactSectionButtonsToggle\" formControlName=\"companyEmail\"\n class=\"app-profile-general-dropdown-input-details app-selected\">\n <mat-error class=\"app-error-message\" *ngIf=\"profileForm.get('companyEmail').invalid\">\n {{ 'APP.EDIT_PROFILE.INVALID_INPUT' | translate }}\n </mat-error>\n </div>\n </div>\n </div>\n </div>\n</div>\n","/*!\n * Copyright © 2005-2024 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 const isEcmLoggedIn = (): boolean => {\n return authService.isEcmLoggedIn() || (authService.isECMProvider() && authService.isKerberosEnabled());\n };\n\n return isEcmLoggedIn() || authService.isOauth();\n};\n","/*!\n * Copyright © 2005-2024 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 } from '@alfresco/js-api';\nimport { Component, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { forkJoin, from, of, Subject } from 'rxjs';\nimport { catchError, mergeMap, takeUntil } from 'rxjs/operators';\nimport { AppExtensionService, AppService, ToolbarComponent } from '@alfresco/aca-shared';\nimport { CommonModule } from '@angular/common';\nimport { AlfrescoApiService, AlfrescoViewerModule } from '@alfresco/adf-content-services';\n\n@Component({\n standalone: true,\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, OnDestroy {\n private onDestroy$: Subject<boolean> = new Subject<boolean>();\n private sharedLinksApi: SharedlinksApi;\n sharedLinkId: string = null;\n viewerToolbarActions: Array<ContentActionRef> = [];\n\n constructor(\n private route: ActivatedRoute,\n private store: Store<AppStore>,\n private extensions: AppExtensionService,\n private alfrescoApiService: AlfrescoApiService,\n private appService: AppService\n ) {\n this.sharedLinksApi = new SharedlinksApi(this.alfrescoApiService.getInstance());\n }\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(takeUntil(this.onDestroy$))\n .subscribe((actions) => {\n this.viewerToolbarActions = actions;\n });\n }\n\n ngOnDestroy() {\n this.onDestroy$.next(true);\n this.onDestroy$.complete();\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-2024 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 { TranslateModule } from '@ngx-translate/core';\nimport { DocumentListModule } from '@alfresco/adf-content-services';\nimport { DataTableModule, EmptyContentComponent, PaginationComponent } from '@alfresco/adf-core';\nimport { DocumentListDirective } from '../../directives/document-list.directive';\n\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n DocumentListModule,\n PaginationComponent,\n DataTableModule,\n DocumentListDirective,\n ContextActionsDirective,\n PaginationDirective,\n PageLayoutComponent,\n ToolbarComponent,\n EmptyContentComponent,\n DynamicColumnComponent\n ],\n templateUrl: './trashcan.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class TrashcanComponent extends PageComponent implements OnInit {\n private 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-2024 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 } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { PageComponent, PageLayoutComponent, ToolbarActionComponent, ToolbarComponent } from '@alfresco/aca-shared';\nimport { concatMap, delay, filter, finalize, retryWhen, skipWhile, switchMap, takeUntil } from 'rxjs/operators';\nimport { AvatarComponent, ClipboardService, EmptyContentComponent, ThumbnailService, ToolbarModule, UnsavedChangesGuard } from '@alfresco/adf-core';\nimport { AiAnswer, Node } from '@alfresco/js-api';\nimport { CommonModule } from '@angular/common';\nimport { SearchAiInputContainerComponent } from '../search-ai-input-container/search-ai-input-container.component';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { NodesApiService } from '@alfresco/adf-content-services';\nimport { forkJoin, Observable, of, throwError } from 'rxjs';\nimport { SelectionState } from '@alfresco/adf-extensions';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatListModule } from '@angular/material/list';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { ModalAiService } from '../../../../services/modal-ai.service';\nimport { ViewNodeAction } from '@alfresco/aca-shared/store';\nimport { ViewerService } from '@alfresco/aca-content/viewer';\n\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n PageLayoutComponent,\n ToolbarActionComponent,\n ToolbarModule,\n ToolbarComponent,\n SearchAiInputContainerComponent,\n TranslateModule,\n MatIconModule,\n MatButtonModule,\n MatListModule,\n EmptyContentComponent,\n MatCardModule,\n AvatarComponent,\n MatTooltipModule\n ],\n selector: 'aca-search-ai-results',\n templateUrl: './search-ai-results.component.html',\n styleUrls: ['./search-ai-results.component.scss'],\n encapsulation: ViewEncapsulation.None,\n host: { class: 'aca-search-ai-results' }\n})\nexport class SearchAiResultsComponent extends PageComponent implements OnInit, OnDestroy {\n private _agentId: string;\n private _hasAnsweringError = false;\n private _hasError = false;\n private _loading = false;\n private _mimeTypeIconsByNodeId: { [key: string]: string } = {};\n private _nodes: Node[] = [];\n private openedViewer = false;\n private _selectedNodesState: SelectionState;\n private _searchQuery = '';\n private _queryAnswer: AiAnswer;\n\n get agentId(): string {\n return this._agentId;\n }\n\n get hasAnsweringError(): boolean {\n return this._hasAnsweringError;\n }\n\n get hasError(): boolean {\n return this._hasError;\n }\n\n get loading(): boolean {\n return this._loading;\n }\n\n get mimeTypeIconsByNodeId(): { [key: string]: string } {\n return this._mimeTypeIconsByNodeId;\n }\n\n get nodes(): Node[] {\n return this._nodes;\n }\n\n get queryAnswer(): AiAnswer {\n return this._queryAnswer;\n }\n\n get searchQuery(): string {\n return this._searchQuery;\n }\n\n constructor(\n private route: ActivatedRoute,\n private clipboardService: ClipboardService,\n private thumbnailService: ThumbnailService,\n private nodesApiService: NodesApiService,\n private translateService: TranslateService,\n private unsavedChangesGuard: UnsavedChangesGuard,\n private modalAiService: ModalAiService,\n private viewerService: ViewerService\n ) {\n super();\n }\n\n ngOnInit(): void {\n this.viewerService.customNodesOrder = JSON.parse(this.userPreferencesService.get('aiReferences', '[]'));\n this.route.queryParams\n .pipe(\n filter((params) => {\n const openedViewerPreviously = this.openedViewer;\n this.openedViewer = !!params.location;\n return !this.openedViewer && (!openedViewerPreviously || !this.queryAnswer);\n }),\n takeUntil(this.onDestroy$)\n )\n .subscribe((params) => {\n this._agentId = params.agentId;\n this._searchQuery = params.query ? decodeURIComponent(params.query) : '';\n const selectedNodesState = this.userPreferencesService.get('knowledgeRetrievalNodes');\n if (!this.searchQuery || !this.agentId || !selectedNodesState) {\n this._hasError = true;\n return;\n }\n this._selectedNodesState = JSON.parse(selectedNodesState);\n this.performAiSearch();\n });\n super.ngOnInit();\n\n this.unsavedChangesGuard.unsaved = this.route.snapshot?.queryParams?.query?.length > 0 && !this.hasError;\n this.unsavedChangesGuard.data = {\n descriptionText: 'KNOWLEDGE_RETRIEVAL.SEARCH.DISCARD_CHANGES.CONVERSATION_DISCARDED',\n confirmButtonText: 'KNOWLEDGE_RETRIEVAL.SEARCH.DISCARD_CHANGES.OKAY',\n headerText: 'KNOWLEDGE_RETRIEVAL.SEARCH.DISCARD_CHANGES.WARNING'\n };\n }\n\n ngOnDestroy(): void {\n this.onDestroy$.next();\n this.onDestroy$.complete();\n }\n\n copyResponseToClipboard(): void {\n this.clipboardService.copyContentToClipboard(\n this.queryAnswer.answer,\n this.translateService.instant('KNOWLEDGE_RETRIEVAL.SEARCH.RESULTS_PAGE.COPY_MESSAGE')\n );\n }\n\n checkUnsavedChangesAndSearch(): void {\n this.modalAiService.openUnsavedChangesModal(() => this.performAiSearch());\n }\n\n performAiSearch(): void {\n this._loading = true;\n\n this.searchAiService\n .ask({\n question: this.searchQuery,\n nodeIds: this._selectedNodesState?.nodes?.length ? this._selectedNodesState.nodes.map((node) => node.entry.id) : [],\n agentId: this._agentId\n })\n .pipe(\n switchMap((response) => this.searchAiService.getAnswer(response.questionId)),\n switchMap((response) => {\n if (!response.entry?.answer) {\n return throwError((e) => e);\n }\n this._queryAnswer = response.entry;\n return forkJoin(this.queryAnswer.references.map((reference) => this.nodesApiService.getNode(reference.referenceId)));\n }),\n retryWhen((errors: Observable<Error>) => this.aiSearchRetryWhen(errors)),\n finalize(() => (this._loading = false)),\n takeUntil(this.onDestroy$)\n )\n .subscribe(\n (nodes) => {\n nodes.forEach((node) => {\n this._mimeTypeIconsByNodeId[node.id] = this.thumbnailService.getMimeTypeIcon(node.content?.mimeType);\n });\n this._nodes = nodes;\n const nodesIds = nodes.map((node) => node.id);\n this.viewerService.customNodesOrder = nodesIds;\n this.userPreferencesService.set('aiReferences', JSON.stringify(nodesIds));\n },\n () => (this._hasAnsweringError = true)\n );\n }\n\n openFile(id: string): void {\n this.store.dispatch(\n new ViewNodeAction(id, {\n location: this.router.url\n })\n );\n }\n\n private aiSearchRetryWhen(errors: Observable<Error>): Observable<Error> {\n this._hasAnsweringError = false;\n const delayBetweenRetries = 3000;\n const maxRetries = 9;\n\n return errors.pipe(\n skipWhile(() => this.hasAnsweringError),\n delay(delayBetweenRetries),\n concatMap((e, index) => {\n if (index === maxRetries) {\n this._hasAnsweringError = true;\n this._loading = false;\n return throwError(e);\n }\n return of(null);\n })\n );\n }\n}\n","<aca-page-layout>\n <aca-search-ai-input-container\n class=\"aca-page-layout-header\"\n placeholder=\"KNOWLEDGE_RETRIEVAL.SEARCH.RESULTS_PAGE.QUERY_INPUT_PLACEHOLDER\"\n [agentId]=\"agentId\"\n [usedInAiResultsPage]=\"true\"\n *ngIf=\"!hasError && agentId\" />\n <div\n class=\"aca-page-layout-content\"\n *ngIf=\"!hasError\">\n <div class=\"aca-search-ai-results-container\">\n <div\n class=\"aca-search-ai-results-container-query\"\n data-automation-id=\"aca-search-ai-results-query\">\n {{ searchQuery }}\n </div>\n <div\n class=\"aca-search-ai-response-container\"\n [class.aca-search-ai-response-container-error]=\"hasAnsweringError\">\n <ng-container *ngIf=\"!loading else skeleton\">\n <div\n class=\"aca-search-ai-response-container-body\"\n *ngIf=\"!hasAnsweringError\">\n <div\n class=\"aca-search-ai-response-container-body-response\"\n data-automation-id=\"aca-search-ai-results-response\">\n {{ queryAnswer?.answer }}\n </div>\n <button\n class=\"aca-search-ai-response-container-body-response-action aca-search-ai-response-container-body-response-action-regeneration\"\n mat-icon-button\n (click)=\"checkUnsavedChangesAndSearch()\"\n data-automation-id=\"aca-search-ai-results-regeneration-button\"\n [title]=\"'KNOWLEDGE_RETRIEVAL.SEARCH.RESULTS_PAGE.REGENERATION_BUTTON_LABEL' | translate\">\n <mat-icon>cached</mat-icon>\n </button>\n <button\n class=\"aca-search-ai-response-container-body-response-action\"\n mat-icon-button\n (click)=\"copyResponseToClipboard()\"\n data-automation-id=\"aca-search-ai-results-copying-button\"\n [title]=\"'KNOWLEDGE_RETRIEVAL.SEARCH.RESULTS_PAGE.COPY_BUTTON_LABEL' | translate\">\n <mat-icon>copy</mat-icon>\n </button>\n <ng-container *ngIf=\"nodes?.length\">\n <mat-divider class=\"aca-search-ai-response-container-body-divider\" />\n <div class=\"aca-search-ai-response-container-body-references-container\">\n <p class=\"aca-search-ai-response-container-body-references-container-header\">\n {{ 'KNOWLEDGE_RETRIEVAL.SEARCH.RESULTS_PAGE.REFERENCED_DOCUMENTS_HEADER' | translate }}\n </p>\n <div class=\"aca-search-ai-response-container-body-references-container-documents\">\n <a\n class=\"aca-search-ai-response-container-body-references-container-documents-document\"\n *ngFor=\"let node of nodes\"\n [attr.data-automation-id]=\"'aca-search-ai-results-' + node.id + '-document'\"\n (click)=\"openFile(node.id)\"\n (keyup.enter)=\"openFile(node.id)\"\n tabindex=\"0\">\n <mat-icon\n mat-list-icon\n class=\"aca-search-ai-response-container-body-references-container-documents-document-icon\">\n <img [alt]=\"node.content?.mimeType\" [src]=\"mimeTypeIconsByNodeId[node.id]\"/>\n </mat-icon>\n <div class=\"aca-search-ai-response-container-body-references-container-documents-document-name\">\n {{ node.name }}\n </div>\n </a>\n </div>\n </div>\n </ng-container>\n </div>\n <div\n *ngIf=\"hasAnsweringError\"\n class=\"aca-search-ai-response-container-error-message\">\n {{ 'KNOWLEDGE_RETRIEVAL.SEARCH.ERRORS.LOADING_ERROR' | translate }}\n <button\n mat-flat-button\n (click)=\"performAiSearch()\"\n class=\"aca-search-ai-response-container-error-message-regeneration-button\"\n data-automation-id=\"aca-search-ai-results-error-regeneration-button\">\n <mat-icon class=\"aca-search-ai-response-container-error-message-regeneration-button-icon\">cached</mat-icon>\n {{ 'KNOWLEDGE_RETRIEVAL.SEARCH.RESULTS_PAGE.REGENERATION_BUTTON_LABEL' | translate }}\n </button>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n <adf-empty-content\n class=\"aca-page-layout-content\"\n icon=\"star\"\n title=\"KNOWLEDGE_RETRIEVAL.SEARCH.ERRORS.PAGE_NOT_AVAILABLE_ERROR\"\n *ngIf=\"hasError\" />\n</aca-page-layout>\n\n<ng-template #skeleton>\n <div class=\"adf-skeleton\"></div>\n <div class=\"adf-skeleton\"></div>\n <div class=\"adf-skeleton adf-skeleton-half\"></div>\n</ng-template>\n","/*!\n * Copyright © 2005-2024 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 { SavedSearch, SavedSearchesService } from '@alfresco/adf-content-services';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { take } from 'rxjs/operators';\nimport { AppStore, SnackbarErrorAction, SnackbarInfoAction } from '@alfresco/aca-shared/store';\nimport { Store } from '@ngrx/store';\nimport { CoreModule } from '@alfresco/adf-core';\n\n@Component({\n standalone: true,\n imports: [CoreModule],\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 isLoading = false;\n\n constructor(\n private readonly dialog: MatDialogRef<SavedSearchDeleteDialogComponent>,\n private readonly savedSearchesService: SavedSearchesService,\n private readonly store: Store<AppStore>,\n @Inject(MAT_DIALOG_DATA) private readonly data: SavedSearch\n ) {}\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.store.dispatch(new SnackbarInfoAction('APP.BROWSE.SEARCH.SAVE_SEARCH.DELETE_DIALOG.SUCCESS_MESSAGE'));\n this.isLoading = false;\n },\n error: () => {\n this.store.dispatch(new SnackbarErrorAction('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 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 color=\"primary\"\n [disabled]=\"isLoading\"\n (click)=\"onSubmit()\">{{ 'DELETE' | titlecase | translate }}</button>\n</mat-dialog-actions>\n","/*!\n * Copyright © 2005-2024 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 { AutoFocusDirective, forbidOnlySpaces, SavedSearch, SavedSearchesService } from '@alfresco/adf-content-services';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { take } from 'rxjs/operators';\nimport { AppStore, SnackbarErrorAction, SnackbarInfoAction } from '@alfresco/aca-shared/store';\nimport { Store } from '@ngrx/store';\nimport { CoreModule } from '@alfresco/adf-core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { UniqueSearchNameValidator } from '../unique-search-name-validator';\nimport { SavedSearchForm } from '../saved-search-form.interface';\n\n@Component({\n standalone: true,\n imports: [CoreModule, AutoFocusDirective],\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 form: FormGroup<SavedSearchForm>;\n isLoading = false;\n\n constructor(\n private readonly dialog: MatDialogRef<SavedSearchEditDialogComponent>,\n private readonly store: Store<AppStore>,\n private readonly savedSearchesService: SavedSearchesService,\n private readonly uniqueSearchNameValidator: UniqueSearchNameValidator,\n @Inject(MAT_DIALOG_DATA) private readonly data: SavedSearch\n ) {\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.store.dispatch(new SnackbarErrorAction('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.store.dispatch(new SnackbarInfoAction('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 <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-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 color=\"primary\"\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-2024 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): void {\n this.dialog.open(SavedSearchEditDialogComponent, {\n data: savedSearch,\n width: '600px'\n });\n }\n\n confirmDeleteSavedSearch(savedSearch: SavedSearch): void {\n this.dialog.open(SavedSearchDeleteDialogComponent, {\n data: savedSearch,\n minWidth: '500px'\n });\n }\n}\n","/*!\n * Copyright © 2005-2024 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 },\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 }\n ]\n};\n","/*!\n * Copyright © 2005-2024 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, Component, DestroyRef, EventEmitter, inject, Input, Output, ViewEncapsulation } from '@angular/core';\nimport {\n AppConfigService,\n DataCellEvent,\n DATATABLE_DIRECTIVES,\n DataTableComponent,\n DataTableSchema,\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 { Store } from '@ngrx/store';\nimport { SnackbarInfoAction } from '@alfresco/aca-shared/store';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'aca-saved-searches-ui-list',\n standalone: true,\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 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 constructor(\n protected appConfig: AppConfigService,\n private readonly clipboard: Clipboard,\n private readonly store: Store,\n private readonly router: Router\n ) {\n super(appConfig, '', savedSearchesListSchema);\n }\n\n ngAfterContentInit() {\n this.createDatatableSchema();\n this.contextMenuAction$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((action) => this.executeMenuOption(action.key, action.data));\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): void {\n switch (optionKey) {\n case this.editSavedSearchOptionKey:\n this.openEditSavedSearchDialog(savedSearchData);\n break;\n case this.deleteSavedSearchOptionKey:\n this.openDeleteSavedSearchDialog(savedSearchData);\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): void {\n this.savedSearchesListUiService.openEditSavedSearch(savedSearch);\n }\n\n openDeleteSavedSearchDialog(savedSearch: SavedSearch): void {\n this.savedSearchesListUiService.confirmDeleteSavedSearch(savedSearch);\n }\n\n copyToClipboard(savedSearch: SavedSearch): void {\n this.clipboard.copy(this.getFullUrl(savedSearch.encodedUrl));\n this.store.dispatch(new SnackbarInfoAction('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-2024 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 { TranslateModule } from '@ngx-translate/core';\nimport { SavedSearchesListUiComponent } from '../ui-list/saved-searches-list.ui-component';\nimport { PageComponent, PageLayoutComponent } from '@alfresco/aca-shared';\nimport { SavedSearchesService } from '@alfresco/adf-content-services';\nimport { EmptyContentComponent } from '@alfresco/adf-core';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\n\n@Component({\n selector: 'aca-saved-searches-smart-list',\n standalone: true,\n imports: [CommonModule, TranslateModule, 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(SavedSearchesService);\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-2024 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, PluginEnabledGuard } from '@alfresco/aca-shared';\nimport { AuthGuard, UnsavedChangesGuard } 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 { SearchAiResultsComponent } from './components/knowledge-retrieval/search-ai/search-ai-results/search-ai-results.component';\nimport { SavedSearchesSmartListComponent } from './components/search/search-save/list/smart-list/saved-searches-smart-list.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 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: '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: '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.AcaFolderRulesModule)\n }\n ]\n },\n {\n path: 'knowledge-retrieval',\n canDeactivate: [UnsavedChangesGuard],\n canActivate: [PluginEnabledGuard],\n data: {\n plugin: 'plugins.knowledgeRetrievalEnabled'\n },\n children: [\n {\n path: '',\n component: SearchAiResultsComponent\n },\n ...createViewRoutes('knowledge-retrieval')\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 * Copyright © 2005-2024 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, ViewEncapsulation } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { delay, takeUntil } 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';\n\n@Component({\n standalone: true,\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 implements OnDestroy {\n showFileUploadingDialog$: Observable<boolean>;\n\n private onDestroy$: Subject<boolean> = new Subject<boolean>();\n\n constructor(private store: Store<AppStore>) {\n this.showFileUploadingDialog$ = this.store.select(getFileUploadingDialog).pipe(delay(0), takeUntil(this.onDestroy$));\n }\n\n ngOnDestroy() {\n this.onDestroy$.next(true);\n this.onDestroy$.complete();\n }\n}\n","<adf-file-uploading-dialog *ngIf=\"showFileUploadingDialog$ | async\" position=\"left\" />","/*!\n * Copyright © 2005-2024 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, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SelectionState } from '@alfresco/adf-extensions';\nimport { Store } from '@ngrx/store';\nimport { AppStore, getAppSelection } from '@alfresco/aca-shared/store';\nimport { AvatarComponent, IconComponent, NotificationService } from '@alfresco/adf-core';\nimport { forkJoin, Subject, throwError } from 'rxjs';\nimport { catchError, take, takeUntil } from 'rxjs/operators';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatListModule, MatSelectionListChange } from '@angular/material/list';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { Agent } from '@alfresco/js-api';\nimport { AgentService, SearchAiService } from '@alfresco/adf-content-services';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n standalone: true,\n imports: [CommonModule, MatMenuModule, MatListModule, TranslateModule, AvatarComponent, IconComponent, MatTooltipModule],\n selector: 'aca-agents-button',\n templateUrl: './agents-button.component.html',\n styleUrls: ['./agents-button.component.scss'],\n encapsulation: ViewEncapsulation.None,\n host: { class: 'aca-agents-button' }\n})\nexport class AgentsButtonComponent implements OnInit, OnDestroy {\n @Input()\n data: { trigger: string };\n\n private selectedNodesState: SelectionState;\n private _agents: Agent[] = [];\n private onDestroy$ = new Subject<void>();\n private _disabled = true;\n private _initialsByAgentId: { [key: string]: string } = {};\n private _hxInsightUrl: string;\n\n get agents(): Agent[] {\n return this._agents;\n }\n\n get disabled(): boolean {\n return this._disabled;\n }\n\n get initialsByAgentId(): { [key: string]: string } {\n return this._initialsByAgentId;\n }\n\n get hxInsightUrl(): string {\n return this._hxInsightUrl;\n }\n\n constructor(\n private store: Store<AppStore>,\n private notificationService: NotificationService,\n private searchAiService: SearchAiService,\n private agentService: AgentService,\n private translateService: TranslateService,\n private cd: ChangeDetectorRef\n ) {}\n\n ngOnInit(): void {\n this.store\n .select(getAppSelection)\n .pipe(takeUntil(this.onDestroy$))\n .subscribe((selection) => {\n this.selectedNodesState = selection;\n });\n forkJoin({\n agents: this.agentService.getAgents().pipe(\n take(1),\n catchError(() => throwError('KNOWLEDGE_RETRIEVAL.SEARCH.ERRORS.AGENTS_FETCHING'))\n ),\n config: this.searchAiService.getConfig().pipe(catchError(() => throwError('KNOWLEDGE_RETRIEVAL.SEARCH.ERRORS.HX_INSIGHT_URL_FETCHING')))\n }).subscribe(\n (result) => {\n this._hxInsightUrl = result.config.entry.knowledgeRetrievalUrl;\n this._agents = result.agents;\n\n this.cd.detectChanges();\n\n if (this.agents.length) {\n this._initialsByAgentId = this.agents.reduce((initials, agent) => {\n const words = agent.name.split(' ').filter((word) => !word.match(/[^a-zA-Z]+/g));\n initials[agent.id] = `${words[0][0]}${words[1]?.[0] || ''}`;\n return initials;\n }, {});\n }\n },\n (error: string) => this.notificationService.showError(this.translateService.instant(error))\n );\n }\n\n ngOnDestroy(): void {\n this.onDestroy$.next();\n this.onDestroy$.complete();\n }\n\n onClick(): void {\n if (!this.selectedNodesState.isEmpty) {\n const message = this.searchAiService.checkSearchAvailability(this.selectedNodesState);\n if (message) {\n this.notificationService.showError(message);\n }\n this._disabled = !!message;\n return;\n }\n this._disabled = true;\n open(this.hxInsightUrl);\n }\n\n onAgentSelection(change: MatSelectionListChange): void {\n this.store.dispatch({\n type: this.data.trigger,\n agentId: change.options[0].value.id\n });\n change.source.deselectAll();\n }\n}\n","<ng-container *ngIf=\"agents.length && hxInsightUrl\">\n <button\n [matMenuTriggerFor]=\"disabled ? null : agentsList\"\n class=\"aca-agents-menu-button aca-agents-button-menu-trigger\"\n (mouseup)=\"onClick()\"\n (keydown.enter)=\"onClick()\"\n data-automation-id=\"aca-agents-button\">\n <adf-icon\n value=\"adf:colored-stars-ai\"\n class=\"aca-agents-button-icon\" />\n {{ 'KNOWLEDGE_RETRIEVAL.SEARCH.AGENTS_BUTTON.LABEL' | translate}}\n </button>\n <mat-menu\n #agentsList=\"matMenu\"\n class=\"aca-agents-button-menu\"\n xPosition=\"before\">\n <mat-selection-list\n (selectionChange)=\"onAgentSelection($event)\"\n [multiple]=\"false\"\n class=\"aca-agents-button-menu-list\"\n [hideSingleSelectionIndicator]=\"true\">\n <mat-list-option\n *ngFor=\"let agent of agents\"\n class=\"aca-agents-button-menu-list-agent\"\n [attr.data-automation-id]=\"'aca-agents-button-agent-' + agent.id\"\n [value]=\"agent\">\n <div class=\"aca-agents-button-menu-list-agent-content\">\n <adf-avatar [src]=\"agent?.avatarUrl\" [initials]=\"initialsByAgentId[agent.id]\" />\n <span class=\"aca-agents-button-menu-list-agent-content-name\" [matTooltip]=\"agent.name\" [matTooltipPosition]=\"'right'\">\n {{ agent.name }}\n </span>\n </div>\n </mat-list-option>\n </mat-selection-list>\n </mat-menu>\n</ng-container>\n","/*!\n * Copyright © 2005-2024 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, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { SavedSearch, SavedSearchesService } from '@alfresco/adf-content-services';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { CoreModule, TranslationService } from '@alfresco/adf-core';\nimport { DynamicExtensionComponent, NavBarLinkRef } from '@alfresco/adf-extensions';\nimport { ExpandMenuComponent } from '../../../sidenav/components/expand-menu.component';\nimport { SidenavHeaderComponent } from '../../../sidenav/components/sidenav-header.component';\nimport { AppService } from '@alfresco/aca-shared';\n\n@Component({\n selector: 'aca-save-search-sidenav',\n standalone: true,\n imports: [CoreModule, DynamicExtensionComponent, ExpandMenuComponent, SidenavHeaderComponent],\n templateUrl: './save-search-sidenav.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class SaveSearchSidenavComponent implements OnInit, OnDestroy {\n savedSearchesService = inject(SavedSearchesService);\n appService = inject(AppService);\n translationService = inject(TranslationService);\n destroy$ = new Subject<void>();\n item: NavBarLinkRef;\n\n private readonly manageSearchesId = 'manage-saved-searches';\n\n ngOnInit() {\n this.savedSearchesService.innit();\n this.savedSearchesService.savedSearches$\n .asObservable()\n .pipe(takeUntil(this.destroy$))\n .subscribe((savedSearches) => {\n this.item = this.createNavBarLinkRef(savedSearches);\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n onActionClick(el: NavBarLinkRef): void {\n if (el.id !== this.manageSearchesId) {\n this.appService.appNavNarMode$.next('collapsed');\n }\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 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 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","<app-expand-menu *ngIf=\"item\" [item]=\"item\" (actionClicked)=\"onActionClick($event)\" />\n","/*!\n * Copyright © 2005-2024 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 { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { AuthGuardEcm, LanguagePickerComponent, NotificationHistoryComponent, TRANSLATION_PROVIDER } 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, OpenInAppComponent } from '@alfresco/aca-shared';\nimport * as rules from '@alfresco/aca-shared/rules';\nimport { AppStoreModule } from './store/app-store.module';\nimport { CoreExtensionsModule } from './extensions/core.extensions.module';\nimport { AppInfoDrawerModule } from './components/info-drawer/info.drawer.module';\nimport { ExtensionService, ExtensionsModule } from '@alfresco/adf-extensions';\nimport { APP_TOOLBAR_DIRECTIVES } from './components/toolbar';\nimport { APP_SIDENAV_DIRECTIVES } from './components/sidenav';\nimport { APP_COMMON_DIRECTIVES } from './components/common';\nimport { APP_SEARCH_DIRECTIVES } from './components/search';\nimport { CreateFromTemplateDialogComponent } from './dialogs/node-template/create-from-template.dialog';\nimport { ContentUrlService } from './services/content-url.service';\nimport { CommonModule } from '@angular/common';\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 { RouterModule } from '@angular/router';\nimport { UploadFilesDialogComponent } from './components/upload-files-dialog/upload-files-dialog.component';\nimport { AcaFolderRulesModule } 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 { ContextMenuComponent } from './components/context-menu/context-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 { AgentsButtonComponent } from './components/knowledge-retrieval/search-ai/agents-button/agents-button.component';\nimport { SaveSearchSidenavComponent } from './components/search/search-save/sidenav/save-search-sidenav.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n ContentModule.forRoot(),\n RouterModule.forChild(CONTENT_ROUTES),\n ExtensionsModule,\n CoreExtensionsModule,\n AppStoreModule,\n ...APP_COMMON_DIRECTIVES,\n ...APP_TOOLBAR_DIRECTIVES,\n ...APP_SIDENAV_DIRECTIVES,\n ...APP_SEARCH_DIRECTIVES,\n ContextMenuComponent,\n AppInfoDrawerModule,\n HammerModule,\n AcaFolderRulesModule,\n CreateFromTemplateDialogComponent,\n OpenInAppComponent,\n UploadFilesDialogComponent\n ],\n providers: [\n { provide: ContentVersionService, useClass: ContentUrlService },\n { provide: DocumentBasePageService, useExisting: ContentManagementService },\n {\n provide: TRANSLATION_PROVIDER,\n multi: true,\n useValue: {\n name: 'app',\n source: 'assets'\n }\n },\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 ]\n})\nexport class ContentServiceExtensionModule {\n constructor(public extensions: ExtensionService) {\n extensions.setAuthGuards({\n 'app.auth': AuthGuardEcm,\n 'app.extensions.dataLoaderGuard': ExtensionsDataLoaderGuard\n });\n\n extensions.setComponents({\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.toolbar.ai.agents-button': AgentsButtonComponent,\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 });\n\n extensions.setEvaluators({\n canCopyNode: rules.canCopyNode,\n canToggleJoinLibrary: rules.canToggleJoinLibrary,\n canEditFolder: rules.canEditFolder,\n isTrashcanItemSelected: rules.isTrashcanItemSelected,\n canViewFile: rules.canViewFile,\n canLeaveLibrary: rules.canLeaveLibrary,\n canToggleSharedLink: rules.canToggleSharedLink,\n canShowInfoDrawer: rules.canShowInfoDrawer,\n canManageFileVersions: rules.canManageFileVersions,\n canManagePermissions: rules.canManagePermissions,\n canToggleEditOffline: rules.canToggleEditOffline,\n canToggleFavorite: rules.canToggleFavorite,\n isLibraryManager: rules.isLibraryManager,\n canEditAspects: rules.canEditAspects,\n canShowExpand: rules.canShowExpand,\n canInfoPreview: rules.canInfoPreview,\n\n 'app.selection.canDelete': rules.canDeleteSelection,\n 'app.selection.file.canUnlock': rules.canUnlockFile,\n 'app.selection.file.canLock': rules.canLockFile,\n 'app.selection.canDownload': rules.canDownloadSelection,\n 'app.selection.notEmpty': rules.hasSelection,\n 'app.selection.canUnshare': rules.canUnshareNodes,\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.canShare': rules.canShareFile,\n 'app.selection.file.isShared': rules.isShared,\n 'app.selection.file.isLocked': rules.hasLockedFiles,\n 'app.selection.file.isLockOwner': rules.isUserWriteLockOwner,\n 'app.selection.file.canUploadVersion': rules.canUploadVersion,\n 'app.selection.library': rules.hasLibrarySelected,\n 'app.selection.isPrivateLibrary': rules.isPrivateLibrary,\n 'app.selection.hasLibraryRole': rules.hasLibraryRole,\n 'app.selection.hasNoLibraryRole': rules.hasNoLibraryRole,\n 'app.selection.folder': rules.hasFolderSelected,\n 'app.selection.folder.canUpdate': rules.canUpdateSelectedFolder,\n 'app.selection.displayedKnowledgeRetrievalButton': rules.canDisplayKnowledgeRetrievalButton,\n\n 'app.navigation.folder.canCreate': rules.canCreateFolder,\n 'app.navigation.folder.canUpload': rules.canUpload,\n 'app.navigation.isTrashcan': rules.isTrashcan,\n 'app.navigation.isNotTrashcan': rules.isNotTrashcan,\n 'app.navigation.isLibraries': rules.isLibraries,\n 'app.navigation.isLibraryFiles': rules.isLibraryFiles,\n 'app.navigation.isPersonalFiles': rules.isPersonalFiles,\n 'app.navigation.isNotLibraries': rules.isNotLibraries,\n 'app.navigation.isSharedFiles': rules.isSharedFiles,\n 'app.navigation.isNotSharedFiles': rules.isNotSharedFiles,\n 'app.navigation.isFavorites': rules.isFavorites,\n 'app.navigation.isNotFavorites': rules.isNotFavorites,\n 'app.navigation.isRecentFiles': rules.isRecentFiles,\n 'app.navigation.isNotRecentFiles': rules.isNotRecentFiles,\n 'app.navigation.isSearchResults': rules.isSearchResults,\n 'app.navigation.isNotSearchResults': rules.isNotSearchResults,\n 'app.navigation.isPreview': rules.isPreview,\n 'app.navigation.isSharedPreview': rules.isSharedPreview,\n 'app.navigation.isFavoritesPreview': rules.isFavoritesPreview,\n 'app.navigation.isSharedFileViewer': rules.isSharedFileViewer,\n\n 'repository.isQuickShareEnabled': rules.hasQuickShareEnabled,\n 'user.isAdmin': rules.isAdmin,\n 'app.canShowLogout': rules.canShowLogout,\n 'app.isContentServiceEnabled': rules.isContentServiceEnabled,\n 'app.isUploadSupported': rules.isUploadSupported,\n 'app.canCreateLibrary': rules.canCreateLibrary,\n 'app.areTagsEnabled': rules.areTagsEnabled,\n 'app.areCategoriesEnabled': rules.areCategoriesEnabled\n });\n }\n}\n","/*!\n * Copyright © 2005-2024 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/extensions/core.extensions.module';\nexport * from './lib/store/initial-state';\nexport * from './lib/services/content-url.service';\nexport * from './lib/utils/aca-search-utils';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i3","i1","i4","i5.NodeActionsService","i6","i7","i9","i5","i1.ContextMenuOverlayRef","i8","i10","i11","i13","i2.ActionDirective","i2.SearchLibrariesQueryBuilderService","i7.SearchNavigationService","i12","i14","i15","i17","i1.SearchLibrariesQueryBuilderService","i5.ModalAiService","i2.SearchAiNavigationService","map","catchError","i2.NodeActionsService","LanguagePickerComponent","i16.ButtonMenuComponent","i20.ExpandMenuComponent","i22.SidenavHeaderComponent","i23.UserMenuComponent","i24.SidenavComponent"],"mappings":"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"}