@snabcentr/client-ui 0.27.0 → 0.28.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.

Potentially problematic release.


This version of @snabcentr/client-ui might be problematic. Click here for more details.

Files changed (26) hide show
  1. package/auth/sc-auth.module.d.ts +1 -2
  2. package/cart/cart-item-mobile/sc-cart-item-mobile.component.d.ts +15 -15
  3. package/catalog/price-card/sc-price-card.component.d.ts +9 -107
  4. package/contragents/sc-contragents.module.d.ts +1 -2
  5. package/directives/abstract-price-card/abstract-sc-price-card.directive.d.ts +107 -0
  6. package/directives/index.d.ts +1 -2
  7. package/esm2020/auth/sc-auth.module.mjs +3 -7
  8. package/esm2020/cart/cart-item-mobile/sc-cart-item-mobile.component.mjs +9 -8
  9. package/esm2020/catalog/price-card/sc-price-card.component.mjs +25 -145
  10. package/esm2020/contragents/sc-contragents.module.mjs +38 -20
  11. package/esm2020/directives/abstract-price-card/abstract-sc-price-card.directive.mjs +131 -0
  12. package/esm2020/directives/index.mjs +2 -3
  13. package/esm2020/helpers/sc-units-helper.mjs +11 -10
  14. package/esm2020/order/order-item-mobile/order-item-mobile.component.mjs +3 -3
  15. package/fesm2015/snabcentr-client-ui.mjs +290 -319
  16. package/fesm2015/snabcentr-client-ui.mjs.map +1 -1
  17. package/fesm2020/snabcentr-client-ui.mjs +288 -314
  18. package/fesm2020/snabcentr-client-ui.mjs.map +1 -1
  19. package/helpers/sc-units-helper.d.ts +6 -6
  20. package/order/order-item-mobile/order-item-mobile.component.d.ts +3 -3
  21. package/package.json +1 -1
  22. package/styles/tailwind/tailwind.scss +4 -40
  23. package/directives/carousel-item-hidden/sc-carousel-item-hidden.directive.d.ts +0 -24
  24. package/directives/carousel-item-hidden/sc-carousel-item-hidden.module.d.ts +0 -11
  25. package/esm2020/directives/carousel-item-hidden/sc-carousel-item-hidden.directive.mjs +0 -40
  26. package/esm2020/directives/carousel-item-hidden/sc-carousel-item-hidden.module.mjs +0 -21
@@ -3,10 +3,10 @@ import * as i0 from "@angular/core";
3
3
  /**
4
4
  * Класс хэлпер для работы со значениями единиц измерения товара.
5
5
  */
