@bravura/ui 3.8.1 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (276) hide show
  1. package/CHANGELOG.md +585 -565
  2. package/LICENSE +6 -6
  3. package/README.md +3 -1
  4. package/alert/alert-container.component.d.ts +1 -1
  5. package/alert/alert-message.component.d.ts +1 -1
  6. package/behavior/await.directive.d.ts +1 -1
  7. package/behavior/observe-content-class.directive.d.ts +1 -1
  8. package/behavior/sizing.directive.d.ts +1 -1
  9. package/clip-note/clip-note.directive.d.ts +1 -1
  10. package/currency-input/currency-input.directive.d.ts +1 -1
  11. package/decimal-input/decimal-input.directive.d.ts +1 -1
  12. package/discrete-input/discrete-input.component.d.ts +1 -1
  13. package/esm2022/alert/alert-container.component.mjs +207 -0
  14. package/esm2022/alert/alert-message.component.mjs +101 -0
  15. package/esm2022/alert/alert.module.mjs +22 -0
  16. package/{esm2020 → esm2022}/alert/public-api.mjs +1 -1
  17. package/esm2022/alert/testing/test-api.mjs +44 -0
  18. package/esm2022/behavior/await.directive.mjs +133 -0
  19. package/esm2022/behavior/behavior.module.mjs +37 -0
  20. package/esm2022/behavior/observe-content-class.directive.mjs +63 -0
  21. package/{esm2020 → esm2022}/behavior/public-api.mjs +1 -1
  22. package/esm2022/behavior/sizing-monitor.directive.mjs +31 -0
  23. package/esm2022/behavior/sizing.directive.mjs +256 -0
  24. package/esm2022/clip-note/clip-note.component.mjs +216 -0
  25. package/esm2022/clip-note/clip-note.directive.mjs +141 -0
  26. package/esm2022/clip-note/clip-note.module.mjs +32 -0
  27. package/{esm2020 → esm2022}/clip-note/public-api.mjs +1 -1
  28. package/{esm2020 → esm2022}/common/common-utils.mjs +1 -1
  29. package/esm2022/common/common.module.mjs +53 -0
  30. package/{esm2020 → esm2022}/common/public-api.mjs +1 -1
  31. package/esm2022/currency-input/currency-input.directive.mjs +276 -0
  32. package/esm2022/currency-input/currency-input.module.mjs +19 -0
  33. package/{esm2020 → esm2022}/currency-input/public-api.mjs +1 -1
  34. package/esm2022/decimal-input/decimal-input.directive.mjs +122 -0
  35. package/{esm2020 → esm2022}/decimal-input/decimal-input.module.mjs +5 -5
  36. package/esm2022/discrete-input/discrete-input.component.mjs +337 -0
  37. package/esm2022/discrete-input/discrete-input.module.mjs +21 -0
  38. package/{esm2020 → esm2022}/discrete-input/public-api.mjs +1 -1
  39. package/esm2022/file-upload/file-upload.component.mjs +400 -0
  40. package/esm2022/file-upload/file-upload.module.mjs +44 -0
  41. package/esm2022/file-upload/file-upload.service.mjs +29 -0
  42. package/{esm2020 → esm2022}/file-upload/public-api.mjs +1 -1
  43. package/esm2022/form-field/form-field.component.mjs +82 -0
  44. package/esm2022/form-field/form-field.module.mjs +33 -0
  45. package/{esm2020 → esm2022}/form-field/public-api.mjs +1 -1
  46. package/esm2022/icon-font/icon-font.module.mjs +22 -0
  47. package/esm2022/icon-font/icon.directive.mjs +102 -0
  48. package/{esm2020 → esm2022}/icon-font/public-api.mjs +1 -1
  49. package/esm2022/icon-font/utilities.mjs +51 -0
  50. package/esm2022/panel/panel-section.component.mjs +41 -0
  51. package/esm2022/panel/panel.component.mjs +87 -0
  52. package/esm2022/panel/panel.module.mjs +23 -0
  53. package/{esm2020 → esm2022}/panel/public-api.mjs +1 -1
  54. package/esm2022/panel/tinted.directive.mjs +60 -0
  55. package/esm2022/phone-number/phone-number.directive.mjs +188 -0
  56. package/{esm2020 → esm2022}/phone-number/phone-number.module.mjs +5 -5
  57. package/esm2022/phone-number/phone-number.pipe.mjs +47 -0
  58. package/esm2022/phone-number/phone-number.validator.mjs +64 -0
  59. package/{esm2020 → esm2022}/phone-number/public-api.mjs +1 -1
  60. package/{esm2020 → esm2022}/public-api.mjs +1 -1
  61. package/esm2022/radio-panel/radio-panel-item.component.mjs +93 -0
  62. package/esm2022/radio-panel/radio-panel.component.mjs +81 -0
  63. package/{esm2020 → esm2022}/radio-panel/radio-panel.module.mjs +5 -5
  64. package/esm2022/radio-panel/testing/test-api.mjs +46 -0
  65. package/{esm2020 → esm2022}/selection-panel/public-api.mjs +1 -1
  66. package/esm2022/selection-panel/selection-panel-item.component.mjs +166 -0
  67. package/esm2022/selection-panel/selection-panel.directive.mjs +119 -0
  68. package/esm2022/selection-panel/selection-panel.module.mjs +23 -0
  69. package/{esm2020 → esm2022}/skeletons/public-api.mjs +1 -1
  70. package/esm2022/skeletons/skeleton-loader-presets.directive.mjs +83 -0
  71. package/esm2022/skeletons/skeleton-loader.component.mjs +76 -0
  72. package/esm2022/skeletons/skeletons.module.mjs +35 -0
  73. package/{esm2020 → esm2022}/stepper/public-api.mjs +1 -1
  74. package/{esm2020 → esm2022}/stepper/stepper-animation.mjs +1 -1
  75. package/esm2022/stepper/stepper.component.mjs +176 -0
  76. package/esm2022/stepper/stepper.module.mjs +52 -0
  77. package/{esm2020 → esm2022}/tooltip/public-api.mjs +1 -1
  78. package/esm2022/tooltip/tooltip.component.mjs +63 -0
  79. package/esm2022/tooltip/tooltip.directive.mjs +148 -0
  80. package/esm2022/tooltip/tooltip.module.mjs +25 -0
  81. package/{fesm2020 → fesm2022}/bravura-ui-alert-testing.mjs +2 -2
  82. package/fesm2022/bravura-ui-alert-testing.mjs.map +1 -0
  83. package/fesm2022/bravura-ui-alert.mjs +327 -0
  84. package/fesm2022/bravura-ui-alert.mjs.map +1 -0
  85. package/{fesm2020 → fesm2022}/bravura-ui-behavior.mjs +45 -45
  86. package/fesm2022/bravura-ui-behavior.mjs.map +1 -0
  87. package/{fesm2020 → fesm2022}/bravura-ui-clip-note.mjs +70 -70
  88. package/fesm2022/bravura-ui-clip-note.mjs.map +1 -0
  89. package/{fesm2020 → fesm2022}/bravura-ui-common.mjs +6 -6
  90. package/fesm2022/bravura-ui-common.mjs.map +1 -0
  91. package/{fesm2020 → fesm2022}/bravura-ui-currency-input.mjs +11 -11
  92. package/fesm2022/bravura-ui-currency-input.mjs.map +1 -0
  93. package/{fesm2020 → fesm2022}/bravura-ui-decimal-input.mjs +12 -12
  94. package/fesm2022/bravura-ui-decimal-input.mjs.map +1 -0
  95. package/{fesm2020 → fesm2022}/bravura-ui-discrete-input.mjs +48 -48
  96. package/fesm2022/bravura-ui-discrete-input.mjs.map +1 -0
  97. package/fesm2022/bravura-ui-file-upload.mjs +474 -0
  98. package/fesm2022/bravura-ui-file-upload.mjs.map +1 -0
  99. package/{fesm2020 → fesm2022}/bravura-ui-form-field.mjs +19 -19
  100. package/fesm2022/bravura-ui-form-field.mjs.map +1 -0
  101. package/{fesm2020 → fesm2022}/bravura-ui-icon-font.mjs +8 -8
  102. package/fesm2022/bravura-ui-icon-font.mjs.map +1 -0
  103. package/fesm2022/bravura-ui-panel.mjs +206 -0
  104. package/fesm2022/bravura-ui-panel.mjs.map +1 -0
  105. package/{fesm2020 → fesm2022}/bravura-ui-phone-number.mjs +30 -30
  106. package/fesm2022/bravura-ui-phone-number.mjs.map +1 -0
  107. package/{fesm2020 → fesm2022}/bravura-ui-radio-panel-testing.mjs +5 -6
  108. package/fesm2022/bravura-ui-radio-panel-testing.mjs.map +1 -0
  109. package/{fesm2020 → fesm2022}/bravura-ui-radio-panel.mjs +32 -32
  110. package/fesm2022/bravura-ui-radio-panel.mjs.map +1 -0
  111. package/fesm2022/bravura-ui-selection-panel.mjs +306 -0
  112. package/fesm2022/bravura-ui-selection-panel.mjs.map +1 -0
  113. package/{fesm2020 → fesm2022}/bravura-ui-skeletons.mjs +43 -43
  114. package/fesm2022/bravura-ui-skeletons.mjs.map +1 -0
  115. package/fesm2022/bravura-ui-stepper.mjs +251 -0
  116. package/fesm2022/bravura-ui-stepper.mjs.map +1 -0
  117. package/{fesm2020 → fesm2022}/bravura-ui-tooltip.mjs +32 -24
  118. package/fesm2022/bravura-ui-tooltip.mjs.map +1 -0
  119. package/fesm2022/bravura-ui.mjs.map +1 -0
  120. package/file-upload/file-upload.component.d.ts +1 -1
  121. package/form-field/form-field.component.d.ts +1 -1
  122. package/icon-font/icon.directive.d.ts +1 -1
  123. package/package.json +88 -132
  124. package/panel/panel.component.d.ts +1 -1
  125. package/panel/tinted.directive.d.ts +1 -1
  126. package/phone-number/phone-number.directive.d.ts +1 -1
  127. package/phone-number/phone-number.validator.d.ts +2 -2
  128. package/radio-panel/radio-panel-item.component.d.ts +1 -1
  129. package/radio-panel/radio-panel.component.d.ts +1 -1
  130. package/radio-panel/testing/test-api.d.ts +2 -3
  131. package/selection-panel/selection-panel-item.component.d.ts +1 -1
  132. package/selection-panel/selection-panel.directive.d.ts +1 -1
  133. package/skeletons/skeleton-loader-presets.directive.d.ts +3 -3
  134. package/stepper/stepper.component.d.ts +1 -1
  135. package/theme/_bui-card.scss +56 -56
  136. package/theme/_ui-theme.scss +3 -3
  137. package/theme/global-style-by-bootstrap.scss +3 -3
  138. package/theme/global-style-by-tailwind.scss +3 -3
  139. package/theme/scrollbar.scss +40 -40
  140. package/tooltip/tooltip.component.d.ts +2 -0
  141. package/tooltip/tooltip.directive.d.ts +3 -5
  142. package/esm2020/alert/alert-container.component.mjs +0 -207
  143. package/esm2020/alert/alert-message.component.mjs +0 -102
  144. package/esm2020/alert/alert.module.mjs +0 -22
  145. package/esm2020/alert/testing/test-api.mjs +0 -44
  146. package/esm2020/behavior/await.directive.mjs +0 -133
  147. package/esm2020/behavior/behavior.module.mjs +0 -37
  148. package/esm2020/behavior/observe-content-class.directive.mjs +0 -63
  149. package/esm2020/behavior/sizing-monitor.directive.mjs +0 -31
  150. package/esm2020/behavior/sizing.directive.mjs +0 -256
  151. package/esm2020/clip-note/clip-note.component.mjs +0 -216
  152. package/esm2020/clip-note/clip-note.directive.mjs +0 -141
  153. package/esm2020/clip-note/clip-note.module.mjs +0 -32
  154. package/esm2020/common/common.module.mjs +0 -53
  155. package/esm2020/currency-input/currency-input.directive.mjs +0 -276
  156. package/esm2020/currency-input/currency-input.module.mjs +0 -19
  157. package/esm2020/decimal-input/decimal-input.directive.mjs +0 -122
  158. package/esm2020/discrete-input/discrete-input.component.mjs +0 -337
  159. package/esm2020/discrete-input/discrete-input.module.mjs +0 -21
  160. package/esm2020/file-upload/file-upload.component.mjs +0 -400
  161. package/esm2020/file-upload/file-upload.module.mjs +0 -44
  162. package/esm2020/file-upload/file-upload.service.mjs +0 -29
  163. package/esm2020/form-field/form-field.component.mjs +0 -82
  164. package/esm2020/form-field/form-field.module.mjs +0 -33
  165. package/esm2020/icon-font/icon-font.module.mjs +0 -22
  166. package/esm2020/icon-font/icon.directive.mjs +0 -102
  167. package/esm2020/icon-font/utilities.mjs +0 -51
  168. package/esm2020/panel/panel-section.component.mjs +0 -41
  169. package/esm2020/panel/panel.component.mjs +0 -87
  170. package/esm2020/panel/panel.module.mjs +0 -23
  171. package/esm2020/panel/tinted.directive.mjs +0 -60
  172. package/esm2020/phone-number/phone-number.directive.mjs +0 -188
  173. package/esm2020/phone-number/phone-number.pipe.mjs +0 -47
  174. package/esm2020/phone-number/phone-number.validator.mjs +0 -64
  175. package/esm2020/radio-panel/radio-panel-item.component.mjs +0 -93
  176. package/esm2020/radio-panel/radio-panel.component.mjs +0 -81
  177. package/esm2020/radio-panel/testing/test-api.mjs +0 -47
  178. package/esm2020/selection-panel/selection-panel-item.component.mjs +0 -166
  179. package/esm2020/selection-panel/selection-panel.directive.mjs +0 -119
  180. package/esm2020/selection-panel/selection-panel.module.mjs +0 -23
  181. package/esm2020/skeletons/skeleton-loader-presets.directive.mjs +0 -83
  182. package/esm2020/skeletons/skeleton-loader.component.mjs +0 -76
  183. package/esm2020/skeletons/skeletons.module.mjs +0 -35
  184. package/esm2020/stepper/stepper.component.mjs +0 -176
  185. package/esm2020/stepper/stepper.module.mjs +0 -52
  186. package/esm2020/tooltip/tooltip.component.mjs +0 -54
  187. package/esm2020/tooltip/tooltip.directive.mjs +0 -149
  188. package/esm2020/tooltip/tooltip.module.mjs +0 -25
  189. package/fesm2015/bravura-ui-alert-testing.mjs +0 -64
  190. package/fesm2015/bravura-ui-alert-testing.mjs.map +0 -1
  191. package/fesm2015/bravura-ui-alert.mjs +0 -340
  192. package/fesm2015/bravura-ui-alert.mjs.map +0 -1
  193. package/fesm2015/bravura-ui-behavior.mjs +0 -515
  194. package/fesm2015/bravura-ui-behavior.mjs.map +0 -1
  195. package/fesm2015/bravura-ui-clip-note.mjs +0 -393
  196. package/fesm2015/bravura-ui-clip-note.mjs.map +0 -1
  197. package/fesm2015/bravura-ui-common.mjs +0 -96
  198. package/fesm2015/bravura-ui-common.mjs.map +0 -1
  199. package/fesm2015/bravura-ui-currency-input.mjs +0 -300
  200. package/fesm2015/bravura-ui-currency-input.mjs.map +0 -1
  201. package/fesm2015/bravura-ui-decimal-input.mjs +0 -145
  202. package/fesm2015/bravura-ui-decimal-input.mjs.map +0 -1
  203. package/fesm2015/bravura-ui-discrete-input.mjs +0 -365
  204. package/fesm2015/bravura-ui-discrete-input.mjs.map +0 -1
  205. package/fesm2015/bravura-ui-file-upload.mjs +0 -478
  206. package/fesm2015/bravura-ui-file-upload.mjs.map +0 -1
  207. package/fesm2015/bravura-ui-form-field.mjs +0 -120
  208. package/fesm2015/bravura-ui-form-field.mjs.map +0 -1
  209. package/fesm2015/bravura-ui-icon-font.mjs +0 -178
  210. package/fesm2015/bravura-ui-icon-font.mjs.map +0 -1
  211. package/fesm2015/bravura-ui-panel.mjs +0 -210
  212. package/fesm2015/bravura-ui-panel.mjs.map +0 -1
  213. package/fesm2015/bravura-ui-phone-number.mjs +0 -327
  214. package/fesm2015/bravura-ui-phone-number.mjs.map +0 -1
  215. package/fesm2015/bravura-ui-radio-panel-testing.mjs +0 -63
  216. package/fesm2015/bravura-ui-radio-panel-testing.mjs.map +0 -1
  217. package/fesm2015/bravura-ui-radio-panel.mjs +0 -200
  218. package/fesm2015/bravura-ui-radio-panel.mjs.map +0 -1
  219. package/fesm2015/bravura-ui-selection-panel.mjs +0 -311
  220. package/fesm2015/bravura-ui-selection-panel.mjs.map +0 -1
  221. package/fesm2015/bravura-ui-skeletons.mjs +0 -195
  222. package/fesm2015/bravura-ui-skeletons.mjs.map +0 -1
  223. package/fesm2015/bravura-ui-stepper.mjs +0 -253
  224. package/fesm2015/bravura-ui-stepper.mjs.map +0 -1
  225. package/fesm2015/bravura-ui-tooltip.mjs +0 -229
  226. package/fesm2015/bravura-ui-tooltip.mjs.map +0 -1
  227. package/fesm2015/bravura-ui.mjs.map +0 -1
  228. package/fesm2020/bravura-ui-alert-testing.mjs.map +0 -1
  229. package/fesm2020/bravura-ui-alert.mjs +0 -328
  230. package/fesm2020/bravura-ui-alert.mjs.map +0 -1
  231. package/fesm2020/bravura-ui-behavior.mjs.map +0 -1
  232. package/fesm2020/bravura-ui-clip-note.mjs.map +0 -1
  233. package/fesm2020/bravura-ui-common.mjs.map +0 -1
  234. package/fesm2020/bravura-ui-currency-input.mjs.map +0 -1
  235. package/fesm2020/bravura-ui-decimal-input.mjs.map +0 -1
  236. package/fesm2020/bravura-ui-discrete-input.mjs.map +0 -1
  237. package/fesm2020/bravura-ui-file-upload.mjs +0 -474
  238. package/fesm2020/bravura-ui-file-upload.mjs.map +0 -1
  239. package/fesm2020/bravura-ui-form-field.mjs.map +0 -1
  240. package/fesm2020/bravura-ui-icon-font.mjs.map +0 -1
  241. package/fesm2020/bravura-ui-panel.mjs +0 -206
  242. package/fesm2020/bravura-ui-panel.mjs.map +0 -1
  243. package/fesm2020/bravura-ui-phone-number.mjs.map +0 -1
  244. package/fesm2020/bravura-ui-radio-panel-testing.mjs.map +0 -1
  245. package/fesm2020/bravura-ui-radio-panel.mjs.map +0 -1
  246. package/fesm2020/bravura-ui-selection-panel.mjs +0 -306
  247. package/fesm2020/bravura-ui-selection-panel.mjs.map +0 -1
  248. package/fesm2020/bravura-ui-skeletons.mjs.map +0 -1
  249. package/fesm2020/bravura-ui-stepper.mjs +0 -251
  250. package/fesm2020/bravura-ui-stepper.mjs.map +0 -1
  251. package/fesm2020/bravura-ui-tooltip.mjs.map +0 -1
  252. package/fesm2020/bravura-ui.mjs +0 -8
  253. package/fesm2020/bravura-ui.mjs.map +0 -1
  254. /package/{esm2020 → esm2022}/alert/bravura-ui-alert.mjs +0 -0
  255. /package/{esm2020 → esm2022}/alert/testing/bravura-ui-alert-testing.mjs +0 -0
  256. /package/{esm2020 → esm2022}/behavior/bravura-ui-behavior.mjs +0 -0
  257. /package/{esm2020 → esm2022}/bravura-ui.mjs +0 -0
  258. /package/{esm2020 → esm2022}/clip-note/bravura-ui-clip-note.mjs +0 -0
  259. /package/{esm2020 → esm2022}/common/bravura-ui-common.mjs +0 -0
  260. /package/{esm2020 → esm2022}/currency-input/bravura-ui-currency-input.mjs +0 -0
  261. /package/{esm2020 → esm2022}/decimal-input/bravura-ui-decimal-input.mjs +0 -0
  262. /package/{esm2020 → esm2022}/decimal-input/public-api.mjs +0 -0
  263. /package/{esm2020 → esm2022}/discrete-input/bravura-ui-discrete-input.mjs +0 -0
  264. /package/{esm2020 → esm2022}/file-upload/bravura-ui-file-upload.mjs +0 -0
  265. /package/{esm2020 → esm2022}/form-field/bravura-ui-form-field.mjs +0 -0
  266. /package/{esm2020 → esm2022}/icon-font/bravura-ui-icon-font.mjs +0 -0
  267. /package/{esm2020 → esm2022}/panel/bravura-ui-panel.mjs +0 -0
  268. /package/{esm2020 → esm2022}/phone-number/bravura-ui-phone-number.mjs +0 -0
  269. /package/{esm2020 → esm2022}/radio-panel/bravura-ui-radio-panel.mjs +0 -0
  270. /package/{esm2020 → esm2022}/radio-panel/public-api.mjs +0 -0
  271. /package/{esm2020 → esm2022}/radio-panel/testing/bravura-ui-radio-panel-testing.mjs +0 -0
  272. /package/{esm2020 → esm2022}/selection-panel/bravura-ui-selection-panel.mjs +0 -0
  273. /package/{esm2020 → esm2022}/skeletons/bravura-ui-skeletons.mjs +0 -0
  274. /package/{esm2020 → esm2022}/stepper/bravura-ui-stepper.mjs +0 -0
  275. /package/{esm2020 → esm2022}/tooltip/bravura-ui-tooltip.mjs +0 -0
  276. /package/{fesm2015 → fesm2022}/bravura-ui.mjs +0 -0
