@snabcentr/client-ui 1.18.1 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (301) hide show
  1. package/accordion/sc-accordion-content.directive.d.ts +2 -2
  2. package/accordion/sc-accordion.component.d.ts +4 -4
  3. package/accordion/sc-accordion.module.d.ts +2 -2
  4. package/auth/index.d.ts +2 -1
  5. package/auth/interfaces/{ApiErrorResponse.d.ts → api-error-response.d.ts} +1 -3
  6. package/auth/interfaces/index.d.ts +3 -0
  7. package/auth/interfaces/sc-bank-account-form-group.d.ts +11 -0
  8. package/auth/interfaces/sc-contact-form-group.d.ts +10 -0
  9. package/auth/sc-auth.module.d.ts +14 -8
  10. package/auth/sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component.d.ts +5 -9
  11. package/auth/sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component.d.ts +4 -9
  12. package/auth/sc-sign-in-form/sc-sign-in-form.component.d.ts +9 -5
  13. package/auth/sign-up-form/sc-sign-up-form.component.d.ts +153 -0
  14. package/banner/sc-banner.component.d.ts +9 -5
  15. package/banner/sc-banner.module.d.ts +5 -4
  16. package/brands-list/index.d.ts +2 -0
  17. package/brands-list/sc-brands-list.component.d.ts +15 -0
  18. package/brands-list/sc-brands-list.module.d.ts +12 -0
  19. package/cart/cart-item-mobile/sc-cart-item-mobile.component.d.ts +16 -16
  20. package/cart/sc-cart.module.d.ts +3 -3
  21. package/catalog/categories-list/sc-categories-list.component.d.ts +9 -3
  22. package/catalog/category-card/sc-category-card.component.d.ts +1 -1
  23. package/catalog/input-quantity/sc-input-quantity.component.d.ts +6 -14
  24. package/catalog/price-card/sc-price-card.component.d.ts +11 -105
  25. package/catalog/price-history/sc-price-history.component.d.ts +11 -5
  26. package/catalog/price-list-pagination/sc-price-list-pagination.component.d.ts +10 -5
  27. package/catalog/price-warehouse-stock/sc-price-warehouse-stock.component.d.ts +1 -1
  28. package/catalog/sc-catalog.module.d.ts +5 -4
  29. package/catalog/sc-favorite-btn/sc-favorite-btn.component.d.ts +1 -1
  30. package/contacts/add-contact-dialog/sc-add-contact-dialog.component.d.ts +11 -6
  31. package/contacts/contacts-accordion/sc-contacts-accordion.component.d.ts +1 -1
  32. package/contacts/new-contact-form/sc-new-contact-form.component.d.ts +1 -1
  33. package/contacts/sc-contacts.module.d.ts +6 -1
  34. package/contragents/add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component.d.ts +3 -3
  35. package/contragents/add-contragent-dialog/sc-add-contragent-dialog.component.d.ts +23 -15
  36. package/contragents/contragents-accordion/contragents-accordion-item/sc-contragents-accordion-item.component.d.ts +1 -1
  37. package/contragents/contragents-accordion/sc-contragents-accordion.component.d.ts +1 -1
  38. package/contragents/new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component.d.ts +1 -1
  39. package/contragents/new-contragent-form/sc-new-contragent-form.component.d.ts +31 -16
  40. package/contragents/sc-contragents.module.d.ts +6 -4
  41. package/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.d.ts +83 -8
  42. package/delivery-address/delivery-address-accordion/delivery-address-accordion-item/sc-delivery-address-accordion-item.component.d.ts +1 -1
  43. package/delivery-address/delivery-address-accordion/sc-delivery-address-accordion.component.d.ts +1 -1
  44. package/delivery-address/sc-delivery-address.module.d.ts +4 -2
  45. package/directives/abstract-price-card/abstract-sc-price-card.directive.d.ts +107 -0
  46. package/directives/index.d.ts +6 -2
  47. package/directives/next-input-focus/sc-next-input-focus.directive.d.ts +18 -0
  48. package/directives/next-input-focus/sc-next-input-focus.module.d.ts +10 -0
  49. package/directives/tel-link/sc-tel-link.directive.d.ts +27 -0
  50. package/directives/tel-link/sc-tel-link.module.d.ts +11 -0
  51. package/directives/terminal-link/sc-terminal-link.directive.d.ts +34 -0
  52. package/esm2022/accordion/sc-accordion-content.directive.mjs +17 -0
  53. package/esm2022/accordion/sc-accordion.component.mjs +88 -0
  54. package/esm2022/accordion/sc-accordion.module.mjs +26 -0
  55. package/esm2022/auth/index.mjs +8 -0
  56. package/esm2022/auth/interfaces/api-error-response.mjs +2 -0
  57. package/esm2022/auth/interfaces/index.mjs +4 -0
  58. package/esm2022/auth/interfaces/sc-bank-account-form-group.mjs +2 -0
  59. package/esm2022/auth/interfaces/sc-contact-form-group.mjs +2 -0
  60. package/esm2022/auth/sc-auth.module.mjs +98 -0
  61. package/esm2022/auth/sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component.mjs +72 -0
  62. package/esm2022/auth/sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component.mjs +70 -0
  63. package/esm2022/auth/sc-sign-in-form/sc-sign-in-form.component.mjs +89 -0
  64. package/esm2022/auth/sign-up-form/sc-sign-up-form.component.mjs +321 -0
  65. package/esm2022/banner/sc-banner.component.mjs +234 -0
  66. package/esm2022/banner/sc-banner.module.mjs +29 -0
  67. package/esm2022/brands-list/index.mjs +3 -0
  68. package/esm2022/brands-list/sc-brands-list.component.mjs +24 -0
  69. package/esm2022/brands-list/sc-brands-list.module.mjs +22 -0
  70. package/esm2022/cart/cart-item-mobile/sc-cart-item-mobile.component.mjs +121 -0
  71. package/esm2022/cart/sc-cart.module.mjs +54 -0
  72. package/esm2022/catalog/categories-list/sc-categories-list.component.mjs +92 -0
  73. package/esm2022/catalog/category-card/sc-category-card.component.mjs +120 -0
  74. package/esm2022/catalog/input-quantity/sc-input-quantity.component.mjs +141 -0
  75. package/esm2022/catalog/price-card/sc-price-card.component.mjs +64 -0
  76. package/esm2022/catalog/price-history/sc-price-history.component.mjs +126 -0
  77. package/esm2022/catalog/price-list-pagination/sc-price-list-pagination.component.mjs +49 -0
  78. package/{esm2020 → esm2022}/catalog/price-warehouse-stock/sc-price-warehouse-stock.component.mjs +6 -6
  79. package/esm2022/catalog/sc-catalog.module.mjs +120 -0
  80. package/esm2022/catalog/sc-favorite-btn/sc-favorite-btn.component.mjs +42 -0
  81. package/esm2022/contacts/add-contact-dialog/sc-add-contact-dialog.component.mjs +89 -0
  82. package/esm2022/contacts/contacts-accordion/sc-contacts-accordion.component.mjs +38 -0
  83. package/esm2022/contacts/new-contact-form/sc-new-contact-form.component.mjs +30 -0
  84. package/esm2022/contacts/sc-contacts.module.mjs +88 -0
  85. package/esm2022/contragents/add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component.mjs +80 -0
  86. package/esm2022/contragents/add-contragent-dialog/sc-add-contragent-dialog.component.mjs +262 -0
  87. package/esm2022/contragents/contragents-accordion/contragents-accordion-item/sc-contragents-accordion-item.component.mjs +75 -0
  88. package/{esm2020 → esm2022}/contragents/contragents-accordion/sc-contragents-accordion.component.mjs +6 -6
  89. package/esm2022/contragents/new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component.mjs +64 -0
  90. package/esm2022/contragents/new-contragent-form/sc-new-contragent-form.component.mjs +220 -0
  91. package/esm2022/contragents/sc-contragents.module.mjs +110 -0
  92. package/esm2022/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.mjs +230 -0
  93. package/{esm2020 → esm2022}/delivery-address/delivery-address-accordion/delivery-address-accordion-item/sc-delivery-address-accordion-item.component.mjs +6 -6
  94. package/{esm2020 → esm2022}/delivery-address/delivery-address-accordion/sc-delivery-address-accordion.component.mjs +6 -6
  95. package/esm2022/delivery-address/sc-delivery-address.module.mjs +84 -0
  96. package/esm2022/directives/abstract-price-card/abstract-sc-price-card.directive.mjs +131 -0
  97. package/esm2022/directives/index.mjs +7 -0
  98. package/esm2022/directives/next-input-focus/sc-next-input-focus.directive.mjs +43 -0
  99. package/esm2022/directives/next-input-focus/sc-next-input-focus.module.mjs +19 -0
  100. package/esm2022/directives/tel-link/sc-tel-link.directive.mjs +58 -0
  101. package/esm2022/directives/tel-link/sc-tel-link.module.mjs +20 -0
  102. package/esm2022/directives/terminal-link/sc-terminal-link.directive.mjs +69 -0
  103. package/esm2022/files/directives/tree-top.directive.mjs +63 -0
  104. package/{esm2020 → esm2022}/files/directives/tree.directive.mjs +5 -5
  105. package/esm2022/files/file-tree-item/file-tree-item.component.mjs +18 -0
  106. package/esm2022/files/files-and-documents/files-and-documents.component.mjs +60 -0
  107. package/esm2022/files/files-and-documents.module.mjs +27 -0
  108. package/esm2022/files/services/tree-icon.service.mjs +49 -0
  109. package/{esm2020 → esm2022}/files/services/tree-loader.service.mjs +5 -5
  110. package/esm2022/form-fields/addresses-selection-field/sc-addresses-selection-field.component.mjs +128 -0
  111. package/esm2022/form-fields/form-fields.module.mjs +69 -0
  112. package/esm2022/form-fields/suggestion-field/sc-suggestion-field.component.mjs +134 -0
  113. package/{esm2020 → esm2022}/helpers/sc-px-converter.mjs +4 -4
  114. package/esm2022/helpers/sc-units-helper.mjs +45 -0
  115. package/{esm2020 → esm2022}/news/news-card/sc-news-card.component.mjs +4 -4
  116. package/{esm2020 → esm2022}/news/news-card-skeleton/sc-news-card-skeleton.component.mjs +4 -4
  117. package/{esm2020 → esm2022}/news/sc-news.module.mjs +5 -5
  118. package/esm2022/order/order-item-mobile/order-item-mobile.component.mjs +80 -0
  119. package/esm2022/order/sc-order.module.mjs +29 -0
  120. package/esm2022/order/sc-payment-status/sc-payment-status.component.mjs +35 -0
  121. package/esm2022/pipes/index.mjs +2 -0
  122. package/esm2022/pipes/sc-formatted-phone.mjs +34 -0
  123. package/esm2022/profile/sc-profile-accordions-content/sc-profile-accordions-content.component.mjs +182 -0
  124. package/esm2022/profile/sc-profile.module.mjs +77 -0
  125. package/{esm2020 → esm2022}/providers/index.mjs +1 -2
  126. package/esm2022/providers/scUserProviders.mjs +27 -0
  127. package/esm2022/public-api.mjs +30 -0
  128. package/esm2022/qrcode/index.mjs +3 -0
  129. package/esm2022/qrcode/qrcode-dialog/sc-qrcode-dialog.component.mjs +58 -0
  130. package/esm2022/qrcode/sc-qrcode.module.mjs +25 -0
  131. package/esm2022/samples/ask-to-sample-form/sc-ask-to-sample-form.component.mjs +37 -0
  132. package/esm2022/samples/index.mjs +5 -0
  133. package/esm2022/samples/interfaces/sc-i-preview-sample.mjs +2 -0
  134. package/esm2022/samples/preview-sample/sc-preview-sample.component.mjs +83 -0
  135. package/esm2022/samples/sc-sample.module.mjs +59 -0
  136. package/{esm2020 → esm2022}/share-button/sc-share-button.component.mjs +5 -5
  137. package/esm2022/share-button/sc-share-button.module.mjs +22 -0
  138. package/esm2022/user/index.mjs +6 -0
  139. package/esm2022/user/reset-user-password/sc-reset-user-password.component.mjs +71 -0
  140. package/esm2022/user/sc-user.module.mjs +89 -0
  141. package/esm2022/user/update-user-info-dialog/sc-update-user-info-dialog.component.mjs +117 -0
  142. package/esm2022/user/user-managers/sc-user-managers.component.mjs +41 -0
  143. package/esm2022/user/user-phone-approve-dialog/sc-user-phone-approve-dialog.component.mjs +102 -0
  144. package/{esm2020 → esm2022}/validators/index.mjs +2 -2
  145. package/esm2022/validators/sc-password-confirm-matching-validator.mjs +17 -0
  146. package/esm2022/validators/stepValidator.mjs +18 -0
  147. package/esm2022/verification/sc-verification.module.mjs +68 -0
  148. package/esm2022/verification/verification-phone-check-form/sc-verification-phone-check-form.component.mjs +198 -0
  149. package/fesm2022/snabcentr-client-ui.mjs +5710 -0
  150. package/fesm2022/snabcentr-client-ui.mjs.map +1 -0
  151. package/files/directives/tree-top.directive.d.ts +1 -1
  152. package/files/directives/tree.directive.d.ts +1 -1
  153. package/files/file-tree-item/file-tree-item.component.d.ts +3 -3
  154. package/files/files-and-documents/files-and-documents.component.d.ts +1 -1
  155. package/files/files-and-documents.module.d.ts +1 -1
  156. package/form-fields/addresses-selection-field/sc-addresses-selection-field.component.d.ts +17 -11
  157. package/form-fields/form-fields.module.d.ts +5 -3
  158. package/form-fields/suggestion-field/sc-suggestion-field.component.d.ts +10 -2
  159. package/helpers/sc-units-helper.d.ts +6 -6
  160. package/news/news-card/sc-news-card.component.d.ts +1 -1
  161. package/news/news-card-skeleton/sc-news-card-skeleton.component.d.ts +1 -1
  162. package/order/order-item-mobile/order-item-mobile.component.d.ts +9 -9
  163. package/order/sc-order.module.d.ts +4 -2
  164. package/order/sc-payment-status/sc-payment-status.component.d.ts +1 -1
  165. package/package.json +42 -45
  166. package/pipes/index.d.ts +1 -0
  167. package/pipes/sc-formatted-phone.d.ts +19 -0
  168. package/profile/sc-profile-accordions-content/sc-profile-accordions-content.component.d.ts +3 -3
  169. package/profile/sc-profile.module.d.ts +6 -4
  170. package/providers/index.d.ts +0 -1
  171. package/providers/scUserProviders.d.ts +2 -3
  172. package/public-api.d.ts +4 -0
  173. package/qrcode/index.d.ts +2 -0
  174. package/qrcode/qrcode-dialog/sc-qrcode-dialog.component.d.ts +37 -0
  175. package/qrcode/sc-qrcode.module.d.ts +14 -0
  176. package/samples/ask-to-sample-form/sc-ask-to-sample-form.component.d.ts +18 -0
  177. package/samples/index.d.ts +4 -0
  178. package/samples/interfaces/sc-i-preview-sample.d.ts +47 -0
  179. package/samples/preview-sample/sc-preview-sample.component.d.ts +48 -0
  180. package/samples/sc-sample.module.d.ts +19 -0
  181. package/share-button/sc-share-button.component.d.ts +1 -1
  182. package/share-button/sc-share-button.module.d.ts +1 -1
  183. package/styles/taiga/taiga-tailwind-preset.js +121 -0
  184. package/styles/taiga/variables.less +17 -14
  185. package/styles/tailwind/tailwind.scss +252 -61
  186. package/user/index.d.ts +1 -0
  187. package/user/reset-user-password/sc-reset-user-password.component.d.ts +3 -3
  188. package/user/sc-user.module.d.ts +12 -8
  189. package/user/update-user-info-dialog/sc-update-user-info-dialog.component.d.ts +13 -9
  190. package/user/user-managers/sc-user-managers.component.d.ts +26 -0
  191. package/user/user-phone-approve-dialog/sc-user-phone-approve-dialog.component.d.ts +13 -8
  192. package/validators/index.d.ts +1 -1
  193. package/validators/{scPasswordConfirmMatchingValidator.d.ts → sc-password-confirm-matching-validator.d.ts} +1 -1
  194. package/verification/sc-verification.module.d.ts +5 -4
  195. package/verification/verification-phone-check-form/sc-verification-phone-check-form.component.d.ts +18 -18
  196. package/directives/carousel-item-hidden/sc-carousel-item-hidden.directive.d.ts +0 -24
  197. package/directives/carousel-item-hidden/sc-carousel-item-hidden.module.d.ts +0 -11
  198. package/esm2020/accordion/sc-accordion-content.directive.mjs +0 -17
  199. package/esm2020/accordion/sc-accordion.component.mjs +0 -88
  200. package/esm2020/accordion/sc-accordion.module.mjs +0 -25
  201. package/esm2020/auth/index.mjs +0 -7
  202. package/esm2020/auth/interfaces/ApiErrorResponse.mjs +0 -2
  203. package/esm2020/auth/sc-auth.module.mjs +0 -79
  204. package/esm2020/auth/sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component.mjs +0 -76
  205. package/esm2020/auth/sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component.mjs +0 -75
  206. package/esm2020/auth/sc-sign-in-form/sc-sign-in-form.component.mjs +0 -71
  207. package/esm2020/banner/sc-banner.component.mjs +0 -232
  208. package/esm2020/banner/sc-banner.module.mjs +0 -26
  209. package/esm2020/cart/cart-item-mobile/sc-cart-item-mobile.component.mjs +0 -120
  210. package/esm2020/cart/sc-cart.module.mjs +0 -65
  211. package/esm2020/catalog/categories-list/sc-categories-list.component.mjs +0 -84
  212. package/esm2020/catalog/category-card/sc-category-card.component.mjs +0 -120
  213. package/esm2020/catalog/input-quantity/sc-input-quantity.component.mjs +0 -163
  214. package/esm2020/catalog/price-card/sc-price-card.component.mjs +0 -175
  215. package/esm2020/catalog/price-history/sc-price-history.component.mjs +0 -114
  216. package/esm2020/catalog/price-list-pagination/sc-price-list-pagination.component.mjs +0 -37
  217. package/esm2020/catalog/sc-catalog.module.mjs +0 -128
  218. package/esm2020/catalog/sc-favorite-btn/sc-favorite-btn.component.mjs +0 -41
  219. package/esm2020/contacts/add-contact-dialog/sc-add-contact-dialog.component.mjs +0 -71
  220. package/esm2020/contacts/contacts-accordion/sc-contacts-accordion.component.mjs +0 -35
  221. package/esm2020/contacts/new-contact-form/sc-new-contact-form.component.mjs +0 -28
  222. package/esm2020/contacts/sc-contacts.module.mjs +0 -92
  223. package/esm2020/contragents/add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component.mjs +0 -71
  224. package/esm2020/contragents/add-contragent-dialog/sc-add-contragent-dialog.component.mjs +0 -249
  225. package/esm2020/contragents/contragents-accordion/contragents-accordion-item/sc-contragents-accordion-item.component.mjs +0 -75
  226. package/esm2020/contragents/new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component.mjs +0 -61
  227. package/esm2020/contragents/new-contragent-form/sc-new-contragent-form.component.mjs +0 -183
  228. package/esm2020/contragents/sc-contragents.module.mjs +0 -103
  229. package/esm2020/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.mjs +0 -79
  230. package/esm2020/delivery-address/sc-delivery-address.module.mjs +0 -77
  231. package/esm2020/directives/carousel-item-hidden/sc-carousel-item-hidden.directive.mjs +0 -40
  232. package/esm2020/directives/carousel-item-hidden/sc-carousel-item-hidden.module.mjs +0 -21
  233. package/esm2020/directives/index.mjs +0 -3
  234. package/esm2020/files/directives/tree-top.directive.mjs +0 -63
  235. package/esm2020/files/file-tree-item/file-tree-item.component.mjs +0 -18
  236. package/esm2020/files/files-and-documents/files-and-documents.component.mjs +0 -60
  237. package/esm2020/files/files-and-documents.module.mjs +0 -26
  238. package/esm2020/files/services/tree-icon.service.mjs +0 -48
  239. package/esm2020/form-fields/addresses-selection-field/sc-addresses-selection-field.component.mjs +0 -122
  240. package/esm2020/form-fields/form-fields.module.mjs +0 -80
  241. package/esm2020/form-fields/suggestion-field/sc-suggestion-field.component.mjs +0 -116
  242. package/esm2020/helpers/sc-units-helper.mjs +0 -44
  243. package/esm2020/order/order-item-mobile/order-item-mobile.component.mjs +0 -79
  244. package/esm2020/order/sc-order.module.mjs +0 -25
  245. package/esm2020/order/sc-payment-status/sc-payment-status.component.mjs +0 -35
  246. package/esm2020/profile/sc-profile-accordions-content/sc-profile-accordions-content.component.mjs +0 -177
  247. package/esm2020/profile/sc-profile.module.mjs +0 -80
  248. package/esm2020/providers/productsPagination.mjs +0 -99
  249. package/esm2020/providers/scUserProviders.mjs +0 -30
  250. package/esm2020/public-api.mjs +0 -26
  251. package/esm2020/share-button/sc-share-button.module.mjs +0 -22
  252. package/esm2020/user/index.mjs +0 -5
  253. package/esm2020/user/reset-user-password/sc-reset-user-password.component.mjs +0 -67
  254. package/esm2020/user/sc-user.module.mjs +0 -88
  255. package/esm2020/user/update-user-info-dialog/sc-update-user-info-dialog.component.mjs +0 -105
  256. package/esm2020/user/user-phone-approve-dialog/sc-user-phone-approve-dialog.component.mjs +0 -91
  257. package/esm2020/validators/scPasswordConfirmMatchingValidator.mjs +0 -17
  258. package/esm2020/validators/stepValidator.mjs +0 -18
  259. package/esm2020/verification/sc-verification.module.mjs +0 -73
  260. package/esm2020/verification/verification-phone-check-form/sc-verification-phone-check-form.component.mjs +0 -184
  261. package/fesm2015/snabcentr-client-ui.mjs +0 -4861
  262. package/fesm2015/snabcentr-client-ui.mjs.map +0 -1
  263. package/fesm2020/snabcentr-client-ui.mjs +0 -4781
  264. package/fesm2020/snabcentr-client-ui.mjs.map +0 -1
  265. package/providers/productsPagination.d.ts +0 -43
  266. /package/{esm2020 → esm2022}/accordion/index.mjs +0 -0
  267. /package/{esm2020 → esm2022}/auth/enums/auth-method.mjs +0 -0
  268. /package/{esm2020 → esm2022}/banner/index.mjs +0 -0
  269. /package/{esm2020 → esm2022}/cart/index.mjs +0 -0
  270. /package/{esm2020 → esm2022}/catalog/index.mjs +0 -0
  271. /package/{esm2020 → esm2022}/contacts/index.mjs +0 -0
  272. /package/{esm2020 → esm2022}/contragents/index.mjs +0 -0
  273. /package/{esm2020 → esm2022}/delivery-address/index.mjs +0 -0
  274. /package/{esm2020 → esm2022}/files/directives/index.mjs +0 -0
  275. /package/{esm2020 → esm2022}/files/index.mjs +0 -0
  276. /package/{esm2020 → esm2022}/files/interfaces/tree-node.mjs +0 -0
  277. /package/{esm2020 → esm2022}/files/services/index.mjs +0 -0
  278. /package/{esm2020 → esm2022}/form-fields/index.mjs +0 -0
  279. /package/{esm2020 → esm2022}/helpers/index.mjs +0 -0
  280. /package/{esm2020 → esm2022}/icons/index.mjs +0 -0
  281. /package/{esm2020 → esm2022}/icons/sc-client-ui-icons-name.mjs +0 -0
  282. /package/{esm2020 → esm2022}/loader/index.mjs +0 -0
  283. /package/{esm2020 → esm2022}/loader/sc-i-loader.mjs +0 -0
  284. /package/{esm2020 → esm2022}/masks/index.mjs +0 -0
  285. /package/{esm2020 → esm2022}/masks/sc-account-number-mask.mjs +0 -0
  286. /package/{esm2020 → esm2022}/masks/sc-bic-mask.mjs +0 -0
  287. /package/{esm2020 → esm2022}/masks/sc-correspondent-account-mask.mjs +0 -0
  288. /package/{esm2020 → esm2022}/masks/sc-inn-mask.mjs +0 -0
  289. /package/{esm2020 → esm2022}/masks/sc-kpp-mask.mjs +0 -0
  290. /package/{esm2020 → esm2022}/masks/sc-okpo-mask.mjs +0 -0
  291. /package/{esm2020 → esm2022}/masks/sc-phone-verification-code-mask.mjs +0 -0
  292. /package/{esm2020 → esm2022}/news/index.mjs +0 -0
  293. /package/{esm2020 → esm2022}/order/index.mjs +0 -0
  294. /package/{esm2020 → esm2022}/profile/index.mjs +0 -0
  295. /package/{esm2020 → esm2022}/share-button/index.mjs +0 -0
  296. /package/{esm2020 → esm2022}/snabcentr-client-ui.mjs +0 -0
  297. /package/{esm2020 → esm2022}/tokens/index.mjs +0 -0
  298. /package/{esm2020 → esm2022}/tokens/sc-linear-values-token.mjs +0 -0
  299. /package/{esm2020 → esm2022}/validators/scBicValidator.mjs +0 -0
  300. /package/{esm2020 → esm2022}/validators/scCorrespondentAccountValidator.mjs +0 -0
  301. /package/{esm2020 → esm2022}/verification/index.mjs +0 -0
