@snabcentr/client-ui 3.49.3 → 3.50.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/auth/interfaces/index.d.ts +0 -1
  2. package/banner/sc-banner.component.d.ts +23 -29
  3. package/cart/add-or-editing-cart-item-dialog/add-or-editing-cart-item-form/sc-add-or-editing-cart-item-form.component.d.ts +5 -5
  4. package/cart/add-or-editing-cart-item-dialog/sc-add-or-editing-cart-item-dialog.component.d.ts +5 -5
  5. package/cart/index.d.ts +0 -1
  6. package/catalog/price-card-inline/sc-price-card-inline.component.d.ts +1 -1
  7. package/configurators/sandwich/sc-i-new-cart-item-sandwich.d.ts +2 -2
  8. package/configurators/sandwich/sc-sandwich.component.d.ts +2 -2
  9. package/directives/abstract-price-card/abstract-sc-price-card.directive.d.ts +6 -6
  10. package/esm2022/auth/interfaces/index.mjs +1 -2
  11. package/esm2022/auth/sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component.mjs +1 -1
  12. package/esm2022/auth/sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component.mjs +1 -1
  13. package/esm2022/auth/sc-simple-sign-up-form/sc-simple-sign-up-form.component.mjs +1 -1
  14. package/esm2022/auth/sign-up-form/sc-sign-up-form.component.mjs +3 -3
  15. package/esm2022/banner/sc-banner.component.mjs +53 -59
  16. package/esm2022/cart/add-or-editing-cart-item-dialog/add-or-editing-cart-item-form/sc-add-or-editing-cart-item-form.component.mjs +11 -11
  17. package/esm2022/cart/add-or-editing-cart-item-dialog/sc-add-or-editing-cart-item-dialog.component.mjs +6 -6
  18. package/esm2022/cart/index.mjs +1 -2
  19. package/esm2022/catalog/notify-when-in-stock-dialog/sc-notify-when-in-stock-dialog.component.mjs +1 -1
  20. package/esm2022/catalog/price-card/sc-price-card.component.mjs +3 -3
  21. package/esm2022/catalog/price-card-inline/sc-price-card-inline.component.mjs +3 -3
  22. package/esm2022/catalog/price-history/sc-price-history.component.mjs +3 -3
  23. package/esm2022/configurators/sandwich/sc-i-new-cart-item-sandwich.mjs +1 -1
  24. package/esm2022/configurators/sandwich/sc-sandwich.component.mjs +6 -13
  25. package/esm2022/contacts/add-contact-dialog/sc-add-contact-dialog.component.mjs +1 -1
  26. package/esm2022/contragents/add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component.mjs +1 -1
  27. package/esm2022/contragents/add-contragent-dialog/sc-add-contragent-dialog.component.mjs +1 -1
  28. package/esm2022/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.mjs +1 -1
  29. package/esm2022/directives/abstract-price-card/abstract-sc-price-card.directive.mjs +8 -8
  30. package/esm2022/feedback/feedback-form/sc-feedback-form.component.mjs +1 -1
  31. package/esm2022/form-fields/suggestion-field/sc-suggestion-field.component.mjs +3 -3
  32. package/esm2022/order/draft/sc-draft.component.mjs +117 -0
  33. package/esm2022/order/index.mjs +7 -2
  34. package/esm2022/order/models/sc-i-cart-items-by-direction.mjs +22 -0
  35. package/esm2022/order/order-item/sc-order-item.component.mjs +85 -0
  36. package/esm2022/order/order-items-list/sc-order-items-list.component.mjs +203 -0
  37. package/esm2022/order/order-items-list-by-directions/sc-order-items-list-by-directions.component.mjs +72 -0
  38. package/esm2022/order/order-items-list-by-stock/sc-order-items-list-by-stock.component.mjs +75 -0
  39. package/esm2022/order/sc-order.module.mjs +5 -6
  40. package/esm2022/providers/index.mjs +2 -1
  41. package/esm2022/providers/sc-dialog-service.providers.mjs +6 -0
  42. package/esm2022/user/reset-user-password/sc-reset-user-password.component.mjs +1 -1
  43. package/esm2022/user/update-user-info-dialog/sc-update-user-info-dialog.component.mjs +2 -2
  44. package/esm2022/user/user-phone-approve-dialog/sc-user-phone-approve-dialog.component.mjs +2 -2
  45. package/esm2022/verification/verification-phone-check-form/sc-verification-phone-check-form.component.mjs +1 -1
  46. package/fesm2022/snabcentr-client-ui.mjs +1971 -1580
  47. package/fesm2022/snabcentr-client-ui.mjs.map +1 -1
  48. package/order/draft/sc-draft.component.d.ts +63 -0
  49. package/order/index.d.ts +6 -1
  50. package/order/models/sc-i-cart-items-by-direction.d.ts +25 -0
  51. package/{cart/cart-item/sc-cart-item.component.d.ts → order/order-item/sc-order-item.component.d.ts} +7 -3
  52. package/order/order-items-list/sc-order-items-list.component.d.ts +102 -0
  53. package/order/order-items-list-by-directions/sc-order-items-list-by-directions.component.d.ts +55 -0
  54. package/order/order-items-list-by-stock/sc-order-items-list-by-stock.component.d.ts +55 -0
  55. package/order/sc-order.module.d.ts +10 -11
  56. package/package.json +3 -2
  57. package/providers/index.d.ts +1 -0
  58. package/providers/sc-dialog-service.providers.d.ts +41 -0
  59. package/styles/taiga/snabcentr-tailwind-preset.js +2 -3
  60. package/styles/tailwind/tailwind.scss +96 -100
  61. package/auth/interfaces/api-error-response.d.ts +0 -13
  62. package/esm2022/auth/interfaces/api-error-response.mjs +0 -2
  63. package/esm2022/cart/cart-item/sc-cart-item.component.mjs +0 -71
  64. package/esm2022/helpers/index.mjs +0 -2
  65. package/esm2022/helpers/sc-px-converter.mjs +0 -27
  66. package/esm2022/order/order-item-mobile/sc-order-item-mobile.component.mjs +0 -60
  67. package/helpers/index.d.ts +0 -1
  68. package/helpers/sc-px-converter.d.ts +0 -15
  69. package/order/order-item-mobile/sc-order-item-mobile.component.d.ts +0 -39
@@ -724,6 +724,10 @@ video {
724
724
  margin-left: 1.25rem;
725
725
  }
726
726
 
727
+ .ml-auto {
728
+ margin-left: auto;
729
+ }
730
+
727
731
  .mr-2 {
728
732
  margin-right: 0.5rem;
729
733
  }
@@ -744,6 +748,10 @@ video {
744
748
  margin-top: 2rem;
745
749
  }
746
750
 
