@alfresco/adf-core 8.1.0-15469386840 → 8.1.0-15470372956

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 (575) hide show
  1. package/esm2022/adf-core.mjs +5 -0
  2. package/esm2022/api/alfresco-adf-core-api.mjs +5 -0
  3. package/esm2022/api/index.mjs +20 -0
  4. package/esm2022/api/lib/adf-http-client.service.mjs +311 -0
  5. package/esm2022/api/lib/alfresco-api/alfresco-api.param-encoder.mjs +33 -0
  6. package/esm2022/api/lib/alfresco-api/alfresco-api.response-error.mjs +25 -0
  7. package/esm2022/api/lib/alfresco-api/alfresco-api.utils.mjs +80 -0
  8. package/esm2022/api/lib/interfaces.mjs +18 -0
  9. package/esm2022/api/lib/types.mjs +18 -0
  10. package/esm2022/auth/alfresco-adf-core-auth.mjs +5 -0
  11. package/esm2022/auth/authentication-interceptor/authentication.interceptor.mjs +56 -0
  12. package/esm2022/auth/authentication.mjs +19 -0
  13. package/esm2022/auth/index.mjs +19 -0
  14. package/esm2022/breadcrumbs/alfresco-adf-core-breadcrumbs.mjs +5 -0
  15. package/esm2022/breadcrumbs/components/breadcrumb/breadcrumb.component.mjs +83 -0
  16. package/esm2022/breadcrumbs/components/breadcrumb-item/breadcrumb-item.component.mjs +42 -0
  17. package/esm2022/breadcrumbs/directives/breadcrumb-focus.directive.mjs +44 -0
  18. package/esm2022/breadcrumbs/index.mjs +19 -0
  19. package/esm2022/feature-flags/alfresco-adf-core-feature-flags.mjs +5 -0
  20. package/esm2022/feature-flags/index.mjs +29 -0
  21. package/esm2022/feature-flags/lib/components/feature-flags-wrapper.mjs +36 -0
  22. package/esm2022/feature-flags/lib/components/feature-override-indicator.component.mjs +56 -0
  23. package/esm2022/feature-flags/lib/components/flags/flags.component.mjs +130 -0
  24. package/esm2022/feature-flags/lib/directives/features.directive.mjs +63 -0
  25. package/esm2022/feature-flags/lib/directives/not-features.directive.mjs +63 -0
  26. package/esm2022/feature-flags/lib/guards/is-feature-off.guard.mjs +38 -0
  27. package/esm2022/feature-flags/lib/guards/is-feature-on.guard.mjs +38 -0
  28. package/esm2022/feature-flags/lib/guards/is-flags-override-on.guard.mjs +40 -0
  29. package/esm2022/feature-flags/lib/interfaces/features.interface.mjs +24 -0
  30. package/esm2022/feature-flags/lib/mocks/features-service-mock.factory.mjs +62 -0
  31. package/esm2022/feature-flags/lib/providers/debug-feature-flags.provider.mjs +51 -0
  32. package/esm2022/feature-flags/lib/providers/dummy-feature-flags.provider.mjs +36 -0
  33. package/esm2022/feature-flags/lib/services/debug-features.service.mjs +94 -0
  34. package/esm2022/feature-flags/lib/services/dummy-features.service.mjs +40 -0
  35. package/esm2022/feature-flags/lib/services/flagset.parser.mjs +38 -0
  36. package/esm2022/feature-flags/lib/services/qa-features.helper.mjs +62 -0
  37. package/esm2022/feature-flags/lib/services/storage-features.service.mjs +126 -0
  38. package/esm2022/lib/about/about-extension-list/about-extension-list.component.mjs +52 -0
  39. package/esm2022/lib/about/about-license-list/about-license-list.component.mjs +52 -0
  40. package/esm2022/lib/about/about-module-list/module-list.component.mjs +52 -0
  41. package/esm2022/lib/about/about-package/package-list.component.mjs +66 -0
  42. package/esm2022/lib/about/about-panel.directive.mjs +37 -0
  43. package/esm2022/lib/about/about-repository-info/about-repository-info.component.mjs +60 -0
  44. package/esm2022/lib/about/about-repository-info/repository-info.interface.mjs +18 -0
  45. package/esm2022/lib/about/about-server-settings/about-server-settings.component.mjs +43 -0
  46. package/esm2022/lib/about/about-status-list/about-status-list.component.mjs +52 -0
  47. package/esm2022/lib/about/about.component.mjs +35 -0
  48. package/esm2022/lib/about/about.module.mjs +75 -0
  49. package/esm2022/lib/about/index.mjs +18 -0
  50. package/esm2022/lib/about/interfaces.mjs +18 -0
  51. package/esm2022/lib/about/public-api.mjs +28 -0
  52. package/esm2022/lib/app-config/app-config-storage-prefix.factory.mjs +51 -0
  53. package/esm2022/lib/app-config/app-config.loader.mjs +41 -0
  54. package/esm2022/lib/app-config/app-config.module.mjs +33 -0
  55. package/esm2022/lib/app-config/app-config.pipe.mjs +38 -0
  56. package/esm2022/lib/app-config/app-config.service.mjs +243 -0
  57. package/esm2022/lib/app-config/debug-app-config.service.mjs +44 -0
  58. package/esm2022/lib/app-config/index.mjs +18 -0
  59. package/esm2022/lib/app-config/public-api.mjs +22 -0
  60. package/esm2022/lib/auth/authentication-interceptor/auth-bearer.interceptor.mjs +67 -0
  61. package/esm2022/lib/auth/basic-auth/basic-alfresco-auth.service.mjs +356 -0
  62. package/esm2022/lib/auth/basic-auth/content-auth.mjs +189 -0
  63. package/esm2022/lib/auth/basic-auth/process-auth.mjs +193 -0
  64. package/esm2022/lib/auth/guard/auth-guard-bpm.service.mjs +31 -0
  65. package/esm2022/lib/auth/guard/auth-guard-ecm.service.mjs +31 -0
  66. package/esm2022/lib/auth/guard/auth-guard-sso-role.service.mjs +57 -0
  67. package/esm2022/lib/auth/guard/auth-guard.mjs +53 -0
  68. package/esm2022/lib/auth/guard/auth-guard.service.mjs +113 -0
  69. package/esm2022/lib/auth/index.mjs +18 -0
  70. package/esm2022/lib/auth/interfaces/authentication-service.interface.mjs +18 -0
  71. package/esm2022/lib/auth/interfaces/authentication.interface.mjs +18 -0
  72. package/esm2022/lib/auth/interfaces/identity-group.interface.mjs +18 -0
  73. package/esm2022/lib/auth/interfaces/identity-user.service.interface.mjs +18 -0
  74. package/esm2022/lib/auth/interfaces/openid-configuration.interface.mjs +18 -0
  75. package/esm2022/lib/auth/models/application-access.model.mjs +18 -0
  76. package/esm2022/lib/auth/models/identity-group.model.mjs +18 -0
  77. package/esm2022/lib/auth/models/identity-role.model.mjs +30 -0
  78. package/esm2022/lib/auth/models/identity-user.model.mjs +18 -0
  79. package/esm2022/lib/auth/models/oauth-config.model.mjs +18 -0
  80. package/esm2022/lib/auth/models/redirection.model.mjs +28 -0
  81. package/esm2022/lib/auth/models/user-access.model.mjs +18 -0
  82. package/esm2022/lib/auth/oidc/auth-config.mjs +19 -0
  83. package/esm2022/lib/auth/oidc/auth-config.service.mjs +110 -0
  84. package/esm2022/lib/auth/oidc/auth-routing.module.mjs +34 -0
  85. package/esm2022/lib/auth/oidc/auth.module.mjs +112 -0
  86. package/esm2022/lib/auth/oidc/auth.service.mjs +22 -0
  87. package/esm2022/lib/auth/oidc/oidc-auth.guard.mjs +37 -0
  88. package/esm2022/lib/auth/oidc/oidc-authentication.service.mjs +202 -0
  89. package/esm2022/lib/auth/oidc/public-api.mjs +24 -0
  90. package/esm2022/lib/auth/oidc/redirect-auth.service.mjs +267 -0
  91. package/esm2022/lib/auth/oidc/retry-login.service.mjs +66 -0
  92. package/esm2022/lib/auth/oidc/token.interceptor.mjs +62 -0
  93. package/esm2022/lib/auth/oidc/view/authentication-confirmation/authentication-confirmation.component.mjs +31 -0
  94. package/esm2022/lib/auth/public-api.mjs +44 -0
  95. package/esm2022/lib/auth/services/authentication.service.mjs +190 -0
  96. package/esm2022/lib/auth/services/base-authentication.service.mjs +99 -0
  97. package/esm2022/lib/auth/services/identity-group.service.mjs +269 -0
  98. package/esm2022/lib/auth/services/identity-role.service.mjs +99 -0
  99. package/esm2022/lib/auth/services/identity-user.service.mjs +443 -0
  100. package/esm2022/lib/auth/services/jwt-helper.service.mjs +205 -0
  101. package/esm2022/lib/auth/services/oauth2.service.mjs +69 -0
  102. package/esm2022/lib/auth/services/time-sync.service.mjs +83 -0
  103. package/esm2022/lib/auth/services/user-access.service.mjs +110 -0
  104. package/esm2022/lib/avatar/avatar.component.mjs +51 -0
  105. package/esm2022/lib/blank-page/blank-page.component.mjs +31 -0
  106. package/esm2022/lib/blank-page/blank-page.module.mjs +33 -0
  107. package/esm2022/lib/blank-page/index.mjs +18 -0
  108. package/esm2022/lib/blank-page/public-api.mjs +19 -0
  109. package/esm2022/lib/button/button.component.mjs +61 -0
  110. package/esm2022/lib/card-view/card-view.module.mjs +80 -0
  111. package/esm2022/lib/card-view/components/base-card-view.mjs +51 -0
  112. package/esm2022/lib/card-view/components/card-view/card-view.component.mjs +66 -0
  113. package/esm2022/lib/card-view/components/card-view-arrayitem/card-view-arrayitem.component.mjs +56 -0
  114. package/esm2022/lib/card-view/components/card-view-boolitem/card-view-boolitem.component.mjs +40 -0
  115. package/esm2022/lib/card-view/components/card-view-dateitem/card-view-dateitem.component.mjs +177 -0
  116. package/esm2022/lib/card-view/components/card-view-item-dispatcher/card-view-item-dispatcher.component.mjs +108 -0
  117. package/esm2022/lib/card-view/components/card-view-keyvaluepairsitem/card-view-keyvaluepairsitem.component.mjs +65 -0
  118. package/esm2022/lib/card-view/components/card-view-mapitem/card-view-mapitem.component.mjs +47 -0
  119. package/esm2022/lib/card-view/components/card-view-selectitem/card-view-selectitem.component.mjs +138 -0
  120. package/esm2022/lib/card-view/components/card-view-selectitem/select-filter-input/select-filter-input.component.mjs +114 -0
  121. package/esm2022/lib/card-view/components/card-view-textitem/card-view-textitem.component.mjs +240 -0
  122. package/esm2022/lib/card-view/components/card-view.components.mjs +28 -0
  123. package/esm2022/lib/card-view/index.mjs +18 -0
  124. package/esm2022/lib/card-view/interfaces/base-card-view-update.interface.mjs +18 -0
  125. package/esm2022/lib/card-view/interfaces/card-view-arrayitem-properties.interface.mjs +18 -0
  126. package/esm2022/lib/card-view/interfaces/card-view-boolitem-properties.interface.mjs +18 -0
  127. package/esm2022/lib/card-view/interfaces/card-view-dateitem-properties.interface.mjs +18 -0
  128. package/esm2022/lib/card-view/interfaces/card-view-item-properties.interface.mjs +18 -0
  129. package/esm2022/lib/card-view/interfaces/card-view-item-validator.interface.mjs +18 -0
  130. package/esm2022/lib/card-view/interfaces/card-view-item.interface.mjs +18 -0
  131. package/esm2022/lib/card-view/interfaces/card-view-keyvaluepairsitem-properties.interface.mjs +18 -0
  132. package/esm2022/lib/card-view/interfaces/card-view-selectitem-properties.interface.mjs +18 -0
  133. package/esm2022/lib/card-view/interfaces/card-view-textitem-pipe-property.interface.mjs +18 -0
  134. package/esm2022/lib/card-view/interfaces/card-view-textitem-properties.interface.mjs +18 -0
  135. package/esm2022/lib/card-view/interfaces/card-view.interfaces.mjs +29 -0
  136. package/esm2022/lib/card-view/interfaces/click-notification.interface.mjs +18 -0
  137. package/esm2022/lib/card-view/interfaces/update-notification.interface.mjs +18 -0
  138. package/esm2022/lib/card-view/models/card-view-arrayitem.model.mjs +28 -0
  139. package/esm2022/lib/card-view/models/card-view-baseitem.model.mjs +64 -0
  140. package/esm2022/lib/card-view/models/card-view-boolitem.model.mjs +36 -0
  141. package/esm2022/lib/card-view/models/card-view-dateitem.model.mjs +58 -0
  142. package/esm2022/lib/card-view/models/card-view-datetimeitem.model.mjs +28 -0
  143. package/esm2022/lib/card-view/models/card-view-floatitem.model.mjs +33 -0
  144. package/esm2022/lib/card-view/models/card-view-intitem.model.mjs +36 -0
  145. package/esm2022/lib/card-view/models/card-view-keyvaluepairs.model.mjs +27 -0
  146. package/esm2022/lib/card-view/models/card-view-longitem.model.mjs +36 -0
  147. package/esm2022/lib/card-view/models/card-view-mapitem.model.mjs +32 -0
  148. package/esm2022/lib/card-view/models/card-view-selectitem.model.mjs +41 -0
  149. package/esm2022/lib/card-view/models/card-view-textitem.model.mjs +40 -0
  150. package/esm2022/lib/card-view/models/card-view.models.mjs +29 -0
  151. package/esm2022/lib/card-view/public-api.mjs +25 -0
  152. package/esm2022/lib/card-view/services/card-item-types.service.mjs +54 -0
  153. package/esm2022/lib/card-view/services/card-view-update.service.mjs +59 -0
  154. package/esm2022/lib/card-view/services/card-view.services.mjs +19 -0
  155. package/esm2022/lib/card-view/validators/card-view-item-float.validator.mjs +31 -0
  156. package/esm2022/lib/card-view/validators/card-view-item-int.validator.mjs +35 -0
  157. package/esm2022/lib/card-view/validators/card-view-item-length.validator.mjs +34 -0
  158. package/esm2022/lib/card-view/validators/card-view-item-long.validator.mjs +35 -0
  159. package/esm2022/lib/card-view/validators/card-view-item-match.validator.mjs +35 -0
  160. package/esm2022/lib/card-view/validators/card-view-item-minmax.validator.mjs +35 -0
  161. package/esm2022/lib/card-view/validators/card-view-item-only-positive-int.validator.mjs +32 -0
  162. package/esm2022/lib/card-view/validators/card-view-item-only-positive-long.validator.mjs +31 -0
  163. package/esm2022/lib/card-view/validators/card-view.validators.mjs +26 -0
  164. package/esm2022/lib/card-view/validators/validators.map.mjs +26 -0
  165. package/esm2022/lib/clipboard/clipboard.directive.mjs +99 -0
  166. package/esm2022/lib/clipboard/clipboard.module.mjs +34 -0
  167. package/esm2022/lib/clipboard/clipboard.service.mjs +103 -0
  168. package/esm2022/lib/clipboard/index.mjs +18 -0
  169. package/esm2022/lib/clipboard/public-api.mjs +21 -0
  170. package/esm2022/lib/comments/comment-list/comment-list.component.mjs +53 -0
  171. package/esm2022/lib/comments/comment-list/comment-list.module.mjs +33 -0
  172. package/esm2022/lib/comments/comment-list/index.mjs +18 -0
  173. package/esm2022/lib/comments/comment-list/public-api.mjs +19 -0
  174. package/esm2022/lib/comments/comments.component.mjs +128 -0
  175. package/esm2022/lib/comments/comments.module.mjs +33 -0
  176. package/esm2022/lib/comments/index.mjs +18 -0
  177. package/esm2022/lib/comments/interfaces/comments-service.interface.mjs +18 -0
  178. package/esm2022/lib/comments/interfaces/comments.token.mjs +19 -0
  179. package/esm2022/lib/comments/public-api.mjs +22 -0
  180. package/esm2022/lib/common/index.mjs +35 -0
  181. package/esm2022/lib/common/interface/search-component.interface.mjs +18 -0
  182. package/esm2022/lib/common/mock/app-config.service.mock.mjs +47 -0
  183. package/esm2022/lib/common/models/default-languages.model.mjs +36 -0
  184. package/esm2022/lib/common/models/log-levels.model.mjs +33 -0
  185. package/esm2022/lib/common/models/user-info-mode.enum.mjs +25 -0
  186. package/esm2022/lib/common/services/cookie.service.mjs +82 -0
  187. package/esm2022/lib/common/services/download.service.mjs +102 -0
  188. package/esm2022/lib/common/services/dynamic-component-mapper.service.mjs +89 -0
  189. package/esm2022/lib/common/services/highlight-transform.service.mjs +61 -0
  190. package/esm2022/lib/common/services/language-item.interface.mjs +18 -0
  191. package/esm2022/lib/common/services/log.service.mjs +171 -0
  192. package/esm2022/lib/common/services/page-title.service.mjs +63 -0
  193. package/esm2022/lib/common/services/sort-by-category.service.mjs +81 -0
  194. package/esm2022/lib/common/services/storage.service.mjs +143 -0
  195. package/esm2022/lib/common/services/thumbnail.service.mjs +194 -0
  196. package/esm2022/lib/common/services/url.service.mjs +45 -0
  197. package/esm2022/lib/common/services/user-preferences.service.mjs +238 -0
  198. package/esm2022/lib/common/utils/date-fns-adapter.mjs +115 -0
  199. package/esm2022/lib/common/utils/date-fns-utils.mjs +222 -0
  200. package/esm2022/lib/common/utils/datetime-fns-adapter.mjs +134 -0
  201. package/esm2022/lib/common/utils/file-utils.mjs +65 -0
  202. package/esm2022/lib/common/utils/index.mjs +18 -0
  203. package/esm2022/lib/common/utils/moment-date-adapter.mjs +202 -0
  204. package/esm2022/lib/common/utils/moment-date-formats.model.mjs +32 -0
  205. package/esm2022/lib/common/utils/object-utils.mjs +107 -0
  206. package/esm2022/lib/common/utils/public-api.mjs +25 -0
  207. package/esm2022/lib/common/utils/string-utils.mjs +45 -0
  208. package/esm2022/lib/context-menu/animations.mjs +33 -0
  209. package/esm2022/lib/context-menu/context-menu-list.component.mjs +92 -0
  210. package/esm2022/lib/context-menu/context-menu-overlay.mjs +25 -0
  211. package/esm2022/lib/context-menu/context-menu-overlay.service.mjs +109 -0
  212. package/esm2022/lib/context-menu/context-menu.directive.mjs +63 -0
  213. package/esm2022/lib/context-menu/context-menu.module.mjs +35 -0
  214. package/esm2022/lib/context-menu/context-menu.tokens.mjs +19 -0
  215. package/esm2022/lib/context-menu/index.mjs +18 -0
  216. package/esm2022/lib/context-menu/interfaces.mjs +18 -0
  217. package/esm2022/lib/context-menu/public-api.mjs +21 -0
  218. package/esm2022/lib/core.module.mjs +314 -0
  219. package/esm2022/lib/datatable/components/amount-cell/amount-cell.component.mjs +45 -0
  220. package/esm2022/lib/datatable/components/boolean-cell/boolean-cell.component.mjs +65 -0
  221. package/esm2022/lib/datatable/components/columns-selector/columns-search-filter.pipe.mjs +55 -0
  222. package/esm2022/lib/datatable/components/columns-selector/columns-selector.component.mjs +114 -0
  223. package/esm2022/lib/datatable/components/data-cell.event.mjs +31 -0
  224. package/esm2022/lib/datatable/components/data-row-action.event.mjs +34 -0
  225. package/esm2022/lib/datatable/components/datatable/datatable.component.mjs +915 -0
  226. package/esm2022/lib/datatable/components/datatable-cell/datatable-cell.component.mjs +126 -0
  227. package/esm2022/lib/datatable/components/datatable-row/datatable-row.component.mjs +98 -0
  228. package/esm2022/lib/datatable/components/date-cell/date-cell.component.mjs +78 -0
  229. package/esm2022/lib/datatable/components/empty-list/empty-list.component.mjs +60 -0
  230. package/esm2022/lib/datatable/components/filesize-cell/filesize-cell.component.mjs +49 -0
  231. package/esm2022/lib/datatable/components/icon-cell/icon-cell.component.mjs +67 -0
  232. package/esm2022/lib/datatable/components/json-cell/json-cell.component.mjs +86 -0
  233. package/esm2022/lib/datatable/components/location-cell/location-cell.component.mjs +69 -0
  234. package/esm2022/lib/datatable/components/mocks/datatable.mock.mjs +153 -0
  235. package/esm2022/lib/datatable/components/number-cell/number-cell.component.mjs +42 -0
  236. package/esm2022/lib/datatable/data/data-column.model.mjs +18 -0
  237. package/esm2022/lib/datatable/data/data-row-event.model.mjs +26 -0
  238. package/esm2022/lib/datatable/data/data-row-update.model.mjs +18 -0
  239. package/esm2022/lib/datatable/data/data-row.model.mjs +18 -0
  240. package/esm2022/lib/datatable/data/data-sorting.model.mjs +24 -0
  241. package/esm2022/lib/datatable/data/data-table.schema.mjs +132 -0
  242. package/esm2022/lib/datatable/data/datatable-adapter.mjs +18 -0
  243. package/esm2022/lib/datatable/data/object-datacolumn.model.mjs +46 -0
  244. package/esm2022/lib/datatable/data/object-datarow.model.mjs +38 -0
  245. package/esm2022/lib/datatable/data/object-datatable-adapter.mjs +134 -0
  246. package/esm2022/lib/datatable/data-column/data-column-header.component.mjs +45 -0
  247. package/esm2022/lib/datatable/data-column/data-column-list.component.mjs +36 -0
  248. package/esm2022/lib/datatable/data-column/data-column.component.mjs +114 -0
  249. package/esm2022/lib/datatable/data-column/index.mjs +18 -0
  250. package/esm2022/lib/datatable/data-column/public-api.mjs +20 -0
  251. package/esm2022/lib/datatable/datatable.module.mjs +161 -0
  252. package/esm2022/lib/datatable/directives/custom-empty-content-template.directive.mjs +35 -0
  253. package/esm2022/lib/datatable/directives/custom-loading-template.directive.mjs +30 -0
  254. package/esm2022/lib/datatable/directives/custom-no-permission-template.directive.mjs +35 -0
  255. package/esm2022/lib/datatable/directives/drop-zone.directive.mjs +89 -0
  256. package/esm2022/lib/datatable/directives/header-filter-template.directive.mjs +43 -0
  257. package/esm2022/lib/datatable/directives/loading-template.directive.mjs +46 -0
  258. package/esm2022/lib/datatable/directives/main-data-table-action-template.directive.mjs +43 -0
  259. package/esm2022/lib/datatable/directives/no-content-template.directive.mjs +46 -0
  260. package/esm2022/lib/datatable/directives/no-permission-template.directive.mjs +46 -0
  261. package/esm2022/lib/datatable/directives/resizable/resizable.directive.mjs +173 -0
  262. package/esm2022/lib/datatable/directives/resizable/resize-handle.directive.mjs +72 -0
  263. package/esm2022/lib/datatable/directives/resizable/types.mjs +18 -0
  264. package/esm2022/lib/datatable/index.mjs +18 -0
  265. package/esm2022/lib/datatable/public-api.mjs +55 -0
  266. package/esm2022/lib/datatable/services/datatable.service.mjs +33 -0
  267. package/esm2022/lib/dialogs/confirm-dialog/confirm.dialog.mjs +50 -0
  268. package/esm2022/lib/dialogs/confirm-dialog/confirm.dialog.module.mjs +38 -0
  269. package/esm2022/lib/dialogs/dialog/dialog-data.interface.mjs +18 -0
  270. package/esm2022/lib/dialogs/dialog/dialog.component.mjs +71 -0
  271. package/esm2022/lib/dialogs/dialog/dialog.model.mjs +22 -0
  272. package/esm2022/lib/dialogs/dialog/index.mjs +20 -0
  273. package/esm2022/lib/dialogs/edit-json/edit-json.dialog.mjs +51 -0
  274. package/esm2022/lib/dialogs/edit-json/edit-json.dialog.module.mjs +38 -0
  275. package/esm2022/lib/dialogs/index.mjs +18 -0
  276. package/esm2022/lib/dialogs/public-api.mjs +25 -0
  277. package/esm2022/lib/dialogs/unsaved-changes-dialog/unsaved-changes-dialog.component.mjs +74 -0
  278. package/esm2022/lib/dialogs/unsaved-changes-dialog/unsaved-changes-dialog.model.mjs +18 -0
  279. package/esm2022/lib/dialogs/unsaved-changes-dialog/unsaved-changes-dialog.module.mjs +33 -0
  280. package/esm2022/lib/dialogs/unsaved-changes-dialog/unsaved-changes.guard.mjs +64 -0
  281. package/esm2022/lib/directives/directive.module.mjs +56 -0
  282. package/esm2022/lib/directives/highlight.directive.mjs +67 -0
  283. package/esm2022/lib/directives/index.mjs +18 -0
  284. package/esm2022/lib/directives/infinite-select-scroll.directive.mjs +67 -0
  285. package/esm2022/lib/directives/logout.directive.mjs +72 -0
  286. package/esm2022/lib/directives/public-api.mjs +24 -0
  287. package/esm2022/lib/directives/tooltip-card/tooltip-card.component.mjs +60 -0
  288. package/esm2022/lib/directives/tooltip-card/tooltip-card.directive.mjs +104 -0
  289. package/esm2022/lib/directives/upload.directive.mjs +241 -0
  290. package/esm2022/lib/dynamic-chip-list/chip.mjs +18 -0
  291. package/esm2022/lib/dynamic-chip-list/dynamic-chip-list.component.mjs +205 -0
  292. package/esm2022/lib/dynamic-chip-list/dynamic-chip-list.module.mjs +33 -0
  293. package/esm2022/lib/dynamic-chip-list/index.mjs +18 -0
  294. package/esm2022/lib/dynamic-chip-list/public-api.mjs +20 -0
  295. package/esm2022/lib/events/base-ui.event.mjs +21 -0
  296. package/esm2022/lib/events/base.event.mjs +29 -0
  297. package/esm2022/lib/events/index.mjs +18 -0
  298. package/esm2022/lib/events/public-api.mjs +19 -0
  299. package/esm2022/lib/form/components/form-base.component.mjs +212 -0
  300. package/esm2022/lib/form/components/form-custom-button.directive.mjs +30 -0
  301. package/esm2022/lib/form/components/form-field/form-field.component.mjs +142 -0
  302. package/esm2022/lib/form/components/form-renderer.component.mjs +162 -0
  303. package/esm2022/lib/form/components/form-section/form-section.component.mjs +46 -0
  304. package/esm2022/lib/form/components/helpers/buttons-visibility.mjs +37 -0
  305. package/esm2022/lib/form/components/inplace-form-input/inplace-form-input.component.mjs +37 -0
  306. package/esm2022/lib/form/components/middlewares/decimal-middleware.service.mjs +48 -0
  307. package/esm2022/lib/form/components/middlewares/middleware.mjs +19 -0
  308. package/esm2022/lib/form/components/widgets/amount/amount.widget.mjs +78 -0
  309. package/esm2022/lib/form/components/widgets/base-viewer/base-viewer.widget.mjs +60 -0
  310. package/esm2022/lib/form/components/widgets/checkbox/checkbox.widget.mjs +53 -0
  311. package/esm2022/lib/form/components/widgets/core/container-column.model.mjs +28 -0
  312. package/esm2022/lib/form/components/widgets/core/container.model.mjs +50 -0
  313. package/esm2022/lib/form/components/widgets/core/content-link.model.mjs +52 -0
  314. package/esm2022/lib/form/components/widgets/core/displayable-cm-properties.model.mjs +18 -0
  315. package/esm2022/lib/form/components/widgets/core/error-message.model.mjs +38 -0
  316. package/esm2022/lib/form/components/widgets/core/external-content-link.mjs +18 -0
  317. package/esm2022/lib/form/components/widgets/core/external-content.mjs +18 -0
  318. package/esm2022/lib/form/components/widgets/core/form-field-file-source.mjs +18 -0
  319. package/esm2022/lib/form/components/widgets/core/form-field-metadata.mjs +18 -0
  320. package/esm2022/lib/form/components/widgets/core/form-field-option.mjs +18 -0
  321. package/esm2022/lib/form/components/widgets/core/form-field-rule.mjs +18 -0
  322. package/esm2022/lib/form/components/widgets/core/form-field-selected-folder.mjs +18 -0
  323. package/esm2022/lib/form/components/widgets/core/form-field-templates.mjs +18 -0
  324. package/esm2022/lib/form/components/widgets/core/form-field-types.mjs +74 -0
  325. package/esm2022/lib/form/components/widgets/core/form-field-utils.mjs +23 -0
  326. package/esm2022/lib/form/components/widgets/core/form-field-validator.mjs +268 -0
  327. package/esm2022/lib/form/components/widgets/core/form-field-variable-options.mjs +18 -0
  328. package/esm2022/lib/form/components/widgets/core/form-field.model.mjs +490 -0
  329. package/esm2022/lib/form/components/widgets/core/form-outcome-event.model.mjs +32 -0
  330. package/esm2022/lib/form/components/widgets/core/form-outcome.model.mjs +38 -0
  331. package/esm2022/lib/form/components/widgets/core/form-values.mjs +18 -0
  332. package/esm2022/lib/form/components/widgets/core/form-variable.model.mjs +18 -0
  333. package/esm2022/lib/form/components/widgets/core/form-widget.model.mjs +33 -0
  334. package/esm2022/lib/form/components/widgets/core/form.model.mjs +387 -0
  335. package/esm2022/lib/form/components/widgets/core/group.model.mjs +18 -0
  336. package/esm2022/lib/form/components/widgets/core/index.mjs +49 -0
  337. package/esm2022/lib/form/components/widgets/core/predefined-theme.mjs +115 -0
  338. package/esm2022/lib/form/components/widgets/core/process-form-model.interface.mjs +18 -0
  339. package/esm2022/lib/form/components/widgets/core/process-variable.model.mjs +18 -0
  340. package/esm2022/lib/form/components/widgets/core/tab.model.mjs +34 -0
  341. package/esm2022/lib/form/components/widgets/core/theme.model.mjs +18 -0
  342. package/esm2022/lib/form/components/widgets/core/upload-widget-content-link.model.mjs +27 -0
  343. package/esm2022/lib/form/components/widgets/core/widget-schema.model.mjs +18 -0
  344. package/esm2022/lib/form/components/widgets/date/date.widget.mjs +163 -0
  345. package/esm2022/lib/form/components/widgets/date-time/date-time.widget.mjs +154 -0
  346. package/esm2022/lib/form/components/widgets/decimal/decimal.component.mjs +54 -0
  347. package/esm2022/lib/form/components/widgets/display-text/display-text.schema.mjs +86 -0
  348. package/esm2022/lib/form/components/widgets/display-text/display-text.widget.mjs +47 -0
  349. package/esm2022/lib/form/components/widgets/display-text/index.mjs +19 -0
  350. package/esm2022/lib/form/components/widgets/error/error.component.mjs +93 -0
  351. package/esm2022/lib/form/components/widgets/header/header.schema.mjs +86 -0
  352. package/esm2022/lib/form/components/widgets/header/header.widget.mjs +43 -0
  353. package/esm2022/lib/form/components/widgets/header/index.mjs +19 -0
  354. package/esm2022/lib/form/components/widgets/hyperlink/hyperlink.widget.mjs +71 -0
  355. package/esm2022/lib/form/components/widgets/index.mjs +71 -0
  356. package/esm2022/lib/form/components/widgets/json/json.widget.mjs +67 -0
  357. package/esm2022/lib/form/components/widgets/multiline-text/multiline-text.widget.mjs +56 -0
  358. package/esm2022/lib/form/components/widgets/number/number.widget.mjs +66 -0
  359. package/esm2022/lib/form/components/widgets/reactive-widget.interface.mjs +18 -0
  360. package/esm2022/lib/form/components/widgets/text/text-mask.component.mjs +215 -0
  361. package/esm2022/lib/form/components/widgets/text/text.widget.mjs +66 -0
  362. package/esm2022/lib/form/components/widgets/unknown/unknown.widget.mjs +63 -0
  363. package/esm2022/lib/form/components/widgets/widget.component.mjs +110 -0
  364. package/esm2022/lib/form/events/form-error.event.mjs +24 -0
  365. package/esm2022/lib/form/events/form-field.event.mjs +24 -0
  366. package/esm2022/lib/form/events/form-rules.event.mjs +25 -0
  367. package/esm2022/lib/form/events/form-spinner.event.mjs +23 -0
  368. package/esm2022/lib/form/events/form.event.mjs +29 -0
  369. package/esm2022/lib/form/events/index.mjs +24 -0
  370. package/esm2022/lib/form/events/validate-form-field.event.mjs +24 -0
  371. package/esm2022/lib/form/events/validate-form.event.mjs +25 -0
  372. package/esm2022/lib/form/form-base.module.mjs +90 -0
  373. package/esm2022/lib/form/index.mjs +18 -0
  374. package/esm2022/lib/form/models/form-rules.model.mjs +77 -0
  375. package/esm2022/lib/form/models/task-process-variable.model.mjs +19 -0
  376. package/esm2022/lib/form/models/widget-visibility.model.mjs +104 -0
  377. package/esm2022/lib/form/pipes/field-style.pipe.mjs +45 -0
  378. package/esm2022/lib/form/pipes/index.mjs +18 -0
  379. package/esm2022/lib/form/public-api.mjs +35 -0
  380. package/esm2022/lib/form/services/form-rendering.service.mjs +53 -0
  381. package/esm2022/lib/form/services/form-validation-service.interface.mjs +18 -0
  382. package/esm2022/lib/form/services/form.service.mjs +86 -0
  383. package/esm2022/lib/form/services/widget-visibility.service.mjs +294 -0
  384. package/esm2022/lib/header/header.component.mjs +73 -0
  385. package/esm2022/lib/header/index.mjs +18 -0
  386. package/esm2022/lib/header/navbar/navbar-item.component.mjs +37 -0
  387. package/esm2022/lib/header/navbar/navbar.component.mjs +36 -0
  388. package/esm2022/lib/header/public-api.mjs +20 -0
  389. package/esm2022/lib/icon/icon.component.mjs +51 -0
  390. package/esm2022/lib/icon/icon.module.mjs +36 -0
  391. package/esm2022/lib/icon/index.mjs +18 -0
  392. package/esm2022/lib/icon/public-api.mjs +19 -0
  393. package/esm2022/lib/identity-user-info/identity-user-info.component.mjs +87 -0
  394. package/esm2022/lib/identity-user-info/identity-user-info.module.mjs +33 -0
  395. package/esm2022/lib/identity-user-info/index.mjs +18 -0
  396. package/esm2022/lib/identity-user-info/public-api.mjs +19 -0
  397. package/esm2022/lib/info-drawer/index.mjs +18 -0
  398. package/esm2022/lib/info-drawer/info-drawer-layout.component.mjs +71 -0
  399. package/esm2022/lib/info-drawer/info-drawer.component.mjs +114 -0
  400. package/esm2022/lib/info-drawer/info-drawer.module.mjs +53 -0
  401. package/esm2022/lib/info-drawer/public-api.mjs +20 -0
  402. package/esm2022/lib/interface/index.mjs +18 -0
  403. package/esm2022/lib/interface/injection.tokens.mjs +19 -0
  404. package/esm2022/lib/interface/public-api.mjs +18 -0
  405. package/esm2022/lib/language-menu/index.mjs +18 -0
  406. package/esm2022/lib/language-menu/language-menu.component.mjs +61 -0
  407. package/esm2022/lib/language-menu/language-menu.module.mjs +35 -0
  408. package/esm2022/lib/language-menu/language-picker.component.mjs +78 -0
  409. package/esm2022/lib/language-menu/public-api.mjs +21 -0
  410. package/esm2022/lib/language-menu/service/language.service.interface.mjs +18 -0
  411. package/esm2022/lib/language-menu/service/language.service.mjs +34 -0
  412. package/esm2022/lib/layout/components/header/header.component.mjs +100 -0
  413. package/esm2022/lib/layout/components/layout-container/layout-container.component.mjs +180 -0
  414. package/esm2022/lib/layout/components/sidebar-action/sidebar-action-menu.component.mjs +82 -0
  415. package/esm2022/lib/layout/components/sidenav-layout/sidenav-layout.component.mjs +145 -0
  416. package/esm2022/lib/layout/directives/sidenav-layout-content.directive.mjs +33 -0
  417. package/esm2022/lib/layout/directives/sidenav-layout-header.directive.mjs +33 -0
  418. package/esm2022/lib/layout/directives/sidenav-layout-navigation.directive.mjs +33 -0
  419. package/esm2022/lib/layout/index.mjs +18 -0
  420. package/esm2022/lib/layout/layout.module.mjs +72 -0
  421. package/esm2022/lib/layout/public-api.mjs +25 -0
  422. package/esm2022/lib/login/components/login/login.component.mjs +368 -0
  423. package/esm2022/lib/login/components/login-dialog/login-dialog-component-data.interface.mjs +18 -0
  424. package/esm2022/lib/login/components/login-dialog/login-dialog.component.mjs +58 -0
  425. package/esm2022/lib/login/components/login-dialog-panel/login-dialog-panel.component.mjs +48 -0
  426. package/esm2022/lib/login/directives/login-footer.directive.mjs +41 -0
  427. package/esm2022/lib/login/directives/login-header.directive.mjs +41 -0
  428. package/esm2022/lib/login/index.mjs +18 -0
  429. package/esm2022/lib/login/login.module.mjs +54 -0
  430. package/esm2022/lib/login/models/login-error.event.mjs +22 -0
  431. package/esm2022/lib/login/models/login-submit.event.mjs +32 -0
  432. package/esm2022/lib/login/models/login-success.event.mjs +24 -0
  433. package/esm2022/lib/login/public-api.mjs +27 -0
  434. package/esm2022/lib/material.module.mjs +254 -0
  435. package/esm2022/lib/mock/cookie.service.mock.mjs +43 -0
  436. package/esm2022/lib/mock/data-column.mock.mjs +73 -0
  437. package/esm2022/lib/mock/event.mock.mjs +39 -0
  438. package/esm2022/lib/mock/form/form-definition-readonly.mock.mjs +225 -0
  439. package/esm2022/lib/mock/form/form-definition-visibility.mock.mjs +347 -0
  440. package/esm2022/lib/mock/form/form-definition.mock.mjs +403 -0
  441. package/esm2022/lib/mock/form/form.component.mock.mjs +275 -0
  442. package/esm2022/lib/mock/form/form.service.mock.mjs +248 -0
  443. package/esm2022/lib/mock/form/widget-visibility.service.mock.mjs +1835 -0
  444. package/esm2022/lib/mock/index.mjs +18 -0
  445. package/esm2022/lib/mock/public-api.mjs +27 -0
  446. package/esm2022/lib/mock/translation.service.mock.mjs +44 -0
  447. package/esm2022/lib/models/comment.model.mjs +51 -0
  448. package/esm2022/lib/models/component.model.mjs +24 -0
  449. package/esm2022/lib/models/decimal-number.model.mjs +26 -0
  450. package/esm2022/lib/models/general-user.model.mjs +24 -0
  451. package/esm2022/lib/models/index.mjs +18 -0
  452. package/esm2022/lib/models/pagination.model.mjs +29 -0
  453. package/esm2022/lib/models/path.model.mjs +24 -0
  454. package/esm2022/lib/models/product-version.model.mjs +28 -0
  455. package/esm2022/lib/models/public-api.mjs +24 -0
  456. package/esm2022/lib/models/request-pagination.model.mjs +25 -0
  457. package/esm2022/lib/notifications/components/add-notification.stories.component.mjs +44 -0
  458. package/esm2022/lib/notifications/components/notification-history.component.mjs +139 -0
  459. package/esm2022/lib/notifications/helpers/notification.factory.mjs +43 -0
  460. package/esm2022/lib/notifications/index.mjs +18 -0
  461. package/esm2022/lib/notifications/models/notification.model.mjs +25 -0
  462. package/esm2022/lib/notifications/notification-history.module.mjs +35 -0
  463. package/esm2022/lib/notifications/public-api.mjs +23 -0
  464. package/esm2022/lib/notifications/services/notification.service.mjs +166 -0
  465. package/esm2022/lib/pagination/index.mjs +18 -0
  466. package/esm2022/lib/pagination/infinite-pagination.component.mjs +112 -0
  467. package/esm2022/lib/pagination/paginated-component.interface.mjs +18 -0
  468. package/esm2022/lib/pagination/pagination-component.interface.mjs +18 -0
  469. package/esm2022/lib/pagination/pagination.component.mjs +263 -0
  470. package/esm2022/lib/pagination/pagination.module.mjs +35 -0
  471. package/esm2022/lib/pagination/public-api.mjs +22 -0
  472. package/esm2022/lib/pipes/date-time.pipe.mjs +46 -0
  473. package/esm2022/lib/pipes/decimal-number.pipe.mjs +78 -0
  474. package/esm2022/lib/pipes/file-size.pipe.mjs +54 -0
  475. package/esm2022/lib/pipes/file-type.pipe.mjs +40 -0
  476. package/esm2022/lib/pipes/format-space.pipe.mjs +39 -0
  477. package/esm2022/lib/pipes/full-name.pipe.mjs +43 -0
  478. package/esm2022/lib/pipes/index.mjs +18 -0
  479. package/esm2022/lib/pipes/localized-date.pipe.mjs +70 -0
  480. package/esm2022/lib/pipes/multi-value.pipe.mjs +37 -0
  481. package/esm2022/lib/pipes/pipe.module.mjs +83 -0
  482. package/esm2022/lib/pipes/public-api.mjs +30 -0
  483. package/esm2022/lib/pipes/text-highlight.pipe.mjs +39 -0
  484. package/esm2022/lib/pipes/time-ago.pipe.mjs +65 -0
  485. package/esm2022/lib/pipes/truncate.pipe.mjs +33 -0
  486. package/esm2022/lib/pipes/user-initial.pipe.mjs +52 -0
  487. package/esm2022/lib/pipes/user-like.interface.mjs +18 -0
  488. package/esm2022/lib/progress/progress.component.mjs +90 -0
  489. package/esm2022/lib/search-text/animations.mjs +32 -0
  490. package/esm2022/lib/search-text/index.mjs +18 -0
  491. package/esm2022/lib/search-text/models/search-text-input.model.mjs +23 -0
  492. package/esm2022/lib/search-text/public-api.mjs +22 -0
  493. package/esm2022/lib/search-text/search-text-input.component.mjs +294 -0
  494. package/esm2022/lib/search-text/search-text-input.module.mjs +35 -0
  495. package/esm2022/lib/search-text/search-trigger.directive.mjs +181 -0
  496. package/esm2022/lib/snackbar-content/index.mjs +18 -0
  497. package/esm2022/lib/snackbar-content/public-api.mjs +20 -0
  498. package/esm2022/lib/snackbar-content/snack-bar-data.mjs +18 -0
  499. package/esm2022/lib/snackbar-content/snackbar-content.component.mjs +48 -0
  500. package/esm2022/lib/snackbar-content/snackbar-content.module.mjs +38 -0
  501. package/esm2022/lib/sorting-picker/index.mjs +18 -0
  502. package/esm2022/lib/sorting-picker/public-api.mjs +18 -0
  503. package/esm2022/lib/sorting-picker/sorting-picker.component.mjs +68 -0
  504. package/esm2022/lib/templates/empty-content/empty-content.component.mjs +44 -0
  505. package/esm2022/lib/templates/error-content/error-content.component.mjs +62 -0
  506. package/esm2022/lib/templates/index.mjs +18 -0
  507. package/esm2022/lib/templates/public-api.mjs +20 -0
  508. package/esm2022/lib/templates/template.module.mjs +38 -0
  509. package/esm2022/lib/testing/core.story.module.mjs +39 -0
  510. package/esm2022/lib/testing/core.testing.module.mjs +35 -0
  511. package/esm2022/lib/testing/index.mjs +22 -0
  512. package/esm2022/lib/testing/noop-auth.module.mjs +80 -0
  513. package/esm2022/lib/testing/noop-translate.module.mjs +61 -0
  514. package/esm2022/lib/testing/unit-testing-utils.mjs +364 -0
  515. package/esm2022/lib/toolbar/index.mjs +18 -0
  516. package/esm2022/lib/toolbar/public-api.mjs +21 -0
  517. package/esm2022/lib/toolbar/toolbar-divider.component.mjs +27 -0
  518. package/esm2022/lib/toolbar/toolbar-title.component.mjs +32 -0
  519. package/esm2022/lib/toolbar/toolbar.component.mjs +40 -0
  520. package/esm2022/lib/toolbar/toolbar.module.mjs +36 -0
  521. package/esm2022/lib/translation/index.mjs +18 -0
  522. package/esm2022/lib/translation/public-api.mjs +19 -0
  523. package/esm2022/lib/translation/translate-loader.service.mjs +148 -0
  524. package/esm2022/lib/translation/translation.service.mjs +148 -0
  525. package/esm2022/lib/viewer/components/download-prompt-dialog/download-prompt-dialog.component.mjs +37 -0
  526. package/esm2022/lib/viewer/components/img-viewer/img-viewer.component.mjs +221 -0
  527. package/esm2022/lib/viewer/components/media-player/media-player.component.mjs +64 -0
  528. package/esm2022/lib/viewer/components/pdf-viewer/pdf-viewer.component.mjs +546 -0
  529. package/esm2022/lib/viewer/components/pdf-viewer-password-dialog/pdf-viewer-password-dialog.mjs +61 -0
  530. package/esm2022/lib/viewer/components/pdf-viewer-thumb/pdf-viewer-thumb.component.mjs +49 -0
  531. package/esm2022/lib/viewer/components/pdf-viewer-thumbnails/pdf-viewer-thumbnails.component.mjs +198 -0
  532. package/esm2022/lib/viewer/components/txt-viewer/txt-viewer.component.mjs +77 -0
  533. package/esm2022/lib/viewer/components/unknown-format/unknown-format.component.mjs +33 -0
  534. package/esm2022/lib/viewer/components/viewer-more-actions.component.mjs +34 -0
  535. package/esm2022/lib/viewer/components/viewer-open-with.component.mjs +34 -0
  536. package/esm2022/lib/viewer/components/viewer-render/viewer-render.component.mjs +219 -0
  537. package/esm2022/lib/viewer/components/viewer-sidebar.component.mjs +46 -0
  538. package/esm2022/lib/viewer/components/viewer-toolbar-actions.component.mjs +34 -0
  539. package/esm2022/lib/viewer/components/viewer-toolbar-custom-actions.component.mjs +34 -0
  540. package/esm2022/lib/viewer/components/viewer-toolbar.component.mjs +34 -0
  541. package/esm2022/lib/viewer/components/viewer.component.mjs +477 -0
  542. package/esm2022/lib/viewer/directives/viewer-extension.directive.mjs +67 -0
  543. package/esm2022/lib/viewer/index.mjs +18 -0
  544. package/esm2022/lib/viewer/models/download-prompt.actions.mjs +23 -0
  545. package/esm2022/lib/viewer/models/viewer.model.mjs +22 -0
  546. package/esm2022/lib/viewer/public-api.mjs +40 -0
  547. package/esm2022/lib/viewer/services/rendering-queue.services.mjs +179 -0
  548. package/esm2022/lib/viewer/services/view-util.service.mjs +149 -0
  549. package/esm2022/lib/viewer/viewer.module.mjs +112 -0
  550. package/esm2022/public-api.mjs +60 -0
  551. package/esm2022/shell/alfresco-adf-core-shell.mjs +5 -0
  552. package/esm2022/shell/index.mjs +20 -0
  553. package/esm2022/shell/lib/components/shell/shell.component.mjs +122 -0
  554. package/esm2022/shell/lib/services/shell-app.service.mjs +22 -0
  555. package/esm2022/shell/lib/shell.module.mjs +79 -0
  556. package/esm2022/shell/lib/shell.routes.mjs +25 -0
  557. package/feature-flags/lib/providers/debug-feature-flags.provider.d.ts +35 -4
  558. package/fesm2022/adf-core.mjs +979 -958
  559. package/fesm2022/adf-core.mjs.map +1 -1
  560. package/fesm2022/alfresco-adf-core-api.mjs +4 -4
  561. package/fesm2022/alfresco-adf-core-api.mjs.map +1 -1
  562. package/fesm2022/alfresco-adf-core-auth.mjs +3 -3
  563. package/fesm2022/alfresco-adf-core-auth.mjs.map +1 -1
  564. package/fesm2022/alfresco-adf-core-breadcrumbs.mjs +11 -11
  565. package/fesm2022/alfresco-adf-core-breadcrumbs.mjs.map +1 -1
  566. package/fesm2022/alfresco-adf-core-feature-flags.mjs +56 -51
  567. package/fesm2022/alfresco-adf-core-feature-flags.mjs.map +1 -1
  568. package/fesm2022/alfresco-adf-core-shell.mjs +9 -9
  569. package/fesm2022/alfresco-adf-core-shell.mjs.map +1 -1
  570. package/lib/card-view/components/base-card-view.d.ts +1 -1
  571. package/lib/datatable/data/data-table.schema.d.ts +1 -1
  572. package/lib/testing/unit-testing-utils.d.ts +1 -2
  573. package/lib/viewer/components/pdf-viewer/pdf-viewer.component.d.ts +2 -2
  574. package/lib/viewer/components/viewer-render/viewer-render.component.d.ts +9 -5
  575. package/package.json +19 -7