@@ -0,0 +1,60 @@
1
+ import { DOCUMENT } from '@angular/common';
2
+ import { Directive, Inject, Input } from '@angular/core';
3
+ import { generateID } from '@bravura/ui/common';
4
+ import * as i0 from "@angular/core";
5
+ /**
6
+ * A "tinted" element has a shaded background specified by the `ThemePalette`, which
7
+ * is compatible with both light and dark themes.
8
+ */
9
+ export class TintedDirective {
10
+ /**
11
+ * The base color of the shaded background
12
+ * @default 'primary'
13
+ */
14
+ get color() {
15
+ return this._color;
16
+ }
17
+ set color(c) {
18
+ this._color = c;
19
+ this.generateStyle();
20
+ }
21
+ constructor(_doc, elemRef) {
22
+ this._doc = _doc;
23
+ this._color = 'default';
24
+ this._addedStyle = this._doc.createElement('style');
25
+ this._attr = 'bui-tinted-' + generateID();
26
+ this._element = elemRef.nativeElement;
27
+ elemRef.nativeElement.setAttribute(this._attr, '');
28
+ }
29
+ ngOnInit() {
30
+ this._element.style.position = 'relative';
31
+ this.generateStyle();
32
+ this._element.appendChild(this._addedStyle);
33
+ }
34
+ ngOnDestroy() {
35
+ this._element.removeChild(this._addedStyle);
36
+ }
37
+ generateStyle() {
38
+ this._addedStyle.innerText =
39
+ `[${this._attr}]::after { position: absolute; opacity: 0.1; border-radius: inherit; display: block; content: ''; ` +
40
+ ` background-color: var(--bui-color-${this.color}); top: 0; left: 0; ` +
41
+ ` bottom: 0; right: 0; pointer-events: none; }`;
42
+ }
43
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: TintedDirective, deps: [{ token: DOCUMENT }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
44
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.2", type: TintedDirective, selector: "[buiTinted], bui-panel", inputs: { color: ["buiTinted", "color"] }, host: { classAttribute: "bui-host" }, exportAs: ["buiTinted"], ngImport: i0 }); }
45
+ }
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: TintedDirective, decorators: [{
47
+ type: Directive,
48
+ args: [{
49
+ selector: '[buiTinted], bui-panel',
50
+ host: { class: 'bui-host' },
51
+ exportAs: 'buiTinted'
52
+ }]
53
+ }], ctorParameters: () => [{ type: Document, decorators: [{
54
+ type: Inject,
55
+ args: [DOCUMENT]
56
+ }] }, { type: i0.ElementRef }], propDecorators: { color: [{
57
+ type: Input,
58
+ args: ['buiTinted']
59
+ }] } });
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGludGVkLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3BhbmVsL3RpbnRlZC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQWMsTUFBTSxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFFeEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQUVoRDs7O0dBR0c7QUFNSCxNQUFNLE9BQU8sZUFBZTtJQUMzQjs7O09BR0c7SUFDSCxJQUNJLEtBQUs7UUFDUixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDcEIsQ0FBQztJQUNELElBQUksS0FBSyxDQUFDLENBQWU7UUFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDaEIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFRRCxZQUFzQyxJQUFjLEVBQUUsT0FBZ0M7UUFBaEQsU0FBSSxHQUFKLElBQUksQ0FBVTtRQU41QyxXQUFNLEdBQVEsU0FBUyxDQUFDO1FBTy9CLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLEtBQUssR0FBRyxhQUFhLEdBQUcsVUFBVSxFQUFFLENBQUM7UUFDMUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDO1FBQ3RDLE9BQU8sQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELFFBQVE7UUFDUCxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO1FBQzFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELFdBQVc7UUFDVixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVPLGFBQWE7UUFDcEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTO1lBQ3pCLElBQUksSUFBSSxDQUFDLEtBQUssb0dBQW9HO2dCQUNsSCxzQ0FBc0MsSUFBSSxDQUFDLEtBQUssc0JBQXNCO2dCQUN0RSwrQ0FBK0MsQ0FBQztJQUNsRCxDQUFDOzhHQTFDVyxlQUFlLGtCQW9CUCxRQUFRO2tHQXBCaEIsZUFBZTs7MkZBQWYsZUFBZTtrQkFMM0IsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsd0JBQXdCO29CQUNsQyxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFO29CQUMzQixRQUFRLEVBQUUsV0FBVztpQkFDckI7OzBCQXFCYSxNQUFNOzJCQUFDLFFBQVE7a0VBZHhCLEtBQUs7c0JBRFIsS0FBSzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEluamVjdCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRoZW1lUGFsZXR0ZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xyXG5pbXBvcnQgeyBnZW5lcmF0ZUlEIH0gZnJvbSAnQGJyYXZ1cmEvdWkvY29tbW9uJztcclxuXHJcbi8qKlxyXG4gKiBBIFwidGludGVkXCIgZWxlbWVudCBoYXMgYSBzaGFkZWQgYmFja2dyb3VuZCBzcGVjaWZpZWQgYnkgdGhlIGBUaGVtZVBhbGV0dGVgLCB3aGljaFxyXG4gKiBpcyBjb21wYXRpYmxlIHdpdGggYm90aCBsaWdodCBhbmQgZGFyayB0aGVtZXMuXHJcbiAqL1xyXG5ARGlyZWN0aXZlKHtcclxuXHRzZWxlY3RvcjogJ1tidWlUaW50ZWRdLCBidWktcGFuZWwnLFxyXG5cdGhvc3Q6IHsgY2xhc3M6ICdidWktaG9zdCcgfSxcclxuXHRleHBvcnRBczogJ2J1aVRpbnRlZCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFRpbnRlZERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHQvKipcclxuXHQgKiAgVGhlIGJhc2UgY29sb3Igb2YgdGhlIHNoYWRlZCBiYWNrZ3JvdW5kXHJcblx0ICogQGRlZmF1bHQgJ3ByaW1hcnknXHJcblx0ICovXHJcblx0QElucHV0KCdidWlUaW50ZWQnKVxyXG5cdGdldCBjb2xvcigpOiBUaGVtZVBhbGV0dGUge1xyXG5cdFx0cmV0dXJuIHRoaXMuX2NvbG9yO1xyXG5cdH1cclxuXHRzZXQgY29sb3IoYzogVGhlbWVQYWxldHRlKSB7XHJcblx0XHR0aGlzLl9jb2xvciA9IGM7XHJcblx0XHR0aGlzLmdlbmVyYXRlU3R5bGUoKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgX2NvbG9yOiBhbnkgPSAnZGVmYXVsdCc7XHJcblxyXG5cdHByaXZhdGUgcmVhZG9ubHkgX2FkZGVkU3R5bGU6IEhUTUxTdHlsZUVsZW1lbnQ7XHJcblx0cHJpdmF0ZSByZWFkb25seSBfYXR0cjogc3RyaW5nO1xyXG5cdHByaXZhdGUgX2VsZW1lbnQ6IEhUTUxFbGVtZW50O1xyXG5cclxuXHRjb25zdHJ1Y3RvcihASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIF9kb2M6IERvY3VtZW50LCBlbGVtUmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge1xyXG5cdFx0dGhpcy5fYWRkZWRTdHlsZSA9IHRoaXMuX2RvYy5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xyXG5cdFx0dGhpcy5fYXR0ciA9ICdidWktdGludGVkLScgKyBnZW5lcmF0ZUlEKCk7XHJcblx0XHR0aGlzLl9lbGVtZW50ID0gZWxlbVJlZi5uYXRpdmVFbGVtZW50O1xyXG5cdFx0ZWxlbVJlZi5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSh0aGlzLl9hdHRyLCAnJyk7XHJcblx0fVxyXG5cclxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHRcdHRoaXMuX2VsZW1lbnQuc3R5bGUucG9zaXRpb24gPSAncmVsYXRpdmUnO1xyXG5cdFx0dGhpcy5nZW5lcmF0ZVN0eWxlKCk7XHJcblx0XHR0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2FkZGVkU3R5bGUpO1xyXG5cdH1cclxuXHJcblx0bmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcblx0XHR0aGlzLl9lbGVtZW50LnJlbW92ZUNoaWxkKHRoaXMuX2FkZGVkU3R5bGUpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBnZW5lcmF0ZVN0eWxlKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5fYWRkZWRTdHlsZS5pbm5lclRleHQgPVxyXG5cdFx0XHRgWyR7dGhpcy5fYXR0cn1dOjphZnRlciB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgb3BhY2l0eTogMC4xOyBib3JkZXItcmFkaXVzOiBpbmhlcml0OyBkaXNwbGF5OiBibG9jazsgY29udGVudDogJyc7IGAgK1xyXG5cdFx0XHRgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1aS1jb2xvci0ke3RoaXMuY29sb3J9KTsgdG9wOiAwOyBsZWZ0OiAwOyBgICtcclxuXHRcdFx0YCBib3R0b206IDA7IHJpZ2h0OiAwOyBwb2ludGVyLWV2ZW50czogbm9uZTsgfWA7XHJcblx0fVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,188 @@
1
+ import { Directive, EventEmitter, HostListener, Inject, Input, LOCALE_ID, Optional, Output } from '@angular/core';
2
+ import intlTelInput from 'intl-tel-input';
3
+ import { of } from 'rxjs';
4
+ import { debounceTime, take } from 'rxjs/operators';
5
+ import { getCountryCodeFromLocale } from './phone-number.pipe';
6
+ import { PhoneNumberValidator, SELECTOR } from './phone-number.validator';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/forms";
9
+ import * as i2 from "@angular/material/form-field";
10
+ /**
11
+ * Add phone number validation support by specifying the `type` attribute as `tel` in an `<input>` element.
12
+ *
13
+ * To use this feature, please install a peer dependency `intl-tel-input` in your project and add the following
14
+ * to your application polyfills:
15
+ *
16
+ * ```javascript
17
+ * import 'intl-tel-input/build/js/utils.js';
18
+ * ```
19
+ *
20
+ * You will also need to add the following statements to one of your global SCSS files:
21
+ *
22
+ * ```scss
23
+ * $flagsImagePath: '~intl-tel-input/build/img/' !default;
24
+ * @import '~intl-tel-input/src/css/intlTelInput';
25
+ * ```
26
+ */
27
+ export class PhoneNumberDirective {
28
+ /**
29
+ * @ignore
30
+ */
31
+ static { this.POST_RENDER_INIT_DELAY = 20; }
32
+ /**
33
+ * @ignore
34
+ */
35
+ static { this.BYPASS_SHADOW_DETECTION = false; }
36
+ constructor(_el, _ngModel, _formControlName, _formControlDirective, _locale, _zone, _matField) {
37
+ this._el = _el;
38
+ this._ngModel = _ngModel;
39
+ this._formControlName = _formControlName;
40
+ this._formControlDirective = _formControlDirective;
41
+ this._locale = _locale;
42
+ this._zone = _zone;
43
+ this._matField = _matField;
44
+ /**
45
+ * The type of phone number to validate for
46
+ */
47
+ this.telType = 'FIXED_LINE';
48
+ /**
49
+ * Disable country dropdown by setting this property to `false`.
50
+ */
51
+ this.telDropdown = true;
52
+ /**
53
+ * This event is triggered when a new country is selected from the dropdown. The event detail is the ISO country code.
54
+ */
55
+ this.telCountryChange = new EventEmitter();
56
+ this._reactive = false;
57
+ this._countryChangeListener = () => null;
58
+ }
59
+ /** @internal */
60
+ onInput() {
61
+ const err = PhoneNumberValidator.validateControl(this._input, this.telType, true);
62
+ this._control.patchValue(this._input.value, { emitEvent: false });
63
+ if (this._reactive && err) {
64
+ this._control.setErrors({ ...this._control.errors, ...err });
65
+ }
66
+ }
67
+ ngOnInit() {
68
+ const ctrDirective = this._ngModel || this._formControlName || this._formControlDirective;
69
+ this._control = ctrDirective.control;
70
+ this._reactive = this._ngModel ? false : true;
71
+ this._input = this._el.nativeElement;
72
+ this._countryChangeListener = (() => {
73
+ this._zone.run(() => {
74
+ this._control.markAsDirty();
75
+ this._control.updateValueAndValidity({ emitEvent: true });
76
+ this.telCountryChange.emit(this._iti.getSelectedCountryData().iso2);
77
+ });
78
+ }).bind(this);
79
+ (PhoneNumberDirective.BYPASS_SHADOW_DETECTION ? of(0) : this._zone.onStable)
80
+ .pipe(debounceTime(10), take(1))
81
+ .subscribe(() => this.initElement());
82
+ }
83
+ ngOnDestroy() {
84
+ this._input.removeEventListener('countrychange', this._countryChangeListener);
85
+ this._iti?.destroy();
86
+ }
87
+ ngOnChanges(changes) {
88
+ const td = changes.telDropdown;
89
+ if (td && !td.firstChange) {
90
+ this.ngOnDestroy();
91
+ this.ngOnInit();
92
+ }
93
+ const type = changes.telType;
94
+ if (type && !type.firstChange) {
95
+ this.onInput();
96
+ }
97
+ }
98
+ initElement() {
99
+ const countryCode = getCountryCodeFromLocale(this._locale).toLowerCase();
100
+ const root = this._input.getRootNode();
101
+ if (!root.querySelector('#bui-tel-input-style')) {
102
+ const styleTag = document.createElement('style');
103
+ styleTag.id = 'bui-tel-input-style';
104
+ styleTag.innerText =
105
+ '.mat-mdc-form-field .bui-tel-input-placeholder:not(.mdc-floating-label--float-above){margin-left:44px;}' +
106
+ '.iti--allow-dropdown{margin-left:-8px}' +
107
+ '.bui-tel-input-with-value:disabled{cursor:pointer;}';
108
+ (root instanceof Document ? root.querySelector('head') : root).appendChild(styleTag);
109
+ }
110
+ this._iti = intlTelInput(this._input, {
111
+ initialCountry: countryCode,
112
+ placeholderNumberType: this.telType,
113
+ preferredCountries: [countryCode, ...['au', 'ca', 'nz', 'us', 'gb'].filter(c => c !== countryCode)],
114
+ dropdownContainer: root instanceof ShadowRoot ? root.querySelector('overlay-root') || root : root.body,
115
+ autoPlaceholder: 'off',
116
+ allowDropdown: this.telDropdown
117
+ });
118
+ this._input.$$iti = this._iti;
119
+ this._input.addEventListener('countrychange', this._countryChangeListener);
120
+ const frameTime = Date.now();
121
+ const postRenderWork = () => {
122
+ if (frameTime + PhoneNumberDirective.POST_RENDER_INIT_DELAY > Date.now()) {
123
+ window.requestAnimationFrame(postRenderWork);
124
+ return;
125
+ }
126
+ let label;
127
+ if (this._matField?.getLabelId() && typeof root.getElementById === 'function') {
128
+ label = root.getElementById(this._matField.getLabelId());
129
+ label?.classList.remove('bui-tel-input-placeholder');
130
+ }
131
+ if (label && this.telDropdown) {
132
+ label.classList.add('bui-tel-input-placeholder');
133
+ }
134
+ if (this._input?.value) {
135
+ this._input.classList.add('bui-tel-input-with-value');
136
+ }
137
+ };
138
+ window.requestAnimationFrame(postRenderWork);
139
+ this._input.addEventListener('click', () => {
140
+ if (this._control?.disabled && this._control.value) {
141
+ window.location.href = 'tel://' + this._control.value;
142
+ }
143
+ });
144
+ this._control?.registerOnDisabledChange(isDisabled => this._patchValueByState(isDisabled));
145
+ this._patchValueByState(this._control.disabled);
146
+ }
147
+ _patchValueByState(isDisabled) {
148
+ setTimeout(() => {
149
+ if (!isDisabled) {
150
+ this.onInput();
151
+ }
152
+ else {
153
+ const v = this._iti.getNumber(intlTelInputUtils.numberFormat.NATIONAL);
154
+ this._input.value = v;
155
+ this._control?.patchValue(this._input?.value, { emitEvent: false });
156
+ }
157
+ }, 20);
158
+ }
159
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: PhoneNumberDirective, deps: [{ token: i0.ElementRef }, { token: i1.NgModel, optional: true }, { token: i1.FormControlName, optional: true }, { token: i1.FormControlDirective, optional: true }, { token: LOCALE_ID }, { token: i0.NgZone }, { token: i2.MatFormField, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
160
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.2", type: PhoneNumberDirective, selector: "[buiTelInput], input([type=tel])[ngModel], input([type=tel])[formControlName], input([type=tel])[formControl]", inputs: { telType: "telType", telDropdown: "telDropdown" }, outputs: { telCountryChange: "telCountryChange" }, host: { listeners: { "input": "onInput()" } }, usesOnChanges: true, ngImport: i0 }); }
161
+ }
162
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: PhoneNumberDirective, decorators: [{
163
+ type: Directive,
164
+ args: [{
165
+ selector: SELECTOR
166
+ }]
167
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.NgModel, decorators: [{
168
+ type: Optional
169
+ }] }, { type: i1.FormControlName, decorators: [{
170
+ type: Optional
171
+ }] }, { type: i1.FormControlDirective, decorators: [{
172
+ type: Optional
173
+ }] }, { type: undefined, decorators: [{
174
+ type: Inject,
175
+ args: [LOCALE_ID]
176
+ }] }, { type: i0.NgZone }, { type: i2.MatFormField, decorators: [{
177
+ type: Optional
178
+ }] }], propDecorators: { telType: [{
179
+ type: Input
180
+ }], telDropdown: [{
181
+ type: Input
182
+ }], telCountryChange: [{
183
+ type: Output
184
+ }], onInput: [{
185
+ type: HostListener,
186
+ args: ['input']
187
+ }] } });
188
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtbnVtYmVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3Bob25lLW51bWJlci9waG9uZS1udW1iZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTixTQUFTLEVBRVQsWUFBWSxFQUNaLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLFNBQVMsRUFLVCxRQUFRLEVBQ1IsTUFBTSxFQUVOLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sWUFBWSxNQUFNLGdCQUFnQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUIsT0FBTyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsUUFBUSxFQUFZLE1BQU0sMEJBQTBCLENBQUM7Ozs7QUFPcEY7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFJSCxNQUFNLE9BQU8sb0JBQW9CO0lBQ2hDOztPQUVHO2FBQ0ksMkJBQXNCLEdBQUcsRUFBRSxBQUFMLENBQU07SUFFbkM7O09BRUc7YUFDSSw0QkFBdUIsR0FBRyxLQUFLLEFBQVIsQ0FBUztJQTBCdkMsWUFDUyxHQUFpQyxFQUNyQixRQUFpQixFQUNqQixnQkFBaUMsRUFDakMscUJBQTJDLEVBQ3BDLE9BQWUsRUFDbEMsS0FBYSxFQUNELFNBQXVCO1FBTm5DLFFBQUcsR0FBSCxHQUFHLENBQThCO1FBQ3JCLGFBQVEsR0FBUixRQUFRLENBQVM7UUFDakIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQjtRQUNqQywwQkFBcUIsR0FBckIscUJBQXFCLENBQXNCO1FBQ3BDLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDbEMsVUFBSyxHQUFMLEtBQUssQ0FBUTtR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LENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ3JFLENBQUM7UUFDRixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDUixDQUFDOzhHQTdKVyxvQkFBb0Isc0xBd0N2QixTQUFTO2tHQXhDTixvQkFBb0I7OzJGQUFwQixvQkFBb0I7a0JBSGhDLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLFFBQVE7aUJBQ2xCOzswQkFzQ0UsUUFBUTs7MEJBQ1IsUUFBUTs7MEJBQ1IsUUFBUTs7MEJBQ1IsTUFBTTsyQkFBQyxTQUFTOzswQkFFaEIsUUFBUTt5Q0EzQlYsT0FBTztzQkFETixLQUFLO2dCQU9OLFdBQVc7c0JBRFYsS0FBSztnQkFPTixnQkFBZ0I7c0JBRGYsTUFBTTtnQkFxQlAsT0FBTztzQkFETixZQUFZO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG5cdERpcmVjdGl2ZSxcclxuXHRFbGVtZW50UmVmLFxyXG5cdEV2ZW50RW1pdHRlcixcclxuXHRIb3N0TGlzdGVuZXIsXHJcblx0SW5qZWN0LFxyXG5cdElucHV0LFxyXG5cdExPQ0FMRV9JRCxcclxuXHROZ1pvbmUsXHJcblx0T25DaGFuZ2VzLFxyXG5cdE9uRGVzdHJveSxcclxuXHRPbkluaXQsXHJcblx0T3B0aW9uYWwsXHJcblx0T3V0cHV0LFxyXG5cdFNpbXBsZUNoYW5nZXNcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVW50eXBlZEZvcm1Db250cm9sLCBGb3JtQ29udHJvbERpcmVjdGl2ZSwgRm9ybUNvbnRyb2xOYW1lLCBOZ01vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcclxuaW1wb3J0IGludGxUZWxJbnB1dCBmcm9tICdpbnRsLXRlbC1pbnB1dCc7XHJcbmltcG9ydCB7IG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IGdldENvdW50cnlDb2RlRnJvbUxvY2FsZSB9IGZyb20gJy4vcGhvbmUtbnVtYmVyLnBpcGUnO1xyXG5pbXBvcnQgeyBQaG9uZU51bWJlclZhbGlkYXRvciwgU0VMRUNUT1IsIFRFTF9UWVBFIH0gZnJvbSAnLi9waG9uZS1udW1iZXIudmFsaWRhdG9yJztcclxuXHJcbi8qKlxyXG4gKiBAaWdub3JlXHJcbiAqL1xyXG5kZWNsYXJlIGNvbnN0IGludGxUZWxJbnB1dFV0aWxzOiBhbnk7XHJcblxyXG4vKipcclxuICogQWRkIHBob25lIG51bWJlciB2YWxpZGF0aW9uIHN1cHBvcnQgYnkgc3BlY2lmeWluZyB0aGUgYHR5cGVgIGF0dHJpYnV0ZSBhcyBgdGVsYCBpbiBhbiBgPGlucHV0PmAgZWxlbWVudC5cclxuICpcclxuICogVG8gdXNlIHRoaXMgZmVhdHVyZSwgcGxlYXNlIGluc3RhbGwgYSBwZWVyIGRlcGVuZGVuY3kgYGludGwtdGVsLWlucHV0YCBpbiB5b3VyIHByb2plY3QgYW5kIGFkZCB0aGUgZm9sbG93aW5nXHJcbiAqIHRvIHlvdXIgYXBwbGljYXRpb24gcG9seWZpbGxzOlxyXG4gKlxyXG4gKiBgYGBqYXZhc2NyaXB0XHJcbiAqIGltcG9ydCAnaW50bC10ZWwtaW5wdXQvYnVpbGQvanMvdXRpbHMuanMnO1xyXG4gKiBgYGBcclxuICpcclxuICogWW91IHdpbGwgYWxzbyBuZWVkIHRvIGFkZCB0aGUgZm9sbG93aW5nIHN0YXRlbWVudHMgdG8gb25lIG9mIHlvdXIgZ2xvYmFsIFNDU1MgZmlsZXM6XHJcbiAqXHJcbiAqIGBgYHNjc3NcclxuICogJGZsYWdzSW1hZ2VQYXRoOiAnfmludGwtdGVsLWlucHV0L2J1aWxkL2ltZy8nICFkZWZhdWx0O1xyXG4gKiBAaW1wb3J0ICd+aW50bC10ZWwtaW5wdXQvc3JjL2Nzcy9pbnRsVGVsSW5wdXQnO1xyXG4gKiBgYGBcclxuICovXHJcbkBEaXJlY3RpdmUoe1xyXG5cdHNlbGVjdG9yOiBTRUxFQ1RPUlxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGhvbmVOdW1iZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuXHQvKipcclxuXHQgKiBAaWdub3JlXHJcblx0ICovXHJcblx0c3RhdGljIFBPU1RfUkVOREVSX0lOSVRfREVMQVkgPSAyMDtcclxuXHJcblx0LyoqXHJcblx0ICogQGlnbm9yZVxyXG5cdCAqL1xyXG5cdHN0YXRpYyBCWVBBU1NfU0hBRE9XX0RFVEVDVElPTiA9IGZhbHNlO1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGUgdHlwZSBvZiBwaG9uZSBudW1iZXIgdG8gdmFsaWRhdGUgZm9yXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHR0ZWxUeXBlOiBURUxfVFlQRSA9ICdGSVhFRF9MSU5FJztcclxuXHJcblx0LyoqXHJcblx0ICogRGlzYWJsZSBjb3VudHJ5IGRyb3Bkb3duIGJ5IHNldHRpbmcgdGhpcyBwcm9wZXJ0eSB0byBgZmFsc2VgLlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0dGVsRHJvcGRvd24gPSB0cnVlO1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGlzIGV2ZW50IGlzIHRyaWdnZXJlZCB3aGVuIGEgbmV3IGNvdW50cnkgaXMgc2VsZWN0ZWQgZnJvbSB0aGUgZHJvcGRvd24uIFRoZSBldmVudCBkZXRhaWwgaXMgdGhlIElTTyBjb3VudHJ5IGNvZGUuXHJcblx0ICovXHJcblx0QE91dHB1dCgpXHJcblx0dGVsQ291bnRyeUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuXHRwcml2YXRlIF9jb250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2wgfCB1bmRlZmluZWQ7XHJcblx0cHJpdmF0ZSBfcmVhY3RpdmUgPSBmYWxzZTtcclxuXHRwcml2YXRlIF9jb3VudHJ5Q2hhbmdlTGlzdGVuZXI6ICgpID0+IHZvaWQgPSAoKSA9PiBudWxsO1xyXG5cdHByaXZhdGUgX2lucHV0OiBIVE1MSW5wdXRFbGVtZW50IHwgdW5kZWZpbmVkO1xyXG5cdHByaXZhdGUgX2l0aTogYW55O1xyXG5cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHByaXZhdGUgX2VsOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+LFxyXG5cdFx0QE9wdGlvbmFsKCkgcHJpdmF0ZSBfbmdNb2RlbDogTmdNb2RlbCxcclxuXHRcdEBPcHRpb25hbCgpIHByaXZhdGUgX2Zvcm1Db250cm9sTmFtZTogRm9ybUNvbnRyb2xOYW1lLFxyXG5cdFx0QE9wdGlvbmFsKCkgcHJpdmF0ZSBfZm9ybUNvbnRyb2xEaXJlY3RpdmU6IEZvcm1Db250cm9sRGlyZWN0aXZlLFxyXG5cdFx0QEluamVjdChMT0NBTEVfSUQpIHByaXZhdGUgX2xvY2FsZTogc3RyaW5nLFxyXG5cdFx0cHJpdmF0ZSBfem9uZTogTmdab25lLFxyXG5cdFx0QE9wdGlvbmFsKCkgcHJpdmF0ZSBfbWF0RmllbGQ6IE1hdEZvcm1GaWVsZFxyXG5cdCkge31cclxuXHJcblx0LyoqIEBpbnRlcm5hbCAqL1xyXG5cdEBIb3N0TGlzdGVuZXIoJ2lucHV0JylcclxuXHRvbklucHV0KCkge1xyXG5cdFx0Y29uc3QgZXJyID0gUGhvbmVOdW1iZXJWYWxpZGF0b3IudmFsaWRhdGVDb250cm9sKHRoaXMuX2lucHV0ISwgdGhpcy50ZWxUeXBlLCB0cnVlKTtcclxuXHRcdHRoaXMuX2NvbnRyb2whLnBhdGNoVmFsdWUodGhpcy5faW5wdXQhLnZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcblxyXG5cdFx0aWYgKHRoaXMuX3JlYWN0aXZlICYmIGVycikge1xyXG5cdFx0XHR0aGlzLl9jb250cm9sIS5zZXRFcnJvcnMoeyAuLi50aGlzLl9jb250cm9sIS5lcnJvcnMsIC4uLmVyciB9KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdG5nT25Jbml0KCkge1xyXG5cdFx0Y29uc3QgY3RyRGlyZWN0aXZlID0gdGhpcy5fbmdNb2RlbCB8fCB0aGlzLl9mb3JtQ29udHJvbE5hbWUgfHwgdGhpcy5fZm9ybUNvbnRyb2xEaXJlY3RpdmU7XHJcblx0XHR0aGlzLl9jb250cm9sID0gY3RyRGlyZWN0aXZlLmNvbnRyb2wgYXMgVW50eXBlZEZvcm1Db250cm9sO1xyXG5cdFx0dGhpcy5fcmVhY3RpdmUgPSB0aGlzLl9uZ01vZGVsID8gZmFsc2UgOiB0cnVlO1xyXG5cdFx0dGhpcy5faW5wdXQgPSB0aGlzLl9lbC5uYXRpdmVFbGVtZW50O1xyXG5cclxuXHRcdHRoaXMuX2NvdW50cnlDaGFuZ2VMaXN0ZW5lciA9ICgoKSA9PiB7XHJcblx0XHRcdHRoaXMuX3pvbmUucnVuKCgpID0+IHtcclxuXHRcdFx0XHR0aGlzLl9jb250cm9sIS5tYXJrQXNEaXJ0eSgpO1xyXG5cdFx0XHRcdHRoaXMuX2NvbnRyb2whLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IHRydWUgfSk7XHJcblx0XHRcdFx0dGhpcy50ZWxDb3VudHJ5Q2hhbmdlLmVtaXQodGhpcy5faXRpLmdldFNlbGVjdGVkQ291bnRyeURhdGEoKS5pc28yKTtcclxuXHRcdFx0fSk7XHJcblx0XHR9KS5iaW5kKHRoaXMpO1xyXG5cclxuXHRcdChQaG9uZU51bWJlckRpcmVjdGl2ZS5CWVBBU1NfU0hBRE9XX0RFVEVDVElPTiA/IG9mKDAgYXMgYW55KSA6IHRoaXMuX3pvbmUub25TdGFibGUpXHJcblx0XHRcdC5waXBlKGRlYm91bmNlVGltZSgxMCksIHRha2UoMSkpXHJcblx0XHRcdC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5pbml0RWxlbWVudCgpKTtcclxuXHR9XHJcblxyXG5cdG5nT25EZXN0cm95KCkge1xyXG5cdFx0dGhpcy5faW5wdXQhLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NvdW50cnljaGFuZ2UnLCB0aGlzLl9jb3VudHJ5Q2hhbmdlTGlzdGVuZXIpO1xyXG5cdFx0dGhpcy5faXRpPy5kZXN0cm95KCk7XHJcblx0fVxyXG5cclxuXHRuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcblx0XHRjb25zdCB0ZCA9IGNoYW5nZXMudGVsRHJvcGRvd247XHJcblx0XHRpZiAodGQgJiYgIXRkLmZpcnN0Q2hhbmdlKSB7XHJcblx0XHRcdHRoaXMubmdPbkRlc3Ryb3koKTtcclxuXHRcdFx0dGhpcy5uZ09uSW5pdCgpO1xyXG5cdFx0fVxyXG5cdFx0Y29uc3QgdHlwZSA9IGNoYW5nZXMudGVsVHlwZTtcclxuXHRcdGlmICh0eXBlICYmICF0eXBlLmZpcnN0Q2hhbmdlKSB7XHJcblx0XHRcdHRoaXMub25JbnB1dCgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBpbml0RWxlbWVudCgpIHtcclxuXHRcdGNvbnN0IGNvdW50cnlDb2RlID0gZ2V0Q291bnRyeUNvZGVGcm9tTG9jYWxlKHRoaXMuX2xvY2FsZSkudG9Mb3dlckNhc2UoKTtcclxuXHJcblx0XHRjb25zdCByb290OiBTaGFkb3dSb290IHwgRG9jdW1lbnQgPSB0aGlzLl9pbnB1dCEuZ2V0Um9vdE5vZGUoKSBhcyBTaGFkb3dSb290IHwgRG9jdW1lbnQ7XHJcblx0XHRpZiAoIXJvb3QucXVlcnlTZWxlY3RvcignI2J1aS10ZWwtaW5wdXQtc3R5bGUnKSkge1xyXG5cdFx0XHRjb25zdCBzdHlsZVRhZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XHJcblx0XHRcdHN0eWxlVGFnLmlkID0gJ2J1aS10ZWwtaW5wdXQtc3R5bGUnO1xyXG5cdFx0XHRzdHlsZVRhZy5pbm5lclRleHQgPVxyXG5cdFx0XHRcdCcubWF0LW1kYy1mb3JtLWZpZWxkIC5idWktdGVsLWlucHV0LXBsYWNlaG9sZGVyOm5vdCgubWRjLWZsb2F0aW5nLWxhYmVsLS1mbG9hdC1hYm92ZSl7bWFyZ2luLWxlZnQ6NDRweDt9JyArXHJcblx0XHRcdFx0Jy5pdGktLWFsbG93LWRyb3Bkb3due21hcmdpbi1sZWZ0Oi04cHh9JyArXHJcblx0XHRcdFx0Jy5idWktdGVsLWlucHV0LXdpdGgtdmFsdWU6ZGlzYWJsZWR7Y3Vyc29yOnBvaW50ZXI7fSc7XHJcblx0XHRcdChyb290IGluc3RhbmNlb2YgRG9jdW1lbnQgPyAocm9vdC5xdWVyeVNlbGVjdG9yKCdoZWFkJykgYXMgYW55KSA6IHJvb3QpLmFwcGVuZENoaWxkKHN0eWxlVGFnKTtcclxuXHRcdH1cclxuXHRcdHRoaXMuX2l0aSA9IGludGxUZWxJbnB1dCh0aGlzLl9pbnB1dCEsIHtcclxuXHRcdFx0aW5pdGlhbENvdW50cnk6IGNvdW50cnlDb2RlLFxyXG5cdFx0XHRwbGFjZWhvbGRlck51bWJlclR5cGU6IHRoaXMudGVsVHlwZSxcclxuXHRcdFx0cHJlZmVycmVkQ291bnRyaWVzOiBbY291bnRyeUNvZGUsIC4uLlsnYXUnLCAnY2EnLCAnbnonLCAndXMnLCAnZ2InXS5maWx0ZXIoYyA9PiBjICE9PSBjb3VudHJ5Q29kZSldLFxyXG5cdFx0XHRkcm9wZG93bkNvbnRhaW5lcjogcm9vdCBpbnN0YW5jZW9mIFNoYWRvd1Jvb3QgPyByb290LnF1ZXJ5U2VsZWN0b3IoJ292ZXJsYXktcm9vdCcpIHx8IHJvb3QgOiAocm9vdC5ib2R5IGFzIGFueSksXHJcblx0XHRcdGF1dG9QbGFjZWhvbGRlcjogJ29mZicsXHJcblx0XHRcdGFsbG93RHJvcGRvd246IHRoaXMudGVsRHJvcGRvd25cclxuXHRcdH0pO1xyXG5cclxuXHRcdCh0aGlzLl9pbnB1dCBhcyBhbnkpLiQkaXRpID0gdGhpcy5faXRpO1xyXG5cdFx0dGhpcy5faW5wdXQhLmFkZEV2ZW50TGlzdGVuZXIoJ2NvdW50cnljaGFuZ2UnLCB0aGlzLl9jb3VudHJ5Q2hhbmdlTGlzdGVuZXIpO1xyXG5cdFx0Y29uc3QgZnJhbWVUaW1lID0gRGF0ZS5ub3coKTtcclxuXHRcdGNvbnN0IHBvc3RSZW5kZXJXb3JrID0gKCkgPT4ge1xyXG5cdFx0XHRpZiAoZnJhbWVUaW1lICsgUGhvbmVOdW1iZXJEaXJlY3RpdmUuUE9TVF9SRU5ERVJfSU5JVF9ERUxBWSA+IERhdGUubm93KCkpIHtcclxuXHRcdFx0XHR3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKHBvc3RSZW5kZXJXb3JrKTtcclxuXHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdH1cclxuXHRcdFx0bGV0IGxhYmVsOiBIVE1MTGFiZWxFbGVtZW50IHwgdW5kZWZpbmVkO1xyXG5cdFx0XHRpZiAodGhpcy5fbWF0RmllbGQ/LmdldExhYmVsSWQoKSAmJiB0eXBlb2Ygcm9vdC5nZXRFbGVtZW50QnlJZCA9PT0gJ2Z1bmN0aW9uJykge1xyXG5cdFx0XHRcdGxhYmVsID0gcm9vdC5nZXRFbGVtZW50QnlJZCh0aGlzLl9tYXRGaWVsZC5nZXRMYWJlbElkKCkhKSBhcyBIVE1MTGFiZWxFbGVtZW50O1xyXG5cdFx0XHRcdGxhYmVsPy5jbGFzc0xpc3QucmVtb3ZlKCdidWktdGVsLWlucHV0LXBsYWNlaG9sZGVyJyk7XHJcblx0XHRcdH1cclxuXHRcdFx0aWYgKGxhYmVsICYmIHRoaXMudGVsRHJvcGRvd24pIHtcclxuXHRcdFx0XHRsYWJlbC5jbGFzc0xpc3QuYWRkKCdidWktdGVsLWlucHV0LXBsYWNlaG9sZGVyJyk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGlmICh0aGlzLl9pbnB1dD8udmFsdWUpIHtcclxuXHRcdFx0XHR0aGlzLl9pbnB1dC5jbGFzc0xpc3QuYWRkKCdidWktdGVsLWlucHV0LXdpdGgtdmFsdWUnKTtcclxuXHRcdFx0fVxyXG5cdFx0fTtcclxuXHRcdHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUocG9zdFJlbmRlcldvcmspO1xyXG5cclxuXHRcdHRoaXMuX2lucHV0IS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcclxuXHRcdFx0aWYgKHRoaXMuX2NvbnRyb2w/LmRpc2FibGVkICYmIHRoaXMuX2NvbnRyb2wudmFsdWUpIHtcclxuXHRcdFx0XHR3aW5kb3cubG9jYXRpb24uaHJlZiA9ICd0ZWw6Ly8nICsgdGhpcy5fY29udHJvbC52YWx1ZTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblxyXG5cdFx0dGhpcy5fY29udHJvbD8ucmVnaXN0ZXJPbkRpc2FibGVkQ2hhbmdlKGlzRGlzYWJsZWQgPT4gdGhpcy5fcGF0Y2hWYWx1ZUJ5U3RhdGUoaXNEaXNhYmxlZCkpO1xyXG5cdFx0dGhpcy5fcGF0Y2hWYWx1ZUJ5U3RhdGUodGhpcy5fY29udHJvbCEuZGlzYWJsZWQpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBfcGF0Y2hWYWx1ZUJ5U3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbikge1xyXG5cdFx0c2V0VGltZW91dCgoKSA9PiB7XHJcblx0XHRcdGlmICghaXNEaXNhYmxlZCkge1xyXG5cdFx0XHRcdHRoaXMub25JbnB1dCgpO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGNvbnN0IHYgPSB0aGlzLl9pdGkuZ2V0TnVtYmVyKGludGxUZWxJbnB1dFV0aWxzLm51bWJlckZvcm1hdC5OQVRJT05BTCk7XHJcblx0XHRcdFx0dGhpcy5faW5wdXQhLnZhbHVlID0gdjtcclxuXHRcdFx0XHR0aGlzLl9jb250cm9sPy5wYXRjaFZhbHVlKHRoaXMuX2lucHV0Py52YWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG5cdFx0XHR9XHJcblx0XHR9LCAyMCk7XHJcblx0fVxyXG59XHJcbiJdfQ==
@@ -8,11 +8,11 @@ import * as i0 from "@angular/core";
8
8
  * @internal
