@alfresco/aca-content 5.1.1 → 5.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (396) hide show
  1. package/assets/app.extensions.json +9 -0
  2. package/assets/i18n/ar.json +600 -599
  3. package/assets/i18n/cs.json +600 -599
  4. package/assets/i18n/da.json +600 -599
  5. package/assets/i18n/de.json +600 -599
  6. package/assets/i18n/en.json +40 -1
  7. package/assets/i18n/es.json +600 -599
  8. package/assets/i18n/fi.json +600 -599
  9. package/assets/i18n/fr.json +600 -599
  10. package/assets/i18n/it.json +600 -599
  11. package/assets/i18n/ja.json +600 -599
  12. package/assets/i18n/nb.json +600 -599
  13. package/assets/i18n/nl.json +600 -599
  14. package/assets/i18n/pl.json +600 -599
  15. package/assets/i18n/pt-BR.json +600 -599
  16. package/assets/i18n/ru.json +600 -599
  17. package/assets/i18n/sv.json +600 -599
  18. package/assets/i18n/zh-CN.json +600 -599
  19. package/esm2022/about/about.component.mjs +70 -0
  20. package/esm2022/about/aca-about.module.mjs +47 -0
  21. package/esm2022/folder-rules/folder-rules.module.mjs +116 -0
  22. package/esm2022/folder-rules/manage-rules/manage-rules.smart-component.mjs +280 -0
  23. package/esm2022/folder-rules/rule-details/actions/rule-action-list.ui-component.mjs +117 -0
  24. package/esm2022/folder-rules/rule-details/actions/rule-action.ui-component.mjs +359 -0
  25. package/esm2022/folder-rules/rule-details/conditions/rule-composite-condition.ui-component.mjs +171 -0
  26. package/esm2022/folder-rules/rule-details/conditions/rule-simple-condition.ui-component.mjs +237 -0
  27. package/esm2022/folder-rules/rule-details/edit-rule-dialog.ui-component.mjs +80 -0
  28. package/esm2022/folder-rules/rule-details/options/rule-options.ui-component.mjs +129 -0
  29. package/esm2022/folder-rules/rule-details/rule-details.ui-component.mjs +192 -0
  30. package/esm2022/folder-rules/rule-details/triggers/rule-triggers.ui-component.mjs +87 -0
  31. package/esm2022/folder-rules/rule-details/validators/rule-actions.validator.mjs +36 -0
  32. package/esm2022/folder-rules/rule-list/rule-list/rule-list.ui-component.mjs +166 -0
  33. package/esm2022/folder-rules/rule-list/rule-list-grouping/rule-list-grouping.ui-component.mjs +80 -0
  34. package/esm2022/folder-rules/rule-list/rule-list-item/rule-list-item.ui-component.mjs +59 -0
  35. package/esm2022/folder-rules/rule-set-picker/rule-set-picker.smart-component.mjs +125 -0
  36. package/esm2022/folder-rules/services/actions.service.mjs +117 -0
  37. package/esm2022/folder-rules/services/folder-rule-sets.service.mjs +230 -0
  38. package/esm2022/folder-rules/services/folder-rules.service.mjs +195 -0
  39. package/esm2022/lib/aca-content.module.mjs +303 -0
  40. package/esm2022/lib/aca-content.routes.mjs +369 -0
  41. package/esm2022/lib/components/bulk-actions-dropdown/bulk-actions-dropdown.component.mjs +82 -0
  42. package/{esm2020 → esm2022}/lib/components/common/language-picker/language-picker.component.mjs +9 -8
  43. package/esm2022/lib/components/common/location-link/location-link.component.mjs +182 -0
  44. package/{esm2020 → esm2022}/lib/components/common/logout/logout.component.mjs +8 -6
  45. package/esm2022/lib/components/common/toggle-shared/toggle-shared.component.mjs +81 -0
  46. package/esm2022/lib/components/common/user-info/user-info.component.mjs +46 -0
  47. package/esm2022/lib/components/context-menu/base-context-menu.directive.mjs +77 -0
  48. package/esm2022/lib/components/context-menu/context-menu-item.component.mjs +65 -0
  49. package/esm2022/lib/components/context-menu/context-menu-outside-event.directive.mjs +62 -0
  50. package/esm2022/lib/components/context-menu/context-menu-overlay.mjs +33 -0
  51. package/esm2022/lib/components/context-menu/context-menu.component.mjs +84 -0
  52. package/esm2022/lib/components/context-menu/context-menu.service.mjs +127 -0
  53. package/esm2022/lib/components/context-menu/custom-context-menu-actions.token.mjs +26 -0
  54. package/esm2022/lib/components/context-menu/custom-context-menu.component.mjs +79 -0
  55. package/esm2022/lib/components/details/details.component.mjs +154 -0
  56. package/esm2022/lib/components/dl-custom-components/datatable-cell-badges/datatable-cell-badges.component.mjs +75 -0
  57. package/esm2022/lib/components/dl-custom-components/name-column/name-column.component.mjs +106 -0
  58. package/esm2022/lib/components/dl-custom-components/tags-column/tags-column.component.mjs +52 -0
  59. package/esm2022/lib/components/dl-custom-components/thumbnail-column/thumbnail-column.component.mjs +77 -0
  60. package/esm2022/lib/components/favorite-libraries/favorite-libraries.component.mjs +126 -0
  61. package/esm2022/lib/components/favorites/favorites.component.mjs +105 -0
  62. package/esm2022/lib/components/files/files.component.mjs +336 -0
  63. package/esm2022/lib/components/home/home.component.mjs +46 -0
  64. package/esm2022/lib/components/info-drawer/comments-tab/comments-tab.component.mjs +62 -0
  65. package/esm2022/lib/components/info-drawer/info.drawer.module.mjs +74 -0
  66. package/esm2022/lib/components/info-drawer/library-metadata-tab/library-metadata-form.component.mjs +213 -0
  67. package/esm2022/lib/components/info-drawer/library-metadata-tab/library-metadata-tab.component.mjs +47 -0
  68. package/esm2022/lib/components/info-drawer/metadata-tab/metadata-tab.component.mjs +145 -0
  69. package/esm2022/lib/components/info-drawer/versions-tab/versions-tab.component.mjs +107 -0
  70. package/esm2022/lib/components/knowledge-retrieval/search-ai/agents-button/agents-button.component.mjs +135 -0
  71. package/esm2022/lib/components/knowledge-retrieval/search-ai/search-ai-input/search-ai-input.component.mjs +181 -0
  72. package/esm2022/lib/components/knowledge-retrieval/search-ai/search-ai-input-container/search-ai-input-container.component.mjs +77 -0
  73. package/esm2022/lib/components/knowledge-retrieval/search-ai/search-ai-results/search-ai-results.component.mjs +210 -0
  74. package/esm2022/lib/components/libraries/libraries.component.mjs +81 -0
  75. package/esm2022/lib/components/recent-files/recent-files.component.mjs +80 -0
  76. package/esm2022/lib/components/search/search-action-menu/search-action-menu.component.mjs +66 -0
  77. package/esm2022/lib/components/search/search-input/search-input.component.mjs +297 -0
  78. package/esm2022/lib/components/search/search-input-control/search-input-control.component.mjs +94 -0
  79. package/esm2022/lib/components/search/search-libraries-results/search-libraries-query-builder.service.mjs +93 -0
  80. package/esm2022/lib/components/search/search-libraries-results/search-libraries-results.component.mjs +155 -0
  81. package/esm2022/lib/components/search/search-navigation.service.mjs +62 -0
  82. package/esm2022/lib/components/search/search-results/search-results.component.mjs +279 -0
  83. package/esm2022/lib/components/search/search-results-row/search-results-row.component.mjs +149 -0
  84. package/esm2022/lib/components/search/search-save/dialog/delete/saved-search-delete-dialog.component.mjs +82 -0
  85. package/esm2022/lib/components/search/search-save/dialog/edit/saved-search-edit-dialog.component.mjs +116 -0
  86. package/esm2022/lib/components/search/search-save/dialog/save-search-dialog.component.mjs +125 -0
  87. package/esm2022/lib/components/search/search-save/dialog/saved-search-form.interface.mjs +25 -0
  88. package/esm2022/lib/components/search/search-save/dialog/unique-search-name-validator.mjs +45 -0
  89. package/esm2022/lib/components/search/search-save/directive/save-search.directive.mjs +64 -0
  90. package/esm2022/lib/components/search/search-save/list/saved-searches-list-ui.service.mjs +51 -0
  91. package/esm2022/lib/components/search/search-save/list/smart-list/saved-searches-list-schema.mjs +44 -0
  92. package/esm2022/lib/components/search/search-save/list/smart-list/saved-searches-smart-list.component.mjs +50 -0
  93. package/esm2022/lib/components/search/search-save/list/ui-list/saved-searches-list.ui-component.mjs +153 -0
  94. package/esm2022/lib/components/search/search-save/sidenav/save-search-sidenav.component.mjs +94 -0
  95. package/esm2022/lib/components/shared-files/shared-files.component.mjs +85 -0
  96. package/esm2022/lib/components/shared-link-view/shared-link-view.component.mjs +89 -0
  97. package/esm2022/lib/components/sidenav/components/button-menu.component.mjs +66 -0
  98. package/esm2022/lib/components/sidenav/components/expand-menu.component.mjs +73 -0
  99. package/esm2022/lib/components/sidenav/components/sidenav-header.component.mjs +65 -0
  100. package/esm2022/lib/components/sidenav/directives/action.directive.mjs +86 -0
  101. package/esm2022/lib/components/sidenav/directives/active-link.directive.mjs +100 -0
  102. package/esm2022/lib/components/sidenav/directives/expansion-panel.directive.mjs +107 -0
  103. package/esm2022/lib/components/sidenav/directives/menu-panel.directive.mjs +103 -0
  104. package/esm2022/lib/components/sidenav/sidenav.component.mjs +101 -0
  105. package/esm2022/lib/components/sidenav/user-menu/user-menu.component.mjs +57 -0
  106. package/esm2022/lib/components/toolbar/toggle-edit-offline/toggle-edit-offline.component.mjs +143 -0
  107. package/esm2022/lib/components/toolbar/toggle-favorite/toggle-favorite.component.mjs +91 -0
  108. package/esm2022/lib/components/toolbar/toggle-favorite-library/toggle-favorite-library.component.mjs +112 -0
  109. package/esm2022/lib/components/toolbar/toggle-info-drawer/toggle-info-drawer.component.mjs +77 -0
  110. package/esm2022/lib/components/toolbar/toggle-join-library/toggle-join-library-button.component.mjs +107 -0
  111. package/{esm2020 → esm2022}/lib/components/toolbar/toggle-join-library/toggle-join-library-menu.component.mjs +7 -6
  112. package/esm2022/lib/components/toolbar/view-node/view-node.component.mjs +128 -0
  113. package/esm2022/lib/components/trashcan/trashcan.component.mjs +66 -0
  114. package/esm2022/lib/components/upload-files-dialog/upload-files-dialog.component.mjs +55 -0
  115. package/esm2022/lib/components/view-profile/view-profile.component.mjs +200 -0
  116. package/esm2022/lib/dialogs/node-template/create-from-template.dialog.mjs +127 -0
  117. package/esm2022/lib/directives/document-list.directive.mjs +207 -0
  118. package/esm2022/lib/extensions/core.extensions.module.mjs +56 -0
  119. package/esm2022/lib/services/content-management.service.mjs +892 -0
  120. package/esm2022/lib/services/content-url.service.mjs +74 -0
  121. package/esm2022/lib/services/modal-ai.service.mjs +65 -0
  122. package/esm2022/lib/services/node-actions.service.mjs +609 -0
  123. package/esm2022/lib/services/node-template.service.mjs +145 -0
  124. package/esm2022/lib/services/search-ai-navigation.service.mjs +63 -0
  125. package/esm2022/lib/store/app-store.module.mjs +101 -0
  126. package/esm2022/lib/store/effects/app.effects.mjs +46 -0
  127. package/esm2022/lib/store/effects/contextmenu.effects.mjs +65 -0
  128. package/esm2022/lib/store/effects/download.effects.mjs +153 -0
  129. package/esm2022/lib/store/effects/favorite.effects.mjs +72 -0
  130. package/esm2022/lib/store/effects/library.effects.mjs +108 -0
  131. package/esm2022/lib/store/effects/node.effects.mjs +318 -0
  132. package/esm2022/lib/store/effects/search-ai.effects.mjs +54 -0
  133. package/esm2022/lib/store/effects/search.effects.mjs +52 -0
  134. package/esm2022/lib/store/effects/template.effects.mjs +116 -0
  135. package/esm2022/lib/store/effects/upload.effects.mjs +166 -0
  136. package/esm2022/lib/store/effects/viewer.effects.mjs +169 -0
  137. package/esm2022/lib/utils/aca-search-utils.mjs +129 -0
  138. package/esm2022/ms-office/actions/aos.actions.mjs +32 -0
  139. package/esm2022/ms-office/aos-extension.module.mjs +53 -0
  140. package/esm2022/ms-office/aos-extension.service.mjs +136 -0
  141. package/esm2022/ms-office/effects/aos.effects.mjs +45 -0
  142. package/esm2022/public-api.mjs +33 -0
  143. package/esm2022/viewer/lib/components/preview/preview.component.mjs +246 -0
  144. package/esm2022/viewer/lib/components/viewer/viewer.component.mjs +261 -0
  145. package/esm2022/viewer/lib/services/viewer.service.mjs +229 -0
  146. package/esm2022/viewer/lib/viewer.module.mjs +53 -0
  147. package/{fesm2015 → fesm2022}/alfresco-aca-content-about.mjs +17 -19
  148. package/fesm2022/alfresco-aca-content-about.mjs.map +1 -0
  149. package/{fesm2020 → fesm2022}/alfresco-aca-content-folder-rules.mjs +357 -316
  150. package/fesm2022/alfresco-aca-content-folder-rules.mjs.map +1 -0
  151. package/{fesm2020 → fesm2022}/alfresco-aca-content-ms-office.mjs +28 -26
  152. package/fesm2022/alfresco-aca-content-ms-office.mjs.map +1 -0
  153. package/{fesm2020 → fesm2022}/alfresco-aca-content-viewer.mjs +95 -64
  154. package/fesm2022/alfresco-aca-content-viewer.mjs.map +1 -0
  155. package/fesm2022/alfresco-aca-content.mjs +11091 -0
  156. package/fesm2022/alfresco-aca-content.mjs.map +1 -0
  157. package/folder-rules/rule-details/actions/rule-action-list.ui-component.d.ts +1 -1
  158. package/folder-rules/rule-details/actions/rule-action.ui-component.d.ts +1 -1
  159. package/folder-rules/rule-details/conditions/rule-composite-condition.ui-component.d.ts +1 -1
  160. package/folder-rules/rule-details/conditions/rule-simple-condition.ui-component.d.ts +1 -1
  161. package/folder-rules/rule-details/options/rule-options.ui-component.d.ts +1 -1
  162. package/folder-rules/rule-details/rule-details.ui-component.d.ts +1 -1
  163. package/folder-rules/rule-list/rule-list/rule-list.ui-component.d.ts +1 -1
  164. package/folder-rules/rule-list/rule-list-grouping/rule-list-grouping.ui-component.d.ts +1 -1
  165. package/folder-rules/rule-list/rule-list-item/rule-list-item.ui-component.d.ts +1 -1
  166. package/folder-rules/services/folder-rule-sets.service.d.ts +4 -4
  167. package/folder-rules/services/folder-rules.service.d.ts +1 -1
  168. package/lib/components/bulk-actions-dropdown/bulk-actions-dropdown.component.d.ts +5 -10
  169. package/lib/components/common/location-link/location-link.component.d.ts +1 -1
  170. package/lib/components/common/toggle-shared/toggle-shared.component.d.ts +1 -1
  171. package/lib/components/context-menu/base-context-menu.directive.d.ts +20 -0
  172. package/lib/components/context-menu/context-menu-item.component.d.ts +1 -1
  173. package/lib/components/context-menu/context-menu-outside-event.directive.d.ts +1 -1
  174. package/lib/components/context-menu/context-menu.component.d.ts +4 -15
  175. package/lib/components/context-menu/context-menu.service.d.ts +4 -1
  176. package/lib/components/{knowledge-retrieval/search-ai/search-ai-utils.d.ts → context-menu/custom-context-menu-actions.token.d.ts} +2 -2
  177. package/lib/components/context-menu/custom-context-menu.component.d.ts +36 -0
  178. package/lib/components/details/details.component.d.ts +1 -1
  179. package/lib/components/dl-custom-components/datatable-cell-badges/datatable-cell-badges.component.d.ts +1 -1
  180. package/lib/components/dl-custom-components/tags-column/tags-column.component.d.ts +1 -1
  181. package/lib/components/dl-custom-components/thumbnail-column/thumbnail-column.component.d.ts +1 -1
  182. package/lib/components/info-drawer/comments-tab/comments-tab.component.d.ts +1 -1
  183. package/lib/components/info-drawer/library-metadata-tab/library-metadata-form.component.d.ts +1 -1
  184. package/lib/components/info-drawer/library-metadata-tab/library-metadata-tab.component.d.ts +1 -1
  185. package/lib/components/info-drawer/metadata-tab/metadata-tab.component.d.ts +1 -1
  186. package/lib/components/info-drawer/versions-tab/versions-tab.component.d.ts +1 -1
  187. package/lib/components/knowledge-retrieval/search-ai/agents-button/agents-button.component.d.ts +1 -2
  188. package/lib/components/knowledge-retrieval/search-ai/search-ai-input/search-ai-input.component.d.ts +4 -5
  189. package/lib/components/knowledge-retrieval/search-ai/search-ai-input-container/search-ai-input-container.component.d.ts +8 -8
  190. package/lib/components/knowledge-retrieval/search-ai/search-ai-results/search-ai-results.component.d.ts +2 -3
  191. package/lib/components/search/search-input/search-input.component.d.ts +12 -14
  192. package/lib/components/search/search-input-control/search-input-control.component.d.ts +1 -1
  193. package/lib/components/search/search-libraries-results/search-libraries-results.component.d.ts +0 -1
  194. package/lib/components/search/search-results/search-results.component.d.ts +15 -9
  195. package/lib/components/search/search-results-row/search-results-row.component.d.ts +1 -1
  196. package/lib/components/search/search-save/dialog/delete/saved-search-delete-dialog.component.d.ts +16 -0
  197. package/lib/components/search/search-save/dialog/edit/saved-search-edit-dialog.component.d.ts +22 -0
  198. package/lib/components/search/search-save/dialog/save-search-dialog.component.d.ts +23 -0
  199. package/lib/components/search/search-save/dialog/saved-search-form.interface.d.ts +28 -0
  200. package/lib/components/search/search-save/dialog/unique-search-name-validator.d.ts +34 -0
  201. package/lib/components/search/search-save/directive/save-search.directive.d.ts +13 -0
  202. package/lib/components/search/search-save/list/saved-searches-list-ui.service.d.ts +9 -0
  203. package/lib/components/search/search-save/list/smart-list/saved-searches-list-schema.d.ts +33 -0
  204. package/lib/components/search/search-save/list/smart-list/saved-searches-smart-list.component.d.ts +13 -0
  205. package/lib/components/search/search-save/list/ui-list/saved-searches-list.ui-component.d.ts +66 -0
  206. package/lib/components/search/search-save/sidenav/save-search-sidenav.component.d.ts +44 -0
  207. package/lib/components/sidenav/components/button-menu.component.d.ts +1 -1
  208. package/lib/components/sidenav/components/expand-menu.component.d.ts +3 -2
  209. package/lib/components/sidenav/directives/action.directive.d.ts +28 -1
  210. package/lib/components/sidenav/directives/active-link.directive.d.ts +2 -2
  211. package/lib/components/sidenav/directives/expansion-panel.directive.d.ts +1 -1
  212. package/lib/components/sidenav/directives/menu-panel.directive.d.ts +1 -1
  213. package/lib/components/sidenav/sidenav.component.d.ts +4 -3
  214. package/lib/components/sidenav/user-menu/user-menu.component.d.ts +1 -1
  215. package/lib/components/toolbar/toggle-favorite/toggle-favorite.component.d.ts +1 -1
  216. package/lib/components/toolbar/view-node/view-node.component.d.ts +1 -1
  217. package/lib/services/search-ai-navigation.service.d.ts +4 -2
  218. package/lib/store/effects/app.effects.d.ts +2 -3
  219. package/lib/store/effects/contextmenu.effects.d.ts +3 -3
  220. package/lib/store/effects/download.effects.d.ts +0 -30
  221. package/lib/store/effects/favorite.effects.d.ts +0 -28
  222. package/lib/store/effects/library.effects.d.ts +2 -7
  223. package/lib/store/effects/node.effects.d.ts +7 -38
  224. package/lib/store/effects/search-ai.effects.d.ts +0 -4
  225. package/lib/store/effects/search.effects.d.ts +3 -30
  226. package/lib/store/effects/template.effects.d.ts +5 -7
  227. package/lib/store/effects/upload.effects.d.ts +8 -32
  228. package/lib/store/effects/viewer.effects.d.ts +0 -29
  229. package/lib/utils/aca-search-utils.d.ts +67 -0
  230. package/ms-office/effects/aos.effects.d.ts +0 -3
  231. package/package.json +21 -35
  232. package/public-api.d.ts +1 -0
  233. package/ui/overrides/adf-pagination.theme.scss +0 -4
  234. package/ui/theme.scss +9 -4
  235. package/assets/images/agent-avatar-blue.png +0 -0
  236. package/assets/images/agent-avatar-gold.png +0 -0
  237. package/assets/images/agent-avatar-pink.png +0 -0
  238. package/esm2020/about/about.component.mjs +0 -71
  239. package/esm2020/about/aca-about.module.mjs +0 -46
  240. package/esm2020/folder-rules/folder-rules.module.mjs +0 -115
  241. package/esm2020/folder-rules/manage-rules/manage-rules.smart-component.mjs +0 -261
  242. package/esm2020/folder-rules/rule-details/actions/rule-action-list.ui-component.mjs +0 -117
  243. package/esm2020/folder-rules/rule-details/actions/rule-action.ui-component.mjs +0 -351
  244. package/esm2020/folder-rules/rule-details/conditions/rule-composite-condition.ui-component.mjs +0 -172
  245. package/esm2020/folder-rules/rule-details/conditions/rule-simple-condition.ui-component.mjs +0 -234
  246. package/esm2020/folder-rules/rule-details/edit-rule-dialog.ui-component.mjs +0 -74
  247. package/esm2020/folder-rules/rule-details/options/rule-options.ui-component.mjs +0 -129
  248. package/esm2020/folder-rules/rule-details/rule-details.ui-component.mjs +0 -185
  249. package/esm2020/folder-rules/rule-details/triggers/rule-triggers.ui-component.mjs +0 -88
  250. package/esm2020/folder-rules/rule-details/validators/rule-actions.validator.mjs +0 -37
  251. package/esm2020/folder-rules/rule-list/rule-list/rule-list.ui-component.mjs +0 -164
  252. package/esm2020/folder-rules/rule-list/rule-list-grouping/rule-list-grouping.ui-component.mjs +0 -81
  253. package/esm2020/folder-rules/rule-list/rule-list-item/rule-list-item.ui-component.mjs +0 -58
  254. package/esm2020/folder-rules/rule-set-picker/rule-set-picker.smart-component.mjs +0 -120
  255. package/esm2020/folder-rules/services/actions.service.mjs +0 -114
  256. package/esm2020/folder-rules/services/folder-rule-sets.service.mjs +0 -225
  257. package/esm2020/folder-rules/services/folder-rules.service.mjs +0 -193
  258. package/esm2020/lib/aca-content.module.mjs +0 -299
  259. package/esm2020/lib/aca-content.routes.mjs +0 -359
  260. package/esm2020/lib/components/bulk-actions-dropdown/bulk-actions-dropdown.component.mjs +0 -83
  261. package/esm2020/lib/components/common/location-link/location-link.component.mjs +0 -180
  262. package/esm2020/lib/components/common/toggle-shared/toggle-shared.component.mjs +0 -76
  263. package/esm2020/lib/components/common/user-info/user-info.component.mjs +0 -47
  264. package/esm2020/lib/components/context-menu/context-menu-item.component.mjs +0 -62
  265. package/esm2020/lib/components/context-menu/context-menu-outside-event.directive.mjs +0 -63
  266. package/esm2020/lib/components/context-menu/context-menu-overlay.mjs +0 -32
  267. package/esm2020/lib/components/context-menu/context-menu.component.mjs +0 -114
  268. package/esm2020/lib/components/context-menu/context-menu.service.mjs +0 -99
  269. package/esm2020/lib/components/details/details.component.mjs +0 -147
  270. package/esm2020/lib/components/dl-custom-components/datatable-cell-badges/datatable-cell-badges.component.mjs +0 -71
  271. package/esm2020/lib/components/dl-custom-components/name-column/name-column.component.mjs +0 -101
  272. package/esm2020/lib/components/dl-custom-components/tags-column/tags-column.component.mjs +0 -48
  273. package/esm2020/lib/components/dl-custom-components/thumbnail-column/thumbnail-column.component.mjs +0 -75
  274. package/esm2020/lib/components/favorite-libraries/favorite-libraries.component.mjs +0 -120
  275. package/esm2020/lib/components/favorites/favorites.component.mjs +0 -103
  276. package/esm2020/lib/components/files/files.component.mjs +0 -330
  277. package/esm2020/lib/components/home/home.component.mjs +0 -47
  278. package/esm2020/lib/components/info-drawer/comments-tab/comments-tab.component.mjs +0 -59
  279. package/esm2020/lib/components/info-drawer/info.drawer.module.mjs +0 -73
  280. package/esm2020/lib/components/info-drawer/library-metadata-tab/library-metadata-form.component.mjs +0 -206
  281. package/esm2020/lib/components/info-drawer/library-metadata-tab/library-metadata-tab.component.mjs +0 -45
  282. package/esm2020/lib/components/info-drawer/metadata-tab/metadata-tab.component.mjs +0 -134
  283. package/esm2020/lib/components/info-drawer/versions-tab/versions-tab.component.mjs +0 -95
  284. package/esm2020/lib/components/knowledge-retrieval/search-ai/agents-button/agents-button.component.mjs +0 -129
  285. package/esm2020/lib/components/knowledge-retrieval/search-ai/search-ai-input/search-ai-input.component.mjs +0 -171
  286. package/esm2020/lib/components/knowledge-retrieval/search-ai/search-ai-input-container/search-ai-input-container.component.mjs +0 -82
  287. package/esm2020/lib/components/knowledge-retrieval/search-ai/search-ai-results/search-ai-results.component.mjs +0 -199
  288. package/esm2020/lib/components/knowledge-retrieval/search-ai/search-ai-utils.mjs +0 -33
  289. package/esm2020/lib/components/libraries/libraries.component.mjs +0 -79
  290. package/esm2020/lib/components/recent-files/recent-files.component.mjs +0 -82
  291. package/esm2020/lib/components/search/search-action-menu/search-action-menu.component.mjs +0 -64
  292. package/esm2020/lib/components/search/search-input/search-input.component.mjs +0 -301
  293. package/esm2020/lib/components/search/search-input-control/search-input-control.component.mjs +0 -94
  294. package/esm2020/lib/components/search/search-libraries-results/search-libraries-query-builder.service.mjs +0 -90
  295. package/esm2020/lib/components/search/search-libraries-results/search-libraries-results.component.mjs +0 -153
  296. package/esm2020/lib/components/search/search-navigation.service.mjs +0 -60
  297. package/esm2020/lib/components/search/search-results/search-results.component.mjs +0 -255
  298. package/esm2020/lib/components/search/search-results-row/search-results-row.component.mjs +0 -142
  299. package/esm2020/lib/components/shared-files/shared-files.component.mjs +0 -83
  300. package/esm2020/lib/components/shared-link-view/shared-link-view.component.mjs +0 -82
  301. package/esm2020/lib/components/sidenav/components/button-menu.component.mjs +0 -62
  302. package/esm2020/lib/components/sidenav/components/expand-menu.component.mjs +0 -67
  303. package/esm2020/lib/components/sidenav/components/sidenav-header.component.mjs +0 -66
  304. package/esm2020/lib/components/sidenav/directives/action.directive.mjs +0 -75
  305. package/esm2020/lib/components/sidenav/directives/active-link.directive.mjs +0 -93
  306. package/esm2020/lib/components/sidenav/directives/expansion-panel.directive.mjs +0 -102
  307. package/esm2020/lib/components/sidenav/directives/menu-panel.directive.mjs +0 -99
  308. package/esm2020/lib/components/sidenav/sidenav.component.mjs +0 -89
  309. package/esm2020/lib/components/sidenav/user-menu/user-menu.component.mjs +0 -56
  310. package/esm2020/lib/components/toolbar/toggle-edit-offline/toggle-edit-offline.component.mjs +0 -137
  311. package/esm2020/lib/components/toolbar/toggle-favorite/toggle-favorite.component.mjs +0 -86
  312. package/esm2020/lib/components/toolbar/toggle-favorite-library/toggle-favorite-library.component.mjs +0 -107
  313. package/esm2020/lib/components/toolbar/toggle-info-drawer/toggle-info-drawer.component.mjs +0 -74
  314. package/esm2020/lib/components/toolbar/toggle-join-library/toggle-join-library-button.component.mjs +0 -105
  315. package/esm2020/lib/components/toolbar/view-node/view-node.component.mjs +0 -122
  316. package/esm2020/lib/components/trashcan/trashcan.component.mjs +0 -68
  317. package/esm2020/lib/components/upload-files-dialog/upload-files-dialog.component.mjs +0 -52
  318. package/esm2020/lib/components/view-profile/view-profile.component.mjs +0 -193
  319. package/esm2020/lib/dialogs/node-template/create-from-template.dialog.mjs +0 -120
  320. package/esm2020/lib/directives/document-list.directive.mjs +0 -199
  321. package/esm2020/lib/extensions/core.extensions.module.mjs +0 -55
  322. package/esm2020/lib/services/content-management.service.mjs +0 -873
  323. package/esm2020/lib/services/content-url.service.mjs +0 -71
  324. package/esm2020/lib/services/modal-ai.service.mjs +0 -66
  325. package/esm2020/lib/services/node-actions.service.mjs +0 -600
  326. package/esm2020/lib/services/node-template.service.mjs +0 -144
  327. package/esm2020/lib/services/search-ai-navigation.service.mjs +0 -52
  328. package/esm2020/lib/store/app-store.module.mjs +0 -102
  329. package/esm2020/lib/store/effects/app.effects.mjs +0 -49
  330. package/esm2020/lib/store/effects/contextmenu.effects.mjs +0 -55
  331. package/esm2020/lib/store/effects/download.effects.mjs +0 -159
  332. package/esm2020/lib/store/effects/favorite.effects.mjs +0 -76
  333. package/esm2020/lib/store/effects/library.effects.mjs +0 -113
  334. package/esm2020/lib/store/effects/node.effects.mjs +0 -325
  335. package/esm2020/lib/store/effects/search-ai.effects.mjs +0 -57
  336. package/esm2020/lib/store/effects/search.effects.mjs +0 -60
  337. package/esm2020/lib/store/effects/template.effects.mjs +0 -121
  338. package/esm2020/lib/store/effects/upload.effects.mjs +0 -166
  339. package/esm2020/lib/store/effects/viewer.effects.mjs +0 -175
  340. package/esm2020/ms-office/actions/aos.actions.mjs +0 -31
  341. package/esm2020/ms-office/aos-extension.module.mjs +0 -52
  342. package/esm2020/ms-office/aos-extension.service.mjs +0 -132
  343. package/esm2020/ms-office/effects/aos.effects.mjs +0 -48
  344. package/esm2020/public-api.mjs +0 -32
  345. package/esm2020/viewer/lib/components/preview/preview.component.mjs +0 -236
  346. package/esm2020/viewer/lib/components/viewer/viewer.component.mjs +0 -240
  347. package/esm2020/viewer/lib/services/viewer.service.mjs +0 -226
  348. package/esm2020/viewer/lib/viewer.module.mjs +0 -52
  349. package/fesm2015/alfresco-aca-content-about.mjs.map +0 -1
  350. package/fesm2015/alfresco-aca-content-folder-rules.mjs +0 -2662
  351. package/fesm2015/alfresco-aca-content-folder-rules.mjs.map +0 -1
  352. package/fesm2015/alfresco-aca-content-ms-office.mjs +0 -256
  353. package/fesm2015/alfresco-aca-content-ms-office.mjs.map +0 -1
  354. package/fesm2015/alfresco-aca-content-viewer.mjs +0 -700
  355. package/fesm2015/alfresco-aca-content-viewer.mjs.map +0 -1
  356. package/fesm2015/alfresco-aca-content.mjs +0 -9835
  357. package/fesm2015/alfresco-aca-content.mjs.map +0 -1
  358. package/fesm2020/alfresco-aca-content-about.mjs +0 -193
  359. package/fesm2020/alfresco-aca-content-about.mjs.map +0 -1
  360. package/fesm2020/alfresco-aca-content-folder-rules.mjs.map +0 -1
  361. package/fesm2020/alfresco-aca-content-ms-office.mjs.map +0 -1
  362. package/fesm2020/alfresco-aca-content-viewer.mjs.map +0 -1
  363. package/fesm2020/alfresco-aca-content.mjs +0 -9934
  364. package/fesm2020/alfresco-aca-content.mjs.map +0 -1
  365. /package/{esm2020 → esm2022}/about/alfresco-aca-content-about.mjs +0 -0
  366. /package/{esm2020 → esm2022}/about/dev-mode.tokens.mjs +0 -0
  367. /package/{esm2020 → esm2022}/about/package-json.token.mjs +0 -0
  368. /package/{esm2020 → esm2022}/about/public-api.mjs +0 -0
  369. /package/{esm2020 → esm2022}/alfresco-aca-content.mjs +0 -0
  370. /package/{esm2020 → esm2022}/folder-rules/alfresco-aca-content-folder-rules.mjs +0 -0
  371. /package/{esm2020 → esm2022}/folder-rules/folder-rules.rules.mjs +0 -0
  372. /package/{esm2020 → esm2022}/folder-rules/model/action-parameter-constraint.model.mjs +0 -0
  373. /package/{esm2020 → esm2022}/folder-rules/model/rule-action.model.mjs +0 -0
  374. /package/{esm2020 → esm2022}/folder-rules/model/rule-composite-condition.model.mjs +0 -0
  375. /package/{esm2020 → esm2022}/folder-rules/model/rule-grouping-item.model.mjs +0 -0
  376. /package/{esm2020 → esm2022}/folder-rules/model/rule-set.model.mjs +0 -0
  377. /package/{esm2020 → esm2022}/folder-rules/model/rule-simple-condition.model.mjs +0 -0
  378. /package/{esm2020 → esm2022}/folder-rules/model/rule.model.mjs +0 -0
  379. /package/{esm2020 → esm2022}/folder-rules/public-api.mjs +0 -0
  380. /package/{esm2020 → esm2022}/folder-rules/rule-details/conditions/rule-condition-comparators.mjs +0 -0
  381. /package/{esm2020 → esm2022}/folder-rules/rule-details/conditions/rule-condition-fields.mjs +0 -0
  382. /package/{esm2020 → esm2022}/folder-rules/rule-details/validators/rule-composite-condition.validator.mjs +0 -0
  383. /package/{esm2020 → esm2022}/lib/components/common/index.mjs +0 -0
  384. /package/{esm2020 → esm2022}/lib/components/context-menu/direction.token.mjs +0 -0
  385. /package/{esm2020 → esm2022}/lib/components/context-menu/interfaces.mjs +0 -0
  386. /package/{esm2020 → esm2022}/lib/components/search/index.mjs +0 -0
  387. /package/{esm2020 → esm2022}/lib/components/sidenav/index.mjs +0 -0
  388. /package/{esm2020 → esm2022}/lib/components/toolbar/index.mjs +0 -0
  389. /package/{esm2020 → esm2022}/lib/components/view-profile/view-profile.guard.mjs +0 -0
  390. /package/{esm2020 → esm2022}/lib/store/effects.mjs +0 -0
  391. /package/{esm2020 → esm2022}/lib/store/initial-state.mjs +0 -0
  392. /package/{esm2020 → esm2022}/lib/store/reducers/app.reducer.mjs +0 -0
  393. /package/{esm2020 → esm2022}/ms-office/alfresco-aca-content-ms-office.mjs +0 -0
  394. /package/{esm2020 → esm2022}/ms-office/public-api.mjs +0 -0
  395. /package/{esm2020 → esm2022}/viewer/alfresco-aca-content-viewer.mjs +0 -0
  396. /package/{esm2020 → esm2022}/viewer/public-api.mjs +0 -0
