@snabcentr/client-ui 4.14.8 → 4.14.9

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 (590) hide show
  1. package/fesm2022/snabcentr-client-ui.mjs +3439 -4483
  2. package/fesm2022/snabcentr-client-ui.mjs.map +1 -1
  3. package/icons/svg-pack/application.svg +1 -1
  4. package/icons/svg-pack/back.svg +1 -1
  5. package/icons/svg-pack/bag.svg +1 -1
  6. package/icons/svg-pack/banknote-arrow-in-top.svg +1 -1
  7. package/icons/svg-pack/catalog/aluminum-systems.svg +1 -1
  8. package/icons/svg-pack/catalog/arm-profile.svg +1 -1
  9. package/icons/svg-pack/catalog/batten.svg +1 -1
  10. package/icons/svg-pack/catalog/brusbox.svg +1 -1
  11. package/icons/svg-pack/catalog/canopy.svg +1 -1
  12. package/icons/svg-pack/catalog/configurator.svg +1 -1
  13. package/icons/svg-pack/catalog/covering-material.svg +1 -1
  14. package/icons/svg-pack/catalog/door-accessories.svg +1 -1
  15. package/icons/svg-pack/catalog/drainage-system.svg +1 -1
  16. package/icons/svg-pack/catalog/fastener.svg +1 -1
  17. package/icons/svg-pack/catalog/finishing-materials.svg +1 -1
  18. package/icons/svg-pack/catalog/fixing-impost.svg +1 -1
  19. package/icons/svg-pack/catalog/flask.svg +1 -1
  20. package/icons/svg-pack/catalog/foam-balloon.svg +1 -1
  21. package/icons/svg-pack/catalog/foam.svg +1 -1
  22. package/icons/svg-pack/catalog/glue.svg +1 -1
  23. package/icons/svg-pack/catalog/handle.svg +1 -1
  24. package/icons/svg-pack/catalog/instrument.svg +1 -1
  25. package/icons/svg-pack/catalog/kve-profile.svg +1 -1
  26. package/icons/svg-pack/catalog/lubricants.svg +1 -1
  27. package/icons/svg-pack/catalog/mosquito-net.svg +1 -1
  28. package/icons/svg-pack/catalog/mounting-accessories.svg +1 -1
  29. package/icons/svg-pack/catalog/net-order.svg +1 -1
  30. package/icons/svg-pack/catalog/panel-1.svg +1 -1
  31. package/icons/svg-pack/catalog/panel.svg +1 -1
  32. package/icons/svg-pack/catalog/polyethylene-film.svg +1 -1
  33. package/icons/svg-pack/catalog/profile-plastic.svg +1 -1
  34. package/icons/svg-pack/catalog/promo-materials.svg +1 -1
  35. package/icons/svg-pack/catalog/psul.svg +1 -1
  36. package/icons/svg-pack/catalog/rehau-profile.svg +1 -1
  37. package/icons/svg-pack/catalog/sandwich-plastic.svg +1 -1
  38. package/icons/svg-pack/catalog/sealer.svg +1 -1
  39. package/icons/svg-pack/catalog/siding-2.svg +1 -1
  40. package/icons/svg-pack/catalog/siding.svg +1 -1
  41. package/icons/svg-pack/catalog/start-finish-profile.svg +1 -1
  42. package/icons/svg-pack/catalog/steam-waterproofing.svg +1 -1
  43. package/icons/svg-pack/catalog/stiz.svg +1 -1
  44. package/icons/svg-pack/catalog/thermometer.svg +1 -1
  45. package/icons/svg-pack/catalog/windowsill.svg +1 -1
  46. package/icons/svg-pack/chart-column-plus.svg +1 -1
  47. package/icons/svg-pack/circle-arrow-in-right.svg +1 -1
  48. package/icons/svg-pack/contacts.svg +1 -1
  49. package/icons/svg-pack/deadline.svg +1 -1
  50. package/icons/svg-pack/file-p.svg +1 -1
  51. package/icons/svg-pack/file-search.svg +1 -1
  52. package/icons/svg-pack/file-w.svg +1 -1
  53. package/icons/svg-pack/file-x.svg +1 -1
  54. package/icons/svg-pack/grid-height-arrow.svg +1 -1
  55. package/icons/svg-pack/grid-width-arrow.svg +1 -1
  56. package/icons/svg-pack/layout-list-tree.svg +1 -1
  57. package/icons/svg-pack/list.svg +1 -1
  58. package/icons/svg-pack/puzzle.svg +1 -1
  59. package/icons/svg-pack/reclamation.svg +1 -1
  60. package/icons/svg-pack/retail-store.svg +1 -1
  61. package/icons/svg-pack/send.svg +1 -1
  62. package/package.json +35 -36
  63. package/release_notes.tmp +16 -2
  64. package/styles/taiga/variables.less +35 -17
  65. package/styles/tailwind/tailwind.scss +12 -12
  66. package/types/snabcentr-client-ui.d.ts +6787 -0
  67. package/accordion/index.d.ts +0 -3
  68. package/accordion/sc-accordion-content.directive.d.ts +0 -9
  69. package/accordion/sc-accordion.component.d.ts +0 -56
  70. package/accordion/sc-accordion.module.d.ts +0 -15
  71. package/auth/enums/auth-method.d.ts +0 -13
  72. package/auth/index.d.ts +0 -8
  73. package/auth/interfaces/index.d.ts +0 -2
  74. package/auth/interfaces/sc-bank-account-form-group.d.ts +0 -11
  75. package/auth/interfaces/sc-contact-form-group.d.ts +0 -10
  76. package/auth/sc-auth.module.d.ts +0 -27
  77. package/auth/sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component.d.ts +0 -55
  78. package/auth/sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component.d.ts +0 -45
  79. package/auth/sc-sign-in-form/sc-sign-in-form.component.d.ts +0 -53
  80. package/auth/sc-simple-sign-up-form/sc-simple-sign-up-form.component.d.ts +0 -113
  81. package/auth/sign-up-form/sc-sign-up-form.component.d.ts +0 -172
  82. package/banner/index.d.ts +0 -2
  83. package/banner/sc-banner.component.d.ts +0 -108
  84. package/banner/sc-banner.module.d.ts +0 -17
  85. package/brands-list/index.d.ts +0 -3
  86. package/brands-list/sc-brand-list-item.d.ts +0 -25
  87. package/brands-list/sc-brands-list.component.d.ts +0 -13
  88. package/brands-list/sc-brands-list.module.d.ts +0 -12
  89. 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 -106
  90. package/cart/add-or-editing-cart-item-dialog/index.d.ts +0 -2
  91. package/cart/add-or-editing-cart-item-dialog/sc-add-or-editing-cart-item-dialog.component.d.ts +0 -49
  92. package/cart/index.d.ts +0 -2
  93. package/cart/sc-cart-add-products-from-csv-dialog/sc-cart-add-products-from-csv-dialog.component.d.ts +0 -62
  94. package/catalog/catalog-filters/collapsible/sc-catalog-filter-collapsible.component.d.ts +0 -47
  95. package/catalog/catalog-filters/index.d.ts +0 -4
  96. package/catalog/catalog-filters/sc-catalog-filters.component.d.ts +0 -199
  97. package/catalog/catalog-filters/tokens/sc-catalog-products-filters.d.ts +0 -7
  98. package/catalog/catalog-filters/tokens/sc-catalog-show-products-recursively.d.ts +0 -5
  99. package/catalog/category-card/sc-category-card.component.d.ts +0 -76
  100. package/catalog/cost-with-discount/cost-with-discount.component.d.ts +0 -23
  101. package/catalog/download-price-list/sc-download-price-list.component.d.ts +0 -38
  102. package/catalog/hover-image-carousel/sc-hover-image-carousel.component.d.ts +0 -48
  103. package/catalog/index.d.ts +0 -15
  104. package/catalog/input-quantity/sc-input-quantity.component.d.ts +0 -82
  105. package/catalog/notify-when-in-stock-dialog/index.d.ts +0 -2
  106. package/catalog/notify-when-in-stock-dialog/sc-notify-when-in-stock-dialog.component.d.ts +0 -90
  107. package/catalog/notify-when-in-stock-dialog/sc-product-in-all-warehouses.pipe.d.ts +0 -22
  108. package/catalog/price-card/sc-price-card.component.d.ts +0 -18
  109. package/catalog/price-card-inline/sc-price-card-inline.component.d.ts +0 -10
  110. package/catalog/price-history/sc-price-history.component.d.ts +0 -92
  111. package/catalog/price-list-pagination/sc-price-list-pagination.component.d.ts +0 -40
  112. package/catalog/price-warehouse-stock/sc-price-warehouse-stock.component.d.ts +0 -47
  113. package/catalog/sc-catalog.module.d.ts +0 -29
  114. package/catalog/sc-favorite-button/sc-favorite-button.component.d.ts +0 -25
  115. package/catalog/seo-tags/sc-seo-tags.component.d.ts +0 -20
  116. package/configurators/index.d.ts +0 -3
  117. package/configurators/models/index.d.ts +0 -3
  118. package/configurators/models/sandwich/sc-i-configurator-search-product-sandwich.d.ts +0 -22
  119. package/configurators/models/sandwich/sc-i-sandwich-settings.d.ts +0 -18
  120. package/configurators/models/sandwich_m2/sc-i-sandwich-m2-settings.d.ts +0 -18
  121. package/configurators/sandwich/index.d.ts +0 -3
  122. package/configurators/sandwich/sandwich-skeleton/sc-sandwich-skeleton.component.d.ts +0 -8
  123. package/configurators/sandwich/sc-i-new-cart-item-sandwich.d.ts +0 -14
  124. package/configurators/sandwich/sc-sandwich.component.d.ts +0 -186
  125. package/configurators/sandwich_m2/index.d.ts +0 -4
  126. package/configurators/sandwich_m2/sandwich-m2-skeleton/sc-sandwich-m2-skeleton.component.d.ts +0 -8
  127. package/configurators/sandwich_m2/sc-i-new-cart-item-sandwich-m2.d.ts +0 -23
  128. package/configurators/sandwich_m2/sc-sandwich-m2-item-submit-state.d.ts +0 -13
  129. package/configurators/sandwich_m2/sc-sandwich-m2.component.d.ts +0 -275
  130. package/contacts/add-contact-dialog/sc-add-contact-dialog.component.d.ts +0 -49
  131. package/contacts/contacts-accordion/sc-contacts-accordion.component.d.ts +0 -23
  132. package/contacts/index.d.ts +0 -7
  133. package/contacts/manager-card/sc-manager-card.component.d.ts +0 -22
  134. package/contacts/manager-card-push/sc-manager-card-push.component.d.ts +0 -18
  135. package/contacts/new-contact-form/sc-new-contact-form.component.d.ts +0 -28
  136. package/contacts/sc-contacts.module.d.ts +0 -27
  137. package/contacts/tokens/index.d.ts +0 -2
  138. package/contacts/tokens/sc-manager-qr-handler.token.d.ts +0 -6
  139. package/contacts/tokens/sc-show-help-notification-in-phone-input.token.d.ts +0 -5
  140. package/contragents/add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component.d.ts +0 -49
  141. package/contragents/add-contragent-dialog/sc-add-contragent-dialog.component.d.ts +0 -158
  142. package/contragents/contragents-accordion/contragents-accordion-item/sc-contragents-accordion-item.component.d.ts +0 -62
  143. package/contragents/contragents-accordion/sc-contragents-accordion.component.d.ts +0 -49
  144. package/contragents/index.d.ts +0 -7
  145. package/contragents/new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component.d.ts +0 -64
  146. package/contragents/new-contragent-form/sc-new-contragent-form.component.d.ts +0 -123
  147. package/contragents/sc-contragents.module.d.ts +0 -27
  148. package/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.d.ts +0 -148
  149. package/delivery-address/delivery-address-accordion/delivery-address-accordion-item/sc-delivery-address-accordion-item.component.d.ts +0 -50
  150. package/delivery-address/delivery-address-accordion/sc-delivery-address-accordion.component.d.ts +0 -49
  151. package/delivery-address/index.d.ts +0 -4
  152. package/delivery-address/sc-delivery-address.module.d.ts +0 -25
  153. package/dialogs/index.d.ts +0 -1
  154. package/dialogs/sc-resource-preview/sc-resource-preview.component.d.ts +0 -42
  155. package/directives/abstract-price-card/abstract-sc-price-card.directive.d.ts +0 -136
  156. package/directives/address-quality/sc-address-quality.directive.d.ts +0 -23
  157. package/directives/address-quality/sc-address-quality.service.d.ts +0 -122
  158. package/directives/address-quality/sc-i-address-quality-state.d.ts +0 -14
  159. package/directives/index.d.ts +0 -11
  160. package/directives/links/index.d.ts +0 -4
  161. package/directives/links/sc-email-link.directive.d.ts +0 -25
  162. package/directives/links/sc-link-location.d.ts +0 -5
  163. package/directives/links/sc-links.d.ts +0 -7
  164. package/directives/links/sc-tel-link.directive.d.ts +0 -40
  165. package/directives/next-input-focus/sc-next-input-focus.directive.d.ts +0 -27
  166. package/directives/next-input-focus/sc-next-input-focus.module.d.ts +0 -10
  167. package/directives/print/sc-print.directive.d.ts +0 -21
  168. package/directives/sc-date-value-transformer.directive.d.ts +0 -8
  169. package/directives/sc-focus-first-invalid-field.directive.d.ts +0 -30
  170. package/directives/select-on-focusin/sc-select-on-focusin.directive.d.ts +0 -14
  171. package/directives/terminal-link/sc-terminal-link.directive.d.ts +0 -34
  172. package/error-handler/consts/error-change-handler.providers.d.ts +0 -6
  173. package/error-handler/error-block-status/error-block-status.component.d.ts +0 -55
  174. package/error-handler/index.d.ts +0 -4
  175. package/error-handler/interfaces/i-block-error.d.ts +0 -17
  176. package/error-handler/sc-error-handler.component.d.ts +0 -40
  177. package/esm2022/accordion/index.mjs +0 -4
  178. package/esm2022/accordion/sc-accordion-content.directive.mjs +0 -17
  179. package/esm2022/accordion/sc-accordion.component.mjs +0 -92
  180. package/esm2022/accordion/sc-accordion.module.mjs +0 -26
  181. package/esm2022/auth/enums/auth-method.mjs +0 -15
  182. package/esm2022/auth/index.mjs +0 -9
  183. package/esm2022/auth/interfaces/index.mjs +0 -3
  184. package/esm2022/auth/interfaces/sc-bank-account-form-group.mjs +0 -2
  185. package/esm2022/auth/interfaces/sc-contact-form-group.mjs +0 -2
  186. package/esm2022/auth/sc-auth.module.mjs +0 -103
  187. package/esm2022/auth/sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component.mjs +0 -100
  188. package/esm2022/auth/sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component.mjs +0 -81
  189. package/esm2022/auth/sc-sign-in-form/sc-sign-in-form.component.mjs +0 -89
  190. package/esm2022/auth/sc-simple-sign-up-form/sc-simple-sign-up-form.component.mjs +0 -203
  191. package/esm2022/auth/sign-up-form/sc-sign-up-form.component.mjs +0 -344
  192. package/esm2022/banner/index.mjs +0 -3
  193. package/esm2022/banner/sc-banner.component.mjs +0 -176
  194. package/esm2022/banner/sc-banner.module.mjs +0 -29
  195. package/esm2022/brands-list/index.mjs +0 -4
  196. package/esm2022/brands-list/sc-brand-list-item.mjs +0 -2
  197. package/esm2022/brands-list/sc-brands-list.component.mjs +0 -24
  198. package/esm2022/brands-list/sc-brands-list.module.mjs +0 -22
  199. 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
  200. package/esm2022/cart/add-or-editing-cart-item-dialog/index.mjs +0 -3
  201. package/esm2022/cart/add-or-editing-cart-item-dialog/sc-add-or-editing-cart-item-dialog.component.mjs +0 -75
  202. package/esm2022/cart/index.mjs +0 -3
  203. package/esm2022/cart/sc-cart-add-products-from-csv-dialog/sc-cart-add-products-from-csv-dialog.component.mjs +0 -110
  204. package/esm2022/catalog/catalog-filters/collapsible/sc-catalog-filter-collapsible.component.mjs +0 -59
  205. package/esm2022/catalog/catalog-filters/index.mjs +0 -5
  206. package/esm2022/catalog/catalog-filters/sc-catalog-filters.component.mjs +0 -451
  207. package/esm2022/catalog/catalog-filters/tokens/sc-catalog-products-filters.mjs +0 -10
  208. package/esm2022/catalog/catalog-filters/tokens/sc-catalog-show-products-recursively.mjs +0 -6
  209. package/esm2022/catalog/category-card/sc-category-card.component.mjs +0 -102
  210. package/esm2022/catalog/cost-with-discount/cost-with-discount.component.mjs +0 -38
  211. package/esm2022/catalog/download-price-list/sc-download-price-list.component.mjs +0 -56
  212. package/esm2022/catalog/hover-image-carousel/sc-hover-image-carousel.component.mjs +0 -76
  213. package/esm2022/catalog/index.mjs +0 -16
  214. package/esm2022/catalog/input-quantity/sc-input-quantity.component.mjs +0 -190
  215. package/esm2022/catalog/notify-when-in-stock-dialog/index.mjs +0 -3
  216. package/esm2022/catalog/notify-when-in-stock-dialog/sc-notify-when-in-stock-dialog.component.mjs +0 -173
  217. package/esm2022/catalog/notify-when-in-stock-dialog/sc-product-in-all-warehouses.pipe.mjs +0 -35
  218. package/esm2022/catalog/price-card/sc-price-card.component.mjs +0 -71
  219. package/esm2022/catalog/price-card-inline/sc-price-card-inline.component.mjs +0 -54
  220. package/esm2022/catalog/price-history/sc-price-history.component.mjs +0 -144
  221. package/esm2022/catalog/price-list-pagination/sc-price-list-pagination.component.mjs +0 -65
  222. package/esm2022/catalog/price-warehouse-stock/sc-price-warehouse-stock.component.mjs +0 -61
  223. package/esm2022/catalog/sc-catalog.module.mjs +0 -128
  224. package/esm2022/catalog/sc-favorite-button/sc-favorite-button.component.mjs +0 -42
  225. package/esm2022/catalog/seo-tags/sc-seo-tags.component.mjs +0 -25
  226. package/esm2022/configurators/index.mjs +0 -4
  227. package/esm2022/configurators/models/index.mjs +0 -4
  228. package/esm2022/configurators/models/sandwich/sc-i-configurator-search-product-sandwich.mjs +0 -2
  229. package/esm2022/configurators/models/sandwich/sc-i-sandwich-settings.mjs +0 -2
  230. package/esm2022/configurators/models/sandwich_m2/sc-i-sandwich-m2-settings.mjs +0 -2
  231. package/esm2022/configurators/sandwich/index.mjs +0 -4
  232. package/esm2022/configurators/sandwich/sandwich-skeleton/sc-sandwich-skeleton.component.mjs +0 -14
  233. package/esm2022/configurators/sandwich/sc-i-new-cart-item-sandwich.mjs +0 -2
  234. package/esm2022/configurators/sandwich/sc-sandwich.component.mjs +0 -387
  235. package/esm2022/configurators/sandwich_m2/index.mjs +0 -5
  236. package/esm2022/configurators/sandwich_m2/sandwich-m2-skeleton/sc-sandwich-m2-skeleton.component.mjs +0 -14
  237. package/esm2022/configurators/sandwich_m2/sc-i-new-cart-item-sandwich-m2.mjs +0 -2
  238. package/esm2022/configurators/sandwich_m2/sc-sandwich-m2-item-submit-state.mjs +0 -5
  239. package/esm2022/configurators/sandwich_m2/sc-sandwich-m2.component.mjs +0 -569
  240. package/esm2022/contacts/add-contact-dialog/sc-add-contact-dialog.component.mjs +0 -91
  241. package/esm2022/contacts/contacts-accordion/sc-contacts-accordion.component.mjs +0 -37
  242. package/esm2022/contacts/index.mjs +0 -8
  243. package/esm2022/contacts/manager-card/sc-manager-card.component.mjs +0 -58
  244. package/esm2022/contacts/manager-card-push/sc-manager-card-push.component.mjs +0 -28
  245. package/esm2022/contacts/new-contact-form/sc-new-contact-form.component.mjs +0 -37
  246. package/esm2022/contacts/sc-contacts.module.mjs +0 -89
  247. package/esm2022/contacts/tokens/index.mjs +0 -3
  248. package/esm2022/contacts/tokens/sc-manager-qr-handler.token.mjs +0 -25
  249. package/esm2022/contacts/tokens/sc-show-help-notification-in-phone-input.token.mjs +0 -9
  250. package/esm2022/contragents/add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component.mjs +0 -81
  251. package/esm2022/contragents/add-contragent-dialog/sc-add-contragent-dialog.component.mjs +0 -266
  252. package/esm2022/contragents/contragents-accordion/contragents-accordion-item/sc-contragents-accordion-item.component.mjs +0 -74
  253. package/esm2022/contragents/contragents-accordion/sc-contragents-accordion.component.mjs +0 -68
  254. package/esm2022/contragents/index.mjs +0 -8
  255. package/esm2022/contragents/new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component.mjs +0 -72
  256. package/esm2022/contragents/new-contragent-form/sc-new-contragent-form.component.mjs +0 -230
  257. package/esm2022/contragents/sc-contragents.module.mjs +0 -118
  258. package/esm2022/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.mjs +0 -261
  259. package/esm2022/delivery-address/delivery-address-accordion/delivery-address-accordion-item/sc-delivery-address-accordion-item.component.mjs +0 -60
  260. package/esm2022/delivery-address/delivery-address-accordion/sc-delivery-address-accordion.component.mjs +0 -68
  261. package/esm2022/delivery-address/index.mjs +0 -5
  262. package/esm2022/delivery-address/sc-delivery-address.module.mjs +0 -96
  263. package/esm2022/dialogs/index.mjs +0 -2
  264. package/esm2022/dialogs/sc-resource-preview/sc-resource-preview.component.mjs +0 -73
  265. package/esm2022/directives/abstract-price-card/abstract-sc-price-card.directive.mjs +0 -170
  266. package/esm2022/directives/address-quality/sc-address-quality.directive.mjs +0 -40
  267. package/esm2022/directives/address-quality/sc-address-quality.service.mjs +0 -214
  268. package/esm2022/directives/address-quality/sc-i-address-quality-state.mjs +0 -2
  269. package/esm2022/directives/index.mjs +0 -12
  270. package/esm2022/directives/links/index.mjs +0 -5
  271. package/esm2022/directives/links/sc-email-link.directive.mjs +0 -49
  272. package/esm2022/directives/links/sc-link-location.mjs +0 -2
  273. package/esm2022/directives/links/sc-links.mjs +0 -8
  274. package/esm2022/directives/links/sc-tel-link.directive.mjs +0 -79
  275. package/esm2022/directives/next-input-focus/sc-next-input-focus.directive.mjs +0 -70
  276. package/esm2022/directives/next-input-focus/sc-next-input-focus.module.mjs +0 -19
  277. package/esm2022/directives/print/sc-print.directive.mjs +0 -36
  278. package/esm2022/directives/sc-date-value-transformer.directive.mjs +0 -30
  279. package/esm2022/directives/sc-focus-first-invalid-field.directive.mjs +0 -85
  280. package/esm2022/directives/select-on-focusin/sc-select-on-focusin.directive.mjs +0 -36
  281. package/esm2022/directives/terminal-link/sc-terminal-link.directive.mjs +0 -69
  282. package/esm2022/error-handler/consts/error-change-handler.providers.mjs +0 -10
  283. package/esm2022/error-handler/error-block-status/error-block-status.component.mjs +0 -101
  284. package/esm2022/error-handler/index.mjs +0 -5
  285. package/esm2022/error-handler/interfaces/i-block-error.mjs +0 -2
  286. package/esm2022/error-handler/sc-error-handler.component.mjs +0 -58
  287. package/esm2022/feedback/feedback-form/sc-feedback-form.component.mjs +0 -334
  288. package/esm2022/feedback/gratitude/sc-gratitude.component.mjs +0 -32
  289. package/esm2022/feedback/index.mjs +0 -4
  290. package/esm2022/feedback/interfaces/index.mjs +0 -2
  291. package/esm2022/feedback/interfaces/sc-feedback-form-config.mjs +0 -2
  292. package/esm2022/files/directives/index.mjs +0 -3
  293. package/esm2022/files/directives/tree-top.directive.mjs +0 -63
  294. package/esm2022/files/directives/tree.directive.mjs +0 -47
  295. package/esm2022/files/file-tree-item/file-tree-item.component.mjs +0 -18
  296. package/esm2022/files/files-and-documents/files-and-documents.component.mjs +0 -61
  297. package/esm2022/files/files-and-documents.module.mjs +0 -28
  298. package/esm2022/files/index.mjs +0 -6
  299. package/esm2022/files/interfaces/tree-node.mjs +0 -2
  300. package/esm2022/files/services/index.mjs +0 -3
  301. package/esm2022/files/services/tree-icon.service.mjs +0 -49
  302. package/esm2022/files/services/tree-loader.service.mjs +0 -62
  303. package/esm2022/form-fields/addresses-selection-field/sc-addresses-selection-field.component.mjs +0 -155
  304. package/esm2022/form-fields/form-fields.module.mjs +0 -66
  305. package/esm2022/form-fields/index.mjs +0 -4
  306. package/esm2022/form-fields/suggestion-field/sc-suggestion-field.component.mjs +0 -234
  307. package/esm2022/icons/index.mjs +0 -2
  308. package/esm2022/icons/sc-client-ui-icons-name.mjs +0 -99
  309. package/esm2022/loader/index.mjs +0 -2
  310. package/esm2022/loader/sc-i-loader.mjs +0 -2
  311. package/esm2022/masks/index.mjs +0 -8
  312. package/esm2022/masks/sc-account-number-mask.mjs +0 -7
  313. package/esm2022/masks/sc-bic-mask.mjs +0 -7
  314. package/esm2022/masks/sc-correspondent-account-mask.mjs +0 -7
  315. package/esm2022/masks/sc-inn-mask.mjs +0 -13
  316. package/esm2022/masks/sc-kpp-mask.mjs +0 -7
  317. package/esm2022/masks/sc-okpo-mask.mjs +0 -13
  318. package/esm2022/masks/sc-phone-verification-code-mask.mjs +0 -7
  319. package/esm2022/methods/index.mjs +0 -2
  320. package/esm2022/methods/sc-get-current-route.mjs +0 -14
  321. package/esm2022/models/i-sc-image.mjs +0 -2
  322. package/esm2022/models/index.mjs +0 -2
  323. package/esm2022/news/index.mjs +0 -4
  324. package/esm2022/news/news-card/sc-news-card.component.mjs +0 -34
  325. package/esm2022/news/news-card-skeleton/sc-news-card-skeleton.component.mjs +0 -31
  326. package/esm2022/news/sc-news.module.mjs +0 -25
  327. package/esm2022/noindex-wrapper/directives/index.mjs +0 -2
  328. package/esm2022/noindex-wrapper/directives/sc-noindex.directive.mjs +0 -58
  329. package/esm2022/noindex-wrapper/index.mjs +0 -3
  330. package/esm2022/noindex-wrapper/sc-noindex-wrapper.component.mjs +0 -18
  331. package/esm2022/order/directives/index.mjs +0 -3
  332. package/esm2022/order/directives/sc-order-accessor.directive.mjs +0 -28
  333. package/esm2022/order/directives/sc-order-options.mjs +0 -11
  334. package/esm2022/order/draft/sc-draft.component.mjs +0 -115
  335. package/esm2022/order/index.mjs +0 -13
  336. package/esm2022/order/models/i-new-order-form.mjs +0 -2
  337. package/esm2022/order/new-order-items/sc-new-order-items.component.mjs +0 -39
  338. package/esm2022/order/order-form/sc-order-form.component.mjs +0 -553
  339. package/esm2022/order/order-form/sc-order-form.config.mjs +0 -7
  340. package/esm2022/order/order-item/sc-order-item.component.mjs +0 -112
  341. package/esm2022/order/order-items-list/sc-order-items-list.component.mjs +0 -211
  342. package/esm2022/order/order-items-list-by-stock/sc-order-items-list-by-stock.component.mjs +0 -75
  343. package/esm2022/order/order-items-list-with-actions/sc-order-items-list-with-actions.component.mjs +0 -53
  344. package/esm2022/order/sc-order.module.mjs +0 -52
  345. package/esm2022/order/sc-payment-status/sc-payment-status.component.mjs +0 -35
  346. package/esm2022/pages/frequently-asked-questions/sc-faq-query-params.mjs +0 -5
  347. package/esm2022/pages/frequently-asked-questions/sc-faq-question-anchor.mjs +0 -23
  348. package/esm2022/pages/frequently-asked-questions/sc-frequently-asked-questions.component.mjs +0 -167
  349. package/esm2022/pages/frequently-asked-questions/sc-get-faq-group-query-params.mjs +0 -14
  350. package/esm2022/pages/frequently-asked-questions/sc-page-size-options.mjs +0 -8
  351. package/esm2022/pages/frequently-asked-questions-group-selector/sc-frequently-asked-questions-group-selector.component.mjs +0 -88
  352. package/esm2022/pages/frequently-asked-questions-with-groups/sc-frequently-asked-questions-with-groups.component.mjs +0 -123
  353. package/esm2022/pages/index.mjs +0 -11
  354. package/esm2022/pages/news-list/sc-news-list.component.mjs +0 -90
  355. package/esm2022/pages/personal-data-processing-policy/sc-personal-data-processing-policy.component.mjs +0 -46
  356. package/esm2022/pages/privacy-policy/sc-privacy-policy.component.mjs +0 -30
  357. package/esm2022/pages/public-offer/sc-public-offer.component.mjs +0 -50
  358. package/esm2022/pagination/index.mjs +0 -2
  359. package/esm2022/pagination/sc-pagination-links/sc-pagination-links.component.mjs +0 -99
  360. package/esm2022/pipes/index.mjs +0 -3
  361. package/esm2022/pipes/sc-format-date.mjs +0 -33
  362. package/esm2022/pipes/sc-phone-format.mjs +0 -44
  363. package/esm2022/profile/index.mjs +0 -3
  364. package/esm2022/profile/sc-profile-accordions-content/sc-profile-accordions-content.component.mjs +0 -174
  365. package/esm2022/profile/sc-profile.module.mjs +0 -73
  366. package/esm2022/providers/date-value-transformer/index.mjs +0 -4
  367. package/esm2022/providers/date-value-transformer/sc-date-value-transformer-types.mjs +0 -2
  368. package/esm2022/providers/date-value-transformer/sc-date-value-transformer-with-end-time.mjs +0 -26
  369. package/esm2022/providers/date-value-transformer/sc-date-value-transformer-with-start-time.mjs +0 -37
  370. package/esm2022/providers/index.mjs +0 -17
  371. package/esm2022/providers/sc-allow-select-terminated.mjs +0 -8
  372. package/esm2022/providers/sc-banner-duration.mjs +0 -8
  373. package/esm2022/providers/sc-block-incomplete-address.mjs +0 -8
  374. package/esm2022/providers/sc-country-ids.mjs +0 -8
  375. package/esm2022/providers/sc-date-formatter.mjs +0 -15
  376. package/esm2022/providers/sc-date-value-transformer.mjs +0 -12
  377. package/esm2022/providers/sc-debounce-time-default.mjs +0 -9
  378. package/esm2022/providers/sc-dialog-service.providers.mjs +0 -6
  379. package/esm2022/providers/sc-help-notification-close.mjs +0 -9
  380. package/esm2022/providers/sc-help-notification-limit.mjs +0 -8
  381. package/esm2022/providers/sc-hidden-print-elements.token.mjs +0 -10
  382. package/esm2022/providers/sc-max-files-in-form-input.mjs +0 -8
  383. package/esm2022/providers/sc-notify-when-in-stock-required-fields.mjs +0 -8
  384. package/esm2022/providers/sc-page-size-options.mjs +0 -8
  385. package/esm2022/providers/sc-user-providers.mjs +0 -38
  386. package/esm2022/providers/sc-verification-code-timeout.mjs +0 -8
  387. package/esm2022/public-api.mjs +0 -37
  388. package/esm2022/qrcode/index.mjs +0 -3
  389. package/esm2022/qrcode/qrcode-dialog/sc-qrcode-dialog.component.mjs +0 -58
  390. package/esm2022/qrcode/sc-qrcode.module.mjs +0 -25
  391. package/esm2022/samples/index.mjs +0 -5
  392. package/esm2022/samples/interfaces/index.mjs +0 -3
  393. package/esm2022/samples/interfaces/sc-i-preview-sample.mjs +0 -2
  394. package/esm2022/samples/interfaces/sc-preview-mosquito-config.mjs +0 -2
  395. package/esm2022/samples/preview-sample/sc-preview-sample.component.mjs +0 -42
  396. package/esm2022/samples/sc-preview-samples-mosquito/sc-preview-samples-mosquito.component.mjs +0 -63
  397. package/esm2022/samples/sc-sample.module.mjs +0 -59
  398. package/esm2022/services/index.mjs +0 -4
  399. package/esm2022/services/print.service.mjs +0 -49
  400. package/esm2022/services/sc-help-notification.service.mjs +0 -100
  401. package/esm2022/services/sc-scripts.service.mjs +0 -106
  402. package/esm2022/share/index.mjs +0 -6
  403. package/esm2022/share/sc-share-dialog-data.mjs +0 -2
  404. package/esm2022/share/sc-share.service.mjs +0 -40
  405. package/esm2022/share/share-button/sc-share-button.component.mjs +0 -99
  406. package/esm2022/share/share-dialog/sc-share-dialog.component.mjs +0 -139
  407. package/esm2022/share/share-messengers-links/sc-share-messengers-links.component.mjs +0 -84
  408. package/esm2022/smart-captcha/index.mjs +0 -5
  409. package/esm2022/smart-captcha/interfaces/index.mjs +0 -6
  410. package/esm2022/smart-captcha/interfaces/sc-smart-captcha-api.mjs +0 -2
  411. package/esm2022/smart-captcha/interfaces/sc-smart-captcha-event.mjs +0 -2
  412. package/esm2022/smart-captcha/interfaces/sc-smart-captcha-language.mjs +0 -2
  413. package/esm2022/smart-captcha/interfaces/sc-smart-captcha-render-params.mjs +0 -2
  414. package/esm2022/smart-captcha/interfaces/sc-smart-captcha-settings.mjs +0 -2
  415. package/esm2022/smart-captcha/interfaces/sc-smart-captcha-window.mjs +0 -2
  416. package/esm2022/smart-captcha/sc-smart-captcha.component.mjs +0 -167
  417. package/esm2022/smart-captcha/services/index.mjs +0 -2
  418. package/esm2022/smart-captcha/services/sc-smart-captcha-loader.service.mjs +0 -87
  419. package/esm2022/smart-captcha/tokens/index.mjs +0 -3
  420. package/esm2022/smart-captcha/tokens/sc-smart-captcha-load-timeout.token.mjs +0 -8
  421. package/esm2022/smart-captcha/tokens/sc-smart-captcha-settings.token.mjs +0 -6
  422. package/esm2022/snabcentr-client-ui.mjs +0 -5
  423. package/esm2022/user/index.mjs +0 -6
  424. package/esm2022/user/reset-user-password/sc-reset-user-password.component.mjs +0 -74
  425. package/esm2022/user/sc-user.module.mjs +0 -86
  426. package/esm2022/user/update-user-info-dialog/sc-update-user-info-dialog.component.mjs +0 -121
  427. package/esm2022/user/user-managers/sc-user-managers.component.mjs +0 -40
  428. package/esm2022/user/user-phone-approve-dialog/sc-user-phone-approve-dialog.component.mjs +0 -105
  429. package/esm2022/validators/index.mjs +0 -7
  430. package/esm2022/validators/sc-at-least-one-required-validator.mjs +0 -25
  431. package/esm2022/validators/sc-bic-validator.mjs +0 -10
  432. package/esm2022/validators/sc-correspondent-account-validator.mjs +0 -10
  433. package/esm2022/validators/sc-password-confirm-matching-validator.mjs +0 -17
  434. package/esm2022/validators/sc-phone-validator.mjs +0 -14
  435. package/esm2022/validators/step-validator.mjs +0 -18
  436. package/esm2022/verification/index.mjs +0 -3
  437. package/esm2022/verification/sc-verification.module.mjs +0 -86
  438. package/esm2022/verification/verification-phone-check-form/sc-verification-phone-check-form.component.mjs +0 -259
  439. package/feedback/feedback-form/sc-feedback-form.component.d.ts +0 -163
  440. package/feedback/gratitude/sc-gratitude.component.d.ts +0 -20
  441. package/feedback/index.d.ts +0 -3
  442. package/feedback/interfaces/index.d.ts +0 -1
  443. package/feedback/interfaces/sc-feedback-form-config.d.ts +0 -23
  444. package/files/directives/index.d.ts +0 -2
  445. package/files/directives/tree-top.directive.d.ts +0 -33
  446. package/files/directives/tree.directive.d.ts +0 -35
  447. package/files/file-tree-item/file-tree-item.component.d.ts +0 -9
  448. package/files/files-and-documents/files-and-documents.component.d.ts +0 -27
  449. package/files/files-and-documents.module.d.ts +0 -17
  450. package/files/index.d.ts +0 -5
  451. package/files/interfaces/tree-node.d.ts +0 -29
  452. package/files/services/index.d.ts +0 -2
  453. package/files/services/tree-icon.service.d.ts +0 -23
  454. package/files/services/tree-loader.service.d.ts +0 -43
  455. package/form-fields/addresses-selection-field/sc-addresses-selection-field.component.d.ts +0 -80
  456. package/form-fields/form-fields.module.d.ts +0 -18
  457. package/form-fields/index.d.ts +0 -3
  458. package/form-fields/suggestion-field/sc-suggestion-field.component.d.ts +0 -107
  459. package/icons/index.d.ts +0 -1
  460. package/icons/sc-client-ui-icons-name.d.ts +0 -4
  461. package/index.d.ts +0 -5
  462. package/loader/index.d.ts +0 -1
  463. package/loader/sc-i-loader.d.ts +0 -9
  464. package/masks/index.d.ts +0 -7
  465. package/masks/sc-account-number-mask.d.ts +0 -5
  466. package/masks/sc-bic-mask.d.ts +0 -5
  467. package/masks/sc-correspondent-account-mask.d.ts +0 -5
  468. package/masks/sc-inn-mask.d.ts +0 -9
  469. package/masks/sc-kpp-mask.d.ts +0 -5
  470. package/masks/sc-okpo-mask.d.ts +0 -9
  471. package/masks/sc-phone-verification-code-mask.d.ts +0 -5
  472. package/methods/index.d.ts +0 -1
  473. package/methods/sc-get-current-route.d.ts +0 -8
  474. package/models/i-sc-image.d.ts +0 -17
  475. package/models/index.d.ts +0 -1
  476. package/news/index.d.ts +0 -3
  477. package/news/news-card/sc-news-card.component.d.ts +0 -22
  478. package/news/news-card-skeleton/sc-news-card-skeleton.component.d.ts +0 -16
  479. package/news/sc-news.module.d.ts +0 -15
  480. package/noindex-wrapper/directives/index.d.ts +0 -1
  481. package/noindex-wrapper/directives/sc-noindex.directive.d.ts +0 -29
  482. package/noindex-wrapper/index.d.ts +0 -2
  483. package/noindex-wrapper/sc-noindex-wrapper.component.d.ts +0 -9
  484. package/order/directives/index.d.ts +0 -2
  485. package/order/directives/sc-order-accessor.directive.d.ts +0 -13
  486. package/order/directives/sc-order-options.d.ts +0 -14
  487. package/order/draft/sc-draft.component.d.ts +0 -60
  488. package/order/index.d.ts +0 -12
  489. package/order/models/i-new-order-form.d.ts +0 -39
  490. package/order/new-order-items/sc-new-order-items.component.d.ts +0 -29
  491. package/order/order-form/sc-order-form.component.d.ts +0 -274
  492. package/order/order-form/sc-order-form.config.d.ts +0 -20
  493. package/order/order-item/sc-order-item.component.d.ts +0 -43
  494. package/order/order-items-list/sc-order-items-list.component.d.ts +0 -112
  495. package/order/order-items-list-by-stock/sc-order-items-list-by-stock.component.d.ts +0 -55
  496. package/order/order-items-list-with-actions/sc-order-items-list-with-actions.component.d.ts +0 -37
  497. package/order/sc-order.module.d.ts +0 -18
  498. package/order/sc-payment-status/sc-payment-status.component.d.ts +0 -25
  499. package/pages/frequently-asked-questions/sc-faq-query-params.d.ts +0 -4
  500. package/pages/frequently-asked-questions/sc-faq-question-anchor.d.ts +0 -16
  501. package/pages/frequently-asked-questions/sc-frequently-asked-questions.component.d.ts +0 -84
  502. package/pages/frequently-asked-questions/sc-get-faq-group-query-params.d.ts +0 -10
  503. package/pages/frequently-asked-questions/sc-page-size-options.d.ts +0 -5
  504. package/pages/frequently-asked-questions-group-selector/sc-frequently-asked-questions-group-selector.component.d.ts +0 -47
  505. package/pages/frequently-asked-questions-with-groups/sc-frequently-asked-questions-with-groups.component.d.ts +0 -89
  506. package/pages/index.d.ts +0 -10
  507. package/pages/news-list/sc-news-list.component.d.ts +0 -57
  508. package/pages/personal-data-processing-policy/sc-personal-data-processing-policy.component.d.ts +0 -17
  509. package/pages/privacy-policy/sc-privacy-policy.component.d.ts +0 -17
  510. package/pages/public-offer/sc-public-offer.component.d.ts +0 -22
  511. package/pagination/index.d.ts +0 -1
  512. package/pagination/sc-pagination-links/sc-pagination-links.component.d.ts +0 -60
  513. package/pipes/index.d.ts +0 -2
  514. package/pipes/sc-format-date.d.ts +0 -20
  515. package/pipes/sc-phone-format.d.ts +0 -21
  516. package/profile/index.d.ts +0 -2
  517. package/profile/sc-profile-accordions-content/sc-profile-accordions-content.component.d.ts +0 -126
  518. package/profile/sc-profile.module.d.ts +0 -23
  519. package/providers/date-value-transformer/index.d.ts +0 -3
  520. package/providers/date-value-transformer/sc-date-value-transformer-types.d.ts +0 -9
  521. package/providers/date-value-transformer/sc-date-value-transformer-with-end-time.d.ts +0 -16
  522. package/providers/date-value-transformer/sc-date-value-transformer-with-start-time.d.ts +0 -22
  523. package/providers/index.d.ts +0 -16
  524. package/providers/sc-allow-select-terminated.d.ts +0 -5
  525. package/providers/sc-banner-duration.d.ts +0 -5
  526. package/providers/sc-block-incomplete-address.d.ts +0 -5
  527. package/providers/sc-country-ids.d.ts +0 -5
  528. package/providers/sc-date-formatter.d.ts +0 -6
  529. package/providers/sc-date-value-transformer.d.ts +0 -5
  530. package/providers/sc-debounce-time-default.d.ts +0 -5
  531. package/providers/sc-dialog-service.providers.d.ts +0 -45
  532. package/providers/sc-help-notification-close.d.ts +0 -6
  533. package/providers/sc-help-notification-limit.d.ts +0 -5
  534. package/providers/sc-hidden-print-elements.token.d.ts +0 -6
  535. package/providers/sc-max-files-in-form-input.d.ts +0 -5
  536. package/providers/sc-notify-when-in-stock-required-fields.d.ts +0 -5
  537. package/providers/sc-page-size-options.d.ts +0 -5
  538. package/providers/sc-user-providers.d.ts +0 -21
  539. package/providers/sc-verification-code-timeout.d.ts +0 -5
  540. package/public-api.d.ts +0 -36
  541. package/qrcode/index.d.ts +0 -2
  542. package/qrcode/qrcode-dialog/sc-qrcode-dialog.component.d.ts +0 -37
  543. package/qrcode/sc-qrcode.module.d.ts +0 -14
  544. package/samples/index.d.ts +0 -4
  545. package/samples/interfaces/index.d.ts +0 -2
  546. package/samples/interfaces/sc-i-preview-sample.d.ts +0 -56
  547. package/samples/interfaces/sc-preview-mosquito-config.d.ts +0 -62
  548. package/samples/preview-sample/sc-preview-sample.component.d.ts +0 -30
  549. package/samples/sc-preview-samples-mosquito/sc-preview-samples-mosquito.component.d.ts +0 -50
  550. package/samples/sc-sample.module.d.ts +0 -18
  551. package/services/index.d.ts +0 -3
  552. package/services/print.service.d.ts +0 -31
  553. package/services/sc-help-notification.service.d.ts +0 -70
  554. package/services/sc-scripts.service.d.ts +0 -51
  555. package/share/index.d.ts +0 -5
  556. package/share/sc-share-dialog-data.d.ts +0 -13
  557. package/share/sc-share.service.d.ts +0 -19
  558. package/share/share-button/sc-share-button.component.d.ts +0 -78
  559. package/share/share-dialog/sc-share-dialog.component.d.ts +0 -87
  560. package/share/share-messengers-links/sc-share-messengers-links.component.d.ts +0 -49
  561. package/smart-captcha/index.d.ts +0 -4
  562. package/smart-captcha/interfaces/index.d.ts +0 -5
  563. package/smart-captcha/interfaces/sc-smart-captcha-api.d.ts +0 -36
  564. package/smart-captcha/interfaces/sc-smart-captcha-event.d.ts +0 -4
  565. package/smart-captcha/interfaces/sc-smart-captcha-language.d.ts +0 -4
  566. package/smart-captcha/interfaces/sc-smart-captcha-render-params.d.ts +0 -16
  567. package/smart-captcha/interfaces/sc-smart-captcha-settings.d.ts +0 -16
  568. package/smart-captcha/interfaces/sc-smart-captcha-window.d.ts +0 -14
  569. package/smart-captcha/sc-smart-captcha.component.d.ts +0 -92
  570. package/smart-captcha/services/index.d.ts +0 -1
  571. package/smart-captcha/services/sc-smart-captcha-loader.service.d.ts +0 -50
  572. package/smart-captcha/tokens/index.d.ts +0 -2
  573. package/smart-captcha/tokens/sc-smart-captcha-load-timeout.token.d.ts +0 -5
  574. package/smart-captcha/tokens/sc-smart-captcha-settings.token.d.ts +0 -6
  575. package/user/index.d.ts +0 -5
  576. package/user/reset-user-password/sc-reset-user-password.component.d.ts +0 -46
  577. package/user/sc-user.module.d.ts +0 -24
  578. package/user/update-user-info-dialog/sc-update-user-info-dialog.component.d.ts +0 -63
  579. package/user/user-managers/sc-user-managers.component.d.ts +0 -23
  580. package/user/user-phone-approve-dialog/sc-user-phone-approve-dialog.component.d.ts +0 -53
  581. package/validators/index.d.ts +0 -6
  582. package/validators/sc-at-least-one-required-validator.d.ts +0 -10
  583. package/validators/sc-bic-validator.d.ts +0 -8
  584. package/validators/sc-correspondent-account-validator.d.ts +0 -8
  585. package/validators/sc-password-confirm-matching-validator.d.ts +0 -8
  586. package/validators/sc-phone-validator.d.ts +0 -5
  587. package/validators/step-validator.d.ts +0 -7
  588. package/verification/index.d.ts +0 -2
  589. package/verification/sc-verification.module.d.ts +0 -21
  590. package/verification/verification-phone-check-form/sc-verification-phone-check-form.component.d.ts +0 -145
