@snabcentr/client-ui 3.37.9 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (391) hide show
  1. package/fesm2022/snabcentr-client-ui.mjs +3531 -3946
  2. package/fesm2022/snabcentr-client-ui.mjs.map +1 -1
  3. package/index.d.ts +4351 -3
  4. package/package.json +1 -3
  5. package/release_notes.tmp +5 -5
  6. package/styles/tailwind/tailwind.scss +58 -174
  7. package/accordion/index.d.ts +0 -3
  8. package/accordion/sc-accordion-content.directive.d.ts +0 -9
  9. package/accordion/sc-accordion.component.d.ts +0 -56
  10. package/accordion/sc-accordion.module.d.ts +0 -15
  11. package/auth/enums/auth-method.d.ts +0 -13
  12. package/auth/index.d.ts +0 -8
  13. package/auth/interfaces/api-error-response.d.ts +0 -13
  14. package/auth/interfaces/index.d.ts +0 -3
  15. package/auth/interfaces/sc-bank-account-form-group.d.ts +0 -11
  16. package/auth/interfaces/sc-contact-form-group.d.ts +0 -10
  17. package/auth/sc-auth.module.d.ts +0 -26
  18. package/auth/sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component.d.ts +0 -39
  19. package/auth/sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component.d.ts +0 -41
  20. package/auth/sc-sign-in-form/sc-sign-in-form.component.d.ts +0 -53
  21. package/auth/sc-simple-sign-up-form/sc-simple-sign-up-form.component.d.ts +0 -106
  22. package/auth/sign-up-form/sc-sign-up-form.component.d.ts +0 -161
  23. package/banner/index.d.ts +0 -2
  24. package/banner/sc-banner.component.d.ts +0 -88
  25. package/banner/sc-banner.module.d.ts +0 -18
  26. package/brands-list/index.d.ts +0 -2
  27. package/brands-list/sc-brands-list.component.d.ts +0 -15
  28. package/brands-list/sc-brands-list.module.d.ts +0 -12
  29. package/cart/add-or-editing-cart-item-dialog/add-or-editing-cart-item-form/sc-add-or-editing-cart-item-form.component.d.ts +0 -102
  30. package/cart/add-or-editing-cart-item-dialog/index.d.ts +0 -2
  31. package/cart/add-or-editing-cart-item-dialog/sc-add-or-editing-cart-item-dialog.component.d.ts +0 -48
  32. package/cart/cart-item/sc-cart-item.component.d.ts +0 -25
  33. package/cart/index.d.ts +0 -3
  34. package/cart/sc-cart-add-products-from-csv-dialog/sc-cart-add-products-from-csv-dialog.component.d.ts +0 -62
  35. package/catalog/category-card/sc-category-card.component.d.ts +0 -76
  36. package/catalog/cost-with-discount/cost-with-discount.component.d.ts +0 -23
  37. package/catalog/download-price-list/sc-download-price-list.component.d.ts +0 -38
  38. package/catalog/hover-image-carousel/sc-hover-image-carousel.component.d.ts +0 -48
  39. package/catalog/index.d.ts +0 -12
  40. package/catalog/input-quantity/sc-input-quantity.component.d.ts +0 -82
  41. package/catalog/notify-when-in-stock-dialog/index.d.ts +0 -2
  42. package/catalog/notify-when-in-stock-dialog/sc-notify-when-in-stock-dialog.component.d.ts +0 -90
  43. package/catalog/notify-when-in-stock-dialog/sc-product-in-all-warehouses.pipe.d.ts +0 -22
  44. package/catalog/price-card/sc-price-card.component.d.ts +0 -18
  45. package/catalog/price-card-inline/sc-price-card-inline.component.d.ts +0 -10
  46. package/catalog/price-history/sc-price-history.component.d.ts +0 -88
  47. package/catalog/price-list-pagination/sc-price-list-pagination.component.d.ts +0 -40
  48. package/catalog/price-warehouse-stock/sc-price-warehouse-stock.component.d.ts +0 -47
  49. package/catalog/sc-catalog.module.d.ts +0 -29
  50. package/catalog/sc-favorite-button/sc-favorite-button.component.d.ts +0 -25
  51. package/contacts/add-contact-dialog/sc-add-contact-dialog.component.d.ts +0 -49
  52. package/contacts/contacts-accordion/sc-contacts-accordion.component.d.ts +0 -23
  53. package/contacts/index.d.ts +0 -7
  54. package/contacts/manager-card/sc-manager-card.component.d.ts +0 -22
  55. package/contacts/manager-card-push/sc-manager-card-push.component.d.ts +0 -18
  56. package/contacts/new-contact-form/sc-new-contact-form.component.d.ts +0 -28
  57. package/contacts/sc-contacts.module.d.ts +0 -28
  58. package/contacts/tokens/index.d.ts +0 -2
  59. package/contacts/tokens/sc-manager-qr-handler.token.d.ts +0 -6
  60. package/contacts/tokens/sc-show-help-notification-in-phone-input.token.d.ts +0 -5
  61. package/contragents/add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component.d.ts +0 -49
  62. package/contragents/add-contragent-dialog/sc-add-contragent-dialog.component.d.ts +0 -161
  63. package/contragents/contragents-accordion/contragents-accordion-item/sc-contragents-accordion-item.component.d.ts +0 -62
  64. package/contragents/contragents-accordion/sc-contragents-accordion.component.d.ts +0 -49
  65. package/contragents/index.d.ts +0 -7
  66. package/contragents/new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component.d.ts +0 -64
  67. package/contragents/new-contragent-form/sc-new-contragent-form.component.d.ts +0 -125
  68. package/contragents/sc-contragents.module.d.ts +0 -27
  69. package/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.d.ts +0 -141
  70. package/delivery-address/delivery-address-accordion/delivery-address-accordion-item/sc-delivery-address-accordion-item.component.d.ts +0 -50
  71. package/delivery-address/delivery-address-accordion/sc-delivery-address-accordion.component.d.ts +0 -49
  72. package/delivery-address/index.d.ts +0 -4
  73. package/delivery-address/sc-delivery-address.module.d.ts +0 -26
  74. package/dialogs/index.d.ts +0 -1
  75. package/dialogs/sc-resource-preview/sc-resource-preview.component.d.ts +0 -42
  76. package/directives/abstract-price-card/abstract-sc-price-card.directive.d.ts +0 -136
  77. package/directives/index.d.ts +0 -7
  78. package/directives/links/index.d.ts +0 -4
  79. package/directives/links/sc-email-link.directive.d.ts +0 -25
  80. package/directives/links/sc-link-location.d.ts +0 -5
  81. package/directives/links/sc-links.d.ts +0 -7
  82. package/directives/links/sc-tel-link.directive.d.ts +0 -40
  83. package/directives/next-input-focus/sc-next-input-focus.directive.d.ts +0 -18
  84. package/directives/next-input-focus/sc-next-input-focus.module.d.ts +0 -10
  85. package/directives/sc-date-value-transformer.directive.d.ts +0 -8
  86. package/directives/select-on-focusin/sc-select-on-focusin.directive.d.ts +0 -14
  87. package/directives/terminal-link/sc-terminal-link.directive.d.ts +0 -34
  88. package/error-handler/consts/error-change-handler.providers.d.ts +0 -5
  89. package/error-handler/error-block-status/error-block-status.component.d.ts +0 -37
  90. package/error-handler/index.d.ts +0 -4
  91. package/error-handler/interfaces/i-block-error.d.ts +0 -17
  92. package/error-handler/sc-error-handler.component.d.ts +0 -40
  93. package/esm2022/accordion/index.mjs +0 -4
  94. package/esm2022/accordion/sc-accordion-content.directive.mjs +0 -17
  95. package/esm2022/accordion/sc-accordion.component.mjs +0 -92
  96. package/esm2022/accordion/sc-accordion.module.mjs +0 -26
  97. package/esm2022/auth/enums/auth-method.mjs +0 -15
  98. package/esm2022/auth/index.mjs +0 -9
  99. package/esm2022/auth/interfaces/api-error-response.mjs +0 -2
  100. package/esm2022/auth/interfaces/index.mjs +0 -4
  101. package/esm2022/auth/interfaces/sc-bank-account-form-group.mjs +0 -2
  102. package/esm2022/auth/interfaces/sc-contact-form-group.mjs +0 -2
  103. package/esm2022/auth/sc-auth.module.mjs +0 -99
  104. package/esm2022/auth/sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component.mjs +0 -87
  105. package/esm2022/auth/sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component.mjs +0 -86
  106. package/esm2022/auth/sc-sign-in-form/sc-sign-in-form.component.mjs +0 -89
  107. package/esm2022/auth/sc-simple-sign-up-form/sc-simple-sign-up-form.component.mjs +0 -187
  108. package/esm2022/auth/sign-up-form/sc-sign-up-form.component.mjs +0 -333
  109. package/esm2022/banner/index.mjs +0 -3
  110. package/esm2022/banner/sc-banner.component.mjs +0 -143
  111. package/esm2022/banner/sc-banner.module.mjs +0 -30
  112. package/esm2022/brands-list/index.mjs +0 -3
  113. package/esm2022/brands-list/sc-brands-list.component.mjs +0 -24
  114. package/esm2022/brands-list/sc-brands-list.module.mjs +0 -22
  115. package/esm2022/cart/add-or-editing-cart-item-dialog/add-or-editing-cart-item-form/sc-add-or-editing-cart-item-form.component.mjs +0 -233
  116. package/esm2022/cart/add-or-editing-cart-item-dialog/index.mjs +0 -3
  117. package/esm2022/cart/add-or-editing-cart-item-dialog/sc-add-or-editing-cart-item-dialog.component.mjs +0 -74
  118. package/esm2022/cart/cart-item/sc-cart-item.component.mjs +0 -74
  119. package/esm2022/cart/index.mjs +0 -4
  120. package/esm2022/cart/sc-cart-add-products-from-csv-dialog/sc-cart-add-products-from-csv-dialog.component.mjs +0 -110
  121. package/esm2022/catalog/category-card/sc-category-card.component.mjs +0 -102
  122. package/esm2022/catalog/cost-with-discount/cost-with-discount.component.mjs +0 -38
  123. package/esm2022/catalog/download-price-list/sc-download-price-list.component.mjs +0 -56
  124. package/esm2022/catalog/hover-image-carousel/sc-hover-image-carousel.component.mjs +0 -76
  125. package/esm2022/catalog/index.mjs +0 -13
  126. package/esm2022/catalog/input-quantity/sc-input-quantity.component.mjs +0 -177
  127. package/esm2022/catalog/notify-when-in-stock-dialog/index.mjs +0 -3
  128. package/esm2022/catalog/notify-when-in-stock-dialog/sc-notify-when-in-stock-dialog.component.mjs +0 -173
  129. package/esm2022/catalog/notify-when-in-stock-dialog/sc-product-in-all-warehouses.pipe.mjs +0 -35
  130. package/esm2022/catalog/price-card/sc-price-card.component.mjs +0 -52
  131. package/esm2022/catalog/price-card-inline/sc-price-card-inline.component.mjs +0 -56
  132. package/esm2022/catalog/price-history/sc-price-history.component.mjs +0 -140
  133. package/esm2022/catalog/price-list-pagination/sc-price-list-pagination.component.mjs +0 -65
  134. package/esm2022/catalog/price-warehouse-stock/sc-price-warehouse-stock.component.mjs +0 -54
  135. package/esm2022/catalog/sc-catalog.module.mjs +0 -125
  136. package/esm2022/catalog/sc-favorite-button/sc-favorite-button.component.mjs +0 -42
  137. package/esm2022/contacts/add-contact-dialog/sc-add-contact-dialog.component.mjs +0 -91
  138. package/esm2022/contacts/contacts-accordion/sc-contacts-accordion.component.mjs +0 -38
  139. package/esm2022/contacts/index.mjs +0 -8
  140. package/esm2022/contacts/manager-card/sc-manager-card.component.mjs +0 -58
  141. package/esm2022/contacts/manager-card-push/sc-manager-card-push.component.mjs +0 -28
  142. package/esm2022/contacts/new-contact-form/sc-new-contact-form.component.mjs +0 -37
  143. package/esm2022/contacts/sc-contacts.module.mjs +0 -92
  144. package/esm2022/contacts/tokens/index.mjs +0 -3
  145. package/esm2022/contacts/tokens/sc-manager-qr-handler.token.mjs +0 -24
  146. package/esm2022/contacts/tokens/sc-show-help-notification-in-phone-input.token.mjs +0 -7
  147. package/esm2022/contragents/add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component.mjs +0 -81
  148. package/esm2022/contragents/add-contragent-dialog/sc-add-contragent-dialog.component.mjs +0 -278
  149. package/esm2022/contragents/contragents-accordion/contragents-accordion-item/sc-contragents-accordion-item.component.mjs +0 -75
  150. package/esm2022/contragents/contragents-accordion/sc-contragents-accordion.component.mjs +0 -69
  151. package/esm2022/contragents/index.mjs +0 -8
  152. package/esm2022/contragents/new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component.mjs +0 -72
  153. package/esm2022/contragents/new-contragent-form/sc-new-contragent-form.component.mjs +0 -242
  154. package/esm2022/contragents/sc-contragents.module.mjs +0 -118
  155. package/esm2022/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.mjs +0 -250
  156. package/esm2022/delivery-address/delivery-address-accordion/delivery-address-accordion-item/sc-delivery-address-accordion-item.component.mjs +0 -60
  157. package/esm2022/delivery-address/delivery-address-accordion/sc-delivery-address-accordion.component.mjs +0 -69
  158. package/esm2022/delivery-address/index.mjs +0 -5
  159. package/esm2022/delivery-address/sc-delivery-address.module.mjs +0 -99
  160. package/esm2022/dialogs/index.mjs +0 -2
  161. package/esm2022/dialogs/sc-resource-preview/sc-resource-preview.component.mjs +0 -68
  162. package/esm2022/directives/abstract-price-card/abstract-sc-price-card.directive.mjs +0 -170
  163. package/esm2022/directives/index.mjs +0 -8
  164. package/esm2022/directives/links/index.mjs +0 -5
  165. package/esm2022/directives/links/sc-email-link.directive.mjs +0 -49
  166. package/esm2022/directives/links/sc-link-location.mjs +0 -2
  167. package/esm2022/directives/links/sc-links.mjs +0 -8
  168. package/esm2022/directives/links/sc-tel-link.directive.mjs +0 -79
  169. package/esm2022/directives/next-input-focus/sc-next-input-focus.directive.mjs +0 -43
  170. package/esm2022/directives/next-input-focus/sc-next-input-focus.module.mjs +0 -19
  171. package/esm2022/directives/sc-date-value-transformer.directive.mjs +0 -30
  172. package/esm2022/directives/select-on-focusin/sc-select-on-focusin.directive.mjs +0 -31
  173. package/esm2022/directives/terminal-link/sc-terminal-link.directive.mjs +0 -69
  174. package/esm2022/error-handler/consts/error-change-handler.providers.mjs +0 -8
  175. package/esm2022/error-handler/error-block-status/error-block-status.component.mjs +0 -76
  176. package/esm2022/error-handler/index.mjs +0 -5
  177. package/esm2022/error-handler/interfaces/i-block-error.mjs +0 -2
  178. package/esm2022/error-handler/sc-error-handler.component.mjs +0 -58
  179. package/esm2022/feedback/feedback-form/sc-feedback-form.component.mjs +0 -344
  180. package/esm2022/feedback/gratitude/sc-gratitude.component.mjs +0 -32
  181. package/esm2022/feedback/index.mjs +0 -4
  182. package/esm2022/feedback/interfaces/index.mjs +0 -2
  183. package/esm2022/feedback/interfaces/sc-feedback-form-config.mjs +0 -2
  184. package/esm2022/files/directives/index.mjs +0 -3
  185. package/esm2022/files/directives/tree-top.directive.mjs +0 -63
  186. package/esm2022/files/directives/tree.directive.mjs +0 -47
  187. package/esm2022/files/file-tree-item/file-tree-item.component.mjs +0 -18
  188. package/esm2022/files/files-and-documents/files-and-documents.component.mjs +0 -61
  189. package/esm2022/files/files-and-documents.module.mjs +0 -28
  190. package/esm2022/files/index.mjs +0 -6
  191. package/esm2022/files/interfaces/tree-node.mjs +0 -2
  192. package/esm2022/files/services/index.mjs +0 -3
  193. package/esm2022/files/services/tree-icon.service.mjs +0 -49
  194. package/esm2022/files/services/tree-loader.service.mjs +0 -62
  195. package/esm2022/form-fields/addresses-selection-field/sc-addresses-selection-field.component.mjs +0 -155
  196. package/esm2022/form-fields/form-fields.module.mjs +0 -69
  197. package/esm2022/form-fields/index.mjs +0 -4
  198. package/esm2022/form-fields/suggestion-field/sc-suggestion-field.component.mjs +0 -175
  199. package/esm2022/helpers/index.mjs +0 -2
  200. package/esm2022/helpers/sc-px-converter.mjs +0 -27
  201. package/esm2022/icons/index.mjs +0 -2
  202. package/esm2022/icons/sc-client-ui-icons-name.mjs +0 -99
  203. package/esm2022/loader/index.mjs +0 -2
  204. package/esm2022/loader/sc-i-loader.mjs +0 -2
  205. package/esm2022/masks/index.mjs +0 -8
  206. package/esm2022/masks/sc-account-number-mask.mjs +0 -7
  207. package/esm2022/masks/sc-bic-mask.mjs +0 -7
  208. package/esm2022/masks/sc-correspondent-account-mask.mjs +0 -7
  209. package/esm2022/masks/sc-inn-mask.mjs +0 -13
  210. package/esm2022/masks/sc-kpp-mask.mjs +0 -7
  211. package/esm2022/masks/sc-okpo-mask.mjs +0 -13
  212. package/esm2022/masks/sc-phone-verification-code-mask.mjs +0 -7
  213. package/esm2022/models/i-sc-image.mjs +0 -2
  214. package/esm2022/models/index.mjs +0 -2
  215. package/esm2022/news/index.mjs +0 -4
  216. package/esm2022/news/news-card/sc-news-card.component.mjs +0 -34
  217. package/esm2022/news/news-card-skeleton/sc-news-card-skeleton.component.mjs +0 -31
  218. package/esm2022/news/sc-news.module.mjs +0 -26
  219. package/esm2022/order/index.mjs +0 -4
  220. package/esm2022/order/order-item-mobile/sc-order-item-mobile.component.mjs +0 -60
  221. package/esm2022/order/sc-order.module.mjs +0 -53
  222. package/esm2022/order/sc-payment-status/sc-payment-status.component.mjs +0 -35
  223. package/esm2022/pages/frequently-asked-questions/sc-frequently-asked-questions.component.mjs +0 -28
  224. package/esm2022/pages/frequently-asked-questions/sc-page-size-options.mjs +0 -6
  225. package/esm2022/pages/frequently-asked-questions-group-selector/sc-frequently-asked-questions-group-selector.component.mjs +0 -59
  226. package/esm2022/pages/frequently-asked-questions-with-groups/sc-frequently-asked-questions-with-groups.component.mjs +0 -106
  227. package/esm2022/pages/index.mjs +0 -4
  228. package/esm2022/pipes/index.mjs +0 -3
  229. package/esm2022/pipes/sc-format-date.mjs +0 -33
  230. package/esm2022/pipes/sc-phone-format.mjs +0 -44
  231. package/esm2022/profile/index.mjs +0 -3
  232. package/esm2022/profile/sc-profile-accordions-content/sc-profile-accordions-content.component.mjs +0 -175
  233. package/esm2022/profile/sc-profile.module.mjs +0 -76
  234. package/esm2022/providers/date-value-transformer/index.mjs +0 -4
  235. package/esm2022/providers/date-value-transformer/sc-date-value-transformer-types.mjs +0 -2
  236. package/esm2022/providers/date-value-transformer/sc-date-value-transformer-with-end-time.mjs +0 -26
  237. package/esm2022/providers/date-value-transformer/sc-date-value-transformer-with-start-time.mjs +0 -37
  238. package/esm2022/providers/index.mjs +0 -12
  239. package/esm2022/providers/sc-allow-select-terminated.mjs +0 -6
  240. package/esm2022/providers/sc-country-ids.mjs +0 -6
  241. package/esm2022/providers/sc-date-formatter.mjs +0 -12
  242. package/esm2022/providers/sc-date-value-transformer.mjs +0 -12
  243. package/esm2022/providers/sc-help-notification-close.mjs +0 -7
  244. package/esm2022/providers/sc-help-notification-limit.mjs +0 -6
  245. package/esm2022/providers/sc-max-files-in-form-input.mjs +0 -6
  246. package/esm2022/providers/sc-notify-when-in-stock-required-fields.mjs +0 -6
  247. package/esm2022/providers/sc-page-size-options.mjs +0 -6
  248. package/esm2022/providers/sc-user-providers.mjs +0 -33
  249. package/esm2022/providers/sc-verification-code-timeout.mjs +0 -6
  250. package/esm2022/public-api.mjs +0 -35
  251. package/esm2022/qrcode/index.mjs +0 -3
  252. package/esm2022/qrcode/qrcode-dialog/sc-qrcode-dialog.component.mjs +0 -58
  253. package/esm2022/qrcode/sc-qrcode.module.mjs +0 -25
  254. package/esm2022/samples/index.mjs +0 -5
  255. package/esm2022/samples/interfaces/index.mjs +0 -3
  256. package/esm2022/samples/interfaces/sc-i-preview-sample.mjs +0 -2
  257. package/esm2022/samples/interfaces/sc-preview-mosquito-config.mjs +0 -2
  258. package/esm2022/samples/preview-sample/sc-preview-sample.component.mjs +0 -42
  259. package/esm2022/samples/sc-preview-samples-mosquito/sc-preview-samples-mosquito.component.mjs +0 -63
  260. package/esm2022/samples/sc-sample.module.mjs +0 -68
  261. package/esm2022/services/index.mjs +0 -2
  262. package/esm2022/services/sc-help-notification.service.mjs +0 -90
  263. package/esm2022/share-button/index.mjs +0 -3
  264. package/esm2022/share-button/sc-share-button.component.mjs +0 -35
  265. package/esm2022/share-button/sc-share-button.module.mjs +0 -22
  266. package/esm2022/snabcentr-client-ui.mjs +0 -5
  267. package/esm2022/user/index.mjs +0 -6
  268. package/esm2022/user/reset-user-password/sc-reset-user-password.component.mjs +0 -75
  269. package/esm2022/user/sc-user.module.mjs +0 -89
  270. package/esm2022/user/update-user-info-dialog/sc-update-user-info-dialog.component.mjs +0 -122
  271. package/esm2022/user/user-managers/sc-user-managers.component.mjs +0 -42
  272. package/esm2022/user/user-phone-approve-dialog/sc-user-phone-approve-dialog.component.mjs +0 -106
  273. package/esm2022/validators/index.mjs +0 -7
  274. package/esm2022/validators/sc-at-least-one-required-validator.mjs +0 -25
  275. package/esm2022/validators/sc-bic-validator.mjs +0 -10
  276. package/esm2022/validators/sc-correspondent-account-validator.mjs +0 -10
  277. package/esm2022/validators/sc-password-confirm-matching-validator.mjs +0 -17
  278. package/esm2022/validators/sc-phone-validator.mjs +0 -14
  279. package/esm2022/validators/step-validator.mjs +0 -18
  280. package/esm2022/verification/index.mjs +0 -4
  281. package/esm2022/verification/providers/index.mjs +0 -3
  282. package/esm2022/verification/providers/sc-phone-approve-code-sender.provider.mjs +0 -12
  283. package/esm2022/verification/providers/sc-phone-approve-code-sender.token.mjs +0 -7
  284. package/esm2022/verification/sc-verification.module.mjs +0 -88
  285. package/esm2022/verification/verification-phone-check-form/sc-verification-phone-check-form.component.mjs +0 -277
  286. package/feedback/feedback-form/sc-feedback-form.component.d.ts +0 -163
  287. package/feedback/gratitude/sc-gratitude.component.d.ts +0 -20
  288. package/feedback/index.d.ts +0 -3
  289. package/feedback/interfaces/index.d.ts +0 -1
  290. package/feedback/interfaces/sc-feedback-form-config.d.ts +0 -23
  291. package/files/directives/index.d.ts +0 -2
  292. package/files/directives/tree-top.directive.d.ts +0 -33
  293. package/files/directives/tree.directive.d.ts +0 -35
  294. package/files/file-tree-item/file-tree-item.component.d.ts +0 -9
  295. package/files/files-and-documents/files-and-documents.component.d.ts +0 -27
  296. package/files/files-and-documents.module.d.ts +0 -17
  297. package/files/index.d.ts +0 -5
  298. package/files/interfaces/tree-node.d.ts +0 -29
  299. package/files/services/index.d.ts +0 -2
  300. package/files/services/tree-icon.service.d.ts +0 -23
  301. package/files/services/tree-loader.service.d.ts +0 -43
  302. package/form-fields/addresses-selection-field/sc-addresses-selection-field.component.d.ts +0 -78
  303. package/form-fields/form-fields.module.d.ts +0 -19
  304. package/form-fields/index.d.ts +0 -3
  305. package/form-fields/suggestion-field/sc-suggestion-field.component.d.ts +0 -73
  306. package/helpers/index.d.ts +0 -1
  307. package/helpers/sc-px-converter.d.ts +0 -15
  308. package/icons/index.d.ts +0 -1
  309. package/icons/sc-client-ui-icons-name.d.ts +0 -4
  310. package/loader/index.d.ts +0 -1
  311. package/loader/sc-i-loader.d.ts +0 -9
  312. package/masks/index.d.ts +0 -7
  313. package/masks/sc-account-number-mask.d.ts +0 -5
  314. package/masks/sc-bic-mask.d.ts +0 -5
  315. package/masks/sc-correspondent-account-mask.d.ts +0 -5
  316. package/masks/sc-inn-mask.d.ts +0 -9
  317. package/masks/sc-kpp-mask.d.ts +0 -5
  318. package/masks/sc-okpo-mask.d.ts +0 -9
  319. package/masks/sc-phone-verification-code-mask.d.ts +0 -5
  320. package/models/i-sc-image.d.ts +0 -17
  321. package/models/index.d.ts +0 -1
  322. package/news/index.d.ts +0 -3
  323. package/news/news-card/sc-news-card.component.d.ts +0 -22
  324. package/news/news-card-skeleton/sc-news-card-skeleton.component.d.ts +0 -16
  325. package/news/sc-news.module.d.ts +0 -16
  326. package/order/index.d.ts +0 -3
  327. package/order/order-item-mobile/sc-order-item-mobile.component.d.ts +0 -39
  328. package/order/sc-order.module.d.ts +0 -19
  329. package/order/sc-payment-status/sc-payment-status.component.d.ts +0 -25
  330. package/pages/frequently-asked-questions/sc-frequently-asked-questions.component.d.ts +0 -18
  331. package/pages/frequently-asked-questions/sc-page-size-options.d.ts +0 -5
  332. package/pages/frequently-asked-questions-group-selector/sc-frequently-asked-questions-group-selector.component.d.ts +0 -28
  333. package/pages/frequently-asked-questions-with-groups/sc-frequently-asked-questions-with-groups.component.d.ts +0 -79
  334. package/pages/index.d.ts +0 -3
  335. package/pipes/index.d.ts +0 -2
  336. package/pipes/sc-format-date.d.ts +0 -20
  337. package/pipes/sc-phone-format.d.ts +0 -21
  338. package/profile/index.d.ts +0 -2
  339. package/profile/sc-profile-accordions-content/sc-profile-accordions-content.component.d.ts +0 -126
  340. package/profile/sc-profile.module.d.ts +0 -24
  341. package/providers/date-value-transformer/index.d.ts +0 -3
  342. package/providers/date-value-transformer/sc-date-value-transformer-types.d.ts +0 -9
  343. package/providers/date-value-transformer/sc-date-value-transformer-with-end-time.d.ts +0 -16
  344. package/providers/date-value-transformer/sc-date-value-transformer-with-start-time.d.ts +0 -22
  345. package/providers/index.d.ts +0 -11
  346. package/providers/sc-allow-select-terminated.d.ts +0 -5
  347. package/providers/sc-country-ids.d.ts +0 -5
  348. package/providers/sc-date-formatter.d.ts +0 -6
  349. package/providers/sc-date-value-transformer.d.ts +0 -5
  350. package/providers/sc-help-notification-close.d.ts +0 -6
  351. package/providers/sc-help-notification-limit.d.ts +0 -5
  352. package/providers/sc-max-files-in-form-input.d.ts +0 -5
  353. package/providers/sc-notify-when-in-stock-required-fields.d.ts +0 -5
  354. package/providers/sc-page-size-options.d.ts +0 -5
  355. package/providers/sc-user-providers.d.ts +0 -21
  356. package/providers/sc-verification-code-timeout.d.ts +0 -5
  357. package/public-api.d.ts +0 -31
  358. package/qrcode/index.d.ts +0 -2
  359. package/qrcode/qrcode-dialog/sc-qrcode-dialog.component.d.ts +0 -37
  360. package/qrcode/sc-qrcode.module.d.ts +0 -14
  361. package/samples/index.d.ts +0 -4
  362. package/samples/interfaces/index.d.ts +0 -2
  363. package/samples/interfaces/sc-i-preview-sample.d.ts +0 -56
  364. package/samples/interfaces/sc-preview-mosquito-config.d.ts +0 -62
  365. package/samples/preview-sample/sc-preview-sample.component.d.ts +0 -30
  366. package/samples/sc-preview-samples-mosquito/sc-preview-samples-mosquito.component.d.ts +0 -50
  367. package/samples/sc-sample.module.d.ts +0 -19
  368. package/services/index.d.ts +0 -1
  369. package/services/sc-help-notification.service.d.ts +0 -64
  370. package/share-button/index.d.ts +0 -2
  371. package/share-button/sc-share-button.component.d.ts +0 -22
  372. package/share-button/sc-share-button.module.d.ts +0 -12
  373. package/user/index.d.ts +0 -5
  374. package/user/reset-user-password/sc-reset-user-password.component.d.ts +0 -46
  375. package/user/sc-user.module.d.ts +0 -25
  376. package/user/update-user-info-dialog/sc-update-user-info-dialog.component.d.ts +0 -63
  377. package/user/user-managers/sc-user-managers.component.d.ts +0 -26
  378. package/user/user-phone-approve-dialog/sc-user-phone-approve-dialog.component.d.ts +0 -53
  379. package/validators/index.d.ts +0 -6
  380. package/validators/sc-at-least-one-required-validator.d.ts +0 -10
  381. package/validators/sc-bic-validator.d.ts +0 -8
  382. package/validators/sc-correspondent-account-validator.d.ts +0 -8
  383. package/validators/sc-password-confirm-matching-validator.d.ts +0 -8
  384. package/validators/sc-phone-validator.d.ts +0 -5
  385. package/validators/step-validator.d.ts +0 -8
  386. package/verification/index.d.ts +0 -3
  387. package/verification/providers/index.d.ts +0 -2
  388. package/verification/providers/sc-phone-approve-code-sender.provider.d.ts +0 -6
  389. package/verification/providers/sc-phone-approve-code-sender.token.d.ts +0 -7
  390. package/verification/sc-verification.module.d.ts +0 -21
  391. package/verification/verification-phone-check-form/sc-verification-phone-check-form.component.d.ts +0 -149