@@ -0,0 +1,107 @@
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 { Component, inject, Input, ViewEncapsulation } from '@angular/core';
25
+ import { Node } from '@alfresco/js-api';
26
+ import { CommonModule } from '@angular/common';
27
+ import { VersionManagerModule } from '@alfresco/adf-content-services';
28
+ import { MatIconModule } from '@angular/material/icon';
29
+ import { TranslateModule } from '@ngx-translate/core';
30
+ import { AppSettingsService } from '@alfresco/aca-shared';
31
+ import * as i0 from "@angular/core";
32
+ import * as i1 from "@angular/common";
33
+ import * as i2 from "@alfresco/adf-content-services";
34
+ import * as i3 from "@angular/material/icon";
35
+ import * as i4 from "@ngx-translate/core";
36
+ class VersionsTabComponent {
37
+ settings = inject(AppSettingsService);
38
+ node;
39
+ isFileSelected = false;
40
+ ngOnInit() {
41
+ this.updateState();
42
+ }
43
+ ngOnChanges() {
44
+ this.updateState();
45
+ }
46
+ updateState() {
47
+ if (this.node && this.node.nodeId) {
48
+ // workaround for shared files type.
49
+ this.isFileSelected = true;
50
+ }
51
+ else {
52
+ this.isFileSelected = this.node.isFile;
53
+ }
54
+ }
55
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: VersionsTabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
56
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: VersionsTabComponent, isStandalone: true, selector: "app-versions-tab", inputs: { node: "node" }, usesOnChanges: true, ngImport: i0, template: `
57
+ <ng-container *ngIf="isFileSelected; else empty">
58
+ <adf-version-manager
59
+ [showComments]="settings.uploadAllowComments"
60
+ [allowDownload]="settings.uploadAllowDownload"
61
+ [node]="node"
62
+ [allowViewVersions]="settings.versionManagerAllowViewVersions"
63
+ [allowVersionDelete]="settings.versionManagerAllowVersionDelete"
64
+ [showActions]="settings.versionManagerShowActions"
65
+ />
66
+ </ng-container>
67
+
68
+ <ng-template #empty>
69
+ <div class="adf-manage-versions-empty">
70
+ <mat-icon class="adf-manage-versions-empty-icon">face</mat-icon>
71
+ {{ 'VERSION.SELECTION.EMPTY' | translate }}
72
+ </div>
73
+ </ng-template>
74
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: VersionManagerModule }, { kind: "component", type: i2.VersionManagerComponent, selector: "adf-version-manager", inputs: ["node", "newFileVersion", "showComments", "showVersionComparison", "allowDownload", "showActions", "allowViewVersions", "allowVersionDelete"], outputs: ["uploadSuccess", "uploadError", "uploadCancel", "viewVersion"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None });
75
+ }
76
+ export { VersionsTabComponent };
77
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: VersionsTabComponent, decorators: [{
78
+ type: Component,
79
+ args: [{
80
+ standalone: true,
81
+ imports: [CommonModule, VersionManagerModule, MatIconModule, TranslateModule],
82
+ selector: 'app-versions-tab',
83
+ template: `
84
+ <ng-container *ngIf="isFileSelected; else empty">
85
+ <adf-version-manager
86
+ [showComments]="settings.uploadAllowComments"
87
+ [allowDownload]="settings.uploadAllowDownload"
88
+ [node]="node"
89
+ [allowViewVersions]="settings.versionManagerAllowViewVersions"
90
+ [allowVersionDelete]="settings.versionManagerAllowVersionDelete"
91
+ [showActions]="settings.versionManagerShowActions"
92
+ />
93
+ </ng-container>
94
+
95
+ <ng-template #empty>
96
+ <div class="adf-manage-versions-empty">
97
+ <mat-icon class="adf-manage-versions-empty-icon">face</mat-icon>
98
+ {{ 'VERSION.SELECTION.EMPTY' | translate }}
99
+ </div>
100
+ </ng-template>
101
+ `,
102
+ encapsulation: ViewEncapsulation.None
103
+ }]
104
+ }], propDecorators: { node: [{
105
+ type: Input
106
+ }] } });
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbnMtdGFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L3NyYy9saWIvY29tcG9uZW50cy9pbmZvLWRyYXdlci92ZXJzaW9ucy10YWIvdmVyc2lvbnMtdGFiLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBcUIsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0YsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7QUFFMUQsTUF5QmEsb0JBQW9CO0lBQy9CLFFBQVEsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUd0QyxJQUFJLENBQU87SUFFWCxjQUFjLEdBQUcsS0FBSyxDQUFDO0lBRXZCLFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVPLFdBQVc7UUFDakIsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFLLElBQUksQ0FBQyxJQUFZLENBQUMsTUFBTSxFQUFFO1lBQzFDLG9DQUFvQztZQUNwQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztTQUM1QjthQUFNO1lBQ0wsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUN4QztJQUNILENBQUM7dUdBdkJVLG9CQUFvQjsyRkFBcEIsb0JBQW9CLDJIQXJCckI7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCVCwyREFwQlMsWUFBWSxrSUFBRSxvQkFBb0IsMFZBQUUsYUFBYSxtTEFBRSxlQUFlOztTQXVCakUsb0JBQW9COzJGQUFwQixvQkFBb0I7a0JBekJoQyxTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsYUFBYSxFQUFFLGVBQWUsQ0FBQztvQkFDN0UsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQlQ7b0JBQ0QsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7aUJBQ3RDOzhCQUtDLElBQUk7c0JBREgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNCBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvblxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24uXG4gKiBJZiB0aGUgc29mdHdhcmUgd2FzIHB1cmNoYXNlZCB1bmRlciBhIHBhaWQgQWxmcmVzY28gbGljZW5zZSwgdGhlIHRlcm1zIG9mXG4gKiB0aGUgcGFpZCBsaWNlbnNlIGFncmVlbWVudCB3aWxsIHByZXZhaWwuIE90aGVyd2lzZSwgdGhlIHNvZnR3YXJlIGlzXG4gKiBwcm92aWRlZCB1bmRlciB0aGUgZm9sbG93aW5nIG9wZW4gc291cmNlIGxpY2Vuc2UgdGVybXM6XG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogZnJvbSBIeWxhbmQgU29mdHdhcmUuIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTm9kZSB9IGZyb20gJ0BhbGZyZXNjby9qcy1hcGknO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFZlcnNpb25NYW5hZ2VyTW9kdWxlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb250ZW50LXNlcnZpY2VzJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgQXBwU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnQGFsZnJlc2NvL2FjYS1zaGFyZWQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgVmVyc2lvbk1hbmFnZXJNb2R1bGUsIE1hdEljb25Nb2R1bGUsIFRyYW5zbGF0ZU1vZHVsZV0sXG4gIHNlbGVjdG9yOiAnYXBwLXZlcnNpb25zLXRhYicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRmlsZVNlbGVjdGVkOyBlbHNlIGVtcHR5XCI+XG4gICAgICA8YWRmLXZlcnNpb24tbWFuYWdlclxuICAgICAgICBbc2hvd0NvbW1lbnRzXT1cInNldHRpbmdzLnVwbG9hZEFsbG93Q29tbWVudHNcIlxuICAgICAgICBbYWxsb3dEb3dubG9hZF09XCJzZXR0aW5ncy51cGxvYWRBbGxvd0Rvd25sb2FkXCJcbiAgICAgICAgW25vZGVdPVwibm9kZVwiXG4gICAgICAgIFthbGxvd1ZpZXdWZXJzaW9uc109XCJzZXR0aW5ncy52ZXJzaW9uTWFuYWdlckFsbG93Vmlld1ZlcnNpb25zXCJcbiAgICAgICAgW2FsbG93VmVyc2lvbkRlbGV0ZV09XCJzZXR0aW5ncy52ZXJzaW9uTWFuYWdlckFsbG93VmVyc2lvbkRlbGV0ZVwiXG4gICAgICAgIFtzaG93QWN0aW9uc109XCJzZXR0aW5ncy52ZXJzaW9uTWFuYWdlclNob3dBY3Rpb25zXCJcbiAgICAgIC8+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctdGVtcGxhdGUgI2VtcHR5PlxuICAgICAgPGRpdiBjbGFzcz1cImFkZi1tYW5hZ2UtdmVyc2lvbnMtZW1wdHlcIj5cbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiYWRmLW1hbmFnZS12ZXJzaW9ucy1lbXB0eS1pY29uXCI+ZmFjZTwvbWF0LWljb24+XG4gICAgICAgIHt7ICdWRVJTSU9OLlNFTEVDVElPTi5FTVBUWScgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIGAsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgVmVyc2lvbnNUYWJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIHNldHRpbmdzID0gaW5qZWN0KEFwcFNldHRpbmdzU2VydmljZSk7XG5cbiAgQElucHV0KClcbiAgbm9kZTogTm9kZTtcblxuICBpc0ZpbGVTZWxlY3RlZCA9IGZhbHNlO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMudXBkYXRlU3RhdGUoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIHRoaXMudXBkYXRlU3RhdGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU3RhdGUoKSB7XG4gICAgaWYgKHRoaXMubm9kZSAmJiAodGhpcy5ub2RlIGFzIGFueSkubm9kZUlkKSB7XG4gICAgICAvLyB3b3JrYXJvdW5kIGZvciBzaGFyZWQgZmlsZXMgdHlwZS5cbiAgICAgIHRoaXMuaXNGaWxlU2VsZWN0ZWQgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzRmlsZVNlbGVjdGVkID0gdGhpcy5ub2RlLmlzRmlsZTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,135 @@
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 { ChangeDetectorRef, Component, Input, ViewEncapsulation } from '@angular/core';
25
+ import { CommonModule } from '@angular/common';
26
+ import { Store } from '@ngrx/store';
27
+ import { getAppSelection } from '@alfresco/aca-shared/store';
28
+ import { AvatarComponent, IconComponent, NotificationService } from '@alfresco/adf-core';
29
+ import { forkJoin, Subject, throwError } from 'rxjs';
30
+ import { catchError, take, takeUntil } from 'rxjs/operators';
31
+ import { MatMenuModule } from '@angular/material/menu';
32
+ import { MatListModule } from '@angular/material/list';
33
+ import { TranslateModule, TranslateService } from '@ngx-translate/core';
34
+ import { AgentService, SearchAiService } from '@alfresco/adf-content-services';
35
+ import { MatTooltipModule } from '@angular/material/tooltip';
36
+ import * as i0 from "@angular/core";
37
+ import * as i1 from "@ngrx/store";
38
+ import * as i2 from "@alfresco/adf-core";
39
+ import * as i3 from "@alfresco/adf-content-services";
40
+ import * as i4 from "@ngx-translate/core";
41
+ import * as i5 from "@angular/common";
42
+ import * as i6 from "@angular/material/menu";
43
+ import * as i7 from "@angular/material/list";
44
+ import * as i8 from "@angular/material/tooltip";
45
+ class AgentsButtonComponent {
46
+ store;
47
+ notificationService;
48
+ searchAiService;
49
+ agentService;
50
+ translateService;
51
+ cd;
52
+ data;
53
+ selectedNodesState;
54
+ _agents = [];
55
+ onDestroy$ = new Subject();
56
+ _disabled = true;
57
+ _initialsByAgentId = {};
58
+ _hxInsightUrl;
59
+ get agents() {
60
+ return this._agents;
61
+ }
62
+ get disabled() {
63
+ return this._disabled;
64
+ }
65
+ get initialsByAgentId() {
66
+ return this._initialsByAgentId;
67
+ }
68
+ get hxInsightUrl() {
69
+ return this._hxInsightUrl;
70
+ }
71
+ constructor(store, notificationService, searchAiService, agentService, translateService, cd) {
72
+ this.store = store;
73
+ this.notificationService = notificationService;
74
+ this.searchAiService = searchAiService;
75
+ this.agentService = agentService;
76
+ this.translateService = translateService;
77
+ this.cd = cd;
78
+ }
79
+ ngOnInit() {
80
+ this.store
81
+ .select(getAppSelection)
82
+ .pipe(takeUntil(this.onDestroy$))
83
+ .subscribe((selection) => {
84
+ this.selectedNodesState = selection;
85
+ });
86
+ forkJoin({
87
+ agents: this.agentService.getAgents().pipe(take(1), catchError(() => throwError('KNOWLEDGE_RETRIEVAL.SEARCH.ERRORS.AGENTS_FETCHING'))),
88
+ config: this.searchAiService.getConfig().pipe(catchError(() => throwError('KNOWLEDGE_RETRIEVAL.SEARCH.ERRORS.HX_INSIGHT_URL_FETCHING')))
89
+ }).subscribe((result) => {
90
+ this._hxInsightUrl = result.config.entry.knowledgeRetrievalUrl;
91
+ this._agents = result.agents;
92
+ this.cd.detectChanges();
93
+ if (this.agents.length) {
94
+ this._initialsByAgentId = this.agents.reduce((initials, agent) => {
95
+ const words = agent.name.split(' ').filter((word) => !word.match(/[^a-zA-Z]+/g));
96
+ initials[agent.id] = `${words[0][0]}${words[1]?.[0] || ''}`;
97
+ return initials;
98
+ }, {});
99
+ }
100
+ }, (error) => this.notificationService.showError(this.translateService.instant(error)));
101
+ }
102
+ ngOnDestroy() {
103
+ this.onDestroy$.next();
104
+ this.onDestroy$.complete();
105
+ }
106
+ onClick() {
107
+ if (!this.selectedNodesState.isEmpty) {
108
+ const message = this.searchAiService.checkSearchAvailability(this.selectedNodesState);
109
+ if (message) {
110
+ this.notificationService.showError(message);
111
+ }
112
+ this._disabled = !!message;
113
+ return;
114
+ }
115
+ this._disabled = true;
116
+ open(this.hxInsightUrl);
117
+ }
118
+ onAgentSelection(change) {
119
+ this.store.dispatch({
120
+ type: this.data.trigger,
121
+ agentId: change.options[0].value.id
122
+ });
123
+ change.source.deselectAll();
124
+ }
125
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: AgentsButtonComponent, deps: [{ token: i1.Store }, { token: i2.NotificationService }, { token: i3.SearchAiService }, { token: i3.AgentService }, { token: i4.TranslateService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
126
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: AgentsButtonComponent, isStandalone: true, selector: "aca-agents-button", inputs: { data: "data" }, host: { classAttribute: "aca-agents-button" }, ngImport: i0, template: "<ng-container *ngIf=\"agents.length && hxInsightUrl\">\n <button\n [matMenuTriggerFor]=\"disabled ? null : agentsList\"\n class=\"aca-agents-menu-button aca-agents-button-menu-trigger\"\n (mouseup)=\"onClick()\"\n (keydown.enter)=\"onClick()\"\n data-automation-id=\"aca-agents-button\">\n <adf-icon\n value=\"adf:colored-stars-ai\"\n class=\"aca-agents-button-icon\" />\n {{ 'KNOWLEDGE_RETRIEVAL.SEARCH.AGENTS_BUTTON.LABEL' | translate}}\n </button>\n <mat-menu\n #agentsList=\"matMenu\"\n class=\"aca-agents-button-menu\"\n xPosition=\"before\">\n <mat-selection-list\n (selectionChange)=\"onAgentSelection($event)\"\n [multiple]=\"false\"\n class=\"aca-agents-button-menu-list\"\n [hideSingleSelectionIndicator]=\"true\">\n <mat-list-option\n *ngFor=\"let agent of agents\"\n class=\"aca-agents-button-menu-list-agent\"\n [attr.data-automation-id]=\"'aca-agents-button-agent-' + agent.id\"\n [value]=\"agent\">\n <div class=\"aca-agents-button-menu-list-agent-content\">\n <adf-avatar [src]=\"agent?.avatarUrl\" [initials]=\"initialsByAgentId[agent.id]\" />\n <span class=\"aca-agents-button-menu-list-agent-content-name\" [matTooltip]=\"agent.name\" [matTooltipPosition]=\"'right'\">\n {{ agent.name }}\n </span>\n </div>\n </mat-list-option>\n </mat-selection-list>\n </mat-menu>\n</ng-container>\n", styles: ["aca-agents-button.aca-agents-button{height:32px;display:block}aca-agents-button.aca-agents-button button.aca-agents-menu-button{display:flex;align-items:end}aca-agents-button.aca-agents-button button.aca-agents-menu-button.aca-agents-button-menu-trigger{height:auto;cursor:pointer;border:none;background:transparent;width:max-content;padding:0 4px 0 0}aca-agents-button.aca-agents-button button.aca-agents-menu-button .aca-agents-button-icon{display:flex;align-self:baseline}aca-agents-button.aca-agents-button button.aca-agents-menu-button .aca-agents-button-icon svg{height:32px;width:32px;position:absolute;margin-left:-21px}.aca-agents-button-menu{padding-top:2px;padding-bottom:1px}.aca-agents-button-menu .aca-agents-button-menu-list{margin-left:-6px;padding-top:0;padding-bottom:0}.aca-agents-button-menu .aca-agents-button-menu-list-agent{height:40px}.aca-agents-button-menu .aca-agents-button-menu-list-agent:not(:last-child){margin-bottom:2px}.aca-agents-button-menu .aca-agents-button-menu-list-agent-content{display:flex;align-items:center}.aca-agents-button-menu .aca-agents-button-menu-list-agent-content-name{width:120px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.aca-agents-button-menu .aca-agents-button-menu-list-agent adf-avatar{margin-right:12px;margin-bottom:2px;padding-left:1px;padding-top:1px}.aca-agents-button-menu .aca-agents-button-menu-list-agent adf-avatar .adf-avatar__image{cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i6.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "directive", type: i6.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i7.MatSelectionList, selector: "mat-selection-list", inputs: ["color", "compareWith", "multiple", "hideSingleSelectionIndicator", "disabled"], outputs: ["selectionChange"], exportAs: ["matSelectionList"] }, { kind: "component", type: i7.MatListOption, selector: "mat-list-option", inputs: ["togglePosition", "checkboxPosition", "color", "value", "selected"], outputs: ["selectedChange"], exportAs: ["matListOption"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "component", type: AvatarComponent, selector: "adf-avatar", inputs: ["src", "initials", "tooltip", "size", "cursor"] }, { kind: "component", type: IconComponent, selector: "adf-icon", inputs: ["color", "fontSet", "value"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i8.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], encapsulation: i0.ViewEncapsulation.None });
127
+ }
128
+ export { AgentsButtonComponent };
129
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: AgentsButtonComponent, decorators: [{
130
+ type: Component,
131
+ args: [{ standalone: true, imports: [CommonModule, MatMenuModule, MatListModule, TranslateModule, AvatarComponent, IconComponent, MatTooltipModule], selector: 'aca-agents-button', encapsulation: ViewEncapsulation.None, host: { class: 'aca-agents-button' }, template: "<ng-container *ngIf=\"agents.length && hxInsightUrl\">\n <button\n [matMenuTriggerFor]=\"disabled ? null : agentsList\"\n class=\"aca-agents-menu-button aca-agents-button-menu-trigger\"\n (mouseup)=\"onClick()\"\n (keydown.enter)=\"onClick()\"\n data-automation-id=\"aca-agents-button\">\n <adf-icon\n value=\"adf:colored-stars-ai\"\n class=\"aca-agents-button-icon\" />\n {{ 'KNOWLEDGE_RETRIEVAL.SEARCH.AGENTS_BUTTON.LABEL' | translate}}\n </button>\n <mat-menu\n #agentsList=\"matMenu\"\n class=\"aca-agents-button-menu\"\n xPosition=\"before\">\n <mat-selection-list\n (selectionChange)=\"onAgentSelection($event)\"\n [multiple]=\"false\"\n class=\"aca-agents-button-menu-list\"\n [hideSingleSelectionIndicator]=\"true\">\n <mat-list-option\n *ngFor=\"let agent of agents\"\n class=\"aca-agents-button-menu-list-agent\"\n [attr.data-automation-id]=\"'aca-agents-button-agent-' + agent.id\"\n [value]=\"agent\">\n <div class=\"aca-agents-button-menu-list-agent-content\">\n <adf-avatar [src]=\"agent?.avatarUrl\" [initials]=\"initialsByAgentId[agent.id]\" />\n <span class=\"aca-agents-button-menu-list-agent-content-name\" [matTooltip]=\"agent.name\" [matTooltipPosition]=\"'right'\">\n {{ agent.name }}\n </span>\n </div>\n </mat-list-option>\n </mat-selection-list>\n </mat-menu>\n</ng-container>\n", styles: ["aca-agents-button.aca-agents-button{height:32px;display:block}aca-agents-button.aca-agents-button button.aca-agents-menu-button{display:flex;align-items:end}aca-agents-button.aca-agents-button button.aca-agents-menu-button.aca-agents-button-menu-trigger{height:auto;cursor:pointer;border:none;background:transparent;width:max-content;padding:0 4px 0 0}aca-agents-button.aca-agents-button button.aca-agents-menu-button .aca-agents-button-icon{display:flex;align-self:baseline}aca-agents-button.aca-agents-button button.aca-agents-menu-button .aca-agents-button-icon svg{height:32px;width:32px;position:absolute;margin-left:-21px}.aca-agents-button-menu{padding-top:2px;padding-bottom:1px}.aca-agents-button-menu .aca-agents-button-menu-list{margin-left:-6px;padding-top:0;padding-bottom:0}.aca-agents-button-menu .aca-agents-button-menu-list-agent{height:40px}.aca-agents-button-menu .aca-agents-button-menu-list-agent:not(:last-child){margin-bottom:2px}.aca-agents-button-menu .aca-agents-button-menu-list-agent-content{display:flex;align-items:center}.aca-agents-button-menu .aca-agents-button-menu-list-agent-content-name{width:120px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.aca-agents-button-menu .aca-agents-button-menu-list-agent adf-avatar{margin-right:12px;margin-bottom:2px;padding-left:1px;padding-top:1px}.aca-agents-button-menu .aca-agents-button-menu-list-agent adf-avatar .adf-avatar__image{cursor:pointer}\n"] }]
132
+ }], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.NotificationService }, { type: i3.SearchAiService }, { type: i3.AgentService }, { type: i4.TranslateService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { data: [{
133
+ type: Input
134
+ }] } });
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnRzLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC9zcmMvbGliL2NvbXBvbmVudHMva25vd2xlZGdlLXJldHJpZXZhbC9zZWFyY2gtYWkvYWdlbnRzLWJ1dHRvbi9hZ2VudHMtYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L3NyYy9saWIvY29tcG9uZW50cy9rbm93bGVkZ2UtcmV0cmlldmFsL3NlYXJjaC1haS9hZ2VudHMtYnV0dG9uL2FnZW50cy1idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBcUIsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxFQUFZLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDekYsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUEwQixNQUFNLHdCQUF3QixDQUFDO0FBQy9FLE9B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SSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztZQUN2QixPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRTtTQUNwQyxDQUFDLENBQUM7UUFDSCxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzlCLENBQUM7dUdBNUZVLHFCQUFxQjsyRkFBckIscUJBQXFCLHNKQ2hEbEMsdzdDQW9DQSx3OUNES1ksWUFBWSwrUEFBRSxhQUFhLDJQQUFFLGFBQWEsNGRBQUUsZUFBZSw0RkFBRSxlQUFlLGlIQUFFLGFBQWEsMkZBQUUsZ0JBQWdCOztTQU81RyxxQkFBcUI7MkZBQXJCLHFCQUFxQjtrQkFUakMsU0FBUztpQ0FDSSxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsQ0FBQyxZQUM5RyxtQkFBbUIsaUJBR2QsaUJBQWlCLENBQUMsSUFBSSxRQUMvQixFQUFFLEtBQUssRUFBRSxtQkFBbUIsRUFBRTtzUEFJcEMsSUFBSTtzQkFESCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI0IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbi5cbiAqIElmIHRoZSBzb2Z0d2FyZSB3YXMgcHVyY2hhc2VkIHVuZGVyIGEgcGFpZCBBbGZyZXNjbyBsaWNlbnNlLCB0aGUgdGVybXMgb2ZcbiAqIHRoZSBwYWlkIGxpY2Vuc2UgYWdyZWVtZW50IHdpbGwgcHJldmFpbC4gT3RoZXJ3aXNlLCB0aGUgc29mdHdhcmUgaXNcbiAqIHByb3ZpZGVkIHVuZGVyIHRoZSBmb2xsb3dpbmcgb3BlbiBzb3VyY2UgbGljZW5zZSB0ZXJtczpcbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBmcm9tIEh5bGFuZCBTb2Z0d2FyZS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICovXG5cbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBTZWxlY3Rpb25TdGF0ZSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtZXh0ZW5zaW9ucyc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IEFwcFN0b3JlLCBnZXRBcHBTZWxlY3Rpb24gfSBmcm9tICdAYWxmcmVzY28vYWNhLXNoYXJlZC9zdG9yZSc7XG5pbXBvcnQgeyBBdmF0YXJDb21wb25lbnQsIEljb25Db21wb25lbnQsIE5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHsgZm9ya0pvaW4sIFN1YmplY3QsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcbmltcG9ydCB7IE1hdExpc3RNb2R1bGUsIE1hdFNlbGVjdGlvbkxpc3RDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9saXN0JztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgQWdlbnQgfSBmcm9tICdAYWxmcmVzY28vanMtYXBpJztcbmltcG9ydCB7IEFnZW50U2VydmljZSwgU2VhcmNoQWlTZXJ2aWNlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb250ZW50LXNlcnZpY2VzJztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdE1lbnVNb2R1bGUsIE1hdExpc3RNb2R1bGUsIFRyYW5zbGF0ZU1vZHVsZSwgQXZhdGFyQ29tcG9uZW50LCBJY29uQ29tcG9uZW50LCBNYXRUb29sdGlwTW9kdWxlXSxcbiAgc2VsZWN0b3I6ICdhY2EtYWdlbnRzLWJ1dHRvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9hZ2VudHMtYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYWdlbnRzLWJ1dHRvbi5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7IGNsYXNzOiAnYWNhLWFnZW50cy1idXR0b24nIH1cbn0pXG5leHBvcnQgY2xhc3MgQWdlbnRzQnV0dG9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKVxuICBkYXRhOiB7IHRyaWdnZXI6IHN0cmluZyB9O1xuXG4gIHByaXZhdGUgc2VsZWN0ZWROb2Rlc1N0YXRlOiBTZWxlY3Rpb25TdGF0ZTtcbiAgcHJpdmF0ZSBfYWdlbnRzOiBBZ2VudFtdID0gW107XG4gIHByaXZhdGUgb25EZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgX2Rpc2FibGVkID0gdHJ1ZTtcbiAgcHJpdmF0ZSBfaW5pdGlhbHNCeUFnZW50SWQ6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcbiAgcHJpdmF0ZSBfaHhJbnNpZ2h0VXJsOiBzdHJpbmc7XG5cbiAgZ2V0IGFnZW50cygpOiBBZ2VudFtdIHtcbiAgICByZXR1cm4gdGhpcy5fYWdlbnRzO1xuICB9XG5cbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgfVxuXG4gIGdldCBpbml0aWFsc0J5QWdlbnRJZCgpOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHtcbiAgICByZXR1cm4gdGhpcy5faW5pdGlhbHNCeUFnZW50SWQ7XG4gIH1cblxuICBnZXQgaHhJbnNpZ2h0VXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2h4SW5zaWdodFVybDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlPEFwcFN0b3JlPixcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzZWFyY2hBaVNlcnZpY2U6IFNlYXJjaEFpU2VydmljZSxcbiAgICBwcml2YXRlIGFnZW50U2VydmljZTogQWdlbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdG9yZVxuICAgICAgLnNlbGVjdChnZXRBcHBTZWxlY3Rpb24pXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoKHNlbGVjdGlvbikgPT4ge1xuICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZXNTdGF0ZSA9IHNlbGVjdGlvbjtcbiAgICAgIH0pO1xuICAgIGZvcmtKb2luKHtcbiAgICAgIGFnZW50czogdGhpcy5hZ2VudFNlcnZpY2UuZ2V0QWdlbnRzKCkucGlwZShcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiB0aHJvd0Vycm9yKCdLTk9XTEVER0VfUkVUUklFVkFMLlNFQVJDSC5FUlJPUlMuQUdFTlRTX0ZFVENISU5HJykpXG4gICAgICApLFxuICAgICAgY29uZmlnOiB0aGlzLnNlYXJjaEFpU2VydmljZS5nZXRDb25maWcoKS5waXBlKGNhdGNoRXJyb3IoKCkgPT4gdGhyb3dFcnJvcignS05PV0xFREdFX1JFVFJJRVZBTC5TRUFSQ0guRVJST1JTLkhYX0lOU0lHSFRfVVJMX0ZFVENISU5HJykpKVxuICAgIH0pLnN1YnNjcmliZShcbiAgICAgIChyZXN1bHQpID0+IHtcbiAgICAgICAgdGhpcy5faHhJbnNpZ2h0VXJsID0gcmVzdWx0LmNvbmZpZy5lbnRyeS5rbm93bGVkZ2VSZXRyaWV2YWxVcmw7XG4gICAgICAgIHRoaXMuX2FnZW50cyA9IHJlc3VsdC5hZ2VudHM7XG5cbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuYWdlbnRzLmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMuX2luaXRpYWxzQnlBZ2VudElkID0gdGhpcy5hZ2VudHMucmVkdWNlKChpbml0aWFscywgYWdlbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHdvcmRzID0gYWdlbnQubmFtZS5zcGxpdCgnICcpLmZpbHRlcigod29yZCkgPT4gIXdvcmQubWF0Y2goL1teYS16QS1aXSsvZykpO1xuICAgICAgICAgICAgaW5pdGlhbHNbYWdlbnQuaWRdID0gYCR7d29yZHNbMF1bMF19JHt3b3Jkc1sxXT8uWzBdIHx8ICcnfWA7XG4gICAgICAgICAgICByZXR1cm4gaW5pdGlhbHM7XG4gICAgICAgICAgfSwge30pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgKGVycm9yOiBzdHJpbmcpID0+IHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zaG93RXJyb3IodGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoZXJyb3IpKVxuICAgICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLm9uRGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMub25EZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgb25DbGljaygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWROb2Rlc1N0YXRlLmlzRW1wdHkpIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLnNlYXJjaEFpU2VydmljZS5jaGVja1NlYXJjaEF2YWlsYWJpbGl0eSh0aGlzLnNlbGVjdGVkTm9kZXNTdGF0ZSk7XG4gICAgICBpZiAobWVzc2FnZSkge1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc2hvd0Vycm9yKG1lc3NhZ2UpO1xuICAgICAgfVxuICAgICAgdGhpcy5fZGlzYWJsZWQgPSAhIW1lc3NhZ2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2Rpc2FibGVkID0gdHJ1ZTtcbiAgICBvcGVuKHRoaXMuaHhJbnNpZ2h0VXJsKTtcbiAgfVxuXG4gIG9uQWdlbnRTZWxlY3Rpb24oY2hhbmdlOiBNYXRTZWxlY3Rpb25MaXN0Q2hhbmdlKTogdm9pZCB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaCh7XG4gICAgICB0eXBlOiB0aGlzLmRhdGEudHJpZ2dlcixcbiAgICAgIGFnZW50SWQ6IGNoYW5nZS5vcHRpb25zWzBdLnZhbHVlLmlkXG4gICAgfSk7XG4gICAgY2hhbmdlLnNvdXJjZS5kZXNlbGVjdEFsbCgpO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiYWdlbnRzLmxlbmd0aCAmJiBoeEluc2lnaHRVcmxcIj5cbiAgPGJ1dHRvblxuICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJkaXNhYmxlZCA/IG51bGwgOiBhZ2VudHNMaXN0XCJcbiAgICBjbGFzcz1cImFjYS1hZ2VudHMtbWVudS1idXR0b24gYWNhLWFnZW50cy1idXR0b24tbWVudS10cmlnZ2VyXCJcbiAgICAobW91c2V1cCk9XCJvbkNsaWNrKClcIlxuICAgIChrZXlkb3duLmVudGVyKT1cIm9uQ2xpY2soKVwiXG4gICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWNhLWFnZW50cy1idXR0b25cIj5cbiAgICA8YWRmLWljb25cbiAgICAgIHZhbHVlPVwiYWRmOmNvbG9yZWQtc3RhcnMtYWlcIlxuICAgICAgY2xhc3M9XCJhY2EtYWdlbnRzLWJ1dHRvbi1pY29uXCIgLz5cbiAgICB7eyAnS05PV0xFREdFX1JFVFJJRVZBTC5TRUFSQ0guQUdFTlRTX0JVVFRPTi5MQUJFTCcgfCB0cmFuc2xhdGV9fVxuICA8L2J1dHRvbj5cbiAgPG1hdC1tZW51XG4gICAgI2FnZW50c0xpc3Q9XCJtYXRNZW51XCJcbiAgICBjbGFzcz1cImFjYS1hZ2VudHMtYnV0dG9uLW1lbnVcIlxuICAgIHhQb3NpdGlvbj1cImJlZm9yZVwiPlxuICAgIDxtYXQtc2VsZWN0aW9uLWxpc3RcbiAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25BZ2VudFNlbGVjdGlvbigkZXZlbnQpXCJcbiAgICAgIFttdWx0aXBsZV09XCJmYWxzZVwiXG4gICAgICBjbGFzcz1cImFjYS1hZ2VudHMtYnV0dG9uLW1lbnUtbGlzdFwiXG4gICAgICBbaGlkZVNpbmdsZVNlbGVjdGlvbkluZGljYXRvcl09XCJ0cnVlXCI+XG4gICAgICA8bWF0LWxpc3Qtb3B0aW9uXG4gICAgICAgICpuZ0Zvcj1cImxldCBhZ2VudCBvZiBhZ2VudHNcIlxuICAgICAgICBjbGFzcz1cImFjYS1hZ2VudHMtYnV0dG9uLW1lbnUtbGlzdC1hZ2VudFwiXG4gICAgICAgIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCInYWNhLWFnZW50cy1idXR0b24tYWdlbnQtJyArIGFnZW50LmlkXCJcbiAgICAgICAgW3ZhbHVlXT1cImFnZW50XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhY2EtYWdlbnRzLWJ1dHRvbi1tZW51LWxpc3QtYWdlbnQtY29udGVudFwiPlxuICAgICAgICAgIDxhZGYtYXZhdGFyIFtzcmNdPVwiYWdlbnQ/LmF2YXRhclVybFwiIFtpbml0aWFsc109XCJpbml0aWFsc0J5QWdlbnRJZFthZ2VudC5pZF1cIiAvPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWNhLWFnZW50cy1idXR0b24tbWVudS1saXN0LWFnZW50LWNvbnRlbnQtbmFtZVwiIFttYXRUb29sdGlwXT1cImFnZW50Lm5hbWVcIiBbbWF0VG9vbHRpcFBvc2l0aW9uXT1cIidyaWdodCdcIj5cbiAgICAgICAgICAge3sgYWdlbnQubmFtZSB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21hdC1saXN0LW9wdGlvbj5cbiAgICA8L21hdC1zZWxlY3Rpb24tbGlzdD5cbiAgPC9tYXQtbWVudT5cbjwvbmctY29udGFpbmVyPlxuIl19
@@ -0,0 +1,181 @@
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 { Component, Input, ViewEncapsulation } from '@angular/core';
25
+ import { CommonModule } from '@angular/common';
26
+ import { TranslateModule, TranslateService } from '@ngx-translate/core';
27
+ import { MatButtonModule } from '@angular/material/button';
28
+ import { MatIconModule } from '@angular/material/icon';
29
+ import { MatFormFieldModule } from '@angular/material/form-field';
30
+ import { MatInputModule } from '@angular/material/input';
31
+ import { A11yModule } from '@angular/cdk/a11y';
32
+ import { AvatarComponent, IconComponent, NotificationService, UserPreferencesService } from '@alfresco/adf-core';
33
+ import { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';
34
+ import { Subject } from 'rxjs';
35
+ import { Store } from '@ngrx/store';
36
+ import { getAppSelection, SearchByTermAiAction, ToggleAISearchInput } from '@alfresco/aca-shared/store';
37
+ import { takeUntil } from 'rxjs/operators';
38
+ import { MatSelectModule } from '@angular/material/select';
39
+ import { AgentService, SearchAiService } from '@alfresco/adf-content-services';
40
+ import { MatCardModule } from '@angular/material/card';
41
+ import { MAT_TOOLTIP_DEFAULT_OPTIONS, MAT_TOOLTIP_DEFAULT_OPTIONS_FACTORY, MatTooltipModule } from '@angular/material/tooltip';
42
+ import { ModalAiService } from '../../../../services/modal-ai.service';
43
+ import * as i0 from "@angular/core";
44
+ import * as i1 from "@ngrx/store";
45
+ import * as i2 from "@alfresco/adf-content-services";
46
+ import * as i3 from "@alfresco/adf-core";
47
+ import * as i4 from "@ngx-translate/core";
48
+ import * as i5 from "../../../../services/modal-ai.service";
49
+ import * as i6 from "@angular/common";
50
+ import * as i7 from "@angular/material/button";
51
+ import * as i8 from "@angular/material/input";
52
+ import * as i9 from "@angular/forms";
53
+ import * as i10 from "@angular/material/select";
54
+ import * as i11 from "@angular/material/core";
55
+ import * as i12 from "@angular/material/card";
56
+ import * as i13 from "@angular/material/tooltip";
57
+ const MatTooltipOptions = {
58
+ ...MAT_TOOLTIP_DEFAULT_OPTIONS_FACTORY(),
59
+ disableTooltipInteractivity: true
60
+ };
61
+ class SearchAiInputComponent {
62
+ store;
63
+ searchAiService;
64
+ notificationService;
65
+ agentService;
66
+ userPreferencesService;
67
+ translateService;
68
+ modalAiService;
69
+ placeholder;
70
+ agentId;
71
+ usedInAiResultsPage;
72
+ searchTerm;
73
+ storedNodesKey = 'knowledgeRetrievalNodes';
74
+ _agentControl = new FormControl(null);
75
+ _agents = [];
76
+ onDestroy$ = new Subject();
77
+ selectedNodesState;
78
+ _queryControl = new FormControl('');
79
+ _initialsByAgentId = {};
80
+ get agentControl() {
81
+ return this._agentControl;
82
+ }
83
+ get agents() {
84
+ return this._agents;
85
+ }
86
+ get queryControl() {
87
+ return this._queryControl;
88
+ }
89
+ get initialsByAgentId() {
90
+ return this._initialsByAgentId;
91
+ }
92
+ constructor(store, searchAiService, notificationService, agentService, userPreferencesService, translateService, modalAiService) {
93
+ this.store = store;
94
+ this.searchAiService = searchAiService;
95
+ this.notificationService = notificationService;
96
+ this.agentService = agentService;
97
+ this.userPreferencesService = userPreferencesService;
98
+ this.translateService = translateService;
99
+ this.modalAiService = modalAiService;
100
+ }
101
+ ngOnInit() {
102
+ const queryValue = this.usedInAiResultsPage ? '' : this.searchTerm || '';
103
+ this.queryControl.setValue(queryValue);
104
+ if (!this.usedInAiResultsPage) {
105
+ this.store
106
+ .select(getAppSelection)
107
+ .pipe(takeUntil(this.onDestroy$))
108
+ .subscribe((selection) => {
109
+ this.selectedNodesState = selection;
110
+ });
111
+ }
112
+ else {
113
+ this.selectedNodesState = JSON.parse(this.userPreferencesService.get(this.storedNodesKey));
114
+ }
115
+ this.agentService
116
+ .getAgents()
117
+ .pipe(takeUntil(this.onDestroy$))
118
+ .subscribe((agents) => {
119
+ this._agents = agents;
120
+ this.agentControl.setValue(this._agents.find((agent) => agent.id === this.agentId));
121
+ this._initialsByAgentId = this.agents.reduce((initials, agent) => {
122
+ const words = agent.name.split(' ').filter((word) => !word.match(/[^a-zA-Z]+/g));
123
+ initials[agent.id] = `${words[0][0]}${words[1]?.[0] || ''}`;
124
+ return initials;
125
+ }, {});
126
+ }, () => this.notificationService.showError(this.translateService.instant('KNOWLEDGE_RETRIEVAL.SEARCH.ERRORS.AGENTS_FETCHING')));
127
+ }
128
+ ngOnDestroy() {
129
+ this.onDestroy$.next();
130
+ this.onDestroy$.complete();
131
+ }
132
+ onSearchSubmit() {
133
+ this.modalAiService.openUnsavedChangesModal(() => this.search());
134
+ }
135
+ search() {
136
+ const error = this.searchAiService.checkSearchAvailability(this.selectedNodesState);
137
+ if (error) {
138
+ this.notificationService.showError(error);
139
+ }
140
+ else {
141
+ const payload = {
142
+ searchTerm: this.queryControl.value,
143
+ agentId: this.agentControl.value.id
144
+ };
145
+ this.userPreferencesService.set(this.storedNodesKey, JSON.stringify(this.selectedNodesState));
146
+ this.store.dispatch(new SearchByTermAiAction(payload));
147
+ this.store.dispatch(new ToggleAISearchInput(this.agentControl.value.id, this.queryControl.value));
148
+ }
149
+ }
150
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SearchAiInputComponent, deps: [{ token: i1.Store }, { token: i2.SearchAiService }, { token: i3.NotificationService }, { token: i2.AgentService }, { token: i3.UserPreferencesService }, { token: i4.TranslateService }, { token: i5.ModalAiService }], target: i0.ɵɵFactoryTarget.Component });
151
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: SearchAiInputComponent, isStandalone: true, selector: "aca-search-ai-input", inputs: { placeholder: "placeholder", agentId: "agentId", usedInAiResultsPage: "usedInAiResultsPage", searchTerm: "searchTerm" }, providers: [{ provide: MAT_TOOLTIP_DEFAULT_OPTIONS, useValue: MatTooltipOptions }], ngImport: i0, template: "<div class=\"aca-search-ai-input-agent-container\">\n <mat-select\n [formControl]=\"agentControl\"\n class=\"aca-search-ai-input-agent-select\"\n panelClass=\"aca-search-ai-input-agent-select-options aca-search-ai-input-agent-select-agents\"\n data-automation-id=\"aca-search-ai-agents-select\"\n [hideSingleSelectionIndicator]=\"true\">\n <mat-select-trigger class=\"aca-search-ai-input-agent-select-displayed-value\">\n <adf-avatar\n [src]=\"agentControl.value?.avatarUrl\"\n [initials]=\"initialsByAgentId[agentControl.value?.id]\"\n size=\"26px\" />\n <span class=\"aca-search-ai-input-agent-select-displayed-value-text\">{{ agentControl.value?.name }}</span>\n </mat-select-trigger>\n <mat-option\n *ngFor=\"let agent of agents\"\n [value]=\"agent\"\n class=\"aca-search-ai-input-agent-select-options-option\"\n [attr.data-automation-id]=\"'aca-search-ai-input-agent-' + agent.id\"><div class=\"aca-search-ai-input-agent-select-options-option-content\">\n <adf-avatar [src]=\"agent?.avatarUrl\" [initials]=\"initialsByAgentId[agent.id]\" />\n <span class=\"aca-search-ai-input-agent-select-options-option-content-text\" [matTooltip]=\"agent.name\" [matTooltipPosition]=\"'right'\">{{ agent.name }}</span>\n </div>\n </mat-option>\n </mat-select>\n\n <div class=\"aca-search-ai-input-agent-popup-hover-card\">\n <mat-card class=\"aca-search-ai-input-agent-popup-hover-card-container\">\n <mat-card-title class=\"aca-search-ai-input-agent-popup-hover-card-container-title\">\n <adf-avatar\n [initials]=\"initialsByAgentId[agentControl.value?.id]\"\n [src]=\"agentControl.value?.avatarUrl\"\n size=\"50px\" />\n <span class=\"aca-search-ai-input-agent-popup-hover-card-container-title-name\"\n [matTooltipPosition]=\"'right'\"\n [matTooltip]=\"agentControl.value?.name\">\n {{ agentControl.value?.name }}\n </span>\n </mat-card-title>\n <mat-card-content class=\"aca-search-ai-input-agent-popup-hover-card-container-content\">\n {{ agentControl.value?.description }}\n </mat-card-content>\n </mat-card>\n </div>\n</div>\n<input\n class=\"aca-search-ai-input-text\"\n matInput\n [formControl]=\"queryControl\"\n data-automation-id=\"aca-search-ai-input\"\n [placeholder]=\"placeholder | translate\"\n (keyup.enter)=\"onSearchSubmit()\"/>\n<button\n mat-flat-button\n color=\"primary\"\n class=\"aca-search-ai-asking-button\"\n (click)=\"onSearchSubmit()\"\n [disabled]=\"!queryControl.value\"\n data-automation-id=\"aca-search-ai-asking-button\">\n <adf-icon [value]=\"'adf:three_magic_stars_ai'\" />\n <span class=\"aca-search-ai-asking-button-label\">{{ 'KNOWLEDGE_RETRIEVAL.SEARCH.SEARCH_INPUT.ASK_BUTTON_LABEL' | translate }}</span>\n</button>\n", styles: ["aca-search-ai-input{width:100%;display:flex;align-items:center}aca-search-ai-input .aca-search-ai-input-text{margin-top:4px;flex:1;font-size:20px;margin-right:167px;border:none;outline:none}aca-search-ai-input .aca-search-ai-input-text:focus::placeholder{color:var(--theme-primary-color)}aca-search-ai-input .aca-search-ai-asking-button{display:flex;align-items:center;padding-left:0;padding-right:12px;height:32px;border-radius:6px;width:92px;font-weight:600}aca-search-ai-input .aca-search-ai-asking-button-label{vertical-align:super}aca-search-ai-input .aca-search-ai-asking-button adf-icon{margin-bottom:3px;margin-right:7px}aca-search-ai-input .aca-search-ai-asking-button adf-icon svg{width:34px;height:34px;margin-left:-6px;margin-top:-4px}aca-search-ai-input .aca-search-ai-input-agent-select{width:149px;height:35px;align-content:center;border-radius:16px;padding-left:3px;padding-right:10px;background-color:var(--theme-grey-text-background-color);color:var(--theme-text-light-color);font-size:15px;margin-right:26px}aca-search-ai-input .aca-search-ai-input-agent-select .mat-mdc-select-trigger{height:auto;margin-top:4px}aca-search-ai-input .aca-search-ai-input-agent-select:focus{outline:-webkit-focus-ring-color auto 1px}aca-search-ai-input .aca-search-ai-input-agent-select-displayed-value{display:flex;align-items:center}aca-search-ai-input .aca-search-ai-input-agent-select-displayed-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}aca-search-ai-input .aca-search-ai-input-agent-select adf-avatar{margin-left:2px;margin-right:6px;padding-top:1px;padding-bottom:3px}aca-search-ai-input .aca-search-ai-input-agent-select adf-avatar .adf-avatar__image{cursor:pointer}.aca-search-ai-input-agent-select-options.aca-search-ai-input-agent-select-agents.mat-mdc-select-panel{margin-top:9px}.aca-search-ai-input-agent-select-options.aca-search-ai-input-agent-select-agents.mat-mdc-select-panel .aca-search-ai-input-agent-select-options-option{padding-left:11px;padding-right:11px}.aca-search-ai-input-agent-select-options.aca-search-ai-input-agent-select-agents.mat-mdc-select-panel .aca-search-ai-input-agent-select-options-option-content{display:flex;align-items:center;padding-top:1px;padding-bottom:1px}.aca-search-ai-input-agent-select-options.aca-search-ai-input-agent-select-agents.mat-mdc-select-panel .aca-search-ai-input-agent-select-options-option-content-text{width:120px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.aca-search-ai-input-agent-select-options.aca-search-ai-input-agent-select-agents.mat-mdc-select-panel .aca-search-ai-input-agent-select-options-option adf-avatar{margin-right:12px;padding-left:1px}.aca-search-ai-input-agent-select-options.aca-search-ai-input-agent-select-agents.mat-mdc-select-panel .aca-search-ai-input-agent-select-options-option adf-avatar .adf-avatar__image{cursor:pointer}.aca-search-ai-input-agent-container{position:relative}.aca-search-ai-input-agent-container .aca-search-ai-input-agent-popup-hover-card{display:none;position:absolute;left:0;z-index:1}.aca-search-ai-input-agent-container .aca-search-ai-input-agent-popup-hover-card-container{width:315px;height:-moz-fit-content;height:fit-content;border-radius:12px;margin-top:4px}.aca-search-ai-input-agent-container .aca-search-ai-input-agent-popup-hover-card-container-title{display:flex;align-items:center;font-size:20px;font-weight:700;padding:16px 16px 8px;gap:4px}.aca-search-ai-input-agent-container .aca-search-ai-input-agent-popup-hover-card-container-title-name{margin:0 12px}.aca-search-ai-input-agent-container .aca-search-ai-input-agent-popup-hover-card-container-title img{height:50px;width:50px;min-width:50px;min-height:50px}.aca-search-ai-input-agent-container .aca-search-ai-input-agent-popup-hover-card-container-title span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-right:14px}.aca-search-ai-input-agent-container .aca-search-ai-input-agent-popup-hover-card-container-content{display:flex;color:var(--theme-content-color);text-align:justify;text-justify:inter-word}.aca-search-ai-input-agent-container:hover .aca-search-ai-input-agent-popup-hover-card{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i7.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i8.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: A11yModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i9.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i9.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i10.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex", "panelWidth", "hideSingleSelectionIndicator"], exportAs: ["matSelect"] }, { kind: "directive", type: i10.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i11.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: IconComponent, selector: "adf-icon", inputs: ["color", "fontSet", "value"] }, { kind: "component", type: AvatarComponent, selector: "adf-avatar", inputs: ["src", "initials", "tooltip", "size", "cursor"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i12.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i12.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i12.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i13.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], encapsulation: i0.ViewEncapsulation.None });
152
+ }
153
+ export { SearchAiInputComponent };
154
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SearchAiInputComponent, decorators: [{
155
+ type: Component,
156
+ args: [{ standalone: true, imports: [
157
+ CommonModule,
158
+ TranslateModule,
159
+ MatButtonModule,
160
+ MatIconModule,
161
+ MatFormFieldModule,
162
+ MatInputModule,
163
+ A11yModule,
164
+ FormsModule,
165
+ ReactiveFormsModule,
166
+ MatSelectModule,
167
+ IconComponent,
168
+ AvatarComponent,
169
+ MatCardModule,
170
+ MatTooltipModule
171
+ ], selector: 'aca-search-ai-input', encapsulation: ViewEncapsulation.None, providers: [{ provide: MAT_TOOLTIP_DEFAULT_OPTIONS, useValue: MatTooltipOptions }], template: "<div class=\"aca-search-ai-input-agent-container\">\n <mat-select\n [formControl]=\"agentControl\"\n class=\"aca-search-ai-input-agent-select\"\n panelClass=\"aca-search-ai-input-agent-select-options aca-search-ai-input-agent-select-agents\"\n data-automation-id=\"aca-search-ai-agents-select\"\n [hideSingleSelectionIndicator]=\"true\">\n <mat-select-trigger class=\"aca-search-ai-input-agent-select-displayed-value\">\n <adf-avatar\n [src]=\"agentControl.value?.avatarUrl\"\n [initials]=\"initialsByAgentId[agentControl.value?.id]\"\n size=\"26px\" />\n <span class=\"aca-search-ai-input-agent-select-displayed-value-text\">{{ agentControl.value?.name }}</span>\n </mat-select-trigger>\n <mat-option\n *ngFor=\"let agent of agents\"\n [value]=\"agent\"\n class=\"aca-search-ai-input-agent-select-options-option\"\n [attr.data-automation-id]=\"'aca-search-ai-input-agent-' + agent.id\"><div class=\"aca-search-ai-input-agent-select-options-option-content\">\n <adf-avatar [src]=\"agent?.avatarUrl\" [initials]=\"initialsByAgentId[agent.id]\" />\n <span class=\"aca-search-ai-input-agent-select-options-option-content-text\" [matTooltip]=\"agent.name\" [matTooltipPosition]=\"'right'\">{{ agent.name }}</span>\n </div>\n </mat-option>\n </mat-select>\n\n <div class=\"aca-search-ai-input-agent-popup-hover-card\">\n <mat-card class=\"aca-search-ai-input-agent-popup-hover-card-container\">\n <mat-card-title class=\"aca-search-ai-input-agent-popup-hover-card-container-title\">\n <adf-avatar\n [initials]=\"initialsByAgentId[agentControl.value?.id]\"\n [src]=\"agentControl.value?.avatarUrl\"\n size=\"50px\" />\n <span class=\"aca-search-ai-input-agent-popup-hover-card-container-title-name\"\n [matTooltipPosition]=\"'right'\"\n [matTooltip]=\"agentControl.value?.name\">\n {{ agentControl.value?.name }}\n </span>\n </mat-card-title>\n <mat-card-content class=\"aca-search-ai-input-agent-popup-hover-card-container-content\">\n {{ agentControl.value?.description }}\n </mat-card-content>\n </mat-card>\n </div>\n</div>\n<input\n class=\"aca-search-ai-input-text\"\n matInput\n [formControl]=\"queryControl\"\n data-automation-id=\"aca-search-ai-input\"\n [placeholder]=\"placeholder | translate\"\n (keyup.enter)=\"onSearchSubmit()\"/>\n<button\n mat-flat-button\n color=\"primary\"\n class=\"aca-search-ai-asking-button\"\n (click)=\"onSearchSubmit()\"\n [disabled]=\"!queryControl.value\"\n data-automation-id=\"aca-search-ai-asking-button\">\n <adf-icon [value]=\"'adf:three_magic_stars_ai'\" />\n <span class=\"aca-search-ai-asking-button-label\">{{ 'KNOWLEDGE_RETRIEVAL.SEARCH.SEARCH_INPUT.ASK_BUTTON_LABEL' | translate }}</span>\n</button>\n", styles: ["aca-search-ai-input{width:100%;display:flex;align-items:center}aca-search-ai-input .aca-search-ai-input-text{margin-top:4px;flex:1;font-size:20px;margin-right:167px;border:none;outline:none}aca-search-ai-input .aca-search-ai-input-text:focus::placeholder{color:var(--theme-primary-color)}aca-search-ai-input .aca-search-ai-asking-button{display:flex;align-items:center;padding-left:0;padding-right:12px;height:32px;border-radius:6px;width:92px;font-weight:600}aca-search-ai-input .aca-search-ai-asking-button-label{vertical-align:super}aca-search-ai-input .aca-search-ai-asking-button adf-icon{margin-bottom:3px;margin-right:7px}aca-search-ai-input .aca-search-ai-asking-button adf-icon svg{width:34px;height:34px;margin-left:-6px;margin-top:-4px}aca-search-ai-input .aca-search-ai-input-agent-select{width:149px;height:35px;align-content:center;border-radius:16px;padding-left:3px;padding-right:10px;background-color:var(--theme-grey-text-background-color);color:var(--theme-text-light-color);font-size:15px;margin-right:26px}aca-search-ai-input .aca-search-ai-input-agent-select .mat-mdc-select-trigger{height:auto;margin-top:4px}aca-search-ai-input .aca-search-ai-input-agent-select:focus{outline:-webkit-focus-ring-color auto 1px}aca-search-ai-input .aca-search-ai-input-agent-select-displayed-value{display:flex;align-items:center}aca-search-ai-input .aca-search-ai-input-agent-select-displayed-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}aca-search-ai-input .aca-search-ai-input-agent-select adf-avatar{margin-left:2px;margin-right:6px;padding-top:1px;padding-bottom:3px}aca-search-ai-input .aca-search-ai-input-agent-select adf-avatar .adf-avatar__image{cursor:pointer}.aca-search-ai-input-agent-select-options.aca-search-ai-input-agent-select-agents.mat-mdc-select-panel{margin-top:9px}.aca-search-ai-input-agent-select-options.aca-search-ai-input-agent-select-agents.mat-mdc-select-panel .aca-search-ai-input-agent-select-options-option{padding-left:11px;padding-right:11px}.aca-search-ai-input-agent-select-options.aca-search-ai-input-agent-select-agents.mat-mdc-select-panel .aca-search-ai-input-agent-select-options-option-content{display:flex;align-items:center;padding-top:1px;padding-bottom:1px}.aca-search-ai-input-agent-select-options.aca-search-ai-input-agent-select-agents.mat-mdc-select-panel .aca-search-ai-input-agent-select-options-option-content-text{width:120px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.aca-search-ai-input-agent-select-options.aca-search-ai-input-agent-select-agents.mat-mdc-select-panel .aca-search-ai-input-agent-select-options-option adf-avatar{margin-right:12px;padding-left:1px}.aca-search-ai-input-agent-select-options.aca-search-ai-input-agent-select-agents.mat-mdc-select-panel .aca-search-ai-input-agent-select-options-option adf-avatar .adf-avatar__image{cursor:pointer}.aca-search-ai-input-agent-container{position:relative}.aca-search-ai-input-agent-container .aca-search-ai-input-agent-popup-hover-card{display:none;position:absolute;left:0;z-index:1}.aca-search-ai-input-agent-container .aca-search-ai-input-agent-popup-hover-card-container{width:315px;height:-moz-fit-content;height:fit-content;border-radius:12px;margin-top:4px}.aca-search-ai-input-agent-container .aca-search-ai-input-agent-popup-hover-card-container-title{display:flex;align-items:center;font-size:20px;font-weight:700;padding:16px 16px 8px;gap:4px}.aca-search-ai-input-agent-container .aca-search-ai-input-agent-popup-hover-card-container-title-name{margin:0 12px}.aca-search-ai-input-agent-container .aca-search-ai-input-agent-popup-hover-card-container-title img{height:50px;width:50px;min-width:50px;min-height:50px}.aca-search-ai-input-agent-container .aca-search-ai-input-agent-popup-hover-card-container-title span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-right:14px}.aca-search-ai-input-agent-container .aca-search-ai-input-agent-popup-hover-card-container-content{display:flex;color:var(--theme-content-color);text-align:justify;text-justify:inter-word}.aca-search-ai-input-agent-container:hover .aca-search-ai-input-agent-popup-hover-card{display:block}\n"] }]
172
+ }], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.SearchAiService }, { type: i3.NotificationService }, { type: i2.AgentService }, { type: i3.UserPreferencesService }, { type: i4.TranslateService }, { type: i5.ModalAiService }]; }, propDecorators: { placeholder: [{
173
+ type: Input
174
+ }], agentId: [{
175
+ type: Input
176
+ }], usedInAiResultsPage: [{
177
+ type: Input
178
+ }], searchTerm: [{
179
+ type: Input
180
+ }] } });
181
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWFpLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L3NyYy9saWIvY29tcG9uZW50cy9rbm93bGVkZ2UtcmV0cmlldmFsL3NlYXJjaC1haS9zZWFyY2gtYWktaW5wdXQvc2VhcmNoLWFpLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L3NyYy9saWIvY29tcG9uZW50cy9rbm93bGVkZ2UtcmV0cmlldmFsL3NlYXJjaC1haS9zZWFyY2gtYWktaW5wdXQvc2VhcmNoLWFpLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLG1CQUFtQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDakgsT0FBTyxFQUFFLFdBQVcs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QUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQ25HO0lBQ0gsQ0FBQzt1R0F2R1Usc0JBQXNCOzJGQUF0QixzQkFBc0Isb01BRnRCLENBQUMsRUFBRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLENBQUMsMEJDOUVwRixtMEZBNkRBLHduSURGSSxZQUFZLDJKQUNaLGVBQWUsMkZBQ2YsZUFBZSwyUUFDZixhQUFhLDhCQUNiLGtCQUFrQiw4QkFDbEIsY0FBYywwV0FDZCxVQUFVLDhCQUNWLFdBQVcsc1pBQ1gsbUJBQW1CLGlOQUNuQixlQUFlLDZZQUNmLGFBQWEsNEZBQ2IsZUFBZSxnSEFDZixhQUFhLHlVQUNiLGdCQUFnQjs7U0FRUCxzQkFBc0I7MkZBQXRCLHNCQUFzQjtrQkF4QmxDLFNBQVM7aUNBQ0ksSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osZUFBZTt3QkFDZixlQUFlO3dCQUNmLGFBQWE7d0JBQ2Isa0JBQWtCO3dCQUNsQixjQUFjO3dCQUNkLFVBQVU7d0JBQ1YsV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixlQUFlO3dCQUNmLGFBQWE7d0JBQ2IsZ0JBQWdCO3FCQUNqQixZQUNTLHFCQUFxQixpQkFHaEIsaUJBQWlCLENBQUMsSUFBSSxhQUMxQixDQUFDLEVBQUUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxDQUFDO3dSQUlsRixXQUFXO3NCQURWLEtBQUs7Z0JBSU4sT0FBTztzQkFETixLQUFLO2dCQUlOLG1CQUFtQjtzQkFEbEIsS0FBSztnQkFJTixVQUFVO3NCQURULEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjQgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb25cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uLlxuICogSWYgdGhlIHNvZnR3YXJlIHdhcyBwdXJjaGFzZWQgdW5kZXIgYSBwYWlkIEFsZnJlc2NvIGxpY2Vuc2UsIHRoZSB0ZXJtcyBvZlxuICogdGhlIHBhaWQgbGljZW5zZSBhZ3JlZW1lbnQgd2lsbCBwcmV2YWlsLiBPdGhlcndpc2UsIHRoZSBzb2Z0d2FyZSBpc1xuICogcHJvdmlkZWQgdW5kZXIgdGhlIGZvbGxvd2luZyBvcGVuIHNvdXJjZSBsaWNlbnNlIHRlcm1zOlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGZyb20gSHlsYW5kIFNvZnR3YXJlLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IEExMXlNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBBdmF0YXJDb21wb25lbnQsIEljb25Db21wb25lbnQsIE5vdGlmaWNhdGlvblNlcnZpY2UsIFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBBaVNlYXJjaEJ5VGVybVBheWxvYWQsIEFwcFN0b3JlLCBnZXRBcHBTZWxlY3Rpb24sIFNlYXJjaEJ5VGVybUFpQWN0aW9uLCBUb2dnbGVBSVNlYXJjaElucHV0IH0gZnJvbSAnQGFsZnJlc2NvL2FjYS1zaGFyZWQvc3RvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU2VsZWN0aW9uU3RhdGUgfSBmcm9tICdAYWxmcmVzY28vYWRmLWV4dGVuc2lvbnMnO1xuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcbmltcG9ydCB7IEFnZW50U2VydmljZSwgU2VhcmNoQWlTZXJ2aWNlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb250ZW50LXNlcnZpY2VzJztcbmltcG9ydCB7IE1hdENhcmRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jYXJkJztcbmltcG9ydCB7XG4gIE1BVF9UT09MVElQX0RFRkFVTFRfT1BUSU9OUyxcbiAgTUFUX1RPT0xUSVBfREVGQVVMVF9PUFRJT05TX0ZBQ1RPUlksXG4gIE1hdFRvb2x0aXBEZWZhdWx0T3B0aW9ucyxcbiAgTWF0VG9vbHRpcE1vZHVsZVxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IE1vZGFsQWlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvbW9kYWwtYWkuc2VydmljZSc7XG5pbXBvcnQgeyBBZ2VudCB9IGZyb20gJ0BhbGZyZXNjby9qcy1hcGknO1xuXG5jb25zdCBNYXRUb29sdGlwT3B0aW9uczogTWF0VG9vbHRpcERlZmF1bHRPcHRpb25zID0ge1xuICAuLi5NQVRfVE9PTFRJUF9ERUZBVUxUX09QVElPTlNfRkFDVE9SWSgpLFxuICBkaXNhYmxlVG9vbHRpcEludGVyYWN0aXZpdHk6IHRydWVcbn07XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgQTExeU1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE1hdFNlbGVjdE1vZHVsZSxcbiAgICBJY29uQ29tcG9uZW50LFxuICAgIEF2YXRhckNvbXBvbmVudCxcbiAgICBNYXRDYXJkTW9kdWxlLFxuICAgIE1hdFRvb2x0aXBNb2R1bGVcbiAgXSxcbiAgc2VsZWN0b3I6ICdhY2Etc2VhcmNoLWFpLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC1haS1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlYXJjaC1haS1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE1BVF9UT09MVElQX0RFRkFVTFRfT1BUSU9OUywgdXNlVmFsdWU6IE1hdFRvb2x0aXBPcHRpb25zIH1dXG59KVxuZXhwb3J0IGNsYXNzIFNlYXJjaEFpSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpXG4gIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgYWdlbnRJZDogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHVzZWRJbkFpUmVzdWx0c1BhZ2U6IGJvb2xlYW47XG5cbiAgQElucHV0KClcbiAgc2VhcmNoVGVybTogc3RyaW5nO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc3RvcmVkTm9kZXNLZXkgPSAna25vd2xlZGdlUmV0cmlldmFsTm9kZXMnO1xuXG4gIHByaXZhdGUgX2FnZW50Q29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxBZ2VudD4obnVsbCk7XG4gIHByaXZhdGUgX2FnZW50czogQWdlbnRbXSA9IFtdO1xuICBwcml2YXRlIG9uRGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIHNlbGVjdGVkTm9kZXNTdGF0ZTogU2VsZWN0aW9uU3RhdGU7XG4gIHByaXZhdGUgX3F1ZXJ5Q29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XG4gIHByaXZhdGUgX2luaXRpYWxzQnlBZ2VudElkOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG5cbiAgZ2V0IGFnZW50Q29udHJvbCgpOiBGb3JtQ29udHJvbDxBZ2VudD4ge1xuICAgIHJldHVybiB0aGlzLl9hZ2VudENvbnRyb2w7XG4gIH1cblxuICBnZXQgYWdlbnRzKCk6IEFnZW50W10ge1xuICAgIHJldHVybiB0aGlzLl9hZ2VudHM7XG4gIH1cblxuICBnZXQgcXVlcnlDb250cm9sKCk6IEZvcm1Db250cm9sPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLl9xdWVyeUNvbnRyb2w7XG4gIH1cblxuICBnZXQgaW5pdGlhbHNCeUFnZW50SWQoKTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB7XG4gICAgcmV0dXJuIHRoaXMuX2luaXRpYWxzQnlBZ2VudElkO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmU8QXBwU3RvcmU+LFxuICAgIHByaXZhdGUgc2VhcmNoQWlTZXJ2aWNlOiBTZWFyY2hBaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBub3RpZmljYXRpb25TZXJ2aWNlOiBOb3RpZmljYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgYWdlbnRTZXJ2aWNlOiBBZ2VudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyUHJlZmVyZW5jZXNTZXJ2aWNlOiBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIG1vZGFsQWlTZXJ2aWNlOiBNb2RhbEFpU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgY29uc3QgcXVlcnlWYWx1ZSA9IHRoaXMudXNlZEluQWlSZXN1bHRzUGFnZSA/ICcnIDogdGhpcy5zZWFyY2hUZXJtIHx8ICcnO1xuICAgIHRoaXMucXVlcnlDb250cm9sLnNldFZhbHVlKHF1ZXJ5VmFsdWUpO1xuXG4gICAgaWYgKCF0aGlzLnVzZWRJbkFpUmVzdWx0c1BhZ2UpIHtcbiAgICAgIHRoaXMuc3RvcmVcbiAgICAgICAgLnNlbGVjdChnZXRBcHBTZWxlY3Rpb24pXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpKVxuICAgICAgICAuc3Vic2NyaWJlKChzZWxlY3Rpb24pID0+IHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZXNTdGF0ZSA9IHNlbGVjdGlvbjtcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWROb2Rlc1N0YXRlID0gSlNPTi5wYXJzZSh0aGlzLnVzZXJQcmVmZXJlbmNlc1NlcnZpY2UuZ2V0KHRoaXMuc3RvcmVkTm9kZXNLZXkpKTtcbiAgICB9XG5cbiAgICB0aGlzLmFnZW50U2VydmljZVxuICAgICAgLmdldEFnZW50cygpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgIChhZ2VudHMpID0+IHtcbiAgICAgICAgICB0aGlzLl9hZ2VudHMgPSBhZ2VudHM7XG5cbiAgICAgICAgICB0aGlzLmFnZW50Q29udHJvbC5zZXRWYWx1ZSh0aGlzLl9hZ2VudHMuZmluZCgoYWdlbnQpID0+IGFnZW50LmlkID09PSB0aGlzLmFnZW50SWQpKTtcbiAgICAgICAgICB0aGlzLl9pbml0aWFsc0J5QWdlbnRJZCA9IHRoaXMuYWdlbnRzLnJlZHVjZSgoaW5pdGlhbHMsIGFnZW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB3b3JkcyA9IGFnZW50Lm5hbWUuc3BsaXQoJyAnKS5maWx0ZXIoKHdvcmQpID0+ICF3b3JkLm1hdGNoKC9bXmEtekEtWl0rL2cpKTtcbiAgICAgICAgICAgIGluaXRpYWxzW2FnZW50LmlkXSA9IGAke3dvcmRzWzBdWzBdfSR7d29yZHNbMV0/LlswXSB8fCAnJ31gO1xuICAgICAgICAgICAgcmV0dXJuIGluaXRpYWxzO1xuICAgICAgICAgIH0sIHt9KTtcbiAgICAgICAgfSxcbiAgICAgICAgKCkgPT4gdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnNob3dFcnJvcih0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnS05PV0xFREdFX1JFVFJJRVZBTC5TRUFSQ0guRVJST1JTLkFHRU5UU19GRVRDSElORycpKVxuICAgICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMub25EZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5vbkRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBvblNlYXJjaFN1Ym1pdCgpIHtcbiAgICB0aGlzLm1vZGFsQWlTZXJ2aWNlLm9wZW5VbnNhdmVkQ2hhbmdlc01vZGFsKCgpID0+IHRoaXMuc2VhcmNoKCkpO1xuICB9XG5cbiAgc2VhcmNoKCkge1xuICAgIGNvbnN0IGVycm9yID0gdGhpcy5zZWFyY2hBaVNlcnZpY2UuY2hlY2tTZWFyY2hBdmFpbGFiaWxpdHkodGhpcy5zZWxlY3RlZE5vZGVzU3RhdGUpO1xuICAgIGlmIChlcnJvcikge1xuICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnNob3dFcnJvcihlcnJvcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHBheWxvYWQ6IEFpU2VhcmNoQnlUZXJtUGF5bG9hZCA9IHtcbiAgICAgICAgc2VhcmNoVGVybTogdGhpcy5xdWVyeUNvbnRyb2wudmFsdWUsXG4gICAgICAgIGFnZW50SWQ6IHRoaXMuYWdlbnRDb250cm9sLnZhbHVlLmlkXG4gICAgICB9O1xuICAgICAgdGhpcy51c2VyUHJlZmVyZW5jZXNTZXJ2aWNlLnNldCh0aGlzLnN0b3JlZE5vZGVzS2V5LCBKU09OLnN0cmluZ2lmeSh0aGlzLnNlbGVjdGVkTm9kZXNTdGF0ZSkpO1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU2VhcmNoQnlUZXJtQWlBY3Rpb24ocGF5bG9hZCkpO1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgVG9nZ2xlQUlTZWFyY2hJbnB1dCh0aGlzLmFnZW50Q29udHJvbC52YWx1ZS5pZCwgdGhpcy5xdWVyeUNvbnRyb2wudmFsdWUpKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJhY2Etc2VhcmNoLWFpLWlucHV0LWFnZW50LWNvbnRhaW5lclwiPlxuICA8bWF0LXNlbGVjdFxuICAgIFtmb3JtQ29udHJvbF09XCJhZ2VudENvbnRyb2xcIlxuICAgIGNsYXNzPVwiYWNhLXNlYXJjaC1haS1pbnB1dC1hZ2VudC1zZWxlY3RcIlxuICAgIHBhbmVsQ2xhc3M9XCJhY2Etc2VhcmNoLWFpLWlucHV0LWFnZW50LXNlbGVjdC1vcHRpb25zIGFjYS1zZWFyY2gtYWktaW5wdXQtYWdlbnQtc2VsZWN0LWFnZW50c1wiXG4gICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWNhLXNlYXJjaC1haS1hZ2VudHMtc2VsZWN0XCJcbiAgW2hpZGVTaW5nbGVTZWxlY3Rpb25JbmRpY2F0b3JdPVwidHJ1ZVwiPlxuICAgIDxtYXQtc2VsZWN0LXRyaWdnZXIgY2xhc3M9XCJhY2Etc2VhcmNoLWFpLWlucHV0LWFnZW50LXNlbGVjdC1kaXNwbGF5ZWQtdmFsdWVcIj5cbiAgICAgIDxhZGYtYXZhdGFyXG4gICAgICAgIFtzcmNdPVwiYWdlbnRDb250cm9sLnZhbHVlPy5hdmF0YXJVcmxcIlxuICAgICAgICBbaW5pdGlhbHNdPVwiaW5pdGlhbHNCeUFnZW50SWRbYWdlbnRDb250cm9sLnZhbHVlPy5pZF1cIlxuICAgICAgICBzaXplPVwiMjZweFwiIC8+XG4gICAgICA8c3BhbiBjbGFzcz1cImFjYS1zZWFyY2gtYWktaW5wdXQtYWdlbnQtc2VsZWN0LWRpc3BsYXllZC12YWx1ZS10ZXh0XCI+e3sgYWdlbnRDb250cm9sLnZhbHVlPy5uYW1lIH19PC9zcGFuPlxuICAgIDwvbWF0LXNlbGVjdC10cmlnZ2VyPlxuICAgIDxtYXQtb3B0aW9uXG4gICAgICAqbmdGb3I9XCJsZXQgYWdlbnQgb2YgYWdlbnRzXCJcbiAgICAgIFt2YWx1ZV09XCJhZ2VudFwiXG4gICAgICBjbGFzcz1cImFjYS1zZWFyY2gtYWktaW5wdXQtYWdlbnQtc2VsZWN0LW9wdGlvbnMtb3B0aW9uXCJcbiAgICAgIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCInYWNhLXNlYXJjaC1haS1pbnB1dC1hZ2VudC0nICsgYWdlbnQuaWRcIj48ZGl2IGNsYXNzPVwiYWNhLXNlYXJjaC1haS1pbnB1dC1hZ2VudC1zZWxlY3Qtb3B0aW9ucy1vcHRpb24tY29udGVudFwiPlxuICAgICAgICA8YWRmLWF2YXRhciBbc3JjXT1cImFnZW50Py5hdmF0YXJVcmxcIiBbaW5pdGlhbHNdPVwiaW5pdGlhbHNCeUFnZW50SWRbYWdlbnQuaWRdXCIgLz5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJhY2Etc2VhcmNoLWFpLWlucHV0LWFnZW50LXNlbGVjdC1vcHRpb25zLW9wdGlvbi1jb250ZW50LXRleHRcIiBbbWF0VG9vbHRpcF09XCJhZ2VudC5uYW1lXCIgW21hdFRvb2x0aXBQb3NpdGlvbl09XCIncmlnaHQnXCI+e3sgYWdlbnQubmFtZSB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbWF0LW9wdGlvbj5cbiAgPC9tYXQtc2VsZWN0PlxuXG4gIDxkaXYgY2xhc3M9XCJhY2Etc2VhcmNoLWFpLWlucHV0LWFnZW50LXBvcHVwLWhvdmVyLWNhcmRcIj5cbiAgICA8bWF0LWNhcmQgY2xhc3M9XCJhY2Etc2VhcmNoLWFpLWlucHV0LWFnZW50LXBvcHVwLWhvdmVyLWNhcmQtY29udGFpbmVyXCI+XG4gICAgICA8bWF0LWNhcmQtdGl0bGUgY2xhc3M9XCJhY2Etc2VhcmNoLWFpLWlucHV0LWFnZW50LXBvcHVwLWhvdmVyLWNhcmQtY29udGFpbmVyLXRpdGxlXCI+XG4gICAgICAgIDxhZGYtYXZhdGFyXG4gICAgICAgICAgW2luaXRpYWxzXT1cImluaXRpYWxzQnlBZ2VudElkW2FnZW50Q29udHJvbC52YWx1ZT8uaWRdXCJcbiAgICAgICAgICBbc3JjXT1cImFnZW50Q29udHJvbC52YWx1ZT8uYXZhdGFyVXJsXCJcbiAgICAgICAgICBzaXplPVwiNTBweFwiIC8+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYWNhLXNlYXJjaC1haS1pbnB1dC1hZ2VudC1wb3B1cC1ob3Zlci1jYXJkLWNvbnRhaW5lci10aXRsZS1uYW1lXCJcbiAgICAgICAgICAgICAgW21hdFRvb2x0aXBQb3NpdGlvbl09XCIncmlnaHQnXCJcbiAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiYWdlbnRDb250cm9sLnZhbHVlPy5uYW1lXCI+XG4gICAgICAgICAgICB7eyBhZ2VudENvbnRyb2wudmFsdWU/Lm5hbWUgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9tYXQtY2FyZC10aXRsZT5cbiAgICAgIDxtYXQtY2FyZC1jb250ZW50IGNsYXNzPVwiYWNhLXNlYXJjaC1haS1pbnB1dC1hZ2VudC1wb3B1cC1ob3Zlci1jYXJkLWNvbnRhaW5lci1jb250ZW50XCI+XG4gICAgICAgIHt7IGFnZW50Q29udHJvbC52YWx1ZT8uZGVzY3JpcHRpb24gfX1cbiAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgICA8L21hdC1jYXJkPlxuICA8L2Rpdj5cbjwvZGl2PlxuPGlucHV0XG4gIGNsYXNzPVwiYWNhLXNlYXJjaC1haS1pbnB1dC10ZXh0XCJcbiAgbWF0SW5wdXRcbiAgW2Zvcm1Db250cm9sXT1cInF1ZXJ5Q29udHJvbFwiXG4gIGRhdGEtYXV0b21hdGlvbi1pZD1cImFjYS1zZWFyY2gtYWktaW5wdXRcIlxuICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgfCB0cmFuc2xhdGVcIlxuICAoa2V5dXAuZW50ZXIpPVwib25TZWFyY2hTdWJtaXQoKVwiLz5cbjxidXR0b25cbiAgbWF0LWZsYXQtYnV0dG9uXG4gIGNvbG9yPVwicHJpbWFyeVwiXG4gIGNsYXNzPVwiYWNhLXNlYXJjaC1haS1hc2tpbmctYnV0dG9uXCJcbiAgKGNsaWNrKT1cIm9uU2VhcmNoU3VibWl0KClcIlxuICBbZGlzYWJsZWRdPVwiIXF1ZXJ5Q29udHJvbC52YWx1ZVwiXG4gIGRhdGEtYXV0b21hdGlvbi1pZD1cImFjYS1zZWFyY2gtYWktYXNraW5nLWJ1dHRvblwiPlxuICA8YWRmLWljb24gW3ZhbHVlXT1cIidhZGY6dGhyZWVfbWFnaWNfc3RhcnNfYWknXCIgLz5cbiAgPHNwYW4gY2xhc3M9XCJhY2Etc2VhcmNoLWFpLWFza2luZy1idXR0b24tbGFiZWxcIj57eyAnS05PV0xFREdFX1JFVFJJRVZBTC5TRUFSQ0guU0VBUkNIX0lOUFVULkFTS19CVVRUT05fTEFCRUwnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuPC9idXR0b24+XG4iXX0=