9
9
  */
10
10
  export class PhoneModule {
11
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: PhoneModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
12
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.2", ngImport: i0, type: PhoneModule, declarations: [PhoneNumberPipe, PhoneNumberDirective, PhoneNumberValidator], imports: [CommonModule], exports: [PhoneNumberDirective, PhoneNumberPipe, PhoneNumberValidator] }); }
13
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: PhoneModule, imports: [CommonModule] }); }
11
14
  }
12
- PhoneModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: PhoneModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
13
- PhoneModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.6", ngImport: i0, type: PhoneModule, declarations: [PhoneNumberPipe, PhoneNumberDirective, PhoneNumberValidator], imports: [CommonModule], exports: [PhoneNumberDirective, PhoneNumberPipe, PhoneNumberValidator] });
14
- PhoneModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: PhoneModule, imports: [CommonModule] });
15
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: PhoneModule, decorators: [{
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: PhoneModule, decorators: [{
16
16
  type: NgModule,
17
17
  args: [{
18
18
  declarations: [PhoneNumberPipe, PhoneNumberDirective, PhoneNumberValidator],
@@ -21,4 +21,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImpor
21
21
  }]
22
22
  }] });
23
23
  export { PhoneNumberDirective, PhoneNumberPipe, PhoneNumberValidator };
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtbnVtYmVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3Bob25lLW51bWJlci9waG9uZS1udW1iZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFFaEU7O0dBRUc7QUFNSCxNQUFNLE9BQU8sV0FBVzs7d0dBQVgsV0FBVzt5R0FBWCxXQUFXLGlCQUpSLGVBQWUsRUFBRSxvQkFBb0IsRUFBRSxvQkFBb0IsYUFDaEUsWUFBWSxhQUNaLG9CQUFvQixFQUFFLGVBQWUsRUFBRSxvQkFBb0I7eUdBRXpELFdBQVcsWUFIYixZQUFZOzJGQUdWLFdBQVc7a0JBTHZCLFFBQVE7bUJBQUM7b0JBQ1QsWUFBWSxFQUFFLENBQUMsZUFBZSxFQUFFLG9CQUFvQixFQUFFLG9CQUFvQixDQUFDO29CQUMzRSxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLE9BQU8sRUFBRSxDQUFDLG9CQUFvQixFQUFFLGVBQWUsRUFBRSxvQkFBb0IsQ0FBQztpQkFDdEU7O0FBR0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGVBQWUsRUFBRSxvQkFBb0IsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFBob25lTnVtYmVyRGlyZWN0aXZlIH0gZnJvbSAnLi9waG9uZS1udW1iZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IFBob25lTnVtYmVyUGlwZSB9IGZyb20gJy4vcGhvbmUtbnVtYmVyLnBpcGUnO1xuaW1wb3J0IHsgUGhvbmVOdW1iZXJWYWxpZGF0b3IgfSBmcm9tICcuL3Bob25lLW51bWJlci52YWxpZGF0b3InO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5ATmdNb2R1bGUoe1xuXHRkZWNsYXJhdGlvbnM6IFtQaG9uZU51bWJlclBpcGUsIFBob25lTnVtYmVyRGlyZWN0aXZlLCBQaG9uZU51bWJlclZhbGlkYXRvcl0sXG5cdGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuXHRleHBvcnRzOiBbUGhvbmVOdW1iZXJEaXJlY3RpdmUsIFBob25lTnVtYmVyUGlwZSwgUGhvbmVOdW1iZXJWYWxpZGF0b3JdXG59KVxuZXhwb3J0IGNsYXNzIFBob25lTW9kdWxlIHt9XG5cbmV4cG9ydCB7IFBob25lTnVtYmVyRGlyZWN0aXZlLCBQaG9uZU51bWJlclBpcGUsIFBob25lTnVtYmVyVmFsaWRhdG9yIH07XG4iXX0=
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtbnVtYmVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3Bob25lLW51bWJlci9waG9uZS1udW1iZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFFaEU7O0dBRUc7QUFNSCxNQUFNLE9BQU8sV0FBVzs4R0FBWCxXQUFXOytHQUFYLFdBQVcsaUJBSlIsZUFBZSxFQUFFLG9CQUFvQixFQUFFLG9CQUFvQixhQUNoRSxZQUFZLGFBQ1osb0JBQW9CLEVBQUUsZUFBZSxFQUFFLG9CQUFvQjsrR0FFekQsV0FBVyxZQUhiLFlBQVk7OzJGQUdWLFdBQVc7a0JBTHZCLFFBQVE7bUJBQUM7b0JBQ1QsWUFBWSxFQUFFLENBQUMsZUFBZSxFQUFFLG9CQUFvQixFQUFFLG9CQUFvQixDQUFDO29CQUMzRSxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLE9BQU8sRUFBRSxDQUFDLG9CQUFvQixFQUFFLGVBQWUsRUFBRSxvQkFBb0IsQ0FBQztpQkFDdEU7O0FBR0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGVBQWUsRUFBRSxvQkFBb0IsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IFBob25lTnVtYmVyRGlyZWN0aXZlIH0gZnJvbSAnLi9waG9uZS1udW1iZXIuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgUGhvbmVOdW1iZXJQaXBlIH0gZnJvbSAnLi9waG9uZS1udW1iZXIucGlwZSc7XHJcbmltcG9ydCB7IFBob25lTnVtYmVyVmFsaWRhdG9yIH0gZnJvbSAnLi9waG9uZS1udW1iZXIudmFsaWRhdG9yJztcclxuXHJcbi8qKlxyXG4gKiBAaW50ZXJuYWxcclxuICovXHJcbkBOZ01vZHVsZSh7XHJcblx0ZGVjbGFyYXRpb25zOiBbUGhvbmVOdW1iZXJQaXBlLCBQaG9uZU51bWJlckRpcmVjdGl2ZSwgUGhvbmVOdW1iZXJWYWxpZGF0b3JdLFxyXG5cdGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxyXG5cdGV4cG9ydHM6IFtQaG9uZU51bWJlckRpcmVjdGl2ZSwgUGhvbmVOdW1iZXJQaXBlLCBQaG9uZU51bWJlclZhbGlkYXRvcl1cclxufSlcclxuZXhwb3J0IGNsYXNzIFBob25lTW9kdWxlIHt9XHJcblxyXG5leHBvcnQgeyBQaG9uZU51bWJlckRpcmVjdGl2ZSwgUGhvbmVOdW1iZXJQaXBlLCBQaG9uZU51bWJlclZhbGlkYXRvciB9O1xyXG4iXX0=
@@ -0,0 +1,47 @@
1
+ import { Inject, LOCALE_ID, Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * @internal
5
+ */
6
+ export class PhoneNumberPipe {
7
+ constructor(_locale) {
8
+ this._locale = _locale;
9
+ }
10
+ transform(value, mode, renderLink) {
11
+ if (!value) {
12
+ return value;
13
+ }
14
+ const countryCode = getCountryCodeFromLocale(this._locale);
15
+ let format;
16
+ switch (mode) {
17
+ case 'NATIONAL':
18
+ format = intlTelInputUtils.numberFormat.NATIONAL;
19
+ break;
20
+ default:
21
+ format = intlTelInputUtils.numberFormat.INTERNATIONAL;
22
+ }
23
+ const result = intlTelInputUtils.formatNumber(value, countryCode, format);
24
+ if (renderLink) {
25
+ return `<a href="tel:${result}">${result}</a>`;
26
+ }
27
+ else {
28
+ return result;
29
+ }
30
+ }
31
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: PhoneNumberPipe, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe }); }
32
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.2", ngImport: i0, type: PhoneNumberPipe, name: "buiPhone" }); }
33
+ }
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: PhoneNumberPipe, decorators: [{
35
+ type: Pipe,
36
+ args: [{
37
+ name: 'buiPhone',
38
+ pure: true
39
+ }]
40
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
41
+ type: Inject,
42
+ args: [LOCALE_ID]
43
+ }] }] });
44
+ export function getCountryCodeFromLocale(locale) {
45
+ return locale.replace(/.+[-_]([a-z][a-z])$/i, '$1');
46
+ }
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtbnVtYmVyLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9waG9uZS1udW1iZXIvcGhvbmUtbnVtYmVyLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7QUFJdkU7O0dBRUc7QUFLSCxNQUFNLE9BQU8sZUFBZTtJQUMzQixZQUF1QyxPQUFlO1FBQWYsWUFBTyxHQUFQLE9BQU8sQ0FBUTtJQUFHLENBQUM7SUFFMUQsU0FBUyxDQUFDLEtBQVUsRUFBRSxJQUFhLEVBQUUsVUFBb0I7UUFDeEQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1osT0FBTyxLQUFLLENBQUM7UUFDZCxDQUFDO1FBRUQsTUFBTSxXQUFXLEdBQUcsd0JBQXdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTNELElBQUksTUFBYyxDQUFDO1FBQ25CLFFBQVEsSUFBSSxFQUFFLENBQUM7WUFDZCxLQUFLLFVBQVU7Z0JBQ2QsTUFBTSxHQUFHLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUM7Z0JBQ2pELE1BQU07WUFDUDtnQkFDQyxNQUFNLEdBQUcsaUJBQWlCLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQztRQUN4RCxDQUFDO1FBQ0QsTUFBTSxNQUFNLEdBQUcsaUJBQWlCLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDMUUsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNoQixPQUFPLGdCQUFnQixNQUFNLEtBQUssTUFBTSxNQUFNLENBQUM7UUFDaEQsQ0FBQzthQUFNLENBQUM7WUFDUCxPQUFPLE1BQU0sQ0FBQztRQUNmLENBQUM7SUFDRixDQUFDOzhHQXhCVyxlQUFlLGtCQUNQLFNBQVM7NEdBRGpCLGVBQWU7OzJGQUFmLGVBQWU7a0JBSjNCLElBQUk7bUJBQUM7b0JBQ0wsSUFBSSxFQUFFLFVBQVU7b0JBQ2hCLElBQUksRUFBRSxJQUFJO2lCQUNWOzswQkFFYSxNQUFNOzJCQUFDLFNBQVM7O0FBMEI5QixNQUFNLFVBQVUsd0JBQXdCLENBQUMsTUFBYztJQUN0RCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDckQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgTE9DQUxFX0lELCBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5kZWNsYXJlIGNvbnN0IGludGxUZWxJbnB1dFV0aWxzOiBhbnk7XHJcblxyXG4vKipcclxuICogQGludGVybmFsXHJcbiAqL1xyXG5AUGlwZSh7XHJcblx0bmFtZTogJ2J1aVBob25lJyxcclxuXHRwdXJlOiB0cnVlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQaG9uZU51bWJlclBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuXHRjb25zdHJ1Y3RvcihASW5qZWN0KExPQ0FMRV9JRCkgcHJpdmF0ZSBfbG9jYWxlOiBzdHJpbmcpIHt9XHJcblxyXG5cdHRyYW5zZm9ybSh2YWx1ZTogYW55LCBtb2RlPzogc3RyaW5nLCByZW5kZXJMaW5rPzogYm9vbGVhbik6IHN0cmluZyB7XHJcblx0XHRpZiAoIXZhbHVlKSB7XHJcblx0XHRcdHJldHVybiB2YWx1ZTtcclxuXHRcdH1cclxuXHJcblx0XHRjb25zdCBjb3VudHJ5Q29kZSA9IGdldENvdW50cnlDb2RlRnJvbUxvY2FsZSh0aGlzLl9sb2NhbGUpO1xyXG5cclxuXHRcdGxldCBmb3JtYXQ6IG51bWJlcjtcclxuXHRcdHN3aXRjaCAobW9kZSkge1xyXG5cdFx0XHRjYXNlICdOQVRJT05BTCc6XHJcblx0XHRcdFx0Zm9ybWF0ID0gaW50bFRlbElucHV0VXRpbHMubnVtYmVyRm9ybWF0Lk5BVElPTkFMO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRkZWZhdWx0OlxyXG5cdFx0XHRcdGZvcm1hdCA9IGludGxUZWxJbnB1dFV0aWxzLm51bWJlckZvcm1hdC5JTlRFUk5BVElPTkFMO1xyXG5cdFx0fVxyXG5cdFx0Y29uc3QgcmVzdWx0ID0gaW50bFRlbElucHV0VXRpbHMuZm9ybWF0TnVtYmVyKHZhbHVlLCBjb3VudHJ5Q29kZSwgZm9ybWF0KTtcclxuXHRcdGlmIChyZW5kZXJMaW5rKSB7XHJcblx0XHRcdHJldHVybiBgPGEgaHJlZj1cInRlbDoke3Jlc3VsdH1cIj4ke3Jlc3VsdH08L2E+YDtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHJldHVybiByZXN1bHQ7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q291bnRyeUNvZGVGcm9tTG9jYWxlKGxvY2FsZTogc3RyaW5nKTogc3RyaW5nIHtcclxuXHRyZXR1cm4gbG9jYWxlLnJlcGxhY2UoLy4rWy1fXShbYS16XVthLXpdKSQvaSwgJyQxJyk7XHJcbn1cclxuIl19
@@ -0,0 +1,64 @@
1
+ import { Directive, Input, forwardRef } from '@angular/core';
2
+ import { NG_VALIDATORS } from '@angular/forms';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * @internal
6
+ */
7
+ export const SELECTOR = '[buiTelInput], input([type=tel])[ngModel], input([type=tel])[formControlName], input([type=tel])[formControl]';
8
+ /**
9
+ * @internal
10
+ */
11
+ export const PHONE_VALIDATOR = {
12
+ provide: NG_VALIDATORS,
13
+ useExisting: forwardRef(() => PhoneNumberValidator),
14
+ multi: true
15
+ };
16
+ /**
17
+ * @internal
18
+ */
19
+ export class PhoneNumberValidator {
20
+ static validateControl(inp, type, update) {
21
+ const err = { tel: true };
22
+ if (!inp.value) {
23
+ return null;
24
+ }
25
+ const iti = inp.$$iti;
26
+ if (!iti) {
27
+ return null;
28
+ }
29
+ if (iti.isValidNumber()) {
30
+ const n = iti.getNumber(intlTelInputUtils.numberFormat.INTERNATIONAL);
31
+ if (update) {
32
+ inp.value = n;
33
+ }
34
+ const t = iti.getNumberType();
35
+ if (t !== intlTelInputUtils.numberType.FIXED_LINE_OR_MOBILE) {
36
+ if ((type === 'MOBILE' && t !== intlTelInputUtils.numberType.MOBILE) ||
37
+ (type === 'FIXED_LINE' && t !== intlTelInputUtils.numberType.FIXED_LINE)) {
38
+ return err;
39
+ }
40
+ }
41
+ return null;
42
+ }
43
+ return err;
44
+ }
45
+ constructor(_el) {
46
+ this._el = _el;
47
+ this.telType = 'FIXED_LINE';
48
+ }
49
+ validate(_) {
50
+ return PhoneNumberValidator.validateControl(this._el.nativeElement, this.telType, false);
51
+ }
52
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: PhoneNumberValidator, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
53
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.2", type: PhoneNumberValidator, selector: "[buiTelInput], input([type=tel])[ngModel], input([type=tel])[formControlName], input([type=tel])[formControl]", inputs: { telType: "telType" }, providers: [PHONE_VALIDATOR], ngImport: i0 }); }
54
+ }
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: PhoneNumberValidator, decorators: [{
56
+ type: Directive,
57
+ args: [{
58
+ selector: SELECTOR,
59
+ providers: [PHONE_VALIDATOR]
60
+ }]
61
+ }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { telType: [{
62
+ type: Input
63
+ }] } });
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtbnVtYmVyLnZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3Bob25lLW51bWJlci9waG9uZS1udW1iZXIudmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFrQixVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekYsT0FBTyxFQUFtQixhQUFhLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFFM0U7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQ3BCLCtHQUErRyxDQUFDO0FBRWpIOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFtQjtJQUM5QyxPQUFPLEVBQUUsYUFBYTtJQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixDQUFDO0lBQ25ELEtBQUssRUFBRSxJQUFJO0NBQ1gsQ0FBQztBQVlGOztHQUVHO0FBS0gsTUFBTSxPQUFPLG9CQUFvQjtJQUloQyxNQUFNLENBQUMsZUFBZSxDQUFDLEdBQXFCLEVBQUUsSUFBYyxFQUFFLE1BQWU7UUFDNUUsTUFBTSxHQUFHLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNoQixPQUFPLElBQUksQ0FBQztRQUNiLENBQUM7UUFDRCxNQUFNLEdBQUcsR0FBSSxHQUFXLENBQUMsS0FBSyxDQUFDO1FBQy9CLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNWLE9BQU8sSUFBSSxDQUFDO1FBQ2IsQ0FBQztRQUNELElBQUksR0FBRyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUM7WUFDekIsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDdEUsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDWixHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUNmLENBQUM7WUFFRCxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLEtBQUssaUJBQWlCLENBQUMsVUFBVSxDQUFDLG9CQUFvQixFQUFFLENBQUM7Z0JBQzdELElBQ0MsQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO29CQUNoRSxDQUFDLElBQUksS0FBSyxZQUFZLElBQUksQ0FBQyxLQUFLLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFDdkUsQ0FBQztvQkFDRixPQUFPLEdBQUcsQ0FBQztnQkFDWixDQUFDO1lBQ0YsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2IsQ0FBQztRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ1osQ0FBQztJQUVELFlBQW9CLEdBQWlDO1FBQWpDLFFBQUcsR0FBSCxHQUFHLENBQThCO1FBL0JyRCxZQUFPLEdBQWEsWUFBWSxDQUFDO0lBK0J1QixDQUFDO0lBRXpELFFBQVEsQ0FBQyxDQUFrQjtRQUMxQixPQUFPLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzFGLENBQUM7OEdBckNXLG9CQUFvQjtrR0FBcEIsb0JBQW9CLHdLQUZyQixDQUFDLGVBQWUsQ0FBQzs7MkZBRWhCLG9CQUFvQjtrQkFKaEMsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsUUFBUTtvQkFDbEIsU0FBUyxFQUFFLENBQUMsZUFBZSxDQUFDO2lCQUM1QjsrRUFHQSxPQUFPO3NCQUROLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBTdGF0aWNQcm92aWRlciwgZm9yd2FyZFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIE5HX1ZBTElEQVRPUlMsIFZhbGlkYXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbi8qKlxyXG4gKiBAaW50ZXJuYWxcclxuICovXHJcbmV4cG9ydCBjb25zdCBTRUxFQ1RPUiA9XHJcblx0J1tidWlUZWxJbnB1dF0sIGlucHV0KFt0eXBlPXRlbF0pW25nTW9kZWxdLCBpbnB1dChbdHlwZT10ZWxdKVtmb3JtQ29udHJvbE5hbWVdLCBpbnB1dChbdHlwZT10ZWxdKVtmb3JtQ29udHJvbF0nO1xyXG5cclxuLyoqXHJcbiAqIEBpbnRlcm5hbFxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IFBIT05FX1ZBTElEQVRPUjogU3RhdGljUHJvdmlkZXIgPSB7XHJcblx0cHJvdmlkZTogTkdfVkFMSURBVE9SUyxcclxuXHR1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQaG9uZU51bWJlclZhbGlkYXRvciksXHJcblx0bXVsdGk6IHRydWVcclxufTtcclxuXHJcbi8qKlxyXG4gKiBAaW50ZXJuYWxcclxuICovXHJcbmV4cG9ydCB0eXBlIFRFTF9UWVBFID0gJ01PQklMRScgfCAnRklYRURfTElORV9PUl9NT0JJTEUnIHwgJ0ZJWEVEX0xJTkUnO1xyXG5cclxuLyoqXHJcbiAqIEBpbnRlcm5hbFxyXG4gKi9cclxuZGVjbGFyZSBjb25zdCBpbnRsVGVsSW5wdXRVdGlsczogYW55O1xyXG5cclxuLyoqXHJcbiAqIEBpbnRlcm5hbFxyXG4gKi9cclxuQERpcmVjdGl2ZSh7XHJcblx0c2VsZWN0b3I6IFNFTEVDVE9SLFxyXG5cdHByb3ZpZGVyczogW1BIT05FX1ZBTElEQVRPUl1cclxufSlcclxuZXhwb3J0IGNsYXNzIFBob25lTnVtYmVyVmFsaWRhdG9yIGltcGxlbWVudHMgVmFsaWRhdG9yIHtcclxuXHRASW5wdXQoKVxyXG5cdHRlbFR5cGU6IFRFTF9UWVBFID0gJ0ZJWEVEX0xJTkUnO1xyXG5cclxuXHRzdGF0aWMgdmFsaWRhdGVDb250cm9sKGlucDogSFRNTElucHV0RWxlbWVudCwgdHlwZTogVEVMX1RZUEUsIHVwZGF0ZTogYm9vbGVhbik6IHsgW2tleTogc3RyaW5nXTogYW55IH0gfCBudWxsIHtcclxuXHRcdGNvbnN0IGVyciA9IHsgdGVsOiB0cnVlIH07XHJcblx0XHRpZiAoIWlucC52YWx1ZSkge1xyXG5cdFx0XHRyZXR1cm4gbnVsbDtcclxuXHRcdH1cclxuXHRcdGNvbnN0IGl0aSA9IChpbnAgYXMgYW55KS4kJGl0aTtcclxuXHRcdGlmICghaXRpKSB7XHJcblx0XHRcdHJldHVybiBudWxsO1xyXG5cdFx0fVxyXG5cdFx0aWYgKGl0aS5pc1ZhbGlkTnVtYmVyKCkpIHtcclxuXHRcdFx0Y29uc3QgbiA9IGl0aS5nZXROdW1iZXIoaW50bFRlbElucHV0VXRpbHMubnVtYmVyRm9ybWF0LklOVEVSTkFUSU9OQUwpO1xyXG5cdFx0XHRpZiAodXBkYXRlKSB7XHJcblx0XHRcdFx0aW5wLnZhbHVlID0gbjtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Y29uc3QgdCA9IGl0aS5nZXROdW1iZXJUeXBlKCk7XHJcblx0XHRcdGlmICh0ICE9PSBpbnRsVGVsSW5wdXRVdGlscy5udW1iZXJUeXBlLkZJWEVEX0xJTkVfT1JfTU9CSUxFKSB7XHJcblx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0KHR5cGUgPT09ICdNT0JJTEUnICYmIHQgIT09IGludGxUZWxJbnB1dFV0aWxzLm51bWJlclR5cGUuTU9CSUxFKSB8fFxyXG5cdFx0XHRcdFx0KHR5cGUgPT09ICdGSVhFRF9MSU5FJyAmJiB0ICE9PSBpbnRsVGVsSW5wdXRVdGlscy5udW1iZXJUeXBlLkZJWEVEX0xJTkUpXHJcblx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRyZXR1cm4gZXJyO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0XHRyZXR1cm4gbnVsbDtcclxuXHRcdH1cclxuXHRcdHJldHVybiBlcnI7XHJcblx0fVxyXG5cclxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIF9lbDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50Pikge31cclxuXHJcblx0dmFsaWRhdGUoXzogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB8IG51bGwge1xyXG5cdFx0cmV0dXJuIFBob25lTnVtYmVyVmFsaWRhdG9yLnZhbGlkYXRlQ29udHJvbCh0aGlzLl9lbC5uYXRpdmVFbGVtZW50LCB0aGlzLnRlbFR5cGUsIGZhbHNlKTtcclxuXHR9XHJcbn1cclxuIl19
@@ -1,2 +1,2 @@
1
1
  export * from './phone-number.module';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3Bob25lLW51bWJlci9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3Bob25lLW51bWJlci5tb2R1bGUnO1xuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3Bob25lLW51bWJlci9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3Bob25lLW51bWJlci5tb2R1bGUnO1xyXG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export const NO_EXPORT = 'NO_EXPORT';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3VpL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBOT19FWFBPUlQgPSAnTk9fRVhQT1JUJztcbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3VpL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBOT19FWFBPUlQgPSAnTk9fRVhQT1JUJztcclxuIl19
