@alfresco/adf-core 8.1.0-16295248176 → 8.1.0-16320806191

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 (603) hide show
  1. package/bundles/assets/adf-core/i18n/de.json +1 -1
  2. package/bundles/assets/adf-core/i18n/es.json +1 -1
  3. package/bundles/assets/adf-core/i18n/fr.json +1 -1
  4. package/bundles/assets/adf-core/i18n/it.json +1 -1
  5. package/bundles/assets/adf-core/i18n/pl.json +1 -1
  6. package/bundles/assets/adf-core/i18n/pt.json +1 -1
  7. package/esm2022/adf-core.mjs +5 -0
  8. package/esm2022/api/alfresco-adf-core-api.mjs +5 -0
  9. package/esm2022/api/index.mjs +20 -0
  10. package/esm2022/api/lib/adf-http-client.service.mjs +311 -0
  11. package/esm2022/api/lib/alfresco-api/alfresco-api.param-encoder.mjs +33 -0
  12. package/esm2022/api/lib/alfresco-api/alfresco-api.response-error.mjs +25 -0
  13. package/esm2022/api/lib/alfresco-api/alfresco-api.utils.mjs +80 -0
  14. package/esm2022/api/lib/interfaces.mjs +18 -0
  15. package/esm2022/api/lib/types.mjs +18 -0
  16. package/esm2022/auth/alfresco-adf-core-auth.mjs +5 -0
  17. package/esm2022/auth/authentication-interceptor/authentication.interceptor.mjs +56 -0
  18. package/esm2022/auth/authentication.mjs +19 -0
  19. package/esm2022/auth/index.mjs +19 -0
  20. package/esm2022/breadcrumbs/alfresco-adf-core-breadcrumbs.mjs +5 -0
  21. package/esm2022/breadcrumbs/components/breadcrumb/breadcrumb.component.mjs +82 -0
  22. package/esm2022/breadcrumbs/components/breadcrumb-item/breadcrumb-item.component.mjs +42 -0
  23. package/esm2022/breadcrumbs/directives/breadcrumb-focus.directive.mjs +44 -0
  24. package/esm2022/breadcrumbs/index.mjs +19 -0
  25. package/esm2022/feature-flags/alfresco-adf-core-feature-flags.mjs +5 -0
  26. package/esm2022/feature-flags/index.mjs +29 -0
  27. package/esm2022/feature-flags/lib/components/feature-flags-wrapper.mjs +36 -0
  28. package/esm2022/feature-flags/lib/components/feature-override-indicator.component.mjs +56 -0
  29. package/esm2022/feature-flags/lib/components/flags/flags.component.mjs +129 -0
  30. package/esm2022/feature-flags/lib/directives/features.directive.mjs +63 -0
  31. package/esm2022/feature-flags/lib/directives/not-features.directive.mjs +63 -0
  32. package/esm2022/feature-flags/lib/guards/is-feature-off.guard.mjs +38 -0
  33. package/esm2022/feature-flags/lib/guards/is-feature-on.guard.mjs +38 -0
  34. package/esm2022/feature-flags/lib/guards/is-flags-override-on.guard.mjs +40 -0
  35. package/esm2022/feature-flags/lib/interfaces/features.interface.mjs +24 -0
  36. package/esm2022/feature-flags/lib/mocks/features-service-mock.factory.mjs +62 -0
  37. package/esm2022/feature-flags/lib/providers/debug-feature-flags.provider.mjs +51 -0
  38. package/esm2022/feature-flags/lib/providers/dummy-feature-flags.provider.mjs +36 -0
  39. package/esm2022/feature-flags/lib/services/debug-features.service.mjs +94 -0
  40. package/esm2022/feature-flags/lib/services/dummy-features.service.mjs +40 -0
  41. package/esm2022/feature-flags/lib/services/flagset.parser.mjs +38 -0
  42. package/esm2022/feature-flags/lib/services/qa-features.helper.mjs +62 -0
  43. package/esm2022/feature-flags/lib/services/storage-features.service.mjs +126 -0
  44. package/esm2022/lib/about/about-extension-list/about-extension-list.component.mjs +51 -0
  45. package/esm2022/lib/about/about-license-list/about-license-list.component.mjs +51 -0
  46. package/esm2022/lib/about/about-module-list/module-list.component.mjs +51 -0
  47. package/esm2022/lib/about/about-package/package-list.component.mjs +65 -0
  48. package/esm2022/lib/about/about-panel.directive.mjs +37 -0
  49. package/esm2022/lib/about/about-repository-info/about-repository-info.component.mjs +59 -0
  50. package/esm2022/lib/about/about-repository-info/repository-info.interface.mjs +18 -0
  51. package/esm2022/lib/about/about-server-settings/about-server-settings.component.mjs +42 -0
  52. package/esm2022/lib/about/about-status-list/about-status-list.component.mjs +51 -0
  53. package/esm2022/lib/about/about.component.mjs +35 -0
  54. package/esm2022/lib/about/about.module.mjs +75 -0
  55. package/esm2022/lib/about/index.mjs +18 -0
  56. package/esm2022/lib/about/interfaces.mjs +18 -0
  57. package/esm2022/lib/about/public-api.mjs +28 -0
  58. package/esm2022/lib/app-config/app-config-storage-prefix.factory.mjs +51 -0
  59. package/esm2022/lib/app-config/app-config.loader.mjs +41 -0
  60. package/esm2022/lib/app-config/app-config.module.mjs +33 -0
  61. package/esm2022/lib/app-config/app-config.pipe.mjs +38 -0
  62. package/esm2022/lib/app-config/app-config.service.mjs +243 -0
  63. package/esm2022/lib/app-config/debug-app-config.service.mjs +44 -0
  64. package/esm2022/lib/app-config/index.mjs +18 -0
  65. package/esm2022/lib/app-config/public-api.mjs +22 -0
  66. package/esm2022/lib/auth/authentication-interceptor/auth-bearer.interceptor.mjs +67 -0
  67. package/esm2022/lib/auth/basic-auth/basic-alfresco-auth.service.mjs +356 -0
  68. package/esm2022/lib/auth/basic-auth/content-auth.mjs +189 -0
  69. package/esm2022/lib/auth/basic-auth/process-auth.mjs +193 -0
  70. package/esm2022/lib/auth/guard/auth-guard-bpm.service.mjs +31 -0
  71. package/esm2022/lib/auth/guard/auth-guard-ecm.service.mjs +31 -0
  72. package/esm2022/lib/auth/guard/auth-guard-sso-role.service.mjs +57 -0
  73. package/esm2022/lib/auth/guard/auth-guard.mjs +53 -0
  74. package/esm2022/lib/auth/guard/auth-guard.service.mjs +113 -0
  75. package/esm2022/lib/auth/index.mjs +18 -0
  76. package/esm2022/lib/auth/interfaces/authentication-service.interface.mjs +18 -0
  77. package/esm2022/lib/auth/interfaces/authentication.interface.mjs +18 -0
  78. package/esm2022/lib/auth/interfaces/identity-group.interface.mjs +18 -0
  79. package/esm2022/lib/auth/interfaces/identity-user.service.interface.mjs +18 -0
  80. package/esm2022/lib/auth/interfaces/openid-configuration.interface.mjs +18 -0
  81. package/esm2022/lib/auth/models/application-access.model.mjs +18 -0
  82. package/esm2022/lib/auth/models/identity-group.model.mjs +18 -0
  83. package/esm2022/lib/auth/models/identity-role.model.mjs +30 -0
  84. package/esm2022/lib/auth/models/identity-user.model.mjs +18 -0
  85. package/esm2022/lib/auth/models/oauth-config.model.mjs +18 -0
  86. package/esm2022/lib/auth/models/redirection.model.mjs +28 -0
  87. package/esm2022/lib/auth/models/user-access.model.mjs +18 -0
  88. package/esm2022/lib/auth/oidc/auth-config.mjs +19 -0
  89. package/esm2022/lib/auth/oidc/auth-config.service.mjs +110 -0
  90. package/esm2022/lib/auth/oidc/auth-routing.module.mjs +34 -0
  91. package/esm2022/lib/auth/oidc/auth.module.mjs +112 -0
  92. package/esm2022/lib/auth/oidc/auth.service.mjs +22 -0
  93. package/esm2022/lib/auth/oidc/oidc-auth.guard.mjs +37 -0
  94. package/esm2022/lib/auth/oidc/oidc-authentication.service.mjs +202 -0
  95. package/esm2022/lib/auth/oidc/public-api.mjs +24 -0
  96. package/esm2022/lib/auth/oidc/redirect-auth.service.mjs +267 -0
  97. package/esm2022/lib/auth/oidc/retry-login.service.mjs +66 -0
  98. package/esm2022/lib/auth/oidc/token.interceptor.mjs +62 -0
  99. package/esm2022/lib/auth/oidc/view/authentication-confirmation/authentication-confirmation.component.mjs +31 -0
  100. package/esm2022/lib/auth/public-api.mjs +44 -0
  101. package/esm2022/lib/auth/services/authentication.service.mjs +190 -0
  102. package/esm2022/lib/auth/services/base-authentication.service.mjs +99 -0
  103. package/esm2022/lib/auth/services/identity-group.service.mjs +269 -0
  104. package/esm2022/lib/auth/services/identity-role.service.mjs +99 -0
  105. package/esm2022/lib/auth/services/identity-user.service.mjs +443 -0
  106. package/esm2022/lib/auth/services/jwt-helper.service.mjs +205 -0
  107. package/esm2022/lib/auth/services/oauth2.service.mjs +69 -0
  108. package/esm2022/lib/auth/services/time-sync.service.mjs +83 -0
  109. package/esm2022/lib/auth/services/user-access.service.mjs +110 -0
  110. package/esm2022/lib/avatar/avatar.component.mjs +51 -0
  111. package/esm2022/lib/blank-page/blank-page.component.mjs +31 -0
  112. package/esm2022/lib/blank-page/blank-page.module.mjs +33 -0
  113. package/esm2022/lib/blank-page/index.mjs +18 -0
  114. package/esm2022/lib/blank-page/public-api.mjs +19 -0
  115. package/esm2022/lib/button/button.component.mjs +61 -0
  116. package/esm2022/lib/card-view/card-view.module.mjs +80 -0
  117. package/esm2022/lib/card-view/components/base-card-view.mjs +51 -0
  118. package/esm2022/lib/card-view/components/card-view/card-view.component.mjs +66 -0
  119. package/esm2022/lib/card-view/components/card-view-arrayitem/card-view-arrayitem.component.mjs +55 -0
  120. package/esm2022/lib/card-view/components/card-view-boolitem/card-view-boolitem.component.mjs +39 -0
  121. package/esm2022/lib/card-view/components/card-view-dateitem/card-view-dateitem.component.mjs +182 -0
  122. package/esm2022/lib/card-view/components/card-view-item-dispatcher/card-view-item-dispatcher.component.mjs +108 -0
  123. package/esm2022/lib/card-view/components/card-view-keyvaluepairsitem/card-view-keyvaluepairsitem.component.mjs +64 -0
  124. package/esm2022/lib/card-view/components/card-view-mapitem/card-view-mapitem.component.mjs +46 -0
  125. package/esm2022/lib/card-view/components/card-view-selectitem/card-view-selectitem.component.mjs +137 -0
  126. package/esm2022/lib/card-view/components/card-view-selectitem/select-filter-input/select-filter-input.component.mjs +113 -0
  127. package/esm2022/lib/card-view/components/card-view-textitem/card-view-textitem.component.mjs +239 -0
  128. package/esm2022/lib/card-view/components/card-view.components.mjs +28 -0
  129. package/esm2022/lib/card-view/index.mjs +18 -0
  130. package/esm2022/lib/card-view/interfaces/base-card-view-update.interface.mjs +18 -0
  131. package/esm2022/lib/card-view/interfaces/card-view-arrayitem-properties.interface.mjs +18 -0
  132. package/esm2022/lib/card-view/interfaces/card-view-boolitem-properties.interface.mjs +18 -0
  133. package/esm2022/lib/card-view/interfaces/card-view-dateitem-properties.interface.mjs +18 -0
  134. package/esm2022/lib/card-view/interfaces/card-view-item-properties.interface.mjs +18 -0
  135. package/esm2022/lib/card-view/interfaces/card-view-item-validator.interface.mjs +18 -0
  136. package/esm2022/lib/card-view/interfaces/card-view-item.interface.mjs +18 -0
  137. package/esm2022/lib/card-view/interfaces/card-view-keyvaluepairsitem-properties.interface.mjs +18 -0
  138. package/esm2022/lib/card-view/interfaces/card-view-selectitem-properties.interface.mjs +18 -0
  139. package/esm2022/lib/card-view/interfaces/card-view-textitem-pipe-property.interface.mjs +18 -0
  140. package/esm2022/lib/card-view/interfaces/card-view-textitem-properties.interface.mjs +18 -0
  141. package/esm2022/lib/card-view/interfaces/card-view.interfaces.mjs +29 -0
  142. package/esm2022/lib/card-view/interfaces/click-notification.interface.mjs +18 -0
  143. package/esm2022/lib/card-view/interfaces/update-notification.interface.mjs +18 -0
  144. package/esm2022/lib/card-view/models/card-view-arrayitem.model.mjs +28 -0
  145. package/esm2022/lib/card-view/models/card-view-baseitem.model.mjs +64 -0
  146. package/esm2022/lib/card-view/models/card-view-boolitem.model.mjs +36 -0
  147. package/esm2022/lib/card-view/models/card-view-dateitem.model.mjs +58 -0
  148. package/esm2022/lib/card-view/models/card-view-datetimeitem.model.mjs +28 -0
  149. package/esm2022/lib/card-view/models/card-view-floatitem.model.mjs +33 -0
  150. package/esm2022/lib/card-view/models/card-view-intitem.model.mjs +36 -0
  151. package/esm2022/lib/card-view/models/card-view-keyvaluepairs.model.mjs +27 -0
  152. package/esm2022/lib/card-view/models/card-view-longitem.model.mjs +36 -0
  153. package/esm2022/lib/card-view/models/card-view-mapitem.model.mjs +32 -0
  154. package/esm2022/lib/card-view/models/card-view-selectitem.model.mjs +41 -0
  155. package/esm2022/lib/card-view/models/card-view-textitem.model.mjs +40 -0
  156. package/esm2022/lib/card-view/models/card-view.models.mjs +29 -0
  157. package/esm2022/lib/card-view/public-api.mjs +25 -0
  158. package/esm2022/lib/card-view/services/card-item-types.service.mjs +54 -0
  159. package/esm2022/lib/card-view/services/card-view-update.service.mjs +59 -0
  160. package/esm2022/lib/card-view/services/card-view.services.mjs +19 -0
  161. package/esm2022/lib/card-view/validators/card-view-item-float.validator.mjs +31 -0
  162. package/esm2022/lib/card-view/validators/card-view-item-int.validator.mjs +35 -0
  163. package/esm2022/lib/card-view/validators/card-view-item-length.validator.mjs +34 -0
  164. package/esm2022/lib/card-view/validators/card-view-item-long.validator.mjs +35 -0
  165. package/esm2022/lib/card-view/validators/card-view-item-match.validator.mjs +35 -0
  166. package/esm2022/lib/card-view/validators/card-view-item-minmax.validator.mjs +35 -0
  167. package/esm2022/lib/card-view/validators/card-view-item-only-positive-int.validator.mjs +32 -0
  168. package/esm2022/lib/card-view/validators/card-view-item-only-positive-long.validator.mjs +31 -0
  169. package/esm2022/lib/card-view/validators/card-view.validators.mjs +26 -0
  170. package/esm2022/lib/card-view/validators/validators.map.mjs +26 -0
  171. package/esm2022/lib/clipboard/clipboard.directive.mjs +98 -0
  172. package/esm2022/lib/clipboard/clipboard.module.mjs +34 -0
  173. package/esm2022/lib/clipboard/clipboard.service.mjs +103 -0
  174. package/esm2022/lib/clipboard/index.mjs +18 -0
  175. package/esm2022/lib/clipboard/public-api.mjs +21 -0
  176. package/esm2022/lib/comments/comment-list/comment-list.component.mjs +52 -0
  177. package/esm2022/lib/comments/comment-list/comment-list.module.mjs +33 -0
  178. package/esm2022/lib/comments/comment-list/index.mjs +18 -0
  179. package/esm2022/lib/comments/comment-list/public-api.mjs +19 -0
  180. package/esm2022/lib/comments/comments.component.mjs +132 -0
  181. package/esm2022/lib/comments/comments.module.mjs +33 -0
  182. package/esm2022/lib/comments/index.mjs +18 -0
  183. package/esm2022/lib/comments/interfaces/comments-service.interface.mjs +18 -0
  184. package/esm2022/lib/comments/interfaces/comments.token.mjs +19 -0
  185. package/esm2022/lib/comments/public-api.mjs +22 -0
  186. package/esm2022/lib/common/index.mjs +35 -0
  187. package/esm2022/lib/common/interface/search-component.interface.mjs +18 -0
  188. package/esm2022/lib/common/mock/app-config.service.mock.mjs +47 -0
  189. package/esm2022/lib/common/models/default-languages.model.mjs +36 -0
  190. package/esm2022/lib/common/models/log-levels.model.mjs +33 -0
  191. package/esm2022/lib/common/models/user-info-mode.enum.mjs +25 -0
  192. package/esm2022/lib/common/services/cookie.service.mjs +82 -0
  193. package/esm2022/lib/common/services/download.service.mjs +102 -0
  194. package/esm2022/lib/common/services/dynamic-component-mapper.service.mjs +89 -0
  195. package/esm2022/lib/common/services/highlight-transform.service.mjs +61 -0
  196. package/esm2022/lib/common/services/language-item.interface.mjs +18 -0
  197. package/esm2022/lib/common/services/log.service.mjs +171 -0
  198. package/esm2022/lib/common/services/page-title.service.mjs +63 -0
  199. package/esm2022/lib/common/services/sort-by-category.service.mjs +81 -0
  200. package/esm2022/lib/common/services/storage.service.mjs +143 -0
  201. package/esm2022/lib/common/services/thumbnail.service.mjs +194 -0
  202. package/esm2022/lib/common/services/url.service.mjs +45 -0
  203. package/esm2022/lib/common/services/user-preferences.service.mjs +238 -0
  204. package/esm2022/lib/common/utils/date-fns-adapter.mjs +115 -0
  205. package/esm2022/lib/common/utils/date-fns-utils.mjs +222 -0
  206. package/esm2022/lib/common/utils/datetime-fns-adapter.mjs +134 -0
  207. package/esm2022/lib/common/utils/file-utils.mjs +65 -0
  208. package/esm2022/lib/common/utils/index.mjs +18 -0
  209. package/esm2022/lib/common/utils/moment-date-adapter.mjs +202 -0
  210. package/esm2022/lib/common/utils/moment-date-formats.model.mjs +32 -0
  211. package/esm2022/lib/common/utils/object-utils.mjs +107 -0
  212. package/esm2022/lib/common/utils/public-api.mjs +25 -0
  213. package/esm2022/lib/common/utils/string-utils.mjs +45 -0
  214. package/esm2022/lib/context-menu/animations.mjs +33 -0
  215. package/esm2022/lib/context-menu/context-menu-list.component.mjs +91 -0
  216. package/esm2022/lib/context-menu/context-menu-overlay.mjs +25 -0
  217. package/esm2022/lib/context-menu/context-menu-overlay.service.mjs +109 -0
  218. package/esm2022/lib/context-menu/context-menu.directive.mjs +63 -0
  219. package/esm2022/lib/context-menu/context-menu.module.mjs +35 -0
  220. package/esm2022/lib/context-menu/context-menu.tokens.mjs +19 -0
  221. package/esm2022/lib/context-menu/index.mjs +18 -0
  222. package/esm2022/lib/context-menu/interfaces.mjs +18 -0
  223. package/esm2022/lib/context-menu/public-api.mjs +21 -0
  224. package/esm2022/lib/core.module.mjs +314 -0
  225. package/esm2022/lib/datatable/components/amount-cell/amount-cell.component.mjs +45 -0
  226. package/esm2022/lib/datatable/components/boolean-cell/boolean-cell.component.mjs +65 -0
  227. package/esm2022/lib/datatable/components/columns-selector/columns-search-filter.pipe.mjs +55 -0
  228. package/esm2022/lib/datatable/components/columns-selector/columns-selector.component.mjs +113 -0
  229. package/esm2022/lib/datatable/components/data-cell.event.mjs +31 -0
  230. package/esm2022/lib/datatable/components/data-row-action.event.mjs +34 -0
  231. package/esm2022/lib/datatable/components/datatable/datatable.component.mjs +914 -0
  232. package/esm2022/lib/datatable/components/datatable-cell/datatable-cell.component.mjs +126 -0
  233. package/esm2022/lib/datatable/components/datatable-row/datatable-row.component.mjs +98 -0
  234. package/esm2022/lib/datatable/components/date-cell/date-cell.component.mjs +78 -0
  235. package/esm2022/lib/datatable/components/empty-list/empty-list.component.mjs +60 -0
  236. package/esm2022/lib/datatable/components/filesize-cell/filesize-cell.component.mjs +49 -0
  237. package/esm2022/lib/datatable/components/icon-cell/icon-cell.component.mjs +67 -0
  238. package/esm2022/lib/datatable/components/json-cell/json-cell.component.mjs +86 -0
  239. package/esm2022/lib/datatable/components/location-cell/location-cell.component.mjs +69 -0
  240. package/esm2022/lib/datatable/components/mocks/datatable.mock.mjs +153 -0
  241. package/esm2022/lib/datatable/components/number-cell/number-cell.component.mjs +42 -0
  242. package/esm2022/lib/datatable/data/data-column.model.mjs +18 -0
  243. package/esm2022/lib/datatable/data/data-row-event.model.mjs +26 -0
  244. package/esm2022/lib/datatable/data/data-row-update.model.mjs +18 -0
  245. package/esm2022/lib/datatable/data/data-row.model.mjs +18 -0
  246. package/esm2022/lib/datatable/data/data-sorting.model.mjs +24 -0
  247. package/esm2022/lib/datatable/data/data-table.schema.mjs +132 -0
  248. package/esm2022/lib/datatable/data/datatable-adapter.mjs +18 -0
  249. package/esm2022/lib/datatable/data/object-datacolumn.model.mjs +46 -0
  250. package/esm2022/lib/datatable/data/object-datarow.model.mjs +41 -0
  251. package/esm2022/lib/datatable/data/object-datatable-adapter.mjs +134 -0
  252. package/esm2022/lib/datatable/data-column/data-column-header.component.mjs +45 -0
  253. package/esm2022/lib/datatable/data-column/data-column-list.component.mjs +36 -0
  254. package/esm2022/lib/datatable/data-column/data-column.component.mjs +114 -0
  255. package/esm2022/lib/datatable/data-column/index.mjs +18 -0
  256. package/esm2022/lib/datatable/data-column/public-api.mjs +20 -0
  257. package/esm2022/lib/datatable/datatable.module.mjs +161 -0
  258. package/esm2022/lib/datatable/directives/custom-empty-content-template.directive.mjs +35 -0
  259. package/esm2022/lib/datatable/directives/custom-loading-template.directive.mjs +30 -0
  260. package/esm2022/lib/datatable/directives/custom-no-permission-template.directive.mjs +35 -0
  261. package/esm2022/lib/datatable/directives/drop-zone.directive.mjs +89 -0
  262. package/esm2022/lib/datatable/directives/header-filter-template.directive.mjs +43 -0
  263. package/esm2022/lib/datatable/directives/loading-template.directive.mjs +46 -0
  264. package/esm2022/lib/datatable/directives/main-data-table-action-template.directive.mjs +43 -0
  265. package/esm2022/lib/datatable/directives/no-content-template.directive.mjs +46 -0
  266. package/esm2022/lib/datatable/directives/no-permission-template.directive.mjs +46 -0
  267. package/esm2022/lib/datatable/directives/resizable/resizable.directive.mjs +173 -0
  268. package/esm2022/lib/datatable/directives/resizable/resize-handle.directive.mjs +72 -0
  269. package/esm2022/lib/datatable/directives/resizable/types.mjs +18 -0
  270. package/esm2022/lib/datatable/index.mjs +18 -0
  271. package/esm2022/lib/datatable/public-api.mjs +55 -0
  272. package/esm2022/lib/datatable/services/datatable.service.mjs +33 -0
  273. package/esm2022/lib/dialogs/confirm-dialog/confirm.dialog.mjs +50 -0
  274. package/esm2022/lib/dialogs/confirm-dialog/confirm.dialog.module.mjs +38 -0
  275. package/esm2022/lib/dialogs/dialog/dialog-data.interface.mjs +18 -0
  276. package/esm2022/lib/dialogs/dialog/dialog.component.mjs +70 -0
  277. package/esm2022/lib/dialogs/dialog/dialog.model.mjs +22 -0
  278. package/esm2022/lib/dialogs/dialog/index.mjs +20 -0
  279. package/esm2022/lib/dialogs/edit-json/edit-json.dialog.mjs +52 -0
  280. package/esm2022/lib/dialogs/edit-json/edit-json.dialog.module.mjs +34 -0
  281. package/esm2022/lib/dialogs/index.mjs +18 -0
  282. package/esm2022/lib/dialogs/public-api.mjs +25 -0
  283. package/esm2022/lib/dialogs/unsaved-changes-dialog/unsaved-changes-dialog.component.mjs +73 -0
  284. package/esm2022/lib/dialogs/unsaved-changes-dialog/unsaved-changes-dialog.model.mjs +18 -0
  285. package/esm2022/lib/dialogs/unsaved-changes-dialog/unsaved-changes-dialog.module.mjs +33 -0
  286. package/esm2022/lib/dialogs/unsaved-changes-dialog/unsaved-changes.guard.mjs +64 -0
  287. package/esm2022/lib/directives/directive.module.mjs +56 -0
  288. package/esm2022/lib/directives/highlight.directive.mjs +67 -0
  289. package/esm2022/lib/directives/index.mjs +18 -0
  290. package/esm2022/lib/directives/infinite-select-scroll.directive.mjs +67 -0
  291. package/esm2022/lib/directives/logout.directive.mjs +72 -0
  292. package/esm2022/lib/directives/public-api.mjs +24 -0
  293. package/esm2022/lib/directives/tooltip-card/tooltip-card.component.mjs +60 -0
  294. package/esm2022/lib/directives/tooltip-card/tooltip-card.directive.mjs +104 -0
  295. package/esm2022/lib/directives/upload.directive.mjs +241 -0
  296. package/esm2022/lib/dynamic-chip-list/chip.mjs +18 -0
  297. package/esm2022/lib/dynamic-chip-list/dynamic-chip-list.component.mjs +204 -0
  298. package/esm2022/lib/dynamic-chip-list/dynamic-chip-list.module.mjs +33 -0
  299. package/esm2022/lib/dynamic-chip-list/index.mjs +18 -0
  300. package/esm2022/lib/dynamic-chip-list/public-api.mjs +20 -0
  301. package/esm2022/lib/events/base-ui.event.mjs +21 -0
  302. package/esm2022/lib/events/base.event.mjs +29 -0
  303. package/esm2022/lib/events/index.mjs +18 -0
  304. package/esm2022/lib/events/public-api.mjs +19 -0
  305. package/esm2022/lib/form/components/form-base.component.mjs +212 -0
  306. package/esm2022/lib/form/components/form-custom-button.directive.mjs +30 -0
  307. package/esm2022/lib/form/components/form-field/form-field.component.mjs +142 -0
  308. package/esm2022/lib/form/components/form-renderer.component.mjs +161 -0
  309. package/esm2022/lib/form/components/form-section/form-section.component.mjs +46 -0
  310. package/esm2022/lib/form/components/helpers/buttons-visibility.mjs +37 -0
  311. package/esm2022/lib/form/components/inplace-form-input/inplace-form-input.component.mjs +37 -0
  312. package/esm2022/lib/form/components/middlewares/decimal-middleware.service.mjs +48 -0
  313. package/esm2022/lib/form/components/middlewares/middleware.mjs +19 -0
  314. package/esm2022/lib/form/components/widgets/amount/amount.widget.mjs +77 -0
  315. package/esm2022/lib/form/components/widgets/base-viewer/base-viewer.widget.mjs +59 -0
  316. package/esm2022/lib/form/components/widgets/checkbox/checkbox.widget.mjs +52 -0
  317. package/esm2022/lib/form/components/widgets/core/container-column.model.mjs +28 -0
  318. package/esm2022/lib/form/components/widgets/core/container.model.mjs +50 -0
  319. package/esm2022/lib/form/components/widgets/core/content-link.model.mjs +52 -0
  320. package/esm2022/lib/form/components/widgets/core/displayable-cm-properties.model.mjs +18 -0
  321. package/esm2022/lib/form/components/widgets/core/error-message.model.mjs +38 -0
  322. package/esm2022/lib/form/components/widgets/core/external-content-link.mjs +18 -0
  323. package/esm2022/lib/form/components/widgets/core/external-content.mjs +18 -0
  324. package/esm2022/lib/form/components/widgets/core/form-field-file-source.mjs +18 -0
  325. package/esm2022/lib/form/components/widgets/core/form-field-metadata.mjs +18 -0
  326. package/esm2022/lib/form/components/widgets/core/form-field-option.mjs +18 -0
  327. package/esm2022/lib/form/components/widgets/core/form-field-rule.mjs +18 -0
  328. package/esm2022/lib/form/components/widgets/core/form-field-selected-folder.mjs +18 -0
  329. package/esm2022/lib/form/components/widgets/core/form-field-templates.mjs +18 -0
  330. package/esm2022/lib/form/components/widgets/core/form-field-types.mjs +74 -0
  331. package/esm2022/lib/form/components/widgets/core/form-field-utils.mjs +23 -0
  332. package/esm2022/lib/form/components/widgets/core/form-field-validator.mjs +268 -0
  333. package/esm2022/lib/form/components/widgets/core/form-field-variable-options.mjs +18 -0
  334. package/esm2022/lib/form/components/widgets/core/form-field.model.mjs +490 -0
  335. package/esm2022/lib/form/components/widgets/core/form-outcome-event.model.mjs +32 -0
  336. package/esm2022/lib/form/components/widgets/core/form-outcome.model.mjs +38 -0
  337. package/esm2022/lib/form/components/widgets/core/form-values.mjs +18 -0
  338. package/esm2022/lib/form/components/widgets/core/form-variable.model.mjs +18 -0
  339. package/esm2022/lib/form/components/widgets/core/form-widget.model.mjs +33 -0
  340. package/esm2022/lib/form/components/widgets/core/form.model.mjs +387 -0
  341. package/esm2022/lib/form/components/widgets/core/group.model.mjs +18 -0
  342. package/esm2022/lib/form/components/widgets/core/index.mjs +49 -0
  343. package/esm2022/lib/form/components/widgets/core/predefined-theme.mjs +115 -0
  344. package/esm2022/lib/form/components/widgets/core/process-form-model.interface.mjs +18 -0
  345. package/esm2022/lib/form/components/widgets/core/process-variable.model.mjs +18 -0
  346. package/esm2022/lib/form/components/widgets/core/tab.model.mjs +34 -0
  347. package/esm2022/lib/form/components/widgets/core/theme.model.mjs +18 -0
  348. package/esm2022/lib/form/components/widgets/core/upload-widget-content-link.model.mjs +27 -0
  349. package/esm2022/lib/form/components/widgets/core/widget-schema.model.mjs +18 -0
  350. package/esm2022/lib/form/components/widgets/date/date.widget.mjs +162 -0
  351. package/esm2022/lib/form/components/widgets/date-time/date-time.widget.mjs +153 -0
  352. package/esm2022/lib/form/components/widgets/decimal/decimal.component.mjs +53 -0
  353. package/esm2022/lib/form/components/widgets/display-text/display-text.schema.mjs +86 -0
  354. package/esm2022/lib/form/components/widgets/display-text/display-text.widget.mjs +46 -0
  355. package/esm2022/lib/form/components/widgets/display-text/index.mjs +19 -0
  356. package/esm2022/lib/form/components/widgets/error/error.component.mjs +92 -0
  357. package/esm2022/lib/form/components/widgets/header/header.schema.mjs +86 -0
  358. package/esm2022/lib/form/components/widgets/header/header.widget.mjs +42 -0
  359. package/esm2022/lib/form/components/widgets/header/index.mjs +19 -0
  360. package/esm2022/lib/form/components/widgets/hyperlink/hyperlink.widget.mjs +69 -0
  361. package/esm2022/lib/form/components/widgets/index.mjs +71 -0
  362. package/esm2022/lib/form/components/widgets/json/json.widget.mjs +66 -0
  363. package/esm2022/lib/form/components/widgets/multiline-text/multiline-text.widget.mjs +55 -0
  364. package/esm2022/lib/form/components/widgets/number/number.widget.mjs +71 -0
  365. package/esm2022/lib/form/components/widgets/reactive-widget.interface.mjs +18 -0
  366. package/esm2022/lib/form/components/widgets/text/text-mask.component.mjs +215 -0
  367. package/esm2022/lib/form/components/widgets/text/text.widget.mjs +65 -0
  368. package/esm2022/lib/form/components/widgets/unknown/unknown.widget.mjs +63 -0
  369. package/esm2022/lib/form/components/widgets/widget.component.mjs +110 -0
  370. package/esm2022/lib/form/events/form-error.event.mjs +24 -0
  371. package/esm2022/lib/form/events/form-field.event.mjs +24 -0
  372. package/esm2022/lib/form/events/form-rules.event.mjs +25 -0
  373. package/esm2022/lib/form/events/form-spinner.event.mjs +23 -0
  374. package/esm2022/lib/form/events/form.event.mjs +29 -0
  375. package/esm2022/lib/form/events/index.mjs +24 -0
  376. package/esm2022/lib/form/events/validate-form-field.event.mjs +24 -0
  377. package/esm2022/lib/form/events/validate-form.event.mjs +25 -0
  378. package/esm2022/lib/form/form-base.module.mjs +90 -0
  379. package/esm2022/lib/form/index.mjs +18 -0
  380. package/esm2022/lib/form/models/form-rules.model.mjs +77 -0
  381. package/esm2022/lib/form/models/task-process-variable.model.mjs +19 -0
  382. package/esm2022/lib/form/models/widget-visibility.model.mjs +104 -0
  383. package/esm2022/lib/form/pipes/field-style.pipe.mjs +45 -0
  384. package/esm2022/lib/form/pipes/index.mjs +18 -0
  385. package/esm2022/lib/form/public-api.mjs +35 -0
  386. package/esm2022/lib/form/services/form-rendering.service.mjs +53 -0
  387. package/esm2022/lib/form/services/form-validation-service.interface.mjs +18 -0
  388. package/esm2022/lib/form/services/form.service.mjs +86 -0
  389. package/esm2022/lib/form/services/widget-visibility.service.mjs +294 -0
  390. package/esm2022/lib/header/header.component.mjs +73 -0
  391. package/esm2022/lib/header/index.mjs +18 -0
  392. package/esm2022/lib/header/navbar/navbar-item.component.mjs +37 -0
  393. package/esm2022/lib/header/navbar/navbar.component.mjs +36 -0
  394. package/esm2022/lib/header/public-api.mjs +20 -0
  395. package/esm2022/lib/icon/icon.component.mjs +51 -0
  396. package/esm2022/lib/icon/icon.module.mjs +36 -0
  397. package/esm2022/lib/icon/index.mjs +18 -0
  398. package/esm2022/lib/icon/public-api.mjs +19 -0
  399. package/esm2022/lib/identity-user-info/identity-user-info.component.mjs +86 -0
  400. package/esm2022/lib/identity-user-info/identity-user-info.module.mjs +33 -0
  401. package/esm2022/lib/identity-user-info/index.mjs +18 -0
  402. package/esm2022/lib/identity-user-info/public-api.mjs +19 -0
  403. package/esm2022/lib/info-drawer/index.mjs +18 -0
  404. package/esm2022/lib/info-drawer/info-drawer-layout.component.mjs +71 -0
  405. package/esm2022/lib/info-drawer/info-drawer.component.mjs +113 -0
  406. package/esm2022/lib/info-drawer/info-drawer.module.mjs +53 -0
  407. package/esm2022/lib/info-drawer/public-api.mjs +20 -0
  408. package/esm2022/lib/interface/index.mjs +18 -0
  409. package/esm2022/lib/interface/injection.tokens.mjs +19 -0
  410. package/esm2022/lib/interface/public-api.mjs +18 -0
  411. package/esm2022/lib/language-menu/index.mjs +18 -0
  412. package/esm2022/lib/language-menu/language-menu.component.mjs +61 -0
  413. package/esm2022/lib/language-menu/language-menu.module.mjs +35 -0
  414. package/esm2022/lib/language-menu/language-picker.component.mjs +77 -0
  415. package/esm2022/lib/language-menu/public-api.mjs +21 -0
  416. package/esm2022/lib/language-menu/service/language.service.interface.mjs +18 -0
  417. package/esm2022/lib/language-menu/service/language.service.mjs +34 -0
  418. package/esm2022/lib/layout/components/header/header.component.mjs +99 -0
  419. package/esm2022/lib/layout/components/layout-container/layout-container.component.mjs +180 -0
  420. package/esm2022/lib/layout/components/sidebar-action/sidebar-action-menu.component.mjs +82 -0
  421. package/esm2022/lib/layout/components/sidenav-layout/sidenav-layout.component.mjs +145 -0
  422. package/esm2022/lib/layout/directives/sidenav-layout-content.directive.mjs +33 -0
  423. package/esm2022/lib/layout/directives/sidenav-layout-header.directive.mjs +33 -0
  424. package/esm2022/lib/layout/directives/sidenav-layout-navigation.directive.mjs +33 -0
  425. package/esm2022/lib/layout/index.mjs +18 -0
  426. package/esm2022/lib/layout/layout.module.mjs +72 -0
  427. package/esm2022/lib/layout/public-api.mjs +25 -0
  428. package/esm2022/lib/login/components/login/login.component.mjs +367 -0
  429. package/esm2022/lib/login/components/login-dialog/login-dialog-component-data.interface.mjs +18 -0
  430. package/esm2022/lib/login/components/login-dialog/login-dialog.component.mjs +57 -0
  431. package/esm2022/lib/login/components/login-dialog-panel/login-dialog-panel.component.mjs +48 -0
  432. package/esm2022/lib/login/directives/login-footer.directive.mjs +41 -0
  433. package/esm2022/lib/login/directives/login-header.directive.mjs +41 -0
  434. package/esm2022/lib/login/index.mjs +18 -0
  435. package/esm2022/lib/login/login.module.mjs +54 -0
  436. package/esm2022/lib/login/models/login-error.event.mjs +22 -0
  437. package/esm2022/lib/login/models/login-submit.event.mjs +32 -0
  438. package/esm2022/lib/login/models/login-success.event.mjs +24 -0
  439. package/esm2022/lib/login/public-api.mjs +27 -0
  440. package/esm2022/lib/material.module.mjs +254 -0
  441. package/esm2022/lib/mock/cookie.service.mock.mjs +43 -0
  442. package/esm2022/lib/mock/data-column.mock.mjs +73 -0
  443. package/esm2022/lib/mock/event.mock.mjs +39 -0
  444. package/esm2022/lib/mock/form/form-definition-readonly.mock.mjs +225 -0
  445. package/esm2022/lib/mock/form/form-definition-visibility.mock.mjs +347 -0
  446. package/esm2022/lib/mock/form/form-definition.mock.mjs +403 -0
  447. package/esm2022/lib/mock/form/form.component.mock.mjs +275 -0
  448. package/esm2022/lib/mock/form/form.service.mock.mjs +248 -0
  449. package/esm2022/lib/mock/form/widget-visibility.service.mock.mjs +1835 -0
  450. package/esm2022/lib/mock/index.mjs +18 -0
  451. package/esm2022/lib/mock/public-api.mjs +27 -0
  452. package/esm2022/lib/mock/translation.service.mock.mjs +44 -0
  453. package/esm2022/lib/models/comment.model.mjs +51 -0
  454. package/esm2022/lib/models/component.model.mjs +24 -0
  455. package/esm2022/lib/models/decimal-number.model.mjs +26 -0
  456. package/esm2022/lib/models/general-user.model.mjs +24 -0
  457. package/esm2022/lib/models/index.mjs +18 -0
  458. package/esm2022/lib/models/pagination.model.mjs +29 -0
  459. package/esm2022/lib/models/path.model.mjs +24 -0
  460. package/esm2022/lib/models/product-version.model.mjs +28 -0
  461. package/esm2022/lib/models/public-api.mjs +24 -0
  462. package/esm2022/lib/models/request-pagination.model.mjs +25 -0
  463. package/esm2022/lib/notifications/components/add-notification.stories.component.mjs +44 -0
  464. package/esm2022/lib/notifications/components/notification-history.component.mjs +138 -0
  465. package/esm2022/lib/notifications/helpers/notification.factory.mjs +43 -0
  466. package/esm2022/lib/notifications/index.mjs +18 -0
  467. package/esm2022/lib/notifications/models/notification.model.mjs +25 -0
  468. package/esm2022/lib/notifications/notification-history.module.mjs +35 -0
  469. package/esm2022/lib/notifications/public-api.mjs +23 -0
  470. package/esm2022/lib/notifications/services/notification.service.mjs +166 -0
  471. package/esm2022/lib/pagination/index.mjs +18 -0
  472. package/esm2022/lib/pagination/infinite-pagination.component.mjs +111 -0
  473. package/esm2022/lib/pagination/paginated-component.interface.mjs +18 -0
  474. package/esm2022/lib/pagination/pagination-component.interface.mjs +18 -0
  475. package/esm2022/lib/pagination/pagination.component.mjs +263 -0
  476. package/esm2022/lib/pagination/pagination.module.mjs +35 -0
  477. package/esm2022/lib/pagination/public-api.mjs +22 -0
  478. package/esm2022/lib/pipes/date-time.pipe.mjs +46 -0
  479. package/esm2022/lib/pipes/decimal-number.pipe.mjs +78 -0
  480. package/esm2022/lib/pipes/file-size.pipe.mjs +54 -0
  481. package/esm2022/lib/pipes/file-type.pipe.mjs +40 -0
  482. package/esm2022/lib/pipes/format-space.pipe.mjs +39 -0
  483. package/esm2022/lib/pipes/full-name.pipe.mjs +43 -0
  484. package/esm2022/lib/pipes/index.mjs +18 -0
  485. package/esm2022/lib/pipes/localized-date.pipe.mjs +70 -0
  486. package/esm2022/lib/pipes/multi-value.pipe.mjs +37 -0
  487. package/esm2022/lib/pipes/pipe.module.mjs +83 -0
  488. package/esm2022/lib/pipes/public-api.mjs +30 -0
  489. package/esm2022/lib/pipes/text-highlight.pipe.mjs +39 -0
  490. package/esm2022/lib/pipes/time-ago.pipe.mjs +65 -0
  491. package/esm2022/lib/pipes/truncate.pipe.mjs +33 -0
  492. package/esm2022/lib/pipes/user-initial.pipe.mjs +52 -0
  493. package/esm2022/lib/pipes/user-like.interface.mjs +18 -0
  494. package/esm2022/lib/progress/progress.component.mjs +90 -0
  495. package/esm2022/lib/search-text/animations.mjs +32 -0
  496. package/esm2022/lib/search-text/index.mjs +18 -0
  497. package/esm2022/lib/search-text/models/search-text-input.model.mjs +23 -0
  498. package/esm2022/lib/search-text/public-api.mjs +22 -0
  499. package/esm2022/lib/search-text/search-text-input.component.mjs +283 -0
  500. package/esm2022/lib/search-text/search-text-input.module.mjs +35 -0
  501. package/esm2022/lib/search-text/search-trigger.directive.mjs +181 -0
  502. package/esm2022/lib/snackbar-content/index.mjs +18 -0
  503. package/esm2022/lib/snackbar-content/public-api.mjs +20 -0
  504. package/esm2022/lib/snackbar-content/snack-bar-data.mjs +18 -0
  505. package/esm2022/lib/snackbar-content/snackbar-content.component.mjs +49 -0
  506. package/esm2022/lib/snackbar-content/snackbar-content.module.mjs +33 -0
  507. package/esm2022/lib/sorting-picker/index.mjs +18 -0
  508. package/esm2022/lib/sorting-picker/public-api.mjs +18 -0
  509. package/esm2022/lib/sorting-picker/sorting-picker.component.mjs +67 -0
  510. package/esm2022/lib/templates/empty-content/empty-content.component.mjs +43 -0
  511. package/esm2022/lib/templates/error-content/error-content.component.mjs +61 -0
  512. package/esm2022/lib/templates/index.mjs +18 -0
  513. package/esm2022/lib/templates/public-api.mjs +20 -0
  514. package/esm2022/lib/templates/template.module.mjs +38 -0
  515. package/esm2022/lib/testing/core.story.module.mjs +39 -0
  516. package/esm2022/lib/testing/core.testing.module.mjs +35 -0
  517. package/esm2022/lib/testing/index.mjs +22 -0
  518. package/esm2022/lib/testing/noop-auth.module.mjs +80 -0
  519. package/esm2022/lib/testing/noop-translate.module.mjs +61 -0
  520. package/esm2022/lib/testing/unit-testing-utils.mjs +364 -0
  521. package/esm2022/lib/toolbar/index.mjs +18 -0
  522. package/esm2022/lib/toolbar/public-api.mjs +21 -0
  523. package/esm2022/lib/toolbar/toolbar-divider.component.mjs +27 -0
  524. package/esm2022/lib/toolbar/toolbar-title.component.mjs +32 -0
  525. package/esm2022/lib/toolbar/toolbar.component.mjs +39 -0
  526. package/esm2022/lib/toolbar/toolbar.module.mjs +36 -0
  527. package/esm2022/lib/translation/index.mjs +18 -0
  528. package/esm2022/lib/translation/public-api.mjs +19 -0
  529. package/esm2022/lib/translation/translate-loader.service.mjs +148 -0
  530. package/esm2022/lib/translation/translation.service.mjs +148 -0
  531. package/esm2022/lib/viewer/components/download-prompt-dialog/download-prompt-dialog.component.mjs +36 -0
  532. package/esm2022/lib/viewer/components/img-viewer/img-viewer.component.mjs +220 -0
  533. package/esm2022/lib/viewer/components/media-player/media-player.component.mjs +64 -0
  534. package/esm2022/lib/viewer/components/pdf-viewer/pdf-viewer.component.mjs +550 -0
  535. package/esm2022/lib/viewer/components/pdf-viewer-password-dialog/pdf-viewer-password-dialog.mjs +60 -0
  536. package/esm2022/lib/viewer/components/pdf-viewer-thumb/pdf-viewer-thumb.component.mjs +48 -0
  537. package/esm2022/lib/viewer/components/pdf-viewer-thumbnails/pdf-viewer-thumbnails.component.mjs +198 -0
  538. package/esm2022/lib/viewer/components/txt-viewer/txt-viewer.component.mjs +85 -0
  539. package/esm2022/lib/viewer/components/unknown-format/unknown-format.component.mjs +32 -0
  540. package/esm2022/lib/viewer/components/viewer-more-actions.component.mjs +34 -0
  541. package/esm2022/lib/viewer/components/viewer-open-with.component.mjs +34 -0
  542. package/esm2022/lib/viewer/components/viewer-render/viewer-render.component.mjs +216 -0
  543. package/esm2022/lib/viewer/components/viewer-sidebar.component.mjs +46 -0
  544. package/esm2022/lib/viewer/components/viewer-toolbar-actions.component.mjs +34 -0
  545. package/esm2022/lib/viewer/components/viewer-toolbar-custom-actions.component.mjs +34 -0
  546. package/esm2022/lib/viewer/components/viewer-toolbar.component.mjs +34 -0
  547. package/esm2022/lib/viewer/components/viewer.component.mjs +486 -0
  548. package/esm2022/lib/viewer/directives/viewer-extension.directive.mjs +67 -0
  549. package/esm2022/lib/viewer/index.mjs +18 -0
  550. package/esm2022/lib/viewer/models/download-prompt.actions.mjs +23 -0
  551. package/esm2022/lib/viewer/models/viewer.model.mjs +22 -0
  552. package/esm2022/lib/viewer/public-api.mjs +40 -0
  553. package/esm2022/lib/viewer/services/rendering-queue.services.mjs +179 -0
  554. package/esm2022/lib/viewer/services/view-util.service.mjs +149 -0
  555. package/esm2022/lib/viewer/viewer.module.mjs +110 -0
  556. package/esm2022/public-api.mjs +60 -0
  557. package/esm2022/shell/alfresco-adf-core-shell.mjs +5 -0
  558. package/esm2022/shell/index.mjs +20 -0
  559. package/esm2022/shell/lib/components/shell/shell.component.mjs +122 -0
  560. package/esm2022/shell/lib/services/shell-app.service.mjs +22 -0
  561. package/esm2022/shell/lib/shell.module.mjs +79 -0
  562. package/esm2022/shell/lib/shell.routes.mjs +25 -0
  563. package/feature-flags/lib/providers/debug-feature-flags.provider.d.ts +35 -4
  564. package/fesm2022/adf-core.mjs +1177 -1229
  565. package/fesm2022/adf-core.mjs.map +1 -1
  566. package/fesm2022/alfresco-adf-core-api.mjs +4 -4
  567. package/fesm2022/alfresco-adf-core-api.mjs.map +1 -1
  568. package/fesm2022/alfresco-adf-core-auth.mjs +3 -3
  569. package/fesm2022/alfresco-adf-core-auth.mjs.map +1 -1
  570. package/fesm2022/alfresco-adf-core-breadcrumbs.mjs +11 -11
  571. package/fesm2022/alfresco-adf-core-breadcrumbs.mjs.map +1 -1
  572. package/fesm2022/alfresco-adf-core-feature-flags.mjs +59 -52
  573. package/fesm2022/alfresco-adf-core-feature-flags.mjs.map +1 -1
  574. package/fesm2022/alfresco-adf-core-shell.mjs +21 -96
  575. package/fesm2022/alfresco-adf-core-shell.mjs.map +1 -1
  576. package/lib/app-config/app-config.module.d.ts +0 -1
  577. package/lib/app-config/public-api.d.ts +0 -1
  578. package/lib/auth/oidc/auth.module.d.ts +4 -4
  579. package/lib/auth/oidc/view/authentication-confirmation/authentication-confirmation.component.d.ts +1 -1
  580. package/lib/card-view/components/base-card-view.d.ts +1 -1
  581. package/lib/card-view/components/card-view/card-view.component.scss +9 -12
  582. package/lib/card-view/components/card-view-selectitem/card-view-selectitem.component.scss +2 -1
  583. package/lib/card-view/components/card-view-textitem/card-view-textitem.component.scss +5 -2
  584. package/lib/core.module.d.ts +128 -124
  585. package/lib/datatable/data/data-table.schema.d.ts +1 -1
  586. package/lib/dialogs/confirm-dialog/confirm.dialog.d.ts +1 -1
  587. package/lib/dialogs/confirm-dialog/confirm.dialog.module.d.ts +6 -2
  588. package/lib/form/form-base.module.d.ts +0 -1
  589. package/lib/testing/core.testing.module.d.ts +0 -1
  590. package/lib/testing/noop-translate.module.d.ts +2 -1
  591. package/lib/translation/public-api.d.ts +0 -1
  592. package/package.json +15 -3
  593. package/public-api.d.ts +0 -1
  594. package/shell/README.md +6 -20
  595. package/shell/index.d.ts +0 -2
  596. package/shell/lib/shell.module.d.ts +7 -4
  597. package/shell/lib/shell.routes.d.ts +1 -13
  598. package/lib/app-config/provide-app-config.d.ts +0 -23
  599. package/lib/landing-page/index.d.ts +0 -17
  600. package/lib/landing-page/provider.d.ts +0 -24
  601. package/lib/landing-page/public-api.d.ts +0 -17
  602. package/lib/translation/provide-i18n.d.ts +0 -39
  603. package/shell/lib/providers.d.ts +0 -36
