@taiga-ui/addon-commerce 3.58.0 → 3.59.0-canary.10da730

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 (261) hide show
  1. package/components/input-card/abstract-input-card.d.ts +1 -1
  2. package/components/input-card/input-card.component.d.ts +1 -1
  3. package/components/input-card/input-card.directive.d.ts +1 -1
  4. package/components/input-card-grouped/input-card-grouped.component.d.ts +1 -1
  5. package/components/input-cvc/input-cvc.component.d.ts +1 -1
  6. package/components/input-expire/input-expire.component.d.ts +1 -1
  7. package/components/money/money.component.d.ts +1 -1
  8. package/components/money/pipes/fraction-part.pipe.d.ts +1 -1
  9. package/components/money/pipes/integer-part.pipe.d.ts +1 -1
  10. package/components/money/pipes/sign-symbol.pipe.d.ts +1 -1
  11. package/components/thumbnail-card/deprecated.d.ts +1 -1
  12. package/components/thumbnail-card/thumbnail-card.component.d.ts +1 -1
  13. package/{esm2015/components/input-card/abstract-input-card.js → esm2020/components/input-card/abstract-input-card.mjs} +3 -3
  14. package/esm2020/components/input-card/input-card.component.mjs +91 -0
  15. package/{esm2015/components/input-card/input-card.directive.js → esm2020/components/input-card/input-card.directive.mjs} +3 -3
  16. package/{esm2015/components/input-card/input-card.module.js → esm2020/components/input-card/input-card.module.mjs} +9 -11
  17. package/esm2020/components/input-card-grouped/input-card-grouped.component.mjs +337 -0
  18. package/{esm2015/components/input-card-grouped/input-card-grouped.module.js → esm2020/components/input-card-grouped/input-card-grouped.module.mjs} +19 -21
  19. package/esm2020/components/input-card-grouped/input-card-grouped.options.mjs +14 -0
  20. package/esm2020/components/input-card-grouped/input-card-grouped.providers.mjs +28 -0
  21. package/esm2020/components/input-cvc/input-cvc.component.mjs +91 -0
  22. package/{esm2015/components/input-cvc/input-cvc.module.js → esm2020/components/input-cvc/input-cvc.module.mjs} +8 -10
  23. package/esm2020/components/input-expire/input-expire.component.mjs +73 -0
  24. package/{esm2015/components/input-expire/input-expire.module.js → esm2020/components/input-expire/input-expire.module.mjs} +8 -10
  25. package/esm2020/components/money/money.component.mjs +78 -0
  26. package/{esm2015/components/money/money.module.js → esm2020/components/money/money.module.mjs} +5 -5
  27. package/{esm2015/components/money/pipes/fraction-part.pipe.js → esm2020/components/money/pipes/fraction-part.pipe.mjs} +3 -3
  28. package/{esm2015/components/money/pipes/integer-part.pipe.js → esm2020/components/money/pipes/integer-part.pipe.mjs} +9 -5
  29. package/{esm2015/components/money/pipes/sign-symbol.pipe.js → esm2020/components/money/pipes/sign-symbol.pipe.mjs} +3 -3
  30. package/esm2020/components/money/utils/format-fraction-part.mjs +11 -0
  31. package/esm2020/components/thumbnail-card/deprecated.mjs +35 -0
  32. package/{esm2015/components/thumbnail-card/thumbnail-card.component.js → esm2020/components/thumbnail-card/thumbnail-card.component.mjs} +7 -12
  33. package/{esm2015/components/thumbnail-card/thumbnail-card.module.js → esm2020/components/thumbnail-card/thumbnail-card.module.mjs} +5 -5
  34. package/{esm2015/pipes/currency/currency.module.js → esm2020/pipes/currency/currency.module.mjs} +4 -4
  35. package/{esm2015/pipes/currency/currency.pipe.js → esm2020/pipes/currency/currency.pipe.mjs} +3 -3
  36. package/{esm2015/pipes/format-card/format-card.module.js → esm2020/pipes/format-card/format-card.module.mjs} +4 -4
  37. package/{esm2015/pipes/format-card/format-card.pipe.js → esm2020/pipes/format-card/format-card.pipe.mjs} +3 -3
  38. package/{esm2015/utils/get-code-by-currency.js → esm2020/utils/get-code-by-currency.mjs} +2 -3
  39. package/{esm2015/utils/get-currency-by-code.js → esm2020/utils/get-currency-by-code.mjs} +2 -3
  40. package/esm2020/utils/get-payment-system.mjs +105 -0
  41. package/esm2020/validators/card-expire.validator.mjs +8 -0
  42. package/esm2020/validators/card-number.validator.mjs +8 -0
  43. package/fesm2015/taiga-ui-addon-commerce-components-input-card-grouped.mjs +450 -0
  44. package/fesm2015/taiga-ui-addon-commerce-components-input-card-grouped.mjs.map +1 -0
  45. package/fesm2015/taiga-ui-addon-commerce-components-input-card.mjs +230 -0
  46. package/fesm2015/taiga-ui-addon-commerce-components-input-card.mjs.map +1 -0
  47. package/fesm2015/taiga-ui-addon-commerce-components-input-cvc.mjs +128 -0
  48. package/fesm2015/taiga-ui-addon-commerce-components-input-cvc.mjs.map +1 -0
  49. package/fesm2015/taiga-ui-addon-commerce-components-input-expire.mjs +110 -0
  50. package/fesm2015/taiga-ui-addon-commerce-components-input-expire.mjs.map +1 -0
  51. package/fesm2015/taiga-ui-addon-commerce-components-money.mjs +205 -0
  52. package/fesm2015/taiga-ui-addon-commerce-components-money.mjs.map +1 -0
  53. package/fesm2015/taiga-ui-addon-commerce-components-thumbnail-card.mjs +100 -0
  54. package/fesm2015/taiga-ui-addon-commerce-components-thumbnail-card.mjs.map +1 -0
  55. package/fesm2015/{taiga-ui-addon-commerce-components.js → taiga-ui-addon-commerce-components.mjs} +1 -1
  56. package/fesm2015/taiga-ui-addon-commerce-components.mjs.map +1 -0
  57. package/fesm2015/{taiga-ui-addon-commerce-constants.js → taiga-ui-addon-commerce-constants.mjs} +1 -1
  58. package/fesm2015/taiga-ui-addon-commerce-constants.mjs.map +1 -0
  59. package/fesm2015/{taiga-ui-addon-commerce-enums.js → taiga-ui-addon-commerce-enums.mjs} +1 -1
  60. package/fesm2015/taiga-ui-addon-commerce-enums.mjs.map +1 -0
  61. package/fesm2015/taiga-ui-addon-commerce-interfaces.mjs +4 -0
  62. package/fesm2015/taiga-ui-addon-commerce-interfaces.mjs.map +1 -0
  63. package/fesm2015/{taiga-ui-addon-commerce-pipes.js → taiga-ui-addon-commerce-pipes.mjs} +15 -15
  64. package/fesm2015/taiga-ui-addon-commerce-pipes.mjs.map +1 -0
  65. package/fesm2015/{taiga-ui-addon-commerce-tokens.js → taiga-ui-addon-commerce-tokens.mjs} +1 -1
  66. package/fesm2015/taiga-ui-addon-commerce-tokens.mjs.map +1 -0
  67. package/fesm2015/taiga-ui-addon-commerce-types.mjs +4 -0
  68. package/fesm2015/taiga-ui-addon-commerce-types.mjs.map +1 -0
  69. package/fesm2015/{taiga-ui-addon-commerce-utils.js → taiga-ui-addon-commerce-utils.mjs} +1 -1
  70. package/fesm2015/taiga-ui-addon-commerce-utils.mjs.map +1 -0
  71. package/fesm2015/{taiga-ui-addon-commerce-validators.js → taiga-ui-addon-commerce-validators.mjs} +1 -1
  72. package/fesm2015/taiga-ui-addon-commerce-validators.mjs.map +1 -0
  73. package/fesm2015/{taiga-ui-addon-commerce.js → taiga-ui-addon-commerce.mjs} +1 -1
  74. package/fesm2015/taiga-ui-addon-commerce.mjs.map +1 -0
  75. package/fesm2020/taiga-ui-addon-commerce-components-input-card-grouped.mjs +440 -0
  76. package/fesm2020/taiga-ui-addon-commerce-components-input-card-grouped.mjs.map +1 -0
  77. package/{fesm2015/taiga-ui-addon-commerce-components-input-card.js → fesm2020/taiga-ui-addon-commerce-components-input-card.mjs} +28 -38
  78. package/fesm2020/taiga-ui-addon-commerce-components-input-card.mjs.map +1 -0
  79. package/{fesm2015/taiga-ui-addon-commerce-components-input-cvc.js → fesm2020/taiga-ui-addon-commerce-components-input-cvc.mjs} +27 -36
  80. package/fesm2020/taiga-ui-addon-commerce-components-input-cvc.mjs.map +1 -0
  81. package/{fesm2015/taiga-ui-addon-commerce-components-input-expire.js → fesm2020/taiga-ui-addon-commerce-components-input-expire.mjs} +20 -29
  82. package/fesm2020/taiga-ui-addon-commerce-components-input-expire.mjs.map +1 -0
  83. package/{fesm2015/taiga-ui-addon-commerce-components-money.js → fesm2020/taiga-ui-addon-commerce-components-money.mjs} +67 -65
  84. package/fesm2020/taiga-ui-addon-commerce-components-money.mjs.map +1 -0
  85. package/{fesm2015/taiga-ui-addon-commerce-components-thumbnail-card.js → fesm2020/taiga-ui-addon-commerce-components-thumbnail-card.mjs} +19 -29
  86. package/fesm2020/taiga-ui-addon-commerce-components-thumbnail-card.mjs.map +1 -0
  87. package/fesm2020/taiga-ui-addon-commerce-components.mjs +11 -0
  88. package/fesm2020/taiga-ui-addon-commerce-components.mjs.map +1 -0
  89. package/fesm2020/taiga-ui-addon-commerce-constants.mjs +103 -0
  90. package/fesm2020/taiga-ui-addon-commerce-constants.mjs.map +1 -0
  91. package/fesm2020/taiga-ui-addon-commerce-enums.mjs +721 -0
  92. package/fesm2020/taiga-ui-addon-commerce-enums.mjs.map +1 -0
  93. package/fesm2020/taiga-ui-addon-commerce-interfaces.mjs +4 -0
  94. package/fesm2020/taiga-ui-addon-commerce-interfaces.mjs.map +1 -0
  95. package/fesm2020/taiga-ui-addon-commerce-pipes.mjs +67 -0
  96. package/fesm2020/taiga-ui-addon-commerce-pipes.mjs.map +1 -0
  97. package/fesm2020/taiga-ui-addon-commerce-tokens.mjs +23 -0
  98. package/fesm2020/taiga-ui-addon-commerce-tokens.mjs.map +1 -0
  99. package/fesm2020/taiga-ui-addon-commerce-types.mjs +4 -0
  100. package/fesm2020/taiga-ui-addon-commerce-types.mjs.map +1 -0
  101. package/fesm2020/taiga-ui-addon-commerce-utils.mjs +443 -0
  102. package/fesm2020/taiga-ui-addon-commerce-utils.mjs.map +1 -0
  103. package/fesm2020/taiga-ui-addon-commerce-validators.mjs +25 -0
  104. package/fesm2020/taiga-ui-addon-commerce-validators.mjs.map +1 -0
  105. package/fesm2020/taiga-ui-addon-commerce.mjs +14 -0
  106. package/fesm2020/taiga-ui-addon-commerce.mjs.map +1 -0
  107. package/package.json +172 -39
  108. package/pipes/currency/currency.pipe.d.ts +1 -1
  109. package/pipes/format-card/format-card.pipe.d.ts +1 -1
  110. package/types/code-length.d.ts +1 -1
  111. package/types/currency-variants.d.ts +2 -2
  112. package/types/money-sign.d.ts +2 -2
  113. package/types/payment-system.d.ts +1 -1
  114. package/bundles/taiga-ui-addon-commerce-components-input-card-grouped.umd.js +0 -917
  115. package/bundles/taiga-ui-addon-commerce-components-input-card-grouped.umd.js.map +0 -1
  116. package/bundles/taiga-ui-addon-commerce-components-input-card.umd.js +0 -635
  117. package/bundles/taiga-ui-addon-commerce-components-input-card.umd.js.map +0 -1
  118. package/bundles/taiga-ui-addon-commerce-components-input-cvc.umd.js +0 -507
  119. package/bundles/taiga-ui-addon-commerce-components-input-cvc.umd.js.map +0 -1
  120. package/bundles/taiga-ui-addon-commerce-components-input-expire.umd.js +0 -480
  121. package/bundles/taiga-ui-addon-commerce-components-input-expire.umd.js.map +0 -1
  122. package/bundles/taiga-ui-addon-commerce-components-money.umd.js +0 -272
  123. package/bundles/taiga-ui-addon-commerce-components-money.umd.js.map +0 -1
  124. package/bundles/taiga-ui-addon-commerce-components-thumbnail-card.umd.js +0 -475
  125. package/bundles/taiga-ui-addon-commerce-components-thumbnail-card.umd.js.map +0 -1
  126. package/bundles/taiga-ui-addon-commerce-components.umd.js +0 -51
  127. package/bundles/taiga-ui-addon-commerce-components.umd.js.map +0 -1
  128. package/bundles/taiga-ui-addon-commerce-constants.umd.js +0 -114
  129. package/bundles/taiga-ui-addon-commerce-constants.umd.js.map +0 -1
  130. package/bundles/taiga-ui-addon-commerce-enums.umd.js +0 -729
  131. package/bundles/taiga-ui-addon-commerce-enums.umd.js.map +0 -1
  132. package/bundles/taiga-ui-addon-commerce-interfaces.umd.js +0 -11
  133. package/bundles/taiga-ui-addon-commerce-interfaces.umd.js.map +0 -1
  134. package/bundles/taiga-ui-addon-commerce-pipes.umd.js +0 -110
  135. package/bundles/taiga-ui-addon-commerce-pipes.umd.js.map +0 -1
  136. package/bundles/taiga-ui-addon-commerce-tokens.umd.js +0 -31
  137. package/bundles/taiga-ui-addon-commerce-tokens.umd.js.map +0 -1
  138. package/bundles/taiga-ui-addon-commerce-types.umd.js +0 -11
  139. package/bundles/taiga-ui-addon-commerce-types.umd.js.map +0 -1
  140. package/bundles/taiga-ui-addon-commerce-utils.umd.js +0 -793
  141. package/bundles/taiga-ui-addon-commerce-utils.umd.js.map +0 -1
  142. package/bundles/taiga-ui-addon-commerce-validators.umd.js +0 -40
  143. package/bundles/taiga-ui-addon-commerce-validators.umd.js.map +0 -1
  144. package/bundles/taiga-ui-addon-commerce.umd.js +0 -69
  145. package/bundles/taiga-ui-addon-commerce.umd.js.map +0 -1
  146. package/components/input-card/package.json +0 -10
  147. package/components/input-card/taiga-ui-addon-commerce-components-input-card.d.ts +0 -5
  148. package/components/input-card-grouped/package.json +0 -10
  149. package/components/input-card-grouped/taiga-ui-addon-commerce-components-input-card-grouped.d.ts +0 -5
  150. package/components/input-cvc/package.json +0 -10
  151. package/components/input-cvc/taiga-ui-addon-commerce-components-input-cvc.d.ts +0 -5
  152. package/components/input-expire/package.json +0 -10
  153. package/components/input-expire/taiga-ui-addon-commerce-components-input-expire.d.ts +0 -5
  154. package/components/money/package.json +0 -10
  155. package/components/money/taiga-ui-addon-commerce-components-money.d.ts +0 -5
  156. package/components/package.json +0 -10
  157. package/components/taiga-ui-addon-commerce-components.d.ts +0 -5
  158. package/components/thumbnail-card/package.json +0 -10
  159. package/components/thumbnail-card/taiga-ui-addon-commerce-components-thumbnail-card.d.ts +0 -5
  160. package/constants/package.json +0 -10
  161. package/constants/taiga-ui-addon-commerce-constants.d.ts +0 -5
  162. package/enums/package.json +0 -10
  163. package/enums/taiga-ui-addon-commerce-enums.d.ts +0 -5
  164. package/esm2015/components/input-card/input-card.component.js +0 -99
  165. package/esm2015/components/input-card-grouped/input-card-grouped.component.js +0 -357
  166. package/esm2015/components/input-card-grouped/input-card-grouped.options.js +0 -9
  167. package/esm2015/components/input-card-grouped/input-card-grouped.providers.js +0 -29
  168. package/esm2015/components/input-cvc/input-cvc.component.js +0 -98
  169. package/esm2015/components/input-expire/input-expire.component.js +0 -80
  170. package/esm2015/components/money/money.component.js +0 -83
  171. package/esm2015/components/money/utils/format-fraction-part.js +0 -8
  172. package/esm2015/components/thumbnail-card/deprecated.js +0 -40
  173. package/esm2015/utils/get-payment-system.js +0 -106
  174. package/esm2015/validators/card-expire.validator.js +0 -9
  175. package/esm2015/validators/card-number.validator.js +0 -8
  176. package/fesm2015/taiga-ui-addon-commerce-components-input-card-grouped.js +0 -458
  177. package/fesm2015/taiga-ui-addon-commerce-components-input-card-grouped.js.map +0 -1
  178. package/fesm2015/taiga-ui-addon-commerce-components-input-card.js.map +0 -1
  179. package/fesm2015/taiga-ui-addon-commerce-components-input-cvc.js.map +0 -1
  180. package/fesm2015/taiga-ui-addon-commerce-components-input-expire.js.map +0 -1
  181. package/fesm2015/taiga-ui-addon-commerce-components-money.js.map +0 -1
  182. package/fesm2015/taiga-ui-addon-commerce-components-thumbnail-card.js.map +0 -1
  183. package/fesm2015/taiga-ui-addon-commerce-components.js.map +0 -1
  184. package/fesm2015/taiga-ui-addon-commerce-constants.js.map +0 -1
  185. package/fesm2015/taiga-ui-addon-commerce-enums.js.map +0 -1
  186. package/fesm2015/taiga-ui-addon-commerce-interfaces.js +0 -4
  187. package/fesm2015/taiga-ui-addon-commerce-interfaces.js.map +0 -1
  188. package/fesm2015/taiga-ui-addon-commerce-pipes.js.map +0 -1
  189. package/fesm2015/taiga-ui-addon-commerce-tokens.js.map +0 -1
  190. package/fesm2015/taiga-ui-addon-commerce-types.js +0 -4
  191. package/fesm2015/taiga-ui-addon-commerce-types.js.map +0 -1
  192. package/fesm2015/taiga-ui-addon-commerce-utils.js.map +0 -1
  193. package/fesm2015/taiga-ui-addon-commerce-validators.js.map +0 -1
  194. package/fesm2015/taiga-ui-addon-commerce.js.map +0 -1
  195. package/interfaces/package.json +0 -10
  196. package/interfaces/taiga-ui-addon-commerce-interfaces.d.ts +0 -5
  197. package/pipes/package.json +0 -10
  198. package/pipes/taiga-ui-addon-commerce-pipes.d.ts +0 -5
  199. package/taiga-ui-addon-commerce.d.ts +0 -5
  200. package/tokens/package.json +0 -10
  201. package/tokens/taiga-ui-addon-commerce-tokens.d.ts +0 -5
  202. package/types/package.json +0 -10
  203. package/types/taiga-ui-addon-commerce-types.d.ts +0 -5
  204. package/utils/package.json +0 -10
  205. package/utils/taiga-ui-addon-commerce-utils.d.ts +0 -5
  206. package/validators/package.json +0 -10
  207. package/validators/taiga-ui-addon-commerce-validators.d.ts +0 -5
  208. /package/{esm2015/components/index.js → esm2020/components/index.mjs} +0 -0
  209. /package/{esm2015/components/input-card/index.js → esm2020/components/input-card/index.mjs} +0 -0
  210. /package/{esm2015/components/input-card/input-card.options.js → esm2020/components/input-card/input-card.options.mjs} +0 -0
  211. /package/{esm2015/components/input-card/taiga-ui-addon-commerce-components-input-card.js → esm2020/components/input-card/taiga-ui-addon-commerce-components-input-card.mjs} +0 -0
  212. /package/{esm2015/components/input-card-grouped/index.js → esm2020/components/input-card-grouped/index.mjs} +0 -0
  213. /package/{esm2015/components/input-card-grouped/taiga-ui-addon-commerce-components-input-card-grouped.js → esm2020/components/input-card-grouped/taiga-ui-addon-commerce-components-input-card-grouped.mjs} +0 -0
  214. /package/{esm2015/components/input-cvc/index.js → esm2020/components/input-cvc/index.mjs} +0 -0
  215. /package/{esm2015/components/input-cvc/taiga-ui-addon-commerce-components-input-cvc.js → esm2020/components/input-cvc/taiga-ui-addon-commerce-components-input-cvc.mjs} +0 -0
  216. /package/{esm2015/components/input-expire/index.js → esm2020/components/input-expire/index.mjs} +0 -0
  217. /package/{esm2015/components/input-expire/taiga-ui-addon-commerce-components-input-expire.js → esm2020/components/input-expire/taiga-ui-addon-commerce-components-input-expire.mjs} +0 -0
  218. /package/{esm2015/components/money/index.js → esm2020/components/money/index.mjs} +0 -0
  219. /package/{esm2015/components/money/money.options.js → esm2020/components/money/money.options.mjs} +0 -0
  220. /package/{esm2015/components/money/taiga-ui-addon-commerce-components-money.js → esm2020/components/money/taiga-ui-addon-commerce-components-money.mjs} +0 -0
  221. /package/{esm2015/components/money/utils/format-sign-symbol.js → esm2020/components/money/utils/format-sign-symbol.mjs} +0 -0
  222. /package/{esm2015/components/taiga-ui-addon-commerce-components.js → esm2020/components/taiga-ui-addon-commerce-components.mjs} +0 -0
  223. /package/{esm2015/components/thumbnail-card/index.js → esm2020/components/thumbnail-card/index.mjs} +0 -0
  224. /package/{esm2015/components/thumbnail-card/taiga-ui-addon-commerce-components-thumbnail-card.js → esm2020/components/thumbnail-card/taiga-ui-addon-commerce-components-thumbnail-card.mjs} +0 -0
  225. /package/{esm2015/constants/card-holder-mask.js → esm2020/constants/card-holder-mask.mjs} +0 -0
  226. /package/{esm2015/constants/card-mask.js → esm2020/constants/card-mask.mjs} +0 -0
  227. /package/{esm2015/constants/default-card-validator.js → esm2020/constants/default-card-validator.mjs} +0 -0
  228. /package/{esm2015/constants/index.js → esm2020/constants/index.mjs} +0 -0
  229. /package/{esm2015/constants/taiga-ui-addon-commerce-constants.js → esm2020/constants/taiga-ui-addon-commerce-constants.mjs} +0 -0
  230. /package/{esm2015/enums/currency-code.js → esm2020/enums/currency-code.mjs} +0 -0
  231. /package/{esm2015/enums/currency.js → esm2020/enums/currency.mjs} +0 -0
  232. /package/{esm2015/enums/index.js → esm2020/enums/index.mjs} +0 -0
  233. /package/{esm2015/enums/taiga-ui-addon-commerce-enums.js → esm2020/enums/taiga-ui-addon-commerce-enums.mjs} +0 -0
  234. /package/{esm2015/index.js → esm2020/index.mjs} +0 -0
  235. /package/{esm2015/interfaces/card.js → esm2020/interfaces/card.mjs} +0 -0
  236. /package/{esm2015/interfaces/index.js → esm2020/interfaces/index.mjs} +0 -0
  237. /package/{esm2015/interfaces/taiga-ui-addon-commerce-interfaces.js → esm2020/interfaces/taiga-ui-addon-commerce-interfaces.mjs} +0 -0
  238. /package/{esm2015/pipes/index.js → esm2020/pipes/index.mjs} +0 -0
  239. /package/{esm2015/pipes/taiga-ui-addon-commerce-pipes.js → esm2020/pipes/taiga-ui-addon-commerce-pipes.mjs} +0 -0
  240. /package/{esm2015/taiga-ui-addon-commerce.js → esm2020/taiga-ui-addon-commerce.mjs} +0 -0
  241. /package/{esm2015/tokens/i18n.js → esm2020/tokens/i18n.mjs} +0 -0
  242. /package/{esm2015/tokens/index.js → esm2020/tokens/index.mjs} +0 -0
  243. /package/{esm2015/tokens/taiga-ui-addon-commerce-tokens.js → esm2020/tokens/taiga-ui-addon-commerce-tokens.mjs} +0 -0
  244. /package/{esm2015/types/code-length.js → esm2020/types/code-length.mjs} +0 -0
  245. /package/{esm2015/types/currency-variants.js → esm2020/types/currency-variants.mjs} +0 -0
  246. /package/{esm2015/types/index.js → esm2020/types/index.mjs} +0 -0
  247. /package/{esm2015/types/money-sign.js → esm2020/types/money-sign.mjs} +0 -0
  248. /package/{esm2015/types/payment-system.js → esm2020/types/payment-system.mjs} +0 -0
  249. /package/{esm2015/types/taiga-ui-addon-commerce-types.js → esm2020/types/taiga-ui-addon-commerce-types.mjs} +0 -0
  250. /package/{esm2015/utils/create-auto-corrected-expire-pipe.js → esm2020/utils/create-auto-corrected-expire-pipe.mjs} +0 -0
  251. /package/{esm2015/utils/format-currency.js → esm2020/utils/format-currency.mjs} +0 -0
  252. /package/{esm2015/utils/get-currency-symbol.js → esm2020/utils/get-currency-symbol.mjs} +0 -0
  253. /package/{esm2015/utils/index.js → esm2020/utils/index.mjs} +0 -0
  254. /package/{esm2015/utils/is-card-length-valid.js → esm2020/utils/is-card-length-valid.mjs} +0 -0
  255. /package/{esm2015/utils/is-card-number-valid.js → esm2020/utils/is-card-number-valid.mjs} +0 -0
  256. /package/{esm2015/utils/is-expire-valid.js → esm2020/utils/is-expire-valid.mjs} +0 -0
  257. /package/{esm2015/utils/payment-system-icons.js → esm2020/utils/payment-system-icons.mjs} +0 -0
  258. /package/{esm2015/utils/taiga-ui-addon-commerce-utils.js → esm2020/utils/taiga-ui-addon-commerce-utils.mjs} +0 -0
  259. /package/{esm2015/validators/index.js → esm2020/validators/index.mjs} +0 -0
  260. /package/{esm2015/validators/luhn.validator.js → esm2020/validators/luhn.validator.mjs} +0 -0
  261. /package/{esm2015/validators/taiga-ui-addon-commerce-validators.js → esm2020/validators/taiga-ui-addon-commerce-validators.mjs} +0 -0