@@ -1,120 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, Output, ViewChild } from '@angular/core';
2
- import { FormControl } from '@angular/forms';
3
- import { SC_PATH_IMAGE_NOT_FOUND, SC_URLS } from '@snabcentr/client-core';
4
- import { skip } from 'rxjs';
5
- import { TuiPreviewDialogService } from '@taiga-ui/addon-preview';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "../../helpers/sc-units-helper";
8
- import * as i2 from "@angular/common";
9
- import * as i3 from "@taiga-ui/core";
10
- import * as i4 from "../../catalog/input-quantity/sc-input-quantity.component";
11
- import * as i5 from "../../catalog/price-warehouse-stock/sc-price-warehouse-stock.component";
12
- import * as i6 from "@angular/forms";
13
- import * as i7 from "@taiga-ui/addon-preview";
14
- import * as i8 from "@tinkoff/ng-polymorpheus";
15
- import * as i9 from "@taiga-ui/addon-commerce";
16
- /**
17
- * Компонент карточки элемента корзины.
18
- */
19
- export class ScCartItemMobileComponent {
20
- /**
21
- * Инициирует экземпляр класса {@link ScCartItemMobileComponent}.
22
- *
23
- * @param unitsHelper Экземпляр класса-помощника для работы со значениями единиц измерения товара.
24
- * @param previewDialogService Сервис диалогового окна предварительного просмотра.
25
- * @param urls Список ссылок на разделы backend'a.
26
- * @param pathImageNotFound Путь до изображения 'Товар не найден'.
27
- */
28
- constructor(unitsHelper, previewDialogService, urls, pathImageNotFound) {
29
- this.unitsHelper = unitsHelper;
30
- this.previewDialogService = previewDialogService;
31
- this.urls = urls;
32
- this.pathImageNotFound = pathImageNotFound;
33
- /**
34
- * {@link FormControl} поля ввода количества товара в корзине.
35
- */
36
- this.quantityControl = new FormControl(0, { updateOn: 'blur' });
37
- /**
38
- * {@link Observable} изменения количества товара в корзине.
39
- */
40
- this.quantityValueChanges = this.quantityControl.valueChanges.pipe(skip(1));
41
- /**
42
- * Событие нажатия на кнопку "Удалить из корзины".
43
- */
44
- this.clickDeleteEvent = new EventEmitter();
45
- /**
46
- * Событие нажатия на кнопку "Удалить из корзины".
47
- */
48
- this.clickSettingsEvent = new EventEmitter();
49
- /**
50
- * Событие нажатия на карточку.
51
- */
52
- this.clickCardEvent = new EventEmitter();
53
- }
54
- /**
55
- * Элемент корзины.
56
- */
57
- set cartItem(data) {
58
- this._cartItem = data;
59
- if (data) {
60
- this.quantityControl.patchValue(data.quantity);
61
- }
62
- }
63
- /**
64
- * Элемент корзины.
65
- */
66
- get cartItem() {
67
- return this._cartItem;
68
- }
69
- /**
70
- * Продукт элемента корзины.
71
- */
72
- get product() {
73
- return this.cartItem?.product;
74
- }
75
- /** @inheritDoc */
76
- ngOnInit() {
77
- this.quantityValueChanges = this.quantityControl.valueChanges;
78
- }
79
- /**
80
- * Отобразить спецификацию.
81
- */
82
- showSpecification() {
83
- this.previewDialogService.open(this.specificationPreviewRef || '').subscribe();
84
- }
85
- /**
86
- * Возвращает ссылку на изображение карточки товара.
87
- */
88
- getCardImage() {
89
- return this.product?.getImagePreview(this.urls.imgServerUrl) ?? this.urls.imgServerUrl + this.pathImageNotFound;
90
- }
91
- }
92
- ScCartItemMobileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScCartItemMobileComponent, deps: [{ token: i1.UnitsHelper }, { token: TuiPreviewDialogService }, { token: SC_URLS }, { token: SC_PATH_IMAGE_NOT_FOUND }], target: i0.ɵɵFactoryTarget.Component });
93
- ScCartItemMobileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScCartItemMobileComponent, selector: "sc-cart-item-mobile", inputs: { cartItem: "cartItem" }, outputs: { quantityValueChanges: "quantityValueChanges", clickDeleteEvent: "clickDeleteEvent", clickSettingsEvent: "clickSettingsEvent", clickCardEvent: "clickCardEvent" }, viewQueries: [{ propertyName: "specificationPreviewRef", first: true, predicate: ["specificationPreview"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"cartItem && product; else skeleton\">\n <!-- TODO: \u041D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u0430 \u0440\u0435\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F \u0444\u0443\u043D\u043A\u0446\u0438\u043E\u043D\u0430\u043B\u0430.\n <button tuiIconButton size=\"m\" icon=\"scIconVerticalThreeDots\" appearance=\"float\" tuiMode=\"onLight\" class=\"!absolute right-0 top-0\"></button> -->\n <div class=\"flex bg-white border border-tui-base-04 shadow-sc-2 rounded-xl min-w-[18rem] gap-2 p-2\">\n <div class=\"flex w-40 items-center\">\n <img (click)=\"clickCardEvent.emit()\" [src]=\"getCardImage()\" [alt]=\"product.name\" class=\"rounded-xl w-full max-h-full object-cover\" />\n </div>\n <div class=\"flex flex-col sm:flex-row sm:gap-5 items-center gap-2 justify-between w-full\">\n <div class=\"flex flex-col self-start max-w-full gap-1\">\n <a tuiLink (click)=\"clickCardEvent.emit()\">\n <span class=\"font-bold\">{{ product.name }}</span>\n </a>\n\n <div class=\"flex flex-wrap gap-y-1 gap-x-2 w-full text-xs text-tui-base-05\">\n <p *ngIf=\"product.pack\">\u041D\u043E\u0440\u043C\u0430 \u0443\u043F\u0430\u043A\u043E\u0432\u043A\u0438: {{ product.pack }}</p>\n <p>\u0410\u0440\u0442\u0438\u043A\u0443\u043B: {{ product.code }}</p>\n </div>\n\n <div class=\"flex flex-wrap items-center gap-y-1 gap-x-2 w-full\">\n <p *ngIf=\"!product.priceInRub\" class=\"font-bold\">{{ product.costString }}</p>\n <p class=\"font-bold text-xs text-tui-base-05\">{{ product.costRubString }}</p>\n <span *ngIf=\"product.discount\" class=\"flex items-center\">\n <span class=\"line-through\">{{ product.discountCostString }}</span> &nbsp;\n <span class=\"text-tui-success-fill font-bold\"> -{{ product.discount.percent }}% </span>\n <tui-svg src=\"tuiIconInfoLarge\" [tuiHint]=\"discountHint\" [tuiHintShowDelay]=\"100\" tuiHintDirection=\"top\" class=\"!text-xs !h-4\"></tui-svg>\n <ng-template #discountHint>\n <div class=\"font-bold\">{{ product.discount.name }}</div>\n <div *ngIf=\"product.discount.expiredAt as expiredAt\">\u0414\u0430\u0442\u0430 \u043E\u043A\u043E\u043D\u0447\u0430\u043D\u0438\u044F: {{ expiredAt }}</div>\n </ng-template>\n </span>\n </div>\n\n <sc-price-warehouse-stock [product]=\"product\"></sc-price-warehouse-stock>\n\n <div *ngIf=\"cartItem.height || cartItem.length || cartItem.width\" class=\"flex gap-1 items-center\">\n <button\n tuiIconButton\n icon=\"tuiIconSettings\"\n (click)=\"clickSettingsEvent.emit()\"\n size=\"s\"\n appearance=\"secondary\"\n tuiMode=\"onLight\"\n class=\"mr-2 !self-center\"\n ></button>\n <div class=\"flex flex-wrap gap-x-2 font-thin text-xs text-tui-base-04\">\n <p *ngIf=\"cartItem.marker\">\u041C\u0430\u0440\u043A\u0438\u0440\u043E\u0432\u043A\u0430: {{ cartItem.marker }}</p>\n <p *ngIf=\"cartItem.width\">\u0428\u0438\u0440\u0438\u043D\u0430: {{ cartItem.width }} \u043C.</p>\n <ng-container *ngIf=\"cartItem.height; else length\">\n <p>\u0412\u044B\u0441\u043E\u0442\u0430: {{ cartItem.height }} \u043C.</p>\n </ng-container>\n <ng-template #length>\n <p *ngIf=\"cartItem.length\">\u0414\u043B\u0438\u043D\u0430: {{ cartItem.length }} \u043C.</p>\n </ng-template>\n </div>\n </div>\n\n <a tuiLink *ngIf=\"cartItem.specificationImgUrl\" (click)=\"showSpecification()\">\u0421\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F</a>\n <ng-template #specificationPreview let-preview>\n <tui-preview [rotatable]=\"false\" [zoomable]=\"false\">\n <img *polymorpheusOutlet=\"cartItem.specificationImgUrl as src\" alt=\"preview\" [src]=\"cartItem.specificationImgUrl\" />\n <button icon=\"tuiIconClose\" title=\"Close\" tuiIconButton tuiPreviewAction type=\"button\" (click)=\"preview.complete()\"></button>\n </tui-preview>\n </ng-template>\n </div>\n <div class=\"flex flex-col self-start gap-1 sm:mr-9 sm:self-center\">\n <div class=\"flex gap-2\">\n <sc-input-quantity\n #inputQuantity\n *ngIf=\"quantityControl\"\n [formControl]=\"quantityControl\"\n [showCross]=\"false\"\n size=\"s\"\n [step]=\"unitsHelper.productMultiplicity(product)\"\n (keydown.enter)=\"inputQuantity.nativeFocusableElement?.blur()\"\n class=\"w-28\"\n ></sc-input-quantity>\n <button tuiIconButton icon=\"tuiIconTrash2\" shape=\"rounded\" size=\"xs\" (click)=\"clickDeleteEvent.emit()\"></button>\n </div>\n <p class=\"font-bold text-tui-text-01 text-sm\">\u0418\u0442\u043E\u0433\u043E: {{ cartItem.costRub | tuiFormatNumber }} {{ 'RUB' | tuiCurrency }}</p>\n </div>\n </div>\n </div>\n</ng-container>\n\n<ng-template #skeleton>\n <div class=\"flex gap-2 w-full\">\n <div class=\"h-20 w-20 bg-tui-base-02 rounded-xl\"></div>\n <div class=\"flex flex-col grow gap-2.5 bg-white\">\n <div class=\"w-full h-4 rounded-xl bg-tui-base-02\"></div>\n <div class=\"w-3/5 h-4 rounded-xl bg-tui-base-02\"></div>\n <div class=\"w-4/5 h-4 rounded-xl bg-tui-base-02\"></div>\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.TuiLinkComponent, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo", "icon", "iconAlign", "iconRotated", "mode"], exportAs: ["tuiLink"] }, { kind: "component", type: i4.ScInputQuantityComponent, selector: "sc-input-quantity", inputs: ["step", "showLoader", "showCross", "appearance", "isDisabled", "size"], outputs: ["clickClearEvent"] }, { kind: "component", type: i5.ScPriceWarehouseStockComponent, selector: "sc-price-warehouse-stock", inputs: ["classList", "product", "withStockHint", "fromMain"] }, { kind: "component", type: i3.TuiButtonComponent, selector: "button[tuiButton], button[tuiIconButton], a[tuiButton], a[tuiIconButton]", inputs: ["appearance", "disabled", "icon", "iconRight", "shape", "showLoader", "size"] }, { kind: "directive", type: i3.TuiModeDirective, selector: "[tuiMode]", inputs: ["tuiMode"] }, { kind: "component", type: i3.TuiSvgComponent, selector: "tui-svg", inputs: ["src"] }, { kind: "directive", type: i3.TuiHintDirective, selector: "[tuiHint]:not(ng-container):not(ng-template)", inputs: ["tuiHint", "tuiHintContext", "tuiHintAppearance"] }, { kind: "directive", type: i3.TuiHintDriverDirective, selector: "[tuiHint]:not(ng-container):not(ng-template)" }, { kind: "directive", type: i3.TuiHintHoverDirective, selector: "[tuiHint]:not(ng-container):not(ng-template)", inputs: ["tuiHintShowDelay", "tuiHintHideDelay"], exportAs: ["tuiHintHover"] }, { kind: "directive", type: i3.TuiHintPositionDirective, selector: "[tuiHint]:not(ng-container):not(ng-template)", inputs: ["tuiHintDirection"] }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i7.TuiPreviewComponent, selector: "tui-preview", inputs: ["zoomable", "rotatable"] }, { kind: "directive", type: i7.TuiPreviewActionDirective, selector: "[tuiPreviewAction]" }, { kind: "directive", type: i8.PolymorpheusOutletDirective, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "pipe", type: i9.TuiCurrencyPipe, name: "tuiCurrency" }, { kind: "pipe", type: i3.TuiFormatNumberPipe, name: "tuiFormatNumber" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
94
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScCartItemMobileComponent, decorators: [{
95
- type: Component,
96
- args: [{ selector: 'sc-cart-item-mobile', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"cartItem && product; else skeleton\">\n <!-- TODO: \u041D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u0430 \u0440\u0435\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F \u0444\u0443\u043D\u043A\u0446\u0438\u043E\u043D\u0430\u043B\u0430.\n <button tuiIconButton size=\"m\" icon=\"scIconVerticalThreeDots\" appearance=\"float\" tuiMode=\"onLight\" class=\"!absolute right-0 top-0\"></button> -->\n <div class=\"flex bg-white border border-tui-base-04 shadow-sc-2 rounded-xl min-w-[18rem] gap-2 p-2\">\n <div class=\"flex w-40 items-center\">\n <img (click)=\"clickCardEvent.emit()\" [src]=\"getCardImage()\" [alt]=\"product.name\" class=\"rounded-xl w-full max-h-full object-cover\" />\n </div>\n <div class=\"flex flex-col sm:flex-row sm:gap-5 items-center gap-2 justify-between w-full\">\n <div class=\"flex flex-col self-start max-w-full gap-1\">\n <a tuiLink (click)=\"clickCardEvent.emit()\">\n <span class=\"font-bold\">{{ product.name }}</span>\n </a>\n\n <div class=\"flex flex-wrap gap-y-1 gap-x-2 w-full text-xs text-tui-base-05\">\n <p *ngIf=\"product.pack\">\u041D\u043E\u0440\u043C\u0430 \u0443\u043F\u0430\u043A\u043E\u0432\u043A\u0438: {{ product.pack }}</p>\n <p>\u0410\u0440\u0442\u0438\u043A\u0443\u043B: {{ product.code }}</p>\n </div>\n\n <div class=\"flex flex-wrap items-center gap-y-1 gap-x-2 w-full\">\n <p *ngIf=\"!product.priceInRub\" class=\"font-bold\">{{ product.costString }}</p>\n <p class=\"font-bold text-xs text-tui-base-05\">{{ product.costRubString }}</p>\n <span *ngIf=\"product.discount\" class=\"flex items-center\">\n <span class=\"line-through\">{{ product.discountCostString }}</span> &nbsp;\n <span class=\"text-tui-success-fill font-bold\"> -{{ product.discount.percent }}% </span>\n <tui-svg src=\"tuiIconInfoLarge\" [tuiHint]=\"discountHint\" [tuiHintShowDelay]=\"100\" tuiHintDirection=\"top\" class=\"!text-xs !h-4\"></tui-svg>\n <ng-template #discountHint>\n <div class=\"font-bold\">{{ product.discount.name }}</div>\n <div *ngIf=\"product.discount.expiredAt as expiredAt\">\u0414\u0430\u0442\u0430 \u043E\u043A\u043E\u043D\u0447\u0430\u043D\u0438\u044F: {{ expiredAt }}</div>\n </ng-template>\n </span>\n </div>\n\n <sc-price-warehouse-stock [product]=\"product\"></sc-price-warehouse-stock>\n\n <div *ngIf=\"cartItem.height || cartItem.length || cartItem.width\" class=\"flex gap-1 items-center\">\n <button\n tuiIconButton\n icon=\"tuiIconSettings\"\n (click)=\"clickSettingsEvent.emit()\"\n size=\"s\"\n appearance=\"secondary\"\n tuiMode=\"onLight\"\n class=\"mr-2 !self-center\"\n ></button>\n <div class=\"flex flex-wrap gap-x-2 font-thin text-xs text-tui-base-04\">\n <p *ngIf=\"cartItem.marker\">\u041C\u0430\u0440\u043A\u0438\u0440\u043E\u0432\u043A\u0430: {{ cartItem.marker }}</p>\n <p *ngIf=\"cartItem.width\">\u0428\u0438\u0440\u0438\u043D\u0430: {{ cartItem.width }} \u043C.</p>\n <ng-container *ngIf=\"cartItem.height; else length\">\n <p>\u0412\u044B\u0441\u043E\u0442\u0430: {{ cartItem.height }} \u043C.</p>\n </ng-container>\n <ng-template #length>\n <p *ngIf=\"cartItem.length\">\u0414\u043B\u0438\u043D\u0430: {{ cartItem.length }} \u043C.</p>\n </ng-template>\n </div>\n </div>\n\n <a tuiLink *ngIf=\"cartItem.specificationImgUrl\" (click)=\"showSpecification()\">\u0421\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F</a>\n <ng-template #specificationPreview let-preview>\n <tui-preview [rotatable]=\"false\" [zoomable]=\"false\">\n <img *polymorpheusOutlet=\"cartItem.specificationImgUrl as src\" alt=\"preview\" [src]=\"cartItem.specificationImgUrl\" />\n <button icon=\"tuiIconClose\" title=\"Close\" tuiIconButton tuiPreviewAction type=\"button\" (click)=\"preview.complete()\"></button>\n </tui-preview>\n </ng-template>\n </div>\n <div class=\"flex flex-col self-start gap-1 sm:mr-9 sm:self-center\">\n <div class=\"flex gap-2\">\n <sc-input-quantity\n #inputQuantity\n *ngIf=\"quantityControl\"\n [formControl]=\"quantityControl\"\n [showCross]=\"false\"\n size=\"s\"\n [step]=\"unitsHelper.productMultiplicity(product)\"\n (keydown.enter)=\"inputQuantity.nativeFocusableElement?.blur()\"\n class=\"w-28\"\n ></sc-input-quantity>\n <button tuiIconButton icon=\"tuiIconTrash2\" shape=\"rounded\" size=\"xs\" (click)=\"clickDeleteEvent.emit()\"></button>\n </div>\n <p class=\"font-bold text-tui-text-01 text-sm\">\u0418\u0442\u043E\u0433\u043E: {{ cartItem.costRub | tuiFormatNumber }} {{ 'RUB' | tuiCurrency }}</p>\n </div>\n </div>\n </div>\n</ng-container>\n\n<ng-template #skeleton>\n <div class=\"flex gap-2 w-full\">\n <div class=\"h-20 w-20 bg-tui-base-02 rounded-xl\"></div>\n <div class=\"flex flex-col grow gap-2.5 bg-white\">\n <div class=\"w-full h-4 rounded-xl bg-tui-base-02\"></div>\n <div class=\"w-3/5 h-4 rounded-xl bg-tui-base-02\"></div>\n <div class=\"w-4/5 h-4 rounded-xl bg-tui-base-02\"></div>\n </div>\n </div>\n</ng-template>\n" }]
97
- }], ctorParameters: function () { return [{ type: i1.UnitsHelper }, { type: i7.TuiPreviewDialogService, decorators: [{
98
- type: Inject,
99
- args: [TuiPreviewDialogService]
100
- }] }, { type: undefined, decorators: [{
101
- type: Inject,
102
- args: [SC_URLS]
103
- }] }, { type: undefined, decorators: [{
104
- type: Inject,
105
- args: [SC_PATH_IMAGE_NOT_FOUND]
106
- }] }]; }, propDecorators: { specificationPreviewRef: [{
107
- type: ViewChild,
108
- args: ['specificationPreview']
109
- }], cartItem: [{
110
- type: Input
111
- }], quantityValueChanges: [{
112
- type: Output
113
- }], clickDeleteEvent: [{
114
- type: Output
115
- }], clickSettingsEvent: [{
116
- type: Output
117
- }], clickCardEvent: [{
118
- type: Output
119
- }] } });
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2FydC1pdGVtLW1vYmlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvY2FydC9jYXJ0LWl0ZW0tbW9iaWxlL3NjLWNhcnQtaXRlbS1tb2JpbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NhcnQvY2FydC1pdGVtLW1vYmlsZS9zYy1jYXJ0LWl0ZW0tbW9iaWxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFlLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4SSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE9BQU8sRUFBa0MsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRyxPQUFPLEVBQWMsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7Ozs7OztBQUlsRTs7R0FFRztBQU1ILE1BQU0sT0FBTyx5QkFBeUI7SUFtRWxDOzs7Ozs7O09BT0c7SUFDSCxZQUNvQixXQUF3QixFQUV2QixvQkFBNkMsRUFDNUIsSUFBYSxFQUNHLGlCQUF5QjtRQUozRCxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUV2Qix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXlCO1FBQzVCLFNBQUksR0FBSixJQUFJLENBQVM7UUFDRyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQVE7UUFwRS9FOztXQUVHO1FBQ0ksb0JBQWUsR0FBK0IsSUFBSSxXQUFXLENBQWdCLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBcUI3Rzs7V0FFRztRQUVJLHlCQUFvQixHQUE4QixJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFekc7O1dBRUc7UUFFSSxxQkFBZ0IsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUV2RTs7V0FFRztRQUVJLHVCQUFrQixHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRXpFOztXQUVHO1FBRUksbUJBQWMsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQXVCbEUsQ0FBQztJQWhFSjs7T0FFRztJQUNILElBQ1csUUFBUSxDQUFDLElBQTRCO1FBQzVDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBRXRCLElBQUksSUFBSSxFQUFFO1lBQ04sSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ2xEO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxRQUFRO1FBQ2YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUEwQkQ7O09BRUc7SUFDSCxJQUFXLE9BQU87UUFDZCxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDO0lBQ2xDLENBQUM7SUFrQkQsa0JBQWtCO0lBQ1gsUUFBUTtRQUNYLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQztJQUNsRSxDQUFDO0lBRUQ7O09BRUc7SUFDSSxpQkFBaUI7UUFDcEIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsdUJBQXVCLElBQUksRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkYsQ0FBQztJQUVEOztPQUVHO0lBQ0ksWUFBWTtRQUNmLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDcEgsQ0FBQzs7c0hBcEdRLHlCQUF5Qiw2Q0E2RXRCLHVCQUF1QixhQUV2QixPQUFPLGFBQ1AsdUJBQXVCOzBHQWhGMUIseUJBQXlCLDJZQ2hCdEMseXFNQThGQTsyRkQ5RWEseUJBQXlCO2tCQUxyQyxTQUFTOytCQUNJLHFCQUFxQixtQkFFZCx1QkFBdUIsQ0FBQyxNQUFNOzswQkErRTFDLE1BQU07MkJBQUMsdUJBQXVCOzswQkFFOUIsTUFBTTsyQkFBQyxPQUFPOzswQkFDZCxNQUFNOzJCQUFDLHVCQUF1Qjs0Q0F0RWxCLHVCQUF1QjtzQkFEdkMsU0FBUzt1QkFBQyxzQkFBc0I7Z0JBWXRCLFFBQVE7c0JBRGxCLEtBQUs7Z0JBb0JDLG9CQUFvQjtzQkFEMUIsTUFBTTtnQkFPQSxnQkFBZ0I7c0JBRHRCLE1BQU07Z0JBT0Esa0JBQWtCO3NCQUR4QixNQUFNO2dCQU9BLGNBQWM7c0JBRHBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEluamVjdCwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNDX1BBVEhfSU1BR0VfTk9UX0ZPVU5ELCBTQ19VUkxTLCBTY0NhcnRJdGVtLCBTY0lVcmxzLCBTY1Byb2R1Y3QgfSBmcm9tICdAc25hYmNlbnRyL2NsaWVudC1jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIHNraXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFR1aVByZXZpZXdEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnQHRhaWdhLXVpL2FkZG9uLXByZXZpZXcnO1xuaW1wb3J0IHsgVHVpRGlhbG9nQ29udGV4dCB9IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7IFVuaXRzSGVscGVyIH0gZnJvbSAnLi4vLi4vaGVscGVycy9zYy11bml0cy1oZWxwZXInO1xuXG4vKipcbiAqINCa0L7QvNC/0L7QvdC10L3RgiDQutCw0YDRgtC+0YfQutC4INGN0LvQtdC80LXQvdGC0LAg0LrQvtGA0LfQuNC90YsuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnc2MtY2FydC1pdGVtLW1vYmlsZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NjLWNhcnQtaXRlbS1tb2JpbGUuY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFNjQ2FydEl0ZW1Nb2JpbGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIC8qKlxuICAgICAqINCt0LvQtdC80LXQvdGCINC60L7RgNC30LjQvdGLLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2NhcnRJdGVtPzogU2NDYXJ0SXRlbTtcblxuICAgIC8qKlxuICAgICAqINCh0YHRi9C70LrQsCDQvdCwINC/0YDQtdC00YHRgtCw0LLQu9C10L3QuNC1INGB0L/QtdGG0LjRhNC40LrQsNGG0LjQuC5cbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKCdzcGVjaWZpY2F0aW9uUHJldmlldycpXG4gICAgcHJpdmF0ZSByZWFkb25seSBzcGVjaWZpY2F0aW9uUHJldmlld1JlZj86IFRlbXBsYXRlUmVmPFR1aURpYWxvZ0NvbnRleHQ+O1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIEZvcm1Db250cm9sfSDQv9C+0LvRjyDQstCy0L7QtNCwINC60L7Qu9C40YfQtdGB0YLQstCwINGC0L7QstCw0YDQsCDQsiDQutC+0YDQt9C40L3QtS5cbiAgICAgKi9cbiAgICBwdWJsaWMgcXVhbnRpdHlDb250cm9sOiBGb3JtQ29udHJvbDxudW1iZXIgfCBudWxsPiA9IG5ldyBGb3JtQ29udHJvbDxudW1iZXIgfCBudWxsPigwLCB7IHVwZGF0ZU9uOiAnYmx1cicgfSk7XG5cbiAgICAvKipcbiAgICAgKiDQrdC70LXQvNC10L3RgiDQutC+0YDQt9C40L3Riy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgY2FydEl0ZW0oZGF0YTogU2NDYXJ0SXRlbSB8IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLl9jYXJ0SXRlbSA9IGRhdGE7XG5cbiAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICAgIHRoaXMucXVhbnRpdHlDb250cm9sLnBhdGNoVmFsdWUoZGF0YS5xdWFudGl0eSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQrdC70LXQvNC10L3RgiDQutC+0YDQt9C40L3Riy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGNhcnRJdGVtKCk6IFNjQ2FydEl0ZW0gfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2FydEl0ZW07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC40LfQvNC10L3QtdC90LjRjyDQutC+0LvQuNGH0LXRgdGC0LLQsCDRgtC+0LLQsNGA0LAg0LIg0LrQvtGA0LfQuNC90LUuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHF1YW50aXR5VmFsdWVDaGFuZ2VzOiBPYnNlcnZhYmxlPG51bWJlciB8IG51bGw+ID0gdGhpcy5xdWFudGl0eUNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoc2tpcCgxKSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LHRi9GC0LjQtSDQvdCw0LbQsNGC0LjRjyDQvdCwINC60L3QvtC/0LrRgyBcItCj0LTQsNC70LjRgtGMINC40Lcg0LrQvtGA0LfQuNC90YtcIi5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgY2xpY2tEZWxldGVFdmVudDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqXG4gICAgICog0KHQvtCx0YvRgtC40LUg0L3QsNC20LDRgtC40Y8g0L3QsCDQutC90L7Qv9C60YMgXCLQo9C00LDQu9C40YLRjCDQuNC3INC60L7RgNC30LjQvdGLXCIuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGNsaWNrU2V0dGluZ3NFdmVudDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqXG4gICAgICog0KHQvtCx0YvRgtC40LUg0L3QsNC20LDRgtC40Y8g0L3QsCDQutCw0YDRgtC+0YfQutGDLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjbGlja0NhcmRFdmVudDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC+0LTRg9C60YIg0Y3Qu9C10LzQtdC90YLQsCDQutC+0YDQt9C40L3Riy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHByb2R1Y3QoKTogU2NQcm9kdWN0IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FydEl0ZW0/LnByb2R1Y3Q7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JjQvdC40YbQuNC40YDRg9C10YIg0Y3QutC30LXQvNC/0LvRj9GAINC60LvQsNGB0YHQsCB7QGxpbmsgU2NDYXJ0SXRlbU1vYmlsZUNvbXBvbmVudH0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdW5pdHNIZWxwZXIg0K3QutC30LXQvNC/0LvRj9GAINC60LvQsNGB0YHQsC3Qv9C+0LzQvtGJ0L3QuNC60LAg0LTQu9GPINGA0LDQsdC+0YLRiyDRgdC+INC30L3QsNGH0LXQvdC40Y/QvNC4INC10LTQuNC90LjRhiDQuNC30LzQtdGA0LXQvdC40Y8g0YLQvtCy0LDRgNCwLlxuICAgICAqIEBwYXJhbSBwcmV2aWV3RGlhbG9nU2VydmljZSDQodC10YDQstC40YEg0LTQuNCw0LvQvtCz0L7QstC+0LPQviDQvtC60L3QsCDQv9GA0LXQtNCy0LDRgNC40YLQtdC70YzQvdC+0LPQviDQv9GA0L7RgdC80L7RgtGA0LAuXG4gICAgICogQHBhcmFtIHVybHMg0KHQv9C40YHQvtC6INGB0YHRi9C70L7QuiDQvdCwINGA0LDQt9C00LXQu9GLIGJhY2tlbmQnYS5cbiAgICAgKiBAcGFyYW0gcGF0aEltYWdlTm90Rm91bmQg0J/Rg9GC0Ywg0LTQviDQuNC30L7QsdGA0LDQttC10L3QuNGPICfQotC+0LLQsNGAINC90LUg0L3QsNC50LTQtdC9Jy5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyByZWFkb25seSB1bml0c0hlbHBlcjogVW5pdHNIZWxwZXIsXG4gICAgICAgIEBJbmplY3QoVHVpUHJldmlld0RpYWxvZ1NlcnZpY2UpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcHJldmlld0RpYWxvZ1NlcnZpY2U6IFR1aVByZXZpZXdEaWFsb2dTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KFNDX1VSTFMpIHByaXZhdGUgcmVhZG9ubHkgdXJsczogU2NJVXJscyxcbiAgICAgICAgQEluamVjdChTQ19QQVRIX0lNQUdFX05PVF9GT1VORCkgcHJpdmF0ZSByZWFkb25seSBwYXRoSW1hZ2VOb3RGb3VuZDogc3RyaW5nXG4gICAgKSB7fVxuXG4gICAgLyoqIEBpbmhlcml0RG9jICovXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnF1YW50aXR5VmFsdWVDaGFuZ2VzID0gdGhpcy5xdWFudGl0eUNvbnRyb2wudmFsdWVDaGFuZ2VzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCe0YLQvtCx0YDQsNC30LjRgtGMINGB0L/QtdGG0LjRhNC40LrQsNGG0LjRji5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2hvd1NwZWNpZmljYXRpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJldmlld0RpYWxvZ1NlcnZpY2Uub3Blbih0aGlzLnNwZWNpZmljYXRpb25QcmV2aWV3UmVmIHx8ICcnKS5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDRgdGB0YvQu9C60YMg0L3QsCDQuNC30L7QsdGA0LDQttC10L3QuNC1INC60LDRgNGC0L7Rh9C60Lgg0YLQvtCy0LDRgNCwLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDYXJkSW1hZ2UoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvZHVjdD8uZ2V0SW1hZ2VQcmV2aWV3KHRoaXMudXJscy5pbWdTZXJ2ZXJVcmwpID8/IHRoaXMudXJscy5pbWdTZXJ2ZXJVcmwgKyB0aGlzLnBhdGhJbWFnZU5vdEZvdW5kO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJjYXJ0SXRlbSAmJiBwcm9kdWN0OyBlbHNlIHNrZWxldG9uXCI+XG4gICAgPCEtLSBUT0RPOiDQndC10L7QsdGF0L7QtNC40LzQsCDRgNC10LDQu9C40LfQsNGG0LjRjyDRhNGD0L3QutGG0LjQvtC90LDQu9CwLlxuICAgIDxidXR0b24gdHVpSWNvbkJ1dHRvbiBzaXplPVwibVwiIGljb249XCJzY0ljb25WZXJ0aWNhbFRocmVlRG90c1wiIGFwcGVhcmFuY2U9XCJmbG9hdFwiIHR1aU1vZGU9XCJvbkxpZ2h0XCIgY2xhc3M9XCIhYWJzb2x1dGUgcmlnaHQtMCB0b3AtMFwiPjwvYnV0dG9uPiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBiZy13aGl0ZSBib3JkZXIgYm9yZGVyLXR1aS1iYXNlLTA0IHNoYWRvdy1zYy0yIHJvdW5kZWQteGwgbWluLXctWzE4cmVtXSBnYXAtMiBwLTJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggdy00MCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxpbWcgKGNsaWNrKT1cImNsaWNrQ2FyZEV2ZW50LmVtaXQoKVwiIFtzcmNdPVwiZ2V0Q2FyZEltYWdlKClcIiBbYWx0XT1cInByb2R1Y3QubmFtZVwiIGNsYXNzPVwicm91bmRlZC14bCB3LWZ1bGwgbWF4LWgtZnVsbCBvYmplY3QtY292ZXJcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgc206ZmxleC1yb3cgc206Z2FwLTUgaXRlbXMtY2VudGVyIGdhcC0yIGp1c3RpZnktYmV0d2VlbiB3LWZ1bGxcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIHNlbGYtc3RhcnQgbWF4LXctZnVsbCBnYXAtMVwiPlxuICAgICAgICAgICAgICAgIDxhIHR1aUxpbmsgKGNsaWNrKT1cImNsaWNrQ2FyZEV2ZW50LmVtaXQoKVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtYm9sZFwiPnt7IHByb2R1Y3QubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2E+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXdyYXAgZ2FwLXktMSBnYXAteC0yIHctZnVsbCB0ZXh0LXhzIHRleHQtdHVpLWJhc2UtMDVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHAgKm5nSWY9XCJwcm9kdWN0LnBhY2tcIj7QndC+0YDQvNCwINGD0L/QsNC60L7QstC60Lg6IHt7IHByb2R1Y3QucGFjayB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgPHA+0JDRgNGC0LjQutGD0Ls6IHt7IHByb2R1Y3QuY29kZSB9fTwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgZ2FwLXktMSBnYXAteC0yIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICA8cCAqbmdJZj1cIiFwcm9kdWN0LnByaWNlSW5SdWJcIiBjbGFzcz1cImZvbnQtYm9sZFwiPnt7IHByb2R1Y3QuY29zdFN0cmluZyB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJmb250LWJvbGQgdGV4dC14cyB0ZXh0LXR1aS1iYXNlLTA1XCI+e3sgcHJvZHVjdC5jb3N0UnViU3RyaW5nIH19PC9wPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInByb2R1Y3QuZGlzY291bnRcIiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxpbmUtdGhyb3VnaFwiPnt7IHByb2R1Y3QuZGlzY291bnRDb3N0U3RyaW5nIH19PC9zcGFuPiAmbmJzcDtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10dWktc3VjY2Vzcy1maWxsIGZvbnQtYm9sZFwiPiAte3sgcHJvZHVjdC5kaXNjb3VudC5wZXJjZW50IH19JSA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dHVpLXN2ZyBzcmM9XCJ0dWlJY29uSW5mb0xhcmdlXCIgW3R1aUhpbnRdPVwiZGlzY291bnRIaW50XCIgW3R1aUhpbnRTaG93RGVsYXldPVwiMTAwXCIgdHVpSGludERpcmVjdGlvbj1cInRvcFwiIGNsYXNzPVwiIXRleHQteHMgIWgtNFwiPjwvdHVpLXN2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGlzY291bnRIaW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb250LWJvbGRcIj57eyBwcm9kdWN0LmRpc2NvdW50Lm5hbWUgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicHJvZHVjdC5kaXNjb3VudC5leHBpcmVkQXQgYXMgZXhwaXJlZEF0XCI+0JTQsNGC0LAg0L7QutC+0L3Rh9Cw0L3QuNGPOiB7eyBleHBpcmVkQXQgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxzYy1wcmljZS13YXJlaG91c2Utc3RvY2sgW3Byb2R1Y3RdPVwicHJvZHVjdFwiPjwvc2MtcHJpY2Utd2FyZWhvdXNlLXN0b2NrPlxuXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNhcnRJdGVtLmhlaWdodCB8fCBjYXJ0SXRlbS5sZW5ndGggfHwgY2FydEl0ZW0ud2lkdGhcIiBjbGFzcz1cImZsZXggZ2FwLTEgaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR1aUljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJ0dWlJY29uU2V0dGluZ3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsaWNrU2V0dGluZ3NFdmVudC5lbWl0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwZWFyYW5jZT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0dWlNb2RlPVwib25MaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1yLTIgIXNlbGYtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXdyYXAgZ2FwLXgtMiBmb250LXRoaW4gdGV4dC14cyB0ZXh0LXR1aS1iYXNlLTA0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCAqbmdJZj1cImNhcnRJdGVtLm1hcmtlclwiPtCc0LDRgNC60LjRgNC+0LLQutCwOiB7eyBjYXJ0SXRlbS5tYXJrZXIgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCAqbmdJZj1cImNhcnRJdGVtLndpZHRoXCI+0KjQuNGA0LjQvdCwOiB7eyBjYXJ0SXRlbS53aWR0aCB9fSDQvC48L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2FydEl0ZW0uaGVpZ2h0OyBlbHNlIGxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPtCS0YvRgdC+0YLQsDoge3sgY2FydEl0ZW0uaGVpZ2h0IH19INC8LjwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNsZW5ndGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgKm5nSWY9XCJjYXJ0SXRlbS5sZW5ndGhcIj7QlNC70LjQvdCwOiB7eyBjYXJ0SXRlbS5sZW5ndGggfX0g0LwuPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8YSB0dWlMaW5rICpuZ0lmPVwiY2FydEl0ZW0uc3BlY2lmaWNhdGlvbkltZ1VybFwiIChjbGljayk9XCJzaG93U3BlY2lmaWNhdGlvbigpXCI+0KHQv9C10YbQuNGE0LjQutCw0YbQuNGPPC9hPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc3BlY2lmaWNhdGlvblByZXZpZXcgbGV0LXByZXZpZXc+XG4gICAgICAgICAgICAgICAgICAgIDx0dWktcHJldmlldyBbcm90YXRhYmxlXT1cImZhbHNlXCIgW3pvb21hYmxlXT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nICpwb2x5bW9ycGhldXNPdXRsZXQ9XCJjYXJ0SXRlbS5zcGVjaWZpY2F0aW9uSW1nVXJsIGFzIHNyY1wiIGFsdD1cInByZXZpZXdcIiBbc3JjXT1cImNhcnRJdGVtLnNwZWNpZmljYXRpb25JbWdVcmxcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBpY29uPVwidHVpSWNvbkNsb3NlXCIgdGl0bGU9XCJDbG9zZVwiIHR1aUljb25CdXR0b24gdHVpUHJldmlld0FjdGlvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInByZXZpZXcuY29tcGxldGUoKVwiPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L3R1aS1wcmV2aWV3PlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIHNlbGYtc3RhcnQgZ2FwLTEgc206bXItOSBzbTpzZWxmLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzYy1pbnB1dC1xdWFudGl0eVxuICAgICAgICAgICAgICAgICAgICAgICAgI2lucHV0UXVhbnRpdHlcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicXVhbnRpdHlDb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJxdWFudGl0eUNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dDcm9zc109XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwic1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3RlcF09XCJ1bml0c0hlbHBlci5wcm9kdWN0TXVsdGlwbGljaXR5KHByb2R1Y3QpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cImlucHV0UXVhbnRpdHkubmF0aXZlRm9jdXNhYmxlRWxlbWVudD8uYmx1cigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidy0yOFwiXG4gICAgICAgICAgICAgICAgICAgID48L3NjLWlucHV0LXF1YW50aXR5PlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR1aUljb25CdXR0b24gaWNvbj1cInR1aUljb25UcmFzaDJcIiBzaGFwZT1cInJvdW5kZWRcIiBzaXplPVwieHNcIiAoY2xpY2spPVwiY2xpY2tEZWxldGVFdmVudC5lbWl0KClcIj48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImZvbnQtYm9sZCB0ZXh0LXR1aS10ZXh0LTAxIHRleHQtc21cIj7QmNGC0L7Qs9C+OiB7eyBjYXJ0SXRlbS5jb3N0UnViIHwgdHVpRm9ybWF0TnVtYmVyIH19IHt7ICdSVUInIHwgdHVpQ3VycmVuY3kgfX08L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNza2VsZXRvbj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtMiB3LWZ1bGxcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImgtMjAgdy0yMCBiZy10dWktYmFzZS0wMiByb3VuZGVkLXhsXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdyb3cgZ2FwLTIuNSBiZy13aGl0ZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbCBoLTQgcm91bmRlZC14bCBiZy10dWktYmFzZS0wMlwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMy81IGgtNCByb3VuZGVkLXhsIGJnLXR1aS1iYXNlLTAyXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy00LzUgaC00IHJvdW5kZWQteGwgYmctdHVpLWJhc2UtMDJcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -1,65 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { ScCartItemMobileComponent } from './cart-item-mobile/sc-cart-item-mobile.component';
4
- import { TuiButtonModule, TuiFormatNumberPipeModule, TuiHintModule, TuiLinkModule, TuiModeModule, TuiSvgModule } from '@taiga-ui/core';
5
- import { ScCatalogModule } from '../catalog';
6
- import { FormsModule, ReactiveFormsModule } from '@angular/forms';
7
- import { TuiCurrencyPipeModule } from '@taiga-ui/addon-commerce';
8
- import { TuiPreviewModule } from '@taiga-ui/addon-preview';
9
- import { PolymorpheusModule } from '@tinkoff/ng-polymorpheus';
10
- import * as i0 from "@angular/core";
11
- /**
12
- * Модуль корзины.
13
- */
14
- export class ScCartModule {
15
- }
16
- ScCartModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScCartModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
17
- ScCartModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: ScCartModule, declarations: [ScCartItemMobileComponent], imports: [CommonModule,
18
- TuiLinkModule,
19
- ScCatalogModule,
20
- TuiButtonModule,
21
- TuiCurrencyPipeModule,
22
- TuiFormatNumberPipeModule,
23
- TuiModeModule,
24
- TuiSvgModule,
25
- TuiHintModule,
26
- FormsModule,
27
- ReactiveFormsModule,
28
- TuiPreviewModule,
29
- PolymorpheusModule], exports: [ScCartItemMobileComponent] });
30
- ScCartModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScCartModule, imports: [CommonModule,
31
- TuiLinkModule,
32
- ScCatalogModule,
33
- TuiButtonModule,
34
- TuiCurrencyPipeModule,
35
- TuiFormatNumberPipeModule,
36
- TuiModeModule,
37
- TuiSvgModule,
38
- TuiHintModule,
39
- FormsModule,
40
- ReactiveFormsModule,
41
- TuiPreviewModule,
42
- PolymorpheusModule] });
43
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScCartModule, decorators: [{
44
- type: NgModule,
45
- args: [{
46
- declarations: [ScCartItemMobileComponent],
47
- exports: [ScCartItemMobileComponent],
48
- imports: [
49
- CommonModule,
50
- TuiLinkModule,
51
- ScCatalogModule,
52
- TuiButtonModule,
53
- TuiCurrencyPipeModule,
54
- TuiFormatNumberPipeModule,
55
- TuiModeModule,
56
- TuiSvgModule,
57
- TuiHintModule,
58
- FormsModule,
59
- ReactiveFormsModule,
60
- TuiPreviewModule,
61
- PolymorpheusModule
62
- ]
63
- }]
64
- }] });
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2FydC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvY2FydC9zYy1jYXJ0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUM3RixPQUFPLEVBQUUsZUFBZSxFQUFFLHlCQUF5QixFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZJLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDN0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQUU5RDs7R0FFRztBQW9CSCxNQUFNLE9BQU8sWUFBWTs7eUdBQVosWUFBWTswR0FBWixZQUFZLGlCQWxCTix5QkFBeUIsYUFHcEMsWUFBWTtRQUNaLGFBQWE7UUFDYixlQUFlO1FBQ2YsZUFBZTtRQUNmLHFCQUFxQjtRQUNyQix5QkFBeUI7UUFDekIsYUFBYTtRQUNiLFlBQVk7UUFDWixhQUFhO1FBQ2IsV0FBVztRQUNYLG1CQUFtQjtRQUNuQixnQkFBZ0I7UUFDaEIsa0JBQWtCLGFBZFoseUJBQXlCOzBHQWlCMUIsWUFBWSxZQWZqQixZQUFZO1FBQ1osYUFBYTtRQUNiLGVBQWU7UUFDZixlQUFlO1FBQ2YscUJBQXFCO1FBQ3JCLHlCQUF5QjtRQUN6QixhQUFhO1FBQ2IsWUFBWTtRQUNaLGFBQWE7UUFDYixXQUFXO1FBQ1gsbUJBQW1CO1FBQ25CLGdCQUFnQjtRQUNoQixrQkFBa0I7MkZBR2IsWUFBWTtrQkFuQnhCLFFBQVE7bUJBQUM7b0JBQ04sWUFBWSxFQUFFLENBQUMseUJBQXlCLENBQUM7b0JBQ3pDLE9BQU8sRUFBRSxDQUFDLHlCQUF5QixDQUFDO29CQUNwQyxPQUFPLEVBQUU7d0JBQ0wsWUFBWTt3QkFDWixhQUFhO3dCQUNiLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixxQkFBcUI7d0JBQ3JCLHlCQUF5Qjt3QkFDekIsYUFBYTt3QkFDYixZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLGdCQUFnQjt3QkFDaEIsa0JBQWtCO3FCQUNyQjtpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgU2NDYXJ0SXRlbU1vYmlsZUNvbXBvbmVudCB9IGZyb20gJy4vY2FydC1pdGVtLW1vYmlsZS9zYy1jYXJ0LWl0ZW0tbW9iaWxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUdWlCdXR0b25Nb2R1bGUsIFR1aUZvcm1hdE51bWJlclBpcGVNb2R1bGUsIFR1aUhpbnRNb2R1bGUsIFR1aUxpbmtNb2R1bGUsIFR1aU1vZGVNb2R1bGUsIFR1aVN2Z01vZHVsZSB9IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7IFNjQ2F0YWxvZ01vZHVsZSB9IGZyb20gJy4uL2NhdGFsb2cnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBUdWlDdXJyZW5jeVBpcGVNb2R1bGUgfSBmcm9tICdAdGFpZ2EtdWkvYWRkb24tY29tbWVyY2UnO1xuaW1wb3J0IHsgVHVpUHJldmlld01vZHVsZSB9IGZyb20gJ0B0YWlnYS11aS9hZGRvbi1wcmV2aWV3JztcbmltcG9ydCB7IFBvbHltb3JwaGV1c01vZHVsZSB9IGZyb20gJ0B0aW5rb2ZmL25nLXBvbHltb3JwaGV1cyc7XG5cbi8qKlxuICog0JzQvtC00YPQu9GMINC60L7RgNC30LjQvdGLLlxuICovXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW1NjQ2FydEl0ZW1Nb2JpbGVDb21wb25lbnRdLFxuICAgIGV4cG9ydHM6IFtTY0NhcnRJdGVtTW9iaWxlQ29tcG9uZW50XSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgVHVpTGlua01vZHVsZSxcbiAgICAgICAgU2NDYXRhbG9nTW9kdWxlLFxuICAgICAgICBUdWlCdXR0b25Nb2R1bGUsXG4gICAgICAgIFR1aUN1cnJlbmN5UGlwZU1vZHVsZSxcbiAgICAgICAgVHVpRm9ybWF0TnVtYmVyUGlwZU1vZHVsZSxcbiAgICAgICAgVHVpTW9kZU1vZHVsZSxcbiAgICAgICAgVHVpU3ZnTW9kdWxlLFxuICAgICAgICBUdWlIaW50TW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgVHVpUHJldmlld01vZHVsZSxcbiAgICAgICAgUG9seW1vcnBoZXVzTW9kdWxlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBTY0NhcnRNb2R1bGUge31cbiJdfQ==
@@ -1,84 +0,0 @@
1
- import { __decorate } from "tslib";
2
- import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, Output, inject } from '@angular/core';
3
- import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
4
- import { SC_URLS } from '@snabcentr/client-core';
5
- import { TUI_IS_MOBILE, tuiPure } from '@taiga-ui/cdk';
6
- import { filter, tap } from 'rxjs';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@snabcentr/client-core";
9
- import * as i2 from "@angular/common";
10
- import * as i3 from "@taiga-ui/core";
11
- import * as i4 from "@taiga-ui/cdk";
12
- /**
13
- * Компонент списка категорий.
14
- */
15
- let ScCategoriesListComponent = class ScCategoriesListComponent {
16
- /**
17
- * Инициализирует экземпляр класса {@link ScCategoriesListComponent}.
18
- *
19
- * @param urls объект информации о базовом списке ссылок приложения.
20
- * @param favoriteService Сервис для работы с корзиной.
21
- * @param cdr Объект для работы с обнаружением изменений.
22
- */
23
- constructor(urls, favoriteService, cdr) {
24
- this.urls = urls;
25
- this.favoriteService = favoriteService;
26
- this.cdr = cdr;
27
- /**
28
- * Признак того, отображается этот компонент на мобильном устройстве или нет.
29
- */
30
- this.isMobile = inject(TUI_IS_MOBILE);
31
- /**
32
- * Событие нажатия на категорию.
33
- */
34
- this.clickCategoryEvent = new EventEmitter();
35
- }
36
- /** @inheritDoc */
37
- ngOnInit() {
38
- this.favoriteService.categories$
39
- .pipe(filter(() => !!this.categories && Boolean(this.categories.length) && 'id' in this.categories[0]), tap((categories) => {
40
- this.categories?.forEach(category => {
41
- category.isFavorite = categories.findIndex(item => category.id === item.id) !== -1;
42
- });
43
- }), untilDestroyed(this))
44
- .subscribe(() => this.cdr.markForCheck());
45
- }
46
- /**
47
- * Возвращает путь до изображения на сервере.
48
- *
49
- * @param imgPath путь, где хранится изображение.
50
- */
51
- getCategoryImage(imgPath) {
52
- return this.urls.imgServerUrl + '/' + imgPath;
53
- }
54
- /**
55
- * Проверяет наличие хотя бы одного изображения.
56
- *
57
- * @param categories Список категорий.
58
- */
59
- checkImagesExists(categories) {
60
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
61
- return categories.some((item) => item.properties?.image);
62
- }
63
- };
64
- ScCategoriesListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScCategoriesListComponent, deps: [{ token: SC_URLS }, { token: i1.ScFavoriteService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
65
- ScCategoriesListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScCategoriesListComponent, selector: "sc-categories-list", inputs: { categories: "categories" }, outputs: { clickCategoryEvent: "clickCategoryEvent" }, ngImport: i0, template: "<div class=\"grid grid-cols-[repeat(auto-fill,minmax(21rem,1fr))] gap-x-8 gap-y-2\">\n <ng-container *ngIf=\"categories; else categoriesSkeleton\">\n <button\n *ngFor=\"let item of $any(categories)\"\n class=\"group flex gap-2 py-1.5 px-3 bg-tui-base-02 rounded-xl h-11 items-center text-left hover-hover:hover:ring-2 hover-none:active:ring-2 ring-tui-primary duration-150\"\n (click)=\"clickCategoryEvent.emit(item)\"\n >\n <img *ngIf=\"item.properties?.image as image\" [src]=\"getCategoryImage(image)\" [alt]=\"item.name\" class=\"w-8 h-8 object-cover rounded bg-tui-base-03\" />\n <tui-svg *ngIf=\"!item.properties?.image && checkImagesExists(categories)\" src=\"tuiIconCameraOffLarge\" class=\"bg-tui-base-03 !w-8 !h-8 rounded text-tui-base-05\"></tui-svg>\n <div *tuiLet=\"\" class=\"flex grow truncate\">\n <p class=\"text-base font-bold truncate\">{{ item.name }}</p>\n <tui-svg *ngIf=\"item.isFavorite\" src=\"scIconFavoriteFill\" class=\"text-tui-primary !text-sm mr-auto\"></tui-svg>\n </div>\n <tui-svg src=\"tuiIconChevronRightLarge\" class=\"hover-hover:group-hover:text-tui-primary hover-none:group-active:text-tui-primary duration-150\"></tui-svg>\n </button>\n </ng-container>\n</div>\n\n<ng-template #categoriesSkeleton>\n <button\n *tuiRepeatTimes=\"let index of isMobile ? 3 : 6\"\n class=\"group flex gap-2 py-1.5 px-3 bg-tui-base-02 rounded-xl h-11 items-center text-left hover-hover:hover:ring-2 hover-none:active:ring-2 ring-tui-base-05 duration-150\"\n >\n <div class=\"w-8 h-8 tui-skeleton\"></div>\n <div class=\"h-4 grow tui-skeleton\"></div>\n <tui-svg src=\"tuiIconChevronRightLarge\" class=\"hover-hover:group-hover:text-tui-primary hover-none:group-active:text-tui-primary duration-150 tui-skeleton\"></tui-svg>\n </button>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.TuiSvgComponent, selector: "tui-svg", inputs: ["src"] }, { kind: "directive", type: i4.TuiLetDirective, selector: "[tuiLet]", inputs: ["tuiLet"] }, { kind: "directive", type: i4.TuiRepeatTimesDirective, selector: "[tuiRepeatTimes][tuiRepeatTimesOf]", inputs: ["tuiRepeatTimesOf"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
66
- __decorate([
67
- tuiPure
68
- ], ScCategoriesListComponent.prototype, "checkImagesExists", null);
69
- ScCategoriesListComponent = __decorate([
70
- UntilDestroy({ checkProperties: true })
71
- ], ScCategoriesListComponent);
72
- export { ScCategoriesListComponent };
73
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScCategoriesListComponent, decorators: [{
74
- type: Component,
75
- args: [{ selector: 'sc-categories-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"grid grid-cols-[repeat(auto-fill,minmax(21rem,1fr))] gap-x-8 gap-y-2\">\n <ng-container *ngIf=\"categories; else categoriesSkeleton\">\n <button\n *ngFor=\"let item of $any(categories)\"\n class=\"group flex gap-2 py-1.5 px-3 bg-tui-base-02 rounded-xl h-11 items-center text-left hover-hover:hover:ring-2 hover-none:active:ring-2 ring-tui-primary duration-150\"\n (click)=\"clickCategoryEvent.emit(item)\"\n >\n <img *ngIf=\"item.properties?.image as image\" [src]=\"getCategoryImage(image)\" [alt]=\"item.name\" class=\"w-8 h-8 object-cover rounded bg-tui-base-03\" />\n <tui-svg *ngIf=\"!item.properties?.image && checkImagesExists(categories)\" src=\"tuiIconCameraOffLarge\" class=\"bg-tui-base-03 !w-8 !h-8 rounded text-tui-base-05\"></tui-svg>\n <div *tuiLet=\"\" class=\"flex grow truncate\">\n <p class=\"text-base font-bold truncate\">{{ item.name }}</p>\n <tui-svg *ngIf=\"item.isFavorite\" src=\"scIconFavoriteFill\" class=\"text-tui-primary !text-sm mr-auto\"></tui-svg>\n </div>\n <tui-svg src=\"tuiIconChevronRightLarge\" class=\"hover-hover:group-hover:text-tui-primary hover-none:group-active:text-tui-primary duration-150\"></tui-svg>\n </button>\n </ng-container>\n</div>\n\n<ng-template #categoriesSkeleton>\n <button\n *tuiRepeatTimes=\"let index of isMobile ? 3 : 6\"\n class=\"group flex gap-2 py-1.5 px-3 bg-tui-base-02 rounded-xl h-11 items-center text-left hover-hover:hover:ring-2 hover-none:active:ring-2 ring-tui-base-05 duration-150\"\n >\n <div class=\"w-8 h-8 tui-skeleton\"></div>\n <div class=\"h-4 grow tui-skeleton\"></div>\n <tui-svg src=\"tuiIconChevronRightLarge\" class=\"hover-hover:group-hover:text-tui-primary hover-none:group-active:text-tui-primary duration-150 tui-skeleton\"></tui-svg>\n </button>\n</ng-template>\n" }]
76
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
77
- type: Inject,
78
- args: [SC_URLS]
79
- }] }, { type: i1.ScFavoriteService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { categories: [{
80
- type: Input
81
- }], clickCategoryEvent: [{
82
- type: Output
83
- }], checkImagesExists: [] } });
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2F0ZWdvcmllcy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9jYXRhbG9nL2NhdGVnb3JpZXMtbGlzdC9zYy1jYXRlZ29yaWVzLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NhdGFsb2cvY2F0ZWdvcmllcy1saXN0L3NjLWNhdGVnb3JpZXMtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzSSxPQUFPLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxPQUFPLEVBQTBDLE1BQU0sd0JBQXdCLENBQUM7QUFDekYsT0FBTyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7OztBQUVuQzs7R0FFRztBQU9JLElBQU0seUJBQXlCLEdBQS9CLE1BQU0seUJBQXlCO0lBa0JsQzs7Ozs7O09BTUc7SUFDSCxZQUNzQyxJQUFhLEVBQzlCLGVBQWtDLEVBQ2xDLEdBQXNCO1FBRkwsU0FBSSxHQUFKLElBQUksQ0FBUztRQUM5QixvQkFBZSxHQUFmLGVBQWUsQ0FBbUI7UUFDbEMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFyQjNDOztXQUVHO1FBQ2EsYUFBUSxHQUFZLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUUxRDs7V0FFRztRQUVJLHVCQUFrQixHQUFvQixJQUFJLFlBQVksRUFBSyxDQUFDO0lBYWhFLENBQUM7SUFFSixrQkFBa0I7SUFDWCxRQUFRO1FBQ1gsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXO2FBQzNCLElBQUksQ0FDRCxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDaEcsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDZCxJQUFJLENBQUMsVUFBMkIsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQ2xELFFBQVEsQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3ZGLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLEVBQ0YsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUN2QjthQUNBLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxnQkFBZ0IsQ0FBQyxPQUFlO1FBQ25DLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQztJQUNsRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUVJLGlCQUFpQixDQUFDLFVBQWlCO1FBQ3RDLHNFQUFzRTtRQUN0RSxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDN0QsQ0FBQzs7c0hBaEVRLHlCQUF5QixrQkEwQnRCLE9BQU87MEdBMUJWLHlCQUF5Qix1SkNmdEMsNjZEQTRCQTtBRGdESTtJQURDLE9BQU87a0VBSVA7QUFoRVEseUJBQXlCO0lBRHJDLFlBQVksQ0FBQyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsQ0FBQztHQUMzQix5QkFBeUIsQ0FpRXJDO1NBakVZLHlCQUF5QjsyRkFBekIseUJBQXlCO2tCQU5yQyxTQUFTOytCQUNJLG9CQUFvQixtQkFFYix1QkFBdUIsQ0FBQyxNQUFNOzswQkE2QjFDLE1BQU07MkJBQUMsT0FBTzs0R0FyQlosVUFBVTtzQkFEaEIsS0FBSztnQkFZQyxrQkFBa0I7c0JBRHhCLE1BQU07Z0JBOENBLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEluamVjdCwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVudGlsRGVzdHJveSwgdW50aWxEZXN0cm95ZWQgfSBmcm9tICdAbmduZWF0L3VudGlsLWRlc3Ryb3knO1xuaW1wb3J0IHsgU0NfVVJMUywgU2NDYXRlZ29yeSwgU2NGYXZvcml0ZVNlcnZpY2UsIFNjSVVybHMgfSBmcm9tICdAc25hYmNlbnRyL2NsaWVudC1jb3JlJztcbmltcG9ydCB7IFRVSV9JU19NT0JJTEUsIHR1aVB1cmUgfSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7IGZpbHRlciwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICog0JrQvtC80L/QvtC90LXQvdGCINGB0L/QuNGB0LrQsCDQutCw0YLQtdCz0L7RgNC40LkuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnc2MtY2F0ZWdvcmllcy1saXN0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2MtY2F0ZWdvcmllcy1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbkBVbnRpbERlc3Ryb3koeyBjaGVja1Byb3BlcnRpZXM6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBTY0NhdGVnb3JpZXNMaXN0Q29tcG9uZW50PFQgZXh0ZW5kcyBvYmplY3Q+IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICAvKipcbiAgICAgKiDQodC/0LjRgdC+0Log0LrQsNGC0LXQs9C+0YDQuNC5LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNhdGVnb3JpZXM6IFRbXSB8IHVuZGVmaW5lZCB8IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiDRgtC+0LPQviwg0L7RgtC+0LHRgNCw0LbQsNC10YLRgdGPINGN0YLQvtGCINC60L7QvNC/0L7QvdC10L3RgiDQvdCwINC80L7QsdC40LvRjNC90L7QvCDRg9GB0YLRgNC+0LnRgdGC0LLQtSDQuNC70Lgg0L3QtdGCLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBpc01vYmlsZTogYm9vbGVhbiA9IGluamVjdChUVUlfSVNfTU9CSUxFKTtcblxuICAgIC8qKlxuICAgICAqINCh0L7QsdGL0YLQuNC1INC90LDQttCw0YLQuNGPINC90LAg0LrQsNGC0LXQs9C+0YDQuNGOLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjbGlja0NhdGVnb3J5RXZlbnQ6IEV2ZW50RW1pdHRlcjxUPiA9IG5ldyBFdmVudEVtaXR0ZXI8VD4oKTtcblxuICAgIC8qKlxuICAgICAqINCY0L3QuNGG0LjQsNC70LjQt9C40YDRg9C10YIg0Y3QutC30LXQvNC/0LvRj9GAINC60LvQsNGB0YHQsCB7QGxpbmsgU2NDYXRlZ29yaWVzTGlzdENvbXBvbmVudH0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdXJscyDQvtCx0YrQtdC60YIg0LjQvdGE0L7RgNC80LDRhtC40Lgg0L4g0LHQsNC30L7QstC+0Lwg0YHQv9C40YHQutC1INGB0YHRi9C70L7QuiDQv9GA0LjQu9C+0LbQtdC90LjRjy5cbiAgICAgKiBAcGFyYW0gZmF2b3JpdGVTZXJ2aWNlINCh0LXRgNCy0LjRgSDQtNC70Y8g0YDQsNCx0L7RgtGLINGBINC60L7RgNC30LjQvdC+0LkuXG4gICAgICogQHBhcmFtIGNkciDQntCx0YrQtdC60YIg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSDQvtCx0L3QsNGA0YPQttC10L3QuNC10Lwg0LjQt9C80LXQvdC10L3QuNC5LlxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChTQ19VUkxTKSBwcml2YXRlIHJlYWRvbmx5IHVybHM6IFNjSVVybHMsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZmF2b3JpdGVTZXJ2aWNlOiBTY0Zhdm9yaXRlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICAgKSB7fVxuXG4gICAgLyoqIEBpbmhlcml0RG9jICovXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZhdm9yaXRlU2VydmljZS5jYXRlZ29yaWVzJFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKCgpID0+ICEhdGhpcy5jYXRlZ29yaWVzICYmIEJvb2xlYW4odGhpcy5jYXRlZ29yaWVzLmxlbmd0aCkgJiYgJ2lkJyBpbiB0aGlzLmNhdGVnb3JpZXNbMF0pLFxuICAgICAgICAgICAgICAgIHRhcCgoY2F0ZWdvcmllcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5jYXRlZ29yaWVzIGFzIFNjQ2F0ZWdvcnlbXSk/LmZvckVhY2goY2F0ZWdvcnkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnkuaXNGYXZvcml0ZSA9IGNhdGVnb3JpZXMuZmluZEluZGV4KGl0ZW0gPT4gY2F0ZWdvcnkuaWQgPT09IGl0ZW0uaWQpICE9PSAtMTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jZHIubWFya0ZvckNoZWNrKCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINC/0YPRgtGMINC00L4g0LjQt9C+0LHRgNCw0LbQtdC90LjRjyDQvdCwINGB0LXRgNCy0LXRgNC1LlxuICAgICAqXG4gICAgICogQHBhcmFtIGltZ1BhdGgg0L/Rg9GC0YwsINCz0LTQtSDRhdGA0LDQvdC40YLRgdGPINC40LfQvtCx0YDQsNC20LXQvdC40LUuXG4gICAgICovXG4gICAgcHVibGljIGdldENhdGVnb3J5SW1hZ2UoaW1nUGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXJscy5pbWdTZXJ2ZXJVcmwgKyAnLycgKyBpbWdQYXRoO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCf0YDQvtCy0LXRgNGP0LXRgiDQvdCw0LvQuNGH0LjQtSDRhdC+0YLRjyDQsdGLINC+0LTQvdC+0LPQviDQuNC30L7QsdGA0LDQttC10L3QuNGPLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNhdGVnb3JpZXMg0KHQv9C40YHQvtC6INC60LDRgtC10LPQvtGA0LjQuS5cbiAgICAgKi9cbiAgICBAdHVpUHVyZVxuICAgIHB1YmxpYyBjaGVja0ltYWdlc0V4aXN0cyhjYXRlZ29yaWVzOiBhbnlbXSk6IGJvb2xlYW4ge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1tZW1iZXItYWNjZXNzXG4gICAgICAgIHJldHVybiBjYXRlZ29yaWVzLnNvbWUoKGl0ZW0pID0+IGl0ZW0ucHJvcGVydGllcz8uaW1hZ2UpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJncmlkIGdyaWQtY29scy1bcmVwZWF0KGF1dG8tZmlsbCxtaW5tYXgoMjFyZW0sMWZyKSldIGdhcC14LTggZ2FwLXktMlwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYXRlZ29yaWVzOyBlbHNlIGNhdGVnb3JpZXNTa2VsZXRvblwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiAkYW55KGNhdGVnb3JpZXMpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZ3JvdXAgZmxleCBnYXAtMiBweS0xLjUgcHgtMyBiZy10dWktYmFzZS0wMiByb3VuZGVkLXhsIGgtMTEgaXRlbXMtY2VudGVyIHRleHQtbGVmdCBob3Zlci1ob3Zlcjpob3ZlcjpyaW5nLTIgaG92ZXItbm9uZTphY3RpdmU6cmluZy0yIHJpbmctdHVpLXByaW1hcnkgZHVyYXRpb24tMTUwXCJcbiAgICAgICAgICAgIChjbGljayk9XCJjbGlja0NhdGVnb3J5RXZlbnQuZW1pdChpdGVtKVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJpdGVtLnByb3BlcnRpZXM/LmltYWdlIGFzIGltYWdlXCIgW3NyY109XCJnZXRDYXRlZ29yeUltYWdlKGltYWdlKVwiIFthbHRdPVwiaXRlbS5uYW1lXCIgY2xhc3M9XCJ3LTggaC04IG9iamVjdC1jb3ZlciByb3VuZGVkIGJnLXR1aS1iYXNlLTAzXCIgLz5cbiAgICAgICAgICAgIDx0dWktc3ZnICpuZ0lmPVwiIWl0ZW0ucHJvcGVydGllcz8uaW1hZ2UgJiYgY2hlY2tJbWFnZXNFeGlzdHMoY2F0ZWdvcmllcylcIiBzcmM9XCJ0dWlJY29uQ2FtZXJhT2ZmTGFyZ2VcIiBjbGFzcz1cImJnLXR1aS1iYXNlLTAzICF3LTggIWgtOCByb3VuZGVkIHRleHQtdHVpLWJhc2UtMDVcIj48L3R1aS1zdmc+XG4gICAgICAgICAgICA8ZGl2ICp0dWlMZXQ9XCJcIiBjbGFzcz1cImZsZXggZ3JvdyB0cnVuY2F0ZVwiPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1iYXNlIGZvbnQtYm9sZCB0cnVuY2F0ZVwiPnt7IGl0ZW0ubmFtZSB9fTwvcD5cbiAgICAgICAgICAgICAgICA8dHVpLXN2ZyAqbmdJZj1cIml0ZW0uaXNGYXZvcml0ZVwiIHNyYz1cInNjSWNvbkZhdm9yaXRlRmlsbFwiIGNsYXNzPVwidGV4dC10dWktcHJpbWFyeSAhdGV4dC1zbSBtci1hdXRvXCI+PC90dWktc3ZnPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8dHVpLXN2ZyBzcmM9XCJ0dWlJY29uQ2hldnJvblJpZ2h0TGFyZ2VcIiBjbGFzcz1cImhvdmVyLWhvdmVyOmdyb3VwLWhvdmVyOnRleHQtdHVpLXByaW1hcnkgaG92ZXItbm9uZTpncm91cC1hY3RpdmU6dGV4dC10dWktcHJpbWFyeSBkdXJhdGlvbi0xNTBcIj48L3R1aS1zdmc+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjY2F0ZWdvcmllc1NrZWxldG9uPlxuICAgIDxidXR0b25cbiAgICAgICAgKnR1aVJlcGVhdFRpbWVzPVwibGV0IGluZGV4IG9mIGlzTW9iaWxlID8gMyA6IDZcIlxuICAgICAgICBjbGFzcz1cImdyb3VwIGZsZXggZ2FwLTIgcHktMS41IHB4LTMgYmctdHVpLWJhc2UtMDIgcm91bmRlZC14bCBoLTExIGl0ZW1zLWNlbnRlciB0ZXh0LWxlZnQgaG92ZXItaG92ZXI6aG92ZXI6cmluZy0yIGhvdmVyLW5vbmU6YWN0aXZlOnJpbmctMiByaW5nLXR1aS1iYXNlLTA1IGR1cmF0aW9uLTE1MFwiXG4gICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidy04IGgtOCB0dWktc2tlbGV0b25cIj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImgtNCBncm93IHR1aS1za2VsZXRvblwiPjwvZGl2PlxuICAgICAgICA8dHVpLXN2ZyBzcmM9XCJ0dWlJY29uQ2hldnJvblJpZ2h0TGFyZ2VcIiBjbGFzcz1cImhvdmVyLWhvdmVyOmdyb3VwLWhvdmVyOnRleHQtdHVpLXByaW1hcnkgaG92ZXItbm9uZTpncm91cC1hY3RpdmU6dGV4dC10dWktcHJpbWFyeSBkdXJhdGlvbi0xNTAgIHR1aS1za2VsZXRvblwiPjwvdHVpLXN2Zz5cbiAgICA8L2J1dHRvbj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -1,120 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, HostListener, Inject, Input, Output, ViewChild } from '@angular/core';
2
- import { SC_PATH_IMAGE_NOT_FOUND, SC_URLS } from '@snabcentr/client-core';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@snabcentr/client-core";
5
- import * as i2 from "@angular/common";
6
- import * as i3 from "../sc-favorite-btn/sc-favorite-btn.component";
7
- /**
8
- * Карточка категории.
9
- */
10
- export class ScCategoryCardComponent {
11
- /**
12
- * Инициализирует экземпляр класса {@link CategoryCardComponent}.
13
- *
14
- * @param urls Список ссылок на разделы backend'a.
15
- * @param renderer Экземпляр базового класса для реализации пользовательского рендеринга.
16
- * @param pathImageNotFound Путь до изображения 'Товар не найден'.
17
- */
18
- constructor(urls, renderer, pathImageNotFound, authService, cdr) {
19
- this.urls = urls;
20
- this.renderer = renderer;
21
- this.pathImageNotFound = pathImageNotFound;
22
- this.authService = authService;
23
- this.cdr = cdr;
24
- /**
25
- * Размер карточки категории.
26
- */
27
- this.size = 'm';
28
- /**
29
- * Признак, что карточка является скелетоном.
30
- */
31
- this.isSkeleton = false;
32
- /**
33
- * Признак, что необходимо отобразить лоадер для кнопки избранных товаров и категорий.
34
- */
35
- this.favoriteShowLoader = false;
36
- /**
37
- * {@link Observable} изменения статуса авторизации.
38
- */
39
- this.authStatus$ = this.authService.getAuthChange();
40
- /**
41
- * Признак что категория имеет поведение наведения и скрытия названия.
42
- */
43
- this.isHovered = false;
44
- /**
45
- * Событие нажатия на карточку категории.
46
- */
47
- this.clickOnCardEvent = new EventEmitter();
48
- /**
49
- * Событие нажатия на кнопку избранной категории.
50
- */
51
- this.clickOnFavoriteEvent = new EventEmitter();
52
- }
53
- /**
54
- * Возвращает путь к изображению категории. Если путь отсутствует, то вернёт изображение по-умолчанию ("product_not_found").
55
- *
56
- * @param category Информация о категории.
57
- */
58
- getCategoryImgURL(category) {
59
- return category.properties?.image ? this.urls.imgServerUrl + '/' + category.properties?.image : this.pathImageNotFound;
60
- }
61
- /**
62
- * Обработчик события mousemove.
63
- */
64
- moveEnterHandler() {
65
- if (this.isHovered) {
66
- this.name.nativeElement.style.maxHeight = `${this.name.nativeElement.scrollHeight / 16}rem`;
67
- }
68
- }
69
- /**
70
- * Обработчик события mouseleave.
71
- */
72
- mouseLeaveHandler() {
73
- if (this.isHovered) {
74
- this.renderer.setStyle(this.name.nativeElement, 'maxHeight', null);
75
- }
76
- }
77
- /**
78
- * Устанавливает компонент в очередь на обновление.
79
- */
80
- markForCheck() {
81
- this.cdr.markForCheck();
82
- }
83
- }
84
- ScCategoryCardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScCategoryCardComponent, deps: [{ token: SC_URLS }, { token: i0.Renderer2 }, { token: SC_PATH_IMAGE_NOT_FOUND }, { token: i1.ScAuthService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
85
- ScCategoryCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScCategoryCardComponent, selector: "sc-category-card", inputs: { category: "category", size: "size", isSkeleton: "isSkeleton", isHovered: "isHovered" }, outputs: { clickOnCardEvent: "clickOnCardEvent", clickOnFavoriteEvent: "clickOnFavoriteEvent" }, host: { listeners: { "mousemove": "moveEnterHandler()", "mouseleave": "mouseLeaveHandler()" }, properties: { "attr.data-size": "this.size" } }, viewQueries: [{ propertyName: "name", first: true, predicate: ["name"], descendants: true }], ngImport: i0, template: "<div class=\"relative group\">\n <button\n (click)=\"clickOnCardEvent.emit(category)\"\n [class.pointer-events-none]=\"!category || isSkeleton\"\n class=\"category-btn flex flex-col relative rounded-tui-radius-m overflow-hidden shadow-sc-2\"\n >\n <div class=\"img-wrapper w-full grow bg-tui-base-02 overflow-hidden\">\n <img *ngIf=\"category && !isSkeleton\" [src]=\"getCategoryImgURL(category)\" [alt]=\"category.name\" class=\"w-full\" />\n </div>\n <div #name [attr.data-is-hovered]=\"!isHovered\" class=\"name grid items-center justify-center font-bold bg-white w-full overflow-hidden shrink-0 duration-300\">\n <span *ngIf=\"category && !isSkeleton; else skeletonName\">{{ category.name }}</span>\n <ng-template #skeletonName>\n <div class=\"skeleton-name bg-tui-base-02 rounded-tui-radius-s\"></div>\n </ng-template>\n </div>\n </button>\n <sc-favorite-btn\n *ngIf=\"category && !isSkeleton && (authStatus$ | async)\"\n [showLoader]=\"favoriteShowLoader\"\n [isFavorite]=\"category.isFavorite\"\n (clickEvent)=\"clickOnFavoriteEvent.emit()\"\n class=\"absolute left-1 top-1\"\n ></sc-favorite-btn>\n</div>\n", styles: [":host[data-size=m] button.category-btn{width:100%;height:12.5rem}:host[data-size=m] button.category-btn .img-wrapper{max-height:8.75rem}:host[data-size=m] button.category-btn .name{min-height:2.5rem;padding-inline:.75rem;margin-block:.75rem}:host[data-size=m] button.category-btn .name:not([data-is-hovered=true]){max-height:2.5rem}:host[data-size=m] button.category-btn .name .skeleton-name{width:10rem;height:1rem}:host[data-size=s] button.category-btn{width:100%;height:10rem}:host[data-size=s] button.category-btn .img-wrapper{max-height:8.75rem}:host[data-size=s] button.category-btn .name{min-height:2rem;font-size:.75rem;line-height:1rem;padding-inline:.5rem;margin-block:.5rem}:host[data-size=s] button.category-btn .name:not([data-is-hovered=true]){max-height:2rem}:host[data-size=s] button.category-btn .name .skeleton-name{width:7rem;height:.75rem}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.ScFavoriteBtnComponent, selector: "sc-favorite-btn", inputs: ["isFavorite", "showLoader", "disabled"], outputs: ["clickEvent"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
86
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScCategoryCardComponent, decorators: [{
87
- type: Component,
88
- args: [{ selector: 'sc-category-card', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"relative group\">\n <button\n (click)=\"clickOnCardEvent.emit(category)\"\n [class.pointer-events-none]=\"!category || isSkeleton\"\n class=\"category-btn flex flex-col relative rounded-tui-radius-m overflow-hidden shadow-sc-2\"\n >\n <div class=\"img-wrapper w-full grow bg-tui-base-02 overflow-hidden\">\n <img *ngIf=\"category && !isSkeleton\" [src]=\"getCategoryImgURL(category)\" [alt]=\"category.name\" class=\"w-full\" />\n </div>\n <div #name [attr.data-is-hovered]=\"!isHovered\" class=\"name grid items-center justify-center font-bold bg-white w-full overflow-hidden shrink-0 duration-300\">\n <span *ngIf=\"category && !isSkeleton; else skeletonName\">{{ category.name }}</span>\n <ng-template #skeletonName>\n <div class=\"skeleton-name bg-tui-base-02 rounded-tui-radius-s\"></div>\n </ng-template>\n </div>\n </button>\n <sc-favorite-btn\n *ngIf=\"category && !isSkeleton && (authStatus$ | async)\"\n [showLoader]=\"favoriteShowLoader\"\n [isFavorite]=\"category.isFavorite\"\n (clickEvent)=\"clickOnFavoriteEvent.emit()\"\n class=\"absolute left-1 top-1\"\n ></sc-favorite-btn>\n</div>\n", styles: [":host[data-size=m] button.category-btn{width:100%;height:12.5rem}:host[data-size=m] button.category-btn .img-wrapper{max-height:8.75rem}:host[data-size=m] button.category-btn .name{min-height:2.5rem;padding-inline:.75rem;margin-block:.75rem}:host[data-size=m] button.category-btn .name:not([data-is-hovered=true]){max-height:2.5rem}:host[data-size=m] button.category-btn .name .skeleton-name{width:10rem;height:1rem}:host[data-size=s] button.category-btn{width:100%;height:10rem}:host[data-size=s] button.category-btn .img-wrapper{max-height:8.75rem}:host[data-size=s] button.category-btn .name{min-height:2rem;font-size:.75rem;line-height:1rem;padding-inline:.5rem;margin-block:.5rem}:host[data-size=s] button.category-btn .name:not([data-is-hovered=true]){max-height:2rem}:host[data-size=s] button.category-btn .name .skeleton-name{width:7rem;height:.75rem}\n"] }]
89
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
90
- type: Inject,
91
- args: [SC_URLS]
92
- }] }, { type: i0.Renderer2 }, { type: undefined, decorators: [{
93
- type: Inject,
94
- args: [SC_PATH_IMAGE_NOT_FOUND]
95
- }] }, { type: i1.ScAuthService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { category: [{
96
- type: Input
97
- }], name: [{
98
- type: ViewChild,
99
- args: ['name']
100
- }], size: [{
101
- type: Input
102
- }, {
103
- type: HostBinding,
104
- args: ['attr.data-size']
105
- }], isSkeleton: [{
106
- type: Input
107
- }], isHovered: [{
108
- type: Input
109
- }], clickOnCardEvent: [{
110
- type: Output
111
- }], clickOnFavoriteEvent: [{
112
- type: Output
113
- }], moveEnterHandler: [{
114
- type: HostListener,
115
- args: ['mousemove']
116
- }], mouseLeaveHandler: [{
117
- type: HostListener,
118
- args: ['mouseleave']
119
- }] } });
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2F0ZWdvcnktY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvY2F0YWxvZy9jYXRlZ29yeS1jYXJkL3NjLWNhdGVnb3J5LWNhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NhdGFsb2cvY2F0ZWdvcnktY2FyZC9zYy1jYXRlZ29yeS1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUVULFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUVOLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsT0FBTyxFQUFzQyxNQUFNLHdCQUF3QixDQUFDOzs7OztBQUk5Rzs7R0FFRztBQU9ILE1BQU0sT0FBTyx1QkFBdUI7SUFzRGhDOzs7Ozs7T0FNRztJQUNILFlBQ3NDLElBQWEsRUFDdkMsUUFBbUIsRUFDdUIsaUJBQXlCLEVBQzFELFdBQTBCLEVBQzFCLEdBQXNCO1FBSkwsU0FBSSxHQUFKLElBQUksQ0FBUztRQUN2QyxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ3VCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBUTtRQUMxRCxnQkFBVyxHQUFYLFdBQVcsQ0FBZTtRQUMxQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQXJEM0M7O1dBRUc7UUFHSSxTQUFJLEdBQWEsR0FBRyxDQUFDO1FBRTVCOztXQUVHO1FBRUksZUFBVSxHQUFZLEtBQUssQ0FBQztRQUVuQzs7V0FFRztRQUNJLHVCQUFrQixHQUFZLEtBQUssQ0FBQztRQUUzQzs7V0FFRztRQUNhLGdCQUFXLEdBQXdCLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFcEY7O1dBRUc7UUFFSSxjQUFTLEdBQVksS0FBSyxDQUFDO1FBRWxDOztXQUVHO1FBRUkscUJBQWdCLEdBQTZCLElBQUksWUFBWSxFQUFjLENBQUM7UUFFbkY7O1dBRUc7UUFFSSx5QkFBb0IsR0FBNkIsSUFBSSxZQUFZLEVBQWMsQ0FBQztJQWVwRixDQUFDO0lBRUo7Ozs7T0FJRztJQUNJLGlCQUFpQixDQUFDLFFBQW9CO1FBQ3pDLE9BQU8sUUFBUSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLEdBQUcsR0FBRyxRQUFRLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQzNILENBQUM7SUFFRDs7T0FFRztJQUVLLGdCQUFnQjtRQUNwQixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksR0FBRyxFQUFFLEtBQUssQ0FBQztTQUMvRjtJQUNMLENBQUM7SUFFRDs7T0FFRztJQUVLLGlCQUFpQjtRQUNyQixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ3RFO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ksWUFBWTtRQUNmLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUIsQ0FBQzs7b0hBdkdRLHVCQUF1QixrQkE4RHBCLE9BQU8sc0NBRVAsdUJBQXVCO3dHQWhFMUIsdUJBQXVCLHllQzNCcEMsMHZDQXdCQTsyRkRHYSx1QkFBdUI7a0JBTm5DLFNBQVM7K0JBQ0ksa0JBQWtCLG1CQUdYLHVCQUF1QixDQUFDLE1BQU07OzBCQWdFMUMsTUFBTTsyQkFBQyxPQUFPOzswQkFFZCxNQUFNOzJCQUFDLHVCQUF1Qjt3R0EzRDVCLFFBQVE7c0JBRGQsS0FBSztnQkFPRSxJQUFJO3NCQURYLFNBQVM7dUJBQUMsTUFBTTtnQkFRVixJQUFJO3NCQUZWLEtBQUs7O3NCQUNMLFdBQVc7dUJBQUMsZ0JBQWdCO2dCQU90QixVQUFVO3NCQURoQixLQUFLO2dCQWlCQyxTQUFTO3NCQURmLEtBQUs7Z0JBT0MsZ0JBQWdCO3NCQUR0QixNQUFNO2dCQU9BLG9CQUFvQjtzQkFEMUIsTUFBTTtnQkErQkMsZ0JBQWdCO3NCQUR2QixZQUFZO3VCQUFDLFdBQVc7Z0JBV2pCLGlCQUFpQjtzQkFEeEIsWUFBWTt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgUmVuZGVyZXIyLFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNDX1BBVEhfSU1BR0VfTk9UX0ZPVU5ELCBTQ19VUkxTLCBTY0F1dGhTZXJ2aWNlLCBTY0NhdGVnb3J5LCBTY0lVcmxzIH0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyBUdWlTaXplUyB9IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiDQmtCw0YDRgtC+0YfQutCwINC60LDRgtC10LPQvtGA0LjQuC5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzYy1jYXRlZ29yeS1jYXJkJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2MtY2F0ZWdvcnktY2FyZC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc2MtY2F0ZWdvcnktY2FyZC5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFNjQ2F0ZWdvcnlDYXJkQ29tcG9uZW50IHtcbiAgICAvKipcbiAgICAgKiDQmNC90YTQvtGA0LzQsNGG0LjRjyDQviDQutCw0YLQtdCz0L7RgNC40LguXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY2F0ZWdvcnk/OiBTY0NhdGVnb3J5O1xuXG4gICAgLyoqXG4gICAgICog0KHRgdGL0LvQutCwINC90LAge0BsaW5rIEhUTUxFbGVtZW50fSDQsdC70L7QutCwINC90LDQt9Cy0LDQvdC40Y8uXG4gICAgICovXG4gICAgQFZpZXdDaGlsZCgnbmFtZScpXG4gICAgcHJpdmF0ZSBuYW1lOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIC8qKlxuICAgICAqINCg0LDQt9C80LXRgCDQutCw0YDRgtC+0YfQutC4INC60LDRgtC10LPQvtGA0LjQuC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLXNpemUnKVxuICAgIHB1YmxpYyBzaXplOiBUdWlTaXplUyA9ICdtJztcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6LCDRh9GC0L4g0LrQsNGA0YLQvtGH0LrQsCDRj9Cy0LvRj9C10YLRgdGPINGB0LrQtdC70LXRgtC+0L3QvtC8LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGlzU2tlbGV0b246IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6LCDRh9GC0L4g0L3QtdC+0LHRhdC+0LTQuNC80L4g0L7RgtC+0LHRgNCw0LfQuNGC0Ywg0LvQvtCw0LTQtdGAINC00LvRjyDQutC90L7Qv9C60Lgg0LjQt9Cx0YDQsNC90L3Ri9GFINGC0L7QstCw0YDQvtCyINC4INC60LDRgtC10LPQvtGA0LjQuS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZmF2b3JpdGVTaG93TG9hZGVyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LjQt9C80LXQvdC10L3QuNGPINGB0YLQsNGC0YPRgdCwINCw0LLRgtC+0YDQuNC30LDRhtC40LguXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGF1dGhTdGF0dXMkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5hdXRoU2VydmljZS5nZXRBdXRoQ2hhbmdlKCk7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiDRh9GC0L4g0LrQsNGC0LXQs9C+0YDQuNGPINC40LzQtdC10YIg0L/QvtCy0LXQtNC10L3QuNC1INC90LDQstC10LTQtdC90LjRjyDQuCDRgdC60YDRi9GC0LjRjyDQvdCw0LfQstCw0L3QuNGPLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGlzSG92ZXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICog0KHQvtCx0YvRgtC40LUg0L3QsNC20LDRgtC40Y8g0L3QsCDQutCw0YDRgtC+0YfQutGDINC60LDRgtC10LPQvtGA0LjQuC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgY2xpY2tPbkNhcmRFdmVudDogRXZlbnRFbWl0dGVyPFNjQ2F0ZWdvcnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxTY0NhdGVnb3J5PigpO1xuXG4gICAgLyoqXG4gICAgICog0KHQvtCx0YvRgtC40LUg0L3QsNC20LDRgtC40Y8g0L3QsCDQutC90L7Qv9C60YMg0LjQt9Cx0YDQsNC90L3QvtC5INC60LDRgtC10LPQvtGA0LjQuC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgY2xpY2tPbkZhdm9yaXRlRXZlbnQ6IEV2ZW50RW1pdHRlcjxTY0NhdGVnb3J5PiA9IG5ldyBFdmVudEVtaXR0ZXI8U2NDYXRlZ29yeT4oKTtcblxuICAgIC8qKlxuICAgICAqINCY0L3QuNGG0LjQsNC70LjQt9C40YDRg9C10YIg0Y3QutC30LXQvNC/0LvRj9GAINC60LvQsNGB0YHQsCB7QGxpbmsgQ2F0ZWdvcnlDYXJkQ29tcG9uZW50fS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB1cmxzINCh0L/QuNGB0L7QuiDRgdGB0YvQu9C+0Log0L3QsCDRgNCw0LfQtNC10LvRiyBiYWNrZW5kJ2EuXG4gICAgICogQHBhcmFtIHJlbmRlcmVyINCt0LrQt9C10LzQv9C70Y/RgCDQsdCw0LfQvtCy0L7Qs9C+INC60LvQsNGB0YHQsCDQtNC70Y8g0YDQtdCw0LvQuNC30LDRhtC40Lgg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GM0YHQutC+0LPQviDRgNC10L3QtNC10YDQuNC90LPQsC5cbiAgICAgKiBAcGFyYW0gcGF0aEltYWdlTm90Rm91bmQg0J/Rg9GC0Ywg0LTQviDQuNC30L7QsdGA0LDQttC10L3QuNGPICfQotC+0LLQsNGAINC90LUg0L3QsNC50LTQtdC9Jy5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoU0NfVVJMUykgcHJpdmF0ZSByZWFkb25seSB1cmxzOiBTY0lVcmxzLFxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIEBJbmplY3QoU0NfUEFUSF9JTUFHRV9OT1RfRk9VTkQpIHByaXZhdGUgcmVhZG9ubHkgcGF0aEltYWdlTm90Rm91bmQ6IHN0cmluZyxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBhdXRoU2VydmljZTogU2NBdXRoU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICAgKSB7fVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0L/Rg9GC0Ywg0Log0LjQt9C+0LHRgNCw0LbQtdC90LjRjiDQutCw0YLQtdCz0L7RgNC40LguINCV0YHQu9C4INC/0YPRgtGMINC+0YLRgdGD0YLRgdGC0LLRg9C10YIsINGC0L4g0LLQtdGA0L3RkdGCINC40LfQvtCx0YDQsNC20LXQvdC40LUg0L/Qvi3Rg9C80L7Qu9GH0LDQvdC40Y4gKFwicHJvZHVjdF9ub3RfZm91bmRcIikuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2F0ZWdvcnkg0JjQvdGE0L7RgNC80LDRhtC40Y8g0L4g0LrQsNGC0LXQs9C+0YDQuNC4LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDYXRlZ29yeUltZ1VSTChjYXRlZ29yeTogU2NDYXRlZ29yeSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBjYXRlZ29yeS5wcm9wZXJ0aWVzPy5pbWFnZSA/IHRoaXMudXJscy5pbWdTZXJ2ZXJVcmwgKyAnLycgKyBjYXRlZ29yeS5wcm9wZXJ0aWVzPy5pbWFnZSA6IHRoaXMucGF0aEltYWdlTm90Rm91bmQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J7QsdGA0LDQsdC+0YLRh9C40Log0YHQvtCx0YvRgtC40Y8gbW91c2Vtb3ZlLlxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlbW92ZScpXG4gICAgcHJpdmF0ZSBtb3ZlRW50ZXJIYW5kbGVyKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc0hvdmVyZWQpIHtcbiAgICAgICAgICAgIHRoaXMubmFtZS5uYXRpdmVFbGVtZW50LnN0eWxlLm1heEhlaWdodCA9IGAke3RoaXMubmFtZS5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodCAvIDE2fXJlbWA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQntCx0YDQsNCx0L7RgtGH0LjQuiDRgdC+0LHRi9GC0LjRjyBtb3VzZWxlYXZlLlxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlbGVhdmUnKVxuICAgIHByaXZhdGUgbW91c2VMZWF2ZUhhbmRsZXIoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzSG92ZXJlZCkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLm5hbWUubmF0aXZlRWxlbWVudCwgJ21heEhlaWdodCcsIG51bGwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KPRgdGC0LDQvdCw0LLQu9C40LLQsNC10YIg0LrQvtC80L/QvtC90LXQvdGCINCyINC+0YfQtdGA0LXQtNGMINC90LAg0L7QsdC90L7QstC70LXQvdC40LUuXG4gICAgICovXG4gICAgcHVibGljIG1hcmtGb3JDaGVjaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInJlbGF0aXZlIGdyb3VwXCI+XG4gICAgPGJ1dHRvblxuICAgICAgICAoY2xpY2spPVwiY2xpY2tPbkNhcmRFdmVudC5lbWl0KGNhdGVnb3J5KVwiXG4gICAgICAgIFtjbGFzcy5wb2ludGVyLWV2ZW50cy1ub25lXT1cIiFjYXRlZ29yeSB8fCBpc1NrZWxldG9uXCJcbiAgICAgICAgY2xhc3M9XCJjYXRlZ29yeS1idG4gZmxleCBmbGV4LWNvbCByZWxhdGl2ZSByb3VuZGVkLXR1aS1yYWRpdXMtbSBvdmVyZmxvdy1oaWRkZW4gc2hhZG93LXNjLTJcIlxuICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImltZy13cmFwcGVyIHctZnVsbCBncm93IGJnLXR1aS1iYXNlLTAyIG92ZXJmbG93LWhpZGRlblwiPlxuICAgICAgICAgICAgPGltZyAqbmdJZj1cImNhdGVnb3J5ICYmICFpc1NrZWxldG9uXCIgW3NyY109XCJnZXRDYXRlZ29yeUltZ1VSTChjYXRlZ29yeSlcIiBbYWx0XT1cImNhdGVnb3J5Lm5hbWVcIiBjbGFzcz1cInctZnVsbFwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICNuYW1lIFthdHRyLmRhdGEtaXMtaG92ZXJlZF09XCIhaXNIb3ZlcmVkXCIgY2xhc3M9XCJuYW1lIGdyaWQgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGZvbnQtYm9sZCBiZy13aGl0ZSB3LWZ1bGwgb3ZlcmZsb3ctaGlkZGVuIHNocmluay0wIGR1cmF0aW9uLTMwMFwiPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjYXRlZ29yeSAmJiAhaXNTa2VsZXRvbjsgZWxzZSBza2VsZXRvbk5hbWVcIj57eyBjYXRlZ29yeS5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNza2VsZXRvbk5hbWU+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNrZWxldG9uLW5hbWUgYmctdHVpLWJhc2UtMDIgcm91bmRlZC10dWktcmFkaXVzLXNcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvYnV0dG9uPlxuICAgIDxzYy1mYXZvcml0ZS1idG5cbiAgICAgICAgKm5nSWY9XCJjYXRlZ29yeSAmJiAhaXNTa2VsZXRvbiAmJiAoYXV0aFN0YXR1cyQgfCBhc3luYylcIlxuICAgICAgICBbc2hvd0xvYWRlcl09XCJmYXZvcml0ZVNob3dMb2FkZXJcIlxuICAgICAgICBbaXNGYXZvcml0ZV09XCJjYXRlZ29yeS5pc0Zhdm9yaXRlXCJcbiAgICAgICAgKGNsaWNrRXZlbnQpPVwiY2xpY2tPbkZhdm9yaXRlRXZlbnQuZW1pdCgpXCJcbiAgICAgICAgY2xhc3M9XCJhYnNvbHV0ZSBsZWZ0LTEgdG9wLTFcIlxuICAgID48L3NjLWZhdm9yaXRlLWJ0bj5cbjwvZGl2PlxuIl19