@@ -0,0 +1,294 @@
1
+ import { NgClass, NgIf } from '@angular/common';
2
+ import { Component, DestroyRef, ElementRef, EventEmitter, inject, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
3
+ import { FormsModule } from '@angular/forms';
4
+ import { MatButtonModule } from '@angular/material/button';
5
+ import { MatFormFieldModule } from '@angular/material/form-field';
6
+ import { MatIconModule } from '@angular/material/icon';
7
+ import { MatInputModule } from '@angular/material/input';
8
+ import { TranslateModule } from '@ngx-translate/core';
9
+ import { Observable, Subject } from 'rxjs';
10
+ import { debounceTime, filter } from 'rxjs/operators';
11
+ import { UserPreferencesService } from '../common';
12
+ import { searchAnimation } from './animations';
13
+ import { SearchTextStateEnum } from './models/search-text-input.model';
14
+ import { SearchTriggerDirective } from './search-trigger.directive';
15
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
16
+ import * as i0 from "@angular/core";
17
+ import * as i1 from "../common";
18
+ import * as i2 from "@angular/material/button";
19
+ import * as i3 from "@angular/material/icon";
20
+ import * as i4 from "@ngx-translate/core";
21
+ import * as i5 from "@angular/material/form-field";
22
+ import * as i6 from "@angular/material/input";
23
+ import * as i7 from "@angular/forms";
24
+ export class SearchTextInputComponent {
25
+ constructor(userPreferencesService) {
26
+ this.userPreferencesService = userPreferencesService;
27
+ /** Toggles auto-completion of the search input field. */
28
+ this.autocomplete = false;
29
+ /**
30
+ * Toggles whether to use an expanding search control. If false
31
+ * then a regular input is used.
32
+ */
33
+ this.expandable = true;
34
+ /** Type of the input field to render, e.g. "search" or "text" (default). */
35
+ this.inputType = 'text';
36
+ /** Toggles "find-as-you-type" suggestions for possible matches. */
37
+ this.liveSearchEnabled = true;
38
+ /** Trigger autocomplete results on input change. */
39
+ this.searchAutocomplete = false;
40
+ /** Search term preselected */
41
+ this.searchTerm = '';
42
+ /** Debounce time in milliseconds. */
43
+ this.debounceTime = 0;
44
+ /** Collapse search bar on submit. */
45
+ this.collapseOnSubmit = true;
46
+ /** Default state expanded or Collapsed. */
47
+ this.defaultState = SearchTextStateEnum.collapsed;
48
+ /** Toggles whether to collapse the search on blur. */
49
+ this.collapseOnBlur = true;
50
+ /** Toggles whether to show a clear button that closes the search */
51
+ this.showClearButton = false;
52
+ /** Placeholder text to show in the input field */
53
+ this.placeholder = '';
54
+ /** Label text to show over the input field */
55
+ this.label = '';
56
+ /** Hint label */
57
+ this.hintLabel = '';
58
+ /**
59
+ * Emitted when the search term is changed. The search term is provided
60
+ * in the 'value' property of the returned object. If the term is less
61
+ * than three characters in length then it is truncated to an empty
62
+ * string.
63
+ */
64
+ this.searchChange = new EventEmitter();
65
+ /**
66
+ * Emitted when the search is submitted by pressing the ENTER key.
67
+ * The search term is provided as the value of the event.
68
+ */
69
+ this.submit = new EventEmitter();
70
+ /** Emitted when the result list is selected */
71
+ this.selectResult = new EventEmitter();
72
+ /** Emitted when the result list is reset */
73
+ this.reset = new EventEmitter();
74
+ /** Emitted when the search visibility changes. True when the search is active, false when it is inactive */
75
+ this.searchVisibility = new EventEmitter();
76
+ this.animationStates = {
77
+ ltr: {
78
+ active: { value: 'active', params: { 'margin-left': 13 } },
79
+ inactive: { value: 'inactive', params: { transform: 'translateX(100%)' } }
80
+ },
81
+ rtl: {
82
+ active: { value: 'active', params: { 'margin-right': 13 } },
83
+ inactive: { value: 'inactive', params: { transform: 'translateX(-100%)' } }
84
+ }
85
+ };
86
+ this.dir = 'ltr';
87
+ this.toggleSearch = new Subject();
88
+ this.valueChange = new Subject();
89
+ this.toggle$ = this.toggleSearch.asObservable();
90
+ this.destroyRef = inject(DestroyRef);
91
+ this.toggleSubscription = this.toggle$.pipe(debounceTime(200), takeUntilDestroyed()).subscribe(() => {
92
+ if (this.expandable) {
93
+ this.subscriptAnimationState = this.toggleAnimation();
94
+ if (this.subscriptAnimationState.value === 'inactive') {
95
+ this.searchTerm = '';
96
+ this.reset.emit(true);
97
+ if (document.activeElement.id === this.searchInput.nativeElement.id) {
98
+ this.searchInput.nativeElement.blur();
99
+ }
100
+ }
101
+ this.emitVisibilitySearch();
102
+ }
103
+ });
104
+ }
105
+ ngOnInit() {
106
+ this.userPreferencesService
107
+ .select('textOrientation')
108
+ .pipe(takeUntilDestroyed(this.destroyRef))
109
+ .subscribe((direction) => {
110
+ this.dir = direction;
111
+ this.subscriptAnimationState = this.getDefaultState(this.dir);
112
+ });
113
+ this.subscriptAnimationState = this.getDefaultState(this.dir);
114
+ this.setValueChangeHandler();
115
+ this.setupFocusEventHandlers();
116
+ }
117
+ applySearchFocus(animationDoneEvent) {
118
+ if (animationDoneEvent.toState === 'active' && this.isDefaultStateCollapsed()) {
119
+ this.searchInput.nativeElement.focus();
120
+ }
121
+ }
122
+ getAutoComplete() {
123
+ return this.autocomplete ? 'on' : 'off';
124
+ }
125
+ toggleAnimation() {
126
+ if (this.dir === 'ltr') {
127
+ return this.subscriptAnimationState.value === 'inactive'
128
+ ? { value: 'active', params: { 'margin-left': 13 } }
129
+ : { value: 'inactive', params: { transform: 'translateX(100%)' } };
130
+ }
131
+ else {
132
+ return this.subscriptAnimationState.value === 'inactive'
133
+ ? { value: 'active', params: { 'margin-right': 13 } }
134
+ : { value: 'inactive', params: { transform: 'translateX(-100%)' } };
135
+ }
136
+ }
137
+ getDefaultState(dir) {
138
+ if (this.dir) {
139
+ return this.getAnimationState(dir);
140
+ }
141
+ return this.animationStates.ltr.inactive;
142
+ }
143
+ getAnimationState(dir) {
144
+ if (this.expandable && this.isDefaultStateExpanded()) {
145
+ return this.animationStates[dir].active;
146
+ }
147
+ else if (this.expandable) {
148
+ return this.animationStates[dir].inactive;
149
+ }
150
+ else {
151
+ return { value: 'no-animation' };
152
+ }
153
+ }
154
+ setupFocusEventHandlers() {
155
+ if (this.focusListener) {
156
+ const focusEvents = this.focusListener.pipe(debounceTime(50), filter(($event) => this.isSearchBarActive() && ($event.type === 'blur' || $event.type === 'focusout' || $event.type === 'focus')), takeUntilDestroyed(this.destroyRef));
157
+ this.focusSubscription = focusEvents.subscribe((event) => {
158
+ if (event.type === 'focus') {
159
+ this.searchInput.nativeElement.focus();
160
+ }
161
+ else {
162
+ this.toggleSearchBar();
163
+ }
164
+ });
165
+ }
166
+ }
167
+ setValueChangeHandler() {
168
+ this.valueChange.pipe(debounceTime(this.debounceTime), takeUntilDestroyed(this.destroyRef)).subscribe((value) => {
169
+ this.searchChange.emit(value);
170
+ });
171
+ }
172
+ selectFirstResult($event) {
173
+ this.selectResult.emit($event);
174
+ }
175
+ onBlur($event) {
176
+ if (this.collapseOnBlur && !$event.relatedTarget) {
177
+ this.resetSearch();
178
+ }
179
+ }
180
+ inputChange($event) {
181
+ this.valueChange.next($event);
182
+ }
183
+ toggleSearchBar() {
184
+ if (this.toggleSearch) {
185
+ this.toggleSearch.next({});
186
+ }
187
+ }
188
+ searchSubmit(event) {
189
+ this.submit.emit(event);
190
+ if (this.collapseOnSubmit) {
191
+ this.toggleSearchBar();
192
+ }
193
+ }
194
+ activateToolbar() {
195
+ if (!this.isSearchBarActive()) {
196
+ this.toggleSearchBar();
197
+ }
198
+ return false;
199
+ }
200
+ isSearchBarActive() {
201
+ return this.subscriptAnimationState.value === 'active';
202
+ }
203
+ ngOnDestroy() {
204
+ if (this.toggleSearch) {
205
+ this.toggleSubscription.unsubscribe();
206
+ this.toggleSearch.complete();
207
+ this.toggleSearch = null;
208
+ }
209
+ if (this.focusSubscription) {
210
+ this.focusSubscription.unsubscribe();
211
+ this.focusSubscription = null;
212
+ this.focusListener = null;
213
+ }
214
+ }
215
+ canShowClearSearch() {
216
+ return this.showClearButton && this.isSearchBarActive();
217
+ }
218
+ resetSearch() {
219
+ if (this.isSearchBarActive()) {
220
+ this.toggleSearchBar();
221
+ }
222
+ }
223
+ isDefaultStateCollapsed() {
224
+ return this.defaultState === SearchTextStateEnum.collapsed;
225
+ }
226
+ isDefaultStateExpanded() {
227
+ return this.defaultState === SearchTextStateEnum.expanded;
228
+ }
229
+ emitVisibilitySearch() {
230
+ this.searchVisibility.emit(this.isSearchBarActive());
231
+ }
232
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchTextInputComponent, deps: [{ token: i1.UserPreferencesService }], target: i0.ɵɵFactoryTarget.Component }); }
233
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SearchTextInputComponent, isStandalone: true, selector: "adf-search-text-input", inputs: { autocomplete: "autocomplete", expandable: "expandable", inputType: "inputType", liveSearchEnabled: "liveSearchEnabled", searchAutocomplete: "searchAutocomplete", searchTerm: "searchTerm", debounceTime: "debounceTime", focusListener: "focusListener", collapseOnSubmit: "collapseOnSubmit", defaultState: "defaultState", collapseOnBlur: "collapseOnBlur", showClearButton: "showClearButton", placeholder: "placeholder", label: "label", hintLabel: "hintLabel" }, outputs: { searchChange: "searchChange", submit: "submit", selectResult: "selectResult", reset: "reset", searchVisibility: "searchVisibility" }, host: { classAttribute: "adf-search-text-input" }, viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"adf-search-container\" [attr.state]=\"subscriptAnimationState.value\">\n <div class=\"adf-search-container-transition\"\n [@transitionMessages]=\"subscriptAnimationState\"\n (@transitionMessages.done)=\"applySearchFocus($event)\">\n <button mat-icon-button\n *ngIf=\"expandable\"\n id=\"adf-search-button\"\n class=\"adf-search-button\"\n [ngClass]=\"{'adf-search-button-inactive': subscriptAnimationState.value === 'inactive'}\"\n [title]=\"'SEARCH.BUTTON.TOOLTIP' | translate\"\n (click)=\"toggleSearchBar()\"\n (keyup.enter)=\"toggleSearchBar()\">\n <mat-icon [attr.aria-label]=\"'SEARCH.BUTTON.ARIA-LABEL' | translate\">search</mat-icon>\n </button>\n <mat-form-field class=\"adf-input-form-field-divider\" [hintLabel]=\"hintLabel\">\n <mat-label *ngIf='label'>{{label}}</mat-label>\n <input matInput\n #searchInput\n [attr.aria-label]=\"'SEARCH.INPUT.ARIA-LABEL' | translate\"\n [attr.type]=\"inputType\"\n [autocomplete]=\"getAutoComplete()\"\n id=\"adf-control-input\"\n [(ngModel)]=\"searchTerm\"\n [placeholder]=\"placeholder\"\n (focus)=\"activateToolbar()\"\n (blur)=\"onBlur($event)\"\n (keyup.escape)=\"toggleSearchBar()\"\n (keyup.arrowdown)=\"selectFirstResult($event)\"\n (ngModelChange)=\"inputChange($event)\"\n [searchAutocomplete]=\"searchAutocomplete ? searchAutocomplete : null\"\n (keyup.enter)=\"searchSubmit($event)\">\n <button mat-icon-button\n *ngIf=\"canShowClearSearch()\"\n matSuffix\n data-automation-id=\"adf-clear-search-button\"\n class=\"adf-clear-search-button\"\n [title]=\"'SEARCH.FILTER.BUTTONS.CLOSE' | translate\"\n (click)=\"resetSearch()\"\n (keyup.enter)=\"resetSearch()\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </div>\n</div>\n", styles: [".adf-search-container:has(.adf-input-form-field-divider){overflow:hidden}.adf-search-container .mat-mdc-form-field-subscript-wrapper{display:none}.adf-search-container .adf-search-container-transition{display:flex;align-items:center}.adf-search-container .adf-search-fixed-text{line-height:normal}.adf-search-container .adf-clear-search-button{font-size:var(--theme-button-font-size);cursor:pointer}.adf-search-container .adf-highlight{color:var(--adf-theme-primary-900)}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { 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" }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i6.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: FormsModule }, { kind: "directive", type: i7.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: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: SearchTriggerDirective, selector: "input[searchAutocomplete], textarea[searchAutocomplete]", inputs: ["searchAutocomplete", "autocomplete"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], animations: [searchAnimation], encapsulation: i0.ViewEncapsulation.None }); }
234
+ }
235
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchTextInputComponent, decorators: [{
236
+ type: Component,
237
+ args: [{ selector: 'adf-search-text-input', standalone: true, animations: [searchAnimation], encapsulation: ViewEncapsulation.None, imports: [
238
+ MatButtonModule,
239
+ MatIconModule,
240
+ TranslateModule,
241
+ MatFormFieldModule,
242
+ MatInputModule,
243
+ FormsModule,
244
+ SearchTriggerDirective,
245
+ NgIf,
246
+ NgClass
247
+ ], host: {
248
+ class: 'adf-search-text-input'
249
+ }, template: "<div class=\"adf-search-container\" [attr.state]=\"subscriptAnimationState.value\">\n <div class=\"adf-search-container-transition\"\n [@transitionMessages]=\"subscriptAnimationState\"\n (@transitionMessages.done)=\"applySearchFocus($event)\">\n <button mat-icon-button\n *ngIf=\"expandable\"\n id=\"adf-search-button\"\n class=\"adf-search-button\"\n [ngClass]=\"{'adf-search-button-inactive': subscriptAnimationState.value === 'inactive'}\"\n [title]=\"'SEARCH.BUTTON.TOOLTIP' | translate\"\n (click)=\"toggleSearchBar()\"\n (keyup.enter)=\"toggleSearchBar()\">\n <mat-icon [attr.aria-label]=\"'SEARCH.BUTTON.ARIA-LABEL' | translate\">search</mat-icon>\n </button>\n <mat-form-field class=\"adf-input-form-field-divider\" [hintLabel]=\"hintLabel\">\n <mat-label *ngIf='label'>{{label}}</mat-label>\n <input matInput\n #searchInput\n [attr.aria-label]=\"'SEARCH.INPUT.ARIA-LABEL' | translate\"\n [attr.type]=\"inputType\"\n [autocomplete]=\"getAutoComplete()\"\n id=\"adf-control-input\"\n [(ngModel)]=\"searchTerm\"\n [placeholder]=\"placeholder\"\n (focus)=\"activateToolbar()\"\n (blur)=\"onBlur($event)\"\n (keyup.escape)=\"toggleSearchBar()\"\n (keyup.arrowdown)=\"selectFirstResult($event)\"\n (ngModelChange)=\"inputChange($event)\"\n [searchAutocomplete]=\"searchAutocomplete ? searchAutocomplete : null\"\n (keyup.enter)=\"searchSubmit($event)\">\n <button mat-icon-button\n *ngIf=\"canShowClearSearch()\"\n matSuffix\n data-automation-id=\"adf-clear-search-button\"\n class=\"adf-clear-search-button\"\n [title]=\"'SEARCH.FILTER.BUTTONS.CLOSE' | translate\"\n (click)=\"resetSearch()\"\n (keyup.enter)=\"resetSearch()\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </div>\n</div>\n", styles: [".adf-search-container:has(.adf-input-form-field-divider){overflow:hidden}.adf-search-container .mat-mdc-form-field-subscript-wrapper{display:none}.adf-search-container .adf-search-container-transition{display:flex;align-items:center}.adf-search-container .adf-search-fixed-text{line-height:normal}.adf-search-container .adf-clear-search-button{font-size:var(--theme-button-font-size);cursor:pointer}.adf-search-container .adf-highlight{color:var(--adf-theme-primary-900)}\n"] }]
250
+ }], ctorParameters: () => [{ type: i1.UserPreferencesService }], propDecorators: { autocomplete: [{
251
+ type: Input
252
+ }], expandable: [{
253
+ type: Input
254
+ }], inputType: [{
255
+ type: Input
256
+ }], liveSearchEnabled: [{
257
+ type: Input
258
+ }], searchAutocomplete: [{
259
+ type: Input
260
+ }], searchTerm: [{
261
+ type: Input
262
+ }], debounceTime: [{
263
+ type: Input
264
+ }], focusListener: [{
265
+ type: Input
266
+ }], collapseOnSubmit: [{
267
+ type: Input
268
+ }], defaultState: [{
269
+ type: Input
270
+ }], collapseOnBlur: [{
271
+ type: Input
272
+ }], showClearButton: [{
273
+ type: Input
274
+ }], placeholder: [{
275
+ type: Input
276
+ }], label: [{
277
+ type: Input
278
+ }], hintLabel: [{
279
+ type: Input
280
+ }], searchChange: [{
281
+ type: Output
282
+ }], submit: [{
283
+ type: Output
284
+ }], selectResult: [{
285
+ type: Output
286
+ }], reset: [{
287
+ type: Output
288
+ }], searchVisibility: [{
289
+ type: Output
290
+ }], searchInput: [{
291
+ type: ViewChild,
292
+ args: ['searchInput', { static: true }]
293
+ }] } });
294
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXRleHQtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvcmUvc3JjL2xpYi9zZWFyY2gtdGV4dC9zZWFyY2gtdGV4dC1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWIvY29yZS9zcmMvbGliL3NlYXJjaC10ZXh0L3NlYXJjaC10ZXh0LWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWtCQSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFDSCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQy9DLE9B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LE1BQU07Z0JBS1AsZ0JBQWdCO3NCQURmLE1BQU07Z0JBSVAsV0FBVztzQkFEVixTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IERpcmVjdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcbmltcG9ydCB7IE5nQ2xhc3MsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRGVzdHJveVJlZixcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UgfSBmcm9tICcuLi9jb21tb24nO1xuaW1wb3J0IHsgc2VhcmNoQW5pbWF0aW9uIH0gZnJvbSAnLi9hbmltYXRpb25zJztcbmltcG9ydCB7IFNlYXJjaEFuaW1hdGlvbkRpcmVjdGlvbiwgU2VhcmNoQW5pbWF0aW9uU3RhdGUsIFNlYXJjaFRleHRTdGF0ZUVudW0gfSBmcm9tICcuL21vZGVscy9zZWFyY2gtdGV4dC1pbnB1dC5tb2RlbCc7XG5pbXBvcnQgeyBTZWFyY2hUcmlnZ2VyRGlyZWN0aXZlIH0gZnJvbSAnLi9zZWFyY2gtdHJpZ2dlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FkZi1zZWFyY2gtdGV4dC1pbnB1dCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoLXRleHQtaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3NlYXJjaC10ZXh0LWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgYW5pbWF0aW9uczogW3NlYXJjaEFuaW1hdGlvbl0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICAgICAgTWF0SWNvbk1vZHVsZSxcbiAgICAgICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgICAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgICAgIE1hdElucHV0TW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgU2VhcmNoVHJpZ2dlckRpcmVjdGl2ZSxcbiAgICAgICAgTmdJZixcbiAgICAgICAgTmdDbGFzc1xuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2FkZi1zZWFyY2gtdGV4dC1pbnB1dCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFNlYXJjaFRleHRJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICAvKiogVG9nZ2xlcyBhdXRvLWNvbXBsZXRpb24gb2YgdGhlIHNlYXJjaCBpbnB1dCBmaWVsZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGF1dG9jb21wbGV0ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogVG9nZ2xlcyB3aGV0aGVyIHRvIHVzZSBhbiBleHBhbmRpbmcgc2VhcmNoIGNvbnRyb2wuIElmIGZhbHNlXG4gICAgICogdGhlbiBhIHJlZ3VsYXIgaW5wdXQgaXMgdXNlZC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGV4cGFuZGFibGU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgLyoqIFR5cGUgb2YgdGhlIGlucHV0IGZpZWxkIHRvIHJlbmRlciwgZS5nLiBcInNlYXJjaFwiIG9yIFwidGV4dFwiIChkZWZhdWx0KS4gKi9cbiAgICBASW5wdXQoKVxuICAgIGlucHV0VHlwZTogc3RyaW5nID0gJ3RleHQnO1xuXG4gICAgLyoqIFRvZ2dsZXMgXCJmaW5kLWFzLXlvdS10eXBlXCIgc3VnZ2VzdGlvbnMgZm9yIHBvc3NpYmxlIG1hdGNoZXMuICovXG4gICAgQElucHV0KClcbiAgICBsaXZlU2VhcmNoRW5hYmxlZDogYm9vbGVhbiA9IHRydWU7XG5cbiAgICAvKiogVHJpZ2dlciBhdXRvY29tcGxldGUgcmVzdWx0cyBvbiBpbnB1dCBjaGFuZ2UuICovXG4gICAgQElucHV0KClcbiAgICBzZWFyY2hBdXRvY29tcGxldGU6IGFueSA9IGZhbHNlO1xuXG4gICAgLyoqIFNlYXJjaCB0ZXJtIHByZXNlbGVjdGVkICovXG4gICAgQElucHV0KClcbiAgICBzZWFyY2hUZXJtOiBzdHJpbmcgPSAnJztcblxuICAgIC8qKiBEZWJvdW5jZSB0aW1lIGluIG1pbGxpc2Vjb25kcy4gKi9cbiAgICBASW5wdXQoKVxuICAgIGRlYm91bmNlVGltZTogbnVtYmVyID0gMDtcblxuICAgIC8qKiBMaXN0ZW5lciBmb3IgcmVzdWx0cy1saXN0IGV2ZW50cyAoZm9jdXMsIGJsdXIgYW5kIGZvY3Vzb3V0KS4gKi9cbiAgICBASW5wdXQoKVxuICAgIGZvY3VzTGlzdGVuZXI6IE9ic2VydmFibGU8Rm9jdXNFdmVudD47XG5cbiAgICAvKiogQ29sbGFwc2Ugc2VhcmNoIGJhciBvbiBzdWJtaXQuICovXG4gICAgQElucHV0KClcbiAgICBjb2xsYXBzZU9uU3VibWl0OiBib29sZWFuID0gdHJ1ZTtcblxuICAgIC8qKiBEZWZhdWx0IHN0YXRlIGV4cGFuZGVkIG9yIENvbGxhcHNlZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGRlZmF1bHRTdGF0ZTogU2VhcmNoVGV4dFN0YXRlRW51bSA9IFNlYXJjaFRleHRTdGF0ZUVudW0uY29sbGFwc2VkO1xuXG4gICAgLyoqIFRvZ2dsZXMgd2hldGhlciB0byBjb2xsYXBzZSB0aGUgc2VhcmNoIG9uIGJsdXIuICovXG4gICAgQElucHV0KClcbiAgICBjb2xsYXBzZU9uQmx1cjogYm9vbGVhbiA9IHRydWU7XG5cbiAgICAvKiogVG9nZ2xlcyB3aGV0aGVyIHRvIHNob3cgYSBjbGVhciBidXR0b24gdGhhdCBjbG9zZXMgdGhlIHNlYXJjaCAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd0NsZWFyQnV0dG9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKiogUGxhY2Vob2xkZXIgdGV4dCB0byBzaG93IGluIHRoZSBpbnB1dCBmaWVsZCAqL1xuICAgIEBJbnB1dCgpXG4gICAgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xuXG4gICAgLyoqIExhYmVsIHRleHQgdG8gc2hvdyBvdmVyIHRoZSBpbnB1dCBmaWVsZCAqL1xuICAgIEBJbnB1dCgpXG4gICAgbGFiZWw6IHN0cmluZyA9ICcnO1xuXG4gICAgLyoqIEhpbnQgbGFiZWwgKi9cbiAgICBASW5wdXQoKVxuICAgIGhpbnRMYWJlbCA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHRlZCB3aGVuIHRoZSBzZWFyY2ggdGVybSBpcyBjaGFuZ2VkLiBUaGUgc2VhcmNoIHRlcm0gaXMgcHJvdmlkZWRcbiAgICAgKiBpbiB0aGUgJ3ZhbHVlJyBwcm9wZXJ0eSBvZiB0aGUgcmV0dXJuZWQgb2JqZWN0LiAgSWYgdGhlIHRlcm0gaXMgbGVzc1xuICAgICAqIHRoYW4gdGhyZWUgY2hhcmFjdGVycyBpbiBsZW5ndGggdGhlbiBpdCBpcyB0cnVuY2F0ZWQgdG8gYW4gZW1wdHlcbiAgICAgKiBzdHJpbmcuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgc2VhcmNoQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0dGVkIHdoZW4gdGhlIHNlYXJjaCBpcyBzdWJtaXR0ZWQgYnkgcHJlc3NpbmcgdGhlIEVOVEVSIGtleS5cbiAgICAgKiBUaGUgc2VhcmNoIHRlcm0gaXMgcHJvdmlkZWQgYXMgdGhlIHZhbHVlIG9mIHRoZSBldmVudC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBzdWJtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIC8qKiAgRW1pdHRlZCB3aGVuIHRoZSByZXN1bHQgbGlzdCBpcyBzZWxlY3RlZCAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHNlbGVjdFJlc3VsdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICAvKiogIEVtaXR0ZWQgd2hlbiB0aGUgcmVzdWx0IGxpc3QgaXMgcmVzZXQgKi9cbiAgICBAT3V0cHV0KClcbiAgICByZXNldDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiB0aGUgc2VhcmNoIHZpc2liaWxpdHkgY2hhbmdlcy4gVHJ1ZSB3aGVuIHRoZSBzZWFyY2ggaXMgYWN0aXZlLCBmYWxzZSB3aGVuIGl0IGlzIGluYWN0aXZlICovXG4gICAgQE91dHB1dCgpXG4gICAgc2VhcmNoVmlzaWJpbGl0eTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgQFZpZXdDaGlsZCgnc2VhcmNoSW5wdXQnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHNlYXJjaElucHV0OiBFbGVtZW50UmVmO1xuXG4gICAgc3Vic2NyaXB0QW5pbWF0aW9uU3RhdGU6IGFueTtcblxuICAgIGFuaW1hdGlvblN0YXRlczogU2VhcmNoQW5pbWF0aW9uRGlyZWN0aW9uID0ge1xuICAgICAgICBsdHI6IHtcbiAgICAgICAgICAgIGFjdGl2ZTogeyB2YWx1ZTogJ2FjdGl2ZScsIHBhcmFtczogeyAnbWFyZ2luLWxlZnQnOiAxMyB9IH0sXG4gICAgICAgICAgICBpbmFjdGl2ZTogeyB2YWx1ZTogJ2luYWN0aXZlJywgcGFyYW1zOiB7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMTAwJSknIH0gfVxuICAgICAgICB9LFxuICAgICAgICBydGw6IHtcbiAgICAgICAgICAgIGFjdGl2ZTogeyB2YWx1ZTogJ2FjdGl2ZScsIHBhcmFtczogeyAnbWFyZ2luLXJpZ2h0JzogMTMgfSB9LFxuICAgICAgICAgICAgaW5hY3RpdmU6IHsgdmFsdWU6ICdpbmFjdGl2ZScsIHBhcmFtczogeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKC0xMDAlKScgfSB9XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBkaXIgPSAnbHRyJztcbiAgICBwcml2YXRlIHRvZ2dsZVNlYXJjaCA9IG5ldyBTdWJqZWN0PGFueT4oKTtcbiAgICBwcml2YXRlIGZvY3VzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSB2YWx1ZUNoYW5nZSA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcbiAgICBwcml2YXRlIHRvZ2dsZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgdG9nZ2xlJCA9IHRoaXMudG9nZ2xlU2VhcmNoLmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSB1c2VyUHJlZmVyZW5jZXNTZXJ2aWNlOiBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlKSB7XG4gICAgICAgIHRoaXMudG9nZ2xlU3Vic2NyaXB0aW9uID0gdGhpcy50b2dnbGUkLnBpcGUoZGVib3VuY2VUaW1lKDIwMCksIHRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuZXhwYW5kYWJsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0QW5pbWF0aW9uU3RhdGUgPSB0aGlzLnRvZ2dsZUFuaW1hdGlvbigpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnN1YnNjcmlwdEFuaW1hdGlvblN0YXRlLnZhbHVlID09PSAnaW5hY3RpdmUnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoVGVybSA9ICcnO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc2V0LmVtaXQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50LmlkID09PSB0aGlzLnNlYXJjaElucHV0Lm5hdGl2ZUVsZW1lbnQuaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC5ibHVyKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0VmlzaWJpbGl0eVNlYXJjaCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy51c2VyUHJlZmVyZW5jZXNTZXJ2aWNlXG4gICAgICAgICAgICAuc2VsZWN0KCd0ZXh0T3JpZW50YXRpb24nKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChkaXJlY3Rpb246IERpcmVjdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZGlyID0gZGlyZWN0aW9uO1xuICAgICAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0QW5pbWF0aW9uU3RhdGUgPSB0aGlzLmdldERlZmF1bHRTdGF0ZSh0aGlzLmRpcik7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnN1YnNjcmlwdEFuaW1hdGlvblN0YXRlID0gdGhpcy5nZXREZWZhdWx0U3RhdGUodGhpcy5kaXIpO1xuICAgICAgICB0aGlzLnNldFZhbHVlQ2hhbmdlSGFuZGxlcigpO1xuICAgICAgICB0aGlzLnNldHVwRm9jdXNFdmVudEhhbmRsZXJzKCk7XG4gICAgfVxuXG4gICAgYXBwbHlTZWFyY2hGb2N1cyhhbmltYXRpb25Eb25lRXZlbnQpIHtcbiAgICAgICAgaWYgKGFuaW1hdGlvbkRvbmVFdmVudC50b1N0YXRlID09PSAnYWN0aXZlJyAmJiB0aGlzLmlzRGVmYXVsdFN0YXRlQ29sbGFwc2VkKCkpIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0QXV0b0NvbXBsZXRlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmF1dG9jb21wbGV0ZSA/ICdvbicgOiAnb2ZmJztcbiAgICB9XG5cbiAgICBwcml2YXRlIHRvZ2dsZUFuaW1hdGlvbigpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlyID09PSAnbHRyJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3Vic2NyaXB0QW5pbWF0aW9uU3RhdGUudmFsdWUgPT09ICdpbmFjdGl2ZSdcbiAgICAgICAgICAgICAgICA/IHsgdmFsdWU6ICdhY3RpdmUnLCBwYXJhbXM6IHsgJ21hcmdpbi1sZWZ0JzogMTMgfSB9XG4gICAgICAgICAgICAgICAgOiB7IHZhbHVlOiAnaW5hY3RpdmUnLCBwYXJhbXM6IHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgxMDAlKScgfSB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3Vic2NyaXB0QW5pbWF0aW9uU3RhdGUudmFsdWUgPT09ICdpbmFjdGl2ZSdcbiAgICAgICAgICAgICAgICA/IHsgdmFsdWU6ICdhY3RpdmUnLCBwYXJhbXM6IHsgJ21hcmdpbi1yaWdodCc6IDEzIH0gfVxuICAgICAgICAgICAgICAgIDogeyB2YWx1ZTogJ2luYWN0aXZlJywgcGFyYW1zOiB7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoLTEwMCUpJyB9IH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldERlZmF1bHRTdGF0ZShkaXI6IHN0cmluZyk6IFNlYXJjaEFuaW1hdGlvblN0YXRlIHtcbiAgICAgICAgaWYgKHRoaXMuZGlyKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRBbmltYXRpb25TdGF0ZShkaXIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmFuaW1hdGlvblN0YXRlcy5sdHIuaW5hY3RpdmU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRBbmltYXRpb25TdGF0ZShkaXI6IHN0cmluZyk6IFNlYXJjaEFuaW1hdGlvblN0YXRlIHtcbiAgICAgICAgaWYgKHRoaXMuZXhwYW5kYWJsZSAmJiB0aGlzLmlzRGVmYXVsdFN0YXRlRXhwYW5kZWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYW5pbWF0aW9uU3RhdGVzW2Rpcl0uYWN0aXZlO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZXhwYW5kYWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYW5pbWF0aW9uU3RhdGVzW2Rpcl0uaW5hY3RpdmU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogJ25vLWFuaW1hdGlvbicgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0dXBGb2N1c0V2ZW50SGFuZGxlcnMoKSB7XG4gICAgICAgIGlmICh0aGlzLmZvY3VzTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IGZvY3VzRXZlbnRzOiBPYnNlcnZhYmxlPEZvY3VzRXZlbnQ+ID0gdGhpcy5mb2N1c0xpc3RlbmVyLnBpcGUoXG4gICAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKDUwKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICgkZXZlbnQ6IGFueSkgPT4gdGhpcy5pc1NlYXJjaEJhckFjdGl2ZSgpICYmICgkZXZlbnQudHlwZSA9PT0gJ2JsdXInIHx8ICRldmVudC50eXBlID09PSAnZm9jdXNvdXQnIHx8ICRldmVudC50eXBlID09PSAnZm9jdXMnKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZilcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHRoaXMuZm9jdXNTdWJzY3JpcHRpb24gPSBmb2N1c0V2ZW50cy5zdWJzY3JpYmUoKGV2ZW50OiBGb2N1c0V2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT09ICdmb2N1cycpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hJbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2dnbGVTZWFyY2hCYXIoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0VmFsdWVDaGFuZ2VIYW5kbGVyKCkge1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLnBpcGUoZGVib3VuY2VUaW1lKHRoaXMuZGVib3VuY2VUaW1lKSwgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSgodmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNlbGVjdEZpcnN0UmVzdWx0KCRldmVudCkge1xuICAgICAgICB0aGlzLnNlbGVjdFJlc3VsdC5lbWl0KCRldmVudCk7XG4gICAgfVxuXG4gICAgb25CbHVyKCRldmVudCkge1xuICAgICAgICBpZiAodGhpcy5jb2xsYXBzZU9uQmx1ciAmJiAhJGV2ZW50LnJlbGF0ZWRUYXJnZXQpIHtcbiAgICAgICAgICAgIHRoaXMucmVzZXRTZWFyY2goKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlucHV0Q2hhbmdlKCRldmVudDogYW55KSB7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UubmV4dCgkZXZlbnQpO1xuICAgIH1cblxuICAgIHRvZ2dsZVNlYXJjaEJhcigpIHtcbiAgICAgICAgaWYgKHRoaXMudG9nZ2xlU2VhcmNoKSB7XG4gICAgICAgICAgICB0aGlzLnRvZ2dsZVNlYXJjaC5uZXh0KHt9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNlYXJjaFN1Ym1pdChldmVudDogYW55KSB7XG4gICAgICAgIHRoaXMuc3VibWl0LmVtaXQoZXZlbnQpO1xuICAgICAgICBpZiAodGhpcy5jb2xsYXBzZU9uU3VibWl0KSB7XG4gICAgICAgICAgICB0aGlzLnRvZ2dsZVNlYXJjaEJhcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYWN0aXZhdGVUb29sYmFyKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuaXNTZWFyY2hCYXJBY3RpdmUoKSkge1xuICAgICAgICAgICAgdGhpcy50b2dnbGVTZWFyY2hCYXIoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaXNTZWFyY2hCYXJBY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnN1YnNjcmlwdEFuaW1hdGlvblN0YXRlLnZhbHVlID09PSAnYWN0aXZlJztcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMudG9nZ2xlU2VhcmNoKSB7XG4gICAgICAgICAgICB0aGlzLnRvZ2dsZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgdGhpcy50b2dnbGVTZWFyY2guY29tcGxldGUoKTtcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlU2VhcmNoID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmZvY3VzU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB0aGlzLmZvY3VzU3Vic2NyaXB0aW9uID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNMaXN0ZW5lciA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjYW5TaG93Q2xlYXJTZWFyY2goKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNob3dDbGVhckJ1dHRvbiAmJiB0aGlzLmlzU2VhcmNoQmFyQWN0aXZlKCk7XG4gICAgfVxuXG4gICAgcmVzZXRTZWFyY2goKSB7XG4gICAgICAgIGlmICh0aGlzLmlzU2VhcmNoQmFyQWN0aXZlKCkpIHtcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlU2VhcmNoQmFyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGlzRGVmYXVsdFN0YXRlQ29sbGFwc2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0U3RhdGUgPT09IFNlYXJjaFRleHRTdGF0ZUVudW0uY29sbGFwc2VkO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNEZWZhdWx0U3RhdGVFeHBhbmRlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFN0YXRlID09PSBTZWFyY2hUZXh0U3RhdGVFbnVtLmV4cGFuZGVkO1xuICAgIH1cblxuICAgIHByaXZhdGUgZW1pdFZpc2liaWxpdHlTZWFyY2goKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoVmlzaWJpbGl0eS5lbWl0KHRoaXMuaXNTZWFyY2hCYXJBY3RpdmUoKSk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImFkZi1zZWFyY2gtY29udGFpbmVyXCIgW2F0dHIuc3RhdGVdPVwic3Vic2NyaXB0QW5pbWF0aW9uU3RhdGUudmFsdWVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYWRmLXNlYXJjaC1jb250YWluZXItdHJhbnNpdGlvblwiXG4gICAgICAgIFtAdHJhbnNpdGlvbk1lc3NhZ2VzXT1cInN1YnNjcmlwdEFuaW1hdGlvblN0YXRlXCJcbiAgICAgICAgKEB0cmFuc2l0aW9uTWVzc2FnZXMuZG9uZSk9XCJhcHBseVNlYXJjaEZvY3VzKCRldmVudClcIj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAqbmdJZj1cImV4cGFuZGFibGVcIlxuICAgICAgICAgICAgICAgIGlkPVwiYWRmLXNlYXJjaC1idXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYWRmLXNlYXJjaC1idXR0b25cIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnYWRmLXNlYXJjaC1idXR0b24taW5hY3RpdmUnOiBzdWJzY3JpcHRBbmltYXRpb25TdGF0ZS52YWx1ZSA9PT0gJ2luYWN0aXZlJ31cIlxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCInU0VBUkNILkJVVFRPTi5UT09MVElQJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNlYXJjaEJhcigpXCJcbiAgICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwidG9nZ2xlU2VhcmNoQmFyKClcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBbYXR0ci5hcmlhLWxhYmVsXT1cIidTRUFSQ0guQlVUVE9OLkFSSUEtTEFCRUwnIHwgdHJhbnNsYXRlXCI+c2VhcmNoPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImFkZi1pbnB1dC1mb3JtLWZpZWxkLWRpdmlkZXJcIiBbaGludExhYmVsXT1cImhpbnRMYWJlbFwiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbCAqbmdJZj0nbGFiZWwnPnt7bGFiZWx9fTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPGlucHV0IG1hdElucHV0XG4gICAgICAgICAgICAgICAgICAgI3NlYXJjaElucHV0XG4gICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInU0VBUkNILklOUFVULkFSSUEtTEFCRUwnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICBbYXR0ci50eXBlXT1cImlucHV0VHlwZVwiXG4gICAgICAgICAgICAgICAgICAgW2F1dG9jb21wbGV0ZV09XCJnZXRBdXRvQ29tcGxldGUoKVwiXG4gICAgICAgICAgICAgICAgICAgaWQ9XCJhZGYtY29udHJvbC1pbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXJtXCJcbiAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgIChmb2N1cyk9XCJhY3RpdmF0ZVRvb2xiYXIoKVwiXG4gICAgICAgICAgICAgICAgICAgKGJsdXIpPVwib25CbHVyKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgIChrZXl1cC5lc2NhcGUpPVwidG9nZ2xlU2VhcmNoQmFyKClcIlxuICAgICAgICAgICAgICAgICAgIChrZXl1cC5hcnJvd2Rvd24pPVwic2VsZWN0Rmlyc3RSZXN1bHQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiaW5wdXRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgW3NlYXJjaEF1dG9jb21wbGV0ZV09XCJzZWFyY2hBdXRvY29tcGxldGUgPyBzZWFyY2hBdXRvY29tcGxldGUgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwic2VhcmNoU3VibWl0KCRldmVudClcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNhblNob3dDbGVhclNlYXJjaCgpXCJcbiAgICAgICAgICAgICAgICAgICAgbWF0U3VmZml4XG4gICAgICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cImFkZi1jbGVhci1zZWFyY2gtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtY2xlYXItc2VhcmNoLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInU0VBUkNILkZJTFRFUi5CVVRUT05TLkNMT1NFJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZXNldFNlYXJjaCgpXCJcbiAgICAgICAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cInJlc2V0U2VhcmNoKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -0,0 +1,35 @@
1
+ /*!
2
+ * @license
3
+ * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ import { NgModule } from '@angular/core';
18
+ import { SearchTextInputComponent } from './search-text-input.component';
19
+ import { SearchTriggerDirective } from './search-trigger.directive';
20
+ import * as i0 from "@angular/core";
21
+ export const SEARCH_TEXT_INPUT_DIRECTIVES = [SearchTextInputComponent, SearchTriggerDirective];
22
+ /** @deprecated use `...SEARCH_TEXT_INPUT_DIRECTIVES` or import the individual directives */
23
+ export class SearchTextModule {
24
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchTextModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
25
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: SearchTextModule, imports: [SearchTextInputComponent, SearchTriggerDirective], exports: [SearchTextInputComponent, SearchTriggerDirective] }); }
26
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchTextModule, imports: [SearchTextInputComponent] }); }
27
+ }
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchTextModule, decorators: [{
29
+ type: NgModule,
30
+ args: [{
31
+ imports: [...SEARCH_TEXT_INPUT_DIRECTIVES],
32
+ exports: [...SEARCH_TEXT_INPUT_DIRECTIVES]
33
+ }]
34
+ }] });
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXRleHQtaW5wdXQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvcmUvc3JjL2xpYi9zZWFyY2gtdGV4dC9zZWFyY2gtdGV4dC1pbnB1dC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFFcEUsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsQ0FBQyx3QkFBd0IsRUFBRSxzQkFBc0IsQ0FBVSxDQUFDO0FBRXhHLDRGQUE0RjtBQUs1RixNQUFNLE9BQU8sZ0JBQWdCOytHQUFoQixnQkFBZ0I7Z0hBQWhCLGdCQUFnQixZQVBnQix3QkFBd0IsRUFBRSxzQkFBc0IsYUFBaEQsd0JBQXdCLEVBQUUsc0JBQXNCO2dIQU9oRixnQkFBZ0IsWUFQZ0Isd0JBQXdCOzs0RkFPeEQsZ0JBQWdCO2tCQUo1QixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLEdBQUcsNEJBQTRCLENBQUM7b0JBQzFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsNEJBQTRCLENBQUM7aUJBQzdDIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2VhcmNoVGV4dElucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9zZWFyY2gtdGV4dC1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VhcmNoVHJpZ2dlckRpcmVjdGl2ZSB9IGZyb20gJy4vc2VhcmNoLXRyaWdnZXIuZGlyZWN0aXZlJztcblxuZXhwb3J0IGNvbnN0IFNFQVJDSF9URVhUX0lOUFVUX0RJUkVDVElWRVMgPSBbU2VhcmNoVGV4dElucHV0Q29tcG9uZW50LCBTZWFyY2hUcmlnZ2VyRGlyZWN0aXZlXSBhcyBjb25zdDtcblxuLyoqIEBkZXByZWNhdGVkIHVzZSBgLi4uU0VBUkNIX1RFWFRfSU5QVVRfRElSRUNUSVZFU2Agb3IgaW1wb3J0IHRoZSBpbmRpdmlkdWFsIGRpcmVjdGl2ZXMgKi9cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogWy4uLlNFQVJDSF9URVhUX0lOUFVUX0RJUkVDVElWRVNdLFxuICAgIGV4cG9ydHM6IFsuLi5TRUFSQ0hfVEVYVF9JTlBVVF9ESVJFQ1RJVkVTXVxufSlcbmV4cG9ydCBjbGFzcyBTZWFyY2hUZXh0TW9kdWxlIHt9XG4iXX0=
@@ -0,0 +1,181 @@
1
+ /*!
2
+ * @license
3
+ * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ /* eslint-disable @angular-eslint/no-input-rename, @typescript-eslint/no-use-before-define, @angular-eslint/no-input-rename */
18
+ import { ENTER, ESCAPE } from '@angular/cdk/keycodes';
19
+ import { ChangeDetectorRef, DestroyRef, Directive, ElementRef, forwardRef, inject, Inject, Input, NgZone, Optional } from '@angular/core';
20
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
21
+ import { DOCUMENT } from '@angular/common';
22
+ import { fromEvent, merge, of, Subject } from 'rxjs';
23
+ import { filter, switchMap } from 'rxjs/operators';
24
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
25
+ import * as i0 from "@angular/core";
26
+ export const SEARCH_AUTOCOMPLETE_VALUE_ACCESSOR = {
27
+ provide: NG_VALUE_ACCESSOR,
28
+ useExisting: forwardRef(() => SearchTriggerDirective),
29
+ multi: true
30
+ };
31
+ /**
32
+ * Directive selectors without adf- prefix will be deprecated on 3.0.0
33
+ */
34
+ export class SearchTriggerDirective {
35
+ constructor(element, ngZone, changeDetectorRef, document) {
36
+ this.element = element;
37
+ this.ngZone = ngZone;
38
+ this.changeDetectorRef = changeDetectorRef;
39
+ this.document = document;
40
+ this.autocomplete = 'off';
41
+ this._panelOpen = false;
42
+ this.escapeEventStream = new Subject();
43
+ this.onChange = () => { };
44
+ this.onTouched = () => { };
45
+ this.destroyRef = inject(DestroyRef);
46
+ }
47
+ ngOnDestroy() {
48
+ if (this.escapeEventStream) {
49
+ this.escapeEventStream = null;
50
+ }
51
+ if (this.closingActionsSubscription) {
52
+ this.closingActionsSubscription.unsubscribe();
53
+ }
54
+ }
55
+ get panelOpen() {
56
+ return this._panelOpen && this.searchPanel.showPanel;
57
+ }
58
+ openPanel() {
59
+ this.searchPanel.isOpen = this._panelOpen = true;
60
+ this.closingActionsSubscription = this.subscribeToClosingActions();
61
+ }
62
+ closePanel() {
63
+ if (this._panelOpen) {
64
+ this.closingActionsSubscription.unsubscribe();
65
+ this._panelOpen = false;
66
+ this.searchPanel.resetResults();
67
+ this.searchPanel.hidePanel();
68
+ this.changeDetectorRef.detectChanges();
69
+ }
70
+ }
71
+ get panelClosingActions() {
72
+ return merge(this.escapeEventStream, this.outsideClickStream);
73
+ }
74
+ get outsideClickStream() {
75
+ if (!this.document) {
76
+ return of(null);
77
+ }
78
+ return merge(fromEvent(this.document, 'click'), fromEvent(this.document, 'touchend')).pipe(filter((event) => {
79
+ const clickTarget = event.target;
80
+ return this._panelOpen && clickTarget !== this.element.nativeElement;
81
+ }), takeUntilDestroyed(this.destroyRef));
82
+ }
83
+ writeValue(value) {
84
+ Promise.resolve(null).then(() => this.setTriggerValue(value));
85
+ }
86
+ registerOnChange(fn) {
87
+ this.onChange = fn;
88
+ }
89
+ registerOnTouched(fn) {
90
+ this.onTouched = fn;
91
+ }
92
+ handleKeydown(event) {
93
+ const keyCode = event.keyCode;
94
+ if (keyCode === ESCAPE && this.panelOpen) {
95
+ this.escapeEventStream.next();
96
+ event.stopPropagation();
97
+ }
98
+ else if (keyCode === ENTER) {
99
+ this.escapeEventStream.next();
100
+ event.preventDefault();
101
+ }
102
+ }
103
+ handleInput(event) {
104
+ if (document.activeElement === event.target) {
105
+ const inputValue = event.target.value;
106
+ this.onChange(inputValue);
107
+ if (inputValue && this.searchPanel) {
108
+ this.searchPanel.keyPressedStream.next(inputValue);
109
+ this.openPanel();
110
+ }
111
+ else if (this.searchPanel) {
112
+ this.searchPanel.resetResults();
113
+ this.closePanel();
114
+ }
115
+ }
116
+ }
117
+ isPanelOptionClicked(event) {
118
+ let isPanelOption = false;
119
+ if (event && this.searchPanel) {
120
+ const clickTarget = event.target;
121
+ isPanelOption = !this.isNoResultOption() && !!this.searchPanel.panel && !!this.searchPanel.panel.nativeElement.contains(clickTarget);
122
+ }
123
+ return isPanelOption;
124
+ }
125
+ isNoResultOption() {
126
+ return this.searchPanel?.results?.list ? this.searchPanel.results.list.entries.length === 0 : true;
127
+ }
128
+ subscribeToClosingActions() {
129
+ const firstStable = this.ngZone.onStable.asObservable();
130
+ const optionChanges = this.searchPanel.keyPressedStream.asObservable();
131
+ return merge(firstStable, optionChanges)
132
+ .pipe(switchMap(() => {
133
+ this.searchPanel.setVisibility();
134
+ return this.panelClosingActions;
135
+ }), takeUntilDestroyed(this.destroyRef))
136
+ .subscribe((event) => this.setValueAndClose(event));
137
+ }
138
+ setTriggerValue(value) {
139
+ const toDisplay = this.searchPanel?.displayWith ? this.searchPanel.displayWith(value) : value;
140
+ this.element.nativeElement.value = toDisplay != null ? toDisplay : '';
141
+ }
142
+ setValueAndClose(event) {
143
+ if (this.isPanelOptionClicked(event) && !event.defaultPrevented) {
144
+ this.setTriggerValue(event.target.textContent.trim());
145
+ this.onChange(event.target.textContent.trim());
146
+ this.element.nativeElement.focus();
147
+ }
148
+ this.closePanel();
149
+ }
150
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchTriggerDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
151
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: SearchTriggerDirective, isStandalone: true, selector: "input[searchAutocomplete], textarea[searchAutocomplete]", inputs: { searchPanel: ["searchAutocomplete", "searchPanel"], autocomplete: "autocomplete" }, host: { attributes: { "role": "combobox", "aria-autocomplete": "list" }, listeners: { "blur": "onTouched()", "input": "handleInput($event)", "keydown": "handleKeydown($event)" }, properties: { "attr.autocomplete": "autocomplete", "attr.aria-expanded": "panelOpen.toString()" } }, providers: [SEARCH_AUTOCOMPLETE_VALUE_ACCESSOR], ngImport: i0 }); }
152
+ }
153
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchTriggerDirective, decorators: [{
154
+ type: Directive,
155
+ args: [{
156
+ // eslint-disable-next-line @angular-eslint/directive-selector
157
+ selector: `input[searchAutocomplete], textarea[searchAutocomplete]`,
158
+ standalone: true,
159
+ host: {
160
+ role: 'combobox',
161
+ '[attr.autocomplete]': 'autocomplete',
162
+ 'aria-autocomplete': 'list',
163
+ '[attr.aria-expanded]': 'panelOpen.toString()',
164
+ '(blur)': 'onTouched()',
165
+ '(input)': 'handleInput($event)',
166
+ '(keydown)': 'handleKeydown($event)'
167
+ },
168
+ providers: [SEARCH_AUTOCOMPLETE_VALUE_ACCESSOR]
169
+ }]
170
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
171
+ type: Optional
172
+ }, {
173
+ type: Inject,
174
+ args: [DOCUMENT]
175
+ }] }], propDecorators: { searchPanel: [{
176
+ type: Input,
177
+ args: ['searchAutocomplete']
178
+ }], autocomplete: [{
179
+ type: Input
180
+ }] } });
181
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXRyaWdnZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvcmUvc3JjL2xpYi9zZWFyY2gtdGV4dC9zZWFyY2gtdHJpZ2dlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsOEhBQThIO0FBRTlILE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWEsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JKLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDL0UsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFFaEUsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQVE7SUFDbkQsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHNCQUFzQixDQUFDO0lBQ3JELEtBQUssRUFBRSxJQUFJO0NBQ2QsQ0FBQztBQUVGOztHQUVHO0FBZ0JILE1BQU0sT0FBTyxzQkFBc0I7SUFpQi9CLFlBQ1ksT0FBbUIsRUFDbkIsTUFBYyxFQUNkLGlCQUFvQyxFQUNOLFFBQWE7UUFIM0MsWUFBTyxHQUFQ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QUFRLEVBQUUsYUFBYTt3QkFDdkIsU0FBUyxFQUFFLHFCQUFxQjt3QkFDaEMsV0FBVyxFQUFFLHVCQUF1QjtxQkFDdkM7b0JBQ0QsU0FBUyxFQUFFLENBQUMsa0NBQWtDLENBQUM7aUJBQ2xEOzswQkFzQlEsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxRQUFRO3lDQW5CaEMsV0FBVztzQkFEVixLQUFLO3VCQUFDLG9CQUFvQjtnQkFJM0IsWUFBWTtzQkFEWCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lLCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdXNlLWJlZm9yZS1kZWZpbmUsIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dC1yZW5hbWUgKi9cblxuaW1wb3J0IHsgRU5URVIsIEVTQ0FQRSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgRGVzdHJveVJlZiwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBmb3J3YXJkUmVmLCBpbmplY3QsIEluamVjdCwgSW5wdXQsIE5nWm9uZSwgT25EZXN0cm95LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBtZXJnZSwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTZWFyY2hDb21wb25lbnRJbnRlcmZhY2UgfSBmcm9tICcuLi9jb21tb24vaW50ZXJmYWNlL3NlYXJjaC1jb21wb25lbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuZXhwb3J0IGNvbnN0IFNFQVJDSF9BVVRPQ09NUExFVEVfVkFMVUVfQUNDRVNTT1I6IGFueSA9IHtcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTZWFyY2hUcmlnZ2VyRGlyZWN0aXZlKSxcbiAgICBtdWx0aTogdHJ1ZVxufTtcblxuLyoqXG4gKiBEaXJlY3RpdmUgc2VsZWN0b3JzIHdpdGhvdXQgYWRmLSBwcmVmaXggd2lsbCBiZSBkZXByZWNhdGVkIG9uIDMuMC4wXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6IGBpbnB1dFtzZWFyY2hBdXRvY29tcGxldGVdLCB0ZXh0YXJlYVtzZWFyY2hBdXRvY29tcGxldGVdYCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgcm9sZTogJ2NvbWJvYm94JyxcbiAgICAgICAgJ1thdHRyLmF1dG9jb21wbGV0ZV0nOiAnYXV0b2NvbXBsZXRlJyxcbiAgICAgICAgJ2FyaWEtYXV0b2NvbXBsZXRlJzogJ2xpc3QnLFxuICAgICAgICAnW2F0dHIuYXJpYS1leHBhbmRlZF0nOiAncGFuZWxPcGVuLnRvU3RyaW5nKCknLFxuICAgICAgICAnKGJsdXIpJzogJ29uVG91Y2hlZCgpJyxcbiAgICAgICAgJyhpbnB1dCknOiAnaGFuZGxlSW5wdXQoJGV2ZW50KScsXG4gICAgICAgICcoa2V5ZG93biknOiAnaGFuZGxlS2V5ZG93bigkZXZlbnQpJ1xuICAgIH0sXG4gICAgcHJvdmlkZXJzOiBbU0VBUkNIX0FVVE9DT01QTEVURV9WQUxVRV9BQ0NFU1NPUl1cbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoVHJpZ2dlckRpcmVjdGl2ZSBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgnc2VhcmNoQXV0b2NvbXBsZXRlJylcbiAgICBzZWFyY2hQYW5lbDogU2VhcmNoQ29tcG9uZW50SW50ZXJmYWNlO1xuXG4gICAgQElucHV0KClcbiAgICBhdXRvY29tcGxldGU6IHN0cmluZyA9ICdvZmYnO1xuXG4gICAgcHJpdmF0ZSBfcGFuZWxPcGVuOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBjbG9zaW5nQWN0aW9uc1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgZXNjYXBlRXZlbnRTdHJlYW0gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgb25DaGFuZ2U6ICh2YWx1ZTogYW55KSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgICBvblRvdWNoZWQgPSAoKSA9PiB7fTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBhbnlcbiAgICApIHt9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZXNjYXBlRXZlbnRTdHJlYW0pIHtcbiAgICAgICAgICAgIHRoaXMuZXNjYXBlRXZlbnRTdHJlYW0gPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmNsb3NpbmdBY3Rpb25zU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NpbmdBY3Rpb25zU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgcGFuZWxPcGVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFuZWxPcGVuICYmIHRoaXMuc2VhcmNoUGFuZWwuc2hvd1BhbmVsO1xuICAgIH1cblxuICAgIG9wZW5QYW5lbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWFyY2hQYW5lbC5pc09wZW4gPSB0aGlzLl9wYW5lbE9wZW4gPSB0cnVlO1xuICAgICAgICB0aGlzLmNsb3NpbmdBY3Rpb25zU3Vic2NyaXB0aW9uID0gdGhpcy5zdWJzY3JpYmVUb0Nsb3NpbmdBY3Rpb25zKCk7XG4gICAgfVxuXG4gICAgY2xvc2VQYW5lbCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX3BhbmVsT3Blbikge1xuICAgICAgICAgICAgdGhpcy5jbG9zaW5nQWN0aW9uc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgdGhpcy5fcGFuZWxPcGVuID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaFBhbmVsLnJlc2V0UmVzdWx0cygpO1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hQYW5lbC5oaWRlUGFuZWwoKTtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IHBhbmVsQ2xvc2luZ0FjdGlvbnMoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIG1lcmdlKHRoaXMuZXNjYXBlRXZlbnRTdHJlYW0sIHRoaXMub3V0c2lkZUNsaWNrU3RyZWFtKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBvdXRzaWRlQ2xpY2tTdHJlYW0oKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgaWYgKCF0aGlzLmRvY3VtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbWVyZ2UoZnJvbUV2ZW50KHRoaXMuZG9jdW1lbnQsICdjbGljaycpLCBmcm9tRXZlbnQodGhpcy5kb2N1bWVudCwgJ3RvdWNoZW5kJykpLnBpcGUoXG4gICAgICAgICAgICBmaWx0ZXIoKGV2ZW50OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNsaWNrVGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9wYW5lbE9wZW4gJiYgY2xpY2tUYXJnZXQgIT09IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICBQcm9taXNlLnJlc29sdmUobnVsbCkudGhlbigoKSA9PiB0aGlzLnNldFRyaWdnZXJWYWx1ZSh2YWx1ZSkpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogYW55KSA9PiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiBhbnkpIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICBoYW5kbGVLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGtleUNvZGUgPSBldmVudC5rZXlDb2RlO1xuXG4gICAgICAgIGlmIChrZXlDb2RlID09PSBFU0NBUEUgJiYgdGhpcy5wYW5lbE9wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuZXNjYXBlRXZlbnRTdHJlYW0ubmV4dCgpO1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5Q29kZSA9PT0gRU5URVIpIHtcbiAgICAgICAgICAgIHRoaXMuZXNjYXBlRXZlbnRTdHJlYW0ubmV4dCgpO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhbmRsZUlucHV0KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBldmVudC50YXJnZXQpIHtcbiAgICAgICAgICAgIGNvbnN0IGlucHV0VmFsdWU6IHN0cmluZyA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKGlucHV0VmFsdWUpO1xuICAgICAgICAgICAgaWYgKGlucHV0VmFsdWUgJiYgdGhpcy5zZWFyY2hQYW5lbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoUGFuZWwua2V5UHJlc3NlZFN0cmVhbS5uZXh0KGlucHV0VmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMub3BlblBhbmVsKCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2VhcmNoUGFuZWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaFBhbmVsLnJlc2V0UmVzdWx0cygpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VQYW5lbCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1BhbmVsT3B0aW9uQ2xpY2tlZChldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBsZXQgaXNQYW5lbE9wdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuICAgICAgICBpZiAoZXZlbnQgJiYgdGhpcy5zZWFyY2hQYW5lbCkge1xuICAgICAgICAgICAgY29uc3QgY2xpY2tUYXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICBpc1BhbmVsT3B0aW9uID0gIXRoaXMuaXNOb1Jlc3VsdE9wdGlvbigpICYmICEhdGhpcy5zZWFyY2hQYW5lbC5wYW5lbCAmJiAhIXRoaXMuc2VhcmNoUGFuZWwucGFuZWwubmF0aXZlRWxlbWVudC5jb250YWlucyhjbGlja1RhcmdldCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzUGFuZWxPcHRpb247XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc05vUmVzdWx0T3B0aW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWFyY2hQYW5lbD8ucmVzdWx0cz8ubGlzdCA/IHRoaXMuc2VhcmNoUGFuZWwucmVzdWx0cy5saXN0LmVudHJpZXMubGVuZ3RoID09PSAwIDogdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN1YnNjcmliZVRvQ2xvc2luZ0FjdGlvbnMoKTogU3Vic2NyaXB0aW9uIHtcbiAgICAgICAgY29uc3QgZmlyc3RTdGFibGUgPSB0aGlzLm5nWm9uZS5vblN0YWJsZS5hc09ic2VydmFibGUoKTtcbiAgICAgICAgY29uc3Qgb3B0aW9uQ2hhbmdlcyA9IHRoaXMuc2VhcmNoUGFuZWwua2V5UHJlc3NlZFN0cmVhbS5hc09ic2VydmFibGUoKTtcblxuICAgICAgICByZXR1cm4gbWVyZ2UoZmlyc3RTdGFibGUsIG9wdGlvbkNoYW5nZXMpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaFBhbmVsLnNldFZpc2liaWxpdHkoKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFuZWxDbG9zaW5nQWN0aW9ucztcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHRoaXMuc2V0VmFsdWVBbmRDbG9zZShldmVudCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0VHJpZ2dlclZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdG9EaXNwbGF5ID0gdGhpcy5zZWFyY2hQYW5lbD8uZGlzcGxheVdpdGggPyB0aGlzLnNlYXJjaFBhbmVsLmRpc3BsYXlXaXRoKHZhbHVlKSA6IHZhbHVlO1xuICAgICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZSA9IHRvRGlzcGxheSAhPSBudWxsID8gdG9EaXNwbGF5IDogJyc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRWYWx1ZUFuZENsb3NlKGV2ZW50OiBhbnkgfCBudWxsKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzUGFuZWxPcHRpb25DbGlja2VkKGV2ZW50KSAmJiAhZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgICAgdGhpcy5zZXRUcmlnZ2VyVmFsdWUoZXZlbnQudGFyZ2V0LnRleHRDb250ZW50LnRyaW0oKSk7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKGV2ZW50LnRhcmdldC50ZXh0Q29udGVudC50cmltKCkpO1xuICAgICAgICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNsb3NlUGFuZWwoKTtcbiAgICB9XG59XG4iXX0=