@@ -1,277 +0,0 @@
1
- /* eslint-disable no-underscore-dangle,lodash/prefer-constant */
2
- import { HttpClient, HttpErrorResponse } from '@angular/common/http';
3
- import { ChangeDetectionStrategy, Component, inject, Input, input, model, output } from '@angular/core';
4
- import { toSignal } from '@angular/core/rxjs-interop';
5
- import { FormGroupDirective } from '@angular/forms';
6
- import { ScVerificationService } from '@snabcentr/client-core';
7
- import { tuiControlValue } from '@taiga-ui/cdk';
8
- import { getCountries } from 'libphonenumber-js';
9
- import { isNil } from 'lodash-es';
10
- import { catchError, distinctUntilChanged, endWith, filter, finalize, map, of, scan, share, shareReplay, startWith, Subject, switchMap, takeWhile, tap, timer, } from 'rxjs';
11
- import { SC_SHOW_HELP_NOTIFICATION_IN_PHONE_INPUT } from '../../contacts/tokens/sc-show-help-notification-in-phone-input.token';
12
- import { scPhoneVerificationCodeMask } from '../../masks';
13
- import { SC_VERIFICATION_CODE_TIMEOUT } from '../../providers/sc-verification-code-timeout';
14
- import { ScHelpNotificationService } from '../../services';
15
- import { SC_PHONE_APPROVE_CODE_SENDER } from '../providers';
16
- import * as i0 from "@angular/core";
17
- import * as i1 from "@angular/common";
18
- import * as i2 from "@angular/forms";
19
- import * as i3 from "@taiga-ui/legacy/components/primitive-textfield";
20
- import * as i4 from "@taiga-ui/legacy";
21
- import * as i5 from "@taiga-ui/core";
22
- import * as i6 from "@taiga-ui/core/components/label";
23
- import * as i7 from "@taiga-ui/cdk";
24
- import * as i8 from "@maskito/angular";
25
- import * as i9 from "@taiga-ui/kit";
26
- import * as i10 from "../../contacts/manager-card/sc-manager-card.component";
27
- import * as i11 from "@taiga-ui/experimental";
28
- /**
29
- * Компонент формы проверки телефона и получения кода подтверждения.
30
- */
31
- export class ScVerificationPhoneCheckFormComponent {
32
- constructor() {
33
- /**
34
- * Сервис верификации.
35
- */
36
- this.verificationService = inject(ScVerificationService);
37
- /**
38
- * Функция отправки кода подтверждения телефона.
39
- */
40
- this.sendPhoneApproveCode = inject(SC_PHONE_APPROVE_CODE_SENDER);
41
- /**
42
- * Директива c `FormGroup` из DOM.
43
- */
44
- this.formGroupDirective = inject(FormGroupDirective, { optional: true });
45
- /**
46
- * HTTP-клиент.
47
- */
48
- this.http = inject(HttpClient);
49
- /**
50
- * Признак, что поле ввода телефона только для чтения.
51
- */
52
- this.readOnly = input(false);
53
- /**
54
- * Признак, что поле ввода телефона псевдо-невалидное.
55
- */
56
- this.pseudoInvalid = input(false);
57
- /**
58
- * Признак, что поле ввода телефона и кода подтверждения обязательные.
59
- */
60
- this.required = input(false);
61
- /**
62
- * Текст подсказки.
63
- */
64
- this.subtitle = input('');
65
- /**
66
- * Признак, следует ли телефону быть в системе. От этого признака зависит, в каких случаях выдавать ошибку при проверке занятости телефона.
67
- */
68
- this.shouldBeBusy = input();
69
- /**
70
- * Признак, следует ли проверять, подтверждён ли телефон в системе. При `true` будет вызывать ошибку при наличии телефона в системе без подтверждения.
71
- */
72
- this.shouldBeConfirmed = input();
73
- /**
74
- * Список стран.
75
- */
76
- this.countries = getCountries();
77
- /**
78
- * Сервис для отображения Push-уведомлений с контактами для помощи клиенту.
79
- */
80
- this.helpNotificationService = inject(ScHelpNotificationService);
81
- /**
82
- * Список контактов для отправки push-уведомлений.
83
- */
84
- this.pushContacts = toSignal(this.helpNotificationService.getContactsShow$());
85
- /**
86
- * Наличие кода подтверждения у пользователя.
87
- */
88
- this.haveCode = model(false);
89
- /**
90
- * {@link OutputEmitter} события изменения признака занятости телефона.
91
- */
92
- this.isBusyChange = output();
93
- /**
94
- * {@link OutputEmitter} события изменения признака подтверждения телефона.
95
- */
96
- this.isConfirmedChange = output();
97
- /**
98
- * {@link Subject} события отправки кода подтверждения.
99
- */
100
- this.onSendCode = new Subject();
101
- /**
102
- * Таймаут отправки кода подтверждения.
103
- */
104
- this.codeTimeout = inject(SC_VERIFICATION_CODE_TIMEOUT);
105
- /**
106
- * {@link Observable} запроса данных получения кода подтверждения.
107
- */
108
- this.loadingApproveCode$ = this.onSendCode.pipe(map(() => this.phoneControl.value), filter((value) => this.phoneControl.valid), switchMap((value) => this.sendPhoneApproveCode(value).pipe(tap(() => {
109
- this.reloadTimer$.next(this.codeTimeout);
110
- }), map(() => false), catchError((error) => {
111
- if (error instanceof HttpErrorResponse) {
112
- let seconds = null;
113
- if ('error' in error.error) {
114
- const errorResponse = error.error;
115
- const regex = /(\d{1,3})\s+seconds/;
116
- const match = regex.exec(errorResponse.error);
117
- if (match) {
118
- seconds = Number.parseInt(match[1], 10);
119
- }
120
- }
121
- else {
122
- const errorResponse = error.error;
123
- const regex = /(\d{2}):\d{2}/;
124
- const match = regex.exec(errorResponse.message);
125
- if (match && match.length > 1) {
126
- const timeParts = match[0].split(':');
127
- seconds = Number.parseInt(timeParts[1], 10);
128
- }
129
- }
130
- if (seconds) {
131
- this.reloadTimer$.next(seconds);
132
- }
133
- else {
134
- this.phoneControl.setErrors({ serverResponse: ['Неизвестная ошибка, попробуйте позже.'] });
135
- }
136
- }
137
- return of(false);
138
- }), finalize(() => {
139
- this.setHaveCode(true);
140
- }), startWith(true), shareReplay({ refCount: true, bufferSize: 1 }))), startWith(false), share());
141
- /**
142
- * Маска поля ввода кода для подтверждения.
143
- */
144
- this.verificationCodeMask = scPhoneVerificationCodeMask;
145
- /**
146
- * {@link Subject} события запуска/остановки таймера.
147
- */
148
- this.reloadTimer$ = new Subject();
149
- /**
150
- * {@link Observable} Таймера.
151
- *
152
- * TODO: Вынести таймер в отдельную директиву TASK:[#9260].
153
- */
154
- this.timer$ = this.reloadTimer$.pipe(switchMap((sec) => timer(0, 1000).pipe(scan((total) => -1 + total, sec), takeWhile((total) => total >= 0), map((total) => {
155
- const minutes = Math.floor(total / 60);
156
- const seconds = total % 60;
157
- return `${Math.round(minutes).toString().padStart(2, '0')}:${Math.round(seconds).toString().padStart(2, '0')}`;
158
- }), endWith(null), startWith(null), distinctUntilChanged())));
159
- /**
160
- * Токен показа уведомления помощи.
161
- */
162
- this.showHelpNotification = inject(SC_SHOW_HELP_NOTIFICATION_IN_PHONE_INPUT);
163
- /**
164
- * Признак, следует ли отображать функционал кода подтверждения.
165
- */
166
- this._showCodeFields = true;
167
- }
168
- /**
169
- * Признак, следует ли отображать функционал кода подтверждения.
170
- */
171
- set showCodeFields(showCodeFields) {
172
- this._showCodeFields = showCodeFields;
173
- this.form.controls.verificationCode[showCodeFields ? 'enable' : 'disable']();
174
- }
175
- /**
176
- * Признак, следует ли отображать функционал кода подтверждения.
177
- */
178
- get showCodeFields() {
179
- return this._showCodeFields;
180
- }
181
- /**
182
- * Группа полей ввода для формы «Вход на сайт».
183
- */
184
- get form() {
185
- return this.formGroupDirective?.form;
186
- }
187
- /**
188
- * Поле ввода 'Номер телефона'.
189
- */
190
- get phoneControl() {
191
- return this.form.controls.phone;
192
- }
193
- /** @inheritDoc */
194
- ngOnInit() {
195
- this.phoneCheck$ = tuiControlValue(this.phoneControl).pipe(tap(() => {
196
- this.reloadTimer$.next(0);
197
- this.isBusyChange.emit(null);
198
- this.isConfirmedChange.emit(null);
199
- this.helpNotificationService.closeAllHelpNotification();
200
- if (this.form.controls.verificationCode.value) {
201
- this.form.controls.verificationCode.setValue(null);
202
- }
203
- }), switchMap((value) => {
204
- if (this.phoneControl.valid && !!value) {
205
- return this.verificationService.getPhoneCheck$(value).pipe(
206
- // eslint-disable-next-line sonarjs/cognitive-complexity
207
- map((result) => {
208
- if (this.shouldBeBusy() === undefined && !isNil(this.shouldBeConfirmed()) && result.isConfirmed !== null) {
209
- this.isBusyChange.emit(result.isBusy);
210
- if (!isNil(result.isConfirmed)) {
211
- this.isConfirmedChange.emit(result.isConfirmed);
212
- return this.shouldBeConfirmed() === result.isConfirmed;
213
- }
214
- return true;
215
- }
216
- if (this.shouldBeBusy() !== undefined && this.shouldBeBusy() !== result.isBusy) {
217
- this.phoneControl.setErrors({
218
- serverResponse: [
219
- result.isBusy ? 'Пользователь с таким номером телефона уже существует' : 'Пользователя с таким номером телефона не существует',
220
- ],
221
- });
222
- this.phoneControl.markAsTouched();
223
- return false;
224
- }
225
- if (this.shouldBeConfirmed() !== undefined && this.shouldBeConfirmed() !== result.isConfirmed) {
226
- this.phoneControl.setErrors({
227
- serverResponse: [
228
- result.isConfirmed
229
- ? 'Телефон уже подтверждён'
230
- : 'Номер телефона не подтверждён или вход по нему невозможен. Обратитесь к вашему персональному менеджеру или войдите с использованием e-mail и пароля.',
231
- ],
232
- });
233
- this.phoneControl.markAsTouched();
234
- return false;
235
- }
236
- return true;
237
- }), catchError((error) => {
238
- if (error instanceof HttpErrorResponse) {
239
- const errorResponse = error.error;
240
- this.phoneControl.setErrors({ serverResponse: errorResponse.errors?.['phone'] ?? [errorResponse.message] });
241
- }
242
- return of(false);
243
- }), tap((check) => {
244
- if (!check) {
245
- this.helpNotificationService.helpNotificationByPhone(value);
246
- }
247
- }), startWith(null));
248
- }
249
- this.setHaveCode(false);
250
- return of(false);
251
- }), share());
252
- this.setHaveCode(false);
253
- }
254
- /**
255
- * Устанавливает состояние наличия кода подтверждения у пользователя.
256
- *
257
- * @param haveCode Признак того есть ли код подтверждения или нет.
258
- */
259
- setHaveCode(haveCode) {
260
- this.haveCode.set(haveCode);
261
- }
262
- /**
263
- * Закрытие уведомления.
264
- */
265
- closeNotification() {
266
- this.helpNotificationService.closeAllHelpNotification();
267
- }
268
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScVerificationPhoneCheckFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
269
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ScVerificationPhoneCheckFormComponent, selector: "sc-verification-phone-check-form", inputs: { showCodeFields: { classPropertyName: "showCodeFields", publicName: "showCodeFields", isSignal: false, isRequired: false, transformFunction: null }, readOnly: { classPropertyName: "readOnly", publicName: "readOnly", isSignal: true, isRequired: false, transformFunction: null }, pseudoInvalid: { classPropertyName: "pseudoInvalid", publicName: "pseudoInvalid", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, subtitle: { classPropertyName: "subtitle", publicName: "subtitle", isSignal: true, isRequired: false, transformFunction: null }, shouldBeBusy: { classPropertyName: "shouldBeBusy", publicName: "shouldBeBusy", isSignal: true, isRequired: false, transformFunction: null }, shouldBeConfirmed: { classPropertyName: "shouldBeConfirmed", publicName: "shouldBeConfirmed", isSignal: true, isRequired: false, transformFunction: null }, haveCode: { classPropertyName: "haveCode", publicName: "haveCode", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { haveCode: "haveCodeChange", isBusyChange: "isBusyChange", isConfirmedChange: "isConfirmedChange" }, host: { attributes: { "ngSkipHydration": "true" } }, ngImport: i0, template: "@let phoneCheck = phoneCheck$ | async;\n\n<form\n [formGroup]=\"form\"\n *tuiLet=\"loadingApproveCode$ | async as loadingApproveCode\"\n class=\"flex flex-col gap-3\"\n>\n <label tuiLabel>\n \u041D\u043E\u043C\u0435\u0440 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0430\n <tui-textfield>\n <input\n formControlName=\"phone\"\n tuiInputPhoneInternational\n [invalid]=\"pseudoInvalid() || null\"\n [countrySearch]=\"true\"\n [countries]=\"(countries | tuiSortCountries | async) || []\"\n autocomplete=\"phone\"\n />\n </tui-textfield>\n <p\n *ngIf=\"subtitle()\"\n class=\"text-body-s text-tui-text-tertiary\"\n >\n {{ subtitle() }}\n </p>\n <tui-error\n formControlName=\"phone\"\n [error]=\"[] | tuiFieldError | async\"\n />\n @if (showHelpNotification && pushContacts()) {\n @for (manager of pushContacts(); track manager.id) {\n <tui-push\n type=\"\u0421\u0432\u044F\u0436\u0438\u0442\u0435\u0441\u044C \u0441 \u043D\u0430\u043C\u0438 \u0434\u043B\u044F \u0440\u0435\u0448\u0435\u043D\u0438\u044F \u0432\u043E\u0437\u043D\u0438\u043A\u0448\u0438\u0445 \u0432\u043E\u043F\u0440\u043E\u0441\u043E\u0432\"\n (close)=\"closeNotification()\"\n class=\"!w-auto\"\n >\n <tui-icon icon=\"@tui.message-square\" />\n <sc-manager-card [manager]=\"manager\" />\n </tui-push>\n }\n }\n </label>\n\n <ng-container *ngIf=\"showCodeFields && form.enabled && phoneCheck\">\n <label\n *ngIf=\"!loadingApproveCode && haveCode()\"\n tuiLabel\n >\n \u041A\u043E\u0434 \u0438\u0437 \u0421\u041C\u0421\n <tui-input\n formControlName=\"verificationCode\"\n [required]=\"required() || showCodeFields\"\n >\n \u041A\u043E\u0434 \u0438\u0437 \u0421\u041C\u0421\n <input\n tuiAutoFocus\n tuiTextfieldLegacy\n [maskito]=\"verificationCodeMask\"\n autocomplete=\"new-password\"\n />\n </tui-input>\n <tui-error\n formControlName=\"verificationCode\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n\n <div\n *tuiLet=\"!!loadingApproveCode as loadingApproveCode\"\n class=\"flex justify-center gap-4\"\n >\n <button\n *ngIf=\"!haveCode()\"\n tuiButton\n (click)=\"onSendCode.next()\"\n [disabled]=\"loadingApproveCode || !phoneCheck || phoneControl.invalid\"\n [loading]=\"loadingApproveCode\"\n iconStart=\"@tui.sc.send\"\n >\n \u041F\u043E\u043B\u0443\u0447\u0438\u0442\u044C \u043A\u043E\u0434\n </button>\n <button\n *ngIf=\"!loadingApproveCode && !haveCode()\"\n tuiLink\n [pseudo]=\"true\"\n [disabled]=\"!phoneCheck || phoneControl.invalid\"\n (click)=\"setHaveCode(true)\"\n >\n \u0423 \u043C\u0435\u043D\u044F \u0435\u0441\u0442\u044C \u043A\u043E\u0434\n </button>\n\n <ng-container *tuiLet=\"timer$ | async as timer\">\n <tui-loader\n *ngIf=\"haveCode()\"\n [showLoader]=\"loadingApproveCode\"\n >\n <button\n tuiLink\n [pseudo]=\"true\"\n [disabled]=\"loadingApproveCode || timer\"\n (click)=\"onSendCode.next()\"\n >\n \u041F\u043E\u0432\u0442\u043E\u0440\u043D\u043E \u043E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u044C \u043A\u043E\u0434\n <ng-container\n *ngIf=\"timer\"\n class=\"!text-tui-base-08\"\n >\n (\u0447\u0435\u0440\u0435\u0437 {{ timer }})\n </ng-container>\n </button>\n </tui-loader>\n </ng-container>\n </div>\n </ng-container>\n</form>\n\n<ng-template #checkingPhone>\n <tui-loader\n *ngIf=\"!phoneCheck && phoneControl.valid\"\n class=\"size-4\"\n />\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i3.TuiTextfieldComponent, selector: "input[tuiTextfieldLegacy], textarea[tuiTextfieldLegacy]" }, { kind: "component", type: i4.TuiInputComponent, selector: "tui-input" }, { kind: "directive", type: i4.TuiInputDirective, selector: "tui-input" }, { kind: "directive", type: i5.TuiLink, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo"] }, { kind: "directive", type: i5.TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: i6.TuiLabel, selector: "label[tuiLabel]" }, { kind: "component", type: i5.TuiError, selector: "tui-error", inputs: ["error"] }, { kind: "directive", type: i7.TuiLet, selector: "[tuiLet]", inputs: ["tuiLet"] }, { kind: "component", type: i5.TuiLoader, selector: "tui-loader", inputs: ["size", "inheritColor", "overlay", "textContent", "showLoader"] }, { kind: "directive", type: i8.MaskitoDirective, selector: "[maskito]", inputs: ["maskito", "maskitoElement"] }, { kind: "component", type: i9.TuiButtonLoading, selector: "[tuiButton][loading],[tuiIconButton][loading]", inputs: ["size", "loading"] }, { kind: "component", type: i10.ScManagerCardComponent, selector: "sc-manager-card", inputs: ["manager"] }, { kind: "component", type: i5.TuiIcon, selector: "tui-icon", inputs: ["icon", "background"] }, { kind: "component", type: i9.TuiPushComponent, selector: "tui-push", inputs: ["heading", "type", "lines", "timestamp"], outputs: ["close"] }, { kind: "component", type: i11.TuiInputPhoneInternational, selector: "input[tuiInputPhoneInternational]", inputs: ["countrySearch", "countries", "countryIsoCode"], outputs: ["countryIsoCodeChange"] }, { kind: "component", type: i5.TuiTextfieldComponent, selector: "tui-textfield:not([multi])" }, { kind: "directive", type: i7.TuiAutoFocus, selector: "[tuiAutoFocus]", inputs: ["tuiAutoFocus"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i9.TuiFieldErrorPipe, name: "tuiFieldError" }, { kind: "pipe", type: i9.TuiSortCountriesPipe, name: "tuiSortCountries" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
270
- }
271
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScVerificationPhoneCheckFormComponent, decorators: [{
272
- type: Component,
273
- args: [{ selector: 'sc-verification-phone-check-form', host: { ngSkipHydration: 'true' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "@let phoneCheck = phoneCheck$ | async;\n\n<form\n [formGroup]=\"form\"\n *tuiLet=\"loadingApproveCode$ | async as loadingApproveCode\"\n class=\"flex flex-col gap-3\"\n>\n <label tuiLabel>\n \u041D\u043E\u043C\u0435\u0440 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0430\n <tui-textfield>\n <input\n formControlName=\"phone\"\n tuiInputPhoneInternational\n [invalid]=\"pseudoInvalid() || null\"\n [countrySearch]=\"true\"\n [countries]=\"(countries | tuiSortCountries | async) || []\"\n autocomplete=\"phone\"\n />\n </tui-textfield>\n <p\n *ngIf=\"subtitle()\"\n class=\"text-body-s text-tui-text-tertiary\"\n >\n {{ subtitle() }}\n </p>\n <tui-error\n formControlName=\"phone\"\n [error]=\"[] | tuiFieldError | async\"\n />\n @if (showHelpNotification && pushContacts()) {\n @for (manager of pushContacts(); track manager.id) {\n <tui-push\n type=\"\u0421\u0432\u044F\u0436\u0438\u0442\u0435\u0441\u044C \u0441 \u043D\u0430\u043C\u0438 \u0434\u043B\u044F \u0440\u0435\u0448\u0435\u043D\u0438\u044F \u0432\u043E\u0437\u043D\u0438\u043A\u0448\u0438\u0445 \u0432\u043E\u043F\u0440\u043E\u0441\u043E\u0432\"\n (close)=\"closeNotification()\"\n class=\"!w-auto\"\n >\n <tui-icon icon=\"@tui.message-square\" />\n <sc-manager-card [manager]=\"manager\" />\n </tui-push>\n }\n }\n </label>\n\n <ng-container *ngIf=\"showCodeFields && form.enabled && phoneCheck\">\n <label\n *ngIf=\"!loadingApproveCode && haveCode()\"\n tuiLabel\n >\n \u041A\u043E\u0434 \u0438\u0437 \u0421\u041C\u0421\n <tui-input\n formControlName=\"verificationCode\"\n [required]=\"required() || showCodeFields\"\n >\n \u041A\u043E\u0434 \u0438\u0437 \u0421\u041C\u0421\n <input\n tuiAutoFocus\n tuiTextfieldLegacy\n [maskito]=\"verificationCodeMask\"\n autocomplete=\"new-password\"\n />\n </tui-input>\n <tui-error\n formControlName=\"verificationCode\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n\n <div\n *tuiLet=\"!!loadingApproveCode as loadingApproveCode\"\n class=\"flex justify-center gap-4\"\n >\n <button\n *ngIf=\"!haveCode()\"\n tuiButton\n (click)=\"onSendCode.next()\"\n [disabled]=\"loadingApproveCode || !phoneCheck || phoneControl.invalid\"\n [loading]=\"loadingApproveCode\"\n iconStart=\"@tui.sc.send\"\n >\n \u041F\u043E\u043B\u0443\u0447\u0438\u0442\u044C \u043A\u043E\u0434\n </button>\n <button\n *ngIf=\"!loadingApproveCode && !haveCode()\"\n tuiLink\n [pseudo]=\"true\"\n [disabled]=\"!phoneCheck || phoneControl.invalid\"\n (click)=\"setHaveCode(true)\"\n >\n \u0423 \u043C\u0435\u043D\u044F \u0435\u0441\u0442\u044C \u043A\u043E\u0434\n </button>\n\n <ng-container *tuiLet=\"timer$ | async as timer\">\n <tui-loader\n *ngIf=\"haveCode()\"\n [showLoader]=\"loadingApproveCode\"\n >\n <button\n tuiLink\n [pseudo]=\"true\"\n [disabled]=\"loadingApproveCode || timer\"\n (click)=\"onSendCode.next()\"\n >\n \u041F\u043E\u0432\u0442\u043E\u0440\u043D\u043E \u043E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u044C \u043A\u043E\u0434\n <ng-container\n *ngIf=\"timer\"\n class=\"!text-tui-base-08\"\n >\n (\u0447\u0435\u0440\u0435\u0437 {{ timer }})\n </ng-container>\n </button>\n </tui-loader>\n </ng-container>\n </div>\n </ng-container>\n</form>\n\n<ng-template #checkingPhone>\n <tui-loader\n *ngIf=\"!phoneCheck && phoneControl.valid\"\n class=\"size-4\"\n />\n</ng-template>\n" }]
274
- }], propDecorators: { showCodeFields: [{
275
- type: Input
276
- }] } });
277
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtdmVyaWZpY2F0aW9uLXBob25lLWNoZWNrLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL3ZlcmlmaWNhdGlvbi92ZXJpZmljYXRpb24tcGhvbmUtY2hlY2stZm9ybS9zYy12ZXJpZmljYXRpb24tcGhvbmUtY2hlY2stZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvdmVyaWZpY2F0aW9uL3ZlcmlmaWNhdGlvbi1waG9uZS1jaGVjay1mb3JtL3NjLXZlcmlmaWNhdGlvbi1waG9uZS1jaGVjay1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdFQUFnRTtBQUVoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBZSxLQUFLLEVBQXVCLE1BQU0sRUFBNEIsTUFBTSxlQUFlLENBQUM7QUFDcEssT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFBMEIsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1RSxPQUFPLEVBQTJDLHFCQUFxQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNsQyxPQUFPLEVBQ0gsVUFBVSxFQUNWLG9CQUFvQixFQUNwQixPQUFPLEVBQ1AsTUFBTSxFQUNOLFFBQVEsRUFDUixHQUFHLEVBRUgsRUFBRSxFQUNGLElBQUksRUFD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SyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXVuZGVyc2NvcmUtZGFuZ2xlLGxvZGFzaC9wcmVmZXItY29uc3RhbnQgKi9cblxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBpbmplY3QsIElucHV0LCBpbnB1dCwgSW5wdXRTaWduYWwsIG1vZGVsLCBNb2RlbFNpZ25hbCwgT25Jbml0LCBvdXRwdXQsIE91dHB1dEVtaXR0ZXJSZWYsIFNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBGb3JtR3JvdXBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXNraXRvT3B0aW9ucyB9IGZyb20gJ0BtYXNraXRvL2NvcmUnO1xuaW1wb3J0IHsgU2NJS2V5Y2xvYWtFcnJvclJlc3BvbnNlLCBTY0lPcmdDb250YWN0LCBTY1ZlcmlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICdAc25hYmNlbnRyL2NsaWVudC1jb3JlJztcbmltcG9ydCB7IHR1aUNvbnRyb2xWYWx1ZSB9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHR5cGUgeyBUdWlDb3VudHJ5SXNvQ29kZSB9IGZyb20gJ0B0YWlnYS11aS9pMThuJztcbmltcG9ydCB7IGdldENvdW50cmllcyB9IGZyb20gJ2xpYnBob25lbnVtYmVyLWpzJztcbmltcG9ydCB7IGlzTmlsIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7XG4gICAgY2F0Y2hFcnJvcixcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgICBlbmRXaXRoLFxuICAgIGZpbHRlcixcbiAgICBmaW5hbGl6ZSxcbiAgICBtYXAsXG4gICAgT2JzZXJ2YWJsZSxcbiAgICBvZixcbiAgICBzY2FuLFxuICAgIHNoYXJlLFxuICAgIHNoYXJlUmVwbGF5LFxuICAgIHN0YXJ0V2l0aCxcbiAgICBTdWJqZWN0LFxuICAgIHN3aXRjaE1hcCxcbiAgICB0YWtlV2hpbGUsXG4gICAgdGFwLFxuICAgIHRpbWVyLFxufSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQXBpRXJyb3JSZXNwb25zZSB9IGZyb20gJy4uLy4uL2F1dGgvaW50ZXJmYWNlcy9hcGktZXJyb3ItcmVzcG9uc2UnO1xuaW1wb3J0IHsgU0NfU0hPV19IRUxQX05PVElGSUNBVElPTl9JTl9QSE9ORV9JTlBVVCB9IGZyb20gJy4uLy4uL2NvbnRhY3RzL3Rva2Vucy9zYy1zaG93LWhlbHAtbm90aWZpY2F0aW9uLWluLXBob25lLWlucHV0LnRva2VuJztcbmltcG9ydCB7IHNjUGhvbmVWZXJpZmljYXRpb25Db2RlTWFzayB9IGZyb20gJy4uLy4uL21hc2tzJztcbmltcG9ydCB7IFNDX1ZFUklGSUNBVElPTl9DT0RFX1RJTUVPVVQgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvc2MtdmVyaWZpY2F0aW9uLWNvZGUtdGltZW91dCc7XG5pbXBvcnQgeyBTY0hlbHBOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgU0NfUEhPTkVfQVBQUk9WRV9DT0RFX1NFTkRFUiB9IGZyb20gJy4uL3Byb3ZpZGVycyc7XG5cbi8qKlxuICog0JrQvtC80L/QvtC90LXQvdGCINGE0L7RgNC80Ysg0L/RgNC+0LLQtdGA0LrQuCDRgtC10LvQtdGE0L7QvdCwINC4INC/0L7Qu9GD0YfQtdC90LjRjyDQutC+0LTQsCDQv9C+0LTRgtCy0LXRgNC20LTQtdC90LjRjy5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzYy12ZXJpZmljYXRpb24tcGhvbmUtY2hlY2stZm9ybScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NjLXZlcmlmaWNhdGlvbi1waG9uZS1jaGVjay1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgICBob3N0OiB7IG5nU2tpcEh5ZHJhdGlvbjogJ3RydWUnIH0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNjVmVyaWZpY2F0aW9uUGhvbmVDaGVja0Zvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6LCDRgdC70LXQtNGD0LXRgiDQu9C4INC+0YLQvtCx0YDQsNC20LDRgtGMINGE0YPQvdC60YbQuNC+0L3QsNC7INC60L7QtNCwINC/0L7QtNGC0LLQtdGA0LbQtNC10L3QuNGPLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBzaG93Q29kZUZpZWxkcyhzaG93Q29kZUZpZWxkczogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9zaG93Q29kZUZpZWxkcyA9IHNob3dDb2RlRmllbGRzO1xuICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMudmVyaWZpY2F0aW9uQ29kZVtzaG93Q29kZUZpZWxkcyA/ICdlbmFibGUnIDogJ2Rpc2FibGUnXSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6LCDRgdC70LXQtNGD0LXRgiDQu9C4INC+0YLQvtCx0YDQsNC20LDRgtGMINGE0YPQvdC60YbQuNC+0L3QsNC7INC60L7QtNCwINC/0L7QtNGC0LLQtdGA0LbQtNC10L3QuNGPLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgc2hvd0NvZGVGaWVsZHMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zaG93Q29kZUZpZWxkcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LLQtdGA0LjRhNC40LrQsNGG0LjQuC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdmVyaWZpY2F0aW9uU2VydmljZSA9IGluamVjdChTY1ZlcmlmaWNhdGlvblNlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICog0KTRg9C90LrRhtC40Y8g0L7RgtC/0YDQsNCy0LrQuCDQutC+0LTQsCDQv9C+0LTRgtCy0LXRgNC20LTQtdC90LjRjyDRgtC10LvQtdGE0L7QvdCwLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBzZW5kUGhvbmVBcHByb3ZlQ29kZSA9IGluamVjdChTQ19QSE9ORV9BUFBST1ZFX0NPREVfU0VOREVSKTtcblxuICAgIC8qKlxuICAgICAqINCU0LjRgNC10LrRgtC40LLQsCBjIGBGb3JtR3JvdXBgINC40LcgRE9NLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBmb3JtR3JvdXBEaXJlY3RpdmUgPSBpbmplY3QoRm9ybUdyb3VwRGlyZWN0aXZlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gICAgLyoqXG4gICAgICogSFRUUC3QutC70LjQtdC90YIuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGh0dHAgPSBpbmplY3QoSHR0cENsaWVudCk7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiwg0YfRgtC+INC/0L7Qu9C1INCy0LLQvtC00LAg0YLQtdC70LXRhNC+0L3QsCDRgtC+0LvRjNC60L4g0LTQu9GPINGH0YLQtdC90LjRjy5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgcmVhZE9ubHk6IElucHV0U2lnbmFsPGJvb2xlYW4+ID0gaW5wdXQoZmFsc2UpO1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0LosINGH0YLQviDQv9C+0LvQtSDQstCy0L7QtNCwINGC0LXQu9C10YTQvtC90LAg0L/RgdC10LLQtNC+LdC90LXQstCw0LvQuNC00L3QvtC1LlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBwc2V1ZG9JbnZhbGlkOiBJbnB1dFNpZ25hbDxib29sZWFuPiA9IGlucHV0KGZhbHNlKTtcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6LCDRh9GC0L4g0L/QvtC70LUg0LLQstC+0LTQsCDRgtC10LvQtdGE0L7QvdCwINC4INC60L7QtNCwINC/0L7QtNGC0LLQtdGA0LbQtNC10L3QuNGPINC+0LHRj9C30LDRgtC10LvRjNC90YvQtS5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgcmVxdWlyZWQ6IElucHV0U2lnbmFsPGJvb2xlYW4+ID0gaW5wdXQoZmFsc2UpO1xuXG4gICAgLyoqXG4gICAgICog0KLQtdC60YHRgiDQv9C+0LTRgdC60LDQt9C60LguXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHN1YnRpdGxlOiBJbnB1dFNpZ25hbDxzdHJpbmc+ID0gaW5wdXQoJycpO1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0LosINGB0LvQtdC00YPQtdGCINC70Lgg0YLQtdC70LXRhNC+0L3RgyDQsdGL0YLRjCDQsiDRgdC40YHRgtC10LzQtS4g0J7RgiDRjdGC0L7Qs9C+INC/0YDQuNC30L3QsNC60LAg0LfQsNCy0LjRgdC40YIsINCyINC60LDQutC40YUg0YHQu9GD0YfQsNGP0YUg0LLRi9C00LDQstCw0YLRjCDQvtGI0LjQsdC60YMg0L/RgNC4INC/0YDQvtCy0LXRgNC60LUg0LfQsNC90Y/RgtC+0YHRgtC4INGC0LXQu9C10YTQvtC90LAuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHNob3VsZEJlQnVzeTogSW5wdXRTaWduYWw8Ym9vbGVhbiB8IHVuZGVmaW5lZD4gPSBpbnB1dDxib29sZWFuIHwgdW5kZWZpbmVkPigpO1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0LosINGB0LvQtdC00YPQtdGCINC70Lgg0L/RgNC+0LLQtdGA0Y/RgtGMLCDQv9C+0LTRgtCy0LXRgNC20LTRkdC9INC70Lgg0YLQtdC70LXRhNC+0L0g0LIg0YHQuNGB0YLQtdC80LUuINCf0YDQuCBgdHJ1ZWAg0LHRg9C00LXRgiDQstGL0LfRi9Cy0LDRgtGMINC+0YjQuNCx0LrRgyDQv9GA0Lgg0L3QsNC70LjRh9C40Lgg0YLQtdC70LXRhNC+0L3QsCDQsiDRgdC40YHRgtC10LzQtSDQsdC10Lcg0L/QvtC00YLQstC10YDQttC00LXQvdC40Y8uXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHNob3VsZEJlQ29uZmlybWVkOiBJbnB1dFNpZ25hbDxib29sZWFuIHwgdW5kZWZpbmVkPiA9IGlucHV0PGJvb2xlYW4gfCB1bmRlZmluZWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQodC/0LjRgdC+0Log0YHRgtGA0LDQvS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY291bnRyaWVzOiByZWFkb25seSBUdWlDb3VudHJ5SXNvQ29kZVtdID0gZ2V0Q291bnRyaWVzKCk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LTQu9GPINC+0YLQvtCx0YDQsNC20LXQvdC40Y8gUHVzaC3Rg9Cy0LXQtNC+0LzQu9C10L3QuNC5INGBINC60L7QvdGC0LDQutGC0LDQvNC4INC00LvRjyDQv9C+0LzQvtGJ0Lgg0LrQu9C40LXQvdGC0YMuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGhlbHBOb3RpZmljYXRpb25TZXJ2aWNlOiBTY0hlbHBOb3RpZmljYXRpb25TZXJ2aWNlID0gaW5qZWN0KFNjSGVscE5vdGlmaWNhdGlvblNlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICog0KHQv9C40YHQvtC6INC60L7QvdGC0LDQutGC0L7QsiDQtNC70Y8g0L7RgtC/0YDQsNCy0LrQuCBwdXNoLdGD0LLQtdC00L7QvNC70LXQvdC40LkuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHB1c2hDb250YWN0czogU2lnbmFsPFNjSU9yZ0NvbnRhY3RbXSB8IHVuZGVmaW5lZD4gPSB0b1NpZ25hbCh0aGlzLmhlbHBOb3RpZmljYXRpb25TZXJ2aWNlLmdldENvbnRhY3RzU2hvdyQoKSk7XG5cbiAgICAvKipcbiAgICAgKiDQndCw0LvQuNGH0LjQtSDQutC+0LTQsCDQv9C+0LTRgtCy0LXRgNC20LTQtdC90LjRjyDRgyDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8uXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGhhdmVDb2RlOiBNb2RlbFNpZ25hbDxib29sZWFuPiA9IG1vZGVsKGZhbHNlKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQt9Cw0L/RgNC+0YHQsCDQv9GA0L7QstC10YDQutC4INC90L7QvNC10YDQsCDRgtC10LvQtdGE0L7QvdCwLlxuICAgICAqL1xuICAgIHB1YmxpYyBwaG9uZUNoZWNrJD86IE9ic2VydmFibGU8Ym9vbGVhbiB8IG51bGw+O1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE91dHB1dEVtaXR0ZXJ9INGB0L7QsdGL0YLQuNGPINC40LfQvNC10L3QtdC90LjRjyDQv9GA0LjQt9C90LDQutCwINC30LDQvdGP0YLQvtGB0YLQuCDRgtC10LvQtdGE0L7QvdCwLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBpc0J1c3lDaGFuZ2U6IE91dHB1dEVtaXR0ZXJSZWY8Ym9vbGVhbiB8IG51bGw+ID0gb3V0cHV0PGJvb2xlYW4gfCBudWxsPigpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE91dHB1dEVtaXR0ZXJ9INGB0L7QsdGL0YLQuNGPINC40LfQvNC10L3QtdC90LjRjyDQv9GA0LjQt9C90LDQutCwINC/0L7QtNGC0LLQtdGA0LbQtNC10L3QuNGPINGC0LXQu9C10YTQvtC90LAuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGlzQ29uZmlybWVkQ2hhbmdlOiBPdXRwdXRFbWl0dGVyUmVmPGJvb2xlYW4gfCBudWxsPiA9IG91dHB1dDxib29sZWFuIHwgbnVsbD4oKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBTdWJqZWN0fSDRgdC+0LHRi9GC0LjRjyDQvtGC0L/RgNCw0LLQutC4INC60L7QtNCwINC/0L7QtNGC0LLQtdGA0LbQtNC10L3QuNGPLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBvblNlbmRDb2RlOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqINCi0LDQudC80LDRg9GCINC+0YLQv9GA0LDQstC60Lgg0LrQvtC00LAg0L/QvtC00YLQstC10YDQttC00LXQvdC40Y8uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvZGVUaW1lb3V0OiBudW1iZXIgPSBpbmplY3QoU0NfVkVSSUZJQ0FUSU9OX0NPREVfVElNRU9VVCk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LfQsNC/0YDQvtGB0LAg0LTQsNC90L3Ri9GFINC/0L7Qu9GD0YfQtdC90LjRjyDQutC+0LTQsCDQv9C+0LTRgtCy0LXRgNC20LTQtdC90LjRjy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbG9hZGluZ0FwcHJvdmVDb2RlJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMub25TZW5kQ29kZS5waXBlKFxuICAgICAgICBtYXAoKCkgPT4gdGhpcy5waG9uZUNvbnRyb2wudmFsdWUpLFxuICAgICAgICBmaWx0ZXIoKHZhbHVlKTogdmFsdWUgaXMgc3RyaW5nID0+IHRoaXMucGhvbmVDb250cm9sLnZhbGlkKSxcbiAgICAgICAgc3dpdGNoTWFwKCh2YWx1ZSkgPT5cbiAgICAgICAgICAgIHRoaXMuc2VuZFBob25lQXBwcm92ZUNvZGUodmFsdWUpLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWxvYWRUaW1lciQubmV4dCh0aGlzLmNvZGVUaW1lb3V0KTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBtYXAoKCkgPT4gZmFsc2UpLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiB1bmtub3duKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgc2Vjb25kczogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgnZXJyb3InIGluIGVycm9yLmVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3JSZXNwb25zZSA9IGVycm9yLmVycm9yIGFzIFNjSUtleWNsb2FrRXJyb3JSZXNwb25zZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2V4ID0gLyhcXGR7MSwzfSlcXHMrc2Vjb25kcy87XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSByZWdleC5leGVjKGVycm9yUmVzcG9uc2UuZXJyb3IpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZHMgPSBOdW1iZXIucGFyc2VJbnQobWF0Y2hbMV0sIDEwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yUmVzcG9uc2UgPSBlcnJvci5lcnJvciBhcyBBcGlFcnJvclJlc3BvbnNlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVnZXggPSAvKFxcZHsyfSk6XFxkezJ9LztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXRjaCA9IHJlZ2V4LmV4ZWMoZXJyb3JSZXNwb25zZS5tZXNzYWdlKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaCAmJiBtYXRjaC5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRpbWVQYXJ0cyA9IG1hdGNoWzBdLnNwbGl0KCc6Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZHMgPSBOdW1iZXIucGFyc2VJbnQodGltZVBhcnRzWzFdLCAxMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2Vjb25kcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVsb2FkVGltZXIkLm5leHQoc2Vjb25kcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGhvbmVDb250cm9sLnNldEVycm9ycyh7IHNlcnZlclJlc3BvbnNlOiBbJ9Cd0LXQuNC30LLQtdGB0YLQvdCw0Y8g0L7RiNC40LHQutCwLCDQv9C+0L/RgNC+0LHRg9C50YLQtSDQv9C+0LfQttC1LiddIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0SGF2ZUNvZGUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgc3RhcnRXaXRoKHRydWUpLFxuICAgICAgICAgICAgICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgICAgc3RhcnRXaXRoKGZhbHNlKSxcbiAgICAgICAgc2hhcmUoKVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiDQnNCw0YHQutCwINC/0L7Qu9GPINCy0LLQvtC00LAg0LrQvtC00LAg0LTQu9GPINC/0L7QtNGC0LLQtdGA0LbQtNC10L3QuNGPLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSB2ZXJpZmljYXRpb25Db2RlTWFzazogTWFza2l0b09wdGlvbnMgPSBzY1Bob25lVmVyaWZpY2F0aW9uQ29kZU1hc2s7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgU3ViamVjdH0g0YHQvtCx0YvRgtC40Y8g0LfQsNC/0YPRgdC60LAv0L7RgdGC0LDQvdC+0LLQutC4INGC0LDQudC80LXRgNCwLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSByZWxvYWRUaW1lciQ6IFN1YmplY3Q8bnVtYmVyPiA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQotCw0LnQvNC10YDQsC5cbiAgICAgKlxuICAgICAqIFRPRE86INCS0YvQvdC10YHRgtC4INGC0LDQudC80LXRgCDQsiDQvtGC0LTQtdC70YzQvdGD0Y4g0LTQuNGA0LXQutGC0LjQstGDIFRBU0s6WyM5MjYwXS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGltZXIkOiBPYnNlcnZhYmxlPHN0cmluZyB8IG51bGw+ID0gdGhpcy5yZWxvYWRUaW1lciQucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKChzZWMpID0+XG4gICAgICAgICAgICB0aW1lcigwLCAxMDAwKS5waXBlKFxuICAgICAgICAgICAgICAgIHNjYW4oKHRvdGFsKSA9PiAtMSArIHRvdGFsLCBzZWMpLFxuICAgICAgICAgICAgICAgIHRha2VXaGlsZSgodG90YWwpID0+IHRvdGFsID49IDApLFxuICAgICAgICAgICAgICAgIG1hcCgodG90YWwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWludXRlcyA9IE1hdGguZmxvb3IodG90YWwgLyA2MCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlY29uZHMgPSB0b3RhbCAlIDYwO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgJHtNYXRoLnJvdW5kKG1pbnV0ZXMpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKX06JHtNYXRoLnJvdW5kKHNlY29uZHMpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKX1gO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGVuZFdpdGgobnVsbCksXG4gICAgICAgICAgICAgICAgc3RhcnRXaXRoKG51bGwpLFxuICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiDQotC+0LrQtdC9INC/0L7QutCw0LfQsCDRg9Cy0LXQtNC+0LzQu9C10L3QuNGPINC/0L7QvNC+0YnQuC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2hvd0hlbHBOb3RpZmljYXRpb24gPSBpbmplY3QoU0NfU0hPV19IRUxQX05PVElGSUNBVElPTl9JTl9QSE9ORV9JTlBVVCk7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiwg0YHQu9C10LTRg9C10YIg0LvQuCDQvtGC0L7QsdGA0LDQttCw0YLRjCDRhNGD0L3QutGG0LjQvtC90LDQuyDQutC+0LTQsCDQv9C+0LTRgtCy0LXRgNC20LTQtdC90LjRjy5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9zaG93Q29kZUZpZWxkczogYm9vbGVhbiA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiDQk9GA0YPQv9C/0LAg0L/QvtC70LXQuSDQstCy0L7QtNCwINC00LvRjyDRhNC+0YDQvNGLIMKr0JLRhdC+0LQg0L3QsCDRgdCw0LnRgsK7LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgZm9ybSgpOiBGb3JtR3JvdXA8e1xuICAgICAgICBwaG9uZTogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XG4gICAgICAgIHZlcmlmaWNhdGlvbkNvZGU6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xuICAgIH0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwRGlyZWN0aXZlPy5mb3JtIGFzIEZvcm1Hcm91cDx7XG4gICAgICAgICAgICBwaG9uZTogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XG4gICAgICAgICAgICB2ZXJpZmljYXRpb25Db2RlOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcbiAgICAgICAgfT47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J/QvtC70LUg0LLQstC+0LTQsCAn0J3QvtC80LXRgCDRgtC10LvQtdGE0L7QvdCwJy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHBob25lQ29udHJvbCgpOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0uY29udHJvbHMucGhvbmU7XG4gICAgfVxuXG4gICAgLyoqIEBpbmhlcml0RG9jICovXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnBob25lQ2hlY2skID0gdHVpQ29udHJvbFZhbHVlPHN0cmluZyB8IG51bGw+KHRoaXMucGhvbmVDb250cm9sKS5waXBlKFxuICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbG9hZFRpbWVyJC5uZXh0KDApO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNCdXN5Q2hhbmdlLmVtaXQobnVsbCk7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0NvbmZpcm1lZENoYW5nZS5lbWl0KG51bGwpO1xuICAgICAgICAgICAgICAgIHRoaXMuaGVscE5vdGlmaWNhdGlvblNlcnZpY2UuY2xvc2VBbGxIZWxwTm90aWZpY2F0aW9uKCk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5mb3JtLmNvbnRyb2xzLnZlcmlmaWNhdGlvbkNvZGUudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLnZlcmlmaWNhdGlvbkNvZGUuc2V0VmFsdWUobnVsbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucGhvbmVDb250cm9sLnZhbGlkICYmICEhdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudmVyaWZpY2F0aW9uU2VydmljZS5nZXRQaG9uZUNoZWNrJCh2YWx1ZSkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzb25hcmpzL2NvZ25pdGl2ZS1jb21wbGV4aXR5XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXAoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNob3VsZEJlQnVzeSgpID09PSB1bmRlZmluZWQgJiYgIWlzTmlsKHRoaXMuc2hvdWxkQmVDb25maXJtZWQoKSkgJiYgcmVzdWx0LmlzQ29uZmlybWVkICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNCdXN5Q2hhbmdlLmVtaXQocmVzdWx0LmlzQnVzeSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc05pbChyZXN1bHQuaXNDb25maXJtZWQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzQ29uZmlybWVkQ2hhbmdlLmVtaXQocmVzdWx0LmlzQ29uZmlybWVkKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2hvdWxkQmVDb25maXJtZWQoKSA9PT0gcmVzdWx0LmlzQ29uZmlybWVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2hvdWxkQmVCdXN5KCkgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnNob3VsZEJlQnVzeSgpICE9PSByZXN1bHQuaXNCdXN5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGhvbmVDb250cm9sLnNldEVycm9ycyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJSZXNwb25zZTogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5pc0J1c3kgPyAn0J/QvtC70YzQt9C+0LLQsNGC0LXQu9GMINGBINGC0LDQutC40Lwg0L3QvtC80LXRgNC+0Lwg0YLQtdC70LXRhNC+0L3QsCDRg9C20LUg0YHRg9GJ0LXRgdGC0LLRg9C10YInIDogJ9Cf0L7Qu9GM0LfQvtCy0LDRgtC10LvRjyDRgSDRgtCw0LrQuNC8INC90L7QvNC10YDQvtC8INGC0LXQu9C10YTQvtC90LAg0L3QtSDRgdGD0YnQtdGB0YLQstGD0LXRgicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5waG9uZUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zaG91bGRCZUNvbmZpcm1lZCgpICE9PSB1bmRlZmluZWQgJiYgdGhpcy5zaG91bGRCZUNvbmZpcm1lZCgpICE9PSByZXN1bHQuaXNDb25maXJtZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5waG9uZUNvbnRyb2wuc2V0RXJyb3JzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclJlc3BvbnNlOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmlzQ29uZmlybWVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ9Ci0LXQu9C10YTQvtC9INGD0LbQtSDQv9C+0LTRgtCy0LXRgNC20LTRkdC9J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICfQndC+0LzQtdGAINGC0LXQu9C10YTQvtC90LAg0L3QtSDQv9C+0LTRgtCy0LXRgNC20LTRkdC9INC40LvQuCDQstGF0L7QtCDQv9C+INC90LXQvNGDINC90LXQstC+0LfQvNC+0LbQtdC9LiDQntCx0YDQsNGC0LjRgtC10YHRjCDQuiDQstCw0YjQtdC80YMg0L/QtdGA0YHQvtC90LDQu9GM0L3QvtC80YMg0LzQtdC90LXQtNC20LXRgNGDINC40LvQuCDQstC+0LnQtNC40YLQtSDRgSDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtdC8IGUtbWFpbCDQuCDQv9Cw0YDQvtC70Y8uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBob25lQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yUmVzcG9uc2UgPSBlcnJvci5lcnJvciBhcyBBcGlFcnJvclJlc3BvbnNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBob25lQ29udHJvbC5zZXRFcnJvcnMoeyBzZXJ2ZXJSZXNwb25zZTogZXJyb3JSZXNwb25zZS5lcnJvcnM/LlsncGhvbmUnXSA/PyBbZXJyb3JSZXNwb25zZS5tZXNzYWdlXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXAoKGNoZWNrKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjaGVjaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhlbHBOb3RpZmljYXRpb25TZXJ2aWNlLmhlbHBOb3RpZmljYXRpb25CeVBob25lKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0V2l0aChudWxsKVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuc2V0SGF2ZUNvZGUoZmFsc2UpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgc2hhcmUoKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuc2V0SGF2ZUNvZGUoZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCj0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdGCINGB0L7RgdGC0L7Rj9C90LjQtSDQvdCw0LvQuNGH0LjRjyDQutC+0LTQsCDQv9C+0LTRgtCy0LXRgNC20LTQtdC90LjRjyDRgyDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaGF2ZUNvZGUg0J/RgNC40LfQvdCw0Log0YLQvtCz0L4g0LXRgdGC0Ywg0LvQuCDQutC+0LQg0L/QvtC00YLQstC10YDQttC00LXQvdC40Y8g0LjQu9C4INC90LXRgi5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgc2V0SGF2ZUNvZGUoaGF2ZUNvZGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5oYXZlQ29kZS5zZXQoaGF2ZUNvZGUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCX0LDQutGA0YvRgtC40LUg0YPQstC10LTQvtC80LvQtdC90LjRjy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgY2xvc2VOb3RpZmljYXRpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaGVscE5vdGlmaWNhdGlvblNlcnZpY2UuY2xvc2VBbGxIZWxwTm90aWZpY2F0aW9uKCk7XG4gICAgfVxufVxuIiwiQGxldCBwaG9uZUNoZWNrID0gcGhvbmVDaGVjayQgfCBhc3luYztcblxuPGZvcm1cbiAgICBbZm9ybUdyb3VwXT1cImZvcm1cIlxuICAgICp0dWlMZXQ9XCJsb2FkaW5nQXBwcm92ZUNvZGUkIHwgYXN5bmMgYXMgbG9hZGluZ0FwcHJvdmVDb2RlXCJcbiAgICBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTNcIlxuPlxuICAgIDxsYWJlbCB0dWlMYWJlbD5cbiAgICAgICAg0J3QvtC80LXRgCDRgtC10LvQtdGE0L7QvdCwXG4gICAgICAgIDx0dWktdGV4dGZpZWxkPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicGhvbmVcIlxuICAgICAgICAgICAgICAgIHR1aUlucHV0UGhvbmVJbnRlcm5hdGlvbmFsXG4gICAgICAgICAgICAgICAgW2ludmFsaWRdPVwicHNldWRvSW52YWxpZCgpIHx8IG51bGxcIlxuICAgICAgICAgICAgICAgIFtjb3VudHJ5U2VhcmNoXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtjb3VudHJpZXNdPVwiKGNvdW50cmllcyB8IHR1aVNvcnRDb3VudHJpZXMgfCBhc3luYykgfHwgW11cIlxuICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cInBob25lXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvdHVpLXRleHRmaWVsZD5cbiAgICAgICAgPHBcbiAgICAgICAgICAgICpuZ0lmPVwic3VidGl0bGUoKVwiXG4gICAgICAgICAgICBjbGFzcz1cInRleHQtYm9keS1zIHRleHQtdHVpLXRleHQtdGVydGlhcnlcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyBzdWJ0aXRsZSgpIH19XG4gICAgICAgIDwvcD5cbiAgICAgICAgPHR1aS1lcnJvclxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicGhvbmVcIlxuICAgICAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgLz5cbiAgICAgICAgQGlmIChzaG93SGVscE5vdGlmaWNhdGlvbiAmJiBwdXNoQ29udGFjdHMoKSkge1xuICAgICAgICAgICAgQGZvciAobWFuYWdlciBvZiBwdXNoQ29udGFjdHMoKTsgdHJhY2sgbWFuYWdlci5pZCkge1xuICAgICAgICAgICAgICAgIDx0dWktcHVzaFxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwi0KHQstGP0LbQuNGC0LXRgdGMINGBINC90LDQvNC4INC00LvRjyDRgNC10YjQtdC90LjRjyDQstC+0LfQvdC40LrRiNC40YUg0LLQvtC/0YDQvtGB0L7QslwiXG4gICAgICAgICAgICAgICAgICAgIChjbG9zZSk9XCJjbG9zZU5vdGlmaWNhdGlvbigpXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCIhdy1hdXRvXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDx0dWktaWNvbiBpY29uPVwiQHR1aS5tZXNzYWdlLXNxdWFyZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxzYy1tYW5hZ2VyLWNhcmQgW21hbmFnZXJdPVwibWFuYWdlclwiIC8+XG4gICAgICAgICAgICAgICAgPC90dWktcHVzaD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIDwvbGFiZWw+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0NvZGVGaWVsZHMgJiYgZm9ybS5lbmFibGVkICYmIHBob25lQ2hlY2tcIj5cbiAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAqbmdJZj1cIiFsb2FkaW5nQXBwcm92ZUNvZGUgJiYgaGF2ZUNvZGUoKVwiXG4gICAgICAgICAgICB0dWlMYWJlbFxuICAgICAgICA+XG4gICAgICAgICAgICDQmtC+0LQg0LjQtyDQodCc0KFcbiAgICAgICAgICAgIDx0dWktaW5wdXRcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ2ZXJpZmljYXRpb25Db2RlXCJcbiAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWQoKSB8fCBzaG93Q29kZUZpZWxkc1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAg0JrQvtC0INC40Lcg0KHQnNChXG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHR1aUF1dG9Gb2N1c1xuICAgICAgICAgICAgICAgICAgICB0dWlUZXh0ZmllbGRMZWdhY3lcbiAgICAgICAgICAgICAgICAgICAgW21hc2tpdG9dPVwidmVyaWZpY2F0aW9uQ29kZU1hc2tcIlxuICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJuZXctcGFzc3dvcmRcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L3R1aS1pbnB1dD5cbiAgICAgICAgICAgIDx0dWktZXJyb3JcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ2ZXJpZmljYXRpb25Db2RlXCJcbiAgICAgICAgICAgICAgICBbZXJyb3JdPVwiW10gfCB0dWlGaWVsZEVycm9yIHwgYXN5bmNcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9sYWJlbD5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqdHVpTGV0PVwiISFsb2FkaW5nQXBwcm92ZUNvZGUgYXMgbG9hZGluZ0FwcHJvdmVDb2RlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNlbnRlciBnYXAtNFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFoYXZlQ29kZSgpXCJcbiAgICAgICAgICAgICAgICB0dWlCdXR0b25cbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TZW5kQ29kZS5uZXh0KClcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJsb2FkaW5nQXBwcm92ZUNvZGUgfHwgIXBob25lQ2hlY2sgfHwgcGhvbmVDb250cm9sLmludmFsaWRcIlxuICAgICAgICAgICAgICAgIFtsb2FkaW5nXT1cImxvYWRpbmdBcHByb3ZlQ29kZVwiXG4gICAgICAgICAgICAgICAgaWNvblN0YXJ0PVwiQHR1aS5zYy5zZW5kXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICDQn9C+0LvRg9GH0LjRgtGMINC60L7QtFxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhbG9hZGluZ0FwcHJvdmVDb2RlICYmICFoYXZlQ29kZSgpXCJcbiAgICAgICAgICAgICAgICB0dWlMaW5rXG4gICAgICAgICAgICAgICAgW3BzZXVkb109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXBob25lQ2hlY2sgfHwgcGhvbmVDb250cm9sLmludmFsaWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXRIYXZlQ29kZSh0cnVlKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAg0KMg0LzQtdC90Y8g0LXRgdGC0Ywg0LrQvtC0XG4gICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqdHVpTGV0PVwidGltZXIkIHwgYXN5bmMgYXMgdGltZXJcIj5cbiAgICAgICAgICAgICAgICA8dHVpLWxvYWRlclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImhhdmVDb2RlKClcIlxuICAgICAgICAgICAgICAgICAgICBbc2hvd0xvYWRlcl09XCJsb2FkaW5nQXBwcm92ZUNvZGVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHVpTGlua1xuICAgICAgICAgICAgICAgICAgICAgICAgW3BzZXVkb109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJsb2FkaW5nQXBwcm92ZUNvZGUgfHwgdGltZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VuZENvZGUubmV4dCgpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAg0J/QvtCy0YLQvtGA0L3QviDQvtGC0L/RgNCw0LLQuNGC0Ywg0LrQvtC0XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ0aW1lclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCIhdGV4dC10dWktYmFzZS0wOFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKNGH0LXRgNC10Lcge3sgdGltZXIgfX0pXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC90dWktbG9hZGVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9mb3JtPlxuXG48bmctdGVtcGxhdGUgI2NoZWNraW5nUGhvbmU+XG4gICAgPHR1aS1sb2FkZXJcbiAgICAgICAgKm5nSWY9XCIhcGhvbmVDaGVjayAmJiBwaG9uZUNvbnRyb2wudmFsaWRcIlxuICAgICAgICBjbGFzcz1cInNpemUtNFwiXG4gICAgLz5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -1,163 +0,0 @@
1
- import { InputSignal, OutputEmitterRef, Signal } from '@angular/core';
2
- import { FormControl, FormGroup } from '@angular/forms';
3
- import { ScFeedbackForms, ScISuggestionType, ScUploadedFile } from '@snabcentr/client-core';
4
- import { TuiLooseUnion } from '@taiga-ui/cdk';
5
- import { TuiDialogContext } from '@taiga-ui/core';
6
- import { TuiCountryIsoCode } from '@taiga-ui/i18n';
7
- import { TuiFileLike } from '@taiga-ui/kit';
8
- import { Observable, Subject } from 'rxjs';
9
- import { ScFeedbackFormConfig, ScFeedbackFormFieldType } from '../interfaces';
10
- import * as i0 from "@angular/core";
11
- /**
12
- * Компонент формы обратной связи.
13
- */
14
- export declare class ScFeedbackFormComponent {
15
- /**
16
- * Контекст диалогового окна, в котором открыт компонент.
17
- */
18
- protected readonly context: TuiDialogContext<void, {
19
- onClickOfferHandler: () => void;
20
- } & ScFeedbackFormConfig> | null;
21
- /**
22
- * Символьное обозначение (slug) формы.
23
- */
24
- readonly slugInput: InputSignal<TuiLooseUnion<ScFeedbackForms>>;
25
- /**
26
- * Список полей, доступных в данной форме.
27
- */
28
- readonly fieldsInput: InputSignal<ScFeedbackFormFieldType[]>;
29
- /**
30
- * Символьное обозначение (slug) формы.
31
- */
32
- protected readonly slug: Signal<TuiLooseUnion<ScFeedbackForms>>;
33
- /**
34
- * Список полей, доступных в данной форме.
35
- */
36
- protected readonly fields: Signal<ScFeedbackFormFieldType[]>;
37
- /**
38
- * Событие нажатия на кнопку договора оферты.
39
- */
40
- readonly clickOffer: OutputEmitterRef<void>;
41
- /**
42
- * Событие успешной отправки формы.
43
- */
44
- readonly sendSuccess: OutputEmitterRef<void>;
45
- /**
46
- * Сервис обратной связи.
47
- */
48
- private readonly feedbackService;
49
- /**
50
- * Сервис конвертации данных.
51
- */
52
- private readonly convertersService;
53
- /**
54
- * Максимальное количество файлов, отправляемых в форме.
55
- */
56
- private readonly maxFilesInForm;
57
- /**
58
- * Сервис данных о пользователе.
59
- */
60
- private readonly user$;
61
- /**
62
- * Поле ввода для recaptcha.
63
- */
64
- protected readonly recaptchaControl: FormControl<string | null>;
65
- /**
66
- * Группа полей ввода для формы «Пожелания и предложения по улучшению сайта».
67
- */
68
- protected readonly form: FormGroup<{
69
- name: FormControl<string | null>;
70
- phone: FormControl<string | null>;
71
- email: FormControl<string | null>;
72
- message: FormControl<string | null>;
73
- files: FormControl<ScUploadedFile[] | null>;
74
- isShouldUseMessenger: FormControl<boolean | null>;
75
- }>;
76
- /**
77
- * Перечисление типов подсказок.
78
- */
79
- protected readonly suggestionType: typeof ScISuggestionType;
80
- /**
81
- * {@link Subject} события отправки формы.
82
- */
83
- protected readonly onSubmit: Subject<void>;
84
- /**
85
- * {@link Observable} запроса на отправку данных.
86
- */
87
- protected readonly request$: Observable<undefined | null>;
88
- /**
89
- * {@link Observable} изменения состояния загрузки данных.
90
- */
91
- protected readonly loading$: Observable<boolean>;
92
- /**
93
- * Управляет состоянием загруженных файлов.
94
- */
95
- protected readonly loadedFile: FormControl<TuiFileLike[] | null>;
96
- /**
97
- * Observable, который отслеживает, приняты ли файлы в соответствии с требованиями по типу размеру и т.д.
98
- */
99
- protected readonly accepted$: Observable<File[]>;
100
- /**
101
- * Список файлов, которые были отклонены при загрузке.
102
- */
103
- protected rejected: readonly File[];
104
- /**
105
- * Список стран.
106
- */
107
- protected readonly countries: readonly TuiCountryIsoCode[];
108
- /**
109
- * Инициализирует экземпляр класса {@link ScFeedbackFormComponent}.
110
- */
111
- constructor();
112
- /**
113
- * Удаляет валидацию со всех полей ввода.
114
- */
115
- private clearAllValidators;
116
- /**
117
- * Устанавливает валидацию со для указанных полей ввода.
118
- *
119
- * @param fields Поля, для которых нужно установить валидацию.
120
- */
121
- private setAllValidators;
122
- /**
123
- * Обрабатывает отклоненные файлы.
124
- *
125
- * @param files Список файлов, которые были отклонены.
126
- */
127
- protected onReject(files: readonly File[]): void;
128
- /**
129
- * Удаляет файл из списка загруженных и отклоненных файлов.
130
- *
131
- * @param file Файл, который нужно удалить.
132
- */
133
- protected onRemove(file: File): void;
134
- /**
135
- * Очищает список файлов.
136
- */
137
- protected onRemoveAll(): void;
138
- /**
139
- * Загружает файл в форму обратной связи.
140
- *
141
- * @param files Набор файлов.
142
- */
143
- private onUploadFile;
144
- /**
145
- * Проверяет количество файлов загруженных пользователем.
146
- *
147
- * @param maxLength максимальное допустимое количество файлов для отправки.
148
- */
149
- private maxFilesLength;
150
- /**
151
- * Выполняет очистку полей формы.
152
- */
153
- private resetForm;
154
- /**
155
- * Проверяет, что номер телефона подходит для использования в мессенджерах.
156
- *
157
- * @param value Номер телефона, который необходимо проверить.
158
- * @returns Признак того, что номер телефона подходит для мессенджеров.
159
- */
160
- protected isValidPhoneNumberForMessenger(value: string): boolean;
161
- static ɵfac: i0.ɵɵFactoryDeclaration<ScFeedbackFormComponent, never>;
162
- static ɵcmp: i0.ɵɵComponentDeclaration<ScFeedbackFormComponent, "sc-feedback-form", never, { "slugInput": { "alias": "slug"; "required": false; "isSignal": true; }; "fieldsInput": { "alias": "fields"; "required": false; "isSignal": true; }; }, { "clickOffer": "clickOffer"; "sendSuccess": "sendSuccess"; }, never, never, true, never>;
163
- }
@@ -1,20 +0,0 @@
1
- import { TuiDialogContext } from '@taiga-ui/core';
2
- import * as i0 from "@angular/core";
3
- /**
4
- * Компонент «Спасибо!».
5
- */
6
- export declare class ScGratitudeComponent {
7
- /**
8
- * Контекст диалогового окна, в котором открыт компонент.
9
- */
10
- protected readonly context: TuiDialogContext<void, {
11
- autoClose: number;
12
- subTitle: string;
13
- }> | null;
14
- /**
15
- * Инициализирует экземпляр класса {@link ScGratitudeComponent}.
16
- */
17
- constructor();
18
- static ɵfac: i0.ɵɵFactoryDeclaration<ScGratitudeComponent, never>;
19
- static ɵcmp: i0.ɵɵComponentDeclaration<ScGratitudeComponent, "sc-gratitude", never, {}, {}, never, never, true, never>;
20
- }
@@ -1,3 +0,0 @@
1
- export * from './interfaces';
2
- export * from './feedback-form/sc-feedback-form.component';
3
- export * from './gratitude/sc-gratitude.component';
@@ -1 +0,0 @@
1
- export * from './sc-feedback-form-config';
@@ -1,23 +0,0 @@
1
- import { ScFeedbackForms } from '@snabcentr/client-core';
2
- import { TuiLooseUnion } from '@taiga-ui/cdk';
3
- /**
4
- * Типы доступных полей для форм обратной связи.
5
- */
6
- export type ScFeedbackFormFieldType = 'name' | 'email' | 'phone' | 'message' | 'files' | 'isShouldUseMessenger';
7
- /**
8
- * Конфигурация формы обратной связи.
9
- */
10
- export interface ScFeedbackFormConfig {
11
- /**
12
- * Уникальный идентификатор формы, используемый в API-запросах.
13
- */
14
- slug: TuiLooseUnion<ScFeedbackForms>;
15
- /**
16
- * Название формы, отображаемое пользователю.
17
- */
18
- title: string;
19
- /**
20
- * Список полей, доступных в данной форме.
21
- */
22
- fields: ScFeedbackFormFieldType[];
23
- }
@@ -1,2 +0,0 @@
1
- export * from './tree-top.directive';
2
- export * from './tree.directive';
@@ -1,33 +0,0 @@
1
- import { TreeNode } from '../interfaces/tree-node';
2
- import * as i0 from "@angular/core";
3
- /**
4
- * Директива отвечающая за корневые элементы дерева.
5
- */
6
- export declare class TreeTopDirective implements TreeNode {
7
- /**
8
- * Отображаемое имя корневого элемента дерева.
9
- */
10
- text: string;
11
- /**
12
- * Значок корневого элемента дерева.
13
- */
14
- icon: string;
15
- /**
16
- * Ссылка корневого элемента дерева.
17
- */
18
- link?: string;
19
- /**
20
- * Признак наличия дочерних элементов.
21
- */
22
- hasChildren: boolean;
23
- /**
24
- * Идентификатор корневого элемента дерева.
25
- */
26
- id?: number;
27
- /**
28
- * Дата создания корневого элемента дерева.
29
- */
30
- createdAt?: string;
31
- static ɵfac: i0.ɵɵFactoryDeclaration<TreeTopDirective, never>;
32
- static ɵdir: i0.ɵɵDirectiveDeclaration<TreeTopDirective, "[scTopNodeText]", never, { "text": { "alias": "scTopNodeText"; "required": false; }; "icon": { "alias": "scTopNodeIcon"; "required": false; }; "link": { "alias": "scTopNodeLink"; "required": false; }; "hasChildren": { "alias": "scTopNodeChilds"; "required": false; }; "id": { "alias": "scTopNodeParent"; "required": false; }; "createdAt": { "alias": "scTopNodeDate"; "required": false; }; }, {}, never, never, false, never>;
33
- }