myrta-ui 17.1.1 → 17.1.3

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.
@@ -1,17 +1,17 @@
1
- import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, inject, Input, Output } from '@angular/core';
2
2
  import { GalleryConfirmModalComponent } from '../gallery-confirm-modal/gallery-confirm-modal.component';
3
+ import { AutoSaveStore } from '../../../../services';
3
4
  import * as i0 from "@angular/core";
4
5
  import * as i1 from "../../services/gallery.service";
5
6
  import * as i2 from "../../../../services";
6
- import * as i3 from "@ngrx/store";
7
- import * as i4 from "@angular/common";
8
- import * as i5 from "@angular/forms";
9
- import * as i6 from "../../../form/input-textarea/input-textarea.component";
10
- import * as i7 from "../../../loader/loader.component";
7
+ import * as i3 from "@angular/common";
8
+ import * as i4 from "@angular/forms";
9
+ import * as i5 from "../../../form/input-textarea/input-textarea.component";
10
+ import * as i6 from "../../../loader/loader.component";
11
11
  export class GalleryItemComponent {
12
12
  _galleryService;
13
13
  _modalService;
14
- _store;
14
+ _autoSaveStore = inject(AutoSaveStore);
15
15
  timeStamp = (new Date()).getTime();
16
16
  isLoading = false;
17
17
  _timer;
@@ -30,11 +30,9 @@ export class GalleryItemComponent {
30
30
  openGalleryModal = new EventEmitter();
31
31
  deletePhoto = new EventEmitter();
32
32
  updatePhoto = new EventEmitter();
33
- constructor(_galleryService, _modalService, _store) {
33
+ constructor(_galleryService, _modalService) {
34
34
  this._galleryService = _galleryService;
35
35
  this._modalService = _modalService;
36
- this._store = _store;
37
- // this.fields$ = this._store.select(selectFields);
38
36
  }
39
37
  getImageUrl() {
40
38
  return this.preview.previewUrl + '?' + this.timeStamp;
@@ -48,6 +46,9 @@ export class GalleryItemComponent {
48
46
  get isLoadingImage() {
49
47
  return this.isLoading && !!this.rotateSlides.find((s) => s.previewImageId === this.preview.previewImageId);
50
48
  }
49
+ get fields() {
50
+ return this._autoSaveStore.fields();
51
+ }
51
52
  onOpenGalleryModal() {
52
53
  this.openGalleryModal.emit(this.index);
53
54
  }
@@ -67,24 +68,27 @@ export class GalleryItemComponent {
67
68
  }
68
69
  changeDescription(obj) {
69
70
  clearTimeout(this._timer);
70
- // this._store.dispatch(autosaveAddId({id: obj.id}));
71
- // this._store.dispatch(autosaveStartFor({id: obj.id}));
71
+ this._autoSaveStore.addId(obj.id);
72
+ this._autoSaveStore.startFor(obj.id);
72
73
  this._timer = setTimeout(() => {
73
- this._galleryService.update(this.updateEndPoint, this.preview.uuid, obj.value).subscribe(res => {
74
- this.updatePhoto.emit(res);
75
- // this._store.dispatch(autosaveSuccessFor({id: obj.id}));
76
- }, () => {
77
- // this._store.dispatch(autosaveErrorFor({id: obj.id}));
74
+ this._galleryService.update(this.updateEndPoint, this.preview.uuid, obj.value).subscribe({
75
+ next: (res) => {
76
+ this.updatePhoto.emit(res);
77
+ this._autoSaveStore.successFor(obj.id);
78
+ },
79
+ error: () => {
80
+ this._autoSaveStore.autosaveErrorFor(obj.id);
81
+ }
78
82
  });
79
83
  }, 1500);
80
84
  }
81
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GalleryItemComponent, deps: [{ token: i1.GalleryService }, { token: i2.ModalService }, { token: i3.Store }], target: i0.ɵɵFactoryTarget.Component });
82
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: GalleryItemComponent, selector: "mrx-gallery-item", inputs: { preview: "preview", index: "index", isEditing: "isEditing", descriptionMaxLength: "descriptionMaxLength", deleteEndPoint: "deleteEndPoint", updateEndPoint: "updateEndPoint", rotateSlides: "rotateSlides", setIsLoading: ["isLoading", "setIsLoading"] }, outputs: { openGalleryModal: "openGalleryModal", deletePhoto: "deletePhoto", updatePhoto: "updatePhoto" }, ngImport: i0, template: "<div class=\"mrx-gallery-item\">\r\n <div class=\"mrx-gallery-item__preview\" (click)=\"onOpenGalleryModal()\">\r\n\r\n <img [src]=\"getImageUrl()\" [alt]=\"preview.imageName || 'image'\" *ngIf=\"!isLoadingImage; else skeletonTemplate\">\r\n\r\n <ng-template #skeletonTemplate>\r\n <div class=\"d-flex align-items-center justify-content-center w-100 h-100\">\r\n <mrx-loader size=\"medium\" color=\"brand\"></mrx-loader>\r\n </div>\r\n </ng-template>\r\n\r\n <div class=\"mrx-gallery-item__preview-overlay\" *ngIf=\"!isLoadingImage\"></div>\r\n\r\n <div class=\"mrx-gallery-item__preview-controls\" *ngIf=\"!isLoadingImage\">\r\n <a class=\"mrx-gallery-item__preview-controls--icon\" [href]=\"yandexCheckUrl\" target=\"_blank\" (click)=\"$event.stopPropagation()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_12346_12076)\">\r\n <path d=\"M8.00031 15.9838C12.4096 15.9838 15.984 12.4093 15.984 8.00006C15.984 3.59078 12.4096 0.0163574 8.00031 0.0163574C3.59103 0.0163574 0.0166016 3.59078 0.0166016 8.00006C0.0166016 12.4093 3.59103 15.9838 8.00031 15.9838Z\" fill=\"white\"/>\r\n <path d=\"M10.8893 13.0118H9.1367V4.34361H8.35596C6.92484 4.34361 6.17521 5.05916 6.17521 6.12731C6.17521 7.33916 6.69225 7.90065 7.76188 8.6162L8.64336 9.21028L6.11003 13.0103H4.22559L6.50559 9.61768C5.19447 8.68139 4.4567 7.76731 4.4567 6.22509C4.4567 4.29768 5.8004 2.98657 8.3441 2.98657H10.8774V13.0088H10.8893V13.0118Z\" fill=\"#FC3F1D\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_12346_12076\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </a>\r\n\r\n <a class=\"mrx-gallery-item__preview-controls--icon\" [href]=\"googleCheckUrl\" target=\"_blank\" (click)=\"$event.stopPropagation()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M11.5561 4.8901H11.0997V4.86659H5.99967V7.13325H9.20219C8.73497 8.45273 7.47952 9.39992 5.99967 9.39992C4.12202 9.39992 2.59967 7.87757 2.59967 5.99992C2.59967 4.12227 4.12202 2.59992 5.99967 2.59992C6.86639 2.59992 7.65491 2.92689 8.25529 3.46097L9.85811 1.85815C8.84604 0.914935 7.49227 0.333252 5.99967 0.333252C2.87026 0.333252 0.333008 2.8705 0.333008 5.99992C0.333008 9.12934 2.87026 11.6666 5.99967 11.6666C9.12909 11.6666 11.6663 9.12934 11.6663 5.99992C11.6663 5.61997 11.6272 5.24909 11.5561 4.8901Z\" fill=\"#FBC02D\"/>\r\n <path d=\"M0.987305 3.36237L2.84909 4.72775C3.35285 3.48052 4.57289 2.59992 6.0006 2.59992C6.86732 2.59992 7.65584 2.92689 8.25622 3.46097L9.85904 1.85815C8.84697 0.914935 7.4932 0.333252 6.0006 0.333252C3.82404 0.333252 1.93647 1.56207 0.987305 3.36237Z\" fill=\"#E53935\"/>\r\n <path d=\"M6.0008 11.6665C7.4645 11.6665 8.79447 11.1063 9.80002 10.1954L8.04619 8.7113C7.47725 9.14225 6.77005 9.3998 6.0008 9.3998C4.5269 9.3998 3.27542 8.45999 2.80395 7.14844L0.956055 8.57219C1.89389 10.4073 3.79845 11.6665 6.0008 11.6665Z\" fill=\"#4CAF50\"/>\r\n <path d=\"M11.5564 4.88997L11.5519 4.86646H11.1H6V7.13312H9.20252C8.97812 7.76694 8.5704 8.31349 8.04453 8.71157C8.04482 8.71129 8.0451 8.71129 8.04538 8.71101L9.79922 10.1951C9.67512 10.3079 11.6667 8.83312 11.6667 5.99979C11.6667 5.61984 11.6276 5.24896 11.5564 4.88997Z\" fill=\"#1565C0\"/>\r\n </svg>\r\n </a>\r\n\r\n <div class=\"mrx-gallery-item__preview-controls__button d-flex align-items-center justify-content-center\" *ngIf=\"isEditing\" (click)=\"$event.stopPropagation()\">\r\n <span class=\"mrx-icon icon-delete icon-font-16 text-bold\" (click)=\"deleteImage()\"></span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mrx-gallery-item__description\">\r\n <mrx-input-textarea\r\n *ngIf=\"isEditing; else textTemplate\"\r\n [fields]=\"(fields$ | async)!\"\r\n [ngModel]=\"preview.description\"\r\n [autosize]=\"false\"\r\n [rows]=\"2\"\r\n [maxlength]=\"descriptionMaxLength\"\r\n (modelChange)=\"changeDescription($event)\"\r\n ></mrx-input-textarea>\r\n\r\n <ng-template #textTemplate>\r\n {{ preview.description }}\r\n </ng-template>\r\n </div>\r\n</div>\r\n", styles: [".mrx-gallery-item{cursor:pointer}.mrx-gallery-item__preview{width:100%;height:180px;border-radius:4px;overflow:hidden;position:relative;margin-bottom:8px}.mrx-gallery-item__preview img{width:100%;height:100%;object-fit:cover;object-position:center top}.mrx-gallery-item__preview-overlay{position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,#0000 78.93%,#00000059 91.52%)}.mrx-gallery-item__preview-controls{position:absolute;bottom:0;left:0;right:0;z-index:2;padding:8px;display:flex;align-items:center;justify-content:flex-end;gap:8px}.mrx-gallery-item__preview-controls--text{font-family:var(--body-sm-font-family);font-size:var(--body-sm-font-size);font-weight:var(--body-sm-font-weight);line-height:var(--body-sm-line-height);color:var(--neutral-text-inverse);opacity:.8}.mrx-gallery-item__preview-controls--icon{width:16px;height:16px;display:flex;align-items:center;justify-content:center;background-color:#fff;border-radius:50%}.mrx-gallery-item__preview-controls__button{padding:4px;border-radius:4px;background:var(--system-white, #FFF)}.mrx-gallery-item__description{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height);color:var(--neutral-text-primary)}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.InputTextareaComponent, selector: "mrx-input-textarea", inputs: ["fields", "disabled", "readonly", "autosize", "maxlength", "minlength", "rows", "placeholder", "invalid", "invalidMessage", "checkInvalid", "customClasses", "mask", "size"], outputs: ["changed", "blurred", "modelChange"] }, { kind: "component", type: i7.LoaderComponent, selector: "mrx-loader", inputs: ["size", "color", "customClasses"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
85
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GalleryItemComponent, deps: [{ token: i1.GalleryService }, { token: i2.ModalService }], target: i0.ɵɵFactoryTarget.Component });
86
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: GalleryItemComponent, selector: "mrx-gallery-item", inputs: { preview: "preview", index: "index", isEditing: "isEditing", descriptionMaxLength: "descriptionMaxLength", deleteEndPoint: "deleteEndPoint", updateEndPoint: "updateEndPoint", rotateSlides: "rotateSlides", setIsLoading: ["isLoading", "setIsLoading"] }, outputs: { openGalleryModal: "openGalleryModal", deletePhoto: "deletePhoto", updatePhoto: "updatePhoto" }, ngImport: i0, template: "<div class=\"mrx-gallery-item\">\r\n <div class=\"mrx-gallery-item__preview\" (click)=\"onOpenGalleryModal()\">\r\n\r\n <img [src]=\"getImageUrl()\" [alt]=\"preview.imageName || 'image'\" *ngIf=\"!isLoadingImage; else skeletonTemplate\">\r\n\r\n <ng-template #skeletonTemplate>\r\n <div class=\"d-flex align-items-center justify-content-center w-100 h-100\">\r\n <mrx-loader size=\"medium\" color=\"brand\"></mrx-loader>\r\n </div>\r\n </ng-template>\r\n\r\n <div class=\"mrx-gallery-item__preview-overlay\" *ngIf=\"!isLoadingImage\"></div>\r\n\r\n <div class=\"mrx-gallery-item__preview-controls\" *ngIf=\"!isLoadingImage\">\r\n <a class=\"mrx-gallery-item__preview-controls--icon\" [href]=\"yandexCheckUrl\" target=\"_blank\" (click)=\"$event.stopPropagation()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_12346_12076)\">\r\n <path d=\"M8.00031 15.9838C12.4096 15.9838 15.984 12.4093 15.984 8.00006C15.984 3.59078 12.4096 0.0163574 8.00031 0.0163574C3.59103 0.0163574 0.0166016 3.59078 0.0166016 8.00006C0.0166016 12.4093 3.59103 15.9838 8.00031 15.9838Z\" fill=\"white\"/>\r\n <path d=\"M10.8893 13.0118H9.1367V4.34361H8.35596C6.92484 4.34361 6.17521 5.05916 6.17521 6.12731C6.17521 7.33916 6.69225 7.90065 7.76188 8.6162L8.64336 9.21028L6.11003 13.0103H4.22559L6.50559 9.61768C5.19447 8.68139 4.4567 7.76731 4.4567 6.22509C4.4567 4.29768 5.8004 2.98657 8.3441 2.98657H10.8774V13.0088H10.8893V13.0118Z\" fill=\"#FC3F1D\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_12346_12076\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </a>\r\n\r\n <a class=\"mrx-gallery-item__preview-controls--icon\" [href]=\"googleCheckUrl\" target=\"_blank\" (click)=\"$event.stopPropagation()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M11.5561 4.8901H11.0997V4.86659H5.99967V7.13325H9.20219C8.73497 8.45273 7.47952 9.39992 5.99967 9.39992C4.12202 9.39992 2.59967 7.87757 2.59967 5.99992C2.59967 4.12227 4.12202 2.59992 5.99967 2.59992C6.86639 2.59992 7.65491 2.92689 8.25529 3.46097L9.85811 1.85815C8.84604 0.914935 7.49227 0.333252 5.99967 0.333252C2.87026 0.333252 0.333008 2.8705 0.333008 5.99992C0.333008 9.12934 2.87026 11.6666 5.99967 11.6666C9.12909 11.6666 11.6663 9.12934 11.6663 5.99992C11.6663 5.61997 11.6272 5.24909 11.5561 4.8901Z\" fill=\"#FBC02D\"/>\r\n <path d=\"M0.987305 3.36237L2.84909 4.72775C3.35285 3.48052 4.57289 2.59992 6.0006 2.59992C6.86732 2.59992 7.65584 2.92689 8.25622 3.46097L9.85904 1.85815C8.84697 0.914935 7.4932 0.333252 6.0006 0.333252C3.82404 0.333252 1.93647 1.56207 0.987305 3.36237Z\" fill=\"#E53935\"/>\r\n <path d=\"M6.0008 11.6665C7.4645 11.6665 8.79447 11.1063 9.80002 10.1954L8.04619 8.7113C7.47725 9.14225 6.77005 9.3998 6.0008 9.3998C4.5269 9.3998 3.27542 8.45999 2.80395 7.14844L0.956055 8.57219C1.89389 10.4073 3.79845 11.6665 6.0008 11.6665Z\" fill=\"#4CAF50\"/>\r\n <path d=\"M11.5564 4.88997L11.5519 4.86646H11.1H6V7.13312H9.20252C8.97812 7.76694 8.5704 8.31349 8.04453 8.71157C8.04482 8.71129 8.0451 8.71129 8.04538 8.71101L9.79922 10.1951C9.67512 10.3079 11.6667 8.83312 11.6667 5.99979C11.6667 5.61984 11.6276 5.24896 11.5564 4.88997Z\" fill=\"#1565C0\"/>\r\n </svg>\r\n </a>\r\n\r\n <div class=\"mrx-gallery-item__preview-controls__button d-flex align-items-center justify-content-center\" *ngIf=\"isEditing\" (click)=\"$event.stopPropagation()\">\r\n <span class=\"mrx-icon icon-delete icon-font-16 text-bold\" (click)=\"deleteImage()\"></span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mrx-gallery-item__description\">\r\n <mrx-input-textarea\r\n *ngIf=\"isEditing; else textTemplate\"\r\n [fields]=\"fields\"\r\n [ngModel]=\"preview.description\"\r\n [autosize]=\"false\"\r\n [rows]=\"2\"\r\n [maxlength]=\"descriptionMaxLength\"\r\n (modelChange)=\"changeDescription($event)\"\r\n ></mrx-input-textarea>\r\n\r\n <ng-template #textTemplate>\r\n {{ preview.description }}\r\n </ng-template>\r\n </div>\r\n</div>\r\n", styles: [".mrx-gallery-item{cursor:pointer}.mrx-gallery-item__preview{width:100%;height:180px;border-radius:4px;overflow:hidden;position:relative;margin-bottom:8px}.mrx-gallery-item__preview img{width:100%;height:100%;object-fit:cover;object-position:center top}.mrx-gallery-item__preview-overlay{position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,#0000 78.93%,#00000059 91.52%)}.mrx-gallery-item__preview-controls{position:absolute;bottom:0;left:0;right:0;z-index:2;padding:8px;display:flex;align-items:center;justify-content:flex-end;gap:8px}.mrx-gallery-item__preview-controls--text{font-family:var(--body-sm-font-family);font-size:var(--body-sm-font-size);font-weight:var(--body-sm-font-weight);line-height:var(--body-sm-line-height);color:var(--neutral-text-inverse);opacity:.8}.mrx-gallery-item__preview-controls--icon{width:16px;height:16px;display:flex;align-items:center;justify-content:center;background-color:#fff;border-radius:50%}.mrx-gallery-item__preview-controls__button{padding:4px;border-radius:4px;background:var(--system-white, #FFF)}.mrx-gallery-item__description{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height);color:var(--neutral-text-primary)}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.InputTextareaComponent, selector: "mrx-input-textarea", inputs: ["fields", "disabled", "readonly", "autosize", "maxlength", "minlength", "rows", "placeholder", "invalid", "invalidMessage", "checkInvalid", "customClasses", "mask", "size"], outputs: ["changed", "blurred", "modelChange"] }, { kind: "component", type: i6.LoaderComponent, selector: "mrx-loader", inputs: ["size", "color", "customClasses"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
83
87
  }
84
88
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GalleryItemComponent, decorators: [{
85
89
  type: Component,
86
- args: [{ selector: 'mrx-gallery-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"mrx-gallery-item\">\r\n <div class=\"mrx-gallery-item__preview\" (click)=\"onOpenGalleryModal()\">\r\n\r\n <img [src]=\"getImageUrl()\" [alt]=\"preview.imageName || 'image'\" *ngIf=\"!isLoadingImage; else skeletonTemplate\">\r\n\r\n <ng-template #skeletonTemplate>\r\n <div class=\"d-flex align-items-center justify-content-center w-100 h-100\">\r\n <mrx-loader size=\"medium\" color=\"brand\"></mrx-loader>\r\n </div>\r\n </ng-template>\r\n\r\n <div class=\"mrx-gallery-item__preview-overlay\" *ngIf=\"!isLoadingImage\"></div>\r\n\r\n <div class=\"mrx-gallery-item__preview-controls\" *ngIf=\"!isLoadingImage\">\r\n <a class=\"mrx-gallery-item__preview-controls--icon\" [href]=\"yandexCheckUrl\" target=\"_blank\" (click)=\"$event.stopPropagation()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_12346_12076)\">\r\n <path d=\"M8.00031 15.9838C12.4096 15.9838 15.984 12.4093 15.984 8.00006C15.984 3.59078 12.4096 0.0163574 8.00031 0.0163574C3.59103 0.0163574 0.0166016 3.59078 0.0166016 8.00006C0.0166016 12.4093 3.59103 15.9838 8.00031 15.9838Z\" fill=\"white\"/>\r\n <path d=\"M10.8893 13.0118H9.1367V4.34361H8.35596C6.92484 4.34361 6.17521 5.05916 6.17521 6.12731C6.17521 7.33916 6.69225 7.90065 7.76188 8.6162L8.64336 9.21028L6.11003 13.0103H4.22559L6.50559 9.61768C5.19447 8.68139 4.4567 7.76731 4.4567 6.22509C4.4567 4.29768 5.8004 2.98657 8.3441 2.98657H10.8774V13.0088H10.8893V13.0118Z\" fill=\"#FC3F1D\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_12346_12076\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </a>\r\n\r\n <a class=\"mrx-gallery-item__preview-controls--icon\" [href]=\"googleCheckUrl\" target=\"_blank\" (click)=\"$event.stopPropagation()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M11.5561 4.8901H11.0997V4.86659H5.99967V7.13325H9.20219C8.73497 8.45273 7.47952 9.39992 5.99967 9.39992C4.12202 9.39992 2.59967 7.87757 2.59967 5.99992C2.59967 4.12227 4.12202 2.59992 5.99967 2.59992C6.86639 2.59992 7.65491 2.92689 8.25529 3.46097L9.85811 1.85815C8.84604 0.914935 7.49227 0.333252 5.99967 0.333252C2.87026 0.333252 0.333008 2.8705 0.333008 5.99992C0.333008 9.12934 2.87026 11.6666 5.99967 11.6666C9.12909 11.6666 11.6663 9.12934 11.6663 5.99992C11.6663 5.61997 11.6272 5.24909 11.5561 4.8901Z\" fill=\"#FBC02D\"/>\r\n <path d=\"M0.987305 3.36237L2.84909 4.72775C3.35285 3.48052 4.57289 2.59992 6.0006 2.59992C6.86732 2.59992 7.65584 2.92689 8.25622 3.46097L9.85904 1.85815C8.84697 0.914935 7.4932 0.333252 6.0006 0.333252C3.82404 0.333252 1.93647 1.56207 0.987305 3.36237Z\" fill=\"#E53935\"/>\r\n <path d=\"M6.0008 11.6665C7.4645 11.6665 8.79447 11.1063 9.80002 10.1954L8.04619 8.7113C7.47725 9.14225 6.77005 9.3998 6.0008 9.3998C4.5269 9.3998 3.27542 8.45999 2.80395 7.14844L0.956055 8.57219C1.89389 10.4073 3.79845 11.6665 6.0008 11.6665Z\" fill=\"#4CAF50\"/>\r\n <path d=\"M11.5564 4.88997L11.5519 4.86646H11.1H6V7.13312H9.20252C8.97812 7.76694 8.5704 8.31349 8.04453 8.71157C8.04482 8.71129 8.0451 8.71129 8.04538 8.71101L9.79922 10.1951C9.67512 10.3079 11.6667 8.83312 11.6667 5.99979C11.6667 5.61984 11.6276 5.24896 11.5564 4.88997Z\" fill=\"#1565C0\"/>\r\n </svg>\r\n </a>\r\n\r\n <div class=\"mrx-gallery-item__preview-controls__button d-flex align-items-center justify-content-center\" *ngIf=\"isEditing\" (click)=\"$event.stopPropagation()\">\r\n <span class=\"mrx-icon icon-delete icon-font-16 text-bold\" (click)=\"deleteImage()\"></span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mrx-gallery-item__description\">\r\n <mrx-input-textarea\r\n *ngIf=\"isEditing; else textTemplate\"\r\n [fields]=\"(fields$ | async)!\"\r\n [ngModel]=\"preview.description\"\r\n [autosize]=\"false\"\r\n [rows]=\"2\"\r\n [maxlength]=\"descriptionMaxLength\"\r\n (modelChange)=\"changeDescription($event)\"\r\n ></mrx-input-textarea>\r\n\r\n <ng-template #textTemplate>\r\n {{ preview.description }}\r\n </ng-template>\r\n </div>\r\n</div>\r\n", styles: [".mrx-gallery-item{cursor:pointer}.mrx-gallery-item__preview{width:100%;height:180px;border-radius:4px;overflow:hidden;position:relative;margin-bottom:8px}.mrx-gallery-item__preview img{width:100%;height:100%;object-fit:cover;object-position:center top}.mrx-gallery-item__preview-overlay{position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,#0000 78.93%,#00000059 91.52%)}.mrx-gallery-item__preview-controls{position:absolute;bottom:0;left:0;right:0;z-index:2;padding:8px;display:flex;align-items:center;justify-content:flex-end;gap:8px}.mrx-gallery-item__preview-controls--text{font-family:var(--body-sm-font-family);font-size:var(--body-sm-font-size);font-weight:var(--body-sm-font-weight);line-height:var(--body-sm-line-height);color:var(--neutral-text-inverse);opacity:.8}.mrx-gallery-item__preview-controls--icon{width:16px;height:16px;display:flex;align-items:center;justify-content:center;background-color:#fff;border-radius:50%}.mrx-gallery-item__preview-controls__button{padding:4px;border-radius:4px;background:var(--system-white, #FFF)}.mrx-gallery-item__description{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height);color:var(--neutral-text-primary)}\n"] }]
87
- }], ctorParameters: () => [{ type: i1.GalleryService }, { type: i2.ModalService }, { type: i3.Store }], propDecorators: { preview: [{
90
+ args: [{ selector: 'mrx-gallery-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"mrx-gallery-item\">\r\n <div class=\"mrx-gallery-item__preview\" (click)=\"onOpenGalleryModal()\">\r\n\r\n <img [src]=\"getImageUrl()\" [alt]=\"preview.imageName || 'image'\" *ngIf=\"!isLoadingImage; else skeletonTemplate\">\r\n\r\n <ng-template #skeletonTemplate>\r\n <div class=\"d-flex align-items-center justify-content-center w-100 h-100\">\r\n <mrx-loader size=\"medium\" color=\"brand\"></mrx-loader>\r\n </div>\r\n </ng-template>\r\n\r\n <div class=\"mrx-gallery-item__preview-overlay\" *ngIf=\"!isLoadingImage\"></div>\r\n\r\n <div class=\"mrx-gallery-item__preview-controls\" *ngIf=\"!isLoadingImage\">\r\n <a class=\"mrx-gallery-item__preview-controls--icon\" [href]=\"yandexCheckUrl\" target=\"_blank\" (click)=\"$event.stopPropagation()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_12346_12076)\">\r\n <path d=\"M8.00031 15.9838C12.4096 15.9838 15.984 12.4093 15.984 8.00006C15.984 3.59078 12.4096 0.0163574 8.00031 0.0163574C3.59103 0.0163574 0.0166016 3.59078 0.0166016 8.00006C0.0166016 12.4093 3.59103 15.9838 8.00031 15.9838Z\" fill=\"white\"/>\r\n <path d=\"M10.8893 13.0118H9.1367V4.34361H8.35596C6.92484 4.34361 6.17521 5.05916 6.17521 6.12731C6.17521 7.33916 6.69225 7.90065 7.76188 8.6162L8.64336 9.21028L6.11003 13.0103H4.22559L6.50559 9.61768C5.19447 8.68139 4.4567 7.76731 4.4567 6.22509C4.4567 4.29768 5.8004 2.98657 8.3441 2.98657H10.8774V13.0088H10.8893V13.0118Z\" fill=\"#FC3F1D\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_12346_12076\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </a>\r\n\r\n <a class=\"mrx-gallery-item__preview-controls--icon\" [href]=\"googleCheckUrl\" target=\"_blank\" (click)=\"$event.stopPropagation()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M11.5561 4.8901H11.0997V4.86659H5.99967V7.13325H9.20219C8.73497 8.45273 7.47952 9.39992 5.99967 9.39992C4.12202 9.39992 2.59967 7.87757 2.59967 5.99992C2.59967 4.12227 4.12202 2.59992 5.99967 2.59992C6.86639 2.59992 7.65491 2.92689 8.25529 3.46097L9.85811 1.85815C8.84604 0.914935 7.49227 0.333252 5.99967 0.333252C2.87026 0.333252 0.333008 2.8705 0.333008 5.99992C0.333008 9.12934 2.87026 11.6666 5.99967 11.6666C9.12909 11.6666 11.6663 9.12934 11.6663 5.99992C11.6663 5.61997 11.6272 5.24909 11.5561 4.8901Z\" fill=\"#FBC02D\"/>\r\n <path d=\"M0.987305 3.36237L2.84909 4.72775C3.35285 3.48052 4.57289 2.59992 6.0006 2.59992C6.86732 2.59992 7.65584 2.92689 8.25622 3.46097L9.85904 1.85815C8.84697 0.914935 7.4932 0.333252 6.0006 0.333252C3.82404 0.333252 1.93647 1.56207 0.987305 3.36237Z\" fill=\"#E53935\"/>\r\n <path d=\"M6.0008 11.6665C7.4645 11.6665 8.79447 11.1063 9.80002 10.1954L8.04619 8.7113C7.47725 9.14225 6.77005 9.3998 6.0008 9.3998C4.5269 9.3998 3.27542 8.45999 2.80395 7.14844L0.956055 8.57219C1.89389 10.4073 3.79845 11.6665 6.0008 11.6665Z\" fill=\"#4CAF50\"/>\r\n <path d=\"M11.5564 4.88997L11.5519 4.86646H11.1H6V7.13312H9.20252C8.97812 7.76694 8.5704 8.31349 8.04453 8.71157C8.04482 8.71129 8.0451 8.71129 8.04538 8.71101L9.79922 10.1951C9.67512 10.3079 11.6667 8.83312 11.6667 5.99979C11.6667 5.61984 11.6276 5.24896 11.5564 4.88997Z\" fill=\"#1565C0\"/>\r\n </svg>\r\n </a>\r\n\r\n <div class=\"mrx-gallery-item__preview-controls__button d-flex align-items-center justify-content-center\" *ngIf=\"isEditing\" (click)=\"$event.stopPropagation()\">\r\n <span class=\"mrx-icon icon-delete icon-font-16 text-bold\" (click)=\"deleteImage()\"></span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mrx-gallery-item__description\">\r\n <mrx-input-textarea\r\n *ngIf=\"isEditing; else textTemplate\"\r\n [fields]=\"fields\"\r\n [ngModel]=\"preview.description\"\r\n [autosize]=\"false\"\r\n [rows]=\"2\"\r\n [maxlength]=\"descriptionMaxLength\"\r\n (modelChange)=\"changeDescription($event)\"\r\n ></mrx-input-textarea>\r\n\r\n <ng-template #textTemplate>\r\n {{ preview.description }}\r\n </ng-template>\r\n </div>\r\n</div>\r\n", styles: [".mrx-gallery-item{cursor:pointer}.mrx-gallery-item__preview{width:100%;height:180px;border-radius:4px;overflow:hidden;position:relative;margin-bottom:8px}.mrx-gallery-item__preview img{width:100%;height:100%;object-fit:cover;object-position:center top}.mrx-gallery-item__preview-overlay{position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,#0000 78.93%,#00000059 91.52%)}.mrx-gallery-item__preview-controls{position:absolute;bottom:0;left:0;right:0;z-index:2;padding:8px;display:flex;align-items:center;justify-content:flex-end;gap:8px}.mrx-gallery-item__preview-controls--text{font-family:var(--body-sm-font-family);font-size:var(--body-sm-font-size);font-weight:var(--body-sm-font-weight);line-height:var(--body-sm-line-height);color:var(--neutral-text-inverse);opacity:.8}.mrx-gallery-item__preview-controls--icon{width:16px;height:16px;display:flex;align-items:center;justify-content:center;background-color:#fff;border-radius:50%}.mrx-gallery-item__preview-controls__button{padding:4px;border-radius:4px;background:var(--system-white, #FFF)}.mrx-gallery-item__description{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height);color:var(--neutral-text-primary)}\n"] }]
91
+ }], ctorParameters: () => [{ type: i1.GalleryService }, { type: i2.ModalService }], propDecorators: { preview: [{
88
92
  type: Input
89
93
  }], index: [{
90
94
  type: Input
@@ -108,4 +112,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
108
112
  }], updatePhoto: [{
109
113
  type: Output
110
114
  }] } });
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FsbGVyeS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9nYWxsZXJ5L2NvbXBvbmVudHMvZ2FsbGVyeS1pdGVtL2dhbGxlcnktaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0YS11aS9zcmMvbGliL2NvbXBvbmVudHMvZ2FsbGVyeS9jb21wb25lbnRzL2dhbGxlcnktaXRlbS9nYWxsZXJ5LWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdoRyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQzs7Ozs7Ozs7O0FBWXhHLE1BQU0sT0FBTyxvQkFBb0I7SUF5QnJCO0lBQ0E7SUFDQTtJQTFCRixTQUFTLEdBQVcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDM0MsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUNsQixNQUFNLENBQWlDO0lBRXhDLE9BQU8sQ0FBdUI7SUFFNUIsT0FBTyxDQUFvQjtJQUMzQixLQUFLLENBQVU7SUFDZixTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ2xCLG9CQUFvQixHQUFHLENBQUMsQ0FBQztJQUN6QixjQUFjLENBQVU7SUFDeEIsY0FBYyxDQUFVO0lBQ3hCLFlBQVksR0FBMEIsRUFBRSxDQUFDO0lBRWxELElBQXdCLFlBQVksQ0FBQyxLQUFjO1FBQ2pELElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENB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QUFLO3NCQUFiLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRWtCLFlBQVk7c0JBQW5DLEtBQUs7dUJBQUMsV0FBVztnQkFLUixnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEdhbGxlcnlJdGVtTW9kZWwsIEdhbGxlcnlSb3RhdGVTbGlkZXMgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2FsbGVyeS1pdGVtLm1vZGVsJztcclxuaW1wb3J0IHsgR2FsbGVyeVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9nYWxsZXJ5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBHYWxsZXJ5Q29uZmlybU1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vZ2FsbGVyeS1jb25maXJtLW1vZGFsL2dhbGxlcnktY29uZmlybS1tb2RhbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBNb2RhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IEZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvc2F2ZS1zdG9yZS9tb2RlbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdtcngtZ2FsbGVyeS1pdGVtJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZ2FsbGVyeS1pdGVtLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9nYWxsZXJ5LWl0ZW0uY29tcG9uZW50Lmxlc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgR2FsbGVyeUl0ZW1Db21wb25lbnQge1xyXG4gIHByaXZhdGUgdGltZVN0YW1wOiBudW1iZXIgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpO1xyXG4gIHByaXZhdGUgaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfdGltZXIhOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PjtcclxuXHJcbiAgcHVibGljIGZpZWxkcyQhOiBPYnNlcnZhYmxlPEZpZWxkW10+O1xyXG5cclxuICBASW5wdXQoKSBwcmV2aWV3ITogR2FsbGVyeUl0ZW1Nb2RlbDtcclxuICBASW5wdXQoKSBpbmRleCE6IG51bWJlcjtcclxuICBASW5wdXQoKSBpc0VkaXRpbmcgPSBmYWxzZTtcclxuICBASW5wdXQoKSBkZXNjcmlwdGlvbk1heExlbmd0aCA9IDA7XHJcbiAgQElucHV0KCkgZGVsZXRlRW5kUG9pbnQhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdXBkYXRlRW5kUG9pbnQhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcm90YXRlU2xpZGVzOiBHYWxsZXJ5Um90YXRlU2xpZGVzW10gPSBbXTtcclxuXHJcbiAgQElucHV0KCdpc0xvYWRpbmcnKSBzZXQgc2V0SXNMb2FkaW5nKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHZhbHVlO1xyXG4gICAgdGhpcy50aW1lU3RhbXAgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpO1xyXG4gIH1cclxuXHJcbiAgQE91dHB1dCgpIG9wZW5HYWxsZXJ5TW9kYWw6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XHJcbiAgQE91dHB1dCgpIGRlbGV0ZVBob3RvOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSB1cGRhdGVQaG90bzogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9nYWxsZXJ5U2VydmljZTogR2FsbGVyeVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9tb2RhbFNlcnZpY2U6IE1vZGFsU2VydmljZSxcclxuICAgIHByaXZhdGUgX3N0b3JlOiBTdG9yZVxyXG4gICkge1xyXG4gICAgLy8gdGhpcy5maWVsZHMkID0gdGhpcy5fc3RvcmUuc2VsZWN0KHNlbGVjdEZpZWxkcyk7XHJcbiAgfVxyXG5cclxuICBnZXRJbWFnZVVybCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMucHJldmlldy5wcmV2aWV3VXJsICsgJz8nICsgdGhpcy50aW1lU3RhbXA7XHJcbiAgfVxyXG5cclxuICBnZXQgeWFuZGV4Q2hlY2tVcmwoKSB7XHJcbiAgICByZXR1cm4gYGh0dHBzOi8veWFuZGV4LnJ1L2ltYWdlcy9zZWFyY2g/c291cmNlPWNvbGxlY3Rpb25zJnJwdD1pbWFnZXZpZXcmdXJsPSR7dGhpcy5wcmV2aWV3LnVybH1gO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGdvb2dsZUNoZWNrVXJsKCkge1xyXG4gICAgcmV0dXJuIGBodHRwczovL2xlbnMuZ29vZ2xlLmNvbS91cGxvYWRieXVybD91cmw9JHt0aGlzLnByZXZpZXcudXJsfWA7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNMb2FkaW5nSW1hZ2UoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pc0xvYWRpbmcgJiYgISF0aGlzLnJvdGF0ZVNsaWRlcy5maW5kKChzKSA9PiBzLnByZXZpZXdJbWFnZUlkID09PSB0aGlzLnByZXZpZXcucHJldmlld0ltYWdlSWQpO1xyXG4gIH1cclxuXHJcbiAgb25PcGVuR2FsbGVyeU1vZGFsKCkge1xyXG4gICAgdGhpcy5vcGVuR2FsbGVyeU1vZGFsLmVtaXQodGhpcy5pbmRleCk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVJbWFnZSgpIHtcclxuICAgIHRoaXMuX21vZGFsU2VydmljZS5vcGVuKEdhbGxlcnlDb25maXJtTW9kYWxDb21wb25lbnQsIHtcclxuICAgICAgdGl0bGU6ICfQo9CU0JDQm9CV0J3QmNCVINCU0JDQndCd0KvQpScsXHJcbiAgICAgIG1lc3NhZ2U6ICfQktGLINGD0LLQtdGA0LXQvdGLLCDRh9GC0L4g0YXQvtGC0LjRgtC1INGD0LTQsNC70LjRgtGMINGE0LDQudC7PydcclxuICAgIH0pXHJcbiAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgIGlmIChyZXMucmVzdWx0KSB7XHJcbiAgICAgICAgICB0aGlzLl9nYWxsZXJ5U2VydmljZS5kZWxldGUodGhpcy5kZWxldGVFbmRQb2ludCwgdGhpcy5wcmV2aWV3LnV1aWQpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmRlbGV0ZVBob3RvLmVtaXQocmVzKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VEZXNjcmlwdGlvbihvYmo6IGFueSkge1xyXG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVyKTtcclxuXHJcbiAgICAvLyB0aGlzLl9zdG9yZS5kaXNwYXRjaChhdXRvc2F2ZUFkZElkKHtpZDogb2JqLmlkfSkpO1xyXG4gICAgLy8gdGhpcy5fc3RvcmUuZGlzcGF0Y2goYXV0b3NhdmVTdGFydEZvcih7aWQ6IG9iai5pZH0pKTtcclxuXHJcbiAgICB0aGlzLl90aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLl9nYWxsZXJ5U2VydmljZS51cGRhdGUodGhpcy51cGRhdGVFbmRQb2ludCwgdGhpcy5wcmV2aWV3LnV1aWQsIG9iai52YWx1ZSkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgdGhpcy51cGRhdGVQaG90by5lbWl0KHJlcyk7XHJcbiAgICAgICAgLy8gdGhpcy5fc3RvcmUuZGlzcGF0Y2goYXV0b3NhdmVTdWNjZXNzRm9yKHtpZDogb2JqLmlkfSkpO1xyXG4gICAgICB9LCAoKSA9PiB7XHJcbiAgICAgICAgLy8gdGhpcy5fc3RvcmUuZGlzcGF0Y2goYXV0b3NhdmVFcnJvckZvcih7aWQ6IG9iai5pZH0pKTtcclxuICAgICAgfSk7XHJcbiAgICB9LCAxNTAwKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIm1yeC1nYWxsZXJ5LWl0ZW1cIj5cclxuICA8ZGl2IGNsYXNzPVwibXJ4LWdhbGxlcnktaXRlbV9fcHJldmlld1wiIChjbGljayk9XCJvbk9wZW5HYWxsZXJ5TW9kYWwoKVwiPlxyXG5cclxuICAgIDxpbWcgW3NyY109XCJnZXRJbWFnZVVybCgpXCIgW2FsdF09XCJwcmV2aWV3LmltYWdlTmFtZSB8fCAnaW1hZ2UnXCIgKm5nSWY9XCIhaXNMb2FkaW5nSW1hZ2U7IGVsc2Ugc2tlbGV0b25UZW1wbGF0ZVwiPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSAjc2tlbGV0b25UZW1wbGF0ZT5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciB3LTEwMCBoLTEwMFwiPlxyXG4gICAgICAgIDxtcngtbG9hZGVyIHNpemU9XCJtZWRpdW1cIiBjb2xvcj1cImJyYW5kXCI+PC9tcngtbG9hZGVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cIm1yeC1nYWxsZXJ5LWl0ZW1fX3ByZXZpZXctb3ZlcmxheVwiICpuZ0lmPVwiIWlzTG9hZGluZ0ltYWdlXCI+PC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cIm1yeC1nYWxsZXJ5LWl0ZW1fX3ByZXZpZXctY29udHJvbHNcIiAqbmdJZj1cIiFpc0xvYWRpbmdJbWFnZVwiPlxyXG4gICAgICA8YSBjbGFzcz1cIm1yeC1nYWxsZXJ5LWl0ZW1fX3ByZXZpZXctY29udHJvbHMtLWljb25cIiBbaHJlZl09XCJ5YW5kZXhDaGVja1VybFwiIHRhcmdldD1cIl9ibGFua1wiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cclxuICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMTIzNDZfMTIwNzYpXCI+XHJcbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNOC4wMDAzMSAxNS45ODM4QzEyLjQwOTYgMTUuOTgzOCAxNS45ODQgMTIuNDA5MyAxNS45ODQgOC4wMDAwNkMxNS45ODQgMy41OTA3OCAxMi40MDk2IDAuMDE2MzU3NCA4LjAwMDMxIDAuMDE2MzU3NEMzLjU5MTAzIDAuMDE2MzU3NCAwLjAxNjYwMTYgMy41OTA3OCAwLjAxNjYwMTYgOC4wMDAwNkMwLjAxNjYwMTYgMTIuNDA5MyAzLjU5MTAzIDE1Ljk4MzggOC4wMDAzMSAxNS45ODM4WlwiIGZpbGw9XCJ3aGl0ZVwiLz5cclxuICAgICAgICAgICAgPHBhdGggZD1cIk0xMC44ODkzIDEzLjAxMThIOS4xMzY3VjQuMzQzNjFIOC4zNTU5NkM2LjkyNDg0IDQuMzQzNjEgNi4xNzUyMSA1LjA1OTE2IDYuMTc1MjEgNi4xMjczMUM2LjE3NTIxIDcuMzM5MTYgNi42OTIyNSA3LjkwMDY1IDcuNzYxODggOC42MTYyTDguNjQzMzYgOS4yMTAyOEw2LjExMDAzIDEzLjAxMDNINC4yMjU1OUw2LjUwNTU5IDkuNjE3NjhDNS4xOTQ0NyA4LjY4MTM5IDQuNDU2NyA3Ljc2NzMxIDQuNDU2NyA2LjIyNTA5QzQuNDU2NyA0LjI5NzY4IDUuODAwNCAyLjk4NjU3IDguMzQ0MSAyLjk4NjU3SDEwLjg3NzRWMTMuMDA4OEgxMC44ODkzVjEzLjAxMThaXCIgZmlsbD1cIiNGQzNGMURcIi8+XHJcbiAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTIzNDZfMTIwNzZcIj5cclxuICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiBmaWxsPVwid2hpdGVcIi8+XHJcbiAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgIDwvYT5cclxuXHJcbiAgICAgIDxhIGNsYXNzPVwibXJ4LWdhbGxlcnktaXRlbV9fcHJldmlldy1jb250cm9scy0taWNvblwiIFtocmVmXT1cImdvb2dsZUNoZWNrVXJsXCIgdGFyZ2V0PVwiX2JsYW5rXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxyXG4gICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgPHBhdGggZD1cIk0xMS41NTYxIDQuODkwMUgxMS4wOTk3VjQuODY2NTlINS45OTk2N1Y3LjEzMzI1SDkuMjAyMTlDOC43MzQ5NyA4LjQ1MjczIDcuNDc5NTIgOS4zOTk5MiA1Ljk5OTY3IDkuMzk5OTJDNC4xMjIwMiA5LjM5OTkyIDIuNTk5NjcgNy44Nzc1NyAyLjU5OTY3IDUuOTk5OTJDMi41OTk2NyA0LjEyMjI3IDQuMTIyMDIgMi41OTk5MiA1Ljk5OTY3IDIuNTk5OTJDNi44NjYzOSAyLjU5OTkyIDcuNjU0OTEgMi45MjY4OSA4LjI1NTI5IDMuNDYwOTdMOS44NTgxMSAxLjg1ODE1QzguODQ2MDQgMC45MTQ5MzUgNy40OTIyNyAwLjMzMzI1MiA1Ljk5OTY3IDAuMzMzMjUyQzIuODcwMjYgMC4zMzMyNTIgMC4zMzMwMDggMi44NzA1IDAuMzMzMDA4IDUuOTk5OTJDMC4zMzMwMDggOS4xMjkzNCAyLjg3MDI2IDExLjY2NjYgNS45OTk2NyAxMS42NjY2QzkuMTI5MDkgMTEuNjY2NiAxMS42NjYzIDkuMTI5MzQgMTEuNjY2MyA1Ljk5OTkyQzExLjY2NjMgNS42MTk5NyAxMS42MjcyIDUuMjQ5MDkgMTEuNTU2MSA0Ljg5MDFaXCIgZmlsbD1cIiNGQkMwMkRcIi8+XHJcbiAgICAgICAgICA8cGF0aCBkPVwiTTAuOTg3MzA1IDMuMzYyMzdMMi44NDkwOSA0LjcyNzc1QzMuMzUyODUgMy40ODA1MiA0LjU3Mjg5IDIuNTk5OTIgNi4wMDA2IDIuNTk5OTJDNi44NjczMiAyLjU5OTkyIDcuNjU1ODQgMi45MjY4OSA4LjI1NjIyIDMuNDYwOTdMOS44NTkwNCAxLjg1ODE1QzguODQ2OTcgMC45MTQ5MzUgNy40OTMyIDAuMzMzMjUyIDYuMDAwNiAwLjMzMzI1MkMzLjgyNDA0IDAuMzMzMjUyIDEuOTM2NDcgMS41NjIwNyAwLjk4NzMwNSAzLjM2MjM3WlwiIGZpbGw9XCIjRTUzOTM1XCIvPlxyXG4gICAgICAgICAgPHBhdGggZD1cIk02LjAwMDggMTEuNjY2NUM3LjQ2NDUgMTEuNjY2NSA4Ljc5NDQ3IDExLjEwNjMgOS44MDAwMiAxMC4xOTU0TDguMDQ2MTkgOC43MTEzQzcuNDc3MjUgOS4xNDIyNSA2Ljc3MDA1IDkuMzk5OCA2LjAwMDggOS4zOTk4QzQuNTI2OSA5LjM5OTggMy4yNzU0MiA4LjQ1OTk5IDIuODAzOTUgNy4xNDg0NEwwLjk1NjA1NSA4LjU3MjE5QzEuODkzODkgMTAuNDA3MyAzLjc5ODQ1IDExLjY2NjUgNi4wMDA4IDExLjY2NjVaXCIgZmlsbD1cIiM0Q0FGNTBcIi8+XHJcbiAgICAgICAgICA8cGF0aCBkPVwiTTExLjU1NjQgNC44ODk5N0wxMS41NTE5IDQuODY2NDZIMTEuMUg2VjcuMTMzMTJIOS4yMDI1MkM4Ljk3ODEyIDcuNzY2OTQgOC41NzA0IDguMzEzNDkgOC4wNDQ1MyA4LjcxMTU3QzguMDQ0ODIgOC43MTEyOSA4LjA0NTEgOC43MTEyOSA4LjA0NTM4IDguNzExMDFMOS43OTkyMiAxMC4xOTUxQzkuNjc1MTIgMTAuMzA3OSAxMS42NjY3IDguODMzMTIgMTEuNjY2NyA1Ljk5OTc5QzExLjY2NjcgNS42MTk4NCAxMS42Mjc2IDUuMjQ4OTYgMTEuNTU2NCA0Ljg4OTk3WlwiIGZpbGw9XCIjMTU2NUMwXCIvPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICA8L2E+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwibXJ4LWdhbGxlcnktaXRlbV9fcHJldmlldy1jb250cm9sc19fYnV0dG9uIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiICpuZ0lmPVwiaXNFZGl0aW5nXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWljb24gaWNvbi1kZWxldGUgaWNvbi1mb250LTE2IHRleHQtYm9sZFwiIChjbGljayk9XCJkZWxldGVJbWFnZSgpXCI+PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJtcngtZ2FsbGVyeS1pdGVtX19kZXNjcmlwdGlvblwiPlxyXG4gICAgPG1yeC1pbnB1dC10ZXh0YXJlYVxyXG4gICAgICAqbmdJZj1cImlzRWRpdGluZzsgZWxzZSB0ZXh0VGVtcGxhdGVcIlxyXG4gICAgICBbZmllbGRzXT1cIihmaWVsZHMkIHwgYXN5bmMpIVwiXHJcbiAgICAgIFtuZ01vZGVsXT1cInByZXZpZXcuZGVzY3JpcHRpb25cIlxyXG4gICAgICBbYXV0b3NpemVdPVwiZmFsc2VcIlxyXG4gICAgICBbcm93c109XCIyXCJcclxuICAgICAgW21heGxlbmd0aF09XCJkZXNjcmlwdGlvbk1heExlbmd0aFwiXHJcbiAgICAgIChtb2RlbENoYW5nZSk9XCJjaGFuZ2VEZXNjcmlwdGlvbigkZXZlbnQpXCJcclxuICAgID48L21yeC1pbnB1dC10ZXh0YXJlYT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgI3RleHRUZW1wbGF0ZT5cclxuICAgICAge3sgcHJldmlldy5kZXNjcmlwdGlvbiB9fVxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FsbGVyeS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9nYWxsZXJ5L2NvbXBvbmVudHMvZ2FsbGVyeS1pdGVtL2dhbGxlcnktaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0YS11aS9zcmMvbGliL2NvbXBvbmVudHMvZ2FsbGVyeS9jb21wb25lbnRzL2dhbGxlcnktaXRlbS9nYWxsZXJ5LWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHeEcsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFFeEcsT0FBTyxFQUFFLGFBQWEsRUFBZ0IsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7QUFTbkUsTUFBTSxPQUFPLG9CQUFvQjtJQTJCckI7SUFDQTtJQTNCRixjQUFjLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0lBRXRDLFNBQVMsR0FBVyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMzQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ2xCLE1BQU0sQ0FBaUM7SUFFeEMsT0FBTyxDQUF1QjtJQUU1QixPQUFPLENBQW9CO0lBQzNCLEtBQUssQ0FBVTtJQUNmLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDbEIsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLGNBQWMsQ0FBVTtJQUN4QixjQUFjLENBQVU7SUFDeEIsWUFBWSxHQUEwQixFQUFFLENBQUM7SUFFbEQsSUFBd0IsWUFBWSxDQUFDLEtBQWM7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Q0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFBO2dCQUN4QyxDQUFDO2dCQUNELEtBQUssRUFBRSxHQUFHLEVBQUU7b0JBQ1YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUE7Z0JBQzlDLENBQUM7YUFDRixDQUFDLENBQUE7UUFDSixDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDWCxDQUFDO3dHQXZGVSxvQkFBb0I7NEZBQXBCLG9CQUFvQix3YUNkakMscXlJQTBEQTs7NEZENUNhLG9CQUFvQjtrQkFOaEMsU0FBUzsrQkFDRSxrQkFBa0IsbUJBR1gsdUJBQXVCLENBQUMsTUFBTTs4R0FXdEMsT0FBTztzQkFBZixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFFa0IsWUFBWTtzQkFBbkMsS0FBSzt1QkFBQyxXQUFXO2dCQUtSLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBHYWxsZXJ5SXRlbU1vZGVsLCBHYWxsZXJ5Um90YXRlU2xpZGVzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dhbGxlcnktaXRlbS5tb2RlbCc7XHJcbmltcG9ydCB7IEdhbGxlcnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZ2FsbGVyeS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgR2FsbGVyeUNvbmZpcm1Nb2RhbENvbXBvbmVudCB9IGZyb20gJy4uL2dhbGxlcnktY29uZmlybS1tb2RhbC9nYWxsZXJ5LWNvbmZpcm0tbW9kYWwuY29tcG9uZW50JztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBdXRvU2F2ZVN0b3JlLCBNb2RhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IEZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvc2F2ZS1zdG9yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ21yeC1nYWxsZXJ5LWl0ZW0nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9nYWxsZXJ5LWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2dhbGxlcnktaXRlbS5jb21wb25lbnQubGVzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBHYWxsZXJ5SXRlbUNvbXBvbmVudCB7XHJcbiAgcHJpdmF0ZSBfYXV0b1NhdmVTdG9yZSA9IGluamVjdChBdXRvU2F2ZVN0b3JlKVxyXG5cclxuICBwcml2YXRlIHRpbWVTdGFtcDogbnVtYmVyID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKTtcclxuICBwcml2YXRlIGlzTG9hZGluZyA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX3RpbWVyITogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD47XHJcblxyXG4gIHB1YmxpYyBmaWVsZHMkITogT2JzZXJ2YWJsZTxGaWVsZFtdPjtcclxuXHJcbiAgQElucHV0KCkgcHJldmlldyE6IEdhbGxlcnlJdGVtTW9kZWw7XHJcbiAgQElucHV0KCkgaW5kZXghOiBudW1iZXI7XHJcbiAgQElucHV0KCkgaXNFZGl0aW5nID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZGVzY3JpcHRpb25NYXhMZW5ndGggPSAwO1xyXG4gIEBJbnB1dCgpIGRlbGV0ZUVuZFBvaW50ITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHVwZGF0ZUVuZFBvaW50ITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHJvdGF0ZVNsaWRlczogR2FsbGVyeVJvdGF0ZVNsaWRlc1tdID0gW107XHJcblxyXG4gIEBJbnB1dCgnaXNMb2FkaW5nJykgc2V0IHNldElzTG9hZGluZyh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSB2YWx1ZTtcclxuICAgIHRoaXMudGltZVN0YW1wID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKTtcclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKSBvcGVuR2FsbGVyeU1vZGFsOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG4gIEBPdXRwdXQoKSBkZWxldGVQaG90bzogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgdXBkYXRlUGhvdG86IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfZ2FsbGVyeVNlcnZpY2U6IEdhbGxlcnlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfbW9kYWxTZXJ2aWNlOiBNb2RhbFNlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIGdldEltYWdlVXJsKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5wcmV2aWV3LnByZXZpZXdVcmwgKyAnPycgKyB0aGlzLnRpbWVTdGFtcDtcclxuICB9XHJcblxyXG4gIGdldCB5YW5kZXhDaGVja1VybCgpIHtcclxuICAgIHJldHVybiBgaHR0cHM6Ly95YW5kZXgucnUvaW1hZ2VzL3NlYXJjaD9zb3VyY2U9Y29sbGVjdGlvbnMmcnB0PWltYWdldmlldyZ1cmw9JHt0aGlzLnByZXZpZXcudXJsfWA7XHJcbiAgfVxyXG5cclxuICBnZXQgZ29vZ2xlQ2hlY2tVcmwoKSB7XHJcbiAgICByZXR1cm4gYGh0dHBzOi8vbGVucy5nb29nbGUuY29tL3VwbG9hZGJ5dXJsP3VybD0ke3RoaXMucHJldmlldy51cmx9YDtcclxuICB9XHJcblxyXG4gIGdldCBpc0xvYWRpbmdJbWFnZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmlzTG9hZGluZyAmJiAhIXRoaXMucm90YXRlU2xpZGVzLmZpbmQoKHMpID0+IHMucHJldmlld0ltYWdlSWQgPT09IHRoaXMucHJldmlldy5wcmV2aWV3SW1hZ2VJZCk7XHJcbiAgfVxyXG5cclxuICBnZXQgZmllbGRzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2F1dG9TYXZlU3RvcmUuZmllbGRzKClcclxuICB9XHJcblxyXG4gIG9uT3BlbkdhbGxlcnlNb2RhbCgpIHtcclxuICAgIHRoaXMub3BlbkdhbGxlcnlNb2RhbC5lbWl0KHRoaXMuaW5kZXgpO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlSW1hZ2UoKSB7XHJcbiAgICB0aGlzLl9tb2RhbFNlcnZpY2Uub3BlbihHYWxsZXJ5Q29uZmlybU1vZGFsQ29tcG9uZW50LCB7XHJcbiAgICAgIHRpdGxlOiAn0KPQlNCQ0JvQldCd0JjQlSDQlNCQ0J3QndCr0KUnLFxyXG4gICAgICBtZXNzYWdlOiAn0JLRiyDRg9Cy0LXRgNC10L3Riywg0YfRgtC+INGF0L7RgtC40YLQtSDRg9C00LDQu9C40YLRjCDRhNCw0LnQuz8nXHJcbiAgICB9KVxyXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICBpZiAocmVzLnJlc3VsdCkge1xyXG4gICAgICAgICAgdGhpcy5fZ2FsbGVyeVNlcnZpY2UuZGVsZXRlKHRoaXMuZGVsZXRlRW5kUG9pbnQsIHRoaXMucHJldmlldy51dWlkKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICAgICAgdGhpcy5kZWxldGVQaG90by5lbWl0KHJlcyk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlRGVzY3JpcHRpb24ob2JqOiBhbnkpIHtcclxuICAgIGNsZWFyVGltZW91dCh0aGlzLl90aW1lcik7XHJcblxyXG4gICAgdGhpcy5fYXV0b1NhdmVTdG9yZS5hZGRJZChvYmouaWQpXHJcbiAgICB0aGlzLl9hdXRvU2F2ZVN0b3JlLnN0YXJ0Rm9yKG9iai5pZClcclxuXHJcbiAgICB0aGlzLl90aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLl9nYWxsZXJ5U2VydmljZS51cGRhdGUodGhpcy51cGRhdGVFbmRQb2ludCwgdGhpcy5wcmV2aWV3LnV1aWQsIG9iai52YWx1ZSkuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZVBob3RvLmVtaXQocmVzKTtcclxuICAgICAgICAgIHRoaXMuX2F1dG9TYXZlU3RvcmUuc3VjY2Vzc0ZvcihvYmouaWQpXHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5fYXV0b1NhdmVTdG9yZS5hdXRvc2F2ZUVycm9yRm9yKG9iai5pZClcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9LCAxNTAwKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIm1yeC1nYWxsZXJ5LWl0ZW1cIj5cclxuICA8ZGl2IGNsYXNzPVwibXJ4LWdhbGxlcnktaXRlbV9fcHJldmlld1wiIChjbGljayk9XCJvbk9wZW5HYWxsZXJ5TW9kYWwoKVwiPlxyXG5cclxuICAgIDxpbWcgW3NyY109XCJnZXRJbWFnZVVybCgpXCIgW2FsdF09XCJwcmV2aWV3LmltYWdlTmFtZSB8fCAnaW1hZ2UnXCIgKm5nSWY9XCIhaXNMb2FkaW5nSW1hZ2U7IGVsc2Ugc2tlbGV0b25UZW1wbGF0ZVwiPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSAjc2tlbGV0b25UZW1wbGF0ZT5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciB3LTEwMCBoLTEwMFwiPlxyXG4gICAgICAgIDxtcngtbG9hZGVyIHNpemU9XCJtZWRpdW1cIiBjb2xvcj1cImJyYW5kXCI+PC9tcngtbG9hZGVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cIm1yeC1nYWxsZXJ5LWl0ZW1fX3ByZXZpZXctb3ZlcmxheVwiICpuZ0lmPVwiIWlzTG9hZGluZ0ltYWdlXCI+PC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cIm1yeC1nYWxsZXJ5LWl0ZW1fX3ByZXZpZXctY29udHJvbHNcIiAqbmdJZj1cIiFpc0xvYWRpbmdJbWFnZVwiPlxyXG4gICAgICA8YSBjbGFzcz1cIm1yeC1nYWxsZXJ5LWl0ZW1fX3ByZXZpZXctY29udHJvbHMtLWljb25cIiBbaHJlZl09XCJ5YW5kZXhDaGVja1VybFwiIHRhcmdldD1cIl9ibGFua1wiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cclxuICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMTIzNDZfMTIwNzYpXCI+XHJcbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNOC4wMDAzMSAxNS45ODM4QzEyLjQwOTYgMTUuOTgzOCAxNS45ODQgMTIuNDA5MyAxNS45ODQgOC4wMDAwNkMxNS45ODQgMy41OTA3OCAxMi40MDk2IDAuMDE2MzU3NCA4LjAwMDMxIDAuMDE2MzU3NEMzLjU5MTAzIDAuMDE2MzU3NCAwLjAxNjYwMTYgMy41OTA3OCAwLjAxNjYwMTYgOC4wMDAwNkMwLjAxNjYwMTYgMTIuNDA5MyAzLjU5MTAzIDE1Ljk4MzggOC4wMDAzMSAxNS45ODM4WlwiIGZpbGw9XCJ3aGl0ZVwiLz5cclxuICAgICAgICAgICAgPHBhdGggZD1cIk0xMC44ODkzIDEzLjAxMThIOS4xMzY3VjQuMzQzNjFIOC4zNTU5NkM2LjkyNDg0IDQuMzQzNjEgNi4xNzUyMSA1LjA1OTE2IDYuMTc1MjEgNi4xMjczMUM2LjE3NTIxIDcuMzM5MTYgNi42OTIyNSA3LjkwMDY1IDcuNzYxODggOC42MTYyTDguNjQzMzYgOS4yMTAyOEw2LjExMDAzIDEzLjAxMDNINC4yMjU1OUw2LjUwNTU5IDkuNjE3NjhDNS4xOTQ0NyA4LjY4MTM5IDQuNDU2NyA3Ljc2NzMxIDQuNDU2NyA2LjIyNTA5QzQuNDU2NyA0LjI5NzY4IDUuODAwNCAyLjk4NjU3IDguMzQ0MSAyLjk4NjU3SDEwLjg3NzRWMTMuMDA4OEgxMC44ODkzVjEzLjAxMThaXCIgZmlsbD1cIiNGQzNGMURcIi8+XHJcbiAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTIzNDZfMTIwNzZcIj5cclxuICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiBmaWxsPVwid2hpdGVcIi8+XHJcbiAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgIDwvYT5cclxuXHJcbiAgICAgIDxhIGNsYXNzPVwibXJ4LWdhbGxlcnktaXRlbV9fcHJldmlldy1jb250cm9scy0taWNvblwiIFtocmVmXT1cImdvb2dsZUNoZWNrVXJsXCIgdGFyZ2V0PVwiX2JsYW5rXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxyXG4gICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgPHBhdGggZD1cIk0xMS41NTYxIDQuODkwMUgxMS4wOTk3VjQuODY2NTlINS45OTk2N1Y3LjEzMzI1SDkuMjAyMTlDOC43MzQ5NyA4LjQ1MjczIDcuNDc5NTIgOS4zOTk5MiA1Ljk5OTY3IDkuMzk5OTJDNC4xMjIwMiA5LjM5OTkyIDIuNTk5NjcgNy44Nzc1NyAyLjU5OTY3IDUuOTk5OTJDMi41OTk2NyA0LjEyMjI3IDQuMTIyMDIgMi41OTk5MiA1Ljk5OTY3IDIuNTk5OTJDNi44NjYzOSAyLjU5OTkyIDcuNjU0OTEgMi45MjY4OSA4LjI1NTI5IDMuNDYwOTdMOS44NTgxMSAxLjg1ODE1QzguODQ2MDQgMC45MTQ5MzUgNy40OTIyNyAwLjMzMzI1MiA1Ljk5OTY3IDAuMzMzMjUyQzIuODcwMjYgMC4zMzMyNTIgMC4zMzMwMDggMi44NzA1IDAuMzMzMDA4IDUuOTk5OTJDMC4zMzMwMDggOS4xMjkzNCAyLjg3MDI2IDExLjY2NjYgNS45OTk2NyAxMS42NjY2QzkuMTI5MDkgMTEuNjY2NiAxMS42NjYzIDkuMTI5MzQgMTEuNjY2MyA1Ljk5OTkyQzExLjY2NjMgNS42MTk5NyAxMS42MjcyIDUuMjQ5MDkgMTEuNTU2MSA0Ljg5MDFaXCIgZmlsbD1cIiNGQkMwMkRcIi8+XHJcbiAgICAgICAgICA8cGF0aCBkPVwiTTAuOTg3MzA1IDMuMzYyMzdMMi44NDkwOSA0LjcyNzc1QzMuMzUyODUgMy40ODA1MiA0LjU3Mjg5IDIuNTk5OTIgNi4wMDA2IDIuNTk5OTJDNi44NjczMiAyLjU5OTkyIDcuNjU1ODQgMi45MjY4OSA4LjI1NjIyIDMuNDYwOTdMOS44NTkwNCAxLjg1ODE1QzguODQ2OTcgMC45MTQ5MzUgNy40OTMyIDAuMzMzMjUyIDYuMDAwNiAwLjMzMzI1MkMzLjgyNDA0IDAuMzMzMjUyIDEuOTM2NDcgMS41NjIwNyAwLjk4NzMwNSAzLjM2MjM3WlwiIGZpbGw9XCIjRTUzOTM1XCIvPlxyXG4gICAgICAgICAgPHBhdGggZD1cIk02LjAwMDggMTEuNjY2NUM3LjQ2NDUgMTEuNjY2NSA4Ljc5NDQ3IDExLjEwNjMgOS44MDAwMiAxMC4xOTU0TDguMDQ2MTkgOC43MTEzQzcuNDc3MjUgOS4xNDIyNSA2Ljc3MDA1IDkuMzk5OCA2LjAwMDggOS4zOTk4QzQuNTI2OSA5LjM5OTggMy4yNzU0MiA4LjQ1OTk5IDIuODAzOTUgNy4xNDg0NEwwLjk1NjA1NSA4LjU3MjE5QzEuODkzODkgMTAuNDA3MyAzLjc5ODQ1IDExLjY2NjUgNi4wMDA4IDExLjY2NjVaXCIgZmlsbD1cIiM0Q0FGNTBcIi8+XHJcbiAgICAgICAgICA8cGF0aCBkPVwiTTExLjU1NjQgNC44ODk5N0wxMS41NTE5IDQuODY2NDZIMTEuMUg2VjcuMTMzMTJIOS4yMDI1MkM4Ljk3ODEyIDcuNzY2OTQgOC41NzA0IDguMzEzNDkgOC4wNDQ1MyA4LjcxMTU3QzguMDQ0ODIgOC43MTEyOSA4LjA0NTEgOC43MTEyOSA4LjA0NTM4IDguNzExMDFMOS43OTkyMiAxMC4xOTUxQzkuNjc1MTIgMTAuMzA3OSAxMS42NjY3IDguODMzMTIgMTEuNjY2NyA1Ljk5OTc5QzExLjY2NjcgNS42MTk4NCAxMS42Mjc2IDUuMjQ4OTYgMTEuNTU2NCA0Ljg4OTk3WlwiIGZpbGw9XCIjMTU2NUMwXCIvPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICA8L2E+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwibXJ4LWdhbGxlcnktaXRlbV9fcHJldmlldy1jb250cm9sc19fYnV0dG9uIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiICpuZ0lmPVwiaXNFZGl0aW5nXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWljb24gaWNvbi1kZWxldGUgaWNvbi1mb250LTE2IHRleHQtYm9sZFwiIChjbGljayk9XCJkZWxldGVJbWFnZSgpXCI+PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJtcngtZ2FsbGVyeS1pdGVtX19kZXNjcmlwdGlvblwiPlxyXG4gICAgPG1yeC1pbnB1dC10ZXh0YXJlYVxyXG4gICAgICAqbmdJZj1cImlzRWRpdGluZzsgZWxzZSB0ZXh0VGVtcGxhdGVcIlxyXG4gICAgICBbZmllbGRzXT1cImZpZWxkc1wiXHJcbiAgICAgIFtuZ01vZGVsXT1cInByZXZpZXcuZGVzY3JpcHRpb25cIlxyXG4gICAgICBbYXV0b3NpemVdPVwiZmFsc2VcIlxyXG4gICAgICBbcm93c109XCIyXCJcclxuICAgICAgW21heGxlbmd0aF09XCJkZXNjcmlwdGlvbk1heExlbmd0aFwiXHJcbiAgICAgIChtb2RlbENoYW5nZSk9XCJjaGFuZ2VEZXNjcmlwdGlvbigkZXZlbnQpXCJcclxuICAgID48L21yeC1pbnB1dC10ZXh0YXJlYT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgI3RleHRUZW1wbGF0ZT5cclxuICAgICAge3sgcHJldmlldy5kZXNjcmlwdGlvbiB9fVxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -51,11 +51,11 @@ export class AutoSaveStore {
51
51
  });
52
52
  }
53
53
  // Добавить id в массив fields
54
- autosaveAddId(id, groupId) {
54
+ addId(id, groupId) {
55
55
  this.upsertField({ id, state: 'stopped', groupId });
56
56
  }
57
57
  // Запустить сохранение для всех полей
58
- autosaveStart() {
58
+ start() {
59
59
  this.clearAllSubscriptions();
60
60
  this.state.update(current => ({
61
61
  fields: current.fields.map(field => ({
@@ -65,7 +65,7 @@ export class AutoSaveStore {
65
65
  }));
66
66
  }
67
67
  // Запустить сохранение для определенного id
68
- autosaveStartFor(id) {
68
+ startFor(id) {
69
69
  this.clearSubscription(id);
70
70
  this.state.update(current => ({
71
71
  fields: current.fields.map(field => field.id === id
@@ -74,17 +74,17 @@ export class AutoSaveStore {
74
74
  }));
75
75
  }
76
76
  // Остановить сохранение для всех полей и очистить массив
77
- autosaveStop() {
77
+ stop() {
78
78
  this.clearAllSubscriptions();
79
79
  this.clear();
80
80
  }
81
81
  // Остановить сохранение для определенного id и удалить его
82
- autosaveStopFor(id) {
82
+ stopFor(id) {
83
83
  this.clearSubscription(id);
84
84
  this.removeField(id);
85
85
  }
86
86
  // Успешное сохранение для всех полей
87
- autosaveSuccess() {
87
+ success() {
88
88
  this.clearAllSubscriptions();
89
89
  this.state.update(current => ({
90
90
  fields: current.fields.map(field => ({
@@ -93,16 +93,16 @@ export class AutoSaveStore {
93
93
  }));
94
94
  // Создаем подписку для каждого поля
95
95
  this.state().fields.forEach(field => {
96
- this.subscriptions[field.id] = timer(3000).subscribe(() => this.autosaveStop());
96
+ this.subscriptions[field.id] = timer(3000).subscribe(() => this.stop());
97
97
  });
98
98
  }
99
99
  // Успешное сохранение для определенного id
100
- autosaveSuccessFor(id) {
100
+ successFor(id) {
101
101
  this.clearSubscription(id);
102
102
  this.state.update(current => ({
103
103
  fields: current.fields.map(field => field.id === id ? { ...field, state: 'saved' } : field)
104
104
  }));
105
- this.subscriptions[id] = timer(3000).subscribe(() => this.autosaveStopFor(id));
105
+ this.subscriptions[id] = timer(3000).subscribe(() => this.stopFor(id));
106
106
  }
107
107
  // Ошибка сохранения для всех полей
108
108
  autosaveError() {
@@ -114,7 +114,7 @@ export class AutoSaveStore {
114
114
  }));
115
115
  // Создаем подписку для каждого поля
116
116
  this.state().fields.forEach(field => {
117
- this.subscriptions[field.id] = timer(3000).subscribe(() => this.autosaveStop());
117
+ this.subscriptions[field.id] = timer(3000).subscribe(() => this.stop());
118
118
  });
119
119
  }
120
120
  // Ошибка сохранения для определенного id
@@ -123,7 +123,7 @@ export class AutoSaveStore {
123
123
  this.state.update(current => ({
124
124
  fields: current.fields.map(field => field.id === id ? { ...field, state: 'error' } : field)
125
125
  }));
126
- this.subscriptions[id] = timer(3000).subscribe(() => this.autosaveStopFor(id));
126
+ this.subscriptions[id] = timer(3000).subscribe(() => this.stopFor(id));
127
127
  }
128
128
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AutoSaveStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
129
129
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AutoSaveStore, providedIn: 'root' });
@@ -132,4 +132,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
132
132
  type: Injectable,
133
133
  args: [{ providedIn: 'root' }]
134
134
  }] });
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by1zYXZlLnN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9zZXJ2aWNlcy9zYXZlLXN0b3JlL2F1dG8tc2F2ZS5zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLEtBQUssRUFBZ0IsTUFBTSxNQUFNLENBQUM7O0FBUTNDLE1BQU0sT0FBTyxhQUFhO0lBQ3hCLGdDQUFnQztJQUNmLEtBQUssR0FBRyxNQUFNLENBQW1CLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFbEUsc0NBQXNDO0lBQ3JCLGFBQWEsR0FBb0MsRUFBRSxDQUFDO0lBRXJFLGtEQUFrRDtJQUN6QyxNQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUV0RCxzQkFBc0I7SUFDdEIsUUFBUSxDQUFDLEVBQVU7UUFDakIsT0FBTyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVELDZCQUE2QjtJQUNyQixXQUFXLENBQUMsS0FBWTtRQUM5QixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUMxQixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBRTNE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QUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUNsRixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCx5Q0FBeUM7SUFDekMsZ0JBQWdCLENBQUMsRUFBVTtRQUN6QixJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzVCLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUNqQyxLQUFLLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FDdEQ7U0FDRixDQUFDLENBQUMsQ0FBQztRQUNKLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakYsQ0FBQzt3R0FwSlUsYUFBYTs0R0FBYixhQUFhLGNBREEsTUFBTTs7NEZBQ25CLGFBQWE7a0JBRHpCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgc2lnbmFsLCBjb21wdXRlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyB0aW1lciwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEZpZWxkIH0gZnJvbSAnLi9tb2RlbHMnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBNcnhBdXRvU2F2ZVN0YXRlIHtcclxuICBmaWVsZHM6IEZpZWxkW107XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBBdXRvU2F2ZVN0b3JlIHtcclxuICAvLyDQntGB0L3QvtCy0L3QvtC5INGB0LjQs9C90LDQuyDQtNC70Y8g0YHQvtGB0YLQvtGP0L3QuNGPXHJcbiAgcHJpdmF0ZSByZWFkb25seSBzdGF0ZSA9IHNpZ25hbDxNcnhBdXRvU2F2ZVN0YXRlPih7IGZpZWxkczogW10gfSk7XHJcblxyXG4gIC8vINCl0YDQsNC90LjQu9C40YnQtSDQv9C+0LTQv9C40YHQvtC6INC00LvRjyDQutCw0LbQtNC+0LPQviDQv9C+0LvRj1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgc3Vic2NyaXB0aW9uczogeyBba2V5OiBzdHJpbmddOiBTdWJzY3JpcHRpb24gfSA9IHt9O1xyXG5cclxuICAvLyDQn9GD0LHQu9C40YfQvdGL0LUgY29tcHV0ZWQg0YHQuNCz0L3QsNC70Ysg0LTQu9GPINC00L7RgdGC0YPQv9CwINC6INC00LDQvdC90YvQvFxyXG4gIHJlYWRvbmx5IGZpZWxkcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc3RhdGUoKS5maWVsZHMpO1xyXG5cclxuICAvLyDQn9C+0LvRg9GH0LjRgtGMINC/0L7Qu9C1INC/0L4gaWRcclxuICBnZXRGaWVsZChpZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gY29tcHV0ZWQoKCkgPT4gdGhpcy5zdGF0ZSgpLmZpZWxkcy5maW5kKGZpZWxkID0+IGZpZWxkLmlkID09PSBpZCkpO1xyXG4gIH1cclxuXHJcbiAgLy8g0JTQvtCx0LDQstC40YLRjCDQuNC70Lgg0L7QsdC90L7QstC40YLRjCDQv9C+0LvQtVxyXG4gIHByaXZhdGUgdXBzZXJ0RmllbGQoZmllbGQ6IEZpZWxkKSB7XHJcbiAgICB0aGlzLnN0YXRlLnVwZGF0ZShjdXJyZW50ID0+IHtcclxuICAgICAgY29uc3QgZXhpc3RzID0gY3VycmVudC5maWVsZHMuc29tZShmID0+IGYuaWQgPT09IGZpZWxkLmlkKTtcclxuXHJcbiAgICAgIGlmIChleGlzdHMpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgZmllbGRzOiBjdXJyZW50LmZpZWxkcy5tYXAoZiA9PiBmLmlkID09PSBmaWVsZC5pZCA/IHsgLi4uZiwgLi4uZmllbGQgfSA6IGYpXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBmaWVsZHM6IFsuLi5jdXJyZW50LmZpZWxkcywgZmllbGRdXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vINCj0LTQsNC70LjRgtGMINC/0L7Qu9C1XHJcbiAgcHJpdmF0ZSByZW1vdmVGaWVsZChpZDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnN0YXRlLnVwZGF0ZShjdXJyZW50ID0+ICh7XHJcbiAgICAgIGZpZWxkczogY3VycmVudC5maWVsZHMuZmlsdGVyKGZpZWxkID0+IGZpZWxkLmlkICE9PSBpZClcclxuICAgIH0pKTtcclxuICB9XHJcblxyXG4gIC8vINCe0YfQuNGB0YLQuNGC0Ywg0LLRgdC1INC/0L7Qu9GPXHJcbiAgcHJpdmF0ZSBjbGVhcigpIHtcclxuICAgIHRoaXMuc3RhdGUuc2V0KHsgZmllbGRzOiBbXSB9KTtcclxuICB9XHJcblxyXG4gIC8vINCe0YfQuNGB0YLQuNGC0Ywg0L/QvtC00L/QuNGB0LrRgyDQtNC70Y8g0L/QvtC70Y9cclxuICBwcml2YXRlIGNsZWFyU3Vic2NyaXB0aW9uKGlkOiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbnNbaWRdKSB7XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uc1tpZF0udW5zdWJzY3JpYmUoKTtcclxuICAgICAgZGVsZXRlIHRoaXMuc3Vic2NyaXB0aW9uc1tpZF07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyDQntGH0LjRgdGC0LjRgtGMINCy0YHQtSDQv9C+0LTQv9C40YHQutC4XHJcbiAgcHJpdmF0ZSBjbGVhckFsbFN1YnNjcmlwdGlvbnMoKSB7XHJcbiAgICBPYmplY3Qua2V5cyh0aGlzLnN1YnNjcmlwdGlvbnMpLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zW2tleV0udW5zdWJzY3JpYmUoKTtcclxuICAgICAgZGVsZXRlIHRoaXMuc3Vic2NyaXB0aW9uc1trZXldO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvLyDQlNC+0LHQsNCy0LjRgtGMIGlkINCyINC80LDRgdGB0LjQsiBmaWVsZHNcclxuICBhdXRvc2F2ZUFkZElkKGlkOiBzdHJpbmcsIGdyb3VwSWQ/OiBzdHJpbmcgfCBudWxsKSB7XHJcbiAgICB0aGlzLnVwc2VydEZpZWxkKHsgaWQsIHN0YXRlOiAnc3RvcHBlZCcsIGdyb3VwSWQgfSk7XHJcbiAgfVxyXG5cclxuICAvLyDQl9Cw0L/Rg9GB0YLQuNGC0Ywg0YHQvtGF0YDQsNC90LXQvdC40LUg0LTQu9GPINCy0YHQtdGFINC/0L7Qu9C10LlcclxuICBhdXRvc2F2ZVN0YXJ0KCkge1xyXG4gICAgdGhpcy5jbGVhckFsbFN1YnNjcmlwdGlvbnMoKTtcclxuICAgIHRoaXMuc3RhdGUudXBkYXRlKGN1cnJlbnQgPT4gKHtcclxuICAgICAgZmllbGRzOiBjdXJyZW50LmZpZWxkcy5tYXAoZmllbGQgPT4gKHtcclxuICAgICAgICAuLi5maWVsZCxcclxuICAgICAgICBzdGF0ZTogZmllbGQuc3RhdGUgPT09ICdzYXZlZCcgPyAnc3RvcHBlZCcgOiAnc2F2aW5nJ1xyXG4gICAgICB9KSlcclxuICAgIH0pKTtcclxuICB9XHJcblxyXG4gIC8vINCX0LDQv9GD0YHRgtC40YLRjCDRgdC+0YXRgNCw0L3QtdC90LjQtSDQtNC70Y8g0L7Qv9GA0LXQtNC10LvQtdC90L3QvtCz0L4gaWRcclxuICBhdXRvc2F2ZVN0YXJ0Rm9yKGlkOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuY2xlYXJTdWJzY3JpcHRpb24oaWQpO1xyXG4gICAgdGhpcy5zdGF0ZS51cGRhdGUoY3VycmVudCA9PiAoe1xyXG4gICAgICBmaWVsZHM6IGN1cnJlbnQuZmllbGRzLm1hcChmaWVsZCA9PlxyXG4gICAgICAgIGZpZWxkLmlkID09PSBpZFxyXG4gICAgICAgICAgPyB7IC4uLmZpZWxkLCBzdGF0ZTogZmllbGQuc3RhdGUgPT09ICdzYXZlZCcgPyAnc3RvcHBlZCcgOiAnc2F2aW5nJyB9XHJcbiAgICAgICAgICA6IGZpZWxkXHJcbiAgICAgIClcclxuICAgIH0pKTtcclxuICB9XHJcblxyXG4gIC8vINCe0YHRgtCw0L3QvtCy0LjRgtGMINGB0L7RhdGA0LDQvdC10L3QuNC1INC00LvRjyDQstGB0LXRhSDQv9C+0LvQtdC5INC4INC+0YfQuNGB0YLQuNGC0Ywg0LzQsNGB0YHQuNCyXHJcbiAgYXV0b3NhdmVTdG9wKCkge1xyXG4gICAgdGhpcy5jbGVhckFsbFN1YnNjcmlwdGlvbnMoKTtcclxuICAgIHRoaXMuY2xlYXIoKTtcclxuICB9XHJcblxyXG4gIC8vINCe0YHRgtCw0L3QvtCy0LjRgtGMINGB0L7RhdGA0LDQvdC10L3QuNC1INC00LvRjyDQvtC/0YDQtdC00LXQu9C10L3QvdC+0LPQviBpZCDQuCDRg9C00LDQu9C40YLRjCDQtdCz0L5cclxuICBhdXRvc2F2ZVN0b3BGb3IoaWQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5jbGVhclN1YnNjcmlwdGlvbihpZCk7XHJcbiAgICB0aGlzLnJlbW92ZUZpZWxkKGlkKTtcclxuICB9XHJcblxyXG4gIC8vINCj0YHQv9C10YjQvdC+0LUg0YHQvtGF0YDQsNC90LXQvdC40LUg0LTQu9GPINCy0YHQtdGFINC/0L7Qu9C10LlcclxuICBhdXRvc2F2ZVN1Y2Nlc3MoKSB7XHJcbiAgICB0aGlzLmNsZWFyQWxsU3Vic2NyaXB0aW9ucygpO1xyXG4gICAgdGhpcy5zdGF0ZS51cGRhdGUoY3VycmVudCA9PiAoe1xyXG4gICAgICBmaWVsZHM6IGN1cnJlbnQuZmllbGRzLm1hcChmaWVsZCA9PiAoe1xyXG4gICAgICAgIC4uLmZpZWxkLCBzdGF0ZTogJ3NhdmVkJ1xyXG4gICAgICB9KSlcclxuICAgIH0pKTtcclxuICAgIC8vINCh0L7Qt9C00LDQtdC8INC/0L7QtNC/0LjRgdC60YMg0LTQu9GPINC60LDQttC00L7Qs9C+INC/0L7Qu9GPXHJcbiAgICB0aGlzLnN0YXRlKCkuZmllbGRzLmZvckVhY2goZmllbGQgPT4ge1xyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnNbZmllbGQuaWRdID0gdGltZXIoMzAwMCkuc3Vic2NyaWJlKCgpID0+IHRoaXMuYXV0b3NhdmVTdG9wKCkpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvLyDQo9GB0L/QtdGI0L3QvtC1INGB0L7RhdGA0LDQvdC10L3QuNC1INC00LvRjyDQvtC/0YDQtdC00LXQu9C10L3QvdC+0LPQviBpZFxyXG4gIGF1dG9zYXZlU3VjY2Vzc0ZvcihpZDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmNsZWFyU3Vic2NyaXB0aW9uKGlkKTtcclxuICAgIHRoaXMuc3RhdGUudXBkYXRlKGN1cnJlbnQgPT4gKHtcclxuICAgICAgZmllbGRzOiBjdXJyZW50LmZpZWxkcy5tYXAoZmllbGQgPT5cclxuICAgICAgICBmaWVsZC5pZCA9PT0gaWQgPyB7IC4uLmZpZWxkLCBzdGF0ZTogJ3NhdmVkJyB9IDogZmllbGRcclxuICAgICAgKVxyXG4gICAgfSkpO1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zW2lkXSA9IHRpbWVyKDMwMDApLnN1YnNjcmliZSgoKSA9PiB0aGlzLmF1dG9zYXZlU3RvcEZvcihpZCkpO1xyXG4gIH1cclxuXHJcbiAgLy8g0J7RiNC40LHQutCwINGB0L7RhdGA0LDQvdC10L3QuNGPINC00LvRjyDQstGB0LXRhSDQv9C+0LvQtdC5XHJcbiAgYXV0b3NhdmVFcnJvcigpIHtcclxuICAgIHRoaXMuY2xlYXJBbGxTdWJzY3JpcHRpb25zKCk7XHJcbiAgICB0aGlzLnN0YXRlLnVwZGF0ZShjdXJyZW50ID0+ICh7XHJcbiAgICAgIGZpZWxkczogY3VycmVudC5maWVsZHMubWFwKGZpZWxkID0+ICh7XHJcbiAgICAgICAgLi4uZmllbGQsIHN0YXRlOiAnZXJyb3InXHJcbiAgICAgIH0pKVxyXG4gICAgfSkpO1xyXG4gICAgLy8g0KHQvtC30LTQsNC10Lwg0L/QvtC00L/QuNGB0LrRgyDQtNC70Y8g0LrQsNC20LTQvtCz0L4g0L/QvtC70Y9cclxuICAgIHRoaXMuc3RhdGUoKS5maWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uc1tmaWVsZC5pZF0gPSB0aW1lcigzMDAwKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5hdXRvc2F2ZVN0b3AoKSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vINCe0YjQuNCx0LrQsCDRgdC+0YXRgNCw0L3QtdC90LjRjyDQtNC70Y8g0L7Qv9GA0LXQtNC10LvQtdC90L3QvtCz0L4gaWRcclxuICBhdXRvc2F2ZUVycm9yRm9yKGlkOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuY2xlYXJTdWJzY3JpcHRpb24oaWQpO1xyXG4gICAgdGhpcy5zdGF0ZS51cGRhdGUoY3VycmVudCA9PiAoe1xyXG4gICAgICBmaWVsZHM6IGN1cnJlbnQuZmllbGRzLm1hcChmaWVsZCA9PlxyXG4gICAgICAgIGZpZWxkLmlkID09PSBpZCA/IHsgLi4uZmllbGQsIHN0YXRlOiAnZXJyb3InfSA6IGZpZWxkXHJcbiAgICAgIClcclxuICAgIH0pKTtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9uc1tpZF0gPSB0aW1lcigzMDAwKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5hdXRvc2F2ZVN0b3BGb3IoaWQpKTtcclxuICB9XHJcbn1cclxuIl19
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by1zYXZlLnN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9zZXJ2aWNlcy9zYXZlLXN0b3JlL2F1dG8tc2F2ZS5zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLEtBQUssRUFBZ0IsTUFBTSxNQUFNLENBQUM7O0FBUTNDLE1BQU0sT0FBTyxhQUFhO0lBQ3hCLGdDQUFnQztJQUNmLEtBQUssR0FBRyxNQUFNLENBQW1CLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFbEUsc0NBQXNDO0lBQ3JCLGFBQWEsR0FBb0MsRUFBRSxDQUFDO0lBRXJFLGtEQUFrRDtJQUN6QyxNQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUV0RCxzQkFBc0I7SUFDdEIsUUFBUSxDQUFDLEVBQVU7UUFDakIsT0FBTyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVELDZCQUE2QjtJQUNyQixXQUFXLENBQUMsS0FBWTtRQUM5QixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUMxQixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBRTNE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QUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzFFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELHlDQUF5QztJQUN6QyxnQkFBZ0IsQ0FBQyxFQUFVO1FBQ3pCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDNUIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQ2pDLEtBQUssQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUN0RDtTQUNGLENBQUMsQ0FBQyxDQUFDO1FBQ0osSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6RSxDQUFDO3dHQXBKVSxhQUFhOzRHQUFiLGFBQWEsY0FEQSxNQUFNOzs0RkFDbkIsYUFBYTtrQkFEekIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBzaWduYWwsIGNvbXB1dGVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IHRpbWVyLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRmllbGQgfSBmcm9tICcuL21vZGVscyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE1yeEF1dG9TYXZlU3RhdGUge1xyXG4gIGZpZWxkczogRmllbGRbXTtcclxufVxyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIEF1dG9TYXZlU3RvcmUge1xyXG4gIC8vINCe0YHQvdC+0LLQvdC+0Lkg0YHQuNCz0L3QsNC7INC00LvRjyDRgdC+0YHRgtC+0Y/QvdC40Y9cclxuICBwcml2YXRlIHJlYWRvbmx5IHN0YXRlID0gc2lnbmFsPE1yeEF1dG9TYXZlU3RhdGU+KHsgZmllbGRzOiBbXSB9KTtcclxuXHJcbiAgLy8g0KXRgNCw0L3QuNC70LjRidC1INC/0L7QtNC/0LjRgdC+0Log0LTQu9GPINC60LDQttC00L7Qs9C+INC/0L7Qu9GPXHJcbiAgcHJpdmF0ZSByZWFkb25seSBzdWJzY3JpcHRpb25zOiB7IFtrZXk6IHN0cmluZ106IFN1YnNjcmlwdGlvbiB9ID0ge307XHJcblxyXG4gIC8vINCf0YPQsdC70LjRh9C90YvQtSBjb21wdXRlZCDRgdC40LPQvdCw0LvRiyDQtNC70Y8g0LTQvtGB0YLRg9C/0LAg0Log0LTQsNC90L3Ri9C8XHJcbiAgcmVhZG9ubHkgZmllbGRzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zdGF0ZSgpLmZpZWxkcyk7XHJcblxyXG4gIC8vINCf0L7Qu9GD0YfQuNGC0Ywg0L/QvtC70LUg0L/QviBpZFxyXG4gIGdldEZpZWxkKGlkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBjb21wdXRlZCgoKSA9PiB0aGlzLnN0YXRlKCkuZmllbGRzLmZpbmQoZmllbGQgPT4gZmllbGQuaWQgPT09IGlkKSk7XHJcbiAgfVxyXG5cclxuICAvLyDQlNC+0LHQsNCy0LjRgtGMINC40LvQuCDQvtCx0L3QvtCy0LjRgtGMINC/0L7Qu9C1XHJcbiAgcHJpdmF0ZSB1cHNlcnRGaWVsZChmaWVsZDogRmllbGQpIHtcclxuICAgIHRoaXMuc3RhdGUudXBkYXRlKGN1cnJlbnQgPT4ge1xyXG4gICAgICBjb25zdCBleGlzdHMgPSBjdXJyZW50LmZpZWxkcy5zb21lKGYgPT4gZi5pZCA9PT0gZmllbGQuaWQpO1xyXG5cclxuICAgICAgaWYgKGV4aXN0cykge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBmaWVsZHM6IGN1cnJlbnQuZmllbGRzLm1hcChmID0+IGYuaWQgPT09IGZpZWxkLmlkID8geyAuLi5mLCAuLi5maWVsZCB9IDogZilcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGZpZWxkczogWy4uLmN1cnJlbnQuZmllbGRzLCBmaWVsZF1cclxuICAgICAgfTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8g0KPQtNCw0LvQuNGC0Ywg0L/QvtC70LVcclxuICBwcml2YXRlIHJlbW92ZUZpZWxkKGlkOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc3RhdGUudXBkYXRlKGN1cnJlbnQgPT4gKHtcclxuICAgICAgZmllbGRzOiBjdXJyZW50LmZpZWxkcy5maWx0ZXIoZmllbGQgPT4gZmllbGQuaWQgIT09IGlkKVxyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgLy8g0J7Rh9C40YHRgtC40YLRjCDQstGB0LUg0L/QvtC70Y9cclxuICBwcml2YXRlIGNsZWFyKCkge1xyXG4gICAgdGhpcy5zdGF0ZS5zZXQoeyBmaWVsZHM6IFtdIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8g0J7Rh9C40YHRgtC40YLRjCDQv9C+0LTQv9C40YHQutGDINC00LvRjyDQv9C+0LvRj1xyXG4gIHByaXZhdGUgY2xlYXJTdWJzY3JpcHRpb24oaWQ6IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uc1tpZF0pIHtcclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zW2lkXS51bnN1YnNjcmliZSgpO1xyXG4gICAgICBkZWxldGUgdGhpcy5zdWJzY3JpcHRpb25zW2lkXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vINCe0YfQuNGB0YLQuNGC0Ywg0LLRgdC1INC/0L7QtNC/0LjRgdC60LhcclxuICBwcml2YXRlIGNsZWFyQWxsU3Vic2NyaXB0aW9ucygpIHtcclxuICAgIE9iamVjdC5rZXlzKHRoaXMuc3Vic2NyaXB0aW9ucykuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnNba2V5XS51bnN1YnNjcmliZSgpO1xyXG4gICAgICBkZWxldGUgdGhpcy5zdWJzY3JpcHRpb25zW2tleV07XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vINCU0L7QsdCw0LLQuNGC0YwgaWQg0LIg0LzQsNGB0YHQuNCyIGZpZWxkc1xyXG4gIGFkZElkKGlkOiBzdHJpbmcsIGdyb3VwSWQ/OiBzdHJpbmcgfCBudWxsKSB7XHJcbiAgICB0aGlzLnVwc2VydEZpZWxkKHsgaWQsIHN0YXRlOiAnc3RvcHBlZCcsIGdyb3VwSWQgfSk7XHJcbiAgfVxyXG5cclxuICAvLyDQl9Cw0L/Rg9GB0YLQuNGC0Ywg0YHQvtGF0YDQsNC90LXQvdC40LUg0LTQu9GPINCy0YHQtdGFINC/0L7Qu9C10LlcclxuICBzdGFydCgpIHtcclxuICAgIHRoaXMuY2xlYXJBbGxTdWJzY3JpcHRpb25zKCk7XHJcbiAgICB0aGlzLnN0YXRlLnVwZGF0ZShjdXJyZW50ID0+ICh7XHJcbiAgICAgIGZpZWxkczogY3VycmVudC5maWVsZHMubWFwKGZpZWxkID0+ICh7XHJcbiAgICAgICAgLi4uZmllbGQsXHJcbiAgICAgICAgc3RhdGU6IGZpZWxkLnN0YXRlID09PSAnc2F2ZWQnID8gJ3N0b3BwZWQnIDogJ3NhdmluZydcclxuICAgICAgfSkpXHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICAvLyDQl9Cw0L/Rg9GB0YLQuNGC0Ywg0YHQvtGF0YDQsNC90LXQvdC40LUg0LTQu9GPINC+0L/RgNC10LTQtdC70LXQvdC90L7Qs9C+IGlkXHJcbiAgc3RhcnRGb3IoaWQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5jbGVhclN1YnNjcmlwdGlvbihpZCk7XHJcbiAgICB0aGlzLnN0YXRlLnVwZGF0ZShjdXJyZW50ID0+ICh7XHJcbiAgICAgIGZpZWxkczogY3VycmVudC5maWVsZHMubWFwKGZpZWxkID0+XHJcbiAgICAgICAgZmllbGQuaWQgPT09IGlkXHJcbiAgICAgICAgICA/IHsgLi4uZmllbGQsIHN0YXRlOiBmaWVsZC5zdGF0ZSA9PT0gJ3NhdmVkJyA/ICdzdG9wcGVkJyA6ICdzYXZpbmcnIH1cclxuICAgICAgICAgIDogZmllbGRcclxuICAgICAgKVxyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgLy8g0J7RgdGC0LDQvdC+0LLQuNGC0Ywg0YHQvtGF0YDQsNC90LXQvdC40LUg0LTQu9GPINCy0YHQtdGFINC/0L7Qu9C10Lkg0Lgg0L7Rh9C40YHRgtC40YLRjCDQvNCw0YHRgdC40LJcclxuICBzdG9wKCkge1xyXG4gICAgdGhpcy5jbGVhckFsbFN1YnNjcmlwdGlvbnMoKTtcclxuICAgIHRoaXMuY2xlYXIoKTtcclxuICB9XHJcblxyXG4gIC8vINCe0YHRgtCw0L3QvtCy0LjRgtGMINGB0L7RhdGA0LDQvdC10L3QuNC1INC00LvRjyDQvtC/0YDQtdC00LXQu9C10L3QvdC+0LPQviBpZCDQuCDRg9C00LDQu9C40YLRjCDQtdCz0L5cclxuICBzdG9wRm9yKGlkOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuY2xlYXJTdWJzY3JpcHRpb24oaWQpO1xyXG4gICAgdGhpcy5yZW1vdmVGaWVsZChpZCk7XHJcbiAgfVxyXG5cclxuICAvLyDQo9GB0L/QtdGI0L3QvtC1INGB0L7RhdGA0LDQvdC10L3QuNC1INC00LvRjyDQstGB0LXRhSDQv9C+0LvQtdC5XHJcbiAgc3VjY2VzcygpIHtcclxuICAgIHRoaXMuY2xlYXJBbGxTdWJzY3JpcHRpb25zKCk7XHJcbiAgICB0aGlzLnN0YXRlLnVwZGF0ZShjdXJyZW50ID0+ICh7XHJcbiAgICAgIGZpZWxkczogY3VycmVudC5maWVsZHMubWFwKGZpZWxkID0+ICh7XHJcbiAgICAgICAgLi4uZmllbGQsIHN0YXRlOiAnc2F2ZWQnXHJcbiAgICAgIH0pKVxyXG4gICAgfSkpO1xyXG4gICAgLy8g0KHQvtC30LTQsNC10Lwg0L/QvtC00L/QuNGB0LrRgyDQtNC70Y8g0LrQsNC20LTQvtCz0L4g0L/QvtC70Y9cclxuICAgIHRoaXMuc3RhdGUoKS5maWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uc1tmaWVsZC5pZF0gPSB0aW1lcigzMDAwKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5zdG9wKCkpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvLyDQo9GB0L/QtdGI0L3QvtC1INGB0L7RhdGA0LDQvdC10L3QuNC1INC00LvRjyDQvtC/0YDQtdC00LXQu9C10L3QvdC+0LPQviBpZFxyXG4gIHN1Y2Nlc3NGb3IoaWQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5jbGVhclN1YnNjcmlwdGlvbihpZCk7XHJcbiAgICB0aGlzLnN0YXRlLnVwZGF0ZShjdXJyZW50ID0+ICh7XHJcbiAgICAgIGZpZWxkczogY3VycmVudC5maWVsZHMubWFwKGZpZWxkID0+XHJcbiAgICAgICAgZmllbGQuaWQgPT09IGlkID8geyAuLi5maWVsZCwgc3RhdGU6ICdzYXZlZCcgfSA6IGZpZWxkXHJcbiAgICAgIClcclxuICAgIH0pKTtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9uc1tpZF0gPSB0aW1lcigzMDAwKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5zdG9wRm9yKGlkKSk7XHJcbiAgfVxyXG5cclxuICAvLyDQntGI0LjQsdC60LAg0YHQvtGF0YDQsNC90LXQvdC40Y8g0LTQu9GPINCy0YHQtdGFINC/0L7Qu9C10LlcclxuICBhdXRvc2F2ZUVycm9yKCkge1xyXG4gICAgdGhpcy5jbGVhckFsbFN1YnNjcmlwdGlvbnMoKTtcclxuICAgIHRoaXMuc3RhdGUudXBkYXRlKGN1cnJlbnQgPT4gKHtcclxuICAgICAgZmllbGRzOiBjdXJyZW50LmZpZWxkcy5tYXAoZmllbGQgPT4gKHtcclxuICAgICAgICAuLi5maWVsZCwgc3RhdGU6ICdlcnJvcidcclxuICAgICAgfSkpXHJcbiAgICB9KSk7XHJcbiAgICAvLyDQodC+0LfQtNCw0LXQvCDQv9C+0LTQv9C40YHQutGDINC00LvRjyDQutCw0LbQtNC+0LPQviDQv9C+0LvRj1xyXG4gICAgdGhpcy5zdGF0ZSgpLmZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zW2ZpZWxkLmlkXSA9IHRpbWVyKDMwMDApLnN1YnNjcmliZSgoKSA9PiB0aGlzLnN0b3AoKSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vINCe0YjQuNCx0LrQsCDRgdC+0YXRgNCw0L3QtdC90LjRjyDQtNC70Y8g0L7Qv9GA0LXQtNC10LvQtdC90L3QvtCz0L4gaWRcclxuICBhdXRvc2F2ZUVycm9yRm9yKGlkOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuY2xlYXJTdWJzY3JpcHRpb24oaWQpO1xyXG4gICAgdGhpcy5zdGF0ZS51cGRhdGUoY3VycmVudCA9PiAoe1xyXG4gICAgICBmaWVsZHM6IGN1cnJlbnQuZmllbGRzLm1hcChmaWVsZCA9PlxyXG4gICAgICAgIGZpZWxkLmlkID09PSBpZCA/IHsgLi4uZmllbGQsIHN0YXRlOiAnZXJyb3InfSA6IGZpZWxkXHJcbiAgICAgIClcclxuICAgIH0pKTtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9uc1tpZF0gPSB0aW1lcigzMDAwKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5zdG9wRm9yKGlkKSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Input, Component, Pipe, EventEmitter, Output, ChangeDetectionStrategy, NgModule, CUSTOM_ELEMENTS_SCHEMA, Injectable, forwardRef, InjectionToken, TemplateRef, Inject, Injector, HostListener, Directive, ViewChild, ContentChild, ContentChildren, signal, computed, HostBinding, ViewEncapsulation, LOCALE_ID, ViewChildren, viewChild } from '@angular/core';
2
+ import { Input, Component, Pipe, EventEmitter, Output, ChangeDetectionStrategy, NgModule, CUSTOM_ELEMENTS_SCHEMA, Injectable, forwardRef, InjectionToken, TemplateRef, Inject, Injector, HostListener, Directive, ViewChild, ContentChild, ContentChildren, signal, computed, HostBinding, inject, ViewEncapsulation, LOCALE_ID, ViewChildren, viewChild } from '@angular/core';
3
3
  import * as i1$1 from '@angular/common';
4
4
  import { CommonModule, NgOptimizedImage, registerLocaleData, DatePipe, DOCUMENT } from '@angular/common';
5
5
  import * as i2 from '@angular/router';
@@ -3121,11 +3121,11 @@ class AutoSaveStore {
3121
3121
  });
3122
3122
  }
3123
3123
  // Добавить id в массив fields
3124
- autosaveAddId(id, groupId) {
3124
+ addId(id, groupId) {
3125
3125
  this.upsertField({ id, state: 'stopped', groupId });
3126
3126
  }
3127
3127
  // Запустить сохранение для всех полей
3128
- autosaveStart() {
3128
+ start() {
3129
3129
  this.clearAllSubscriptions();
3130
3130
  this.state.update(current => ({
3131
3131
  fields: current.fields.map(field => ({
@@ -3135,7 +3135,7 @@ class AutoSaveStore {
3135
3135
  }));
3136
3136
  }
3137
3137
  // Запустить сохранение для определенного id
3138
- autosaveStartFor(id) {
3138
+ startFor(id) {
3139
3139
  this.clearSubscription(id);
3140
3140
  this.state.update(current => ({
3141
3141
  fields: current.fields.map(field => field.id === id
@@ -3144,17 +3144,17 @@ class AutoSaveStore {
3144
3144
  }));
3145
3145
  }
3146
3146
  // Остановить сохранение для всех полей и очистить массив
3147
- autosaveStop() {
3147
+ stop() {
3148
3148
  this.clearAllSubscriptions();
3149
3149
  this.clear();
3150
3150
  }
3151
3151
  // Остановить сохранение для определенного id и удалить его
3152
- autosaveStopFor(id) {
3152
+ stopFor(id) {
3153
3153
  this.clearSubscription(id);
3154
3154
  this.removeField(id);
3155
3155
  }
3156
3156
  // Успешное сохранение для всех полей
3157
- autosaveSuccess() {
3157
+ success() {
3158
3158
  this.clearAllSubscriptions();
3159
3159
  this.state.update(current => ({
3160
3160
  fields: current.fields.map(field => ({
@@ -3163,16 +3163,16 @@ class AutoSaveStore {
3163
3163
  }));
3164
3164
  // Создаем подписку для каждого поля
3165
3165
  this.state().fields.forEach(field => {
3166
- this.subscriptions[field.id] = timer(3000).subscribe(() => this.autosaveStop());
3166
+ this.subscriptions[field.id] = timer(3000).subscribe(() => this.stop());
3167
3167
  });
3168
3168
  }
3169
3169
  // Успешное сохранение для определенного id
3170
- autosaveSuccessFor(id) {
3170
+ successFor(id) {
3171
3171
  this.clearSubscription(id);
3172
3172
  this.state.update(current => ({
3173
3173
  fields: current.fields.map(field => field.id === id ? { ...field, state: 'saved' } : field)
3174
3174
  }));
3175
- this.subscriptions[id] = timer(3000).subscribe(() => this.autosaveStopFor(id));
3175
+ this.subscriptions[id] = timer(3000).subscribe(() => this.stopFor(id));
3176
3176
  }
3177
3177
  // Ошибка сохранения для всех полей
3178
3178
  autosaveError() {
@@ -3184,7 +3184,7 @@ class AutoSaveStore {
3184
3184
  }));
3185
3185
  // Создаем подписку для каждого поля
3186
3186
  this.state().fields.forEach(field => {
3187
- this.subscriptions[field.id] = timer(3000).subscribe(() => this.autosaveStop());
3187
+ this.subscriptions[field.id] = timer(3000).subscribe(() => this.stop());
3188
3188
  });
3189
3189
  }
3190
3190
  // Ошибка сохранения для определенного id
@@ -3193,7 +3193,7 @@ class AutoSaveStore {
3193
3193
  this.state.update(current => ({
3194
3194
  fields: current.fields.map(field => field.id === id ? { ...field, state: 'error' } : field)
3195
3195
  }));
3196
- this.subscriptions[id] = timer(3000).subscribe(() => this.autosaveStopFor(id));
3196
+ this.subscriptions[id] = timer(3000).subscribe(() => this.stopFor(id));
3197
3197
  }
3198
3198
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AutoSaveStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3199
3199
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AutoSaveStore, providedIn: 'root' });
@@ -5979,7 +5979,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
5979
5979
  class GalleryItemComponent {
5980
5980
  _galleryService;
5981
5981
  _modalService;
5982
- _store;
5982
+ _autoSaveStore = inject(AutoSaveStore);
5983
5983
  timeStamp = (new Date()).getTime();
5984
5984
  isLoading = false;
5985
5985
  _timer;
@@ -5998,11 +5998,9 @@ class GalleryItemComponent {
5998
5998
  openGalleryModal = new EventEmitter();
5999
5999
  deletePhoto = new EventEmitter();
6000
6000
  updatePhoto = new EventEmitter();
6001
- constructor(_galleryService, _modalService, _store) {
6001
+ constructor(_galleryService, _modalService) {
6002
6002
  this._galleryService = _galleryService;
6003
6003
  this._modalService = _modalService;
6004
- this._store = _store;
6005
- // this.fields$ = this._store.select(selectFields);
6006
6004
  }
6007
6005
  getImageUrl() {
6008
6006
  return this.preview.previewUrl + '?' + this.timeStamp;
@@ -6016,6 +6014,9 @@ class GalleryItemComponent {
6016
6014
  get isLoadingImage() {
6017
6015
  return this.isLoading && !!this.rotateSlides.find((s) => s.previewImageId === this.preview.previewImageId);
6018
6016
  }
6017
+ get fields() {
6018
+ return this._autoSaveStore.fields();
6019
+ }
6019
6020
  onOpenGalleryModal() {
6020
6021
  this.openGalleryModal.emit(this.index);
6021
6022
  }
@@ -6035,24 +6036,27 @@ class GalleryItemComponent {
6035
6036
  }
6036
6037
  changeDescription(obj) {
6037
6038
  clearTimeout(this._timer);
6038
- // this._store.dispatch(autosaveAddId({id: obj.id}));
6039
- // this._store.dispatch(autosaveStartFor({id: obj.id}));
6039
+ this._autoSaveStore.addId(obj.id);
6040
+ this._autoSaveStore.startFor(obj.id);
6040
6041
  this._timer = setTimeout(() => {
6041
- this._galleryService.update(this.updateEndPoint, this.preview.uuid, obj.value).subscribe(res => {
6042
- this.updatePhoto.emit(res);
6043
- // this._store.dispatch(autosaveSuccessFor({id: obj.id}));
6044
- }, () => {
6045
- // this._store.dispatch(autosaveErrorFor({id: obj.id}));
6042
+ this._galleryService.update(this.updateEndPoint, this.preview.uuid, obj.value).subscribe({
6043
+ next: (res) => {
6044
+ this.updatePhoto.emit(res);
6045
+ this._autoSaveStore.successFor(obj.id);
6046
+ },
6047
+ error: () => {
6048
+ this._autoSaveStore.autosaveErrorFor(obj.id);
6049
+ }
6046
6050
  });
6047
6051
  }, 1500);
6048
6052
  }
6049
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GalleryItemComponent, deps: [{ token: GalleryService }, { token: ModalService }, { token: i2$3.Store }], target: i0.ɵɵFactoryTarget.Component });
6050
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: GalleryItemComponent, selector: "mrx-gallery-item", inputs: { preview: "preview", index: "index", isEditing: "isEditing", descriptionMaxLength: "descriptionMaxLength", deleteEndPoint: "deleteEndPoint", updateEndPoint: "updateEndPoint", rotateSlides: "rotateSlides", setIsLoading: ["isLoading", "setIsLoading"] }, outputs: { openGalleryModal: "openGalleryModal", deletePhoto: "deletePhoto", updatePhoto: "updatePhoto" }, ngImport: i0, template: "<div class=\"mrx-gallery-item\">\r\n <div class=\"mrx-gallery-item__preview\" (click)=\"onOpenGalleryModal()\">\r\n\r\n <img [src]=\"getImageUrl()\" [alt]=\"preview.imageName || 'image'\" *ngIf=\"!isLoadingImage; else skeletonTemplate\">\r\n\r\n <ng-template #skeletonTemplate>\r\n <div class=\"d-flex align-items-center justify-content-center w-100 h-100\">\r\n <mrx-loader size=\"medium\" color=\"brand\"></mrx-loader>\r\n </div>\r\n </ng-template>\r\n\r\n <div class=\"mrx-gallery-item__preview-overlay\" *ngIf=\"!isLoadingImage\"></div>\r\n\r\n <div class=\"mrx-gallery-item__preview-controls\" *ngIf=\"!isLoadingImage\">\r\n <a class=\"mrx-gallery-item__preview-controls--icon\" [href]=\"yandexCheckUrl\" target=\"_blank\" (click)=\"$event.stopPropagation()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_12346_12076)\">\r\n <path d=\"M8.00031 15.9838C12.4096 15.9838 15.984 12.4093 15.984 8.00006C15.984 3.59078 12.4096 0.0163574 8.00031 0.0163574C3.59103 0.0163574 0.0166016 3.59078 0.0166016 8.00006C0.0166016 12.4093 3.59103 15.9838 8.00031 15.9838Z\" fill=\"white\"/>\r\n <path d=\"M10.8893 13.0118H9.1367V4.34361H8.35596C6.92484 4.34361 6.17521 5.05916 6.17521 6.12731C6.17521 7.33916 6.69225 7.90065 7.76188 8.6162L8.64336 9.21028L6.11003 13.0103H4.22559L6.50559 9.61768C5.19447 8.68139 4.4567 7.76731 4.4567 6.22509C4.4567 4.29768 5.8004 2.98657 8.3441 2.98657H10.8774V13.0088H10.8893V13.0118Z\" fill=\"#FC3F1D\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_12346_12076\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </a>\r\n\r\n <a class=\"mrx-gallery-item__preview-controls--icon\" [href]=\"googleCheckUrl\" target=\"_blank\" (click)=\"$event.stopPropagation()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M11.5561 4.8901H11.0997V4.86659H5.99967V7.13325H9.20219C8.73497 8.45273 7.47952 9.39992 5.99967 9.39992C4.12202 9.39992 2.59967 7.87757 2.59967 5.99992C2.59967 4.12227 4.12202 2.59992 5.99967 2.59992C6.86639 2.59992 7.65491 2.92689 8.25529 3.46097L9.85811 1.85815C8.84604 0.914935 7.49227 0.333252 5.99967 0.333252C2.87026 0.333252 0.333008 2.8705 0.333008 5.99992C0.333008 9.12934 2.87026 11.6666 5.99967 11.6666C9.12909 11.6666 11.6663 9.12934 11.6663 5.99992C11.6663 5.61997 11.6272 5.24909 11.5561 4.8901Z\" fill=\"#FBC02D\"/>\r\n <path d=\"M0.987305 3.36237L2.84909 4.72775C3.35285 3.48052 4.57289 2.59992 6.0006 2.59992C6.86732 2.59992 7.65584 2.92689 8.25622 3.46097L9.85904 1.85815C8.84697 0.914935 7.4932 0.333252 6.0006 0.333252C3.82404 0.333252 1.93647 1.56207 0.987305 3.36237Z\" fill=\"#E53935\"/>\r\n <path d=\"M6.0008 11.6665C7.4645 11.6665 8.79447 11.1063 9.80002 10.1954L8.04619 8.7113C7.47725 9.14225 6.77005 9.3998 6.0008 9.3998C4.5269 9.3998 3.27542 8.45999 2.80395 7.14844L0.956055 8.57219C1.89389 10.4073 3.79845 11.6665 6.0008 11.6665Z\" fill=\"#4CAF50\"/>\r\n <path d=\"M11.5564 4.88997L11.5519 4.86646H11.1H6V7.13312H9.20252C8.97812 7.76694 8.5704 8.31349 8.04453 8.71157C8.04482 8.71129 8.0451 8.71129 8.04538 8.71101L9.79922 10.1951C9.67512 10.3079 11.6667 8.83312 11.6667 5.99979C11.6667 5.61984 11.6276 5.24896 11.5564 4.88997Z\" fill=\"#1565C0\"/>\r\n </svg>\r\n </a>\r\n\r\n <div class=\"mrx-gallery-item__preview-controls__button d-flex align-items-center justify-content-center\" *ngIf=\"isEditing\" (click)=\"$event.stopPropagation()\">\r\n <span class=\"mrx-icon icon-delete icon-font-16 text-bold\" (click)=\"deleteImage()\"></span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mrx-gallery-item__description\">\r\n <mrx-input-textarea\r\n *ngIf=\"isEditing; else textTemplate\"\r\n [fields]=\"(fields$ | async)!\"\r\n [ngModel]=\"preview.description\"\r\n [autosize]=\"false\"\r\n [rows]=\"2\"\r\n [maxlength]=\"descriptionMaxLength\"\r\n (modelChange)=\"changeDescription($event)\"\r\n ></mrx-input-textarea>\r\n\r\n <ng-template #textTemplate>\r\n {{ preview.description }}\r\n </ng-template>\r\n </div>\r\n</div>\r\n", styles: [".mrx-gallery-item{cursor:pointer}.mrx-gallery-item__preview{width:100%;height:180px;border-radius:4px;overflow:hidden;position:relative;margin-bottom:8px}.mrx-gallery-item__preview img{width:100%;height:100%;object-fit:cover;object-position:center top}.mrx-gallery-item__preview-overlay{position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,#0000 78.93%,#00000059 91.52%)}.mrx-gallery-item__preview-controls{position:absolute;bottom:0;left:0;right:0;z-index:2;padding:8px;display:flex;align-items:center;justify-content:flex-end;gap:8px}.mrx-gallery-item__preview-controls--text{font-family:var(--body-sm-font-family);font-size:var(--body-sm-font-size);font-weight:var(--body-sm-font-weight);line-height:var(--body-sm-line-height);color:var(--neutral-text-inverse);opacity:.8}.mrx-gallery-item__preview-controls--icon{width:16px;height:16px;display:flex;align-items:center;justify-content:center;background-color:#fff;border-radius:50%}.mrx-gallery-item__preview-controls__button{padding:4px;border-radius:4px;background:var(--system-white, #FFF)}.mrx-gallery-item__description{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height);color:var(--neutral-text-primary)}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: InputTextareaComponent, selector: "mrx-input-textarea", inputs: ["fields", "disabled", "readonly", "autosize", "maxlength", "minlength", "rows", "placeholder", "invalid", "invalidMessage", "checkInvalid", "customClasses", "mask", "size"], outputs: ["changed", "blurred", "modelChange"] }, { kind: "component", type: LoaderComponent, selector: "mrx-loader", inputs: ["size", "color", "customClasses"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
6053
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GalleryItemComponent, deps: [{ token: GalleryService }, { token: ModalService }], target: i0.ɵɵFactoryTarget.Component });
6054
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: GalleryItemComponent, selector: "mrx-gallery-item", inputs: { preview: "preview", index: "index", isEditing: "isEditing", descriptionMaxLength: "descriptionMaxLength", deleteEndPoint: "deleteEndPoint", updateEndPoint: "updateEndPoint", rotateSlides: "rotateSlides", setIsLoading: ["isLoading", "setIsLoading"] }, outputs: { openGalleryModal: "openGalleryModal", deletePhoto: "deletePhoto", updatePhoto: "updatePhoto" }, ngImport: i0, template: "<div class=\"mrx-gallery-item\">\r\n <div class=\"mrx-gallery-item__preview\" (click)=\"onOpenGalleryModal()\">\r\n\r\n <img [src]=\"getImageUrl()\" [alt]=\"preview.imageName || 'image'\" *ngIf=\"!isLoadingImage; else skeletonTemplate\">\r\n\r\n <ng-template #skeletonTemplate>\r\n <div class=\"d-flex align-items-center justify-content-center w-100 h-100\">\r\n <mrx-loader size=\"medium\" color=\"brand\"></mrx-loader>\r\n </div>\r\n </ng-template>\r\n\r\n <div class=\"mrx-gallery-item__preview-overlay\" *ngIf=\"!isLoadingImage\"></div>\r\n\r\n <div class=\"mrx-gallery-item__preview-controls\" *ngIf=\"!isLoadingImage\">\r\n <a class=\"mrx-gallery-item__preview-controls--icon\" [href]=\"yandexCheckUrl\" target=\"_blank\" (click)=\"$event.stopPropagation()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_12346_12076)\">\r\n <path d=\"M8.00031 15.9838C12.4096 15.9838 15.984 12.4093 15.984 8.00006C15.984 3.59078 12.4096 0.0163574 8.00031 0.0163574C3.59103 0.0163574 0.0166016 3.59078 0.0166016 8.00006C0.0166016 12.4093 3.59103 15.9838 8.00031 15.9838Z\" fill=\"white\"/>\r\n <path d=\"M10.8893 13.0118H9.1367V4.34361H8.35596C6.92484 4.34361 6.17521 5.05916 6.17521 6.12731C6.17521 7.33916 6.69225 7.90065 7.76188 8.6162L8.64336 9.21028L6.11003 13.0103H4.22559L6.50559 9.61768C5.19447 8.68139 4.4567 7.76731 4.4567 6.22509C4.4567 4.29768 5.8004 2.98657 8.3441 2.98657H10.8774V13.0088H10.8893V13.0118Z\" fill=\"#FC3F1D\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_12346_12076\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </a>\r\n\r\n <a class=\"mrx-gallery-item__preview-controls--icon\" [href]=\"googleCheckUrl\" target=\"_blank\" (click)=\"$event.stopPropagation()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M11.5561 4.8901H11.0997V4.86659H5.99967V7.13325H9.20219C8.73497 8.45273 7.47952 9.39992 5.99967 9.39992C4.12202 9.39992 2.59967 7.87757 2.59967 5.99992C2.59967 4.12227 4.12202 2.59992 5.99967 2.59992C6.86639 2.59992 7.65491 2.92689 8.25529 3.46097L9.85811 1.85815C8.84604 0.914935 7.49227 0.333252 5.99967 0.333252C2.87026 0.333252 0.333008 2.8705 0.333008 5.99992C0.333008 9.12934 2.87026 11.6666 5.99967 11.6666C9.12909 11.6666 11.6663 9.12934 11.6663 5.99992C11.6663 5.61997 11.6272 5.24909 11.5561 4.8901Z\" fill=\"#FBC02D\"/>\r\n <path d=\"M0.987305 3.36237L2.84909 4.72775C3.35285 3.48052 4.57289 2.59992 6.0006 2.59992C6.86732 2.59992 7.65584 2.92689 8.25622 3.46097L9.85904 1.85815C8.84697 0.914935 7.4932 0.333252 6.0006 0.333252C3.82404 0.333252 1.93647 1.56207 0.987305 3.36237Z\" fill=\"#E53935\"/>\r\n <path d=\"M6.0008 11.6665C7.4645 11.6665 8.79447 11.1063 9.80002 10.1954L8.04619 8.7113C7.47725 9.14225 6.77005 9.3998 6.0008 9.3998C4.5269 9.3998 3.27542 8.45999 2.80395 7.14844L0.956055 8.57219C1.89389 10.4073 3.79845 11.6665 6.0008 11.6665Z\" fill=\"#4CAF50\"/>\r\n <path d=\"M11.5564 4.88997L11.5519 4.86646H11.1H6V7.13312H9.20252C8.97812 7.76694 8.5704 8.31349 8.04453 8.71157C8.04482 8.71129 8.0451 8.71129 8.04538 8.71101L9.79922 10.1951C9.67512 10.3079 11.6667 8.83312 11.6667 5.99979C11.6667 5.61984 11.6276 5.24896 11.5564 4.88997Z\" fill=\"#1565C0\"/>\r\n </svg>\r\n </a>\r\n\r\n <div class=\"mrx-gallery-item__preview-controls__button d-flex align-items-center justify-content-center\" *ngIf=\"isEditing\" (click)=\"$event.stopPropagation()\">\r\n <span class=\"mrx-icon icon-delete icon-font-16 text-bold\" (click)=\"deleteImage()\"></span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mrx-gallery-item__description\">\r\n <mrx-input-textarea\r\n *ngIf=\"isEditing; else textTemplate\"\r\n [fields]=\"fields\"\r\n [ngModel]=\"preview.description\"\r\n [autosize]=\"false\"\r\n [rows]=\"2\"\r\n [maxlength]=\"descriptionMaxLength\"\r\n (modelChange)=\"changeDescription($event)\"\r\n ></mrx-input-textarea>\r\n\r\n <ng-template #textTemplate>\r\n {{ preview.description }}\r\n </ng-template>\r\n </div>\r\n</div>\r\n", styles: [".mrx-gallery-item{cursor:pointer}.mrx-gallery-item__preview{width:100%;height:180px;border-radius:4px;overflow:hidden;position:relative;margin-bottom:8px}.mrx-gallery-item__preview img{width:100%;height:100%;object-fit:cover;object-position:center top}.mrx-gallery-item__preview-overlay{position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,#0000 78.93%,#00000059 91.52%)}.mrx-gallery-item__preview-controls{position:absolute;bottom:0;left:0;right:0;z-index:2;padding:8px;display:flex;align-items:center;justify-content:flex-end;gap:8px}.mrx-gallery-item__preview-controls--text{font-family:var(--body-sm-font-family);font-size:var(--body-sm-font-size);font-weight:var(--body-sm-font-weight);line-height:var(--body-sm-line-height);color:var(--neutral-text-inverse);opacity:.8}.mrx-gallery-item__preview-controls--icon{width:16px;height:16px;display:flex;align-items:center;justify-content:center;background-color:#fff;border-radius:50%}.mrx-gallery-item__preview-controls__button{padding:4px;border-radius:4px;background:var(--system-white, #FFF)}.mrx-gallery-item__description{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height);color:var(--neutral-text-primary)}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: InputTextareaComponent, selector: "mrx-input-textarea", inputs: ["fields", "disabled", "readonly", "autosize", "maxlength", "minlength", "rows", "placeholder", "invalid", "invalidMessage", "checkInvalid", "customClasses", "mask", "size"], outputs: ["changed", "blurred", "modelChange"] }, { kind: "component", type: LoaderComponent, selector: "mrx-loader", inputs: ["size", "color", "customClasses"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
6051
6055
  }
6052
6056
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GalleryItemComponent, decorators: [{
6053
6057
  type: Component,
6054
- args: [{ selector: 'mrx-gallery-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"mrx-gallery-item\">\r\n <div class=\"mrx-gallery-item__preview\" (click)=\"onOpenGalleryModal()\">\r\n\r\n <img [src]=\"getImageUrl()\" [alt]=\"preview.imageName || 'image'\" *ngIf=\"!isLoadingImage; else skeletonTemplate\">\r\n\r\n <ng-template #skeletonTemplate>\r\n <div class=\"d-flex align-items-center justify-content-center w-100 h-100\">\r\n <mrx-loader size=\"medium\" color=\"brand\"></mrx-loader>\r\n </div>\r\n </ng-template>\r\n\r\n <div class=\"mrx-gallery-item__preview-overlay\" *ngIf=\"!isLoadingImage\"></div>\r\n\r\n <div class=\"mrx-gallery-item__preview-controls\" *ngIf=\"!isLoadingImage\">\r\n <a class=\"mrx-gallery-item__preview-controls--icon\" [href]=\"yandexCheckUrl\" target=\"_blank\" (click)=\"$event.stopPropagation()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_12346_12076)\">\r\n <path d=\"M8.00031 15.9838C12.4096 15.9838 15.984 12.4093 15.984 8.00006C15.984 3.59078 12.4096 0.0163574 8.00031 0.0163574C3.59103 0.0163574 0.0166016 3.59078 0.0166016 8.00006C0.0166016 12.4093 3.59103 15.9838 8.00031 15.9838Z\" fill=\"white\"/>\r\n <path d=\"M10.8893 13.0118H9.1367V4.34361H8.35596C6.92484 4.34361 6.17521 5.05916 6.17521 6.12731C6.17521 7.33916 6.69225 7.90065 7.76188 8.6162L8.64336 9.21028L6.11003 13.0103H4.22559L6.50559 9.61768C5.19447 8.68139 4.4567 7.76731 4.4567 6.22509C4.4567 4.29768 5.8004 2.98657 8.3441 2.98657H10.8774V13.0088H10.8893V13.0118Z\" fill=\"#FC3F1D\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_12346_12076\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </a>\r\n\r\n <a class=\"mrx-gallery-item__preview-controls--icon\" [href]=\"googleCheckUrl\" target=\"_blank\" (click)=\"$event.stopPropagation()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M11.5561 4.8901H11.0997V4.86659H5.99967V7.13325H9.20219C8.73497 8.45273 7.47952 9.39992 5.99967 9.39992C4.12202 9.39992 2.59967 7.87757 2.59967 5.99992C2.59967 4.12227 4.12202 2.59992 5.99967 2.59992C6.86639 2.59992 7.65491 2.92689 8.25529 3.46097L9.85811 1.85815C8.84604 0.914935 7.49227 0.333252 5.99967 0.333252C2.87026 0.333252 0.333008 2.8705 0.333008 5.99992C0.333008 9.12934 2.87026 11.6666 5.99967 11.6666C9.12909 11.6666 11.6663 9.12934 11.6663 5.99992C11.6663 5.61997 11.6272 5.24909 11.5561 4.8901Z\" fill=\"#FBC02D\"/>\r\n <path d=\"M0.987305 3.36237L2.84909 4.72775C3.35285 3.48052 4.57289 2.59992 6.0006 2.59992C6.86732 2.59992 7.65584 2.92689 8.25622 3.46097L9.85904 1.85815C8.84697 0.914935 7.4932 0.333252 6.0006 0.333252C3.82404 0.333252 1.93647 1.56207 0.987305 3.36237Z\" fill=\"#E53935\"/>\r\n <path d=\"M6.0008 11.6665C7.4645 11.6665 8.79447 11.1063 9.80002 10.1954L8.04619 8.7113C7.47725 9.14225 6.77005 9.3998 6.0008 9.3998C4.5269 9.3998 3.27542 8.45999 2.80395 7.14844L0.956055 8.57219C1.89389 10.4073 3.79845 11.6665 6.0008 11.6665Z\" fill=\"#4CAF50\"/>\r\n <path d=\"M11.5564 4.88997L11.5519 4.86646H11.1H6V7.13312H9.20252C8.97812 7.76694 8.5704 8.31349 8.04453 8.71157C8.04482 8.71129 8.0451 8.71129 8.04538 8.71101L9.79922 10.1951C9.67512 10.3079 11.6667 8.83312 11.6667 5.99979C11.6667 5.61984 11.6276 5.24896 11.5564 4.88997Z\" fill=\"#1565C0\"/>\r\n </svg>\r\n </a>\r\n\r\n <div class=\"mrx-gallery-item__preview-controls__button d-flex align-items-center justify-content-center\" *ngIf=\"isEditing\" (click)=\"$event.stopPropagation()\">\r\n <span class=\"mrx-icon icon-delete icon-font-16 text-bold\" (click)=\"deleteImage()\"></span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mrx-gallery-item__description\">\r\n <mrx-input-textarea\r\n *ngIf=\"isEditing; else textTemplate\"\r\n [fields]=\"(fields$ | async)!\"\r\n [ngModel]=\"preview.description\"\r\n [autosize]=\"false\"\r\n [rows]=\"2\"\r\n [maxlength]=\"descriptionMaxLength\"\r\n (modelChange)=\"changeDescription($event)\"\r\n ></mrx-input-textarea>\r\n\r\n <ng-template #textTemplate>\r\n {{ preview.description }}\r\n </ng-template>\r\n </div>\r\n</div>\r\n", styles: [".mrx-gallery-item{cursor:pointer}.mrx-gallery-item__preview{width:100%;height:180px;border-radius:4px;overflow:hidden;position:relative;margin-bottom:8px}.mrx-gallery-item__preview img{width:100%;height:100%;object-fit:cover;object-position:center top}.mrx-gallery-item__preview-overlay{position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,#0000 78.93%,#00000059 91.52%)}.mrx-gallery-item__preview-controls{position:absolute;bottom:0;left:0;right:0;z-index:2;padding:8px;display:flex;align-items:center;justify-content:flex-end;gap:8px}.mrx-gallery-item__preview-controls--text{font-family:var(--body-sm-font-family);font-size:var(--body-sm-font-size);font-weight:var(--body-sm-font-weight);line-height:var(--body-sm-line-height);color:var(--neutral-text-inverse);opacity:.8}.mrx-gallery-item__preview-controls--icon{width:16px;height:16px;display:flex;align-items:center;justify-content:center;background-color:#fff;border-radius:50%}.mrx-gallery-item__preview-controls__button{padding:4px;border-radius:4px;background:var(--system-white, #FFF)}.mrx-gallery-item__description{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height);color:var(--neutral-text-primary)}\n"] }]
6055
- }], ctorParameters: () => [{ type: GalleryService }, { type: ModalService }, { type: i2$3.Store }], propDecorators: { preview: [{
6058
+ args: [{ selector: 'mrx-gallery-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"mrx-gallery-item\">\r\n <div class=\"mrx-gallery-item__preview\" (click)=\"onOpenGalleryModal()\">\r\n\r\n <img [src]=\"getImageUrl()\" [alt]=\"preview.imageName || 'image'\" *ngIf=\"!isLoadingImage; else skeletonTemplate\">\r\n\r\n <ng-template #skeletonTemplate>\r\n <div class=\"d-flex align-items-center justify-content-center w-100 h-100\">\r\n <mrx-loader size=\"medium\" color=\"brand\"></mrx-loader>\r\n </div>\r\n </ng-template>\r\n\r\n <div class=\"mrx-gallery-item__preview-overlay\" *ngIf=\"!isLoadingImage\"></div>\r\n\r\n <div class=\"mrx-gallery-item__preview-controls\" *ngIf=\"!isLoadingImage\">\r\n <a class=\"mrx-gallery-item__preview-controls--icon\" [href]=\"yandexCheckUrl\" target=\"_blank\" (click)=\"$event.stopPropagation()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_12346_12076)\">\r\n <path d=\"M8.00031 15.9838C12.4096 15.9838 15.984 12.4093 15.984 8.00006C15.984 3.59078 12.4096 0.0163574 8.00031 0.0163574C3.59103 0.0163574 0.0166016 3.59078 0.0166016 8.00006C0.0166016 12.4093 3.59103 15.9838 8.00031 15.9838Z\" fill=\"white\"/>\r\n <path d=\"M10.8893 13.0118H9.1367V4.34361H8.35596C6.92484 4.34361 6.17521 5.05916 6.17521 6.12731C6.17521 7.33916 6.69225 7.90065 7.76188 8.6162L8.64336 9.21028L6.11003 13.0103H4.22559L6.50559 9.61768C5.19447 8.68139 4.4567 7.76731 4.4567 6.22509C4.4567 4.29768 5.8004 2.98657 8.3441 2.98657H10.8774V13.0088H10.8893V13.0118Z\" fill=\"#FC3F1D\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_12346_12076\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </a>\r\n\r\n <a class=\"mrx-gallery-item__preview-controls--icon\" [href]=\"googleCheckUrl\" target=\"_blank\" (click)=\"$event.stopPropagation()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M11.5561 4.8901H11.0997V4.86659H5.99967V7.13325H9.20219C8.73497 8.45273 7.47952 9.39992 5.99967 9.39992C4.12202 9.39992 2.59967 7.87757 2.59967 5.99992C2.59967 4.12227 4.12202 2.59992 5.99967 2.59992C6.86639 2.59992 7.65491 2.92689 8.25529 3.46097L9.85811 1.85815C8.84604 0.914935 7.49227 0.333252 5.99967 0.333252C2.87026 0.333252 0.333008 2.8705 0.333008 5.99992C0.333008 9.12934 2.87026 11.6666 5.99967 11.6666C9.12909 11.6666 11.6663 9.12934 11.6663 5.99992C11.6663 5.61997 11.6272 5.24909 11.5561 4.8901Z\" fill=\"#FBC02D\"/>\r\n <path d=\"M0.987305 3.36237L2.84909 4.72775C3.35285 3.48052 4.57289 2.59992 6.0006 2.59992C6.86732 2.59992 7.65584 2.92689 8.25622 3.46097L9.85904 1.85815C8.84697 0.914935 7.4932 0.333252 6.0006 0.333252C3.82404 0.333252 1.93647 1.56207 0.987305 3.36237Z\" fill=\"#E53935\"/>\r\n <path d=\"M6.0008 11.6665C7.4645 11.6665 8.79447 11.1063 9.80002 10.1954L8.04619 8.7113C7.47725 9.14225 6.77005 9.3998 6.0008 9.3998C4.5269 9.3998 3.27542 8.45999 2.80395 7.14844L0.956055 8.57219C1.89389 10.4073 3.79845 11.6665 6.0008 11.6665Z\" fill=\"#4CAF50\"/>\r\n <path d=\"M11.5564 4.88997L11.5519 4.86646H11.1H6V7.13312H9.20252C8.97812 7.76694 8.5704 8.31349 8.04453 8.71157C8.04482 8.71129 8.0451 8.71129 8.04538 8.71101L9.79922 10.1951C9.67512 10.3079 11.6667 8.83312 11.6667 5.99979C11.6667 5.61984 11.6276 5.24896 11.5564 4.88997Z\" fill=\"#1565C0\"/>\r\n </svg>\r\n </a>\r\n\r\n <div class=\"mrx-gallery-item__preview-controls__button d-flex align-items-center justify-content-center\" *ngIf=\"isEditing\" (click)=\"$event.stopPropagation()\">\r\n <span class=\"mrx-icon icon-delete icon-font-16 text-bold\" (click)=\"deleteImage()\"></span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mrx-gallery-item__description\">\r\n <mrx-input-textarea\r\n *ngIf=\"isEditing; else textTemplate\"\r\n [fields]=\"fields\"\r\n [ngModel]=\"preview.description\"\r\n [autosize]=\"false\"\r\n [rows]=\"2\"\r\n [maxlength]=\"descriptionMaxLength\"\r\n (modelChange)=\"changeDescription($event)\"\r\n ></mrx-input-textarea>\r\n\r\n <ng-template #textTemplate>\r\n {{ preview.description }}\r\n </ng-template>\r\n </div>\r\n</div>\r\n", styles: [".mrx-gallery-item{cursor:pointer}.mrx-gallery-item__preview{width:100%;height:180px;border-radius:4px;overflow:hidden;position:relative;margin-bottom:8px}.mrx-gallery-item__preview img{width:100%;height:100%;object-fit:cover;object-position:center top}.mrx-gallery-item__preview-overlay{position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,#0000 78.93%,#00000059 91.52%)}.mrx-gallery-item__preview-controls{position:absolute;bottom:0;left:0;right:0;z-index:2;padding:8px;display:flex;align-items:center;justify-content:flex-end;gap:8px}.mrx-gallery-item__preview-controls--text{font-family:var(--body-sm-font-family);font-size:var(--body-sm-font-size);font-weight:var(--body-sm-font-weight);line-height:var(--body-sm-line-height);color:var(--neutral-text-inverse);opacity:.8}.mrx-gallery-item__preview-controls--icon{width:16px;height:16px;display:flex;align-items:center;justify-content:center;background-color:#fff;border-radius:50%}.mrx-gallery-item__preview-controls__button{padding:4px;border-radius:4px;background:var(--system-white, #FFF)}.mrx-gallery-item__description{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height);color:var(--neutral-text-primary)}\n"] }]
6059
+ }], ctorParameters: () => [{ type: GalleryService }, { type: ModalService }], propDecorators: { preview: [{
6056
6060
  type: Input
6057
6061
  }], index: [{
6058
6062
  type: Input