751
+ .mt-auto {
752
+ margin-top: auto;
753
+ }
754
+
747
755
  .line-clamp-3 {
748
756
  overflow: hidden;
749
757
  display: -webkit-box;
@@ -797,11 +805,6 @@ video {
797
805
  height: 2.75rem;
798
806
  }
799
807
 
800
- .size-20 {
801
- width: 5rem;
802
- height: 5rem;
803
- }
804
-
805
808
  .size-24 {
806
809
  width: 6rem;
807
810
  height: 6rem;
@@ -927,10 +930,6 @@ video {
927
930
  width: 75%;
928
931
  }
929
932
 
930
- .w-3\/5 {
931
- width: 60%;
932
- }
933
-
934
933
  .w-32 {
935
934
  width: 8rem;
936
935
  }
@@ -939,18 +938,10 @@ video {
939
938
  width: 9rem;
940
939
  }
941
940
 
942
- .w-4\/5 {
943
- width: 80%;
944
- }
945
-
946
941
  .w-40 {
947
942
  width: 10rem;
948
943
  }
949
944
 
950
- .w-50 {
951
- width: 12.5rem;
952
- }
953
-
954
945
  .w-6\/12 {
955
946
  width: 50%;
956
947
  }
@@ -976,6 +967,14 @@ video {
976
967
  width: 100%;
977
968
  }
978
969
 
970
+ .min-w-0 {
971
+ min-width: 0px;
972
+ }
973
+
974
+ .min-w-\[11rem\] {
975
+ min-width: 11rem;
976
+ }
977
+
979
978
  .min-w-\[44rem\] {
980
979
  min-width: 44rem;
981
980
  }
@@ -1012,10 +1011,6 @@ video {
1012
1011
  flex-basis: 15rem;
1013
1012
  }
1014
1013
 
1015
- .basis-min-content {
1016
- flex-basis: min-content;
1017
- }
1018
-
1019
1014
  .table-auto {
1020
1015
  table-layout: auto;
1021
1016
  }
@@ -1077,10 +1072,6 @@ video {
1077
1072
  flex-wrap: wrap;
1078
1073
  }
1079
1074
 
1080
- .content-center {
1081
- align-content: center;
1082
- }
1083
-
1084
1075
  .\!items-start {
1085
1076
  align-items: flex-start !important;
1086
1077
  }
@@ -1101,10 +1092,6 @@ video {
1101
1092
  align-items: center;
1102
1093
  }
1103
1094
 
1104
- .items-baseline {
1105
- align-items: baseline;
1106
- }
1107
-
1108
1095
  .\!justify-start {
1109
1096
  justify-content: flex-start !important;
1110
1097
  }
@@ -1177,6 +1164,11 @@ video {
1177
1164
  gap: 2rem;
1178
1165
  }
1179
1166
 
1167
+ .gap-x-1 {
1168
+ -moz-column-gap: 0.25rem;
1169
+ column-gap: 0.25rem;
1170
+ }
1171
+
1180
1172
  .gap-x-2 {
1181
1173
  -moz-column-gap: 0.5rem;
1182
1174
  column-gap: 0.5rem;
@@ -1187,31 +1179,14 @@ video {
1187
1179
  column-gap: 1rem;
1188
1180
  }
1189
1181
 
1190
- .gap-x-8 {
1191
- -moz-column-gap: 2rem;
1192
- column-gap: 2rem;
1193
- }
1194
-
1195
- .gap-y-0\.5 {
1196
- row-gap: 0.125rem;
1197
- }
1198
-
1199
1182
  .gap-y-1 {
1200
1183
  row-gap: 0.25rem;
1201
1184
  }
1202
1185
 
1203
- .gap-y-2 {
1204
- row-gap: 0.5rem;
1205
- }
1206
-
1207
1186
  .self-start {
1208
1187
  align-self: flex-start;
1209
1188
  }
1210
1189
 
1211
- .\!self-center {
1212
- align-self: center !important;
1213
- }
1214
-
1215
1190
  .self-center {
1216
1191
  align-self: center;
1217
1192
  }
@@ -1240,6 +1215,10 @@ video {
1240
1215
  border-radius: 9999px;
1241
1216
  }
1242
1217
 
1218
+ .rounded-md {
1219
+ border-radius: 0.375rem;
1220
+ }
1221
+
1243
1222
  .rounded-sm {
1244
1223
  border-radius: 0.125rem;
1245
1224
  }
@@ -1323,6 +1302,10 @@ video {
1323
1302
  background-color: var(--tui-border-normal);
1324
1303
  }
1325
1304
 
1305
+ .bg-tui-clear {
1306
+ background-color: var(--tui-background-neutral-1);
1307
+ }
1308
+
1326
1309
  .bg-white {
1327
1310
  --tw-bg-opacity: 1;
1328
1311
  background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
@@ -1606,11 +1589,6 @@ video {
1606
1589
  line-height: 1.75rem;
1607
1590
  }
1608
1591
 
1609
- .text-xs {
1610
- font-size: 0.75rem;
1611
- line-height: 1rem;
1612
- }
1613
-
1614
1592
  .\!font-bold {
1615
1593
  font-weight: 700 !important;
1616
1594
  }
@@ -1719,6 +1697,10 @@ video {
1719
1697
  opacity: 0.5;
1720
1698
  }
1721
1699
 
1700
+ .opacity-60 {
1701
+ opacity: 0.6;
1702
+ }
1703
+
1722
1704
  .opacity-90 {
1723
1705
  opacity: 0.9;
1724
1706
  }
@@ -1769,23 +1751,81 @@ video {
1769
1751
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
1770
1752
  }
1771
1753
 
1754
+ .duration-200 {
1755
+ transition-duration: 200ms;
1756
+ }
1757
+
1772
1758
  .duration-500 {
1773
1759
  transition-duration: 500ms;
1774
1760
  }
1775
1761
 
1762
+ .\@container {
1763
+ container-type: inline-size;
1764
+ }
1765
+
1776
1766
  .hover\:bg-tui-background-neutral-1:hover {
1777
1767
  background-color: var(--tui-background-neutral-1);
1778
1768
  }
1779
1769
 
1780
- @media (min-width: 640px) {
1781
- .sm\:grid-cols-2 {
1770
+ @container (min-width: 32rem) {
1771
+ .\@lg\:col-span-2 {
1772
+ grid-column: span 2 / span 2;
1773
+ }
1774
+
1775
+ .\@lg\:grid-cols-3 {
1776
+ grid-template-columns: repeat(3, minmax(0, 1fr));
1777
+ }
1778
+
1779
+ .\@lg\:justify-end {
1780
+ justify-content: flex-end;
1781
+ }
1782
+
1783
+ .\@lg\:gap-2 {
1784
+ gap: 0.5rem;
1785
+ }
1786
+
1787
+ .\@lg\:gap-3 {
1788
+ gap: 0.75rem;
1789
+ }
1790
+ }
1791
+
1792
+ @container (min-width: 42rem) {
1793
+ .\@2xl\:grid-cols-2 {
1782
1794
  grid-template-columns: repeat(2, minmax(0, 1fr));
1783
1795
  }
1784
1796
 
1785
- .sm\:flex-row {
1797
+ .\@2xl\:grid-rows-1 {
1798
+ grid-template-rows: repeat(1, minmax(0, 1fr));
1799
+ }
1800
+
1801
+ .\@2xl\:\!justify-center {
1802
+ justify-content: center !important;
1803
+ }
1804
+
1805
+ .\@2xl\:gap-4 {
1806
+ gap: 1rem;
1807
+ }
1808
+ }
1809
+
1810
+ @container (min-width: 64rem) {
1811
+ .\@5xl\:flex-row {
1786
1812
  flex-direction: row;
1787
1813
  }
1788
1814
 
1815
+ .\@5xl\:items-center {
1816
+ align-items: center;
1817
+ }
1818
+
1819
+ .\@5xl\:gap-5 {
1820
+ gap: 1.25rem;
1821
+ }
1822
+ }
1823
+
1824
+ @media (min-width: 640px) {
1825
+ .sm\:grid-cols-2 {
1826
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1827
+ }
1828
+
1789
1829
  .sm\:border-32 {
1790
1830
  border-width: 2rem;
1791
1831
  }
@@ -1841,26 +1881,10 @@ video {
1841
1881
  flex-direction: row-reverse !important;
1842
1882
  }
1843
1883
 
1844
- .md\:flex-col {
1845
- flex-direction: column;
1846
- }
1847
-
1848
- .md\:items-start {
1849
- align-items: flex-start;
1850
- }
1851
-
1852
- .md\:items-center {
1853
- align-items: center;
1854
- }
1855
-
1856
1884
  .md\:gap-4 {
1857
1885
  gap: 1rem;
1858
1886
  }
1859
1887
 
1860
- .md\:gap-5 {
1861
- gap: 1.25rem;
1862
- }
1863
-
1864
1888
  .md\:gap-8 {
1865
1889
  gap: 2rem;
1866
1890
  }
@@ -1888,10 +1912,6 @@ video {
1888
1912
  order: 2;
1889
1913
  }
1890
1914
 
1891
- .lg\:ml-auto {
1892
- margin-left: auto;
1893
- }
1894
-
1895
1915
  .lg\:mt-5 {
1896
1916
  margin-top: 1.25rem;
1897
1917
  }
@@ -1912,10 +1932,6 @@ video {
1912
1932
  height: 28rem;
1913
1933
  }
1914
1934
 
1915
- .lg\:w-3\/5 {
1916
- width: 60%;
1917
- }
1918
-
1919
1935
  .lg\:grow {
1920
1936
  flex-grow: 1;
1921
1937
  }
@@ -1936,31 +1952,11 @@ video {
1936
1952
  flex-direction: row;
1937
1953
  }
1938
1954
 
1939
- .lg\:items-center {
1940
- align-items: center;
1941
- }
1942
-
1943
1955
  .lg\:gap-4 {
1944
1956
  gap: 1rem;
1945
1957
  }
1946
1958
 
1947
- .lg\:gap-8 {
1948
- gap: 2rem;
1949
- }
1950
- }
1951
-
1952
- @media (min-width: 1280px) {
1953
- .xl\:w-1\/2 {
1954
- width: 50%;
1955
- }
1956
-
1957
- .xl\:gap-8 {
1958
- gap: 2rem;
1959
- }
1960
- }
1961
-
1962
- @media (min-width: 1536px) {
1963
- .\32xl\:w-2\/5 {
1964
- width: 40%;
1959
+ .lg\:\!self-center {
1960
+ align-self: center !important;
1965
1961
  }
1966
1962
  }
@@ -1,13 +0,0 @@
1
- /**
2
- * Данные об ошибках валидации API запросов.
3
- */
4
- export interface ApiErrorResponse {
5
- /**
6
- * Обобщённое сообщение об ошибке.
7
- */
8
- message: string;
9
- /**
10
- * Подробное описание каждой ошибки. Содержит список полей с детальным описанием ошибок валидации для каждого поля.
11
- */
12
- errors?: Record<string, string[]>;
13
- }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWVycm9yLXJlc3BvbnNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2F1dGgvaW50ZXJmYWNlcy9hcGktZXJyb3ItcmVzcG9uc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog0JTQsNC90L3Ri9C1INC+0LEg0L7RiNC40LHQutCw0YUg0LLQsNC70LjQtNCw0YbQuNC4IEFQSSDQt9Cw0L/RgNC+0YHQvtCyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwaUVycm9yUmVzcG9uc2Uge1xuICAgIC8qKlxuICAgICAqINCe0LHQvtCx0YnRkdC90L3QvtC1INGB0L7QvtCx0YnQtdC90LjQtSDQvtCxINC+0YjQuNCx0LrQtS5cbiAgICAgKi9cbiAgICBtZXNzYWdlOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiDQn9C+0LTRgNC+0LHQvdC+0LUg0L7Qv9C40YHQsNC90LjQtSDQutCw0LbQtNC+0Lkg0L7RiNC40LHQutC4LiDQodC+0LTQtdGA0LbQuNGCINGB0L/QuNGB0L7QuiDQv9C+0LvQtdC5INGBINC00LXRgtCw0LvRjNC90YvQvCDQvtC/0LjRgdCw0L3QuNC10Lwg0L7RiNC40LHQvtC6INCy0LDQu9C40LTQsNGG0LjQuCDQtNC70Y8g0LrQsNC20LTQvtCz0L4g0L/QvtC70Y8uXG4gICAgICovXG4gICAgZXJyb3JzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+O1xufVxuIl19
@@ -1,71 +0,0 @@
1
- /* eslint-disable no-underscore-dangle */
2
- import { CommonModule } from '@angular/common';
3
- import { ChangeDetectionStrategy, Component, inject, output } from '@angular/core';
4
- import { FormsModule, ReactiveFormsModule } from '@angular/forms';
5
- import { RouterModule } from '@angular/router';
6
- import { SEARCH_TERM_PROVIDERS } from '@snabcentr/client-core';
7
- import { TuiCurrencyPipe } from '@taiga-ui/addon-commerce';
8
- import { TuiAutoFocus } from '@taiga-ui/cdk';
9
- import { TuiButton, TuiFormatNumberPipe, TuiHint, TuiIcon, TuiLink } from '@taiga-ui/core';
10
- import { TuiHighlight, TuiPreview, TuiPreviewDialogService } from '@taiga-ui/kit';
11
- import { TuiTextfieldControllerModule } from '@taiga-ui/legacy';
12
- import { CostWithDiscountComponent, ScHoverImageCarouselComponent, ScInputQuantityComponent, ScPriceWarehouseStockComponent } from '../../catalog';
13
- import { AbstractScPriceCard } from '../../directives';
14
- import { ScNoindexWrapperComponent } from '../../noindex-wrapper';
15
- import * as i0 from "@angular/core";
16
- import * as i1 from "@angular/common";
17
- import * as i2 from "@taiga-ui/polymorpheus";
18
- import * as i3 from "@angular/forms";
19
- import * as i4 from "@taiga-ui/core";
20
- import * as i5 from "@taiga-ui/kit";
21
- /**
22
- * Компонент карточки элемента корзины.
23
- */
24
- export class ScCartItemComponent extends AbstractScPriceCard {
25
- constructor() {
26
- super(...arguments);
27
- /**
28
- * Событие нажатия на кнопку редактирования конфигурации.
29
- */
30
- this.clickSettings = output();
31
- /**
32
- * Сервис диалогового окна предварительного просмотра.
33
- */
34
- this.previewDialogService = inject(TuiPreviewDialogService);
35
- }
36
- /**
37
- * Отображает спецификацию.
38
- *
39
- * @param specificationPreviewReference Шаблон спецификации.
40
- */
41
- showSpecification(specificationPreviewReference) {
42
- this.previewDialogService.open(specificationPreviewReference).subscribe();
43
- }
44
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScCartItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
45
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ScCartItemComponent, isStandalone: true, selector: "sc-cart-item", outputs: { clickSettings: "clickSettings" }, providers: [SEARCH_TERM_PROVIDERS], usesInheritance: true, ngImport: i0, template: "@if (product && cartItem) {\n <div class=\"relative flex w-full gap-4 rounded-xl p-1 text-body-s hover:bg-tui-background-neutral-1\">\n <sc-noindex-wrapper>\n @let isDisabled = product.isHidden || product.isNull;\n <sc-hover-image-carousel\n (click)=\"isDisabled ? null : clickCardEvent.emit()\"\n [images]=\"!isMobile ? getCardImagePreviewList(product) : [getCardImagePreview()]\"\n [isShowActions]=\"false\"\n class=\"aspect-square w-24 shrink-0 cursor-pointer self-start\"\n />\n <div class=\"flex w-full flex-col justify-between gap-4 md:flex-row md:items-center md:gap-5\">\n <div class=\"flex grow flex-col gap-1\">\n <div\n [tuiHighlight]=\"(search$ | async) ?? ''\"\n class=\"text-tui-text-02\"\n >\n \u0410\u0440\u0442\u0438\u043A\u0443\u043B: {{ product.code }}\n </div>\n <div class=\"flex flex-col gap-1\">\n <a\n tuiLink\n [attr.href]=\"href ?? null\"\n [tuiHighlight]=\"(search$ | async) ?? ''\"\n (click)=\"$event.preventDefault(); clickCardEvent.emit()\"\n [class.disabled]=\"isDisabled\"\n class=\"!text-body-m-bold\"\n >\n {{ product.name }}\n </a>\n @if (product.supplierSku) {\n <span class=\"text-tui-text-02\"> \u0410\u0440\u0442\u0438\u043A\u0443\u043B \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044F: {{ product.supplierSku }} </span>\n }\n @if (product?.pack) {\n <div class=\"flex items-center gap-1 text-tui-text-02\">\n \u041D\u043E\u0440\u043C\u0430 \u0443\u043F\u0430\u043A\u043E\u0432\u043A\u0438: {{ product.pack }}\n @if (product.ignoreMinCountCheck) {\n <tui-icon\n icon=\"@tui.package\"\n [tuiHint]=\"minCountHint\"\n [tuiHintShowDelay]=\"100\"\n tuiHintDirection=\"top\"\n class=\"text-body-xl text-tui-text-01 opacity-90\"\n />\n <ng-template #minCountHint>\n \u0414\u043E\u0441\u0442\u0443\u043F\u0435\u043D \u0437\u0430\u043A\u0430\u0437 <br />\n \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u043B\u044C\u043D\u043E\u0433\u043E <br />\n \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u0430\n </ng-template>\n }\n </div>\n }\n\n <sc-cost-with-discount [product]=\"product\" />\n </div>\n @if (cartItem.specificationImgUrl) {\n <a\n tuiLink\n (click)=\"showSpecification(specificationPreview)\"\n [class.disabled]=\"isDisabled\"\n >\n \u0421\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F\n </a>\n }\n <ng-template\n #specificationPreview\n let-preview\n >\n <tui-preview\n [rotatable]=\"false\"\n [zoomable]=\"false\"\n >\n <img\n *polymorpheusOutlet=\"cartItem.specificationImgUrl as src\"\n alt=\"preview\"\n [src]=\"cartItem.specificationImgUrl\"\n />\n <button\n iconStart=\"@tui.x\"\n title=\"Close\"\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n (click)=\"preview.complete()\"\n ></button>\n </tui-preview>\n </ng-template>\n </div>\n <div class=\"flex shrink-0 flex-col gap-4 sm:flex-row md:w-1/2 lg:w-3/5 xl:w-1/2 xl:gap-8 2xl:w-2/5\">\n <div class=\"flex flex-wrap items-center gap-4 md:flex-col md:items-start lg:flex-row lg:items-center lg:gap-8\">\n @if (showQuantityControl) {\n <sc-input-quantity\n #inputQuantity\n [tuiAutoFocus]=\"autoFocuseQuantityInput()\"\n [formControl]=\"quantityControl\"\n size=\"m\"\n [showCross]=\"false\"\n [isDisabled]=\"isDisabled\"\n [step]=\"unitsHelper.productMultiplicity(product)\"\n [ignoreStepValidators]=\"product.ignoreMinCountCheck\"\n [showLoader]=\"quantityShowLoader\"\n (clickClearEvent)=\"clickClearEvent.emit(cartItem)\"\n (keydown.enter)=\"inputQuantity.nativeFocusableElement?.blur()\"\n class=\"w-32 shrink-0\"\n />\n }\n <div class=\"flex w-36 items-center gap-1\">\n @if (cartItem.configurator || this.product.properties?.['isLengthConfigurator']) {\n <button\n tuiIconButton\n iconStart=\"@tui.settings\"\n [disabled]=\"isDisabled\"\n (click)=\"clickSettings.emit()\"\n size=\"s\"\n appearance=\"secondary\"\n class=\"mr-2 !self-center\"\n ></button>\n }\n\n @if (cartItem.height || cartItem.length || cartItem.width) {\n <div class=\"flex flex-col gap-x-2 text-xs text-tui-base-07\">\n @if (cartItem.marker) {\n <p>\u041C\u0430\u0440\u043A\u0438\u0440\u043E\u0432\u043A\u0430: {{ cartItem.marker }}</p>\n }\n @if (cartItem.width) {\n <p>\u0428\u0438\u0440\u0438\u043D\u0430: {{ cartItem.width }} \u043C.</p>\n }\n @if (cartItem.height) {\n <p>\u0412\u044B\u0441\u043E\u0442\u0430: {{ cartItem.height }} \u043C.</p>\n } @else if (cartItem.length) {\n <p>\u0414\u043B\u0438\u043D\u0430: {{ cartItem.length }} \u043C.</p>\n }\n </div>\n }\n </div>\n </div>\n\n <div class=\"flex flex-col\">\n <p class=\"whitespace-nowrap\">\n \u0421\u0443\u043C\u043C\u0430:\n <strong> {{ cartItem.costRub | tuiFormatNumber: { precision: 2, decimalSeparator: '.', rounding: 'ceil' } | async }} {{ 'RUB' | tuiCurrency }}</strong>\n </p>\n <sc-price-warehouse-stock [product]=\"product\" />\n </div>\n <button\n tuiIconButton\n iconStart=\"@tui.trash\"\n (click)=\"clickClearEvent.emit()\"\n size=\"s\"\n appearance=\"secondary\"\n class=\"!absolute left-1 top-1 lg:!relative lg:left-0 lg:top-0 lg:ml-auto\"\n ></button>\n </div>\n </div>\n </sc-noindex-wrapper>\n </div>\n} @else {\n <div class=\"tui-skeleton flex h-[8.25rem] w-full overflow-hidden rounded-xl\"></div>\n}\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: TuiIcon, selector: "tui-icon", inputs: ["icon", "background"] }, { kind: "ngmodule", type: TuiTextfieldControllerModule }, { kind: "directive", type: i2.PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.TuiHintDirective, selector: "[tuiHint]:not(ng-container):not(ng-template)", inputs: ["tuiHintContext", "tuiHintAppearance", "tuiHint"], outputs: ["tuiHintVisible"] }, { kind: "directive", type: TuiLink, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo"] }, { kind: "directive", type: TuiHighlight, selector: "[tuiHighlight]", inputs: ["tuiHighlight", "tuiHighlightColor"] }, { kind: "directive", type: TuiAutoFocus, selector: "[tuiAutoFocus]", inputs: ["tuiAutoFocus"] }, { kind: "component", type: ScHoverImageCarouselComponent, selector: "sc-hover-image-carousel", inputs: ["images", "isShowActions", "productName"] }, { kind: "component", type: CostWithDiscountComponent, selector: "sc-cost-with-discount", inputs: ["product", "size"] }, { kind: "component", type: ScPriceWarehouseStockComponent, selector: "sc-price-warehouse-stock", inputs: ["classList", "product", "withStockHint", "fromMain"] }, { kind: "component", type: ScInputQuantityComponent, selector: "sc-input-quantity", inputs: ["step", "showLoader", "showCross", "ignoreStepValidators", "appearance", "isDisabled", "size"], outputs: ["clickClearEvent"] }, { kind: "pipe", type: TuiCurrencyPipe, name: "tuiCurrency" }, { kind: "pipe", type: TuiFormatNumberPipe, name: "tuiFormatNumber" }, { kind: "component", type: i5.TuiPreviewComponent, selector: "tui-preview", inputs: ["zoomable", "rotatable", "initialScale"] }, { kind: "directive", type: i5.TuiPreviewAction, selector: "[tuiPreviewAction]" }, { kind: "component", type: ScNoindexWrapperComponent, selector: "sc-noindex-wrapper" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
46
- }
47
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScCartItemComponent, decorators: [{
48
- type: Component,
49
- args: [{ standalone: true, selector: 'sc-cart-item', imports: [
50
- CommonModule,
51
- RouterModule,
52
- TuiButton,
53
- TuiIcon,
54
- TuiTextfieldControllerModule,
55
- FormsModule,
56
- ReactiveFormsModule,
57
- TuiHint,
58
- TuiLink,
59
- TuiHighlight,
60
- TuiAutoFocus,
61
- ScHoverImageCarouselComponent,
62
- CostWithDiscountComponent,
63
- ScPriceWarehouseStockComponent,
64
- ScInputQuantityComponent,
65
- TuiCurrencyPipe,
66
- TuiFormatNumberPipe,
67
- TuiPreview,
68
- ScNoindexWrapperComponent,
69
- ], providers: [SEARCH_TERM_PROVIDERS], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (product && cartItem) {\n <div class=\"relative flex w-full gap-4 rounded-xl p-1 text-body-s hover:bg-tui-background-neutral-1\">\n <sc-noindex-wrapper>\n @let isDisabled = product.isHidden || product.isNull;\n <sc-hover-image-carousel\n (click)=\"isDisabled ? null : clickCardEvent.emit()\"\n [images]=\"!isMobile ? getCardImagePreviewList(product) : [getCardImagePreview()]\"\n [isShowActions]=\"false\"\n class=\"aspect-square w-24 shrink-0 cursor-pointer self-start\"\n />\n <div class=\"flex w-full flex-col justify-between gap-4 md:flex-row md:items-center md:gap-5\">\n <div class=\"flex grow flex-col gap-1\">\n <div\n [tuiHighlight]=\"(search$ | async) ?? ''\"\n class=\"text-tui-text-02\"\n >\n \u0410\u0440\u0442\u0438\u043A\u0443\u043B: {{ product.code }}\n </div>\n <div class=\"flex flex-col gap-1\">\n <a\n tuiLink\n [attr.href]=\"href ?? null\"\n [tuiHighlight]=\"(search$ | async) ?? ''\"\n (click)=\"$event.preventDefault(); clickCardEvent.emit()\"\n [class.disabled]=\"isDisabled\"\n class=\"!text-body-m-bold\"\n >\n {{ product.name }}\n </a>\n @if (product.supplierSku) {\n <span class=\"text-tui-text-02\"> \u0410\u0440\u0442\u0438\u043A\u0443\u043B \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044F: {{ product.supplierSku }} </span>\n }\n @if (product?.pack) {\n <div class=\"flex items-center gap-1 text-tui-text-02\">\n \u041D\u043E\u0440\u043C\u0430 \u0443\u043F\u0430\u043A\u043E\u0432\u043A\u0438: {{ product.pack }}\n @if (product.ignoreMinCountCheck) {\n <tui-icon\n icon=\"@tui.package\"\n [tuiHint]=\"minCountHint\"\n [tuiHintShowDelay]=\"100\"\n tuiHintDirection=\"top\"\n class=\"text-body-xl text-tui-text-01 opacity-90\"\n />\n <ng-template #minCountHint>\n \u0414\u043E\u0441\u0442\u0443\u043F\u0435\u043D \u0437\u0430\u043A\u0430\u0437 <br />\n \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u043B\u044C\u043D\u043E\u0433\u043E <br />\n \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u0430\n </ng-template>\n }\n </div>\n }\n\n <sc-cost-with-discount [product]=\"product\" />\n </div>\n @if (cartItem.specificationImgUrl) {\n <a\n tuiLink\n (click)=\"showSpecification(specificationPreview)\"\n [class.disabled]=\"isDisabled\"\n >\n \u0421\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F\n </a>\n }\n <ng-template\n #specificationPreview\n let-preview\n >\n <tui-preview\n [rotatable]=\"false\"\n [zoomable]=\"false\"\n >\n <img\n *polymorpheusOutlet=\"cartItem.specificationImgUrl as src\"\n alt=\"preview\"\n [src]=\"cartItem.specificationImgUrl\"\n />\n <button\n iconStart=\"@tui.x\"\n title=\"Close\"\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n (click)=\"preview.complete()\"\n ></button>\n </tui-preview>\n </ng-template>\n </div>\n <div class=\"flex shrink-0 flex-col gap-4 sm:flex-row md:w-1/2 lg:w-3/5 xl:w-1/2 xl:gap-8 2xl:w-2/5\">\n <div class=\"flex flex-wrap items-center gap-4 md:flex-col md:items-start lg:flex-row lg:items-center lg:gap-8\">\n @if (showQuantityControl) {\n <sc-input-quantity\n #inputQuantity\n [tuiAutoFocus]=\"autoFocuseQuantityInput()\"\n [formControl]=\"quantityControl\"\n size=\"m\"\n [showCross]=\"false\"\n [isDisabled]=\"isDisabled\"\n [step]=\"unitsHelper.productMultiplicity(product)\"\n [ignoreStepValidators]=\"product.ignoreMinCountCheck\"\n [showLoader]=\"quantityShowLoader\"\n (clickClearEvent)=\"clickClearEvent.emit(cartItem)\"\n (keydown.enter)=\"inputQuantity.nativeFocusableElement?.blur()\"\n class=\"w-32 shrink-0\"\n />\n }\n <div class=\"flex w-36 items-center gap-1\">\n @if (cartItem.configurator || this.product.properties?.['isLengthConfigurator']) {\n <button\n tuiIconButton\n iconStart=\"@tui.settings\"\n [disabled]=\"isDisabled\"\n (click)=\"clickSettings.emit()\"\n size=\"s\"\n appearance=\"secondary\"\n class=\"mr-2 !self-center\"\n ></button>\n }\n\n @if (cartItem.height || cartItem.length || cartItem.width) {\n <div class=\"flex flex-col gap-x-2 text-xs text-tui-base-07\">\n @if (cartItem.marker) {\n <p>\u041C\u0430\u0440\u043A\u0438\u0440\u043E\u0432\u043A\u0430: {{ cartItem.marker }}</p>\n }\n @if (cartItem.width) {\n <p>\u0428\u0438\u0440\u0438\u043D\u0430: {{ cartItem.width }} \u043C.</p>\n }\n @if (cartItem.height) {\n <p>\u0412\u044B\u0441\u043E\u0442\u0430: {{ cartItem.height }} \u043C.</p>\n } @else if (cartItem.length) {\n <p>\u0414\u043B\u0438\u043D\u0430: {{ cartItem.length }} \u043C.</p>\n }\n </div>\n }\n </div>\n </div>\n\n <div class=\"flex flex-col\">\n <p class=\"whitespace-nowrap\">\n \u0421\u0443\u043C\u043C\u0430:\n <strong> {{ cartItem.costRub | tuiFormatNumber: { precision: 2, decimalSeparator: '.', rounding: 'ceil' } | async }} {{ 'RUB' | tuiCurrency }}</strong>\n </p>\n <sc-price-warehouse-stock [product]=\"product\" />\n </div>\n <button\n tuiIconButton\n iconStart=\"@tui.trash\"\n (click)=\"clickClearEvent.emit()\"\n size=\"s\"\n appearance=\"secondary\"\n class=\"!absolute left-1 top-1 lg:!relative lg:left-0 lg:top-0 lg:ml-auto\"\n ></button>\n </div>\n </div>\n </sc-noindex-wrapper>\n </div>\n} @else {\n <div class=\"tui-skeleton flex h-[8.25rem] w-full overflow-hidden rounded-xl\"></div>\n}\n" }]
70
- }] });
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2FydC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9jYXJ0L2NhcnQtaXRlbS9zYy1jYXJ0LWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NhcnQvY2FydC1pdGVtL3NjLWNhcnQtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx5Q0FBeUM7QUFFekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBaUMsTUFBTSxlQUFlLENBQUM7QUFDbEgsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3QyxPQUFPLEVBQUUsU0FBUyxFQUFvQixtQkFBbUIsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdHLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWhFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSw2QkFBNkIsRUFBRSx3QkFBd0IsRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuSixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7OztBQUVsRTs7R0FFRztBQTZCSCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsbUJBQW1CO0lBNUI1RDs7UUE2Qkk7O1dBRUc7UUFDYSxrQkFBYSxHQUEyQixNQUFNLEVBQUUsQ0FBQztRQUVqRTs7V0FFRztRQUNjLHlCQUFvQixHQUE0QixNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQztLQVVwRztJQVJHOzs7O09BSUc7SUFDTyxpQkFBaUIsQ0FBQyw2QkFBNEQ7UUFDcEYsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzlFLENBQUM7K0dBbEJRLG1CQUFtQjttR0FBbkIsbUJBQW1CLHdHQUhqQixDQUFDLHFCQUFxQixDQUFDLGlEQzdDdEMsKzNSQThKQSwyQ0RySVEsWUFBWSxtRkFDWixZQUFZLCtCQUNaLFNBQVMsb0lBQ1QsT0FBTyxvRkFDUCw0QkFBNEIsaUxBQzVCLFdBQVcsc0lBQ1gsbUJBQW1CLHVaQUVuQixPQUFPLDRGQUNQLFlBQVksMEdBQ1osWUFBWSxxRkFDWiw2QkFBNkIsd0hBQzdCLHlCQUF5QiwrRkFDekIsOEJBQThCLG9JQUM5Qix3QkFBd0IsZ01BQ3hCLGVBQWUsK0NBQ2YsbUJBQW1CLDJRQUVuQix5QkFBeUI7OzRGQUtwQixtQkFBbUI7a0JBNUIvQixTQUFTO2lDQUNNLElBQUksWUFDTixjQUFjLFdBRWY7d0JBQ0wsWUFBWTt3QkFDWixZQUFZO3dCQUNaLFNBQVM7d0JBQ1QsT0FBTzt3QkFDUCw0QkFBNEI7d0JBQzVCLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixPQUFPO3dCQUNQLE9BQU87d0JBQ1AsWUFBWTt3QkFDWixZQUFZO3dCQUNaLDZCQUE2Qjt3QkFDN0IseUJBQXlCO3dCQUN6Qiw4QkFBOEI7d0JBQzlCLHdCQUF3Qjt3QkFDeEIsZUFBZTt3QkFDZixtQkFBbUI7d0JBQ25CLFVBQVU7d0JBQ1YseUJBQXlCO3FCQUM1QixhQUNVLENBQUMscUJBQXFCLENBQUMsbUJBQ2pCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby11bmRlcnNjb3JlLWRhbmdsZSAqL1xuXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5qZWN0LCBvdXRwdXQsIE91dHB1dEVtaXR0ZXJSZWYsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTRUFSQ0hfVEVSTV9QUk9WSURFUlMgfSBmcm9tICdAc25hYmNlbnRyL2NsaWVudC1jb3JlJztcbmltcG9ydCB7IFR1aUN1cnJlbmN5UGlwZSB9IGZyb20gJ0B0YWlnYS11aS9hZGRvbi1jb21tZXJjZSc7XG5pbXBvcnQgeyBUdWlBdXRvRm9jdXMgfSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7IFR1aUJ1dHRvbiwgVHVpRGlhbG9nQ29udGV4dCwgVHVpRm9ybWF0TnVtYmVyUGlwZSwgVHVpSGludCwgVHVpSWNvbiwgVHVpTGluayB9IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7IFR1aUhpZ2hsaWdodCwgVHVpUHJldmlldywgVHVpUHJldmlld0RpYWxvZ1NlcnZpY2UgfSBmcm9tICdAdGFpZ2EtdWkva2l0JztcbmltcG9ydCB7IFR1aVRleHRmaWVsZENvbnRyb2xsZXJNb2R1bGUgfSBmcm9tICdAdGFpZ2EtdWkvbGVnYWN5JztcblxuaW1wb3J0IHsgQ29zdFdpdGhEaXNjb3VudENvbXBvbmVudCwgU2NIb3ZlckltYWdlQ2Fyb3VzZWxDb21wb25lbnQsIFNjSW5wdXRRdWFudGl0eUNvbXBvbmVudCwgU2NQcmljZVdhcmVob3VzZVN0b2NrQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY2F0YWxvZyc7XG5pbXBvcnQgeyBBYnN0cmFjdFNjUHJpY2VDYXJkIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBTY05vaW5kZXhXcmFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbm9pbmRleC13cmFwcGVyJztcblxuLyoqXG4gKiDQmtC+0LzQv9C+0L3QtdC90YIg0LrQsNGA0YLQvtGH0LrQuCDRjdC70LXQvNC10L3RgtCwINC60L7RgNC30LjQvdGLLlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnc2MtY2FydC1pdGVtJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2MtY2FydC1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgUm91dGVyTW9kdWxlLFxuICAgICAgICBUdWlCdXR0b24sXG4gICAgICAgIFR1aUljb24sXG4gICAgICAgIFR1aVRleHRmaWVsZENvbnRyb2xsZXJNb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgICBUdWlIaW50LFxuICAgICAgICBUdWlMaW5rLFxuICAgICAgICBUdWlIaWdobGlnaHQsXG4gICAgICAgIFR1aUF1dG9Gb2N1cyxcbiAgICAgICAgU2NIb3ZlckltYWdlQ2Fyb3VzZWxDb21wb25lbnQsXG4gICAgICAgIENvc3RXaXRoRGlzY291bnRDb21wb25lbnQsXG4gICAgICAgIFNjUHJpY2VXYXJlaG91c2VTdG9ja0NvbXBvbmVudCxcbiAgICAgICAgU2NJbnB1dFF1YW50aXR5Q29tcG9uZW50LFxuICAgICAgICBUdWlDdXJyZW5jeVBpcGUsXG4gICAgICAgIFR1aUZvcm1hdE51bWJlclBpcGUsXG4gICAgICAgIFR1aVByZXZpZXcsXG4gICAgICAgIFNjTm9pbmRleFdyYXBwZXJDb21wb25lbnQsXG4gICAgXSxcbiAgICBwcm92aWRlcnM6IFtTRUFSQ0hfVEVSTV9QUk9WSURFUlNdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTY0NhcnRJdGVtQ29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RTY1ByaWNlQ2FyZCB7XG4gICAgLyoqXG4gICAgICog0KHQvtCx0YvRgtC40LUg0L3QsNC20LDRgtC40Y8g0L3QsCDQutC90L7Qv9C60YMg0YDQtdC00LDQutGC0LjRgNC+0LLQsNC90LjRjyDQutC+0L3RhNC40LPRg9GA0LDRhtC40LguXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGNsaWNrU2V0dGluZ3M6IE91dHB1dEVtaXR0ZXJSZWY8dm9pZD4gPSBvdXRwdXQoKTtcblxuICAgIC8qKlxuICAgICAqINCh0LXRgNCy0LjRgSDQtNC40LDQu9C+0LPQvtCy0L7Qs9C+INC+0LrQvdCwINC/0YDQtdC00LLQsNGA0LjRgtC10LvRjNC90L7Qs9C+INC/0YDQvtGB0LzQvtGC0YDQsC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHByZXZpZXdEaWFsb2dTZXJ2aWNlOiBUdWlQcmV2aWV3RGlhbG9nU2VydmljZSA9IGluamVjdChUdWlQcmV2aWV3RGlhbG9nU2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiDQntGC0L7QsdGA0LDQttCw0LXRgiDRgdC/0LXRhtC40YTQuNC60LDRhtC40Y4uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc3BlY2lmaWNhdGlvblByZXZpZXdSZWZlcmVuY2Ug0KjQsNCx0LvQvtC9INGB0L/QtdGG0LjRhNC40LrQsNGG0LjQuC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgc2hvd1NwZWNpZmljYXRpb24oc3BlY2lmaWNhdGlvblByZXZpZXdSZWZlcmVuY2U6IFRlbXBsYXRlUmVmPFR1aURpYWxvZ0NvbnRleHQ+KTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJldmlld0RpYWxvZ1NlcnZpY2Uub3BlbihzcGVjaWZpY2F0aW9uUHJldmlld1JlZmVyZW5jZSkuc3Vic2NyaWJlKCk7XG4gICAgfVxufVxuIiwiQGlmIChwcm9kdWN0ICYmIGNhcnRJdGVtKSB7XG4gICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIGZsZXggdy1mdWxsIGdhcC00IHJvdW5kZWQteGwgcC0xIHRleHQtYm9keS1zIGhvdmVyOmJnLXR1aS1iYWNrZ3JvdW5kLW5ldXRyYWwtMVwiPlxuICAgICAgICA8c2Mtbm9pbmRleC13cmFwcGVyPlxuICAgICAgICAgICAgQGxldCBpc0Rpc2FibGVkID0gcHJvZHVjdC5pc0hpZGRlbiB8fCBwcm9kdWN0LmlzTnVsbDtcbiAgICAgICAgICAgIDxzYy1ob3Zlci1pbWFnZS1jYXJvdXNlbFxuICAgICAgICAgICAgICAgIChjbGljayk9XCJpc0Rpc2FibGVkID8gbnVsbCA6IGNsaWNrQ2FyZEV2ZW50LmVtaXQoKVwiXG4gICAgICAgICAgICAgICAgW2ltYWdlc109XCIhaXNNb2JpbGUgPyBnZXRDYXJkSW1hZ2VQcmV2aWV3TGlzdChwcm9kdWN0KSA6IFtnZXRDYXJkSW1hZ2VQcmV2aWV3KCldXCJcbiAgICAgICAgICAgICAgICBbaXNTaG93QWN0aW9uc109XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhc3BlY3Qtc3F1YXJlIHctMjQgc2hyaW5rLTAgY3Vyc29yLXBvaW50ZXIgc2VsZi1zdGFydFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggdy1mdWxsIGZsZXgtY29sIGp1c3RpZnktYmV0d2VlbiBnYXAtNCBtZDpmbGV4LXJvdyBtZDppdGVtcy1jZW50ZXIgbWQ6Z2FwLTVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBncm93IGZsZXgtY29sIGdhcC0xXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0dWlIaWdobGlnaHRdPVwiKHNlYXJjaCQgfCBhc3luYykgPz8gJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXR1aS10ZXh0LTAyXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAg0JDRgNGC0LjQutGD0Ls6IHt7IHByb2R1Y3QuY29kZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHVpTGlua1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmhyZWZdPVwiaHJlZiA/PyBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdHVpSGlnaGxpZ2h0XT1cIihzZWFyY2gkIHwgYXN5bmMpID8/ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IGNsaWNrQ2FyZEV2ZW50LmVtaXQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiIXRleHQtYm9keS1tLWJvbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHByb2R1Y3QubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChwcm9kdWN0LnN1cHBsaWVyU2t1KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXR1aS10ZXh0LTAyXCI+INCQ0YDRgtC40LrRg9C7INC/0YDQvtC40LfQstC+0LTQuNGC0LXQu9GPOiB7eyBwcm9kdWN0LnN1cHBsaWVyU2t1IH19IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAocHJvZHVjdD8ucGFjaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMSB0ZXh0LXR1aS10ZXh0LTAyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgINCd0L7RgNC80LAg0YPQv9Cw0LrQvtCy0LrQuDoge3sgcHJvZHVjdC5wYWNrIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAocHJvZHVjdC5pZ25vcmVNaW5Db3VudENoZWNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHVpLWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiQHR1aS5wYWNrYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdHVpSGludF09XCJtaW5Db3VudEhpbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0dWlIaW50U2hvd0RlbGF5XT1cIjEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHVpSGludERpcmVjdGlvbj1cInRvcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWJvZHkteGwgdGV4dC10dWktdGV4dC0wMSBvcGFjaXR5LTkwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI21pbkNvdW50SGludD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDQlNC+0YHRgtGD0L/QtdC9INC30LDQutCw0LcgPGJyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg0L/RgNC+0LjQt9Cy0L7Qu9GM0L3QvtCz0L4gPGJyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg0LrQvtC70LjRh9C10YHRgtCy0LBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgPHNjLWNvc3Qtd2l0aC1kaXNjb3VudCBbcHJvZHVjdF09XCJwcm9kdWN0XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoY2FydEl0ZW0uc3BlY2lmaWNhdGlvbkltZ1VybCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dWlMaW5rXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dTcGVjaWZpY2F0aW9uKHNwZWNpZmljYXRpb25QcmV2aWV3KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgINCh0L/QtdGG0LjRhNC40LrQsNGG0LjRj1xuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgI3NwZWNpZmljYXRpb25QcmV2aWV3XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQtcHJldmlld1xuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dHVpLXByZXZpZXdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcm90YXRhYmxlXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbem9vbWFibGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnBvbHltb3JwaGV1c091dGxldD1cImNhcnRJdGVtLnNwZWNpZmljYXRpb25JbWdVcmwgYXMgc3JjXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwicHJldmlld1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiY2FydEl0ZW0uc3BlY2lmaWNhdGlvbkltZ1VybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25TdGFydD1cIkB0dWkueFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwiQ2xvc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dWlJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR1aVByZXZpZXdBY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJwcmV2aWV3LmNvbXBsZXRlKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHVpLXByZXZpZXc+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggc2hyaW5rLTAgZmxleC1jb2wgZ2FwLTQgc206ZmxleC1yb3cgbWQ6dy0xLzIgbGc6dy0zLzUgeGw6dy0xLzIgeGw6Z2FwLTggMnhsOnctMi81XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgZ2FwLTQgbWQ6ZmxleC1jb2wgbWQ6aXRlbXMtc3RhcnQgbGc6ZmxleC1yb3cgbGc6aXRlbXMtY2VudGVyIGxnOmdhcC04XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHNob3dRdWFudGl0eUNvbnRyb2wpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2MtaW5wdXQtcXVhbnRpdHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2lucHV0UXVhbnRpdHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3R1aUF1dG9Gb2N1c109XCJhdXRvRm9jdXNlUXVhbnRpdHlJbnB1dCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInF1YW50aXR5Q29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dDcm9zc109XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc0Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RlcF09XCJ1bml0c0hlbHBlci5wcm9kdWN0TXVsdGlwbGljaXR5KHByb2R1Y3QpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lnbm9yZVN0ZXBWYWxpZGF0b3JzXT1cInByb2R1Y3QuaWdub3JlTWluQ291bnRDaGVja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93TG9hZGVyXT1cInF1YW50aXR5U2hvd0xvYWRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGlja0NsZWFyRXZlbnQpPVwiY2xpY2tDbGVhckV2ZW50LmVtaXQoY2FydEl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiaW5wdXRRdWFudGl0eS5uYXRpdmVGb2N1c2FibGVFbGVtZW50Py5ibHVyKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctMzIgc2hyaW5rLTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCB3LTM2IGl0ZW1zLWNlbnRlciBnYXAtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoY2FydEl0ZW0uY29uZmlndXJhdG9yIHx8IHRoaXMucHJvZHVjdC5wcm9wZXJ0aWVzPy5bJ2lzTGVuZ3RoQ29uZmlndXJhdG9yJ10pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHVpSWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvblN0YXJ0PVwiQHR1aS5zZXR0aW5nc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xpY2tTZXR0aW5ncy5lbWl0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZWFyYW5jZT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1yLTIgIXNlbGYtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoY2FydEl0ZW0uaGVpZ2h0IHx8IGNhcnRJdGVtLmxlbmd0aCB8fCBjYXJ0SXRlbS53aWR0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAteC0yIHRleHQteHMgdGV4dC10dWktYmFzZS0wN1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChjYXJ0SXRlbS5tYXJrZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD7QnNCw0YDQutC40YDQvtCy0LrQsDoge3sgY2FydEl0ZW0ubWFya2VyIH19PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChjYXJ0SXRlbS53aWR0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPtCo0LjRgNC40L3QsDoge3sgY2FydEl0ZW0ud2lkdGggfX0g0LwuPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChjYXJ0SXRlbS5oZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD7QktGL0YHQvtGC0LA6IHt7IGNhcnRJdGVtLmhlaWdodCB9fSDQvC48L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIGlmIChjYXJ0SXRlbS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD7QlNC70LjQvdCwOiB7eyBjYXJ0SXRlbS5sZW5ndGggfX0g0LwuPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwid2hpdGVzcGFjZS1ub3dyYXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICDQodGD0LzQvNCwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+IHt7IGNhcnRJdGVtLmNvc3RSdWIgfCB0dWlGb3JtYXROdW1iZXI6IHsgcHJlY2lzaW9uOiAyLCBkZWNpbWFsU2VwYXJhdG9yOiAnLicsIHJvdW5kaW5nOiAnY2VpbCcgfSB8IGFzeW5jIH19IHt7ICdSVUInIHwgdHVpQ3VycmVuY3kgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzYy1wcmljZS13YXJlaG91c2Utc3RvY2sgW3Byb2R1Y3RdPVwicHJvZHVjdFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0dWlJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uU3RhcnQ9XCJAdHVpLnRyYXNoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbGlja0NsZWFyRXZlbnQuZW1pdCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCIhYWJzb2x1dGUgbGVmdC0xIHRvcC0xIGxnOiFyZWxhdGl2ZSBsZzpsZWZ0LTAgbGc6dG9wLTAgbGc6bWwtYXV0b1wiXG4gICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NjLW5vaW5kZXgtd3JhcHBlcj5cbiAgICA8L2Rpdj5cbn0gQGVsc2Uge1xuICAgIDxkaXYgY2xhc3M9XCJ0dWktc2tlbGV0b24gZmxleCBoLVs4LjI1cmVtXSB3LWZ1bGwgb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQteGxcIj48L2Rpdj5cbn1cbiJdfQ==
@@ -1,2 +0,0 @@
1
- export * from './sc-px-converter';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvaGVscGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zYy1weC1jb252ZXJ0ZXInO1xuIl19
@@ -1,27 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- /**
4
- * Класс-помощник для конвертации пикселей.
5
- */
6
- export class ScPxConverter {
7
- constructor() {
8
- this.rootFontSize = 16;
9
- }
10
- /**
11
- * Конвертирует пиксели в rem.
12
- *
13
- * @param px Значение которое необходимо конвертировать.
14
- */
15
- pxToRem(px) {
16
- return px / this.rootFontSize;
17
- }
18
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScPxConverter, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
19
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScPxConverter, providedIn: 'root' }); }
20
- }
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScPxConverter, decorators: [{
22
- type: Injectable,
23
- args: [{
24
- providedIn: 'root',
25
- }]
26
- }] });
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtcHgtY29udmVydGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2hlbHBlcnMvc2MtcHgtY29udmVydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTNDOztHQUVHO0FBSUgsTUFBTSxPQUFPLGFBQWE7SUFIMUI7UUFJWSxpQkFBWSxHQUFHLEVBQUUsQ0FBQztLQVU3QjtJQVJHOzs7O09BSUc7SUFDSSxPQUFPLENBQUMsRUFBVTtRQUNyQixPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQ2xDLENBQUM7K0dBVlEsYUFBYTttSEFBYixhQUFhLGNBRlYsTUFBTTs7NEZBRVQsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICog0JrQu9Cw0YHRgS3Qv9C+0LzQvtGJ0L3QuNC6INC00LvRjyDQutC+0L3QstC10YDRgtCw0YbQuNC4INC/0LjQutGB0LXQu9C10LkuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNjUHhDb252ZXJ0ZXIge1xuICAgIHByaXZhdGUgcm9vdEZvbnRTaXplID0gMTY7XG5cbiAgICAvKipcbiAgICAgKiDQmtC+0L3QstC10YDRgtC40YDRg9C10YIg0L/QuNC60YHQtdC70Lgg0LIgcmVtLlxuICAgICAqXG4gICAgICogQHBhcmFtIHB4INCX0L3QsNGH0LXQvdC40LUg0LrQvtGC0L7RgNC+0LUg0L3QtdC+0LHRhdC+0LTQuNC80L4g0LrQvtC90LLQtdGA0YLQuNGA0L7QstCw0YLRjC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcHhUb1JlbShweDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHB4IC8gdGhpcy5yb290Rm9udFNpemU7XG4gICAgfVxufVxuIl19