@@ -1,190 +0,0 @@
1
- /* eslint-disable @typescript-eslint/dot-notation */
2
- import { CommonModule } from '@angular/common';
3
- import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, HostListener, Input, Output, ViewChild } from '@angular/core';
4
- import { FormsModule, ReactiveFormsModule } from '@angular/forms';
5
- import { RouterModule } from '@angular/router';
6
- import { ScNumberHelper } from '@snabcentr/client-core';
7
- import { TuiButton, TuiHint, TuiIcon, TuiLoader } from '@taiga-ui/core';
8
- import { TuiFieldErrorPipe } from '@taiga-ui/kit';
9
- import { AbstractTuiNullableControl, TuiInputNumberComponent, TuiInputNumberModule, TuiIslandDirective, TuiTextfieldControllerModule } from '@taiga-ui/legacy';
10
- import { stepValidator } from '../../validators';
11
- import * as i0 from "@angular/core";
12
- import * as i1 from "@angular/common";
13
- import * as i2 from "@taiga-ui/legacy";
14
- import * as i3 from "@angular/forms";
15
- import * as i4 from "@taiga-ui/core";
16
- /**
17
- * Компонент поля ввода количества.
18
- */
19
- export class ScInputQuantityComponent extends AbstractTuiNullableControl {
20
- constructor() {
21
- super(...arguments);
22
- /**
23
- * Шаг увеличения количества. Отвечает за проверку кратности ввода.
24
- */
25
- this.step = 1;
26
- /**
27
- * Признак, что необходимо отобразить {@link TuiLoaderComponent} над компонентом.
28
- */
29
- this.showLoader = false;
30
- /**
31
- * Признак, что необходимо отобразить кнопку очистки поля ввода.
32
- */
33
- this.showCross = true;
34
- /**
35
- * Признак, что необходимо игнорировать валидацию кратности и минимального количества.
36
- */
37
- this.ignoreStepValidators = false;
38
- /**
39
- * Формат внешнего вида компонента.
40
- */
41
- this.appearance = 'primary';
42
- /**
43
- * Признак, что компонент деактивирован.
44
- */
45
- this.isDisabled = false;
46
- /**
47
- * Размер компонента.
48
- */
49
- this.size = 'm';
50
- /**
51
- * Событие нажатия на кнопку "Очистить".
52
- */
53
- this.clickClearEvent = new EventEmitter();
54
- }
55
- /**
56
- * Возвращает элемент, который может быть сфокусирован.
57
- */
58
- get nativeFocusableElement() {
59
- return this.numberInput?.nativeFocusableElement;
60
- }
61
- /** @inheritDoc */
62
- get focused() {
63
- return !!this.numberInput?.focused;
64
- }
65
- /**
66
- * Элемент формы ввода количества.
67
- */
68
- get formControl() {
69
- return this.control;
70
- }
71
- /** @inheritDoc */
72
- ngOnInit() {
73
- if (this.control) {
74
- this.control.setValidators(stepValidator(this.ignoreStepValidators ? 1 : this.step));
75
- }
76
- }
77
- /**
78
- * Обработчик события нажатия стрелок клавиатуры.
79
- *
80
- * @param step Шаг изменения количества.
81
- */
82
- onArrow(step) {
83
- if (!step) {
84
- return;
85
- }
86
- if (step > 0) {
87
- this.incident();
88
- }
89
- else {
90
- this.decrement();
91
- }
92
- }
93
- /**
94
- * Увеличивает значение в поле ввода на 1 шаг. Если число в поле ввода не кратно шагу, то увеличит до ближайшего кратного значения.
95
- *
96
- * @param checkUpdateOn Признак, что нужно проверить `updateOn` свойство `formControl`.
97
- */
98
- incident(checkUpdateOn = false) {
99
- if (!this.numberInput) {
100
- return;
101
- }
102
- const remainder = ScNumberHelper.remainder(this.numberInput.value ?? 0, this.step);
103
- const step = ScNumberHelper.addStep(this.step, -remainder);
104
- this.numberInput.value = Math.max(ScNumberHelper.addStep(this.numberInput.value ?? 0, step), this.ignoreStepValidators ? 1 : Math.max(step, 0));
105
- this.numberInput['nativeValue'] = this.numberInput['formattedValue'];
106
- // eslint-disable-next-line no-underscore-dangle, @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access
107
- if (checkUpdateOn && this.formControl?._updateOn === 'blur') {
108
- this.control?.setValue(this.numberInput.value);
109
- }
110
- }
111
- /**
112
- * Уменьшает значение в поле ввода на 1 шаг. Если число в поле ввода не кратно шагу, то уменьшит до ближайшего кратного значения.
113
- *
114
- * @param checkUpdateOn Признак, что нужно проверить `updateOn` свойство `formControl`.
115
- */
116
- decrement(checkUpdateOn = false) {
117
- if (!this.numberInput) {
118
- return;
119
- }
120
- const remainder = ScNumberHelper.remainder(this.numberInput.value ?? 0, this.step);
121
- const step = -remainder || -this.step;
122
- this.numberInput.value = Math.max(ScNumberHelper.addStep(this.numberInput.value ?? 0, step), this.ignoreStepValidators ? 1 : Math.max(step, 0));
123
- this.numberInput['nativeValue'] = this.numberInput['formattedValue'];
124
- // eslint-disable-next-line no-underscore-dangle, @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access
125
- if (checkUpdateOn && this.formControl?._updateOn === 'blur') {
126
- this.control?.setValue(this.numberInput.value);
127
- }
128
- }
129
- /**
130
- * Очищает поля ввода.
131
- */
132
- clear() {
133
- this.control?.patchValue(null);
134
- this.clickClearEvent.emit();
135
- }
136
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScInputQuantityComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
137
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ScInputQuantityComponent, isStandalone: true, selector: "sc-input-quantity", inputs: { step: "step", showLoader: "showLoader", showCross: "showCross", ignoreStepValidators: "ignoreStepValidators", appearance: "appearance", isDisabled: "isDisabled", size: "size" }, outputs: { clickClearEvent: "clickClearEvent" }, host: { listeners: { "keydown.arrowDown": "onArrow(-step)", "keydown.arrowUp": "onArrow(step)" }, properties: { "attr.data-appearance": "this.appearance", "attr.data-disabled": "this.isDisabled", "attr.data-size": "this.size" } }, viewQueries: [{ propertyName: "numberInput", first: true, predicate: TuiInputNumberComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<tui-loader\n *ngIf=\"formControl\"\n class=\"w-full\"\n [overlay]=\"true\"\n [showLoader]=\"showLoader\"\n [size]=\"size\"\n>\n <div class=\"flex items-center gap-1 text-center\">\n <div class=\"field-with-button flex grow rounded-xl\">\n <button\n tuiIconButton\n [appearance]=\"appearance\"\n [size]=\"size\"\n [disabled]=\"!numberInput['canDecrement']\"\n (click.prevent)=\"decrement(true)\"\n >\n <tui-icon icon=\"@tui.minus\"></tui-icon>\n </button>\n <tui-input-number\n #numberInput\n [formControl]=\"formControl\"\n [tuiHint]=\"([] | tuiFieldError | async)?.message\"\n [tuiTextfieldLabelOutside]=\"true\"\n [min]=\"ignoreStepValidators ? 1 : step\"\n [tuiTextfieldSize]=\"size\"\n [required]=\"true\"\n [style.text-align]=\"'center'\"\n [style.font-weight]=\"700\"\n (focusin)=\"$any($event.target).select()\"\n oncontextmenu=\"return false;\"\n (keydown.arrowDown)=\"(0)\"\n (keydown.arrowUp)=\"(0)\"\n class=\"grow\"\n >\n </tui-input-number>\n <button\n tuiIconButton\n [appearance]=\"appearance\"\n [size]=\"size\"\n [disabled]=\"!numberInput['canIncrement']\"\n (click.prevent)=\"incident(true)\"\n >\n <tui-icon icon=\"@tui.plus\"></tui-icon>\n </button>\n </div>\n <button\n *ngIf=\"showCross\"\n tuiIconButton\n appearance=\"secondary\"\n [size]=\"size\"\n [disabled]=\"!numberInput['canIncrement']\"\n (click.prevent)=\"clear()\"\n >\n <tui-icon icon=\"@tui.x\"></tui-icon>\n </button>\n </div>\n</tui-loader>\n", styles: [":host [data-size=l]{--tui-height-l: var(--tui-height-m);--tui-font-text-m: bold .875rem/1.25rem var(--tui-font-text);--tui-padding-l: 0}:host [data-size=m]{--tui-height-m: var(--tui-height-s);--tui-font-text-s: bold .75rem/1rem var(--tui-font-text);--tui-padding-m: 0}:host [data-size=m] tui-svg{font-size:12px!important}:host [data-size=s]{--tui-height-s: var(--tui-height-xs);--tui-font-text-s: bold .75rem/1rem var(--tui-font-text);--tui-padding-s: 0}:host [data-size=s] tui-svg{font-size:12px!important}:host[data-disabled=true]{pointer-events:none;opacity:var(--tui-disabled-opacity)}:host[data-appearance=secondary] .field-with-button{background-color:var(--tui-background-base);box-shadow:inset 0 0 0 .0625rem var(--tui-background-neutral-1-hover)}:host[data-appearance=primary] .field-with-button{background-color:var(--tui-status-warning-pale)}:host .field-with-button:has(._invalid){background-color:var(--tui-status-negative-pale)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: TuiIcon, selector: "tui-icon", inputs: ["icon", "background"] }, { kind: "ngmodule", type: TuiInputNumberModule }, { kind: "component", type: i2.TuiInputNumberComponent, selector: "tui-input-number", inputs: ["min", "max", "step"] }, { kind: "directive", type: i2.TuiInputNumberDirective, selector: "tui-input-number" }, { kind: "ngmodule", type: TuiTextfieldControllerModule }, { kind: "directive", type: i2.TuiTextfieldLabelOutsideDirective, selector: "[tuiTextfieldLabelOutside]", inputs: ["tuiTextfieldLabelOutside"] }, { kind: "directive", type: i2.TuiTextfieldSizeDirective, selector: "[tuiTextfieldSize]", inputs: ["tuiTextfieldSize"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.TuiHintDirective, selector: "[tuiHint]:not(ng-container):not(ng-template)", inputs: ["tuiHintContext", "tuiHintAppearance", "tuiHint"], outputs: ["tuiHintVisible"] }, { kind: "pipe", type: TuiFieldErrorPipe, name: "tuiFieldError" }, { kind: "component", type: TuiLoader, selector: "tui-loader", inputs: ["size", "inheritColor", "overlay", "textContent", "showLoader"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
138
- }
139
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScInputQuantityComponent, decorators: [{
140
- type: Component,
141
- args: [{ standalone: true, selector: 'sc-input-quantity', imports: [
142
- CommonModule,
143
- RouterModule,
144
- TuiButton,
145
- TuiIcon,
146
- TuiIslandDirective,
147
- TuiInputNumberModule,
148
- TuiTextfieldControllerModule,
149
- FormsModule,
150
- ReactiveFormsModule,
151
- ...TuiHint,
152
- TuiFieldErrorPipe,
153
- TuiLoader,
154
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<tui-loader\n *ngIf=\"formControl\"\n class=\"w-full\"\n [overlay]=\"true\"\n [showLoader]=\"showLoader\"\n [size]=\"size\"\n>\n <div class=\"flex items-center gap-1 text-center\">\n <div class=\"field-with-button flex grow rounded-xl\">\n <button\n tuiIconButton\n [appearance]=\"appearance\"\n [size]=\"size\"\n [disabled]=\"!numberInput['canDecrement']\"\n (click.prevent)=\"decrement(true)\"\n >\n <tui-icon icon=\"@tui.minus\"></tui-icon>\n </button>\n <tui-input-number\n #numberInput\n [formControl]=\"formControl\"\n [tuiHint]=\"([] | tuiFieldError | async)?.message\"\n [tuiTextfieldLabelOutside]=\"true\"\n [min]=\"ignoreStepValidators ? 1 : step\"\n [tuiTextfieldSize]=\"size\"\n [required]=\"true\"\n [style.text-align]=\"'center'\"\n [style.font-weight]=\"700\"\n (focusin)=\"$any($event.target).select()\"\n oncontextmenu=\"return false;\"\n (keydown.arrowDown)=\"(0)\"\n (keydown.arrowUp)=\"(0)\"\n class=\"grow\"\n >\n </tui-input-number>\n <button\n tuiIconButton\n [appearance]=\"appearance\"\n [size]=\"size\"\n [disabled]=\"!numberInput['canIncrement']\"\n (click.prevent)=\"incident(true)\"\n >\n <tui-icon icon=\"@tui.plus\"></tui-icon>\n </button>\n </div>\n <button\n *ngIf=\"showCross\"\n tuiIconButton\n appearance=\"secondary\"\n [size]=\"size\"\n [disabled]=\"!numberInput['canIncrement']\"\n (click.prevent)=\"clear()\"\n >\n <tui-icon icon=\"@tui.x\"></tui-icon>\n </button>\n </div>\n</tui-loader>\n", styles: [":host [data-size=l]{--tui-height-l: var(--tui-height-m);--tui-font-text-m: bold .875rem/1.25rem var(--tui-font-text);--tui-padding-l: 0}:host [data-size=m]{--tui-height-m: var(--tui-height-s);--tui-font-text-s: bold .75rem/1rem var(--tui-font-text);--tui-padding-m: 0}:host [data-size=m] tui-svg{font-size:12px!important}:host [data-size=s]{--tui-height-s: var(--tui-height-xs);--tui-font-text-s: bold .75rem/1rem var(--tui-font-text);--tui-padding-s: 0}:host [data-size=s] tui-svg{font-size:12px!important}:host[data-disabled=true]{pointer-events:none;opacity:var(--tui-disabled-opacity)}:host[data-appearance=secondary] .field-with-button{background-color:var(--tui-background-base);box-shadow:inset 0 0 0 .0625rem var(--tui-background-neutral-1-hover)}:host[data-appearance=primary] .field-with-button{background-color:var(--tui-status-warning-pale)}:host .field-with-button:has(._invalid){background-color:var(--tui-status-negative-pale)}\n"] }]
155
- }], propDecorators: { numberInput: [{
156
- type: ViewChild,
157
- args: [TuiInputNumberComponent]
158
- }], step: [{
159
- type: Input
160
- }], showLoader: [{
161
- type: Input
162
- }], showCross: [{
163
- type: Input
164
- }], ignoreStepValidators: [{
165
- type: Input
166
- }], appearance: [{
167
- type: Input
168
- }, {
169
- type: HostBinding,
170
- args: ['attr.data-appearance']
171
- }], isDisabled: [{
172
- type: Input
173
- }, {
174
- type: HostBinding,
175
- args: ['attr.data-disabled']
176
- }], size: [{
177
- type: Input
178
- }, {
179
- type: HostBinding,
180
- args: ['attr.data-size']
181
- }], clickClearEvent: [{
182
- type: Output
183
- }], onArrow: [{
184
- type: HostListener,
185
- args: ['keydown.arrowDown', ['-step']]
186
- }, {
187
- type: HostListener,
188
- args: ['keydown.arrowUp', ['step']]
189
- }] } });
190
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtaW5wdXQtcXVhbnRpdHkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NhdGFsb2cvaW5wdXQtcXVhbnRpdHkvc2MtaW5wdXQtcXVhbnRpdHkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NhdGFsb2cvaW5wdXQtcXVhbnRpdHkvc2MtaW5wdXQtcXVhbnRpdHkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0RBQW9EO0FBRXBELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlJLE9BQU8sRUFBZSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQXNCLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSx1QkFBdUIsRUFBRSxvQkFBb0IsRUFBRSxrQkFBa0IsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRS9KLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7O0FBRWpEOztHQUVHO0FBc0JILE1BQU0sT0FBTyx3QkFBeUIsU0FBUSwwQkFBa0M7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RUF5REEseStCRG5DUSxZQUFZLHVMQUNaLFlBQVksK0JBQ1osU0FBUyxvSUFDVCxPQUFPLG9GQUVQLG9CQUFvQiw0T0FDcEIsNEJBQTRCLHdTQUM1QixXQUFXLG1XQUNYLG1CQUFtQixrWkFFbkIsaUJBQWlCLHNEQUNqQixTQUFTOzs0RkFJSix3QkFBd0I7a0JBckJwQyxTQUFTO2lDQUNNLElBQUksWUFDTixtQkFBbUIsV0FHcEI7d0JBQ0wsWUFBWTt3QkFDWixZQUFZO3dCQUNaLFNBQVM7d0JBQ1QsT0FBTzt3QkFDUCxrQkFBa0I7d0JBQ2xCLG9CQUFvQjt3QkFDcEIsNEJBQTRCO3dCQUM1QixXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsR0FBRyxPQUFPO3dCQUNWLGlCQUFpQjt3QkFDakIsU0FBUztxQkFDWixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTTs4QkFPOUIsV0FBVztzQkFEM0IsU0FBUzt1QkFBQyx1QkFBdUI7Z0JBTzNCLElBQUk7c0JBRFYsS0FBSztnQkFPQyxVQUFVO3NCQURoQixLQUFLO2dCQU9DLFNBQVM7c0JBRGYsS0FBSztnQkFPQyxvQkFBb0I7c0JBRDFCLEtBQUs7Z0JBUUMsVUFBVTtzQkFGaEIsS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyxzQkFBc0I7Z0JBUTVCLFVBQVU7c0JBRmhCLEtBQUs7O3NCQUNMLFdBQVc7dUJBQUMsb0JBQW9CO2dCQVExQixJQUFJO3NCQUZWLEtBQUs7O3NCQUNMLFdBQVc7dUJBQUMsZ0JBQWdCO2dCQU90QixlQUFlO3NCQURyQixNQUFNO2dCQW9DQSxPQUFPO3NCQUZiLFlBQVk7dUJBQUMsbUJBQW1CLEVBQUUsQ0FBQyxPQUFPLENBQUM7O3NCQUMzQyxZQUFZO3VCQUFDLGlCQUFpQixFQUFFLENBQUMsTUFBTSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L2RvdC1ub3RhdGlvbiAqL1xuXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFNjTnVtYmVySGVscGVyIH0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyBUdWlCdXR0b24sIFR1aUhpbnQsIFR1aUljb24sIFR1aUxvYWRlciwgVHVpU2l6ZUwsIFR1aVNpemVTIH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHsgVHVpRmllbGRFcnJvclBpcGUgfSBmcm9tICdAdGFpZ2EtdWkva2l0JztcbmltcG9ydCB7IEFic3RyYWN0VHVpTnVsbGFibGVDb250cm9sLCBUdWlJbnB1dE51bWJlckNvbXBvbmVudCwgVHVpSW5wdXROdW1iZXJNb2R1bGUsIFR1aUlzbGFuZERpcmVjdGl2ZSwgVHVpVGV4dGZpZWxkQ29udHJvbGxlck1vZHVsZSB9IGZyb20gJ0B0YWlnYS11aS9sZWdhY3knO1xuXG5pbXBvcnQgeyBzdGVwVmFsaWRhdG9yIH0gZnJvbSAnLi4vLi4vdmFsaWRhdG9ycyc7XG5cbi8qKlxuICog0JrQvtC80L/QvtC90LXQvdGCINC/0L7Qu9GPINCy0LLQvtC00LAg0LrQvtC70LjRh9C10YHRgtCy0LAuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdzYy1pbnB1dC1xdWFudGl0eScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NjLWlucHV0LXF1YW50aXR5LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vc2MtaW5wdXQtcXVhbnRpdHkuY29tcG9uZW50LnNjc3MnLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBSb3V0ZXJNb2R1bGUsXG4gICAgICAgIFR1aUJ1dHRvbixcbiAgICAgICAgVHVpSWNvbixcbiAgICAgICAgVHVpSXNsYW5kRGlyZWN0aXZlLFxuICAgICAgICBUdWlJbnB1dE51bWJlck1vZHVsZSxcbiAgICAgICAgVHVpVGV4dGZpZWxkQ29udHJvbGxlck1vZHVsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIC4uLlR1aUhpbnQsXG4gICAgICAgIFR1aUZpZWxkRXJyb3JQaXBlLFxuICAgICAgICBUdWlMb2FkZXIsXG4gICAgXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2NJbnB1dFF1YW50aXR5Q29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RUdWlOdWxsYWJsZUNvbnRyb2w8bnVtYmVyPiBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgLyoqXG4gICAgICog0JrQvtC80L/QvtC90LXQvdGCINC/0L7Qu9GPINCy0LLQvtC00LAuXG4gICAgICovXG4gICAgQFZpZXdDaGlsZChUdWlJbnB1dE51bWJlckNvbXBvbmVudClcbiAgICBwcml2YXRlIHJlYWRvbmx5IG51bWJlcklucHV0PzogVHVpSW5wdXROdW1iZXJDb21wb25lbnQ7XG5cbiAgICAvKipcbiAgICAgKiDQqNCw0LMg0YPQstC10LvQuNGH0LXQvdC40Y8g0LrQvtC70LjRh9C10YHRgtCy0LAuINCe0YLQstC10YfQsNC10YIg0LfQsCDQv9GA0L7QstC10YDQutGDINC60YDQsNGC0L3QvtGB0YLQuCDQstCy0L7QtNCwLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHN0ZXA6IG51bWJlciA9IDE7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiwg0YfRgtC+INC90LXQvtCx0YXQvtC00LjQvNC+INC+0YLQvtCx0YDQsNC30LjRgtGMIHtAbGluayBUdWlMb2FkZXJDb21wb25lbnR9INC90LDQtCDQutC+0LzQv9C+0L3QtdC90YLQvtC8LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNob3dMb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6LCDRh9GC0L4g0L3QtdC+0LHRhdC+0LTQuNC80L4g0L7RgtC+0LHRgNCw0LfQuNGC0Ywg0LrQvdC+0L/QutGDINC+0YfQuNGB0YLQutC4INC/0L7Qu9GPINCy0LLQvtC00LAuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2hvd0Nyb3NzOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6LCDRh9GC0L4g0L3QtdC+0LHRhdC+0LTQuNC80L4g0LjQs9C90L7RgNC40YDQvtCy0LDRgtGMINCy0LDQu9C40LTQsNGG0LjRjiDQutGA0LDRgtC90L7RgdGC0Lgg0Lgg0LzQuNC90LjQvNCw0LvRjNC90L7Qs9C+INC60L7Qu9C40YfQtdGB0YLQstCwLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGlnbm9yZVN0ZXBWYWxpZGF0b3JzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDQpNC+0YDQvNCw0YIg0LLQvdC10YjQvdC10LPQviDQstC40LTQsCDQutC+0LzQv9C+0L3QtdC90YLQsC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLWFwcGVhcmFuY2UnKVxuICAgIHB1YmxpYyBhcHBlYXJhbmNlOiAncHJpbWFyeScgfCAnc2Vjb25kYXJ5JyA9ICdwcmltYXJ5JztcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6LCDRh9GC0L4g0LrQvtC80L/QvtC90LXQvdGCINC00LXQsNC60YLQuNCy0LjRgNC+0LLQsNC9LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtZGlzYWJsZWQnKVxuICAgIHB1YmxpYyBpc0Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDQoNCw0LfQvNC10YAg0LrQvtC80L/QvtC90LXQvdGC0LAuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS1zaXplJylcbiAgICBwdWJsaWMgc2l6ZTogVHVpU2l6ZUwgfCBUdWlTaXplUyA9ICdtJztcblxuICAgIC8qKlxuICAgICAqINCh0L7QsdGL0YLQuNC1INC90LDQttCw0YLQuNGPINC90LAg0LrQvdC+0L/QutGDIFwi0J7Rh9C40YHRgtC40YLRjFwiLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjbGlja0NsZWFyRXZlbnQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINGN0LvQtdC80LXQvdGCLCDQutC+0YLQvtGA0YvQuSDQvNC+0LbQtdGCINCx0YvRgtGMINGB0YTQvtC60YPRgdC40YDQvtCy0LDQvS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IG5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQoKTogSFRNTElucHV0RWxlbWVudCB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5udW1iZXJJbnB1dD8ubmF0aXZlRm9jdXNhYmxlRWxlbWVudDtcbiAgICB9XG5cbiAgICAvKiogQGluaGVyaXREb2MgKi9cbiAgICBwdWJsaWMgZ2V0IGZvY3VzZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMubnVtYmVySW5wdXQ/LmZvY3VzZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0K3Qu9C10LzQtdC90YIg0YTQvtGA0LzRiyDQstCy0L7QtNCwINC60L7Qu9C40YfQtdGB0YLQstCwLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgZm9ybUNvbnRyb2woKTogRm9ybUNvbnRyb2wgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udHJvbCBhcyBGb3JtQ29udHJvbCB8IG51bGw7XG4gICAgfVxuXG4gICAgLyoqIEBpbmhlcml0RG9jICovXG4gICAgcHVibGljIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jb250cm9sKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRyb2wuc2V0VmFsaWRhdG9ycyhzdGVwVmFsaWRhdG9yKHRoaXMuaWdub3JlU3RlcFZhbGlkYXRvcnMgPyAxIDogdGhpcy5zdGVwKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQntCx0YDQsNCx0L7RgtGH0LjQuiDRgdC+0LHRi9GC0LjRjyDQvdCw0LbQsNGC0LjRjyDRgdGC0YDQtdC70L7QuiDQutC70LDQstC40LDRgtGD0YDRiy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzdGVwINCo0LDQsyDQuNC30LzQtdC90LXQvdC40Y8g0LrQvtC70LjRh9C10YHRgtCy0LAuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5hcnJvd0Rvd24nLCBbJy1zdGVwJ10pXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5hcnJvd1VwJywgWydzdGVwJ10pXG4gICAgcHVibGljIG9uQXJyb3coc3RlcDogbnVtYmVyIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICBpZiAoIXN0ZXApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdGVwID4gMCkge1xuICAgICAgICAgICAgdGhpcy5pbmNpZGVudCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kZWNyZW1lbnQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCj0LLQtdC70LjRh9C40LLQsNC10YIg0LfQvdCw0YfQtdC90LjQtSDQsiDQv9C+0LvQtSDQstCy0L7QtNCwINC90LAgMSDRiNCw0LMuINCV0YHQu9C4INGH0LjRgdC70L4g0LIg0L/QvtC70LUg0LLQstC+0LTQsCDQvdC1INC60YDQsNGC0L3QviDRiNCw0LPRgywg0YLQviDRg9Cy0LXQu9C40YfQuNGCINC00L4g0LHQu9C40LbQsNC50YjQtdCz0L4g0LrRgNCw0YLQvdC+0LPQviDQt9C90LDRh9C10L3QuNGPLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNoZWNrVXBkYXRlT24g0J/RgNC40LfQvdCw0LosINGH0YLQviDQvdGD0LbQvdC+INC/0YDQvtCy0LXRgNC40YLRjCBgdXBkYXRlT25gINGB0LLQvtC50YHRgtCy0L4gYGZvcm1Db250cm9sYC5cbiAgICAgKi9cbiAgICBwdWJsaWMgaW5jaWRlbnQoY2hlY2tVcGRhdGVPbiA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5udW1iZXJJbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVtYWluZGVyID0gU2NOdW1iZXJIZWxwZXIucmVtYWluZGVyKHRoaXMubnVtYmVySW5wdXQudmFsdWUgPz8gMCwgdGhpcy5zdGVwKTtcbiAgICAgICAgY29uc3Qgc3RlcCA9IFNjTnVtYmVySGVscGVyLmFkZFN0ZXAodGhpcy5zdGVwLCAtcmVtYWluZGVyKTtcbiAgICAgICAgdGhpcy5udW1iZXJJbnB1dC52YWx1ZSA9IE1hdGgubWF4KFNjTnVtYmVySGVscGVyLmFkZFN0ZXAodGhpcy5udW1iZXJJbnB1dC52YWx1ZSA/PyAwLCBzdGVwKSwgdGhpcy5pZ25vcmVTdGVwVmFsaWRhdG9ycyA/IDEgOiBNYXRoLm1heChzdGVwLCAwKSk7XG4gICAgICAgIHRoaXMubnVtYmVySW5wdXRbJ25hdGl2ZVZhbHVlJ10gPSB0aGlzLm51bWJlcklucHV0Wydmb3JtYXR0ZWRWYWx1ZSddO1xuXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlcnNjb3JlLWRhbmdsZSwgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSwgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1tZW1iZXItYWNjZXNzXG4gICAgICAgIGlmIChjaGVja1VwZGF0ZU9uICYmICh0aGlzLmZvcm1Db250cm9sIGFzIGFueSk/Ll91cGRhdGVPbiA9PT0gJ2JsdXInKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRyb2w/LnNldFZhbHVlKHRoaXMubnVtYmVySW5wdXQudmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KPQvNC10L3RjNGI0LDQtdGCINC30L3QsNGH0LXQvdC40LUg0LIg0L/QvtC70LUg0LLQstC+0LTQsCDQvdCwIDEg0YjQsNCzLiDQldGB0LvQuCDRh9C40YHQu9C+INCyINC/0L7Qu9C1INCy0LLQvtC00LAg0L3QtSDQutGA0LDRgtC90L4g0YjQsNCz0YMsINGC0L4g0YPQvNC10L3RjNGI0LjRgiDQtNC+INCx0LvQuNC20LDQudGI0LXQs9C+INC60YDQsNGC0L3QvtCz0L4g0LfQvdCw0YfQtdC90LjRjy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjaGVja1VwZGF0ZU9uINCf0YDQuNC30L3QsNC6LCDRh9GC0L4g0L3Rg9C20L3QviDQv9GA0L7QstC10YDQuNGC0YwgYHVwZGF0ZU9uYCDRgdCy0L7QudGB0YLQstC+IGBmb3JtQ29udHJvbGAuXG4gICAgICovXG4gICAgcHVibGljIGRlY3JlbWVudChjaGVja1VwZGF0ZU9uID0gZmFsc2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLm51bWJlcklucHV0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZW1haW5kZXIgPSBTY051bWJlckhlbHBlci5yZW1haW5kZXIodGhpcy5udW1iZXJJbnB1dC52YWx1ZSA/PyAwLCB0aGlzLnN0ZXApO1xuICAgICAgICBjb25zdCBzdGVwID0gLXJlbWFpbmRlciB8fCAtdGhpcy5zdGVwO1xuICAgICAgICB0aGlzLm51bWJlcklucHV0LnZhbHVlID0gTWF0aC5tYXgoU2NOdW1iZXJIZWxwZXIuYWRkU3RlcCh0aGlzLm51bWJlcklucHV0LnZhbHVlID8/IDAsIHN0ZXApLCB0aGlzLmlnbm9yZVN0ZXBWYWxpZGF0b3JzID8gMSA6IE1hdGgubWF4KHN0ZXAsIDApKTtcbiAgICAgICAgdGhpcy5udW1iZXJJbnB1dFsnbmF0aXZlVmFsdWUnXSA9IHRoaXMubnVtYmVySW5wdXRbJ2Zvcm1hdHRlZFZhbHVlJ107XG5cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVyc2NvcmUtZGFuZ2xlLCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55LCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLW1lbWJlci1hY2Nlc3NcbiAgICAgICAgaWYgKGNoZWNrVXBkYXRlT24gJiYgKHRoaXMuZm9ybUNvbnRyb2wgYXMgYW55KT8uX3VwZGF0ZU9uID09PSAnYmx1cicpIHtcbiAgICAgICAgICAgIHRoaXMuY29udHJvbD8uc2V0VmFsdWUodGhpcy5udW1iZXJJbnB1dC52YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQntGH0LjRidCw0LXRgiDQv9C+0LvRjyDQstCy0L7QtNCwLlxuICAgICAqL1xuICAgIHB1YmxpYyBjbGVhcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb250cm9sPy5wYXRjaFZhbHVlKG51bGwpO1xuICAgICAgICB0aGlzLmNsaWNrQ2xlYXJFdmVudC5lbWl0KCk7XG4gICAgfVxufVxuIiwiPHR1aS1sb2FkZXJcbiAgICAqbmdJZj1cImZvcm1Db250cm9sXCJcbiAgICBjbGFzcz1cInctZnVsbFwiXG4gICAgW292ZXJsYXldPVwidHJ1ZVwiXG4gICAgW3Nob3dMb2FkZXJdPVwic2hvd0xvYWRlclwiXG4gICAgW3NpemVdPVwic2l6ZVwiXG4+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0xIHRleHQtY2VudGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZC13aXRoLWJ1dHRvbiBmbGV4IGdyb3cgcm91bmRlZC14bFwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR1aUljb25CdXR0b25cbiAgICAgICAgICAgICAgICBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlXCJcbiAgICAgICAgICAgICAgICBbc2l6ZV09XCJzaXplXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIW51bWJlcklucHV0WydjYW5EZWNyZW1lbnQnXVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrLnByZXZlbnQpPVwiZGVjcmVtZW50KHRydWUpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8dHVpLWljb24gaWNvbj1cIkB0dWkubWludXNcIj48L3R1aS1pY29uPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8dHVpLWlucHV0LW51bWJlclxuICAgICAgICAgICAgICAgICNudW1iZXJJbnB1dFxuICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgW3R1aUhpbnRdPVwiKFtdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jKT8ubWVzc2FnZVwiXG4gICAgICAgICAgICAgICAgW3R1aVRleHRmaWVsZExhYmVsT3V0c2lkZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbbWluXT1cImlnbm9yZVN0ZXBWYWxpZGF0b3JzID8gMSA6IHN0ZXBcIlxuICAgICAgICAgICAgICAgIFt0dWlUZXh0ZmllbGRTaXplXT1cInNpemVcIlxuICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUudGV4dC1hbGlnbl09XCInY2VudGVyJ1wiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtd2VpZ2h0XT1cIjcwMFwiXG4gICAgICAgICAgICAgICAgKGZvY3VzaW4pPVwiJGFueSgkZXZlbnQudGFyZ2V0KS5zZWxlY3QoKVwiXG4gICAgICAgICAgICAgICAgb25jb250ZXh0bWVudT1cInJldHVybiBmYWxzZTtcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duLmFycm93RG93bik9XCIoMClcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duLmFycm93VXApPVwiKDApXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImdyb3dcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC90dWktaW5wdXQtbnVtYmVyPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR1aUljb25CdXR0b25cbiAgICAgICAgICAgICAgICBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlXCJcbiAgICAgICAgICAgICAgICBbc2l6ZV09XCJzaXplXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIW51bWJlcklucHV0WydjYW5JbmNyZW1lbnQnXVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrLnByZXZlbnQpPVwiaW5jaWRlbnQodHJ1ZSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDx0dWktaWNvbiBpY29uPVwiQHR1aS5wbHVzXCI+PC90dWktaWNvbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJzaG93Q3Jvc3NcIlxuICAgICAgICAgICAgdHVpSWNvbkJ1dHRvblxuICAgICAgICAgICAgYXBwZWFyYW5jZT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICBbc2l6ZV09XCJzaXplXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhbnVtYmVySW5wdXRbJ2NhbkluY3JlbWVudCddXCJcbiAgICAgICAgICAgIChjbGljay5wcmV2ZW50KT1cImNsZWFyKClcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8dHVpLWljb24gaWNvbj1cIkB0dWkueFwiPjwvdHVpLWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC90dWktbG9hZGVyPlxuIl19
@@ -1,3 +0,0 @@
1
- export * from './sc-notify-when-in-stock-dialog.component';
2
- export * from './sc-product-in-all-warehouses.pipe';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvY2F0YWxvZy9ub3RpZnktd2hlbi1pbi1zdG9jay1kaWFsb2cvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLHFDQUFxQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zYy1ub3RpZnktd2hlbi1pbi1zdG9jay1kaWFsb2cuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vc2MtcHJvZHVjdC1pbi1hbGwtd2FyZWhvdXNlcy5waXBlJztcbiJdfQ==
@@ -1,173 +0,0 @@
1
- /* eslint-disable class-methods-use-this,unicorn/no-useless-undefined, @typescript-eslint/unbound-method */
2
- import { AsyncPipe, NgIf } from '@angular/common';
3
- import { HttpErrorResponse } from '@angular/common/http';
4
- import { ChangeDetectionStrategy, Component, inject } from '@angular/core';
5
- import { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';
6
- import { FormControl, FormGroup, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';
7
- import { ScCatalogService, ScConvertersService, ScISuggestionType, ScUserService, ScWarehouseService, } from '@snabcentr/client-core';
8
- import { TuiAppearance, TuiButton, TuiError, TuiIcon, TuiLabel, TuiLink, TuiLoader } from '@taiga-ui/core';
9
- import { TuiButtonLoading, TuiFieldErrorPipe, TuiTooltip } from '@taiga-ui/kit';
10
- import { TuiCardLarge } from '@taiga-ui/layout';
11
- import { TuiInputModule, TuiSelectModule } from '@taiga-ui/legacy';
12
- import { POLYMORPHEUS_CONTEXT } from '@taiga-ui/polymorpheus';
13
- import { catchError, filter, map, of, share, startWith, Subject, switchMap, tap } from 'rxjs';
14
- import { ScFormFieldsModule } from '../../form-fields/form-fields.module';
15
- import { SC_NOTIFY_WHEN_IN_STOCK_REQUIRED_FIELDS } from '../../providers';
16
- import { scAtLeastOneRequiredValidator } from '../../validators/sc-at-least-one-required-validator';
17
- import { phoneValidator } from '../../validators/sc-phone-validator';
18
- import { ScVerificationModule } from '../../verification/sc-verification.module';
19
- import * as i0 from "@angular/core";
20
- import * as i1 from "../../verification/verification-phone-check-form/sc-verification-phone-check-form.component";
21
- import * as i2 from "@angular/forms";
22
- import * as i3 from "@taiga-ui/legacy";
23
- import * as i4 from "../../form-fields/suggestion-field/sc-suggestion-field.component";
24
- import * as i5 from "@taiga-ui/core/components/data-list";
25
- /**
26
- * Компонент формы отправки запроса на уведомление о поступлении товара.
27
- */
28
- export class ScNotifyWhenInStockDialogComponent {
29
- /**
30
- * Инициализирует экземпляр класса {@link ScNotifyWhenInStockDialogComponent}.
31
- */
32
- constructor() {
33
- /**
34
- * Контекст диалогового окна, в котором открыт компонент.
35
- */
36
- this.context = inject(POLYMORPHEUS_CONTEXT);
37
- /**
38
- * Товар.
39
- */
40
- this.product = this.context.data.product;
41
- /**
42
- * Форма для отправки запроса на уведомление о поступлении товара.
43
- */
44
- this.form = new FormGroup({
45
- email: new FormControl(null, [Validators.email]),
46
- phone: new FormControl(null, [phoneValidator()]),
47
- verificationCode: new FormControl(null, [Validators.minLength(6)]),
48
- warehouseId: new FormControl(null, Validators.required),
49
- });
50
- /**
51
- * Список складов.
52
- */
53
- this.warehouses = toSignal(inject(ScWarehouseService).getWarehouses$(), { initialValue: null });
54
- /**
55
- * Перечисление типов подсказок.
56
- */
57
- this.suggestionType = ScISuggestionType;
58
- /**
59
- * Массив полей, которые должны быть заполнены хотя бы одним значением.
60
- */
61
- this.requiredFields = inject(SC_NOTIFY_WHEN_IN_STOCK_REQUIRED_FIELDS);
62
- /**
63
- * Сервис для работы с каталогом.
64
- */
65
- this.catalogService = inject(ScCatalogService);
66
- /**
67
- * Сервис конвертации данных.
68
- */
69
- this.convertersService = inject(ScConvertersService);
70
- /**
71
- * {@link Observable} данных о пользователе.
72
- */
73
- this.user$ = inject(ScUserService)
74
- .getUserChange$()
75
- .pipe(tap((user) => {
76
- if (!user.isGuest) {
77
- if (this.requiredFields.includes('phone')) {
78
- this.form.get('phone')?.setValue(user.contacts.phone.value);
79
- }
80
- if (this.requiredFields.includes('email')) {
81
- this.form.get('email')?.setValue(user.contacts.email.value);
82
- }
83
- }
84
- }));
85
- /**
86
- * {@link Subject} события отправки формы.
87
- */
88
- this.onSubmit$ = new Subject();
89
- /**
90
- * {@link Observable} запроса данных уведомления о поступлении товара.
91
- */
92
- this.request$ = this.onSubmit$.pipe(filter(() => this.form.valid), map(() => this.form.getRawValue()), switchMap((value) => this.catalogService.getProductNotifyWhenInStock$(this.product.id, this.convertersService.removeNullRecursive(value)).pipe(tap(() => {
93
- this.context.completeWith();
94
- }), catchError((error) => {
95
- if (error instanceof HttpErrorResponse) {
96
- const { errors, message } = error.error;
97
- if (errors) {
98
- // eslint-disable-next-line no-shadow
99
- Object.entries(errors).forEach(([key, value]) => {
100
- this.form.get(key)?.setErrors({ serverResponse: value });
101
- });
102
- }
103
- else if (message) {
104
- this.form.setErrors({ serverResponse: [message] });
105
- }
106
- this.context.data.onErrorHandler(error);
107
- }
108
- return of(undefined);
109
- }), startWith(null))), share());
110
- /**
111
- * Сигнал изменения состояния загрузки данных.
112
- */
113
- this.loading = toSignal(this.request$.pipe(map((value) => value === null)), { initialValue: false });
114
- this.user$.pipe(takeUntilDestroyed()).subscribe();
115
- }
116
- /**
117
- * Инициализация компонента.
118
- */
119
- ngOnInit() {
120
- if (this.requiredFields.length === 1) {
121
- this.form.get(this.requiredFields[0])?.setValidators(Validators.required);
122
- }
123
- else if (this.requiredFields.length > 1) {
124
- this.form.setValidators(scAtLeastOneRequiredValidator(this.requiredFields));
125
- }
126
- }
127
- /**
128
- * Проверяет, является ли товар в наличии.
129
- */
130
- isStock() {
131
- const warehouseId = Number(this.form.get('warehouseId')?.value ?? 0);
132
- return this.product.isWarehouseStockExist(warehouseId);
133
- }
134
- /**
135
- * Преобразует объект в значение, отображаемое в поле ввода.
136
- *
137
- * @param items Выбранные значения.
138
- */
139
- stringify(items) {
140
- const itemsMap = new Map(items.map((item) => {
141
- return [item.id, item.name];
142
- }));
143
- return ({ $implicit }) => itemsMap.get($implicit) ?? '';
144
- }
145
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScNotifyWhenInStockDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
146
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ScNotifyWhenInStockDialogComponent, isStandalone: true, selector: "sc-notify-when-in-stock-dialog", ngImport: i0, template: "<form\n [formGroup]=\"form\"\n (ngSubmit)=\"onSubmit$.next()\"\n class=\"flex flex-col gap-6\"\n>\n @let isPhoneVisible = requiredFields.includes('phone');\n @let isEmailVisible = requiredFields.includes('email');\n @let phoneTouched = form.get('phone')?.touched;\n @let emailTouched = form.get('email')?.touched;\n @let isShowError = form.errors?.['atLeastOneRequired'] && ((isPhoneVisible && phoneTouched) || (isEmailVisible && emailTouched));\n @let user = user$ | async;\n @let userPhone = user?.contacts?.phone;\n @let isShowCodeFields = !!form.controls.phone.value && (user?.isGuest || userPhone?.value !== form.controls.phone.value || !userPhone?.isApproved);\n\n <div\n *ngIf=\"user\"\n class=\"flex flex-col gap-3\"\n >\n <label tuiLabel>\n <div\n [tuiAppearance]=\"isPhoneVisible && isEmailVisible ? 'outline-grayscale' : 'flat'\"\n [tuiAppearanceMode]=\"isShowError ? 'invalid' : null\"\n tuiCardLarge\n class=\"flex flex-col !gap-1\"\n [style.padding]=\"requiredFields.length <= 1 ? '0' : undefined\"\n [style.border-radius]=\"requiredFields.length <= 1 ? '0' : undefined\"\n >\n <sc-verification-phone-check-form\n *ngIf=\"isPhoneVisible\"\n [required]=\"!form.controls.email.value\"\n [showCodeFields]=\"isShowCodeFields\"\n [pseudoInvalid]=\"isShowError\"\n />\n <div\n *ngIf=\"isPhoneVisible && isEmailVisible\"\n class=\"tui-island__paragraph flex items-center gap-3\"\n [style.color]=\"isShowError ? 'var(--tui-text-negative)' : 'var(--tui-text-tertiary)'\"\n >\n <div\n class=\"h-px flex-1\"\n [style.background-color]=\"isShowError ? 'var(--tui-text-negative)' : 'var(--tui-text-tertiary)'\"\n ></div>\n <div class=\"text-body-s font-bold\">\n \u0418\u043B\u0438(\u0438)\n <tui-icon\n [appearance]=\"isShowError ? 'negative' : 'grayscale'\"\n tuiHintDirection=\"right\"\n tuiHintAppearance=\"dark\"\n tuiTooltip=\"\u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u0443\u043A\u0430\u0436\u0438\u0442\u0435 \u043D\u043E\u043C\u0435\u0440 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0430 \u0438\u043B\u0438(\u0438) \u0430\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\"\n />\n </div>\n <div\n class=\"h-px flex-1\"\n [style.background-color]=\"isShowError ? 'var(--tui-text-negative)' : 'var(--tui-text-tertiary)'\"\n ></div>\n </div>\n <label\n tuiLabel\n *ngIf=\"isEmailVisible\"\n >\n \u0410\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\n <tui-input\n [pseudoInvalid]=\"isShowError\"\n formControlName=\"email\"\n >\n \u0410\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.email\"\n />\n </tui-input>\n <tui-error\n formControlName=\"email\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n </div>\n <tui-error\n *ngIf=\"isShowError\"\n error=\"\u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u0443\u043A\u0430\u0436\u0438\u0442\u0435 \u043D\u043E\u043C\u0435\u0440 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0430 \u0438(\u0438\u043B\u0438) \u0430\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B \u0434\u043B\u044F \u0443\u0432\u0435\u0434\u043E\u043C\u043B\u0435\u043D\u0438\u044F \u043E \u043F\u043E\u0441\u0442\u0443\u043F\u043B\u0435\u043D\u0438\u0438 \u0442\u043E\u0432\u0430\u0440\u0430\"\n />\n </label>\n <label tuiLabel>\n \u0421\u043A\u043B\u0430\u0434\n <tui-select\n formControlName=\"warehouseId\"\n [valueContent]=\"warehouses() ? stringify(warehouses()!) : selectLoading\"\n >\n \u0421\u043A\u043B\u0430\u0434\n <tui-data-list *tuiDataList>\n @for (warehouse of warehouses(); track warehouse.id) {\n @if (!product.isWarehouseStockExist(warehouse.id)) {\n <button\n tuiOption\n [value]=\"warehouse.id\"\n >\n {{ warehouse.name }}\n </button>\n }\n }\n </tui-data-list>\n </tui-select>\n <tui-error\n formControlName=\"warehouseId\"\n [error]=\"[] | tuiFieldError | async\"\n />\n\n <span\n *ngIf=\"isStock()\"\n [style.color]=\"'var(--tui-text-positive)'\"\n >\n \u0422\u043E\u0432\u0430\u0440 \u0438\u043C\u0435\u0435\u0442\u0441\u044F \u0432 \u043D\u0430\u043B\u0438\u0447\u0438\u0438 \u043D\u0430 \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u043E\u043C \u0441\u043A\u043B\u0430\u0434\u0435\n </span>\n </label>\n <ng-template #selectLoading> <tui-loader /> </ng-template>\n </div>\n\n <div class=\"flex flex-wrap items-center gap-3\">\n <button\n tuiButton\n type=\"submit\"\n [disabled]=\"form.invalid || isStock() || (isShowCodeFields && !form.controls.verificationCode.value && form.controls.phone.valid)\"\n [loading]=\"loading()\"\n iconStart=\"@tui.sc.send\"\n class=\"self-center\"\n >\n \u041E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u044C\n </button>\n <div class=\"grow basis-60 text-body-s\">\n \u041D\u0430\u0436\u0438\u043C\u0430\u044F \u043D\u0430 \u043A\u043D\u043E\u043F\u043A\u0443, \u0432\u044B \u0441\u043E\u0433\u043B\u0430\u0448\u0430\u0435\u0442\u0435\u0441\u044C \u0441\n <button\n tuiLink\n [pseudo]=\"true\"\n type=\"button\"\n (click)=\"context.data.onClickOfferHandler()\"\n >\n \u041F\u043E\u043B\u0438\u0442\u0438\u043A\u043E\u0439 \u043A\u043E\u043D\u0444\u0438\u0434\u0435\u043D\u0446\u0438\u0430\u043B\u044C\u043D\u043E\u0441\u0442\u0438\n </button>\n </div>\n </div>\n\n <tui-error\n *ngIf=\"form.errors && form.errors['serverResponse']\"\n [error]=\"[] | tuiFieldError | async\"\n />\n</form>\n", dependencies: [{ kind: "ngmodule", type: ScVerificationModule }, { kind: "component", type: i1.ScVerificationPhoneCheckFormComponent, selector: "sc-verification-phone-check-form", inputs: ["showCodeFields", "readOnly", "pseudoInvalid", "required", "subtitle", "shouldBeBusy", "shouldBeConfirmed", "haveCode"], outputs: ["haveCodeChange", "isBusyChange", "isConfirmedChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { 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: "ngmodule", type: TuiInputModule }, { kind: "component", type: i3.TuiInputComponent, selector: "tui-input" }, { kind: "directive", type: i3.TuiInputDirective, selector: "tui-input" }, { kind: "directive", type: TuiLink, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: TuiLabel, selector: "label[tuiLabel]" }, { kind: "pipe", type: TuiFieldErrorPipe, name: "tuiFieldError" }, { kind: "component", type: TuiError, selector: "tui-error", inputs: ["error"] }, { kind: "ngmodule", type: ScFormFieldsModule }, { kind: "component", type: i4.ScSuggestionFieldComponent, selector: "sc-suggestion-field", inputs: ["type", "showAddressQuality"], outputs: ["selectedClick"] }, { kind: "ngmodule", type: TuiSelectModule }, { kind: "component", type: i3.TuiSelectComponent, selector: "tui-select", inputs: ["stringify", "identityMatcher", "valueContent"] }, { kind: "directive", type: i3.TuiSelectDirective, selector: "tui-select" }, { kind: "component", type: i5.TuiDataListComponent, selector: "tui-data-list", inputs: ["emptyContent", "size"] }, { kind: "directive", type: i5.TuiDataListDirective, selector: "ng-template[tuiDataList]" }, { kind: "component", type: i5.TuiOption, selector: "button[tuiOption]:not([new]), a[tuiOption]:not([new]), label[tuiOption]:not([new])", inputs: ["disabled", "value"] }, { kind: "component", type: TuiButtonLoading, selector: "[tuiButton][loading],[tuiIconButton][loading]", inputs: ["size", "loading"] }, { kind: "component", type: TuiLoader, selector: "tui-loader", inputs: ["size", "inheritColor", "overlay", "textContent", "showLoader"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: TuiAppearance, selector: "[tuiAppearance]", inputs: ["tuiAppearance", "tuiAppearanceState", "tuiAppearanceFocus", "tuiAppearanceMode"] }, { kind: "directive", type: TuiCardLarge, selector: "[tuiCardLarge]", inputs: ["tuiCardLarge"] }, { kind: "component", type: TuiIcon, selector: "tui-icon", inputs: ["icon", "background"] }, { kind: "directive", type: TuiTooltip, selector: "tui-icon[tuiTooltip]", inputs: ["size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
147
- }
148
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScNotifyWhenInStockDialogComponent, decorators: [{
149
- type: Component,
150
- args: [{ standalone: true, selector: 'sc-notify-when-in-stock-dialog', imports: [
151
- ScVerificationModule,
152
- FormsModule,
153
- ReactiveFormsModule,
154
- TuiInputModule,
155
- TuiLink,
156
- TuiButton,
157
- TuiLabel,
158
- TuiFieldErrorPipe,
159
- TuiError,
160
- ScVerificationModule,
161
- ScFormFieldsModule,
162
- TuiSelectModule,
163
- TuiButtonLoading,
164
- TuiLoader,
165
- AsyncPipe,
166
- NgIf,
167
- TuiAppearance,
168
- TuiCardLarge,
169
- TuiIcon,
170
- TuiTooltip,
171
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<form\n [formGroup]=\"form\"\n (ngSubmit)=\"onSubmit$.next()\"\n class=\"flex flex-col gap-6\"\n>\n @let isPhoneVisible = requiredFields.includes('phone');\n @let isEmailVisible = requiredFields.includes('email');\n @let phoneTouched = form.get('phone')?.touched;\n @let emailTouched = form.get('email')?.touched;\n @let isShowError = form.errors?.['atLeastOneRequired'] && ((isPhoneVisible && phoneTouched) || (isEmailVisible && emailTouched));\n @let user = user$ | async;\n @let userPhone = user?.contacts?.phone;\n @let isShowCodeFields = !!form.controls.phone.value && (user?.isGuest || userPhone?.value !== form.controls.phone.value || !userPhone?.isApproved);\n\n <div\n *ngIf=\"user\"\n class=\"flex flex-col gap-3\"\n >\n <label tuiLabel>\n <div\n [tuiAppearance]=\"isPhoneVisible && isEmailVisible ? 'outline-grayscale' : 'flat'\"\n [tuiAppearanceMode]=\"isShowError ? 'invalid' : null\"\n tuiCardLarge\n class=\"flex flex-col !gap-1\"\n [style.padding]=\"requiredFields.length <= 1 ? '0' : undefined\"\n [style.border-radius]=\"requiredFields.length <= 1 ? '0' : undefined\"\n >\n <sc-verification-phone-check-form\n *ngIf=\"isPhoneVisible\"\n [required]=\"!form.controls.email.value\"\n [showCodeFields]=\"isShowCodeFields\"\n [pseudoInvalid]=\"isShowError\"\n />\n <div\n *ngIf=\"isPhoneVisible && isEmailVisible\"\n class=\"tui-island__paragraph flex items-center gap-3\"\n [style.color]=\"isShowError ? 'var(--tui-text-negative)' : 'var(--tui-text-tertiary)'\"\n >\n <div\n class=\"h-px flex-1\"\n [style.background-color]=\"isShowError ? 'var(--tui-text-negative)' : 'var(--tui-text-tertiary)'\"\n ></div>\n <div class=\"text-body-s font-bold\">\n \u0418\u043B\u0438(\u0438)\n <tui-icon\n [appearance]=\"isShowError ? 'negative' : 'grayscale'\"\n tuiHintDirection=\"right\"\n tuiHintAppearance=\"dark\"\n tuiTooltip=\"\u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u0443\u043A\u0430\u0436\u0438\u0442\u0435 \u043D\u043E\u043C\u0435\u0440 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0430 \u0438\u043B\u0438(\u0438) \u0430\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\"\n />\n </div>\n <div\n class=\"h-px flex-1\"\n [style.background-color]=\"isShowError ? 'var(--tui-text-negative)' : 'var(--tui-text-tertiary)'\"\n ></div>\n </div>\n <label\n tuiLabel\n *ngIf=\"isEmailVisible\"\n >\n \u0410\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\n <tui-input\n [pseudoInvalid]=\"isShowError\"\n formControlName=\"email\"\n >\n \u0410\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.email\"\n />\n </tui-input>\n <tui-error\n formControlName=\"email\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n </div>\n <tui-error\n *ngIf=\"isShowError\"\n error=\"\u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u0443\u043A\u0430\u0436\u0438\u0442\u0435 \u043D\u043E\u043C\u0435\u0440 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0430 \u0438(\u0438\u043B\u0438) \u0430\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B \u0434\u043B\u044F \u0443\u0432\u0435\u0434\u043E\u043C\u043B\u0435\u043D\u0438\u044F \u043E \u043F\u043E\u0441\u0442\u0443\u043F\u043B\u0435\u043D\u0438\u0438 \u0442\u043E\u0432\u0430\u0440\u0430\"\n />\n </label>\n <label tuiLabel>\n \u0421\u043A\u043B\u0430\u0434\n <tui-select\n formControlName=\"warehouseId\"\n [valueContent]=\"warehouses() ? stringify(warehouses()!) : selectLoading\"\n >\n \u0421\u043A\u043B\u0430\u0434\n <tui-data-list *tuiDataList>\n @for (warehouse of warehouses(); track warehouse.id) {\n @if (!product.isWarehouseStockExist(warehouse.id)) {\n <button\n tuiOption\n [value]=\"warehouse.id\"\n >\n {{ warehouse.name }}\n </button>\n }\n }\n </tui-data-list>\n </tui-select>\n <tui-error\n formControlName=\"warehouseId\"\n [error]=\"[] | tuiFieldError | async\"\n />\n\n <span\n *ngIf=\"isStock()\"\n [style.color]=\"'var(--tui-text-positive)'\"\n >\n \u0422\u043E\u0432\u0430\u0440 \u0438\u043C\u0435\u0435\u0442\u0441\u044F \u0432 \u043D\u0430\u043B\u0438\u0447\u0438\u0438 \u043D\u0430 \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u043E\u043C \u0441\u043A\u043B\u0430\u0434\u0435\n </span>\n </label>\n <ng-template #selectLoading> <tui-loader /> </ng-template>\n </div>\n\n <div class=\"flex flex-wrap items-center gap-3\">\n <button\n tuiButton\n type=\"submit\"\n [disabled]=\"form.invalid || isStock() || (isShowCodeFields && !form.controls.verificationCode.value && form.controls.phone.valid)\"\n [loading]=\"loading()\"\n iconStart=\"@tui.sc.send\"\n class=\"self-center\"\n >\n \u041E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u044C\n </button>\n <div class=\"grow basis-60 text-body-s\">\n \u041D\u0430\u0436\u0438\u043C\u0430\u044F \u043D\u0430 \u043A\u043D\u043E\u043F\u043A\u0443, \u0432\u044B \u0441\u043E\u0433\u043B\u0430\u0448\u0430\u0435\u0442\u0435\u0441\u044C \u0441\n <button\n tuiLink\n [pseudo]=\"true\"\n type=\"button\"\n (click)=\"context.data.onClickOfferHandler()\"\n >\n \u041F\u043E\u043B\u0438\u0442\u0438\u043A\u043E\u0439 \u043A\u043E\u043D\u0444\u0438\u0434\u0435\u043D\u0446\u0438\u0430\u043B\u044C\u043D\u043E\u0441\u0442\u0438\n </button>\n </div>\n </div>\n\n <tui-error\n *ngIf=\"form.errors && form.errors['serverResponse']\"\n [error]=\"[] | tuiFieldError | async\"\n />\n</form>\n" }]
172
- }], ctorParameters: () => [] });
173
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Mtbm90aWZ5LXdoZW4taW4tc3RvY2stZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9jYXRhbG9nL25vdGlmeS13aGVuLWluLXN0b2NrLWRpYWxvZy9zYy1ub3RpZnktd2hlbi1pbi1zdG9jay1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NhdGFsb2cvbm90aWZ5LXdoZW4taW4tc3RvY2stZGlhbG9nL3NjLW5vdGlmeS13aGVuLWluLXN0b2NrLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyR0FBMkc7QUFFM0csT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RyxPQUFPLEVBQ0gsZ0JBQWdCLEVBQ2hCLG1CQUFtQixFQUduQixpQkFBaUIsRUFJakIsYUFBYSxFQUNiLGtCQUFrQixHQUNyQixNQUFNLHdCQUF3QixDQUFDO0FBRWhDLE9BQU8sRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFvQixRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0gsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixF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Q04sZ0NBQWdDLFdBRWpDO3dCQUNMLG9CQUFvQjt3QkFDcEIsV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLGNBQWM7d0JBQ2QsT0FBTzt3QkFDUCxTQUFTO3dCQUNULFFBQVE7d0JBQ1IsaUJBQWlCO3dCQUNqQixRQUFRO3dCQUNSLG9CQUFvQjt3QkFDcEIsa0JBQWtCO3dCQUNsQixlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsU0FBUzt3QkFDVCxTQUFTO3dCQUNULElBQUk7d0JBQ0osYUFBYTt3QkFDYixZQUFZO3dCQUNaLE9BQU87d0JBQ1AsVUFBVTtxQkFDYixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXMsdW5pY29ybi9uby11c2VsZXNzLXVuZGVmaW5lZCwgQHR5cGVzY3JpcHQtZXNsaW50L3VuYm91bmQtbWV0aG9kICovXG5cbmltcG9ydCB7IEFzeW5jUGlwZSwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdCwgT25Jbml0LCBTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCwgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gICAgU2NDYXRhbG9nU2VydmljZSxcbiAgICBTY0NvbnZlcnRlcnNTZXJ2aWNlLFxuICAgIFNjSUFwaUVycm9yUmVzcG9uc2UsXG4gICAgU2NJUHJvZHVjdE5vdGlmeVdoZW5JblN0b2NrLFxuICAgIFNjSVN1Z2dlc3Rpb25UeXBlLFxuICAgIFNjSVdhcmVob3VzZSxcbiAgICBTY1Byb2R1Y3QsXG4gICAgU2NVc2VyLFxuICAgIFNjVXNlclNlcnZpY2UsXG4gICAgU2NXYXJlaG91c2VTZXJ2aWNlLFxufSBmcm9tICdAc25hYmNlbnRyL2NsaWVudC1jb3JlJztcbmltcG9ydCB7IFR1aUNvbnRleHQsIFR1aVN0cmluZ0hhbmRsZXIgfSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7IFR1aUFwcGVhcmFuY2UsIFR1aUJ1dHRvbiwgVHVpRGlhbG9nQ29udGV4dCwgVHVpRXJyb3IsIFR1aUljb24sIFR1aUxhYmVsLCBUdWlMaW5rLCBUdWlMb2FkZXIgfSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5pbXBvcnQgeyBUdWlCdXR0b25Mb2FkaW5nLCBUdWlGaWVsZEVycm9yUGlwZSwgVHVpVG9vbHRpcCB9IGZyb20gJ0B0YWlnYS11aS9raXQnO1xuaW1wb3J0IHsgVHVpQ2FyZExhcmdlIH0gZnJvbSAnQHRhaWdhLXVpL2xheW91dCc7XG5pbXBvcnQgeyBUdWlJbnB1dE1vZHVsZSwgVHVpU2VsZWN0TW9kdWxlIH0gZnJvbSAnQHRhaWdhLXVpL2xlZ2FjeSc7XG5pbXBvcnQgeyBQT0xZTU9SUEhFVVNfQ09OVEVYVCB9IGZyb20gJ0B0YWlnYS11aS9wb2x5bW9ycGhldXMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmlsdGVyLCBtYXAsIE9ic2VydmFibGUsIG9mLCBzaGFyZSwgc3RhcnRXaXRoLCBTdWJqZWN0LCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTY0Zvcm1GaWVsZHNNb2R1bGUgfSBmcm9tICcuLi8uLi9mb3JtLWZpZWxkcy9mb3JtLWZpZWxkcy5tb2R1bGUnO1xuaW1wb3J0IHsgU0NfTk9USUZZX1dIRU5fSU5fU1RPQ0tfUkVRVUlSRURfRklFTERTIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzJztcbmltcG9ydCB7IHNjQXRMZWFzdE9uZVJlcXVpcmVkVmFsaWRhdG9yIH0gZnJvbSAnLi4vLi4vdmFsaWRhdG9ycy9zYy1hdC1sZWFzdC1vbmUtcmVxdWlyZWQtdmFsaWRhdG9yJztcbmltcG9ydCB7IHBob25lVmFsaWRhdG9yIH0gZnJvbSAnLi4vLi4vdmFsaWRhdG9ycy9zYy1waG9uZS12YWxpZGF0b3InO1xuaW1wb3J0IHsgU2NWZXJpZmljYXRpb25Nb2R1bGUgfSBmcm9tICcuLi8uLi92ZXJpZmljYXRpb24vc2MtdmVyaWZpY2F0aW9uLm1vZHVsZSc7XG5cbi8qKlxuICog0JrQvtC80L/QvtC90LXQvdGCINGE0L7RgNC80Ysg0L7RgtC/0YDQsNCy0LrQuCDQt9Cw0L/RgNC+0YHQsCDQvdCwINGD0LLQtdC00L7QvNC70LXQvdC40LUg0L4g0L/QvtGB0YLRg9C/0LvQtdC90LjQuCDRgtC+0LLQsNGA0LAuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdzYy1ub3RpZnktd2hlbi1pbi1zdG9jay1kaWFsb2cnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zYy1ub3RpZnktd2hlbi1pbi1zdG9jay1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgU2NWZXJpZmljYXRpb25Nb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgICBUdWlJbnB1dE1vZHVsZSxcbiAgICAgICAgVHVpTGluayxcbiAgICAgICAgVHVpQnV0dG9uLFxuICAgICAgICBUdWlMYWJlbCxcbiAgICAgICAgVHVpRmllbGRFcnJvclBpcGUsXG4gICAgICAgIFR1aUVycm9yLFxuICAgICAgICBTY1ZlcmlmaWNhdGlvbk1vZHVsZSxcbiAgICAgICAgU2NGb3JtRmllbGRzTW9kdWxlLFxuICAgICAgICBUdWlTZWxlY3RNb2R1bGUsXG4gICAgICAgIFR1aUJ1dHRvbkxvYWRpbmcsXG4gICAgICAgIFR1aUxvYWRlcixcbiAgICAgICAgQXN5bmNQaXBlLFxuICAgICAgICBOZ0lmLFxuICAgICAgICBUdWlBcHBlYXJhbmNlLFxuICAgICAgICBUdWlDYXJkTGFyZ2UsXG4gICAgICAgIFR1aUljb24sXG4gICAgICAgIFR1aVRvb2x0aXAsXG4gICAgXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2NOb3RpZnlXaGVuSW5TdG9ja0RpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgLyoqXG4gICAgICog0JrQvtC90YLQtdC60YHRgiDQtNC40LDQu9C+0LPQvtCy0L7Qs9C+INC+0LrQvdCwLCDQsiDQutC+0YLQvtGA0L7QvCDQvtGC0LrRgNGL0YIg0LrQvtC80L/QvtC90LXQvdGCLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBjb250ZXh0OiBUdWlEaWFsb2dDb250ZXh0PHZvaWQsIHsgcHJvZHVjdDogU2NQcm9kdWN0OyBvbkNsaWNrT2ZmZXJIYW5kbGVyOiAoKSA9PiB2b2lkOyBvbkVycm9ySGFuZGxlcjogKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdm9pZCB9PiA9XG4gICAgICAgIGluamVjdDxUdWlEaWFsb2dDb250ZXh0PHZvaWQsIHsgcHJvZHVjdDogU2NQcm9kdWN0OyBvbkNsaWNrT2ZmZXJIYW5kbGVyOiAoKSA9PiB2b2lkOyBvbkVycm9ySGFuZGxlcjogKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdm9pZCB9Pj4oUE9MWU1PUlBIRVVTX0NPTlRFWFQpO1xuXG4gICAgLyoqXG4gICAgICog0KLQvtCy0LDRgC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcHJvZHVjdDogU2NQcm9kdWN0ID0gdGhpcy5jb250ZXh0LmRhdGEucHJvZHVjdDtcblxuICAgIC8qKlxuICAgICAqINCk0L7RgNC80LAg0LTQu9GPINC+0YLQv9GA0LDQstC60Lgg0LfQsNC/0YDQvtGB0LAg0L3QsCDRg9Cy0LXQtNC+0LzQu9C10L3QuNC1INC+INC/0L7RgdGC0YPQv9C70LXQvdC40Lgg0YLQvtCy0LDRgNCwLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBmb3JtID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgIGVtYWlsOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgW1ZhbGlkYXRvcnMuZW1haWxdKSxcbiAgICAgICAgcGhvbmU6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBbcGhvbmVWYWxpZGF0b3IoKV0pLFxuICAgICAgICB2ZXJpZmljYXRpb25Db2RlOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgW1ZhbGlkYXRvcnMubWluTGVuZ3RoKDYpXSksXG4gICAgICAgIHdhcmVob3VzZUlkOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC/0LjRgdC+0Log0YHQutC70LDQtNC+0LIuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHdhcmVob3VzZXM6IFNpZ25hbDxTY0lXYXJlaG91c2VbXSB8IG51bGw+ID0gdG9TaWduYWwoaW5qZWN0KFNjV2FyZWhvdXNlU2VydmljZSkuZ2V0V2FyZWhvdXNlcyQoKSwgeyBpbml0aWFsVmFsdWU6IG51bGwgfSk7XG5cbiAgICAvKipcbiAgICAgKiDQn9C10YDQtdGH0LjRgdC70LXQvdC40LUg0YLQuNC/0L7QsiDQv9C+0LTRgdC60LDQt9C+0LouXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHN1Z2dlc3Rpb25UeXBlOiB0eXBlb2YgU2NJU3VnZ2VzdGlvblR5cGUgPSBTY0lTdWdnZXN0aW9uVHlwZTtcblxuICAgIC8qKlxuICAgICAqINCc0LDRgdGB0LjQsiDQv9C+0LvQtdC5LCDQutC+0YLQvtGA0YvQtSDQtNC+0LvQttC90Ysg0LHRi9GC0Ywg0LfQsNC/0L7Qu9C90LXQvdGLINGF0L7RgtGPINCx0Ysg0L7QtNC90LjQvCDQt9C90LDRh9C10L3QuNC10LwuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHJlcXVpcmVkRmllbGRzID0gaW5qZWN0KFNDX05PVElGWV9XSEVOX0lOX1NUT0NLX1JFUVVJUkVEX0ZJRUxEUyk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSDQutCw0YLQsNC70L7Qs9C+0LwuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNhdGFsb2dTZXJ2aWNlOiBTY0NhdGFsb2dTZXJ2aWNlID0gaW5qZWN0KFNjQ2F0YWxvZ1NlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINC60L7QvdCy0LXRgNGC0LDRhtC40Lgg0LTQsNC90L3Ri9GFLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29udmVydGVyc1NlcnZpY2U6IFNjQ29udmVydGVyc1NlcnZpY2UgPSBpbmplY3QoU2NDb252ZXJ0ZXJzU2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LTQsNC90L3Ri9GFINC+INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdXNlciQ6IE9ic2VydmFibGU8U2NVc2VyIHwgbnVsbD4gPSBpbmplY3QoU2NVc2VyU2VydmljZSlcbiAgICAgICAgLmdldFVzZXJDaGFuZ2UkKClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICB0YXAoKHVzZXIpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXVzZXIuaXNHdWVzdCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yZXF1aXJlZEZpZWxkcy5pbmNsdWRlcygncGhvbmUnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgncGhvbmUnKT8uc2V0VmFsdWUodXNlci5jb250YWN0cy5waG9uZS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yZXF1aXJlZEZpZWxkcy5pbmNsdWRlcygnZW1haWwnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgnZW1haWwnKT8uc2V0VmFsdWUodXNlci5jb250YWN0cy5lbWFpbC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIFN1YmplY3R9INGB0L7QsdGL0YLQuNGPINC+0YLQv9GA0LDQstC60Lgg0YTQvtGA0LzRiy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgb25TdWJtaXQkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQt9Cw0L/RgNC+0YHQsCDQtNCw0L3QvdGL0YUg0YPQstC10LTQvtC80LvQtdC90LjRjyDQviDQv9C+0YHRgtGD0L/Qu9C10L3QuNC4INGC0L7QstCw0YDQsC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlcXVlc3QkID0gdGhpcy5vblN1Ym1pdCQucGlwZShcbiAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMuZm9ybS52YWxpZCksXG4gICAgICAgIG1hcCgoKSA9PiB0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKSBhcyBTY0lQcm9kdWN0Tm90aWZ5V2hlbkluU3RvY2spLFxuICAgICAgICBzd2l0Y2hNYXAoKHZhbHVlKSA9PlxuICAgICAgICAgICAgdGhpcy5jYXRhbG9nU2VydmljZS5nZXRQcm9kdWN0Tm90aWZ5V2hlbkluU3RvY2skKHRoaXMucHJvZHVjdC5pZCwgdGhpcy5jb252ZXJ0ZXJzU2VydmljZS5yZW1vdmVOdWxsUmVjdXJzaXZlKHZhbHVlKSkucGlwZShcbiAgICAgICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuY29tcGxldGVXaXRoKCk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IHVua25vd24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZXJyb3JzLCBtZXNzYWdlIH0gPSBlcnJvci5lcnJvciBhcyBTY0lBcGlFcnJvclJlc3BvbnNlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNoYWRvd1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKGVycm9ycykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoa2V5KT8uc2V0RXJyb3JzKHsgc2VydmVyUmVzcG9uc2U6IHZhbHVlIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnNldEVycm9ycyh7IHNlcnZlclJlc3BvbnNlOiBbbWVzc2FnZV0gfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5kYXRhLm9uRXJyb3JIYW5kbGVyKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHN0YXJ0V2l0aChudWxsKVxuICAgICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICBzaGFyZSgpXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqINCh0LjQs9C90LDQuyDQuNC30LzQtdC90LXQvdC40Y8g0YHQvtGB0YLQvtGP0L3QuNGPINC30LDQs9GA0YPQt9C60Lgg0LTQsNC90L3Ri9GFLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBsb2FkaW5nOiBTaWduYWw8Ym9vbGVhbj4gPSB0b1NpZ25hbCh0aGlzLnJlcXVlc3QkLnBpcGUobWFwKCh2YWx1ZSkgPT4gdmFsdWUgPT09IG51bGwpKSwgeyBpbml0aWFsVmFsdWU6IGZhbHNlIH0pO1xuXG4gICAgLyoqXG4gICAgICog0JjQvdC40YbQuNCw0LvQuNC30LjRgNGD0LXRgiDRjdC60LfQtdC80L/Qu9GP0YAg0LrQu9Cw0YHRgdCwIHtAbGluayBTY05vdGlmeVdoZW5JblN0b2NrRGlhbG9nQ29tcG9uZW50fS5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMudXNlciQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JjQvdC40YbQuNCw0LvQuNC30LDRhtC40Y8g0LrQvtC80L/QvtC90LXQvdGC0LAuXG4gICAgICovXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5yZXF1aXJlZEZpZWxkcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQodGhpcy5yZXF1aXJlZEZpZWxkc1swXSk/LnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5yZXF1aXJlZEZpZWxkcy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm0uc2V0VmFsaWRhdG9ycyhzY0F0TGVhc3RPbmVSZXF1aXJlZFZhbGlkYXRvcih0aGlzLnJlcXVpcmVkRmllbGRzKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0L7QstC10YDRj9C10YIsINGP0LLQu9GP0LXRgtGB0Y8g0LvQuCDRgtC+0LLQsNGAINCyINC90LDQu9C40YfQuNC4LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBpc1N0b2NrKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB3YXJlaG91c2VJZCA9IE51bWJlcih0aGlzLmZvcm0uZ2V0KCd3YXJlaG91c2VJZCcpPy52YWx1ZSA/PyAwKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5wcm9kdWN0LmlzV2FyZWhvdXNlU3RvY2tFeGlzdCh3YXJlaG91c2VJZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J/RgNC10L7QsdGA0LDQt9GD0LXRgiDQvtCx0YrQtdC60YIg0LIg0LfQvdCw0YfQtdC90LjQtSwg0L7RgtC+0LHRgNCw0LbQsNC10LzQvtC1INCyINC/0L7Qu9C1INCy0LLQvtC00LAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaXRlbXMg0JLRi9Cx0YDQsNC90L3Ri9C1INC30L3QsNGH0LXQvdC40Y8uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHN0cmluZ2lmeShpdGVtczogcmVhZG9ubHkgU2NJV2FyZWhvdXNlW10pOiBUdWlTdHJpbmdIYW5kbGVyPFR1aUNvbnRleHQ8bnVtYmVyPj4ge1xuICAgICAgICBjb25zdCBpdGVtc01hcCA9IG5ldyBNYXAoXG4gICAgICAgICAgICBpdGVtcy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW2l0ZW0uaWQsIGl0ZW0ubmFtZV0gYXMgW251bWJlciwgc3RyaW5nXTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuICh7ICRpbXBsaWNpdCB9OiBUdWlDb250ZXh0PG51bWJlcj4pID0+IGl0ZW1zTWFwLmdldCgkaW1wbGljaXQpID8/ICcnO1xuICAgIH1cbn1cbiIsIjxmb3JtXG4gICAgW2Zvcm1Hcm91cF09XCJmb3JtXCJcbiAgICAobmdTdWJtaXQpPVwib25TdWJtaXQkLm5leHQoKVwiXG4gICAgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC02XCJcbj5cbiAgICBAbGV0IGlzUGhvbmVWaXNpYmxlID0gcmVxdWlyZWRGaWVsZHMuaW5jbHVkZXMoJ3Bob25lJyk7XG4gICAgQGxldCBpc0VtYWlsVmlzaWJsZSA9IHJlcXVpcmVkRmllbGRzLmluY2x1ZGVzKCdlbWFpbCcpO1xuICAgIEBsZXQgcGhvbmVUb3VjaGVkID0gZm9ybS5nZXQoJ3Bob25lJyk/LnRvdWNoZWQ7XG4gICAgQGxldCBlbWFpbFRvdWNoZWQgPSBmb3JtLmdldCgnZW1haWwnKT8udG91Y2hlZDtcbiAgICBAbGV0IGlzU2hvd0Vycm9yID0gZm9ybS5lcnJvcnM/LlsnYXRMZWFzdE9uZVJlcXVpcmVkJ10gJiYgKChpc1Bob25lVmlzaWJsZSAmJiBwaG9uZVRvdWNoZWQpIHx8IChpc0VtYWlsVmlzaWJsZSAmJiBlbWFpbFRvdWNoZWQpKTtcbiAgICBAbGV0IHVzZXIgPSB1c2VyJCB8IGFzeW5jO1xuICAgIEBsZXQgdXNlclBob25lID0gdXNlcj8uY29udGFjdHM/LnBob25lO1xuICAgIEBsZXQgaXNTaG93Q29kZUZpZWxkcyA9ICEhZm9ybS5jb250cm9scy5waG9uZS52YWx1ZSAmJiAodXNlcj8uaXNHdWVzdCB8fCB1c2VyUGhvbmU/LnZhbHVlICE9PSBmb3JtLmNvbnRyb2xzLnBob25lLnZhbHVlIHx8ICF1c2VyUGhvbmU/LmlzQXBwcm92ZWQpO1xuXG4gICAgPGRpdlxuICAgICAgICAqbmdJZj1cInVzZXJcIlxuICAgICAgICBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTNcIlxuICAgID5cbiAgICAgICAgPGxhYmVsIHR1aUxhYmVsPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIFt0dWlBcHBlYXJhbmNlXT1cImlzUGhvbmVWaXNpYmxlICYmIGlzRW1haWxWaXNpYmxlID8gJ291dGxpbmUtZ3JheXNjYWxlJyA6ICdmbGF0J1wiXG4gICAgICAgICAgICAgICAgW3R1aUFwcGVhcmFuY2VNb2RlXT1cImlzU2hvd0Vycm9yID8gJ2ludmFsaWQnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgdHVpQ2FyZExhcmdlXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtY29sICFnYXAtMVwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLnBhZGRpbmddPVwicmVxdWlyZWRGaWVsZHMubGVuZ3RoIDw9IDEgPyAnMCcgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5ib3JkZXItcmFkaXVzXT1cInJlcXVpcmVkRmllbGRzLmxlbmd0aCA8PSAxID8gJzAnIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c2MtdmVyaWZpY2F0aW9uLXBob25lLWNoZWNrLWZvcm1cbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpc1Bob25lVmlzaWJsZVwiXG4gICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCIhZm9ybS5jb250cm9scy5lbWFpbC52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtzaG93Q29kZUZpZWxkc109XCJpc1Nob3dDb2RlRmllbGRzXCJcbiAgICAgICAgICAgICAgICAgICAgW3BzZXVkb0ludmFsaWRdPVwiaXNTaG93RXJyb3JcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImlzUGhvbmVWaXNpYmxlICYmIGlzRW1haWxWaXNpYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0dWktaXNsYW5kX19wYXJhZ3JhcGggZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTNcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiaXNTaG93RXJyb3IgPyAndmFyKC0tdHVpLXRleHQtbmVnYXRpdmUpJyA6ICd2YXIoLS10dWktdGV4dC10ZXJ0aWFyeSknXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaC1weCBmbGV4LTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiaXNTaG93RXJyb3IgPyAndmFyKC0tdHVpLXRleHQtbmVnYXRpdmUpJyA6ICd2YXIoLS10dWktdGV4dC10ZXJ0aWFyeSknXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ib2R5LXMgZm9udC1ib2xkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICDQmNC70Lgo0LgpXG4gICAgICAgICAgICAgICAgICAgICAgICA8dHVpLWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXBwZWFyYW5jZV09XCJpc1Nob3dFcnJvciA/ICduZWdhdGl2ZScgOiAnZ3JheXNjYWxlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHVpSGludERpcmVjdGlvbj1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dWlIaW50QXBwZWFyYW5jZT1cImRhcmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR1aVRvb2x0aXA9XCLQn9C+0LbQsNC70YPQudGB0YLQsCwg0YPQutCw0LbQuNGC0LUg0L3QvtC80LXRgCDRgtC10LvQtdGE0L7QvdCwINC40LvQuCjQuCkg0LDQtNGA0LXRgSDRjdC70LXQutGC0YDQvtC90L3QvtC5INC/0L7Rh9GC0YtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaC1weCBmbGV4LTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiaXNTaG93RXJyb3IgPyAndmFyKC0tdHVpLXRleHQtbmVnYXRpdmUpJyA6ICd2YXIoLS10dWktdGV4dC10ZXJ0aWFyeSknXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgICB0dWlMYWJlbFxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImlzRW1haWxWaXNpYmxlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgINCQ0LTRgNC10YEg0Y3Qu9C10LrRgtGA0L7QvdC90L7QuSDQv9C+0YfRgtGLXG4gICAgICAgICAgICAgICAgICAgIDx0dWktaW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwc2V1ZG9JbnZhbGlkXT1cImlzU2hvd0Vycm9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImVtYWlsXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAg0JDQtNGA0LXRgSDRjdC70LXQutGC0YDQvtC90L3QvtC5INC/0L7Rh9GC0YtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzYy1zdWdnZXN0aW9uLWZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKnR1aURhdGFMaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwic3VnZ2VzdGlvblR5cGUuZW1haWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC90dWktaW5wdXQ+XG4gICAgICAgICAgICAgICAgICAgIDx0dWktZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImVtYWlsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtlcnJvcl09XCJbXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHR1aS1lcnJvclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNTaG93RXJyb3JcIlxuICAgICAgICAgICAgICAgIGVycm9yPVwi0J/QvtC20LDQu9GD0LnRgdGC0LAsINGD0LrQsNC20LjRgtC1INC90L7QvNC10YAg0YLQtdC70LXRhNC+0L3QsCDQuCjQuNC70LgpINCw0LTRgNC10YEg0Y3Qu9C10LrRgtGA0L7QvdC90L7QuSDQv9C+0YfRgtGLINC00LvRjyDRg9Cy0LXQtNC+0LzQu9C10L3QuNGPINC+INC/0L7RgdGC0YPQv9C70LXQvdC40Lgg0YLQvtCy0LDRgNCwXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxsYWJlbCB0dWlMYWJlbD5cbiAgICAgICAgICAgINCh0LrQu9Cw0LRcbiAgICAgICAgICAgIDx0dWktc2VsZWN0XG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwid2FyZWhvdXNlSWRcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZUNvbnRlbnRdPVwid2FyZWhvdXNlcygpID8gc3RyaW5naWZ5KHdhcmVob3VzZXMoKSEpIDogc2VsZWN0TG9hZGluZ1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAg0KHQutC70LDQtFxuICAgICAgICAgICAgICAgIDx0dWktZGF0YS1saXN0ICp0dWlEYXRhTGlzdD5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAod2FyZWhvdXNlIG9mIHdhcmVob3VzZXMoKTsgdHJhY2sgd2FyZWhvdXNlLmlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFwcm9kdWN0LmlzV2FyZWhvdXNlU3RvY2tFeGlzdCh3YXJlaG91c2UuaWQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dWlPcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIndhcmVob3VzZS5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB3YXJlaG91c2UubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC90dWktZGF0YS1saXN0PlxuICAgICAgICAgICAgPC90dWktc2VsZWN0PlxuICAgICAgICAgICAgPHR1aS1lcnJvclxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIndhcmVob3VzZUlkXCJcbiAgICAgICAgICAgICAgICBbZXJyb3JdPVwiW10gfCB0dWlGaWVsZEVycm9yIHwgYXN5bmNcIlxuICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAqbmdJZj1cImlzU3RvY2soKVwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cIid2YXIoLS10dWktdGV4dC1wb3NpdGl2ZSknXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICDQotC+0LLQsNGAINC40LzQtdC10YLRgdGPINCyINC90LDQu9C40YfQuNC4INC90LAg0LLRi9Cx0YDQsNC90L3QvtC8INGB0LrQu9Cw0LTQtVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8bmctdGVtcGxhdGUgI3NlbGVjdExvYWRpbmc+IDx0dWktbG9hZGVyIC8+IDwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXdyYXAgaXRlbXMtY2VudGVyIGdhcC0zXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR1aUJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkIHx8IGlzU3RvY2soKSB8fCAoaXNTaG93Q29kZUZpZWxkcyAmJiAhZm9ybS5jb250cm9scy52ZXJpZmljYXRpb25Db2RlLnZhbHVlICYmIGZvcm0uY29udHJvbHMucGhvbmUudmFsaWQpXCJcbiAgICAgICAgICAgIFtsb2FkaW5nXT1cImxvYWRpbmcoKVwiXG4gICAgICAgICAgICBpY29uU3RhcnQ9XCJAdHVpLnNjLnNlbmRcIlxuICAgICAgICAgICAgY2xhc3M9XCJzZWxmLWNlbnRlclwiXG4gICAgICAgID5cbiAgICAgICAgICAgINCe0YLQv9GA0LDQstC40YLRjFxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdyb3cgYmFzaXMtNjAgdGV4dC1ib2R5LXNcIj5cbiAgICAgICAgICAgINCd0LDQttC40LzQsNGPINC90LAg0LrQvdC+0L/QutGDLCDQstGLINGB0L7Qs9C70LDRiNCw0LXRgtC10YHRjCDRgVxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR1aUxpbmtcbiAgICAgICAgICAgICAgICBbcHNldWRvXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjb250ZXh0LmRhdGEub25DbGlja09mZmVySGFuZGxlcigpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICDQn9C+0LvQuNGC0LjQutC+0Lkg0LrQvtC90YTQuNC00LXQvdGG0LjQsNC70YzQvdC+0YHRgtC4XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8dHVpLWVycm9yXG4gICAgICAgICpuZ0lmPVwiZm9ybS5lcnJvcnMgJiYgZm9ybS5lcnJvcnNbJ3NlcnZlclJlc3BvbnNlJ11cIlxuICAgICAgICBbZXJyb3JdPVwiW10gfCB0dWlGaWVsZEVycm9yIHwgYXN5bmNcIlxuICAgIC8+XG48L2Zvcm0+XG4iXX0=
@@ -1,35 +0,0 @@
1
- /* eslint-disable class-methods-use-this */
2
- import { inject, Pipe } from '@angular/core';
3
- import { ScWarehouseService } from '@snabcentr/client-core';
4
- import { map } from 'rxjs';
5
- import * as i0 from "@angular/core";
6
- /**
7
- * Пайп для вычисления есть ли товар на всех складах.
8
- */
9
- export class ScProductInAllWarehousesPipe {
10
- constructor() {
11
- /**
12
- * Список складов.
13
- */
14
- this.warehouses$ = inject(ScWarehouseService).getWarehouses$();
15
- }
16
- /**
17
- * Вычисляет есть ли товар на всех складах.
18
- *
19
- * @param product - Продукт.
20
- * @returns Имя продукта.
21
- */
22
- transform(product) {
23
- return this.warehouses$.pipe(map((warehouses) => warehouses.every((warehouse) => product.isWarehouseStockExist(warehouse.id))));
24
- }
25
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScProductInAllWarehousesPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
26
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: ScProductInAllWarehousesPipe, isStandalone: true, name: "scProductInAllWarehouses" }); }
27
- }
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScProductInAllWarehousesPipe, decorators: [{
29
- type: Pipe,
30
- args: [{
31
- standalone: true,
32
- name: 'scProductInAllWarehouses',
33
- }]
34
- }] });
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtcHJvZHVjdC1pbi1hbGwtd2FyZWhvdXNlcy5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NhdGFsb2cvbm90aWZ5LXdoZW4taW4tc3RvY2stZGlhbG9nL3NjLXByb2R1Y3QtaW4tYWxsLXdhcmVob3VzZXMucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFFM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBMkIsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRixPQUFPLEVBQUUsR0FBRyxFQUFjLE1BQU0sTUFBTSxDQUFDOztBQUV2Qzs7R0FFRztBQUtILE1BQU0sT0FBTyw0QkFBNEI7SUFKekM7UUFLSTs7V0FFRztRQUNnQixnQkFBVyxHQUErQixNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztLQVc1RztJQVRHOzs7OztPQUtHO0lBQ0ksU0FBUyxDQUFDLE9BQWtCO1FBQy9CLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BJLENBQUM7K0dBZFEsNEJBQTRCOzZHQUE1Qiw0QkFBNEI7OzRGQUE1Qiw0QkFBNEI7a0JBSnhDLElBQUk7bUJBQUM7b0JBQ0YsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLElBQUksRUFBRSwwQkFBMEI7aUJBQ25DIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgY2xhc3MtbWV0aG9kcy11c2UtdGhpcyAqL1xuXG5pbXBvcnQgeyBpbmplY3QsIFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNjSVdhcmVob3VzZSwgU2NQcm9kdWN0LCBTY1dhcmVob3VzZVNlcnZpY2UgfSBmcm9tICdAc25hYmNlbnRyL2NsaWVudC1jb3JlJztcbmltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqINCf0LDQudC/INC00LvRjyDQstGL0YfQuNGB0LvQtdC90LjRjyDQtdGB0YLRjCDQu9C4INGC0L7QstCw0YAg0L3QsCDQstGB0LXRhSDRgdC60LvQsNC00LDRhS5cbiAqL1xuQFBpcGUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgbmFtZTogJ3NjUHJvZHVjdEluQWxsV2FyZWhvdXNlcycsXG59KVxuZXhwb3J0IGNsYXNzIFNjUHJvZHVjdEluQWxsV2FyZWhvdXNlc1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICAvKipcbiAgICAgKiDQodC/0LjRgdC+0Log0YHQutC70LDQtNC+0LIuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHdhcmVob3VzZXMkOiBPYnNlcnZhYmxlPFNjSVdhcmVob3VzZVtdPiA9IGluamVjdChTY1dhcmVob3VzZVNlcnZpY2UpLmdldFdhcmVob3VzZXMkKCk7XG5cbiAgICAvKipcbiAgICAgKiDQktGL0YfQuNGB0LvRj9C10YIg0LXRgdGC0Ywg0LvQuCDRgtC+0LLQsNGAINC90LAg0LLRgdC10YUg0YHQutC70LDQtNCw0YUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcHJvZHVjdCAtINCf0YDQvtC00YPQutGCLlxuICAgICAqIEByZXR1cm5zINCY0LzRjyDQv9GA0L7QtNGD0LrRgtCwLlxuICAgICAqL1xuICAgIHB1YmxpYyB0cmFuc2Zvcm0ocHJvZHVjdDogU2NQcm9kdWN0KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLndhcmVob3VzZXMkLnBpcGUobWFwKCh3YXJlaG91c2VzKSA9PiB3YXJlaG91c2VzLmV2ZXJ5KCh3YXJlaG91c2UpID0+IHByb2R1Y3QuaXNXYXJlaG91c2VTdG9ja0V4aXN0KHdhcmVob3VzZS5pZCkpKSk7XG4gICAgfVxufVxuIl19