@keycloakify/angular 0.0.1-rc.0 → 0.0.1-rc.11

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 (497) hide show
  1. package/account/DefaultPage.d.ts +38 -0
  2. package/account/DefaultPage.js +34 -0
  3. package/account/KcContext.d.ts +1 -0
  4. package/account/KcContext.js +2 -0
  5. package/account/classes/component-reference.class.d.ts +6 -0
  6. package/account/classes/component-reference.class.js +3 -0
  7. package/account/containers/template.component.d.ts +26 -0
  8. package/account/containers/template.component.js +66 -0
  9. package/account/directives/kc-class.directive.d.ts +26 -0
  10. package/account/directives/kc-class.directive.js +137 -0
  11. package/account/i18n.d.ts +4 -0
  12. package/account/i18n.js +2 -0
  13. package/account/pages/account/account.component.d.ts +14 -0
  14. package/account/pages/account/account.component.js +39 -0
  15. package/account/pages/applications/applications.component.d.ts +13 -0
  16. package/account/pages/applications/applications.component.js +37 -0
  17. package/account/pages/federatedIdentity/federatedIdentity.component.d.ts +13 -0
  18. package/account/pages/federatedIdentity/federatedIdentity.component.js +36 -0
  19. package/account/pages/log/log.component.d.ts +13 -0
  20. package/account/pages/log/log.component.js +36 -0
  21. package/account/pages/password/password.component.d.ts +28 -0
  22. package/account/pages/password/password.component.js +107 -0
  23. package/account/pages/sessions/sessions.component.d.ts +13 -0
  24. package/account/pages/sessions/sessions.component.js +36 -0
  25. package/account/pages/totp/totp.component.d.ts +13 -0
  26. package/account/pages/totp/totp.component.js +37 -0
  27. package/account/providers/keycloakify-angular.providers.d.ts +15 -0
  28. package/account/providers/keycloakify-angular.providers.js +48 -0
  29. package/account/services/i18n.service.d.ts +6 -0
  30. package/account/services/i18n.service.js +12 -0
  31. package/account/services/resource-injector.service.d.ts +10 -0
  32. package/account/services/resource-injector.service.js +37 -0
  33. package/account/tokens/classes.token.d.ts +16 -0
  34. package/account/tokens/classes.token.js +3 -0
  35. package/account/tokens/i18n.token.d.ts +2 -0
  36. package/account/tokens/i18n.token.js +3 -0
  37. package/account/tokens/kc-context.token.d.ts +3 -0
  38. package/account/tokens/kc-context.token.js +3 -0
  39. package/lib/directives/attributes.directive.d.ts +8 -0
  40. package/lib/directives/attributes.directive.js +26 -0
  41. package/lib/models/script.model.js +1 -1
  42. package/lib/pipes/input-type.pipe.d.ts +7 -0
  43. package/lib/pipes/input-type.pipe.js +20 -0
  44. package/lib/pipes/is-array-with-empty-object.pipe.d.ts +7 -0
  45. package/lib/pipes/is-array-with-empty-object.pipe.js +20 -0
  46. package/lib/pipes/kc-sanitize.pipe.d.ts +9 -0
  47. package/lib/pipes/kc-sanitize.pipe.js +29 -0
  48. package/lib/pipes/to-array.pipe.d.ts +7 -0
  49. package/lib/pipes/to-array.pipe.js +21 -0
  50. package/lib/pipes/to-number.pipe.d.ts +7 -0
  51. package/lib/pipes/to-number.pipe.js +20 -0
  52. package/lib/services/resource-injector.service.d.ts +5 -2
  53. package/lib/services/resource-injector.service.js +19 -22
  54. package/lib/tokens/use-default-css.token.d.ts +2 -0
  55. package/lib/tokens/use-default-css.token.js +3 -0
  56. package/login/DefaultPage.d.ts +28 -28
  57. package/login/DefaultPage.js +74 -74
  58. package/login/KcContext.d.ts +1 -1
  59. package/login/KcContext.js +1 -1
  60. package/login/classes/component-reference.class.d.ts +1 -1
  61. package/login/classes/component-reference.class.js +1 -1
  62. package/login/components/add-remove-buttons-multi-valued-attribute/add-remove-buttons-multi-valued-attribute.component.d.ts +7 -2
  63. package/login/components/add-remove-buttons-multi-valued-attribute/add-remove-buttons-multi-valued-attribute.component.js +19 -36
  64. package/login/components/field-errors/field-errors.component.d.ts +7 -4
  65. package/login/components/field-errors/field-errors.component.js +23 -35
  66. package/login/components/group-label/group-label.component.d.ts +8 -3
  67. package/login/components/group-label/group-label.component.js +29 -41
  68. package/login/components/input-field-by-type/input-field-by-type.component.d.ts +7 -4
  69. package/login/components/input-field-by-type/input-field-by-type.component.js +33 -50
  70. package/login/components/input-tag/input-tag.component.d.ts +9 -4
  71. package/login/components/input-tag/input-tag.component.js +47 -64
  72. package/login/components/input-tag-selects/input-tag-selects.component.d.ts +11 -6
  73. package/login/components/input-tag-selects/input-tag-selects.component.js +41 -56
  74. package/login/components/logout-other-sessions/logout-other-sessions.component.d.ts +7 -2
  75. package/login/components/logout-other-sessions/logout-other-sessions.component.js +25 -36
  76. package/login/components/password-wrapper/password-wrapper.component.d.ts +8 -3
  77. package/login/components/password-wrapper/password-wrapper.component.js +27 -38
  78. package/login/components/select-tag/select-tag.component.d.ts +9 -4
  79. package/login/components/select-tag/select-tag.component.js +32 -47
  80. package/login/components/textarea-tag/textarea-tag.component.d.ts +7 -4
  81. package/login/components/textarea-tag/textarea-tag.component.js +28 -42
  82. package/login/components/user-profile-form-fields/user-profile-form-fields.component.d.ts +11 -5
  83. package/login/components/user-profile-form-fields/user-profile-form-fields.component.js +45 -57
  84. package/login/containers/template.component.d.ts +11 -8
  85. package/login/containers/template.component.js +36 -42
  86. package/login/directives/kc-class.directive.d.ts +5 -2
  87. package/login/directives/kc-class.directive.js +35 -43
  88. package/login/i18n.d.ts +2 -2
  89. package/login/i18n.js +1 -1
  90. package/login/pages/code/code.component.d.ts +8 -3
  91. package/login/pages/code/code.component.js +28 -31
  92. package/login/pages/delete-account-confirm/delete-account-confirm.component.d.ts +8 -3
  93. package/login/pages/delete-account-confirm/delete-account-confirm.component.js +28 -31
  94. package/login/pages/delete-credential/delete-credential.component.d.ts +8 -3
  95. package/login/pages/delete-credential/delete-credential.component.js +28 -31
  96. package/login/pages/error/error.component.d.ts +8 -3
  97. package/login/pages/error/error.component.js +28 -31
  98. package/login/pages/frontchannel-logout/frontchannel-logout.component.d.ts +9 -4
  99. package/login/pages/frontchannel-logout/frontchannel-logout.component.js +28 -31
  100. package/login/pages/idp-review-user-profile/idp-review-user-profile.component.d.ts +13 -3
  101. package/login/pages/idp-review-user-profile/idp-review-user-profile.component.js +40 -41
  102. package/login/pages/info/info.component.d.ts +8 -9
  103. package/login/pages/info/info.component.js +31 -43
  104. package/login/pages/login/login.component.d.ts +8 -3
  105. package/login/pages/login/login.component.js +33 -47
  106. package/login/pages/login-config-totp/login-config-totp.component.d.ts +8 -3
  107. package/login/pages/login-config-totp/login-config-totp.component.js +31 -42
  108. package/login/pages/login-idp-link-confirm/login-idp-link-confirm.component.d.ts +8 -3
  109. package/login/pages/login-idp-link-confirm/login-idp-link-confirm.component.js +28 -31
  110. package/login/pages/login-idp-link-confirm-override/login-idp-link-confirm-override.component.d.ts +8 -3
  111. package/login/pages/login-idp-link-confirm-override/login-idp-link-confirm-override.component.js +28 -31
  112. package/login/pages/login-idp-link-email/login-idp-link-email.component.d.ts +8 -3
  113. package/login/pages/login-idp-link-email/login-idp-link-email.component.js +28 -31
  114. package/login/pages/login-oauth-grant/login-oauth-grant.component.d.ts +8 -3
  115. package/login/pages/login-oauth-grant/login-oauth-grant.component.js +29 -33
  116. package/login/pages/login-oauth2-device-verify-user-code/login-oauth2-device-verify-user-code.component.d.ts +8 -3
  117. package/login/pages/login-oauth2-device-verify-user-code/login-oauth2-device-verify-user-code.component.js +28 -31
  118. package/login/pages/login-otp/login-otp.component.d.ts +8 -3
  119. package/login/pages/login-otp/login-otp.component.js +30 -33
  120. package/login/pages/login-page-expired/login-page-expired.component.d.ts +8 -3
  121. package/login/pages/login-page-expired/login-page-expired.component.js +27 -30
  122. package/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.d.ts +9 -6
  123. package/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.js +37 -44
  124. package/login/pages/login-password/login-password.component.d.ts +8 -3
  125. package/login/pages/login-password/login-password.component.js +31 -40
  126. package/login/pages/login-recovery-authn-code-config/login-recovery-authn-code-config.component.d.ts +8 -3
  127. package/login/pages/login-recovery-authn-code-config/login-recovery-authn-code-config.component.js +30 -38
  128. package/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.d.ts +8 -3
  129. package/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.js +30 -33
  130. package/login/pages/login-reset-otp/login-reset-otp.component.d.ts +8 -3
  131. package/login/pages/login-reset-otp/login-reset-otp.component.js +29 -32
  132. package/login/pages/login-reset-password/login-reset-password.component.d.ts +8 -3
  133. package/login/pages/login-reset-password/login-reset-password.component.js +30 -33
  134. package/login/pages/login-update-password/login-update-password.component.d.ts +8 -3
  135. package/login/pages/login-update-password/login-update-password.component.js +32 -42
  136. package/login/pages/login-update-profile/login-update-profile.component.d.ts +13 -3
  137. package/login/pages/login-update-profile/login-update-profile.component.js +39 -39
  138. package/login/pages/login-username/login-username.component.d.ts +8 -3
  139. package/login/pages/login-username/login-username.component.js +32 -45
  140. package/login/pages/login-verify-email/login-verify-email.component.d.ts +8 -3
  141. package/login/pages/login-verify-email/login-verify-email.component.js +28 -31
  142. package/login/pages/login-x509-info/login-x509-info.component.d.ts +8 -3
  143. package/login/pages/login-x509-info/login-x509-info.component.js +28 -31
  144. package/login/pages/logout-confirm/logout-confirm.component.d.ts +8 -3
  145. package/login/pages/logout-confirm/logout-confirm.component.js +28 -31
  146. package/login/pages/register/register.component.d.ts +13 -3
  147. package/login/pages/register/register.component.js +41 -48
  148. package/login/pages/saml-post-form/saml-post-form.component.d.ts +9 -4
  149. package/login/pages/saml-post-form/saml-post-form.component.js +32 -35
  150. package/login/pages/select-authenticator/select-authenticator.component.d.ts +8 -3
  151. package/login/pages/select-authenticator/select-authenticator.component.js +29 -39
  152. package/login/pages/terms/terms.component.d.ts +8 -3
  153. package/login/pages/terms/terms.component.js +28 -31
  154. package/login/pages/update-email/update-email.component.d.ts +13 -3
  155. package/login/pages/update-email/update-email.component.js +40 -41
  156. package/login/pages/webauthn-authenticate/webauthn-authenticate.component.d.ts +9 -6
  157. package/login/pages/webauthn-authenticate/webauthn-authenticate.component.js +37 -50
  158. package/login/pages/webauthn-error/webauthn-error.component.d.ts +8 -3
  159. package/login/pages/webauthn-error/webauthn-error.component.js +32 -40
  160. package/login/pages/webauthn-register/webauthn-register.component.d.ts +9 -6
  161. package/login/pages/webauthn-register/webauthn-register.component.js +36 -46
  162. package/login/providers/keycloakify-angular.providers.d.ts +16 -0
  163. package/login/providers/keycloakify-angular.providers.js +53 -0
  164. package/login/services/i18n.service.d.ts +6 -0
  165. package/login/services/i18n.service.js +12 -0
  166. package/login/services/login-resource-injector.service.d.ts +4 -1
  167. package/login/services/login-resource-injector.service.js +22 -25
  168. package/login/services/submit.service.d.ts +9 -0
  169. package/login/services/submit.service.js +20 -0
  170. package/login/services/user-profile-form.service.d.ts +16 -12
  171. package/login/services/user-profile-form.service.js +293 -305
  172. package/{lib/providers/keycloakify-angular.providers.d.ts → login/tokens/classes.token.d.ts} +14 -37
  173. package/login/tokens/classes.token.js +3 -0
  174. package/login/tokens/i18n.token.d.ts +2 -0
  175. package/login/tokens/i18n.token.js +3 -0
  176. package/login/tokens/kc-context.token.d.ts +3 -0
  177. package/login/tokens/kc-context.token.js +3 -0
  178. package/login/tokens/make-user-confirm-password.token.d.ts +2 -0
  179. package/login/tokens/make-user-confirm-password.token.js +3 -0
  180. package/package.json +123 -181
  181. package/src/account/DefaultPage.ts +51 -0
  182. package/src/account/KcContext.ts +1 -0
  183. package/src/account/classes/component-reference.class.ts +6 -0
  184. package/src/account/containers/template.component.html +125 -0
  185. package/src/account/containers/template.component.ts +71 -0
  186. package/src/account/directives/kc-class.directive.ts +150 -0
  187. package/src/account/i18n.ts +4 -0
  188. package/src/account/pages/account/account.component.html +165 -0
  189. package/src/account/pages/account/account.component.ts +34 -0
  190. package/src/account/pages/applications/applications.component.html +156 -0
  191. package/src/account/pages/applications/applications.component.ts +32 -0
  192. package/src/account/pages/federatedIdentity/federatedIdentity.component.html +97 -0
  193. package/src/account/pages/federatedIdentity/federatedIdentity.component.ts +31 -0
  194. package/src/account/pages/log/log.component.html +44 -0
  195. package/src/account/pages/log/log.component.ts +31 -0
  196. package/src/account/pages/password/password.component.html +131 -0
  197. package/src/account/pages/password/password.component.ts +110 -0
  198. package/src/account/pages/sessions/sessions.component.html +63 -0
  199. package/src/account/pages/sessions/sessions.component.ts +31 -0
  200. package/src/account/pages/totp/totp.component.html +258 -0
  201. package/src/account/pages/totp/totp.component.ts +32 -0
  202. package/src/account/providers/keycloakify-angular.providers.ts +64 -0
  203. package/src/account/services/i18n.service.ts +7 -0
  204. package/src/account/services/resource-injector.service.ts +37 -0
  205. package/src/account/tokens/classes.token.ts +6 -0
  206. package/src/account/tokens/i18n.token.ts +3 -0
  207. package/src/account/tokens/kc-context.token.ts +4 -0
  208. package/src/{login → lib}/directives/attributes.directive.ts +2 -2
  209. package/src/{login → lib}/pipes/input-type.pipe.ts +4 -4
  210. package/src/lib/pipes/is-array-with-empty-object.pipe.ts +16 -0
  211. package/src/lib/pipes/kc-sanitize.pipe.ts +34 -0
  212. package/src/lib/pipes/to-array.pipe.ts +15 -0
  213. package/src/lib/pipes/to-number.pipe.ts +13 -0
  214. package/src/lib/services/resource-injector.service.ts +7 -7
  215. package/src/lib/tokens/use-default-css.token.ts +3 -0
  216. package/src/login/DefaultPage.ts +76 -76
  217. package/src/login/KcContext.ts +1 -1
  218. package/src/login/classes/component-reference.class.ts +1 -1
  219. package/src/login/components/add-remove-buttons-multi-valued-attribute/add-remove-buttons-multi-valued-attribute.component.html +19 -19
  220. package/src/login/components/add-remove-buttons-multi-valued-attribute/add-remove-buttons-multi-valued-attribute.component.ts +15 -23
  221. package/src/login/components/field-errors/field-errors.component.html +10 -10
  222. package/src/login/components/field-errors/field-errors.component.ts +11 -16
  223. package/src/login/components/group-label/group-label.component.html +25 -25
  224. package/src/login/components/group-label/group-label.component.ts +17 -21
  225. package/src/login/components/input-field-by-type/input-field-by-type.component.html +57 -57
  226. package/src/login/components/input-field-by-type/input-field-by-type.component.ts +18 -35
  227. package/src/login/components/input-tag/input-tag.component.html +41 -45
  228. package/src/login/components/input-tag/input-tag.component.ts +25 -34
  229. package/src/login/components/input-tag-selects/input-tag-selects.component.html +22 -22
  230. package/src/login/components/input-tag-selects/input-tag-selects.component.ts +32 -43
  231. package/src/login/components/logout-other-sessions/logout-other-sessions.component.html +15 -15
  232. package/src/login/components/logout-other-sessions/logout-other-sessions.component.ts +13 -10
  233. package/src/login/components/password-wrapper/password-wrapper.component.html +13 -13
  234. package/src/login/components/password-wrapper/password-wrapper.component.ts +15 -25
  235. package/src/login/components/select-tag/select-tag.component.html +26 -26
  236. package/src/login/components/select-tag/select-tag.component.ts +23 -35
  237. package/src/login/components/textarea-tag/textarea-tag.component.html +13 -15
  238. package/src/login/components/textarea-tag/textarea-tag.component.ts +16 -25
  239. package/src/login/components/user-profile-form-fields/user-profile-form-fields.component.html +70 -73
  240. package/src/login/components/user-profile-form-fields/user-profile-form-fields.component.ts +33 -47
  241. package/src/login/containers/template.component.html +183 -183
  242. package/src/login/containers/template.component.ts +26 -42
  243. package/src/login/directives/kc-class.directive.ts +11 -11
  244. package/src/login/i18n.ts +2 -2
  245. package/src/login/pages/code/code.component.html +21 -21
  246. package/src/login/pages/code/code.component.ts +17 -17
  247. package/src/login/pages/delete-account-confirm/delete-account-confirm.component.html +44 -42
  248. package/src/login/pages/delete-account-confirm/delete-account-confirm.component.ts +17 -18
  249. package/src/login/pages/delete-credential/delete-credential.component.html +29 -29
  250. package/src/login/pages/delete-credential/delete-credential.component.ts +17 -24
  251. package/src/login/pages/error/error.component.html +20 -20
  252. package/src/login/pages/error/error.component.ts +17 -17
  253. package/src/login/pages/frontchannel-logout/frontchannel-logout.component.html +31 -31
  254. package/src/login/pages/frontchannel-logout/frontchannel-logout.component.ts +17 -25
  255. package/src/login/pages/idp-review-user-profile/idp-review-user-profile.component.html +36 -36
  256. package/src/login/pages/idp-review-user-profile/idp-review-user-profile.component.ts +34 -33
  257. package/src/login/pages/info/info.component.html +45 -45
  258. package/src/login/pages/info/info.component.ts +20 -37
  259. package/src/login/pages/login/login.component.html +194 -194
  260. package/src/login/pages/login/login.component.ts +22 -43
  261. package/src/login/pages/login-config-totp/login-config-totp.component.html +189 -179
  262. package/src/login/pages/login-config-totp/login-config-totp.component.ts +20 -39
  263. package/src/login/pages/login-idp-link-confirm/login-idp-link-confirm.component.html +35 -35
  264. package/src/login/pages/login-idp-link-confirm/login-idp-link-confirm.component.ts +17 -24
  265. package/src/login/pages/login-idp-link-confirm-override/login-idp-link-confirm-override.component.html +34 -34
  266. package/src/login/pages/login-idp-link-confirm-override/login-idp-link-confirm-override.component.ts +17 -26
  267. package/src/login/pages/login-idp-link-email/login-idp-link-email.component.html +32 -30
  268. package/src/login/pages/login-idp-link-email/login-idp-link-email.component.ts +17 -24
  269. package/src/login/pages/login-oauth-grant/login-oauth-grant.component.html +83 -81
  270. package/src/login/pages/login-oauth-grant/login-oauth-grant.component.ts +18 -26
  271. package/src/login/pages/login-oauth2-device-verify-user-code/login-oauth2-device-verify-user-code.component.html +57 -57
  272. package/src/login/pages/login-oauth2-device-verify-user-code/login-oauth2-device-verify-user-code.component.ts +17 -26
  273. package/src/login/pages/login-otp/login-otp.component.html +96 -96
  274. package/src/login/pages/login-otp/login-otp.component.ts +19 -25
  275. package/src/login/pages/login-page-expired/login-page-expired.component.html +31 -31
  276. package/src/login/pages/login-page-expired/login-page-expired.component.ts +16 -23
  277. package/src/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.html +183 -181
  278. package/src/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.ts +25 -32
  279. package/src/login/pages/login-password/login-password.component.html +82 -82
  280. package/src/login/pages/login-password/login-password.component.ts +20 -33
  281. package/src/login/pages/login-recovery-authn-code-config/login-recovery-authn-code-config.component.html +142 -142
  282. package/src/login/pages/login-recovery-authn-code-config/login-recovery-authn-code-config.component.ts +19 -34
  283. package/src/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.html +67 -67
  284. package/src/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.ts +19 -29
  285. package/src/login/pages/login-reset-otp/login-reset-otp.component.html +61 -59
  286. package/src/login/pages/login-reset-otp/login-reset-otp.component.ts +18 -24
  287. package/src/login/pages/login-reset-password/login-reset-password.component.html +84 -84
  288. package/src/login/pages/login-reset-password/login-reset-password.component.ts +19 -26
  289. package/src/login/pages/login-update-password/login-update-password.component.html +107 -107
  290. package/src/login/pages/login-update-password/login-update-password.component.ts +21 -38
  291. package/src/login/pages/login-update-profile/login-update-profile.component.html +52 -53
  292. package/src/login/pages/login-update-profile/login-update-profile.component.ts +31 -32
  293. package/src/login/pages/login-username/login-username.component.html +146 -146
  294. package/src/login/pages/login-username/login-username.component.ts +21 -38
  295. package/src/login/pages/login-verify-email/login-verify-email.component.html +22 -22
  296. package/src/login/pages/login-verify-email/login-verify-email.component.ts +17 -24
  297. package/src/login/pages/login-x509-info/login-x509-info.component.html +96 -96
  298. package/src/login/pages/login-x509-info/login-x509-info.component.ts +17 -23
  299. package/src/login/pages/logout-confirm/logout-confirm.component.html +51 -51
  300. package/src/login/pages/logout-confirm/logout-confirm.component.ts +17 -23
  301. package/src/login/pages/register/register.component.html +113 -113
  302. package/src/login/pages/register/register.component.ts +33 -39
  303. package/src/login/pages/saml-post-form/saml-post-form.component.html +47 -48
  304. package/src/login/pages/saml-post-form/saml-post-form.component.ts +19 -27
  305. package/src/login/pages/select-authenticator/select-authenticator.component.html +43 -44
  306. package/src/login/pages/select-authenticator/select-authenticator.component.ts +18 -32
  307. package/src/login/pages/terms/terms.component.html +32 -32
  308. package/src/login/pages/terms/terms.component.ts +17 -23
  309. package/src/login/pages/update-email/update-email.component.html +52 -52
  310. package/src/login/pages/update-email/update-email.component.ts +33 -33
  311. package/src/login/pages/webauthn-authenticate/webauthn-authenticate.component.html +146 -148
  312. package/src/login/pages/webauthn-authenticate/webauthn-authenticate.component.ts +26 -50
  313. package/src/login/pages/webauthn-error/webauthn-error.component.html +53 -53
  314. package/src/login/pages/webauthn-error/webauthn-error.component.ts +21 -32
  315. package/src/login/pages/webauthn-register/webauthn-register.component.html +73 -73
  316. package/src/login/pages/webauthn-register/webauthn-register.component.ts +26 -40
  317. package/src/login/providers/keycloakify-angular.providers.ts +68 -0
  318. package/src/login/services/i18n.service.ts +7 -0
  319. package/src/login/services/login-resource-injector.service.ts +13 -12
  320. package/src/login/services/submit.service.ts +12 -0
  321. package/src/login/services/user-profile-form.service.ts +185 -187
  322. package/src/login/tokens/classes.token.ts +6 -0
  323. package/src/login/tokens/i18n.token.ts +3 -0
  324. package/src/login/tokens/kc-context.token.ts +4 -0
  325. package/src/login/tokens/make-user-confirm-password.token.ts +5 -0
  326. package/src/tsconfig.json +6 -1
  327. package/stories/login/pages/login/login.stories.ts +146 -0
  328. package/lib/i18n.d.ts +0 -4
  329. package/lib/i18n.js +0 -6
  330. package/lib/i18n.js.map +0 -1
  331. package/lib/models/index.d.ts +0 -1
  332. package/lib/models/index.js +0 -2
  333. package/lib/models/index.js.map +0 -1
  334. package/lib/models/script.model.js.map +0 -1
  335. package/lib/providers/keycloakify-angular.providers.js +0 -58
  336. package/lib/providers/keycloakify-angular.providers.js.map +0 -1
  337. package/lib/public-api.d.ts +0 -10
  338. package/lib/public-api.js +0 -4
  339. package/lib/public-api.js.map +0 -1
  340. package/lib/services/i18n.service.d.ts +0 -3
  341. package/lib/services/i18n.service.js +0 -14
  342. package/lib/services/i18n.service.js.map +0 -1
  343. package/lib/services/index.d.ts +0 -2
  344. package/lib/services/index.js +0 -3
  345. package/lib/services/index.js.map +0 -1
  346. package/lib/services/resource-injector.service.js.map +0 -1
  347. package/login/DefaultPage.js.map +0 -1
  348. package/login/KcContext.js.map +0 -1
  349. package/login/classes/component-reference.class.js.map +0 -1
  350. package/login/components/add-remove-buttons-multi-valued-attribute/add-remove-buttons-multi-valued-attribute.component.html +0 -24
  351. package/login/components/add-remove-buttons-multi-valued-attribute/add-remove-buttons-multi-valued-attribute.component.js.map +0 -1
  352. package/login/components/field-errors/field-errors.component.html +0 -15
  353. package/login/components/field-errors/field-errors.component.js.map +0 -1
  354. package/login/components/group-label/group-label.component.html +0 -30
  355. package/login/components/group-label/group-label.component.js.map +0 -1
  356. package/login/components/index.d.ts +0 -11
  357. package/login/components/index.js +0 -12
  358. package/login/components/index.js.map +0 -1
  359. package/login/components/input-field-by-type/input-field-by-type.component.html +0 -63
  360. package/login/components/input-field-by-type/input-field-by-type.component.js.map +0 -1
  361. package/login/components/input-tag/input-tag.component.html +0 -49
  362. package/login/components/input-tag/input-tag.component.js.map +0 -1
  363. package/login/components/input-tag-selects/input-tag-selects.component.html +0 -29
  364. package/login/components/input-tag-selects/input-tag-selects.component.js.map +0 -1
  365. package/login/components/logout-other-sessions/logout-other-sessions.component.html +0 -19
  366. package/login/components/logout-other-sessions/logout-other-sessions.component.js.map +0 -1
  367. package/login/components/password-wrapper/password-wrapper.component.html +0 -15
  368. package/login/components/password-wrapper/password-wrapper.component.js.map +0 -1
  369. package/login/components/select-tag/select-tag.component.html +0 -31
  370. package/login/components/select-tag/select-tag.component.js.map +0 -1
  371. package/login/components/textarea-tag/textarea-tag.component.html +0 -18
  372. package/login/components/textarea-tag/textarea-tag.component.js.map +0 -1
  373. package/login/components/user-profile-form-fields/user-profile-form-fields.component.html +0 -85
  374. package/login/components/user-profile-form-fields/user-profile-form-fields.component.js.map +0 -1
  375. package/login/containers/template.component.html +0 -203
  376. package/login/containers/template.component.js.map +0 -1
  377. package/login/directives/attributes.directive.d.ts +0 -5
  378. package/login/directives/attributes.directive.js +0 -34
  379. package/login/directives/attributes.directive.js.map +0 -1
  380. package/login/directives/index.d.ts +0 -2
  381. package/login/directives/index.js +0 -3
  382. package/login/directives/index.js.map +0 -1
  383. package/login/directives/kc-class.directive.js.map +0 -1
  384. package/login/i18n.js.map +0 -1
  385. package/login/pages/code/code.component.html +0 -26
  386. package/login/pages/code/code.component.js.map +0 -1
  387. package/login/pages/delete-account-confirm/delete-account-confirm.component.html +0 -46
  388. package/login/pages/delete-account-confirm/delete-account-confirm.component.js.map +0 -1
  389. package/login/pages/delete-credential/delete-credential.component.html +0 -35
  390. package/login/pages/delete-credential/delete-credential.component.js.map +0 -1
  391. package/login/pages/error/error.component.html +0 -25
  392. package/login/pages/error/error.component.js.map +0 -1
  393. package/login/pages/frontchannel-logout/frontchannel-logout.component.html +0 -35
  394. package/login/pages/frontchannel-logout/frontchannel-logout.component.js.map +0 -1
  395. package/login/pages/idp-review-user-profile/idp-review-user-profile.component.html +0 -41
  396. package/login/pages/idp-review-user-profile/idp-review-user-profile.component.js.map +0 -1
  397. package/login/pages/info/info.component.html +0 -54
  398. package/login/pages/info/info.component.js.map +0 -1
  399. package/login/pages/login/login.component.html +0 -212
  400. package/login/pages/login/login.component.js.map +0 -1
  401. package/login/pages/login-config-totp/login-config-totp.component.html +0 -190
  402. package/login/pages/login-config-totp/login-config-totp.component.js.map +0 -1
  403. package/login/pages/login-idp-link-confirm/login-idp-link-confirm.component.html +0 -41
  404. package/login/pages/login-idp-link-confirm/login-idp-link-confirm.component.js.map +0 -1
  405. package/login/pages/login-idp-link-confirm-override/login-idp-link-confirm-override.component.html +0 -40
  406. package/login/pages/login-idp-link-confirm-override/login-idp-link-confirm-override.component.js.map +0 -1
  407. package/login/pages/login-idp-link-email/login-idp-link-email.component.html +0 -37
  408. package/login/pages/login-idp-link-email/login-idp-link-email.component.js.map +0 -1
  409. package/login/pages/login-oauth-grant/login-oauth-grant.component.html +0 -92
  410. package/login/pages/login-oauth-grant/login-oauth-grant.component.js.map +0 -1
  411. package/login/pages/login-oauth2-device-verify-user-code/login-oauth2-device-verify-user-code.component.html +0 -63
  412. package/login/pages/login-oauth2-device-verify-user-code/login-oauth2-device-verify-user-code.component.js.map +0 -1
  413. package/login/pages/login-otp/login-otp.component.html +0 -103
  414. package/login/pages/login-otp/login-otp.component.js.map +0 -1
  415. package/login/pages/login-page-expired/login-page-expired.component.html +0 -35
  416. package/login/pages/login-page-expired/login-page-expired.component.js.map +0 -1
  417. package/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.html +0 -203
  418. package/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.js.map +0 -1
  419. package/login/pages/login-password/login-password.component.html +0 -90
  420. package/login/pages/login-password/login-password.component.js.map +0 -1
  421. package/login/pages/login-recovery-authn-code-config/login-recovery-authn-code-config.component.html +0 -155
  422. package/login/pages/login-recovery-authn-code-config/login-recovery-authn-code-config.component.js.map +0 -1
  423. package/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.html +0 -76
  424. package/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.js.map +0 -1
  425. package/login/pages/login-reset-otp/login-reset-otp.component.html +0 -65
  426. package/login/pages/login-reset-otp/login-reset-otp.component.js.map +0 -1
  427. package/login/pages/login-reset-password/login-reset-password.component.html +0 -95
  428. package/login/pages/login-reset-password/login-reset-password.component.js.map +0 -1
  429. package/login/pages/login-update-password/login-update-password.component.html +0 -116
  430. package/login/pages/login-update-password/login-update-password.component.js.map +0 -1
  431. package/login/pages/login-update-profile/login-update-profile.component.html +0 -59
  432. package/login/pages/login-update-profile/login-update-profile.component.js.map +0 -1
  433. package/login/pages/login-username/login-username.component.html +0 -161
  434. package/login/pages/login-username/login-username.component.js.map +0 -1
  435. package/login/pages/login-verify-email/login-verify-email.component.html +0 -27
  436. package/login/pages/login-verify-email/login-verify-email.component.js.map +0 -1
  437. package/login/pages/login-x509-info/login-x509-info.component.html +0 -102
  438. package/login/pages/login-x509-info/login-x509-info.component.js.map +0 -1
  439. package/login/pages/logout-confirm/logout-confirm.component.html +0 -59
  440. package/login/pages/logout-confirm/logout-confirm.component.js.map +0 -1
  441. package/login/pages/register/register.component.html +0 -126
  442. package/login/pages/register/register.component.js.map +0 -1
  443. package/login/pages/saml-post-form/saml-post-form.component.html +0 -51
  444. package/login/pages/saml-post-form/saml-post-form.component.js.map +0 -1
  445. package/login/pages/select-authenticator/select-authenticator.component.html +0 -49
  446. package/login/pages/select-authenticator/select-authenticator.component.js.map +0 -1
  447. package/login/pages/terms/terms.component.html +0 -36
  448. package/login/pages/terms/terms.component.js.map +0 -1
  449. package/login/pages/update-email/update-email.component.html +0 -58
  450. package/login/pages/update-email/update-email.component.js.map +0 -1
  451. package/login/pages/webauthn-authenticate/webauthn-authenticate.component.html +0 -162
  452. package/login/pages/webauthn-authenticate/webauthn-authenticate.component.js.map +0 -1
  453. package/login/pages/webauthn-error/webauthn-error.component.html +0 -60
  454. package/login/pages/webauthn-error/webauthn-error.component.js.map +0 -1
  455. package/login/pages/webauthn-register/webauthn-register.component.html +0 -82
  456. package/login/pages/webauthn-register/webauthn-register.component.js.map +0 -1
  457. package/login/pipes/advanced-msg-str.pipe.d.ts +0 -5
  458. package/login/pipes/advanced-msg-str.pipe.js +0 -31
  459. package/login/pipes/advanced-msg-str.pipe.js.map +0 -1
  460. package/login/pipes/index.d.ts +0 -6
  461. package/login/pipes/index.js +0 -7
  462. package/login/pipes/index.js.map +0 -1
  463. package/login/pipes/input-type.pipe.d.ts +0 -4
  464. package/login/pipes/input-type.pipe.js +0 -23
  465. package/login/pipes/input-type.pipe.js.map +0 -1
  466. package/login/pipes/kc-sanitize.pipe.d.ts +0 -7
  467. package/login/pipes/kc-sanitize.pipe.js +0 -36
  468. package/login/pipes/kc-sanitize.pipe.js.map +0 -1
  469. package/login/pipes/msg-str.pipe.d.ts +0 -6
  470. package/login/pipes/msg-str.pipe.js +0 -31
  471. package/login/pipes/msg-str.pipe.js.map +0 -1
  472. package/login/pipes/to-array.pipe.d.ts +0 -4
  473. package/login/pipes/to-array.pipe.js +0 -24
  474. package/login/pipes/to-array.pipe.js.map +0 -1
  475. package/login/pipes/to-number.pipe.d.ts +0 -4
  476. package/login/pipes/to-number.pipe.js +0 -23
  477. package/login/pipes/to-number.pipe.js.map +0 -1
  478. package/login/services/index.d.ts +0 -2
  479. package/login/services/index.js +0 -3
  480. package/login/services/index.js.map +0 -1
  481. package/login/services/login-resource-injector.service.js.map +0 -1
  482. package/login/services/user-profile-form.service.js.map +0 -1
  483. package/src/lib/i18n.ts +0 -9
  484. package/src/lib/models/index.ts +0 -1
  485. package/src/lib/providers/keycloakify-angular.providers.ts +0 -92
  486. package/src/lib/public-api.ts +0 -12
  487. package/src/lib/services/i18n.service.ts +0 -5
  488. package/src/lib/services/index.ts +0 -2
  489. package/src/login/components/index.ts +0 -11
  490. package/src/login/directives/index.ts +0 -2
  491. package/src/login/pipes/advanced-msg-str.pipe.ts +0 -13
  492. package/src/login/pipes/index.ts +0 -6
  493. package/src/login/pipes/kc-sanitize.pipe.ts +0 -36
  494. package/src/login/pipes/msg-str.pipe.ts +0 -14
  495. package/src/login/pipes/to-array.pipe.ts +0 -15
  496. package/src/login/pipes/to-number.pipe.ts +0 -13
  497. package/src/login/services/index.ts +0 -2
