@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
@@ -1,103 +0,0 @@
1
- /*!
2
- * Copyright © 2005-2024 Hyland Software, Inc. and its affiliates. All rights reserved.
3
- *
4
- * Alfresco Example Content Application
5
- *
6
- * This file is part of the Alfresco Example Content Application.
7
- * If the software was purchased under a paid Alfresco license, the terms of
8
- * the paid license agreement will prevail. Otherwise, the software is
9
- * provided under the following open source license terms:
10
- *
11
- * The Alfresco Example Content Application is free software: you can redistribute it and/or modify
12
- * it under the terms of the GNU Lesser General Public License as published by
13
- * the Free Software Foundation, either version 3 of the License, or
14
- * (at your option) any later version.
15
- *
16
- * The Alfresco Example Content Application is distributed in the hope that it will be useful,
17
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
18
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
- * GNU Lesser General Public License for more details.
20
- *
21
- * You should have received a copy of the GNU Lesser General Public License
22
- * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
23
- */
24
- import { ContentApiService, ContextActionsDirective, InfoDrawerComponent, PageComponent, PageLayoutComponent, PaginationDirective, ToolbarComponent } from '@alfresco/aca-shared';
25
- import { Component, ViewEncapsulation } from '@angular/core';
26
- import { debounceTime, map } from 'rxjs/operators';
27
- import { DynamicColumnComponent } from '@alfresco/adf-extensions';
28
- import { CommonModule } from '@angular/common';
29
- import { CustomEmptyContentTemplateDirective, DataColumnComponent, DataColumnListComponent, EmptyContentComponent, PaginationComponent } from '@alfresco/adf-core';
30
- import { DocumentListDirective } from '../../directives/document-list.directive';
31
- import { TranslateModule } from '@ngx-translate/core';
32
- import { DocumentListComponent } from '@alfresco/adf-content-services';
33
- import { SearchAiInputContainerComponent } from '../knowledge-retrieval/search-ai/search-ai-input-container/search-ai-input-container.component';
34
- import * as i0 from "@angular/core";
35
- import * as i1 from "@alfresco/aca-shared";
36
- import * as i2 from "@angular/common";
37
- import * as i3 from "@ngx-translate/core";
38
- export class FavoritesComponent extends PageComponent {
39
- constructor(contentApi) {
40
- super();
41
- this.contentApi = contentApi;
42
- this.columns = [];
43
- }
44
- ngOnInit() {
45
- super.ngOnInit();
46
- this.subscriptions = this.subscriptions.concat([
47
- this.uploadService.fileUploadComplete.pipe(debounceTime(300)).subscribe(() => this.reload()),
48
- this.uploadService.fileUploadDeleted.pipe(debounceTime(300)).subscribe(() => this.reload())
49
- ]);
50
- this.columns = this.extensions.documentListPresets.favorites;
51
- }
52
- navigate(favorite) {
53
- const { isFolder, id } = favorite;
54
- // TODO: rework as it will fail on non-English setups
55
- const isSitePath = (path) => path?.elements?.some(({ name }) => name === 'Sites');
56
- if (isFolder) {
57
- this.contentApi
58
- .getNode(id)
59
- .pipe(map((node) => node.entry))
60
- .subscribe(({ path }) => {
61
- const routeUrl = isSitePath(path) ? '/libraries' : '/personal-files';
62
- this.router.navigate([routeUrl, id]);
63
- });
64
- }
65
- }
66
- onNodeDoubleClick(node) {
67
- if (node?.entry) {
68
- if (node.entry.isFolder) {
69
- this.navigate(node.entry);
70
- }
71
- if (node.entry.isFile) {
72
- this.showPreview(node, { location: this.router.url });
73
- }
74
- }
75
- }
76
- handleNodeClick(event) {
77
- this.onNodeDoubleClick(event.detail?.node);
78
- }
79
- }
80
- FavoritesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FavoritesComponent, deps: [{ token: i1.ContentApiService }], target: i0.ɵɵFactoryTarget.Component });
81
- FavoritesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: FavoritesComponent, isStandalone: true, selector: "aca-favorites", usesInheritance: true, ngImport: i0, template: "<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 </aca-search-ai-input-container>\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\"></aca-toolbar>\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 [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-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 [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\"> </adf-dynamic-column>\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 </data-column>\n </ng-container>\n </ng-container>\n </data-columns>\n </adf-document-list>\n\n <adf-pagination acaPagination [target]=\"documentList\"> </adf-pagination>\n </div>\n\n <div class=\"aca-sidebar\" *ngIf=\"infoDrawerOpened$ | async\">\n <aca-info-drawer [node]=\"selection.last\"></aca-info-drawer>\n </div>\n </div>\n</aca-page-layout>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "directive", type: DocumentListDirective, selector: "[acaDocumentList]" }, { kind: "directive", type: ContextActionsDirective, selector: "[acaContextActions]", inputs: ["acaContextEnable"], exportAs: ["acaContextActions"] }, { kind: "component", type: PaginationComponent, selector: "adf-pagination", inputs: ["target", "supportedPageSizes", "pagination"], outputs: ["change", "changePageNumber", "changePageSize", "nextPage", "prevPage"] }, { kind: "directive", type: PaginationDirective, selector: "[acaPagination]" }, { kind: "component", type: InfoDrawerComponent, selector: "aca-info-drawer", inputs: ["nodeId", "node"] }, { kind: "component", type: PageLayoutComponent, selector: "aca-page-layout", inputs: ["hasError"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "component", type: ToolbarComponent, selector: "aca-toolbar", inputs: ["items"] }, { kind: "component", type: SearchAiInputContainerComponent, selector: "aca-search-ai-input-container", inputs: ["placeholder", "agentId", "useStoredNodes"] }, { kind: "component", type: EmptyContentComponent, selector: "adf-empty-content", inputs: ["icon", "title", "subtitle"] }, { kind: "component", type: DynamicColumnComponent, selector: "adf-dynamic-column", inputs: ["id", "context"] }, { kind: "component", type: DocumentListComponent, selector: "adf-document-list", inputs: ["includeFields", "where", "permissionsStyle", "locationFormat", "navigate", "showHeader", "navigationMode", "thumbnails", "selectionMode", "multiselect", "contentActions", "contentActionsPosition", "contextMenuActions", "emptyFolderImageUrl", "allowDropFiles", "sorting", "additionalSorting", "sortingMode", "rowStyle", "rowStyleClass", "loading", "_rowFilter", "rowFilter", "imageResolver", "stickyHeader", "headerFilters", "filterValue", "currentFolderId", "preselectNodes", "node", "maxItems", "columnsPresetKey", "setColumnsVisibility", "setColumnsWidths", "setColumnsOrder", "maxColumnsVisible", "isResizingEnabled", "blurOnResize", "displayCheckboxesOnHover"], outputs: ["nodeClick", "nodeDblClick", "folderChange", "preview", "ready", "error", "nodeSelected", "filterSelection", "columnsWidthChanged", "columnsVisibilityChanged", "columnsOrderChanged", "selectedItemsCountChanged"] }, { kind: "component", type: DataColumnListComponent, selector: "data-columns" }, { kind: "component", type: DataColumnComponent, selector: "data-column", inputs: ["id", "key", "customData", "type", "format", "sortable", "draggable", "resizable", "isHidden", "title", "formatTooltip", "sr-title", "class", "copyContent", "editable", "focus", "sortingKey", "order", "currencyConfig", "decimalConfig", "dateConfig"] }, { kind: "directive", type: CustomEmptyContentTemplateDirective, selector: "adf-custom-empty-content-template, empty-folder-content" }], encapsulation: i0.ViewEncapsulation.None });
82
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FavoritesComponent, decorators: [{
83
- type: Component,
84
- args: [{ standalone: true, imports: [
85
- CommonModule,
86
- DocumentListDirective,
87
- ContextActionsDirective,
88
- PaginationComponent,
89
- PaginationDirective,
90
- InfoDrawerComponent,
91
- PageLayoutComponent,
92
- TranslateModule,
93
- ToolbarComponent,
94
- SearchAiInputContainerComponent,
95
- EmptyContentComponent,
96
- DynamicColumnComponent,
97
- DocumentListComponent,
98
- DataColumnListComponent,
99
- DataColumnComponent,
100
- CustomEmptyContentTemplateDirective
101
- ], encapsulation: ViewEncapsulation.None, selector: 'aca-favorites', template: "<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 </aca-search-ai-input-container>\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\"></aca-toolbar>\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 [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-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 [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\"> </adf-dynamic-column>\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 </data-column>\n </ng-container>\n </ng-container>\n </data-columns>\n </adf-document-list>\n\n <adf-pagination acaPagination [target]=\"documentList\"> </adf-pagination>\n </div>\n\n <div class=\"aca-sidebar\" *ngIf=\"infoDrawerOpened$ | async\">\n <aca-info-drawer [node]=\"selection.last\"></aca-info-drawer>\n </div>\n </div>\n</aca-page-layout>\n" }]
102
- }], ctorParameters: function () { return [{ type: i1.ContentApiService }]; } });
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmF2b3JpdGVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L3NyYy9saWIvY29tcG9uZW50cy9mYXZvcml0ZXMvZmF2b3JpdGVzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L3NyYy9saWIvY29tcG9uZW50cy9mYXZvcml0ZXMvZmF2b3JpdGVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBRUgsT0FBTyxFQUNMLGlCQUFpQixFQUNqQix1QkFBdUIsRUFDdkIsbUJBQW1CLEVBQ25CLGFBQWEsRUFDYixtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ25CLGdCQUFnQixFQUNqQixNQUFNLHNCQUFzQixDQUFDO0FBRTlCLE9BQU8sRUFBRSxTQUFTLEVBQVUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQXlCLHNCQUFzQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxtQ0FBbUMsRUFDbkMsbUJBQW1CLEVBQ25CLHVCQUF1QixFQUN2QixxQkFBcUIsRUFDckIsbUJBQW1CLEVBQ3BCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDakYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFN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R0FDckIsc0JBQXNCLDBGQUN0QixxQkFBcUIsaThCQUNyQix1QkFBdUIseURBQ3ZCLG1CQUFtQiw0VEFDbkIsbUNBQW1DOzRGQU0xQixrQkFBa0I7a0JBeEI5QixTQUFTO2lDQUNJLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLHFCQUFxQjt3QkFDckIsdUJBQXVCO3dCQUN2QixtQkFBbUI7d0JBQ25CLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3dCQUNuQixtQkFBbUI7d0JBQ25CLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQiwrQkFBK0I7d0JBQy9CLHFCQUFxQjt3QkFDckIsc0JBQXNCO3dCQUN0QixxQkFBcUI7d0JBQ3JCLHVCQUF1Qjt3QkFDdkIsbUJBQW1CO3dCQUNuQixtQ0FBbUM7cUJBQ3BDLGlCQUVjLGlCQUFpQixDQUFDLElBQUksWUFDM0IsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNCBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvblxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24uXG4gKiBJZiB0aGUgc29mdHdhcmUgd2FzIHB1cmNoYXNlZCB1bmRlciBhIHBhaWQgQWxmcmVzY28gbGljZW5zZSwgdGhlIHRlcm1zIG9mXG4gKiB0aGUgcGFpZCBsaWNlbnNlIGFncmVlbWVudCB3aWxsIHByZXZhaWwuIE90aGVyd2lzZSwgdGhlIHNvZnR3YXJlIGlzXG4gKiBwcm92aWRlZCB1bmRlciB0aGUgZm9sbG93aW5nIG9wZW4gc291cmNlIGxpY2Vuc2UgdGVybXM6XG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogZnJvbSBIeWxhbmQgU29mdHdhcmUuIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqL1xuXG5pbXBvcnQge1xuICBDb250ZW50QXBpU2VydmljZSxcbiAgQ29udGV4dEFjdGlvbnNEaXJlY3RpdmUsXG4gIEluZm9EcmF3ZXJDb21wb25lbnQsXG4gIFBhZ2VDb21wb25lbnQsXG4gIFBhZ2VMYXlvdXRDb21wb25lbnQsXG4gIFBhZ2luYXRpb25EaXJlY3RpdmUsXG4gIFRvb2xiYXJDb21wb25lbnRcbn0gZnJvbSAnQGFsZnJlc2NvL2FjYS1zaGFyZWQnO1xuaW1wb3J0IHsgTm9kZUVudHJ5LCBOb2RlLCBQYXRoRWxlbWVudCwgUGF0aEluZm8gfSBmcm9tICdAYWxmcmVzY28vanMtYXBpJztcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBEb2N1bWVudExpc3RQcmVzZXRSZWYsIER5bmFtaWNDb2x1bW5Db21wb25lbnQgfSBmcm9tICdAYWxmcmVzY28vYWRmLWV4dGVuc2lvbnMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEN1c3RvbUVtcHR5Q29udGVudFRlbXBsYXRlRGlyZWN0aXZlLFxuICBEYXRhQ29sdW1uQ29tcG9uZW50LFxuICBEYXRhQ29sdW1uTGlzdENvbXBvbmVudCxcbiAgRW1wdHlDb250ZW50Q29tcG9uZW50LFxuICBQYWdpbmF0aW9uQ29tcG9uZW50XG59IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZSc7XG5pbXBvcnQgeyBEb2N1bWVudExpc3REaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2RvY3VtZW50LWxpc3QuZGlyZWN0aXZlJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgRG9jdW1lbnRMaXN0Q29tcG9uZW50IH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb250ZW50LXNlcnZpY2VzJztcbmltcG9ydCB7IFNlYXJjaEFpSW5wdXRDb250YWluZXJDb21wb25lbnQgfSBmcm9tICcuLi9rbm93bGVkZ2UtcmV0cmlldmFsL3NlYXJjaC1haS9zZWFyY2gtYWktaW5wdXQtY29udGFpbmVyL3NlYXJjaC1haS1pbnB1dC1jb250YWluZXIuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRG9jdW1lbnRMaXN0RGlyZWN0aXZlLFxuICAgIENvbnRleHRBY3Rpb25zRGlyZWN0aXZlLFxuICAgIFBhZ2luYXRpb25Db21wb25lbnQsXG4gICAgUGFnaW5hdGlvbkRpcmVjdGl2ZSxcbiAgICBJbmZvRHJhd2VyQ29tcG9uZW50LFxuICAgIFBhZ2VMYXlvdXRDb21wb25lbnQsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIFRvb2xiYXJDb21wb25lbnQsXG4gICAgU2VhcmNoQWlJbnB1dENvbnRhaW5lckNvbXBvbmVudCxcbiAgICBFbXB0eUNvbnRlbnRDb21wb25lbnQsXG4gICAgRHluYW1pY0NvbHVtbkNvbXBvbmVudCxcbiAgICBEb2N1bWVudExpc3RDb21wb25lbnQsXG4gICAgRGF0YUNvbHVtbkxpc3RDb21wb25lbnQsXG4gICAgRGF0YUNvbHVtbkNvbXBvbmVudCxcbiAgICBDdXN0b21FbXB0eUNvbnRlbnRUZW1wbGF0ZURpcmVjdGl2ZVxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vZmF2b3JpdGVzLmNvbXBvbmVudC5odG1sJyxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgc2VsZWN0b3I6ICdhY2EtZmF2b3JpdGVzJ1xufSlcbmV4cG9ydCBjbGFzcyBGYXZvcml0ZXNDb21wb25lbnQgZXh0ZW5kcyBQYWdlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgY29sdW1uczogRG9jdW1lbnRMaXN0UHJlc2V0UmVmW10gPSBbXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbnRlbnRBcGk6IENvbnRlbnRBcGlTZXJ2aWNlKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSB0aGlzLnN1YnNjcmlwdGlvbnMuY29uY2F0KFtcbiAgICAgIHRoaXMudXBsb2FkU2VydmljZS5maWxlVXBsb2FkQ29tcGxldGUucGlwZShkZWJvdW5jZVRpbWUoMzAwKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMucmVsb2FkKCkpLFxuICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmZpbGVVcGxvYWREZWxldGVkLnBpcGUoZGVib3VuY2VUaW1lKDMwMCkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLnJlbG9hZCgpKVxuICAgIF0pO1xuXG4gICAgdGhpcy5jb2x1bW5zID0gdGhpcy5leHRlbnNpb25zLmRvY3VtZW50TGlzdFByZXNldHMuZmF2b3JpdGVzO1xuICB9XG5cbiAgbmF2aWdhdGUoZmF2b3JpdGU6IE5vZGUpIHtcbiAgICBjb25zdCB7IGlzRm9sZGVyLCBpZCB9ID0gZmF2b3JpdGU7XG5cbiAgICAvLyBUT0RPOiByZXdvcmsgYXMgaXQgd2lsbCBmYWlsIG9uIG5vbi1FbmdsaXNoIHNldHVwc1xuICAgIGNvbnN0IGlzU2l0ZVBhdGggPSAocGF0aDogUGF0aEluZm8pOiBib29sZWFuID0+IHBhdGg/LmVsZW1lbnRzPy5zb21lKCh7IG5hbWUgfTogUGF0aEVsZW1lbnQpID0+IG5hbWUgPT09ICdTaXRlcycpO1xuXG4gICAgaWYgKGlzRm9sZGVyKSB7XG4gICAgICB0aGlzLmNvbnRlbnRBcGlcbiAgICAgICAgLmdldE5vZGUoaWQpXG4gICAgICAgIC5waXBlKG1hcCgobm9kZSkgPT4gbm9kZS5lbnRyeSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKHsgcGF0aCB9OiBOb2RlKSA9PiB7XG4gICAgICAgICAgY29uc3Qgcm91dGVVcmwgPSBpc1NpdGVQYXRoKHBhdGgpID8gJy9saWJyYXJpZXMnIDogJy9wZXJzb25hbC1maWxlcyc7XG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3JvdXRlVXJsLCBpZF0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBvbk5vZGVEb3VibGVDbGljayhub2RlOiBOb2RlRW50cnkpIHtcbiAgICBpZiAobm9kZT8uZW50cnkpIHtcbiAgICAgIGlmIChub2RlLmVudHJ5LmlzRm9sZGVyKSB7XG4gICAgICAgIHRoaXMubmF2aWdhdGUobm9kZS5lbnRyeSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChub2RlLmVudHJ5LmlzRmlsZSkge1xuICAgICAgICB0aGlzLnNob3dQcmV2aWV3KG5vZGUsIHsgbG9jYXRpb246IHRoaXMucm91dGVyLnVybCB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBoYW5kbGVOb2RlQ2xpY2soZXZlbnQ6IEV2ZW50KSB7XG4gICAgdGhpcy5vbk5vZGVEb3VibGVDbGljaygoZXZlbnQgYXMgQ3VzdG9tRXZlbnQpLmRldGFpbD8ubm9kZSk7XG4gIH1cbn1cbiIsIjxhY2EtcGFnZS1sYXlvdXQ+XG4gIDxkaXYgY2xhc3M9XCJhY2EtcGFnZS1sYXlvdXQtaGVhZGVyXCI+XG4gICAgPGFjYS1zZWFyY2gtYWktaW5wdXQtY29udGFpbmVyXG4gICAgICAqbmdJZj1cInNlYXJjaEFpSW5wdXRTdGF0ZS5hY3RpdmU7IGVsc2UgaGVhZGVyXCJcbiAgICAgIFthZ2VudElkXT1cInNlYXJjaEFpSW5wdXRTdGF0ZS5zZWxlY3RlZEFnZW50SWRcIj5cbiAgICA8L2FjYS1zZWFyY2gtYWktaW5wdXQtY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyPlxuICAgICAgPGRpdiBjbGFzcz1cImFjYS1oZWFkZXItY29udGFpbmVyXCI+XG4gICAgICAgIDxoMSBjbGFzcz1cImFjYS1wYWdlLXRpdGxlXCI+XG4gICAgICB7eyAoc2VsZWN0ZWRSb3dJdGVtc0NvdW50IDwgMSA/ICdBUFAuQlJPV1NFLkZBVk9SSVRFUy5USVRMRScgOiAnQVBQLkhFQURFUi5TRUxFQ1RFRCcpIHwgdHJhbnNsYXRlOiB7IGNvdW50OiBzZWxlY3RlZFJvd0l0ZW1zQ291bnQgfSB9fVxuICAgIDwvaDE+XG4gICAgICAgIDxhY2EtdG9vbGJhciBbaXRlbXNdPVwiYWN0aW9uc1wiPjwvYWNhLXRvb2xiYXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiYWNhLXBhZ2UtbGF5b3V0LWNvbnRlbnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYWNhLW1haW4tY29udGVudFwiPlxuICAgICAgPGFkZi1kb2N1bWVudC1saXN0XG4gICAgICAgICNkb2N1bWVudExpc3RcbiAgICAgICAgYWNhRG9jdW1lbnRMaXN0XG4gICAgICAgIGFjYUNvbnRleHRBY3Rpb25zXG4gICAgICAgIFtjdXJyZW50Rm9sZGVySWRdPVwiJy1mYXZvcml0ZXMtJ1wiXG4gICAgICAgIFtzZWxlY3Rpb25Nb2RlXT1cIidtdWx0aXBsZSdcIlxuICAgICAgICBbbXVsdGlzZWxlY3RdPVwidHJ1ZVwiXG4gICAgICAgIFtuYXZpZ2F0ZV09XCJmYWxzZVwiXG4gICAgICAgIFtzb3J0aW5nXT1cIlsnbW9kaWZpZWRBdCcsICdkZXNjJ11cIlxuICAgICAgICBbc29ydGluZ01vZGVdPVwiJ2NsaWVudCdcIlxuICAgICAgICBbaW1hZ2VSZXNvbHZlcl09XCJpbWFnZVJlc29sdmVyXCJcbiAgICAgICAgW2Rpc3BsYXlDaGVja2JveGVzT25Ib3Zlcl09XCJ0cnVlXCJcbiAgICAgICAgKHNlbGVjdGVkSXRlbXNDb3VudENoYW5nZWQpPVwib25TZWxlY3RlZEl0ZW1zQ291bnRDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICBbaXNSZXNpemluZ0VuYWJsZWRdPVwidHJ1ZVwiXG4gICAgICAgIFtibHVyT25SZXNpemVdPVwiZmFsc2VcIlxuICAgICAgICAobm9kZS1kYmxjbGljayk9XCJoYW5kbGVOb2RlQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgIChuYW1lLWNsaWNrKT1cImhhbmRsZU5vZGVDbGljaygkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPGFkZi1jdXN0b20tZW1wdHktY29udGVudC10ZW1wbGF0ZT5cbiAgICAgICAgICA8YWRmLWVtcHR5LWNvbnRlbnQgaWNvbj1cInN0YXJfcmF0ZVwiIFt0aXRsZV09XCInQVBQLkJST1dTRS5GQVZPUklURVMuRU1QVFlfU1RBVEUuVElUTEUnXCIgc3VidGl0bGU9XCJBUFAuQlJPV1NFLkZBVk9SSVRFUy5FTVBUWV9TVEFURS5URVhUXCI+XG4gICAgICAgICAgPC9hZGYtZW1wdHktY29udGVudD5cbiAgICAgICAgPC9hZGYtY3VzdG9tLWVtcHR5LWNvbnRlbnQtdGVtcGxhdGU+XG5cbiAgICAgICAgPGRhdGEtY29sdW1ucz5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uczsgdHJhY2tCeTogdHJhY2tCeUNvbHVtbklkXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnRlbXBsYXRlICYmICEoY29sdW1uLmRlc2t0b3BPbmx5ICYmIGlzU21hbGxTY3JlZW4pXCI+XG4gICAgICAgICAgICAgIDxkYXRhLWNvbHVtblxuICAgICAgICAgICAgICAgIFtpZF09XCJjb2x1bW4uaWRcIlxuICAgICAgICAgICAgICAgIFtrZXldPVwiY29sdW1uLmtleVwiXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cImNvbHVtbi50aXRsZVwiXG4gICAgICAgICAgICAgICAgW2RyYWdnYWJsZV09XCJjb2x1bW4uZHJhZ2dhYmxlXCJcbiAgICAgICAgICAgICAgICBbcmVzaXphYmxlXT1cImNvbHVtbi5yZXNpemFibGVcIlxuICAgICAgICAgICAgICAgIFt0eXBlXT1cImNvbHVtbi50eXBlXCJcbiAgICAgICAgICAgICAgICBbZm9ybWF0XT1cImNvbHVtbi5mb3JtYXRcIlxuICAgICAgICAgICAgICAgIFtjbGFzc109XCJjb2x1bW4uY2xhc3NcIlxuICAgICAgICAgICAgICAgIFtzb3J0YWJsZV09XCJjb2x1bW4uc29ydGFibGVcIlxuICAgICAgICAgICAgICAgIFtpc0hpZGRlbl09XCJjb2x1bW4uaXNIaWRkZW5cIlxuICAgICAgICAgICAgICAgIFtzb3J0aW5nS2V5XT1cImNvbHVtbi5zb3J0aW5nS2V5IHx8IGNvbHVtbi5rZXlcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1jb250ZXh0PlxuICAgICAgICAgICAgICAgICAgPGFkZi1keW5hbWljLWNvbHVtbiBbaWRdPVwiY29sdW1uLnRlbXBsYXRlXCIgW2NvbnRleHRdPVwiY29udGV4dFwiPiA8L2FkZi1keW5hbWljLWNvbHVtbj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICA8L2RhdGEtY29sdW1uPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY29sdW1uLnRlbXBsYXRlICYmICEoY29sdW1uLmRlc2t0b3BPbmx5ICYmIGlzU21hbGxTY3JlZW4pXCI+XG4gICAgICAgICAgICAgIDxkYXRhLWNvbHVtblxuICAgICAgICAgICAgICAgIFtpZF09XCJjb2x1bW4uaWRcIlxuICAgICAgICAgICAgICAgIFtrZXldPVwiY29sdW1uLmtleVwiXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cImNvbHVtbi50aXRsZVwiXG4gICAgICAgICAgICAgICAgW3R5cGVdPVwiY29sdW1uLnR5cGVcIlxuICAgICAgICAgICAgICAgIFtkcmFnZ2FibGVdPVwiY29sdW1uLmRyYWdnYWJsZVwiXG4gICAgICAgICAgICAgICAgW3Jlc2l6YWJsZV09XCJjb2x1bW4ucmVzaXphYmxlXCJcbiAgICAgICAgICAgICAgICBbZm9ybWF0XT1cImNvbHVtbi5mb3JtYXRcIlxuICAgICAgICAgICAgICAgIFtjbGFzc109XCJjb2x1bW4uY2xhc3NcIlxuICAgICAgICAgICAgICAgIFtzb3J0YWJsZV09XCJjb2x1bW4uc29ydGFibGVcIlxuICAgICAgICAgICAgICAgIFtpc0hpZGRlbl09XCJjb2x1bW4uaXNIaWRkZW5cIlxuICAgICAgICAgICAgICAgIFtzb3J0aW5nS2V5XT1cImNvbHVtbi5zb3J0aW5nS2V5IHx8IGNvbHVtbi5rZXlcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvZGF0YS1jb2x1bW4+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kYXRhLWNvbHVtbnM+XG4gICAgICA8L2FkZi1kb2N1bWVudC1saXN0PlxuXG4gICAgICA8YWRmLXBhZ2luYXRpb24gYWNhUGFnaW5hdGlvbiBbdGFyZ2V0XT1cImRvY3VtZW50TGlzdFwiPiA8L2FkZi1wYWdpbmF0aW9uPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImFjYS1zaWRlYmFyXCIgKm5nSWY9XCJpbmZvRHJhd2VyT3BlbmVkJCB8IGFzeW5jXCI+XG4gICAgICA8YWNhLWluZm8tZHJhd2VyIFtub2RlXT1cInNlbGVjdGlvbi5sYXN0XCI+PC9hY2EtaW5mby1kcmF3ZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9hY2EtcGFnZS1sYXlvdXQ+XG4iXX0=
@@ -1,330 +0,0 @@
1
- /*!
2
- * Copyright © 2005-2024 Hyland Software, Inc. and its affiliates. All rights reserved.
3
- *
4
- * Alfresco Example Content Application
5
- *
6
- * This file is part of the Alfresco Example Content Application.
7
- * If the software was purchased under a paid Alfresco license, the terms of
8
- * the paid license agreement will prevail. Otherwise, the software is
9
- * provided under the following open source license terms:
10
- *
11
- * The Alfresco Example Content Application is free software: you can redistribute it and/or modify
12
- * it under the terms of the GNU Lesser General Public License as published by
13
- * the Free Software Foundation, either version 3 of the License, or
14
- * (at your option) any later version.
15
- *
16
- * The Alfresco Example Content Application is distributed in the hope that it will be useful,
17
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
18
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
- * GNU Lesser General Public License for more details.
20
- *
21
- * You should have received a copy of the GNU Lesser General Public License
22
- * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
23
- */
24
- import { CustomEmptyContentTemplateDirective, DataColumnComponent, DataColumnListComponent, PaginationComponent, ShowHeaderMode } from '@alfresco/adf-core';
25
- import { Component, ViewEncapsulation } from '@angular/core';
26
- import { ActivatedRoute } from '@angular/router';
27
- import { NodeActionsService } from '../../services/node-actions.service';
28
- import { ContentApiService, ContextActionsDirective, GenericErrorComponent, InfoDrawerComponent, PageComponent, PageLayoutComponent, PaginationDirective, ToolbarComponent } from '@alfresco/aca-shared';
29
- import { SetCurrentFolderAction, isAdmin, UploadFileVersionAction, showLoaderSelector } from '@alfresco/aca-shared/store';
30
- import { debounceTime, takeUntil } from 'rxjs/operators';
31
- import { BreadcrumbComponent, DocumentListComponent, UploadDragAreaComponent } from '@alfresco/adf-content-services';
32
- import { DynamicColumnComponent } from '@alfresco/adf-extensions';
33
- import { CommonModule } from '@angular/common';
34
- import { TranslateModule } from '@ngx-translate/core';
35
- import { DocumentListDirective } from '../../directives/document-list.directive';
36
- import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
37
- import { SearchAiInputContainerComponent } from '../knowledge-retrieval/search-ai/search-ai-input-container/search-ai-input-container.component';
38
- import * as i0 from "@angular/core";
39
- import * as i1 from "@alfresco/aca-shared";
40
- import * as i2 from "../../services/node-actions.service";
41
- import * as i3 from "@angular/router";
42
- import * as i4 from "@angular/common";
43
- import * as i5 from "@ngx-translate/core";
44
- import * as i6 from "@angular/material/progress-spinner";
45
- export class FilesComponent extends PageComponent {
46
- constructor(contentApi, nodeActionsService, route) {
47
- super();
48
- this.contentApi = contentApi;
49
- this.nodeActionsService = nodeActionsService;
50
- this.route = route;
51
- this.isValidPath = true;
52
- this.isAdmin = false;
53
- this.queryParams = null;
54
- this.showLoader$ = this.store.select(showLoaderSelector);
55
- this.columns = [];
56
- this.isFilterHeaderActive = false;
57
- }
58
- ngOnInit() {
59
- super.ngOnInit();
60
- const { data } = this.route.snapshot;
61
- this.title = data.title;
62
- this.route.queryParamMap.pipe(takeUntil(this.onDestroy$)).subscribe((queryMap) => {
63
- this.queryParams = queryMap.params;
64
- });
65
- this.route.params.pipe(takeUntil(this.onDestroy$)).subscribe(({ folderId }) => {
66
- const nodeId = folderId || data.defaultNodeId;
67
- this.contentApi
68
- .getNode(nodeId)
69
- .pipe(takeUntil(this.onDestroy$))
70
- .subscribe((node) => {
71
- this.isValidPath = true;
72
- if (node?.entry?.isFolder) {
73
- void this.updateCurrentNode(node.entry);
74
- }
75
- else {
76
- void this.router.navigate(['/personal-files', node.entry.parentId], {
77
- replaceUrl: true
78
- });
79
- }
80
- }, () => (this.isValidPath = false));
81
- });
82
- this.subscriptions = this.subscriptions.concat([
83
- this.nodeActionsService.contentCopied.subscribe((nodes) => this.onContentCopied(nodes)),
84
- this.uploadService.fileUploadComplete.pipe(debounceTime(300)).subscribe((file) => this.onFileUploadedEvent(file)),
85
- this.uploadService.fileUploadDeleted.pipe(debounceTime(300)).subscribe((file) => this.onFileUploadedEvent(file))
86
- ]);
87
- this.store
88
- .select(isAdmin)
89
- .pipe(takeUntil(this.onDestroy$))
90
- .subscribe((value) => {
91
- this.isAdmin = value;
92
- });
93
- this.extensions.filesDocumentListPreset$.pipe(takeUntil(this.onDestroy$)).subscribe((preset) => {
94
- this.columns = preset;
95
- });
96
- if (this.queryParams && Object.keys(this.queryParams).length > 0) {
97
- this.isFilterHeaderActive = true;
98
- }
99
- }
100
- ngOnDestroy() {
101
- this.store.dispatch(new SetCurrentFolderAction(null));
102
- super.ngOnDestroy();
103
- }
104
- navigate(nodeId = null) {
105
- const currentNodeId = this.route.snapshot.paramMap.get('folderId');
106
- const urlWithoutParams = decodeURIComponent(this.router.url).split('?')[0];
107
- const urlToNavigate = this.getUrlToNavigate(urlWithoutParams, currentNodeId, nodeId);
108
- void this.router.navigate(urlToNavigate);
109
- }
110
- getUrlToNavigate(currentURL, currentNodeId, nextNodeId) {
111
- return currentNodeId ? this.getNextNodeUrlToNavigate(currentURL, currentNodeId, nextNodeId) : this.appendNextNodeIdToUrl(currentURL, nextNodeId);
112
- }
113
- getNextNodeUrlToNavigate(currentURL, currentNodeId, nextNodeId) {
114
- const urlToNavigate = nextNodeId && !this.isRootNode(nextNodeId)
115
- ? this.replaceCurrentNodeIdWithNextNodeId(currentURL, currentNodeId, nextNodeId)
116
- : this.removeNodeIdFromUrl(currentURL, currentNodeId);
117
- urlToNavigate.shift();
118
- return urlToNavigate;
119
- }
120
- replaceCurrentNodeIdWithNextNodeId(currentURL, currentNodeId, nextNodeId) {
121
- const nextNodeUrlToNavigate = currentURL.split('/');
122
- const index = nextNodeUrlToNavigate.indexOf(currentNodeId);
123
- if (index > 0) {
124
- nextNodeUrlToNavigate[index] = nextNodeId;
125
- }
126
- return nextNodeUrlToNavigate;
127
- }
128
- removeNodeIdFromUrl(currentURL, currentNodeId) {
129
- const rootUrl = currentURL.replace(currentNodeId, '').split('/');
130
- rootUrl.pop();
131
- return rootUrl;
132
- }
133
- appendNextNodeIdToUrl(currentURL, nodeId) {
134
- const navigateToNodeUrl = currentURL.split('/');
135
- if (nodeId && !this.isRootNode(nodeId)) {
136
- navigateToNodeUrl.push(nodeId);
137
- }
138
- navigateToNodeUrl.shift();
139
- return navigateToNodeUrl;
140
- }
141
- onUploadNewVersion(ev) {
142
- this.store.dispatch(new UploadFileVersionAction(ev));
143
- }
144
- navigateTo(node) {
145
- if (node?.entry) {
146
- this.selectedNode = node;
147
- const { isFolder } = node.entry;
148
- if (isFolder) {
149
- let id;
150
- if (node.entry.nodeType === 'app:folderlink') {
151
- id = node.entry.properties['cm:destination'];
152
- }
153
- else {
154
- id = node.entry.id;
155
- }
156
- this.documentList.resetNewFolderPagination();
157
- this.navigate(id);
158
- return;
159
- }
160
- this.showPreview(node, { location: this.router.url });
161
- }
162
- }
163
- handleNodeClick(event) {
164
- this.navigateTo(event.detail?.node);
165
- }
166
- onBreadcrumbNavigate(route) {
167
- this.documentList.resetNewFolderPagination();
168
- // todo: review this approach once 5.2.3 is out
169
- if (this.nodePath && this.nodePath?.length > 2) {
170
- if (this.nodePath[1].name === 'Sites' && this.nodePath[2].id === route.id) {
171
- return this.navigate(this.nodePath[3].id);
172
- }
173
- }
174
- this.navigate(route.id);
175
- }
176
- onFileUploadedEvent(event) {
177
- const node = event.file.data;
178
- // check root and child nodes
179
- if (node?.entry?.parentId === this.getParentNodeId()) {
180
- this.reload(this.selectedNode);
181
- return;
182
- }
183
- // check the child nodes to show dropped folder
184
- if (event && event.file.options.parentId === this.getParentNodeId()) {
185
- this.displayFolderParent(0, event.file.options.path);
186
- return;
187
- }
188
- if (event?.file.options.parentId) {
189
- if (this.nodePath) {
190
- const correspondingNodePath = this.nodePath.find((pathItem) => pathItem.id === event.file.options.parentId);
191
- // check if the current folder has the 'trigger-upload-folder' as one of its parents
192
- if (correspondingNodePath) {
193
- const correspondingIndex = this.nodePath.length - this.nodePath.indexOf(correspondingNodePath);
194
- this.displayFolderParent(correspondingIndex, event.file.options.path);
195
- }
196
- }
197
- }
198
- }
199
- displayFolderParent(index, filePath = '') {
200
- const parentName = filePath.split('/').filter((el) => el)[index];
201
- const currentFoldersDisplayed = this.documentList.data.getRows() || [];
202
- const alreadyDisplayedParentFolder = currentFoldersDisplayed.find((row) => row.node.entry.isFolder && row.node.entry.name === parentName);
203
- if (alreadyDisplayedParentFolder) {
204
- return;
205
- }
206
- this.reload(this.selectedNode);
207
- }
208
- onContentCopied(nodes) {
209
- const newNode = nodes.find((node) => node?.entry?.parentId === this.getParentNodeId());
210
- if (newNode) {
211
- this.reload(this.selectedNode);
212
- }
213
- }
214
- // todo: review this approach once 5.2.3 is out
215
- async updateCurrentNode(node) {
216
- this.nodePath = null;
217
- if (node?.path?.elements) {
218
- const elements = node.path.elements;
219
- this.nodePath = elements.map((pathElement) => {
220
- return { ...pathElement };
221
- });
222
- if (elements.length > 1) {
223
- if (elements[1].name === 'User Homes') {
224
- if (!this.isAdmin) {
225
- elements.splice(0, 2);
226
- }
227
- }
228
- else if (elements[1].name === 'Sites') {
229
- await this.normalizeSitePath(node);
230
- }
231
- }
232
- }
233
- this.node = node;
234
- this.store.dispatch(new SetCurrentFolderAction(node));
235
- }
236
- // todo: review this approach once 5.2.3 is out
237
- async normalizeSitePath(node) {
238
- const elements = node.path.elements;
239
- // remove 'Sites'
240
- elements.splice(1, 1);
241
- if (this.isSiteContainer(node)) {
242
- // rename 'documentLibrary' entry to the target site display name
243
- // clicking on the breadcrumb entry loads the site content
244
- const parentNode = await this.contentApi.getNodeInfo(node.parentId).toPromise();
245
- node.name = parentNode.properties['cm:title'] || parentNode.name;
246
- // remove the site entry
247
- elements.splice(1, 1);
248
- }
249
- else {
250
- // remove 'documentLibrary' in the middle of the path
251
- const docLib = elements.findIndex((el) => el.name === 'documentLibrary');
252
- if (docLib > -1) {
253
- const siteFragment = elements[docLib - 1];
254
- const siteNode = await this.contentApi.getNodeInfo(siteFragment.id).toPromise();
255
- // apply Site Name to the parent fragment
256
- siteFragment.name = siteNode.properties['cm:title'] || siteNode.name;
257
- elements.splice(docLib, 1);
258
- }
259
- }
260
- }
261
- isSiteContainer(node) {
262
- if (node?.aspectNames?.length > 0) {
263
- return node.aspectNames.indexOf('st:siteContainer') >= 0;
264
- }
265
- return false;
266
- }
267
- isRootNode(nodeId) {
268
- if (this.node?.path?.elements?.length > 0) {
269
- return this.node.path.elements[0].id === nodeId;
270
- }
271
- return false;
272
- }
273
- onFilterSelected(activeFilters) {
274
- if (activeFilters.length) {
275
- this.showHeader = ShowHeaderMode.Always;
276
- this.isFilterHeaderActive = true;
277
- this.navigateToFilter(activeFilters);
278
- }
279
- else {
280
- void this.router.navigate(['.'], { relativeTo: this.route });
281
- this.isFilterHeaderActive = false;
282
- this.showHeader = ShowHeaderMode.Data;
283
- this.onAllFilterCleared();
284
- }
285
- }
286
- navigateToFilter(activeFilters) {
287
- const objectFromMap = {};
288
- activeFilters.forEach((filter) => {
289
- let paramValue;
290
- if (filter?.value?.from && filter?.value?.to) {
291
- paramValue = `${filter.value.from}||${filter.value.to}`;
292
- }
293
- else {
294
- paramValue = filter.value;
295
- }
296
- objectFromMap[filter.key] = paramValue;
297
- });
298
- void this.router.navigate([], { relativeTo: this.route, queryParams: objectFromMap });
299
- }
300
- onError() {
301
- this.isValidPath = false;
302
- }
303
- }
304
- FilesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FilesComponent, deps: [{ token: i1.ContentApiService }, { token: i2.NodeActionsService }, { token: i3.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
305
- FilesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: FilesComponent, isStandalone: true, selector: "aca-files", usesInheritance: true, ngImport: i0, template: "<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 </aca-search-ai-input-container>\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 </adf-breadcrumb>\n <aca-toolbar [items]=\"actions\"></aca-toolbar>\n </div>\n </ng-template>\n </div>\n\n <div class=\"aca-page-layout-error\">\n <aca-generic-error></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 [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\"></adf-dynamic-column>\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 </data-column>\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\"> </adf-pagination>\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 </mat-progress-spinner>\n\n <div class=\"aca-sidebar\" *ngIf=\"infoDrawerOpened$ | async\">\n <aca-info-drawer [node]=\"selection.last\"></aca-info-drawer>\n </div>\n </div>\n</aca-page-layout>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "component", type: GenericErrorComponent, selector: "aca-generic-error", inputs: ["text"] }, { kind: "directive", type: DocumentListDirective, selector: "[acaDocumentList]" }, { kind: "directive", type: ContextActionsDirective, selector: "[acaContextActions]", inputs: ["acaContextEnable"], exportAs: ["acaContextActions"] }, { kind: "component", type: PaginationComponent, selector: "adf-pagination", inputs: ["target", "supportedPageSizes", "pagination"], outputs: ["change", "changePageNumber", "changePageSize", "nextPage", "prevPage"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i6.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: InfoDrawerComponent, selector: "aca-info-drawer", inputs: ["nodeId", "node"] }, { kind: "directive", type: PaginationDirective, selector: "[acaPagination]" }, { kind: "component", type: PageLayoutComponent, selector: "aca-page-layout", inputs: ["hasError"] }, { kind: "component", type: ToolbarComponent, selector: "aca-toolbar", inputs: ["items"] }, { kind: "component", type: SearchAiInputContainerComponent, selector: "aca-search-ai-input-container", inputs: ["placeholder", "agentId", "useStoredNodes"] }, { kind: "component", type: DynamicColumnComponent, selector: "adf-dynamic-column", inputs: ["id", "context"] }, { kind: "component", type: BreadcrumbComponent, selector: "adf-breadcrumb", inputs: ["folderNode", "root", "rootId", "target", "transform", "maxItems", "selectedRowItemsCount", "readOnly"], outputs: ["navigate"] }, { kind: "component", type: UploadDragAreaComponent, selector: "adf-upload-drag-area" }, { kind: "component", type: DocumentListComponent, selector: "adf-document-list", inputs: ["includeFields", "where", "permissionsStyle", "locationFormat", "navigate", "showHeader", "navigationMode", "thumbnails", "selectionMode", "multiselect", "contentActions", "contentActionsPosition", "contextMenuActions", "emptyFolderImageUrl", "allowDropFiles", "sorting", "additionalSorting", "sortingMode", "rowStyle", "rowStyleClass", "loading", "_rowFilter", "rowFilter", "imageResolver", "stickyHeader", "headerFilters", "filterValue", "currentFolderId", "preselectNodes", "node", "maxItems", "columnsPresetKey", "setColumnsVisibility", "setColumnsWidths", "setColumnsOrder", "maxColumnsVisible", "isResizingEnabled", "blurOnResize", "displayCheckboxesOnHover"], outputs: ["nodeClick", "nodeDblClick", "folderChange", "preview", "ready", "error", "nodeSelected", "filterSelection", "columnsWidthChanged", "columnsVisibilityChanged", "columnsOrderChanged", "selectedItemsCountChanged"] }, { kind: "component", type: DataColumnListComponent, selector: "data-columns" }, { kind: "component", type: DataColumnComponent, selector: "data-column", inputs: ["id", "key", "customData", "type", "format", "sortable", "draggable", "resizable", "isHidden", "title", "formatTooltip", "sr-title", "class", "copyContent", "editable", "focus", "sortingKey", "order", "currencyConfig", "decimalConfig", "dateConfig"] }, { kind: "directive", type: CustomEmptyContentTemplateDirective, selector: "adf-custom-empty-content-template, empty-folder-content" }], encapsulation: i0.ViewEncapsulation.None });
306
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FilesComponent, decorators: [{
307
- type: Component,
308
- args: [{ standalone: true, imports: [
309
- CommonModule,
310
- TranslateModule,
311
- GenericErrorComponent,
312
- DocumentListDirective,
313
- ContextActionsDirective,
314
- PaginationComponent,
315
- MatProgressSpinnerModule,
316
- InfoDrawerComponent,
317
- PaginationDirective,
318
- PageLayoutComponent,
319
- ToolbarComponent,
320
- SearchAiInputContainerComponent,
321
- DynamicColumnComponent,
322
- BreadcrumbComponent,
323
- UploadDragAreaComponent,
324
- DocumentListComponent,
325
- DataColumnListComponent,
326
- DataColumnComponent,
327
- CustomEmptyContentTemplateDirective
328
- ], encapsulation: ViewEncapsulation.None, selector: 'aca-files', template: "<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 </aca-search-ai-input-container>\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 </adf-breadcrumb>\n <aca-toolbar [items]=\"actions\"></aca-toolbar>\n </div>\n </ng-template>\n </div>\n\n <div class=\"aca-page-layout-error\">\n <aca-generic-error></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 [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\"></adf-dynamic-column>\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 </data-column>\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\"> </adf-pagination>\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 </mat-progress-spinner>\n\n <div class=\"aca-sidebar\" *ngIf=\"infoDrawerOpened$ | async\">\n <aca-info-drawer [node]=\"selection.last\"></aca-info-drawer>\n </div>\n </div>\n</aca-page-layout>\n" }]
329
- }], ctorParameters: function () { return [{ type: i1.ContentApiService }, { type: i2.NodeActionsService }, { type: i3.ActivatedRoute }]; } });
330
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNhLWNvbnRlbnQvc3JjL2xpYi9jb21wb25lbnRzL2ZpbGVzL2ZpbGVzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L3NyYy9saWIvY29tcG9uZW50cy9maWxlcy9maWxlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVILE9BQU8sRUFDTCxtQ0FBbUMsRUFDbkMsbUJBQW1CLEVBQ25CLHVCQUF1QixFQUN2QixtQkFBbUIsRUFDbkIsY0FBYyxFQUNmLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLFNBQVMsRUFBcUIsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFFLGNBQWMsRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBRXpELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3pFLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsdUJBQXVCLEVBQ3ZCLHFCQUFxQixFQUNyQixtQkFBbUIsRUFDbkIsYUFBYSxFQUNiLG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIsZ0JBQWdCLEVBQ2pCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFILE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekQsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixxQkFBcUIsRUFJckIsdUJBQXVCLEVBQ3hCLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEMsT0FBTyxFQUF5QixzQkFBc0Is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QkFBZ0I7d0JBQ2hCLCtCQUErQjt3QkFDL0Isc0JBQXNCO3dCQUN0QixtQkFBbUI7d0JBQ25CLHVCQUF1Qjt3QkFDdkIscUJBQXFCO3dCQUNyQix1QkFBdUI7d0JBQ3ZCLG1CQUFtQjt3QkFDbkIsbUNBQW1DO3FCQUNwQyxpQkFFYyxpQkFBaUIsQ0FBQyxJQUFJLFlBQzNCLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjQgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb25cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uLlxuICogSWYgdGhlIHNvZnR3YXJlIHdhcyBwdXJjaGFzZWQgdW5kZXIgYSBwYWlkIEFsZnJlc2NvIGxpY2Vuc2UsIHRoZSB0ZXJtcyBvZlxuICogdGhlIHBhaWQgbGljZW5zZSBhZ3JlZW1lbnQgd2lsbCBwcmV2YWlsLiBPdGhlcndpc2UsIHRoZSBzb2Z0d2FyZSBpc1xuICogcHJvdmlkZWQgdW5kZXIgdGhlIGZvbGxvd2luZyBvcGVuIHNvdXJjZSBsaWNlbnNlIHRlcm1zOlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGZyb20gSHlsYW5kIFNvZnR3YXJlLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cblxuaW1wb3J0IHtcbiAgQ3VzdG9tRW1wdHlDb250ZW50VGVtcGxhdGVEaXJlY3RpdmUsXG4gIERhdGFDb2x1bW5Db21wb25lbnQsXG4gIERhdGFDb2x1bW5MaXN0Q29tcG9uZW50LFxuICBQYWdpbmF0aW9uQ29tcG9uZW50LFxuICBTaG93SGVhZGVyTW9kZVxufSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTm9kZUVudHJ5LCBOb2RlLCBQYXRoRWxlbWVudCB9IGZyb20gJ0BhbGZyZXNjby9qcy1hcGknO1xuaW1wb3J0IHsgTm9kZUFjdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbm9kZS1hY3Rpb25zLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgQ29udGVudEFwaVNlcnZpY2UsXG4gIENvbnRleHRBY3Rpb25zRGlyZWN0aXZlLFxuICBHZW5lcmljRXJyb3JDb21wb25lbnQsXG4gIEluZm9EcmF3ZXJDb21wb25lbnQsXG4gIFBhZ2VDb21wb25lbnQsXG4gIFBhZ2VMYXlvdXRDb21wb25lbnQsXG4gIFBhZ2luYXRpb25EaXJlY3RpdmUsXG4gIFRvb2xiYXJDb21wb25lbnRcbn0gZnJvbSAnQGFsZnJlc2NvL2FjYS1zaGFyZWQnO1xuaW1wb3J0IHsgU2V0Q3VycmVudEZvbGRlckFjdGlvbiwgaXNBZG1pbiwgVXBsb2FkRmlsZVZlcnNpb25BY3Rpb24sIHNob3dMb2FkZXJTZWxlY3RvciB9IGZyb20gJ0BhbGZyZXNjby9hY2Etc2hhcmVkL3N0b3JlJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgQnJlYWRjcnVtYkNvbXBvbmVudCxcbiAgRG9jdW1lbnRMaXN0Q29tcG9uZW50LFxuICBGaWxlVXBsb2FkRXZlbnQsXG4gIEZpbHRlclNlYXJjaCxcbiAgU2hhcmVEYXRhUm93LFxuICBVcGxvYWREcmFnQXJlYUNvbXBvbmVudFxufSBmcm9tICdAYWxmcmVzY28vYWRmLWNvbnRlbnQtc2VydmljZXMnO1xuaW1wb3J0IHsgRG9jdW1lbnRMaXN0UHJlc2V0UmVmLCBEeW5hbWljQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1leHRlbnNpb25zJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IERvY3VtZW50TGlzdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvZG9jdW1lbnQtbGlzdC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5pbXBvcnQgeyBTZWFyY2hBaUlucHV0Q29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi4va25vd2xlZGdlLXJldHJpZXZhbC9zZWFyY2gtYWkvc2VhcmNoLWFpLWlucHV0LWNvbnRhaW5lci9zZWFyY2gtYWktaW5wdXQtY29udGFpbmVyLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBHZW5lcmljRXJyb3JDb21wb25lbnQsXG4gICAgRG9jdW1lbnRMaXN0RGlyZWN0aXZlLFxuICAgIENvbnRleHRBY3Rpb25zRGlyZWN0aXZlLFxuICAgIFBhZ2luYXRpb25Db21wb25lbnQsXG4gICAgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlLFxuICAgIEluZm9EcmF3ZXJDb21wb25lbnQsXG4gICAgUGFnaW5hdGlvbkRpcmVjdGl2ZSxcbiAgICBQYWdlTGF5b3V0Q29tcG9uZW50LFxuICAgIFRvb2xiYXJDb21wb25lbnQsXG4gICAgU2VhcmNoQWlJbnB1dENvbnRhaW5lckNvbXBvbmVudCxcbiAgICBEeW5hbWljQ29sdW1uQ29tcG9uZW50LFxuICAgIEJyZWFkY3J1bWJDb21wb25lbnQsXG4gICAgVXBsb2FkRHJhZ0FyZWFDb21wb25lbnQsXG4gICAgRG9jdW1lbnRMaXN0Q29tcG9uZW50LFxuICAgIERhdGFDb2x1bW5MaXN0Q29tcG9uZW50LFxuICAgIERhdGFDb2x1bW5Db21wb25lbnQsXG4gICAgQ3VzdG9tRW1wdHlDb250ZW50VGVtcGxhdGVEaXJlY3RpdmVcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbGVzLmNvbXBvbmVudC5odG1sJyxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgc2VsZWN0b3I6ICdhY2EtZmlsZXMnXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVzQ29tcG9uZW50IGV4dGVuZHMgUGFnZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgaXNWYWxpZFBhdGggPSB0cnVlO1xuICBpc0FkbWluID0gZmFsc2U7XG4gIHNlbGVjdGVkTm9kZTogTm9kZUVudHJ5O1xuICBxdWVyeVBhcmFtcyA9IG51bGw7XG4gIHNob3dMb2FkZXIkID0gdGhpcy5zdG9yZS5zZWxlY3Qoc2hvd0xvYWRlclNlbGVjdG9yKTtcbiAgcHJpdmF0ZSBub2RlUGF0aDogUGF0aEVsZW1lbnRbXTtcblxuICBjb2x1bW5zOiBEb2N1bWVudExpc3RQcmVzZXRSZWZbXSA9IFtdO1xuICBpc0ZpbHRlckhlYWRlckFjdGl2ZSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29udGVudEFwaTogQ29udGVudEFwaVNlcnZpY2UsIHByaXZhdGUgbm9kZUFjdGlvbnNTZXJ2aWNlOiBOb2RlQWN0aW9uc1NlcnZpY2UsIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICBjb25zdCB7IGRhdGEgfSA9IHRoaXMucm91dGUuc25hcHNob3Q7XG5cbiAgICB0aGlzLnRpdGxlID0gZGF0YS50aXRsZTtcblxuICAgIHRoaXMucm91dGUucXVlcnlQYXJhbU1hcC5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpKS5zdWJzY3JpYmUoKHF1ZXJ5TWFwOiBQYXJhbXMpID0+IHtcbiAgICAgIHRoaXMucXVlcnlQYXJhbXMgPSBxdWVyeU1hcC5wYXJhbXM7XG4gICAgfSk7XG4gICAgdGhpcy5yb3V0ZS5wYXJhbXMucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKCh7IGZvbGRlcklkIH06IFBhcmFtcykgPT4ge1xuICAgICAgY29uc3Qgbm9kZUlkID0gZm9sZGVySWQgfHwgZGF0YS5kZWZhdWx0Tm9kZUlkO1xuXG4gICAgICB0aGlzLmNvbnRlbnRBcGlcbiAgICAgICAgLmdldE5vZGUobm9kZUlkKVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSlcbiAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAobm9kZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pc1ZhbGlkUGF0aCA9IHRydWU7XG5cbiAgICAgICAgICAgIGlmIChub2RlPy5lbnRyeT8uaXNGb2xkZXIpIHtcbiAgICAgICAgICAgICAgdm9pZCB0aGlzLnVwZGF0ZUN1cnJlbnROb2RlKG5vZGUuZW50cnkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdm9pZCB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9wZXJzb25hbC1maWxlcycsIG5vZGUuZW50cnkucGFyZW50SWRdLCB7XG4gICAgICAgICAgICAgICAgcmVwbGFjZVVybDogdHJ1ZVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgICgpID0+ICh0aGlzLmlzVmFsaWRQYXRoID0gZmFsc2UpXG4gICAgICAgICk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSB0aGlzLnN1YnNjcmlwdGlvbnMuY29uY2F0KFtcbiAgICAgIHRoaXMubm9kZUFjdGlvbnNTZXJ2aWNlLmNvbnRlbnRDb3BpZWQuc3Vic2NyaWJlKChub2RlcykgPT4gdGhpcy5vbkNvbnRlbnRDb3BpZWQobm9kZXMpKSxcbiAgICAgIHRoaXMudXBsb2FkU2VydmljZS5maWxlVXBsb2FkQ29tcGxldGUucGlwZShkZWJvdW5jZVRpbWUoMzAwKSkuc3Vic2NyaWJlKChmaWxlKSA9PiB0aGlzLm9uRmlsZVVwbG9hZGVkRXZlbnQoZmlsZSkpLFxuICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmZpbGVVcGxvYWREZWxldGVkLnBpcGUoZGVib3VuY2VUaW1lKDMwMCkpLnN1YnNjcmliZSgoZmlsZSkgPT4gdGhpcy5vbkZpbGVVcGxvYWRlZEV2ZW50KGZpbGUpKVxuICAgIF0pO1xuXG4gICAgdGhpcy5zdG9yZVxuICAgICAgLnNlbGVjdChpc0FkbWluKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICB0aGlzLmlzQWRtaW4gPSB2YWx1ZTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5leHRlbnNpb25zLmZpbGVzRG9jdW1lbnRMaXN0UHJlc2V0JC5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpKS5zdWJzY3JpYmUoKHByZXNldCkgPT4ge1xuICAgICAgdGhpcy5jb2x1bW5zID0gcHJlc2V0O1xuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMucXVlcnlQYXJhbXMgJiYgT2JqZWN0LmtleXModGhpcy5xdWVyeVBhcmFtcykubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5pc0ZpbHRlckhlYWRlckFjdGl2ZSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU2V0Q3VycmVudEZvbGRlckFjdGlvbihudWxsKSk7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgfVxuXG4gIG5hdmlnYXRlKG5vZGVJZDogc3RyaW5nID0gbnVsbCkge1xuICAgIGNvbnN0IGN1cnJlbnROb2RlSWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldCgnZm9sZGVySWQnKTtcbiAgICBjb25zdCB1cmxXaXRob3V0UGFyYW1zID0gZGVjb2RlVVJJQ29tcG9uZW50KHRoaXMucm91dGVyLnVybCkuc3BsaXQoJz8nKVswXTtcbiAgICBjb25zdCB1cmxUb05hdmlnYXRlOiBzdHJpbmdbXSA9IHRoaXMuZ2V0VXJsVG9OYXZpZ2F0ZSh1cmxXaXRob3V0UGFyYW1zLCBjdXJyZW50Tm9kZUlkLCBub2RlSWQpO1xuICAgIHZvaWQgdGhpcy5yb3V0ZXIubmF2aWdhdGUodXJsVG9OYXZpZ2F0ZSk7XG4gIH1cblxuICBwcml2YXRlIGdldFVybFRvTmF2aWdhdGUoY3VycmVudFVSTDogc3RyaW5nLCBjdXJyZW50Tm9kZUlkOiBzdHJpbmcsIG5leHROb2RlSWQ6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gY3VycmVudE5vZGVJZCA/IHRoaXMuZ2V0TmV4dE5vZGVVcmxUb05hdmlnYXRlKGN1cnJlbnRVUkwsIGN1cnJlbnROb2RlSWQsIG5leHROb2RlSWQpIDogdGhpcy5hcHBlbmROZXh0Tm9kZUlkVG9VcmwoY3VycmVudFVSTCwgbmV4dE5vZGVJZCk7XG4gIH1cblxuICBwcml2YXRlIGdldE5leHROb2RlVXJsVG9OYXZpZ2F0ZShjdXJyZW50VVJMOiBzdHJpbmcsIGN1cnJlbnROb2RlSWQ6IHN0cmluZywgbmV4dE5vZGVJZDogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHVybFRvTmF2aWdhdGU6IHN0cmluZ1tdID1cbiAgICAgIG5leHROb2RlSWQgJiYgIXRoaXMuaXNSb290Tm9kZShuZXh0Tm9kZUlkKVxuICAgICAgICA/IHRoaXMucmVwbGFjZUN1cnJlbnROb2RlSWRXaXRoTmV4dE5vZGVJZChjdXJyZW50VVJMLCBjdXJyZW50Tm9kZUlkLCBuZXh0Tm9kZUlkKVxuICAgICAgICA6IHRoaXMucmVtb3ZlTm9kZUlkRnJvbVVybChjdXJyZW50VVJMLCBjdXJyZW50Tm9kZUlkKTtcbiAgICB1cmxUb05hdmlnYXRlLnNoaWZ0KCk7XG4gICAgcmV0dXJuIHVybFRvTmF2aWdhdGU7XG4gIH1cblxuICBwcml2YXRlIHJlcGxhY2VDdXJyZW50Tm9kZUlkV2l0aE5leHROb2RlSWQoY3VycmVudFVSTDogc3RyaW5nLCBjdXJyZW50Tm9kZUlkOiBzdHJpbmcsIG5leHROb2RlSWQ6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBuZXh0Tm9kZVVybFRvTmF2aWdhdGUgPSBjdXJyZW50VVJMLnNwbGl0KCcvJyk7XG4gICAgY29uc3QgaW5kZXggPSBuZXh0Tm9kZVVybFRvTmF2aWdhdGUuaW5kZXhPZihjdXJyZW50Tm9kZUlkKTtcbiAgICBpZiAoaW5kZXggPiAwKSB7XG4gICAgICBuZXh0Tm9kZVVybFRvTmF2aWdhdGVbaW5kZXhdID0gbmV4dE5vZGVJZDtcbiAgICB9XG4gICAgcmV0dXJuIG5leHROb2RlVXJsVG9OYXZpZ2F0ZTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlTm9kZUlkRnJvbVVybChjdXJyZW50VVJMOiBzdHJpbmcsIGN1cnJlbnROb2RlSWQ6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCByb290VXJsOiBzdHJpbmdbXSA9IGN1cnJlbnRVUkwucmVwbGFjZShjdXJyZW50Tm9kZUlkLCAnJykuc3BsaXQoJy8nKTtcbiAgICByb290VXJsLnBvcCgpO1xuICAgIHJldHVybiByb290VXJsO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBlbmROZXh0Tm9kZUlkVG9VcmwoY3VycmVudFVSTDogc3RyaW5nLCBub2RlSWQ6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBuYXZpZ2F0ZVRvTm9kZVVybCA9IGN1cnJlbnRVUkwuc3BsaXQoJy8nKTtcbiAgICBpZiAobm9kZUlkICYmICF0aGlzLmlzUm9vdE5vZGUobm9kZUlkKSkge1xuICAgICAgbmF2aWdhdGVUb05vZGVVcmwucHVzaChub2RlSWQpO1xuICAgIH1cbiAgICBuYXZpZ2F0ZVRvTm9kZVVybC5zaGlmdCgpO1xuICAgIHJldHVybiBuYXZpZ2F0ZVRvTm9kZVVybDtcbiAgfVxuXG4gIG9uVXBsb2FkTmV3VmVyc2lvbihldjogQ3VzdG9tRXZlbnQpIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBVcGxvYWRGaWxlVmVyc2lvbkFjdGlvbihldikpO1xuICB9XG5cbiAgbmF2aWdhdGVUbyhub2RlOiBOb2RlRW50cnkpIHtcbiAgICBpZiAobm9kZT8uZW50cnkpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWROb2RlID0gbm9kZTtcbiAgICAgIGNvbnN0IHsgaXNGb2xkZXIgfSA9IG5vZGUuZW50cnk7XG5cbiAgICAgIGlmIChpc0ZvbGRlcikge1xuICAgICAgICBsZXQgaWQ6IHN0cmluZztcblxuICAgICAgICBpZiAobm9kZS5lbnRyeS5ub2RlVHlwZSA9PT0gJ2FwcDpmb2xkZXJsaW5rJykge1xuICAgICAgICAgIGlkID0gbm9kZS5lbnRyeS5wcm9wZXJ0aWVzWydjbTpkZXN0aW5hdGlvbiddO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlkID0gbm9kZS5lbnRyeS5pZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZG9jdW1lbnRMaXN0LnJlc2V0TmV3Rm9sZGVyUGFnaW5hdGlvbigpO1xuICAgICAgICB0aGlzLm5hdmlnYXRlKGlkKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnNob3dQcmV2aWV3KG5vZGUsIHsgbG9jYXRpb246IHRoaXMucm91dGVyLnVybCB9KTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVOb2RlQ2xpY2soZXZlbnQ6IEV2ZW50KSB7XG4gICAgdGhpcy5uYXZpZ2F0ZVRvKChldmVudCBhcyBDdXN0b21FdmVudCkuZGV0YWlsPy5ub2RlKTtcbiAgfVxuXG4gIG9uQnJlYWRjcnVtYk5hdmlnYXRlKHJvdXRlOiBQYXRoRWxlbWVudCkge1xuICAgIHRoaXMuZG9jdW1lbnRMaXN0LnJlc2V0TmV3Rm9sZGVyUGFnaW5hdGlvbigpO1xuXG4gICAgLy8gdG9kbzogcmV2aWV3IHRoaXMgYXBwcm9hY2ggb25jZSA1LjIuMyBpcyBvdXRcbiAgICBpZiAodGhpcy5ub2RlUGF0aCAmJiB0aGlzLm5vZGVQYXRoPy5sZW5ndGggPiAyKSB7XG4gICAgICBpZiAodGhpcy5ub2RlUGF0aFsxXS5uYW1lID09PSAnU2l0ZXMnICYmIHRoaXMubm9kZVBhdGhbMl0uaWQgPT09IHJvdXRlLmlkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdmlnYXRlKHRoaXMubm9kZVBhdGhbM10uaWQpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLm5hdmlnYXRlKHJvdXRlLmlkKTtcbiAgfVxuXG4gIG9uRmlsZVVwbG9hZGVkRXZlbnQoZXZlbnQ6IEZpbGVVcGxvYWRFdmVudCkge1xuICAgIGNvbnN0IG5vZGU6IE5vZGVFbnRyeSA9IGV2ZW50LmZpbGUuZGF0YTtcblxuICAgIC8vIGNoZWNrIHJvb3QgYW5kIGNoaWxkIG5vZGVzXG4gICAgaWYgKG5vZGU/LmVudHJ5Py5wYXJlbnRJZCA9PT0gdGhpcy5nZXRQYXJlbnROb2RlSWQoKSkge1xuICAgICAgdGhpcy5yZWxvYWQodGhpcy5zZWxlY3RlZE5vZGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGNoZWNrIHRoZSBjaGlsZCBub2RlcyB0byBzaG93IGRyb3BwZWQgZm9sZGVyXG4gICAgaWYgKGV2ZW50ICYmIGV2ZW50LmZpbGUub3B0aW9ucy5wYXJlbnRJZCA9PT0gdGhpcy5nZXRQYXJlbnROb2RlSWQoKSkge1xuICAgICAgdGhpcy5kaXNwbGF5Rm9sZGVyUGFyZW50KDAsIGV2ZW50LmZpbGUub3B0aW9ucy5wYXRoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQ/LmZpbGUub3B0aW9ucy5wYXJlbnRJZCkge1xuICAgICAgaWYgKHRoaXMubm9kZVBhdGgpIHtcbiAgICAgICAgY29uc3QgY29ycmVzcG9uZGluZ05vZGVQYXRoID0gdGhpcy5ub2RlUGF0aC5maW5kKChwYXRoSXRlbSkgPT4gcGF0aEl0ZW0uaWQgPT09IGV2ZW50LmZpbGUub3B0aW9ucy5wYXJlbnRJZCk7XG5cbiAgICAgICAgLy8gY2hlY2sgaWYgdGhlIGN1cnJlbnQgZm9sZGVyIGhhcyB0aGUgJ3RyaWdnZXItdXBsb2FkLWZvbGRlcicgYXMgb25lIG9mIGl0cyBwYXJlbnRzXG4gICAgICAgIGlmIChjb3JyZXNwb25kaW5nTm9kZVBhdGgpIHtcbiAgICAgICAgICBjb25zdCBjb3JyZXNwb25kaW5nSW5kZXggPSB0aGlzLm5vZGVQYXRoLmxlbmd0aCAtIHRoaXMubm9kZVBhdGguaW5kZXhPZihjb3JyZXNwb25kaW5nTm9kZVBhdGgpO1xuICAgICAgICAgIHRoaXMuZGlzcGxheUZvbGRlclBhcmVudChjb3JyZXNwb25kaW5nSW5kZXgsIGV2ZW50LmZpbGUub3B0aW9ucy5wYXRoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGRpc3BsYXlGb2xkZXJQYXJlbnQoaW5kZXg6IG51bWJlciwgZmlsZVBhdGggPSAnJykge1xuICAgIGNvbnN0IHBhcmVudE5hbWUgPSBmaWxlUGF0aC5zcGxpdCgnLycpLmZpbHRlcigoZWwpID0+IGVsKVtpbmRleF07XG4gICAgY29uc3QgY3VycmVudEZvbGRlcnNEaXNwbGF5ZWQgPSAodGhpcy5kb2N1bWVudExpc3QuZGF0YS5nZXRSb3dzKCkgYXMgU2hhcmVEYXRhUm93W10pIHx8IFtdO1xuXG4gICAgY29uc3QgYWxyZWFkeURpc3BsYXllZFBhcmVudEZvbGRlciA9IGN1cnJlbnRGb2xkZXJzRGlzcGxheWVkLmZpbmQoKHJvdykgPT4gcm93Lm5vZGUuZW50cnkuaXNGb2xkZXIgJiYgcm93Lm5vZGUuZW50cnkubmFtZSA9PT0gcGFyZW50TmFtZSk7XG5cbiAgICBpZiAoYWxyZWFkeURpc3BsYXllZFBhcmVudEZvbGRlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnJlbG9hZCh0aGlzLnNlbGVjdGVkTm9kZSk7XG4gIH1cblxuICBvbkNvbnRlbnRDb3BpZWQobm9kZXM6IE5vZGVFbnRyeVtdKSB7XG4gICAgY29uc3QgbmV3Tm9kZSA9IG5vZGVzLmZpbmQoKG5vZGUpID0+IG5vZGU/LmVudHJ5Py5wYXJlbnRJZCA9PT0gdGhpcy5nZXRQYXJlbnROb2RlSWQoKSk7XG4gICAgaWYgKG5ld05vZGUpIHtcbiAgICAgIHRoaXMucmVsb2FkKHRoaXMuc2VsZWN0ZWROb2RlKTtcbiAgICB9XG4gIH1cblxuICAvLyB0b2RvOiByZXZpZXcgdGhpcyBhcHByb2FjaCBvbmNlIDUuMi4zIGlzIG91dFxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZUN1cnJlbnROb2RlKG5vZGU6IE5vZGUpIHtcbiAgICB0aGlzLm5vZGVQYXRoID0gbnVsbDtcblxuICAgIGlmIChub2RlPy5wYXRoPy5lbGVtZW50cykge1xuICAgICAgY29uc3QgZWxlbWVudHMgPSBub2RlLnBhdGguZWxlbWVudHM7XG5cbiAgICAgIHRoaXMubm9kZVBhdGggPSBlbGVtZW50cy5tYXAoKHBhdGhFbGVtZW50KSA9PiB7XG4gICAgICAgIHJldHVybiB7IC4uLnBhdGhFbGVtZW50IH07XG4gICAgICB9KTtcblxuICAgICAgaWYgKGVsZW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgaWYgKGVsZW1lbnRzWzFdLm5hbWUgPT09ICdVc2VyIEhvbWVzJykge1xuICAgICAgICAgIGlmICghdGhpcy5pc0FkbWluKSB7XG4gICAgICAgICAgICBlbGVtZW50cy5zcGxpY2UoMCwgMik7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGVsZW1lbnRzWzFdLm5hbWUgPT09ICdTaXRlcycpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLm5vcm1hbGl6ZVNpdGVQYXRoKG5vZGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5ub2RlID0gbm9kZTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBTZXRDdXJyZW50Rm9sZGVyQWN0aW9uKG5vZGUpKTtcbiAgfVxuXG4gIC8vIHRvZG86IHJldmlldyB0aGlzIGFwcHJvYWNoIG9uY2UgNS4yLjMgaXMgb3V0XG4gIHByaXZhdGUgYXN5bmMgbm9ybWFsaXplU2l0ZVBhdGgobm9kZTogTm9kZSkge1xuICAgIGNvbnN0IGVsZW1lbnRzID0gbm9kZS5wYXRoLmVsZW1lbnRzO1xuXG4gICAgLy8gcmVtb3ZlICdTaXRlcydcbiAgICBlbGVtZW50cy5zcGxpY2UoMSwgMSk7XG5cbiAgICBpZiAodGhpcy5pc1NpdGVDb250YWluZXIobm9kZSkpIHtcbiAgICAgIC8vIHJlbmFtZSAnZG9jdW1lbnRMaWJyYXJ5JyBlbnRyeSB0byB0aGUgdGFyZ2V0IHNpdGUgZGlzcGxheSBuYW1lXG4gICAgICAvLyBjbGlja2luZyBvbiB0aGUgYnJlYWRjcnVtYiBlbnRyeSBsb2FkcyB0aGUgc2l0ZSBjb250ZW50XG4gICAgICBjb25zdCBwYXJlbnROb2RlID0gYXdhaXQgdGhpcy5jb250ZW50QXBpLmdldE5vZGVJbmZvKG5vZGUucGFyZW50SWQpLnRvUHJvbWlzZSgpO1xuICAgICAgbm9kZS5uYW1lID0gcGFyZW50Tm9kZS5wcm9wZXJ0aWVzWydjbTp0aXRsZSddIHx8IHBhcmVudE5vZGUubmFtZTtcblxuICAgICAgLy8gcmVtb3ZlIHRoZSBzaXRlIGVudHJ5XG4gICAgICBlbGVtZW50cy5zcGxpY2UoMSwgMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHJlbW92ZSAnZG9jdW1lbnRMaWJyYXJ5JyBpbiB0aGUgbWlkZGxlIG9mIHRoZSBwYXRoXG4gICAgICBjb25zdCBkb2NMaWIgPSBlbGVtZW50cy5maW5kSW5kZXgoKGVsKSA9PiBlbC5uYW1lID09PSAnZG9jdW1lbnRMaWJyYXJ5Jyk7XG4gICAgICBpZiAoZG9jTGliID4gLTEpIHtcbiAgICAgICAgY29uc3Qgc2l0ZUZyYWdtZW50ID0gZWxlbWVudHNbZG9jTGliIC0gMV07XG4gICAgICAgIGNvbnN0IHNpdGVOb2RlID0gYXdhaXQgdGhpcy5jb250ZW50QXBpLmdldE5vZGVJbmZvKHNpdGVGcmFnbWVudC5pZCkudG9Qcm9taXNlKCk7XG5cbiAgICAgICAgLy8gYXBwbHkgU2l0ZSBOYW1lIHRvIHRoZSBwYXJlbnQgZnJhZ21lbnRcbiAgICAgICAgc2l0ZUZyYWdtZW50Lm5hbWUgPSBzaXRlTm9kZS5wcm9wZXJ0aWVzWydjbTp0aXRsZSddIHx8IHNpdGVOb2RlLm5hbWU7XG4gICAgICAgIGVsZW1lbnRzLnNwbGljZShkb2NMaWIsIDEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlzU2l0ZUNvbnRhaW5lcihub2RlOiBOb2RlKTogYm9vbGVhbiB7XG4gICAgaWYgKG5vZGU/LmFzcGVjdE5hbWVzPy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gbm9kZS5hc3BlY3ROYW1lcy5pbmRleE9mKCdzdDpzaXRlQ29udGFpbmVyJykgPj0gMDtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaXNSb290Tm9kZShub2RlSWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLm5vZGU/LnBhdGg/LmVsZW1lbnRzPy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5ub2RlLnBhdGguZWxlbWVudHNbMF0uaWQgPT09IG5vZGVJZDtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgb25GaWx0ZXJTZWxlY3RlZChhY3RpdmVGaWx0ZXJzOiBGaWx0ZXJTZWFyY2hbXSkge1xuICAgIGlmIChhY3RpdmVGaWx0ZXJzLmxlbmd0aCkge1xuICAgICAgdGhpcy5zaG93SGVhZGVyID0gU2hvd0hlYWRlck1vZGUuQWx3YXlzO1xuICAgICAgdGhpcy5pc0ZpbHRlckhlYWRlckFjdGl2ZSA9IHRydWU7XG4gICAgICB0aGlzLm5hdmlnYXRlVG9GaWx0ZXIoYWN0aXZlRmlsdGVycyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZvaWQgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuJ10sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcbiAgICAgIHRoaXMuaXNGaWx0ZXJIZWFkZXJBY3RpdmUgPSBmYWxzZTtcbiAgICAgIHRoaXMuc2hvd0hlYWRlciA9IFNob3dIZWFkZXJNb2RlLkRhdGE7XG4gICAgICB0aGlzLm9uQWxsRmlsdGVyQ2xlYXJlZCgpO1xuICAgIH1cbiAgfVxuXG4gIG5hdmlnYXRlVG9GaWx0ZXIoYWN0aXZlRmlsdGVyczogRmlsdGVyU2VhcmNoW10pIHtcbiAgICBjb25zdCBvYmplY3RGcm9tTWFwID0ge307XG4gICAgYWN0aXZlRmlsdGVycy5mb3JFYWNoKChmaWx0ZXI6IEZpbHRlclNlYXJjaCkgPT4ge1xuICAgICAgbGV0IHBhcmFtVmFsdWU7XG4gICAgICBpZiAoZmlsdGVyPy52YWx1ZT8uZnJvbSAmJiBmaWx0ZXI/LnZhbHVlPy50bykge1xuICAgICAgICBwYXJhbVZhbHVlID0gYCR7ZmlsdGVyLnZhbHVlLmZyb219fHwke2ZpbHRlci52YWx1ZS50b31gO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFyYW1WYWx1ZSA9IGZpbHRlci52YWx1ZTtcbiAgICAgIH1cbiAgICAgIG9iamVjdEZyb21NYXBbZmlsdGVyLmtleV0gPSBwYXJhbVZhbHVlO1xuICAgIH0pO1xuXG4gICAgdm9pZCB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLCBxdWVyeVBhcmFtczogb2JqZWN0RnJvbU1hcCB9KTtcbiAgfVxuXG4gIG9uRXJyb3IoKSB7XG4gICAgdGhpcy5pc1ZhbGlkUGF0aCA9IGZhbHNlO1xuICB9XG59XG4iLCI8YWNhLXBhZ2UtbGF5b3V0IFtoYXNFcnJvcl09XCIhaXNWYWxpZFBhdGhcIj5cbiAgPGRpdiBjbGFzcz1cImFjYS1wYWdlLWxheW91dC1oZWFkZXJcIj5cbiAgICA8YWNhLXNlYXJjaC1haS1pbnB1dC1jb250YWluZXJcbiAgICAgICpuZ0lmPVwic2VhcmNoQWlJbnB1dFN0YXRlLmFjdGl2ZTsgZWxzZSBoZWFkZXJcIlxuICAgICAgW2FnZW50SWRdPVwic2VhcmNoQWlJbnB1dFN0YXRlLnNlbGVjdGVkQWdlbnRJZFwiPlxuICAgIDwvYWNhLXNlYXJjaC1haS1pbnB1dC1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNoZWFkZXI+XG4gICAgICA8ZGl2IGNsYXNzPVwiYWNhLWhlYWRlci1jb250YWluZXJcIj5cbiAgICAgICAgPGFkZi1icmVhZGNydW1iXG4gICAgICAgICAgW3Jvb3RdPVwidGl0bGVcIlxuICAgICAgICAgIFtmb2xkZXJOb2RlXT1cIm5vZGVcIlxuICAgICAgICAgIFtzZWxlY3RlZFJvd0l0ZW1zQ291bnRdPVwic2VsZWN0ZWRSb3dJdGVtc0NvdW50XCIgW21heEl0ZW1zXT1cImlzU21hbGxTY3JlZW4gPyAxIDogMFwiXG4gICAgICAgICAgKG5hdmlnYXRlKT1cIm9uQnJlYWRjcnVtYk5hdmlnYXRlKCRldmVudClcIj5cbiAgICAgICAgPC9hZGYtYnJlYWRjcnVtYj5cbiAgICAgICAgPGFjYS10b29sYmFyIFtpdGVtc109XCJhY3Rpb25zXCI+PC9hY2EtdG9vbGJhcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJhY2EtcGFnZS1sYXlvdXQtZXJyb3JcIj5cbiAgICA8YWNhLWdlbmVyaWMtZXJyb3I+PC9hY2EtZ2VuZXJpYy1lcnJvcj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImFjYS1wYWdlLWxheW91dC1jb250ZW50XCI+XG4gICAgPGRpdiBjbGFzcz1cImFjYS1tYWluLWNvbnRlbnRcIiAqbmdJZj1cIiEoc2hvd0xvYWRlciQgfCBhc3luYylcIj5cbiAgICAgIDxhZGYtdXBsb2FkLWRyYWctYXJlYSBbcm9vdEZvbGRlcklkXT1cIm5vZGU/LmlkXCIgW2Rpc2FibGVkXT1cIiFjYW5VcGxvYWRcIiAodXBkYXRlRmlsZVZlcnNpb24pPVwib25VcGxvYWROZXdWZXJzaW9uKCRldmVudClcIj5cbiAgICAgICAgPGFkZi1kb2N1bWVudC1saXN0XG4gICAgICAgICAgI2RvY3VtZW50TGlzdFxuICAgICAgICAgIGFjYURvY3VtZW50TGlzdFxuICAgICAgICAgIGFjYUNvbnRleHRBY3Rpb25zXG4gICAgICAgICAgW3NlbGVjdGlvbk1vZGVdPVwiJ211bHRpcGxlJ1wiXG4gICAgICAgICAgW211bHRpc2VsZWN0XT1cInRydWVcIlxuICAgICAgICAgIFtjdXJyZW50Rm9sZGVySWRdPVwibm9kZT8uaWRcIlxuICAgICAgICAgIFtsb2FkaW5nXT1cInRydWVcIlxuICAgICAgICAgIFtzaG93SGVhZGVyXT1cInNob3dIZWFkZXJcIlxuICAgICAgICAgIFtub2RlXT1cIm5vZGVSZXN1bHRcIlxuICAgICAgICAgIFthbGxvd0Ryb3BGaWxlc109XCJ0cnVlXCJcbiAgICAgICAgICBbZGlzcGxheUNoZWNrYm94ZXNPbkhvdmVyXT1cInRydWVcIlxuICAgICAgICAgIFtuYXZpZ2F0ZV09XCJmYWxzZVwiXG4gICAgICAgICAgW3NvcnRpbmddPVwiWyduYW1lJywgJ2FzYyddXCJcbiAgICAgICAgICBbaW1hZ2VSZXNvbHZlcl09XCJpbWFnZVJlc29sdmVyXCJcbiAgICAgICAgICBbaGVhZGVyRmlsdGVyc109XCJ0cnVlXCJcbiAgICAgICAgICBbZmlsdGVyVmFsdWVdPVwicXVlcnlQYXJhbXNcIlxuICAgICAgICAgIFtpc1Jlc2l6aW5nRW5hYmxlZF09XCJ0cnVlXCJcbiAgICAgICAgICBbYmx1ck9uUmVzaXplXT1cImZhbHNlXCJcbiAgICAgICAgICAobm9kZS1kYmxjbGljayk9XCJoYW5kbGVOb2RlQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgKG5hbWUtY2xpY2spPVwiaGFuZGxlTm9kZUNsaWNrKCRldmVudClcIlxuICAgICAgICAgIChzZWxlY3RlZEl0ZW1zQ291bnRDaGFuZ2VkKT1cIm9uU2VsZWN0ZWRJdGVtc0NvdW50Q2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgICAoZmlsdGVyU2VsZWN0aW9uKT1cIm9uRmlsdGVyU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgKGVycm9yKT1cIm9uRXJyb3IoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGF0YS1jb2x1bW5zPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHVtbnM7IHRyYWNrQnk6IHRyYWNrQnlDb2x1bW5JZFwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnRlbXBsYXRlICYmICEoY29sdW1uLmRlc2t0b3BPbmx5ICYmIGlzU21hbGxTY3JlZW4pXCI+XG4gICAgICAgICAgICAgICAgPGRhdGEtY29sdW1uXG4gICAgICAgICAgICAgICAgICBbaWRdPVwiY29sdW1uLmlkXCJcbiAgICAgICAgICAgICAgICAgIFtrZXldPVwiY29sdW1uLmtleVwiXG4gICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiY29sdW1uLnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgIFt0eXBlXT1cImNvbHVtbi50eXBlXCJcbiAgICAgICAgICAgICAgICAgIFtmb3JtYXRdPVwiY29sdW1uLmZvcm1hdFwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY29sdW1uLmNsYXNzXCJcbiAgICAgICAgICAgICAgICAgIFtzb3J0YWJsZV09XCJjb2x1bW4uc29ydGFibGVcIlxuICAgICAgICAgICAgICAgICAgW3NvcnRpbmdLZXldPVwiY29sdW1uLnNvcnRpbmdLZXkgfHwgY29sdW1uLmtleVwiXG4gICAgICAgICAgICAgICAgICBbaXNIaWRkZW5dPVwiY29sdW1uLmlzSGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgIFtkcmFnZ2FibGVdPVwiY29sdW1uLmRyYWdnYWJsZVwiXG4gICAgICAgICAgICAgICAgICBbcmVzaXphYmxlXT1cImNvbHVtbi5yZXNpemFibGVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtY29udGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPGFkZi1keW5hbWljLWNvbHVtbiBbaWRdPVwiY29sdW1uLnRlbXBsYXRlXCIgW2NvbnRleHRdPVwiY29udGV4dFwiPjwvYWRmLWR5bmFtaWMtY29sdW1uPlxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L2RhdGEtY29sdW1uPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNvbHVtbi50ZW1wbGF0ZSAmJiAhKGNvbHVtbi5kZXNrdG9wT25seSAmJiBpc1NtYWxsU2NyZWVuKVwiPlxuICAgICAgICAgICAgICAgIDxkYXRhLWNvbHVtblxuICAgICAgICAgICAgICAgICAgW2lkXT1cImNvbHVtbi5pZFwiXG4gICAgICAgICAgICAgICAgICBba2V5XT1cImNvbHVtbi5rZXlcIlxuICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cImNvbHVtbi50aXRsZVwiXG4gICAgICAgICAgICAgICAgICBbdHlwZV09XCJjb2x1bW4udHlwZVwiXG4gICAgICAgICAgICAgICAgICBbZm9ybWF0XT1cImNvbHVtbi5mb3JtYXRcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNvbHVtbi5jbGFzc1wiXG4gICAgICAgICAgICAgICAgICBbc29ydGFibGVdPVwiY29sdW1uLnNvcnRhYmxlXCJcbiAgICAgICAgICAgICAgICAgIFtzb3J0aW5nS2V5XT1cImNvbHVtbi5zb3J0aW5nS2V5IHx8IGNvbHVtbi5rZXlcIlxuICAgICAgICAgICAgICAgICAgW2lzSGlkZGVuXT1cImNvbHVtbi5pc0hpZGRlblwiXG4gICAgICAgICAgICAgICAgICBbZHJhZ2dhYmxlXT1cImNvbHVtbi5kcmFnZ2FibGVcIlxuICAgICAgICAgICAgICAgICAgW3Jlc2l6YWJsZV09XCJjb2x1bW4ucmVzaXphYmxlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9kYXRhLWNvbHVtbj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2RhdGEtY29sdW1ucz5cblxuICAgICAgICAgIDxhZGYtY3VzdG9tLWVtcHR5LWNvbnRlbnQtdGVtcGxhdGUgKm5nSWY9XCJpc0ZpbHRlckhlYWRlckFjdGl2ZVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVtcHR5LXNlYXJjaF9fYmxvY2tcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIj5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImVtcHR5LXNlYXJjaF9fdGV4dFwiPlxuICAgICAgICAgICAgICAgICAge3sgJ0FQUC5CUk9XU0UuU0VBUkNILk5PX0ZJTFRFUl9SRVNVTFRTJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2FkZi1jdXN0b20tZW1wdHktY29udGVudC10ZW1wbGF0ZT5cbiAgICAgICAgPC9hZGYtZG9jdW1lbnQtbGlzdD5cblxuICAgICAgICA8YWRmLXBhZ2luYXRpb24gYWNhUGFnaW5hdGlvbiBbdGFyZ2V0XT1cImRvY3VtZW50TGlzdFwiPiA8L2FkZi1wYWdpbmF0aW9uPlxuICAgICAgPC9hZGYtdXBsb2FkLWRyYWctYXJlYT5cbiAgICA8L2Rpdj5cblxuICAgIDxtYXQtcHJvZ3Jlc3Mtc3Bpbm5lciAqbmdJZj1cInNob3dMb2FkZXIkIHwgYXN5bmNcIlxuICAgICAgaWQ9XCJhZGYtZG9jdW1lbnQtbGlzdC1sb2FkaW5nXCJcbiAgICAgIGNsYXNzPVwiYWRmLWRvY3VtZW50LWxpc3QtbG9hZGluZy1tYXJnaW5cIlxuICAgICAgW2NvbG9yXT1cIidwcmltYXJ5J1wiXG4gICAgICBbbW9kZV09XCInaW5kZXRlcm1pbmF0ZSdcIj5cbiAgICA8L21hdC1wcm9ncmVzcy1zcGlubmVyPlxuXG4gICAgPGRpdiBjbGFzcz1cImFjYS1zaWRlYmFyXCIgKm5nSWY9XCJpbmZvRHJhd2VyT3BlbmVkJCB8IGFzeW5jXCI+XG4gICAgICA8YWNhLWluZm8tZHJhd2VyIFtub2RlXT1cInNlbGVjdGlvbi5sYXN0XCI+PC9hY2EtaW5mby1kcmF3ZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9hY2EtcGFnZS1sYXlvdXQ+XG4iXX0=