@@ -0,0 +1,93 @@
1
+ import { animate, state, style, transition, trigger } from '@angular/animations';
2
+ import { Attribute, ChangeDetectionStrategy, Component, ContentChild, Inject, Input, Optional } from '@angular/core';
3
+ import { MatRadioButton, MAT_RADIO_DEFAULT_OPTIONS, MAT_RADIO_GROUP } from '@angular/material/radio';
4
+ import { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/cdk/a11y";
7
+ import * as i2 from "@angular/cdk/collections";
8
+ import * as i3 from "@angular/common";
9
+ import * as i4 from "@angular/material/core";
10
+ import * as i5 from "@angular/material/icon";
11
+ import * as i6 from "@angular/material/radio";
12
+ /**
13
+ * Use `bui-radio-panel-item` instead of `mat-radio-button` in a `bui-radio-panel` to display an option.
14
+ */
15
+ export class RadioPanelItemComponent extends MatRadioButton {
16
+ get tickPosition() {
17
+ return this._tickPosition || this.radioGroup?.tickPosition;
18
+ }
19
+ set tickPosition(pos) {
20
+ this._tickPosition = pos;
21
+ }
22
+ constructor(radioGroup, elementRef, _changeDetector, _focusMonitor, _radioDispatcher, animationMode, _providerOverride, tabIndex) {
23
+ super(radioGroup, elementRef, _changeDetector, _focusMonitor, _radioDispatcher, animationMode, _providerOverride, tabIndex);
24
+ /**
25
+ * This will be displayed as the panel header
26
+ */
27
+ this.title = '';
28
+ }
29
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: RadioPanelItemComponent, deps: [{ token: MAT_RADIO_GROUP, optional: true }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.FocusMonitor }, { token: i2.UniqueSelectionDispatcher }, { token: ANIMATION_MODULE_TYPE, optional: true }, { token: MAT_RADIO_DEFAULT_OPTIONS, optional: true }, { token: 'tabindex', attribute: true }], target: i0.ɵɵFactoryTarget.Component }); }
30
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.2", type: RadioPanelItemComponent, selector: "bui-radio-panel-item", inputs: { disableRipple: "disableRipple", tabIndex: "tabIndex", title: "title", _tickPosition: "_tickPosition", tickPosition: "tickPosition" }, host: { listeners: { "focus": "_inputElement.nativeElement.focus()" }, properties: { "class.bui-radio-checked": "checked", "class.bui-disabled": "disabled", "class._mat-animation-noopable": "_noopAnimations", "class.mat-primary": "color === \"primary\"", "class.mat-accent": "color === \"accent\"", "class.mat-warn": "color === \"warn\"", "attr.tabindex": "null", "attr.id": "id", "attr.aria-label": "null", "attr.aria-labelledby": "null", "attr.aria-describedby": "null" }, classAttribute: "bui-radio-panel-item" }, queries: [{ propertyName: "contentOnSelect", first: true, predicate: ["contentOnSelect"], descendants: true }], exportAs: ["matRadioButton"], usesInheritance: true, ngImport: i0, template: "<label\n\tmatRipple\n\tmatRippleColor=\"rgba(128,128,128,.1)\"\n\t[matRippleDisabled]=\"disabled || checked\"\n\t[attr.for]=\"inputId\"\n\t#label\n\tclass=\"bui-radio-panel-item-label bui-border-{{ checked ? color : 'default' }}\"\n>\n\t<div class=\"bui-radio-panel-item-wrapper\" [class.bui-radio-tick-at-end]=\"tickPosition === 'end'\">\n\t\t<div class=\"bui-label-header\">\n\t\t\t<span class=\"bui-label-title\" [innerHTML]=\"title\"></span>\n\t\t\t<ng-content select=\"[buiRadioItemHeadingEnd]\"></ng-content>\n\t\t\t<span class=\"bui-radio-panel-item-circle\">\n\t\t\t\t<span\n\t\t\t\t\tclass=\"bui-persistent-ripple\"\n\t\t\t\t\tmatRipple\n\t\t\t\t\tmatRippleColor=\"rgba(128,128,128,.1)\"\n\t\t\t\t\t[matRippleCentered]=\"true\"\n\t\t\t\t\t[matRippleUnbounded]=\"true\"\n\t\t\t\t\t[matRippleTrigger]=\"label\"\n\t\t\t\t\t[matRippleRadius]=\"20\"\n\t\t\t\t\t*ngIf=\"!disabled\"\n\t\t\t\t></span>\n\t\t\t\t<mat-icon [color]=\"color\" *ngIf=\"checked\">check_circle</mat-icon>\n\t\t\t\t<mat-icon *ngIf=\"!checked\" class=\"bui-radio-panel-item-circle-unchecked\">radio_button_unchecked</mat-icon>\n\t\t\t</span>\n\t\t</div>\n\t\t<!-- The actual 'radio' part of the control. -->\n\t\t<span class=\"radio-container\">\n\t\t\t<input\n\t\t\t\t#input\n\t\t\t\tclass=\"mat-radio-input cdk-visually-hidden\"\n\t\t\t\ttype=\"radio\"\n\t\t\t\t[id]=\"inputId\"\n\t\t\t\t[checked]=\"checked\"\n\t\t\t\t[disabled]=\"disabled\"\n\t\t\t\t[tabIndex]=\"tabIndex\"\n\t\t\t\t[attr.name]=\"name\"\n\t\t\t\t[attr.value]=\"value\"\n\t\t\t\t[required]=\"required\"\n\t\t\t\t[attr.aria-label]=\"ariaLabel\"\n\t\t\t\t[attr.aria-labelledby]=\"ariaLabelledby\"\n\t\t\t\t[attr.aria-describedby]=\"ariaDescribedby\"\n\t\t\t\t(change)=\"_onInputInteraction($event)\"\n\t\t\t\t(click)=\"_onInputInteraction($event)\"\n\t\t\t/>\n\t\t</span>\n\n\t\t<div class=\"bui-label-content-gap\"></div>\n\t\t<!-- The label content for radio control. -->\n\t\t<div class=\"bui-label-content\">\n\t\t\t<ng-content></ng-content>\n\t\t</div>\n\t\t<div class=\"bui-label-content\" *ngIf=\"contentOnSelect && checked\" @slideInOut>\n\t\t\t<ng-container *ngTemplateOutlet=\"contentOnSelect\"></ng-container>\n\t\t</div>\n\t</div>\n</label>\n", styles: [":host .bui-ripple,:host .bui-persistent-ripple{position:absolute;inset:0}:host .bui-radio-panel-item-overlay{background-color:#fff;opacity:0}:host .bui-radio-panel-item-circle{width:40px;height:40px;flex-shrink:0}:host .bui-radio-panel-item-label{display:block;border-radius:5px;border:1px solid rgba(128,128,128,.2);padding:1px;position:relative;height:100%}:host .bui-radio-panel-item-label .bui-radio-panel-item-circle-unchecked{color:#80808066}:host .bui-radio-panel-item-wrapper.bui-radio-tick-at-end .bui-label-header{padding:calc(1rem - 10px) calc(1rem - 10px) 0 1rem;justify-content:space-between}:host .bui-radio-panel-item-wrapper:not(.bui-radio-tick-at-end) .bui-label-header{padding:calc(1rem - 10px) calc(1rem - 10px) 0 calc(1rem - 10px)}:host .bui-radio-panel-item-wrapper:not(.bui-radio-tick-at-end) .bui-radio-panel-item-circle{order:-1}:host .bui-label-header,:host .bui-radio-panel-item-circle{display:flex;align-items:center}:host .bui-label-header{margin-bottom:calc(1rem - 10px)}:host .bui-label-title{font-size:larger;font-weight:700}:host .bui-radio-panel-item-circle{justify-content:center;position:relative}:host .bui-label-content:not(:empty){margin:0 1rem 1rem}:host .bui-label-content-gap{margin-top:calc(1rem - 10px)}@polyfill-unscoped-rule{content: \".bui-radio-panel-item-wrapper .bui-label-header [buiRadioItemHeadingEnd]\"; margin-left: auto;}:host(:not([hidden])){display:block}:host(:not(.bui-disabled)):not(.bui-radio-checked) .bui-radio-panel-item-label{cursor:pointer}:host(:not(.bui-disabled)) .bui-radio-panel-item-label:hover{border-width:2px;padding:0;border-color:#8080804d}:host(:not(.bui-disabled)).cdk-keyboard-focused .bui-persistent-ripple,:host(:not(.bui-disabled)).cdk-program-focused .bui-persistent-ripple{background-color:#80808033;border-radius:50%}:host-context(.radio-dir-row){flex-basis:var(--bui-panel-width, 300px);flex-grow:0}:host(.bui-disabled) .bui-radio-panel-item-wrapper>.bui-label-header,:host(.bui-disabled) .bui-radio-panel-item-wrapper>.bui-label-content{opacity:.5}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], animations: [
31
+ trigger('slideInOut', [
32
+ state('void', style({ height: '0px', overflow: 'hidden' })),
33
+ transition(':enter, :leave', animate('.25s'))
34
+ ])
35
+ ], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
36
+ }
37
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: RadioPanelItemComponent, decorators: [{
38
+ type: Component,
39
+ args: [{ selector: 'bui-radio-panel-item', inputs: ['disableRipple', 'tabIndex'], exportAs: 'matRadioButton', host: {
40
+ class: 'bui-radio-panel-item',
41
+ '[class.bui-radio-checked]': 'checked',
42
+ '[class.bui-disabled]': 'disabled',
43
+ '[class._mat-animation-noopable]': '_noopAnimations',
44
+ '[class.mat-primary]': 'color === "primary"',
45
+ '[class.mat-accent]': 'color === "accent"',
46
+ '[class.mat-warn]': 'color === "warn"',
47
+ // Needs to be removed since it causes some a11y issues (see #21266).
48
+ '[attr.tabindex]': 'null',
49
+ '[attr.id]': 'id',
50
+ '[attr.aria-label]': 'null',
51
+ '[attr.aria-labelledby]': 'null',
52
+ '[attr.aria-describedby]': 'null',
53
+ // Note: under normal conditions focus shouldn't land on this element, however it may be
54
+ // programmatically set, for example inside of a focus trap, in this case we want to forward
55
+ // the focus to the native element.
56
+ '(focus)': '_inputElement.nativeElement.focus()'
57
+ }, changeDetection: ChangeDetectionStrategy.OnPush, animations: [
58
+ trigger('slideInOut', [
59
+ state('void', style({ height: '0px', overflow: 'hidden' })),
60
+ transition(':enter, :leave', animate('.25s'))
61
+ ])
62
+ ], template: "<label\n\tmatRipple\n\tmatRippleColor=\"rgba(128,128,128,.1)\"\n\t[matRippleDisabled]=\"disabled || checked\"\n\t[attr.for]=\"inputId\"\n\t#label\n\tclass=\"bui-radio-panel-item-label bui-border-{{ checked ? color : 'default' }}\"\n>\n\t<div class=\"bui-radio-panel-item-wrapper\" [class.bui-radio-tick-at-end]=\"tickPosition === 'end'\">\n\t\t<div class=\"bui-label-header\">\n\t\t\t<span class=\"bui-label-title\" [innerHTML]=\"title\"></span>\n\t\t\t<ng-content select=\"[buiRadioItemHeadingEnd]\"></ng-content>\n\t\t\t<span class=\"bui-radio-panel-item-circle\">\n\t\t\t\t<span\n\t\t\t\t\tclass=\"bui-persistent-ripple\"\n\t\t\t\t\tmatRipple\n\t\t\t\t\tmatRippleColor=\"rgba(128,128,128,.1)\"\n\t\t\t\t\t[matRippleCentered]=\"true\"\n\t\t\t\t\t[matRippleUnbounded]=\"true\"\n\t\t\t\t\t[matRippleTrigger]=\"label\"\n\t\t\t\t\t[matRippleRadius]=\"20\"\n\t\t\t\t\t*ngIf=\"!disabled\"\n\t\t\t\t></span>\n\t\t\t\t<mat-icon [color]=\"color\" *ngIf=\"checked\">check_circle</mat-icon>\n\t\t\t\t<mat-icon *ngIf=\"!checked\" class=\"bui-radio-panel-item-circle-unchecked\">radio_button_unchecked</mat-icon>\n\t\t\t</span>\n\t\t</div>\n\t\t<!-- The actual 'radio' part of the control. -->\n\t\t<span class=\"radio-container\">\n\t\t\t<input\n\t\t\t\t#input\n\t\t\t\tclass=\"mat-radio-input cdk-visually-hidden\"\n\t\t\t\ttype=\"radio\"\n\t\t\t\t[id]=\"inputId\"\n\t\t\t\t[checked]=\"checked\"\n\t\t\t\t[disabled]=\"disabled\"\n\t\t\t\t[tabIndex]=\"tabIndex\"\n\t\t\t\t[attr.name]=\"name\"\n\t\t\t\t[attr.value]=\"value\"\n\t\t\t\t[required]=\"required\"\n\t\t\t\t[attr.aria-label]=\"ariaLabel\"\n\t\t\t\t[attr.aria-labelledby]=\"ariaLabelledby\"\n\t\t\t\t[attr.aria-describedby]=\"ariaDescribedby\"\n\t\t\t\t(change)=\"_onInputInteraction($event)\"\n\t\t\t\t(click)=\"_onInputInteraction($event)\"\n\t\t\t/>\n\t\t</span>\n\n\t\t<div class=\"bui-label-content-gap\"></div>\n\t\t<!-- The label content for radio control. -->\n\t\t<div class=\"bui-label-content\">\n\t\t\t<ng-content></ng-content>\n\t\t</div>\n\t\t<div class=\"bui-label-content\" *ngIf=\"contentOnSelect && checked\" @slideInOut>\n\t\t\t<ng-container *ngTemplateOutlet=\"contentOnSelect\"></ng-container>\n\t\t</div>\n\t</div>\n</label>\n", styles: [":host .bui-ripple,:host .bui-persistent-ripple{position:absolute;inset:0}:host .bui-radio-panel-item-overlay{background-color:#fff;opacity:0}:host .bui-radio-panel-item-circle{width:40px;height:40px;flex-shrink:0}:host .bui-radio-panel-item-label{display:block;border-radius:5px;border:1px solid rgba(128,128,128,.2);padding:1px;position:relative;height:100%}:host .bui-radio-panel-item-label .bui-radio-panel-item-circle-unchecked{color:#80808066}:host .bui-radio-panel-item-wrapper.bui-radio-tick-at-end .bui-label-header{padding:calc(1rem - 10px) calc(1rem - 10px) 0 1rem;justify-content:space-between}:host .bui-radio-panel-item-wrapper:not(.bui-radio-tick-at-end) .bui-label-header{padding:calc(1rem - 10px) calc(1rem - 10px) 0 calc(1rem - 10px)}:host .bui-radio-panel-item-wrapper:not(.bui-radio-tick-at-end) .bui-radio-panel-item-circle{order:-1}:host .bui-label-header,:host .bui-radio-panel-item-circle{display:flex;align-items:center}:host .bui-label-header{margin-bottom:calc(1rem - 10px)}:host .bui-label-title{font-size:larger;font-weight:700}:host .bui-radio-panel-item-circle{justify-content:center;position:relative}:host .bui-label-content:not(:empty){margin:0 1rem 1rem}:host .bui-label-content-gap{margin-top:calc(1rem - 10px)}@polyfill-unscoped-rule{content: \".bui-radio-panel-item-wrapper .bui-label-header [buiRadioItemHeadingEnd]\"; margin-left: auto;}:host(:not([hidden])){display:block}:host(:not(.bui-disabled)):not(.bui-radio-checked) .bui-radio-panel-item-label{cursor:pointer}:host(:not(.bui-disabled)) .bui-radio-panel-item-label:hover{border-width:2px;padding:0;border-color:#8080804d}:host(:not(.bui-disabled)).cdk-keyboard-focused .bui-persistent-ripple,:host(:not(.bui-disabled)).cdk-program-focused .bui-persistent-ripple{background-color:#80808033;border-radius:50%}:host-context(.radio-dir-row){flex-basis:var(--bui-panel-width, 300px);flex-grow:0}:host(.bui-disabled) .bui-radio-panel-item-wrapper>.bui-label-header,:host(.bui-disabled) .bui-radio-panel-item-wrapper>.bui-label-content{opacity:.5}\n"] }]
63
+ }], ctorParameters: () => [{ type: i6.MatRadioGroup, decorators: [{
64
+ type: Optional
65
+ }, {
66
+ type: Inject,
67
+ args: [MAT_RADIO_GROUP]
68
+ }] }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.FocusMonitor }, { type: i2.UniqueSelectionDispatcher }, { type: undefined, decorators: [{
69
+ type: Optional
70
+ }, {
71
+ type: Inject,
72
+ args: [ANIMATION_MODULE_TYPE]
73
+ }] }, { type: undefined, decorators: [{
74
+ type: Optional
75
+ }, {
76
+ type: Inject,
77
+ args: [MAT_RADIO_DEFAULT_OPTIONS]
78
+ }] }, { type: undefined, decorators: [{
79
+ type: Attribute,
80
+ args: ['tabindex']
81
+ }] }], propDecorators: { title: [{
82
+ type: Input
83
+ }], _tickPosition: [{
84
+ type: Input
85
+ }], tickPosition: [{
86
+ type: Input
87
+ }],
88
+ //@ts-ignore
89
+ contentOnSelect: [{
90
+ type: ContentChild,
91
+ args: ['contentOnSelect']
92
+ }] } });
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tcGFuZWwtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9yYWRpby1wYW5lbC9yYWRpby1wYW5lbC1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3JhZGlvLXBhbmVsL3JhZGlvLXBhbmVsLWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUdqRixPQUFPLEVBQ04sU0FBUyxFQUNULHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsWUFBWSxFQUdaLE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxFQUVSLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTixjQUFjLEVBR2QseUJBQXlCLEVBQ3pCLGVBQWUsRUFDZixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7Ozs7OztBQUU3RTs7R0FFRztBQW9DSCxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsY0FBYztJQVUxRCxJQUNJLFlBQVk7UUFDZixPQUFPLElBQUksQ0FBQyxhQUFhLElBQUssSUFBSSxDQUFDLFVBQWtCLEVBQUUsWUFBWSxDQUFDO0lBQ3JFLENBQUM7SUFDRCxJQUFJLFlBQVksQ0FBQyxHQUFvQjtRQUNwQyxJQUFJLENBQUMsYUFBYSxHQUFHLEdBQUcsQ0FBQztJQUMxQixDQUFDO0lBTUQsWUFDc0MsVUFBeUIsRUFDOUQsVUFBc0IsRUFDdEIsZUFBa0MsRUFDbEMsYUFBMkIsRUFDM0IsZ0JBQTJDLEVBQ0EsYUFBc0IsRUFHakUsaUJBQTBDLEVBQ25CLFFBQWlCO1FBRXhDLEtBQUssQ0FDSixVQUFVLEVBQ1YsVUFBVSxFQUNWLGVBQWUsRUFDZixhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2hCLGFBQWEsRUFDYixpQkFBaUIsRUFDakIsUUFBUSxDQUNSLENBQUM7UUExQ0g7O1dBRUc7UUFFSCxVQUFLLEdBQUcsRUFBRSxDQUFDO0lBdUNYLENBQUM7OEdBNUNXLHVCQUF1QixrQkF1QmQsZUFBZSw2SkFLZixxQkFBcUIsNkJBRWpDLHlCQUF5Qiw2QkFFdEIsVUFBVTtrR0FoQ1YsdUJBQXVCLHMzQkMvRHBDLHVwRUEwREEsc3NGREZhO1lBQ1gsT0FBTyxDQUFDLFlBQVksRUFBRTtnQkFDckIsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUMzRCxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQzdDLENBQUM7U0FDRjs7MkZBRVcsdUJBQXVCO2tCQW5DbkMsU0FBUzsrQkFDQyxzQkFBc0IsVUFJeEIsQ0FBQyxlQUFlLEVBQUUsVUFBVSxDQUFDLFlBQzNCLGdCQUFnQixRQUVwQjt3QkFDTCxLQUFLLEVBQUUsc0JBQXNCO3dCQUM3QiwyQkFBMkIsRUFBRSxTQUFTO3dCQUN0QyxzQkFBc0IsRUFBRSxVQUFVO3dCQUNsQyxpQ0FBaUMsRUFBRSxpQkFBaUI7d0JBQ3BELHFCQUFxQixFQUFFLHFCQUFxQjt3QkFDNUMsb0JBQW9CLEVBQUUsb0JBQW9CO3dCQUMxQyxrQkFBa0IsRUFBRSxrQkFBa0I7d0JBQ3RDLHFFQUFxRTt3QkFDckUsaUJBQWlCLEVBQUUsTUFBTTt3QkFDekIsV0FBVyxFQUFFLElBQUk7d0JBQ2pCLG1CQUFtQixFQUFFLE1BQU07d0JBQzNCLHdCQUF3QixFQUFFLE1BQU07d0JBQ2hDLHlCQUF5QixFQUFFLE1BQU07d0JBQ2pDLHdGQUF3Rjt3QkFDeEYsNEZBQTRGO3dCQUM1RixtQ0FBbUM7d0JBQ25DLFNBQVMsRUFBRSxxQ0FBcUM7cUJBQ2hELG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DO3dCQUNYLE9BQU8sQ0FBQyxZQUFZLEVBQUU7NEJBQ3JCLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQzs0QkFDM0QsVUFBVSxDQUFDLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQzt5QkFDN0MsQ0FBQztxQkFDRjs7MEJBeUJDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsZUFBZTs7MEJBS2xDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMscUJBQXFCOzswQkFDeEMsUUFBUTs7MEJBQ1IsTUFBTTsyQkFBQyx5QkFBeUI7OzBCQUVoQyxTQUFTOzJCQUFDLFVBQVU7eUNBM0J0QixLQUFLO3NCQURKLEtBQUs7Z0JBSVcsYUFBYTtzQkFBN0IsS0FBSztnQkFHRixZQUFZO3NCQURmLEtBQUs7O1FBU04sWUFBWTtRQUNaLGVBQWU7c0JBRmQsWUFBWTt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhbmltYXRlLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcclxuaW1wb3J0IHsgRm9jdXNNb25pdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xyXG5pbXBvcnQgeyBVbmlxdWVTZWxlY3Rpb25EaXNwYXRjaGVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcclxuaW1wb3J0IHtcclxuXHRBdHRyaWJ1dGUsXHJcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcblx0Q2hhbmdlRGV0ZWN0b3JSZWYsXHJcblx0Q29tcG9uZW50LFxyXG5cdENvbnRlbnRDaGlsZCxcclxuXHRFbGVtZW50UmVmLFxyXG5cdEhvc3RCaW5kaW5nLFxyXG5cdEluamVjdCxcclxuXHRJbnB1dCxcclxuXHRPcHRpb25hbCxcclxuXHRUZW1wbGF0ZVJlZlxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG5cdE1hdFJhZGlvQnV0dG9uLFxyXG5cdE1hdFJhZGlvRGVmYXVsdE9wdGlvbnMsXHJcblx0TWF0UmFkaW9Hcm91cCxcclxuXHRNQVRfUkFESU9fREVGQVVMVF9PUFRJT05TLFxyXG5cdE1BVF9SQURJT19HUk9VUFxyXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3JhZGlvJztcclxuaW1wb3J0IHsgQU5JTUFUSU9OX01PRFVMRV9UWVBFIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlci9hbmltYXRpb25zJztcclxuXHJcbi8qKlxyXG4gKiBVc2UgYGJ1aS1yYWRpby1wYW5lbC1pdGVtYCBpbnN0ZWFkIG9mIGBtYXQtcmFkaW8tYnV0dG9uYCBpbiBhIGBidWktcmFkaW8tcGFuZWxgIHRvIGRpc3BsYXkgYW4gb3B0aW9uLlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdidWktcmFkaW8tcGFuZWwtaXRlbScsXHJcblx0dGVtcGxhdGVVcmw6ICcuL3JhZGlvLXBhbmVsLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlVXJsczogWycuL3JhZGlvLXBhbmVsLWl0ZW0uY29tcG9uZW50LnNjc3MnXSxcclxuXHQvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxyXG5cdGlucHV0czogWydkaXNhYmxlUmlwcGxlJywgJ3RhYkluZGV4J10sXHJcblx0ZXhwb3J0QXM6ICdtYXRSYWRpb0J1dHRvbicsXHJcblx0Ly8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1ob3N0LW1ldGFkYXRhLXByb3BlcnR5XHJcblx0aG9zdDoge1xyXG5cdFx0Y2xhc3M6ICdidWktcmFkaW8tcGFuZWwtaXRlbScsXHJcblx0XHQnW2NsYXNzLmJ1aS1yYWRpby1jaGVja2VkXSc6ICdjaGVja2VkJyxcclxuXHRcdCdbY2xhc3MuYnVpLWRpc2FibGVkXSc6ICdkaXNhYmxlZCcsXHJcblx0XHQnW2NsYXNzLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlXSc6ICdfbm9vcEFuaW1hdGlvbnMnLFxyXG5cdFx0J1tjbGFzcy5tYXQtcHJpbWFyeV0nOiAnY29sb3IgPT09IFwicHJpbWFyeVwiJyxcclxuXHRcdCdbY2xhc3MubWF0LWFjY2VudF0nOiAnY29sb3IgPT09IFwiYWNjZW50XCInLFxyXG5cdFx0J1tjbGFzcy5tYXQtd2Fybl0nOiAnY29sb3IgPT09IFwid2FyblwiJyxcclxuXHRcdC8vIE5lZWRzIHRvIGJlIHJlbW92ZWQgc2luY2UgaXQgY2F1c2VzIHNvbWUgYTExeSBpc3N1ZXMgKHNlZSAjMjEyNjYpLlxyXG5cdFx0J1thdHRyLnRhYmluZGV4XSc6ICdudWxsJyxcclxuXHRcdCdbYXR0ci5pZF0nOiAnaWQnLFxyXG5cdFx0J1thdHRyLmFyaWEtbGFiZWxdJzogJ251bGwnLFxyXG5cdFx0J1thdHRyLmFyaWEtbGFiZWxsZWRieV0nOiAnbnVsbCcsXHJcblx0XHQnW2F0dHIuYXJpYS1kZXNjcmliZWRieV0nOiAnbnVsbCcsXHJcblx0XHQvLyBOb3RlOiB1bmRlciBub3JtYWwgY29uZGl0aW9ucyBmb2N1cyBzaG91bGRuJ3QgbGFuZCBvbiB0aGlzIGVsZW1lbnQsIGhvd2V2ZXIgaXQgbWF5IGJlXHJcblx0XHQvLyBwcm9ncmFtbWF0aWNhbGx5IHNldCwgZm9yIGV4YW1wbGUgaW5zaWRlIG9mIGEgZm9jdXMgdHJhcCwgaW4gdGhpcyBjYXNlIHdlIHdhbnQgdG8gZm9yd2FyZFxyXG5cdFx0Ly8gdGhlIGZvY3VzIHRvIHRoZSBuYXRpdmUgZWxlbWVudC5cclxuXHRcdCcoZm9jdXMpJzogJ19pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpJ1xyXG5cdH0sXHJcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcblx0YW5pbWF0aW9uczogW1xyXG5cdFx0dHJpZ2dlcignc2xpZGVJbk91dCcsIFtcclxuXHRcdFx0c3RhdGUoJ3ZvaWQnLCBzdHlsZSh7IGhlaWdodDogJzBweCcsIG92ZXJmbG93OiAnaGlkZGVuJyB9KSksXHJcblx0XHRcdHRyYW5zaXRpb24oJzplbnRlciwgOmxlYXZlJywgYW5pbWF0ZSgnLjI1cycpKVxyXG5cdFx0XSlcclxuXHRdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSYWRpb1BhbmVsSXRlbUNvbXBvbmVudCBleHRlbmRzIE1hdFJhZGlvQnV0dG9uIHtcclxuXHQvKipcclxuXHQgKiBUaGlzIHdpbGwgYmUgZGlzcGxheWVkIGFzIHRoZSBwYW5lbCBoZWFkZXJcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHRpdGxlID0gJyc7XHJcblxyXG5cdC8qKiBUaGUgZGVmYXVsdCBwb3NpdGlvbiBvZiB0aGUgJ3RpY2snIGljb24gcmVsYXRpdmUgdG8gdGhlIHRpdGxlLiAqL1xyXG5cdEBJbnB1dCgpIHByaXZhdGUgX3RpY2tQb3NpdGlvbjogJ3N0YXJ0JyB8ICdlbmQnIHwgdW5kZWZpbmVkO1xyXG5cclxuXHRASW5wdXQoKVxyXG5cdGdldCB0aWNrUG9zaXRpb24oKTogJ3N0YXJ0JyB8ICdlbmQnIHtcclxuXHRcdHJldHVybiB0aGlzLl90aWNrUG9zaXRpb24gfHwgKHRoaXMucmFkaW9Hcm91cCBhcyBhbnkpPy50aWNrUG9zaXRpb247XHJcblx0fVxyXG5cdHNldCB0aWNrUG9zaXRpb24ocG9zOiAnc3RhcnQnIHwgJ2VuZCcpIHtcclxuXHRcdHRoaXMuX3RpY2tQb3NpdGlvbiA9IHBvcztcclxuXHR9XHJcblxyXG5cdEBDb250ZW50Q2hpbGQoJ2NvbnRlbnRPblNlbGVjdCcpXHJcblx0Ly9AdHMtaWdub3JlXHJcblx0Y29udGVudE9uU2VsZWN0OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdEBPcHRpb25hbCgpIEBJbmplY3QoTUFUX1JBRElPX0dST1VQKSByYWRpb0dyb3VwOiBNYXRSYWRpb0dyb3VwLFxyXG5cdFx0ZWxlbWVudFJlZjogRWxlbWVudFJlZixcclxuXHRcdF9jaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcblx0XHRfZm9jdXNNb25pdG9yOiBGb2N1c01vbml0b3IsXHJcblx0XHRfcmFkaW9EaXNwYXRjaGVyOiBVbmlxdWVTZWxlY3Rpb25EaXNwYXRjaGVyLFxyXG5cdFx0QE9wdGlvbmFsKCkgQEluamVjdChBTklNQVRJT05fTU9EVUxFX1RZUEUpIGFuaW1hdGlvbk1vZGU/OiBzdHJpbmcsXHJcblx0XHRAT3B0aW9uYWwoKVxyXG5cdFx0QEluamVjdChNQVRfUkFESU9fREVGQVVMVF9PUFRJT05TKVxyXG5cdFx0X3Byb3ZpZGVyT3ZlcnJpZGU/OiBNYXRSYWRpb0RlZmF1bHRPcHRpb25zLFxyXG5cdFx0QEF0dHJpYnV0ZSgndGFiaW5kZXgnKSB0YWJJbmRleD86IHN0cmluZ1xyXG5cdCkge1xyXG5cdFx0c3VwZXIoXHJcblx0XHRcdHJhZGlvR3JvdXAsXHJcblx0XHRcdGVsZW1lbnRSZWYsXHJcblx0XHRcdF9jaGFuZ2VEZXRlY3RvcixcclxuXHRcdFx0X2ZvY3VzTW9uaXRvcixcclxuXHRcdFx0X3JhZGlvRGlzcGF0Y2hlcixcclxuXHRcdFx0YW5pbWF0aW9uTW9kZSxcclxuXHRcdFx0X3Byb3ZpZGVyT3ZlcnJpZGUsXHJcblx0XHRcdHRhYkluZGV4XHJcblx0XHQpO1xyXG5cdH1cclxufVxyXG4iLCI8bGFiZWxcblx0bWF0UmlwcGxlXG5cdG1hdFJpcHBsZUNvbG9yPVwicmdiYSgxMjgsMTI4LDEyOCwuMSlcIlxuXHRbbWF0UmlwcGxlRGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgY2hlY2tlZFwiXG5cdFthdHRyLmZvcl09XCJpbnB1dElkXCJcblx0I2xhYmVsXG5cdGNsYXNzPVwiYnVpLXJhZGlvLXBhbmVsLWl0ZW0tbGFiZWwgYnVpLWJvcmRlci17eyBjaGVja2VkID8gY29sb3IgOiAnZGVmYXVsdCcgfX1cIlxuPlxuXHQ8ZGl2IGNsYXNzPVwiYnVpLXJhZGlvLXBhbmVsLWl0ZW0td3JhcHBlclwiIFtjbGFzcy5idWktcmFkaW8tdGljay1hdC1lbmRdPVwidGlja1Bvc2l0aW9uID09PSAnZW5kJ1wiPlxuXHRcdDxkaXYgY2xhc3M9XCJidWktbGFiZWwtaGVhZGVyXCI+XG5cdFx0XHQ8c3BhbiBjbGFzcz1cImJ1aS1sYWJlbC10aXRsZVwiIFtpbm5lckhUTUxdPVwidGl0bGVcIj48L3NwYW4+XG5cdFx0XHQ8bmctY29udGVudCBzZWxlY3Q9XCJbYnVpUmFkaW9JdGVtSGVhZGluZ0VuZF1cIj48L25nLWNvbnRlbnQ+XG5cdFx0XHQ8c3BhbiBjbGFzcz1cImJ1aS1yYWRpby1wYW5lbC1pdGVtLWNpcmNsZVwiPlxuXHRcdFx0XHQ8c3BhblxuXHRcdFx0XHRcdGNsYXNzPVwiYnVpLXBlcnNpc3RlbnQtcmlwcGxlXCJcblx0XHRcdFx0XHRtYXRSaXBwbGVcblx0XHRcdFx0XHRtYXRSaXBwbGVDb2xvcj1cInJnYmEoMTI4LDEyOCwxMjgsLjEpXCJcblx0XHRcdFx0XHRbbWF0UmlwcGxlQ2VudGVyZWRdPVwidHJ1ZVwiXG5cdFx0XHRcdFx0W21hdFJpcHBsZVVuYm91bmRlZF09XCJ0cnVlXCJcblx0XHRcdFx0XHRbbWF0UmlwcGxlVHJpZ2dlcl09XCJsYWJlbFwiXG5cdFx0XHRcdFx0W21hdFJpcHBsZVJhZGl1c109XCIyMFwiXG5cdFx0XHRcdFx0Km5nSWY9XCIhZGlzYWJsZWRcIlxuXHRcdFx0XHQ+PC9zcGFuPlxuXHRcdFx0XHQ8bWF0LWljb24gW2NvbG9yXT1cImNvbG9yXCIgKm5nSWY9XCJjaGVja2VkXCI+Y2hlY2tfY2lyY2xlPC9tYXQtaWNvbj5cblx0XHRcdFx0PG1hdC1pY29uICpuZ0lmPVwiIWNoZWNrZWRcIiBjbGFzcz1cImJ1aS1yYWRpby1wYW5lbC1pdGVtLWNpcmNsZS11bmNoZWNrZWRcIj5yYWRpb19idXR0b25fdW5jaGVja2VkPC9tYXQtaWNvbj5cblx0XHRcdDwvc3Bhbj5cblx0XHQ8L2Rpdj5cblx0XHQ8IS0tIFRoZSBhY3R1YWwgJ3JhZGlvJyBwYXJ0IG9mIHRoZSBjb250cm9sLiAtLT5cblx0XHQ8c3BhbiBjbGFzcz1cInJhZGlvLWNvbnRhaW5lclwiPlxuXHRcdFx0PGlucHV0XG5cdFx0XHRcdCNpbnB1dFxuXHRcdFx0XHRjbGFzcz1cIm1hdC1yYWRpby1pbnB1dCBjZGstdmlzdWFsbHktaGlkZGVuXCJcblx0XHRcdFx0dHlwZT1cInJhZGlvXCJcblx0XHRcdFx0W2lkXT1cImlucHV0SWRcIlxuXHRcdFx0XHRbY2hlY2tlZF09XCJjaGVja2VkXCJcblx0XHRcdFx0W2Rpc2FibGVkXT1cImRpc2FibGVkXCJcblx0XHRcdFx0W3RhYkluZGV4XT1cInRhYkluZGV4XCJcblx0XHRcdFx0W2F0dHIubmFtZV09XCJuYW1lXCJcblx0XHRcdFx0W2F0dHIudmFsdWVdPVwidmFsdWVcIlxuXHRcdFx0XHRbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuXHRcdFx0XHRbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiXG5cdFx0XHRcdFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRieVwiXG5cdFx0XHRcdFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiYXJpYURlc2NyaWJlZGJ5XCJcblx0XHRcdFx0KGNoYW5nZSk9XCJfb25JbnB1dEludGVyYWN0aW9uKCRldmVudClcIlxuXHRcdFx0XHQoY2xpY2spPVwiX29uSW5wdXRJbnRlcmFjdGlvbigkZXZlbnQpXCJcblx0XHRcdC8+XG5cdFx0PC9zcGFuPlxuXG5cdFx0PGRpdiBjbGFzcz1cImJ1aS1sYWJlbC1jb250ZW50LWdhcFwiPjwvZGl2PlxuXHRcdDwhLS0gVGhlIGxhYmVsIGNvbnRlbnQgZm9yIHJhZGlvIGNvbnRyb2wuIC0tPlxuXHRcdDxkaXYgY2xhc3M9XCJidWktbGFiZWwtY29udGVudFwiPlxuXHRcdFx0PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXHRcdDwvZGl2PlxuXHRcdDxkaXYgY2xhc3M9XCJidWktbGFiZWwtY29udGVudFwiICpuZ0lmPVwiY29udGVudE9uU2VsZWN0ICYmIGNoZWNrZWRcIiBAc2xpZGVJbk91dD5cblx0XHRcdDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50T25TZWxlY3RcIj48L25nLWNvbnRhaW5lcj5cblx0XHQ8L2Rpdj5cblx0PC9kaXY+XG48L2xhYmVsPlxuIl19