@@ -1,357 +0,0 @@
1
- import { __decorate } from "tslib";
2
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ElementRef, EventEmitter, HostListener, Inject, Input, Optional, Output, Self, TemplateRef, ViewChild, } from '@angular/core';
3
- import { NgControl } from '@angular/forms';
4
- import { maskitoDateOptionsGenerator } from '@maskito/kit';
5
- import { AbstractTuiInputCard } from '@taiga-ui/addon-commerce/components/input-card';
6
- import { TUI_CARD_MASK } from '@taiga-ui/addon-commerce/constants';
7
- import { tuiAsControl, tuiAsFocusableItemAccessor, TuiAutoFocusDirective, tuiIsElement, tuiIsInput, tuiIsNativeFocused, tuiIsNativeFocusedIn, tuiPure, } from '@taiga-ui/cdk';
8
- import { MODE_PROVIDER, TEXTFIELD_CONTROLLER_PROVIDER, TUI_COMMON_ICONS, TUI_DIGIT_REGEXP, TUI_MODE, TUI_NON_DIGIT_REGEXP, TUI_TEXTFIELD_WATCHED_CONTROLLER, tuiAsDataListHost, TuiDataListComponent, TuiDataListDirective, } from '@taiga-ui/core';
9
- import { TUI_ARROW_OPTIONS } from '@taiga-ui/kit';
10
- import { TUI_INPUT_CARD_GROUPED_OPTIONS, } from './input-card-grouped.options';
11
- import { TUI_INPUT_CARD_GROUPED_TEXTS, } from './input-card-grouped.providers';
12
- import * as i0 from "@angular/core";
13
- import * as i1 from "@taiga-ui/core";
14
- import * as i2 from "@angular/common";
15
- import * as i3 from "@taiga-ui/cdk";
16
- import * as i4 from "@maskito/angular";
17
- import * as i5 from "@angular/forms";
18
- import * as i6 from "@tinkoff/ng-polymorpheus";
19
- import * as i7 from "@taiga-ui/addon-commerce/pipes";
20
- import * as i8 from "rxjs";
21
- const EXPIRE_COMPLETE_LENGTH = 5; // MM/YY
22
- export class TuiInputCardGroupedComponent extends AbstractTuiInputCard {
23
- constructor(control, cdr, el, mode$, cardGroupedTexts$, controller, icons, arrowOptions, options) {
24
- super(control, cdr, options);
25
- this.el = el;
26
- this.mode$ = mode$;
27
- this.cardGroupedTexts$ = cardGroupedTexts$;
28
- this.controller = controller;
29
- this.icons = icons;
30
- this.arrowOptions = arrowOptions;
31
- this.expireInert = false;
32
- this.exampleText = this.options.exampleText;
33
- this.cardValidator = this.options.cardValidator;
34
- this.autofilledChange = new EventEmitter();
35
- this.exampleTextCVC = this.options.exampleTextCVC;
36
- this.maskCVC = {
37
- mask: new Array(3).fill(TUI_DIGIT_REGEXP),
38
- };
39
- this.maskCard = {
40
- mask: TUI_CARD_MASK,
41
- };
42
- this.maskExpire = maskitoDateOptionsGenerator({
43
- mode: 'mm/yy',
44
- separator: '/',
45
- });
46
- this.open = false;
47
- }
48
- set codeLength(length) {
49
- this.exampleTextCVC = '0'.repeat(length);
50
- this.maskCVC = {
51
- mask: new Array(length).fill(TUI_DIGIT_REGEXP),
52
- };
53
- }
54
- get nativeFocusableElement() {
55
- var _a, _b;
56
- return (_b = (_a = this.inputCard) === null || _a === void 0 ? void 0 : _a.nativeElement) !== null && _b !== void 0 ? _b : null;
57
- }
58
- get focused() {
59
- return this.open || tuiIsNativeFocusedIn(this.el.nativeElement);
60
- }
61
- get appearance() {
62
- return this.controller.appearance;
63
- }
64
- get card() {
65
- var _a;
66
- return ((_a = this.value) === null || _a === void 0 ? void 0 : _a.card) || '';
67
- }
68
- get expire() {
69
- var _a;
70
- return ((_a = this.value) === null || _a === void 0 ? void 0 : _a.expire) || '';
71
- }
72
- get cvc() {
73
- var _a;
74
- return ((_a = this.value) === null || _a === void 0 ? void 0 : _a.cvc) || '';
75
- }
76
- get hasCleaner() {
77
- var _a, _b;
78
- return !!((_b = (_a = this.value) === null || _a === void 0 ? void 0 : _a.card) === null || _b === void 0 ? void 0 : _b.trim()) && !this.readOnly && !this.computedDisabled;
79
- }
80
- get hasDropdown() {
81
- return !!this.dropdown;
82
- }
83
- get placeholderRaised() {
84
- return (this.computedFocused && !this.readOnly) || this.hasCardNumber;
85
- }
86
- get hasCardNumber() {
87
- var _a, _b;
88
- return !!((_b = (_a = this.value) === null || _a === void 0 ? void 0 : _a.card) === null || _b === void 0 ? void 0 : _b.trim());
89
- }
90
- get idCard() {
91
- return `${this.id}_card`;
92
- }
93
- get idExpire() {
94
- return `${this.id}_expire`;
95
- }
96
- get idCVC() {
97
- return `${this.id}_cvc`;
98
- }
99
- get isCardCollapsed() {
100
- return this.isFocusable(this.card) && !this.cardFocused;
101
- }
102
- get autocompleteExpire() {
103
- return this.autocompleteEnabled ? 'cc-exp' : 'off';
104
- }
105
- get autocompleteCVC() {
106
- return this.autocompleteEnabled ? 'cc-csc' : 'off';
107
- }
108
- get tailLength() {
109
- return this.hasExtraSpace ? 5 : 4;
110
- }
111
- // Safari expiration date autofill workaround
112
- get name() {
113
- return this.autocompleteEnabled ? 'ccexpiryyear' : null;
114
- }
115
- get cardPrefilled() {
116
- return !!this.card.match(TUI_NON_DIGIT_REGEXP);
117
- }
118
- get cvcPrefilled() {
119
- return !!this.cvc.match(TUI_NON_DIGIT_REGEXP);
120
- }
121
- get cardFocusable() {
122
- return this.focusable && !this.cardPrefilled;
123
- }
124
- get expireFocusable() {
125
- return this.isFocusable(this.card) && !this.expireInert;
126
- }
127
- get cvcFocusable() {
128
- return this.isFocusable(this.card);
129
- }
130
- get masked() {
131
- return this.cardPrefilled ? `*${this.card.slice(-4)}` : '*';
132
- }
133
- get expireSelectionStart() {
134
- var _a;
135
- return ((_a = this.inputExpire) === null || _a === void 0 ? void 0 : _a.nativeElement.selectionStart) || 0;
136
- }
137
- onEsc() {
138
- this.open = false;
139
- }
140
- onArrow(element, step) {
141
- var _a;
142
- this.open = this.hasDropdown;
143
- this.cdr.detectChanges();
144
- (_a = this.datalist) === null || _a === void 0 ? void 0 : _a.onKeyDownArrow(element, step);
145
- }
146
- handleOption(option) {
147
- var _a, _b;
148
- const { card = '', expire = '', cvc = '' } = option;
149
- const { bin } = this;
150
- const element = (!expire && ((_a = this.inputExpire) === null || _a === void 0 ? void 0 : _a.nativeElement)) || ((_b = this.inputCVC) === null || _b === void 0 ? void 0 : _b.nativeElement);
151
- this.value = { card, expire, cvc };
152
- this.updateBin(bin);
153
- this.open = false;
154
- this.expireInert = !!expire;
155
- element === null || element === void 0 ? void 0 : element.focus();
156
- }
157
- onCardChange(card) {
158
- const { value, bin } = this;
159
- const parsed = card.split(' ').join('');
160
- if (value && value.card === parsed) {
161
- return;
162
- }
163
- this.updateProperty(parsed, 'card');
164
- this.updateBin(bin);
165
- if (this.cardValidator(this.card) && !this.expire && this.inputExpire) {
166
- this.focusExpire();
167
- }
168
- }
169
- onExpireChange(expire) {
170
- this.updateProperty(expire, 'expire');
171
- if (expire.length === EXPIRE_COMPLETE_LENGTH &&
172
- this.expireSelectionStart >= EXPIRE_COMPLETE_LENGTH) {
173
- this.focusCVC();
174
- }
175
- }
176
- onCVCChange(cvc) {
177
- this.updateProperty(cvc, 'cvc');
178
- }
179
- transform({ offsetWidth }) {
180
- return this.isCardCollapsed ? `translate3d(${offsetWidth}px, 0, 0)` : '';
181
- }
182
- onActiveZoneChange(active) {
183
- this.updateFocused(active);
184
- this.open = active && this.open;
185
- }
186
- onMouseDown(event) {
187
- if (tuiIsElement(event.target) && tuiIsInput(event.target)) {
188
- return;
189
- }
190
- event.preventDefault();
191
- this.focusInput();
192
- }
193
- onScroll({ currentTarget }) {
194
- if (tuiIsElement(currentTarget)) {
195
- currentTarget.scrollLeft = 0;
196
- }
197
- }
198
- clear() {
199
- this.expireInert = false;
200
- this.value = null;
201
- this.focusCard();
202
- }
203
- toggle() {
204
- this.open = !this.open;
205
- }
206
- writeValue(value) {
207
- const { bin } = this;
208
- super.writeValue(value);
209
- this.updateBin(bin);
210
- this.expireInert = !!this.expire && this.cardPrefilled;
211
- }
212
- /** Public API for manual focus management */
213
- focusCard() {
214
- var _a;
215
- (_a = this.cardNumberAutofocusRef) === null || _a === void 0 ? void 0 : _a.focus();
216
- }
217
- focusExpire() {
218
- var _a;
219
- (_a = this.expireCardAutofocusRef) === null || _a === void 0 ? void 0 : _a.focus();
220
- }
221
- focusCVC() {
222
- var _a;
223
- (_a = this.cvcCardAutofocusRef) === null || _a === void 0 ? void 0 : _a.focus();
224
- }
225
- get cardFocused() {
226
- return !!this.inputCard && tuiIsNativeFocused(this.inputCard.nativeElement);
227
- }
228
- get hasExtraSpace() {
229
- return this.card.length % 4 > 0;
230
- }
231
- isFocusable(card) {
232
- return this.focusable && (this.cardValidator(card) || this.cardPrefilled);
233
- }
234
- updateBin(oldBin) {
235
- const { bin } = this;
236
- if (bin !== oldBin && !this.cardPrefilled) {
237
- this.binChange.emit(bin);
238
- }
239
- }
240
- updateProperty(value, propName) {
241
- const { card = '', expire = '', cvc = '' } = this.value || {};
242
- const newValue = { card, expire, cvc };
243
- newValue[propName] = value;
244
- this.value = newValue.expire || newValue.cvc || newValue.card ? newValue : null;
245
- }
246
- focusInput() {
247
- var _a, _b, _c;
248
- const element = (this.cardFocusable && ((_a = this.inputCard) === null || _a === void 0 ? void 0 : _a.nativeElement)) ||
249
- (this.expireFocusable && ((_b = this.inputExpire) === null || _b === void 0 ? void 0 : _b.nativeElement)) ||
250
- ((_c = this.inputCVC) === null || _c === void 0 ? void 0 : _c.nativeElement);
251
- element === null || element === void 0 ? void 0 : element.focus();
252
- }
253
- }
254
- TuiInputCardGroupedComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiInputCardGroupedComponent, deps: [{ token: NgControl, optional: true, self: true }, { token: ChangeDetectorRef }, { token: ElementRef }, { token: TUI_MODE }, { token: TUI_INPUT_CARD_GROUPED_TEXTS }, { token: TUI_TEXTFIELD_WATCHED_CONTROLLER }, { token: TUI_COMMON_ICONS }, { token: TUI_ARROW_OPTIONS }, { token: TUI_INPUT_CARD_GROUPED_OPTIONS }], target: i0.ɵɵFactoryTarget.Component });
255
- TuiInputCardGroupedComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TuiInputCardGroupedComponent, selector: "tui-input-card-grouped", inputs: { exampleText: "exampleText", cardValidator: "cardValidator", codeLength: "codeLength" }, outputs: { autofilledChange: "autofilledChange" }, host: { attributes: { "data-size": "l" }, listeners: { "$.data-mode.attr": "mode$", "keydown.esc": "onEsc()", "keydown.arrowDown.prevent": "onArrow($event.target,1)", "keydown.arrowUp.prevent": "onArrow($event.target,-1)" } }, providers: [
256
- tuiAsFocusableItemAccessor(TuiInputCardGroupedComponent),
257
- tuiAsControl(TuiInputCardGroupedComponent),
258
- tuiAsDataListHost(TuiInputCardGroupedComponent),
259
- MODE_PROVIDER,
260
- TEXTFIELD_CONTROLLER_PROVIDER,
261
- ], queries: [{ propertyName: "dropdown", first: true, predicate: TuiDataListDirective, descendants: true, read: TemplateRef }, { propertyName: "datalist", first: true, predicate: TuiDataListComponent, descendants: true }], viewQueries: [{ propertyName: "inputCard", first: true, predicate: ["inputCard"], descendants: true }, { propertyName: "cardNumberAutofocusRef", first: true, predicate: ["inputCard"], descendants: true, read: TuiAutoFocusDirective }, { propertyName: "inputExpire", first: true, predicate: ["inputExpire"], descendants: true }, { propertyName: "expireCardAutofocusRef", first: true, predicate: ["inputExpire"], descendants: true, read: TuiAutoFocusDirective }, { propertyName: "inputCVC", first: true, predicate: ["inputCVC"], descendants: true }, { propertyName: "cvcCardAutofocusRef", first: true, predicate: ["inputCVC"], descendants: true, read: TuiAutoFocusDirective }], usesInheritance: true, ngImport: i0, template: "<div\n *ngIf=\"cardGroupedTexts$ | async as texts\"\n tuiDropdownLimitWidth=\"fixed\"\n tuiWrapper\n class=\"t-common-wrapper\"\n [appearance]=\"appearance\"\n [disabled]=\"computedDisabled\"\n [focus]=\"computedFocused\"\n [hover]=\"pseudoHover\"\n [invalid]=\"computedInvalid\"\n [readOnly]=\"readOnly\"\n [tuiDropdown]=\"dropdown || ''\"\n [tuiDropdownManual]=\"open\"\n (mousedown)=\"onMouseDown($event)\"\n (scroll)=\"onScroll($event)\"\n (tuiActiveZoneChange)=\"onActiveZoneChange($event)\"\n>\n <div class=\"t-wrapper\">\n <label\n *tuiLet=\"value?.card | tuiFormatCard: cardPrefilled as formattedCard\"\n tuiPreventDefault=\"click\"\n >\n <input\n #inputCard\n automation-id=\"tui-input-card-grouped__card\"\n inputmode=\"numeric\"\n translate=\"no\"\n type=\"text\"\n class=\"t-input t-input_card\"\n [attr.aria-invalid]=\"!cardPrefilled && !(this.card | tuiMapper: cardValidator)\"\n [attr.id]=\"idCard\"\n [autocomplete]=\"autocompleteCard\"\n [class.t-input_hidden]=\"!card.length && focused\"\n [class.t-input_inert]=\"cardPrefilled\"\n [disabled]=\"computedDisabled\"\n [maskito]=\"maskCard\"\n [ngModel]=\"formattedCard\"\n [placeholder]=\"cardPrefilled ? '' : exampleText\"\n [readOnly]=\"readOnly\"\n [tuiAutoFocus]=\"false\"\n [tuiFocusable]=\"cardFocusable\"\n (focus)=\"(0)\"\n (ngModelChange)=\"onCardChange($event)\"\n />\n <span\n aria-hidden=\"true\"\n translate=\"no\"\n class=\"t-collapsed\"\n [attr.data-before]=\"masked\"\n [class.t-collapsed_enable-mask]=\"isCardCollapsed\"\n (tuiResize)=\"(0)\"\n >\n <span\n #ghost\n class=\"t-ghost\"\n [textContent]=\"formattedCard.slice(-tailLength)\"\n ></span>\n\n <span class=\"t-collapsed-wrapper\">\n <span\n class=\"t-value\"\n [style.transform]=\"transform(ghost)\"\n >\n {{ formattedCard }}\n </span>\n </span>\n </span>\n <span\n class=\"t-placeholder\"\n [class.t-placeholder_raised]=\"placeholderRaised\"\n >\n {{ texts.cardNumberText }}\n </span>\n </label>\n </div>\n <div\n class=\"t-wrapper t-wrapper_expire\"\n [class.t-wrapper_active]=\"isCardCollapsed\"\n >\n <label tuiPreventDefault=\"click\">\n <input\n #inputExpire\n automation-id=\"tui-input-card-grouped__expire\"\n inputmode=\"numeric\"\n placeholder=\"00/00\"\n translate=\"no\"\n class=\"t-input\"\n [attr.id]=\"idExpire\"\n [attr.name]=\"name\"\n [autocomplete]=\"autocompleteExpire\"\n [class.t-input_inert]=\"!expireFocusable\"\n [disabled]=\"computedDisabled\"\n [maskito]=\"maskExpire\"\n [ngModel]=\"expire\"\n [readOnly]=\"readOnly\"\n [tuiAutoFocus]=\"false\"\n [tuiFocusable]=\"expireFocusable\"\n (focus)=\"(0)\"\n (ngModelChange)=\"onExpireChange($event)\"\n />\n <span\n class=\"t-placeholder\"\n [class.t-placeholder_raised]=\"placeholderRaised\"\n >\n {{ texts.expiryText }}\n </span>\n </label>\n </div>\n <div\n class=\"t-wrapper t-wrapper_cvc\"\n [class.t-wrapper_active]=\"isCardCollapsed\"\n >\n <label tuiPreventDefault=\"click\">\n <input\n #inputCVC\n automation-id=\"tui-input-card-grouped__cvc\"\n inputmode=\"numeric\"\n translate=\"no\"\n type=\"text\"\n class=\"t-input\"\n [attr.id]=\"idCVC\"\n [autocomplete]=\"autocompleteCVC\"\n [class.t-input_prefilled]=\"cvcPrefilled\"\n [disabled]=\"computedDisabled\"\n [maskito]=\"maskCVC\"\n [ngModel]=\"cvc\"\n [placeholder]=\"cvcPrefilled ? '\u2022\u2022\u2022' : exampleTextCVC\"\n [readOnly]=\"readOnly || cvcPrefilled\"\n [tuiAutoFocus]=\"false\"\n [tuiFocusable]=\"cvcFocusable\"\n (focus)=\"(0)\"\n (ngModelChange)=\"onCVCChange($event)\"\n />\n <span\n class=\"t-placeholder\"\n [class.t-placeholder_raised]=\"placeholderRaised\"\n >\n {{ texts.cvcText }}\n </span>\n </label>\n </div>\n <div class=\"t-icons\">\n <div\n *ngIf=\"icon\"\n class=\"t-icon-outlet\"\n >\n <tui-svg\n *polymorpheusOutlet=\"icon as text\"\n automation-id=\"tui-input-card-grouped__icon\"\n class=\"t-card\"\n [src]=\"text\"\n ></tui-svg>\n </div>\n <tui-svg\n *ngIf=\"hasCleaner\"\n appearance=\"icon\"\n automation-id=\"tui-input-card-grouped__cleaner\"\n tuiWrapper\n class=\"t-icon\"\n [src]=\"icons.close\"\n (click)=\"clear()\"\n ></tui-svg>\n <tui-svg\n *ngIf=\"hasDropdown\"\n appearance=\"icon\"\n automation-id=\"tui-input-card-grouped__dropdown\"\n tuiWrapper\n class=\"t-icon\"\n [class.t-icon_rotated]=\"open\"\n [src]=\"arrowOptions.iconLarge\"\n (click)=\"toggle()\"\n ></tui-svg>\n </div>\n</div>\n", styles: [":host{display:block;height:var(--tui-height-l);width:29.5rem;border-radius:var(--tui-radius-m)}:host[data-mode=onDark]{--tui-autofill: var(--tui-autofill-night)}:host :host-context(tui-root._mobile){width:18rem}.t-outline{height:100%;width:100%}.t-common-wrapper{position:relative;height:100%;width:100%;overflow:hidden}.t-wrapper{transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:absolute;width:100%;height:100%}.t-wrapper_cvc{margin-left:7.1875rem;transform:translate(100%)}:host-context(tui-root._mobile) .t-wrapper_cvc{margin-left:4.0625rem}.t-wrapper_expire{transform:translate(100%)}.t-wrapper_active{transform:translate(6.5625rem)}:host-context(tui-root._mobile) .t-wrapper_active{transform:translate(4.125rem)}.t-card{width:2rem;height:2rem;margin-right:.5rem;color:#1434cb}.t-collapsed{font:var(--tui-font-text-s);color:var(--tui-text-01);margin:0;border-width:0;border-radius:inherit;background:none;font-size:inherit;line-height:inherit;font-weight:inherit;color:inherit;caret-color:currentColor;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;word-break:keep-all;-webkit-text-fill-color:currentColor;position:absolute;top:0;left:0;width:100%;height:100%;border-style:solid;border-color:transparent;border-inline-start-width:var(--border-start, 0);border-inline-end-width:var(--border-end, 0);text-indent:var(--text-indent);text-align:inherit;box-sizing:border-box;white-space:nowrap;overflow:hidden;text-transform:inherit;resize:none;border:0;padding:0 0 0 1rem;line-height:2.25rem;pointer-events:none}.t-collapsed:-webkit-autofill,.t-collapsed:-webkit-autofill:hover,.t-collapsed:-webkit-autofill:focus{caret-color:var(--tui-base-09);border-radius:inherit;color:inherit!important;background-color:transparent!important;-webkit-text-fill-color:var(--tui-text-01)!important;border-color:var(--tui-autofill);-webkit-box-shadow:0 0 0 100rem var(--tui-autofill) inset!important}.t-collapsed:-webkit-autofill,.t-collapsed:-webkit-autofill:first-line{font-size:inherit;line-height:inherit}.t-collapsed::-webkit-caps-lock-indicator,.t-collapsed::-webkit-contacts-auto-fill-button,.t-collapsed::-webkit-credit-card-auto-fill-button,.t-collapsed::-webkit-credentials-auto-fill-button,.t-collapsed::-webkit-strong-password-auto-fill-button{content:none!important;position:absolute;left:-62.4375rem;top:-62.4375rem;z-index:-999;display:none!important;background:transparent!important;pointer-events:none!important}.t-collapsed::placeholder{color:var(--tui-text-03);opacity:0}:host._focused:not(._readonly) .t-collapsed::placeholder,:host-context(tui-primitive-textfield._focused:not(._readonly)) .t-collapsed::placeholder,:host-context(tui-textarea._focused:not(._readonly)) .t-collapsed::placeholder,:host-context(tui-text-area._focused:not(._readonly)) .t-collapsed::placeholder{opacity:1}[tuiWrapper][data-mode=onDark] .t-collapsed:-webkit-autofill,.t-collapsed :host-context([tuiWrapper][data-mode=\"onDark\"]):-webkit-autofill,[tuiWrapper][data-mode=onDark] .t-collapsed:-webkit-autofill:hover,.t-collapsed :host-context([tuiWrapper][data-mode=\"onDark\"]):-webkit-autofill:hover,[tuiWrapper][data-mode=onDark] .t-collapsed:-webkit-autofill:focus,.t-collapsed :host-context([tuiWrapper][data-mode=\"onDark\"]):-webkit-autofill:focus{caret-color:var(--tui-base-09);border-radius:inherit;color:inherit!important;background-color:transparent!important;-webkit-text-fill-color:var(--tui-text-01-night)!important;border-color:var(--tui-autofill-night);-webkit-box-shadow:0 0 0 100rem var(--tui-autofill-night) inset!important}[tuiWrapper][data-mode=onDark] .t-collapsed::placeholder,.t-collapsed :host-context([tuiWrapper][data-mode=\"onDark\"])::placeholder{color:var(--tui-text-03-night)}:host[data-size=s] .t-collapsed,.t-collapsed :host-context(tui-primitive-textfield[data-size=\"s\"]):not(tui-primitive-textfield),.t-collapsed :host-context(tui-textarea[data-size=\"s\"]):not(tui-textarea),.t-collapsed :host-context(tui-text-area[data-size=\"s\"]):not(tui-text-area){padding:0 var(--tui-padding-s)}:host[data-size=m] .t-collapsed,.t-collapsed :host-context(tui-primitive-textfield[data-size=\"m\"]):not(tui-primitive-textfield),.t-collapsed :host-context(tui-textarea[data-size=\"m\"]):not(tui-textarea),.t-collapsed :host-context(tui-text-area[data-size=\"m\"]):not(tui-text-area){padding:0 var(--tui-padding-m)}:host[data-size=l] .t-collapsed,.t-collapsed :host-context(tui-primitive-textfield[data-size=\"l\"]):not(tui-primitive-textfield),.t-collapsed :host-context(tui-textarea[data-size=\"l\"]):not(tui-textarea),.t-collapsed :host-context(tui-text-area[data-size=\"l\"]):not(tui-text-area){padding:0 var(--tui-padding-l)}:host._disabled .t-collapsed,.t-collapsed :host-context(tui-primitive-textfield._disabled),.t-collapsed :host-context(tui-textarea._disabled),.t-collapsed :host-context(tui-text-area._disabled){pointer-events:none}:host[data-size=l]:not(._label-outside) .t-collapsed,.t-collapsed :host-context(tui-primitive-textfield[data-size=\"l\"]:not(._label-outside)):not(tui-primitive-textfield){padding-top:1.25rem}:host[data-size=l]:not(._label-outside) .t-collapsed:-webkit-autofill+.t-content .t-placeholder,.t-collapsed :host-context(tui-primitive-textfield[data-size=\"l\"]:not(._label-outside)):not(tui-primitive-textfield):-webkit-autofill+.t-content .t-placeholder{font-size:.8156rem;transform:translateY(-.625rem)}:host[data-size=m]:not(._label-outside) .t-collapsed,.t-collapsed :host-context(tui-primitive-textfield[data-size=\"m\"]:not(._label-outside)):not(tui-primitive-textfield){padding-top:1rem}:host[data-size=m]:not(._label-outside) .t-collapsed:-webkit-autofill+.t-content .t-placeholder,.t-collapsed :host-context(tui-primitive-textfield[data-size=\"m\"]:not(._label-outside)):not(tui-primitive-textfield):-webkit-autofill+.t-content .t-placeholder{font-size:.69rem;transform:translateY(-.5rem)}:host._hidden input.t-collapsed,.t-collapsed :host-context(tui-primitive-textfield._hidden){opacity:0;text-indent:-10em;-webkit-user-select:none}.t-collapsed_enable-mask:before{content:attr(data-before)}.t-collapsed_enable-mask .t-collapsed-wrapper{left:1.375rem}.t-collapsed-wrapper{position:absolute;top:0;display:block;width:100%;height:100%;overflow:hidden}.t-value{transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:absolute;bottom:0;right:100%;display:block;transform:translate(100%)}.t-input{font:var(--tui-font-text-s);color:var(--tui-text-01);margin:0;border-width:0;border-radius:inherit;background:none;font-size:inherit;line-height:inherit;font-weight:inherit;color:inherit;caret-color:currentColor;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;word-break:keep-all;-webkit-text-fill-color:currentColor;position:absolute;top:0;left:0;width:100%;height:100%;border-style:solid;border-color:transparent;border-inline-start-width:var(--border-start, 0);border-inline-end-width:var(--border-end, 0);text-indent:var(--text-indent);text-align:inherit;box-sizing:border-box;white-space:nowrap;overflow:hidden;text-transform:inherit;resize:none;transition-property:background;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;border:0;padding:0 1rem}.t-input:-webkit-autofill,.t-input:-webkit-autofill:hover,.t-input:-webkit-autofill:focus{caret-color:var(--tui-base-09);border-radius:inherit;color:inherit!important;background-color:transparent!important;-webkit-text-fill-color:var(--tui-text-01)!important;border-color:var(--tui-autofill);-webkit-box-shadow:0 0 0 100rem var(--tui-autofill) inset!important}.t-input:-webkit-autofill,.t-input:-webkit-autofill:first-line{font-size:inherit;line-height:inherit}.t-input::-webkit-caps-lock-indicator,.t-input::-webkit-contacts-auto-fill-button,.t-input::-webkit-credit-card-auto-fill-button,.t-input::-webkit-credentials-auto-fill-button,.t-input::-webkit-strong-password-auto-fill-button{content:none!important;position:absolute;left:-62.4375rem;top:-62.4375rem;z-index:-999;display:none!important;background:transparent!important;pointer-events:none!important}.t-input::placeholder{color:var(--tui-text-03);opacity:0}:host._focused:not(._readonly) .t-input::placeholder,:host-context(tui-primitive-textfield._focused:not(._readonly)) .t-input::placeholder,:host-context(tui-textarea._focused:not(._readonly)) .t-input::placeholder,:host-context(tui-text-area._focused:not(._readonly)) .t-input::placeholder{opacity:1}[tuiWrapper][data-mode=onDark] .t-input:-webkit-autofill,.t-input :host-context([tuiWrapper][data-mode=\"onDark\"]):-webkit-autofill,[tuiWrapper][data-mode=onDark] .t-input:-webkit-autofill:hover,.t-input :host-context([tuiWrapper][data-mode=\"onDark\"]):-webkit-autofill:hover,[tuiWrapper][data-mode=onDark] .t-input:-webkit-autofill:focus,.t-input :host-context([tuiWrapper][data-mode=\"onDark\"]):-webkit-autofill:focus{caret-color:var(--tui-base-09);border-radius:inherit;color:inherit!important;background-color:transparent!important;-webkit-text-fill-color:var(--tui-text-01-night)!important;border-color:var(--tui-autofill-night);-webkit-box-shadow:0 0 0 100rem var(--tui-autofill-night) inset!important}[tuiWrapper][data-mode=onDark] .t-input::placeholder,.t-input :host-context([tuiWrapper][data-mode=\"onDark\"])::placeholder{color:var(--tui-text-03-night)}:host[data-size=s] .t-input,.t-input :host-context(tui-primitive-textfield[data-size=\"s\"]):not(tui-primitive-textfield),.t-input :host-context(tui-textarea[data-size=\"s\"]):not(tui-textarea),.t-input :host-context(tui-text-area[data-size=\"s\"]):not(tui-text-area){padding:0 var(--tui-padding-s)}:host[data-size=m] .t-input,.t-input :host-context(tui-primitive-textfield[data-size=\"m\"]):not(tui-primitive-textfield),.t-input :host-context(tui-textarea[data-size=\"m\"]):not(tui-textarea),.t-input :host-context(tui-text-area[data-size=\"m\"]):not(tui-text-area){padding:0 var(--tui-padding-m)}:host[data-size=l] .t-input,.t-input :host-context(tui-primitive-textfield[data-size=\"l\"]):not(tui-primitive-textfield),.t-input :host-context(tui-textarea[data-size=\"l\"]):not(tui-textarea),.t-input :host-context(tui-text-area[data-size=\"l\"]):not(tui-text-area){padding:0 var(--tui-padding-l)}:host._disabled .t-input,.t-input :host-context(tui-primitive-textfield._disabled),.t-input :host-context(tui-textarea._disabled),.t-input :host-context(tui-text-area._disabled){pointer-events:none}:host[data-size=l]:not(._label-outside) .t-input,.t-input :host-context(tui-primitive-textfield[data-size=\"l\"]:not(._label-outside)):not(tui-primitive-textfield){padding-top:1.25rem}:host[data-size=l]:not(._label-outside) .t-input:-webkit-autofill+.t-content .t-placeholder,.t-input :host-context(tui-primitive-textfield[data-size=\"l\"]:not(._label-outside)):not(tui-primitive-textfield):-webkit-autofill+.t-content .t-placeholder{font-size:.8156rem;transform:translateY(-.625rem)}:host[data-size=m]:not(._label-outside) .t-input,.t-input :host-context(tui-primitive-textfield[data-size=\"m\"]:not(._label-outside)):not(tui-primitive-textfield){padding-top:1rem}:host[data-size=m]:not(._label-outside) .t-input:-webkit-autofill+.t-content .t-placeholder,.t-input :host-context(tui-primitive-textfield[data-size=\"m\"]:not(._label-outside)):not(tui-primitive-textfield):-webkit-autofill+.t-content .t-placeholder{font-size:.69rem;transform:translateY(-.5rem)}:host._hidden input.t-input,.t-input :host-context(tui-primitive-textfield._hidden){opacity:0;text-indent:-10em;-webkit-user-select:none}.t-input::placeholder{color:var(--tui-text-03);opacity:1}:host[data-mode=onDark] .t-input::placeholder{color:var(--tui-text-03-night)}.t-input.t-input.t-input_card:not(.t-input_hidden),:host[data-mode=onDark] .t-input.t-input.t-input_card:not(.t-input_hidden),.t-input.t-input.t-input_card:not(.t-input_hidden)::placeholder,:host[data-mode=onDark] .t-input.t-input.t-input_card:not(.t-input_hidden)::placeholder,.t-input.t-input.t-input_card:not(.t-input_hidden):-webkit-autofill,:host[data-mode=onDark] .t-input.t-input.t-input_card:not(.t-input_hidden):-webkit-autofill{caret-color:var(--tui-base-09);color:transparent!important;-webkit-text-fill-color:transparent!important}.t-input.t-input.t-input_card::-webkit-credit-card-auto-fill-button,:host[data-mode=onDark] .t-input.t-input.t-input_card::-webkit-credit-card-auto-fill-button{content:none!important;position:absolute;left:-62.4375rem;top:-62.4375rem;z-index:-999;display:none!important;background:transparent!important;pointer-events:none!important}.t-input_inert{pointer-events:none}.t-icons{position:absolute;right:.75rem;display:flex;align-items:center;height:100%}.t-icon-outlet{display:flex}.t-icon{transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:relative;display:flex;width:1.5rem;height:1.5rem;align-items:center;justify-content:center;box-sizing:border-box;cursor:pointer;pointer-events:none;pointer-events:auto}:host._readonly .t-icon,:host._disabled .t-icon{pointer-events:none}.t-icon_rotated{transform:rotate(180deg)}.t-placeholder{transition-property:transform,font-size,color,letter-spacing;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;width:100%;-webkit-user-select:none;-moz-user-select:none;user-select:none;font:var(--tui-font-text-s);color:var(--tui-text-02);pointer-events:none;will-change:transform;transform:translateY(0);margin:1.125rem 1rem;line-height:1.25rem}@supports (-webkit-hyphens: none){.t-placeholder{will-change:unset;transition-property:transform,color,letter-spacing}}.t-placeholder_raised{transform:translateY(-.625rem)}:host[data-size=m] .t-placeholder_raised{font:var(--tui-font-text-xs);line-height:1.25rem;transform:translateY(-.5rem);letter-spacing:.025rem}:host._invalid:not(._focused) .t-placeholder_raised,:host._invalid:not(._focused):hover .t-placeholder_raised{color:var(--tui-error-fill)}:host._invalid:not(._focused) [tuiWrapper][data-mode=onDark] .t-placeholder_raised,:host._invalid:not(._focused):hover [tuiWrapper][data-mode=onDark] .t-placeholder_raised{color:var(--tui-error-fill-night)}:host._focused .t-placeholder,:host[data-size=m]._focused._label-outside .t-placeholder,:host[data-size=l]._focused._label-outside .t-placeholder{color:var(--tui-text-03)}:host[data-size=l] .t-placeholder{font:var(--tui-font-text-m);line-height:1.25rem}:host[data-size=l] .t-placeholder_raised{font-size:.8156rem}:host[data-size=m]._focused:not(._label-outside) .t-placeholder,:host[data-size=l]._focused:not(._label-outside) .t-placeholder{color:var(--tui-text-01)}[tuiWrapper][data-mode=onDark] .t-placeholder{color:var(--tui-text-02-night)}:host[data-size=m]._focused:not(._label-outside) [tuiWrapper][data-mode=onDark] .t-placeholder,:host[data-size=l]._focused:not(._label-outside) [tuiWrapper][data-mode=onDark] .t-placeholder{color:var(--tui-text-01-night)}:host._focused [tuiWrapper][data-mode=onDark] .t-placeholder,:host[data-size=m]._focused._label-outside [tuiWrapper][data-mode=onDark] .t-placeholder,:host[data-size=l]._focused._label-outside [tuiWrapper][data-mode=onDark] .t-placeholder{color:var(--tui-text-02-night)}.t-ghost{visibility:hidden}\n"], components: [{ type: i1.TuiSvgComponent, selector: "tui-svg", inputs: ["src"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.TuiDropdownOptionsDirective, selector: "[tuiDropdownAlign], [tuiDropdownAppearance], [tuiDropdownDirection], [tuiDropdownLimitWidth], [tuiDropdownMinHeight], [tuiDropdownMaxHeight], [tuiDropdownOffset]", inputs: ["tuiDropdownAlign", "tuiDropdownAppearance", "tuiDropdownDirection", "tuiDropdownLimitWidth", "tuiDropdownMinHeight", "tuiDropdownMaxHeight", "tuiDropdownOffset"] }, { type: i1.TuiWrapperDirective, selector: "[tuiWrapper]", inputs: ["disabled", "readOnly", "hover", "active", "focus", "invalid", "appearance"] }, { type: i1.TuiDropdownDirective, selector: "[tuiDropdown]:not(ng-container)", inputs: ["tuiDropdown"], exportAs: ["tuiDropdown"] }, { type: i1.TuiDropdownDriverDirective, selector: "[tuiDropdown]" }, { type: i1.TuiDropdownPositionDirective, selector: "[tuiDropdown]:not([tuiDropdownCustomPosition]):not([tuiDropdownSided])" }, { type: i1.TuiDropdownManualDirective, selector: "[tuiDropdown][tuiDropdownManual]", inputs: ["tuiDropdownManual"] }, { type: i3.TuiActiveZoneDirective, selector: "[tuiActiveZone]:not(ng-container), [tuiActiveZoneChange]:not(ng-container), [tuiActiveZoneParent]:not(ng-container)", inputs: ["tuiActiveZoneParent"], outputs: ["tuiActiveZoneChange"], exportAs: ["tuiActiveZone"] }, { type: i3.TuiLetDirective, selector: "[tuiLet]", inputs: ["tuiLet"] }, { type: i3.TuiPreventDefaultDirective, selector: "[tuiPreventDefault]", inputs: ["tuiPreventDefault"] }, { type: i4.MaskitoCva, selector: "input[maskito], textarea[maskito]", inputs: ["maskito"] }, { type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i4.MaskitoDirective, selector: "[maskito]", inputs: ["maskito", "maskitoElement"] }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3.TuiAutoFocusDirective, selector: "[tuiAutoFocus]", inputs: ["tuiAutoFocus"] }, { type: i3.TuiFocusableDirective, selector: "[tuiFocusable]", inputs: ["tuiFocusable"] }, { type: i3.TuiResizeDirective, selector: "[tuiResize]", outputs: ["tuiResize"] }, { type: i6.PolymorpheusOutletDirective, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }], pipes: { "async": i2.AsyncPipe, "tuiFormatCard": i7.TuiFormatCardPipe, "tuiMapper": i3.TuiMapperPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
262
- __decorate([
263
- tuiPure
264
- ], TuiInputCardGroupedComponent.prototype, "isFocusable", null);
265
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiInputCardGroupedComponent, decorators: [{
266
- type: Component,
267
- args: [{
268
- selector: 'tui-input-card-grouped',
269
- templateUrl: './input-card-grouped.template.html',
270
- styleUrls: ['./input-card-grouped.style.less'],
271
- changeDetection: ChangeDetectionStrategy.OnPush,
272
- providers: [
273
- tuiAsFocusableItemAccessor(TuiInputCardGroupedComponent),
274
- tuiAsControl(TuiInputCardGroupedComponent),
275
- tuiAsDataListHost(TuiInputCardGroupedComponent),
276
- MODE_PROVIDER,
277
- TEXTFIELD_CONTROLLER_PROVIDER,
278
- ],
279
- host: {
280
- '($.data-mode.attr)': 'mode$',
281
- 'data-size': 'l',
282
- },
283
- }]
284
- }], ctorParameters: function () { return [{ type: i5.NgControl, decorators: [{
285
- type: Optional
286
- }, {
287
- type: Self
288
- }, {
289
- type: Inject,
290
- args: [NgControl]
291
- }] }, { type: i0.ChangeDetectorRef, decorators: [{
292
- type: Inject,
293
- args: [ChangeDetectorRef]
294
- }] }, { type: i0.ElementRef, decorators: [{
295
- type: Inject,
296
- args: [ElementRef]
297
- }] }, { type: i8.Observable, decorators: [{
298
- type: Inject,
299
- args: [TUI_MODE]
300
- }] }, { type: i8.Observable, decorators: [{
301
- type: Inject,
302
- args: [TUI_INPUT_CARD_GROUPED_TEXTS]
303
- }] }, { type: i1.TuiTextfieldController, decorators: [{
304
- type: Inject,
305
- args: [TUI_TEXTFIELD_WATCHED_CONTROLLER]
306
- }] }, { type: undefined, decorators: [{
307
- type: Inject,
308
- args: [TUI_COMMON_ICONS]
309
- }] }, { type: undefined, decorators: [{
310
- type: Inject,
311
- args: [TUI_ARROW_OPTIONS]
312
- }] }, { type: undefined, decorators: [{
313
- type: Inject,
314
- args: [TUI_INPUT_CARD_GROUPED_OPTIONS]
315
- }] }]; }, propDecorators: { inputCard: [{
316
- type: ViewChild,
317
- args: ['inputCard']
318
- }], cardNumberAutofocusRef: [{
319
- type: ViewChild,
320
- args: ['inputCard', { read: TuiAutoFocusDirective }]
321
- }], inputExpire: [{
322
- type: ViewChild,
323
- args: ['inputExpire']
324
- }], expireCardAutofocusRef: [{
325
- type: ViewChild,
326
- args: ['inputExpire', { read: TuiAutoFocusDirective }]
327
- }], inputCVC: [{
328
- type: ViewChild,
329
- args: ['inputCVC']
330
- }], cvcCardAutofocusRef: [{
331
- type: ViewChild,
332
- args: ['inputCVC', { read: TuiAutoFocusDirective }]
333
- }], exampleText: [{
334
- type: Input
335
- }], cardValidator: [{
336
- type: Input
337
- }], codeLength: [{
338
- type: Input
339
- }], autofilledChange: [{
340
- type: Output
341
- }], dropdown: [{
342
- type: ContentChild,
343
- args: [TuiDataListDirective, { read: TemplateRef }]
344
- }], datalist: [{
345
- type: ContentChild,
346
- args: [TuiDataListComponent]
347
- }], onEsc: [{
348
- type: HostListener,
349
- args: ['keydown.esc']
350
- }], onArrow: [{
351
- type: HostListener,
352
- args: ['keydown.arrowDown.prevent', ['$event.target', '1']]
353
- }, {
354
- type: HostListener,
355
- args: ['keydown.arrowUp.prevent', ['$event.target', '-1']]
356
- }], isFocusable: [] } });
357
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtY2FyZC1ncm91cGVkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FkZG9uLWNvbW1lcmNlL2NvbXBvbmVudHMvaW5wdXQtY2FyZC1ncm91cGVkL2lucHV0LWNhcmQtZ3JvdXBlZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hZGRvbi1jb21tZXJjZS9jb21wb25lbnRzL2lucHV0LWNhcmQtZ3JvdXBlZC9pbnB1dC1jYXJkLWdyb3VwZWQudGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsRUFDUixNQUFNLEVBQ04sSUFBSSxFQUNKLFdBQVcsRUFDWCxTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXpDLE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUN6RCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQztBQUNwRixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFHakUsT0FBTyxFQUNILFlBQVksRUFDWiwwQkFBMEIsRUFFMUIscUJBQXFCLEVBRXJCLFlBQVksRUFDWixVQUFVLEVBQ1Ysa0JBQWtCLEVBQ2xCLG9CQUFvQixFQUNwQixPQUFPLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILGFBQWEsRUFDYiw2QkFBNkIsRUFDN0IsZ0JBQWdCLEVBQ2hCLGdCQUFnQixFQUNoQixRQUFRLEVBQ1Isb0JBQW9CLEVBQ3BCLGdDQUFnQyxFQUNoQyxpQkFBaUIsRUFHakIs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QUFDO2dCQUk5QyxRQUFRO3NCQURoQixZQUFZO3VCQUFDLG9CQUFvQjtnQkE2SWxDLEtBQUs7c0JBREosWUFBWTt1QkFBQyxhQUFhO2dCQU8zQixPQUFPO3NCQUZOLFlBQVk7dUJBQUMsMkJBQTJCLEVBQUUsQ0FBQyxlQUFlLEVBQUUsR0FBRyxDQUFDOztzQkFDaEUsWUFBWTt1QkFBQyx5QkFBeUIsRUFBRSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUM7Z0JBb0h4RCxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFNlbGYsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmdDb250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge01hc2tpdG9PcHRpb25zfSBmcm9tICdAbWFza2l0by9jb3JlJztcbmltcG9ydCB7bWFza2l0b0RhdGVPcHRpb25zR2VuZXJhdG9yfSBmcm9tICdAbWFza2l0by9raXQnO1xuaW1wb3J0IHtBYnN0cmFjdFR1aUlucHV0Q2FyZH0gZnJvbSAnQHRhaWdhLXVpL2FkZG9uLWNvbW1lcmNlL2NvbXBvbmVudHMvaW5wdXQtY2FyZCc7XG5pbXBvcnQge1RVSV9DQVJEX01BU0t9IGZyb20gJ0B0YWlnYS11aS9hZGRvbi1jb21tZXJjZS9jb25zdGFudHMnO1xuaW1wb3J0IHtUdWlDYXJkfSBmcm9tICdAdGFpZ2EtdWkvYWRkb24tY29tbWVyY2UvaW50ZXJmYWNlcyc7XG5pbXBvcnQge1R1aUNvZGVDVkNMZW5ndGh9IGZyb20gJ0B0YWlnYS11aS9hZGRvbi1jb21tZXJjZS90eXBlcyc7XG5pbXBvcnQge1xuICAgIHR1aUFzQ29udHJvbCxcbiAgICB0dWlBc0ZvY3VzYWJsZUl0ZW1BY2Nlc3NvcixcbiAgICBUdWlBdXRvZmlsbEZpZWxkTmFtZSxcbiAgICBUdWlBdXRvRm9jdXNEaXJlY3RpdmUsXG4gICAgVHVpRm9jdXNhYmxlRWxlbWVudEFjY2Vzc29yLFxuICAgIHR1aUlzRWxlbWVudCxcbiAgICB0dWlJc0lucHV0LFxuICAgIHR1aUlzTmF0aXZlRm9jdXNlZCxcbiAgICB0dWlJc05hdGl2ZUZvY3VzZWRJbixcbiAgICB0dWlQdXJlLFxufSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7XG4gICAgTU9ERV9QUk9WSURFUixcbiAgICBURVhURklFTERfQ09OVFJPTExFUl9QUk9WSURFUixcbiAgICBUVUlfQ09NTU9OX0lDT05TLFxuICAgIFRVSV9ESUdJVF9SRUdFWFAsXG4gICAgVFVJX01PREUsXG4gICAgVFVJX05PTl9ESUdJVF9SRUdFWFAsXG4gICAgVFVJX1RFWFRGSUVMRF9XQVRDSEVEX0NPTlRST0xMRVIsXG4gICAgdHVpQXNEYXRhTGlzdEhvc3QsXG4gICAgVHVpQnJpZ2h0bmVzcyxcbiAgICBUdWlDb21tb25JY29ucyxcbiAgICBUdWlEYXRhTGlzdENvbXBvbmVudCxcbiAgICBUdWlEYXRhTGlzdERpcmVjdGl2ZSxcbiAgICBUdWlEYXRhTGlzdEhvc3QsXG4gICAgVHVpVGV4dGZpZWxkQ29udHJvbGxlcixcbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHtUVUlfQVJST1dfT1BUSU9OUywgVHVpQXJyb3dPcHRpb25zfSBmcm9tICdAdGFpZ2EtdWkva2l0JztcbmltcG9ydCB7UG9seW1vcnBoZXVzQ29udGVudH0gZnJvbSAnQHRpbmtvZmYvbmctcG9seW1vcnBoZXVzJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gICAgVFVJX0lOUFVUX0NBUkRfR1JPVVBFRF9PUFRJT05TLFxuICAgIFR1aUlucHV0Q2FyZEdyb3VwZWRPcHRpb25zLFxufSBmcm9tICcuL2lucHV0LWNhcmQtZ3JvdXBlZC5vcHRpb25zJztcbmltcG9ydCB7XG4gICAgVFVJX0lOUFVUX0NBUkRfR1JPVVBFRF9URVhUUyxcbiAgICBUdWlDYXJkR3JvdXBlZFRleHRzLFxufSBmcm9tICcuL2lucHV0LWNhcmQtZ3JvdXBlZC5wcm92aWRlcnMnO1xuXG5jb25zdCBFWFBJUkVfQ09NUExFVEVfTEVOR1RIID0gNTsgLy8gTU0vWVlcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0dWktaW5wdXQtY2FyZC1ncm91cGVkJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQtY2FyZC1ncm91cGVkLnRlbXBsYXRlLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2lucHV0LWNhcmQtZ3JvdXBlZC5zdHlsZS5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHR1aUFzRm9jdXNhYmxlSXRlbUFjY2Vzc29yKFR1aUlucHV0Q2FyZEdyb3VwZWRDb21wb25lbnQpLFxuICAgICAgICB0dWlBc0NvbnRyb2woVHVpSW5wdXRDYXJkR3JvdXBlZENvbXBvbmVudCksXG4gICAgICAgIHR1aUFzRGF0YUxpc3RIb3N0KFR1aUlucHV0Q2FyZEdyb3VwZWRDb21wb25lbnQpLFxuICAgICAgICBNT0RFX1BST1ZJREVSLFxuICAgICAgICBURVhURklFTERfQ09OVFJPTExFUl9QUk9WSURFUixcbiAgICBdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJygkLmRhdGEtbW9kZS5hdHRyKSc6ICdtb2RlJCcsXG4gICAgICAgICdkYXRhLXNpemUnOiAnbCcsXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpSW5wdXRDYXJkR3JvdXBlZENvbXBvbmVudFxuICAgIGV4dGVuZHMgQWJzdHJhY3RUdWlJbnB1dENhcmQ8VHVpQ2FyZCwgVHVpSW5wdXRDYXJkR3JvdXBlZE9wdGlvbnM+XG4gICAgaW1wbGVtZW50cyBUdWlGb2N1c2FibGVFbGVtZW50QWNjZXNzb3IsIFR1aURhdGFMaXN0SG9zdDxQYXJ0aWFsPFR1aUNhcmQ+Plxue1xuICAgIEBWaWV3Q2hpbGQoJ2lucHV0Q2FyZCcpXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbnB1dENhcmQ/OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gICAgQFZpZXdDaGlsZCgnaW5wdXRDYXJkJywge3JlYWQ6IFR1aUF1dG9Gb2N1c0RpcmVjdGl2ZX0pXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXJkTnVtYmVyQXV0b2ZvY3VzUmVmPzogVHVpQXV0b0ZvY3VzRGlyZWN0aXZlO1xuXG4gICAgQFZpZXdDaGlsZCgnaW5wdXRFeHBpcmUnKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5wdXRFeHBpcmU/OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gICAgQFZpZXdDaGlsZCgnaW5wdXRFeHBpcmUnLCB7cmVhZDogVHVpQXV0b0ZvY3VzRGlyZWN0aXZlfSlcbiAgICBwcml2YXRlIHJlYWRvbmx5IGV4cGlyZUNhcmRBdXRvZm9jdXNSZWY/OiBUdWlBdXRvRm9jdXNEaXJlY3RpdmU7XG5cbiAgICBAVmlld0NoaWxkKCdpbnB1dENWQycpXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbnB1dENWQz86IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgICBAVmlld0NoaWxkKCdpbnB1dENWQycsIHtyZWFkOiBUdWlBdXRvRm9jdXNEaXJlY3RpdmV9KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgY3ZjQ2FyZEF1dG9mb2N1c1JlZj86IFR1aUF1dG9Gb2N1c0RpcmVjdGl2ZTtcblxuICAgIHByaXZhdGUgZXhwaXJlSW5lcnQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgZXhhbXBsZVRleHQgPSB0aGlzLm9wdGlvbnMuZXhhbXBsZVRleHQ7XG5cbiAgICBASW5wdXQoKVxuICAgIGNhcmRWYWxpZGF0b3IgPSB0aGlzLm9wdGlvbnMuY2FyZFZhbGlkYXRvcjtcblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGNvZGVMZW5ndGgobGVuZ3RoOiBUdWlDb2RlQ1ZDTGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuZXhhbXBsZVRleHRDVkMgPSAnMCcucmVwZWF0KGxlbmd0aCk7XG4gICAgICAgIHRoaXMubWFza0NWQyA9IHtcbiAgICAgICAgICAgIG1hc2s6IG5ldyBBcnJheShsZW5ndGgpLmZpbGwoVFVJX0RJR0lUX1JFR0VYUCksXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgYXV0b2ZpbGxlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIEBDb250ZW50Q2hpbGQoVHVpRGF0YUxpc3REaXJlY3RpdmUsIHtyZWFkOiBUZW1wbGF0ZVJlZn0pXG4gICAgcmVhZG9ubHkgZHJvcGRvd246IFBvbHltb3JwaGV1c0NvbnRlbnQ7XG5cbiAgICBAQ29udGVudENoaWxkKFR1aURhdGFMaXN0Q29tcG9uZW50KVxuICAgIHJlYWRvbmx5IGRhdGFsaXN0PzogVHVpRGF0YUxpc3RDb21wb25lbnQ8VHVpQ2FyZD47XG5cbiAgICBleGFtcGxlVGV4dENWQyA9IHRoaXMub3B0aW9ucy5leGFtcGxlVGV4dENWQztcblxuICAgIG1hc2tDVkM6IE1hc2tpdG9PcHRpb25zID0ge1xuICAgICAgICBtYXNrOiBuZXcgQXJyYXkoMykuZmlsbChUVUlfRElHSVRfUkVHRVhQKSxcbiAgICB9O1xuXG4gICAgcmVhZG9ubHkgbWFza0NhcmQ6IE1hc2tpdG9PcHRpb25zID0ge1xuICAgICAgICBtYXNrOiBUVUlfQ0FSRF9NQVNLLFxuICAgIH07XG5cbiAgICByZWFkb25seSBtYXNrRXhwaXJlOiBNYXNraXRvT3B0aW9ucyA9IG1hc2tpdG9EYXRlT3B0aW9uc0dlbmVyYXRvcih7XG4gICAgICAgIG1vZGU6ICdtbS95eScsXG4gICAgICAgIHNlcGFyYXRvcjogJy8nLFxuICAgIH0pO1xuXG4gICAgb3BlbiA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIEBTZWxmKClcbiAgICAgICAgQEluamVjdChOZ0NvbnRyb2wpXG4gICAgICAgIGNvbnRyb2w6IE5nQ29udHJvbCB8IG51bGwsXG4gICAgICAgIEBJbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBJbmplY3QoRWxlbWVudFJlZikgcHJpdmF0ZSByZWFkb25seSBlbDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIEBJbmplY3QoVFVJX01PREUpIHJlYWRvbmx5IG1vZGUkOiBPYnNlcnZhYmxlPFR1aUJyaWdodG5lc3MgfCBudWxsPixcbiAgICAgICAgQEluamVjdChUVUlfSU5QVVRfQ0FSRF9HUk9VUEVEX1RFWFRTKVxuICAgICAgICByZWFkb25seSBjYXJkR3JvdXBlZFRleHRzJDogT2JzZXJ2YWJsZTxUdWlDYXJkR3JvdXBlZFRleHRzPixcbiAgICAgICAgQEluamVjdChUVUlfVEVYVEZJRUxEX1dBVENIRURfQ09OVFJPTExFUilcbiAgICAgICAgcmVhZG9ubHkgY29udHJvbGxlcjogVHVpVGV4dGZpZWxkQ29udHJvbGxlcixcbiAgICAgICAgQEluamVjdChUVUlfQ09NTU9OX0lDT05TKSByZWFkb25seSBpY29uczogVHVpQ29tbW9uSWNvbnMsXG4gICAgICAgIEBJbmplY3QoVFVJX0FSUk9XX09QVElPTlMpIHJlYWRvbmx5IGFycm93T3B0aW9uczogVHVpQXJyb3dPcHRpb25zLFxuICAgICAgICBASW5qZWN0KFRVSV9JTlBVVF9DQVJEX0dST1VQRURfT1BUSU9OUykgb3B0aW9uczogVHVpSW5wdXRDYXJkR3JvdXBlZE9wdGlvbnMsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGNvbnRyb2wsIGNkciwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgZ2V0IG5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQoKTogSFRNTElucHV0RWxlbWVudCB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnB1dENhcmQ/Lm5hdGl2ZUVsZW1lbnQgPz8gbnVsbDtcbiAgICB9XG5cbiAgICBnZXQgZm9jdXNlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3BlbiB8fCB0dWlJc05hdGl2ZUZvY3VzZWRJbih0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIGdldCBhcHBlYXJhbmNlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRyb2xsZXIuYXBwZWFyYW5jZTtcbiAgICB9XG5cbiAgICBnZXQgY2FyZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZT8uY2FyZCB8fCAnJztcbiAgICB9XG5cbiAgICBnZXQgZXhwaXJlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlPy5leHBpcmUgfHwgJyc7XG4gICAgfVxuXG4gICAgZ2V0IGN2YygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZT8uY3ZjIHx8ICcnO1xuICAgIH1cblxuICAgIGdldCBoYXNDbGVhbmVyKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLnZhbHVlPy5jYXJkPy50cmltKCkgJiYgIXRoaXMucmVhZE9ubHkgJiYgIXRoaXMuY29tcHV0ZWREaXNhYmxlZDtcbiAgICB9XG5cbiAgICBnZXQgaGFzRHJvcGRvd24oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuZHJvcGRvd247XG4gICAgfVxuXG4gICAgZ2V0IHBsYWNlaG9sZGVyUmFpc2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKHRoaXMuY29tcHV0ZWRGb2N1c2VkICYmICF0aGlzLnJlYWRPbmx5KSB8fCB0aGlzLmhhc0NhcmROdW1iZXI7XG4gICAgfVxuXG4gICAgZ2V0IGhhc0NhcmROdW1iZXIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMudmFsdWU/LmNhcmQ/LnRyaW0oKTtcbiAgICB9XG5cbiAgICBnZXQgaWRDYXJkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLmlkfV9jYXJkYDtcbiAgICB9XG5cbiAgICBnZXQgaWRFeHBpcmUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuaWR9X2V4cGlyZWA7XG4gICAgfVxuXG4gICAgZ2V0IGlkQ1ZDKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLmlkfV9jdmNgO1xuICAgIH1cblxuICAgIGdldCBpc0NhcmRDb2xsYXBzZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzRm9jdXNhYmxlKHRoaXMuY2FyZCkgJiYgIXRoaXMuY2FyZEZvY3VzZWQ7XG4gICAgfVxuXG4gICAgZ2V0IGF1dG9jb21wbGV0ZUV4cGlyZSgpOiBUdWlBdXRvZmlsbEZpZWxkTmFtZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmF1dG9jb21wbGV0ZUVuYWJsZWQgPyAnY2MtZXhwJyA6ICdvZmYnO1xuICAgIH1cblxuICAgIGdldCBhdXRvY29tcGxldGVDVkMoKTogVHVpQXV0b2ZpbGxGaWVsZE5hbWUge1xuICAgICAgICByZXR1cm4gdGhpcy5hdXRvY29tcGxldGVFbmFibGVkID8gJ2NjLWNzYycgOiAnb2ZmJztcbiAgICB9XG5cbiAgICBnZXQgdGFpbExlbmd0aCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5oYXNFeHRyYVNwYWNlID8gNSA6IDQ7XG4gICAgfVxuXG4gICAgLy8gU2FmYXJpIGV4cGlyYXRpb24gZGF0ZSBhdXRvZmlsbCB3b3JrYXJvdW5kXG4gICAgZ2V0IG5hbWUoKTogJ2NjZXhwaXJ5eWVhcicgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXV0b2NvbXBsZXRlRW5hYmxlZCA/ICdjY2V4cGlyeXllYXInIDogbnVsbDtcbiAgICB9XG5cbiAgICBnZXQgY2FyZFByZWZpbGxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5jYXJkLm1hdGNoKFRVSV9OT05fRElHSVRfUkVHRVhQKTtcbiAgICB9XG5cbiAgICBnZXQgY3ZjUHJlZmlsbGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLmN2Yy5tYXRjaChUVUlfTk9OX0RJR0lUX1JFR0VYUCk7XG4gICAgfVxuXG4gICAgZ2V0IGNhcmRGb2N1c2FibGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvY3VzYWJsZSAmJiAhdGhpcy5jYXJkUHJlZmlsbGVkO1xuICAgIH1cblxuICAgIGdldCBleHBpcmVGb2N1c2FibGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzRm9jdXNhYmxlKHRoaXMuY2FyZCkgJiYgIXRoaXMuZXhwaXJlSW5lcnQ7XG4gICAgfVxuXG4gICAgZ2V0IGN2Y0ZvY3VzYWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNGb2N1c2FibGUodGhpcy5jYXJkKTtcbiAgICB9XG5cbiAgICBnZXQgbWFza2VkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhcmRQcmVmaWxsZWQgPyBgKiR7dGhpcy5jYXJkLnNsaWNlKC00KX1gIDogJyonO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IGV4cGlyZVNlbGVjdGlvblN0YXJ0KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmlucHV0RXhwaXJlPy5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0IHx8IDA7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5lc2MnKVxuICAgIG9uRXNjKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmFycm93RG93bi5wcmV2ZW50JywgWyckZXZlbnQudGFyZ2V0JywgJzEnXSlcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmFycm93VXAucHJldmVudCcsIFsnJGV2ZW50LnRhcmdldCcsICctMSddKVxuICAgIG9uQXJyb3coZWxlbWVudDogSFRNTEVsZW1lbnQsIHN0ZXA6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLm9wZW4gPSB0aGlzLmhhc0Ryb3Bkb3duO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHRoaXMuZGF0YWxpc3Q/Lm9uS2V5RG93bkFycm93KGVsZW1lbnQsIHN0ZXApO1xuICAgIH1cblxuICAgIGhhbmRsZU9wdGlvbihvcHRpb246IFBhcnRpYWw8VHVpQ2FyZD4pOiB2b2lkIHtcbiAgICAgICAgY29uc3Qge2NhcmQgPSAnJywgZXhwaXJlID0gJycsIGN2YyA9ICcnfSA9IG9wdGlvbjtcbiAgICAgICAgY29uc3Qge2Jpbn0gPSB0aGlzO1xuICAgICAgICBjb25zdCBlbGVtZW50ID1cbiAgICAgICAgICAgICghZXhwaXJlICYmIHRoaXMuaW5wdXRFeHBpcmU/Lm5hdGl2ZUVsZW1lbnQpIHx8IHRoaXMuaW5wdXRDVkM/Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgdGhpcy52YWx1ZSA9IHtjYXJkLCBleHBpcmUsIGN2Y307XG4gICAgICAgIHRoaXMudXBkYXRlQmluKGJpbik7XG4gICAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLmV4cGlyZUluZXJ0ID0gISFleHBpcmU7XG5cbiAgICAgICAgZWxlbWVudD8uZm9jdXMoKTtcbiAgICB9XG5cbiAgICBvbkNhcmRDaGFuZ2UoY2FyZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHt2YWx1ZSwgYmlufSA9IHRoaXM7XG4gICAgICAgIGNvbnN0IHBhcnNlZCA9IGNhcmQuc3BsaXQoJyAnKS5qb2luKCcnKTtcblxuICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUuY2FyZCA9PT0gcGFyc2VkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZVByb3BlcnR5KHBhcnNlZCwgJ2NhcmQnKTtcbiAgICAgICAgdGhpcy51cGRhdGVCaW4oYmluKTtcblxuICAgICAgICBpZiAodGhpcy5jYXJkVmFsaWRhdG9yKHRoaXMuY2FyZCkgJiYgIXRoaXMuZXhwaXJlICYmIHRoaXMuaW5wdXRFeHBpcmUpIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNFeHBpcmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uRXhwaXJlQ2hhbmdlKGV4cGlyZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlUHJvcGVydHkoZXhwaXJlLCAnZXhwaXJlJyk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgZXhwaXJlLmxlbmd0aCA9PT0gRVhQSVJFX0NPTVBMRVRFX0xFTkdUSCAmJlxuICAgICAgICAgICAgdGhpcy5leHBpcmVTZWxlY3Rpb25TdGFydCA+PSBFWFBJUkVfQ09NUExFVEVfTEVOR1RIXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c0NWQygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25DVkNDaGFuZ2UoY3ZjOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVQcm9wZXJ0eShjdmMsICdjdmMnKTtcbiAgICB9XG5cbiAgICB0cmFuc2Zvcm0oe29mZnNldFdpZHRofTogSFRNTFNwYW5FbGVtZW50KTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNDYXJkQ29sbGFwc2VkID8gYHRyYW5zbGF0ZTNkKCR7b2Zmc2V0V2lkdGh9cHgsIDAsIDApYCA6ICcnO1xuICAgIH1cblxuICAgIG9uQWN0aXZlWm9uZUNoYW5nZShhY3RpdmU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVGb2N1c2VkKGFjdGl2ZSk7XG4gICAgICAgIHRoaXMub3BlbiA9IGFjdGl2ZSAmJiB0aGlzLm9wZW47XG4gICAgfVxuXG4gICAgb25Nb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHR1aUlzRWxlbWVudChldmVudC50YXJnZXQpICYmIHR1aUlzSW5wdXQoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5mb2N1c0lucHV0KCk7XG4gICAgfVxuXG4gICAgb25TY3JvbGwoe2N1cnJlbnRUYXJnZXR9OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodHVpSXNFbGVtZW50KGN1cnJlbnRUYXJnZXQpKSB7XG4gICAgICAgICAgICBjdXJyZW50VGFyZ2V0LnNjcm9sbExlZnQgPSAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2xlYXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZXhwaXJlSW5lcnQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XG4gICAgICAgIHRoaXMuZm9jdXNDYXJkKCk7XG4gICAgfVxuXG4gICAgdG9nZ2xlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9wZW4gPSAhdGhpcy5vcGVuO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIHdyaXRlVmFsdWUodmFsdWU6IFR1aUNhcmQgfCBudWxsKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHtiaW59ID0gdGhpcztcblxuICAgICAgICBzdXBlci53cml0ZVZhbHVlKHZhbHVlKTtcbiAgICAgICAgdGhpcy51cGRhdGVCaW4oYmluKTtcbiAgICAgICAgdGhpcy5leHBpcmVJbmVydCA9ICEhdGhpcy5leHBpcmUgJiYgdGhpcy5jYXJkUHJlZmlsbGVkO1xuICAgIH1cblxuICAgIC8qKiBQdWJsaWMgQVBJIGZvciBtYW51YWwgZm9jdXMgbWFuYWdlbWVudCAqL1xuICAgIGZvY3VzQ2FyZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jYXJkTnVtYmVyQXV0b2ZvY3VzUmVmPy5mb2N1cygpO1xuICAgIH1cblxuICAgIGZvY3VzRXhwaXJlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmV4cGlyZUNhcmRBdXRvZm9jdXNSZWY/LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgZm9jdXNDVkMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3ZjQ2FyZEF1dG9mb2N1c1JlZj8uZm9jdXMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBjYXJkRm9jdXNlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5pbnB1dENhcmQgJiYgdHVpSXNOYXRpdmVGb2N1c2VkKHRoaXMuaW5wdXRDYXJkLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IGhhc0V4dHJhU3BhY2UoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhcmQubGVuZ3RoICUgNCA+IDA7XG4gICAgfVxuXG4gICAgQHR1aVB1cmVcbiAgICBwcml2YXRlIGlzRm9jdXNhYmxlKGNhcmQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5mb2N1c2FibGUgJiYgKHRoaXMuY2FyZFZhbGlkYXRvcihjYXJkKSB8fCB0aGlzLmNhcmRQcmVmaWxsZWQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlQmluKG9sZEJpbjogc3RyaW5nIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICBjb25zdCB7YmlufSA9IHRoaXM7XG5cbiAgICAgICAgaWYgKGJpbiAhPT0gb2xkQmluICYmICF0aGlzLmNhcmRQcmVmaWxsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuYmluQ2hhbmdlLmVtaXQoYmluKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlUHJvcGVydHkodmFsdWU6IHN0cmluZywgcHJvcE5hbWU6ICdjYXJkJyB8ICdjdmMnIHwgJ2V4cGlyZScpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qge2NhcmQgPSAnJywgZXhwaXJlID0gJycsIGN2YyA9ICcnfSA9IHRoaXMudmFsdWUgfHwge307XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlOiBUdWlDYXJkID0ge2NhcmQsIGV4cGlyZSwgY3ZjfTtcblxuICAgICAgICBuZXdWYWx1ZVtwcm9wTmFtZV0gPSB2YWx1ZTtcblxuICAgICAgICB0aGlzLnZhbHVlID0gbmV3VmFsdWUuZXhwaXJlIHx8IG5ld1ZhbHVlLmN2YyB8fCBuZXdWYWx1ZS5jYXJkID8gbmV3VmFsdWUgOiBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9jdXNJbnB1dCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9XG4gICAgICAgICAgICAodGhpcy5jYXJkRm9jdXNhYmxlICYmIHRoaXMuaW5wdXRDYXJkPy5uYXRpdmVFbGVtZW50KSB8fFxuICAgICAgICAgICAgKHRoaXMuZXhwaXJlRm9jdXNhYmxlICYmIHRoaXMuaW5wdXRFeHBpcmU/Lm5hdGl2ZUVsZW1lbnQpIHx8XG4gICAgICAgICAgICB0aGlzLmlucHV0Q1ZDPy5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAgIGVsZW1lbnQ/LmZvY3VzKCk7XG4gICAgfVxufVxuIiwiPGRpdlxuICAgICpuZ0lmPVwiY2FyZEdyb3VwZWRUZXh0cyQgfCBhc3luYyBhcyB0ZXh0c1wiXG4gICAgdHVpRHJvcGRvd25MaW1pdFdpZHRoPVwiZml4ZWRcIlxuICAgIHR1aVdyYXBwZXJcbiAgICBjbGFzcz1cInQtY29tbW9uLXdyYXBwZXJcIlxuICAgIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2VcIlxuICAgIFtkaXNhYmxlZF09XCJjb21wdXRlZERpc2FibGVkXCJcbiAgICBbZm9jdXNdPVwiY29tcHV0ZWRGb2N1c2VkXCJcbiAgICBbaG92ZXJdPVwicHNldWRvSG92ZXJcIlxuICAgIFtpbnZhbGlkXT1cImNvbXB1dGVkSW52YWxpZFwiXG4gICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCJcbiAgICBbdHVpRHJvcGRvd25dPVwiZHJvcGRvd24gfHwgJydcIlxuICAgIFt0dWlEcm9wZG93bk1hbnVhbF09XCJvcGVuXCJcbiAgICAobW91c2Vkb3duKT1cIm9uTW91c2VEb3duKCRldmVudClcIlxuICAgIChzY3JvbGwpPVwib25TY3JvbGwoJGV2ZW50KVwiXG4gICAgKHR1aUFjdGl2ZVpvbmVDaGFuZ2UpPVwib25BY3RpdmVab25lQ2hhbmdlKCRldmVudClcIlxuPlxuICAgIDxkaXYgY2xhc3M9XCJ0LXdyYXBwZXJcIj5cbiAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAqdHVpTGV0PVwidmFsdWU/LmNhcmQgfCB0dWlGb3JtYXRDYXJkOiBjYXJkUHJlZmlsbGVkIGFzIGZvcm1hdHRlZENhcmRcIlxuICAgICAgICAgICAgdHVpUHJldmVudERlZmF1bHQ9XCJjbGlja1wiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICNpbnB1dENhcmRcbiAgICAgICAgICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLWlucHV0LWNhcmQtZ3JvdXBlZF9fY2FyZFwiXG4gICAgICAgICAgICAgICAgaW5wdXRtb2RlPVwibnVtZXJpY1wiXG4gICAgICAgICAgICAgICAgdHJhbnNsYXRlPVwibm9cIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInQtaW5wdXQgdC1pbnB1dF9jYXJkXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwiIWNhcmRQcmVmaWxsZWQgJiYgISh0aGlzLmNhcmQgfCB0dWlNYXBwZXI6IGNhcmRWYWxpZGF0b3IpXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCJpZENhcmRcIlxuICAgICAgICAgICAgICAgIFthdXRvY29tcGxldGVdPVwiYXV0b2NvbXBsZXRlQ2FyZFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLnQtaW5wdXRfaGlkZGVuXT1cIiFjYXJkLmxlbmd0aCAmJiBmb2N1c2VkXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MudC1pbnB1dF9pbmVydF09XCJjYXJkUHJlZmlsbGVkXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tcHV0ZWREaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgW21hc2tpdG9dPVwibWFza0NhcmRcIlxuICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImZvcm1hdHRlZENhcmRcIlxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjYXJkUHJlZmlsbGVkID8gJycgOiBleGFtcGxlVGV4dFwiXG4gICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCJcbiAgICAgICAgICAgICAgICBbdHVpQXV0b0ZvY3VzXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICBbdHVpRm9jdXNhYmxlXT1cImNhcmRGb2N1c2FibGVcIlxuICAgICAgICAgICAgICAgIChmb2N1cyk9XCIoMClcIlxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2FyZENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgdHJhbnNsYXRlPVwibm9cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidC1jb2xsYXBzZWRcIlxuICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtYmVmb3JlXT1cIm1hc2tlZFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLnQtY29sbGFwc2VkX2VuYWJsZS1tYXNrXT1cImlzQ2FyZENvbGxhcHNlZFwiXG4gICAgICAgICAgICAgICAgKHR1aVJlc2l6ZSk9XCIoMClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICNnaG9zdFxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInQtZ2hvc3RcIlxuICAgICAgICAgICAgICAgICAgICBbdGV4dENvbnRlbnRdPVwiZm9ybWF0dGVkQ2FyZC5zbGljZSgtdGFpbExlbmd0aClcIlxuICAgICAgICAgICAgICAgID48L3NwYW4+XG5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInQtY29sbGFwc2VkLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidC12YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUudHJhbnNmb3JtXT1cInRyYW5zZm9ybShnaG9zdClcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBmb3JtYXR0ZWRDYXJkIH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwidC1wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLnQtcGxhY2Vob2xkZXJfcmFpc2VkXT1cInBsYWNlaG9sZGVyUmFpc2VkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyB0ZXh0cy5jYXJkTnVtYmVyVGV4dCB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2xhYmVsPlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJ0LXdyYXBwZXIgdC13cmFwcGVyX2V4cGlyZVwiXG4gICAgICAgIFtjbGFzcy50LXdyYXBwZXJfYWN0aXZlXT1cImlzQ2FyZENvbGxhcHNlZFwiXG4gICAgPlxuICAgICAgICA8bGFiZWwgdHVpUHJldmVudERlZmF1bHQ9XCJjbGlja1wiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgI2lucHV0RXhwaXJlXG4gICAgICAgICAgICAgICAgYXV0b21hdGlvbi1pZD1cInR1aS1pbnB1dC1jYXJkLWdyb3VwZWRfX2V4cGlyZVwiXG4gICAgICAgICAgICAgICAgaW5wdXRtb2RlPVwibnVtZXJpY1wiXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCIwMC8wMFwiXG4gICAgICAgICAgICAgICAgdHJhbnNsYXRlPVwibm9cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidC1pbnB1dFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuaWRdPVwiaWRFeHBpcmVcIlxuICAgICAgICAgICAgICAgIFthdHRyLm5hbWVdPVwibmFtZVwiXG4gICAgICAgICAgICAgICAgW2F1dG9jb21wbGV0ZV09XCJhdXRvY29tcGxldGVFeHBpcmVcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy50LWlucHV0X2luZXJ0XT1cIiFleHBpcmVGb2N1c2FibGVcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21wdXRlZERpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBbbWFza2l0b109XCJtYXNrRXhwaXJlXCJcbiAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJleHBpcmVcIlxuICAgICAgICAgICAgICAgIFtyZWFkT25seV09XCJyZWFkT25seVwiXG4gICAgICAgICAgICAgICAgW3R1aUF1dG9Gb2N1c109XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgW3R1aUZvY3VzYWJsZV09XCJleHBpcmVGb2N1c2FibGVcIlxuICAgICAgICAgICAgICAgIChmb2N1cyk9XCIoMClcIlxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uRXhwaXJlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0LXBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MudC1wbGFjZWhvbGRlcl9yYWlzZWRdPVwicGxhY2Vob2xkZXJSYWlzZWRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IHRleHRzLmV4cGlyeVRleHQgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9sYWJlbD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwidC13cmFwcGVyIHQtd3JhcHBlcl9jdmNcIlxuICAgICAgICBbY2xhc3MudC13cmFwcGVyX2FjdGl2ZV09XCJpc0NhcmRDb2xsYXBzZWRcIlxuICAgID5cbiAgICAgICAgPGxhYmVsIHR1aVByZXZlbnREZWZhdWx0PVwiY2xpY2tcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICNpbnB1dENWQ1xuICAgICAgICAgICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktaW5wdXQtY2FyZC1ncm91cGVkX19jdmNcIlxuICAgICAgICAgICAgICAgIGlucHV0bW9kZT1cIm51bWVyaWNcIlxuICAgICAgICAgICAgICAgIHRyYW5zbGF0ZT1cIm5vXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0LWlucHV0XCJcbiAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCJpZENWQ1wiXG4gICAgICAgICAgICAgICAgW2F1dG9jb21wbGV0ZV09XCJhdXRvY29tcGxldGVDVkNcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy50LWlucHV0X3ByZWZpbGxlZF09XCJjdmNQcmVmaWxsZWRcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21wdXRlZERpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBbbWFza2l0b109XCJtYXNrQ1ZDXCJcbiAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJjdmNcIlxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjdmNQcmVmaWxsZWQgPyAn4oCi4oCi4oCiJyA6IGV4YW1wbGVUZXh0Q1ZDXCJcbiAgICAgICAgICAgICAgICBbcmVhZE9ubHldPVwicmVhZE9ubHkgfHwgY3ZjUHJlZmlsbGVkXCJcbiAgICAgICAgICAgICAgICBbdHVpQXV0b0ZvY3VzXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICBbdHVpRm9jdXNhYmxlXT1cImN2Y0ZvY3VzYWJsZVwiXG4gICAgICAgICAgICAgICAgKGZvY3VzKT1cIigwKVwiXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25DVkNDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cInQtcGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy50LXBsYWNlaG9sZGVyX3JhaXNlZF09XCJwbGFjZWhvbGRlclJhaXNlZFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgdGV4dHMuY3ZjVGV4dCB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2xhYmVsPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJ0LWljb25zXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwiaWNvblwiXG4gICAgICAgICAgICBjbGFzcz1cInQtaWNvbi1vdXRsZXRcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8dHVpLXN2Z1xuICAgICAgICAgICAgICAgICpwb2x5bW9ycGhldXNPdXRsZXQ9XCJpY29uIGFzIHRleHRcIlxuICAgICAgICAgICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktaW5wdXQtY2FyZC1ncm91cGVkX19pY29uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInQtY2FyZFwiXG4gICAgICAgICAgICAgICAgW3NyY109XCJ0ZXh0XCJcbiAgICAgICAgICAgID48L3R1aS1zdmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8dHVpLXN2Z1xuICAgICAgICAgICAgKm5nSWY9XCJoYXNDbGVhbmVyXCJcbiAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJpY29uXCJcbiAgICAgICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktaW5wdXQtY2FyZC1ncm91cGVkX19jbGVhbmVyXCJcbiAgICAgICAgICAgIHR1aVdyYXBwZXJcbiAgICAgICAgICAgIGNsYXNzPVwidC1pY29uXCJcbiAgICAgICAgICAgIFtzcmNdPVwiaWNvbnMuY2xvc2VcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyKClcIlxuICAgICAgICA+PC90dWktc3ZnPlxuICAgICAgICA8dHVpLXN2Z1xuICAgICAgICAgICAgKm5nSWY9XCJoYXNEcm9wZG93blwiXG4gICAgICAgICAgICBhcHBlYXJhbmNlPVwiaWNvblwiXG4gICAgICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLWlucHV0LWNhcmQtZ3JvdXBlZF9fZHJvcGRvd25cIlxuICAgICAgICAgICAgdHVpV3JhcHBlclxuICAgICAgICAgICAgY2xhc3M9XCJ0LWljb25cIlxuICAgICAgICAgICAgW2NsYXNzLnQtaWNvbl9yb3RhdGVkXT1cIm9wZW5cIlxuICAgICAgICAgICAgW3NyY109XCJhcnJvd09wdGlvbnMuaWNvbkxhcmdlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGUoKVwiXG4gICAgICAgID48L3R1aS1zdmc+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -1,9 +0,0 @@
1
- import { TUI_INPUT_CARD_DEFAULT_OPTIONS, } from '@taiga-ui/addon-commerce/components/input-card';
2
- import { tuiDefaultCardValidator } from '@taiga-ui/addon-commerce/constants';
3
- import { tuiCreateToken, tuiProvideOptions } from '@taiga-ui/cdk';
4
- export const TUI_INPUT_CARD_GROUPED_DEFAULT_OPTIONS = Object.assign(Object.assign({}, TUI_INPUT_CARD_DEFAULT_OPTIONS), { cardValidator: tuiDefaultCardValidator, exampleText: `0000 0000 0000 0000`, exampleTextCVC: `000` });
5
- export const TUI_INPUT_CARD_GROUPED_OPTIONS = tuiCreateToken(TUI_INPUT_CARD_GROUPED_DEFAULT_OPTIONS);
6
- export function tuiInputCardGroupedOptionsProvider(options) {
7
- return tuiProvideOptions(TUI_INPUT_CARD_GROUPED_OPTIONS, options, TUI_INPUT_CARD_GROUPED_DEFAULT_OPTIONS);
8
- }
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtY2FyZC1ncm91cGVkLm9wdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hZGRvbi1jb21tZXJjZS9jb21wb25lbnRzL2lucHV0LWNhcmQtZ3JvdXBlZC9pbnB1dC1jYXJkLWdyb3VwZWQub3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0gsOEJBQThCLEdBRWpDLE1BQU0sZ0RBQWdELENBQUM7QUFDeEQsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDM0UsT0FBTyxFQUFvQixjQUFjLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFRbkYsTUFBTSxDQUFDLE1BQU0sc0NBQXNDLG1DQUM1Qyw4QkFBOEIsS0FDakMsYUFBYSxFQUFFLHVCQUF1QixFQUN0QyxXQUFXLEVBQUUscUJBQXFCLEVBQ2xDLGNBQWMsRUFBRSxLQUFLLEdBQ3hCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBRyxjQUFjLENBQ3hELHNDQUFzQyxDQUN6QyxDQUFDO0FBRUYsTUFBTSxVQUFVLGtDQUFrQyxDQUM5QyxPQUE0QztJQUU1QyxPQUFPLGlCQUFpQixDQUNwQiw4QkFBOEIsRUFDOUIsT0FBTyxFQUNQLHNDQUFzQyxDQUN6QyxDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UHJvdmlkZXJ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBUVUlfSU5QVVRfQ0FSRF9ERUZBVUxUX09QVElPTlMsXG4gICAgVHVpSW5wdXRDYXJkT3B0aW9ucyxcbn0gZnJvbSAnQHRhaWdhLXVpL2FkZG9uLWNvbW1lcmNlL2NvbXBvbmVudHMvaW5wdXQtY2FyZCc7XG5pbXBvcnQge3R1aURlZmF1bHRDYXJkVmFsaWRhdG9yfSBmcm9tICdAdGFpZ2EtdWkvYWRkb24tY29tbWVyY2UvY29uc3RhbnRzJztcbmltcG9ydCB7VHVpQm9vbGVhbkhhbmRsZXIsIHR1aUNyZWF0ZVRva2VuLCB0dWlQcm92aWRlT3B0aW9uc30gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHVpSW5wdXRDYXJkR3JvdXBlZE9wdGlvbnMgZXh0ZW5kcyBUdWlJbnB1dENhcmRPcHRpb25zIHtcbiAgICByZWFkb25seSBjYXJkVmFsaWRhdG9yOiBUdWlCb29sZWFuSGFuZGxlcjxzdHJpbmc+O1xuICAgIHJlYWRvbmx5IGV4YW1wbGVUZXh0OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgZXhhbXBsZVRleHRDVkM6IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IFRVSV9JTlBVVF9DQVJEX0dST1VQRURfREVGQVVMVF9PUFRJT05TOiBUdWlJbnB1dENhcmRHcm91cGVkT3B0aW9ucyA9IHtcbiAgICAuLi5UVUlfSU5QVVRfQ0FSRF9ERUZBVUxUX09QVElPTlMsXG4gICAgY2FyZFZhbGlkYXRvcjogdHVpRGVmYXVsdENhcmRWYWxpZGF0b3IsXG4gICAgZXhhbXBsZVRleHQ6IGAwMDAwIDAwMDAgMDAwMCAwMDAwYCxcbiAgICBleGFtcGxlVGV4dENWQzogYDAwMGAsXG59O1xuXG5leHBvcnQgY29uc3QgVFVJX0lOUFVUX0NBUkRfR1JPVVBFRF9PUFRJT05TID0gdHVpQ3JlYXRlVG9rZW4oXG4gICAgVFVJX0lOUFVUX0NBUkRfR1JPVVBFRF9ERUZBVUxUX09QVElPTlMsXG4pO1xuXG5leHBvcnQgZnVuY3Rpb24gdHVpSW5wdXRDYXJkR3JvdXBlZE9wdGlvbnNQcm92aWRlcihcbiAgICBvcHRpb25zOiBQYXJ0aWFsPFR1aUlucHV0Q2FyZEdyb3VwZWRPcHRpb25zPixcbik6IFByb3ZpZGVyIHtcbiAgICByZXR1cm4gdHVpUHJvdmlkZU9wdGlvbnMoXG4gICAgICAgIFRVSV9JTlBVVF9DQVJEX0dST1VQRURfT1BUSU9OUyxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgVFVJX0lOUFVUX0NBUkRfR1JPVVBFRF9ERUZBVUxUX09QVElPTlMsXG4gICAgKTtcbn1cbiJdfQ==
@@ -1,29 +0,0 @@
1
- import { inject } from '@angular/core';
2
- import { WINDOW } from '@ng-web-apis/common';
3
- import { TUI_CARD_CVC_TEXTS, TUI_CARD_EXPIRY_TEXTS, TUI_CARD_NUMBER_TEXTS, } from '@taiga-ui/addon-commerce/tokens';
4
- import { tuiCreateTokenFromFactory, tuiTypedFromEvent } from '@taiga-ui/cdk';
5
- import { TUI_MEDIA } from '@taiga-ui/core';
6
- import { combineLatest, of } from 'rxjs';
7
- import { map, startWith, switchMap } from 'rxjs/operators';
8
- /**
9
- * InputCardGrouped texts
10
- */
11
- export const TUI_INPUT_CARD_GROUPED_TEXTS = tuiCreateTokenFromFactory(() => {
12
- const win = inject(WINDOW);
13
- const cardNumberTexts = inject(TUI_CARD_NUMBER_TEXTS);
14
- const expiryTexts = inject(TUI_CARD_EXPIRY_TEXTS);
15
- const cvcTexts = inject(TUI_CARD_CVC_TEXTS);
16
- const { desktopSmall } = inject(TUI_MEDIA);
17
- const media = win.matchMedia(`screen and (min-width: ${(desktopSmall - 1) / 16}em)`);
18
- return tuiTypedFromEvent(media, `change`).pipe(startWith(null), switchMap(() => combineLatest([
19
- of(Number(media.matches)),
20
- cardNumberTexts,
21
- expiryTexts,
22
- cvcTexts,
23
- ])), map(([index, cardNumber, expiry, cvcTexts]) => ({
24
- cardNumberText: cardNumber[index],
25
- expiryText: expiry[index],
26
- cvcText: cvcTexts[index],
27
- })));
28
- });
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtY2FyZC1ncm91cGVkLnByb3ZpZGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FkZG9uLWNvbW1lcmNlL2NvbXBvbmVudHMvaW5wdXQtY2FyZC1ncm91cGVkL2lucHV0LWNhcmQtZ3JvdXBlZC5wcm92aWRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNyQyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDM0MsT0FBTyxFQUNILGtCQUFrQixFQUNsQixxQkFBcUIsRUFDckIscUJBQXFCLEdBQ3hCLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxFQUFDLHlCQUF5QixFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQUMsYUFBYSxFQUFjLEVBQUUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQVF6RDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLHlCQUF5QixDQUVuRSxHQUFHLEVBQUU7SUFDSCxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDM0IsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDdEQsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDbEQsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDNUMsTUFBTSxFQUFDLFlBQVksRUFBQyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUV6QyxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLDBCQUEwQixDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBRXJGLE9BQU8saUJBQWlCLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FDMUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUNmLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FDWCxhQUFhLENBQUM7UUFDVixFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6QixlQUFlO1FBQ2YsV0FBVztRQUNYLFFBQVE7S0FDWCxDQUFDLENBQ0wsRUFDRCxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLGNBQWMsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDO1FBQ2pDLFVBQVUsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQ3pCLE9BQU8sRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDO0tBQzNCLENBQUMsQ0FBQyxDQUNOLENBQUM7QUFDTixDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7V0lORE9XfSBmcm9tICdAbmctd2ViLWFwaXMvY29tbW9uJztcbmltcG9ydCB7XG4gICAgVFVJX0NBUkRfQ1ZDX1RFWFRTLFxuICAgIFRVSV9DQVJEX0VYUElSWV9URVhUUyxcbiAgICBUVUlfQ0FSRF9OVU1CRVJfVEVYVFMsXG59IGZyb20gJ0B0YWlnYS11aS9hZGRvbi1jb21tZXJjZS90b2tlbnMnO1xuaW1wb3J0IHt0dWlDcmVhdGVUb2tlbkZyb21GYWN0b3J5LCB0dWlUeXBlZEZyb21FdmVudH0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQge1RVSV9NRURJQX0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHtjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBvZn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcCwgc3RhcnRXaXRoLCBzd2l0Y2hNYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuZXhwb3J0IGludGVyZmFjZSBUdWlDYXJkR3JvdXBlZFRleHRzIHtcbiAgICByZWFkb25seSBjYXJkTnVtYmVyVGV4dDogc3RyaW5nO1xuICAgIHJlYWRvbmx5IGN2Y1RleHQ6IHN0cmluZztcbiAgICByZWFkb25seSBleHBpcnlUZXh0OiBzdHJpbmc7XG59XG5cbi8qKlxuICogSW5wdXRDYXJkR3JvdXBlZCB0ZXh0c1xuICovXG5leHBvcnQgY29uc3QgVFVJX0lOUFVUX0NBUkRfR1JPVVBFRF9URVhUUyA9IHR1aUNyZWF0ZVRva2VuRnJvbUZhY3Rvcnk8XG4gICAgT2JzZXJ2YWJsZTxUdWlDYXJkR3JvdXBlZFRleHRzPlxuPigoKSA9PiB7XG4gICAgY29uc3Qgd2luID0gaW5qZWN0KFdJTkRPVyk7XG4gICAgY29uc3QgY2FyZE51bWJlclRleHRzID0gaW5qZWN0KFRVSV9DQVJEX05VTUJFUl9URVhUUyk7XG4gICAgY29uc3QgZXhwaXJ5VGV4dHMgPSBpbmplY3QoVFVJX0NBUkRfRVhQSVJZX1RFWFRTKTtcbiAgICBjb25zdCBjdmNUZXh0cyA9IGluamVjdChUVUlfQ0FSRF9DVkNfVEVYVFMpO1xuICAgIGNvbnN0IHtkZXNrdG9wU21hbGx9ID0gaW5qZWN0KFRVSV9NRURJQSk7XG5cbiAgICBjb25zdCBtZWRpYSA9IHdpbi5tYXRjaE1lZGlhKGBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICR7KGRlc2t0b3BTbWFsbCAtIDEpIC8gMTZ9ZW0pYCk7XG5cbiAgICByZXR1cm4gdHVpVHlwZWRGcm9tRXZlbnQobWVkaWEsIGBjaGFuZ2VgKS5waXBlKFxuICAgICAgICBzdGFydFdpdGgobnVsbCksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICAgICAgb2YoTnVtYmVyKG1lZGlhLm1hdGNoZXMpKSxcbiAgICAgICAgICAgICAgICBjYXJkTnVtYmVyVGV4dHMsXG4gICAgICAgICAgICAgICAgZXhwaXJ5VGV4dHMsXG4gICAgICAgICAgICAgICAgY3ZjVGV4dHMsXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgKSxcbiAgICAgICAgbWFwKChbaW5kZXgsIGNhcmROdW1iZXIsIGV4cGlyeSwgY3ZjVGV4dHNdKSA9PiAoe1xuICAgICAgICAgICAgY2FyZE51bWJlclRleHQ6IGNhcmROdW1iZXJbaW5kZXhdLFxuICAgICAgICAgICAgZXhwaXJ5VGV4dDogZXhwaXJ5W2luZGV4XSxcbiAgICAgICAgICAgIGN2Y1RleHQ6IGN2Y1RleHRzW2luZGV4XSxcbiAgICAgICAgfSkpLFxuICAgICk7XG59KTtcbiJdfQ==