@@ -0,0 +1,37 @@
1
+ import { NgClass } from '@angular/common';
2
+ import { Component, forwardRef, inject } from '@angular/core';
3
+ import { ComponentReference } from '../../../account/classes/component-reference.class';
4
+ import { TemplateComponent } from '../../../account/containers/template.component';
5
+ import { KcClassDirective } from '../../../account/directives/kc-class.directive';
6
+ import { ACCOUNT_CLASSES } from '../../../account/tokens/classes.token';
7
+ import { ACCOUNT_I18N } from '../../../account/tokens/i18n.token';
8
+ import { KC_ACCOUNT_CONTEXT } from '../../../account/tokens/kc-context.token';
9
+ import { KcSanitizePipe } from '../../../lib/pipes/kc-sanitize.pipe';
10
+ import { USE_DEFAULT_CSS } from '../../../lib/tokens/use-default-css.token';
11
+ import * as i0 from "@angular/core";
12
+ export class TotpComponent extends ComponentReference {
13
+ constructor() {
14
+ super(...arguments);
15
+ this.i18n = inject(ACCOUNT_I18N);
16
+ this.kcContext = inject(KC_ACCOUNT_CONTEXT);
17
+ this.doUseDefaultCss = inject(USE_DEFAULT_CSS);
18
+ this.classes = inject(ACCOUNT_CLASSES);
19
+ }
20
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: TotpComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
21
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: TotpComponent, isStandalone: true, selector: "kc-root", providers: [
22
+ {
23
+ provide: ComponentReference,
24
+ useExisting: forwardRef(() => TotpComponent)
25
+ }
26
+ ], usesInheritance: true, ngImport: i0, template: "@let url = kcContext.url;\n@let mode = kcContext.mode;\n@let messagesPerField = kcContext.messagesPerField;\n@let stateChecker = kcContext.stateChecker;\n@let totp = kcContext.totp;\n\n<kc-account-template [active]=\"'totp'\">\n <ng-container content>\n <div class=\"row\">\n <div class=\"col-md-10\">\n <h2>{{ i18n.msgStr('authenticatorTitle') }}</h2>\n </div>\n @if (totp.otpCredentials.length) {\n <div class=\"subtitle col-md-2\">\n <span class=\"required\">*</span>\n {{ i18n.msgStr('requiredFields') }}\n </div>\n }\n </div>\n @if (totp.enabled) {\n <table class=\"table table-bordered table-striped\">\n <thead>\n @if (totp.otpCredentials.length > 1) {\n <tr>\n <th [colSpan]=\"4\">{{ i18n.msgStr('configureAuthenticators') }}</th>\n </tr>\n } @else {\n <tr>\n <th [colSpan]=\"3\">{{ i18n.msgStr('configureAuthenticators') }}</th>\n </tr>\n }\n </thead>\n <tbody>\n @for (credential of totp.otpCredentials; track credential; let index = $index) {\n <tr>\n <td class=\"provider\">{{ i18n.msgStr('mobile') }}</td>\n @if (totp.otpCredentials.length > 1) {\n <td class=\"provider\">{{ credential.id }}</td>\n }\n <td class=\"provider\">{{ credential.userLabel || '' }}</td>\n <td class=\"action\">\n <form\n [action]=\"url.totpUrl\"\n method=\"post\"\n class=\"form-inline\"\n >\n <input\n type=\"hidden\"\n id=\"stateChecker\"\n name=\"stateChecker\"\n [value]=\"stateChecker\"\n />\n <input\n type=\"hidden\"\n id=\"submitAction\"\n name=\"submitAction\"\n value=\"Delete\"\n />\n <input\n type=\"hidden\"\n id=\"credentialId\"\n name=\"credentialId\"\n [value]=\"credential.id\"\n />\n <button\n [id]=\"'remove-mobile-' + index\"\n class=\"btn btn-default\"\n >\n <i class=\"pficon pficon-delete\"></i>\n </button>\n </form>\n </td>\n </tr>\n }\n </tbody>\n </table>\n } @else {\n <div>\n <hr />\n <ol id=\"kc-totp-settings\">\n <li>\n <p>{{ i18n.msgStr('totpStep1') }}</p>\n\n <ul id=\"kc-totp-supported-apps\">\n @for (app of totp.supportedApplications; track app) {\n <li>{{ i18n.advancedMsgStr(app) }}</li>\n }\n </ul>\n </li>\n @if (mode && mode === 'manual') {\n <li>\n <p>{{ i18n.msgStr('totpManualStep2') }}</p>\n <p>\n <span id=\"kc-totp-secret-key\">{{ totp.totpSecretEncoded }}</span>\n </p>\n <p>\n <a\n [href]=\"totp.qrUrl\"\n id=\"mode-barcode\"\n >\n {{ i18n.msgStr('totpScanBarcode') }}\n </a>\n </p>\n </li>\n <li>\n <p>{{ i18n.msgStr('totpManualStep3') }}</p>\n <ul>\n <li id=\"kc-totp-type\">{{ i18n.msgStr('totpType') }}: {{ i18n.msgStr($any('totp.' + totp.policy.type)) }}</li>\n <li id=\"kc-totp-algorithm\">{{ i18n.msgStr('totpAlgorithm') }}: {{ totp.policy.getAlgorithmKey() }}</li>\n <li id=\"kc-totp-digits\">{{ i18n.msgStr('totpDigits') }}: {{ totp.policy.digits }}</li>\n @if (totp.policy.type === 'totp') {\n <li id=\"kc-totp-period\">{{ i18n.msgStr('totpInterval') }}: {{ totp.policy.period }}</li>\n } @else {\n <li id=\"kc-totp-counter\">{{ i18n.msgStr('totpCounter') }}: {{ totp.policy.initialCounter }}</li>\n }\n </ul>\n </li>\n } @else {\n <li>\n <p>{{ i18n.msgStr('totpStep2') }}</p>\n <p>\n <img\n id=\"kc-totp-secret-qr-code\"\n [src]=\"'data:image/png;base64, ' + totp.totpSecretQrCode\"\n alt=\"Figure: Barcode\"\n />\n </p>\n <p>\n <a\n [href]=\"totp.manualUrl\"\n id=\"mode-manual\"\n >\n {{ i18n.msgStr('totpUnableToScan') }}\n </a>\n </p>\n </li>\n }\n <li>\n <p>{{ i18n.msgStr('totpStep3') }}</p>\n <p>{{ i18n.msgStr('totpStep3DeviceName') }}</p>\n </li>\n </ol>\n <hr />\n <form\n [action]=\"url.totpUrl\"\n [kcClass]=\"'kcFormClass'\"\n id=\"kc-totp-settings-form\"\n method=\"post\"\n >\n <input\n type=\"hidden\"\n id=\"stateChecker\"\n name=\"stateChecker\"\n [value]=\"stateChecker\"\n />\n <div [kcClass]=\"'kcFormGroupClass'\">\n <div class=\"col-sm-2 col-md-2\">\n <label\n for=\"totp\"\n class=\"control-label\"\n >\n {{ i18n.msgStr('authenticatorCode') }}\n </label>\n <span class=\"required\">*</span>\n </div>\n <div class=\"col-sm-10 col-md-10\">\n <input\n type=\"text\"\n id=\"totp\"\n name=\"totp\"\n autoComplete=\"off\"\n [kcClass]=\"'kcInputClass'\"\n [attr.aria-invalid]=\"messagesPerField.existsError('totp')\"\n />\n @if (messagesPerField.existsError('totp')) {\n <span\n id=\"input-error-otp-code\"\n [kcClass]=\"'kcInputErrorMessageClass'\"\n aria-live=\"polite\"\n [innerHTML]=\"messagesPerField.get('totp') | kcSanitize: 'html'\"\n ></span>\n }\n </div>\n <input\n type=\"hidden\"\n id=\"totpSecret\"\n name=\"totpSecret\"\n [value]=\"totp.totpSecret\"\n />\n @if (mode) {\n <input\n type=\"hidden\"\n id=\"mode\"\n [value]=\"mode\"\n />\n }\n </div>\n\n <div [kcClass]=\"'kcFormGroupClass'\">\n <div class=\"col-sm-2 col-md-2\">\n <label\n for=\"userLabel\"\n [kcClass]=\"'kcLabelClass'\"\n >\n {{ i18n.msgStr('totpDeviceName') }}\n </label>\n @if (totp.otpCredentials.length >= 1) {\n <span class=\"required\">*</span>\n }\n </div>\n <div class=\"col-sm-10 col-md-10\">\n <input\n type=\"text\"\n id=\"userLabel\"\n name=\"userLabel\"\n autoComplete=\"off\"\n [kcClass]=\"'kcInputClass'\"\n [attr.aria-invalid]=\"messagesPerField.existsError('userLabel')\"\n />\n @if (messagesPerField.existsError('userLabel')) {\n <span\n id=\"input-error-otp-label\"\n [kcClass]=\"'kcInputErrorMessageClass'\"\n aria-live=\"polite\"\n [innerHTML]=\"messagesPerField.get('userLabel') | kcSanitize: 'html'\"\n ></span>\n }\n </div>\n </div>\n\n <div\n id=\"kc-form-buttons\"\n class=\"text-right\"\n [kcClass]=\"'kcFormGroupClass'\"\n >\n <div [kcClass]=\"'kcInputWrapperClass'\">\n <input\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonLargeClass']\"\n id=\"saveTOTPBtn\"\n [value]=\"i18n.msgStr('doSave')\"\n />\n <button\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonDefaultClass', 'kcButtonLargeClass']\"\n id=\"cancelTOTPBtn\"\n name=\"submitAction\"\n value=\"Cancel\"\n >\n {{ i18n.msgStr('doCancel') }}\n </button>\n </div>\n </div>\n </form>\n </div>\n }\n </ng-container>\n</kc-account-template>\n", dependencies: [{ kind: "directive", type: KcClassDirective, selector: "[kcClass]", inputs: ["class", "ngClass", "kcClass"] }, { kind: "component", type: TemplateComponent, selector: "kc-account-template", inputs: ["active"] }, { kind: "pipe", type: KcSanitizePipe, name: "kcSanitize" }] }); }
27
+ }
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: TotpComponent, decorators: [{
29
+ type: Component,
30
+ args: [{ standalone: true, imports: [KcClassDirective, TemplateComponent, KcSanitizePipe, NgClass], selector: 'kc-root', providers: [
31
+ {
32
+ provide: ComponentReference,
33
+ useExisting: forwardRef(() => TotpComponent)
34
+ }
35
+ ], template: "@let url = kcContext.url;\n@let mode = kcContext.mode;\n@let messagesPerField = kcContext.messagesPerField;\n@let stateChecker = kcContext.stateChecker;\n@let totp = kcContext.totp;\n\n<kc-account-template [active]=\"'totp'\">\n <ng-container content>\n <div class=\"row\">\n <div class=\"col-md-10\">\n <h2>{{ i18n.msgStr('authenticatorTitle') }}</h2>\n </div>\n @if (totp.otpCredentials.length) {\n <div class=\"subtitle col-md-2\">\n <span class=\"required\">*</span>\n {{ i18n.msgStr('requiredFields') }}\n </div>\n }\n </div>\n @if (totp.enabled) {\n <table class=\"table table-bordered table-striped\">\n <thead>\n @if (totp.otpCredentials.length > 1) {\n <tr>\n <th [colSpan]=\"4\">{{ i18n.msgStr('configureAuthenticators') }}</th>\n </tr>\n } @else {\n <tr>\n <th [colSpan]=\"3\">{{ i18n.msgStr('configureAuthenticators') }}</th>\n </tr>\n }\n </thead>\n <tbody>\n @for (credential of totp.otpCredentials; track credential; let index = $index) {\n <tr>\n <td class=\"provider\">{{ i18n.msgStr('mobile') }}</td>\n @if (totp.otpCredentials.length > 1) {\n <td class=\"provider\">{{ credential.id }}</td>\n }\n <td class=\"provider\">{{ credential.userLabel || '' }}</td>\n <td class=\"action\">\n <form\n [action]=\"url.totpUrl\"\n method=\"post\"\n class=\"form-inline\"\n >\n <input\n type=\"hidden\"\n id=\"stateChecker\"\n name=\"stateChecker\"\n [value]=\"stateChecker\"\n />\n <input\n type=\"hidden\"\n id=\"submitAction\"\n name=\"submitAction\"\n value=\"Delete\"\n />\n <input\n type=\"hidden\"\n id=\"credentialId\"\n name=\"credentialId\"\n [value]=\"credential.id\"\n />\n <button\n [id]=\"'remove-mobile-' + index\"\n class=\"btn btn-default\"\n >\n <i class=\"pficon pficon-delete\"></i>\n </button>\n </form>\n </td>\n </tr>\n }\n </tbody>\n </table>\n } @else {\n <div>\n <hr />\n <ol id=\"kc-totp-settings\">\n <li>\n <p>{{ i18n.msgStr('totpStep1') }}</p>\n\n <ul id=\"kc-totp-supported-apps\">\n @for (app of totp.supportedApplications; track app) {\n <li>{{ i18n.advancedMsgStr(app) }}</li>\n }\n </ul>\n </li>\n @if (mode && mode === 'manual') {\n <li>\n <p>{{ i18n.msgStr('totpManualStep2') }}</p>\n <p>\n <span id=\"kc-totp-secret-key\">{{ totp.totpSecretEncoded }}</span>\n </p>\n <p>\n <a\n [href]=\"totp.qrUrl\"\n id=\"mode-barcode\"\n >\n {{ i18n.msgStr('totpScanBarcode') }}\n </a>\n </p>\n </li>\n <li>\n <p>{{ i18n.msgStr('totpManualStep3') }}</p>\n <ul>\n <li id=\"kc-totp-type\">{{ i18n.msgStr('totpType') }}: {{ i18n.msgStr($any('totp.' + totp.policy.type)) }}</li>\n <li id=\"kc-totp-algorithm\">{{ i18n.msgStr('totpAlgorithm') }}: {{ totp.policy.getAlgorithmKey() }}</li>\n <li id=\"kc-totp-digits\">{{ i18n.msgStr('totpDigits') }}: {{ totp.policy.digits }}</li>\n @if (totp.policy.type === 'totp') {\n <li id=\"kc-totp-period\">{{ i18n.msgStr('totpInterval') }}: {{ totp.policy.period }}</li>\n } @else {\n <li id=\"kc-totp-counter\">{{ i18n.msgStr('totpCounter') }}: {{ totp.policy.initialCounter }}</li>\n }\n </ul>\n </li>\n } @else {\n <li>\n <p>{{ i18n.msgStr('totpStep2') }}</p>\n <p>\n <img\n id=\"kc-totp-secret-qr-code\"\n [src]=\"'data:image/png;base64, ' + totp.totpSecretQrCode\"\n alt=\"Figure: Barcode\"\n />\n </p>\n <p>\n <a\n [href]=\"totp.manualUrl\"\n id=\"mode-manual\"\n >\n {{ i18n.msgStr('totpUnableToScan') }}\n </a>\n </p>\n </li>\n }\n <li>\n <p>{{ i18n.msgStr('totpStep3') }}</p>\n <p>{{ i18n.msgStr('totpStep3DeviceName') }}</p>\n </li>\n </ol>\n <hr />\n <form\n [action]=\"url.totpUrl\"\n [kcClass]=\"'kcFormClass'\"\n id=\"kc-totp-settings-form\"\n method=\"post\"\n >\n <input\n type=\"hidden\"\n id=\"stateChecker\"\n name=\"stateChecker\"\n [value]=\"stateChecker\"\n />\n <div [kcClass]=\"'kcFormGroupClass'\">\n <div class=\"col-sm-2 col-md-2\">\n <label\n for=\"totp\"\n class=\"control-label\"\n >\n {{ i18n.msgStr('authenticatorCode') }}\n </label>\n <span class=\"required\">*</span>\n </div>\n <div class=\"col-sm-10 col-md-10\">\n <input\n type=\"text\"\n id=\"totp\"\n name=\"totp\"\n autoComplete=\"off\"\n [kcClass]=\"'kcInputClass'\"\n [attr.aria-invalid]=\"messagesPerField.existsError('totp')\"\n />\n @if (messagesPerField.existsError('totp')) {\n <span\n id=\"input-error-otp-code\"\n [kcClass]=\"'kcInputErrorMessageClass'\"\n aria-live=\"polite\"\n [innerHTML]=\"messagesPerField.get('totp') | kcSanitize: 'html'\"\n ></span>\n }\n </div>\n <input\n type=\"hidden\"\n id=\"totpSecret\"\n name=\"totpSecret\"\n [value]=\"totp.totpSecret\"\n />\n @if (mode) {\n <input\n type=\"hidden\"\n id=\"mode\"\n [value]=\"mode\"\n />\n }\n </div>\n\n <div [kcClass]=\"'kcFormGroupClass'\">\n <div class=\"col-sm-2 col-md-2\">\n <label\n for=\"userLabel\"\n [kcClass]=\"'kcLabelClass'\"\n >\n {{ i18n.msgStr('totpDeviceName') }}\n </label>\n @if (totp.otpCredentials.length >= 1) {\n <span class=\"required\">*</span>\n }\n </div>\n <div class=\"col-sm-10 col-md-10\">\n <input\n type=\"text\"\n id=\"userLabel\"\n name=\"userLabel\"\n autoComplete=\"off\"\n [kcClass]=\"'kcInputClass'\"\n [attr.aria-invalid]=\"messagesPerField.existsError('userLabel')\"\n />\n @if (messagesPerField.existsError('userLabel')) {\n <span\n id=\"input-error-otp-label\"\n [kcClass]=\"'kcInputErrorMessageClass'\"\n aria-live=\"polite\"\n [innerHTML]=\"messagesPerField.get('userLabel') | kcSanitize: 'html'\"\n ></span>\n }\n </div>\n </div>\n\n <div\n id=\"kc-form-buttons\"\n class=\"text-right\"\n [kcClass]=\"'kcFormGroupClass'\"\n >\n <div [kcClass]=\"'kcInputWrapperClass'\">\n <input\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonLargeClass']\"\n id=\"saveTOTPBtn\"\n [value]=\"i18n.msgStr('doSave')\"\n />\n <button\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonDefaultClass', 'kcButtonLargeClass']\"\n id=\"cancelTOTPBtn\"\n name=\"submitAction\"\n value=\"Cancel\"\n >\n {{ i18n.msgStr('doCancel') }}\n </button>\n </div>\n </div>\n </form>\n </div>\n }\n </ng-container>\n</kc-account-template>\n" }]
36
+ }] });
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG90cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZXljbG9ha2lmeS1hbmd1bGFyL3NyYy9hY2NvdW50L3BhZ2VzL3RvdHAvdG90cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZXljbG9ha2lmeS1hbmd1bGFyL3NyYy9hY2NvdW50L3BhZ2VzL3RvdHAvdG90cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQy9GLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQzlGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUNwRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDOUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDMUYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1REFBdUQsQ0FBQzs7QUFpQnhGLE1BQU0sT0FBTyxhQUFjLFNBQVEsa0JBQWtCO0lBWnJEOztRQWFJLFNBQUksR0FBRyxNQUFNLENBQU8sWUFBWSxDQUFDLENBQUM7UUFDbEMsY0FBUyxHQUFHLE1BQU0sQ0FBNkMsa0JBQWtCLENBQUMsQ0FBQztRQUMxRSxvQkFBZSxHQUFHLE1BQU0sQ0FBVSxlQUFlLENBQUMsQ0FBQztRQUNuRCxZQUFPLEdBQUcsTUFBTSxDQUFvQyxlQUFlLENBQUMsQ0FBQztLQUNqRjs4R0FMWSxhQUFhO2tHQUFiLGFBQWEsc0RBUFg7WUFDUDtnQkFDSSxPQUFPLEVBQUUsa0JBQWtCO2dCQUMzQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQzthQUMvQztTQUNKLGlEQ3hCTCxncFlBa1FBLDRDRGxQYyxnQkFBZ0IsK0ZBQUUsaUJBQWlCLCtFQUFFLGNBQWM7OzJGQVVwRCxhQUFhO2tCQVp6QixTQUFTO2lDQUNNLElBQUksV0FDUCxDQUFDLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLGNBQWMsRUFBRSxPQUFPLENBQUMsWUFDN0QsU0FBUyxhQUVSO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxrQkFBa0I7NEJBQzNCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGNBQWMsQ0FBQzt5QkFDL0M7cUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgZm9yd2FyZFJlZiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnRSZWZlcmVuY2UgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9hY2NvdW50L2NsYXNzZXMvY29tcG9uZW50LXJlZmVyZW5jZS5jbGFzcyc7XG5pbXBvcnQgeyBUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2FjY291bnQvY29udGFpbmVycy90ZW1wbGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgS2NDbGFzc0RpcmVjdGl2ZSB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2FjY291bnQvZGlyZWN0aXZlcy9rYy1jbGFzcy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQUNDT1VOVF9DTEFTU0VTIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvYWNjb3VudC90b2tlbnMvY2xhc3Nlcy50b2tlbic7XG5pbXBvcnQgeyBBQ0NPVU5UX0kxOE4gfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9hY2NvdW50L3Rva2Vucy9pMThuLnRva2VuJztcbmltcG9ydCB7IEtDX0FDQ09VTlRfQ09OVEVYVCB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2FjY291bnQvdG9rZW5zL2tjLWNvbnRleHQudG9rZW4nO1xuaW1wb3J0IHsgS2NTYW5pdGl6ZVBpcGUgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9saWIvcGlwZXMva2Mtc2FuaXRpemUucGlwZSc7XG5pbXBvcnQgeyBVU0VfREVGQVVMVF9DU1MgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9saWIvdG9rZW5zL3VzZS1kZWZhdWx0LWNzcy50b2tlbic7XG5pbXBvcnQgeyB0eXBlIENsYXNzS2V5IH0gZnJvbSAna2V5Y2xvYWtpZnkvYWNjb3VudCc7XG5pbXBvcnQgeyB0eXBlIEkxOG4gfSBmcm9tICcuLi8uLi9pMThuJztcbmltcG9ydCB7IHR5cGUgS2NDb250ZXh0IH0gZnJvbSAnLi4vLi4vS2NDb250ZXh0JztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbS2NDbGFzc0RpcmVjdGl2ZSwgVGVtcGxhdGVDb21wb25lbnQsIEtjU2FuaXRpemVQaXBlLCBOZ0NsYXNzXSxcbiAgICBzZWxlY3RvcjogJ2tjLXJvb3QnLFxuICAgIHRlbXBsYXRlVXJsOiAndG90cC5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IENvbXBvbmVudFJlZmVyZW5jZSxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFRvdHBDb21wb25lbnQpXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFRvdHBDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRSZWZlcmVuY2Uge1xuICAgIGkxOG4gPSBpbmplY3Q8STE4bj4oQUNDT1VOVF9JMThOKTtcbiAgICBrY0NvbnRleHQgPSBpbmplY3Q8RXh0cmFjdDxLY0NvbnRleHQsIHsgcGFnZUlkOiAndG90cC5mdGwnIH0+PihLQ19BQ0NPVU5UX0NPTlRFWFQpO1xuICAgIG92ZXJyaWRlIGRvVXNlRGVmYXVsdENzcyA9IGluamVjdDxib29sZWFuPihVU0VfREVGQVVMVF9DU1MpO1xuICAgIG92ZXJyaWRlIGNsYXNzZXMgPSBpbmplY3Q8UGFydGlhbDxSZWNvcmQ8Q2xhc3NLZXksIHN0cmluZz4+PihBQ0NPVU5UX0NMQVNTRVMpO1xufVxuIiwiQGxldCB1cmwgPSBrY0NvbnRleHQudXJsO1xuQGxldCBtb2RlID0ga2NDb250ZXh0Lm1vZGU7XG5AbGV0IG1lc3NhZ2VzUGVyRmllbGQgPSBrY0NvbnRleHQubWVzc2FnZXNQZXJGaWVsZDtcbkBsZXQgc3RhdGVDaGVja2VyID0ga2NDb250ZXh0LnN0YXRlQ2hlY2tlcjtcbkBsZXQgdG90cCA9IGtjQ29udGV4dC50b3RwO1xuXG48a2MtYWNjb3VudC10ZW1wbGF0ZSBbYWN0aXZlXT1cIid0b3RwJ1wiPlxuICAgIDxuZy1jb250YWluZXIgY29udGVudD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMFwiPlxuICAgICAgICAgICAgICAgIDxoMj57eyBpMThuLm1zZ1N0cignYXV0aGVudGljYXRvclRpdGxlJykgfX08L2gyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBAaWYgKHRvdHAub3RwQ3JlZGVudGlhbHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1YnRpdGxlIGNvbC1tZC0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICB7eyBpMThuLm1zZ1N0cigncmVxdWlyZWRGaWVsZHMnKSB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgQGlmICh0b3RwLmVuYWJsZWQpIHtcbiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLWJvcmRlcmVkIHRhYmxlLXN0cmlwZWRcIj5cbiAgICAgICAgICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAodG90cC5vdHBDcmVkZW50aWFscy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIFtjb2xTcGFuXT1cIjRcIj57eyBpMThuLm1zZ1N0cignY29uZmlndXJlQXV0aGVudGljYXRvcnMnKSB9fTwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggW2NvbFNwYW5dPVwiM1wiPnt7IGkxOG4ubXNnU3RyKCdjb25maWd1cmVBdXRoZW50aWNhdG9ycycpIH19PC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L3RoZWFkPlxuICAgICAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoY3JlZGVudGlhbCBvZiB0b3RwLm90cENyZWRlbnRpYWxzOyB0cmFjayBjcmVkZW50aWFsOyBsZXQgaW5kZXggPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJwcm92aWRlclwiPnt7IGkxOG4ubXNnU3RyKCdtb2JpbGUnKSB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmICh0b3RwLm90cENyZWRlbnRpYWxzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwicHJvdmlkZXJcIj57eyBjcmVkZW50aWFsLmlkIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwicHJvdmlkZXJcIj57eyBjcmVkZW50aWFsLnVzZXJMYWJlbCB8fCAnJyB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiYWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWN0aW9uXT1cInVybC50b3RwVXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZD1cInBvc3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWlubGluZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJoaWRkZW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwic3RhdGVDaGVja2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwic3RhdGVDaGVja2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwic3RhdGVDaGVja2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiaGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cInN1Ym1pdEFjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInN1Ym1pdEFjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJEZWxldGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJoaWRkZW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY3JlZGVudGlhbElkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiY3JlZGVudGlhbElkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiY3JlZGVudGlhbC5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCIncmVtb3ZlLW1vYmlsZS0nICsgaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBmaWNvbiBwZmljb24tZGVsZXRlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGhyIC8+XG4gICAgICAgICAgICAgICAgPG9sIGlkPVwia2MtdG90cC1zZXR0aW5nc1wiPlxuICAgICAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cD57eyBpMThuLm1zZ1N0cigndG90cFN0ZXAxJykgfX08L3A+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBpZD1cImtjLXRvdHAtc3VwcG9ydGVkLWFwcHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChhcHAgb2YgdG90cC5zdXBwb3J0ZWRBcHBsaWNhdGlvbnM7IHRyYWNrIGFwcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+e3sgaTE4bi5hZHZhbmNlZE1zZ1N0cihhcHApIH19PC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKG1vZGUgJiYgbW9kZSA9PT0gJ21hbnVhbCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD57eyBpMThuLm1zZ1N0cigndG90cE1hbnVhbFN0ZXAyJykgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGlkPVwia2MtdG90cC1zZWNyZXQta2V5XCI+e3sgdG90cC50b3RwU2VjcmV0RW5jb2RlZCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaHJlZl09XCJ0b3RwLnFyVXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwibW9kZS1iYXJjb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaTE4bi5tc2dTdHIoJ3RvdHBTY2FuQmFyY29kZScpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPnt7IGkxOG4ubXNnU3RyKCd0b3RwTWFudWFsU3RlcDMnKSB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBpZD1cImtjLXRvdHAtdHlwZVwiPnt7IGkxOG4ubXNnU3RyKCd0b3RwVHlwZScpIH19OiB7eyBpMThuLm1zZ1N0cigkYW55KCd0b3RwLicgKyB0b3RwLnBvbGljeS50eXBlKSkgfX08L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgaWQ9XCJrYy10b3RwLWFsZ29yaXRobVwiPnt7IGkxOG4ubXNnU3RyKCd0b3RwQWxnb3JpdGhtJykgfX06IHt7IHRvdHAucG9saWN5LmdldEFsZ29yaXRobUtleSgpIH19PC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGlkPVwia2MtdG90cC1kaWdpdHNcIj57eyBpMThuLm1zZ1N0cigndG90cERpZ2l0cycpIH19OiB7eyB0b3RwLnBvbGljeS5kaWdpdHMgfX08L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHRvdHAucG9saWN5LnR5cGUgPT09ICd0b3RwJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGlkPVwia2MtdG90cC1wZXJpb2RcIj57eyBpMThuLm1zZ1N0cigndG90cEludGVydmFsJykgfX06IHt7IHRvdHAucG9saWN5LnBlcmlvZCB9fTwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGlkPVwia2MtdG90cC1jb3VudGVyXCI+e3sgaTE4bi5tc2dTdHIoJ3RvdHBDb3VudGVyJykgfX06IHt7IHRvdHAucG9saWN5LmluaXRpYWxDb3VudGVyIH19PC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD57eyBpMThuLm1zZ1N0cigndG90cFN0ZXAyJykgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwia2MtdG90cC1zZWNyZXQtcXItY29kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cIidkYXRhOmltYWdlL3BuZztiYXNlNjQsICcgKyB0b3RwLnRvdHBTZWNyZXRRckNvZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiRmlndXJlOiBCYXJjb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaHJlZl09XCJ0b3RwLm1hbnVhbFVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cIm1vZGUtbWFudWFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaTE4bi5tc2dTdHIoJ3RvdHBVbmFibGVUb1NjYW4nKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cD57eyBpMThuLm1zZ1N0cigndG90cFN0ZXAzJykgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cD57eyBpMThuLm1zZ1N0cigndG90cFN0ZXAzRGV2aWNlTmFtZScpIH19PC9wPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIDwvb2w+XG4gICAgICAgICAgICAgICAgPGhyIC8+XG4gICAgICAgICAgICAgICAgPGZvcm1cbiAgICAgICAgICAgICAgICAgICAgW2FjdGlvbl09XCJ1cmwudG90cFVybFwiXG4gICAgICAgICAgICAgICAgICAgIFtrY0NsYXNzXT1cIidrY0Zvcm1DbGFzcydcIlxuICAgICAgICAgICAgICAgICAgICBpZD1cImtjLXRvdHAtc2V0dGluZ3MtZm9ybVwiXG4gICAgICAgICAgICAgICAgICAgIG1ldGhvZD1cInBvc3RcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiaGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwic3RhdGVDaGVja2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJzdGF0ZUNoZWNrZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInN0YXRlQ2hlY2tlclwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW2tjQ2xhc3NdPVwiJ2tjRm9ybUdyb3VwQ2xhc3MnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTIgY29sLW1kLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yPVwidG90cFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29udHJvbC1sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpMThuLm1zZ1N0cignYXV0aGVudGljYXRvckNvZGUnKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTAgY29sLW1kLTEwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJ0b3RwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInRvdHBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvQ29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBba2NDbGFzc109XCIna2NJbnB1dENsYXNzJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJtZXNzYWdlc1BlckZpZWxkLmV4aXN0c0Vycm9yKCd0b3RwJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChtZXNzYWdlc1BlckZpZWxkLmV4aXN0c0Vycm9yKCd0b3RwJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiaW5wdXQtZXJyb3Itb3RwLWNvZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2tjQ2xhc3NdPVwiJ2tjSW5wdXRFcnJvck1lc3NhZ2VDbGFzcydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwicG9saXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwibWVzc2FnZXNQZXJGaWVsZC5nZXQoJ3RvdHAnKSB8IGtjU2FuaXRpemU6ICdodG1sJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiaGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cInRvdHBTZWNyZXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJ0b3RwU2VjcmV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwidG90cC50b3RwU2VjcmV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKG1vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwibW9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJtb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFtrY0NsYXNzXT1cIidrY0Zvcm1Hcm91cENsYXNzJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0yIGNvbC1tZC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcj1cInVzZXJMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtrY0NsYXNzXT1cIidrY0xhYmVsQ2xhc3MnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGkxOG4ubXNnU3RyKCd0b3RwRGV2aWNlTmFtZScpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHRvdHAub3RwQ3JlZGVudGlhbHMubGVuZ3RoID49IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEwIGNvbC1tZC0xMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwidXNlckxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInVzZXJMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9Db21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtrY0NsYXNzXT1cIidrY0lucHV0Q2xhc3MnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cIm1lc3NhZ2VzUGVyRmllbGQuZXhpc3RzRXJyb3IoJ3VzZXJMYWJlbCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAobWVzc2FnZXNQZXJGaWVsZC5leGlzdHNFcnJvcigndXNlckxhYmVsJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiaW5wdXQtZXJyb3Itb3RwLWxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtrY0NsYXNzXT1cIidrY0lucHV0RXJyb3JNZXNzYWdlQ2xhc3MnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGl2ZT1cInBvbGl0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cIm1lc3NhZ2VzUGVyRmllbGQuZ2V0KCd1c2VyTGFiZWwnKSB8IGtjU2FuaXRpemU6ICdodG1sJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwia2MtZm9ybS1idXR0b25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1yaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBba2NDbGFzc109XCIna2NGb3JtR3JvdXBDbGFzcydcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtrY0NsYXNzXT1cIidrY0lucHV0V3JhcHBlckNsYXNzJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2tjQ2xhc3NdPVwiWydrY0J1dHRvbkNsYXNzJywgJ2tjQnV0dG9uUHJpbWFyeUNsYXNzJywgJ2tjQnV0dG9uTGFyZ2VDbGFzcyddXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJzYXZlVE9UUEJ0blwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJpMThuLm1zZ1N0cignZG9TYXZlJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2tjQ2xhc3NdPVwiWydrY0J1dHRvbkNsYXNzJywgJ2tjQnV0dG9uRGVmYXVsdENsYXNzJywgJ2tjQnV0dG9uTGFyZ2VDbGFzcyddXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjYW5jZWxUT1RQQnRuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInN1Ym1pdEFjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwiQ2FuY2VsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGkxOG4ubXNnU3RyKCdkb0NhbmNlbCcpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwva2MtYWNjb3VudC10ZW1wbGF0ZT5cbiJdfQ==
@@ -0,0 +1,15 @@
1
+ import { type KcContextLike } from 'keycloakify/account/i18n/noJsx';
2
+ import { type ClassKey } from 'keycloakify/account/lib/kcClsx';
3
+ export type KeycloakifyAngularAccountConfig = {
4
+ doUseDefaultCss?: boolean;
5
+ classes?: {
6
+ [key in ClassKey]?: string;
7
+ };
8
+ getI18n: (params: {
9
+ kcContext: KcContextLike;
10
+ }) => {
11
+ i18n: unknown;
12
+ prI18n_currentLanguage: Promise<unknown> | undefined;
13
+ };
14
+ };
15
+ export declare const provideKeycloakifyAngularAccount: (config: KeycloakifyAngularAccountConfig) => import("@angular/core").EnvironmentProviders;
@@ -0,0 +1,48 @@
1
+ import { DOCUMENT } from '@angular/common';
2
+ import { APP_INITIALIZER, LOCALE_ID, makeEnvironmentProviders } from '@angular/core';
3
+ import { I18nService } from '../../account/services/i18n.service';
4
+ import { ACCOUNT_CLASSES } from '../../account/tokens/classes.token';
5
+ import { ACCOUNT_I18N } from '../../account/tokens/i18n.token';
6
+ import { KC_ACCOUNT_CONTEXT } from '../../account/tokens/kc-context.token';
7
+ import { USE_DEFAULT_CSS } from '../../lib/tokens/use-default-css.token';
8
+ export const provideKeycloakifyAngularAccount = (config) => makeEnvironmentProviders([
9
+ {
10
+ provide: KC_ACCOUNT_CONTEXT,
11
+ // @ts-ignore
12
+ useValue: window.kcContext
13
+ },
14
+ {
15
+ provide: LOCALE_ID,
16
+ useFactory: (document) => {
17
+ return document.documentElement.lang ?? 'en';
18
+ },
19
+ deps: [DOCUMENT]
20
+ },
21
+ {
22
+ provide: APP_INITIALIZER,
23
+ multi: true,
24
+ useFactory: (i18nService, kcContext) => async () => {
25
+ const getI18n = config.getI18n;
26
+ const { i18n, prI18n_currentLanguage } = getI18n({
27
+ kcContext
28
+ });
29
+ let i18nPromise = new Promise(resolve => resolve(i18n));
30
+ if (prI18n_currentLanguage) {
31
+ i18nPromise = prI18n_currentLanguage;
32
+ }
33
+ return i18nPromise.then(i18n => {
34
+ i18nService.i18n = i18n;
35
+ return true;
36
+ });
37
+ },
38
+ deps: [I18nService, KC_ACCOUNT_CONTEXT]
39
+ },
40
+ {
41
+ provide: ACCOUNT_I18N,
42
+ useFactory: (i18nService) => i18nService.i18n,
43
+ deps: [I18nService]
44
+ },
45
+ { provide: USE_DEFAULT_CSS, useValue: config?.doUseDefaultCss ?? true },
46
+ { provide: ACCOUNT_CLASSES, useValue: config?.classes ?? {} }
47
+ ]);
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Y2xvYWtpZnktYW5ndWxhci5wcm92aWRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZXljbG9ha2lmeS1hbmd1bGFyL3NyYy9hY2NvdW50L3Byb3ZpZGVycy9rZXljbG9ha2lmeS1hbmd1bGFyLnByb3ZpZGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUNwRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDOUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDMUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBY3hGLE1BQU0sQ0FBQyxNQUFNLGdDQUFnQyxHQUFHLENBQzVDLE1BQXVDLEVBQ3pDLEVBQUUsQ0FDQSx3QkFBd0IsQ0FBQztJQUNyQjtRQUNJLE9BQU8sRUFBRSxrQkFBa0I7UUFDM0IsYUFBYTtRQUNiLFFBQVEsRUFBRSxNQUFNLENBQUMsU0FBUztLQUM3QjtJQUNEO1FBQ0ksT0FBTyxFQUFFLFNBQVM7UUFDbEIsVUFBVSxFQUFFLENBQUMsUUFBa0IsRUFBRSxFQUFFO1lBQy9CLE9BQU8sUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDO1FBQ2pELENBQUM7UUFDRCxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUM7S0FDbkI7SUFDRDtRQUNJLE9BQU8sRUFBRSxlQUFlO1FBQ3hCLEtBQUssRUFBRSxJQUFJO1FBQ1gsVUFBVSxFQUFFLENBQUMsV0FBd0IsRUFBRSxTQUFvQixFQUFFLEVBQUUsQ0FBQyxLQUFLLElBQUksRUFBRTtZQUN2RSxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDO1lBRS9CLE1BQU0sRUFBRSxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsR0FBRyxPQUFPLENBQUM7Z0JBQzdDLFNBQVM7YUFDWixDQUFDLENBQUM7WUFDSCxJQUFJLFdBQVcsR0FBRyxJQUFJLE9BQU8sQ0FBYyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3JFLElBQUksc0JBQXNCLEVBQUUsQ0FBQztnQkFDekIsV0FBVyxHQUFHLHNCQUFzQixDQUFDO1lBQ3pDLENBQUM7WUFDRCxPQUFPLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQzNCLFdBQVcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO2dCQUN4QixPQUFPLElBQUksQ0FBQztZQUNoQixDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7UUFDRCxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsa0JBQWtCLENBQUM7S0FDMUM7SUFDRDtRQUNJLE9BQU8sRUFBRSxZQUFZO1FBQ3JCLFVBQVUsRUFBRSxDQUFDLFdBQXdCLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJO1FBQzFELElBQUksRUFBRSxDQUFDLFdBQVcsQ0FBQztLQUN0QjtJQUNELEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLGVBQWUsSUFBSSxJQUFJLEVBQUU7SUFDdkUsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsT0FBTyxJQUFJLEVBQUUsRUFBRTtDQUNoRSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBUFBfSU5JVElBTElaRVIsIExPQ0FMRV9JRCwgbWFrZUVudmlyb25tZW50UHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2FjY291bnQvc2VydmljZXMvaTE4bi5zZXJ2aWNlJztcbmltcG9ydCB7IEFDQ09VTlRfQ0xBU1NFUyB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2FjY291bnQvdG9rZW5zL2NsYXNzZXMudG9rZW4nO1xuaW1wb3J0IHsgQUNDT1VOVF9JMThOIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvYWNjb3VudC90b2tlbnMvaTE4bi50b2tlbic7XG5pbXBvcnQgeyBLQ19BQ0NPVU5UX0NPTlRFWFQgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9hY2NvdW50L3Rva2Vucy9rYy1jb250ZXh0LnRva2VuJztcbmltcG9ydCB7IFVTRV9ERUZBVUxUX0NTUyB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xpYi90b2tlbnMvdXNlLWRlZmF1bHQtY3NzLnRva2VuJztcbmltcG9ydCB7IHR5cGUgS2NDb250ZXh0TGlrZSB9IGZyb20gJ2tleWNsb2FraWZ5L2FjY291bnQvaTE4bi9ub0pzeCc7XG5pbXBvcnQgeyB0eXBlIENsYXNzS2V5IH0gZnJvbSAna2V5Y2xvYWtpZnkvYWNjb3VudC9saWIva2NDbHN4JztcbmltcG9ydCB7IHR5cGUgS2NDb250ZXh0IH0gZnJvbSAnLi4vS2NDb250ZXh0JztcblxuZXhwb3J0IHR5cGUgS2V5Y2xvYWtpZnlBbmd1bGFyQWNjb3VudENvbmZpZyA9IHtcbiAgICBkb1VzZURlZmF1bHRDc3M/OiBib29sZWFuO1xuICAgIGNsYXNzZXM/OiB7IFtrZXkgaW4gQ2xhc3NLZXldPzogc3RyaW5nIH07XG4gICAgZ2V0STE4bjogKHBhcmFtczogeyBrY0NvbnRleHQ6IEtjQ29udGV4dExpa2UgfSkgPT4ge1xuICAgICAgICBpMThuOiB1bmtub3duO1xuICAgICAgICBwckkxOG5fY3VycmVudExhbmd1YWdlOiBQcm9taXNlPHVua25vd24+IHwgdW5kZWZpbmVkO1xuICAgIH07XG59O1xuXG5leHBvcnQgY29uc3QgcHJvdmlkZUtleWNsb2FraWZ5QW5ndWxhckFjY291bnQgPSAoXG4gICAgY29uZmlnOiBLZXljbG9ha2lmeUFuZ3VsYXJBY2NvdW50Q29uZmlnXG4pID0+XG4gICAgbWFrZUVudmlyb25tZW50UHJvdmlkZXJzKFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogS0NfQUNDT1VOVF9DT05URVhULFxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgdXNlVmFsdWU6IHdpbmRvdy5rY0NvbnRleHRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTE9DQUxFX0lELFxuICAgICAgICAgICAgdXNlRmFjdG9yeTogKGRvY3VtZW50OiBEb2N1bWVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQubGFuZyA/PyAnZW4nO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRlcHM6IFtET0NVTUVOVF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxuICAgICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgICAgICB1c2VGYWN0b3J5OiAoaTE4blNlcnZpY2U6IEkxOG5TZXJ2aWNlLCBrY0NvbnRleHQ6IEtjQ29udGV4dCkgPT4gYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGdldEkxOG4gPSBjb25maWcuZ2V0STE4bjtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHsgaTE4biwgcHJJMThuX2N1cnJlbnRMYW5ndWFnZSB9ID0gZ2V0STE4bih7XG4gICAgICAgICAgICAgICAgICAgIGtjQ29udGV4dFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGxldCBpMThuUHJvbWlzZSA9IG5ldyBQcm9taXNlPHR5cGVvZiBpMThuPihyZXNvbHZlID0+IHJlc29sdmUoaTE4bikpO1xuICAgICAgICAgICAgICAgIGlmIChwckkxOG5fY3VycmVudExhbmd1YWdlKSB7XG4gICAgICAgICAgICAgICAgICAgIGkxOG5Qcm9taXNlID0gcHJJMThuX2N1cnJlbnRMYW5ndWFnZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGkxOG5Qcm9taXNlLnRoZW4oaTE4biA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGkxOG5TZXJ2aWNlLmkxOG4gPSBpMThuO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkZXBzOiBbSTE4blNlcnZpY2UsIEtDX0FDQ09VTlRfQ09OVEVYVF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogQUNDT1VOVF9JMThOLFxuICAgICAgICAgICAgdXNlRmFjdG9yeTogKGkxOG5TZXJ2aWNlOiBJMThuU2VydmljZSkgPT4gaTE4blNlcnZpY2UuaTE4bixcbiAgICAgICAgICAgIGRlcHM6IFtJMThuU2VydmljZV1cbiAgICAgICAgfSxcbiAgICAgICAgeyBwcm92aWRlOiBVU0VfREVGQVVMVF9DU1MsIHVzZVZhbHVlOiBjb25maWc/LmRvVXNlRGVmYXVsdENzcyA/PyB0cnVlIH0sXG4gICAgICAgIHsgcHJvdmlkZTogQUNDT1VOVF9DTEFTU0VTLCB1c2VWYWx1ZTogY29uZmlnPy5jbGFzc2VzID8/IHt9IH1cbiAgICBdKTtcbiJdfQ==
@@ -0,0 +1,6 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class I18nService {
3
+ i18n: unknown;
4
+ static ɵfac: i0.ɵɵFactoryDeclaration<I18nService, never>;
5
+ static ɵprov: i0.ɵɵInjectableDeclaration<I18nService>;
6
+ }
@@ -0,0 +1,12 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /** INTERNAL: DO NOT IMPORT THIS */
4
+ export class I18nService {
5
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: I18nService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
6
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: I18nService, providedIn: 'root' }); }
7
+ }
8
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: I18nService, decorators: [{
9
+ type: Injectable,
10
+ args: [{ providedIn: 'root' }]
11
+ }] });
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2V5Y2xvYWtpZnktYW5ndWxhci9zcmMvYWNjb3VudC9zZXJ2aWNlcy9pMThuLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHM0MsbUNBQW1DO0FBQ25DLE1BQU0sT0FBTyxXQUFXOzhHQUFYLFdBQVc7a0hBQVgsV0FBVyxjQUZFLE1BQU07OzJGQUVuQixXQUFXO2tCQUZ2QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbi8qKiBJTlRFUk5BTDogRE8gTk9UIElNUE9SVCBUSElTICovXG5leHBvcnQgY2xhc3MgSTE4blNlcnZpY2Uge1xuICAgIGkxOG4hOiB1bmtub3duO1xufVxuIl19
@@ -0,0 +1,10 @@
1
+ import { Script } from '../../lib/models/script.model';
2
+ import * as i0 from "@angular/core";
3
+ export declare class AccountResourceInjectorService {
4
+ private kcContext;
5
+ private resourceInjectorService;
6
+ injectResource(doUseDefaultCss?: boolean): import("rxjs").Observable<boolean>;
7
+ insertAdditionalScripts(scripts: Script[]): void;
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<AccountResourceInjectorService, never>;
9
+ static ɵprov: i0.ɵɵInjectableDeclaration<AccountResourceInjectorService>;
10
+ }
@@ -0,0 +1,37 @@
1
+ import { inject, Injectable } from '@angular/core';
2
+ import { KC_ACCOUNT_CONTEXT } from '../../account/tokens/kc-context.token';
3
+ import { ResourceInjectorService } from '../../lib/services/resource-injector.service';
4
+ import { catchError, forkJoin, of, switchMap } from 'rxjs';
5
+ import * as i0 from "@angular/core";
6
+ export class AccountResourceInjectorService {
7
+ constructor() {
8
+ this.kcContext = inject(KC_ACCOUNT_CONTEXT);
9
+ this.resourceInjectorService = inject(ResourceInjectorService);
10
+ }
11
+ injectResource(doUseDefaultCss = true) {
12
+ if (!doUseDefaultCss) {
13
+ return of(true);
14
+ }
15
+ const stylesheets = [
16
+ `${this.kcContext.url.resourcesCommonPath}/node_modules/patternfly/dist/css/patternfly.min.css`,
17
+ `${this.kcContext.url.resourcesCommonPath}/node_modules/patternfly/dist/css/patternfly-additions.min.css`,
18
+ `${this.kcContext.url.resourcesPath}/css/account.css`,
19
+ ];
20
+ return forkJoin(stylesheets.map((url) => this.resourceInjectorService.createLink(url))).pipe(switchMap(() => of(true)), catchError((error) => {
21
+ console.error('Error loading styles:', error);
22
+ return of(false);
23
+ }));
24
+ }
25
+ insertAdditionalScripts(scripts) {
26
+ scripts.map((script) => this.resourceInjectorService.createScript(script));
27
+ }
28
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: AccountResourceInjectorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
29
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: AccountResourceInjectorService, providedIn: 'root' }); }
30
+ }
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: AccountResourceInjectorService, decorators: [{
32
+ type: Injectable,
33
+ args: [{
34
+ providedIn: 'root',
35
+ }]
36
+ }] });
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UtaW5qZWN0b3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tleWNsb2FraWZ5LWFuZ3VsYXIvc3JjL2FjY291bnQvc2VydmljZXMvcmVzb3VyY2UtaW5qZWN0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUUxRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUN0RyxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQU0zRCxNQUFNLE9BQU8sOEJBQThCO0lBSDNDO1FBSVUsY0FBUyxHQUFjLE1BQU0sQ0FBWSxrQkFBa0IsQ0FBQyxDQUFDO1FBQzdELDRCQUF1QixHQUE0QixNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQztLQXdCNUY7SUF0QkMsY0FBYyxDQUFDLGVBQWUsR0FBRyxJQUFJO1FBQ25DLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNyQixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQixDQUFDO1FBQ0QsTUFBTSxXQUFXLEdBQUc7WUFDbEIsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsc0RBQXNEO1lBQy9GLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLGdFQUFnRTtZQUN6RyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGFBQWEsa0JBQWtCO1NBQ3RELENBQUM7UUFFRixPQUFPLFFBQVEsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQzFGLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsRUFDekIsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbkIsT0FBTyxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM5QyxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELHVCQUF1QixDQUFDLE9BQWlCO1FBQ3ZDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUM3RSxDQUFDOzhHQXpCVSw4QkFBOEI7a0hBQTlCLDhCQUE4QixjQUY3QixNQUFNOzsyRkFFUCw4QkFBOEI7a0JBSDFDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBLQ19BQ0NPVU5UX0NPTlRFWFQgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9hY2NvdW50L3Rva2Vucy9rYy1jb250ZXh0LnRva2VuJztcbmltcG9ydCB7IFNjcmlwdCB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xpYi9tb2RlbHMvc2NyaXB0Lm1vZGVsJztcbmltcG9ydCB7IFJlc291cmNlSW5qZWN0b3JTZXJ2aWNlIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbGliL3NlcnZpY2VzL3Jlc291cmNlLWluamVjdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZm9ya0pvaW4sIG9mLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHR5cGUgS2NDb250ZXh0IH0gZnJvbSAnLi4vS2NDb250ZXh0JztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEFjY291bnRSZXNvdXJjZUluamVjdG9yU2VydmljZSB7XG4gIHByaXZhdGUga2NDb250ZXh0OiBLY0NvbnRleHQgPSBpbmplY3Q8S2NDb250ZXh0PihLQ19BQ0NPVU5UX0NPTlRFWFQpO1xuICBwcml2YXRlIHJlc291cmNlSW5qZWN0b3JTZXJ2aWNlOiBSZXNvdXJjZUluamVjdG9yU2VydmljZSA9IGluamVjdChSZXNvdXJjZUluamVjdG9yU2VydmljZSk7XG5cbiAgaW5qZWN0UmVzb3VyY2UoZG9Vc2VEZWZhdWx0Q3NzID0gdHJ1ZSkge1xuICAgIGlmICghZG9Vc2VEZWZhdWx0Q3NzKSB7XG4gICAgICByZXR1cm4gb2YodHJ1ZSk7XG4gICAgfVxuICAgIGNvbnN0IHN0eWxlc2hlZXRzID0gW1xuICAgICAgYCR7dGhpcy5rY0NvbnRleHQudXJsLnJlc291cmNlc0NvbW1vblBhdGh9L25vZGVfbW9kdWxlcy9wYXR0ZXJuZmx5L2Rpc3QvY3NzL3BhdHRlcm5mbHkubWluLmNzc2AsXG4gICAgICBgJHt0aGlzLmtjQ29udGV4dC51cmwucmVzb3VyY2VzQ29tbW9uUGF0aH0vbm9kZV9tb2R1bGVzL3BhdHRlcm5mbHkvZGlzdC9jc3MvcGF0dGVybmZseS1hZGRpdGlvbnMubWluLmNzc2AsXG4gICAgICBgJHt0aGlzLmtjQ29udGV4dC51cmwucmVzb3VyY2VzUGF0aH0vY3NzL2FjY291bnQuY3NzYCxcbiAgICBdO1xuXG4gICAgcmV0dXJuIGZvcmtKb2luKHN0eWxlc2hlZXRzLm1hcCgodXJsKSA9PiB0aGlzLnJlc291cmNlSW5qZWN0b3JTZXJ2aWNlLmNyZWF0ZUxpbmsodXJsKSkpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gb2YodHJ1ZSkpLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgbG9hZGluZyBzdHlsZXM6JywgZXJyb3IpO1xuICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIGluc2VydEFkZGl0aW9uYWxTY3JpcHRzKHNjcmlwdHM6IFNjcmlwdFtdKSB7XG4gICAgc2NyaXB0cy5tYXAoKHNjcmlwdCkgPT4gdGhpcy5yZXNvdXJjZUluamVjdG9yU2VydmljZS5jcmVhdGVTY3JpcHQoc2NyaXB0KSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,16 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ export declare const ACCOUNT_CLASSES: InjectionToken<{
3
+ kcHtmlClass?: string | undefined;
4
+ kcBodyClass?: string | undefined;
5
+ kcButtonClass?: string | undefined;
6
+ kcButtonPrimaryClass?: string | undefined;
7
+ kcButtonLargeClass?: string | undefined;
8
+ kcButtonDefaultClass?: string | undefined;
9
+ kcContentWrapperClass?: string | undefined;
10
+ kcFormClass?: string | undefined;
11
+ kcFormGroupClass?: string | undefined;
12
+ kcInputWrapperClass?: string | undefined;
13
+ kcLabelClass?: string | undefined;
14
+ kcInputClass?: string | undefined;
15
+ kcInputErrorMessageClass?: string | undefined;
16
+ }>;
@@ -0,0 +1,3 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ export const ACCOUNT_CLASSES = new InjectionToken('account classes');
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tleWNsb2FraWZ5LWFuZ3VsYXIvc3JjL2FjY291bnQvdG9rZW5zL2NsYXNzZXMudG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvQyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsSUFBSSxjQUFjLENBQzdDLGlCQUFpQixDQUNwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHR5cGUgQ2xhc3NLZXkgfSBmcm9tICdrZXljbG9ha2lmeS9hY2NvdW50L2xpYi9rY0Nsc3gnO1xuXG5leHBvcnQgY29uc3QgQUNDT1VOVF9DTEFTU0VTID0gbmV3IEluamVjdGlvblRva2VuPHsgW2tleSBpbiBDbGFzc0tleV0/OiBzdHJpbmcgfT4oXG4gICAgJ2FjY291bnQgY2xhc3Nlcydcbik7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ export declare const ACCOUNT_I18N: InjectionToken<unknown>;
@@ -0,0 +1,3 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ export const ACCOUNT_I18N = new InjectionToken('account i18n');
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tleWNsb2FraWZ5LWFuZ3VsYXIvc3JjL2FjY291bnQvdG9rZW5zL2kxOG4udG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvQyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxjQUFjLENBQVUsY0FBYyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgQUNDT1VOVF9JMThOID0gbmV3IEluamVjdGlvblRva2VuPHVua25vd24+KCdhY2NvdW50IGkxOG4nKTtcbiJdfQ==
@@ -0,0 +1,3 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ import { type KcContext } from '../KcContext';
3
+ export declare const KC_ACCOUNT_CONTEXT: InjectionToken<KcContext>;
@@ -0,0 +1,3 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ export const KC_ACCOUNT_CONTEXT = new InjectionToken('keycloak account context');
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2MtY29udGV4dC50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tleWNsb2FraWZ5LWFuZ3VsYXIvc3JjL2FjY291bnQvdG9rZW5zL2tjLWNvbnRleHQudG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvQyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLGNBQWMsQ0FBWSwwQkFBMEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHR5cGUgS2NDb250ZXh0IH0gZnJvbSAnLi4vS2NDb250ZXh0JztcblxuZXhwb3J0IGNvbnN0IEtDX0FDQ09VTlRfQ09OVEVYVCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxLY0NvbnRleHQ+KCdrZXljbG9hayBhY2NvdW50IGNvbnRleHQnKTtcbiJdfQ==
@@ -0,0 +1,8 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class AttributesDirective {
3
+ #private;
4
+ kcAttributes: import("@angular/core").InputSignal<Record<string, string> | undefined>;
5
+ constructor();
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<AttributesDirective, never>;
7
+ static ɵdir: i0.ɵɵDirectiveDeclaration<AttributesDirective, "[kcAttributes]", never, { "kcAttributes": { "alias": "kcAttributes"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
8
+ }
@@ -0,0 +1,26 @@
1
+ import { Directive, effect, ElementRef, inject, input, Renderer2 } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class AttributesDirective {
4
+ #el;
5
+ #renderer;
6
+ constructor() {
7
+ this.kcAttributes = input();
8
+ this.#el = inject(ElementRef);
9
+ this.#renderer = inject(Renderer2);
10
+ effect(() => {
11
+ const attributes = this.kcAttributes();
12
+ if (attributes) {
13
+ Object.entries(attributes).forEach(([key, value]) => {
14
+ this.#renderer.setAttribute(this.#el.nativeElement, `data-${key}`, value);
15
+ });
16
+ }
17
+ });
18
+ }
19
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: AttributesDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
20
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.6", type: AttributesDirective, isStandalone: true, selector: "[kcAttributes]", inputs: { kcAttributes: { classPropertyName: "kcAttributes", publicName: "kcAttributes", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
21
+ }
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: AttributesDirective, decorators: [{
23
+ type: Directive,
24
+ args: [{ selector: '[kcAttributes]', standalone: true }]
25
+ }], ctorParameters: () => [] });
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlcy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZXljbG9ha2lmeS1hbmd1bGFyL3NyYy9saWIvZGlyZWN0aXZlcy9hdHRyaWJ1dGVzLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBR3hGLE1BQU0sT0FBTyxtQkFBbUI7SUFFbkIsR0FBRyxDQUErQztJQUNsRCxTQUFTLENBQXFCO0lBRXZDO1FBSkEsaUJBQVksR0FBRyxLQUFLLEVBQTBCLENBQUM7UUFDdEMsUUFBRyxHQUFHLE1BQU0sQ0FBMEIsVUFBVSxDQUFDLENBQUM7UUFDbEQsY0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUduQyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1IsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3ZDLElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQ2IsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO29CQUNoRCxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FDdkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQ3RCLFFBQVEsR0FBRyxFQUFFLEVBQ2IsS0FBSyxDQUNSLENBQUM7Z0JBQ04sQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzhHQWxCUSxtQkFBbUI7a0dBQW5CLG1CQUFtQjs7MkZBQW5CLG1CQUFtQjtrQkFEL0IsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBlZmZlY3QsIEVsZW1lbnRSZWYsIGluamVjdCwgaW5wdXQsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdba2NBdHRyaWJ1dGVzXScsIHN0YW5kYWxvbmU6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBBdHRyaWJ1dGVzRGlyZWN0aXZlIHtcbiAgICBrY0F0dHJpYnV0ZXMgPSBpbnB1dDxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PigpO1xuICAgIHJlYWRvbmx5ICNlbCA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG4gICAgcmVhZG9ubHkgI3JlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSB0aGlzLmtjQXR0cmlidXRlcygpO1xuICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgICAgICBPYmplY3QuZW50cmllcyhhdHRyaWJ1dGVzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4jcmVuZGVyZXIuc2V0QXR0cmlidXRlKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4jZWwubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGBkYXRhLSR7a2V5fWAsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=script.model.js.map
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyaXB0Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2V5Y2xvYWtpZnktYW5ndWxhci9zcmMvbGliL21vZGVscy9zY3JpcHQubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIFNjcmlwdCA9IHtcbiAgICB0eXBlOiBzdHJpbmc7XG4gICAgaWQ6IHN0cmluZztcbiAgICBzcmM/OiBzdHJpbmc7XG4gICAgdGV4dENvbnRlbnQ/OiBzdHJpbmc7XG59O1xuIl19
@@ -0,0 +1,7 @@
1
+ import { PipeTransform } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class InputTypePipe implements PipeTransform {
4
+ transform(inputType?: string): string;
5
+ static ɵfac: i0.ɵɵFactoryDeclaration<InputTypePipe, never>;
6
+ static ɵpipe: i0.ɵɵPipeDeclaration<InputTypePipe, "inputType", true>;
7
+ }
@@ -0,0 +1,20 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class InputTypePipe {
4
+ transform(inputType) {
5
+ if (inputType?.startsWith('html5-')) {
6
+ return inputType.slice(6);
7
+ }
8
+ return inputType ?? 'text';
9
+ }
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: InputTypePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
11
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: InputTypePipe, isStandalone: true, name: "inputType" }); }
12
+ }
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: InputTypePipe, decorators: [{
14
+ type: Pipe,
15
+ args: [{
16
+ name: 'inputType',
17
+ standalone: true
18
+ }]
19
+ }] });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtdHlwZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2V5Y2xvYWtpZnktYW5ndWxhci9zcmMvbGliL3BpcGVzL2lucHV0LXR5cGUucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7QUFNcEQsTUFBTSxPQUFPLGFBQWE7SUFDdEIsU0FBUyxDQUFDLFNBQWtCO1FBQ3hCLElBQUksU0FBUyxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ2xDLE9BQU8sU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5QixDQUFDO1FBRUQsT0FBTyxTQUFTLElBQUksTUFBTSxDQUFDO0lBQy9CLENBQUM7OEdBUFEsYUFBYTs0R0FBYixhQUFhOzsyRkFBYixhQUFhO2tCQUp6QixJQUFJO21CQUFDO29CQUNGLElBQUksRUFBRSxXQUFXO29CQUNqQixVQUFVLEVBQUUsSUFBSTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBQaXBlKHtcbiAgICBuYW1lOiAnaW5wdXRUeXBlJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElucHV0VHlwZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICB0cmFuc2Zvcm0oaW5wdXRUeXBlPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKGlucHV0VHlwZT8uc3RhcnRzV2l0aCgnaHRtbDUtJykpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dFR5cGUuc2xpY2UoNik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaW5wdXRUeXBlID8/ICd0ZXh0JztcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,7 @@
1
+ import { PipeTransform } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class IsArrayWithEmptyObjectPipe implements PipeTransform {
4
+ transform(variable: unknown): boolean;
5
+ static ɵfac: i0.ɵɵFactoryDeclaration<IsArrayWithEmptyObjectPipe, never>;
6
+ static ɵpipe: i0.ɵɵPipeDeclaration<IsArrayWithEmptyObjectPipe, "isArrayWithEmptyObject", true>;
7
+ }
@@ -0,0 +1,20 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class IsArrayWithEmptyObjectPipe {
4
+ transform(variable) {
5
+ return (Array.isArray(variable) &&
6
+ variable.length === 1 &&
7
+ typeof variable[0] === 'object' &&
8
+ Object.keys(variable[0]).length === 0);
9
+ }
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: IsArrayWithEmptyObjectPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
11
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: IsArrayWithEmptyObjectPipe, isStandalone: true, name: "isArrayWithEmptyObject" }); }
12
+ }
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: IsArrayWithEmptyObjectPipe, decorators: [{
14
+ type: Pipe,
15
+ args: [{
16
+ name: 'isArrayWithEmptyObject',
17
+ standalone: true,
18
+ }]
19
+ }] });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtYXJyYXktd2l0aC1lbXB0eS1vYmplY3QucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tleWNsb2FraWZ5LWFuZ3VsYXIvc3JjL2xpYi9waXBlcy9pcy1hcnJheS13aXRoLWVtcHR5LW9iamVjdC5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQU1wRCxNQUFNLE9BQU8sMEJBQTBCO0lBQ3JDLFNBQVMsQ0FBQyxRQUFpQjtRQUN6QixPQUFPLENBQ0wsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7WUFDdkIsUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQ3JCLE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVE7WUFDL0IsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUN0QyxDQUFDO0lBQ0osQ0FBQzs4R0FSVSwwQkFBMEI7NEdBQTFCLDBCQUEwQjs7MkZBQTFCLDBCQUEwQjtrQkFKdEMsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsd0JBQXdCO29CQUM5QixVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ2lzQXJyYXlXaXRoRW1wdHlPYmplY3QnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBJc0FycmF5V2l0aEVtcHR5T2JqZWN0UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0odmFyaWFibGU6IHVua25vd24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgQXJyYXkuaXNBcnJheSh2YXJpYWJsZSkgJiZcbiAgICAgIHZhcmlhYmxlLmxlbmd0aCA9PT0gMSAmJlxuICAgICAgdHlwZW9mIHZhcmlhYmxlWzBdID09PSAnb2JqZWN0JyAmJlxuICAgICAgT2JqZWN0LmtleXModmFyaWFibGVbMF0pLmxlbmd0aCA9PT0gMFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,9 @@
1
+ import { PipeTransform } from '@angular/core';
2
+ import { SafeHtml, SafeResourceUrl, SafeScript, SafeStyle, SafeUrl } from '@angular/platform-browser';
3
+ import * as i0 from "@angular/core";
4
+ export declare class KcSanitizePipe implements PipeTransform {
5
+ #private;
6
+ transform(value: string, type: 'html' | 'style' | 'script' | 'url' | 'resourceUrl'): SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl;
7
+ static ɵfac: i0.ɵɵFactoryDeclaration<KcSanitizePipe, never>;
8
+ static ɵpipe: i0.ɵɵPipeDeclaration<KcSanitizePipe, "kcSanitize", true>;
9
+ }
@@ -0,0 +1,29 @@
1
+ import { inject, Pipe } from '@angular/core';
2
+ import { DomSanitizer } from '@angular/platform-browser';
3
+ import * as i0 from "@angular/core";
4
+ export class KcSanitizePipe {
5
+ #sanitizer = inject(DomSanitizer);
6
+ transform(value, type) {
7
+ switch (type) {
8
+ case 'html':
9
+ return this.#sanitizer.bypassSecurityTrustHtml(value);
10
+ case 'style':
11
+ return this.#sanitizer.bypassSecurityTrustStyle(value);
12
+ case 'script':
13
+ return this.#sanitizer.bypassSecurityTrustScript(value);
14
+ case 'url':
15
+ return this.#sanitizer.bypassSecurityTrustUrl(value);
16
+ case 'resourceUrl':
17
+ return this.#sanitizer.bypassSecurityTrustResourceUrl(value);
18
+ default:
19
+ throw new Error(`Invalid safe type specified: ${type}`);
20
+ }
21
+ }
22
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KcSanitizePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
23
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: KcSanitizePipe, isStandalone: true, name: "kcSanitize" }); }
24
+ }
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KcSanitizePipe, decorators: [{
26
+ type: Pipe,
27
+ args: [{ name: 'kcSanitize', standalone: true }]
28
+ }] });
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2Mtc2FuaXRpemUucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tleWNsb2FraWZ5LWFuZ3VsYXIvc3JjL2xpYi9waXBlcy9rYy1zYW5pdGl6ZS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQ0gsWUFBWSxFQU1mLE1BQU0sMkJBQTJCLENBQUM7O0FBR25DLE1BQU0sT0FBTyxjQUFjO0lBQ3ZCLFVBQVUsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFFbEMsU0FBUyxDQUNMLEtBQWEsRUFDYixJQUF5RDtRQUV6RCxRQUFRLElBQUksRUFBRSxDQUFDO1lBQ1gsS0FBSyxNQUFNO2dCQUNQLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxRCxLQUFLLE9BQU87Z0JBQ1IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNELEtBQUssUUFBUTtnQkFDVCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMseUJBQXlCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUQsS0FBSyxLQUFLO2dCQUNOLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6RCxLQUFLLGFBQWE7Z0JBQ2QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLDhCQUE4QixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pFO2dCQUNJLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDaEUsQ0FBQztJQUNMLENBQUM7OEdBckJRLGNBQWM7NEdBQWQsY0FBYzs7MkZBQWQsY0FBYztrQkFEMUIsSUFBSTttQkFBQyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBEb21TYW5pdGl6ZXIsXG4gICAgU2FmZUh0bWwsXG4gICAgU2FmZVJlc291cmNlVXJsLFxuICAgIFNhZmVTY3JpcHQsXG4gICAgU2FmZVN0eWxlLFxuICAgIFNhZmVVcmxcbn0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbkBQaXBlKHsgbmFtZTogJ2tjU2FuaXRpemUnLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgS2NTYW5pdGl6ZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICAjc2FuaXRpemVyID0gaW5qZWN0KERvbVNhbml0aXplcik7XG5cbiAgICB0cmFuc2Zvcm0oXG4gICAgICAgIHZhbHVlOiBzdHJpbmcsXG4gICAgICAgIHR5cGU6ICdodG1sJyB8ICdzdHlsZScgfCAnc2NyaXB0JyB8ICd1cmwnIHwgJ3Jlc291cmNlVXJsJ1xuICAgICk6IFNhZmVIdG1sIHwgU2FmZVN0eWxlIHwgU2FmZVNjcmlwdCB8IFNhZmVVcmwgfCBTYWZlUmVzb3VyY2VVcmwge1xuICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2h0bWwnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiNzYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwodmFsdWUpO1xuICAgICAgICAgICAgY2FzZSAnc3R5bGUnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiNzYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFN0eWxlKHZhbHVlKTtcbiAgICAgICAgICAgIGNhc2UgJ3NjcmlwdCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuI3Nhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0U2NyaXB0KHZhbHVlKTtcbiAgICAgICAgICAgIGNhc2UgJ3VybCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuI3Nhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0VXJsKHZhbHVlKTtcbiAgICAgICAgICAgIGNhc2UgJ3Jlc291cmNlVXJsJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4jc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh2YWx1ZSk7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBzYWZlIHR5cGUgc3BlY2lmaWVkOiAke3R5cGV9YCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,7 @@
1
+ import { PipeTransform } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class ToArrayPipe implements PipeTransform {
4
+ transform(value: string | string[], emptyWhenString?: boolean): string[];
5
+ static ɵfac: i0.ɵɵFactoryDeclaration<ToArrayPipe, never>;
6
+ static ɵpipe: i0.ɵɵPipeDeclaration<ToArrayPipe, "toArray", true>;
7
+ }
@@ -0,0 +1,21 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class ToArrayPipe {
4
+ transform(value, emptyWhenString = false) {
5
+ // if (!value) throw new Error('must pass a value');
6
+ if (value instanceof Array) {
7
+ return value;
8
+ }
9
+ return emptyWhenString ? [] : [value];
10
+ }
11
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ToArrayPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
12
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: ToArrayPipe, isStandalone: true, name: "toArray" }); }
13
+ }
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ToArrayPipe, decorators: [{
15
+ type: Pipe,
16
+ args: [{
17
+ name: 'toArray',
18
+ standalone: true,
19
+ }]
20
+ }] });
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG8tYXJyYXkucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tleWNsb2FraWZ5LWFuZ3VsYXIvc3JjL2xpYi9waXBlcy90by1hcnJheS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQU1wRCxNQUFNLE9BQU8sV0FBVztJQUN0QixTQUFTLENBQUMsS0FBd0IsRUFBRSxlQUFlLEdBQUcsS0FBSztRQUN6RCxvREFBb0Q7UUFDcEQsSUFBSSxLQUFLLFlBQVksS0FBSyxFQUFFLENBQUM7WUFDM0IsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsT0FBTyxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxDQUFDOzhHQVBVLFdBQVc7NEdBQVgsV0FBVzs7MkZBQVgsV0FBVztrQkFKdkIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsU0FBUztvQkFDZixVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ3RvQXJyYXknLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBUb0FycmF5UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0odmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdLCBlbXB0eVdoZW5TdHJpbmcgPSBmYWxzZSk6IHN0cmluZ1tdIHtcbiAgICAvLyBpZiAoIXZhbHVlKSB0aHJvdyBuZXcgRXJyb3IoJ211c3QgcGFzcyBhIHZhbHVlJyk7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGVtcHR5V2hlblN0cmluZyA/IFtdIDogW3ZhbHVlXTtcbiAgfVxufVxuIl19
@@ -0,0 +1,7 @@
1
+ import { PipeTransform } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class ToNumberPipe implements PipeTransform {
4
+ transform(value: string | number): number;
5
+ static ɵfac: i0.ɵɵFactoryDeclaration<ToNumberPipe, never>;
6
+ static ɵpipe: i0.ɵɵPipeDeclaration<ToNumberPipe, "toNumber", true>;
7
+ }
@@ -0,0 +1,20 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class ToNumberPipe {
4
+ transform(value) {
5
+ const number = parseInt(`${value}`);
6
+ if (isNaN(number))
7
+ throw new Error('number is NaN');
8
+ return number;
9
+ }
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ToNumberPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
11
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: ToNumberPipe, isStandalone: true, name: "toNumber" }); }
12
+ }
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ToNumberPipe, decorators: [{
14
+ type: Pipe,
15
+ args: [{
16
+ name: 'toNumber',
17
+ standalone: true,
18
+ }]
19
+ }] });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG8tbnVtYmVyLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZXljbG9ha2lmeS1hbmd1bGFyL3NyYy9saWIvcGlwZXMvdG8tbnVtYmVyLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBTXBELE1BQU0sT0FBTyxZQUFZO0lBQ3ZCLFNBQVMsQ0FBQyxLQUFzQjtRQUM5QixNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3BDLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDcEQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzs4R0FMVSxZQUFZOzRHQUFaLFlBQVk7OzJGQUFaLFlBQVk7a0JBSnhCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLFVBQVU7b0JBQ2hCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQFBpcGUoe1xuICBuYW1lOiAndG9OdW1iZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBUb051bWJlclBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgdHJhbnNmb3JtKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IG51bWJlciA9IHBhcnNlSW50KGAke3ZhbHVlfWApO1xuICAgIGlmIChpc05hTihudW1iZXIpKSB0aHJvdyBuZXcgRXJyb3IoJ251bWJlciBpcyBOYU4nKTtcbiAgICByZXR1cm4gbnVtYmVyO1xuICB9XG59XG4iXX0=
@@ -1,7 +1,10 @@
1
- import { Observable } from "rxjs";
2
- import { Script } from "../models/script.model";
1
+ import { Observable } from 'rxjs';
2
+ import { Script } from '../models/script.model';
3
+ import * as i0 from "@angular/core";
3
4
  export declare class ResourceInjectorService {
4
5
  private renderer;
5
6
  createLink(url: string): Observable<void>;
6
7
  createScript({ type, id, src, textContent }: Script): void;
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<ResourceInjectorService, never>;
9
+ static ɵprov: i0.ɵɵInjectableDeclaration<ResourceInjectorService>;
7
10
  }