6
- export declare class UnitsHelper {
6
+ export declare class ScUnitsHelper {
7
7
  readonly linearValues: string[];
8
8
  /**
9
- * Инициирует экземпляр класса {@link UnitsHelper}.
9
+ * Инициирует экземпляр класса {@link ScUnitsHelper}.
10
10
  *
11
11
  * @param linearValues Единицы измерения линейной величины.
12
12
  */
@@ -14,15 +14,15 @@ export declare class UnitsHelper {
14
14
  /**
15
15
  * Возвращает признак возможности продажи товара на метраж.
16
16
  *
17
- * @param linearValues Товар для которого нужно проверить возможность продажи на метраж.
17
+ * @param product Товар для которого нужно проверить возможность продажи на метраж.
18
18
  */
19
19
  productIsMeasurable(product: ScProduct): boolean;
20
20
  /**
21
21
  * Возвращает кратность количества для товара.
22
22
  *
23
- * @param linearValues Товар для которого нужно вернуть кратность количества.
23
+ * @param product Товар для которого нужно вернуть кратность количества.
24
24
  */
25
25
  productMultiplicity(product: ScProduct): number;
26
- static ɵfac: i0.ɵɵFactoryDeclaration<UnitsHelper, never>;
27
- static ɵprov: i0.ɵɵInjectableDeclaration<UnitsHelper>;
26
+ static ɵfac: i0.ɵɵFactoryDeclaration<ScUnitsHelper, never>;
27
+ static ɵprov: i0.ɵɵInjectableDeclaration<ScUnitsHelper>;
28
28
  }
@@ -1,13 +1,13 @@
1
1
  import { EventEmitter } from '@angular/core';
2
2
  import { ScCartItem, ScIUrls, ScProduct } from '@snabcentr/client-core';
3
3
  import { TuiPreviewDialogService } from '@taiga-ui/addon-preview';
4
- import { UnitsHelper } from '../../helpers/sc-units-helper';
4
+ import { ScUnitsHelper } from '../../helpers/sc-units-helper';
5
5
  import * as i0 from "@angular/core";
6
6
  /**
7
7
  * Компонент карточки элемента заказа.
8
8
  */
9
9
  export declare class ScOrderItemMobileComponent {
10
- readonly unitsHelper: UnitsHelper;
10
+ readonly unitsHelper: ScUnitsHelper;
11
11
  private readonly previewDialogService;
12
12
  private readonly urls;
13
13
  private readonly pathImageNotFound;
@@ -35,7 +35,7 @@ export declare class ScOrderItemMobileComponent {
35
35
  * @param urls Список ссылок на разделы backend'a.
36
36
  * @param pathImageNotFound Путь до изображения 'Товар не найден'.
37
37
  */
38
- constructor(unitsHelper: UnitsHelper, previewDialogService: TuiPreviewDialogService, urls: ScIUrls, pathImageNotFound: string);
38
+ constructor(unitsHelper: ScUnitsHelper, previewDialogService: TuiPreviewDialogService, urls: ScIUrls, pathImageNotFound: string);
39
39
  /**
40
40
  * Продукт элемента заказа.
41
41
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@snabcentr/client-ui",
3
- "version": "0.27.0",
3
+ "version": "0.28.0",
4
4
  "author": "Snabcentr Ltd.",
5
5
  "repository": "https://gitlab.snabcentr.met/web/angular/snabcentr-client-ui-lib",
6
6
  "license": "Commercial",
@@ -648,10 +648,6 @@ video {
648
648
  bottom: 1rem;
649
649
  }
650
650
 
651
- .left-0 {
652
- left: 0px;
653
- }
654
-
655
651
  .left-1 {
656
652
  left: 0.25rem;
657
653
  }
@@ -680,12 +676,12 @@ video {
680
676
  top: 0.25rem;
681
677
  }
682
678
 
683
- .isolate {
684
- isolation: isolate;
679
+ .top-2 {
680
+ top: 0.5rem;
685
681
  }
686
682
 
687
- .m-0 {
688
- margin: 0px;
683
+ .isolate {
684
+ isolation: isolate;
689
685
  }
690
686
 
691
687
  .my-2 {
@@ -726,10 +722,6 @@ video {
726
722
  margin-right: auto;
727
723
  }
728
724
 
729
- .mt-1 {
730
- margin-top: 0.25rem;
731
- }
732
-
733
725
  .mt-2 {
734
726
  margin-top: 0.5rem;
735
727
  }
@@ -804,10 +796,6 @@ video {
804
796
  height: 1rem !important;
805
797
  }
806
798
 
807
- .\!h-5 {
808
- height: 1.25rem !important;
809
- }
810
-
811
799
  .\!h-8 {
812
800
  height: 2rem !important;
813
801
  }
@@ -848,10 +836,6 @@ video {
848
836
  height: 14rem;
849
837
  }
850
838
 
851
- .h-\[19rem\] {
852
- height: 19rem;
853
- }
854
-
855
839
  .h-full {
856
840
  height: 100%;
857
841
  }
@@ -864,10 +848,6 @@ video {
864
848
  max-height: 100%;
865
849
  }
866
850
 
867
- .\!w-5 {
868
- width: 1.25rem !important;
869
- }
870
-
871
851
  .\!w-8 {
872
852
  width: 2rem !important;
873
853
  }
@@ -1010,10 +990,6 @@ video {
1010
990
  justify-content: space-between;
1011
991
  }
1012
992
 
1013
- .justify-stretch {
1014
- justify-content: stretch;
1015
- }
1016
-
1017
993
  .gap-1 {
1018
994
  gap: 0.25rem;
1019
995
  }
@@ -1103,10 +1079,6 @@ video {
1103
1079
  border-radius: 0.25rem;
1104
1080
  }
1105
1081
 
1106
- .rounded-md {
1107
- border-radius: 0.375rem;
1108
- }
1109
-
1110
1082
  .rounded-tui-radius-m {
1111
1083
  border-radius: var(--tui-radius-m);
1112
1084
  }
@@ -1161,10 +1133,6 @@ video {
1161
1133
  background-color: var(--tui-base-04);
1162
1134
  }
1163
1135
 
1164
- .bg-tui-primary {
1165
- background-color: var(--tui-primary);
1166
- }
1167
-
1168
1136
  .bg-white {
1169
1137
  --tw-bg-opacity: 1;
1170
1138
  background-color: rgb(255 255 255 / var(--tw-bg-opacity));
@@ -1187,10 +1155,6 @@ video {
1187
1155
  object-fit: cover;
1188
1156
  }
1189
1157
 
1190
- .p-0 {
1191
- padding: 0px;
1192
- }
1193
-
1194
1158
  .p-1 {
1195
1159
  padding: 0.25rem;
1196
1160
  }
@@ -1,24 +0,0 @@
1
- import { TuiCarouselComponent } from '@taiga-ui/kit';
2
- import * as i0 from "@angular/core";
3
- /**
4
- * Директива для скрытия элементов карусели тайги.
5
- */
6
- export declare class ScCarouselItemHiddenDirective {
7
- private readonly carouselComponent;
8
- /**
9
- * Индекс элемента в карусели.
10
- */
11
- index: number;
12
- /**
13
- * Инициализирует экземпляр класса {@link CarouselItemHiddenDirective}.
14
- *
15
- * @param carouselComponent Компонент карусели, взятый из DI.
16
- */
17
- constructor(carouselComponent: TuiCarouselComponent);
18
- /**
19
- * Свойство, от которого зависит наличие класса `!hidden` у `:host` компонента.
20
- */
21
- private get isHidden();
22
- static ɵfac: i0.ɵɵFactoryDeclaration<ScCarouselItemHiddenDirective, never>;
23
- static ɵdir: i0.ɵɵDirectiveDeclaration<ScCarouselItemHiddenDirective, "[tuiItem], [scCarouselItemHidden]", never, { "index": "index"; }, {}, never, never, false>;
24
- }
@@ -1,11 +0,0 @@
1
- import * as i0 from "@angular/core";
2
- import * as i1 from "./sc-carousel-item-hidden.directive";
3
- import * as i2 from "@taiga-ui/kit";
4
- /**
5
- * Модуль директивы для скрытия элементов карусели тайги.
6
- */
7
- export declare class ScCarouselItemHiddenModule {
8
- static ɵfac: i0.ɵɵFactoryDeclaration<ScCarouselItemHiddenModule, never>;
9
- static ɵmod: i0.ɵɵNgModuleDeclaration<ScCarouselItemHiddenModule, [typeof i1.ScCarouselItemHiddenDirective], [typeof i2.TuiCarouselModule], [typeof i1.ScCarouselItemHiddenDirective]>;
10
- static ɵinj: i0.ɵɵInjectorDeclaration<ScCarouselItemHiddenModule>;
11
- }
@@ -1,40 +0,0 @@
1
- import { Directive, HostBinding, Inject, Input } from '@angular/core';
2
- import { TuiCarouselComponent } from '@taiga-ui/kit';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@taiga-ui/kit";
5
- /**
6
- * Директива для скрытия элементов карусели тайги.
7
- */
8
- export class ScCarouselItemHiddenDirective {
9
- /**
10
- * Инициализирует экземпляр класса {@link CarouselItemHiddenDirective}.
11
- *
12
- * @param carouselComponent Компонент карусели, взятый из DI.
13
- */
14
- constructor(carouselComponent) {
15
- this.carouselComponent = carouselComponent;
16
- }
17
- /**
18
- * Свойство, от которого зависит наличие класса `!hidden` у `:host` компонента.
19
- */
20
- get isHidden() {
21
- return this.index !== this.carouselComponent.index;
22
- }
23
- }
24
- ScCarouselItemHiddenDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScCarouselItemHiddenDirective, deps: [{ token: TuiCarouselComponent }], target: i0.ɵɵFactoryTarget.Directive });
25
- ScCarouselItemHiddenDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.3.0", type: ScCarouselItemHiddenDirective, selector: "[tuiItem], [scCarouselItemHidden]", inputs: { index: "index" }, host: { properties: { "class.!hidden": "this.isHidden" } }, ngImport: i0 });
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScCarouselItemHiddenDirective, decorators: [{
27
- type: Directive,
28
- args: [{
29
- selector: '[tuiItem], [scCarouselItemHidden]',
30
- }]
31
- }], ctorParameters: function () { return [{ type: i1.TuiCarouselComponent, decorators: [{
32
- type: Inject,
33
- args: [TuiCarouselComponent]
34
- }] }]; }, propDecorators: { index: [{
35
- type: Input
36
- }], isHidden: [{
37
- type: HostBinding,
38
- args: ['class.!hidden']
39
- }] } });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2Fyb3VzZWwtaXRlbS1oaWRkZW4uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2RpcmVjdGl2ZXMvY2Fyb3VzZWwtaXRlbS1oaWRkZW4vc2MtY2Fyb3VzZWwtaXRlbS1oaWRkZW4uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFFckQ7O0dBRUc7QUFJSCxNQUFNLE9BQU8sNkJBQTZCO0lBT3RDOzs7O09BSUc7SUFDSCxZQUVxQixpQkFBdUM7UUFBdkMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFzQjtJQUN6RCxDQUFDO0lBRUo7O09BRUc7SUFDSCxJQUNZLFFBQVE7UUFDaEIsT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUM7SUFDdkQsQ0FBQzs7MEhBdkJRLDZCQUE2QixrQkFhMUIsb0JBQW9COzhHQWJ2Qiw2QkFBNkI7MkZBQTdCLDZCQUE2QjtrQkFIekMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsbUNBQW1DO2lCQUNoRDs7MEJBY1EsTUFBTTsyQkFBQyxvQkFBb0I7NENBUnpCLEtBQUs7c0JBRFgsS0FBSztnQkFpQk0sUUFBUTtzQkFEbkIsV0FBVzt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBIb3N0QmluZGluZywgSW5qZWN0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHVpQ2Fyb3VzZWxDb21wb25lbnQgfSBmcm9tICdAdGFpZ2EtdWkva2l0JztcblxuLyoqXG4gKiDQlNC40YDQtdC60YLQuNCy0LAg0LTQu9GPINGB0LrRgNGL0YLQuNGPINGN0LvQtdC80LXQvdGC0L7QsiDQutCw0YDRg9GB0LXQu9C4INGC0LDQudCz0LguXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3R1aUl0ZW1dLCBbc2NDYXJvdXNlbEl0ZW1IaWRkZW5dJyxcbn0pXG5leHBvcnQgY2xhc3MgU2NDYXJvdXNlbEl0ZW1IaWRkZW5EaXJlY3RpdmUge1xuICAgIC8qKlxuICAgICAqINCY0L3QtNC10LrRgSDRjdC70LXQvNC10L3RgtCwINCyINC60LDRgNGD0YHQtdC70LguXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaW5kZXg6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqINCY0L3QuNGG0LjQsNC70LjQt9C40YDRg9C10YIg0Y3QutC30LXQvNC/0LvRj9GAINC60LvQsNGB0YHQsCB7QGxpbmsgQ2Fyb3VzZWxJdGVtSGlkZGVuRGlyZWN0aXZlfS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjYXJvdXNlbENvbXBvbmVudCDQmtC+0LzQv9C+0L3QtdC90YIg0LrQsNGA0YPRgdC10LvQuCwg0LLQt9GP0YLRi9C5INC40LcgREkuXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KFR1aUNhcm91c2VsQ29tcG9uZW50KVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNhcm91c2VsQ29tcG9uZW50OiBUdWlDYXJvdXNlbENvbXBvbmVudFxuICAgICkge31cblxuICAgIC8qKlxuICAgICAqINCh0LLQvtC50YHRgtCy0L4sINC+0YIg0LrQvtGC0L7RgNC+0LPQviDQt9Cw0LLQuNGB0LjRgiDQvdCw0LvQuNGH0LjQtSDQutC70LDRgdGB0LAgYCFoaWRkZW5gINGDIGA6aG9zdGAg0LrQvtC80L/QvtC90LXQvdGC0LAuXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy4haGlkZGVuJylcbiAgICBwcml2YXRlIGdldCBpc0hpZGRlbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5kZXggIT09IHRoaXMuY2Fyb3VzZWxDb21wb25lbnQuaW5kZXg7XG4gICAgfVxufVxuIl19
@@ -1,21 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { TuiCarouselModule } from '@taiga-ui/kit';
3
- import { ScCarouselItemHiddenDirective } from './sc-carousel-item-hidden.directive';
4
- import * as i0 from "@angular/core";
5
- /**
6
- * Модуль директивы для скрытия элементов карусели тайги.
7
- */
8
- export class ScCarouselItemHiddenModule {
9
- }
10
- ScCarouselItemHiddenModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScCarouselItemHiddenModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
11
- ScCarouselItemHiddenModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: ScCarouselItemHiddenModule, declarations: [ScCarouselItemHiddenDirective], imports: [TuiCarouselModule], exports: [ScCarouselItemHiddenDirective] });
12
- ScCarouselItemHiddenModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScCarouselItemHiddenModule, imports: [TuiCarouselModule] });
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScCarouselItemHiddenModule, decorators: [{
14
- type: NgModule,
15
- args: [{
16
- imports: [TuiCarouselModule],
17
- declarations: [ScCarouselItemHiddenDirective],
18
- exports: [ScCarouselItemHiddenDirective],
19
- }]
20
- }] });
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2Fyb3VzZWwtaXRlbS1oaWRkZW4ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2RpcmVjdGl2ZXMvY2Fyb3VzZWwtaXRlbS1oaWRkZW4vc2MtY2Fyb3VzZWwtaXRlbS1oaWRkZW4ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWxELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOztBQUVwRjs7R0FFRztBQU1ILE1BQU0sT0FBTywwQkFBMEI7O3VIQUExQiwwQkFBMEI7d0hBQTFCLDBCQUEwQixpQkFIcEIsNkJBQTZCLGFBRGxDLGlCQUFpQixhQUVqQiw2QkFBNkI7d0hBRTlCLDBCQUEwQixZQUp6QixpQkFBaUI7MkZBSWxCLDBCQUEwQjtrQkFMdEMsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztvQkFDNUIsWUFBWSxFQUFFLENBQUMsNkJBQTZCLENBQUM7b0JBQzdDLE9BQU8sRUFBRSxDQUFDLDZCQUE2QixDQUFDO2lCQUMzQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUdWlDYXJvdXNlbE1vZHVsZSB9IGZyb20gJ0B0YWlnYS11aS9raXQnO1xuXG5pbXBvcnQgeyBTY0Nhcm91c2VsSXRlbUhpZGRlbkRpcmVjdGl2ZSB9IGZyb20gJy4vc2MtY2Fyb3VzZWwtaXRlbS1oaWRkZW4uZGlyZWN0aXZlJztcblxuLyoqXG4gKiDQnNC+0LTRg9C70Ywg0LTQuNGA0LXQutGC0LjQstGLINC00LvRjyDRgdC60YDRi9GC0LjRjyDRjdC70LXQvNC10L3RgtC+0LIg0LrQsNGA0YPRgdC10LvQuCDRgtCw0LnQs9C4LlxuICovXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtUdWlDYXJvdXNlbE1vZHVsZV0sXG4gICAgZGVjbGFyYXRpb25zOiBbU2NDYXJvdXNlbEl0ZW1IaWRkZW5EaXJlY3RpdmVdLFxuICAgIGV4cG9ydHM6IFtTY0Nhcm91c2VsSXRlbUhpZGRlbkRpcmVjdGl2ZV0sXG59KVxuZXhwb3J0IGNsYXNzIFNjQ2Fyb3VzZWxJdGVtSGlkZGVuTW9kdWxlIHt9XG4iXX0=