@@ -0,0 +1,129 @@
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 { ChangeDetectionStrategy, Component, Inject, ViewEncapsulation } from '@angular/core';
18
+ import { CommonModule } from '@angular/common';
19
+ import { FeaturesServiceToken, WritableFeaturesServiceToken } from '../../interfaces/features.interface';
20
+ import { BehaviorSubject, combineLatest } from 'rxjs';
21
+ import { debounceTime, map, take, tap } from 'rxjs/operators';
22
+ import { MatTableModule } from '@angular/material/table';
23
+ import { MatSlideToggleModule } from '@angular/material/slide-toggle';
24
+ import { MatToolbarModule } from '@angular/material/toolbar';
25
+ import { MatIconModule } from '@angular/material/icon';
26
+ import { MatButtonModule } from '@angular/material/button';
27
+ import { MatInputModule } from '@angular/material/input';
28
+ import { FormsModule } from '@angular/forms';
29
+ import { FlagsOverrideComponent } from '../feature-override-indicator.component';
30
+ import { MatDialogModule } from '@angular/material/dialog';
31
+ import { TranslatePipe } from '@ngx-translate/core';
32
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
33
+ import * as i0 from "@angular/core";
34
+ import * as i1 from "@angular/common";
35
+ import * as i2 from "@angular/forms";
36
+ import * as i3 from "@angular/material/table";
37
+ import * as i4 from "@angular/material/slide-toggle";
38
+ import * as i5 from "@angular/material/toolbar";
39
+ import * as i6 from "@angular/material/icon";
40
+ import * as i7 from "@angular/material/button";
41
+ import * as i8 from "@angular/material/input";
42
+ import * as i9 from "@angular/material/form-field";
43
+ import * as i10 from "@angular/material/dialog";
44
+ export class FlagsComponent {
45
+ constructor(featuresService, writableFeaturesService) {
46
+ this.featuresService = featuresService;
47
+ this.writableFeaturesService = writableFeaturesService;
48
+ this.displayedColumns = ['icon', 'flag', 'value'];
49
+ this.isEnabled = false;
50
+ this.inputValue = '';
51
+ this.inputValue$ = new BehaviorSubject('');
52
+ this.writableFlagChangeset = {};
53
+ if (this.featuresService.isEnabled$) {
54
+ this.featuresService
55
+ .isEnabled$()
56
+ .pipe(takeUntilDestroyed())
57
+ .subscribe((isEnabled) => {
58
+ this.isEnabled = isEnabled;
59
+ });
60
+ }
61
+ const flags$ = this.featuresService.getFlags$().pipe(tap((flags) => (this.writableFlagChangeset = flags)), map((flags) => Object.keys(flags).map((key) => ({
62
+ flag: key,
63
+ value: flags[key].current,
64
+ fictive: flags[key]?.fictive ?? false
65
+ }))));
66
+ const debouncedInputValue$ = this.inputValue$.pipe(debounceTime(100));
67
+ this.flags$ = combineLatest([flags$, debouncedInputValue$]).pipe(map(([flags, inputValue]) => {
68
+ if (!inputValue) {
69
+ return flags;
70
+ }
71
+ return flags.filter((flag) => flag.flag.includes(inputValue));
72
+ }));
73
+ this.showPlusButton$ = this.flags$.pipe(map((filteredFlags) => this.isEnabled && filteredFlags.length === 0 && this.inputValue.trim().length > 0));
74
+ }
75
+ onChange(flag, value) {
76
+ this.writableFeaturesService.setFlag(flag, value);
77
+ }
78
+ onEnable(value) {
79
+ if (value) {
80
+ this.writableFeaturesService.mergeFlags(this.writableFlagChangeset);
81
+ }
82
+ this.featuresService.enable(value);
83
+ }
84
+ onInputChange(text) {
85
+ this.inputValue$.next(text);
86
+ }
87
+ onClearInput() {
88
+ this.inputValue = '';
89
+ this.inputValue$.next('');
90
+ }
91
+ onAdd(event) {
92
+ this.showPlusButton$.pipe(take(1)).subscribe((showPlusButton) => {
93
+ if (showPlusButton && event.key === 'Enter' && event.shiftKey) {
94
+ this.writableFeaturesService.setFlag(this.inputValue, false);
95
+ }
96
+ });
97
+ }
98
+ onAddButtonClick() {
99
+ this.writableFeaturesService.setFlag(this.inputValue, false);
100
+ }
101
+ onDelete(flag) {
102
+ this.writableFeaturesService.removeFlag(flag);
103
+ }
104
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FlagsComponent, deps: [{ token: FeaturesServiceToken }, { token: WritableFeaturesServiceToken }], target: i0.ɵɵFactoryTarget.Component }); }
105
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FlagsComponent, isStandalone: true, selector: "adf-feature-flags-overrides", ngImport: i0, template: "<mat-toolbar class=\"adf-feature-flags-overrides-header\">\n <div class=\"adf-feature-flags-overrides-header-text\" tabindex=\"0\">\n <adf-feature-flags-override-indicator\n class=\"adf-activity-indicator\"\n size='large' />\n <span>{{ \"CORE.FEATURE-FLAGS.OVERRIDES\" | translate }}</span>\n </div>\n <mat-slide-toggle\n [checked]=\"isEnabled\"\n (change)=\"onEnable($event.checked)\" />\n <button\n class=\"adf-feature-flags-overrides-header-close\"\n mat-icon-button\n mat-dialog-close>\n <mat-icon>close</mat-icon>\n </button>\n</mat-toolbar>\n\n<ng-container *ngIf=\"flags$ | async as flags\">\n <table mat-table [dataSource]=\"flags\" class=\"adf-feature-flags-overrides-table mat-elevation-z0\">\n <ng-container matColumnDef=\"icon\">\n <th mat-header-cell class=\"adf-icon-col adf-header-cell\" *matHeaderCellDef>\n <mat-icon class=\"material-icons-outlined adf-search-icon\">search</mat-icon>\n </th>\n <td mat-cell class=\"adf-icon-col\" *matCellDef=\"let element\">\n <button mat-icon-button *ngIf=\"element.fictive; else flagFromApi\" class=\"adf-fictive-flag-button\" (click)=\"onDelete(element.flag)\">\n <mat-icon class=\"material-icons-outlined adf-custom-flag-icon\" fontIcon=\"memory\" />\n <mat-icon class=\"material-icons-outlined adf-trash-icon\" fontIcon=\"delete\" />\n </button>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"flag\">\n <th mat-header-cell class=\"flag-col header-cell\" *matHeaderCellDef>\n <mat-form-field class=\"adf-flag-form-field\" appearance=\"fill\" floatLabel=\"auto\">\n <input class=\"flag-input\" [placeholder]=\"(isEnabled ? 'CORE.FEATURE-FLAGS.FILTER_OR_ADD_NEW' : 'CORE.FEATURE-FLAGS.FILTER') | translate\" matInput type=\"text\" [(ngModel)]=\"inputValue\" (keyup)=\"onInputChange(inputValue)\" (keypress)=\"onAdd($event)\">\n </mat-form-field>\n </th>\n <td mat-cell class=\"flag-col\" *matCellDef=\"let element\">{{ element.flag }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"value\">\n <th mat-header-cell class=\"adf-val-col header-cell\" *matHeaderCellDef>\n <div class=\"adf-input-field-buttons-container\">\n <button *ngIf=\"showPlusButton$ | async\" mat-icon-button title=\"{{'CORE.FEATURE-FLAGS.ADD_NEW' | translate}}\" color=\"accent\" (click)=\"onAddButtonClick()\">\n <mat-icon class=\"material-icons-outlined\" fontIcon=\"add_circle\" />\n </button>\n <button *ngIf=\"inputValue\" matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"onClearInput()\" class=\"adf-clear-button\">\n <mat-icon>cancel</mat-icon>\n </button>\n </div>\n </th>\n <td mat-cell class=\"adf-val-col\" *matCellDef=\"let element\">\n <mat-slide-toggle\n [checked]=\"element.value\"\n (change)=\"onChange(element.flag, $event.checked)\"\n [disabled]=\"!isEnabled\" />\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n </table>\n</ng-container>\n\n<ng-template #flagFromApi>\n <mat-icon class=\"material-icons-outlined\">cloud</mat-icon>\n</ng-template>\n\n", styles: [".adf-feature-flags-overrides-header{position:sticky;top:0;height:64px;z-index:101;display:flex}.adf-feature-flags-overrides-header .adf-activity-indicator{margin-right:12px;position:relative;top:-2px}.adf-feature-flags-overrides-header-text{flex:1}.adf-feature-flags-overrides-header-close{margin-left:12px}.adf-feature-flags-overrides-table{width:100%}.adf-feature-flags-overrides-table .adf-search-icon{position:relative;top:4px}.adf-feature-flags-overrides-table .adf-flag-form-field{width:100%;display:flex}.adf-feature-flags-overrides-table .adf-flag-form-field .mat-mdc-form-field-subscript-wrapper,.adf-feature-flags-overrides-table .adf-flag-form-field .mdc-line-ripple{display:none}.adf-feature-flags-overrides-table .adf-input-field-buttons-container{display:flex;justify-content:flex-end}.adf-feature-flags-overrides-table .adf-clear-button{margin-left:-14px}.adf-feature-flags-overrides-table .adf-fictive-flag-button{margin-left:-12px}.adf-feature-flags-overrides-table .adf-fictive-flag-button .adf-custom-flag-icon{display:block}.adf-feature-flags-overrides-table .adf-fictive-flag-button .adf-trash-icon,.adf-feature-flags-overrides-table .adf-fictive-flag-button:hover .adf-custom-flag-icon{display:none}.adf-feature-flags-overrides-table .adf-fictive-flag-button:hover .adf-trash-icon{display:block}.adf-feature-flags-overrides-table .adf-icon-col{width:56px;padding-left:24px}.adf-feature-flags-overrides-table .adf-val-col{width:85px}\n"], dependencies: [{ kind: "component", type: FlagsOverrideComponent, selector: "adf-feature-flags-override-indicator", inputs: ["size"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i3.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i3.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i3.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i3.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i3.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i3.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i3.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i3.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i3.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i3.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i4.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "ngmodule", type: MatToolbarModule }, { kind: "component", type: i5.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i7.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i8.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i9.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i9.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i10.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
106
+ }
107
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FlagsComponent, decorators: [{
108
+ type: Component,
109
+ args: [{ selector: 'adf-feature-flags-overrides', standalone: true, imports: [
110
+ FlagsOverrideComponent,
111
+ CommonModule,
112
+ FormsModule,
113
+ MatTableModule,
114
+ MatSlideToggleModule,
115
+ MatToolbarModule,
116
+ MatIconModule,
117
+ MatButtonModule,
118
+ MatInputModule,
119
+ MatDialogModule,
120
+ TranslatePipe
121
+ ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-toolbar class=\"adf-feature-flags-overrides-header\">\n <div class=\"adf-feature-flags-overrides-header-text\" tabindex=\"0\">\n <adf-feature-flags-override-indicator\n class=\"adf-activity-indicator\"\n size='large' />\n <span>{{ \"CORE.FEATURE-FLAGS.OVERRIDES\" | translate }}</span>\n </div>\n <mat-slide-toggle\n [checked]=\"isEnabled\"\n (change)=\"onEnable($event.checked)\" />\n <button\n class=\"adf-feature-flags-overrides-header-close\"\n mat-icon-button\n mat-dialog-close>\n <mat-icon>close</mat-icon>\n </button>\n</mat-toolbar>\n\n<ng-container *ngIf=\"flags$ | async as flags\">\n <table mat-table [dataSource]=\"flags\" class=\"adf-feature-flags-overrides-table mat-elevation-z0\">\n <ng-container matColumnDef=\"icon\">\n <th mat-header-cell class=\"adf-icon-col adf-header-cell\" *matHeaderCellDef>\n <mat-icon class=\"material-icons-outlined adf-search-icon\">search</mat-icon>\n </th>\n <td mat-cell class=\"adf-icon-col\" *matCellDef=\"let element\">\n <button mat-icon-button *ngIf=\"element.fictive; else flagFromApi\" class=\"adf-fictive-flag-button\" (click)=\"onDelete(element.flag)\">\n <mat-icon class=\"material-icons-outlined adf-custom-flag-icon\" fontIcon=\"memory\" />\n <mat-icon class=\"material-icons-outlined adf-trash-icon\" fontIcon=\"delete\" />\n </button>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"flag\">\n <th mat-header-cell class=\"flag-col header-cell\" *matHeaderCellDef>\n <mat-form-field class=\"adf-flag-form-field\" appearance=\"fill\" floatLabel=\"auto\">\n <input class=\"flag-input\" [placeholder]=\"(isEnabled ? 'CORE.FEATURE-FLAGS.FILTER_OR_ADD_NEW' : 'CORE.FEATURE-FLAGS.FILTER') | translate\" matInput type=\"text\" [(ngModel)]=\"inputValue\" (keyup)=\"onInputChange(inputValue)\" (keypress)=\"onAdd($event)\">\n </mat-form-field>\n </th>\n <td mat-cell class=\"flag-col\" *matCellDef=\"let element\">{{ element.flag }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"value\">\n <th mat-header-cell class=\"adf-val-col header-cell\" *matHeaderCellDef>\n <div class=\"adf-input-field-buttons-container\">\n <button *ngIf=\"showPlusButton$ | async\" mat-icon-button title=\"{{'CORE.FEATURE-FLAGS.ADD_NEW' | translate}}\" color=\"accent\" (click)=\"onAddButtonClick()\">\n <mat-icon class=\"material-icons-outlined\" fontIcon=\"add_circle\" />\n </button>\n <button *ngIf=\"inputValue\" matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"onClearInput()\" class=\"adf-clear-button\">\n <mat-icon>cancel</mat-icon>\n </button>\n </div>\n </th>\n <td mat-cell class=\"adf-val-col\" *matCellDef=\"let element\">\n <mat-slide-toggle\n [checked]=\"element.value\"\n (change)=\"onChange(element.flag, $event.checked)\"\n [disabled]=\"!isEnabled\" />\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n </table>\n</ng-container>\n\n<ng-template #flagFromApi>\n <mat-icon class=\"material-icons-outlined\">cloud</mat-icon>\n</ng-template>\n\n", styles: [".adf-feature-flags-overrides-header{position:sticky;top:0;height:64px;z-index:101;display:flex}.adf-feature-flags-overrides-header .adf-activity-indicator{margin-right:12px;position:relative;top:-2px}.adf-feature-flags-overrides-header-text{flex:1}.adf-feature-flags-overrides-header-close{margin-left:12px}.adf-feature-flags-overrides-table{width:100%}.adf-feature-flags-overrides-table .adf-search-icon{position:relative;top:4px}.adf-feature-flags-overrides-table .adf-flag-form-field{width:100%;display:flex}.adf-feature-flags-overrides-table .adf-flag-form-field .mat-mdc-form-field-subscript-wrapper,.adf-feature-flags-overrides-table .adf-flag-form-field .mdc-line-ripple{display:none}.adf-feature-flags-overrides-table .adf-input-field-buttons-container{display:flex;justify-content:flex-end}.adf-feature-flags-overrides-table .adf-clear-button{margin-left:-14px}.adf-feature-flags-overrides-table .adf-fictive-flag-button{margin-left:-12px}.adf-feature-flags-overrides-table .adf-fictive-flag-button .adf-custom-flag-icon{display:block}.adf-feature-flags-overrides-table .adf-fictive-flag-button .adf-trash-icon,.adf-feature-flags-overrides-table .adf-fictive-flag-button:hover .adf-custom-flag-icon{display:none}.adf-feature-flags-overrides-table .adf-fictive-flag-button:hover .adf-trash-icon{display:block}.adf-feature-flags-overrides-table .adf-icon-col{width:56px;padding-left:24px}.adf-feature-flags-overrides-table .adf-val-col{width:85px}\n"] }]
122
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
123
+ type: Inject,
124
+ args: [FeaturesServiceToken]
125
+ }] }, { type: undefined, decorators: [{
126
+ type: Inject,
127
+ args: [WritableFeaturesServiceToken]
128
+ }] }] });
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvcmUvZmVhdHVyZS1mbGFncy9zcmMvbGliL2NvbXBvbmVudHMvZmxhZ3MvZmxhZ3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvcmUvZmVhdHVyZS1mbGFncy9zcmMvbGliL2NvbXBvbmVudHMvZmxhZ3MvZmxhZ3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDSCxvQkFBb0IsRUFJcEIsNEJBQTRCLEVBRS9CLE1BQU0scUNBQXFDLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDakYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7Ozs7O0FBdUJoRSxNQUFNLE9BQU8sY0FBYztJQVN2QixZQUVZLGVBQWdGLEVBRWhGLHVCQUFpRDtRQUZqRCxvQkFBZSxHQUFmLGVBQWUsQ0FBaUU7UUFFaEYsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUEwQjtRQVo3RCxxQkFBZ0IsR0FBYSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFdkQsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUVsQixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLGdCQUFXLEdBQUcsSUFBSSxlQUFlLENBQVMsRUFBRSxDQUFDLENBQUM7UUFFOUMsMEJBQXFCLEdBQTBCLEVBQUUsQ0FBQztRQU85QyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLGVBQWU7aUJBQ2YsVUFBVSxFQUFFO2lCQUNaLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2lCQUMxQixTQUFTLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtnQkFDckIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7WUFDL0IsQ0FBQyxDQUFDLENBQUM7UUFDWCxDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQ2hELEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFDcEQsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDVixNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM3QixJQUFJLEVBQUUsR0FBRztZQUNULEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTztZQUN6QixPQUFPLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sSUFBSSxLQUFLO1NBQ3hDLENBQUMsQ0FBQyxDQUNOLENBQ0osQ0FBQztRQUVGLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFdEUsSUFBSSxDQUFDLE1BQU0sR0FBRyxhQUFhLENBQUMsQ0FBQyxNQUFNLEVBQUUsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDNUQsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRTtZQUN4QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ2QsT0FBTyxLQUFLLENBQUM7WUFDakIsQ0FBQztZQUVELE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUNsRSxDQUFDLENBQUMsQ0FDTCxDQUFDO1FBRUYsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDbkMsR0FBRyxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLGFBQWEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUM1RyxDQUFDO0lBQ04sQ0FBQztJQUVTLFFBQVEsQ0FBQyxJQUFZLEVBQUUsS0FBYztRQUMzQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRVMsUUFBUSxDQUFDLEtBQWM7UUFDN0IsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNSLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDeEUsQ0FBQztRQUVELElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFUyxhQUFhLENBQUMsSUFBWTtRQUNoQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRVMsWUFBWTtRQUNsQixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRVMsS0FBSyxDQUFDLEtBQW9CO1FBQ2hDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxFQUFFO1lBQzVELElBQUksY0FBYyxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssT0FBTyxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDNUQsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ2pFLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFUyxnQkFBZ0I7UUFDdEIsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFUyxRQUFRLENBQUMsSUFBWTtRQUMzQixJQUFJLENBQUMsdUJBQXVCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xELENBQUM7K0dBdkZRLGNBQWMsa0JBVVgsb0JBQW9CLGFBRXBCLDRCQUE0QjttR0FaL0IsY0FBYyx1RkM5RDNCLG14R0FxRUEsMCtDRHhCUSxzQkFBc0Isa0dBQ3RCLFlBQVksdUxBQ1osV0FBVyw4bUJBQ1gsY0FBYyxzZ0NBQ2Qsb0JBQW9CLHlYQUNwQixnQkFBZ0IsZ0pBQ2hCLGFBQWEsbUxBQ2IsZUFBZSwySUFDZixjQUFjLHNyQkFDZCxlQUFlLGlPQUNmLGFBQWE7OzRGQU9SLGNBQWM7a0JBckIxQixTQUFTOytCQUNJLDZCQUE2QixjQUMzQixJQUFJLFdBQ1A7d0JBQ0wsc0JBQXNCO3dCQUN0QixZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsY0FBYzt3QkFDZCxvQkFBb0I7d0JBQ3BCLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixlQUFlO3dCQUNmLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixhQUFhO3FCQUNoQixpQkFHYyxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNOzswQkFZMUMsTUFBTTsyQkFBQyxvQkFBb0I7OzBCQUUzQixNQUFNOzJCQUFDLDRCQUE0QiIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5qZWN0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgRmVhdHVyZXNTZXJ2aWNlVG9rZW4sXG4gICAgSURlYnVnRmVhdHVyZXNTZXJ2aWNlLFxuICAgIElGZWF0dXJlc1NlcnZpY2UsXG4gICAgSVdyaXRhYmxlRmVhdHVyZXNTZXJ2aWNlLFxuICAgIFdyaXRhYmxlRmVhdHVyZXNTZXJ2aWNlVG9rZW4sXG4gICAgV3JpdGFibGVGbGFnQ2hhbmdlc2V0XG59IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZmVhdHVyZXMuaW50ZXJmYWNlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBtYXAsIHRha2UsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE1hdFRhYmxlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xuaW1wb3J0IHsgTWF0U2xpZGVUb2dnbGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbGlkZS10b2dnbGUnO1xuaW1wb3J0IHsgTWF0VG9vbGJhck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2xiYXInO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGbGFnc092ZXJyaWRlQ29tcG9uZW50IH0gZnJvbSAnLi4vZmVhdHVyZS1vdmVycmlkZS1pbmRpY2F0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IE1hdERpYWxvZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYWRmLWZlYXR1cmUtZmxhZ3Mtb3ZlcnJpZGVzJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgRmxhZ3NPdmVycmlkZUNvbXBvbmVudCxcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgTWF0VGFibGVNb2R1bGUsXG4gICAgICAgIE1hdFNsaWRlVG9nZ2xlTW9kdWxlLFxuICAgICAgICBNYXRUb29sYmFyTW9kdWxlLFxuICAgICAgICBNYXRJY29uTW9kdWxlLFxuICAgICAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgICAgIE1hdElucHV0TW9kdWxlLFxuICAgICAgICBNYXREaWFsb2dNb2R1bGUsXG4gICAgICAgIFRyYW5zbGF0ZVBpcGVcbiAgICBdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9mbGFncy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZmxhZ3MuY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEZsYWdzQ29tcG9uZW50IHtcbiAgICBkaXNwbGF5ZWRDb2x1bW5zOiBzdHJpbmdbXSA9IFsnaWNvbicsICdmbGFnJywgJ3ZhbHVlJ107XG4gICAgZmxhZ3MkOiBPYnNlcnZhYmxlPHsgZmljdGl2ZTogYm9vbGVhbjsgZmxhZzogc3RyaW5nOyB2YWx1ZTogYW55IH1bXT47XG4gICAgaXNFbmFibGVkID0gZmFsc2U7XG5cbiAgICBpbnB1dFZhbHVlID0gJyc7XG4gICAgaW5wdXRWYWx1ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuICAgIHNob3dQbHVzQnV0dG9uJCE6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgd3JpdGFibGVGbGFnQ2hhbmdlc2V0OiBXcml0YWJsZUZsYWdDaGFuZ2VzZXQgPSB7fTtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChGZWF0dXJlc1NlcnZpY2VUb2tlbilcbiAgICAgICAgcHJpdmF0ZSBmZWF0dXJlc1NlcnZpY2U6IElEZWJ1Z0ZlYXR1cmVzU2VydmljZSAmIElGZWF0dXJlc1NlcnZpY2U8V3JpdGFibGVGbGFnQ2hhbmdlc2V0PixcbiAgICAgICAgQEluamVjdChXcml0YWJsZUZlYXR1cmVzU2VydmljZVRva2VuKVxuICAgICAgICBwcml2YXRlIHdyaXRhYmxlRmVhdHVyZXNTZXJ2aWNlOiBJV3JpdGFibGVGZWF0dXJlc1NlcnZpY2VcbiAgICApIHtcbiAgICAgICAgaWYgKHRoaXMuZmVhdHVyZXNTZXJ2aWNlLmlzRW5hYmxlZCQpIHtcbiAgICAgICAgICAgIHRoaXMuZmVhdHVyZXNTZXJ2aWNlXG4gICAgICAgICAgICAgICAgLmlzRW5hYmxlZCQoKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGlzRW5hYmxlZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzRW5hYmxlZCA9IGlzRW5hYmxlZDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZsYWdzJCA9IHRoaXMuZmVhdHVyZXNTZXJ2aWNlLmdldEZsYWdzJCgpLnBpcGUoXG4gICAgICAgICAgICB0YXAoKGZsYWdzKSA9PiAodGhpcy53cml0YWJsZUZsYWdDaGFuZ2VzZXQgPSBmbGFncykpLFxuICAgICAgICAgICAgbWFwKChmbGFncykgPT5cbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhmbGFncykubWFwKChrZXkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIGZsYWc6IGtleSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZsYWdzW2tleV0uY3VycmVudCxcbiAgICAgICAgICAgICAgICAgICAgZmljdGl2ZTogZmxhZ3Nba2V5XT8uZmljdGl2ZSA/PyBmYWxzZVxuICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGRlYm91bmNlZElucHV0VmFsdWUkID0gdGhpcy5pbnB1dFZhbHVlJC5waXBlKGRlYm91bmNlVGltZSgxMDApKTtcblxuICAgICAgICB0aGlzLmZsYWdzJCA9IGNvbWJpbmVMYXRlc3QoW2ZsYWdzJCwgZGVib3VuY2VkSW5wdXRWYWx1ZSRdKS5waXBlKFxuICAgICAgICAgICAgbWFwKChbZmxhZ3MsIGlucHV0VmFsdWVdKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFpbnB1dFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmbGFncztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gZmxhZ3MuZmlsdGVyKChmbGFnKSA9PiBmbGFnLmZsYWcuaW5jbHVkZXMoaW5wdXRWYWx1ZSkpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnNob3dQbHVzQnV0dG9uJCA9IHRoaXMuZmxhZ3MkLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGZpbHRlcmVkRmxhZ3MpID0+IHRoaXMuaXNFbmFibGVkICYmIGZpbHRlcmVkRmxhZ3MubGVuZ3RoID09PSAwICYmIHRoaXMuaW5wdXRWYWx1ZS50cmltKCkubGVuZ3RoID4gMClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25DaGFuZ2UoZmxhZzogc3RyaW5nLCB2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLndyaXRhYmxlRmVhdHVyZXNTZXJ2aWNlLnNldEZsYWcoZmxhZywgdmFsdWUpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbkVuYWJsZSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMud3JpdGFibGVGZWF0dXJlc1NlcnZpY2UubWVyZ2VGbGFncyh0aGlzLndyaXRhYmxlRmxhZ0NoYW5nZXNldCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZlYXR1cmVzU2VydmljZS5lbmFibGUodmFsdWUpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbklucHV0Q2hhbmdlKHRleHQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLmlucHV0VmFsdWUkLm5leHQodGV4dCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uQ2xlYXJJbnB1dCgpIHtcbiAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gJyc7XG4gICAgICAgIHRoaXMuaW5wdXRWYWx1ZSQubmV4dCgnJyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uQWRkKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIHRoaXMuc2hvd1BsdXNCdXR0b24kLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKChzaG93UGx1c0J1dHRvbikgPT4ge1xuICAgICAgICAgICAgaWYgKHNob3dQbHVzQnV0dG9uICYmIGV2ZW50LmtleSA9PT0gJ0VudGVyJyAmJiBldmVudC5zaGlmdEtleSkge1xuICAgICAgICAgICAgICAgIHRoaXMud3JpdGFibGVGZWF0dXJlc1NlcnZpY2Uuc2V0RmxhZyh0aGlzLmlucHV0VmFsdWUsIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uQWRkQnV0dG9uQ2xpY2soKSB7XG4gICAgICAgIHRoaXMud3JpdGFibGVGZWF0dXJlc1NlcnZpY2Uuc2V0RmxhZyh0aGlzLmlucHV0VmFsdWUsIGZhbHNlKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25EZWxldGUoZmxhZzogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMud3JpdGFibGVGZWF0dXJlc1NlcnZpY2UucmVtb3ZlRmxhZyhmbGFnKTtcbiAgICB9XG59XG4iLCI8bWF0LXRvb2xiYXIgY2xhc3M9XCJhZGYtZmVhdHVyZS1mbGFncy1vdmVycmlkZXMtaGVhZGVyXCI+XG4gIDxkaXYgY2xhc3M9XCJhZGYtZmVhdHVyZS1mbGFncy1vdmVycmlkZXMtaGVhZGVyLXRleHRcIiB0YWJpbmRleD1cIjBcIj5cbiAgICA8YWRmLWZlYXR1cmUtZmxhZ3Mtb3ZlcnJpZGUtaW5kaWNhdG9yXG4gICAgICBjbGFzcz1cImFkZi1hY3Rpdml0eS1pbmRpY2F0b3JcIlxuICAgICAgc2l6ZT0nbGFyZ2UnIC8+XG4gICAgPHNwYW4+e3sgXCJDT1JFLkZFQVRVUkUtRkxBR1MuT1ZFUlJJREVTXCIgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gIDwvZGl2PlxuICA8bWF0LXNsaWRlLXRvZ2dsZVxuICAgIFtjaGVja2VkXT1cImlzRW5hYmxlZFwiXG4gICAgKGNoYW5nZSk9XCJvbkVuYWJsZSgkZXZlbnQuY2hlY2tlZClcIiAvPlxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJhZGYtZmVhdHVyZS1mbGFncy1vdmVycmlkZXMtaGVhZGVyLWNsb3NlXCJcbiAgICBtYXQtaWNvbi1idXR0b25cbiAgICBtYXQtZGlhbG9nLWNsb3NlPlxuICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICA8L2J1dHRvbj5cbjwvbWF0LXRvb2xiYXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJmbGFncyQgfCBhc3luYyBhcyBmbGFnc1wiPlxuICA8dGFibGUgbWF0LXRhYmxlIFtkYXRhU291cmNlXT1cImZsYWdzXCIgY2xhc3M9XCJhZGYtZmVhdHVyZS1mbGFncy1vdmVycmlkZXMtdGFibGUgbWF0LWVsZXZhdGlvbi16MFwiPlxuICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiaWNvblwiPlxuICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCBjbGFzcz1cImFkZi1pY29uLWNvbCBhZGYtaGVhZGVyLWNlbGxcIiAqbWF0SGVhZGVyQ2VsbERlZj5cbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMtb3V0bGluZWQgYWRmLXNlYXJjaC1pY29uXCI+c2VhcmNoPC9tYXQtaWNvbj5cbiAgICAgIDwvdGg+XG4gICAgICA8dGQgbWF0LWNlbGwgY2xhc3M9XCJhZGYtaWNvbi1jb2xcIiAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+XG4gICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uICpuZ0lmPVwiZWxlbWVudC5maWN0aXZlOyBlbHNlIGZsYWdGcm9tQXBpXCIgY2xhc3M9XCJhZGYtZmljdGl2ZS1mbGFnLWJ1dHRvblwiIChjbGljayk9XCJvbkRlbGV0ZShlbGVtZW50LmZsYWcpXCI+XG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMtb3V0bGluZWQgYWRmLWN1c3RvbS1mbGFnLWljb25cIiBmb250SWNvbj1cIm1lbW9yeVwiIC8+XG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMtb3V0bGluZWQgYWRmLXRyYXNoLWljb25cIiBmb250SWNvbj1cImRlbGV0ZVwiIC8+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC90ZD5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiZmxhZ1wiPlxuICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCBjbGFzcz1cImZsYWctY29sIGhlYWRlci1jZWxsXCIgKm1hdEhlYWRlckNlbGxEZWY+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImFkZi1mbGFnLWZvcm0tZmllbGRcIiBhcHBlYXJhbmNlPVwiZmlsbFwiIGZsb2F0TGFiZWw9XCJhdXRvXCI+XG4gICAgICAgICAgPGlucHV0IGNsYXNzPVwiZmxhZy1pbnB1dFwiIFtwbGFjZWhvbGRlcl09XCIoaXNFbmFibGVkID8gJ0NPUkUuRkVBVFVSRS1GTEFHUy5GSUxURVJfT1JfQUREX05FVycgOiAnQ09SRS5GRUFUVVJFLUZMQUdTLkZJTFRFUicpIHwgdHJhbnNsYXRlXCIgbWF0SW5wdXQgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cImlucHV0VmFsdWVcIiAoa2V5dXApPVwib25JbnB1dENoYW5nZShpbnB1dFZhbHVlKVwiIChrZXlwcmVzcyk9XCJvbkFkZCgkZXZlbnQpXCI+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICA8L3RoPlxuICAgICAgPHRkIG1hdC1jZWxsIGNsYXNzPVwiZmxhZy1jb2xcIiAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+e3sgZWxlbWVudC5mbGFnIH19PC90ZD5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwidmFsdWVcIj5cbiAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgY2xhc3M9XCJhZGYtdmFsLWNvbCBoZWFkZXItY2VsbFwiICptYXRIZWFkZXJDZWxsRGVmPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLWlucHV0LWZpZWxkLWJ1dHRvbnMtY29udGFpbmVyXCI+XG4gICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInNob3dQbHVzQnV0dG9uJCB8IGFzeW5jXCIgbWF0LWljb24tYnV0dG9uIHRpdGxlPVwie3snQ09SRS5GRUFUVVJFLUZMQUdTLkFERF9ORVcnIHwgdHJhbnNsYXRlfX1cIiBjb2xvcj1cImFjY2VudFwiIChjbGljayk9XCJvbkFkZEJ1dHRvbkNsaWNrKClcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zLW91dGxpbmVkXCIgZm9udEljb249XCJhZGRfY2lyY2xlXCIgLz5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiaW5wdXRWYWx1ZVwiIG1hdFN1ZmZpeCBtYXQtaWNvbi1idXR0b24gYXJpYS1sYWJlbD1cIkNsZWFyXCIgKGNsaWNrKT1cIm9uQ2xlYXJJbnB1dCgpXCIgY2xhc3M9XCJhZGYtY2xlYXItYnV0dG9uXCI+XG4gICAgICAgICAgICA8bWF0LWljb24+Y2FuY2VsPC9tYXQtaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3RoPlxuICAgICAgPHRkIG1hdC1jZWxsIGNsYXNzPVwiYWRmLXZhbC1jb2xcIiAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+XG4gICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlXG4gICAgICAgICAgW2NoZWNrZWRdPVwiZWxlbWVudC52YWx1ZVwiXG4gICAgICAgICAgKGNoYW5nZSk9XCJvbkNoYW5nZShlbGVtZW50LmZsYWcsICRldmVudC5jaGVja2VkKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0VuYWJsZWRcIiAvPlxuICAgICAgPC90ZD5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uczsgc3RpY2t5OiB0cnVlXCI+PC90cj5cbiAgICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogZGlzcGxheWVkQ29sdW1uc1wiPjwvdHI+XG4gIDwvdGFibGU+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNmbGFnRnJvbUFwaT5cbiAgPG1hdC1pY29uIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMtb3V0bGluZWRcIj5jbG91ZDwvbWF0LWljb24+XG48L25nLXRlbXBsYXRlPlxuXG4iXX0=
@@ -0,0 +1,63 @@
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 { Directive, Inject, Input, TemplateRef, ViewContainerRef } from '@angular/core';
18
+ import { BehaviorSubject, combineLatest } from 'rxjs';
19
+ import { FeaturesServiceToken } from '../interfaces/features.interface';
20
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
21
+ import * as i0 from "@angular/core";
22
+ export class FeaturesDirective {
23
+ set adfForFeatures(feature) {
24
+ this.inputUpdate$.next(Array.isArray(feature) ? feature : [feature]);
25
+ }
26
+ constructor(featuresService, templateRef, viewContainer) {
27
+ this.featuresService = featuresService;
28
+ this.templateRef = templateRef;
29
+ this.viewContainer = viewContainer;
30
+ this.hasView = false;
31
+ this.inputUpdate$ = new BehaviorSubject([]);
32
+ combineLatest([this.featuresService.getFlags$(), this.inputUpdate$])
33
+ .pipe(takeUntilDestroyed())
34
+ .subscribe(([flags, features]) => this.updateView(flags, features));
35
+ }
36
+ updateView(flags, features) {
37
+ const shouldShow = features.every((feature) => flags[feature]?.current);
38
+ if (shouldShow && !this.hasView) {
39
+ this.viewContainer.createEmbeddedView(this.templateRef);
40
+ this.hasView = true;
41
+ }
42
+ else if (!shouldShow && this.hasView) {
43
+ this.viewContainer.clear();
44
+ this.hasView = false;
45
+ }
46
+ }
47
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeaturesDirective, deps: [{ token: FeaturesServiceToken }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
48
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: FeaturesDirective, isStandalone: true, selector: "[adfForFeatures]", inputs: { adfForFeatures: "adfForFeatures" }, ngImport: i0 }); }
49
+ }
50
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeaturesDirective, decorators: [{
51
+ type: Directive,
52
+ args: [{
53
+ /* eslint-disable-next-line @angular-eslint/directive-selector */
54
+ selector: '[adfForFeatures]',
55
+ standalone: true
56
+ }]
57
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
58
+ type: Inject,
59
+ args: [FeaturesServiceToken]
60
+ }] }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }], propDecorators: { adfForFeatures: [{
61
+ type: Input
62
+ }] } });
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZXMuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvcmUvZmVhdHVyZS1mbGFncy9zcmMvbGliL2RpcmVjdGl2ZXMvZmVhdHVyZXMuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEQsT0FBTyxFQUFFLG9CQUFvQixFQUFtQyxNQUFNLGtDQUFrQyxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQU9oRSxNQUFNLE9BQU8saUJBQWlCO0lBSTFCLElBQ0ksY0FBYyxDQUFDLE9BQTBCO1FBQ3pDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRCxZQUMwQyxlQUFpQyxFQUMvRCxXQUE2QixFQUM3QixhQUErQjtRQUZELG9CQUFlLEdBQWYsZUFBZSxDQUFrQjtRQUMvRCxnQkFBVyxHQUFYLFdBQVcsQ0FBa0I7UUFDN0Isa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBWG5DLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsaUJBQVksR0FBRyxJQUFJLGVBQWUsQ0FBQyxFQUFjLENBQUMsQ0FBQztRQVl2RCxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUMvRCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQzthQUMxQixTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNqRixDQUFDO0lBRU8sVUFBVSxDQUFDLEtBQW9CLEVBQUUsUUFBa0I7UUFDdkQsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRXhFLElBQUksVUFBVSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3hELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLENBQUM7YUFBTSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLENBQUM7SUFDTCxDQUFDOytHQTdCUSxpQkFBaUIsa0JBVWQsb0JBQW9CO21HQVZ2QixpQkFBaUI7OzRGQUFqQixpQkFBaUI7a0JBTDdCLFNBQVM7bUJBQUM7b0JBQ1AsaUVBQWlFO29CQUNqRSxRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixVQUFVLEVBQUUsSUFBSTtpQkFDbkI7OzBCQVdRLE1BQU07MkJBQUMsb0JBQW9CO2tHQUw1QixjQUFjO3NCQURqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBEaXJlY3RpdmUsIEluamVjdCwgSW5wdXQsIFRlbXBsYXRlUmVmLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZlYXR1cmVzU2VydmljZVRva2VuLCBGbGFnQ2hhbmdlc2V0LCBJRmVhdHVyZXNTZXJ2aWNlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9mZWF0dXJlcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvciAqL1xuICAgIHNlbGVjdG9yOiAnW2FkZkZvckZlYXR1cmVzXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBGZWF0dXJlc0RpcmVjdGl2ZSB7XG4gICAgcHJpdmF0ZSBoYXNWaWV3ID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBpbnB1dFVwZGF0ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFtdIGFzIHN0cmluZ1tdKTtcbiAgICBcbiAgICBASW5wdXQoKVxuICAgIHNldCBhZGZGb3JGZWF0dXJlcyhmZWF0dXJlOiBzdHJpbmdbXSB8IHN0cmluZykge1xuICAgICAgICB0aGlzLmlucHV0VXBkYXRlJC5uZXh0KEFycmF5LmlzQXJyYXkoZmVhdHVyZSkgPyBmZWF0dXJlIDogW2ZlYXR1cmVdKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChGZWF0dXJlc1NlcnZpY2VUb2tlbikgcHJpdmF0ZSBmZWF0dXJlc1NlcnZpY2U6IElGZWF0dXJlc1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4sXG4gICAgICAgIHByaXZhdGUgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZlxuICAgICkge1xuICAgICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLmZlYXR1cmVzU2VydmljZS5nZXRGbGFncyQoKSwgdGhpcy5pbnB1dFVwZGF0ZSRdKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChbZmxhZ3MsIGZlYXR1cmVzXTogYW55KSA9PiB0aGlzLnVwZGF0ZVZpZXcoZmxhZ3MsIGZlYXR1cmVzKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVWaWV3KGZsYWdzOiBGbGFnQ2hhbmdlc2V0LCBmZWF0dXJlczogc3RyaW5nW10pIHtcbiAgICAgICAgY29uc3Qgc2hvdWxkU2hvdyA9IGZlYXR1cmVzLmV2ZXJ5KChmZWF0dXJlKSA9PiBmbGFnc1tmZWF0dXJlXT8uY3VycmVudCk7XG5cbiAgICAgICAgaWYgKHNob3VsZFNob3cgJiYgIXRoaXMuaGFzVmlldykge1xuICAgICAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlUmVmKTtcbiAgICAgICAgICAgIHRoaXMuaGFzVmlldyA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAoIXNob3VsZFNob3cgJiYgdGhpcy5oYXNWaWV3KSB7XG4gICAgICAgICAgICB0aGlzLnZpZXdDb250YWluZXIuY2xlYXIoKTtcbiAgICAgICAgICAgIHRoaXMuaGFzVmlldyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -0,0 +1,63 @@
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 { Directive, Inject, Input, TemplateRef, ViewContainerRef } from '@angular/core';
18
+ import { BehaviorSubject, combineLatest } from 'rxjs';
19
+ import { FeaturesServiceToken } from '../interfaces/features.interface';
20
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
21
+ import * as i0 from "@angular/core";
22
+ export class NotFeaturesDirective {
23
+ set adfNotForFeatures(feature) {
24
+ this.inputUpdate$.next(Array.isArray(feature) ? feature : [feature]);
25
+ }
26
+ constructor(featuresService, templateRef, viewContainer) {
27
+ this.featuresService = featuresService;
28
+ this.templateRef = templateRef;
29
+ this.viewContainer = viewContainer;
30
+ this.hasView = false;
31
+ this.inputUpdate$ = new BehaviorSubject([]);
32
+ combineLatest([this.featuresService.getFlags$(), this.inputUpdate$])
33
+ .pipe(takeUntilDestroyed())
34
+ .subscribe(([flags, features]) => this.updateView(flags, features));
35
+ }
36
+ updateView(flags, features) {
37
+ const shouldShow = features.every((feature) => !flags[feature]?.current);
38
+ if (shouldShow && !this.hasView) {
39
+ this.viewContainer.createEmbeddedView(this.templateRef);
40
+ this.hasView = true;
41
+ }
42
+ else if (!shouldShow && this.hasView) {
43
+ this.viewContainer.clear();
44
+ this.hasView = false;
45
+ }
46
+ }
47
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NotFeaturesDirective, deps: [{ token: FeaturesServiceToken }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
48
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: NotFeaturesDirective, isStandalone: true, selector: "[adfNotForFeatures]", inputs: { adfNotForFeatures: "adfNotForFeatures" }, ngImport: i0 }); }
49
+ }
50
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NotFeaturesDirective, decorators: [{
51
+ type: Directive,
52
+ args: [{
53
+ /* eslint-disable-next-line @angular-eslint/directive-selector */
54
+ selector: '[adfNotForFeatures]',
55
+ standalone: true
56
+ }]
57
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
58
+ type: Inject,
59
+ args: [FeaturesServiceToken]
60
+ }] }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }], propDecorators: { adfNotForFeatures: [{
61
+ type: Input
62
+ }] } });
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90LWZlYXR1cmVzLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb3JlL2ZlYXR1cmUtZmxhZ3Mvc3JjL2xpYi9kaXJlY3RpdmVzL25vdC1mZWF0dXJlcy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RixPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0RCxPQUFPLEVBQUUsb0JBQW9CLEVBQW1DLE1BQU0sa0NBQWtDLENBQUM7QUFDekcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBT2hFLE1BQU0sT0FBTyxvQkFBb0I7SUFJN0IsSUFDSSxpQkFBaUIsQ0FBQyxPQUEwQjtRQUM1QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsWUFDMEMsZUFBaUMsRUFDL0QsV0FBNkIsRUFDN0IsYUFBK0I7UUFGRCxvQkFBZSxHQUFmLGVBQWUsQ0FBa0I7UUFDL0QsZ0JBQVcsR0FBWCxXQUFXLENBQWtCO1FBQzdCLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQVhuQyxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLGlCQUFZLEdBQUcsSUFBSSxlQUFlLENBQUMsRUFBYyxDQUFDLENBQUM7UUFZdkQsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDL0QsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7YUFDMUIsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUVPLFVBQVUsQ0FBQyxLQUFvQixFQUFFLFFBQWtCO1FBQ3ZELE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRXpFLElBQUksVUFBVSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3hELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLENBQUM7YUFBTSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLENBQUM7SUFDTCxDQUFDOytHQTdCUSxvQkFBb0Isa0JBVWpCLG9CQUFvQjttR0FWdkIsb0JBQW9COzs0RkFBcEIsb0JBQW9CO2tCQUxoQyxTQUFTO21CQUFDO29CQUNQLGlFQUFpRTtvQkFDakUsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsVUFBVSxFQUFFLElBQUk7aUJBQ25COzswQkFXUSxNQUFNOzJCQUFDLG9CQUFvQjtrR0FMNUIsaUJBQWlCO3NCQURwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBEaXJlY3RpdmUsIEluamVjdCwgSW5wdXQsIFRlbXBsYXRlUmVmLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZlYXR1cmVzU2VydmljZVRva2VuLCBGbGFnQ2hhbmdlc2V0LCBJRmVhdHVyZXNTZXJ2aWNlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9mZWF0dXJlcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvciAqL1xuICAgIHNlbGVjdG9yOiAnW2FkZk5vdEZvckZlYXR1cmVzXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBOb3RGZWF0dXJlc0RpcmVjdGl2ZSB7XG4gICAgcHJpdmF0ZSBoYXNWaWV3ID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBpbnB1dFVwZGF0ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFtdIGFzIHN0cmluZ1tdKTtcblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGFkZk5vdEZvckZlYXR1cmVzKGZlYXR1cmU6IHN0cmluZ1tdIHwgc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuaW5wdXRVcGRhdGUkLm5leHQoQXJyYXkuaXNBcnJheShmZWF0dXJlKSA/IGZlYXR1cmUgOiBbZmVhdHVyZV0pO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KEZlYXR1cmVzU2VydmljZVRva2VuKSBwcml2YXRlIGZlYXR1cmVzU2VydmljZTogSUZlYXR1cmVzU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PixcbiAgICAgICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmXG4gICAgKSB7XG4gICAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuZmVhdHVyZXNTZXJ2aWNlLmdldEZsYWdzJCgpLCB0aGlzLmlucHV0VXBkYXRlJF0pXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKFtmbGFncywgZmVhdHVyZXNdOiBhbnkpID0+IHRoaXMudXBkYXRlVmlldyhmbGFncywgZmVhdHVyZXMpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVZpZXcoZmxhZ3M6IEZsYWdDaGFuZ2VzZXQsIGZlYXR1cmVzOiBzdHJpbmdbXSkge1xuICAgICAgICBjb25zdCBzaG91bGRTaG93ID0gZmVhdHVyZXMuZXZlcnkoKGZlYXR1cmUpID0+ICFmbGFnc1tmZWF0dXJlXT8uY3VycmVudCk7XG5cbiAgICAgICAgaWYgKHNob3VsZFNob3cgJiYgIXRoaXMuaGFzVmlldykge1xuICAgICAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlUmVmKTtcbiAgICAgICAgICAgIHRoaXMuaGFzVmlldyA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAoIXNob3VsZFNob3cgJiYgdGhpcy5oYXNWaWV3KSB7XG4gICAgICAgICAgICB0aGlzLnZpZXdDb250YWluZXIuY2xlYXIoKTtcbiAgICAgICAgICAgIHRoaXMuaGFzVmlldyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -0,0 +1,38 @@
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 { Inject, Injectable, inject } from '@angular/core';
18
+ import { FeaturesServiceToken } from '../interfaces/features.interface';
19
+ import * as i0 from "@angular/core";
20
+ export const isFeatureOff = (flag) => () => inject(FeaturesServiceToken).isOff$(flag);
21
+ export class IsFeatureOff {
22
+ constructor(featuresServiceToken) {
23
+ this.featuresServiceToken = featuresServiceToken;
24
+ }
25
+ canMatch(route) {
26
+ return this.featuresServiceToken.isOff$(route?.data?.['feature']);
27
+ }
28
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IsFeatureOff, deps: [{ token: FeaturesServiceToken }], target: i0.ɵɵFactoryTarget.Injectable }); }
29
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IsFeatureOff, providedIn: 'root' }); }
30
+ }
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IsFeatureOff, decorators: [{
32
+ type: Injectable,
33
+ args: [{ providedIn: 'root' }]
34
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
35
+ type: Inject,
36
+ args: [FeaturesServiceToken]
37
+ }] }] });
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtZmVhdHVyZS1vZmYuZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29yZS9mZWF0dXJlLWZsYWdzL3NyYy9saWIvZ3VhcmRzL2lzLWZlYXR1cmUtb2ZmLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUUsb0JBQW9CLEVBQW9CLE1BQU0sa0NBQWtDLENBQUM7O0FBSTFGLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBRzlGLE1BQU0sT0FBTyxZQUFZO0lBQ3JCLFlBQWtELG9CQUFzQztRQUF0Qyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQWtCO0lBQUcsQ0FBQztJQUU1RixRQUFRLENBQUMsS0FBWTtRQUNqQixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDdEUsQ0FBQzsrR0FMUSxZQUFZLGtCQUNELG9CQUFvQjttSEFEL0IsWUFBWSxjQURDLE1BQU07OzRGQUNuQixZQUFZO2tCQUR4QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7MEJBRWpCLE1BQU07MkJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmVhdHVyZXNTZXJ2aWNlVG9rZW4sIElGZWF0dXJlc1NlcnZpY2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2ZlYXR1cmVzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBjb25zdCBpc0ZlYXR1cmVPZmYgPSAoZmxhZzogc3RyaW5nKSA9PiAoKSA9PiBpbmplY3QoRmVhdHVyZXNTZXJ2aWNlVG9rZW4pLmlzT2ZmJChmbGFnKTtcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBJc0ZlYXR1cmVPZmYge1xuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoRmVhdHVyZXNTZXJ2aWNlVG9rZW4pIHByaXZhdGUgZmVhdHVyZXNTZXJ2aWNlVG9rZW46IElGZWF0dXJlc1NlcnZpY2UpIHt9XG5cbiAgICBjYW5NYXRjaChyb3V0ZTogUm91dGUpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmVhdHVyZXNTZXJ2aWNlVG9rZW4uaXNPZmYkKHJvdXRlPy5kYXRhPy5bJ2ZlYXR1cmUnXSk7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,38 @@
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 { Inject, Injectable, inject } from '@angular/core';
18
+ import { FeaturesServiceToken } from '../interfaces/features.interface';
19
+ import * as i0 from "@angular/core";
20
+ export const isFeatureOn = (flag) => () => inject(FeaturesServiceToken).isOn$(flag);
21
+ export class IsFeatureOn {
22
+ constructor(featuresServiceToken) {
23
+ this.featuresServiceToken = featuresServiceToken;
24
+ }
25
+ canMatch(route) {
26
+ return this.featuresServiceToken.isOn$(route?.data?.['feature']);
27
+ }
28
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IsFeatureOn, deps: [{ token: FeaturesServiceToken }], target: i0.ɵɵFactoryTarget.Injectable }); }
29
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IsFeatureOn, providedIn: 'root' }); }
30
+ }
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IsFeatureOn, decorators: [{
32
+ type: Injectable,
33
+ args: [{ providedIn: 'root' }]
34
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
35
+ type: Inject,
36
+ args: [FeaturesServiceToken]
37
+ }] }] });
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtZmVhdHVyZS1vbi5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb3JlL2ZlYXR1cmUtZmxhZ3Mvc3JjL2xpYi9ndWFyZHMvaXMtZmVhdHVyZS1vbi5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLG9CQUFvQixFQUFvQixNQUFNLGtDQUFrQyxDQUFDOztBQUkxRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUc1RixNQUFNLE9BQU8sV0FBVztJQUNwQixZQUFrRCxvQkFBc0M7UUFBdEMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFrQjtJQUFHLENBQUM7SUFFNUYsUUFBUSxDQUFDLEtBQVk7UUFDakIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7K0dBTFEsV0FBVyxrQkFDQSxvQkFBb0I7bUhBRC9CLFdBQVcsY0FERSxNQUFNOzs0RkFDbkIsV0FBVztrQkFEdkIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQUVqQixNQUFNOzJCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZlYXR1cmVzU2VydmljZVRva2VuLCBJRmVhdHVyZXNTZXJ2aWNlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9mZWF0dXJlcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgY29uc3QgaXNGZWF0dXJlT24gPSAoZmxhZzogc3RyaW5nKSA9PiAoKSA9PiBpbmplY3QoRmVhdHVyZXNTZXJ2aWNlVG9rZW4pLmlzT24kKGZsYWcpO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIElzRmVhdHVyZU9uIHtcbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KEZlYXR1cmVzU2VydmljZVRva2VuKSBwcml2YXRlIGZlYXR1cmVzU2VydmljZVRva2VuOiBJRmVhdHVyZXNTZXJ2aWNlKSB7fVxuXG4gICAgY2FuTWF0Y2gocm91dGU6IFJvdXRlKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZlYXR1cmVzU2VydmljZVRva2VuLmlzT24kKHJvdXRlPy5kYXRhPy5bJ2ZlYXR1cmUnXSk7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,40 @@
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 { Inject, Injectable, Optional, inject } from '@angular/core';
18
+ import { FlagsOverrideToken } from '../interfaces/features.interface';
19
+ import * as i0 from "@angular/core";
20
+ export const isFlagsOverrideOn = () => () => inject(FlagsOverrideToken) ?? false;
21
+ export class IsFlagsOverrideOn {
22
+ constructor(devToolsToken) {
23
+ this.devToolsToken = devToolsToken;
24
+ }
25
+ canMatch() {
26
+ return !!this.devToolsToken;
27
+ }
28
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IsFlagsOverrideOn, deps: [{ token: FlagsOverrideToken, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
29
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IsFlagsOverrideOn, providedIn: 'root' }); }
30
+ }
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IsFlagsOverrideOn, decorators: [{
32
+ type: Injectable,
33
+ args: [{ providedIn: 'root' }]
34
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
35
+ type: Optional
36
+ }, {
37
+ type: Inject,
38
+ args: [FlagsOverrideToken]
39
+ }] }] });
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtZmxhZ3Mtb3ZlcnJpZGUtb24uZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29yZS9mZWF0dXJlLWZsYWdzL3NyYy9saWIvZ3VhcmRzL2lzLWZsYWdzLW92ZXJyaWRlLW9uLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7O0FBRXRFLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEtBQUssQ0FBQztBQUdqRixNQUFNLE9BQU8saUJBQWlCO0lBQzFCLFlBQTRELGFBQXNCO1FBQXRCLGtCQUFhLEdBQWIsYUFBYSxDQUFTO0lBQUcsQ0FBQztJQUV0RixRQUFRO1FBQ0osT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUNoQyxDQUFDOytHQUxRLGlCQUFpQixrQkFDTSxrQkFBa0I7bUhBRHpDLGlCQUFpQixjQURKLE1BQU07OzRGQUNuQixpQkFBaUI7a0JBRDdCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkFFakIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmxhZ3NPdmVycmlkZVRva2VuIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9mZWF0dXJlcy5pbnRlcmZhY2UnO1xuXG5leHBvcnQgY29uc3QgaXNGbGFnc092ZXJyaWRlT24gPSAoKSA9PiAoKSA9PiBpbmplY3QoRmxhZ3NPdmVycmlkZVRva2VuKSA/PyBmYWxzZTtcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBJc0ZsYWdzT3ZlcnJpZGVPbiB7XG4gICAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQEluamVjdChGbGFnc092ZXJyaWRlVG9rZW4pIHByaXZhdGUgZGV2VG9vbHNUb2tlbjogYm9vbGVhbikge31cblxuICAgIGNhbk1hdGNoKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLmRldlRvb2xzVG9rZW47XG4gICAgfVxufVxuIl19
@@ -0,0 +1,24 @@
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 { InjectionToken } from '@angular/core';
18
+ export const FeaturesServiceConfigToken = new InjectionToken('FeatureServiceConfigToken');
19
+ export const FeaturesServiceToken = new InjectionToken('FeaturesService');
20
+ export const WritableFeaturesServiceToken = new InjectionToken('WritableFeaturesServiceToken');
21
+ export const WritableFeaturesServiceConfigToken = new InjectionToken('WritableFeaturesServiceConfigToken');
22
+ export const OverridableFeaturesServiceToken = new InjectionToken('OverridableFeaturesServiceToken');
23
+ export const FlagsOverrideToken = new InjectionToken('FlagsOverrideToken');
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZXMuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvcmUvZmVhdHVyZS1mbGFncy9zcmMvbGliL2ludGVyZmFjZXMvZmVhdHVyZXMuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0MsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsSUFBSSxjQUFjLENBQU0sMkJBQTJCLENBQUMsQ0FBQztBQUMvRixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLGNBQWMsQ0FBbUIsaUJBQWlCLENBQUMsQ0FBQztBQUM1RixNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxJQUFJLGNBQWMsQ0FBOEMsOEJBQThCLENBQUMsQ0FBQztBQUM1SSxNQUFNLENBQUMsTUFBTSxrQ0FBa0MsR0FBRyxJQUFJLGNBQWMsQ0FBZ0Msb0NBQW9DLENBQUMsQ0FBQztBQUMxSSxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBRyxJQUFJLGNBQWMsQ0FBbUIsaUNBQWlDLENBQUMsQ0FBQztBQUN2SCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLGNBQWMsQ0FBVSxvQkFBb0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgY29uc3QgRmVhdHVyZXNTZXJ2aWNlQ29uZmlnVG9rZW4gPSBuZXcgSW5qZWN0aW9uVG9rZW48YW55PignRmVhdHVyZVNlcnZpY2VDb25maWdUb2tlbicpO1xuZXhwb3J0IGNvbnN0IEZlYXR1cmVzU2VydmljZVRva2VuID0gbmV3IEluamVjdGlvblRva2VuPElGZWF0dXJlc1NlcnZpY2U+KCdGZWF0dXJlc1NlcnZpY2UnKTtcbmV4cG9ydCBjb25zdCBXcml0YWJsZUZlYXR1cmVzU2VydmljZVRva2VuID0gbmV3IEluamVjdGlvblRva2VuPElGZWF0dXJlc1NlcnZpY2UgJiBJV3JpdGFibGVGZWF0dXJlc1NlcnZpY2U+KCdXcml0YWJsZUZlYXR1cmVzU2VydmljZVRva2VuJyk7XG5leHBvcnQgY29uc3QgV3JpdGFibGVGZWF0dXJlc1NlcnZpY2VDb25maWdUb2tlbiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxXcml0YWJsZUZlYXR1cmVzU2VydmljZUNvbmZpZz4oJ1dyaXRhYmxlRmVhdHVyZXNTZXJ2aWNlQ29uZmlnVG9rZW4nKTtcbmV4cG9ydCBjb25zdCBPdmVycmlkYWJsZUZlYXR1cmVzU2VydmljZVRva2VuID0gbmV3IEluamVjdGlvblRva2VuPElGZWF0dXJlc1NlcnZpY2U+KCdPdmVycmlkYWJsZUZlYXR1cmVzU2VydmljZVRva2VuJyk7XG5leHBvcnQgY29uc3QgRmxhZ3NPdmVycmlkZVRva2VuID0gbmV3IEluamVjdGlvblRva2VuPGJvb2xlYW4+KCdGbGFnc092ZXJyaWRlVG9rZW4nKTtcblxuZXhwb3J0IGludGVyZmFjZSBXcml0YWJsZUZlYXR1cmVzU2VydmljZUNvbmZpZyB7XG4gICAgc3RvcmFnZUtleT86IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUWFGZWF0dXJlc0hlbHBlckNvbmZpZyB7XG4gICAgaGVscGVyRXhwb3NlS2V5T25Eb2N1bWVudD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGbGFnQ2hhbmdlc2V0IHtcbiAgICBba2V5OiBzdHJpbmddOiB7XG4gICAgICAgIGN1cnJlbnQ6IGFueTtcbiAgICAgICAgcHJldmlvdXM6IGFueTtcbiAgICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdyaXRhYmxlRmxhZ0NoYW5nZXNldCB7XG4gICAgW2tleTogc3RyaW5nXToge1xuICAgICAgICBjdXJyZW50OiBhbnk7XG4gICAgICAgIHByZXZpb3VzOiBhbnk7XG4gICAgICAgIGZpY3RpdmU/OiBib29sZWFuO1xuICAgIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmxhZ1NldCB7XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElGZWF0dXJlc1NlcnZpY2U8VCA9IEZsYWdDaGFuZ2VzZXQ+IHtcbiAgICBpbml0KCk6IE9ic2VydmFibGU8VD47XG4gICAgaXNPbiQoa2V5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIGlzT2ZmJChrZXk6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgZ2V0RmxhZ3MkKCk6IE9ic2VydmFibGU8VD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVdyaXRhYmxlRmVhdHVyZXNTZXJ2aWNlIHtcbiAgICBzZXRGbGFnKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZDtcbiAgICByZXNldEZsYWdzKGZsYWdzOiBGbGFnU2V0KTogdm9pZDtcbiAgICByZW1vdmVGbGFnKGtleTogc3RyaW5nKTogdm9pZDtcbiAgICBtZXJnZUZsYWdzKGZsYWdzOiBGbGFnQ2hhbmdlc2V0KTogdm9pZDtcbn1cblxuZXhwb3J0IHR5cGUgSURlYnVnRmVhdHVyZXNTZXJ2aWNlID0gT21pdDxJRmVhdHVyZXNTZXJ2aWNlPFdyaXRhYmxlRmxhZ0NoYW5nZXNldD4sICdpbml0Jz4gJiB7XG4gICAgZW5hYmxlKG9uOiBib29sZWFuKTogdm9pZDtcbiAgICBpc0VuYWJsZWQkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgcmVzZXRGbGFncyhmbGFnczogRmxhZ1NldCk6IHZvaWQ7XG59O1xuIl19
@@ -0,0 +1,62 @@
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 { of } from 'rxjs';
18
+ import { FeaturesServiceToken } from '../interfaces/features.interface';
19
+ const assertFeatureFlag = (flagChangeset, key) => {
20
+ const flagChangesetValue = flagChangeset[key];
21
+ if (flagChangesetValue === undefined) {
22
+ throw new Error(`ERROR FEATURE-FLAG\n'${key}' feature is not mocked, please mock '${key}' using '${provideMockFeatureFlags.name}' helper in your test\n`);
23
+ }
24
+ };
25
+ const mockFeaturesService = (flagChangeset) => ({
26
+ init: () => of(flagChangeset),
27
+ isOn$: (key) => {
28
+ assertFeatureFlag(flagChangeset, key);
29
+ return of(flagChangeset[key].current);
30
+ },
31
+ isOff$: (key) => {
32
+ assertFeatureFlag(flagChangeset, key);
33
+ return of(!flagChangeset[key].current);
34
+ },
35
+ getFlags$: () => of(flagChangeset)
36
+ });
37
+ const arrayToFlagChangeset = (featureFlags) => {
38
+ const flagChangeset = {};
39
+ featureFlags.forEach((featureFlag) => {
40
+ flagChangeset[featureFlag] = { current: true, previous: null };
41
+ });
42
+ return flagChangeset;
43
+ };
44
+ const mockFeatureFlagsToFlagChangeset = (mockFeatureFlags) => {
45
+ const flagChangeset = {};
46
+ const featureFlags = Object.keys(mockFeatureFlags);
47
+ featureFlags.forEach((featureFlag) => {
48
+ flagChangeset[featureFlag] = { current: mockFeatureFlags[featureFlag], previous: null };
49
+ });
50
+ return flagChangeset;
51
+ };
52
+ export const provideMockFeatureFlags = (featureFlag) => {
53
+ if (typeof featureFlag === 'string') {
54
+ featureFlag = [featureFlag];
55
+ }
56
+ const flagChangeset = Array.isArray(featureFlag) ? arrayToFlagChangeset(featureFlag) : mockFeatureFlagsToFlagChangeset(featureFlag);
57
+ return {
58
+ provide: FeaturesServiceToken,
59
+ useValue: mockFeaturesService(flagChangeset)
60
+ };
61
+ };
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZXMtc2VydmljZS1tb2NrLmZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29yZS9mZWF0dXJlLWZsYWdzL3NyYy9saWIvbW9ja3MvZmVhdHVyZXMtc2VydmljZS1tb2NrLmZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQixPQUFPLEVBQUUsb0JBQW9CLEVBQW1DLE1BQU0sa0NBQWtDLENBQUM7QUFNekcsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLGFBQTRCLEVBQUUsR0FBVyxFQUFRLEVBQUU7SUFDMUUsTUFBTSxrQkFBa0IsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFOUMsSUFBSSxrQkFBa0IsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUNuQyxNQUFNLElBQUksS0FBSyxDQUNYLHdCQUF3QixHQUFHLHlDQUF5QyxHQUFHLFlBQVksdUJBQXVCLENBQUMsSUFBSSx5QkFBeUIsQ0FDM0ksQ0FBQztJQUNOLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLG1CQUFtQixHQUFHLENBQUMsYUFBNEIsRUFBb0IsRUFBRSxDQUFDLENBQUM7SUFDN0UsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUM7SUFDN0IsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7UUFDWCxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdEMsT0FBTyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFDRCxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUNaLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN0QyxPQUFPLEVBQUUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBQ0QsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUM7Q0FDckMsQ0FBQyxDQUFDO0FBRUgsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLFlBQXNCLEVBQWlCLEVBQUU7SUFDbkUsTUFBTSxhQUFhLEdBQWtCLEVBQUUsQ0FBQztJQUN4QyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7UUFDakMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDbkUsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLGFBQWEsQ0FBQztBQUN6QixDQUFDLENBQUM7QUFFRixNQUFNLCtCQUErQixHQUFHLENBQUMsZ0JBQWtDLEVBQUUsRUFBRTtJQUMzRSxNQUFNLGFBQWEsR0FBa0IsRUFBRSxDQUFDO0lBQ3hDLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNuRCxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7UUFDakMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUM1RixDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8sYUFBYSxDQUFDO0FBQ3pCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLENBQUMsV0FBaUQsRUFBRSxFQUFFO0lBQ3pGLElBQUksT0FBTyxXQUFXLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDbEMsV0FBVyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQywrQkFBK0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUVwSSxPQUFPO1FBQ0gsT0FBTyxFQUFFLG9CQUFvQjtRQUM3QixRQUFRLEVBQUUsbUJBQW1CLENBQUMsYUFBYSxDQUFDO0tBQy9DLENBQUM7QUFDTixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGZWF0dXJlc1NlcnZpY2VUb2tlbiwgRmxhZ0NoYW5nZXNldCwgSUZlYXR1cmVzU2VydmljZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvZmVhdHVyZXMuaW50ZXJmYWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBNb2NrRmVhdHVyZUZsYWdzIHtcbiAgICBba2V5OiBzdHJpbmddOiBib29sZWFuO1xufVxuXG5jb25zdCBhc3NlcnRGZWF0dXJlRmxhZyA9IChmbGFnQ2hhbmdlc2V0OiBGbGFnQ2hhbmdlc2V0LCBrZXk6IHN0cmluZyk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IGZsYWdDaGFuZ2VzZXRWYWx1ZSA9IGZsYWdDaGFuZ2VzZXRba2V5XTtcblxuICAgIGlmIChmbGFnQ2hhbmdlc2V0VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgRVJST1IgRkVBVFVSRS1GTEFHXFxuJyR7a2V5fScgZmVhdHVyZSBpcyBub3QgbW9ja2VkLCBwbGVhc2UgbW9jayAnJHtrZXl9JyB1c2luZyAnJHtwcm92aWRlTW9ja0ZlYXR1cmVGbGFncy5uYW1lfScgaGVscGVyIGluIHlvdXIgdGVzdFxcbmBcbiAgICAgICAgKTtcbiAgICB9XG59O1xuXG5jb25zdCBtb2NrRmVhdHVyZXNTZXJ2aWNlID0gKGZsYWdDaGFuZ2VzZXQ6IEZsYWdDaGFuZ2VzZXQpOiBJRmVhdHVyZXNTZXJ2aWNlID0+ICh7XG4gICAgaW5pdDogKCkgPT4gb2YoZmxhZ0NoYW5nZXNldCksXG4gICAgaXNPbiQ6IChrZXkpID0+IHtcbiAgICAgICAgYXNzZXJ0RmVhdHVyZUZsYWcoZmxhZ0NoYW5nZXNldCwga2V5KTtcbiAgICAgICAgcmV0dXJuIG9mKGZsYWdDaGFuZ2VzZXRba2V5XS5jdXJyZW50KTtcbiAgICB9LFxuICAgIGlzT2ZmJDogKGtleSkgPT4ge1xuICAgICAgICBhc3NlcnRGZWF0dXJlRmxhZyhmbGFnQ2hhbmdlc2V0LCBrZXkpO1xuICAgICAgICByZXR1cm4gb2YoIWZsYWdDaGFuZ2VzZXRba2V5XS5jdXJyZW50KTtcbiAgICB9LFxuICAgIGdldEZsYWdzJDogKCkgPT4gb2YoZmxhZ0NoYW5nZXNldClcbn0pO1xuXG5jb25zdCBhcnJheVRvRmxhZ0NoYW5nZXNldCA9IChmZWF0dXJlRmxhZ3M6IHN0cmluZ1tdKTogRmxhZ0NoYW5nZXNldCA9PiB7XG4gICAgY29uc3QgZmxhZ0NoYW5nZXNldDogRmxhZ0NoYW5nZXNldCA9IHt9O1xuICAgIGZlYXR1cmVGbGFncy5mb3JFYWNoKChmZWF0dXJlRmxhZykgPT4ge1xuICAgICAgICBmbGFnQ2hhbmdlc2V0W2ZlYXR1cmVGbGFnXSA9IHsgY3VycmVudDogdHJ1ZSwgcHJldmlvdXM6IG51bGwgfTtcbiAgICB9KTtcbiAgICByZXR1cm4gZmxhZ0NoYW5nZXNldDtcbn07XG5cbmNvbnN0IG1vY2tGZWF0dXJlRmxhZ3NUb0ZsYWdDaGFuZ2VzZXQgPSAobW9ja0ZlYXR1cmVGbGFnczogTW9ja0ZlYXR1cmVGbGFncykgPT4ge1xuICAgIGNvbnN0IGZsYWdDaGFuZ2VzZXQ6IEZsYWdDaGFuZ2VzZXQgPSB7fTtcbiAgICBjb25zdCBmZWF0dXJlRmxhZ3MgPSBPYmplY3Qua2V5cyhtb2NrRmVhdHVyZUZsYWdzKTtcbiAgICBmZWF0dXJlRmxhZ3MuZm9yRWFjaCgoZmVhdHVyZUZsYWcpID0+IHtcbiAgICAgICAgZmxhZ0NoYW5nZXNldFtmZWF0dXJlRmxhZ10gPSB7IGN1cnJlbnQ6IG1vY2tGZWF0dXJlRmxhZ3NbZmVhdHVyZUZsYWddLCBwcmV2aW91czogbnVsbCB9O1xuICAgIH0pO1xuICAgIHJldHVybiBmbGFnQ2hhbmdlc2V0O1xufTtcblxuZXhwb3J0IGNvbnN0IHByb3ZpZGVNb2NrRmVhdHVyZUZsYWdzID0gKGZlYXR1cmVGbGFnOiBNb2NrRmVhdHVyZUZsYWdzIHwgc3RyaW5nIHwgc3RyaW5nW10pID0+IHtcbiAgICBpZiAodHlwZW9mIGZlYXR1cmVGbGFnID09PSAnc3RyaW5nJykge1xuICAgICAgICBmZWF0dXJlRmxhZyA9IFtmZWF0dXJlRmxhZ107XG4gICAgfVxuXG4gICAgY29uc3QgZmxhZ0NoYW5nZXNldCA9IEFycmF5LmlzQXJyYXkoZmVhdHVyZUZsYWcpID8gYXJyYXlUb0ZsYWdDaGFuZ2VzZXQoZmVhdHVyZUZsYWcpIDogbW9ja0ZlYXR1cmVGbGFnc1RvRmxhZ0NoYW5nZXNldChmZWF0dXJlRmxhZyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBwcm92aWRlOiBGZWF0dXJlc1NlcnZpY2VUb2tlbixcbiAgICAgICAgdXNlVmFsdWU6IG1vY2tGZWF0dXJlc1NlcnZpY2UoZmxhZ0NoYW5nZXNldClcbiAgICB9O1xufTtcbiJdfQ==